From 3da9a643e0cdd014adf0bf633e69e75fbccdc443 Mon Sep 17 00:00:00 2001 From: Daniel Roth Date: Mon, 26 Jan 2026 12:37:57 +0000 Subject: [PATCH] more peabody mappings --- backend/condition/domain/aspect_type.py | 4 + backend/condition/domain/element.py | 25 +++- .../mapping/peabody/peabody_element_map.py | 111 +++++++++++++----- 3 files changed, 110 insertions(+), 30 deletions(-) diff --git a/backend/condition/domain/aspect_type.py b/backend/condition/domain/aspect_type.py index 94522b03..2dc2be58 100644 --- a/backend/condition/domain/aspect_type.py +++ b/backend/condition/domain/aspect_type.py @@ -29,3 +29,7 @@ class AspectType(str, Enum): FIRE_RATING = "fire_rating" EXTERNAL_DECORATION = "external_decoration" WORK_REQUIRED = "work_required" + AGE_BAND = "age_band" + CONSTRUCTION_TYPE = "construction_type" + CLASSIFICATION = "classification" + SYSTEM = "system" diff --git a/backend/condition/domain/element.py b/backend/condition/domain/element.py index 5fbd35dc..b146d09b 100644 --- a/backend/condition/domain/element.py +++ b/backend/condition/domain/element.py @@ -16,6 +16,8 @@ class Element(str, Enum): ASBESTOS = "asbestos" QUALITY_STANDARD = "quality_standard" CCU = "ccu" + PASSENGER_LIFT = "passenger_lift" + STAIRLIFT = "stairlift" # ====================== # EXTERNAL – ROOF @@ -130,21 +132,40 @@ class Element(str, Enum): CARBON_MONOXIDE_DETECTION = "carbon_monoxide_detection" FIRE_DOOR_RATING = "fire_door_rating" FIRE_RISK_ASSESSMENT = "fire" + INTERNAL_WIRING = ( + "internal_wiring" # Is this definitely different from ELECTRICAL_WIRING? + ) # ====================== - # COMMUNAL SYSTEMS + # COMMUNAL # ====================== COMMUNAL_HEATING = "communal_heating" COMMUNAL_BOILER = "communal_boiler" COMMUNAL_ELECTRICS = "communal_electrics" COMMUNAL_FIRE_ALARM = "communal_fire_alarm" COMMUNAL_EMERGENCY_LIGHTING = "communal_emergency_lighting" - COMMUNAL_LIFT = "communal_lift" COMMUNAL_DOOR_ENTRY = "communal_door_entry" COMMUNAL_CCTV = "communal_cctv" COMMUNAL_BIN_STORE = "communal_bin_store" + COMMUNAL_BIN_STORE_DOORS = "communal_bin_store_doors" + COMMUNAL_BIN_STORE_WALLS = "communal_bin_store_wall" COMMUNAL_REFUSE_CHUTE = "communal_refuse_chute" COMMUNAL_FLOOR_COVERING = "communal_floor_covering" + COMMUNAL_KITCHEN = "communal_kitchen" + COMMUNAL_BATHROOM = "communal_bathroom" + COMMUNAL_TOILETS = "communal_toilets" + COMMUNAL_GATES = "communal_gates" + COMMUNAL_LIFT = "communal_lift" + COMMUNAL_PASSENGER_LIFT = "communal_passenger_lift" + COMMUNAL_BALCONY_WALKWAY = "communal_balcony_walkway" + COMMUNAL_PRIMARY_ENTRANCE = "communal_primary_entrance" + COMMUNAL_INTERNAL_DECORATIONS = "communal_internal_decorations" + COMMUNAL_INTERNAL_FLOOR = "communal_internal_floor" + COMMUNAL_WALKWAYS = "communal_walkways" + COMMUNAL_EXTERNAL_DOORS = "communal_external_doors" + COMMUNAL_STAIRS = "communal_stairs" + COMMUNAL_AERIAL = "communal_aerial" + COMMUNAL_AOV = "communal_aov" # ========================================================== # 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 8c29c60b..08e63568 100644 --- a/backend/condition/domain/mapping/peabody/peabody_element_map.py +++ b/backend/condition/domain/mapping/peabody/peabody_element_map.py @@ -20,6 +20,19 @@ PEABODY_ELEMENT_MAP = { (50, 21): ElementMapping( element=Element.SMOKE_DETECTION, aspect_type=AspectType.TYPE ), + (50, 22): ElementMapping( + element=Element.STAIRLIFT, aspect_type=AspectType.PRESENCE + ), + (100, 3): ElementMapping(element=Element.PROPERTY, aspect_type=AspectType.AGE_BAND), + (100, 14): ElementMapping( + element=Element.PROPERTY, aspect_type=AspectType.CONSTRUCTION_TYPE + ), + (100, 16): ElementMapping( + element=Element.PROPERTY, aspect_type=AspectType.CLASSIFICATION + ), + (210, 2): ElementMapping( + element=Element.PASSENGER_LIFT, aspect_type=AspectType.TYPE + ), # ========================================================== # EXTERNAL – WALLS # ========================================================== @@ -238,8 +251,47 @@ PEABODY_ELEMENT_MAP = { element=Element.SECONDARY_TOILET, aspect_type=AspectType.TYPE ), # ========================================================== - # COMMUNAL SYSTEMS + # COMMUNAL # ========================================================== + (51, 1): ElementMapping( + element=Element.COMMUNAL_AERIAL, aspect_type=AspectType.PRESENCE + ), + (51, 2): ElementMapping( + element=Element.COMMUNAL_AOV, aspect_type=AspectType.PRESENCE + ), + (51, 3): ElementMapping( + element=Element.COMMUNAL_BALCONY_WALKWAY, aspect_type=AspectType.PRESENCE + ), + (51, 5): ElementMapping( + element=Element.COMMUNAL_BIN_STORE_DOORS, aspect_type=AspectType.PRESENCE + ), + (51, 7): ElementMapping( + element=Element.COMMUNAL_BIN_STORE_WALLS, aspect_type=AspectType.MATERIAL + ), + (51, 14): ElementMapping( + element=Element.COMMUNAL_DOOR_ENTRY, aspect_type=AspectType.SYSTEM + ), + (51, 17): ElementMapping( + element=Element.COMMUNAL_EXTERNAL_DOORS, aspect_type=AspectType.MATERIAL + ), + (51, 20): ElementMapping( + element=Element.COMMUNAL_INTERNAL_DECORATIONS, aspect_type=AspectType.PRESENCE + ), + (51, 22): ElementMapping( + element=Element.COMMUNAL_INTERNAL_FLOOR, aspect_type=AspectType.FINISH + ), + (51, 27): ElementMapping( + element=Element.COMMUNAL_PASSENGER_LIFT, aspect_type=AspectType.TYPE + ), + (51, 28): ElementMapping( + element=Element.COMMUNAL_PRIMARY_ENTRANCE, aspect_type=AspectType.MATERIAL + ), + (51, 32): ElementMapping( + element=Element.COMMUNAL_STAIRS, aspect_type=AspectType.FINISH + ), + (51, 36): ElementMapping( + element=Element.COMMUNAL_WALKWAYS, aspect_type=AspectType.FINISH + ), (200, 1): ElementMapping( element=Element.COMMUNAL_BOILER, aspect_type=AspectType.TYPE ), @@ -258,6 +310,18 @@ PEABODY_ELEMENT_MAP = { (200, 6): ElementMapping( element=Element.COMMUNAL_FLOOR_COVERING, aspect_type=AspectType.MATERIAL ), + (200, 7): ElementMapping( + element=Element.COMMUNAL_KITCHEN, aspect_type=AspectType.TYPE + ), + (200, 8): ElementMapping( + element=Element.COMMUNAL_BATHROOM, aspect_type=AspectType.TYPE + ), + (200, 9): ElementMapping( + element=Element.COMMUNAL_TOILETS, aspect_type=AspectType.TYPE + ), + (200, 10): ElementMapping( + element=Element.COMMUNAL_GATES, aspect_type=AspectType.TYPE + ), # ========================================================== # INTERNAL – HEATING # ========================================================== @@ -295,6 +359,24 @@ PEABODY_ELEMENT_MAP = { element=Element.HOT_WATER_SYSTEM, aspect_type=AspectType.TYPE ), # ========================================================== + # ELECTRICS + # ========================================================== + (50, 24): ElementMapping( + element=Element.INTERNAL_WIRING, aspect_type=AspectType.MATERIAL + ), + (180, 1): ElementMapping( + element=Element.ELECTRICAL_WIRING, aspect_type=AspectType.WORK_REQUIRED + ), # Not certain about the AspectType - only example in the sample data is "Full Rewire" + (180, 2): ElementMapping( + element=Element.CONSUMER_UNIT, aspect_type=AspectType.TYPE + ), + (180, 3): ElementMapping( + element=Element.SMOKE_DETECTION, aspect_type=AspectType.TYPE + ), # Duplicate of (50, 21) - correct? + (180, 4): ElementMapping( + element=Element.CARBON_MONOXIDE_DETECTION, aspect_type=AspectType.TYPE + ), # Duplicate of (50, 2) - correct? + # ========================================================== # HHSRS # ========================================================== (54, 1): ElementMapping( @@ -313,31 +395,6 @@ PEABODY_ELEMENT_MAP = { # unhandled -# 'Element: ELECTRICS - Code: 180, Sub-Element: Wiring - Code: 1', -# 'Element: ELECTRICS - Code: 180, Sub-Element: Consumer Unit - Code: 2', -# 'Element: ELECTRICS - Code: 180, Sub-Element: Smoke Detectors - Code: 3', -# 'Element: ELECTRICS - Code: 180, Sub-Element: Carbon Monoxide Alarms - Code: 4', -# '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', -# 'Element: COMMUNAL - Code: 200, Sub-Element: Communal Toilets - Code: 9', -# 'Element: Internal - Code: 50, Sub-Element: Wiring - Code: 24', -# 'Element: PASSENGER LIFTS - Code: 210, Sub-Element: Lift - Code: 2', -# 'Element: COMMUNAL - Code: 200, Sub-Element: Communal Gates - Code: 10', -# 'Element: GENERAL - Code: 100, Sub-Element: Property Age Band - Code: 3', -# 'Element: GENERAL - Code: 100, Sub-Element: Construction Type - Code: 14', -# 'Element: GENERAL - Code: 100, Sub-Element: Classification - Code: 16', -# 'Element: Communal - Code: 51, Sub-Element: Common Balcony/Walkway - Code: 3', -# 'Element: Communal - Code: 51, Sub-Element: Common Bin Store Doors - Code: 5', -# 'Element: Communal - Code: 51, Sub-Element: Common Bin Store Walls - Code: 7', -# 'Element: Communal - Code: 51, Sub-Element: Common Primary Entrance Material - Code: 28', -# 'Element: Communal - Code: 51, Sub-Element: Common Internal Decorations - Code: 20', -# 'Element: Communal - Code: 51, Sub-Element: Common Internal Floor Finish - Code: 22', -# 'Element: Communal - Code: 51, Sub-Element: Common Walkways Finish - Code: 36', -# 'Element: Communal - Code: 51, Sub-Element: Common External Doors Other - Code: 17', -# 'Element: Communal - Code: 51, Sub-Element: Common Stair Finish - Code: 32', -# 'Element: Communal - Code: 51, Sub-Element: Common Aerial - Code: 1', -# 'Element: Communal - Code: 51, Sub-Element: Common AOV - Code: 2', # 'Element: Communal - Code: 51, Sub-Element: Common Door Entry System - Code: 14', # 'Element: Communal - Code: 51, Sub-Element: Common Fire Alarm - Code: 19', # 'Element: Communal - Code: 51, Sub-Element: Common Internal Doors - Code: 21', @@ -351,7 +408,6 @@ PEABODY_ELEMENT_MAP = { # 'Element: Communal - Code: 51, Sub-Element: Common Secondary Entrance Material - Code: 30', # 'Element: Communal - Code: 51, Sub-Element: Common Warden Call System - Code: 37', # 'Element: Communal - Code: 51, Sub-Element: Common Boiler - Code: 9', -# 'Element: Communal - Code: 51, Sub-Element: Common Passenger Lift - Code: 27', # 'Element: Communal - Code: 51, Sub-Element: Common Store Doors - Code: 33', # 'Element: Communal - Code: 51, Sub-Element: Common BMS - Code: 8', # 'Element: Communal - Code: 51, Sub-Element: Common Booster Pump - Code: 10', @@ -369,6 +425,5 @@ PEABODY_ELEMENT_MAP = { # 'Element: Communal - Code: 51, Sub-Element: Common Cirulation Space - Code: 12', # 'Element: Internal - Code: 50, Sub-Element: Door Entry Handset - Code: 8', # 'Element: Internal - Code: 50, Sub-Element: Loft Insulation - Code: 15', -# 'Element: Internal - Code: 50, Sub-Element: Stairlift - Code: 22', # 'Element: Internal - Code: 50, Sub-Element: Disabled Hoist Tracking - Code: 7', # 'Element: Internal - Code: 50, Sub-Element: Disabled Facilities - Code: 26'