diff --git a/backend/magic_plan/models.py b/backend/magic_plan/models.py index 5bb5e413..016f2c65 100644 --- a/backend/magic_plan/models.py +++ b/backend/magic_plan/models.py @@ -14,6 +14,7 @@ class MagicPlanRoomPoint: @dataclass class MagicPlanWallPoint: """Point in — absolute coords, no uid or values.""" + x: float y: float height: float @@ -22,18 +23,19 @@ class MagicPlanWallPoint: @dataclass class MagicPlanDoor: """Door in context — wall-relative position.""" + wall_point_index: int type: str - u: float # position along wall (0-1) - width: float # m - depth: float # m - height: float # m + u: float + width: float # m + depth: float # m + height: float # m orientation: int snapped_type: str snapped_position: float - snapped_width: float # m - snapped_depth: float # m - snapped_height: float # m + snapped_width: float # m + snapped_depth: float # m + snapped_height: float # m snapped_orientation: int inset_x: float inset_y: float @@ -45,18 +47,19 @@ class MagicPlanDoor: @dataclass class MagicPlanWindow: """Window in context — wall-relative position.""" + wall_point_index: int type: str - u: float # position along wall (0-1) - width: float # m - depth: float # m - height: float # m + u: float + width: float # m + depth: float # m + height: float # m orientation: int snapped_type: str snapped_position: float - snapped_width: float # m - snapped_depth: float # m - snapped_height: float # m + snapped_width: float # m + snapped_depth: float # m + snapped_height: float # m snapped_orientation: int inset_x: float inset_y: float @@ -67,14 +70,15 @@ class MagicPlanWindow: @dataclass class MagicPlanExplodedOpening: """Door or window in context — absolute coords, no snapped* fields.""" + type: str x1: float y1: float x2: float y2: float - width: float # m - depth: float # m - height: float # m + width: float # m + depth: float # m + height: float # m inset_x: float inset_y: float orientation: int @@ -89,12 +93,12 @@ class MagicPlanFurniture: snapped_x: float snapped_y: float angle: float - width: float # m - depth: float # m - height: float # m - snapped_width: float # m - snapped_depth: float # m - snapped_height: float # m + width: float # m + depth: float # m + height: float # m + snapped_width: float # m + snapped_depth: float # m + snapped_height: float # m size_lock_0: str size_lock_1: str size_lock_2: str @@ -114,7 +118,7 @@ class MagicPlanMainDimension: @dataclass class MagicPlanExplodedWall: - wall_type: str # "exterior" | "interior" + wall_type: str # "exterior" | "interior" points: list[MagicPlanWallPoint] @@ -132,7 +136,7 @@ class MagicPlanSymbolInstance: uid: str parent_uid: str symbol: str - values: dict[str, str] # ceilingHeight, width, height, depth, distanceUnit, etc. + values: dict[str, str] # ceilingHeight, width, height, depth, distanceUnit, etc. @dataclass @@ -145,9 +149,9 @@ class MagicPlanRoom: was_modified: bool linked_room_0: str linked_room_1: str - area: float # m² - perimeter: float # m - values: dict[str, str] # ceilingHeight, label, etc. + area: float # m² + perimeter: float # m + values: dict[str, str] # ceilingHeight, label, etc. points: list[MagicPlanRoomPoint] doors: list[MagicPlanDoor] windows: list[MagicPlanWindow] @@ -159,12 +163,12 @@ class MagicPlanRoom: class MagicPlanFloor: uid: str name: str - floor_type: str # "0"=ground, "1"=upper, "2"=basement + floor_type: str # "0"=ground, "1"=upper, "2"=basement rotation: float compass_angle: float - area_without_walls: float # m² + area_without_walls: float # m² area_with_interior_walls_only: float # m² - area_with_walls: float # m² + area_with_walls: float # m² symbol_instance: MagicPlanSymbolInstance rooms: list[MagicPlanRoom] furniture: list[MagicPlanFurniture] # floor-level furniture (not inside any room) @@ -174,6 +178,7 @@ class MagicPlanFloor: @dataclass class MagicPlanSummary: """Plan metadata returned by the list-plans API endpoint.""" + id: str project_id: str name: str @@ -192,6 +197,7 @@ class MagicPlanSummary: @dataclass class MagicPlanDetail: """Full plan response: summary metadata + parsed XML plan.""" + summary: MagicPlanSummary plan_xml: "MagicPlanPlan" @@ -202,12 +208,12 @@ class MagicPlanPlan: uid: str name: str type: str - interior_wall_width: float # m - exterior_wall_width: float # m + interior_wall_width: float # m + exterior_wall_width: float # m schematic: bool has_land_survey_address: bool last_patch_identifier: str last_roll_identifier: str - values: dict[str, str] # date, statistics.*, distanceUnit, etc. + values: dict[str, str] # date, statistics.*, distanceUnit, etc. floors: list[MagicPlanFloor] interior_room_floors: list[MagicPlanFloor] # from