from datetime import datetime from typing import Any, Dict, List, Optional from uuid import UUID from pydantic import Field from src.models import DefultBase, Pagination from src.scope_equipment.schema import MasterEquipmentRead from src.job.schema import ActivityMasterRead class OverhaulActivityBase(DefultBase): pass class OverhaulActivityCreate(OverhaulActivityBase): assetnums: List[str] scope_name: str class OverhaulActivityUpdate(OverhaulActivityBase): material_cost: Optional[float] = Field(0) service_cost: Optional[float] = Field(0) class OverhaulScope(DefultBase): type: str start_date: datetime end_date: datetime duration_oh: int class ScopeEquipmentJob(DefultBase): job: ActivityMasterRead class OverhaulJob(DefultBase): scope_equipment_job: ScopeEquipmentJob class OverhaulActivityRead(OverhaulActivityBase): id: UUID material_cost: Optional[float] = Field(0) service_cost: Optional[float] = Field(0) assetnum: str = Field(..., description="Assetnum is required") status: str equipment: MasterEquipmentRead overhaul_scope: OverhaulScope overhaul_jobs: Optional[List[OverhaulJob]] = Field([]) class OverhaulActivityPagination(Pagination): items: List[OverhaulActivityRead] = []