5cde08090e
refactor: consume external road compiler
2026-08-26 09:23:46 +08:00
73707dabbe
refactor: move road compiler core into package
2026-08-25 17:12:58 +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
bb2a1449ac
fix: keep V2X intersection code out of login UI
2026-08-24 14:47:25 +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
f1f829c2c6
fix: stabilize fengshu native road compilation
2026-08-24 13:51:21 +08:00
a16400ff96
fix: correct native road edge and junction boundary geometry
...
修复四处几何缺陷,并新增复杂路口候选识别与工作台调试视图。
几何修复:
- junctionBoundary 的进口边改用 cutback 处朝向 (headingAtCutback)。原先取节点端
首段朝向, 与 roadRing 的端边不平行, 15 个进口有偏差 (最大 152°), 路口面与道路面
之间张开楔形。凸包兜底路口 11 -> 8。
- compileEdgeLines 偏移量改用 totalWidth/2。原用单方向 road.widthMeters/2,
双向段的路缘线画在车行道正中间 (实测中位偏差 1.63m = w/2)。同时以实际发出的
路面为准过滤无路面的路, 并统一复杂路口的裁剪口径。
顶点偏离 >0.5m: 64% -> 0%, 最大偏离 4.53m -> 0.06m (= 半个带宽, 理论最优)。
- roadRing 新增 removeOffsetFolds。定宽法线偏移无斜接限制, 转弯处相邻段较短时
偏移点前后颠倒, 多边形折回自身, 按 even-odd 渲染成叶片状空洞。
道路面自交 1 -> 0, 最尖角 0.1° -> 18.8°。
- junctionBoundary 新增 mergeParallelApproachPoints。双幅路两幅同向汇入时,
四个侧点按角度排序后交错, 在交错点之间插入的圆角曲线从外圈深挖回节点,
渲染成拱形凹口。合并近平行 (<25°) 进口为单一面。
路口面最尖角 6.9° -> 全部 >=82.6°, 自交 0。
新增:
- detectComplexJunctionCandidates: 按"短链接连接的路口节点"聚类并做紧凑度过滤
(直径 <=45m), 输出 complex-junction-candidate 诊断与建议参数。纯诊断,
不启用模板、不改几何; test:native-road 断言了这条契约。
- road:workbench --debug: 地图标注候选编号与包络, 点选给出可粘贴配置片段,
并提供 POST /api/junction-clusters 一键写入区域配置。写入前用 readAreaConfig
校验、检测节点冲突、要求候选存在于最新编译结果, 原子落盘。
Regression: test:native-road / test:road-workbench / test:gaode-junction-reference /
test:preflight / test:native-preview-traffic / test:package-contract /
test:traffic-signals 全绿; road:check ok=true, errors=[]。
源 OSM 与参考 GeoJSON 校验和未变。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-08-21 17:45:20 +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
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
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
b318f7b641
feat: add native road edge markings
2026-08-17 15:25:18 +08:00
bc045177a5
feat: add native lane separator style overrides
2026-08-17 14:45:48 +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
822e6ef936
feat: report native junction quality metrics
2026-08-14 16:21:26 +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
e1f3fc10ca
fix: persist and render native sidewalks
2026-08-14 10:53:20 +08:00
a556c0fc97
feat: add canonical road movements
2026-08-14 10:15:47 +08:00
1876472bf8
feat: improve native road diagnostics and review
2026-08-14 10:07:16 +08:00
850e9eb344
feat: add lane-level turn controls
2026-08-14 09:22:38 +08:00
df81a22ce8
feat: compile native road lanes and junctions
2026-08-14 09:09:48 +08:00
b5fa4482f0
feat: add native road compiler workbench
2026-08-13 18:01:20 +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
db0fba5bb5
fix(pipeline): preserve package manifest ownership
2026-08-11 17:45:16 +08:00
c925890848
fix(preview): resolve package assets from manifest
2026-08-11 16:31:55 +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
aeb2cec021
fix(preview): retain signal poles in building ghost mode
2026-08-07 15:51:40 +08:00
a749abf00c
fix(preview): retain signals in building ghost mode
2026-08-07 15:18:13 +08:00
8237c7ed27
feat(preview): add transparent building mode
2026-08-07 13:51:47 +08:00
808266127d
revert: keep inspection semantic layers visible
2026-08-07 13:32:17 +08:00
22f306249d
feat(preview): default inspect mode to roads
2026-08-07 13:23:33 +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
950cd1c4cd
fix(preview): align traffic-aware vehicles to roads
2026-08-06 17:01:36 +08:00
043766b84e
feat: add cesium traffic signal countdowns
2026-08-06 17:01:36 +08:00
9fbc218e10
feat(preview): pause vehicles for traffic signals
2026-08-06 17:01:36 +08:00
8b3a1d79d9
feat(preview): add traffic signal visualization
2026-08-06 17:01:36 +08:00