3.2 KiB
CM95 S-52 Production Pipeline v2
1. 目标
Production Pipeline v2 将已经通过单 Tile 验证的 S-52 runtime PBF 正式接入现有 CM95 生产编排层,并增加可审计 AOI 计划能力。
核心要求是:同一个 release identity 不允许混入不同 S-52 Lookup、不同 mariner mode 或不同 AOI 的 Tile。
2. Production Plan v2
新计划 schema:
navsea.cm95.production-plan/v2
Pipeline 版本:
cm95pbf-production/2.0-s52-aoi
Plan immutable hash 现在除 Dataset、mapping、policy、FID manifest、Builder Contract、jobs 外,还冻结:
- S-52 是否启用;
- S-52 Lookup SHA256;
- Point Table;
- Boundary Table;
runtime/referencemariner mode;- AOI name;
- AOI WGS84 bbox。
S-52 Lookup 路径本身不参与 identity,内容 SHA256 才参与 identity;同内容换路径不会制造新 release。
3. AOI 枚举
plan-production 新增:
--aoi-name
--aoi-bbox west,south,east,north
AOI 在 Web Mercator 中与 Dataset coverage 几何相交并裁剪后再枚举 XYZ job。这样不是简单按 Tile 中心筛选,边界 coverage 也不会被漏掉。
Plan source_stats 同时记录 AOI 裁剪前后的 coverage piece 数量。
4. S-52 生产参数
plan-production 新增:
--s52-lookups
--s52-point-table Simplified|Paper
--s52-boundary-table Plain|Symbolized
--s52-mariner-mode runtime|reference
build-production 不再从命令行临时接收这些值,而是只能读取冻结 plan,随后传给 Cm95TileBuilder。
Build 启动前重新校验 Lookup 文件存在且 SHA256 与 plan 一致;文件发生变化时 fail-closed。
5. Runtime release gate
finalize-production 在 S-52 runtime plan 下增加 release 级 runtime contract gate。
它会解码所有输出 PBF,并检查:
s52_mariner_dependent与s52_runtime_csp一致;- DEPARE 存在
depth_min_m,且没有静态s52_area_color泄漏; - DEPCNT 存在
contour_depth_m; - SOUNDG 存在
s52_sounding_depth_m; - OBSTRN/WRECKS 存在
s52_hazard_depth_m; - 不允许
s52_is_safety_contour、s52_isolated_danger、s52_display_base_promoted等动态最终状态泄漏。
失败会把整个 release 标记为 FAIL。
6. Style contract 过渡
当前旧 NavSea semantic style/sprite contract 不是 S-52 runtime Adapter 的最终 contract。
因此 CLI 新增:
--skip-style-contract
它只跳过旧 style/sprite 审计,不跳过 PBF 计数、FID、hard gate、encoder、名称冲突和 S-52 runtime contract。待 NavSea S52RuntimePresentationAdapter 完成后,再接入正式 S-52 style/runtime contract。
7. 兼容性
Loader 继续接受历史 production-plan/v1,但新建 plan 一律生成 v2。
旧 release 若没有与新 plan 完全一致的 S-52 production contract,不允许直接通过 migrate-production-release 复用 Tile。
8. 九州首次运行
本次 AOI:
name = kyushu-main-nearby-v1
bbox = 128.0,29.5,132.5,34.8
zooms = 0-12
profile = delivery
point_table = Paper
boundary_table = Plain
mariner_mode = runtime
该范围用于本轮工程验证,覆盖九州本岛、对马、五岛、种子岛/屋久岛及近海,不作为日本行政区边界定义。