feat(canvas): 画布节点 - 恢复批量创作表与转换能力

This commit is contained in:
ddCat
2026-09-15 20:56:19 +08:00
parent f59b59b3e6
commit c57f1b36ae
36 changed files with 3341 additions and 34 deletions

View File

@@ -1,4 +1,5 @@
import type { CanvasColorGrade } from "@/lib/canvas/canvas-color-grade";
import type { MediaConversionNodeState } from "@/lib/media-conversion/contracts";
import type { AssetCategory } from "@/lib/asset-category";
import type { PortraitTextureSettings } from "@/lib/canvas/canvas-portrait-texture";
import type { StyleExecutionPlan } from "@/lib/canvas/style-profile";
@@ -34,6 +35,8 @@ export enum CanvasNodeType {
Compare = "compare",
Chart = "chart",
ColorGrade = "colorgrade",
MediaConversion = "media-conversion",
BatchTable = "batch-table",
}
/** Runtime IDs contributed by plugins share the persisted node type field. */
@@ -54,7 +57,7 @@ export type StoryboardShotDuration = "auto" | "5" | "10" | "15" | "30";
export type StoryboardShotCount = "auto" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10";
export type StoryboardVideoInputMode = "direct" | "keyframe";
export type CanvasGenerationMode = "text" | "image" | "video" | "audio";
export type CanvasGenerationBatchMode = "storyboard_image" | "storyboard_video" | "action_board";
export type CanvasGenerationBatchMode = "storyboard_image" | "storyboard_video" | "action_board" | "batch_image";
export type CanvasGenerationBatchStatus = "queued" | "running" | "partial_failed" | "completed" | "cancelled";
export type CanvasGenerationBatchItemStatus = "waiting" | "submitting" | "queued" | "running" | "succeeded" | "failed" | "cancelled";
export type CanvasImageGenerationType = "generation" | "edit";
@@ -155,10 +158,16 @@ export type CanvasGenerationBatch = {
mode: CanvasGenerationBatchMode;
status: CanvasGenerationBatchStatus;
items: CanvasGenerationBatchItem[];
concurrency?: number;
createdAt: string;
updatedAt: string;
};
export type CanvasBatchOperation = "try_on" | "creative";
export type CanvasBatchRow = { id: string; enabled: boolean; inputNodeIds: string[]; prompt: string; outputNodeId?: string };
export type CanvasBatchReferenceColumn = { id: string; label: string };
export type CanvasBatchTableData = { operation: CanvasBatchOperation; concurrency: number; referenceColumns?: CanvasBatchReferenceColumn[]; rows: CanvasBatchRow[] };
export type CanvasSkillSnapshot = {
id: string;
name: string;
@@ -361,6 +370,7 @@ export type CanvasNodeMetadata = {
chartKind?: "bar" | "line";
/** 调色节点的参数;缺省视为未调色。 */
colorGrade?: CanvasColorGrade;
mediaConversion?: MediaConversionNodeState;
/** 用户手动拉伸过尺寸;图片按真实比例自动适配时避让它。 */
manualSize?: boolean;
storyboard?: StoryboardData;
@@ -369,6 +379,11 @@ export type CanvasNodeMetadata = {
storyboardVideoInputMode?: StoryboardVideoInputMode;
storyboardComposerHeight?: number;
generationBatches?: CanvasGenerationBatch[];
batchTable?: CanvasBatchTableData;
batchSourceNodeId?: string;
batchRowId?: string;
batchOperation?: CanvasBatchOperation;
batchInputNodeIds?: string[];
frame?: {
collapsed: boolean;
expandedWidth: number;
@@ -454,7 +469,7 @@ export type CanvasConnection = {
toHandleId?: string;
fromAnchorRatio?: number;
toAnchorRatio?: number;
relation?: "storyboard-output" | "storyboard-asset-reference";
relation?: "storyboard-output" | "storyboard-asset-reference" | "batch-output";
storyboardRowId?: string;
};