import pandas as pd from utils.s3 import save_csv_to_s3 def app(): # This is the payload to be used to extract the energy assessment data from s3 and upload it to the database, # as well as produce links to each of the uploaded documents. portfolio_id = 101 body = { "portfolio_id": portfolio_id, "surveyor": "JAFFERSONS ENERGY CONSULTANTS", "project_code": "VEC001", } # 5 Grove Mansions # These are the recommendations based on the on-site survey of the property. non_intrusive_recommendations = [ { # 2 Grove Mansions "uprn": 121016121, "recommendations": [ { "type": "draught_proofing", "cost": 100, "survey": True, "sap_points": 1 }, { "type": "mixed_glazing", "cost": 14632, "survey": True, "description": "Install double glazing to north facing windows and secondary glazing to the " "remaining windows at the front of the building", "sap_points": 3 }, {"type": "trickle_vents", "cost": 1000, "survey": True}, {"type": "suspended_floor_insulation", "cost": None, "survey": True, "sap_points": 2}, {"type": "internal_wall_insulation", "cost": None, "survey": True, "sap_points": 5}, ] }, { # 8 Grove Mansions "uprn": 10024087855, "recommendations": [ {"type": "draught_proofing", "cost": 100, "survey": True, "sap_points": 2}, { "type": "mixed_glazing", "cost": 7814, "survey": True, "description": "Install double glazing to north facing windows and secondary glazing to the " "remaining windows at the front of the building", "sap_points": 4 }, {"type": "trickle_vents", "cost": 700, "survey": True}, {"type": "low_energy_lighting", "cost": None, "survey": True, "sap_points": 0}, {"type": "internal_wall_insulation", "cost": None, "survey": True, 'sap_points': 5}, ] }, { # 9 Grove Mansions "uprn": 121016128, "recommendations": [ {"type": "draught_proofing", "cost": 100, "survey": True, "sap_points": 1}, { "type": "mixed_glazing", "cost": 9740, "survey": True, "description": "Install double glazing to north facing windows and secondary glazing to the " "remaining windows at the front of the building", "sap_points": 3 }, {"type": "trickle_vents", "cost": 1000, "survey": True}, {"type": "low_energy_lighting", "cost": None, "survey": True, "sap_points": 1}, {"type": "suspended_floor_insulation", "cost": None, "sap_points": 1}, {"type": "internal_wall_insulation", "cost": None, "survey": True, "sap_points": 6}, ] }, { # 5 Grove Mansions "uprn": 121016124, "recommendations": [ { "type": "mixed_glazing", "cost": 12662, "survey": True, "description": "Install double glazing to north facing windows and secondary glazing to the " "remaining windows at the front of the building", "sap_points": 5 }, {"type": "trickle_vents", "cost": 1300, "survey": True}, {"type": "low_energy_lighting", "cost": None, "survey": True, "sap_points": 2}, {"type": "internal_wall_insulation", "cost": None, "survey": True, "sap_points": 8}, ] }, { # 14 Grove Mansions "uprn": 121016117, "recommendations": [ {"type": "draught_proofing", "cost": 100, "survey": True, "sap_points": 1}, { "type": "mixed_glazing", "cost": 10736, "survey": True, "description": "Install double glazing to north facing windows and secondary glazing to the " "remaining windows at the front of the building", "sap_points": 4 }, {"type": "trickle_vents", "cost": 1000, "survey": True}, {"type": "low_energy_lighting", "cost": None, "survey": True, "sap_points": 1}, {"type": "internal_wall_insulation", "cost": None, "survey": True, "sap_points": 6}, ] }, { # 19 Grove Mansions "uprn": 10024087902, "recommendations": [ {"type": "low_energy_lighting", "cost": None, "survey": True, "sap_points": 0}, {"type": "internal_wall_insulation", "cost": None, "survey": True, "sap_points": 2}, {"type": "room_roof_insulation", "cost": None, "survey": True, "sap_points": 16}, ] }, ] asset_list = [ # These are properties where we've done a survey { "uprn": 121016121, "address": "", "postcode": "" }, { "uprn": 10024087855, "address": "", "postcode": "" }, { "uprn": 121016128, "address": "", "postcode": "" }, { "uprn": 121016124, "address": "", "postcode": "" }, { "uprn": 121016117, "address": "", "postcode": "" }, { "uprn": 10024087902, "address": "", "postcode": "" }, # These properties we just model with default data # Flat 1 { "uprn": 121016113, "address": "", "postcode": "" }, # Flat 10 { "uprn": 121016114, "address": "", "postcode": "" }, # Flat 11 { "uprn": 121016115, "address": "", "postcode": "" }, # Flat 12 { "uprn": 121016116, "address": "", "postcode": "" }, # Flat 15 { "uprn": 121016118, "address": "", "postcode": "" }, # Flat 16 { "uprn": 121016119, "address": "", "postcode": "" }, # Flat 17 { "address": "Flat 17 Grove Mansions", "postcode": "SW4 9SL" }, # Flat 18 { "uprn": 10024087901, "address": "", "postcode": "" }, # Flat 3 { "uprn": 121016122, "address": "", "postcode": "" }, # Flat 4 { "uprn": 121016123, "address": "", "postcode": "" }, # Flat 6 { "uprn": 121016125, "address": "", "postcode": "" }, # Flat 7 { "uprn": 10024087854, "address": "", "postcode": "" }, # Flat 7A { "uprn": 10024087840, "address": "", "postcode": "" }, # Flat 8A { "uprn": 10024087841, "address": "", "postcode": "" }, ] asset_list = pd.DataFrame(asset_list) filename = f"{8}/{portfolio_id}/asset_list.csv" save_csv_to_s3( dataframe=asset_list, bucket_name="retrofit-plan-inputs-dev", file_name=filename ) # TODO Create asset list # TODO: Store asset list & non_intrusive_recommendations # Store non-invasive recommendations in S3 non_invasive_recommendations_filename = f"{8}/{portfolio_id}/non_invasive_recommendations.json" save_csv_to_s3( dataframe=pd.DataFrame(non_intrusive_recommendations), bucket_name="retrofit-plan-inputs-dev", file_name=non_invasive_recommendations_filename ) # This is the first scenario which includes the first batch of recommendations body1 = { "portfolio_id": str(portfolio_id), "housing_type": "Private", "goal": "Increasing EPC", "goal_value": "A", "trigger_file_path": filename, "already_installed_file_path": "", "patches_file_path": "", "non_invasive_recommendations_file_path": non_invasive_recommendations_filename, "inclusions": [ "draught_proofing", "mixed_glazing", "trickle_vents", "low_energy_lighting", "windows" ], "budget": None, "scenario_name": "Quick wins - do now while tenanted", "multi_plan": True, } # This is the second scenario which includes the second batch of recommendations body2 = { "portfolio_id": str(portfolio_id), "housing_type": "Private", "goal": "Increasing EPC", "goal_value": "A", "trigger_file_path": filename, "already_installed_file_path": "", "patches_file_path": "", "non_invasive_recommendations_file_path": non_invasive_recommendations_filename, "inclusions": [ "draught_proofing", "mixed_glazing", "trickle_vents", "low_energy_lighting", "suspended_floor_insulation", "internal_wall_insulation", "room_roof_insulation", "windows" ], "budget": None, "scenario_name": "Do when void", "multi_plan": True, } print(body1) print(body2)