from decimal import Decimal from uuid import UUID, uuid4 from pydantic import BaseModel, Field, field_validator class ForecastScenario(BaseModel): id: UUID = Field(default_factory=uuid4) name: str = "baseline" income_multiplier: Decimal = Field(default=Decimal("1")) expense_multiplier: Decimal = Field(default=Decimal("1")) growth_multiplier: Decimal = Field(default=Decimal("1")) description: str = "" @field_validator("income_multiplier", "expense_multiplier", "growth_multiplier") @classmethod def _non_negative(cls, v: Decimal) -> Decimal: if v < 0: raise ValueError("multiplier must be non-negative") return v