Files
FreeCADWasmDev/docs/FREECAD_WEB_FULL_PARITY_ROADMAP.md
wangdequan 9a7c4f0335 Save FreeCAD Web workspace sources and user validation evidence
IFC native binding remains incomplete; preserve accurate test results.
2026-09-15 22:01:58 +08:00

4.6 KiB
Raw Blame History

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 不能只检查模块状态。它必须同时证明:

  1. 403/403 对象类型都有源码入口、适用动作、属性/依赖和结果证据;不适用项有可复核原因。
  2. 236/236 格式记录都有 native handler、错误/恢复和浏览器可回放结论;格式限制不得隐藏在前端。
  3. 13,385 API 都被分类为已暴露、受限、不可移植或明确未实现,并有生成来源和权限策略。
  4. Document actor 支持多对象图、属性/链接、重算、事务、Undo/Redo、取消、错误恢复和 FCStd 语义 round-trip。
  5. GUI 工作台的命令、任务面板、树/属性/选择/相机/视图状态在 React/Three.js 中有对应合同;GUI-only 依赖必须显示为正式边界。
  6. Chrome 质量 gate 记录网络、异常、截图、性能、内存释放、响应式布局和可访问性结果。

上下文纪律

  • 每张卡独立 manifest;只加载 handoff、当前卡、直接前置和小型证据 JSON。
  • inventory、源码树、原始日志和大截图永不进入启动上下文,只保存路径、摘要和 hash。
  • 任何超时先保存首个错误摘要,轮换上下文后只重试一次。
  • 队列只保持一个 in_progress;没有证据的能力保持 planned 或 blocked。