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> |
||
|---|---|---|
| .. | ||
| domain | ||
| fetchers | ||
| repos | ||
| utils | ||
| README.md | ||
Shared packages
Workspace packages consumed by services/*. Each package is its own Python distribution with its own pyproject.toml; services import via the workspace dependency mechanism ({ workspace = true }).
| Package | Purpose |
|---|---|
domain/ |
Shared domain types — Property, BaselinePerformance, Plan, Scenario, EpcPropertyData, etc. No persistence, no IO, no business logic. |
repos/ |
Persistence layer — one repo per aggregate. Owns the SQL. Depends on domain. |
fetchers/ |
External API clients (gov EPC, Ofgem, Google Solar, etc.). Depend on domain for response shapes. |
utils/ |
Cross-cutting infra — logging, S3, CloudWatch URL builders, SQS task helpers. |
Adding a new shared package
Only when a real second consumer materialises. Don't pre-shatter (repos-epc, repos-property, ...) — split when a deployment needs to drop a dep, not before.
See ../ara_backend_design.md §11 for the broader monorepo layout and ../CONTEXT.md for the domain glossary that names the types living in domain/.