from __future__ import annotations from enum import StrEnum class ModuleCodeEnum(StrEnum): """拆镜复刻模块编码。""" SHOT_REPLICATE = "shot_replicate" class ShotReplicateStepCodeEnum(StrEnum): """拆镜复刻复用通用模块步骤编码。""" MATERIAL_INPUT = "material_input" IMAGE_PROMPT_OPTIMIZE = "image_prompt_optimize" IMAGE_GENERATE = "image_generate" VIDEO_PROMPT_OPTIMIZE = "video_prompt_optimize" VIDEO_GENERATE = "video_generate" class ShotReplicateGenerationModeEnum(StrEnum): """复用 ChatGenerationTask 时使用的 generation_mode。""" SHOT_REPLICATE = "shot_replicate" class ShotReplicateStepIOSchemaVersionEnum(StrEnum): """拆镜复刻子任务 input_json/output_json 结构版本。""" V1 = "shot_replicate_step_io_v1" class ShotTaskSetStatusEnum(StrEnum): """拆镜总任务集状态。""" PENDING_ANALYSIS = "pending_analysis" ANALYZING = "analyzing" ANALYSIS_COMPLETED = "analysis_completed" ANALYSIS_FAILED = "analysis_failed" SPLITTING = "splitting" SPLIT_COMPLETED = "split_completed" PARTIAL_FAILED = "partial_failed" FAILED = "failed" DELETED = "deleted" class ShotAnalysisStatusEnum(StrEnum): """原视频/片段视频分析状态。""" PENDING = "pending" PROCESSING = "processing" COMPLETED = "completed" FAILED = "failed" class ShotSplitStatusEnum(StrEnum): """ffmpeg 拆镜状态。""" NONE = "none" PENDING = "pending" PROCESSING = "processing" COMPLETED = "completed" FAILED = "failed" RETRY_WAITING = "retry_waiting" class ShotSegmentSourceModeEnum(StrEnum): """拆镜片段来源。""" AI_SUGGESTION = "ai_suggestion" CUSTOM = "custom" class ShotSegmentAnalysisStatusEnum(StrEnum): """拆镜片段分析状态。""" NOT_REQUIRED = "not_required" PENDING = "pending" PROCESSING = "processing" COMPLETED = "completed" FAILED = "failed" class ShotSegmentReplicateStatusEnum(StrEnum): """拆镜片段进入复刻流程后的状态。""" NOT_STARTED = "not_started" PROJECT_CREATED = "project_created" PROCESSING = "processing" COMPLETED = "completed" FAILED = "failed" class ShotReplicateLogEventEnum(StrEnum): """拆镜复刻模块业务日志事件。""" API_REQUEST_RECEIVED = "SHOT_API_REQUEST_RECEIVED" API_REQUEST_SUBMITTED = "SHOT_API_REQUEST_SUBMITTED" API_REQUEST_REJECTED = "SHOT_API_REQUEST_REJECTED" API_REQUEST_FAILED = "SHOT_API_REQUEST_FAILED" CELERY_DISABLED = "SHOT_CELERY_DISABLED" CELERY_DISPATCH_FAILED = "SHOT_CELERY_DISPATCH_FAILED" CELERY_DISPATCH_MARK_FAILED = "SHOT_CELERY_DISPATCH_MARK_FAILED" TASK_SET_CREATED = "SHOT_TASK_SET_CREATED" TASK_SET_REANALYZE_RECEIVED = "SHOT_TASK_SET_REANALYZE_RECEIVED" TASK_SET_REANALYZE_SUBMITTED = "SHOT_TASK_SET_REANALYZE_SUBMITTED" TASK_SET_REANALYZE_REJECTED = "SHOT_TASK_SET_REANALYZE_REJECTED" TASK_SET_REANALYZE_FAILED = "SHOT_TASK_SET_REANALYZE_FAILED" ANALYSIS_STARTED = "SHOT_ANALYSIS_STARTED" ANALYSIS_SUCCESS = "SHOT_ANALYSIS_SUCCESS" ANALYSIS_FAILED = "SHOT_ANALYSIS_FAILED" ANALYSIS_REMOTE_API_STARTED = "SHOT_ANALYSIS_REMOTE_API_STARTED" ANALYSIS_REMOTE_API_SUCCESS = "SHOT_ANALYSIS_REMOTE_API_SUCCESS" ANALYSIS_REMOTE_API_FAILED = "SHOT_ANALYSIS_REMOTE_API_FAILED" ANALYSIS_RESPONSE_PARSE_FAILED = "SHOT_ANALYSIS_RESPONSE_PARSE_FAILED" ANALYSIS_RESPONSE_EMPTY = "SHOT_ANALYSIS_RESPONSE_EMPTY" SEGMENT_REANALYZE_RECEIVED = "SHOT_SEGMENT_REANALYZE_RECEIVED" SEGMENT_REANALYZE_SUBMITTED = "SHOT_SEGMENT_REANALYZE_SUBMITTED" SEGMENT_REANALYZE_REJECTED = "SHOT_SEGMENT_REANALYZE_REJECTED" SEGMENT_REANALYZE_FAILED = "SHOT_SEGMENT_REANALYZE_FAILED" SEGMENT_ANALYSIS_STARTED = "SHOT_SEGMENT_ANALYSIS_STARTED" SEGMENT_ANALYSIS_SUCCESS = "SHOT_SEGMENT_ANALYSIS_SUCCESS" SEGMENT_ANALYSIS_FAILED = "SHOT_SEGMENT_ANALYSIS_FAILED" SEGMENT_ANALYSIS_REMOTE_API_STARTED = "SHOT_SEGMENT_ANALYSIS_REMOTE_API_STARTED" SEGMENT_ANALYSIS_REMOTE_API_SUCCESS = "SHOT_SEGMENT_ANALYSIS_REMOTE_API_SUCCESS" SEGMENT_ANALYSIS_REMOTE_API_FAILED = "SHOT_SEGMENT_ANALYSIS_REMOTE_API_FAILED" SPLIT_STATUS_CHANGED = "SHOT_SPLIT_STATUS_CHANGED" SPLIT_BY_AI_SUBMITTED = "SHOT_SPLIT_BY_AI_SUBMITTED" SPLIT_CUSTOM_SUBMITTED = "SHOT_SPLIT_CUSTOM_SUBMITTED" SEGMENT_DELETED = "SHOT_SEGMENT_DELETED" class ShotReplicateRemoteActionEnum(StrEnum): """拆镜复刻远程模型动作。""" ANALYZE_ORIGINAL_VIDEO = "analyze_original_video" ANALYZE_CUSTOM_SEGMENT_VIDEO = "analyze_custom_segment_video" VIDEO_PROMPT_OPTIMIZE = "video_prompt_optimize"