from dataclasses import dataclass, field from uuid import UUID, uuid4 @dataclass class ForecastScenario: id: UUID = field(default_factory=uuid4) name: str = "baseline" income_multiplier: float = 1.0 expense_multiplier: float = 1.0 growth_multiplier: float = 1.0 description: str = "" def to_dict(self) -> dict: return { "id": str(self.id), "name": self.name, "income_multiplier": self.income_multiplier, "expense_multiplier": self.expense_multiplier, "growth_multiplier": self.growth_multiplier, "description": self.description, } @classmethod def from_dict(cls, data: dict) -> "ForecastScenario": return cls( id=UUID(data["id"]), name=data["name"], income_multiplier=data.get("income_multiplier", 1.0), expense_multiplier=data.get("expense_multiplier", 1.0), growth_multiplier=data.get("growth_multiplier", 1.0), description=data.get("description", ""), )