From 6b4a8dfef1bb9071f8926f557c9fd6d0bd2993e9 Mon Sep 17 00:00:00 2001 From: Daniel Roth Date: Tue, 21 Apr 2026 10:45:56 +0000 Subject: [PATCH] =?UTF-8?q?extract=20water=20heating=20cylinder=20thicknes?= =?UTF-8?q?s=20alternative=20field=20name=20=F0=9F=9F=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/documents_parser/extractor.py | 5 +++-- backend/documents_parser/tests/test_extractor.py | 9 +++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/backend/documents_parser/extractor.py b/backend/documents_parser/extractor.py index 8e19d05c..eb132a2d 100644 --- a/backend/documents_parser/extractor.py +++ b/backend/documents_parser/extractor.py @@ -573,7 +573,8 @@ class PasHubRdSapSiteNotesExtractor: ) def _parse_water_heating(self, data: List[str]) -> WaterHeating: - thickness_raw = self._get_in(data, "Insulation Thickness (mm):") + thickness_raw = self._get_in(data, "Insulation Thickness (mm):") or self._get_in(data, "Thickness:") + thickness_mm = int(thickness_raw.split()[0]) if thickness_raw else None return WaterHeating( type=self._get_in(data, "Water Heating Type:") or "", system=self._get_in(data, "Water Heating System:") or "", @@ -582,7 +583,7 @@ class PasHubRdSapSiteNotesExtractor: data, "Cylinder Measured Heat Loss:" ), insulation_type=self._get_in(data, "Insulation Type:"), - insulation_thickness_mm=int(thickness_raw) if thickness_raw else None, + insulation_thickness_mm=thickness_mm, has_thermostat=self._optional_bool_in(data, "Cylinder Thermostat:"), ) diff --git a/backend/documents_parser/tests/test_extractor.py b/backend/documents_parser/tests/test_extractor.py index 6ca35110..99e46eb5 100644 --- a/backend/documents_parser/tests/test_extractor.py +++ b/backend/documents_parser/tests/test_extractor.py @@ -377,9 +377,18 @@ class TestWaterHeatingCylinderThickness: load_text_fixture_2() ).extract_heating_and_hot_water() + @pytest.fixture + def hhw_no_cylinder(self) -> HeatingAndHotWater: + return PasHubRdSapSiteNotesExtractor( + load_text_fixture() + ).extract_heating_and_hot_water() + def test_cylinder_insulation_thickness_mm(self, hhw: HeatingAndHotWater) -> None: assert hhw.water_heating.insulation_thickness_mm == 38 + def test_cylinder_insulation_thickness_mm_absent(self, hhw_no_cylinder: HeatingAndHotWater) -> None: + assert hhw_no_cylinder.water_heating.insulation_thickness_mm is None + class TestHeatingAndHotWater: @pytest.fixture