Skip to content

v1.5.1-stable

Choose a tag to compare

@ZemuZzz ZemuZzz released this 07 May 19:57
· 5 commits to main since this release

🐛 Bug 修复

  • 标签分类修复:题目页 暂无评定 标签不再被错误归类到「算法细目」组,现归入「难度档」组并排在最末
  • 取消评测严格实现:管理员标记取消评测时,judge_state.status 立即写为 Cancelled;评测机后续返回的结果会被丢弃,不再覆盖 Cancelled 状态
  • 邮箱验证状态显示:在个人资料 /edit 页保存任意字段后,已验证用户的「邮箱验证状态」不再错误显示为「未验证」(新增全局缓存 syzoj.verifiedUserIds
  • 重算 Hit 值弹窗 bug:点击取消后不再误执行该任务;结果页改为 success.ejs 模板,显示绿色对勾(之前永远显示红叉)
  • console define error:修复 user_edit.ejs 加载 blueimp-md5 库时的 ReferenceError: define is not defined

🆕 新增功能

🔄 重新评测按钮

取消评测过的提交,提交作者本人管理员均可在详情页点击「重新评测」恢复评测状态,重新进入队列。设计与 Hydro OJ 对齐。

🛡️ 作弊判定的完整后果

被标作弊的提交,影响范围现在覆盖到:

维度 修改前 v1.5.1
提交详情页测试点 显示原结果 隐藏测试点(类似 Cancelled)
提交列表分数 显示原分(如 100) 强制显示 0
比赛排行榜该题分数 原分 0
比赛排行榜该用户其他题分数 各自原分 全部清 0(未作答仍留空)
比赛排行榜该用户总分 各题相加 -1(自动沉底)
Hit 值比赛参与分 计入 剔除该比赛的所有贡献

数据完整性:所有"分数为 0"和"总分为 -1"逻辑都是展示层修正,原始 judge_state / contest_player 数据不被污染,撤销作弊标记后立即恢复(60 秒内)。

📄 通用成功页模板 success.ejs

error.ejs 对偶——绿色对勾样式,给所有"操作成功"场景使用。

🛠️ 数据库 Schema 变更

-- judge_state.status enum 新增 'Cancelled' 值
-- (typeorm 启动时自动 ALTER,无需手动执行)

📦 新增文件

  • custom/modules/_email_verified_cache.js(全局已验证用户缓存)
  • custom/modules/_contest_cheater_cache.js(全局比赛作弊用户缓存)
  • custom/views/success.ejs(通用成功页模板)
  • custom/libs-built/judger.js(SYZOJ judger 自定义版)
  • custom/models-built/judge_state.js(让 typeorm 认识 'Cancelled')

升级方式

cd /etc/docker/compose/AlgoBeat
git pull origin main
docker compose up -d --force-recreate web

⚠️ 必须 --force-recreate(不是 restart),因为 docker-compose.yml 加了多个新挂载。