mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
SAP 10.2 Appendix U explicit rule: "Calculations for fabric energy efficiency (FEE), regulation compliance (TER and DER, TPER and DPER) and for ratings (SAP rating and environmental impact rating) are done with UK average weather. Other calculations (such as for energy use and costs on EPCs) are done using local weather." Our calculator was using the cert's region_code for everything. Spec mandates region 0 (UK average) for rating outputs. Net MAE neutral on the 100-cert sample (most certs sit close to UK average) and on the 300-cert sample but it's spec-correct, and aligns with what the cert assessor's SAP rating actually computes. Found by switching from probe-driven to worksheet-driven iteration — per user suggestion this is the more efficient mode once the easy wins from probe-driven have been extracted. 100-cert: MAE 4.39 (unchanged) 300-cert: MAE 5.44 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/.