mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
energy assessment model
This commit is contained in:
parent
7b04e1edc7
commit
6702eb65b0
3 changed files with 128 additions and 5 deletions
121
backend/app/db/models/energy_assessments.py
Normal file
121
backend/app/db/models/energy_assessments.py
Normal file
|
|
@ -0,0 +1,121 @@
|
|||
from sqlalchemy import Column, Integer, BigInteger, Text, Float, DateTime, Boolean
|
||||
from sqlalchemy.ext.declarative import declarative_base
|
||||
|
||||
Base = declarative_base()
|
||||
|
||||
|
||||
class EnergyAssessment(Base):
|
||||
__tablename__ = 'energy_assessments'
|
||||
id = Column(BigInteger, primary_key=True, autoincrement=True)
|
||||
uprn = Column(BigInteger, nullable=False)
|
||||
uprn_source = Column(Text, nullable=False)
|
||||
property_type = Column(Text, nullable=False)
|
||||
building_reference_number = Column(Text)
|
||||
current_energy_efficiency = Column(Text, nullable=False)
|
||||
current_energy_rating = Column(Text, nullable=False)
|
||||
address1 = Column(Text, nullable=False)
|
||||
address2 = Column(Text, nullable=False)
|
||||
address3 = Column(Text)
|
||||
posttown = Column(Text, nullable=False)
|
||||
postcode = Column(Text, nullable=False)
|
||||
address = Column(Text, nullable=False)
|
||||
county = Column(Text)
|
||||
constituency = Column(Text)
|
||||
constituency_label = Column(Text)
|
||||
low_energy_fixed_light_count = Column(Text, nullable=False)
|
||||
construction_age_band = Column(Text, nullable=False)
|
||||
mainheat_energy_eff = Column(Text, nullable=False)
|
||||
windows_env_eff = Column(Text, nullable=False)
|
||||
lighting_energy_eff = Column(Text, nullable=False)
|
||||
environment_impact_potential = Column(Text, nullable=False)
|
||||
mainheatcont_description = Column(Text, nullable=False)
|
||||
sheating_energy_eff = Column(Text, nullable=False)
|
||||
local_authority = Column(Text, nullable=False)
|
||||
local_authority_label = Column(Text, nullable=False)
|
||||
fixed_lighting_outlets_count = Column(Text, nullable=False)
|
||||
energy_tariff = Column(Text, nullable=False)
|
||||
mechanical_ventilation = Column(Text, nullable=False)
|
||||
solar_water_heating_flag = Column(Text, nullable=False)
|
||||
co2_emissions_potential = Column(Text, nullable=False)
|
||||
number_heated_rooms = Column(Text, nullable=False)
|
||||
floor_description = Column(Text, nullable=False)
|
||||
energy_consumption_potential = Column(Text, nullable=False)
|
||||
built_form = Column(Text, nullable=False)
|
||||
number_open_fireplaces = Column(Text, nullable=False)
|
||||
windows_description = Column(Text, nullable=False)
|
||||
glazed_area = Column(Text, nullable=False)
|
||||
inspection_date = Column(DateTime(timezone=True), nullable=False)
|
||||
mains_gas_flag = Column(Text, nullable=False)
|
||||
co2_emiss_curr_per_floor_area = Column(Text, nullable=False)
|
||||
heat_loss_corridor = Column(Text, nullable=False)
|
||||
unheated_corridor_length = Column(Text)
|
||||
flat_storey_count = Column(Text)
|
||||
roof_energy_eff = Column(Text, nullable=False)
|
||||
total_floor_area = Column(Text, nullable=False)
|
||||
environment_impact_current = Column(Text, nullable=False)
|
||||
roof_description = Column(Text, nullable=False)
|
||||
floor_energy_eff = Column(Text, nullable=False)
|
||||
number_habitable_rooms = Column(Text, nullable=False)
|
||||
hot_water_env_eff = Column(Text, nullable=False)
|
||||
mainheatc_energy_eff = Column(Text, nullable=False)
|
||||
main_fuel = Column(Text, nullable=False)
|
||||
lighting_env_eff = Column(Text, nullable=False)
|
||||
windows_energy_eff = Column(Text, nullable=False)
|
||||
floor_env_eff = Column(Text, nullable=False)
|
||||
sheating_env_eff = Column(Text, nullable=False)
|
||||
lighting_description = Column(Text, nullable=False)
|
||||
roof_env_eff = Column(Text, nullable=False)
|
||||
walls_energy_eff = Column(Text, nullable=False)
|
||||
photo_supply = Column(Text, nullable=False)
|
||||
lighting_cost_potential = Column(Text, nullable=False)
|
||||
mainheat_env_eff = Column(Text, nullable=False)
|
||||
multi_glaze_proportion = Column(Text, nullable=False)
|
||||
main_heating_controls = Column(Text, nullable=False)
|
||||
flat_top_storey = Column(Text)
|
||||
secondheat_description = Column(Text, nullable=False)
|
||||
walls_env_eff = Column(Text, nullable=False)
|
||||
transaction_type = Column(Text, nullable=False)
|
||||
extension_count = Column(Text, nullable=False)
|
||||
mainheatc_env_eff = Column(Text, nullable=False)
|
||||
lmk_key = Column(Text)
|
||||
wind_turbine_count = Column(Text, nullable=False)
|
||||
tenure = Column(Text, nullable=False)
|
||||
floor_level = Column(Text, nullable=False)
|
||||
potential_energy_efficiency = Column(Text, nullable=False)
|
||||
potential_energy_rating = Column(Text, nullable=False)
|
||||
hot_water_energy_eff = Column(Text, nullable=False)
|
||||
low_energy_lighting = Column(Text, nullable=False)
|
||||
walls_description = Column(Text, nullable=False)
|
||||
hotwater_description = Column(Text, nullable=False)
|
||||
co2_emissions_current = Column(Text, nullable=False)
|
||||
heating_cost_current = Column(Text, nullable=False)
|
||||
heating_cost_potential = Column(Text, nullable=False)
|
||||
hot_water_cost_current = Column(Text, nullable=False)
|
||||
hot_water_cost_potential = Column(Text, nullable=False)
|
||||
lighting_cost_current = Column(Text, nullable=False)
|
||||
energy_consumption_current = Column(Text, nullable=False)
|
||||
lodgement_date = Column(DateTime(timezone=True), nullable=False)
|
||||
lodgement_datetime = Column(DateTime(timezone=True), nullable=False)
|
||||
mainheat_description = Column(Text, nullable=False)
|
||||
floor_height = Column(Float, nullable=False)
|
||||
glazed_type = Column(Text, nullable=False)
|
||||
file_location = Column(Text, nullable=False)
|
||||
surveyor_name = Column(Text, nullable=False)
|
||||
surveyor_company = Column(Text, nullable=False)
|
||||
space_heating_kwh = Column(Text, nullable=False)
|
||||
water_heating_kwh = Column(Text, nullable=False)
|
||||
number_of_doors = Column(Integer, nullable=False)
|
||||
number_of_insulated_doors = Column(Integer, nullable=False)
|
||||
number_of_floors = Column(Integer, nullable=False)
|
||||
insulation_wall_area = Column(Float, nullable=False)
|
||||
heat_loss_perimeter = Column(Float, nullable=False)
|
||||
party_wall_length = Column(Float, nullable=False)
|
||||
perimeter = Column(Float, nullable=False)
|
||||
rooms_with_bath_and_or_shower = Column(Integer)
|
||||
rooms_with_mixer_shower_no_bath = Column(Integer)
|
||||
room_with_bath_and_mixer_shower = Column(Integer)
|
||||
percent_draftproofed = Column(Integer)
|
||||
has_hot_water_cylinder = Column(Boolean)
|
||||
cylinder_insulation_type = Column(Text)
|
||||
cylinder_insulation_thickness = Column(Integer)
|
||||
cylinder_thermostat = Column(Boolean)
|
||||
|
|
@ -367,13 +367,13 @@ class XmlParser:
|
|||
"heat_loss_perimeter": self.heat_loss_perimeter,
|
||||
"party_wall_length": self.party_wall_length,
|
||||
"perimeter": self.perimeter,
|
||||
"rooms_with_bath_and_or_shower": self.get_node_value('Rooms-With-Bath-And-Or-Shower'),
|
||||
"rooms_with_mixer_shower_no_bath": self.get_node_value('Rooms-With-Mixer-Shower-No-Bath'),
|
||||
"room_with_bath_and_mixer_shower": self.get_node_value('Rooms-With-Bath-And-Mixer-Shower'),
|
||||
"percent_draftproofed": self.get_node_value('Percent-Draughtproofed'),
|
||||
"rooms_with_bath_and_or_shower": int(self.get_node_value('Rooms-With-Bath-And-Or-Shower')),
|
||||
"rooms_with_mixer_shower_no_bath": int(self.get_node_value('Rooms-With-Mixer-Shower-No-Bath')),
|
||||
"room_with_bath_and_mixer_shower": int(self.get_node_value('Rooms-With-Bath-And-Mixer-Shower')),
|
||||
"percent_draftproofed": int(self.get_node_value('Percent-Draughtproofed')),
|
||||
"has_hot_water_cylinder": boolean_lookup[self.get_node_value('Has-Hot-Water-Cylinder')],
|
||||
"cylinder_insulation_type": cylinder_insulation_type[self.get_node_value('Cylinder-Insulation-Type')],
|
||||
"cylinder_insulation_thickness": self.get_node_value('Cylinder-Insulation-Thickness'),
|
||||
"cylinder_insulation_thickness": int(self.get_node_value('Cylinder-Insulation-Thickness')),
|
||||
"cylinder_thermostat": boolean_lookup[self.get_node_value('Cylinder-Thermostat')],
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -56,6 +56,8 @@ def main():
|
|||
)
|
||||
xml_parser.run()
|
||||
logger.info(f"Extracted data from {xml}")
|
||||
extracted_epc = xml_parser.epc
|
||||
extracted_additional_data = xml_parser.additional_data
|
||||
|
||||
# TODO: Set a portfolio ID, Target and Automatically upload the asset list and create the event for the portfolio
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue