You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
131 lines
4.1 KiB
Python
131 lines
4.1 KiB
Python
from dataclasses import dataclass
|
|
from datetime import datetime
|
|
from typing import Any, Dict, List, Optional, Union
|
|
from uuid import UUID
|
|
|
|
from pydantic import Field
|
|
|
|
from src.models import DefultBase
|
|
from src.standard_scope.schema import MasterEquipmentBase
|
|
|
|
|
|
class CalculationTimeConstrainsBase(DefultBase):
|
|
pass
|
|
|
|
|
|
class ReferenceLinkBase(DefultBase):
|
|
reference_id: str = Field(..., description="Reference ID")
|
|
overhaul_reference_type: str = Field(..., description="Overhaul reference type")
|
|
|
|
|
|
class CalculationTimeConstrainsParametersRetrive(CalculationTimeConstrainsBase):
|
|
# type: ignore
|
|
costPerFailure: Union[dict, float] = Field(..., description="Cost per failure")
|
|
availableScopes: List[str] = Field(..., description="Available scopes")
|
|
recommendedScope: str = Field(..., description="Recommended scope")
|
|
# historicalData: Dict[str, Any] = Field(..., description="Historical data")
|
|
|
|
|
|
class CalculationTimeConstrainsParametersRead(CalculationTimeConstrainsBase):
|
|
costPerFailure: Union[dict, float] = Field(..., description="Cost per failure")
|
|
overhaulCost: Optional[float] = Field(None, description="Overhaul cost")
|
|
reference: Optional[List[ReferenceLinkBase]] = Field(None, description="Reference")
|
|
|
|
|
|
class CalculationTimeConstrainsParametersCreate(CalculationTimeConstrainsBase):
|
|
overhaulCost: Optional[float] = Field(0, description="Overhaul cost")
|
|
ohSessionId: Optional[UUID] = Field(None, description="Scope OH")
|
|
costPerFailure: Optional[float] = Field(0, description="Cost per failure")
|
|
|
|
|
|
# class CalculationTimeConstrainsCreate(CalculationTimeConstrainsBase):
|
|
# overhaulCost: float = Field(..., description="Overhaul cost")
|
|
# scopeOH: str = Field(..., description="Scope OH")
|
|
# costPerFailure: float = Field(..., description="Cost per failure")
|
|
# metadata: Dict[str, Any] = Field(..., description="Metadata")
|
|
|
|
|
|
class CalculationResultsRead(CalculationTimeConstrainsBase):
|
|
overhaul_cost: float
|
|
corrective_cost: float
|
|
procurement_cost: float
|
|
num_failures: float
|
|
day: int
|
|
month: int
|
|
total_cost: float
|
|
procurement_details: Dict
|
|
sparepart_summary: dict
|
|
|
|
|
|
class OptimumResult(CalculationTimeConstrainsBase):
|
|
overhaul_cost: float
|
|
corrective_cost: float
|
|
num_failures: int
|
|
days: int
|
|
|
|
|
|
class EquipmentResult(CalculationTimeConstrainsBase):
|
|
id: UUID
|
|
corrective_costs: List[float]
|
|
overhaul_costs: List[float]
|
|
procurement_costs: List[float]
|
|
daily_failures: List[float]
|
|
location_tag: str
|
|
material_cost: float
|
|
service_cost: float
|
|
optimum_day: int # Added optimum result for each equipment
|
|
is_included: bool
|
|
master_equipment: Optional[MasterEquipmentBase] = Field(None)
|
|
|
|
class FleetStatistics(CalculationTimeConstrainsBase):
|
|
total_equipment: int
|
|
included_equipment: int
|
|
excluded_equipment: int
|
|
equipment_with_sparepart_constraints: int
|
|
total_procurement_items: int
|
|
critical_procurement_items: int
|
|
|
|
class OptimalAnalysis(CalculationTimeConstrainsBase):
|
|
optimal_month: int
|
|
planned_month: Optional[int]
|
|
timing_recommendation: str
|
|
optimal_total_cost: float
|
|
optimal_breakdown: Dict
|
|
cost_trend: str
|
|
months_from_planned: Optional[int]
|
|
cost_savings_vs_planned: Optional[float]
|
|
sparepart_impact: Dict
|
|
|
|
class AnalysisMetadata(CalculationTimeConstrainsBase):
|
|
max_interval_months: int
|
|
last_overhaul_date: Optional[str]
|
|
next_planned_overhaul: str
|
|
calculation_type: str
|
|
total_equipment_analyzed: int
|
|
included_in_optimization: int
|
|
|
|
class CalculationTimeConstrainsRead(CalculationTimeConstrainsBase):
|
|
id: UUID
|
|
reference: UUID
|
|
scope: str
|
|
results: List[CalculationResultsRead]
|
|
optimum_oh: int
|
|
optimum_oh_month: int
|
|
equipment_results: List[EquipmentResult]
|
|
fleet_statistics: dict
|
|
optimal_analysis: dict
|
|
analysis_metadata: dict
|
|
|
|
|
|
class CalculationTimeConstrainsCreate(CalculationTimeConstrainsBase):
|
|
intervalDays: int
|
|
|
|
|
|
class CalculationTimeConstrainsSimulationRead(CalculationTimeConstrainsBase):
|
|
simulation: CalculationResultsRead
|
|
|
|
|
|
class CalculationSelectedEquipmentUpdate(CalculationTimeConstrainsBase):
|
|
is_included: bool
|
|
location_tag: str
|