/**
 * 图片故事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;
  /** 模式：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;
}

/**
 * 创建电影项目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;
  /** 模式：auto | manual */
  mode: "auto" | "manual";
  /** 分辨率：720p | 1080p | "4k" */
  resolution: "720p" | "1080p" | "4k";
  /** 语言 */
  language: string;
  /**模板id */
  template_id: 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;
  }[];
}

/**
 * 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;
}
