feat: add rectification event decision contract v2

This commit is contained in:
Jesse_Chen
2026-08-15 00:56:06 +08:00
parent 21fce9513c
commit 83fef19779
24 changed files with 3637 additions and 562 deletions
@@ -11,7 +11,7 @@ type RouteContext = { params: Promise<{ caseId: string }> };
const acceptSchema = z.object({
sessionId: z.string().uuid(),
resultId: z.string().uuid(),
candidateId: z.string().regex(/^(?:[01]\d|2[0-3]):[0-5]\d$/),
candidateId: z.string().uuid(),
requestId: z.string().uuid(),
}).strict();
@@ -90,24 +90,29 @@ export async function POST(request: Request, context: RouteContext) {
try {
const { data, error } = await accounting.rpc(
"accept_agentic_rectification_candidate_for_case",
"accept_agentic_rectification_candidate_for_case_v2",
{
p_user_id: user.id,
p_case_id: caseId,
p_result_id: parsed.data.resultId,
p_time: parsed.data.candidateId,
p_candidate_id: parsed.data.candidateId,
p_request_id: parsed.data.requestId,
},
);
if (error) throw new RectificationToolServiceError(error.message);
const row = Array.isArray(data) ? data[0] : data;
if (!row || typeof row !== "object" || (row as { success?: unknown }).success !== true) {
if (
!row || typeof row !== "object"
|| (row as { success?: unknown }).success !== true
|| (row as { status?: unknown }).status !== "accepted"
) {
return NextResponse.json({ error: "暂时无法采用该候选时间", code: "candidate_accept_rejected" }, { status: 409 });
}
const result = row as Record<string, unknown>;
return NextResponse.json({
ok: true,
saved_time: result.saved_time,
status: result.status === "confirmed" ? "confirmed" : "accepted",
status: "accepted",
result_id: result.result_id,
case_status: result.case_status,
idempotent: result.idempotent === true,