Files
FreeCADWasmDev/docs/current/migration-throughput-fix.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

44 lines
4.5 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.
# 迁移吞吐修复:2026-09-09
## 实际缺口
08:31 初始快照:当前有效业务 65/1503。745 项已有可复用实现但待业务确认,其中只有 6 项声明现成用例,739 项需要补真实业务用例;662 项仍标为需要实现,另有 31 项路由记录未进入当前可复用候选。源码、WASM、业务用例与有效验收是不同层次,不能更改分母或以产物存在替代业务完成。
## 已部署改动
1. `prepare_implementation_business_batch.py` 采用 `delivery-workflow-first-v3`:两次业务恢复无结果后,优先尝试另一个模块的未覆盖业务开发包。新包最多 4 项,保持执行模型/工作流边界;不存在可执行开发包则继续原恢复流程。已覆盖用例仍可批量执行,原 runtime 修复、交付、全范围实现和验收阶段全部保留。
2. `prepare_business_acceptance_batch.py` 增加 `--uncovered-only`、`--exclude-module`;只筛选任务,不改任何完成记录。`scheduler_progress.py` 持久化 businessLane,单纯轮转仍算无进展;现有冷却和源码指纹规则不变。
3. TechDraw 导出异常单独保存,后续创建/保存/图像结果不随它整体打回。随后真实运行暴露报告短写:进程退出 0,但约 64 KiB 处 JSON 被截断。问题来自单次 `fs.writeSync` 写管道后立即退出,不是 OCCT/DXF 计算失败。
4. 统一 runner 用临时常规文件接收 stdout 后完整解析,保护现有业务脚本;新增 `business-report.mjs` 等待输出完成,TechDraw 已使用它。1.2 MB UTF-8 回压测试和旧式单次写 300 kB 的真实 Node 子进程测试通过。超时、损坏 JSON、源变化、失败断言仍拒绝通过。
5. 新补 Spreadsheet 的 CSV 两项合同及共享用例,直接使用现成 `FreeCADWebSpreadsheetRuntimeProbe`、已有 Facade 与桌面 Sheet CSV 实现。包含不同数据、逗号/分号/制表符、带分隔符的引用字段、原生重算/导出/重新导入、范围/字节数、非法输入和恢复,不声明固定样例的创建/持久化或全部 UI 完成。
本轮没有编译或重写 OCCT、FreeCAD 几何算法、DXF 或其它 WASM。后台自身此前修改原生源码的构建与本轮修改分开;所有旧源码、产物、失败和证据保留。
## 实测
| 项目 | 结果 |
|---|---|
| TechDraw 五项正式组 | 9.906 秒,5/5 通过 |
| TechDraw 五项有效证据复用 | 0.052 秒,不重跑 |
| 新增 Spreadsheet CSV 两项 | 1.462 秒,2/2 通过 |
| Spreadsheet 有效证据复用 | 0.048 秒,不重跑 |
| 调度等 Python 回归 | 最终 121 项通过,13.234 秒,包含大报告/超时及通道记录测试 |
| 完整报告 Node 回压测试 | 2 项通过,0.129 秒 |
TechDraw 正式证据:`business-evidence/a7d4d9fee7927965285e8838-20260909T004427604152.json`。
Spreadsheet 证据:`business-evidence/55745199396b3246a36a0124-20260909T003934163442.json`。
08:46 快照已为 72/1503,净增 7;其中包含后台同步推进和失效结果恢复,不全部算本轮新实现。本轮明确新补的是 Spreadsheet 两项;修复报告损坏恢复了 TechDraw 实际结果。全量完成仍远未达到,不凭单窗口宣称总体吞吐已恢复。
08:49 再核对:后台第 5405 轮仍在运行,当前策略为 v3;第 5403 轮已有持久化 development 通道记录。此时有效数变为 71/1503,不能将先前峰值 72 当作当前数;持续变动的源码和产物会触发既有证据有效性检查。
## 持续策略
- 用“新增有效业务/小时”和原步骤计时衡量,不以轮数、重复验收、证据刷新或源码修改数作为交付。
- 先用现成产物执行同类真实业务,共享一次加载;只有定位到 native 缺陷或真实依赖变化才编译受影响目标。
- 缺用例则成组补用例与必要接线;已有接口为固定样例时,补当前输入/文档语义后再验收,不能靠新增 coveredIds 提高数字。
- 失败回合先抓最小失败输入和最后执行阶段,修共用入口;一个失败子项不抹掉其它成功结果。无需每轮重新审查整库源码。
- 保留已有 OCCT WASM 唯一几何出口、Three.js 显示、FreeCAD 文档语义、OPFS 与 React 技术路线;不切换实现框架。
当前逐步骤报告为 `efficiency-development-lane.md`/`.json`,20 轮跨越改动前后,不能当作纯新策略的对照实验。它仍显示读取后等待约 552.6 秒、编辑约 537.9 秒、后置构建 241.1 秒;实际文件读取约 2 秒。后续重点继续是有内容的业务开发和避免无效恢复,而不是磁盘读取优化。