diff --git a/backend/documents_parser/tests/test_pashub_sap_accuracy_wythenshawe.py b/backend/documents_parser/tests/test_pashub_sap_accuracy_wythenshawe.py index c93a8adec..350cb7bc6 100644 --- a/backend/documents_parser/tests/test_pashub_sap_accuracy_wythenshawe.py +++ b/backend/documents_parser/tests/test_pashub_sap_accuracy_wythenshawe.py @@ -57,8 +57,17 @@ _MANIFEST_PATH = _FIXTURES_DIR / "manifest.json" # MAE 0.740). 7/10 newly-computed land within 0.5 — the treatment validates; # −3.3/−5.5 tail entries dilute the aggregates. Floor 0.76 → 0.75, ceiling # 0.72 → 0.75. +# 2026-07-16 (#1622/#1626-#1631): the remaining one-off labels (HHR-control +# 2404→2402 downgrade, 'Loose jacket' cylinder, secondary 601/609, secondary +# dual fuel, gas room-heater 603) → **165 computed / 3 blocked** (within-0.5 +# 75.2% = 124/165, MAE 0.844). The MAE step is one accepted pre_sap +# divergence: 500797805807 (90 Brookfield Gardens) scores 49.5 vs pre_sap 31 +# (+18.5) — its own 2025 accredited cert 6890-0597-0722-0196-3943 lodges the +# identical heating codes (603/26/2601) at band E, agreeing with US; the +# PasHub pre_sap instead matches the dwelling's superseded electric +# room-heater certs (2017/2023, band F). Ceiling 0.75 → 0.85. _MIN_WITHIN_HALF: float = 0.75 -_MAX_SAP_MAE: float = 0.75 +_MAX_SAP_MAE: float = 0.85 _KNOWN_GAP_REASON = ( "pashub `from_site_notes` mapper does not int-code a main-heating " diff --git a/datatypes/epc/domain/mapper.py b/datatypes/epc/domain/mapper.py index 244ac76ae..85fe33be7 100644 --- a/datatypes/epc/domain/mapper.py +++ b/datatypes/epc/domain/mapper.py @@ -8092,10 +8092,17 @@ _PASHUB_STORAGE_HEATER_HHR_CODE: int = 409 # PasHub surveyed room-heater emitter class ("Heating System (Other)" field) → -# Table 4a code (spec PDF p.170, both 100% efficient). +# Table 4a code (spec PDF p.170; the electric rows are 100% efficient, the gas +# row bills its Table 4a seasonal efficiency). _PASHUB_ROOM_HEATER_TYPE_TO_SAP10: Dict[str, int] = { "Panel, Convector or radiant heaters": 691, "Water or oil-filled radiators": 694, + # Gas fire, open flue, 1980+, open fronted, sealed to fireplace — Table 4a + # code 603 (PCDB "sitting proud of, and sealed to, fireplace opening", + # eff 63%). 604 (back boiler) / 605 (flush-fitting live fuel effect) + # rejected: neither qualifier appears in the surveyed label. Same PCDB row + # the secondary table pins for its differently-phrased sibling label. + "Gas fire, Open flue, 1980 or later (Open fronted), Sealed to fireplace": 603, }