35 lines
1.7 KiB
Markdown
35 lines
1.7 KiB
Markdown
# Web 导出原生道路 ZIP 包
|
||
|
||
## Goal
|
||
|
||
让 road-compiler Web/CLI 以 root-flat native-road-package/v1.1 ZIP 导出人工编辑后的道路包。
|
||
|
||
## Requirements
|
||
|
||
- 从 Web 当前编辑状态导出完整道路包,而不是源代码、npm 包或仅 overrides。
|
||
- ZIP 根直接包含 `manifest.json`,并包含全部 manifest 声明的 `layers/<source>.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
|
||
项目中,不泄露为宿主依赖。
|