用户确认 M-体验01 视觉验收通过后,进一步要求后续 AI 自动生成的新 Frame 不能与已有 Frame 重叠,必须避开已有 Frame,在右侧空白处生成。
src/lib/mindrawAppWriteMutation.ts 的 createAiResultFrame 布局策略:从 source Frame 右侧开始放置 result Frame,但会扫描当前 scene 中非 source 的元素 / Frame;若候选位置与已有对象相交,则继续向右移动到下一个空位。CODEGRAPH.md 和 02-P/plan-progress.markdown,把 result Frame 避让规则记录为项目事实。/Users/ar/Projects/ExcalidrawX/src-tauri/target/debug/bundle/macos/Mindraw.app。commit_write_result(createAiResultFrame) 的外部调用都会复用这条规则。/Users/ar/Projects/ExcalidrawX/src/lib/mindrawAppWriteMutation.ts/Users/ar/Projects/ExcalidrawX/src/lib/mindrawAppWriteMutation.test.ts/Users/ar/Projects/ExcalidrawX/CODEGRAPH.md/Users/ar/Projects/ExcalidrawX/02-P/plan-progress.markdownnpm run test:run -- src/lib/mindrawAppWriteMutation.test.ts:1 file / 7 tests PASS。npm run test:run -- src/lib/mindrawAppWriteApi.smoke.test.ts:1 file / 6 tests PASS。npm run test:run -- src/lib/mindrawAppWriteApi.smoke.test.ts src/lib/mindrawAppWriteMutation.test.ts src/lib/mindrawAppWriteLease.test.ts src/lib/mindrawAppReadApi.test.ts src/store/useStore.test.ts src/lib/excalidrawFile.test.ts:6 files / 71 tests PASS。npm run build:PASS。npm run tauri -- build --debug --bundles app:PASS,重新生成 debug App。git diff --check 对相关文件通过。03-O git status --short 无输出。32350 运行;若用户立刻继续做真实外部写入,需要先关闭并重新打开 debug App。