From 2c6f8d11f363fc80b8336ddab4b1ea4aba58b319 Mon Sep 17 00:00:00 2001 From: yuetsh <517252939@qq.com> Date: Sat, 8 Aug 2026 07:29:41 -0600 Subject: [PATCH] =?UTF-8?q?fix(=E5=89=8D=E7=AB=AF):=20=E6=8E=A5=E5=9B=9E?= =?UTF-8?q?=E9=98=B6=E6=AE=B5=202=20=E4=B8=B4=E6=97=B6=E5=85=B3=E6=8E=89?= =?UTF-8?q?=E3=80=81=E4=B9=8B=E5=90=8E=E5=BF=98=E4=BA=86=E6=89=93=E5=BC=80?= =?UTF-8?q?=E7=9A=84=E9=85=8D=E7=BD=AE=E6=8E=A8=E9=80=81=E5=92=8C=20MaxKB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 扫前端死代码时发现 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 --- apps/web/src/App.vue | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/apps/web/src/App.vue b/apps/web/src/App.vue index 1da2c7c..76fc1ab 100644 --- a/apps/web/src/App.vue +++ b/apps/web/src/App.vue @@ -3,6 +3,8 @@ import { darkTheme, dateZhCN, zhCN } from "naive-ui" import "normalize.css" import "./index.css" import { useConfigStore } from "shared/store/config" +import { useConfigUpdate } from "shared/composables/configUpdate" +import { useMaxKB } from "shared/composables/maxkb" import { useUserStore } from "shared/store/user" const isDark = useDark() @@ -15,7 +17,11 @@ onMounted(() => { userStore.getMyProfile() }) -// 配置推送和 MaxKB 仍属于 Phase 3;在它们迁入前不连接旧 WebSocket。 +// 配置实时推送 + MaxKB 挂件。阶段 2 时因为后端还没有 /ws/config 而暂时关掉, +// 阶段 3 迁完之后一直没接回来 —— 表现是管理员改站点配置后学生要刷新才生效、 +// 知识库挂件根本不出现,且没有任何报错。两者现在都走新后端的 /ws/config。 +useConfigUpdate() +useMaxKB() // 延迟加载 highlight.js,避免阻塞首屏 const hljsInstance = ref(null)