chore(task): archive 08-25-rc-p0-contract-baseline
This commit is contained in:
96
.trellis/tasks/08-25-rc-p4-drawtonomy-ext/prd.md
Normal file
96
.trellis/tasks/08-25-rc-p4-drawtonomy-ext/prd.md
Normal file
@@ -0,0 +1,96 @@
|
||||
# 后续计划:drawtonomy 扩展 PoC
|
||||
|
||||
前置任务:`08-25-road-compiler-extraction` 的 Phase 0-3 完成并完成验收。
|
||||
评估依据:父任务归档前的 `design.md` §4 决策记录 D1 / D2 / D3。
|
||||
|
||||
## Goal
|
||||
|
||||
在**编译器仓库内**实现一个 drawtonomy 扩展:把编译产物注入其浏览器编辑器,
|
||||
回读快照后走其开源导出器产出 OpenDRIVE / Lanelet2。
|
||||
|
||||
定位是 **PoC,不进关键路径**。目的是验证「编译器当 scene generator +
|
||||
drawtonomy 当编辑器与工业格式后端」这条链路是否值得投入。
|
||||
|
||||
## 前提认知(已核实)
|
||||
|
||||
必须先明确,否则会做错方向:
|
||||
|
||||
- **drawtonomy 编辑器闭源**,克隆仓库只有 SDK / dev-server / mcp-server。
|
||||
README 卖点里的 topology-aware lanes、lane tool、intersection templates、
|
||||
Map→lanes 全部不在开源代码内。
|
||||
- **它不做 raw OSM 推导**。`exporter/osmParser.ts` 是 Lanelet2 解析器
|
||||
(车道左右边界已显式)。整个 exporter 目录 grep `highway` 命中 1 次且是
|
||||
车道类型字符串。→ **不能替代本编译器**,只能做下游。
|
||||
- **junctionTools 不能做成扩展**:无 canvas/overlay 能力、无工具注册、
|
||||
**无任何 change 事件推送**(`ExtensionClient.handleMessage` 入站只有
|
||||
`ext:init` / 5 个 `*-response` / `ext:error`,读取全靠轮询)。
|
||||
→ junction 编辑留在自有 workbench。
|
||||
- **`drawtonomy-dev-server` 是 drawtonomy.com 的缓存代理**(TTL 1 小时),
|
||||
非自托管。宿主协议会漂(manifest 有 `minHostVersion`)。→ 不进关键路径。
|
||||
|
||||
## Requirements
|
||||
|
||||
### R4.1 扩展:编译产物 → 编辑器
|
||||
|
||||
- manifest capabilities:`shapes:write`、`ui:panel`、`snapshot:read`、`ui:notify`
|
||||
- 面板调编译器的本地 HTTP 服务(`road-workbench` 已经是一个 HTTP 服务)取产物
|
||||
- 车道边界 → `createLaneWithBoundaries(leftPoints, rightPoints, opts)` → `addShapes()`
|
||||
- 坐标转换:本项目 WGS84/ENU(米)→ drawtonomy 画布像素。
|
||||
沿用其 `drawtonomy_origin_lat/lon` + `latLonToCanvas` 约定
|
||||
- ⚠️ **借它的结构,不借它的坐标系**:其 `BaseShape.x/y` 是画布像素
|
||||
(`z` 注释明确写 "world units — NOT canvas pixels like x/y")。
|
||||
编译器内部坐标系不得因此改变
|
||||
|
||||
### R4.2 回读 → 工业格式导出
|
||||
|
||||
- `requestSnapshot()` 取回快照
|
||||
- 本地跑其开源 `exportToOpenDrive` / `lanelet2`(Apache-2.0)
|
||||
- 产出 `.xodr` / `.osm`(Lanelet2),用其 `validateOpenDrive` 自校验
|
||||
- Lanelet2 是 Autoware 的输入格式 —— 对本项目 V2X 方向有实际价值
|
||||
|
||||
### R4.3 许可与依赖合规
|
||||
|
||||
- drawtonomy SDK 是 Apache-2.0:借用代码需保留 NOTICE / 署名
|
||||
- 若依赖 drawtonomy.com 托管服务,需查其服务条款(app 非 Apache-2.0)
|
||||
- ESM/CJS 互操作:SDK 是 ESM+TS,编译器是 CJS。
|
||||
本阶段可**局部**引入构建步骤,但仅限扩展目录,不得污染编译器核心
|
||||
(父任务 C2 的边界)
|
||||
|
||||
### R4.4 归属
|
||||
|
||||
扩展代码放**编译器仓库**,不放宿主 —— 符合父任务「独立维护」目标。
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
- [ ] AC4.1 扩展能把一个区域的编译产物注入 drawtonomy 编辑器并正确显示车道
|
||||
- [ ] AC4.2 编辑器内手改后回读快照,能导出通过 `validateOpenDrive` 的 `.xodr`
|
||||
- [ ] AC4.3 能导出 Lanelet2 `.osm`
|
||||
- [ ] AC4.4 编译器核心未引入构建步骤(构建仅限扩展目录)
|
||||
- [ ] AC4.5 编译器内部坐标系未因适配画布像素而改变
|
||||
- [ ] AC4.6 Apache-2.0 署名 / NOTICE 已按要求保留
|
||||
- [ ] AC4.7 结论记录:这条链路是否值得继续投入,写入任务 `research/`
|
||||
|
||||
## 启动条件
|
||||
|
||||
- 道路编译器独立化父任务(Phase 0-3)已完成验收。
|
||||
- 编译器仓库、稳定 CLI 与版本化输出契约已可用。
|
||||
- 此任务不阻塞道路编译器抽离或渲染分离的交付。
|
||||
|
||||
## 明确不做
|
||||
|
||||
- junctionTools 做成扩展(API 不支持,见前提认知)
|
||||
- 把 drawtonomy 放进生产构建链路
|
||||
- 用 drawtonomy 替代编译器(D1 已否决)
|
||||
- 自建通用白板编辑器
|
||||
|
||||
## 后续可能(不属本阶段)
|
||||
|
||||
父任务 design §4 的 D3 列了三项值得从 drawtonomy 借用的东西,
|
||||
它们与本阶段独立,应各自开任务:
|
||||
|
||||
- `odrGeometryFit.ts` 的拟合器 → 替掉手调的
|
||||
`approachWidthMultiplier=1.45` / `coreRadiusMeters=28`,改为对 `referenceFile`
|
||||
拟合、残差作质量指标
|
||||
- validator 的 mutation-proven 方法 → 给现有 31 条诊断规则建触发证明
|
||||
- validator 的分层命名空间(`xml.*` / `ref.*` / `junction.*` / `geom.*`)
|
||||
→ 替代当前平铺的 31 条规则
|
||||
Reference in New Issue
Block a user