25 lines
1.4 KiB
Markdown
25 lines
1.4 KiB
Markdown
# Split area build orchestration design
|
|
|
|
## Module Boundaries
|
|
|
|
```text
|
|
scripts/lib/vehicle-route.js OSM XML -> preview route object
|
|
scripts/lib/vehicle-model.js -> vehicle glTF object
|
|
scripts/lib/area-preview.js HTML/template + runtime file copy + preview summary
|
|
scripts/build-area.js dependency checks, writes, stage timing, manifest ownership
|
|
```
|
|
|
|
`vehicle-route.js` and `vehicle-model.js` are pure Node modules. `area-preview.js` may use Node filesystem and path, but receives all names/paths through arguments; it must not import area config, stage manifest or spawn processes.
|
|
|
|
## Preview Flow
|
|
|
|
`build-area.writeCesiumPreview()` continues to ensure GLB/metadata, establish timing, write route/model/runtime/HTML in the existing order, and write `preview.manifest.json`. It delegates route construction, vehicle construction, support copy and HTML generation to the three modules.
|
|
|
|
## Compatibility
|
|
|
|
Public CLI and all generated filenames remain unchanged. The route's `generatedAt` naturally changes on each generation and is not a stable parity field; route segments, vehicle glTF structure and preview config are the stable contract. No Blender/GLB parity run is needed because no Blender or GLB generation code changes.
|
|
|
|
## Rollback
|
|
|
|
Restore the extracted functions to `build-area.js` and delete the three modules; no data migration or output cleanup is required.
|