# Web 导出原生道路 ZIP 包 ## Goal 让 road-compiler Web/CLI 以 root-flat native-road-package/v1.1 ZIP 导出人工编辑后的道路包。 ## Requirements - 从 Web 当前编辑状态导出完整道路包,而不是源代码、npm 包或仅 overrides。 - ZIP 根直接包含 `manifest.json`,并包含全部 manifest 声明的 `layers/.geojson`、 `compiled.json`、`traffic-signals.json` 和 preview 所需的 signal / diagnostics 文档。 - `manifest.json` 的 `contract` 保持 `native-road-package/v1.1`;新增可选 `generator` 元数据 记录应用版本和 revision,但不得让宿主依赖该版本。 - Web 提供用户可见的下载操作;CLI 提供等价、可测试的 ZIP 导出入口。 - ZIP 条目顺序、JSON 序列化和压缩时间戳必须确定性,重复导出未编辑内容的文件 hash 一致。 ## Acceptance Criteria - [x] 从 Web 编辑后的区域可下载一个 root-flat ZIP,且无需宿主或 npm 发布。 - [x] CLI fixture 导出 ZIP 后,解压内容通过 compiler 的 `validatePublishedLayers()`。 - [x] ZIP 具有恰好一份 manifest 声明的 layer source,无额外 compiler source / overrides 文件。 - [ ] 两个有效区域导出的 ZIP 可被 p5b 导入并完成 Blender/Cesium/preview 构建。 - [x] 不修改 `compiled.json` 与 v1.1 manifest 的既有渲染语义。 ## Out of Scope - 远程存储、上传、项目历史或多用户协作。 - 修改道路编辑器交互、几何算法或 manifest 主版本。 ## Key Decisions - ZIP 是单个标准交付物,根目录平铺 package 文件,不包裹 area-id 顶层目录。 - ZIP 面向宿主消费,只携带已编译渲染/预览数据;编辑源、OSM 与 overrides 留在 road-compiler 项目中,不泄露为宿主依赖。