- .gitea/workflows/ci.yml:后端 gofmt/vet/test + 前端 lint/test/build 双 job 门禁 - vitest + @testing-library + jsdom 落地,14 个命脉用例:useListQuery 乱序丢弃/卸载中止、 http.ts 401 单飞刷新+队列重放+失败登出+silent 直拒、审计防抖、StepDeploy 部署目标、query-utils - 版本注入断裂修复:main 补 buildTime/gitCommit 符号,build.sh/Dockerfile 注入 main.version, /health 返回真实版本,前端 package.json 版本对齐 2.0.0 - gofmt 清零(8 个存量未格式化文件)
=== 1. 修复 /analysis 与 /logs 直方图 404(我上一轮 patch 的误伤)=== 现象:分析页直接报 "API endpoint not found";日志查询页直方图不显示。 根因:37e2f0f 里一次模糊匹配的 patch 把 logs.POST("/histogram", logsCtrl.Histogram) 改成了 logs.GET("/histogram", logsCtrl.Histogram) 前端 logsApi.histogram 一直用 POST(body 带 sourceId/query/start/end), 于是 POST /logs/histogram 全部 404。访问日志实证: POST /api/v1/logs/histogram → 404 ×7 这类"方法写错"编译期查不出来,go build / tsc 都是绿的。 修法:同时注册 POST(前端用)与 GET(curl 调试用)。 新增 backend/routers/router_test.go 守门: TestCriticalRoutes 断言 19 条关键路由的 method+path 组合都存在 TestHistogramAcceptsPost 单独断言 histogram 必须同时有 POST 与 GET 以后再把 POST 写成 GET,测试会直接红。 === 2. 系统设置放回侧栏,改成 5 个顶层 tab === 按使用反馈调整: 系统设置(侧栏一个入口) ├ 通用配置 /settings ← tab 起点 ├ 用户管理 /users ├ 审计日志 /audit ├ LDAP 接入 /settings/ldap ← 新拆分 └ 默认镜像源 /settings/registry ← 新拆分 为什么拆:原来 /settings 页面内部已有 4 个 tab(通用/告警通知/LDAP/镜像源), 如果侧栏再加一层 tab 就是"两层 tab",点两下才知道自己在哪。现在扁平化成单层。 配套改动: - 新增 pages/settings/ldap.tsx、registry.tsx(各自只渲染一块内容) - settings 主页去掉内层 Tabs,只留通用配置(外观/语言/改密码/关于) - 上一版把设置放到了右上角齿轮,现在移除齿轮入口 - 菜单文案:settings 页标题 系统设置 → 通用配置;新增 LDAP 接入 / 默认镜像源 - 删除设置页副标题「通用配置、告警通知、LDAP 接入与默认镜像源」(用户要求去掉) - 删除 settings 里已不存在的 tabs.notify 文案 (注意 settings.notify.* 这些 key 仍被告警页的 NotifySection 用着,保留) === 3. 告警通知已不在系统设置里 === 它在上一轮就搬到了「日志告警 → 通知通道」tab, 本次顺带把系统设置里遗留的 tab 文案一并清掉,避免出现"看似有两处配置入口"。 === 实测 === POST /api/v1/logs/histogram → 200(修复前 404) go test ./... 全绿(含新增的 routers 包) tsc -b --force 通过