1.5 KiB
1.5 KiB
设计
技术合约不在本文重复定义。权威定义见父任务 .trellis/tasks/08-26-direct-manipulation-road-editor/design.md 的以下小节:
- 「约束模型」—
RoadConstraintKind6 个取值、SemanticAnchor4 种锚点、transition、boundaryIndex范围、station语义。 - 「文档、活动副本与 revision」—
RoadEditDocument、RoadConstraint、ConstraintStatus5 态表。 - 「存储布局与迁移」— 目录结构、惰性迁移、内容寻址与留存策略。
- 「area config 所有权」— 快照规则与
areaConfigSha256。 - 「编译器几何版本变更」—
recheck策略。 - 「上线与回滚形态」— 服务端纯增量、v1 文件不动。
本子任务的局部决定
- 文档读写与 schema 校验放在编译器侧(
src/compile/下新增模块),不放在workbench/server.js:预览、正式编译与 CLI 导出都要用它,放服务器会造成第二套实现。 - 校验只做结构与取值范围,不做几何可行性。几何不变量(最小车道宽、外缘不交叉等)属求解器职责,见
direct-edit-solver-api。 - 惰性迁移在读取入口触发,不提供独立迁移命令:既有 import 目录数量少,且迁移是纯增量创建,失败可重试。
ConstraintStatus在本子任务只落地存储与校验;实际重放匹配逻辑属direct-edit-solver-api。本任务的测试用手工构造的 status 值覆盖读写路径。- 内容寻址采用
sha256,与RoadRevisionManifest.source.osmSha256同一摘要,避免两套 hash。