diff --git a/STEP_RECORD.md b/STEP_RECORD.md index a797589..4b30938 100644 --- a/STEP_RECORD.md +++ b/STEP_RECORD.md @@ -1,8 +1,8 @@ -# PBF Step Record +# 项目步骤记录 -Last Updated: 2026-04-01 -Repo: `/root/sourceserver/pbf` -Remote: `ssh://git@nas:2222/tei/pbf.git` +最后更新:`2026-04-02 11:56` +仓库:`/root/sourceserver/pbf` +远端:`ssh://git@nas:2222/tei/pbf.git` ## 文档规则 @@ -10,452 +10,97 @@ Remote: `ssh://git@nas:2222/tei/pbf.git` - 后续新增输出文档必须使用中文 - 后续新增审计报告必须使用中文 -## Active Baseline +## 当前固定基线 -当前唯一固定使用的视觉审计页面: +唯一固定使用的视觉审计页面: - `http://192.168.200.184/newpec/navsea-compare-karatsu-20nm.html` -当前页面版本体系: +当前页面版本: -- `HTML: compare-r16-20260401-1734` +- `HTML: compare-r18-20260402-1156` +- `Style: karatsu-final-style-r14-20260402-1145` +- `PBF: karatsu-final-pbf-20nm-20260402-1156-fullrefresh1` -当前页面支持 2 个 profile,但仍是同一张 HTML: +当前仍使用同一张 HTML 做两个 profile: 1. 唐津 20 海里 - - `Style: karatsu-final-style-r13-20260402-0050 (style.navsea-delivery-karatsu-20nm-final.json)` - - `PBF: karatsu-final-pbf-20nm-20260402-0032 (pbf-delivery-karatsu-20nm-final)` - + - `style.navsea-delivery-karatsu-20nm-final.json` + - `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)` + - `style.navsea-delivery-kyushu.json` + - `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 HTML 切错。 +- 当前主问题分成两类: + - `style` 过滤条件写错或过宽 + - 线上仍在使用较早生成的 `20nm final` 瓦片,部分关键对象没有 `class_code / display_code` -工作规则: +## 2026-04-02 本轮关键发现 -- 不再新增 compare 页面 -- 视觉确认统一只看这一个 URL -- 页面必须保持: - - 左右联动 - - 点击拾取 - - HTML / Style / PBF 三层版本可见 -- 页面现在还支持 URL 相机参数,便于同一张页面切到热点区做自动截图: - - `?profile=karatsu20¢er=130.335,33.6385&zoom=12.2` -- 页面现在还支持纯地图审计模式: - - `?profile=karatsu20&audit=1¢er=130.335,33.6385&zoom=12.2` - - 会隐藏 pane tag / inspect panel / status / 地图控件,避免截图被页面 UI 污染 +### 1. 航标紫色圈“又回来了”的原因 -## Current Truth +- 问题层:`nav-light-flare` +- 根因:这一层的过滤条件写得过宽,几乎所有带 `light_color_code` 的对象都会被套上 flare。 +- 直接表现: + - 一些本来不该带圈的航标、浮标又被画成紫色圈 + - 例如 `31300003` 这类脚手架浮标不应再命中 flare +- 现已修正: + - `nav-light-flare` 只对原始样式允许的那几类灯标生效 + - 不再给普通浮标乱套圈 -当前继续收敛的主 style 文件: +### 2. “眼睛”图标回来的原因 -- [`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) +- 问题层:`anchor_caution_hazard_point` +- 根因不是对象丢失,而是线上旧 `20nm final` 瓦片里很多对象没有 `class_code`。 +- 一旦 `class_code` 缺失,样式只能退回: + - `chart_icon_image = symbol-daytime-428` +- 直接表现: + - `420` 这类投锚注意危险物又被画成眼睛图标 +- 实际核对结果: + - 用当前 builder 只重建 `11/1765/820` 这一张瓦片后,同一批对象已经恢复: + - `class_code = 420` + - 同时对应浮标对象也恢复: + - `display_code = 31300003` + - `chart_icon_image = symbol-daytime-327` -当前九州 delivery style: +### 3. 为什么会出现“我们改过了,怎么又错了” -- [`src/pbf/style.navsea-delivery-kyushu.json`](/root/sourceserver/pbf/src/pbf/style.navsea-delivery-kyushu.json) +- 之前改对的是 `style` 逻辑 +- 但 compare 页底下继续使用的是较早生成的 `20nm final` 瓦片 +- 这批旧瓦片缺少关键码值字段 +- 所以一旦样式依赖这些字段,就会退回错误兜底图标 -关于当前问题,已经确认: +一句话总结: -- `20nm pbf` 本身最近没有被重建改坏 -- 鱼礁、灯塔、灯台等对象在 `20nm pbf` 里仍然存在 -- 当前 compare 页右侧使用的是 `20nm final PBF`,不是旧的 `20nm delivery` -- 当前“看起来又丢了”的主因优先判断为: - - style 表达式 / icon 选择问题 - - 图层叠放和 icon-size 导致的近距离互相遮挡 - - 不是 compare HTML 切错 - - 也不是 20nm pbf 最近重建坏了对象 +- 这次回退不是“代码白改了” +- 而是“新 style 压在旧 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` +- 已修正 `nav-light-flare` 过滤逻辑 +- 已上线新的 compare 页版本号显示 +- 已完成 `20nm final` 全量重生并切到线上 +- 当前整套 `20nm final` 都是当前 builder 生成的新版本,不再是只修单瓦片 -一句话判断: +## 当前未完成项 -- 当前 `20nm final` 这条线,危险物对象保真已经过关 -- 当前主矛盾是 `style` -- 当前又补了一条危险物样式纠偏: - - `測定済みの沈船 / 船体露出沈船 / 危険全沈没船` 这类沉船对象不能继续走泛化 `wreck=429` 或 `hazard_mark=428` - - 当前 compare 页里,`anchor_caution_hazard_point` 已改成: - - 有 `class_code` 时只走 class-specific 图标层 - - 这次修正的直接目的就是避免“沉船被画成鱼礁/眼形符号” +- 继续按同一张 compare 页回扫其他依赖 `class_code / display_code` 的细分类图标 +- 继续做热点截图复核,确认没有新的样式回退 -## Object Preservation Audit +## 下一步 -当前已经新增并扩展了一条专门的对象保真审计: +1. 在固定 compare 页上复查: + - 浮标不再被错误套圈 + - `420` 不再回成眼睛图标 +2. 继续清理其他依赖 `class_code / display_code` 的细分类图标问题 -- 脚本: - - [`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` -- `r12` 开始改用 `audit=1` 纯地图截图: - - overall changed ratio: `0.604496` - - `hakata_central_passage_marks`: `0.822115` - - `hakata_route_outline_facility`: `0.741461` - - `hakata_inner_harbor_facilities`: `0.697737` -- 这说明此前 `r9/r11` 的 `0.80` 级别差异里,有相当一部分是页面 UI 噪音,不是地图本体差异 -- 进一步把相机收紧到博多港热点后: - - zoom13: - - overall: `0.429551` - - `hakata_central_passage_marks`: `0.581055` - - `hakata_route_outline_facility`: `0.499826` - - `hakata_inner_harbor_facilities`: `0.390278` - - zoom14: - - overall: `0.218561` - - `hakata_central_passage_marks`: `0.313041` - - `hakata_route_outline_facility`: `0.297666` - - `hakata_inner_harbor_facilities`: `0.170868` -- 当前观察结论: - - 放大后,博多港中央航路、航路边界、内港设施三块已经基本贴近 - - 当前剩余差异更多是陆域底色/标签细部,不再是对象丢失或明显错图标 -- `p高さ制限` 这一类对象已经确认不是“分解错物体”: - - 原始 `fid=8017842 / 名称=荒津大橋 / 高さ(m)=38` - - final 里仍是同一点,`name_ja=荒津大橋 / chart_label_text=38` - - 当前 style 仍按原始版思路分成: - - 名称层:桥名 - - 数值层:`高さ` + 数值 + `m` -- 这一类的 `canonical_object_type` 已从日文值改为英文: - - `p高さ制限 -> clearance_limit_point` - - 当前 final 统计:`clearance_limit_point = 33` -- 这一类对象现在已经具备可直接给航线设计使用的结构化数值: - - `clearance_height_m` - - 例:`荒津大橋 -> clearance_height_m = 38.0` - - 当前 final 统计:`clearance_limit_point = 33` 且 `missing clearance_height_m = 0` -- `p航路標識群` 里的浮标默认图标推断又补了一轮: - - `円柱型浮標 -> symbol-daytime-323` - - `円筒型浮標 -> symbol-daytime-325` - - `浮標 (やぐら型) -> symbol-daytime-327` -- 对应修正的是这类“对象没丢,但被 builder 预写成了错误 chart_icon_image”的情况 - - 例:`fid=12011414 / 形状分類番号=323 / 表示用番号=32300002` - - 原始版应该是 `symbol-daytime-323` - - 修正前 delivery/final 被写成了 `chart_icon_image=symbol-daytime-321` - - 当前 compare 页 style 已补兜底并上线到 `style-r13` -- 当前正式审计顺序已经明确为: - - 先 `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。` +1. 确认页面顶部版本仍然是 `compare-r18 / style-r14 / pbf-fullrefresh1` +2. 继续从博多港和中央航路这类热点回扫细分类图标 +3. 优先检查仍依赖 `display_code / class_code` 的对象组 diff --git a/src/pbf/navsea-compare-karatsu-20nm.html b/src/pbf/navsea-compare-karatsu-20nm.html index 3116a55..5384d66 100644 --- a/src/pbf/navsea-compare-karatsu-20nm.html +++ b/src/pbf/navsea-compare-karatsu-20nm.html @@ -323,7 +323,7 @@