from datetime import datetime from typing import Any, Dict, List, Optional from uuid import UUID from pydantic import BaseModel, Field from src.models import DefultBase, Pagination class OverhaulBase(BaseModel): pass class OverhaulCriticalParts(OverhaulBase): criticalParts: List[str] = Field(..., description="List of critical parts") class OverhaulSchedules(OverhaulBase): schedules: List[Dict[str, Any]] = Field(..., description="List of schedules") class OverhaulSystemComponents(OverhaulBase): systemComponents: Dict[str, Any] = Field( ..., description="List of system components" ) class OverhaulRead(OverhaulBase): overview: Dict[str, Any] criticalParts: List[str] schedules: List[Dict[str, Any]] systemComponents: Dict[str, Any] class AssetWeight(OverhaulBase): node: dict availability:float contribution: float required_improvement: float num_of_failures: int down_time: float efficiency: float improvement_impact:float birbaum: float class MaintenanceScenario(OverhaulBase): location_tag: str current_eaf: float projected_eaf_improvement: float priority_score: float plant_level_benefit: float = 0.0 capacity_weight : float class OptimizationResult(OverhaulBase): current_plant_eaf: float target_plant_eaf: float possible_plant_eaf:float eaf_gap: float eaf_improvement_text:str warning_message:Optional[str] asset_contributions: List[dict] optimization_success: bool = False simulation_id: Optional[str] = None # { # "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 # } # }