From 0ce0228c3191c3d642f0a5f12638b210e8a36fc2 Mon Sep 17 00:00:00 2001 From: Daniel Roth Date: Fri, 15 May 2026 14:45:10 +0000 Subject: [PATCH] =?UTF-8?q?=5Fbuild=5Frows=20returns=20structured=20audit?= =?UTF-8?q?=20rows=20from=20a=20Plan=20=F0=9F=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/magic_plan/audit_script.py | 25 +++++++++++++++++++ backend/magic_plan/tests/test_audit_script.py | 13 ++++++++++ 2 files changed, 38 insertions(+) create mode 100644 backend/magic_plan/audit_script.py create mode 100644 backend/magic_plan/tests/test_audit_script.py diff --git a/backend/magic_plan/audit_script.py b/backend/magic_plan/audit_script.py new file mode 100644 index 00000000..e418b712 --- /dev/null +++ b/backend/magic_plan/audit_script.py @@ -0,0 +1,25 @@ +from dataclasses import dataclass +from typing import Optional + +from datatypes.magicplan.domain.models import Plan + + +@dataclass +class AuditRow: + floor_level: Optional[int] = None # set only on floor-separator rows + room_name: Optional[str] = None + room_width_m: Optional[float] = None + room_length_m: Optional[float] = None + room_area_m2: Optional[float] = None + window_label: Optional[str] = None + window_location: Optional[str] = None + window_width_m: Optional[float] = None + window_height_m: Optional[float] = None + window_area_m2: Optional[float] = None + window_opening_type: Optional[str] = None + door_location: Optional[str] = None + door_width_mm: Optional[float] = None + + +def _build_rows(plan: Plan) -> list[AuditRow]: + raise NotImplementedError diff --git a/backend/magic_plan/tests/test_audit_script.py b/backend/magic_plan/tests/test_audit_script.py new file mode 100644 index 00000000..9c39edb6 --- /dev/null +++ b/backend/magic_plan/tests/test_audit_script.py @@ -0,0 +1,13 @@ +from datatypes.magicplan.domain.models import Door, Floor, Plan, Room, Window +from backend.magic_plan.audit_script import AuditRow, _build_rows + + +def test_build_rows_empty_plan_returns_empty_list() -> None: + # Arrange + plan = Plan(uid="x", name=None, floors=[]) + + # Act + rows: list[AuditRow] = _build_rows(plan) + + # Assert + assert rows == []