mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
SAL for hyde
This commit is contained in:
parent
570d463097
commit
e5272e2e64
9 changed files with 174 additions and 9 deletions
2
.idea/Model.iml
generated
2
.idea/Model.iml
generated
|
|
@ -7,7 +7,7 @@
|
|||
<sourceFolder url="file://$MODULE_DIR$/open_uprn" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/recommendations" isTestSource="false" />
|
||||
</content>
|
||||
<orderEntry type="jdk" jdkName="Fastapi-backend" jdkType="Python SDK" />
|
||||
<orderEntry type="jdk" jdkName="AssetList" jdkType="Python SDK" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
</module>
|
||||
2
.idea/misc.xml
generated
2
.idea/misc.xml
generated
|
|
@ -3,7 +3,7 @@
|
|||
<component name="Black">
|
||||
<option name="sdkName" value="Python 3.10 (backend)" />
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" project-jdk-name="Fastapi-backend" project-jdk-type="Python SDK" />
|
||||
<component name="ProjectRootManager" version="2" project-jdk-name="AssetList" project-jdk-type="Python SDK" />
|
||||
<component name="PyCharmProfessionalAdvertiser">
|
||||
<option name="shown" value="true" />
|
||||
</component>
|
||||
|
|
|
|||
|
|
@ -309,6 +309,17 @@ class AssetList:
|
|||
'NAME OF SURVEYOR'
|
||||
]
|
||||
|
||||
# Solar non-intrusive fields
|
||||
NON_INTRUSIVES_SOLAR_COLNAMES = [
|
||||
'PV, ACCESS ISSUE, SEE NOTES', 'ROOF ORIENTATION',
|
||||
'AREA (m²) OF ROOF WHERE PV WILL BE SITUATED ', 'SHADING',
|
||||
'Roof Tiles - CONCRETE/SLATE/ROSEMARY',
|
||||
'NO. OF PANELS (Typical size of 420W panel is 1mx1.7m and need 30cm all the way around panels)',
|
||||
'SCAFFOLD REQUIRED? IF YES, ARE THERE ANY SURROUNDING ACCESS ISSUES - PLEASE DESCRIBE',
|
||||
'IF PANELS ARE GOING ON REAR PLEASE CHECK FOR SPACE FOR SCAFFOLDING - DESCRIBE ANY ISSUES BELOW',
|
||||
'DATE', 'NAME OF SURVEYOR'
|
||||
]
|
||||
|
||||
NON_INTRUSIVES_ELIGIBILITY_COLUMN = "Eligibility (Red/Yellow/Green)"
|
||||
|
||||
OLD_FORMAT_NON_INTRUSIVE_COLNAMES = ['WFT Findings', 'ECO Eligibility']
|
||||
|
|
@ -461,6 +472,8 @@ class AssetList:
|
|||
|
||||
self.new_format_non_insturives_present_v2 = 'TILE HUNG' in self.raw_asset_list.columns
|
||||
|
||||
self.solar_non_intrusives_present = "AREA (m²) OF ROOF WHERE PV WILL BE SITUATED" in self.raw_asset_list.columns
|
||||
|
||||
# Names of columns
|
||||
self.landlord_property_id = landlord_property_id
|
||||
self.address1_colname = address1_colname
|
||||
|
|
@ -774,6 +787,9 @@ class AssetList:
|
|||
if self.new_format_non_insturives_present_v2:
|
||||
non_intrusive_columns += self.NON_INTRUSIVES_NEW_FORMAT_COLNAMES_V2
|
||||
|
||||
if self.solar_non_intrusives_present:
|
||||
non_intrusive_columns += self.NON_INTRUSIVES_SOLAR_COLNAMES
|
||||
|
||||
if self.old_format_non_intrusives_present:
|
||||
# We check if we have the ECO Eligibility column, which we might not have
|
||||
non_intrusive_columns = [
|
||||
|
|
@ -946,7 +962,7 @@ class AssetList:
|
|||
|
||||
if self.phase:
|
||||
# We filter on just the properties that have had an inspection
|
||||
if self.new_format_non_insturives_present_v2:
|
||||
if self.new_format_non_insturives_present_v2 or self.solar_non_intrusives_present:
|
||||
self.standardised_asset_list = self.standardised_asset_list[
|
||||
~self.standardised_asset_list['NAME OF SURVEYOR'].isin(
|
||||
["YET TO BE SURVEYED", "", None]
|
||||
|
|
@ -1341,10 +1357,10 @@ class AssetList:
|
|||
# for identifying cavity jobs
|
||||
if self.non_intrusives_present and not self.old_format_non_intrusives_present:
|
||||
|
||||
if self.new_format_non_insturives_present_v2:
|
||||
if self.new_format_non_insturives_present_v2 or self.solar_non_intrusives_present:
|
||||
existing_solar_non_intrusives_check = (
|
||||
self.standardised_asset_list["non-intrusives: ROOF ORIENTATION"].str.strip().isin(
|
||||
["ALREADY HAS SOLAR PV"]
|
||||
["ALREADY HAS SOLAR PV", "ALREADY HAS PV"]
|
||||
)
|
||||
)
|
||||
else:
|
||||
|
|
|
|||
|
|
@ -59,6 +59,74 @@ def app():
|
|||
Property UPRN
|
||||
"""
|
||||
|
||||
# Hyde - solar
|
||||
data_folder = "/Users/khalimconn-kowlessar/Documents/hestia/Customers/Hyde/Solar"
|
||||
data_filename = "Domna Property Analysis HYDE (Chichester Removed).xlsx"
|
||||
sheet_name = "Electric Property Inspections"
|
||||
postcode_column = 'Postcode'
|
||||
address1_column = None # Is only patchily populated so we create it
|
||||
address1_method = 'house_number_extraction'
|
||||
fulladdress_column = "Address"
|
||||
address_cols_to_concat = []
|
||||
missing_postcodes_method = None
|
||||
landlord_year_built = None
|
||||
landlord_os_uprn = None
|
||||
landlord_property_type = "Property Type"
|
||||
landlord_built_form = "Property Type"
|
||||
landlord_wall_construction = "Walls "
|
||||
landlord_roof_construction = "Roofs"
|
||||
landlord_heating_system = "Heating"
|
||||
landlord_existing_pv = None
|
||||
landlord_property_id = "Address ID"
|
||||
landlord_sap = "SAP"
|
||||
outcomes_filename = None
|
||||
outcomes_sheetname = None
|
||||
outcomes_postcode = None
|
||||
outcomes_houseno = None
|
||||
outcomes_id = None
|
||||
outcomes_address = None
|
||||
master_filepaths = []
|
||||
master_id_colnames = []
|
||||
master_to_asset_list_filepath = None
|
||||
phase = True
|
||||
ecosurv_landlords = None
|
||||
asset_list_header = 0
|
||||
landlord_block_reference = None
|
||||
|
||||
# Hyde cavity
|
||||
data_folder = "/Users/khalimconn-kowlessar/Documents/hestia/Customers/Hyde/Cavity"
|
||||
data_filename = "Domna Property Analysis HYDE (Chichester Removed).xlsx"
|
||||
sheet_name = "Cavity Inspections"
|
||||
postcode_column = 'Postcode'
|
||||
address1_column = None # Is only patchily populated so we create it
|
||||
address1_method = 'house_number_extraction'
|
||||
fulladdress_column = "Address"
|
||||
address_cols_to_concat = []
|
||||
missing_postcodes_method = None
|
||||
landlord_year_built = None
|
||||
landlord_os_uprn = None
|
||||
landlord_property_type = "Property Type"
|
||||
landlord_built_form = "Property Type"
|
||||
landlord_wall_construction = "Walls "
|
||||
landlord_roof_construction = "Roofs"
|
||||
landlord_heating_system = "Heating"
|
||||
landlord_existing_pv = None
|
||||
landlord_property_id = "Address ID"
|
||||
landlord_sap = "SAP"
|
||||
outcomes_filename = None
|
||||
outcomes_sheetname = None
|
||||
outcomes_postcode = None
|
||||
outcomes_houseno = None
|
||||
outcomes_id = None
|
||||
outcomes_address = None
|
||||
master_filepaths = []
|
||||
master_id_colnames = []
|
||||
master_to_asset_list_filepath = None
|
||||
phase = True
|
||||
ecosurv_landlords = None
|
||||
asset_list_header = 0
|
||||
landlord_block_reference = None
|
||||
|
||||
# CDS - Sept 2025
|
||||
data_folder = "/Users/khalimconn-kowlessar/Documents/hestia/Customers/CDS/September 2025 Programme"
|
||||
data_filename = "Founder Estates CDS.xlsx"
|
||||
|
|
|
|||
|
|
@ -439,5 +439,23 @@ BUILT_FORM_MAPPINGS = {
|
|||
'Chalet - Wheelchair': 'unknown',
|
||||
'Studio Flat': 'unknown',
|
||||
'Bungalow - Attached': 'semi-detached',
|
||||
'ND': 'unknown'
|
||||
'ND': 'unknown',
|
||||
|
||||
'Maisonette: Mid Terrace: Mid Floor': 'mid-floor',
|
||||
'Maisonette: Semi Detached: Ground Floor': 'semi-detached',
|
||||
'Maisonette: Enclosed Mid Terrace: Ground Floor': 'enclosed mid-terrace',
|
||||
'Maisonette: Enclosed End Terrace: Ground Floor': 'end-terrace',
|
||||
'Maisonette: Mid Terrace: Ground Floor': 'mid-terrace',
|
||||
'Flat: Semi Detached: Basement': 'semi-detached',
|
||||
'Maisonette: Semi Detached: Top Floor': 'semi-detached',
|
||||
'Maisonette: Enclosed Mid Terrace: Mid Floor': 'enclosed mid-terrace',
|
||||
'Flat: Detached: Basement': 'detached',
|
||||
'Maisonette: Enclosed Mid Terrace: Top Floor': 'enclosed mid-terrace',
|
||||
|
||||
'Maisonette: End Terrace: Top Floor': 'top-floor',
|
||||
'House: Mid Terrace: Ground Floor': 'ground floor',
|
||||
'Maisonette: Semi Detached: Mid Floor': 'detached',
|
||||
'Maisonette: Detached: Mid Floor': 'detached',
|
||||
'Bungalow: EnclosedMidTerrace': 'enclosed mid-terrace'
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -477,6 +477,23 @@ HEATING_MAPPINGS = {
|
|||
|
||||
'Heat networks Heat networks (mains gas)': 'communal heating',
|
||||
'ND Oil': 'oil fuel',
|
||||
'Boiler Biofuel': 'boiler - other fuel'
|
||||
'Boiler Biofuel': 'boiler - other fuel',
|
||||
|
||||
'Electric (direct acting) room heaters: Water- or oil-filled radiators': 'room heaters',
|
||||
'Other: Electric ceiling heating': 'electric ceiling',
|
||||
'Heat Pump: Electric Heat pumps: Air source heat pump with flow temperature <= 35°C': 'air source heat pump',
|
||||
'Oil room heaters: Room heater, 2000 or later': 'room heaters',
|
||||
'Electric Underfloor Heating: In screed above insulation (standard or off peak)': 'electric underfloor',
|
||||
'Heat Pump: Electric Heat pumps: Air source heat pump in other cases': 'air source heat pump',
|
||||
'Electric Storage Systems: Old (large volume) storage heaters': 'electric storage heaters',
|
||||
|
||||
'Gas (including LPG) room heaters: Condensing gas fire': 'room heaters',
|
||||
'Solid fuel room heaters: Open fire in grate': 'solid fuel',
|
||||
'Solid fuel room heaters: Open fire with back boiler (no radiators)': 'solid fuel',
|
||||
'Community Heating Systems: Community heat pump (RdSAP)': 'communal heating',
|
||||
'Gas (including LPG) room heaters: Gas fire, open flue, 1980 or later (open fronted), sitting proud of, '
|
||||
'and sealed to, fireplace opening': 'room heaters',
|
||||
'Boiler: A rated Regular Boiler, System 2: Boiler: C rated Regular Boiler': 'boiler - other fuel',
|
||||
'Boiler: G rated Combi': 'gas condensing combi'
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -343,5 +343,23 @@ PROPERTY_MAPPING = {
|
|||
'bungalow': 'bungalow',
|
||||
'flat': 'flat',
|
||||
'FLA': 'flat',
|
||||
'HOU': 'house'
|
||||
'HOU': 'house',
|
||||
|
||||
'Maisonette: Mid Terrace: Mid Floor': 'maisonette',
|
||||
'Maisonette: Semi Detached: Ground Floor': 'maisonette',
|
||||
'Maisonette: Enclosed Mid Terrace: Ground Floor': 'maisonette',
|
||||
'Maisonette: Enclosed End Terrace: Ground Floor': 'maisonette',
|
||||
'Maisonette: Mid Terrace: Ground Floor': 'maisonette',
|
||||
'Flat: Semi Detached: Basement': 'flat',
|
||||
'Maisonette: Semi Detached: Top Floor': 'maisonette',
|
||||
'Maisonette: Enclosed Mid Terrace: Mid Floor': 'maisonette',
|
||||
'Flat: Detached: Basement': 'flat',
|
||||
'Maisonette: Enclosed Mid Terrace: Top Floor': 'maisonette',
|
||||
|
||||
'Maisonette: End Terrace: Top Floor': 'maisonette',
|
||||
'House: Mid Terrace: Ground Floor': 'house',
|
||||
'Bungalow: EnclosedMidTerrace': 'bungalow',
|
||||
'Maisonette: Semi Detached: Mid Floor': 'maisonette',
|
||||
'Maisonette: Detached: Mid Floor': 'maisonette'
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -275,5 +275,30 @@ ROOF_CONSTRUCTION_MAPPINGS = {
|
|||
'Pitched (vaulted ceiling) Non-joist': 'pitched unknown insulation',
|
||||
'ND (inferred) ND (inferred)': 'unknown',
|
||||
'Flat Non-joist': 'flat insulated',
|
||||
'Same dwelling above N/A': 'another dwelling above'
|
||||
'Same dwelling above N/A': 'another dwelling above',
|
||||
|
||||
'Flat: As Built, PitchedNormalLoftAccess: Unknown': 'flat unknown insulation',
|
||||
'PitchedNormalLoftAccess: Unknown, PitchedNormalNoLoftAccess: Unknown': 'pitched unknown insulation',
|
||||
'PitchedNormalLoftAccess: 400mm+': 'pitched insulated',
|
||||
'AnotherDwellingAbove: 150mm': 'another dwelling above',
|
||||
'Flat: 150mm': 'flat insulated',
|
||||
'AnotherDwellingAbove: 50mm': 'another dwelling above',
|
||||
'PitchedNormalNoLoftAccess: As Built': 'pitched no access to loft',
|
||||
'PitchedNormalLoftAccess: 250mm, PitchedWithSlopingCeiling: As Built': 'pitched insulated',
|
||||
'PitchedNormalLoftAccess: 200mm, PitchedWithSlopingCeiling: As Built': 'pitched insulated',
|
||||
'PitchedNormalLoftAccess: 350mm': 'pitched insulated',
|
||||
'PitchedNormalNoLoftAccess: 270mm': 'pitched no access to loft',
|
||||
'AnotherDwellingAbove: 100mm': 'another dwelling above',
|
||||
|
||||
'PitchedWithSlopingCeiling: Unknown': 'piched unknown insulation',
|
||||
'AnotherDwellingAbove: Unknown, Flat: As Built': 'another dwelling above',
|
||||
'Flat: Unknown, PitchedNormalLoftAccess: 25mm': 'flat unknown insulation',
|
||||
'SameDwellingAbove: Unknown': 'another dwelling above',
|
||||
'Flat: Unknown': 'flat unknown insulation',
|
||||
'Flat: 50mm, PitchedNormalLoftAccess: 100mm': 'flat insulated',
|
||||
'Flat: As Built, PitchedNormalLoftAccess: 250mm, PitchedWithSlopingCeiling: As Built': 'flat unknown insulation',
|
||||
'Flat: As Built, PitchedNormalLoftAccess: 400mm+': 'flat unknown insulation',
|
||||
'PitchedWithSlopingCeiling: As Built': 'pitched insulated',
|
||||
'PitchedNormalLoftAccess: As Built': 'pitched unknown insulation',
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -353,4 +353,7 @@ WALL_CONSTRUCTION_MAPPINGS = {
|
|||
'System built As-built': "uninsulated system built",
|
||||
'System built Internal': 'insulated system built',
|
||||
|
||||
'Cavity: AsBuilt (1976-1982), TimberFrame: AsBuilt': 'cavity unknown insulation',
|
||||
'Cavity: FilledCavityPlusExternal': 'filled cavity'
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue