xuyueandClaude Opus 5.5 925cecb389 refactor(题目): 新建 / 复制题目收成 validateProblem、insertProblem、copyProblem
admin/problem.ts 里四处 insert(schema.problem) 其实是两对重复:

- 新建公开题 / 新建比赛题:公共校验 + SQL 展示数据 + 插入 + 写标签,逐行一样,
  只差 contestId。编辑题目那条也抄了同一段校验。收成 validateProblem(校验 +
  展示数据)和 insertProblem(插入 + 标签,一个事务)。比赛题当初就是抄漏了
  sqlDisplay,现在三条路径只有一份
- 比赛题转公开 / 从公开题库拉进比赛:复制整行 + 统计清零 + 复制标签,收成 copyProblem

顺带 db/index.ts 加 DbOrTx 类型,四处 `tx as unknown as typeof db` 去掉。

唯一的行为差异:编辑题目时 SQL 展示数据的生成挪到了题号查重之前(和新建一致),
两项同时出错时报的是前一个。

实跑核过:新建公开题、编辑、重复题号 409、新建比赛题、比赛题转公开(不可见、
标签跟过去)、从公开题库拉进比赛(可见、标签跟过去),SQL 题测试点缺失时照样拦下。
测试数据已删。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-27 15:07:13 +08:00
S
Description
No description provided
10 MiB
0 Stars 1 Watchers 0 Forks
Languages
TypeScript 51%
Vue 47%
Shell 1%
CSS 0.6%
Dockerfile 0.4%