mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-07-12 13:29:04 +00:00
Carry donor's display heating + control into predicted EPC 🟩
_apply_heating_donor now also deepcopies the donor's main_heating and main_heating_controls EnergyElements alongside its calc sap_heating cluster, so the building-passport heating rows are coherent with the donated system and a control row the size-template lacked (but the donor lodges) is populated. Fixes 'Heating Control: Unknown' on predicted properties (e.g. 721167). Display-only: component-accuracy gate + corpus harness unchanged (26/6 green). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
5cf5b67420
commit
44726469d4
1 changed files with 13 additions and 1 deletions
|
|
@ -93,7 +93,15 @@ class EpcPrediction:
|
||||||
electricity tariff (`sap_energy_source.meter_type`) and hot-water flags
|
electricity tariff (`sap_energy_source.meter_type`) and hot-water flags
|
||||||
live on loose top-level fields. Carry the donor's whole set, not a subset
|
live on loose top-level fields. Carry the donor's whole set, not a subset
|
||||||
— otherwise a donated storage system lands on the template's single-rate
|
— otherwise a donated storage system lands on the template's single-rate
|
||||||
meter and the SAP score collapses (off-peak heat billed at the peak rate)."""
|
meter and the SAP score collapses (off-peak heat billed at the peak rate).
|
||||||
|
|
||||||
|
The system also has a DISPLAY face — the building-passport "Main Heating"
|
||||||
|
and "Heating Control" rows (`main_heating` / `main_heating_controls`
|
||||||
|
EnergyElements). These describe the same system as the calc cluster, so
|
||||||
|
they travel with the donor too; left on the structural template they are
|
||||||
|
incoherent with the donated calc heating, and `main_heating_controls`
|
||||||
|
shows "Unknown" whenever the size-template lodged no control row but the
|
||||||
|
donor does (predicted property 721167, ADR-0029 follow-up)."""
|
||||||
donor = _heating_donor(comparables.members)
|
donor = _heating_donor(comparables.members)
|
||||||
if donor is None:
|
if donor is None:
|
||||||
return
|
return
|
||||||
|
|
@ -101,6 +109,10 @@ class EpcPrediction:
|
||||||
predicted.has_hot_water_cylinder = donor.epc.has_hot_water_cylinder
|
predicted.has_hot_water_cylinder = donor.epc.has_hot_water_cylinder
|
||||||
predicted.solar_water_heating = donor.epc.solar_water_heating
|
predicted.solar_water_heating = donor.epc.solar_water_heating
|
||||||
predicted.sap_energy_source.meter_type = donor.epc.sap_energy_source.meter_type
|
predicted.sap_energy_source.meter_type = donor.epc.sap_energy_source.meter_type
|
||||||
|
predicted.main_heating = copy.deepcopy(donor.epc.main_heating)
|
||||||
|
predicted.main_heating_controls = copy.deepcopy(
|
||||||
|
donor.epc.main_heating_controls
|
||||||
|
)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _apply_glazing_mode(
|
def _apply_glazing_mode(
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue