From e6878a821fa1a882632dc6a80382b6d50c953154 Mon Sep 17 00:00:00 2001 From: Daniel Roth Date: Fri, 15 May 2026 14:48:12 +0000 Subject: [PATCH] =?UTF-8?q?=5Fbuild=5Frows=20produces=20correct=20row=20gr?= =?UTF-8?q?oups,=20window=20labels,=20and=20location=20fields=20?= =?UTF-8?q?=F0=9F=9F=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/magic_plan/audit_script.py | 37 +++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/backend/magic_plan/audit_script.py b/backend/magic_plan/audit_script.py index e418b712..73412915 100644 --- a/backend/magic_plan/audit_script.py +++ b/backend/magic_plan/audit_script.py @@ -22,4 +22,39 @@ class AuditRow: def _build_rows(plan: Plan) -> list[AuditRow]: - raise NotImplementedError + rows: list[AuditRow] = [] + window_counter = 1 + + for floor in plan.floors: + rows.append(AuditRow(floor_level=floor.level)) + + for room in floor.rooms: + n_rows = max(1, len(room.windows), len(room.doors)) + + for i in range(n_rows): + window = room.windows[i] if i < len(room.windows) else None + door = room.doors[i] if i < len(room.doors) else None + + row = AuditRow( + room_name=room.name if i == 0 else None, + room_width_m=room.width_m if i == 0 else None, + room_length_m=room.length_m if i == 0 else None, + room_area_m2=room.area_m2 if i == 0 else None, + ) + + if window is not None: + row.window_label = f"W{window_counter}" + row.window_location = room.name + row.window_width_m = window.width_m + row.window_height_m = window.height_m + row.window_area_m2 = window.area_m2 + row.window_opening_type = window.opening_type + window_counter += 1 + + if door is not None: + row.door_location = room.name + row.door_width_mm = door.width_mm + + rows.append(row) + + return rows