32 lines
1.5 KiB
Markdown
32 lines
1.5 KiB
Markdown
# Implementation Plan
|
|
|
|
1. Define the native signal model/override artifact and migration adapter;
|
|
reuse existing generation, validation, and deterministic signal UID rules.
|
|
2. Add QGIS import/export commands that translate
|
|
`traffic_signal_assemblies.geojson` to/from the native artifact without
|
|
making native compile depend on QGIS.
|
|
3. Extend native compile/workbench state to expose signal assemblies, OSM
|
|
controls/arms, and derived runtime provenance.
|
|
4. Add validated atomic signal save operations for generate, move, rotate,
|
|
delete, and field edits; preserve legacy ID compatibility.
|
|
5. Add Workbench map styling, selection, editing controls, dirty state, save,
|
|
compile/reload, and clear error handling for signal assemblies.
|
|
6. Ensure native Blender/Cesium/preview stages consume runtime signal data
|
|
generated from the native model, while legacy stages remain compatible.
|
|
7. Add focused traffic-signal, Workbench, migration, and cross-layer round-trip tests;
|
|
run the existing legacy traffic-signal and preview suites.
|
|
|
|
## Validation
|
|
|
|
```bash
|
|
npm run test:traffic-signals
|
|
npm run test:preview-assets
|
|
npm run test:road-workbench
|
|
npm run road:compile -- --config config/areas/nantaizi-lake-innovation-valley.json
|
|
npm run road:check -- --config config/areas/nantaizi-lake-innovation-valley.json
|
|
```
|
|
|
|
Manual acceptance must cover native-only generate/move/rotate/delete -> save ->
|
|
recompile -> runtime JSON and preview, plus QGIS import/export compatibility;
|
|
disabled signals must be omitted from runtime output.
|