mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
Adds RoofWindowInput + RooflightInput + SolarGainsResult dataclasses and the solar_gains_from_cert orchestrator. Aggregates per-orientation sums from epc.sap_windows (Table 6b/6c/6d lookups internal); roof windows take explicit pitch (RdSAP10 Table 24 default 45°, Z=1.0) and rooflights are horizontal per SAP10.2 §U3.2 p128 (pitch=0°, Z=1.0). Driven by U985-0001-000490 worksheet (83) total solar gains 12-tuple to abs=5e-3 W (audit reconciled the underlying flux + window-gain leaves to ≤5e-5 W; the 5e-3 W budget is the conformance ceiling for §6). Table 6b g⊥ values are corrected vs cert_to_inputs._window_inputs (which ships 0.72 for codes 2&3 — the spec is 0.76 for "Double glazed (air or argon filled)"). The legacy lookup dies in slice 8 when _window_inputs is deleted. 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/.