AskaEth
b5ad64b7c0
fix(entry): 回到录入页时记住上次的小项(按 id);feat: 新增「清空本组 / 本批成绩」;版本 dev_0.5.12
## 一、修「改小项显示名称后,撤销发布按钮消失」
**根因不是改名字**(我一开始怀疑「某处按 name 关联」,验下来那条路是干净的:
加载录入页报名行的查询、成绩、引擎读数据全是按 event_id / category_id / code)。
真机制:**进录入页时不记得上次录的是哪个小项**,兜底挑「第一个**待录入**(pending)的小项」;
而**刚发布完的小项状态已经是 published**,恰好被兜底排除 → 回去时右侧换成了**另一个小项** →
而「撤销发布」按钮只按「当前表里有没有已发布的行」显示,自然就不在。
现场看到的「左栏仍显示已发布、单位成绩仍有加分、但按钮没了」**三条本来不矛盾 —— 它们说的是两个不同的小项**。
修法: 记住上次录入的小项(**按 id**,localStorage),
优先级 = URL → 上次录入的 → 第一个 pending → 列表第一个;
记忆失效(小项被删、隐私模式)一律退回原兜底,不把人挡在录入页外。**纯前端,零迁移。**
真机复现与复验(CDP 驱动真实浏览器):改名前「离开再回来 → 换成了别的小项、没有按钮」,
改名后「离开再回来 → 仍是那个小项、按钮在」。
## 二、新增「清空本组 / 本批成绩」(危险操作)
(recorder+ / CSRF / 幂等):
- 省略 = 清整组、数字 = 该批次、显式 = 只清未分批的行;
- 必须为 (**服务端兜底**「没勾选不让提交」);
- **不提供「清空整个小项」**(爆炸半径太大);
- 语义 = **先撤销发布 + 再清内容**:成绩行整行归零 → **清整组时一并清「团体名次」**
(否则「清空了榜上还有分」)→ 作废旧流水并按剩余已发布内容重写 → **小项状态对称退回**
(只在原为 published 时降级,正好避免「左栏写着已发布却没有已发布成绩」)→ 审计 + 推榜。
界面:工具栏「清空本组」常驻、「清空本批」只在筛了批次时出现;确认框新增「必须勾选」能力。
与「撤销发布」的区别(两个动作界面都写清了):
- **撤销发布**:成绩内容**保留**,只把分收回;
- **清空**:成绩内容**一起清掉**,分也收回。
## 三、验证
- 全量自检两轮**全绿、**:服务端 14 包 / 前端 **974 例** 0 fail / Console 96 例 0 fail。
- 新增:(小项名+组别名一起改,录入页状态/流水/榜单逐字节不变)、
(8 例)、、。
- 顺带扫描了 13 处「按名字关联」的地方并逐条判定:**数据关联一律按 id/code**;
只有当「人写的名字要在表里对齐」时才按名字(导入报名表的组别名、Excel 工作表名)——
那几处是有意为之、报错也能照着改,**未改**。
## 版本
dev_0.5.11 → dev_0.5.12
2026-09-17 01:14:01 +08:00
..
2026-09-11 23:46:59 +08:00
2026-09-11 21:47:07 +08:00
2026-09-11 23:46:59 +08:00
2026-09-10 22:37:25 +08:00
2026-09-11 19:26:36 +08:00
2026-09-11 23:46:59 +08:00
2026-09-11 23:46:59 +08:00
2026-09-13 15:20:18 +08:00
2026-09-11 21:47:07 +08:00
2026-09-13 15:20:18 +08:00
2026-09-16 23:55:12 +08:00
2026-09-14 11:45:32 +08:00
2026-09-11 17:14:02 +08:00
2026-09-11 23:46:59 +08:00
2026-09-16 23:55:12 +08:00
2026-09-13 15:20:18 +08:00
2026-09-11 21:47:07 +08:00
2026-09-11 21:47:07 +08:00
2026-09-14 23:40:31 +08:00
2026-09-14 01:10:16 +08:00
2026-09-14 11:45:32 +08:00
2026-09-14 23:40:31 +08:00
2026-09-14 14:05:48 +08:00
2026-09-14 14:05:48 +08:00
2026-09-14 14:05:48 +08:00
2026-09-11 04:05:02 +08:00
2026-09-14 11:45:32 +08:00
2026-09-14 03:52:34 +08:00
2026-09-14 14:05:48 +08:00
2026-09-14 11:45:32 +08:00
2026-09-14 11:45:32 +08:00
2026-09-14 11:45:32 +08:00
2026-09-14 11:45:32 +08:00
2026-09-10 22:37:25 +08:00
2026-09-10 22:37:25 +08:00
2026-09-11 23:46:59 +08:00
2026-09-11 23:46:59 +08:00
2026-09-11 15:35:42 +08:00
2026-09-13 15:20:18 +08:00
2026-09-17 01:14:01 +08:00
2026-09-11 23:46:59 +08:00
2026-09-11 23:46:59 +08:00
2026-09-11 23:46:59 +08:00
2026-09-11 17:14:02 +08:00
2026-09-11 23:46:59 +08:00
2026-09-11 23:46:59 +08:00
2026-09-11 23:46:59 +08:00
2026-09-14 01:10:16 +08:00
2026-09-11 23:46:59 +08:00
2026-09-11 15:35:42 +08:00
2026-09-10 17:45:11 +08:00
2026-09-10 17:45:11 +08:00
2026-09-11 01:59:58 +08:00
2026-09-14 01:10:16 +08:00
2026-09-14 23:40:31 +08:00
2026-09-11 15:35:42 +08:00
2026-09-10 17:45:11 +08:00
2026-09-14 14:05:48 +08:00
2026-09-11 15:35:42 +08:00
2026-09-17 01:14:01 +08:00
2026-09-11 23:46:59 +08:00
2026-09-11 01:59:58 +08:00
2026-09-11 23:46:59 +08:00
2026-09-11 23:46:59 +08:00
2026-09-09 22:16:58 +08:00
2026-09-09 22:16:58 +08:00
2026-09-10 12:02:00 +08:00
2026-09-11 15:35:42 +08:00
2026-09-14 23:40:31 +08:00
2026-09-13 15:20:18 +08:00
2026-09-14 03:52:34 +08:00
2026-09-12 01:27:09 +08:00
2026-09-11 04:05:02 +08:00
2026-09-11 04:05:02 +08:00
2026-09-11 04:05:02 +08:00
2026-09-11 23:46:59 +08:00
2026-09-14 01:10:16 +08:00
2026-09-12 18:30:46 +08:00
2026-09-12 18:30:46 +08:00
2026-09-12 18:30:46 +08:00
2026-09-11 15:35:42 +08:00
2026-09-11 23:46:59 +08:00
2026-09-11 04:05:02 +08:00
2026-09-14 22:57:03 +08:00
2026-09-11 19:26:36 +08:00
2026-09-13 15:20:18 +08:00
2026-09-10 09:47:06 +08:00
2026-09-10 09:47:06 +08:00
2026-09-10 09:47:06 +08:00
2026-09-14 22:57:03 +08:00
2026-09-14 22:57:03 +08:00
2026-09-11 15:35:42 +08:00
2026-09-11 23:46:59 +08:00
2026-09-11 19:26:36 +08:00
2026-09-11 21:47:07 +08:00
2026-09-11 19:26:36 +08:00
2026-09-11 21:47:07 +08:00
2026-09-14 22:57:03 +08:00
2026-09-12 01:27:09 +08:00
2026-09-12 01:27:09 +08:00
2026-09-11 23:46:59 +08:00
2026-09-11 23:46:59 +08:00
2026-09-16 23:55:12 +08:00
2026-09-11 23:46:59 +08:00
2026-09-14 14:05:48 +08:00
2026-09-13 15:20:18 +08:00
2026-09-14 03:52:34 +08:00
2026-09-11 21:47:07 +08:00
2026-09-11 21:47:07 +08:00
2026-09-11 23:46:59 +08:00
2026-09-13 15:20:18 +08:00
2026-09-11 23:46:59 +08:00
2026-09-11 23:46:59 +08:00
2026-09-12 01:27:09 +08:00
2026-09-17 01:14:01 +08:00
2026-09-17 01:14:01 +08:00
2026-09-09 22:16:58 +08:00
2026-09-13 15:20:18 +08:00
2026-09-13 15:20:18 +08:00
2026-09-11 23:46:59 +08:00
2026-09-16 23:55:12 +08:00
2026-09-17 01:14:01 +08:00
2026-09-11 23:46:59 +08:00
2026-09-11 17:14:02 +08:00
2026-09-11 17:14:02 +08:00
2026-09-13 15:20:18 +08:00
2026-09-13 15:20:18 +08:00
2026-09-14 11:45:32 +08:00
2026-09-10 23:48:28 +08:00
2026-09-11 21:47:07 +08:00
2026-09-11 21:47:07 +08:00
2026-09-11 21:47:07 +08:00
2026-09-12 01:27:09 +08:00
2026-09-09 22:16:58 +08:00