feat(canvas): AI 拆图 - 完善规划、图层编辑与素材复用

This commit is contained in:
Codex committed 2026-10-09 18:02:18 +08:00
1 parent 85c2aa178b
commit e9227e7941
56 files changed
+3541 -162

No files matched your search

+9 -1
View File
@@ -90,6 +90,14 @@ export function canvasNodeToAsset(node: CanvasNodeData, options: CanvasNodeAsset
return null;
}
export function requiresMaterializedCanvasAsset(node: CanvasNodeData, taskId?: string) {
const metadata = node.metadata;
if (!(taskId || metadata?.taskId) || !metadata?.storageKey?.startsWith("resource:")) return false;
if (metadata.imageLayerGroup) return false;
const sourceKey = metadata.layerExtraction?.sourceResultStorageKey;
return !sourceKey || sourceKey === metadata.storageKey;
}
export function findCanvasNodeAsset(assets: Asset[], node: CanvasNodeData, canvasId: string, taskId?: string) {
const explicitId = node.metadata?.assetId;
if (explicitId) {
@@ -98,7 +106,7 @@ export function findCanvasNodeAsset(assets: Asset[], node: CanvasNodeData, canva
}
const generationTaskId = taskId || node.metadata?.taskId;
return assets.find((asset) => {
if (generationTaskId && asset.metadata?.taskId === generationTaskId && asset.metadata?.nodeId === node.id) return true;
if (generationTaskId && asset.metadata?.taskId === generationTaskId && asset.metadata?.nodeId === node.id) return !(node.metadata?.imageLayerGroup || node.metadata?.layerExtraction) || sameAssetResource(asset, node);
if (asset.metadata?.nodeId !== node.id) return false;
const sourceCanvasId = asset.metadata?.canvasId;
if (sourceCanvasId !== canvasId && (sourceCanvasId || asset.metadata?.source !== "canvas-generation")) return false;