From 1502ccfc1d93ac0c63748c80cc50218c6f032892 Mon Sep 17 00:00:00 2001 From: dlh <2773843782@qq.com> Date: Wed, 19 Aug 2026 20:52:11 +0800 Subject: [PATCH] =?UTF-8?q?fix(canvas):=20=E8=8A=82=E7=82=B9=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B=E9=85=8D=E7=BD=AE=20-=20=E6=B8=85=E7=90=86=E9=9F=B3?= =?UTF-8?q?=E9=A2=91=E5=8F=82=E6=95=B0=E5=B9=B6=E7=BA=B3=E5=85=A5=E5=9B=9E?= =?UTF-8?q?=E5=BD=92=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复 PR #265 遗漏的音频节点参数残留,并将新增回归测试加入 web test 脚本。 Co-authored-by: dlh <2773843782@qq.com> --- web/package.json | 2 +- web/src/lib/canvas/canvas-project-domain.ts | 4 ++++ web/test/canvas-node-config-reset.test.ts | 15 +++++++++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/web/package.json b/web/package.json index f52a146bf..e5d4d1e6f 100644 --- a/web/package.json +++ b/web/package.json @@ -7,7 +7,7 @@ "dev": "vite --host 0.0.0.0 --port 3000", "build": "tsc --noEmit && vite build", "typecheck": "tsc --noEmit", - "test": "bun test test/channel-model-catalog.test.ts test/agent-prompt-cache.test.ts test/canvas-batch-connection.test.ts test/canvas-character-reference.test.ts test/canvas-document.test.ts test/canvas-drawing-engine.test.ts test/canvas-emotion-edit-plan.test.ts test/canvas-generation-layout.test.ts test/canvas-image-batch-retry.test.ts test/canvas-leafer-viewport.test.ts test/canvas-local-runtime.test.ts test/canvas-model-policy.test.ts test/canvas-resource-references.test.ts test/canvas-storyboard-references.test.ts test/canvas-video-regeneration.test.ts test/canvas-video-timeline-segments.test.ts test/create-canvas-handoff.test.ts test/create-library-button.test.ts test/creation-references.test.ts test/generation-asset-repository.node.test.ts test/generation-storage-consistency.test.ts test/generation-task-durability.node.test.ts test/generation-task-local.test.ts test/generation-task-materializer.test.ts test/user-scoped-generation-persistence.test.ts test/local-channel-permission.test.ts test/local-channel-runtime-projection.node.test.mjs test/local-channel-task-center.node.test.mjs test/local-channel-ui.node.test.mjs test/local-cli-settings.test.ts test/local-dreamina-cli.test.ts test/local-dreamina-generation.test.ts test/local-dreamina-model-catalog.test.ts test/local-runtime-bootstrap.test.ts test/local-runtime-connection.test.ts test/local-runtime.test.ts test/client-id.test.ts test/grok-image-prompt-limit.test.ts test/image-resolution-tiers.test.ts test/gemini-image.test.ts test/libtv-import.test.ts test/timeline-to-ffmpeg.test.ts test/canvas-video-segment-args.test.ts test/tapnow-import.test.ts && bun test test/local-dreamina-cross-runtime.test.ts", + "test": "bun test test/channel-model-catalog.test.ts test/agent-prompt-cache.test.ts test/canvas-batch-connection.test.ts test/canvas-character-reference.test.ts test/canvas-document.test.ts test/canvas-drawing-engine.test.ts test/canvas-emotion-edit-plan.test.ts test/canvas-generation-layout.test.ts test/canvas-image-batch-retry.test.ts test/canvas-leafer-viewport.test.ts test/canvas-local-runtime.test.ts test/canvas-model-policy.test.ts test/canvas-resource-references.test.ts test/canvas-storyboard-references.test.ts test/canvas-node-config-reset.test.ts test/canvas-video-regeneration.test.ts test/canvas-video-timeline-segments.test.ts test/create-canvas-handoff.test.ts test/create-library-button.test.ts test/creation-references.test.ts test/generation-asset-repository.node.test.ts test/generation-storage-consistency.test.ts test/generation-task-durability.node.test.ts test/generation-task-local.test.ts test/generation-task-materializer.test.ts test/user-scoped-generation-persistence.test.ts test/local-channel-permission.test.ts test/local-channel-runtime-projection.node.test.mjs test/local-channel-task-center.node.test.mjs test/local-channel-ui.node.test.mjs test/local-cli-settings.test.ts test/local-dreamina-cli.test.ts test/local-dreamina-generation.test.ts test/local-dreamina-model-catalog.test.ts test/local-runtime-bootstrap.test.ts test/local-runtime-connection.test.ts test/local-runtime.test.ts test/client-id.test.ts test/grok-image-prompt-limit.test.ts test/image-resolution-tiers.test.ts test/gemini-image.test.ts test/libtv-import.test.ts test/timeline-to-ffmpeg.test.ts test/canvas-video-segment-args.test.ts test/tapnow-import.test.ts && bun test test/local-dreamina-cross-runtime.test.ts", "start": "vite preview --host 0.0.0.0 --port 3000", "format": "prettier --write .", "format:check": "prettier --check ." diff --git a/web/src/lib/canvas/canvas-project-domain.ts b/web/src/lib/canvas/canvas-project-domain.ts index f498d6edb..c98d2405c 100644 --- a/web/src/lib/canvas/canvas-project-domain.ts +++ b/web/src/lib/canvas/canvas-project-domain.ts @@ -137,6 +137,10 @@ const NODE_MODEL_GENERATION_PARAMS: ReadonlyArray = [ "vquality", "generateAudio", "watermark", + "audioVoice", + "audioFormat", + "audioSpeed", + "audioInstructions", ]; export function applyNodeConfigPatch(node: CanvasNodeData, patch: Partial) { diff --git a/web/test/canvas-node-config-reset.test.ts b/web/test/canvas-node-config-reset.test.ts index b79fc4bf6..f91c0941d 100644 --- a/web/test/canvas-node-config-reset.test.ts +++ b/web/test/canvas-node-config-reset.test.ts @@ -46,6 +46,21 @@ describe("applyNodeConfigPatch 模型切换清理生成参数", () => { expect(next.metadata?.watermark).toBeUndefined(); }); + test("音频参数随模型切换一并清理", () => { + const node = imageNode({ + model: "default::tts-1", + audioVoice: "alloy", + audioFormat: "mp3", + audioSpeed: "1.25", + audioInstructions: "温暖、自然", + }); + const next = applyNodeConfigPatch(node, { model: "default::gpt-4o-mini-tts" }); + expect(next.metadata?.audioVoice).toBeUndefined(); + expect(next.metadata?.audioFormat).toBeUndefined(); + expect(next.metadata?.audioSpeed).toBeUndefined(); + expect(next.metadata?.audioInstructions).toBeUndefined(); + }); + test("同一模型标识的参数调整不受影响", () => { const node = imageNode({ model: "default::gpt-image-2", size: "1:1", quality: "high" }); const next = applyNodeConfigPatch(node, { model: "default::gpt-image-2", quality: "medium" });