6.1 KiB
业务占位清理与续接
执行原则:先实现功能,用户使用时验证。不运行自动测试、浏览器验收或验收队列。 不能以增加注册、修改成功状态、移除错误保护代替真实业务。本文不宣称全项目或全部占位已解决。
全范围候选清单
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。
后续顺序
- 优先处理真实业务路径上的伪成功和固定输出,防止覆盖用户文件或丢失对象。
- 对已有桌面算法的明确占位,按本次孔轴配合方式直接接入并挂载业务参数界面。
- 对真实依赖缺口,固定到具体包、绑定、链接与资源路径,复用已完成的查找结论。
- 对正常错误与独立诊断夹具,不做批量删除或批量“成功”替换。
- 每完成一个共享实现,合并受影响功能构建一次;保持源码结论与回执,避免重做。
并行运行的调度器继续其当前模块。不要以本次独立批次替换它的活动 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.