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

107 lines
6.1 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.
# 业务占位清理与续接
执行原则:先实现功能,用户使用时验证。不运行自动测试、浏览器验收或验收队列。
不能以增加注册、修改成功状态、移除错误保护代替真实业务。本文不宣称全项目或全部占位已解决。
## 全范围候选清单
`python3 tools/report_business_placeholders.py` 扫描整个 `freecad-source/src/WebAssembly`
原生适配目录和 `web/src` 下非生成、非测试的 C/C++/头文件/JS/TypeScript/TSX 文件,不执行业务代码。
完整路径、行号、上下文、源码指纹和已保留的人工源码结论见
`business-placeholder-inventory.json`;按文件汇总见同名 Markdown。
首次扩展前快照:481 个文件,616 处候选,扫描 0.961 秒;扩大到全部
WebAssembly 入口后的最新数字以 `business-placeholder-inventory.json` 为准。
| 候选类别 | 位置数 | 如何处理 |
| --- | ---: | --- |
| 明确边界、TODO、未实现说明 | 27 | 判断是否在实际业务分支,优先复用桌面实现替换 |
| 运行时声明模块或 shim | 86 | 区分纯导入兼容与业务后端,不得假冒真实内核 |
| 诊断夹具、源码构造记录 | 90 | 追踪是否泄漏到用户业务,保留独立诊断用途 |
| 未实现或失败状态 | 413 | 正常错误处理不能删除,不可直接当成占位数量 |
类别可交叉;数字不是未完成命令数。没有命中特征的空操作仍可能存在,
候选枚举不等于已完成全部源码语义审查。扫描器按文件指纹复用已扫描内容;
已登记但仍缺依赖或部分语义的人工结论也保留,不随路由登记消失。
## 本次真实改动
### 孔轴配合
原 `TechDraw_HoleShaftFit` 分支只有 `not_implemented`,实际桌面实现已经在
`freecad-source/src/Mod/TechDraw/TechDrawTools/TaskHoleShaftFit.py`。
现在直接从已经嵌入 TechDraw WASM 的该文件加载 ISO286 类和两组配合选项,
使用 Python AST 提取纯计算和数据定义,不导入 Qt 对话框,也不复制或重写表格。
原生层读取当前文档真实尺寸,在事务中写回 FormatSpec、EqualTolerance、
OverTolerance、UnderTolerance 及有符号公差格式,重算后返回实际值。
参数或执行失败会中止事务;读取和取消不修改尺寸。
已挂载 `techdraw-fit-task.tsx`:选择当前尺寸、孔基/轴基、原生返回的配合选项,
显示原生计算的上下公差,应用与取消。适用范围遵循所提供的源码表格子集:
正名义尺寸至 500 mm、长度或直径尺寸。超出范围明确报错。
原生回执 `techdraw-fit-implementation-pipeline.json`:1 条入口已实现并构建,
不是用户验证通过。复用 81 个直接链接依赖,仅构建 TechDraw 目标。
| 步骤 | 秒 |
| --- | ---: |
| 模块登记 | 0.101 |
| 能力登记缓存复用 | 0.084 |
| 构建准备 | 0.047 |
| TechDraw 增量构建 | 67.362 |
| 产物同步 | 4.573 |
| 完成状态元数据生成,非业务验收 | 0.906 |
| 原生流水线合计 | 73.073 |
整个 TechDraw 页面中尺寸注记的统一重绘/导出仍属于共享页面渲染缺口,
不能把本次尺寸计算、写回和参数面板的完成扩大为完整图纸导出已完成。
### IFC 假后端
纠正了将声明模块标记为真实 WASM 后端的代码,移除了“读取后返回空 IFC 对象”
和“写出空 DATA 节”的假实现。现有真实包优先加载逻辑不重复添加。
占位模块现在明确报告缺依赖,不能伪造导出成功。
这只是消除伪成功,IFC 业务本身仍缺真实 IfcOpenShell WASM/Python 绑定及代理恢复。
已完成的本地查找范围写入 `provided-source-index.md`,不能把未找到某个绑定
误述为用户没有提供 FreeCAD 源码,也不能用 Qt/Assimp 替换唯一 OCCT 几何出口。
### 登记与空转
已修复检查器遗漏 `nameValue` 导致的四条 IFC 注册误判,复用既有真实调用。
读取预算现在同时约束常用 `sed` 读取;调度器第 7958 轮已实际返回新拦截信息。
达到预算应复用任务包开始编辑,不能把被拦截的搜索写成源码不存在。
整体吞吐改善尚未测定,不宣称模型等待问题已根治。
## 发布耗时教训
本轮一次直接 Vite 构建漏带已有 `FREECAD_WEB_FAST_LINK=ON`,误走全量资源复制,
在磁盘 I/O 等待中耗费 166.033 秒后终止。该时间必须计入浪费,不能计作进展。
后续前端发布使用现有增量资源同步模式,不重复复制未变化 WASM。
工作目录根分区当时使用率 96% 至 97%,public 约 2.5 GB,dist 约 2.4 GB;
不要在同一输出目录并发构建,不删除用户源码或既有内核以腾空间。
已完成增量模式前端发布,退出码 0,总耗时 165.941 秒,其中 public 同步阶段
164.309 秒,包含磁盘 I/O 和等待前次构建退出时的主动暂停。前后两次构建时段
有交叠,不能相加冒充总墙钟时间。回执:`techdraw-fit-frontend-build.json`。
## 后续顺序
1. 优先处理真实业务路径上的伪成功和固定输出,防止覆盖用户文件或丢失对象。
2. 对已有桌面算法的明确占位,按本次孔轴配合方式直接接入并挂载业务参数界面。
3. 对真实依赖缺口,固定到具体包、绑定、链接与资源路径,复用已完成的查找结论。
4. 对正常错误与独立诊断夹具,不做批量删除或批量“成功”替换。
5. 每完成一个共享实现,合并受影响功能构建一次;保持源码结论与回执,避免重做。
并行运行的调度器继续其当前模块。不要以本次独立批次替换它的活动 manifest。
## Scheduler Idle Bound
Recent scheduler timing showed one 180.87-second no-output idle stop and 35.5%
post-read waiting. General turns now default to a 90-second idle drain (still
clamped at 60 seconds); module-business turns retain their existing 45-second
limit. The first-activity/model response budget and active command execution
are unchanged. This source change applies after the running scheduler is
restarted by its watchdog; it does not interrupt the current turn.