Files
FreeCADWasmDev/docs/current/MIGRATION_EXECUTION_RESET_20260911.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

5.5 KiB
Raw Blame History

FreeCAD Web 移植执行纠偏

最新决定

2026-09-11 用户要求:全部功能先打通,不需要验证,用户使用时自己验证。 现已按此调整,不再以自动验收比例推动或阻塞当前移植阶段。

技术路线不变:已提供的 OCCT WASM 负责几何,FreeCAD WASM 负责文档/特征, Three.js 显示,React 交互,OPFS 保存实际文件。桌面源码、已有模块、DXF C++ 实现、编译目录和历史成果全部复用,不重新从零开发。

为什么进展慢

  1. 执行目标混杂。功能接线、自动验收、旧失败对账同时争用串行主线。 已连接功能因指纹失效反复回来验收,不能等同于还没有移植。
  2. 重验掩盖停滞。旧证据重新通过会清零模块的停滞计数,允许同一未完成 功能继续“局部修改、旧功能重验、局部修改”的循环。
  3. 批次没有形成可交付功能。同一模块反复调整参数保护、结果描述和界面, 没有一次打通对应的当前文档、原生操作和界面调用。
  4. 共享文件频繁变动。最近 100 个模型日志中,workbench-shell.tsx 修改 13 次,Part 适配器 12 次,TechDrawDesktopCommands.cpp 11 次。 共用文件变动又触发旧证据重新计算与验收。
  5. 上下文要求不一致。原提示要求外层验收,压缩后的提示也恢复这个要求; 调度器限制源码读取后,模型仍反复发出被拒绝的命令。
  6. 把过程指标当进度。进程正常、测试通过、回执刷新、路由数都不能分别 代表全部功能接通。先前“无空转”和历史验收高值不是可靠的当前结论。

耗时依据

使用项目已有计时工具生成报告,缓存窗口实际是 50 轮,不冒充 100 轮:

步骤 秒 占已计时阶段
读取后的模型事件间隔 908.9 23.7%
编辑阶段 734.0 19.1%
前置业务验收 542.0 14.1%
前置构建 508.2 13.2%
编辑后的模型事件间隔 232.6 6.1%
首次模型决策 193.5 5.0%

模型事件间隔包括推理、服务、通信和客户端等待,不能都称为计算耗时。 该窗口未记录断流;不能继续把模型服务当作唯一主因。 数据在 migration-throughput-audit-20260911.md/.json。

全面范围

切换前一次清单快照为 1504 项:64 项当时证据有效,86 项已有可执行用例, 789 项有实现回执候选但缺业务用例,565 项仍需补齐或核实接线/实现。 这些是切换前的分层清单,不是当前剩余功能的工时估计;各功能复杂度不同。 32 个模块均有 WASM 产物,但产物存在不表示每个工作流都已接通。

完整逐模块清单保留在 business-acceptance-plan.md/.json,只作为已有成果 和缺口索引,不再作为自动验证任务队列。不删功能、不缩小分母、不清空失败。

按既有架构完成以下功能链;同目标的修改合并一次必要增量构建:

顺序 功能组 接通内容
1 主工作区与文档 当前文档、树/属性、选择、事务、打开/保存、OPFS
2 Part / Sketcher / PartDesign 已有原生几何、约束、特征及编辑入口
3 Import / Draft / Mesh / MeshPart 已有格式、DXF C++、STL/OCCT、草图与网格业务
4 TechDraw / Assembly / BIM 图纸、装配、建筑对象及对应任务/选择/文件入口
5 Fem / CAM 分析模型、结果、刀路和文件业务
6 其余模块 Material、Measure、Points、Spreadsheet、Surface、Robot、ReverseEngineering 等全部既有清单

优先使用已经形成真实原生操作的实现;禁止为了路由数增加固定返回、空成功 或仅设置 status。遇到 GUI 依赖,把文档计算留在 WASM,把交互接到现有 React。

已落地的执行调整

  • execution-policy.json 持久化 implementation-only-user-validation。
  • planner 只选择功能实施、产品/格式接线、已报告故障修复,不再选择自动验收、 补测试或历史对账;旧验收批次会重新规划。
  • pipeline 不再执行业务用例和验收 gate;运行问题修复发布后保持 fix_deployed_pending_use,等待用户使用,不伪造问题已验证解决。
  • 直接验收入口也按策略跳过,防止旧回合调用它;历史用例和证据保留。
  • 禁止模型回合编写/运行测试;原始和压缩提示都遵守同一用户策略。
  • 定时优化关闭,避免每 30 分钟插入一次新的检查回合。
  • 停滞计数不再被纯证据刷新清零;真实实现进展仍可继续。
  • scheduler 和 watchdog 的停止条件改为完整范围的接线/构建与已报告故障 部署状态,不等待自动验收全绿。
  • 状态工具把旧验收数标为 historicalAcceptanceNotSchedulingGate。

这些是调度行为改变,不是宣称全部功能已经完成。新指令生效后不再执行 自动回归或浏览器验证。编译依赖检查、编译、链接、资源同步属于交付产物 必需步骤,保留;仅相关输入改变时才重建受影响目标。

后续控制

每批只记录:复用路径、已接通功能、实际缺口、变更文件、编译/发布结果、 下一步。稳定文件不再读,旧证据不重验,共用接口不为单模块需求反复修改。 用户使用时发现问题,再按具体输入定位对应模块并修复,不转回全量验收循环。 主指标是当前路由、已发布实现回执和剩余连接缺口;用户验证状态单独记录。