From a4d2e908521c1b0d1eabddd8d167002e352e842c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=88=B1=E7=AC=91=E7=9A=84=E6=AF=9B=E6=AF=9B=E8=99=AB?= <315515767@qq.com> Date: Sun, 2 Aug 2026 14:39:58 +0800 Subject: [PATCH] =?UTF-8?q?fix(canvas):=20=E8=A7=86=E9=A2=91=E9=87=8D?= =?UTF-8?q?=E6=96=B0=E7=94=9F=E6=88=90=20-=20=E7=BB=A7=E6=89=BF=E4=B8=8A?= =?UTF-8?q?=E6=B8=B8=E8=BF=9E=E7=BA=BF=E4=BF=9D=E6=8C=81=E5=B9=B6=E8=A1=8C?= =?UTF-8?q?=E8=8A=82=E7=82=B9=E5=85=B3=E7=B3=BB=E8=80=8C=E9=9D=9E=E5=AD=90?= =?UTF-8?q?=E8=8A=82=E7=82=B9=20(#75)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: sikongyue <3155157671@qq.com> --- web/src/pages/canvas/canvas-generation-executor-types.ts | 1 + .../pages/canvas/canvas-media-generation-executors.ts | 9 ++++++++- web/src/pages/canvas/use-canvas-generation-executor.ts | 1 + 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/web/src/pages/canvas/canvas-generation-executor-types.ts b/web/src/pages/canvas/canvas-generation-executor-types.ts index a70d31b62..4f077a464 100644 --- a/web/src/pages/canvas/canvas-generation-executor-types.ts +++ b/web/src/pages/canvas/canvas-generation-executor-types.ts @@ -22,6 +22,7 @@ export type CanvasGenerationExecution = CanvasGenerationExecutorDependencies & { nodeId: string; sourceNode: CanvasNodeData | undefined; canvasNodes: CanvasNodeData[]; + canvasConnections: CanvasConnection[]; prompt: string; effectivePrompt: string; generationConfig: AiConfig; diff --git a/web/src/pages/canvas/canvas-media-generation-executors.ts b/web/src/pages/canvas/canvas-media-generation-executors.ts index c39bcad36..1ebd73a33 100644 --- a/web/src/pages/canvas/canvas-media-generation-executors.ts +++ b/web/src/pages/canvas/canvas-media-generation-executors.ts @@ -22,6 +22,7 @@ export async function executeVideoGeneration({ generationContext, controller, projectId, + canvasConnections, setNodes, setConnections, startGenerationRequest, @@ -73,7 +74,13 @@ export async function executeVideoGeneration({ { ...videoNode, metadata: { ...videoNode.metadata, versionOfNodeId: rootId, versionLabel: nextLabel, versionPrimary: true } }, ]; }); - if (!isEmptyVideoNode) setConnections((current) => [...current, { id: nanoid(), fromNodeId: nodeId, toNodeId: videoId }]); + // 重新生成已有视频时,新节点继承源视频的上游连接,与源视频保持并行关系,而不是作为其下游子节点。 + if (!isEmptyVideoNode) { + setConnections((current) => { + if (!isExistingVideoNode) return [...current, { id: nanoid(), fromNodeId: nodeId, toNodeId: videoId }]; + return [...current, ...canvasConnections.filter((connection) => connection.toNodeId === nodeId).map((connection) => ({ ...connection, id: nanoid(), toNodeId: videoId }))]; + }); + } startGenerationRequest(videoId, nodeId, nodeId, controller); try { diff --git a/web/src/pages/canvas/use-canvas-generation-executor.ts b/web/src/pages/canvas/use-canvas-generation-executor.ts index 3f2381ad1..733910a63 100644 --- a/web/src/pages/canvas/use-canvas-generation-executor.ts +++ b/web/src/pages/canvas/use-canvas-generation-executor.ts @@ -183,6 +183,7 @@ export function useCanvasGenerationExecutor({ nodeId, sourceNode, canvasNodes: nodesRef.current, + canvasConnections: connectionsRef.current, prompt, effectivePrompt, generationConfig,