From d83da7d048fd560ee8fd0ed311a7f588b98f459a Mon Sep 17 00:00:00 2001 From: Khalim Conn-Kowlessar Date: Mon, 30 Mar 2026 22:35:18 +0100 Subject: [PATCH 1/3] simulating hhrsh with Good efficiency as per sap10 --- recommendations/HeatingRecommender.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recommendations/HeatingRecommender.py b/recommendations/HeatingRecommender.py index 74881730..5a7a0e03 100644 --- a/recommendations/HeatingRecommender.py +++ b/recommendations/HeatingRecommender.py @@ -1062,8 +1062,8 @@ class HeatingRecommender: **hot_water_simulation_config } # This upgrade will only take the heating system to average energy efficiency - if self.property.epc_record.mainheat_energy_eff in ["Very Poor", "Poor"] and not self.dual_heating: - heating_simulation_config["mainheat_energy_eff_ending"] = "Average" + if self.property.epc_record.mainheat_energy_eff in ["Very Poor", "Poor", "Average"] and not self.dual_heating: + heating_simulation_config["mainheat_energy_eff_ending"] = "Good" else: heating_simulation_config["mainheat_energy_eff_ending"] = self.property.epc_record.mainheat_energy_eff From f64344c3c38e0df5a0d10024d6e508a172dfa533 Mon Sep 17 00:00:00 2001 From: Khalim Conn-Kowlessar Date: Mon, 30 Mar 2026 22:59:47 +0100 Subject: [PATCH 2/3] passing address metadata to EpcRecord --- backend/engine/engine.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/backend/engine/engine.py b/backend/engine/engine.py index 76b6751d..b1b57529 100644 --- a/backend/engine/engine.py +++ b/backend/engine/engine.py @@ -32,7 +32,6 @@ from backend.ml_models.api import ModelApi from backend.ml_models.Valuation import PropertyValuation from backend.Property import Property from backend.apis.GoogleSolarApi import GoogleSolarApi -from backend.addresses.Addresses import Addresses from recommendations.optimiser.CostOptimiser import CostOptimiser from recommendations.optimiser.GainOptimiser import GainOptimiser @@ -642,7 +641,9 @@ async def model_engine(body: PlanTriggerRequest): epc_records = patch_epc(patch, epc_records) - prepared_epc = EPCRecord(epc_records=epc_records, run_mode="newdata", cleaning_data=cleaning_data) + prepared_epc = EPCRecord( + epc_records=epc_records, run_mode="newdata", cleaning_data=cleaning_data, address_metadata=addr + ) input_properties.append( Property( From f8ed406e897aa59ef0080b37a7b93b9246f511a8 Mon Sep 17 00:00:00 2001 From: Khalim Conn-Kowlessar Date: Mon, 30 Mar 2026 23:03:20 +0100 Subject: [PATCH 3/3] if null, remove from landlord remapping --- etl/epc/Record.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/etl/epc/Record.py b/etl/epc/Record.py index 0842a07c..defe13f4 100644 --- a/etl/epc/Record.py +++ b/etl/epc/Record.py @@ -566,6 +566,7 @@ class EPCRecord: "multi_glaze_proportion": addr.landlord_multi_glaze_proportion, "construction_age_band": addr.landlord_construction_age_band, } + landlord_remapping = {k: v for k, v in landlord_remapping.items() if v is not None} # Sanity check - ensure valid keys if any(k not in self._prepared_epc for k in landlord_remapping): @@ -573,6 +574,7 @@ class EPCRecord: self.landlord_differences = {} # Anything actaully changed for k, v in landlord_remapping.items(): + if k == "total_floor_area": existing = self._prepared_epc.get(k) if existing is not None and v is not None and abs(existing - v) > 1: # 1m tolerance