Files
pbf/NavSea_Legacy_Field_Exit_Roadmap.md
2026-04-08 19:32:25 +08:00

370 lines
7.9 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 摆脱旧字段体系路线图
目标:让 NavSea 的使用版样式与交付版 `pbf` 不再依赖旧海图字段体系,最终做到:
- 样式主逻辑不再直接读取 `分類番号`
- 样式主逻辑不再直接读取 `形状分類番号`
- 样式主逻辑不再直接读取 `表示用番号`
- 样式主逻辑不再直接读取 `灯色``灯略記``明弧/分孤`
- 检索和渲染都优先依赖 `canonical_*``chart_*`
## 1. 当前状态
当前使用版已经迈出第一步,但还没有真正摆脱旧字段体系。
### 1.1 已完成
- `fid` 已替换为 NavSea 自有 16 进制 ID
- `canonical_family`
- `canonical_object_type`
- `detection_key`
- `semantic_key`
- `render_layer`
### 1.2 仍未完成
当前使用版样式仍直接读取这些旧字段:
- `分類番号`
- `形状分類番号`
- `表示用番号`
- `灯色`
- `灯略記`
- `表示位置`
- `名称`
- `名称補助`
- `日本語地名`
- `英文字地名`
- `水深値(m)`
- `高さ/深度(m)`
说明:
- 其中 `名称``名称補助``日本語地名``英文字地名` 不应视为要被完全淘汰的“坏字段”
- 它们属于内容字段,应保留或映射为 `chart_label_*`
- 真正要退出的是“旧渲染控制字段”
## 2. 旧字段退出的对象范围
优先退出的旧字段:
- `分類番号`
- `形状分類番号`
- `表示用番号`
- `灯色`
- `灯略記`
- `明弧/分孤`
- `表示位置`
- `水深値(m)`
- `高さ(m)`
- `高さ/深度(m)`
- `角度`
不建议简单删除,而应先完成“等价替代字段”。
## 3. 对应的新字段体系
### 3.1 对象语义层
继续保留并强化:
- `canonical_family`
- `canonical_object_type`
- `detection_key`
- `semantic_key`
这层回答:
- 这个对象是什么
### 3.2 渲染语义层
必须补齐:
- `chart_render_type`
- `chart_symbol_family`
- `chart_symbol_code`
- `chart_line_style`
- `chart_fill_style`
- `chart_text_style`
- `chart_priority`
- `chart_visibility_min`
- `chart_visibility_max`
- `chart_collision_group`
这层回答:
- 这个对象应该怎么画
### 3.3 专项语义层
必须补齐:
- `chart_label_text`
- `chart_label_subtext`
- `chart_label_anchor`
- `chart_label_dx`
- `chart_label_dy`
- `light_color_code`
- `light_character_code`
- `light_sector_mode`
- `hazard_class`
- `hazard_severity`
- `area_usage_class`
- `depth_value_m`
- `clearance_height_m`
- `least_depth_m`
- `bearing_deg`
这层回答:
- 具体符号、文字和业务检索所需的细节是什么
## 4. 替代关系
### 4.1 灯标体系
旧字段:
- `形状分類番号`
- `表示用番号`
- `灯色`
- `灯略記`
- `明弧/分孤`
新字段:
- `chart_symbol_family=navigation_light``navigation_mark`
- `chart_symbol_code`
- `light_color_code`
- `light_character_code`
- `light_sector_mode`
- `chart_label_text`
- `chart_label_subtext`
退出条件:
- 样式中灯标相关层不再直接 `get` 旧灯标字段
### 4.2 危险物/鱼礁体系
旧字段:
- `分類番号`
- `表示用番号`
新字段:
- `canonical_object_type`
- `hazard_class`
- `hazard_severity`
- `chart_symbol_code`
- `chart_fill_style`
退出条件:
- 危险物和鱼礁图形不再依赖旧编码号判断
### 4.3 等深线/水深体系
旧字段:
- `表示用番号`
- `水深値(m)`
- `高さ/深度(m)`
新字段:
- `chart_line_style`
- `chart_text_style`
- `depth_value_m`
- `least_depth_m`
退出条件:
- 等深线粗细、类别和数字显示不再依赖旧字段
### 4.4 边界/区域体系
旧字段:
- `分類番号`
- `表示用番号`
新字段:
- `canonical_object_type`
- `chart_line_style`
- `chart_fill_style`
- `area_usage_class`
退出条件:
- 锚地、航路、鱼业区、危险界等区域表现不再用旧编码做主判断
### 4.5 地名体系
旧字段:
- `名称`
- `名称補助`
- `日本語地名`
- `英文字地名`
- `表示位置`
新字段:
- `chart_label_text`
- `chart_label_subtext`
- `chart_label_anchor`
- `chart_label_dx`
- `chart_label_dy`
- `chart_text_style`
说明:
- 地名文本本身不是要淘汰的“旧体系”
- 要退出的是“用原始字段名直接驱动样式”的方式
## 5. 实施阶段
## 阶段 A补齐数据字段
目标:
- builder 输出完整 `chart_*`
- builder 输出完整 `light_*`
- builder 输出完整 `hazard_*`
- builder 输出完整数值归一化字段
验收:
- 使用版 `pbf` 中,核心对象都能拿到可直接渲染的新字段
## 阶段 B建立纯新字段样式
目标:
- 新样式不再直接读取 `分類番号`
- 新样式不再直接读取 `形状分類番号`
- 新样式不再直接读取 `表示用番号`
例外:
- 文本内容字段暂时允许保留
验收:
- `style json``["get", "..."]` 不再出现旧渲染控制字段
## 阶段 C做等价性审计
目标:
- 对比旧样式与新样式的主要对象覆盖
- 对比使用版旧字段驱动与新字段驱动的渲染结果
- 对比旧样式与新样式的语义表现是否一致
- 不是只看“画没画出来”
- 还要看“有没有画反”
Style 语义审计必须回答:
- 水上 / 水下 / 露出 / 干出 是否仍与旧样式一致
- render-support 层是否被错误强化为业务语义对象
- 深度数字、净空数字、灯标说明、危险物标记是否仍正确出现
- 是否存在“点击能命中,但地图上没显示关键数字/文字”的情况
- 交付前审计执行方式以 [`NavSea_Delivery_Preflight_Audit_Spec.md`](/root/sourceserver/pbf/NavSea_Delivery_Preflight_Audit_Spec.md) 为准
特别红线:
- `P穴 -> hole_area` 这类辅助层,必须忠于旧样式的支撑性表现
- 不允许因为新语义转译,把它画成陆地色、危险礁色或其他会误导航行判断的强语义表现
验收:
- 核心对象组通过审计:
- 灯标
- 危险物
- 鱼礁
- 等深线
- 水深数字
- 锚地/航路/鱼业区
- 地名
- 航行关键语义不得出现“画反”:
- 水下画成水上
- 水上画成水下
- 支撑层画成实体语义层
## 阶段 D旧字段降级为兼容字段
目标:
- 使用版样式停止直接依赖旧渲染控制字段
- 旧字段只保留在数据里,供兼容、回查或历史对照
验收:
- 使用版样式完全跑在新字段体系上
- 工程版仍保留旧字段和 trace 以便审计
## 阶段 E旧字段退场
目标:
- 仅在确认无样式、无检索、无检测依赖后,才从交付版中移除旧渲染控制字段
注意:
- 这不是近期动作
- 必须放在最后
## 6. 退出门禁
一个旧字段只有在同时满足以下条件时,才允许从使用版交付中移除:
- 已存在稳定的新字段替代
- 使用版样式不再直接读取它
- 检索规则不再直接读取它
- 碰撞或检测链路不再直接读取它
- 工程版仍能回查原值
- 审计报告确认关键对象渲染未明显退化
- Style 语义审计确认旧样式表现已被等价转译
- 不存在因删旧字段导致的航行关键语义误绘
## 7. 下一步最值得做的事
如果目标是“真正摆脱旧字段体系”,下一步最值得直接落地的是:
1. 在 builder 里补齐第一批 `chart_*` 字段
重点对象:
- 灯标
- 危险物
- 鱼礁
- 等深线
- 水深数字
- 锚地/航路/鱼业区
2. 出一份“纯新字段样式”
要求:
- 不再读取 `分類番号`
- 不再读取 `形状分類番号`
- 不再读取 `表示用番号`
3. 对唐津 10 海里做一次新旧样式对照审计
目标:
- 看哪些对象已经可以完全脱离旧字段
- 看哪些对象还需要旧字段兜底
## 8. 最终判断
完全摆脱旧字段体系是可行的,但前提不是“删除旧字段”,而是:
- 先补齐新字段
- 再迁移样式
- 再做等价性审计
- 最后才让旧字段退出主流程
一句话总结:
> 下一步不是“把旧字段删掉”,而是“把旧字段一项一项替换掉,直到样式和业务都不再依赖它们”。