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

62 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`。