4.6 KiB
FreeCAD Web 完整对标路线
目标
目标是让 React + Worker + WASM 版本在用户可观察行为上对标当前 checkout 的 FreeCAD:文档、对象、重算、文件格式、Python、工作台、命令、选择、视图、属性、事务、恢复、扩展和质量边界都必须由源码证据驱动。现有 P6 completed 只表示各模块声明动作的切片 gate 通过,不能解释为完整软件已经 1:1 完成。
当前基线
详细数字由 docs/p6/full-parity-audit.json 生成:
- 32 个源码模块;24 个带 App;22 个带 GUI;1 个 GUI-only;7 个无 App/GUI。
- 403 个已盘点 DocumentObject 类型,分布在 18 个模块。
- 236 条格式记录,21 个唯一扩展名。
- 13,385 条 Python API 记录,分布在 29 个模块。
- Web 当前 70 个 HTML 入口、65 个 Worker、101 个 Facade、44 个 native probe 源文件。
- 当前 P6 ledger 为 32 个模块
completed,但各 gate 保留了代表 fixture、GUI、任意图、跨版本、完整格式/API 等边界。
连续执行队列
高吞吐批次策略
原子卡仍是账本和依赖边界,但实现不再按单 API 停顿。每个活动卡先由
tools/prepare_full_parity_module_batch.py 选择同一 module+tier+family 的
4-32 条 unresolved records,生成紧凑批次清单;一个 native adapter、一个
fc_web_dispatch_json command、一个 Facade/Worker 分支和一个主证据 JSON
贯通整批。批次内共享模块初始化、Document fixture、参数/返回 schema、错误/取消、
资源释放和构建;逐条记录仍独立保存结果与 hash。批次完成后统一更新 disposition
并重新聚合 Full Parity,任何未实现记录继续使 Y 保持 pending。
| 顺序 | 任务 | 交付物 | 前置 |
|---|---|---|---|
| 1 | FW-P6-FPA-A 全面对标审计 |
审计 JSON/Markdown,冻结差距清单 | P6 baseline |
| 2 | FW-P6-FPA-B 核心应用壳层 |
React 工作区、Document actor、命令/错误/取消合同 | A |
| 3 | FW-P6-FPA-C Document/FCStd/事务 |
多对象文档、属性、树、FCStd、Undo/Redo、恢复 | B |
| 4 | FW-P6-FPA-D1..D5 403 对象类型扩展 |
按 5 个 adapter family 完成每个适用对象的 native contract matrix | C |
| 5 | FW-P6-FPA-E 236 格式记录扩展 |
每个适用格式的 import/export/recovery matrix | C |
| 6 | FW-P6-FPA-F 13,385 Python API 扩展 |
按 module+tier+family 批量分类、binding、权限和可回放测试 | C |
| 7 | FW-P6-FPA-G 工作台/GUI 命令对标 |
32 模块、22 GUI 模块的命令/任务面板/资源映射 | B,C,D |
| 8 | FW-P6-FPA-H 视图与用户交互 |
Three.js 选择、相机、属性编辑、导航、快捷键、响应式布局 | B,C,G |
| 9 | FW-P6-FPA-I 质量与发布 |
Chrome 固定 gate、性能、内存、无障碍、安全、兼容性 | D,E,F,G,H |
| 10 | FW-P6-FPA-Y 完整对标出口 |
只有所有差距关闭或显式批准边界后才可通过 | D,E,F,G,H,I |
每张卡只关闭一个可验收合同,但合同内部允许一次关闭多个同 family unresolved records。D 是编排父卡,D1..D5 是五个 family 叶子卡。若卡内发现范围过大,先缩小批次或拆成同目录叶子卡;不得用静态 JSON、JavaScript 几何或“有源码”替代 native 行为。完成后严格执行 rotate_web_task_context.py、sync_web_task_state.py、validate_web_context.py、prepare_web_task_context.py,再生成下一批并继续。
完成判据
Full Parity Y 不能只检查模块状态。它必须同时证明:
- 403/403 对象类型都有源码入口、适用动作、属性/依赖和结果证据;不适用项有可复核原因。
- 236/236 格式记录都有 native handler、错误/恢复和浏览器可回放结论;格式限制不得隐藏在前端。
- 13,385 API 都被分类为已暴露、受限、不可移植或明确未实现,并有生成来源和权限策略。
- Document actor 支持多对象图、属性/链接、重算、事务、Undo/Redo、取消、错误恢复和 FCStd 语义 round-trip。
- GUI 工作台的命令、任务面板、树/属性/选择/相机/视图状态在 React/Three.js 中有对应合同;GUI-only 依赖必须显示为正式边界。
- Chrome 质量 gate 记录网络、异常、截图、性能、内存释放、响应式布局和可访问性结果。
上下文纪律
- 每张卡独立 manifest;只加载 handoff、当前卡、直接前置和小型证据 JSON。
- inventory、源码树、原始日志和大截图永不进入启动上下文,只保存路径、摘要和 hash。
- 任何超时先保存首个错误摘要,轮换上下文后只重试一次。
- 队列只保持一个
in_progress;没有证据的能力保持planned或blocked。