Commit Graph

53 Commits

Author SHA1 Message Date
7d4b3b566a docs: specify external road compiler contract 2026-08-26 09:27:09 +08:00
5cde08090e refactor: consume external road compiler 2026-08-26 09:23:46 +08:00
2469cfdbff test: make road compiler fixtures self contained 2026-08-25 17:27:19 +08:00
e7bc7f82b1 feat: add native road parity baseline 2026-08-25 16:52:25 +08:00
25cf82e7c7 fix: render live V2X vehicles in Cesium preview 2026-08-25 12:57:35 +08:00
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
12aeda9a63 feat: parameterize complex junction geometry with Gaode reference
- 高德 GeoJSON 参考流程: `scripts/lib/gaode-junction-reference.js`
  与 `scripts/inspect-junction-reference.js` 将 GCJ-02 参考转换为 WGS84,
  按 node id/最近距离关联 OSM, 支持普通路口面和 `complex-cluster` 两种匹配。
- 复合路口模板 `complex-junction-v1`: `scripts/lib/complex-junction.js` 用参考
  几何校准 core 半径, 生成路口面、进口路面、斑马线、停止线、角部圆角与安全岛;
  拓扑/信号/连接全部沿用 OSM/native。
- 车道中心线控制要素避让: `compileLaneCenterlines` 现接收模板已产出的斑马线/停止线,
  新增 `trimLaneOutsideControls` 按到路口中心的半径定向裁剪; 标线源几何同步裁剪, 不再
  越过斑马线继续画到核心区。拓扑几何不变, connector 集合前后一致。
- 复合路口人行道转角: `buildComplexJunctionGeometry` 沿已定义的路缘生成 2m 宽转角带,
  复用圆角曲线, 通过 `islands` 通道并入 `sidewalk_surface`; 自交或坐标非有限时报
  `complex-junction-sidewalk-corner-fallback` 并跳过。
- 新增诊断: `complex-junction-configured-radius-ignored`、
  `lane-centerline-fully-inside-control`、`complex-junction-sidewalk-corner-fallback`。
- 死码清理: 移除未被调用的 `clusterApproachRing`。
- spec 更新: `.trellis/spec/pipeline/cli-and-stages.md` 复合路口小节补充控制要素
  避让顺序、人行道转角契约、Validation 矩阵三行; 索引新增导航。
- 任务产物 `08-19-gaode-junction-reference`: 8 条验收标准全部实测记录,
  Scope Drift / Verification Log / Known Gaps 三节沉淀本次工作。

Regression: test:native-road / test:road-workbench / test:preflight /
test:native-preview-traffic / test:package-contract / test:traffic-signals /
test:gaode-junction-reference 全绿; road:check ok=true, errors=[]。
2026-08-21 11:59:03 +08:00
5403936ae4 feat: add native preview traffic simulation 2026-08-18 16:57:27 +08:00
9e0e25aadf feat: make native road pipeline the default 2026-08-18 14:15:08 +08:00
f7e71cfe9c fix: disable native edge lines by default 2026-08-18 09:07:29 +08:00
e41bfd13ec feat: smooth native junction boundaries 2026-08-17 17:39:07 +08:00
9bb97d4507 feat: add native road marking semantics 2026-08-17 16:08:56 +08:00
47efb78f1e feat: add native center line style overrides 2026-08-17 13:29:54 +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
761a52646c feat(preview): add vehicle incident cards 2026-08-12 11:29:13 +08:00
f13d890ffb fix(assets): publish controllable traffic signal runtime 2026-08-12 10:17:34 +08:00
0102ffbb3c docs(assets): document reusable asset package contract 2026-08-12 09:06:04 +08:00
0790cbd0a9 feat(pipeline): make compressed assets the default delivery 2026-08-11 15:30:04 +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
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
30846b6df9 feat(preview): add continuous vehicle turn routes 2026-08-05 14:58:24 +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
e1f5207e97 Add OSM area preflight 2026-08-04 11:58:12 +08:00
5874cf9379 Add full stage manifests 2026-08-04 11:37:20 +08:00
7fcc4ee8cc Add area quality gate 2026-08-04 10:42:10 +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
95f8458ad2 Fix OSM multipolygon buildings 2026-08-03 18:15:22 +08:00
7ba85946dc Add optional GLB compression stage 2026-08-03 17:50:21 +08:00
dbb5705d8e Adopt Shapespark vegetation assets 2026-08-03 17:10:17 +08:00
e58a92803d Record rejected low-poly bush experiment 2026-08-03 15:55:06 +08:00
0d2dc2228c Improve Cesium cruise smoothness 2026-08-03 15:17:51 +08:00
f569d45e74 Clean stale tuft density comment 2026-08-03 14:20:18 +08:00
ff18217af5 Add feature registry dispatch 2026-08-03 14:02:28 +08:00
0f3c1ee635 Refactor road assembly module 2026-08-03 13:39:05 +08:00
032922ae99 Refactor building assembly module 2026-08-03 12:52:10 +08:00
627105555f Refactor fountain assembly module 2026-08-03 12:35:51 +08:00