Files
2026-07-21 19:22:50 +08:00

76 lines
2.6 KiB
Python

from __future__ import annotations
from dataclasses import dataclass
from app.enums.hot_opening_replicate import (
HotOpeningGenerationModeEnum,
HotOpeningStepIOSchemaVersionEnum,
ModuleCodeEnum as HotModuleCodeEnum,
)
from app.enums.shot_replicate import (
ModuleCodeEnum as ShotModuleCodeEnum,
ShotReplicateGenerationModeEnum,
ShotReplicateStepIOSchemaVersionEnum,
)
from app.enums.module_generation_flow import ModuleGenerationFlowConfig
MATERIAL_INPUT = "material_input"
VIDEO_PROMPT_OPTIMIZE = "video_prompt_optimize"
VIDEO_GENERATE = "video_generate"
@dataclass(frozen=True, slots=True)
class ModuleGenerationV2Config:
module: str
generation_mode: str
io_schema_version: str
display_name: str
project_not_found_message: str
material_video_locked: bool
@property
def flow_config(self) -> ModuleGenerationFlowConfig:
return ModuleGenerationFlowConfig(
module=self.module,
step_index_map={
MATERIAL_INPUT: 1,
VIDEO_PROMPT_OPTIMIZE: 2,
VIDEO_GENERATE: 3,
},
material_step_code=MATERIAL_INPUT,
image_prompt_step_code="__v2_no_image_prompt__",
image_generate_step_code="__v2_no_image_generate__",
video_prompt_step_code=VIDEO_PROMPT_OPTIMIZE,
video_generate_step_code=VIDEO_GENERATE,
project_not_found_message=self.project_not_found_message,
step_not_found_message="V2 子任务不存在",
cancel_chat_task_error_message=f"{self.display_name}步骤被重建或删除,旧生成任务已取消",
material_video_url_editable=not self.material_video_locked,
step_io_schema_version=self.io_schema_version,
expected_flow_version="v2",
)
HOT_OPENING_V2 = ModuleGenerationV2Config(
module=HotModuleCodeEnum.HOT_OPENING_REPLICATE.value,
generation_mode=HotOpeningGenerationModeEnum.HOT_OPENING_REPLICATE.value,
io_schema_version=HotOpeningStepIOSchemaVersionEnum.V2.value,
display_name="爆款开头复刻",
project_not_found_message="爆款开头复刻 V2 项目不存在",
material_video_locked=True,
)
SHOT_REPLICATE_V2 = ModuleGenerationV2Config(
module=ShotModuleCodeEnum.SHOT_REPLICATE.value,
generation_mode=ShotReplicateGenerationModeEnum.SHOT_REPLICATE.value,
io_schema_version=ShotReplicateStepIOSchemaVersionEnum.V2.value,
display_name="拆镜复刻",
project_not_found_message="拆镜复刻 V2 项目不存在",
material_video_locked=True,
)
CONFIG_BY_MODULE = {
HOT_OPENING_V2.module: HOT_OPENING_V2,
SHOT_REPLICATE_V2.module: SHOT_REPLICATE_V2,
}