video-flow-b/api/DTO/movie_start_dto.ts
2025-10-21 01:02:59 +08:00

380 lines
8.4 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { AspectRatioValue } from '@/components/ChatInputBox/AspectRatioSelector'
/**
* 图片故事AI分析返回DTO
*/
export interface CharacterRegion {
/** x坐标 */
x: number;
/** y坐标 */
y: number;
/** 区域宽度 */
width: number;
/** 区域高度 */
height: number;
}
/** 角色分析信息 */
export interface CharacterAnalysis {
/** 角色头像URL */
crop_url: string;
/** 角色ID */
id: string;
/** 角色名称 */
role_name: string;
/** 角色区域 */
region: CharacterRegion | null;
/** 角色描述 */
whisk_caption: string;
/** 角色头像URL可选用于存储裁剪后的头像 */
avatarUrl?: string;
}
/** 图片故事AI分析返回结构 */
export interface MovieStartDTO {
/** 是否成功 */
success: boolean;
/** 故事梗概 */
story_logline: string;
/** 分类数据 */
potential_genres: string[];
/** 角色头像及名称 */
characters_analysis: CharacterAnalysis[];
/** 图片URL */
image_url: string;
/** 用户输入文本 */
user_text: string;
/** 错误信息 */
error: string | null;
}
/** 电影故事任务详情 */
export interface MovieStoryTaskDetail {
/** 任务ID */
task_id: string;
/** 状态 */
status: string;
/** 进度 */
progress: number;
/** 当前步骤 */
current_step: string;
/** 步骤消息 */
step_message: string;
/** 已用时间 */
elapsed_time: number;
/** 预计剩余时间 */
estimated_remaining: number | null;
/** 错误信息 */
error_message: string | null;
/** 结果 */
result: MovieStartDTO;
}
/**图片分析出故事的任务相关数据,用于轮询查状态 */
export interface StoryAnalysisTask{
/** 任务ID */
task_id:string;
/** 状态 */
status:string;
/** 消息 */
message:string;
/** 预计时长 */
estimated_duration:number;
}
/**
* 创建电影项目V2请求参数 照片生成电影
*/
export interface CreateMovieProjectV2Request {
/** 任务ID */
project_id:string;
/** 剧本内容 */
script: string;
/** 用户ID */
user_id: string;
/** 客户端用户数据 */
user_data?: {
is_mobile: 1 | 0;
user_agent: string;
};
/** 模式auto | manual */
mode: "auto" | "manual";
/** 分辨率720p | 1080p | 4k */
resolution: "720p" | "1080p" | "4k";
/** 类型 */
genre: string;
/** 角色简介数组 */
character_briefs: {
name:string;
image_url:string;
character_analysis:string;
}[];
/** 语言 */
language: string;
/** 图片URL */
image_url: string;
/** 画面比例(横/竖屏) */
aspect_ratio?: AspectRatioValue;
}
/**
* 创建电影项目V2响应数据
*/
export interface CreateMovieProjectResponse {
/** 原始文本 */
original_text: string;
/** 项目ID */
project_id: string;
/** 视频数据 */
video: Record<string, any>;
/** 扩展数据2 */
ext2: Record<string, any>;
/** 多语言视频 */
multilingual_video: Record<string, any>;
/** 制作手册 */
production_bible: string;
/** 项目名称 */
name: string;
/** 音乐数据 */
music: Record<string, any>;
/** 扩展数据3 */
ext3: Record<string, any>;
/** 语言 */
language: string;
/** 分镜头 */
storyboard: string;
/** 状态 */
status: string;
/** 最终视频 */
final_video: Record<string, any>;
/** 扩展数据4 */
ext4: string;
/** 产品代码 */
pcode: string;
/** 制作手册JSON */
production_bible_json: Record<string, any>;
/** 步骤 */
step: string;
/** 最终简单视频 */
final_simple_video: Record<string, any>;
/** 扩展数据5 */
ext5: string;
/** 产品代码版本 */
pcode_version: string;
/** 分辨率 */
resolution: string;
/** 剧本分镜头 */
script_shots: string;
/** 最后消息 */
last_message: string;
/** 扩展数据 */
ext: Record<string, any>;
/** 角色草稿 */
character_draft: any;
/** 模式 */
mode: string;
/** 提示词 */
prompts: string;
/** 草图 */
sketch: Record<string, any>;
/** 当前任务ID */
current_task_id: string;
/** 创建时间 */
created_at: string;
/** ID */
id: number;
/** 描述 */
description: string;
/** 镜头草图 */
shot_sketch: Record<string, any>;
/** 扩展数据1 */
ext1: Record<string, any>;
/** 当前计划ID */
current_plan_id: string;
/** 用户ID */
user_id: string;
/** 生成的剧本 */
generated_script: string;
/** 角色数据 */
character: Record<string, any>;
/** 更新时间 */
updated_at: string;
}
/**
* 创建电影项目V3请求参数 模板生成电影
*/
export interface CreateMovieProjectV3Request {
/** 故事梗概 */
script: string;
/**分类 */
category: string;
/** 用户ID */
user_id: string;
/** 客户端用户数据 */
user_data?: {
is_mobile: 1 | 0;
user_agent: string;
};
/** 模式auto | manual */
mode: "auto" | "manual";
/** 分辨率720p | 1080p | "4k" */
resolution: "720p" | "1080p" | "4k";
/** 语言 */
language: string;
/**模板id */
template_id: string;
/** 自由输入 */
freeInput?: {
/** 用户提示,提示给用户需要输入什么内容 */
user_tips: string;
/** 约束,可选,用于传给ai让ai去拦截用户不符合约束的输入内容 */
constraints: string;
/** 自由输入文字 */
free_input_text: string;
/** 输入名称 */
input_name: string;
}[];
/** 故事角色 */
storyRole: {
/** 角色名 */
role_name: string;
/** 角色描述ai分析出来用于剧本生成 */
role_description: string;
/** 用户提示,提示给用户需要输入什么内容 */
user_tips: string;
/** 约束,可选,用于传给ai让ai去拦截用户不符合约束的输入内容 */
constraints: string;
/** 照片URL */
photo_url: string;
/** 声音URL */
voice_url: string;
}[];
/** 道具 */
storyItem: {
/** 道具名 */
item_name: string;
/** 道具描述ai分析出来用于剧本生成 */
item_description: string;
/** 用户提示,提示给用户需要输入什么内容 */
user_tips: string;
/** 约束,可选,用于传给ai让ai去拦截用户不符合约束的输入内容 */
constraints: string;
/** 道具照片URL */
photo_url: string;
}[];
/** 画面比例(横/竖屏) */
aspect_ratio?: AspectRatioValue;
}
/**
* Gemini文本转图像请求参数
*/
export interface GeminiTextToImageRequest {
/** 提示词 */
prompt: string;
}
/**
* Gemini文本转图像响应数据
*/
export interface GeminiTextToImageData {
/** 生成的图像URL */
image_url: string;
}
/**
* Gemini文本转图像响应
*/
export interface GeminiTextToImageResponse {
/** 响应码 */
code: number;
/** 响应消息 */
message: string;
/** 响应数据 */
data: GeminiTextToImageData;
/** 是否成功 */
successful: boolean;
}
/**
* 文本转图像请求参数
*/
export interface TextToImageRequest {
/** 图像描述 */
description: string;
}
/**
* 文本转图像响应数据
*/
export interface TextToImageData {
/** 生成的图像URL */
image_url: string;
/** 本地图像路径 */
local_image_path: string;
/** 是否成功 */
success: boolean;
/** 描述 */
description: string;
/** 宽高比 */
aspect_ratio: string;
}
/**
* 文本转图像响应
*/
export interface TextToImageResponse {
/** 响应码 */
code: number;
/** 响应消息 */
message: string;
/** 响应数据 */
data: TextToImageData;
/** 是否成功 */
successful: boolean;
}
/**
* 创建电影V4接口请求数据
*/
export interface CreateMovieProjectV4Request {
/** 剧本内容 */
script: string;
/** 模式 */
mode: "auto" | "manual";
/** 分辨率 */
resolution: "720p" | "1080p" | "4k";
/** 语言 */
language: string;
/** 画面比例(横/竖屏) */
aspect_ratio: AspectRatioValue;
/** 扩展模式 */
expansion_mode: boolean;
/** 视频时长 */
video_duration: string;
/** 是否是图生 */
use_img2video: boolean;
/** pcode编码 */
pcode: string;
/** 角色简介数组 */
character_briefs?: {
character_name:string;
character_description:string;
image_url:string;
}[];
/** 场景简介数组 */
scene_briefs?: {
scene_name:string;
scene_description:string;
image_url:string;
scene_type:string;
}[];
/** 道具简介数组 */
prop_briefs?: {
prop_name:string;
prop_description:string;
image_url:string;
prop_type:string;
}[];
}