fix(assets): publish controllable traffic signal runtime

This commit is contained in:
2026-08-12 10:17:34 +08:00
parent 41a0e81a6f
commit f13d890ffb
16 changed files with 88 additions and 31 deletions

View File

@@ -166,8 +166,8 @@ transcode成功后替换**package staging** 中的主 GLB 与 manifest
### `outputs`(逃生舱)
默认全部从 `id` 推导。发布给下游的静态资产固定在
`<outputRoot>/<id>/package/`,临时静态资产在 `_pipeline/package-staging/`,预览专用动态资
`<outputRoot>/<id>/_preview/`。需要定制时逐项覆盖:
`<outputRoot>/<id>/package/`(含 `models/` 与可控信号灯 `runtime/`),临时静态资
`_pipeline/package-staging/`,预览专用车辆/路线资源在 `<outputRoot>/<id>/_preview/`。需要定制时逐项覆盖:
```json
{

View File

@@ -168,7 +168,10 @@ outputs/<area>/package/manifest.json
- `coordinateSystem` 固定为 ENU meters`placement` 是 WGS84 锚点与 heading correction。
- 必须恰有一个 `role="scene"` / `category="scene"` / `defaultLoad=true` 主资产roads、buildings、
vegetation、water 是 `role="layer"``defaultLoad=false` 的可选语义层。
- `assets[*].uri` 只能是包内正向相对路径,禁止绝对路径、反斜杠和 `..`
- `assets[*].uri``runtime[*].uri` 只能是包内正向相对路径,禁止绝对路径、反斜杠和 `..`
- `runtime` 声明可编程运行时资产;当前至少包含 `traffic-signals` 锚点 JSON、
`traffic-signals-dynamic` 灯珠 GLB以及两个 `traffic-signals-countdown-*` 倒计时 GLB。
它们是资产包的一部分,不属于 `_preview/`
- `package` 在晋升前调用 `validateManifest()`;再为每个模型写 bytes 与 SHA-256然后复验。
- `package` 是唯一拥有最终 package file records 的 stage。`cesium` / `compress` 只能拥有 staging
或计算摘要,不能留下指向最终 package 文件的 outputs record。
@@ -190,7 +193,7 @@ outputs/<area>/package/manifest.json
- Good: 下游只带走 `package/`,按 manifest 的 WGS84 placement 放置主模型,按需加载 layer。
- Base: 只有 main scene 的区域仍是合法 package没有几何的语义类别不写空 GLB。
- Bad: 将 `_preview/` 的车辆模型或动态交通灯加进 `assets`,使资产包绑定本项目的验证运行时
- Bad: 将 `_preview/` 的车辆模型或路线加进 package它们是本项目的验证运行时信号灯 runtime 则必须发布
### 6. Tests Required

View File

@@ -60,6 +60,7 @@ const config = window.OSM_ASSET_PREVIEW_CONFIG || {}; // :4
`build-area.js` 只保留已发布 package / 动态输入的依赖检查、写入顺序和 preview manifest ownership
不要把 HTML 模板、runtime copy 或转义实现移回阶段调度器。路线 JSON 与车辆 glTF 分别由
`vehicle-route.js``vehicle-model.js` 生成,二者都是不启动外部工具的 Node 模块。
交通信号灯 runtime 则从 package manifest 的 `runtime` 读取;预览只负责驱动其状态,不拥有这些文件。
---