Files
Web_FreeCAD_Bitbybit/docs/freecad-reference-execution-roadmap.zh-CN.md

7.0 KiB
Raw Blame History

FreeCAD 1.1.1 全功能对标执行路线图

1. 基线与证据线

唯一语义基线是 FreeCAD 1.1.1、提交 0108fd4b4850cc46e625b60e53cea7a7bbe69f8d。界面相似、OCCT 算法可调用或命令名称存在都不等于兼容。

本机参考分三条证据线:

证据线 当前状态 用途 不得推断
O1 headless oracle FreeCADCmd 1.1.1 可用;Part/Material/Measure 可加载 几何、对象属性、错误和 FCStd 的确定性 CLI 回放 Sketcher、PartDesign、TechDraw 等未构建模块的行为
O2 完整桌面 oracle 源码已锁定,完整 GUI/工作台产物尚未建立 命令状态、Task、选择、视图、工作台对象与 GUI 行为 不能用静态源码清册代替运行时行为
O3 Web 对照 Bitbybit 1.1.1、原生 OCCT 历史 provider 和 Facade 已有基础门禁 FreeCAD↔Bitbybit↔Web 三方差分、浏览器 Worker/OPFS/交互 Node smoke 不能代替真实浏览器证据

每项功能必须同时记录FreeCAD 输入与状态、Web 输入与状态、输出、错误、持久化、资源行为、差异原因和兼容等级。

2. 连续执行顺序

批次 任务范围 主要交付物 退出门禁
R0 参考环境 ORA-01..02INV-01..04BASE-03..04 完整桌面 oracle 构建清单34 模块、命令、TypeId、Property、格式和错误清册 锁定提交可重建;清册无未登记入口
R1 几何内核 BYB-03BYB-05..08BROWSER-OCCT-01MEM-OCCT-01TSN-03..10 可复现 Bitbybit/OCCT 构建浏览器原生历史Shape 生命周期;三方黄金差分 Boolean/PartDesign 历史无静默错绑;长会话无泄漏
R2 Sketcher SK-03..12 planegcs WASM完整几何/约束/DOF/冲突;外部几何;编辑回放 FreeCAD 草图成功/失败/冗余行为黄金通过
R3 参数化核心 CORE-09..11PART-ALLPD-BASEPD-LOFTPD-DRESSUPPD-TRANSFORMPD-CLOSURE Document/Property/DAG/Body/Tip/SupportPart 与 PartDesign 全特征 编辑→重算→Undo→保存→加载闭环通过
R4 文件互操作 FC-04..11 Document/GuiDocument、BRep/Shape、Expression/Link/TopoRef、未知字段保留 FreeCAD→Web→FreeCAD 双向差异可解释且无静默丢失
R5 核心工作台 TD-ALLSS-ALLDRAFT-BASEDRAFT-OPSPLOT-ALLDOC-CLOSURE TechDraw、Spreadsheet、Draft、Plot 的对象、命令、任务和格式 每命令至少成功/失败/round-trip fixture
R6 工程工作台 ASM-COREASM-TOOLSBIM-COREBIM-IFCMESH-CORESURF-COREENG-CLOSURE 装配、BIM、网格、曲面全链路 求解/几何/IFC/网格黄金和大模型预算通过
R7 分析制造 FEM-ALLCAM-ALLROBOT-ALLINSP-ALL 求解器/后处理/刀路/仿真/检测报告 求解或明确远端能力G-code/结果文件黄金通过
R8 平台长尾 DATA-ALLADDON-ALLSCRIPT-ALLPLATFORM-CLOSURE 数据模块、插件、宏/API、桌面通用能力的实现或显式代理 无未分类入口;安全和权限模型通过
R9 发布 QA-01..08REL-01..04 跨浏览器、性能、故障注入、安全、SBOM、迁移和发布 runbook G0-G9 和所有阻断项关闭后才允许声明完整对标

3. 当前执行波次

