fix(video): 火山方舟 - 解耦可信素材并修复音频组合参考 (#302)
This commit is contained in:
@@ -3,7 +3,7 @@ import { describe, expect, test } from "bun:test";
|
||||
import { canvasConnectionError } from "../src/lib/canvas/canvas-connection-policy";
|
||||
import { assertCanvasImageReferenceLimit, buildGenerationConfig, canvasImageReferenceLimitError, resolveCanvasGenerationModel } from "../src/lib/canvas/canvas-project-generation";
|
||||
import { defaultModelCapabilityConfig } from "../src/lib/model-capabilities";
|
||||
import { groupModelsByDisplayName, modelCompatibilityError, modelGroupReferenceLimits, resolveCompatibleModel, resolveModelGenerationDefaults } from "../src/lib/model-selection";
|
||||
import { groupModelsByDisplayName, inferVideoOperation, modelCompatibilityError, modelGroupReferenceLimits, resolveCompatibleModel, resolveModelGenerationDefaults } from "../src/lib/model-selection";
|
||||
import { defaultConfig, normalizeModelOptionValue, type AiConfig, type ModelChannel } from "../src/stores/use-config-store";
|
||||
import { CanvasNodeType, type CanvasConnection, type CanvasNodeData } from "../src/types/canvas";
|
||||
|
||||
@@ -167,6 +167,12 @@ describe("逻辑模型选择", () => {
|
||||
expect(modelCompatibilityError(config, "relay::cinema-image", requirements)).toContain("参考音频");
|
||||
});
|
||||
|
||||
test("音频仅在单独参考时归类为音频生视频", () => {
|
||||
expect(inferVideoOperation({ textCount: 1, imageCount: 0, videoCount: 0, audioCount: 1, characterCount: 0 })).toBe("audio_to_video");
|
||||
expect(inferVideoOperation({ textCount: 1, imageCount: 1, videoCount: 0, audioCount: 1, characterCount: 0 })).toBe("reference_to_video");
|
||||
expect(inferVideoOperation({ textCount: 1, imageCount: 0, videoCount: 1, audioCount: 1, characterCount: 0 })).toBe("reference_to_video");
|
||||
});
|
||||
|
||||
test("逻辑视频模型将 720 与 720p 视为同一分辨率", () => {
|
||||
const model = "cinema-720p";
|
||||
const channel: ModelChannel = {
|
||||
|
||||
@@ -1318,6 +1318,15 @@ test("remote image video and audio references keep Backend parity without Dreami
|
||||
result: { mode: "video", video: { dataUrl: "opaque://video", storageKey: "resource:remote-video-output" } },
|
||||
operation: "reference_to_video",
|
||||
},
|
||||
{
|
||||
mode: "video" as const,
|
||||
references: {
|
||||
referenceImages: [{ id: "remote-image-audio-image-0001", name: "reference.png", type: "image/png", dataUrl: "", storageKey: "resource:remote-image-audio-image-0001" }],
|
||||
referenceAudios: [{ id: "remote-image-audio-audio-0001", name: "reference.mp3", type: "audio/mpeg", url: "", storageKey: "resource:remote-image-audio-audio-0001" }],
|
||||
},
|
||||
result: { mode: "video", video: { dataUrl: "opaque://video", storageKey: "resource:remote-image-audio-output" } },
|
||||
operation: "reference_to_video",
|
||||
},
|
||||
{
|
||||
mode: "audio" as const,
|
||||
references: { referenceAudios: [{ id: "remote-audio-0001", name: "audio.mp3", type: "audio/mpeg", url: "", storageKey: "resource:remote-audio-0001" }] },
|
||||
@@ -1677,7 +1686,7 @@ test("Create audio upload converts, previews, removes, and submits through the s
|
||||
operation?: string;
|
||||
input?: { referenceAudios?: Array<Record<string, unknown>> };
|
||||
};
|
||||
expect(submitted.operation).toBe("reference_to_video");
|
||||
expect(submitted.operation).toBe("audio_to_video");
|
||||
expect(submitted.input?.referenceAudios).toEqual([
|
||||
{
|
||||
id: attachment.id,
|
||||
|
||||
Reference in New Issue
Block a user