TTS-Arena-V2 / apps /web /src /app /api /admin /errors /route.ts
GitHub Actions
Deploy from github.com/TTS-AGI/TTS-Arena@f49eded
374bcb6
Raw
History Blame Contribute Delete
1.09 kB
/** GET /api/admin/errors?page&pageSize&source&severity&model&search — paginated log. Admin only. */
import { NextResponse, type NextRequest } from "next/server";
import type { AdminErrorsResponse } from "@ttsa/shared";
import { requireAdmin } from "@/server/auth/admin";
import { listErrors } from "@/server/admin/queries";
export async function GET(req: NextRequest) {
const guard = await requireAdmin();
if (!guard.ok) {
return NextResponse.json({ error: "forbidden" }, { status: guard.status });
}
const sp = req.nextUrl.searchParams;
const page = Math.max(0, Number(sp.get("page") ?? 0) || 0);
const pageSize = Math.min(100, Math.max(1, Number(sp.get("pageSize") ?? 50)));
const source = sp.get("source")?.trim() || undefined;
const severity = sp.get("severity")?.trim() || undefined;
const model = sp.get("model")?.trim() || undefined;
const search = sp.get("search")?.trim() || undefined;
const body: AdminErrorsResponse = await listErrors({
page,
pageSize,
source,
severity,
model,
search,
});
return NextResponse.json(body);
}