# PBF Step Record Last Updated: 2026-04-01 Repo: `/root/sourceserver/pbf` Remote: `ssh://git@nas:2222/tei/pbf.git` ## Active Baseline 当前唯一固定使用的视觉审计页面: - `http://192.168.200.184/newpec/navsea-compare-karatsu-20nm.html` 当前页面版本体系: - `HTML: compare-r15-20260401-1705` 当前页面支持 2 个 profile,但仍是同一张 HTML: 1. 唐津 20 海里 - `Style: karatsu-final-style-r11-20260401-1719 (style.navsea-delivery-karatsu-20nm-final.json)` - `PBF: karatsu-final-pbf-20nm-20260401-0248 (pbf-delivery-karatsu-20nm-final)` 2. 九州 - `Style: kyushu-style-r1-20260331-2205 (style.navsea-delivery-kyushu.json)` - `PBF: kyushu-pbf-reencoded-20260325-1105 (pbf-delivery-kyushu-reencoded)` 访问方式: - 默认唐津: - `http://192.168.200.184/newpec/navsea-compare-karatsu-20nm.html` - 九州模式: - `http://192.168.200.184/newpec/navsea-compare-karatsu-20nm.html?profile=kyushu` 工作规则: - 不再新增 compare 页面 - 视觉确认统一只看这一个 URL - 页面必须保持: - 左右联动 - 点击拾取 - HTML / Style / PBF 三层版本可见 - 页面现在还支持 URL 相机参数,便于同一张页面切到热点区做自动截图: - `?profile=karatsu20¢er=130.335,33.6385&zoom=12.2` ## Current Truth 当前继续收敛的主 style 文件: - [`src/pbf/style.navsea-delivery-karatsu-10nm.json`](/root/sourceserver/pbf/src/pbf/style.navsea-delivery-karatsu-10nm.json) - [`src/pbf/style.navsea-delivery-karatsu-20nm-final.json`](/root/sourceserver/pbf/src/pbf/style.navsea-delivery-karatsu-20nm-final.json) 当前九州 delivery style: - [`src/pbf/style.navsea-delivery-kyushu.json`](/root/sourceserver/pbf/src/pbf/style.navsea-delivery-kyushu.json) 关于当前问题,已经确认: - `20nm pbf` 本身最近没有被重建改坏 - 鱼礁、灯塔、灯台等对象在 `20nm pbf` 里仍然存在 - 当前 compare 页右侧使用的是 `20nm final PBF`,不是旧的 `20nm delivery` - 当前“看起来又丢了”的主因优先判断为: - style 表达式 / icon 选择问题 - 图层叠放和 icon-size 导致的近距离互相遮挡 - 不是 compare HTML 切错 - 也不是 20nm pbf 最近重建坏了对象 当前新增结论: - compare 页已经支持热点定位参数,strict audit 现在可以在同一张页里切到博多港自动截图 - `20nm final` 的对象保真审计已扩到 5 组: - `p航行危険障害物 -> navigation_hazard_point` - `p投錨注意障害物 -> anchor_caution_hazard_point` - `p航路標識群 -> navigation_marks` - `p施設・境界線等 -> facility_boundary_point` - `P航路ククリ -> route_outline` - 扩层后的结论: - 旧 `delivery_20nm`:`4165/4165` identifier lost - 当前 `final_20nm`:`4165/4165` preserved - 也就是说: - 现在危险物、航标、设施点、航路线这 5 组在 final PBF 里都没有丢对象 - 后续主问题继续收敛在 `style` - 博多港这轮已补回: - `route_outline` 紫色虚线 - `facility_boundary_point` 的 class-based 图标 - `505 -> symbol-daytime-505` - `510 -> symbol-daytime-505` - `520 -> symbol-daytime-520` - `530 -> symbol-daytime-530` - `550 -> symbol-daytime-550` - 设施点文字层做过一次试验版 `r10`,但博多港 AOI 截图差异变大,已回退;当前保留的有效版本是 `style-r11` 一句话判断: - 当前 `20nm final` 这条线,危险物对象保真已经过关 - 当前主矛盾是 `style` - 当前又补了一条危险物样式纠偏: - `測定済みの沈船 / 船体露出沈船 / 危険全沈没船` 这类沉船对象不能继续走泛化 `wreck=429` 或 `hazard_mark=428` - 当前 compare 页里,`anchor_caution_hazard_point` 已改成: - 有 `class_code` 时只走 class-specific 图标层 - 这次修正的直接目的就是避免“沉船被画成鱼礁/眼形符号” ## Object Preservation Audit 当前已经新增并扩展了一条专门的对象保真审计: - 脚本: - [`navsea_object_preservation_audit.py`](/root/sourceserver/pbf/navsea_object_preservation_audit.py) - 报告: - [`report/object_preservation_20nm/object_preservation_delivery_20nm.md`](/root/sourceserver/pbf/report/object_preservation_20nm/object_preservation_delivery_20nm.md) - [`report/object_preservation_20nm/object_preservation_final_20nm.md`](/root/sourceserver/pbf/report/object_preservation_20nm/object_preservation_final_20nm.md) 当前结论非常明确: - `delivery_20nm` - raw objects: `4165` - preserved: `0` - identifier lost: `4165` - `final_20nm` - raw objects: `4165` - preserved: `4165` - missing object: `0` - identifier lost: `0` 重点含义: - 旧 `20nm delivery` 不只是危险物,连航标、设施点、航路线的识别字段也都没保住 - 当前 `20nm final` 里,这 5 组对象的细分类 / 显示码已经完整保留下来 - 当前对象保真审计已经能先把“东西丢了”这类严重问题挡在最前面 ## Final Release Candidate 当前已经产出一版 `20nm final release` 候选: - 输出目录: - `/home/wwwroot/pbf-delivery-karatsu-20nm-final` - 当前在线对比页: - `http://192.168.200.184/newpec/navsea-compare-karatsu-20nm.html` - 当前候选 style: - [`src/pbf/style.navsea-delivery-karatsu-20nm-final.json`](/root/sourceserver/pbf/src/pbf/style.navsea-delivery-karatsu-20nm-final.json) 当前候选的生成方式: - 以当前稳定 `/home/wwwroot/pbf-delivery-karatsu-20nm` 为输入 - 使用 protobuf 层属性裁剪脚本生成 - 脚本: - [`navsea_minimize_release_tiles.py`](/root/sourceserver/pbf/navsea_minimize_release_tiles.py) 当前 final candidate 只保留 `20` 个字段: - `canonical_object_type` - `class_code` - `chart_fill_pattern` - `chart_fill_style` - `chart_icon_image` - `chart_label_position_code` - `chart_label_subtext` - `chart_label_text` - `chart_line_color` - `chart_line_width` - `chart_symbol_code` - `chart_text_color` - `chart_text_style` - `depth_value_m` - `display_code` - `least_depth_m` - `light_color_code` - `light_sector_mode` - `name_ja` - `place_name_en` 当前 final candidate 量化结果: - feature instances: - `269883` - distinct `canonical_object_type`: - `137` - 原始 `20nm delivery` 大小: - `29,527,981` bytes - final candidate 大小: - `24,470,260` bytes - 压缩幅度约: - `17.1%` 当前判断: - 这版已经满足“字段显著裁剪” - 为了恢复危险物和灯标/浮标细节,重新带回了: - `class_code` - `display_code` - `r4` 已补上: - `navigation_hazard_point` 按 `class_code` 选 icon - 之前 `r3` 已把危险物和航标 icon-size 收回旧版默认尺度,优先减轻危险物与灯标互相遮挡 - 但当前 AOI 图像审计仍显示大差异 - 所以它目前只能算 `final release candidate` - 还不能直接认定为稳定最终版 ## Audit Method 当前认可的可信审计方法: 1. `20nm compare` 肉眼审图 2. `object preservation audit` 3. 小范围 AOI 图像对比 4. compare 页点击拾取 5. `10nm rerun` 对象级 backend audit 当前小范围试验方法文档: - [`NavSea_20nm_Small_Scope_Audit_Method.md`](/root/sourceserver/pbf/NavSea_20nm_Small_Scope_Audit_Method.md) - [`NavSea_Audit_Logic_And_Evolution_2026-04-01.md`](/root/sourceserver/pbf/NavSea_Audit_Logic_And_Evolution_2026-04-01.md) 当前 pilot 热点配置: - [`strict_audit_hotspots_20nm_pilot.json`](/root/sourceserver/pbf/strict_audit_hotspots_20nm_pilot.json) - [`strict_audit_hotspots_20nm_hakata.json`](/root/sourceserver/pbf/strict_audit_hotspots_20nm_hakata.json) 当前 pilot 报告: - [`report/strict_audit_pilot/strict_audit_summary.md`](/root/sourceserver/pbf/report/strict_audit_pilot/strict_audit_summary.md) - [`report/strict_audit_pilot/strict_audit_summary.json`](/root/sourceserver/pbf/report/strict_audit_pilot/strict_audit_summary.json) - [`report/strict_audit_20nm_hakata_r9/strict_audit_summary.md`](/root/sourceserver/pbf/report/strict_audit_20nm_hakata_r9/strict_audit_summary.md) - [`report/strict_audit_20nm_hakata_r11/strict_audit_summary.md`](/root/sourceserver/pbf/report/strict_audit_20nm_hakata_r11/strict_audit_summary.md) 当前结论: - 不再只看整屏 diff - 不再只看 `20nm` backend 总量数字 - `20nm` backend 仍不适合当严格对象级审计 - 博多港 AOI 现在也已经纳入固定截图审计 - `r10` 的设施文字层试验让热点差异变大,已回退;当前线上保留 `r11` - 当前正式审计顺序已经明确为: - 先 `object preservation audit` - 再 `render audit` - 最后 `AOI / visual audit` - 其中 `20nm` 的危险物对象保真,当前已经有专门脚本和报告,不再只靠 render audit 猜 ## Current Audit Status ### 20nm Visual Pilot 当前新版 `r14 / style-r4` strict audit: - [`report/strict_audit_final_20nm_r4/strict_audit_summary.md`](/root/sourceserver/pbf/report/strict_audit_final_20nm_r4/strict_audit_summary.md) - changed ratio: `0.916883` 当前 3 个热点: 1. `takashima_main_harbor_marks` - changed ratio: `0.800170` 2. `takashima_inner_nearshore_hazards` - changed ratio: `0.711509` 3. `east_breakwater_marks` - changed ratio: `0.999713` 这说明: - 视觉仍然没有收敛到“可推广”状态 - 主港航标区仍是第一优先级观察点 - 近岸碍航与鱼礁区有一点改善,但离稳定还远 ### 10nm Object-Level Backend Audit 当前最可信的对象级 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) 当前结果: - `exact_match = 121855` - `mismatch = 12912` - `missing_in_engineering = 5` 这说明: - 当前 10nm 已经不是“对象大面积丢失/多出”的阶段 - 现在主要是 visual / semantic mismatch 修复 当前 mismatch 最大几组: - `P基本線ククリ = 7873` - `P基本線 = 2876` - `L基本線 = 619` - `p航路標識群 = 574` - `p投錨注意障害物 = 374` - `p航行危険障害物 = 296` ## Delivery Field Policy 总目标: - `尽可能减少日文` 当前字段处置规则: - `canonical_family` - 保留 - 已经是英文 - `canonical_object_type` - 不直接删除 - 改成稳定英文值 - `semantic_key` - 正式 release PBF 直接删除 - audit 版若保留,可以继续保留现有值 - 当前不强制改英文 - `detection_key` - 正式 release PBF 直接删除 - audit 版若保留,可以继续保留现有值 - 当前不强制改英文 具体到这类对象: - `canonical_object_type = 漁業協同組合` - 不直接删除 - 改成稳定英文值 - 当前建议: - `fisheries_cooperative` - `canonical_family = symbol` - 保留 - `semantic_key = symbol:漁業協同組合` - release PBF 直接删除 - audit 版若保留,可以继续保留: - `symbol:漁業協同組合` - `detection_key = symbol:漁業協同組合` - release PBF 直接删除 - audit 版若保留,可以继续保留: - `symbol:漁業協同組合` 一句话: - 业务语义字段英文化 - 审计追踪字段从正式交付版尽量移除 当前对 `/home/wwwroot/pbf-delivery-karatsu-20nm` 的全量扫描结果: - 日文字段名: - `0` - 但含日文值的核心字段仍很多 当前最主要的残留字段: - `canonical_object_type` - `235688` - `semantic_key` - `235688` - `detection_key` - `235688` - `chart_label_text` - `3338` - `place_name_ja` - `2552` - `name_ja` - `803` - `name_subtext_ja` - `18` 说明: - 当前已经基本摆脱“日文键名” - 但还远没有摆脱“日文语义值” - 最大头仍然是: - `canonical_object_type` 当前关于 `canonical_object_type` 的快速基线: - 当前 `/home/wwwroot/pbf-delivery-karatsu-20nm` 成品 PBF 中 - 实际出现的 distinct `canonical_object_type` 一共有 `137` 种 - 数据库中可以直接查 - 主表:`pbf_relayer_candidates` - 字段:`canonical_object_type` - 已有索引:`idx_navsea_object (canonical_object_type, geom_type)` - 当前数据库表规模: - `pbf_relayer_candidates` 约 `6,664,855` 行 - 说明: - `PBF` 里的 distinct 数 = 当前这批成品实际输出了多少种 - `数据库` 里的 distinct 数 = 候选对象全集范围,通常会大于等于当前成品 PBF - `semantic_key` - `detection_key` ## Current Priority 当前继续修的优先顺序: 1. 鱼礁 / 障害点 icon 表达 2. 灯 / 灯台 / flare 表达 3. `baseline` 相关 mismatch 4. 九州沿用同一张 compare 页后的热点审计 如果 style 修到一定程度仍然不对,再回到 builder 看: - 是否需要补更细的 delivery 语义字段 ## Key Files - [`AGENTS.md`](/root/sourceserver/pbf/AGENTS.md) - [`STEP_RECORD.md`](/root/sourceserver/pbf/STEP_RECORD.md) - [`src/pbf/navsea-compare-karatsu-20nm.html`](/root/sourceserver/pbf/src/pbf/navsea-compare-karatsu-20nm.html) - [`src/pbf/style.navsea-delivery-karatsu-10nm.json`](/root/sourceserver/pbf/src/pbf/style.navsea-delivery-karatsu-10nm.json) - [`src/pbf/style.navsea-delivery-kyushu.json`](/root/sourceserver/pbf/src/pbf/style.navsea-delivery-kyushu.json) - [`NavSea_20nm_Small_Scope_Audit_Method.md`](/root/sourceserver/pbf/NavSea_20nm_Small_Scope_Audit_Method.md) ## Quick Resume Prompt `继续围绕同一个 compare 页 navsea-compare-karatsu-20nm.html 修 delivery style。默认先看唐津 profile,按 pilot 热点先修鱼礁和灯标;需要看九州时就在同一张页面切到 kyushu profile。视觉确认用 20nm compare,严格对象级 backend 审计看 10nm rerun。`