Model/infrastructure
Khalim Conn-Kowlessar 7c626dda8e Persist roof windows via the epc_roof_window child table 🟩
EpcPropertyData.sap_roof_windows (List[SapRoofWindow]) had no table, so 55
corpus certs lost their rooflights on the DB round-trip and were re-scored
without them (§3 (27a) heat transmission + §6 solar gain). Add EpcRoofWindowModel
(mirrors EpcPhotovoltaicArrayModel) with a roof_window_index order column and the
resolved SapRoofWindow fields; wire save (batch insert), delete (both delete
paths), both read paths (get + get_many) and _compose reconstruction; drop the
two _UNPERSISTED_ALLOWLIST entries.

u_value_raw / g_perpendicular / frame_factor are stored resolved, not re-derived:
the Table 24 lookup is keyed on glazing_type AND glazing_gap, and glazing_gap is
not retained on SapRoofWindow, so they can't be reconstructed from the persisted
fields. window_location is JSONB (int on API / str on site-notes). Verified: a
roof-window cert round-trips sap_roof_windows to deep equality.

Companion FE migration: assessment-model#443 (epc_roof_window). Deploy gate.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-23 09:00:59 +00:00
..
abri Make the OpenHousing resource mandatory, dropping the default fallback 2026-07-17 13:13:28 +00:00
chatgpt moved classifier data transformation to an easy one 2026-06-01 14:53:34 +00:00
email Bulk download: readable email, deal-name folders, visible worker logs 2026-07-08 15:02:38 +00:00
epc_client Unsupported EPC schema versions are skipped with a warning, not a crash 2026-07-10 11:17:07 +00:00
hubspot HubSpot clients share one scrubbed-retry call policy 🟪 2026-07-06 16:02:22 +00:00
landlord_overrides Classify the landlord Hot Water and Heating columns into categories 🟩 2026-06-19 14:09:05 +00:00
magic_plan define MagicPlanConfig class to get environment variables 2026-06-05 15:46:32 +00:00
openai updated rdsap option; seperated s3 location in infrastrucutre; added open ai api 2026-06-01 16:33:14 +00:00
pashub_fetcher Move the PasHub fetcher into the DDD layer structure 🟪 2026-07-22 13:35:54 +00:00
postcodes_io docs(adr): record nearby-postcode broadening (0034) + share HTTP retry primitive 2026-06-23 16:54:06 +00:00
postgres Persist roof windows via the epc_roof_window child table 🟩 2026-07-23 09:00:59 +00:00
s3 PR review: best-effort read path, true per-member streaming, race-safe 409, local email 🟩 2026-07-08 11:08:46 +00:00
solar Pace Solar calls per container to stay under the 600 QPM fleet cap 🟩 2026-06-25 16:00:33 +00:00
__init__.py added postcode splitter rewrite to ddd 2026-05-19 16:35:09 +00:00
address2uprn_queue_client.py get rid of comments 2026-05-20 13:21:11 +00:00
http_retry.py Add opt-in full-jitter backoff to de-synchronise concurrent retries 🟩 2026-06-25 10:45:00 +00:00
sqs_client.py get rid of comments 2026-05-20 13:21:11 +00:00