Model/backend/app
Khalim Conn-Kowlessar 559616d3bb feat(epc): EPC persistence round-trip fidelity + JSONB code columns (Slice 1 #1129)
Relocate EpcPropertyModel + child tables from the dying backend/ tree to
infrastructure/postgres/epc_property_table.py (re-export shim keeps
documents_parser working). Add EpcRepository port + EpcPostgresRepository with
a full reverse mapper (epc_property tables -> EpcPropertyData).

Round-trip test surfaced two fidelity gaps:
 1. Union[int,str] SAP code fields were str()-coerced on save, losing the int
    (API) vs str (Site Notes) distinction. Now stored as JSONB (type-preserving).
 2. The schema was a partial projection. Closed the cheap gaps on the model
    (heating shower/bath counts, roof_construction_type, curtain_wall_age,
    addendum, mechanical_vent_duct_insulation_level, SAP 10.2 §2 ventilation
    fields + a ventilation_present flag). Structural gaps tracked as follow-ups;
    renewable_heat_incentive (P0, #1137) excluded from the assertion until landed.

Round-trip passes for RdSAP-Schema-21.0.0 and 21.0.1; pyright strict clean.
Migration inventory for the DB: docs/migrations/epc-property-round-trip-fidelity.md

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-01 16:28:48 +00:00
..
bulk_uploads made landlord overrides sqs 2026-05-29 10:41:46 +00:00
db feat(epc): EPC persistence round-trip fidelity + JSONB code columns (Slice 1 #1129) 2026-06-01 16:28:48 +00:00
domain define new domain object 2026-04-13 16:18:17 +00:00
energy_assessments Working upload of documents to backend 2024-09-04 19:39:31 +01:00
local save 2026-05-07 15:55:44 +00:00
plan fix dependency issue 2026-05-12 17:03:16 +00:00
portfolio Trying to get /backend and /model_data working together 2023-07-18 16:45:11 +01:00
requirements remove pandas 2026-05-13 15:08:06 +00:00
tasks implement trigger_categorisation API 2026-02-24 14:33:29 +00:00
whlg temp clearing endpoint 2025-11-16 16:26:23 +08:00
__init__.py Major project restructure and setup 2023-07-06 11:33:13 +01:00
assumptions.py fixed typing bug 2026-01-10 22:56:30 +00:00
BatterySapScorer.py commiting missing stuff 2025-12-10 17:56:53 +00:00
config.py made landlord overrides sqs 2026-05-29 10:41:46 +00:00
dependencies.py basic end up check 2026-05-10 21:07:16 +00:00
exceptions.py Adding database connection to fastapi 2023-07-31 11:02:22 +01:00
main.py route at th ebeginnign 2026-05-13 14:47:24 +00:00
utils.py cleaning up data dictionary references 2026-03-19 18:47:39 +00:00