28 lines
1.1 KiB
TypeScript
28 lines
1.1 KiB
TypeScript
import { NextResponse } from "next/server";
|
|
import { prisma } from "@/lib/db";
|
|
import { getActiveAccountId } from "@/lib/account-context";
|
|
import { generateDraftsForScan } from "@/lib/services/generate";
|
|
import { trackAiTask } from "@/lib/jobs/track";
|
|
|
|
export const maxDuration = 120;
|
|
|
|
export async function POST(request: Request) {
|
|
try {
|
|
const { scanId } = (await request.json()) as { scanId?: string };
|
|
if (!scanId) {
|
|
return NextResponse.json({ error: "缺少 scanId" }, { status: 400 });
|
|
}
|
|
const accountId = await getActiveAccountId();
|
|
const scan = await prisma.scan.findUnique({ where: { id: scanId } });
|
|
if (!scan || (accountId && scan.accountId !== accountId)) {
|
|
return NextResponse.json({ error: "找不到海巡紀錄" }, { status: 404 });
|
|
}
|
|
|
|
const drafts = await trackAiTask("生成貼文草稿", () => generateDraftsForScan(scanId));
|
|
return NextResponse.json({ drafts });
|
|
} catch (error) {
|
|
const message = error instanceof Error ? error.message : "生成草稿失敗";
|
|
return NextResponse.json({ error: message }, { status: 500 });
|
|
}
|
|
}
|