2.5 KiB
2.5 KiB
实施计划
0. 建立事实与测试夹具
- 追踪
compileControlMarkings()的每条 stripe 属性、native_id构成和从地图点击到onFeature的路径。 - 添加失败优先的测试:同组 stripe 需要稳定共享
elementId,不同 crossing 不得共享;空编辑输出与基线一致。 - 门禁:能证明一个具体 feature 无歧义回链到一个 junction approach 和 crossing。
1. 第一阶段:元素 manifest 与选择
- 在编译器为 crosswalk stripe 写稳定的元素标识和回链属性。
- 在 direct-edit 服务响应中增量发布按 selection/element 获取的元素 manifest,不扩大现有道路 handle 的职责。
- 客户端建立
ElementSelection纯状态与 feature 点击适配;点击 stripe 选择整组、空白清除。 - 验证:编译器单元测试、API 测试、客户端 selection 单元测试。
2. 第一阶段:位置编辑闭环
- 用 element manifest 的 position control 渲染元素级控件和选中外框;安装时不得影响道路 handle hit-test。
- 从位置手势和表单走同一个 draft builder,写入
junction-crosswalk-inset。 - 验证:拖拽与表单值生成同形约束;预览/保存/重载一致;
exact状态和撤销/重做覆盖。 - 门禁:一次非空编辑可在正式重编译结果中观察到斑马线位置变化。失败即停止,不能只交付 UI。
3. 复盘门禁
- 手测选中、取消、道路级手柄共存、拖拽钳位、表单验证、保存重载。
- 只有在第一阶段验收全部通过后,才能为尺寸/外观参数做持久化 schema 决策。
4. 第二阶段:尺寸与外观
- 依据第一阶段证据设计并验证长度、宽度、条带数、间距的约束 schema。
- 编译器读取参数、返回 blocking diagnostics;元素 manifest 表达对应控件/字段。
- 实现与表单字段完全一致的尺寸控件,补齐组合参数、持久化和 rebase 测试。
验证命令
npm run format:check
npm run test
npm run test:client
npm run test:client:unit
npm run build
风险文件
src/compile/native-road.js:斑马线生成与默认输出兼容性。src/compile/direct-edit-solver.js/native-road-edits.js:约束求解、schema 和 manifest 必须同步。workbench/server.js:element manifest 查询与 preview 不得写入磁盘。workbench/client/src/components/MapCanvas.tsx、App.tsx、edit/:选择、临时控件和表单不得污染 baseline layer。