mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
138 lines
4.5 KiB
Python
138 lines
4.5 KiB
Python
import os
|
|
import time
|
|
|
|
from tqdm import tqdm
|
|
import pandas as pd
|
|
from dotenv import load_dotenv
|
|
from etl.find_my_epc.RetrieveFindMyEpc import RetrieveFindMyEpc
|
|
from backend.SearchEpc import SearchEpc
|
|
from utils.s3 import save_csv_to_s3
|
|
|
|
load_dotenv(dotenv_path="backend/.env")
|
|
EPC_AUTH_TOKEN = os.getenv("EPC_AUTH_TOKEN")
|
|
USER_ID = 8
|
|
PORTFOLIO_ID = 122
|
|
|
|
|
|
def app():
|
|
asset_list = [
|
|
{
|
|
"address": "12 Church Lane", "postcode": "CB23 8AF", "uprn": 100090136018,
|
|
"property_type": "House", "built-form": "Semi-Detached"
|
|
},
|
|
{
|
|
"address": "21 High Street", "postcode": "CB23 8AB", "uprn": 100090144815
|
|
},
|
|
{
|
|
"address": "22 High Street", "postcode": "CB23 8AB", "uprn": 100090144816
|
|
},
|
|
{
|
|
"address": "5 Bunkers Hill", "postcode": "CB3 0LY", "uprn": 10008078615
|
|
},
|
|
{
|
|
"address": "6 Bunkers Hill", "postcode": "CB3 0LY", "uprn": 10008078616
|
|
},
|
|
{
|
|
"address": "7 Bunkers Hill", "postcode": "CB3 0LY", "uprn": 10008078617
|
|
},
|
|
{
|
|
"address": "32 George Nuttall Close", "postcode": "CB4 1YE", "uprn": 200004200075
|
|
},
|
|
{
|
|
"address": "33 George Nuttall Close", "postcode": "CB4 1YE", "uprn": 200004200076
|
|
},
|
|
{
|
|
"address": "35 George Nuttall Close", "postcode": "CB4 1YE", "uprn": 200004200078
|
|
},
|
|
{
|
|
"address": "36 George Nuttall Close", "postcode": "CB4 1YE", "uprn": 200004200079
|
|
}
|
|
]
|
|
asset_list = pd.DataFrame(asset_list)
|
|
|
|
valuations_data = [
|
|
{'uprn': 100090136018, "valuation": 586_000},
|
|
{'uprn': 100090144815, "valuation": 446_000},
|
|
{'uprn': 100090144816, "valuation": 448_000},
|
|
{'uprn': 10008078615, "valuation": 763_000},
|
|
{'uprn': 10008078616, "valuation": 616_000},
|
|
{'uprn': 10008078617, "valuation": 593_000},
|
|
{'uprn': 200004200075, "valuation": 450_000},
|
|
{'uprn': 200004200076, "valuation": 457_000},
|
|
{'uprn': 200004200078, "valuation": 304_000},
|
|
{'uprn': 200004200079, "valuation": 313_000}
|
|
]
|
|
|
|
# Pull the additional data
|
|
extracted_data = []
|
|
for _, home in tqdm(asset_list.iterrows(), total=len(asset_list)):
|
|
add1 = home["address"]
|
|
pc = home["postcode"]
|
|
# Retrieve the EPC data
|
|
epc_searcher = SearchEpc(
|
|
address1=add1,
|
|
postcode=pc, uprn=home["uprn"], auth_token=EPC_AUTH_TOKEN, os_api_key=""
|
|
)
|
|
epc_searcher.find_property(skip_os=True)
|
|
if epc_searcher.newest_epc is None:
|
|
continue
|
|
|
|
find_epc_searcher = RetrieveFindMyEpc(address=epc_searcher.newest_epc["address1"],
|
|
postcode=epc_searcher.newest_epc["postcode"])
|
|
find_epc_data = find_epc_searcher.retrieve_newest_find_my_epc_data()
|
|
time.sleep(0.5)
|
|
# We need uprn
|
|
|
|
extracted_data.append(
|
|
{
|
|
"uprn": home["uprn"],
|
|
**find_epc_data,
|
|
}
|
|
)
|
|
|
|
non_invasive_recommendations = [
|
|
{
|
|
"uprn": r["uprn"],
|
|
"recommendations": r["recommendations"]
|
|
} for r in extracted_data
|
|
]
|
|
|
|
filename = f"{USER_ID}/{PORTFOLIO_ID}/asset_list.csv"
|
|
save_csv_to_s3(
|
|
dataframe=pd.DataFrame(asset_list),
|
|
bucket_name="retrofit-plan-inputs-dev",
|
|
file_name=filename
|
|
)
|
|
|
|
# Store the non-invasive recommendations in s3
|
|
non_invasive_recommendations_filename = f"{USER_ID}/{PORTFOLIO_ID}/non_invasive_recommendations.csv"
|
|
save_csv_to_s3(
|
|
dataframe=pd.DataFrame(non_invasive_recommendations),
|
|
bucket_name="retrofit-plan-inputs-dev",
|
|
file_name=non_invasive_recommendations_filename
|
|
)
|
|
|
|
# Store the valuations data in s3
|
|
valuations_filename = f"{USER_ID}/{PORTFOLIO_ID}/valuations.csv"
|
|
save_csv_to_s3(
|
|
dataframe=pd.DataFrame(valuations_data),
|
|
bucket_name="retrofit-plan-inputs-dev",
|
|
file_name=valuations_filename
|
|
)
|
|
|
|
body = {
|
|
"portfolio_id": str(PORTFOLIO_ID),
|
|
"housing_type": "Private",
|
|
"goal": "Increasing EPC",
|
|
"goal_value": "B",
|
|
"trigger_file_path": filename,
|
|
"already_installed_file_path": "",
|
|
"patches_file_path": "",
|
|
"non_invasive_recommendations_file_path": non_invasive_recommendations_filename,
|
|
"valuation_file_path": valuations_filename,
|
|
"scenario_name": "Wave 3 Packages",
|
|
"multi_plan": True,
|
|
"budget": None,
|
|
"exclusions": []
|
|
}
|
|
print(body)
|