fix(media,canvas): 对象存储参考素材优先 URL,并同步清理图片引用提示词 (#434)

* fix(media): 对象存储参考素材 - 协议支持 URL 时优先发送签名链接

开启对象存储后,支持 URL 的上游协议优先发送 OSS/COS/七牛/S3 签名链接;必须传字节的协议仍走 Base64 或 multipart。本地资源回退字节,签发失败直接报错,不自动重发生成。

* fix(canvas): 图片引用清理 - 取消引用时同步移除提示词引用
This commit is contained in:
Rou
2026-09-07 22:28:19 +08:00
committed by GitHub
parent 469627c792
commit 21b83eca2e
9 changed files with 339 additions and 41 deletions

View File

@@ -93,4 +93,16 @@ describe("canvas node generation position mentions", () => {
expect(context.prompt).toBe("让 @图片1 进入画面");
expect(context.prompt).not.toContain("@[node:");
});
test("取消引用后的提示词不再因为悬挂 @图片1 阻断生成", () => {
const target = targetNode();
const image = node("image-a", CanvasNodeType.Image, "data:image/png;base64,a");
const { applyCanvasConnectionPromptSync } = require("../src/lib/canvas/canvas-resource-references") as typeof import("../src/lib/canvas/canvas-resource-references");
const [nextTarget] = applyCanvasConnectionPromptSync([image, target], [connection(image.id)], [image, target], []).filter((item: typeof target) => item.id === target.id);
const context = buildNodeGenerationContext(nextTarget.id, [image, nextTarget], [], nextTarget.metadata?.composerContent || "", []);
expect(nextTarget.metadata?.composerContent).toBe("让 进入画面");
expect(context.referenceImages).toEqual([]);
expect(context.prompt).toBe("让 进入画面");
});
});