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

6.1 KiB
Raw Blame History

业务占位清理与续接

执行原则:先实现功能,用户使用时验证。不运行自动测试、浏览器验收或验收队列。 不能以增加注册、修改成功状态、移除错误保护代替真实业务。本文不宣称全项目或全部占位已解决。

全范围候选清单

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.