5.3 KiB
5.3 KiB
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 参考环境 | BASE-01..04、INV-01..06 |
完整桌面 oracle 构建清单;34 模块、命令、TypeId、Property、格式和错误清册 | 锁定提交可重建;清册无未登记入口 |
| R1 几何内核 | BYB-03..08、TSN-03..10 |
可复现 Bitbybit/OCCT 构建;浏览器原生历史;Shape 生命周期;三方黄金差分 | Boolean/PartDesign 历史无静默错绑;长会话无泄漏 |
| R2 Sketcher | SK-03..12 |
planegcs WASM;完整几何/约束/DOF/冲突;外部几何;编辑回放 | FreeCAD 草图成功/失败/冗余行为黄金通过 |
| R3 参数化核心 | CORE-01..12、PART-*、PD-* |
Document/Property/DAG/Body/Tip/Support;Part 与 PartDesign 全特征 | 编辑→重算→Undo→保存→加载闭环通过 |
| R4 文件互操作 | FC-04..11、PKG-* |
Document/GuiDocument、BRep/Shape、Expression/Link/TopoRef、未知字段保留 | FreeCAD→Web→FreeCAD 双向差异可解释且无静默丢失 |
| R5 核心工作台 | TD-*、SS-*、DRAFT-*、PLOT-* |
TechDraw、Spreadsheet、Draft、Plot 的对象、命令、任务和格式 | 每命令至少成功/失败/round-trip fixture |
| R6 工程工作台 | ASM-*、BIM-*、MESH-*、SURF-* |
装配、BIM、网格、曲面全链路 | 求解/几何/IFC/网格黄金和大模型预算通过 |
| R7 分析制造 | FEM-*、CAM-*、ROBOT-*、INSP-* |
求解器/后处理/刀路/仿真/检测报告 | 求解或明确远端能力;G-code/结果文件黄金通过 |
| R8 平台长尾 | PTS-*、RE-*、OSC-*、IDF-*、JT-*、MAT-*、APP-*、SCRIPT-* |
数据模块、插件、宏/API、桌面通用能力的实现或显式代理 | 无未分类入口;安全和权限模型通过 |
| R9 发布 | QA-*、REL-*、F0-F9/G0-G9 |
跨浏览器、性能、故障注入、安全、SBOM、迁移和发布 runbook | 所有阻断项关闭后才允许声明完整对标 |
3. 当前立即执行队列
ORA-01:建立完整 FreeCAD 1.1.1 桌面/工作台 oracle 构建配置;探针必须区分编译缺失、导入失败和 GUI-only。INV-02:从 O1/O2 生成模块→命令→对象→属性→格式清册,并与 Web manifest 做机器差分。BYB-06/07:在真实浏览器实例化原生历史 Worker,执行 Bitbybit STEP→原生 OCCT→FreeCAD 三方 Boolean 黄金和内存释放测试。TSN-04/07/10:补曲面/曲线/邻接签名,扩展 Boolean、Pattern 和 PartDesign 的逐输入历史,建立参数变异套件。SK-03/06/07:编译 planegcs WASM,按 FreeCAD 草图约束分类逐组替换基础 TypeScript solver。CORE-09..12、PD-*:完成 Support/AttachmentOffset、Body 单实体、Tip 重定向、局部特征和编辑历史。FC-04..10:在现有安全 ZIP 和属性投影上增加 GuiDocument、BRep/Shape、Expression/Link/TopoRef 与未知 XML/资源保留。- 按 R5→R8 顺序逐工作台交付,禁止只启用 UI 或把未实现命令标记为成功。
- 每个增量持续执行 R9 门禁;能力等级只能依据本机 FreeCAD 黄金证据提升。
4. 单项完成定义
一个命令、对象或格式只有同时满足以下条件才可从 experimental 提升:
- 锁定 FreeCAD 的成功、失败和边界 fixture 已保存。
- Facade 合同、取消、过期结果、Undo/Redo 和诊断均有测试。
- 几何/求解结果在声明公差内,拓扑引用不使用瞬时索引。
- 保存、加载、版本迁移和相关格式 round-trip 无静默丢失。
- Chrome、Firefox、Safari 目标版本的 Worker/OPFS/交互证据通过。
- 内存、性能、安全、许可证和能力矩阵已更新。
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 的缓存构建。