Commit Graph

50 Commits

Author SHA1 Message Date
bc845444bb fix: restore live V2X signal and vehicle fidelity in Cesium preview
The ported overlay used the correct REST paths but lost the data handling
from the source dashboard's live-intersection view (HologramCross), so
signals rendered permanently red and vehicles often never appeared.

- Lamp status codes now follow the dashboard dictionary (11/21/22/23/31).
  The previous 2/3 reading made every real push fall through to red. The
  dictionary lives only in the overlay; the preview consumes normalized
  {nodeKeys, color, countDown} entries so the two copies cannot drift.
- Bind V2X phases to native signal heads geometrically. The runtime
  document has no phaseNo, so the old lookup fell back to signal.id and
  never matched, leaving the dynamic assembly dark. Travel heading is
  recovered as faceHeadingDegrees + 180, per the generator's
  mast = travel - 90 / face = travel + 180. Verified 7/7 exact matches
  against the fengshu-er-road runtime document.
- A phase now lights every approach it drives; the phase -> single entity
  map silently overwrote all but the last.
- Drive the countdown assets from the push's countDown field.
- All three sockets heartbeat every 30s and reconnect with backoff,
  replaying their subscription frame. Without this the service dropped
  the connection and the scene emptied after about a minute.
- The OBU socket sends its bounds frame on connect and on camera move;
  it previously sent nothing at all.
- Vehicles are swept when a push goes stale and their slots reused, so
  they no longer accumulate as ghosts. Models follow the dashboard's
  car_obu.glb / ${type}${subType}.glb naming.
- Parse vehicle pushes leniently, since the dashboard uses saferEval and
  the payload is not guaranteed to be strict JSON. Failures are counted
  and surfaced rather than dropped; no eval is introduced.
- Drop FlowTravelRatio/queryListWeek, which is not part of this view.

Also corrects a stale spec rule that required vehicleModelNames to be
empty. Live V2X vehicles need packaged models; the real invariant is no
generated routes or traffic simulation.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-25 09:20:50 +08:00
b7031f145a fix: use live V2X vehicles only in preview 2026-08-24 14:42:31 +08:00
ee273c5cd6 feat: add live V2X Cesium preview overlay 2026-08-24 14:20:16 +08:00
5403936ae4 feat: add native preview traffic simulation 2026-08-18 16:57:27 +08:00
0bc949bc24 fix: clear stale legacy preview route 2026-08-18 14:29:13 +08:00
9e0e25aadf feat: make native road pipeline the default 2026-08-18 14:15:08 +08:00
5accc0a4b1 feat: complete native traffic signal workflow 2026-08-18 11:46:19 +08:00
f7e71cfe9c fix: disable native edge lines by default 2026-08-18 09:07:29 +08:00
b318f7b641 feat: add native road edge markings 2026-08-17 15:25:18 +08:00
fb863dafb2 feat: add native road center lines 2026-08-17 10:44:01 +08:00
4c4f4534c0 feat: add native road control markings 2026-08-17 10:01:44 +08:00
1b9829d9ed feat: add native road direction arrows 2026-08-14 18:05:21 +08:00
3eea12c6ea fix: stabilize native road Cesium preview 2026-08-14 16:07:55 +08:00
65cf8b96d9 feat: add native road compiler provider 2026-08-14 15:19:57 +08:00
f13d890ffb fix(assets): publish controllable traffic signal runtime 2026-08-12 10:17:34 +08:00
f2b8d79f5d fix(package): record published primary model 2026-08-11 17:52:59 +08:00
db0fba5bb5 fix(pipeline): preserve package manifest ownership 2026-08-11 17:45:16 +08:00
f385009043 feat(assets): publish reusable area packages 2026-08-11 16:07:07 +08:00
0790cbd0a9 feat(pipeline): make compressed assets the default delivery 2026-08-11 15:30:04 +08:00
b68be063ad feat(cli): add interactive area build menu 2026-08-11 14:08:22 +08:00
5658e7337d fix: 修正 Cesium 巡航车道中心对齐 2026-08-08 15:21:49 +08:00
e153a1c57d feat(qgis): add editable traffic signal assemblies 2026-08-07 12:48:38 +08:00
1c077a312e fix(preview): derive signals from OSM controls 2026-08-07 09:05:27 +08:00
043766b84e feat: add cesium traffic signal countdowns 2026-08-06 17:01:36 +08:00
8b3a1d79d9 feat(preview): add traffic signal visualization 2026-08-06 17:01:36 +08:00
c8ca009d13 fix: 支持 Linux 本机构建环境 2026-08-05 17:11:05 +08:00
3108336bf4 feat(preview): add low poly vehicle library 2026-08-05 16:00:04 +08:00
607d8fc0b1 feat: add Cesium semantic inspection mode 2026-08-05 13:24:39 +08:00
9a23f74f0f feat: add OSM turn lane arrows 2026-08-05 10:17:34 +08:00
396df5127c Refactor area preview orchestration 2026-08-04 12:55:20 +08:00
463cb06be4 Add configurable area asset budgets 2026-08-04 12:28:43 +08:00
5874cf9379 Add full stage manifests 2026-08-04 11:37:20 +08:00
2832383f6e Add GLB stage manifests 2026-08-04 09:45:51 +08:00
d4c3baf608 Add area diagnostics command 2026-08-04 09:16:14 +08:00
7ba85946dc Add optional GLB compression stage 2026-08-03 17:50:21 +08:00
7f4ebe8fb7 Improve Cesium preview loading state 2026-07-31 18:11:21 +08:00
0def373c09 Extract Cesium preview assets 2026-07-31 16:56:22 +08:00
59628cba82 feat: add reimport stage for hand-edited GeoPackages
QGIS 手工修正后的回导流程此前是 README 里的三段 shell:一个硬编码
area-id 和 ogr2ogr 绝对路径的 for 循环、一段内联 node heredoc、再加一次
npm run build。改为一个 reimport 阶段:

  npm run build -- --config config/areas/<area-id>.json \
    --stages reimport,blender,cesium

