2.7 KiB
2.7 KiB
注意:本文件记录 v1.4 初版。生产范围已在 v1.4.1 改为 z0–z12;以
CM95_PBF生产化阶段_v1_4_1.md为准。
CM95 PBF 生产化阶段 v1.4(历史:z10–z12 初版)
1. 基线
本版本以已经通过 21 张 AOI 双 Gate 的 v1.3 为冻结内核。以下行为不得在本阶段随意改变:
cm95_to_navsea_v1.yaml语义映射;- z10/z11/z12 extent;
- scale ladder / coverage mask;
- relation20 助航合成;
OBJNAM/NOBJNM直接名称规则;- stable FID manifest;
- hard-gate quantization fallback;
- encoder 写后 Feature ID 对账。
v1.4 只增加生产编排层。
2. 新增生产闭环
plan-production
从 MySQL 只读读取 chart_cell 与 chart_coverage,按当前 tile policy 中每个 zoom 的 scale ladder 枚举真实需要的 tile。
优先使用真实 coverage polygon;若某 Cell 没有 coverage,则使用 Cell bbox 作为保守 fallback,避免漏图。
生产计划冻结:
- Dataset fingerprint;
- mapping SHA256;
- tile policy SHA256;
- FID manifest fingerprint/count;
- profile;
- zoom;
- 完整 XYZ job 列表。
任何输入在计划创建后变化,build-production 必须拒绝继续。
build-production
- SQLite 账本;
- PASS 自动跳过;
- 上次异常中断的 RUNNING 自动恢复 PENDING;
- FAILED 最多重试指定次数;
- 有限线程并发;
- 每个 tile 继续使用 v1.3 builder 自带 hard-gate 与 encoder 对账;
- 空 tile 允许 PASS,但不写
.pbf。
finalize-production
发布前重新读取所有 report 与真实 PBF,要求:
- 所有计划 job = PASS;
- hard-gate unmapped = 0;
- encoder dropped = 0;
- nav name conflict = 0;
- planned output = report output = decoded PBF feature count;
- tile 内同 layer Feature ID 无重复。
同时执行全量 style filter 契约与动态 sprite closure,并生成每个 PBF 的 SHA256/bytes/feature/layer inventory。
3. 产物结构
build/
production/
cm95_production_plan_v1.json
releases/
<release_id>/
production_run_v1.sqlite
production_run_summary_v1.json
release_manifest_v1.json
pbf/
delivery/
{z}/{x}/{y}.pbf
reports/
delivery/
{z}/{x}/{y}.json
{z}/{x}/{y}.trace.jsonl
release_id 由 Dataset fingerprint + plan hash 确定,相同输入得到相同 release identity。
4. 当前阶段不做
- 不选择 HTTP/Nginx/FastAPI serving;
- 不改变 NavSea 客户端;
- 不改 importer/schema;
- 不增加新正式 source-layer;
- 不改变 v1.3 safety semantics;
- 不自动清理旧 release。
Serving 在完整 Dataset production release PASS 后再单独决定。