# 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`。