Files
users/app/api/ingest/route.ts
v0 4eed69520c feat: refactor data asset center for enhanced search and analytics
Refactor homepage for focused search and data display; streamline data platform; enhance user and tag management; focus AI assistant on data analysis and report generation.

Co-authored-by: null <4804959+fnvtk@users.noreply.github.com>
2025-07-25 06:42:34 +00:00

106 lines
3.1 KiB
TypeScript

import { type NextRequest, NextResponse } from "next/server"
import { IngestionService, type IngestionRequest } from "@/services/IngestionService"
// POST /api/ingest - 数据接入端点
export async function POST(request: NextRequest) {
try {
const body = await request.json()
// 验证请求数据
if (!body.source || !body.originalData) {
return NextResponse.json({ error: "缺少必需字段: source 和 originalData" }, { status: 400 })
}
const ingestionRequest: IngestionRequest = {
source: body.source,
sourceUserId: body.sourceUserId,
sourceRecordId: body.sourceRecordId,
originalData: body.originalData,
timestamp: body.timestamp || new Date().toISOString(),
}
const ingestionService = IngestionService.getInstance()
const result = await ingestionService.processIngestionRequest(ingestionRequest)
return NextResponse.json({
success: true,
data: {
userId: result.userId,
coreProfileFields: Object.keys(result.coreProfile).length,
tagsCount: result.unifiedTags.length,
sourceProfilesCount: result.sourceProfiles.length,
},
message: "数据接入成功",
})
} catch (error) {
console.error("数据接入API错误:", error)
return NextResponse.json(
{
error: "数据接入失败",
details: (error as Error).message,
},
{ status: 500 },
)
}
}
// POST /api/ingest/batch - 批量数据接入端点
export async function PUT(request: NextRequest) {
try {
const body = await request.json()
if (!Array.isArray(body.requests)) {
return NextResponse.json({ error: "requests 必须是数组" }, { status: 400 })
}
const ingestionService = IngestionService.getInstance()
const results = await ingestionService.processBatchIngestion(body.requests)
return NextResponse.json({
success: true,
data: {
processedCount: results.length,
totalRequests: body.requests.length,
results: results.map((result) => ({
userId: result.userId,
coreProfileFields: Object.keys(result.coreProfile).length,
tagsCount: result.unifiedTags.length,
})),
},
message: `批量处理完成,成功处理 ${results.length}/${body.requests.length} 条记录`,
})
} catch (error) {
console.error("批量数据接入API错误:", error)
return NextResponse.json(
{
error: "批量数据接入失败",
details: (error as Error).message,
},
{ status: 500 },
)
}
}
// GET /api/ingest/status - 获取数据接入状态
export async function GET(request: NextRequest) {
try {
// 模拟获取接入状态数据
const status = {
totalIngested: 125678,
todayIngested: 1234,
activeSources: 8,
lastIngestionTime: new Date().toISOString(),
dataQuality: 94.6,
processingQueue: 23,
}
return NextResponse.json({
success: true,
data: status,
})
} catch (error) {
console.error("获取接入状态API错误:", error)
return NextResponse.json({ error: "获取状态失败" }, { status: 500 })
}
}