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
@@ -159,6 +159,32 @@ export async function countFailedSubmissions(userId: number, problemId: number)
|
||||
* 代码提交和流程图两条统计都走这里。流程图那张表连冻结用户名都没有(只有
|
||||
* `user_id`),更是只能从这儿拿 id。
|
||||
*/
|
||||
/**
|
||||
* 统计接口「圈哪些人」:班级按 `user.class_name` **精确**匹配,学生名按包含匹配,两个都给
|
||||
* 就取交集,都没给返回 null(不圈人)。
|
||||
*
|
||||
* 原来统计只收一个 username、前端拼成 `ks231` 去做包含匹配 —— 231 班会连带 2311、2312 班
|
||||
* (快照里 37 人变成 138 人),而提交列表的班级筛选是精确的,两边的人对不上
|
||||
*/
|
||||
export async function scopedUsers(username: string | undefined, className: string | undefined) {
|
||||
if (!username && !className) return null
|
||||
return db
|
||||
.select({
|
||||
id: schema.user.id,
|
||||
username: schema.user.username,
|
||||
className: schema.user.className,
|
||||
isDisabled: schema.user.isDisabled,
|
||||
adminType: schema.user.adminType,
|
||||
})
|
||||
.from(schema.user)
|
||||
.where(
|
||||
and(
|
||||
className ? eq(schema.user.className, className) : undefined,
|
||||
username ? ilike(schema.user.username, `%${username}%`) : undefined,
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
export async function matchedUsers(username: string) {
|
||||
return db
|
||||
.select({
|
||||
|
||||
Reference in new issue
Block a user