fix(admin): 写操作不再被实时连接状态拦截

原来 canWrite 依赖 realtimeStatus === 'online',WS 一断(服务端重启、网络瞬断、
以及之前那个 1008 停重连的 bug)整个管理端就变只读:基础数据的「保存全部」、
录入、发布、积分调整、大屏控制全部按钮变灰,且只是变淡、看不出原因。

写路径本来就是 HTTP,服务端会做完整校验,所以:
- stores/event.ts 的 canWrite 恒为 true(保留签名,角色判断由各页面叠加 auth.readOnly)
- useBaseData.canWrite 简化为 !auth.readOnly
- 顶部「连接中断」的提示改为「数据可能不是最新」,不再声称写操作停用
- 文档同步:FAQ 与使用手册区分「示例数据」(改动只在界面)与「连接中断」(照常提交)

新增 web/src/admin/tests/base-data.test.ts 锁住该行为(离线可写 / 访客不可写)。
This commit is contained in:
AskaEth committed 2026-09-10 01:56:07 +08:00
1 parent 0c9a6b6a27
commit c2696e768e
6 files changed
+42 -9

No files matched your search

+3 -1
View File
@@ -435,7 +435,9 @@
成绩相同(或手动名次相同)即视为并列,显示同一名次,例如两个「3」。积分按规则包里的并列口径计算,默认是「顺延」:并列第 3 各得第 3 名的分,无第 4 名,下一名是第 5 名。奖牌也按并列处理,并列第 1 各记 1 金、无银牌。
**Q:为什么「发布」按钮是灰的?**
可能原因:当前是访客未登录、服务端连接中断、处于示例数据模式,或校验存在错误。页面会给出对应提示。
可能原因:当前是访客未登录(只读)、处于示例数据模式,或校验存在错误。页面会给出对应提示。
> 顶部显示「连接中断」不会再禁用按钮:实时推送断了只意味着数据可能不是最新,写操作照常提交并由服务端校验。
**Q:为什么页面显示「示例数据」?**
说明前端连不上后端或接口未就绪,此时操作不会写入真实赛事。请检查 Console 里服务端是否为「运行中」,恢复后刷新页面。
+3 -1
View File
@@ -126,7 +126,9 @@ Console 启动的多屏窗口默认每屏锁定一页。到「大屏控制」点
不需要。完全离线运行,不依赖外网,也不需要在现场安装任何运行时。
**Q34:页面提示「示例数据」是什么意思?**
表示后端未就绪或连接中断,此时所有改动只停留在界面,不会写入真实赛事。恢复连接后刷新即可。
表示后端未就绪,此时所有改动只停留在界面,不会写入真实赛事。恢复连接后刷新即可。
> 注意区分:顶部若只是显示「连接中断」,说明实时推送断了(数据可能不是最新),但写操作仍会照常提交给服务端并做校验。
**Q35:为什么登录 / 写操作偶尔被拒绝?**
系统有频率限制:登录每 IP 每分钟 5 次,写操作每用户每分钟 30 次。稍等一分钟再试。