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>
This commit is contained in:
2026-08-08 07:29:41 -06:00
parent 9a63883f30
commit 2c6f8d11f3

View File

@@ -3,6 +3,8 @@ import { darkTheme, dateZhCN, zhCN } from "naive-ui"
import "normalize.css" import "normalize.css"
import "./index.css" import "./index.css"
import { useConfigStore } from "shared/store/config" import { useConfigStore } from "shared/store/config"
import { useConfigUpdate } from "shared/composables/configUpdate"
import { useMaxKB } from "shared/composables/maxkb"
import { useUserStore } from "shared/store/user" import { useUserStore } from "shared/store/user"
const isDark = useDark() const isDark = useDark()
@@ -15,7 +17,11 @@ onMounted(() => {
userStore.getMyProfile() userStore.getMyProfile()
}) })
// 配置推送和 MaxKB 仍属于 Phase 3在它们迁入前不连接旧 WebSocket。 // 配置实时推送 + MaxKB 挂件。阶段 2 时因为后端还没有 /ws/config 而暂时关掉,
// 阶段 3 迁完之后一直没接回来 —— 表现是管理员改站点配置后学生要刷新才生效、
// 知识库挂件根本不出现,且没有任何报错。两者现在都走新后端的 /ws/config。
useConfigUpdate()
useMaxKB()
// 延迟加载 highlight.js避免阻塞首屏 // 延迟加载 highlight.js避免阻塞首屏
const hljsInstance = ref<any>(null) const hljsInstance = ref<any>(null)