# Web FreeCAD 接续执行状态 更新时间:2026-08-03(TSN generation 写回里程碑完成,待提交) ## 1. 当前目标 按 FreeCAD `1.1.1` 全功能对标方案持续推进 F0-F9 阶段门,完成实现、测试、兼容矩阵、发布门禁并同步云仓库。当前仍是 experimental 核心 Facade/OCCT 阶段,不能宣称已达到 FreeCAD 全功能兼容。 ## 2. 仓库状态 - 分支:`main` - 云仓库:`http://154.8.160.151:3000/wangdequan/Web_FreeCAD_Bitbybit.git` - 最近已推送里程碑:`501f43f feat: apply object placement during recompute` - 最近已推送里程碑的完整门禁:`./npmw run verify` 通过 - 当前 TSN 未提交工作区验证:`./npmw run verify` 通过(Facade 63/63),diff/JSON 校验通过 - 生产构建:通过 - 本地开发地址:`http://127.0.0.1:5173/` - 兼容真值表:`config/compatibility-matrix.json` - 总体方案:`docs/freecad-full-parity-plan.zh-CN.md` ## 3. 本轮已完成并推送 1. 重计算根因诊断、修复分支重算与诊断树。 2. Linear Pattern、Polar Pattern 和基础 Hole 的 experimental OCCT 执行链路。 3. 稳定拓扑签名、版本化 TopoRef、迁移、PropertyLinkSub 与保守拓扑历史回退。 4. Sketcher 版本化 solver provider 协议、能力探测、取消/过期 generation 隔离和回放合同。 5. 椭圆/B-spline 领域模型;基础 TypeScript solver 对未支持曲线返回明确诊断。 6. 外部草图几何、稳定 TopoRef、持久化与 `topo-ref` DAG 依赖边。 7. Vector、Placement、LinkList/StringList 结构化属性合同;Placement 深拷贝、校验、撤销、持久化和 UI 编辑器。 8. 对象级 Placement 重算:基本体/特征 Shape 生成后执行平移与轴角旋转;恒等变换跳过额外 Shape;变换失败释放临时 Shape 并保留上一次有效缓存;保存后恢复的 Placement 可再次驱动重算。 9. TSN generation 写回:重算成功后采集面/边/点签名快照与保守历史;迁移 LinkSub/草图外部几何;歧义或删除引用标脏所有者并生成可定位诊断;schema v6 保存对象拓扑快照。 相关提交按新到旧: - `293cff6` structured placement properties - `a8f902c` stable sketch external geometry - `6786261` advanced sketch curves - `e0b4817` versioned sketch solver protocol - `4d94109` conservative topology history fallback - `d3d88b2` LinkSub topology references - `9def470` topology reference migration - `1ed3527` basic hole - `ce3b81c` polar pattern - `8995b90` linear pattern - `aeafc6c` recompute diagnostic repair tree ## 4. 已确认限制 - 仓库没有 FreeCAD C++ 源码、Emscripten 工程或 planegcs WASM 产物;`SK-03` 不能标记完成。现有 `typescript-basic` solver 仅用于协议与基础模型验证。 - Pattern 当前复制整个 Shape,不是 FreeCAD 局部特征历史。 - Hole 固定原点/法向,尚无面定位、沉孔、锪孔、螺纹和完整孔标准。 - 拓扑历史来自签名保守回退,不是 OCCT/FreeCAD 原生 Generated/Modified/Deleted 历史。 - Placement 已进入文档属性,并接入 Facade 的对象级 Shape 重算;尚未完整映射到 Body/Tip、Support、AttachmentOffset 或所有特征执行器的 FreeCAD 局部坐标链语义。 - FCStd 仍以安全预检、metadata/proxy 和只读报告为主,尚未双向原生往返。 ## 5. 下一步执行顺序 1. 补齐 P2 浏览器实证门禁:真实 SQLite v4→v5 升级、OPFS 孤儿清扫、QuotaExceeded、大文件和崩溃注入;合同层与 fallback 测试已由 `6bfbdf5` 完成。 2. 补齐 P3-03 浏览器 OCCT 包围盒/体积黄金测试,并验证 Placement 撤销、保存和恢复的真实 Worker 路径;Node/fallback 合同已通过。 3. 为 ambiguous/deleted TopoRef 补 3D 候选高亮和用户替换事务,并增加真实 OCCT/SQLite 浏览器回放;当前仅有 Facade 诊断与选择所有者流程。 4. 在获得 FreeCAD `1.1.1` 源码/构建输入后完成 `SK-03` planegcs WASM POC;此前继续补充回放夹具、约束分类和 Sketch 编辑事务。 5. 扩展 PartDesign:Mirrored、MultiTransform、Loft/Pipe/Groove、Thickness/Draft,以及 Pattern/Hole 完整语义。 6. 完成 FCStd 原生对象/属性/Shape 双向映射和 STEP/IGES/STL/Web CAD 包导入导出。 7. 按核心优先级完成 TechDraw、Spreadsheet、Draft、Assembly、BIM、Mesh、Surface、FEM、CAM 等工作台。 8. 最后通过跨浏览器、性能、内存、安全、可访问性、离线/PWA、升级回滚和发布差异报告门禁。 ## 6. 接续操作 ```bash cd /home/mes123456/working_Web_FreeCAD_Bitbybit git status --short git log -5 --oneline ./npmw run verify ``` 每个独立里程碑必须: 1. 更新实现与聚焦测试。 2. 更新 `config/compatibility-matrix.json` 和两份实施方案中的真实状态。 3. 运行 `./npmw run verify`、`git diff --check` 和 JSON 校验。 4. 单独提交并推送 `main`,不得把凭据写入仓库。 ## 7. 2026-08-03 P2 接续进展 本轮已完成 schema v5 迁移运行器、最近 5 版文档检查点、`loadCheckpoint()`、配额预检、资源清扫计划/API 和 1000 次写队列压力实现。完整门禁已通过,并由提交 `6bfbdf5` 推送到云仓库。后续 TSN 里程碑把 schema 提升到 v6,以 `objects.topology_json` 保存 generation 拓扑快照;真实浏览器 v5→v6 升级仍需补证。 证据边界:Node/fallback 证明迁移合同、队列、检查点与纯资源策略;真实浏览器 SQLite v4→v5 升级、OPFS 孤儿清扫、QuotaExceeded、大文件与崩溃注入仍是 P2/P8 后续任务,不能因本轮测试而标记完整 G4/G5。 ## 8. 2026-08-03 Placement 里程碑快照 Placement 里程碑涉及实现、测试、兼容矩阵和三份状态/方案文档: - `src/facade/recomputeEngine.ts`:Shape 生成成功后读取对象 `Placement`,通过 `geometry.applyPlacement()` 执行平移/轴角旋转;恒等 Placement 不创建额外 Shape;成功后释放局部 Shape,缓存只提交变换后的句柄。 - `tests/facade.test.ts`:新增非恒等 Placement 与恒等 Placement 的执行器测试。 - `docs/continuation-status.zh-CN.md`、`config/compatibility-matrix.json` 及两份实施方案:记录本里程碑的能力边界和验证证据。 已完成的当前工作区验证: ```text ./npmw run test:facade -> 61/61 通过 ./npmw run build -> 通过 ``` 完整 `./npmw run verify`、`git diff --check` 和 `jq empty config/compatibility-matrix.json` 均已通过;Placement 已作为独立里程碑提交并推送到远端 `main`。 1. 浏览器 OCCT 包围盒黄金证据若无法自动化,保持 P3-03 为 `IN PROGRESS`。 2. TSN generation 历史写回已进入当前工作区;提交后推进候选替换事务与下一批 PartDesign 特征,不把签名回退误标为 OCCT 原生历史。 ## 9. 2026-08-03 TSN generation 写回快照 - `geometry.topology()` 同时返回可序列化的面/边/点签名条目;几何执行器只在 generation 被接受且拓扑采集成功后提交 Shape 和 `ObjectTopologySnapshot`。 - 每个对象快照记录 generation、文档版本、迁移 matches 和 `signature-fallback` 历史;拓扑采集失败释放本轮 Shape,最近有效缓存不被覆盖。 - 重算提交遍历 `App::PropertyLinkSub` 与 Sketch 外部几何:稳定引用写回新 generation;歧义/删除引用不强绑,所有者保持 dirty/warning 并产生 `TOPOLOGY_REFERENCE_AMBIGUOUS/DELETED` 诊断。 - schema v6 新增 `objects.topology_json`,fallback 保存/加载已验证快照深克隆;真实 SQLite/OPFS v5→v6 升级尚未进行浏览器实证。 - 完整 `./npmw run verify`、diff/JSON 校验均通过;提交与推送仍待执行。 这仍不是 OCCT/FreeCAD 原生历史:签名来自三角网格,缺少曲面/曲线参数、邻接图和 Boolean 的逐输入原生历史。诊断能定位引用所有者,但 3D 候选高亮与原子替换 UI 尚未实现,因此 F3/TSN-03/07/09 不能标记完成。 本里程碑不得声称 P3-03、F3 或完整 FreeCAD 兼容已经通过。当前对象 Placement 是 Shape 生成后的对象级变换,尚未证明 FreeCAD 对 Body/Tip、Support、AttachmentOffset 和局部坐标链的完整等价语义。