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.
be-optimumoh/src/calculation_time_constrains/schema.py

123 lines
4.1 KiB
Python

from src.overhaul_scope.schema import ScopeRead
from datetime import datetime
from typing import 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):
costPerFailure: Union[dict, float] = Field(..., description='Cost per failure')
availableScopes: List[str] = Field(..., description='Available scopes')
recommendedScope: str = Field(..., description='Recommended scope')
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 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
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 CalculationTimeConstrainsReadNoResult(CalculationTimeConstrainsBase):
id: UUID
created_at: datetime
optimum_oh_day: Optional[int]
max_interval: Optional[int]
optimum_analysis: Optional[dict]
session: ScopeRead
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
name: str
class CreateCalculationQuery(DefultBase):
scope_calculation_id: Optional[str] = Field(None)
with_results: Optional[int] = Field(0)
simulation_id: Optional[UUID] = Field(None)