from pydantic import BaseModel, Field
from typing import List, Optional
from enum import Enum


class RepairType(str, Enum):
    """Типы ремонтных работ"""
    KR = "КР"  # Капитальный ремонт
    KP = "КП"  # Капитальный ремонт
    TR = "ТР"  # Текущий ремонт


class SvodkaRepairCARequest(BaseModel):
    """Запрос на получение данных сводки ремонта СА"""
    
    og_ids: Optional[List[str]] = Field(
        default=None,
        description="Список ID ОГ для фильтрации. Если не указан, возвращаются данные по всем ОГ",
        example=["SNPZ", "KNPZ", "BASH"]
    )
    
    repair_types: Optional[List[RepairType]] = Field(
        default=None,
        description="Список типов ремонта для фильтрации. Если не указан, возвращаются все типы",
        example=[RepairType.KR, RepairType.KP]
    )
    
    include_planned: bool = Field(
        default=True,
        description="Включать ли плановые данные"
    )
    
    include_factual: bool = Field(
        default=True,
        description="Включать ли фактические данные"
    )

    class Config:
        json_schema_extra = {
            "example": {
                "og_ids": ["SNPZ", "KNPZ"],
                "repair_types": ["КР", "КП"],
                "include_planned": True,
                "include_factual": True
            }
        }