From 35d4d3af0369061efca5cef3559cb60597a01c32 Mon Sep 17 00:00:00 2001 From: Khalim Conn-Kowlessar Date: Fri, 11 Aug 2023 20:29:35 +0100 Subject: [PATCH 1/3] added starting u value to wall recomendations --- backend/app/plan/router.py | 6 +++--- recommendations/WallRecommendations.py | 2 ++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/backend/app/plan/router.py b/backend/app/plan/router.py index cb21009e..41a651d0 100644 --- a/backend/app/plan/router.py +++ b/backend/app/plan/router.py @@ -226,15 +226,15 @@ async def trigger_plan(body: PlanTriggerRequest): (x['walls-env-eff'] == p.data["walls-env-eff"] if p.data["walls-env-eff"] != 'N/A' else True) ] - wall_recomendations = WallRecommendations( + wall_recomender = WallRecommendations( property_instance=p, uvalue_estimates=walls_u_value_estimate, total_floor_area_group_decile=total_floor_area_group_decile, materials=materials_by_type["external_wall_insulation"] + materials_by_type["internal_wall_insulation"] ) - wall_recomendations.recommend() + wall_recomender.recommend() - property_recommendations.extend(wall_recomendations.recommendations) + property_recommendations.extend(wall_recomender.recommendations) recommendations[p.id] = property_recommendations diff --git a/recommendations/WallRecommendations.py b/recommendations/WallRecommendations.py index 99ad46d2..04d4779b 100644 --- a/recommendations/WallRecommendations.py +++ b/recommendations/WallRecommendations.py @@ -334,6 +334,7 @@ class WallRecommendations(BaseUtility): recommendations.append( { "parts": [get_recommended_part(part, depth)], + "starting_u_value": u_value, "new_u_value": new_u_value, } ) @@ -390,6 +391,7 @@ class WallRecommendations(BaseUtility): get_recommended_part(ewi_part, ewi_depth), get_recommended_part(iwi_part, iwi_depth) ], + "starting_u_value": u_value, "new_u_value": combined_new_u_value, } self.recommendations.append(recommendation) From 51f443a3b5ad24b59481a2ff0b531cf256c062d1 Mon Sep 17 00:00:00 2001 From: Khalim Conn-Kowlessar Date: Fri, 11 Aug 2023 20:31:48 +0100 Subject: [PATCH 2/3] added starting u value to floor recommendations --- backend/app/plan/router.py | 2 +- recommendations/FloorRecommendations.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/backend/app/plan/router.py b/backend/app/plan/router.py index 41a651d0..9ba1b023 100644 --- a/backend/app/plan/router.py +++ b/backend/app/plan/router.py @@ -278,7 +278,7 @@ async def trigger_plan(body: PlanTriggerRequest): "description": rec["description"], # TODO: Add this to output "estimated_cost": estimated_cost, "default": True, - "starting_u_value": rec.get("starting_u_value"), # TODO: Add this to output + "starting_u_value": rec.get("starting_u_value"), "new_u_value": rec.get("new_u_value"), "sap_points": rec["sap_points"] # TODO: Add this to output # Remaining outputs yet to be handled diff --git a/recommendations/FloorRecommendations.py b/recommendations/FloorRecommendations.py index caab80c8..f194ebd9 100644 --- a/recommendations/FloorRecommendations.py +++ b/recommendations/FloorRecommendations.py @@ -298,6 +298,7 @@ class FloorRecommendations(BaseUtility): "parts": [ get_recommended_part(part, depth), ], + "starting_u_value": u_value, "new_u_value": new_u_value, } ) From 773bd291a14af699c1e211f79fba553c3106ade4 Mon Sep 17 00:00:00 2001 From: Khalim Conn-Kowlessar Date: Fri, 11 Aug 2023 21:00:16 +0100 Subject: [PATCH 3/3] Implemented type and description generation into recommendations --- backend/app/plan/router.py | 4 ++-- recommendations/FloorRecommendations.py | 6 ++++++ recommendations/WallRecommendations.py | 11 +++++++++++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/backend/app/plan/router.py b/backend/app/plan/router.py index 9ba1b023..c885f333 100644 --- a/backend/app/plan/router.py +++ b/backend/app/plan/router.py @@ -274,8 +274,8 @@ async def trigger_plan(body: PlanTriggerRequest): recommendation_id = create_recommendation( { - "type": rec["type"], # TODO: Add this to output - "description": rec["description"], # TODO: Add this to output + "type": rec["type"], + "description": rec["description"], "estimated_cost": estimated_cost, "default": True, "starting_u_value": rec.get("starting_u_value"), diff --git a/recommendations/FloorRecommendations.py b/recommendations/FloorRecommendations.py index f194ebd9..d477e022 100644 --- a/recommendations/FloorRecommendations.py +++ b/recommendations/FloorRecommendations.py @@ -272,6 +272,10 @@ class FloorRecommendations(BaseUtility): # Given the U-value, we recommend solid floor insulation options which are usually solid foam self.recommend_floor_insulation(u_value=u_value, parts=solid_floor_insulation_parts) + @staticmethod + def _make_floor_description(part, depth): + return f"Install {depth}{part['depth_unit']} {part['description']} insulation" + def recommend_floor_insulation(self, u_value, parts): """ This method is tasked with estimating the impact of performing suspended floor insulation @@ -298,6 +302,8 @@ class FloorRecommendations(BaseUtility): "parts": [ get_recommended_part(part, depth), ], + "type": "floor_insulation", + "description": self._make_floor_description(part, depth), "starting_u_value": u_value, "new_u_value": new_u_value, } diff --git a/recommendations/WallRecommendations.py b/recommendations/WallRecommendations.py index 04d4779b..bae17483 100644 --- a/recommendations/WallRecommendations.py +++ b/recommendations/WallRecommendations.py @@ -334,6 +334,8 @@ class WallRecommendations(BaseUtility): recommendations.append( { "parts": [get_recommended_part(part, depth)], + "type": "wall_insulation", + "description": "Install " + self._make_description(part, depth), "starting_u_value": u_value, "new_u_value": new_u_value, } @@ -391,6 +393,11 @@ class WallRecommendations(BaseUtility): get_recommended_part(ewi_part, ewi_depth), get_recommended_part(iwi_part, iwi_depth) ], + "type": "wall_insulation", + "description": ( + "Install " + self._make_description(ewi_part, ewi_depth) + " and " + + self._make_description(iwi_part, iwi_depth) + ), "starting_u_value": u_value, "new_u_value": combined_new_u_value, } @@ -398,6 +405,10 @@ class WallRecommendations(BaseUtility): self.prune_diminishing_recommendations() + @staticmethod + def _make_description(part, depth): + return f"{depth}{part['depth_unit']} {part['description']}" + def prune_diminishing_recommendations(self): # For any recommendations, if we have at least 1 reommendation that does not exhibit diminishing returns # we trim all others that are beyond the diminishing returns threshold