fix(判题/统计): 老师重判一次题目提交数就多一;统计选 231 班会把 2311、2312 班也算进来
- 重判带上原来的结果,落库只做差量:提交数不变、旧结果那一格减一新结果加一, 通过数按新旧结果调整(原来重判当新提交记账,连点三次就多三)。重判时一起清掉 info, 判题中那几秒不再按旧结果显示「通过 2/3」 - 三个统计接口加 className,按 class_name 精确匹配(原来拼 ks231 做包含匹配) - 流程图统计查几道题时要每道都拿到 A/S 才算完成;「每人最好的一次」截断时有标记, 题号上限 20 道和代码统计一致;流程图列表支持按整名匹配用户 - 删掉统计弹框走后没人用的展开行明细接口,以及每次都白算的「语法未过题数」「最近一次错在哪」 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
ed55ee5af6
commit
26c8d65e89
10 files changed
+156
-266
No files matched your search
@@ -216,22 +216,25 @@ submissionRoutes.post("/submissions/:id/rejudge", requireTeacher, async (c) => {
|
||||
.select({
|
||||
id: schema.submission.id,
|
||||
problemId: schema.submission.problemId,
|
||||
result: schema.submission.result,
|
||||
})
|
||||
.from(schema.submission)
|
||||
.where(and(eq(schema.submission.id, c.req.param("id")), isNull(schema.submission.contestId)))
|
||||
.limit(1)
|
||||
if (!row) return failure(c, 404, "submission-not-found", "Submission does not exist")
|
||||
|
||||
// info 一起清:不清的话判题中那几秒,列表和详情按旧的逐点结果算出「通过 2/3」
|
||||
await db
|
||||
.update(schema.submission)
|
||||
.set({ statisticInfo: {}, result: JudgeStatus.PENDING })
|
||||
.set({ statisticInfo: {}, info: {}, result: JudgeStatus.PENDING })
|
||||
.where(eq(schema.submission.id, row.id))
|
||||
|
||||
// jobId 必须带时间戳。队列保留最近 100 个已完成任务,沿用 submissionId 做 jobId 的话
|
||||
// BullMQ 会认为这个任务已经存在,重判静默变成空操作。与 flowcharts/:id/retry 同一处理。
|
||||
await judgeQueue.add(
|
||||
"judge",
|
||||
{ submissionId: row.id, problemId: row.problemId },
|
||||
// 带上重判之前的结果,落库时只做差量(见 judge/run.ts 的 persistResult)
|
||||
{ submissionId: row.id, problemId: row.problemId, rejudgedFrom: row.result },
|
||||
{ jobId: `${row.id}:rejudge:${Date.now()}` },
|
||||
)
|
||||
return success(c, null)
|
||||
|
||||
Reference in new issue
Block a user