from __future__ import annotations

from dataclasses import dataclass
from typing import Mapping


@dataclass(frozen=True, slots=True)
class ModuleGenerationFlowConfig:
    """模块生成流程公共配置。

    这个配置只描述两个复刻模块的差异点，不承载具体业务逻辑。
    具体日志、退款、生成、回调等仍保留在各自模块 service 中。
    """

    module: str
    step_index_map: Mapping[str, int]
    material_step_code: str
    image_prompt_step_code: str
    image_generate_step_code: str
    video_prompt_step_code: str
    video_generate_step_code: str
    project_not_found_message: str
    step_not_found_message: str
    cancel_chat_task_error_message: str
    material_video_url_editable: bool = True
    step_io_schema_version: str = "module_generation_step_io_v1"
