mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
Path (i) — cert_to_inputs precompute. cert_to_inputs calls space_heating_fuel_monthly_kwh from local SpaceHeatingResult + Table 11 secondary fraction + per-system efficiencies; stashes the EnergyRequirementsResult on new `CalculatorInputs.energy_requirements` composite slot (default = _ZERO_ENERGY_REQUIREMENTS_RESULT).
_solve_month stops doing q/η inline — reads precomputed (211)m / (215)m fuel tuples directly via `inputs.energy_requirements.{main_1,secondary}_fuel_monthly_kwh[m-1]`. Existing `CalculatorInputs.main_heating_efficiency` / `.secondary_heating_efficiency` / `.secondary_heating_fraction` stay on the dataclass as inputs to the orchestrator (now redundant for the calculator's read path; kept for audit + backwards compat).
SapResult gains flat `main_2_heating_fuel_kwh_per_yr` and `space_cooling_fuel_kwh_per_yr` scalars — both zero in scope A, populated by future two-main + Table 10c SEER slices.
Round-trip test pins `inputs.energy_requirements.main_1_fuel_kwh_per_yr == result.main_heating_fuel_kwh_per_yr` to float equality (no rounding from the cert→inputs hop) and asserts scope-A scalars stay zero. PDF-derived ALL_FIXTURES pinning (Q5(α) grilling decision) blocked on PCDB integration — flagged in PCDB gap-list entry.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
||
|---|---|---|
| .. | ||
| src/domain | ||
| pyproject.toml | ||
| README.md | ||
domna-domain
Shared domain types — Property, Properties, BaselinePerformance, Plan, PlanPhase, Scenario, ScenarioPhase, ScenarioSnapshot, Recommendation, OptimisedPackage, EpcPropertyData, etc.
Boundary: types only. No persistence, no IO, no business logic. Other packages and services depend on domna-domain; this package depends on nothing internal.
Domain definitions live in ../../CONTEXT.md. New types added here must match the glossary terms.
Layout
src/domain/
├── __init__.py
├── property.py # Property, Properties, PropertyIdentity
├── site_notes.py
├── landlord_overrides.py
├── baseline_performance.py # lodged + effective pair (ADR-0004)
├── plan.py # Plan, PlanPhase, OptimisedPackage
├── scenario.py # Scenario, ScenarioPhase, ScenarioSnapshot (ADR-0005)
├── recommendation.py
├── geospatial.py
├── solar.py
├── anomaly_flags.py
└── ml/
├── __init__.py
├── transform.py # EpcMlTransform (versioned per §8.3)
└── schema.py
When datatypes/epc/domain/ folds in, the EPC schema types move under src/domain/epc/.