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 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") scopeOH: Optional[str] = Field(None, description="Scope OH") assetnum: Optional[str] = Field(None, description="Assetnum") 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 num_failures: int class CalculationTimeConstrainsRead(CalculationTimeConstrainsBase): id: Union[UUID, str] name: str reference: str results: List[CalculationResultsRead] optimumOh: Dict[str, Any] class CalculationTimeConstrainsCreate(CalculationTimeConstrainsBase): intervalDays: int class CalculationTimeConstrainsSimulationRead(CalculationTimeConstrainsBase): simulation: CalculationResultsRead