76 lines
2.6 KiB
Python
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,
|
|
}
|