Files
FreeCADWasmDev/docs/current/start-svg-delivery.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

53 lines
3.9 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.
# Start SVG 接线与打包优化
2026-09-09 17:24。Start 的官方 SVG 导入链已经接通,并完成浏览器 Worker 验证。现有 Draft 格式业务回归通过,未重新移植 DXF,也未重编译 OCCT。
## 实际修复
- 复用此前已配置的官方 Draft Python 源树及本机 stdlib,完成 Start 增量链接。补齐真实 Materials -> Part -> Start Python 模块注册;实际调用 `importSVG.insert`,不自建解析器。
- 从现有 Draft runtime 提取 `HeadlessDraftImports.h`,两模块共用已存在的无界面导入兼容代码。这里只提供 Qt 导入边界;不代表 Qt GUI、颜色/字体界面行为已经移植。
- `start.importSvg` 明确路由到 `start.worker.ts`,避免落到源码检查 Worker。浏览器通过真实 WebModuleRouter 加载 WASM,执行导入、相关请求错误返回及同文档恢复。
- Facade 验证真实对象数量、唯一对象名、非空有效形状、有限正长度及首对象身份;加载期间取消的请求不会继续执行 native。
- 测试输入包括不同矩形、圆、折线、多边形、圆弧、缩放/平移组合、混合图形,检查原生长度。错误包括非 XML、截断 XML、缺失文件、错误扩展名以及后续恢复。
## 减少打包浪费
Start 初始链接曾因嵌入资源超出初始内存失败;扩容仅恢复构建,随后继续定位体积。Python 编译时使用的 `libpython3.12.a` 又被完整目录嵌入浏览器,另外存在大量 `.pyc` 和桌面翻译文件。
现只从 Start/Draft 运行时打包中排除 `__pycache__`、`.pyc`、`config-*/libpython*.a`、Draft 桌面 translations,并从相关 LINK_DEPENDS 中过滤这些内容。Python 源码、几何资源和本机原文件保留,没有删除用户资料。现有发布缓存、完整 WASM 校验和原子替换保留。
| 产物 | 优化前字节 | 优化后字节 |
|---|---:|---:|
| Start WASM | 192134390 | 88350260 |
| Draft WASM | 204237822 | 98636488 |
合计减少 209385464 字节,约 209.4 MB。Start 减少 54.0%,Draft 减少 51.7%。不把文件体积变化直接宣称为全项目吞吐提升;其它模块尚未统一采用此打包排除。
## 实测耗时
| 步骤 | 秒 |
|---|---:|
| 本轮一次构建互斥等待 | 16.134 |
| Start 源文件编译,最后记录 | 3.383 |
| Draft 源文件编译,最后记录 | 7.062 |
| Start / Draft 最后链接 | 25.907 / 32.929 |
| Start 验收中的 WASM 加载 | 0.516 |
| 原生初始化 | 0.197 |
| 首次 SVG 导入,含 Python 导入 | 1.065 |
| 随后有效 SVG 导入 | 0.013 至 0.048 |
| 浏览器 Worker 完整组 | 4.123 |
| Start 三项正式验收,含浏览器 Worker | 6.199 |
| Draft 四项正式回归 | 5.549 |
这些是实际步骤,不是整轮开发耗时;本轮约 16:26 开始,包含两次缺依赖定位、打包优化和多轮针对性确认。使用相同编译目标合并相关修改,未执行全库 API 验收。
文件系统不支持 reflink:对 192 MB Start 产物普通复制 2.543 秒,强制 reflink 返回 ENOTSUP。实测在 `wasm-copy-benchmark.json`,未把不支持的技术包装为优化成果;实际采用的是减少无用嵌入内容。
## 证据与续接
- Start 三项:`business-evidence/6c5221018fc4b94b51e5b8c1-20260909T092510459358.json`。当前有效路径以业务账本为准。
- Draft 四项:`business-evidence/bcbed2d1047785af9fd2fd80-20260909T092047436319.json`。
- Facade、路由、发布和几何边界 19 项检查通过;调度效率 73 项测试通过;TypeScript 和前端增量发布构建通过。
- 未认证完整 Start 用户界面、SVG 文本/图片、GUI 显示属性或 OPFS 保存。浏览器证明覆盖实际 Worker 和官方几何链,不能扩大为整个桌面 SVG 功能集已移植。
- 当前快照有效验收 123/1504,无有效结果指纹失效遗留;后台持续运行。后续直接复用共享导入适配和这两模块产物,不重复补同一注册链或重做 SVG/DXF 算法。