feat(阶段3): oj 侧端点铺开(基线提交,未经评审)

由外部 agent (Codex) 在本会话额度中断期间完成。原样提交作为基线,
后续修复单独成 commit,便于区分与回退。

覆盖 oj 侧 65 个端点,新增 9 组路由(account/achievement/ai/classroom/
content/contest/flowchart/problemset/site)与对应 Zod 契约。

已核验:tsc --noEmit 退出码 0;API 可启动;/api/problems 返回真实数据;
judge 与 flowchart worker 均 ready。
未核验:权限边界与数据泄露,评审进行中。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-07 01:25:36 -06:00
parent ec274419c3
commit 8c00cdc947
52 changed files with 4273 additions and 300 deletions

View File

@@ -0,0 +1,21 @@
import { z } from "zod"
export const sampleUserSchema = z.object({
id: z.number().int(),
username: z.string(),
realName: z.string().nullable(),
})
export const paginationQuerySchema = z.object({
limit: z.coerce.number().int().min(1).max(250).default(10),
offset: z.coerce.number().int().min(0).default(0),
})
export function paginatedSchema<T extends z.ZodType>(item: T) {
return z.object({
results: z.array(item),
total: z.number().int().nonnegative(),
})
}
export type SampleUser = z.infer<typeof sampleUserSchema>