from datetime import datetime from typing import Any, Dict, List, Optional from uuid import UUID from pydantic import Field, BaseModel from src.job.schema import ActivityMasterRead from src.models import DefultBase, Pagination class ScopeEquipmentJobBase(DefultBase): assetnum: Optional[str] = Field(None, description="Assetnum is required") class ScopeEquipmentJobCreate(ScopeEquipmentJobBase): job_ids: Optional[List[UUID]] = [] class ScopeEquipmentJobUpdate(ScopeEquipmentJobBase): name: Optional[str] = Field(None) cost: Optional[str] = Field(0) class ScopeEquipmentJobRead(ScopeEquipmentJobBase): id: UUID assetnum: str job: ActivityMasterRead 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 # } # }