eaa7c08f6a
fix: finalize ZIP preview freshness and parity
2026-08-26 12:58:36 +08:00
113ea54535
feat: import native road packages from ZIP
2026-08-26 12:51:58 +08:00
009fe34f79
chore: record journal
2026-08-26 11:01:54 +08:00
7883a451c5
chore(task): archive 08-25-rc-p3-render-separation
2026-08-26 10:58:41 +08:00
620127031e
feat: consume manifest-driven native roads
2026-08-26 10:55:47 +08:00
5704b51315
chore: record journal
2026-08-26 09:32:22 +08:00
969b57106f
chore(task): archive 08-25-rc-p2-repo-split
2026-08-26 09:28:33 +08:00
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
b78cb6e990
chore: record journal
2026-08-25 17:28:26 +08:00
b44c995457
chore(task): archive 08-25-rc-p1-package-boundary
2026-08-25 17:27:53 +08:00
2469cfdbff
test: make road compiler fixtures self contained
2026-08-25 17:27:19 +08:00
284d3dbedb
chore: remove migrated workbench sources
2026-08-25 17:22:50 +08:00
f542a64924
refactor: move road workbench into compiler package
2026-08-25 17:18:49 +08:00
d5c58b5b0c
refactor: move native road checks into package
2026-08-25 17:15:15 +08:00
73707dabbe
refactor: move road compiler core into package
2026-08-25 17:12:58 +08:00
5220c6b2a2
chore: record journal
2026-08-25 16:55:17 +08:00
d7c2e13124
chore(task): archive 08-25-rc-p0-contract-baseline
2026-08-25 16:53:04 +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
bb2a1449ac
fix: keep V2X intersection code out of login UI
2026-08-24 14:47:25 +08:00
1c2d091ad2
chore: record journal
2026-08-24 14:44:57 +08:00
e997ece188
chore(task): archive 08-24-v2x-amap-intersection-data
2026-08-24 14:43:12 +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
71ba536c7c
chore: record journal
2026-08-24 13:52:21 +08:00
903b34b5ae
chore(task): archive 08-18-native-preview-traffic-simulation
2026-08-24 13:52:00 +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
8ecd794633
chore(task): archive 08-19-gaode-junction-reference
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-21 12:00:05 +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
9a8dbc1a74
feat: 枫树二路
2026-08-18 17:15:17 +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
6a0437ff83
chore: record journal
2026-08-18 14:17:08 +08:00
3cad384b25
chore(task): archive 08-18-native-only-pipeline-replacement
2026-08-18 14:15:45 +08:00
9e0e25aadf
feat: make native road pipeline the default
2026-08-18 14:15:08 +08:00
e9ab1f03eb
chore(task): plan native-only pipeline replacement
2026-08-18 13:59:42 +08:00
1154de3ba1
chore: record journal
2026-08-18 11:49:30 +08:00
c057258085
chore(task): archive 08-13-native-road-compiler
2026-08-18 11:48:34 +08:00
41d32457f2
chore(task): archive 08-18-native-traffic-signal-parity
2026-08-18 11:47:16 +08:00
5accc0a4b1
feat: complete native traffic signal workflow
2026-08-18 11:46:19 +08:00
7204c28161
chore: record journal
2026-08-18 09:27:57 +08:00
a63a3ae0d8
chore(task): archive 08-17-native-rounded-junctions
2026-08-18 09:26:58 +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
46542c5f4e
chore: record journal
2026-08-17 16:09:50 +08:00
1896884900
chore(task): archive 08-17-native-road-marking-semantics
2026-08-17 16:09:37 +08:00
9bb97d4507
feat: add native road marking semantics
2026-08-17 16:08:56 +08:00