Files
Jyotisha/frontend/src/app/api/rectification/cases/entry-summary/route.ts
T
Jesse_Chen 4deb5c2378
Staging Backend Quality Gate / validate (pull_request) Successful in 24m42s
Staging Backend Quality Gate / publish (pull_request) Has been skipped
fix(rectification): start new case from homepage
2026-08-12 21:21:26 +08:00

49 lines
1.5 KiB
TypeScript

import { NextResponse } from "next/server";
import { createAdminSupabaseClient } from "@/lib/supabase/admin";
import { createServerSupabaseClient } from "@/lib/supabase/server";
import {
RectificationCaseServiceError,
getRectificationEntrySummary,
mapRectificationRpcError,
} from "@/lib/rectification-agentic/v9/case-service";
export const runtime = "nodejs";
/**
* GET /api/rectification/cases/entry-summary
*
* Server-truth context for homepage copy; the primary homepage action always creates.
*/
export async function GET() {
let supabase;
let accounting;
try {
supabase = await createServerSupabaseClient();
accounting = createAdminSupabaseClient();
} catch {
return NextResponse.json({ error: "服务尚未配置" }, { status: 503 });
}
const {
data: { user },
error: authError,
} = await supabase.auth.getUser();
if (authError || !user) {
return NextResponse.json({ error: "请先登录" }, { status: 401 });
}
try {
return NextResponse.json(await getRectificationEntrySummary(accounting, user.id));
} catch (error) {
if (error instanceof RectificationCaseServiceError) {
const view = mapRectificationRpcError(
new Error(`agentic_rectification_${error.code}`),
);
return NextResponse.json({ error: view.message, code: view.code }, { status: view.status });
}
return NextResponse.json(
{ error: "校正服务暂时不可用", code: "rectification_service_failed" },
{ status: 500 },
);
}
}