Model/backend/app/domain/plan.py
2026-02-12 12:45:17 +00:00

37 lines
1.3 KiB
Python

from __future__ import annotations
from datetime import datetime
from typing import Optional
from backend.app.db.models.portfolio import Epc
from backend.app.db.models.recommendations import PlanModel, PlanTypeEnum, ScenarioModel
from backend.app.domain.scenario import Scenario
class Plan:
property_id: int
portfolio_id: int
scenario: Scenario
created_at: datetime
is_default: bool
valuation_increase_lower_bound: Optional[float] = None
valuation_increase_upper_bound: Optional[float] = None
valuation_increase_average: Optional[float] = None
plan_type: Optional[PlanTypeEnum] = None
post_sap_points: Optional[float] = None
post_epc_rating: Optional[Epc] = None
post_co2_emissions: Optional[float] = None
co2_savings: Optional[float] = None
post_energy_bill: Optional[float] = None
post_energy_consumption: Optional[float] = None
energy_consumption_savings: Optional[float] = None
valuation_post_retrofit: Optional[float] = None
valuation_increase: Optional[float] = None
cost_of_works: Optional[float] = None
contingency_cost: Optional[float] = None
@classmethod
def from_sqlalchemy(
cls, plan_model: PlanModel, scenario_model: ScenarioModel
) -> Plan:
raise NotImplementedError