mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-30 13:10:47 +00:00
changing the logic we use to recommend a combi boiler
This commit is contained in:
parent
43af0de047
commit
db6fd58af4
2 changed files with 36 additions and 13 deletions
|
|
@ -55,7 +55,13 @@ class Property:
|
||||||
|
|
||||||
DATA_ANOMALY_MATCHES = DATA_ANOMALY_MATCHES
|
DATA_ANOMALY_MATCHES = DATA_ANOMALY_MATCHES
|
||||||
|
|
||||||
def __init__(self, id, postcode, address, epc_record):
|
# Surplus information, that can be provided as optional inputs, by a customer
|
||||||
|
n_bathrooms = None
|
||||||
|
n_bedrooms = None
|
||||||
|
|
||||||
|
def __init__(
|
||||||
|
self, id, postcode, address, epc_record, **kwargs
|
||||||
|
):
|
||||||
|
|
||||||
self.epc_record = epc_record
|
self.epc_record = epc_record
|
||||||
|
|
||||||
|
|
@ -133,6 +139,11 @@ class Property:
|
||||||
|
|
||||||
self.recommendations_scoring_data = []
|
self.recommendations_scoring_data = []
|
||||||
|
|
||||||
|
def parse_kwargs(self, kwargs):
|
||||||
|
# We extract the elements from kwargs that we recognise. Anything additional is ignored
|
||||||
|
self.n_bathrooms = kwargs.get("n_bathrooms", None)
|
||||||
|
self.n_bedrooms = kwargs.get("n_bedrooms", None)
|
||||||
|
|
||||||
def create_base_difference_epc_record(self, cleaned_lookup: dict):
|
def create_base_difference_epc_record(self, cleaned_lookup: dict):
|
||||||
"""
|
"""
|
||||||
Creates a EPCDifferenceRecord object, which is used to store the difference between the current and
|
Creates a EPCDifferenceRecord object, which is used to store the difference between the current and
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,6 @@ class HeatingRecommender:
|
||||||
if has_electric_heating_description or no_heating_no_mains:
|
if has_electric_heating_description or no_heating_no_mains:
|
||||||
# Recommend high heat retention storage heaters
|
# Recommend high heat retention storage heaters
|
||||||
self.recommend_electric_storage_heaters(phase=phase, system_change=True, heating_controls_only=False)
|
self.recommend_electric_storage_heaters(phase=phase, system_change=True, heating_controls_only=False)
|
||||||
return
|
|
||||||
|
|
||||||
# if the property has mains heating with boiler and radiators, we recommend optimal heating controls
|
# if the property has mains heating with boiler and radiators, we recommend optimal heating controls
|
||||||
has_boiler = self.property.main_heating["clean_description"] in ["Boiler and radiators, mains gas"]
|
has_boiler = self.property.main_heating["clean_description"] in ["Boiler and radiators, mains gas"]
|
||||||
|
|
@ -44,9 +43,16 @@ class HeatingRecommender:
|
||||||
'No system present, electric heaters assumed'
|
'No system present, electric heaters assumed'
|
||||||
] and self.property.data["mains-gas-flag"]
|
] and self.property.data["mains-gas-flag"]
|
||||||
|
|
||||||
if has_boiler or no_heating_has_mains:
|
# We also check if the property has electric heating, but it has access to the mains gas
|
||||||
self.recommend_boiler_upgrades(phase=phase, no_heating_has_mains=no_heating_has_mains)
|
electic_heating_has_mains = has_electric_heating_description and self.property.data["mains-gas-flag"]
|
||||||
return
|
|
||||||
|
if has_boiler or no_heating_has_mains or electic_heating_has_mains:
|
||||||
|
# This indicates that the home previously did not have a boiler in place and so would require
|
||||||
|
# an overhaul to the system
|
||||||
|
system_change = not has_boiler
|
||||||
|
self.recommend_boiler_upgrades(phase=phase, system_change=system_change)
|
||||||
|
|
||||||
|
return
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def check_simulation_difference(old_config, new_config):
|
def check_simulation_difference(old_config, new_config):
|
||||||
|
|
@ -256,12 +262,14 @@ class HeatingRecommender:
|
||||||
|
|
||||||
return closest_size
|
return closest_size
|
||||||
|
|
||||||
def recommend_boiler_upgrades(self, phase, no_heating_has_mains):
|
def recommend_boiler_upgrades(self, phase, system_change):
|
||||||
"""
|
"""
|
||||||
This boiler recommendation will only recommend a like-for-like upgrade, since changing the system
|
This boiler recommendation will only recommend a like-for-like upgrade, since changing the system
|
||||||
is generally more expensive
|
is generally more expensive
|
||||||
:param phase:
|
:param phase:
|
||||||
:param no_heating_has_mains: indicaes if the property has no heating system, but has access to the mains gas
|
:param system_change: Indicates if the property would be undergoing a heating system change. This could be true
|
||||||
|
if the home didn't have a heating system in place, or if the home had electric heating
|
||||||
|
previously
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
@ -279,17 +287,21 @@ class HeatingRecommender:
|
||||||
num_heated_rooms=self.property.data["number-heated-rooms"],
|
num_heated_rooms=self.property.data["number-heated-rooms"],
|
||||||
)
|
)
|
||||||
|
|
||||||
# If heating and hot water come from the mains, we need a combi boiler, otherwise we need a regular boiler
|
# We recommend a combi boiler under the following conditions
|
||||||
hotwater_from_mains = self.property.hotwater["clean_description"] in ["From main system"]
|
# 1) If there are 4 or fewer rooms (we don't use heqted rooms because none of the rooms could be
|
||||||
|
# heated if there is no existing heating system).
|
||||||
is_combi = hotwater_from_mains or no_heating_has_mains
|
# 2) There is more than 1 bathroom
|
||||||
|
is_combi = (
|
||||||
|
(self.property.data["number-heated-rooms"] <= 4) or
|
||||||
|
(self.property.n_bathrooms not in [None, 0, 1])
|
||||||
|
)
|
||||||
if is_combi:
|
if is_combi:
|
||||||
description = "Upgrade to a new combi boiler"
|
description = "Upgrade to a new combi boiler"
|
||||||
else:
|
else:
|
||||||
description = "Upgrade to a new boiler"
|
description = "Upgrade to a new gas condensing boiler"
|
||||||
|
|
||||||
simulation_config = {"mainheat_energy_eff_ending": "Good"}
|
simulation_config = {"mainheat_energy_eff_ending": "Good"}
|
||||||
if no_heating_has_mains:
|
if system_change:
|
||||||
# Installation of a boiler improves the hot water system so we need to reflect this in
|
# Installation of a boiler improves the hot water system so we need to reflect this in
|
||||||
# the outcome of the recommendation
|
# the outcome of the recommendation
|
||||||
heating_ending_config = MainHeatAttributes("Boiler and radiators, mains gas").process()
|
heating_ending_config = MainHeatAttributes("Boiler and radiators, mains gas").process()
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue