新增普通文案优化接口
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
import { NextResponse } from "next/server";
|
||||
import { z } from "zod";
|
||||
|
||||
import { requireApiAccess } from "../../../../lib/api/auth";
|
||||
import { copyOptimizationRequestSchema } from "../../../../lib/domain/validation";
|
||||
import { LlmValidationError } from "../../../../lib/llm/client";
|
||||
import { optimizeRenweiCopy } from "../../../../lib/workflow/renwei-copy-optimizer";
|
||||
|
||||
export async function POST(request: Request) {
|
||||
const access = requireApiAccess(request);
|
||||
if (!access.ok) {
|
||||
return access.response;
|
||||
}
|
||||
|
||||
try {
|
||||
const payload = copyOptimizationRequestSchema.parse(await request.json());
|
||||
const result = await optimizeRenweiCopy(payload);
|
||||
return NextResponse.json({ result });
|
||||
} catch (error) {
|
||||
return jsonError(error, getErrorStatus(error));
|
||||
}
|
||||
}
|
||||
|
||||
function jsonError(error: unknown, status: number) {
|
||||
const message =
|
||||
error instanceof z.ZodError
|
||||
? "请输入需要优化的文案"
|
||||
: error instanceof Error
|
||||
? error.message
|
||||
: "文案优化失败";
|
||||
|
||||
return NextResponse.json({ error: message }, { status });
|
||||
}
|
||||
|
||||
function getErrorStatus(error: unknown) {
|
||||
if (error instanceof LlmValidationError) return 502;
|
||||
if (error instanceof Error && /^LLM\b|provider/i.test(error.message)) return 502;
|
||||
return 400;
|
||||
}
|
||||
Reference in New Issue
Block a user