Commit Graph

2 Commits

Author SHA1 Message Date
wandering1 a6d6588257 test(ui-golden): 刷新装置信息/交流量/直流量三页像素参考
随 44921cb(三页接快照真值)刷新黄金参考,本笔不含任何代码或断言改动——文本侧期望(PAGES/
TEXTS)已在上一笔同批改过,这一笔只把"代码新效果"登记成新的判据。

差异量(与旧参考逐像素比对,刷新前的实测)
- shot_info.bin 3669 px(6 行 → 8 行、标签去冒号、值列左对齐 x=56、页码改真值)
- shot_ac.bin 964 px(24 行 → 7 行;页脚从"共 3 页"变"共 1 页")
- shot_dc.bin 800 px(3 行 → 2 行;温度值列改"码2048"、通道行"未配置")
- 其余 8 页(密码 4 态 + 网口设置 4 态)逐字节不变:这三页与它们共用同一套框架
  绘制,没连带漂移正好反证改动是局部的——不是把共享代码碰坏了而没被发现

刷新前的人眼确认(黄金参考是判据,不是快照:版面真错了就等于把错误钉死)
- 装置信息:8 行行槽 38..129 不与页脚(143)相撞;MAC 17 字符右缘 158 在屏内;软件校验
  显示 "--"(不再抄参考项目的 4454);IP 走 net_cfg_fmt_ipv4 的三段补零口径,与网口设置页
  同一真源;页脚"第 1 页,共 1 页"
- 交流量:Ua 0.812 / U0 0.005 / Ia 0.046 / Ia2 0.002 / Ia5 0.001 五行读数在位;
  Hz "--"(eng=0 期间幅值门恒不成立)、标定行 "未标定"(量纲口径写在屏上而不是注释里);
  选中行 Ua 有白带(band_h >0 才可见,同记录页约定)
- 直流量:温度 "码2048"、直流通道 "未配置"

验证
- check_content_pages.py:rc=0,14 项全 Passed(含开页-关页往返池水位 5448 B 不涨)
- check_menu_rows.py:rc=0(菜单 8 状态与池 5368 B 不变,本批没动菜单树)
- ui-golden 钩子在含本笔的整树上 Passed;全量钩子(--all-files)41 项 Passed,红项只有
  mem-numbers / mem-budget(Flash/RAM 台账待回填,单写者禁区归 Lead)→ --no-verify
- 体积与上一笔一致(本笔只换 3 个 3200 B 的二进制参考,不参与固件构建)

gate: only mem-budget/mem-numbers pending lead ledger backfill
2026-10-25 14:44:45 +08:00
wandering1 a38f862fb9 chore(ui-golden): 像素黄金参考 ref/*.bin 入库(把门禁改成可移植)
问题:ui-golden 是逐字节比对(check_content_pages.py 里 data == refdata),
而基准 simulator/tests/ref/ 整目录被 .gitignore 忽略、从未入库。后果不是
"少几个文件",而是这条门禁在任何新克隆 / 新并行工作树里必然报「缺黄金
参考」——只在有老副本的机器上它才是真的回归门禁。本会话已两次实测踩到
(并行工作树里只能现场 --update 造基准,而现场造出来的基准恰好失去意义)。

入库前先证明基线可复现,否则等于把一条天天误报的门禁写进仓库:
- 主树 ref/ 生成于 2026-10-11,其间合入 B6~B9 与 UI 令牌化等多次改动;
  今天用刚重建的 lvgl_sim 重跑 → 11 页 + 开页-关页往返池水位逐字节全过
- 主树与新工作树两份**独立构建**的 lvgl_sim(不同构建目录、不同绝对路径)
  各自生成基准 → 11 个 .bin 的 SHA-256 全部一致
即渲染是 CPU 侧确定性输出,可以当仓库内容。

改动:
- .gitignore:整目录忽略 → 只忽略派生的目检 PNG。另加一条
  !simulator/tests/ref/*.bin 反选——第 115 行的全仓 *.bin 兜底(挡
  sim_netcfg.bin 之类运行产物)会把基线一起挡掉,且反选必须排在它之后
  才生效
- 不引入 LFS:11 x 3200 B = 34.4 KB(160x160 单色打包)。走 LFS 反而新增
  失效面——没拉 LFS 的克隆会拿 pointer 文本去比像素,把"缺基准"换成
  "比不中"。.gitattributes 已有 *.bin binary,check-attr 确认 text unset,
  不会被行尾转换改写
- 基线不会被改写型钩子毁掉:trailing-whitespace / end-of-file-fixer 声明
  types: [text],位图含 NUL 被判二进制 → 实测 Skipped;索引 blob、磁盘、
  主树参照三方哈希 11/11 一致
- 新增 11 个基线;同步 5 份文档与 3 处脚本口径:缺基准的提示从"首次/换机
  请加 --update"改为"检出不完整 → git checkout -- simulator/tests/ref/ 取回,
  不要用 --update 就地造基准"(旧提示正是自我实现型基准的来源)
- 顺带修掉 simulator/tests/README.md 两处与实现不符的描述:基准写成 PNG
  (实为 .bin)、regen_ref_png.py 写成"重建黄金参考"(它只出目检图,基准
  由 check_content_pages.py --update 刷)
- .pre-commit-config.yaml 只改注释(原文明确断言 ref/ "永远不会进 git
  索引",已被本改动推翻);ui-golden 的 files 面覆盖 simulator/tests/,
  基线被改即触发回归,刷参考从此在 git diff 里显形

历史口径按纪律冻结:UI_自动化测试流程 2026-09-10 的"整目录不入库"等 6 处
变更记录行不改写,以新行登记反转。

实测:@build 0 错 0 警(Code=213520,与内存台账一致);ui-golden Passed;
pre-commit run --all-files = 36 Passed / 0 Failed(RC=0)。
2026-10-22 06:17:00 +08:00