cbc05ed4e75423983a200c440b3326fbeef3343e
- service.admin: 新增 reviewSearch / getContestantScore / _reviewWorks;移除同名的死代码旧实现 - 归集双键合并 [contestant.id] ∪ [真实 aggregation_uid],与 getExamSubmissions 口径逐字一致 - 题序还原:优先 exam_submissions.question_order,缺失则回退「选择→判断 + 题号升序」并回传 questionOrderFixed=false - 未作答行 answerMatches 返回 null(非 false),避免界面把「未答」读成「答错」 - 组别以库中考生 group 为准,路由 :group 不符返回 409,防前端传错组照错人 - 异常可区分:questionMissing(题被删/改组)、answerMatches≠isCorrect(判分矛盾) - 因回传正确答案,两条路由均挂 adminAuth —— 选手端可达即成绩泄露(与 verify_score_leak_all_channels.py 三通道门禁一致) - 不改动 schema、不改动既有接口行为 controller.admin: 新增 reviewSearch / contestantScore(NOT_FOUND→404 / GROUP_MISMATCH→409 / 其它→400) router.js: 注册 GET /api/admin/review/search 与 /api/admin/review/score/:group/:id,均 adminAuth
Description
No description provided
Languages
JavaScript
100%