Repository navigation
v0.1.2 —— 控制台修复 + 二次全扫 + 线上体检三项
本 tag 已前移到
d89d0b2(原4f79cd2),因此包含其后的全部修复;下表资产
就是从d89d0b2重新构建的。
核心修复
- 日志页报「日志加载失败:renderLogs is not defined」:v0.1.1 拆
app.js时
import 块漏了./render/logs.js。ESM 的未绑定标识符不在加载时报错,只在执行到
renderLogs(state.logs)那一刻抛ReferenceError,又被同一个.catch改写成
「接口失败」——而/admin/api/logs一直是 200。现在取数与渲染分开收尾。 - 英文界面空态整段中文(暂无日志 / 密钥 / 账号 / 无):空态行是唯一不经过
translateDom的单元格,而空态正是新装用户的默认视图。 - 设置里的显式
0被吞成空框:限流关掉(0)后重开控制台,输入框是空的。 - 账号接口失败把整个概览拖成空白:
Promise.all让 KPI / 模型表一起不渲染。 - 更新检查的失败会被缓存 6 小时:关个标签页就能污染所有人的「检查更新」。
- 签到计数虚高:「已有探测在跑」既算
probed又进settled。 - 密钥删除/启停:目标不存在时不再回
200 {"ok":true}并落盘,改为 404;
控制台收到 404 会重拉一次,列表与真实状态对齐。
线上体检三项(本 tag 新增)
- 缓存命中率改今日口径:以前算的是「累计缓存 / 累计入」,却与「今日 Token」
并排展示。现在主值取今日,累计命中率与绝对量放 tooltip。
升级当天该格可能显示0.0%(老版本没按天累计 cached,分子无历史),隔天恢复。 - 客户端断开不再算失败:
context.Canceled记499(nginx 约定)且不计入
failed_requests;DeadlineExceeded记504,与真实响应码一致。日志页 499 用
warn 色。线上此前 4 条 502 里有 3 条是这类。 - Docker 构建可注入版本:
ARG VERSION=docker,否则parseSemver("docker")失败
→ 永远收不到升级提示。
VERSION=$(git describe --tags) docker compose up -d --build
回归防线
- Go:导入契约(跨模块调用必须 import)、
TestVersionStatusSurvivesCallerCancel、
TestCheckinSkipsInFlightProbes、TestLogsEndpointRejectsUnsupportedMethod、
TestAdminKeysDeleteReportsMissing、TestStatsDayCachedTokens、
TestRecordClientGoneIsNotFailure、TestStatusOfUsesUpstreamStatusCode - 前端冒烟 21 条(启动即刷新日志页 / 英文空态 / 设置保留 0 / 404 自愈 /
缓存命中率口径 / 499 徽章 …) - 上述断言对旧代码复跑全部 FAIL
验证
sh scripts/lint.sh exit 0(gofmt / vet / JS 语法 / 冒烟 / 测试)
go test -race ./... 13 包全绿(internal/server 77%+)
552 个用例(420 顶层 + 132 子用例)+ 前端冒烟 21 条
详见 docs/changes.md §53–§56。
校验下载物
sha256sum -c checksums.txt # Windows: certutil -hashfile <file> SHA256