refactor(题单): 难度、状态、分数、提示、总分、百分比和 problemset_submission 表不再读写,先补默认值、下一步再删
Deploy / deploy (push) Canceled after 0s
Deploy / deploy (push) Canceled after 0s
机房和服务器共用一个库、不一定同时升级,所以分两步退役:0027 只给还非空的几列补默认值, 新代码插行不用再填、没升级的那边照旧能跑;两个站点都换上新代码后,再单独一条迁移删列删表 (要手工放行破坏性迁移,语句写在 0027 的注释里)。 进度算法随之去掉分数和百分比,判题记进度不再往 problemset_submission 写一行(从来没人读)。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
c17f88cdbb
commit
646c57c748
10 files changed
+3952
-181
No files matched your search
@@ -192,9 +192,6 @@ adminProblemSetRoutes.post("/problem-sets", requireTeacher, async (c) => {
|
||||
description: parsed.data.description,
|
||||
visible: parsed.data.visible,
|
||||
...period,
|
||||
// 难度、状态两列还在表里、非空,但已经不用了(见契约 admin.ts 的说明)
|
||||
difficulty: "Easy",
|
||||
status: "active",
|
||||
createdById: c.get("user")!.id,
|
||||
createTime: now,
|
||||
lastUpdateTime: now,
|
||||
@@ -322,14 +319,7 @@ adminProblemSetRoutes.post("/problem-sets/:id/problems", requireTeacher, async (
|
||||
else {
|
||||
inSet.add(problem.id)
|
||||
order += 1
|
||||
// 分数、提示两列还在表里但已经不用了:score 非空给 0
|
||||
values.push({
|
||||
problemsetId: row.id,
|
||||
problemId: problem.id,
|
||||
order,
|
||||
isRequired: true,
|
||||
score: 0,
|
||||
})
|
||||
values.push({ problemsetId: row.id, problemId: problem.id, order, isRequired: true })
|
||||
result.added.push(problem.displayId)
|
||||
}
|
||||
}
|
||||
@@ -400,21 +390,8 @@ adminProblemSetRoutes.delete("/problem-sets/:id/problems/:itemId", requireTeache
|
||||
eq(schema.problemsetProblem.problemsetId, row.id),
|
||||
),
|
||||
)
|
||||
.returning({
|
||||
id: schema.problemsetProblem.id,
|
||||
problemId: schema.problemsetProblem.problemId,
|
||||
})
|
||||
.returning({ id: schema.problemsetProblem.id })
|
||||
if (deleted.length === 0) return failure(c, 404, "problem-not-in-set", "题目不在该题单中")
|
||||
// 这道题在本题单里的提交记录也要清掉,对齐旧栈 problemset/signals.py 的 post_delete。
|
||||
// 不清的话 problemset_submission 会一直攒指向已移出题单的孤儿行。
|
||||
await db
|
||||
.delete(schema.problemsetSubmission)
|
||||
.where(
|
||||
and(
|
||||
eq(schema.problemsetSubmission.problemsetId, row.id),
|
||||
eq(schema.problemsetSubmission.problemId, deleted[0]!.problemId),
|
||||
),
|
||||
)
|
||||
await resyncProgress(row.id)
|
||||
return success(c, null)
|
||||
})
|
||||
|
||||
Reference in new issue
Block a user