Files
OJ2/apps/web
yuetsh 2c6f8d11f3 fix(前端): 接回阶段 2 临时关掉、之后忘了打开的配置推送和 MaxKB
扫前端死代码时发现 apps/web 比 ojnext 多两个"没人调用的导出":
useConfigUpdate 和 useMaxKB。查下去不是死代码,是**搬运时丢的接线** ——
ojnext 的 App.vue 调了这两个,apps/web 的没调,那里留着一句:

    // 配置推送和 MaxKB 仍属于 Phase 3;在它们迁入前不连接旧 WebSocket。

阶段 2 因为后端还没有 /ws/config 而暂时关掉,说好阶段 3 迁完再开,然后就忘了。
阶段 3 早已完成。

表现是两个**静默**的功能缺失:管理员改站点配置后学生要刷新才生效;
知识库挂件根本不出现。都不报错,所以此前所有验证都没发现 ——
包括我昨天那轮浏览器走查,因为我不知道该期待它们出现。

## 验证

后端侧本来就是齐的(POST /admin/website 里已经调 publishConfigUpdate)。
接回来之后实测:

- 浏览器控制台出现 `[WebSocket] 连接成功: ws://localhost:8080/ws/config`
  (之前根本不会连)
- 改站点名 → 收到 8 条 config_update 推送
- **页面全程不刷新,站点名从"判题狗-推送测试"自己变成"判题狗-实时生效了"**

中途我一度断言"configUpdateChannel 没有任何发布者",那是错的 ——
路由调的是封装函数 publishConfigUpdate,我 grep 的是常量名。

## 顺带:两边前端的死代码规模已对齐

各 7 个没人调用的导出函数 + 2 个没人引用的 .vue。检测器已确认
unplugin-vue-components 只解析 Naive UI(无 src/components 目录),
本地组件必须显式 import,所以"没人 import"的判定是可靠的;
并用 3 个明确在用的导出反测过检测器本身。这批还没删。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-08 07:29:41 -06:00
..