56 lines
2.8 KiB
Markdown
56 lines
2.8 KiB
Markdown
# Native traffic signal parity with QGIS
|
|
|
|
## Goal
|
|
|
|
Move traffic-signal ownership from the QGIS editing chain into the native road
|
|
compiler and Workbench. Existing QGIS signal assemblies remain import/export
|
|
compatibility data during migration, but native overrides become the long-term
|
|
source for generation, editing, and Blender/Cesium/preview delivery.
|
|
|
|
## Confirmed Facts
|
|
|
|
- QGIS currently edits `traffic_signal_assemblies.geojson`; this is the
|
|
migration input/output contract, not the desired long-term authority.
|
|
- `scripts/reimport-gpkg.js` validates and reimports that legacy layer.
|
|
- `scripts/build-area.js` currently derives runtime `traffic_signals.json` from
|
|
the edited assemblies; the native path must replace this dependency.
|
|
- Existing native road layers do not read traffic-signal artifacts. Historical
|
|
native Cesium work intentionally omitted signal runtime assets.
|
|
- Stable signal identity and editable fields already include `signal_uid`,
|
|
enabled state, source/control/approach IDs, arm direction, pose, mast reach,
|
|
and phase-group/runtime data.
|
|
|
|
## Requirements
|
|
|
|
- R1: Native compile/workbench must own a versioned area-local signal model and
|
|
override artifact, with an explicit one-time/import compatibility path from
|
|
existing QGIS assemblies.
|
|
- R2: Workbench state must expose signal provenance and the existing editable
|
|
signal fields using stable IDs, and support generating, moving, rotating,
|
|
and deleting signal assemblies.
|
|
- R3: Native compile and preview delivery must generate runtime signal data
|
|
directly from the native model, preserving enabled/disabled state, arm
|
|
direction/pose, and phase-group data without requiring QGIS.
|
|
- R4: A compatibility adapter must import/export the existing QGIS assembly
|
|
format during migration and preserve legacy signal IDs where possible.
|
|
|
|
## Scope Boundary
|
|
|
|
- Native signal model and overrides are the long-term source of truth.
|
|
- QGIS GeoJSON/GeoPackage support is transitional compatibility only; do not
|
|
make native compile depend on QGIS or regenerate native edits from QGIS.
|
|
- Do not redesign signal geometry, timing logic, or vehicle behavior in this
|
|
task.
|
|
|
|
## Acceptance Criteria
|
|
|
|
- [ ] A native compile/reopen round trip preserves edited signal assemblies,
|
|
stable IDs, enabled state, and provenance without QGIS running.
|
|
- [ ] The Road Workbench can generate, inspect, move, rotate, and delete signal
|
|
assemblies, then save durable edits without breaking QGIS reimport.
|
|
- [ ] Native Blender/Cesium/preview consume runtime signal data generated from
|
|
the native model, including disabled signals being omitted from runtime.
|
|
- [ ] QGIS import/export compatibility and legacy build stages continue to
|
|
pass while the migration adapter exists.
|
|
- [ ] Nantaizi has documented native-only and QGIS-imported round trips.
|