47be4ae502
build / build (push) Successful in 1m46s
根因:ReleaseTargetsView 在 overview 缺失时自己补 {state:'unknown'},而
productionTargetClass 把"unknown 且没有 empty_baseline"一律当成非空。后端对
"已探测且非空"发的正是这个形状(Go struct 上 omitempty),所以页面本地默认值
与真实观测在 JSON 上无法区分:首次加载、整库状态读取失败、当前范围没有数据
三条路径都会显示"目标非空,尚无权威版本",管理员还会拿到会返回 409 的
"建立目标权威基线"入口。
修法:没有 overview 时 production 保持 null,分类走新的 no-observation 分支;
四类有效响应(known / 已读且为空 / 非空无版本 / 不可读)的判定与入口不变。
刷新失败保留上一份 overview 时标注"上次观测 · 刷新失败,可能已过期",不把旧
结果当成刚验证的状态。后端 gate、权限、预备份与 API 拒绝一律未改。
测试:把旧"三次 SSR 当刷新"的用例撤掉,改为同一挂载 + 可控 fetch 的真实行为
测试(首次读取未返回 / 空→不可读→恢复 / 刷新失败保留旧观测 / 内外切换 /
overview 属于别的范围);缺观测的三条路径另以 SSR 负例复用审核者的反例。
新增 jsdom 仅作为 vitest 的 DOM 环境(商品代码零改动,npm ci 与锁文件已核)。
验证:make verify 16 项 success(tests-web 504 passed、tsc 无错、npm audit 0);
新用例先在原实现上红(断言收到"目标非空"),修后绿。未部署、未合并、未改
候选运行栈。
31 lines
721 B
JSON
31 lines
721 B
JSON
{
|
|
"name": "knowledge-governance-web",
|
|
"private": true,
|
|
"version": "0.1.0",
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "vite --host 0.0.0.0",
|
|
"test": "vitest run",
|
|
"build": "tsc -b && vite build",
|
|
"typecheck": "tsc -b --pretty false",
|
|
"format": "prettier --write .",
|
|
"format:check": "prettier --check ."
|
|
},
|
|
"dependencies": {
|
|
"react": "19.1.1",
|
|
"react-dom": "19.1.1",
|
|
"react-markdown": "10.1.0",
|
|
"remark-gfm": "4.0.1"
|
|
},
|
|
"devDependencies": {
|
|
"@types/react": "19.1.10",
|
|
"@types/react-dom": "19.1.7",
|
|
"@vitejs/plugin-react": "5.0.1",
|
|
"jsdom": "^30.1.3",
|
|
"prettier": "3.9.10",
|
|
"typescript": "5.9.2",
|
|
"vite": "7.3.7",
|
|
"vitest": "5.0.3"
|
|
}
|
|
}
|