当前只将下表的 Wave A 作为立即开工集。Wave B/C 可先准备 fixture 和合同,但不能在前置门未通过时声称验收。

波次 任务 可并行工作 退出条件
Wave A解锁参考与浏览器内核 ORA-01ORA-02BYB-03BYB-05BROWSER-OCCT-01BYB-06BYB-05 后并行 源码清册生成器、Worker 故障注入 harness、内存 telemetry 合同 O2 可探针Chrome 能加载原生 Worker取消与崩溃可恢复
Wave B建立可比较证据 INV-01..04BASE-03BASE-04BROWSER-OCCT-01BYB-07MEM-OCCT-01/BYB-08 成功/失败 fixture 生产可按工作台分片 34 模块入口无漏项Fuse/Cut/Common 三方差异可解释1000 次压测达到内存预算
Wave C关闭稳定拓扑 BYB-07TSN-03/04TSN-05/06TSN-07/08/09TSN-10 SK-03 planegcs 最小源图和 WASM POC 100 模型/1000 参数变异无静默错绑;歧义和删除均可诊断
Wave DSketcher 与参数化核心 SK-03..12CORE-09..11PART-ALL/PD-* FC-04/07 的未知数据保留可与核心对象映射并行 草图诊断与 FreeCAD 一致Part/PartDesign 七步闭环通过
Wave E文件与工作台 FC-04..11→P07→P08→P09 P07/P08 在 G4/G5 后并行BIM 共享合同等待 Draft/Spreadsheet FCStd 双向无静默丢失;每工作台创建、编辑、重算、撤销、保存、加载、导出通过

P10 不是最后才启动的波次:QA-01/02/07 从 Wave A 开始横切执行,其余 QA/REL 项在对应产物可用后立即纳入持续门禁。

Wave A 首批交付顺序

  1. 完成 GUI/34 工作台 CMake profile锁定依赖、构建参数、产物 hash 和重建命令。
  2. 用 O2 实测模块导入、Gui 命令注册、选择前置和 Task 创建,不将静态候选提升为运行时能力。
  3. 完成 Bitbybit/OCCT 绑定的可复现构建和 Worker 版本握手对请求实施取消、超时、stale generation 隔离和崩溃后重建。
  4. 在 Chrome 中实例化 JS/WASM Worker记录 COOP/COEP、OPFS、CSP、产物 hash、启动时间和失败诊断。
  5. 将 Worker 句柄账本与 JS heap、WASM memory 和 GPU 资源指标对齐,为 Wave B 的 1000 次 Boolean 门禁准备可量化基线。

4. 单项完成定义

一个命令、对象或格式只有同时满足以下条件才可从 experimental 提升:

  1. 锁定 FreeCAD 的成功、失败和边界 fixture 已保存。
  2. Facade 合同、取消、过期结果、Undo/Redo 和诊断均有测试。
  3. 几何/求解结果在声明公差内,拓扑引用不使用瞬时索引。
  4. 保存、加载、版本迁移和相关格式 round-trip 无静默丢失。
  5. Chrome 目标版本的 Worker/OPFS/交互证据通过;其他浏览器测试延期至全部任务完成并收到明确通知。
  6. 内存、性能、安全、许可证和能力矩阵已更新。

compatible 允许已记录且可解释的浏览器差异;exact 要求锁定版本的声明语义无差异。无法在浏览器安全实现的桌面能力必须标为受限代理,不能隐藏。

5. 每批统一命令

./npmw run probe:freecad-reference
./npmw run test:golden:freecad
./npmw run test:occt-history
./npmw run verify
git diff --check
jq empty config/compatibility-matrix.json

O2 完整桌面 oracle 建立后,所有相关探针和黄金命令必须显式设置 FREECAD_CMD,防止回退到仅含 Part 的缓存构建。

详细责任 lane、83 个任务、交付物、验收和交接合同见 FreeCAD 1.1.1 全功能对标执行 WBS;机器可读任务真值为 config/freecad-execution-plan.json