Files
Web_FreeCAD_Bitbybit/docs/current-work.zh-CN.md
wangdequan e3373c9d6c
Some checks failed
real-verification / chrome (push) Has been cancelled
real-verification / freecad-oracle (push) Has been cancelled
real-verification / wasm (push) Has been cancelled
feat: align FreeCAD property status semantics
2026-08-14 17:56:41 -04:00

102 lines
5.8 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.
# Web FreeCAD 当前工作主线
更新时间2026-08-14
## 1. 唯一目标
本项目的目标是把锁定的 FreeCAD `1.1.1` 能力准确迁移到浏览器,而不是另做一套外观相似的通用 Web CAD。
浏览器端必须继续遵守现有边界React 只负责交互,所有 CAD 业务通过 `BitBybitWebCadFacade`;几何、求解、命名和持久化分别在受控 Worker/WASM 边界内执行;最终几何相似不能替代 FreeCAD 文档语义、原生历史、拓扑命名和 FCStd 往返证据。
## 2. 当前真实状态
截至 2026-08-14
- 系统级 FreeCAD exact claim 为 `false`
- 34 个模块中 `0 exact``26 compatible``5 proxy``3 development`
- 兼容实现账本 P01-P10 已全部标记为 `completed`,表示已有实现和对应门禁,不表示与 FreeCAD 完全等价。
- exact 计划共 52 项:`5 completed``36 in_progress``11 pending`
- 已完成的 exact 项只有 `EX-TSN-00..03``EX-PD-02`:原生命名证据边界、逐阶段历史、生产私有命名、同构来源处理,以及 Attachment/XLink 生命周期。
- exact 发布任务 `EX-REL-01` 仍为 `pending`34 个模块都不得提升为 exact。
状态冲突时按以下顺序取真值:
1. `config/freecad-web-exact-parity-plan.json`:是否达到 FreeCAD exact 及具体阻断项。
2. `config/release-capability-matrix.json`:对用户可声明的模块能力等级。
3. `config/freecad-execution-plan.json`:兼容实现工作包是否已有执行闭环。
4. `config/*-verification.json` 和原生 oracle某次具体环境运行的证据。
5. `docs/continuation-status.zh-CN.md`:按时间追加的历史日志,不作为当前总状态入口。
## 3. 当前架构主链
```text
React / FreeCAD Web UI
|
BitBybitWebCadFacade
|
Document + Property + Transaction + DAG/Recompute
|
Geometry / Sketch / Naming / Project Facades
|
Dedicated Workers
|
Bitbybit OCCT + FreeCAD naming + planegcs + SQLite OPFS
|
FCStd / STEP / IGES / mesh / engineering resources
```
任何新功能都必须接入这条主链,不能从 React 绕过 Facade 直接调用 Three.js、OCCT、文件系统或持久化实现。
## 4. 执行优先级
### P0-A锁定完整原生 oracle
对应 `EX-ORA-01/02`。穷尽运行时 TypeId、Property、GUI command、成功/失败/取消状态和 feature-family mutation 夹具。没有原生基线的功能不进入 exact 实现判断。
### P0-B关闭跨特征拓扑命名
对应 `EX-KER-01``EX-TSN-04`。完成生产 Worker 五阶段链与桌面 30-case 逐阶段对账,补齐跨特征 mutation 矩阵、builder flags 和失败分支。目标是错误绑定、未解释关系和保存重开名称漂移均为零。
### P0-C关闭 App 文档语义
对应 `EX-DOC-01/02/03`。当前 85 种运行时 Property 中仍有 62 种只能 opaque 保存。15 类已观察到的 Property status 均已进入类型化位掩码和 FCStd 无损读写,其中 13 类已由锁定的 FreeCAD 1.1.1 探针和 Facade 行为覆盖:`Output/PropOutput` 不 touch`PropNoRecompute` 只传播依赖对象,`Transient/PropTransient` 保留定义但跳过值,`PropNoPersist` 完全省略。`LockDynamic``PartialTrigger` 仍是保存与原生 oracle 记录,尚未进入动态属性结构变更和 partial document observer 行为。后续依次补齐剩余 Property codec/editor、事务与 observer 顺序、局部重算失败、Extension 和 FeaturePython 边界。
### P0-D关闭核心建模语义
对应 `EX-SK-01/02``EX-PART-01``EX-PD-01`。按原生 oracle 逐特征补齐参数组合、失败诊断、编辑恢复、原生 history 和 FCStd 往返;不能按整个工作台批量提升等级。
### P0-E关闭 FCStd 和核心格式
对应 `EX-FC-01``EX-FMT-01`。先完成所有原生 Property/Shape/ElementMap/StringHasher 的保存、重开、再保存,再处理 STEP/IGES 的高级元数据和装配语义。
P1/P2 的 GUI 全量对标、其他工作台、代理模块和跨浏览器发布,必须在上述 P0 主链有明确前置证据后推进。当前不再以增加工作台数量作为主要进度指标。
## 5. 每项工作的完成定义
一个 FreeCAD 能力只有同时具备以下证据,才可关闭对应 exact 任务:
1. 锁定 FreeCAD 1.1.1 的原生成功、失败、取消和编辑 oracle。
2. Facade 内的结构化实现,无 UI 直连内核旁路。
3. 真实浏览器 Worker/WASM 回放,不以 Node mock 代替。
4. FCStd 保存、关闭、重开、再次保存后语义稳定。
5. Undo/Redo、局部失败、崩溃或 stale generation 不破坏最后有效状态。
6. ShapeHandle、Worker、OPFS 等资源在结束后正确释放。
7. 聚焦测试、相关 Chrome gate、计划/能力矩阵和差异说明同步更新。
8. exact promotion gate 不依靠改写报告或放宽断言通过。
## 6. 近期工作队列
1. 保持现有验证资产可复现,先处理任何 `failed` 浏览器 gate再开始新里程碑。
2. 完成 `EX-TSN-04` 的生产五阶段链与桌面 resave 逐阶段相关性对账。
3.`EX-ORA-02` 输出的 feature-family 缺口中选择一个 P0 特征族,补齐 mutation、失败、恢复、round-trip 全证据。
4. 以原生 Property 缺口报告为输入推进 `EX-DOC-01`,每批只提升有 codec 和状态语义证据的类型。
5. 每个里程碑运行聚焦检查;准备合并时再运行 `./npmw run verify``git diff --check` 和 JSON 校验。
## 7. 明确不做
- 不把项目改成远程桌面、服务端截图流或仅 UI 仿制品。
- 不新增绕过 Facade 的几何、渲染、脚本或存储入口。
- 不以 mock、静态截图、最终 Shape 相似或单次成功回放声明 exact。
- 不为追求模块数量继续铺开低优先级工作台,优先关闭 P0 核心语义。
- 不在 `EX-REL-01` 全部条件满足前宣传“完整 FreeCAD Web 版”。