From 7741373671093bc0c4bdaa2fd01aabc70dc9950d Mon Sep 17 00:00:00 2001 From: Daniel Roth Date: Fri, 23 Jan 2026 15:54:53 +0000 Subject: [PATCH] Map more peabody elements --- backend/condition/domain/aspect_type.py | 1 + backend/condition/domain/element.py | 8 ++ .../mapping/peabody/peabody_element_map.py | 104 +++++++++++++----- 3 files changed, 86 insertions(+), 27 deletions(-) diff --git a/backend/condition/domain/aspect_type.py b/backend/condition/domain/aspect_type.py index d4db10bc..94522b03 100644 --- a/backend/condition/domain/aspect_type.py +++ b/backend/condition/domain/aspect_type.py @@ -28,3 +28,4 @@ class AspectType(str, Enum): COVERING = "covering" FIRE_RATING = "fire_rating" EXTERNAL_DECORATION = "external_decoration" + WORK_REQUIRED = "work_required" diff --git a/backend/condition/domain/element.py b/backend/condition/domain/element.py index c8fb6167..1d109002 100644 --- a/backend/condition/domain/element.py +++ b/backend/condition/domain/element.py @@ -23,6 +23,9 @@ class Element(str, Enum): RAINWATER_GOODS = "rainwater_goods" LOFT_INSULATION = "loft_insulation" PORCH_CANOPY = "porch_canopy" + CHIMNEY = "chimney" + FASCIA = "fascia" + SOFFIT = "soffit" # ====================== # EXTERNAL – WALLS @@ -45,6 +48,8 @@ class Element(str, Enum): STORE_DOOR = "store_door" GARAGE_DOOR = "garage_door" COMMUNAL_ENTRANCE_DOOR = "communal_entrance_door" + MAIN_DOOR = "main_door" + BLOCK_ENTRANCE_DOOR = "block_entrance_door" # ====================== # EXTERNAL – AREAS @@ -59,6 +64,8 @@ class Element(str, Enum): BALCONY_BALUSTRADE = "balcony_balustrade" OUTBUILDINGS = "outbuildings" GARAGE_STRUCTURE = "garage_structure" + PAVING = "paving" + ROADS = "roads" # ====================== # INTERNAL – KITCHEN @@ -110,6 +117,7 @@ class Element(str, Enum): COMMUNAL_CCTV = "communal_cctv" COMMUNAL_BIN_STORE = "communal_bin_store" COMMUNAL_REFUSE_CHUTE = "communal_refuse_chute" + COMMUNAL_FLOOR_COVERING = "communal_floor_covering" # ========================================================== # HHSRS – ALL 29 HAZARDS diff --git a/backend/condition/domain/mapping/peabody/peabody_element_map.py b/backend/condition/domain/mapping/peabody/peabody_element_map.py index 80b3aa70..12c4bf66 100644 --- a/backend/condition/domain/mapping/peabody/peabody_element_map.py +++ b/backend/condition/domain/mapping/peabody/peabody_element_map.py @@ -25,13 +25,65 @@ PEABODY_ELEMENT_MAP = { # ========================================================== # EXTERNAL – ROOFS # ========================================================== - (110, 1): ElementMapping(element=Element.ROOF, aspect_type=AspectType.COVERING), + (110, 1): ElementMapping( + element=Element.ROOF, aspect_type=AspectType.MATERIAL, element_instance=1 + ), + (110, 2): ElementMapping( + element=Element.ROOF, aspect_type=AspectType.MATERIAL, element_instance=1 + ), + (110, 3): ElementMapping( + element=Element.CHIMNEY, aspect_type=AspectType.WORK_REQUIRED + ), + (110, 4): ElementMapping(element=Element.FASCIA, aspect_type=AspectType.MATERIAL), + (110, 5): ElementMapping(element=Element.SOFFIT, aspect_type=AspectType.MATERIAL), + (110, 6): ElementMapping( + element=Element.RAINWATER_GOODS, aspect_type=AspectType.MATERIAL + ), + (110, 7): ElementMapping( + element=Element.LOFT_INSULATION, + aspect_type=AspectType.WORK_REQUIRED, # possibly not the right aspect type + ), + (110, 8): ElementMapping( + element=Element.PORCH_CANOPY, aspect_type=AspectType.MATERIAL + ), # ========================================================== # EXTERNAL – DOORS & WINDOWS # ========================================================== (130, 1): ElementMapping( element=Element.EXTERNAL_WINDOWS, aspect_type=AspectType.MATERIAL ), + (130, 2): ElementMapping( + element=Element.COMMUNAL_WINDOWS, aspect_type=AspectType.MATERIAL + ), + (140, 1): ElementMapping( + element=Element.MAIN_DOOR, aspect_type=AspectType.MATERIAL + ), + (140, 2): ElementMapping( + element=Element.STORE_DOOR, aspect_type=AspectType.MATERIAL + ), + (140, 3): ElementMapping( + element=Element.GARAGE_DOOR, aspect_type=AspectType.MATERIAL + ), + (140, 4): ElementMapping( + element=Element.BLOCK_ENTRANCE_DOOR, aspect_type=AspectType.MATERIAL + ), + # ========================================================== + # EXTERNAL AREAS + # ========================================================== + (150, 1): ElementMapping( + element=Element.BLOCK_ENTRANCE_DOOR, aspect_type=AspectType.MATERIAL + ), + (150, 2): ElementMapping( + element=Element.PATHS_AND_HARDSTANDINGS, aspect_type=AspectType.MATERIAL + ), + (150, 3): ElementMapping(element=Element.ROADS, aspect_type=AspectType.MATERIAL), + (150, 4): ElementMapping( + element=Element.BOUNDARY_WALLS, aspect_type=AspectType.MATERIAL + ), + (150, 5): ElementMapping(element=Element.OUTBUILDINGS, aspect_type=AspectType.TYPE), + (150, 6): ElementMapping( + element=Element.GARAGE_STRUCTURE, aspect_type=AspectType.TYPE + ), # ========================================================== # INTERNAL – BATHROOMS & KITCHENS # ========================================================== @@ -39,9 +91,30 @@ PEABODY_ELEMENT_MAP = { (190, 1): ElementMapping( element=Element.BATHROOM, aspect_type=AspectType.CONDITION ), - # -------------------- - # HHSRS (PEABODY) - # -------------------- + # ========================================================== + # COMMUNAL SYSTEMS + # ========================================================== + (200, 1): ElementMapping( + element=Element.COMMUNAL_BOILER, aspect_type=AspectType.TYPE + ), + (200, 2): ElementMapping( + element=Element.COMMUNAL_HEATING, aspect_type=AspectType.TYPE + ), + (200, 3): ElementMapping( + element=Element.COMMUNAL_ELECTRICS, aspect_type=AspectType.TYPE + ), + (200, 4): ElementMapping( + element=Element.COMMUNAL_FIRE_ALARM, aspect_type=AspectType.TYPE + ), + (200, 5): ElementMapping( + element=Element.COMMUNAL_LIFT, aspect_type=AspectType.TYPE + ), + (200, 6): ElementMapping( + element=Element.COMMUNAL_FLOOR_COVERING, aspect_type=AspectType.MATERIAL + ), + # ========================================================== + # HHSRS + # ========================================================== (54, 1): ElementMapping( element=Element.HHSRS_DAMP_AND_MOULD, aspect_type=AspectType.RISK ), @@ -58,22 +131,7 @@ PEABODY_ELEMENT_MAP = { # unhandled -# 'Element: ROOFS - Code: 110, Sub-Element: Chimney - Code: 3', -# 'Element: ROOFS - Code: 110, Sub-Element: Fascia - Code: 4', -# 'Element: ROOFS - Code: 110, Sub-Element: Rainwater Goods - Code: 6', -# 'Element: WINDOWS - Code: 130, Sub-Element: Communal Windows - Code: 2', -# 'Element: DOORS - Code: 140, Sub-Element: Main Doors - Code: 1', -# 'Element: DOORS - Code: 140, Sub-Element: Block Entrance Doors - Code: 4', -# 'Element: EXTERNAL AREAS - Code: 150, Sub-Element: Paving - Code: 1', -# 'Element: EXTERNAL AREAS - Code: 150, Sub-Element: Boundaries - Code: 4', -# 'Element: COMMUNAL - Code: 200, Sub-Element: Communal Boiler - Code: 1', -# 'Element: COMMUNAL - Code: 200, Sub-Element: Communal Heating - Code: 2', -# 'Element: COMMUNAL - Code: 200, Sub-Element: Communal Electrics - Code: 3', -# 'Element: COMMUNAL - Code: 200, Sub-Element: Communal Fire Detection - Code: 4', -# 'Element: COMMUNAL - Code: 200, Sub-Element: Communal Floor Covering - Code: 6', -# 'Element: ROOFS - Code: 110, Sub-Element: Soffit - Code: 5', # 'Element: External - Code: 53, Sub-Element: Window Type 01 - Code: 38', -# 'Element: ROOFS - Code: 110, Sub-Element: Secondary Roof - Code: 2', # 'Element: HEATING - Code: 170, Sub-Element: Boiler - Code: 1', # 'Element: HEATING - Code: 170, Sub-Element: Heating Distribution - Code: 2', # 'Element: ELECTRICS - Code: 180, Sub-Element: Wiring - Code: 1', @@ -83,16 +141,9 @@ PEABODY_ELEMENT_MAP = { # 'Element: HEATING - Code: 170, Sub-Element: Secondary Heating - Code: 3', # 'Element: BATHROOM - Code: 190, Sub-Element: Secondary Toilet - Code: 2', # 'Element: ELECTRICS - Code: 180, Sub-Element: Carbon Monoxide Alarms - Code: 4', -# 'Element: ROOFS - Code: 110, Sub-Element: Porch/Bay/Canopy - Code: 8', # 'Element: HEATING - Code: 170, Sub-Element: Hot Water - Code: 5', -# 'Element: DOORS - Code: 140, Sub-Element: Garage Doors - Code: 3', # 'Element: HEATING - Code: 170, Sub-Element: Cold Water - Code: 4', -# 'Element: DOORS - Code: 140, Sub-Element: Store Doors - Code: 2', -# 'Element: EXTERNAL AREAS - Code: 150, Sub-Element: Hardstanding - Code: 2', # 'Element: WALLS - Code: 120, Sub-Element: Wall Insulation - Code: 3', -# 'Element: EXTERNAL AREAS - Code: 150, Sub-Element: Roads - Code: 3', -# 'Element: ROOFS - Code: 110, Sub-Element: Loft Insulation - Code: 7', -# 'Element: EXTERNAL AREAS - Code: 150, Sub-Element: Outbuilding - Code: 5', # 'Element: Internal - Code: 50, Sub-Element: Additional WC - Code: 1', # 'Element: Internal - Code: 50, Sub-Element: Carbon Monoxide Detector Type - Code: 2', # 'Element: Internal - Code: 50, Sub-Element: CCU - Code: 3', @@ -103,7 +154,6 @@ PEABODY_ELEMENT_MAP = { # 'Element: Internal - Code: 50, Sub-Element: Kitchen Type - Code: 14', # 'Element: Internal - Code: 50, Sub-Element: Primary Bathroom Type - Code: 18', # 'Element: Internal - Code: 50, Sub-Element: Smoke Detector Type - Code: 21', -# 'Element: EXTERNAL AREAS - Code: 150, Sub-Element: Garage - Code: 6', # 'Element: COMMUNAL - Code: 200, Sub-Element: Communal Lifts - Code: 5', # 'Element: COMMUNAL - Code: 200, Sub-Element: Communal Kitchen - Code: 7', # 'Element: COMMUNAL - Code: 200, Sub-Element: Communal Bathroom - Code: 8',