# 业务占位清理与续接 执行原则:先实现功能,用户使用时验证。不运行自动测试、浏览器验收或验收队列。 不能以增加注册、修改成功状态、移除错误保护代替真实业务。本文不宣称全项目或全部占位已解决。 ## 全范围候选清单 `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.