Files
FreeCADWasmDev/docs/current/desktop-ui-part-entry-repair-20260923/source-access-recovery.md
wangdequan 789e18ca3e
Some checks failed
FreeCAD master CI / Prepare (push) Has been cancelled
CodeQL Advanced / Analyze (actions) (push) Has been cancelled
CodeQL Advanced / Analyze (python) (push) Has been cancelled
Scorecard supply-chain security / Scorecard analysis (push) Has been cancelled
FreeCAD master CI / Pixi (push) Has been cancelled
FreeCAD master CI / Ubuntu (push) Has been cancelled
FreeCAD master CI / Windows (push) Has been cancelled
FreeCAD master CI / Lint (push) Has been cancelled
FreeCAD master CI / WrapUp (push) Has been cancelled
Stale Issues / stale (push) Has been cancelled
CodeQL Advanced (c-cpp) / Analyze (c-cpp) (push) Has been cancelled
Push Crowdin Translations / update-crowdin (push) Has been cancelled
Fetch Crowdin Translations / update-crowdin (push) Has been cancelled
Build Release / upload_src (push) Has been cancelled
Build Release / build (10.13, macos-15-intel, osx-64) (push) Has been cancelled
Build Release / build (11.0, macos-latest, osx-arm64) (push) Has been cancelled
Build Release / build (15.0, macos-latest, osx-arm64) (push) Has been cancelled
Build Release / build (ubuntu-22.04, linux-64) (push) Has been cancelled
Build Release / build (ubuntu-22.04-arm, linux-arm64) (push) Has been cancelled
Build Release / build (windows-latest, win-64) (push) Has been cancelled
Monthly issue metrics / issue metrics (push) Has been cancelled
Continue FreeCAD Web UI parity repairs
2026-09-23 14:03:56 +08:00

4.1 KiB
Raw Blame History

Part 包跨所有者接线:源码读取阻塞补漏

2026-09-23 本轮依据 owner-routing-blocker.md 接续。该记录明确指出两种不同阻塞:

  1. 已有依赖 web/src/partdesign-document-facade.ts、web/src/web-view-task.tsx 被读取器当作不在模块范围拒绝。
  2. 已耗尽 16 个源码窗口/48000 字节后继续请求被拒绝。

第一项是任务包依赖/工具策略缺口;第二项应保存精确接续、进入新有界回合,不能取消预算或循环同一请求。

本轮源码修改

  • tools/read_implementation_source.py:已确认功能包可读取其命名源码直接相对 import/from/dynamic import 引用的前端依赖。仅追踪一跳,.js 按本仓库惯例映射 .ts/.tsx;候选限于 web/src,锚点最大 512 KiB,不递归扫描。原窗口数、总字节、每窗上限、同窗指纹去重和调度器预算标记保留。
  • tools/prepare_implementation_business_batch.py:复用包说明同步直接 import 能力,预算用尽后保存下一文件/行,不重读已完成范围。
  • 原 Part key 的 sourceAnchors 补入以下确切依赖,使下一包既可直接读取又保留跨所有者接续边界。没有修改当前正在执行的 ReverseEngineering 查缺包,也没有另启调度器或手工重建当前 packet。

已定位调用链:下一轮直接按这些落点实现

  1. project-shell.tsx:82 已 import PartDesign facade,:61 已 import WebViewTask。这两个被拒绝的文件都是正式主工作区直接依赖。
  2. project-shell.tsx:205 remoteRequest 发送 freecad-project-native-request;workbench-shell.tsx:617 forward 验证来源并按保留 owner 构造 partdesign.document / part.document payload;不是把对象迁入另一个文档。
  3. partdesign-document-facade.ts:1 是 DesignAction 与请求/结果协议;partdesign.worker.ts:6 分派它,加载 FreeCADWebPartDesignRuntimeProbe。独立 partdesign-save.worker.ts 不是普通文档命令所有者,不必继续读取它。
  4. PartDesignRuntimeProbe.cpp:1345 将 partdesign.document 发往 PartDesignDocumentWorkflow.cpp:661::dispatchPartDesignDocument。sketcherCommand 必须逐层接通动作合同和真实原生消费者,不能只给 action map 添字符串。
  5. module-router.ts:284 对登记为 Assembly modeling 的文档改派 assembly.worker.ts,同名 PartDesign 命令不代表相同 WASM 所有者。沿实际消费者判断所需构建目标,避免以字段名代替支持声明。
  6. 框选:web-view-task.tsx:23 接收 runtimeOwner;part-view-facade.ts 的公开 ViewOwner 当前只有 PartBox/DocumentProbe,协议检查也仅接受这两个。扩展所有者必须追到 native endpoint;不能将 PartDesign 文档标成 DocumentProbe 读取另一份同名文档。

复用与真实剩余

New Sketch 的 Part DocumentProbe 原生路由、已完成链接、创建/关闭控件,以及 Appearance per Face 的 View 入口已由此前记录交付。复用 sketch-delivery.md、owner-routing-blocker.md 和已有日志,不重复构建/实现。

原 Part 包继续 open,实际剩余是其他文档所有者 sketch 分派、跨所有者框选和未追溯的快捷键元数据。本轮解决读取阻塞并提供调用链,不宣称这些业务接线已经完成。

无需编译:本轮仅改 Python 执行工具与接续元数据;脚本由后续调用加载,无需重启后台。未执行测试、语法检查、业务验证、浏览器、截图或构建,无本轮未结束进程。原服务在第 10791 轮继续 ReverseEngineering 源码查缺。

处理模块 对标项 源码落点 路由入口 OCCT 边界 状态 结论
Part 接续工具 跨工作台精确依赖读取 read_implementation_source.py;prepare_implementation_business_batch.py 原单一调度器读取工具 不改模型算法 已补漏(未验证) 保留
Part 跨所有者 UI 草图/框选的真实文档调用链 project-shell → facade/worker → native owner 已保存精确落点 继续复用实际 WASM 消费者 已定位待接 继续