qubiaobiao e5579f034e fix(admin): 修复成绩管理页 TDZ 崩溃——watch 早于 ref 声明(R29 回归)
浏览器实测报错:
  ReferenceError: Cannot access 'scoreExportGroup' before initialization
  at setup (Admin.vue:2559:7)

根因:R29 板块迁移时把 `watch(scoreExportGroup, …)` 写在 2559 行,而
`const scoreExportGroup = ref('')` 在 2810 行。**watch() 会立即执行一次
source 取值来收集依赖**,故 setup 阶段即触发 TDZ。
(对照:watch(questionGroup,…) 安全,其声明在 1784 行。)

修法:把该 watch 下移到 `scoreExportGroup` / `isExamScoreGroup` 声明之后
(成绩管理节内),原位置留注释说明原因,避免后人再次上移。

验证(本轮新增两道门禁工具,均在 .workbuddy/tools/,未入仓库):
- AST 顺序扫描 verify_frontend_tdz.mjs:对已提交的坏版本 c470e79 精确命中
  Admin.vue:2559(变异测试);修复后 src 38 文件 + dist 打包产物 26 文件全 PASS。
- 真 chromium(playwright)ui-runtime-check.mjs:致命运行错误 0、告警 0、
  18/18 断言通过(中职→本科→高职切组、迁移板块显隐、导出Excel、
  批量下载作品按组显隐、评分弹窗「客观分(卷面)」单行左对齐)。
- dist 已重建:built in 12.36s、VITE_EXIT=0。

教训:vite build 只打包、不执行 setup,构建绿对 TDZ 是假绿。
2026-09-28 17:20:37 +08:00
2026-08-17 12:25:42 +08:00
2026-08-17 12:25:42 +08:00
2026-08-17 12:25:42 +08:00
2026-08-17 12:25:42 +08:00
2026-08-17 12:25:42 +08:00
2026-08-17 12:25:42 +08:00
Description
No description provided
1.6 MiB
Languages
Vue 77.3%
JavaScript 20.9%
CSS 1.5%
HTML 0.3%