fix(统计): 按班级列的时候零星一两个人补做的班排在最前,改成交过的人多的在前
Deploy / deploy (push) Canceled after 0s

题目页「各班做得怎样」和数据统计「按班级汇总」一起改,两边顺序一致。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
xuyueandClaude Opus 5.5 committed 2026-09-30 00:59:41 +08:00
1 parent 50d8e072ac
commit 13051926cf
4 files changed
+64 -51

No files matched your search

+22 -16
View File
@@ -203,20 +203,26 @@ async function classRows(problemId: number): Promise<NonNullable<ProblemStats["c
)
.groupBy(schema.user.className)
: []
return rows
.map((row) => {
const classSize =
(row.class_name && sizes.find((item) => item.className === row.class_name)?.value) ||
row.tried
return {
className: row.class_name,
classSize,
solved: row.solved,
unsolved: row.tried - row.solved,
untouched: Math.max(0, classSize - row.tried),
correctRate: row.judged ? Math.round((row.accepted / row.judged) * 100) : null,
lastTime: row.last_time,
}
})
.sort((a, b) => b.lastTime.localeCompare(a.lastTime))
return (
rows
.map((row) => {
const classSize =
(row.class_name && sizes.find((item) => item.className === row.class_name)?.value) ||
row.tried
return {
className: row.class_name,
classSize,
solved: row.solved,
unsolved: row.tried - row.solved,
untouched: Math.max(0, classSize - row.tried),
correctRate: row.judged ? Math.round((row.accepted / row.judged) * 100) : null,
lastTime: row.last_time,
}
})
// 交过的人多的在前:按最近一次排的话,零星一两个人补做的班会压在全班做过的班上面
.sort(
(a, b) =>
b.solved + b.unsolved - (a.solved + a.unsolved) || b.lastTime.localeCompare(a.lastTime),
)
)
}