irt-service/app/models/target.py

23 lines
527 B
Python

from pydantic import BaseModel
from typing import Optional
class Target(BaseModel):
theta: float
value: float
result: Optional[float]
drift: float = 0.0
@classmethod
def max_drift(cls) -> int:
return 15 # 15% elasticity, let it drift...
@classmethod
def max_drift_increment(cls) -> int:
return 1 # 10%
def minimum(self) -> float:
return self.value - (self.value * self.drift)
def maximum(self) -> float:
return self.value + (self.value * self.drift)