scripts/reimport-gpkg.js 先把全部图层导出到临时目录并逐个校验,全部通过
才写回 osm2streets_web_out/。ogr2ogr 对不存在的图层退出码非 0 但仍会留下
0 字节文件,原先逐图层 mv 会静默用空图层覆盖好数据。

intermediates 与 reimport 同时指定直接报错——前者用 OSM 重建 GeoPackage,
正好抹掉后者要读回的手工修改。reimport 不含在 all 中。

同时新增 scripts/lib/scene-layers.js 作为 9 个渲染图层的唯一定义源。此前
该表在合并场景、场景样式 JSON、生成的 QGIS 工程、README 手工流程中各有
一份副本,改一处漏其余会导致图层叠放顺序出错并流入 Blender/Cesium。

验证:同一 OSM 输入下,改动前后 intermediates 产物逐字节一致
(scene_style.json、.qgz 符号定义、9 个图层几何与属性);reimport 对
未修改图层无损回导。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-28 17:21:59 +08:00
96c9baf540 feat: osm2streets上游箭头修复 2026-07-28 09:08:58 +08:00
694f18826a Add multi-vehicle cruise selection preview 2026-07-27 15:55:29 +08:00
4fc9397cec Fix cruise vehicle model orientation 2026-07-27 15:07:48 +08:00
633f1ee364 Restore lightweight cruise car and keep lane offset 2026-07-27 14:53:40 +08:00
d93212b685 Use clean ToyCar model and lane-offset cruise route 2026-07-27 14:31:56 +08:00
9561ad8530 Use lightweight glTF car for cruise preview 2026-07-27 14:19:06 +08:00
513ef62ab8 Allow zoom adjustment in vehicle follow mode 2026-07-27 14:12:09 +08:00
235314af1a Replace tracked vehicle follow with chase camera 2026-07-27 14:06:46 +08:00
d872ca6f32 Make vehicle following opt-in 2026-07-27 14:00:49 +08:00
f1ddedf889 Add experimental Cesium vehicle cruise preview 2026-07-27 13:52:43 +08:00
a5c3ad3cf3 Generate Cesium preview pages from area builds 2026-07-27 13:06:57 +08:00
61e4820a4c Refactor pipeline around area asset builds 2026-07-27 12:56:13 +08:00