Files
pbf/NavSea_Audit_Logic_And_Evolution_2026-04-01.md
2026-04-01 12:38:26 +08:00

407 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# NavSea Audit Logic And Evolution
Last Updated: 2026-04-01
## Goal
这份文档统一说明两件事:
1. 当前 `pbf` 项目应该采用什么审计口径
2. 审计方法是如何一步步升级到现在这个状态的
当前最重要的原则只有一条:
- 审计第一优先级不是“看起来像不像”
- 而是“不能丢对象”
只有对象保真先过关,后面的渲染审计和视觉复原才有意义。
## Current Audit Order
当前正式口径按下面 3 层执行,顺序不能反过来。
### 1. Object Preservation Audit
目标:
- 先判断原始对象有没有在 delivery / final 里被等价保留下来
- 优先抓:
- `missing object`
- `wrong relayer`
- `over-merged object`
- `raw class lost`
判断标准:
- 优先用 `fid`
- 没有 `fid` 时,再退回 `geometry + stable legacy properties`
- 至少要保留:
- 原始 `source_layer`
- 原始危险物/航标细分类
- 能追回原始对象的锚点
这是“硬门槛”:
- 如果对象已经丢了
- 或者对象被归并成别的对象
- 那么不允许进入“渲染已通过”的判断
### 2. Render Audit
目标:
- 在“对象没丢”的前提下,检查它有没有被正确渲染
重点看:
- icon 是否存在
- text 是否存在
- fill / line / outline 是否存在
- source-layer 是否消费正确
- style layer 是否命中正确
这一层回答的是:
- 原始版渲染了多少对象
- 现在渲染了多少对象
- 哪些对象从“有 icon/text”变成了“没有”
### 3. Visual / AOI Audit
目标:
- 用固定页面和固定热点去验证“现在具体是怎么画出来的”
当前固定页面:
- `http://192.168.200.184/newpec/navsea-compare-karatsu-20nm.html`
这一层只做两件事:
- 校准 backend render audit 的盲区
- 验证 style 修改是否真的把用户看到的问题修掉了
这一层不能替代前两层。
## Current Ground Truth
截至 2026-04-01当前项目的真实状态是
### A. 20nm Visual Baseline
固定视觉审计页:
- `http://192.168.200.184/newpec/navsea-compare-karatsu-20nm.html`
用途:
- 肉眼确认
- 点击拾取
- AOI 热点截图审计
它是当前唯一固定的视觉基线。
### B. 10nm Object-Level Backend Baseline
当前最可信的对象级 backend 审计基线仍然是:
- [`NavSea_Original_vs_Delivery_Render_Audit_Karatsu_10nm_2026-03-31.rerun.md`](/root/sourceserver/pbf/NavSea_Original_vs_Delivery_Render_Audit_Karatsu_10nm_2026-03-31.rerun.md)
- [`NavSea_Original_vs_Delivery_Render_Audit_Karatsu_10nm_2026-03-31.rerun.json`](/root/sourceserver/pbf/NavSea_Original_vs_Delivery_Render_Audit_Karatsu_10nm_2026-03-31.rerun.json)
原因:
- 这条线还能较可靠地对象回对
- `missing / extra / mismatch` 的意义相对稳定
### C. 20nm Backend Audit Limitation
当前 `20nm` backend render audit 能提供信号,但不能独立作为严格对象级放行依据。
它能告诉我们:
- 哪一层整体有问题
- 哪类 icon/text 大量不一致
但它不能稳定告诉我们:
- 某一个具体 `fid` 是否等价保留下来了
例如:
- `icon_missing_in_engineering | p航行危険障害物 | 664`
- `extra_icon_in_engineering | navigation_hazard_point | 664`
这说明“这一层出问题了”,但不能自动定位到:
- `fid=13025299` 这种具体对象为什么消失
## Audit Evolution
下面是审计方法升级到现在的过程。
### Phase 0: General Engineering Audit
最早主要是:
- 原始版 vs engineering 版
- 看总体 render compatibility
代表报告:
- [`NavSea_Original_vs_Engineering_Render_Audit_Karatsu_10nm.md`](/root/sourceserver/pbf/NavSea_Original_vs_Engineering_Render_Audit_Karatsu_10nm.md)
- [`NavSea_Original_vs_Engineering_Render_Audit_Kyushu.md`](/root/sourceserver/pbf/NavSea_Original_vs_Engineering_Render_Audit_Kyushu.md)
这一阶段解决的是:
- 整体链路能不能跑
- 原始 layer 和工程 layer 有没有大体对上
问题:
- 太偏“工程验证”
- 还不是 delivery 收口口径
### Phase 1: Delivery Render Audit
开始转向:
- 原始版 vs delivery 版
代表报告:
- [`NavSea_Original_vs_Delivery_Render_Audit_Karatsu_10nm_2026-03-31.md`](/root/sourceserver/pbf/NavSea_Original_vs_Delivery_Render_Audit_Karatsu_10nm_2026-03-31.md)
- [`NavSea_Original_vs_Delivery_Render_Audit_Karatsu_20nm_2026-03-31.md`](/root/sourceserver/pbf/NavSea_Original_vs_Delivery_Render_Audit_Karatsu_20nm_2026-03-31.md)
这一阶段的升级点:
- 开始看真正 delivery 产物
- 开始统计:
- `exact_match`
- `mismatch`
- `missing_in_engineering`
- `extra_in_engineering`
问题:
- `20nm delivery` 这条线在去旧字段后trace-back anchor 不够
- 所以 `20nm` 很快变成“层级粗审可用,对象精审不稳”
### Phase 2: FID-Only / Refresh Variants
为了继续挤出更多对象级信息,出现了几种变体:
- `fidonly`
- `refresh`
- `r7`
代表报告:
- [`NavSea_Original_vs_Delivery_Render_Audit_Karatsu_20nm_2026-03-31.fidonly.md`](/root/sourceserver/pbf/NavSea_Original_vs_Delivery_Render_Audit_Karatsu_20nm_2026-03-31.fidonly.md)
- [`NavSea_Original_vs_Delivery_Render_Audit_Karatsu_20nm_2026-03-31.refresh.md`](/root/sourceserver/pbf/NavSea_Original_vs_Delivery_Render_Audit_Karatsu_20nm_2026-03-31.refresh.md)
- [`NavSea_Original_vs_Delivery_Render_Audit_Karatsu_20nm_2026-03-31.r7.md`](/root/sourceserver/pbf/NavSea_Original_vs_Delivery_Render_Audit_Karatsu_20nm_2026-03-31.r7.md)
这一阶段的升级点:
- 尽量靠 `fid`
- 尽量把样式改动后的 20nm 页面状态也纳入
问题:
- 仍然是“20nm 全局层级信号大于对象级信号”
- 能看出层整体有问题,但很难直接精确锁到某个对象
### Phase 3: 10nm Rerun As Trusted Backend Baseline
这是一次关键收口。
代表报告:
- [`NavSea_Original_vs_Delivery_Render_Audit_Karatsu_10nm_2026-03-31.rerun.md`](/root/sourceserver/pbf/NavSea_Original_vs_Delivery_Render_Audit_Karatsu_10nm_2026-03-31.rerun.md)
这一阶段的升级点:
- 明确承认:
- `20nm` 不是当前最可信对象级 backend baseline
- `10nm rerun` 才是
意义:
- 后端对象级判定终于有了一条相对稳定的参考线
局限:
- 它解决的是“对象级 backend 可信度”
- 不能代替 `20nm compare` 的视觉确认
### Phase 4: Unified Strict Audit
为了解决“后台数字和肉眼感受不一致”,引入了 strict audit。
核心脚本:
- [`navsea_strict_audit.py`](/root/sourceserver/pbf/navsea_strict_audit.py)
代表报告:
- [`report/strict_audit/strict_audit_summary.md`](/root/sourceserver/pbf/report/strict_audit/strict_audit_summary.md)
- [`report/strict_audit_final_20nm/strict_audit_summary.md`](/root/sourceserver/pbf/report/strict_audit_final_20nm/strict_audit_summary.md)
这一阶段的升级点:
- 把浏览器真实截图差异
- 和 backend render audit 摘要
- 放进同一份报告
问题:
- 一开始还是偏整屏 diff
- 太粗,不能指导具体修复
### Phase 5: Small Scope AOI Audit
这是最近一次重要升级。
方法文档:
- [`NavSea_20nm_Small_Scope_Audit_Method.md`](/root/sourceserver/pbf/NavSea_20nm_Small_Scope_Audit_Method.md)
热点配置:
- [`strict_audit_hotspots_20nm_pilot.json`](/root/sourceserver/pbf/strict_audit_hotspots_20nm_pilot.json)
- [`strict_audit_hotspots_20nm.json`](/root/sourceserver/pbf/strict_audit_hotspots_20nm.json)
这一阶段的升级点:
- 不再只看整屏 diff
- 改成看固定热点 AOI
- 每个热点绑定 backend focus
意义:
- 更适合修 style
- 更适合校准 icon/text/sprite/runtime 盲区
当前问题:
- 热点覆盖还不全
- 例如 `荒曽根/大曽根` 这块危险物区当前就不在热点里
## Why Serious Missing-Object Issues Still Escaped
`fid=13025299` 这种“左边有、右边没有等价对象”的情况,之所以还能漏过,是因为当前审计仍有 3 个盲点。
### 1. 20nm Backend Audit Is Layer-Level, Not Fid-Level Enough
它会报:
- 这一层整体少了 icon
- 这一层整体多了 icon
但不自动报:
- 哪个 `fid`
- 哪个 `class_code`
- 是“丢对象”还是“错误归并”
### 2. Hazard Semantics Are Too Coarse In Builder
当前 builder 对:
- `p航行危険障害物`
- `p投錨注意障害物`
的语义推断太粗,很多对象只剩:
- `fish_reef`
- `wreck`
- `obstruction`
- `hazard_mark`
这会导致原始 `409` 这种细分类在 delivery 线中失真。
### 3. AOI Visual Audit Coverage Is Incomplete
当前热点更偏:
- 高岛主港
- 高岛近岸
- 东侧防波堤
还没有覆盖:
- `荒曽根 / 大曽根` 这类危险物密集区
## Current Official Audit Logic
从现在开始,项目内应统一采用下面这套逻辑。
### Audit Gate 1: Object Preservation Gate
必须回答:
- 原始对象是否还在
- 是否仍能等价追踪
- 是否被错误归并成别的对象
建议新增专项:
- `hazard object preservation audit`
-`fid`
- 按原始 `source_layer`
- 按原始 `分類番号`
### Audit Gate 2: Render Gate
只有对象保真过了,才进入这层。
必须回答:
- 原始渲染了多少对象
- 现在渲染了多少对象
- 哪些对象有 icon/text/fill/line 差异
### Audit Gate 3: AOI Visual Gate
最后才是:
- 固定 compare 页
- 固定 AOI 热点
- 点击拾取核对
目的:
- 验证用户肉眼看到的问题是否已经真的修掉
## Recommended Next Upgrade
当前最该补的不是新的 style而是新的审计能力。
建议下一步按这个顺序升级:
1. 新增 `hazard preservation audit`
- 专门检查:
- `p航行危険障害物`
- `p投錨注意障害物`
- 输出:
- 原始 `fid`
- 原始 `分類番号`
- delivery `class_code`
- 是否 still equivalent
2. 增加 `fid watchlist audit`
- 可以直接追像 `13025299` 这种 fid
- 输出 raw / delivery / final 的对照
3. 扩充 AOI 热点
-`荒曽根 / 大曽根` 危险物区加入热点配置
4. 最后再改 builder
-`409` 这类对象增加显式保真规则
## Current One-Sentence Rule
当前项目的正式审计规则可以压成一句话:
- 先审“对象有没有丢”,再审“渲染有没有错”,最后才审“视觉像不像”。