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.
98 lines
3.2 KiB
Python
98 lines
3.2 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):
|
|
day: int
|
|
corrective_cost: float
|
|
overhaul_cost: float
|
|
procurement_cost: float
|
|
procurement_details: Optional[Dict[str, Any]]
|
|
num_failures: int
|
|
|
|
|
|
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 CalculationTimeConstrainsRead(CalculationTimeConstrainsBase):
|
|
id: UUID
|
|
reference: UUID
|
|
scope: str
|
|
results: List[CalculationResultsRead]
|
|
equipment_results: List[EquipmentResult]
|
|
optimum_oh: Any
|
|
|
|
|
|
class CalculationTimeConstrainsCreate(CalculationTimeConstrainsBase):
|
|
intervalDays: int
|
|
|
|
|
|
class CalculationTimeConstrainsSimulationRead(CalculationTimeConstrainsBase):
|
|
simulation: CalculationResultsRead
|
|
|
|
|
|
class CalculationSelectedEquipmentUpdate(CalculationTimeConstrainsBase):
|
|
is_included: bool
|
|
location_tag: str
|