from datetime import datetime from typing import Any, Dict, List, Optional from uuid import UUID from pydantic import BaseModel, Field from src.workscope_group.schema import ActivityMasterRead from src.models import DefultBase, Pagination from src.overhaul_scope.schema import ScopeRead class ScopeEquipmentJobBase(DefultBase): pass class ScopeEquipmentJobCreate(ScopeEquipmentJobBase): job_ids: Optional[List[UUID]] = [] class ScopeEquipmentJobUpdate(ScopeEquipmentJobBase): name: Optional[str] = Field(None) cost: Optional[str] = Field(0) class OverhaulActivity(DefultBase): id: UUID overhaul_scope: ScopeRead class OverhaulJob(DefultBase): id: UUID overhaul_activity: OverhaulActivity class ScopeEquipmentJobRead(ScopeEquipmentJobBase): id: UUID workscope_group: Optional[ActivityMasterRead] location_tag: str class ScopeEquipmentJobPagination(Pagination): items: List[ScopeEquipmentJobRead] = [] # { # "overview": { # "totalEquipment": 30, # "nextSchedule": { # "date": "2025-01-12", # "Overhaul": "B", # "equipmentCount": 30 # } # }, # "criticalParts": [ # "Boiler feed pump", # "Boiler reheater system", # "Drum Level (Right) Root Valve A", # "BCP A Discharge Valve", # "BFPT A EXH Press HI Root VLV" # ], # "schedules": [ # { # "date": "2025-01-12", # "Overhaul": "B", # "status": "upcoming" # } # // ... other scheduled overhauls # ], # "systemComponents": { # "boiler": { # "status": "operational", # "lastOverhaul": "2024-06-15" # }, # "turbine": { # "hpt": { "status": "operational" }, # "ipt": { "status": "operational" }, # "lpt": { "status": "operational" } # } # // ... other major components # } # }