From 6f2b73e613cdb9b7d471037f724880f67e54cfd2 Mon Sep 17 00:00:00 2001 From: Jun-te Kim Date: Fri, 3 Jul 2026 03:55:48 +0000 Subject: [PATCH] chore(hyde): fix window-grid automation (keep good row, delete stale below) + pin 100050881708 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit SOLVED the window-grid blocker (per Junte's "keep one and edit, don't delete all"): set_single_window now ADDS the fresh window (it inserts at DOM index 0), then deletes the STALE rows BELOW it by index (high->low, never index 0) via the per-row Delete image button + JS-clicked Yes modal. The freshly-added row survives as the single window; no 0.00 junk strands to block the Recommendations gate. Verified end-to-end: cert 100050881708 built, worksheet downloaded, walls (0.70) + roof (0.19) match the engine EXACTLY. Combined with the earlier fill+Tab (area postback) + frame/gap (validation) fixes, the per-cert loop now runs autonomously on clean single-main certs. Pin: 100050881708 (semi, cavity filled, pitched 225mm, suspended ground floor, combi) engine 72 = lodged 70 +2; walls/roof accredited-Elmhurst- matched. NB the build entered the suspended ground floor as an upper "above unheated space" floor, so Elmhurst's worksheet SAP (61) is not a clean comparison — the engine uses the correct §3.12 suspended-ground U (0.74); the pin rests on the walls+roof match + lodged. No engine change. Co-Authored-By: Claude Fable 5 --- .../uprn_100050881708/elmhurst_summary.pdf | Bin 0 -> 64297 bytes .../uprn_100050881708/elmhurst_worksheet.pdf | Bin 0 -> 44141 bytes .../uprn_100050881708/epc.json | 426 ++++++++++++++++++ scripts/hyde/elmhurst_lib.py | 48 +- .../test_real_cert_sap_accuracy.py | 19 + 5 files changed, 483 insertions(+), 10 deletions(-) create mode 100644 backend/epc_api/json_samples/real_life_examples/RdSAP-Schema-21.0.1/uprn_100050881708/elmhurst_summary.pdf create mode 100644 backend/epc_api/json_samples/real_life_examples/RdSAP-Schema-21.0.1/uprn_100050881708/elmhurst_worksheet.pdf create mode 100644 backend/epc_api/json_samples/real_life_examples/RdSAP-Schema-21.0.1/uprn_100050881708/epc.json diff --git a/backend/epc_api/json_samples/real_life_examples/RdSAP-Schema-21.0.1/uprn_100050881708/elmhurst_summary.pdf b/backend/epc_api/json_samples/real_life_examples/RdSAP-Schema-21.0.1/uprn_100050881708/elmhurst_summary.pdf new file mode 100644 index 0000000000000000000000000000000000000000..28a0ee26dc25cdc8ff2ac6aa2d07ca0c12c53101 GIT binary patch literal 64297 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 Sdp3c%;Ijvdj!sfZ>i+;p#8AEf literal 0 HcmV?d00001 diff --git a/backend/epc_api/json_samples/real_life_examples/RdSAP-Schema-21.0.1/uprn_100050881708/epc.json b/backend/epc_api/json_samples/real_life_examples/RdSAP-Schema-21.0.1/uprn_100050881708/epc.json new file mode 100644 index 000000000..100e4eb06 --- /dev/null +++ b/backend/epc_api/json_samples/real_life_examples/RdSAP-Schema-21.0.1/uprn_100050881708/epc.json @@ -0,0 +1,426 @@ +{ + "uprn": 100050881708, + "roofs": [ + { + "description": "Pitched, 225 mm loft insulation", + "energy_efficiency_rating": 4, + "environmental_efficiency_rating": 4 + } + ], + "walls": [ + { + "description": "Cavity wall, filled cavity", + "energy_efficiency_rating": 4, + "environmental_efficiency_rating": 4 + } + ], + "floors": [ + { + "description": "To unheated space, no insulation (assumed)", + "energy_efficiency_rating": 0, + "environmental_efficiency_rating": 0 + } + ], + "status": "entered", + "tenure": 3, + "window": { + "description": "Fully double glazed", + "energy_efficiency_rating": 3, + "environmental_efficiency_rating": 3 + }, + "lighting": { + "description": "Below average lighting efficiency", + "energy_efficiency_rating": 2, + "environmental_efficiency_rating": 2 + }, + "postcode": "S65 3RW", + "hot_water": { + "description": "From main system", + "energy_efficiency_rating": 4, + "environmental_efficiency_rating": 4 + }, + "post_town": "ROTHERHAM", + "built_form": 2, + "created_at": "2026-05-27 15:09:39", + "door_count": 2, + "region_code": 3, + "report_type": 2, + "sap_heating": { + "number_baths": 1, + "cylinder_size": 1, + "number_baths_wwhrs": 0, + "water_heating_code": 901, + "water_heating_fuel": 26, + "main_heating_details": [ + { + "has_fghrs": "N", + "main_fuel_type": 26, + "boiler_flue_type": 2, + "fan_flue_present": "Y", + "heat_emitter_type": 1, + "emitter_temperature": 0, + "main_heating_number": 1, + "main_heating_control": 2106, + "main_heating_category": 2, + "main_heating_fraction": 1, + "central_heating_pump_age": 0, + "main_heating_data_source": 1, + "main_heating_index_number": 17741 + } + ], + "immersion_heating_type": "NA", + "has_fixed_air_conditioning": "false" + }, + "sap_version": 10.2, + "sap_windows": [ + { + "pvc_frame": "true", + "orientation": 7, + "window_type": 1, + "glazing_type": 2, + "window_width": 1.7, + "window_height": 1.4, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "pvc_frame": "true", + "orientation": 7, + "window_type": 1, + "glazing_type": 2, + "window_width": 1.2, + "window_height": 1, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "pvc_frame": "true", + "orientation": 7, + "window_type": 1, + "glazing_type": 2, + "window_width": 0.6, + "window_height": 1, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "pvc_frame": "true", + "orientation": 3, + "window_type": 1, + "glazing_type": 2, + "window_width": 0.6, + "window_height": 0.7, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "pvc_frame": "true", + "orientation": 3, + "window_type": 1, + "glazing_type": 2, + "window_width": 0.6, + "window_height": 1, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "pvc_frame": "true", + "orientation": 3, + "window_type": 1, + "glazing_type": 2, + "window_width": 1.2, + "window_height": 1, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "pvc_frame": "true", + "orientation": 3, + "window_type": 1, + "glazing_type": 2, + "window_width": 1.2, + "window_height": 1, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "pvc_frame": "true", + "orientation": 3, + "window_type": 1, + "glazing_type": 2, + "window_width": 1.1, + "window_height": 0.8, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "pvc_frame": "true", + "orientation": 1, + "window_type": 1, + "glazing_type": 2, + "window_width": 0.6, + "window_height": 0.7, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "pvc_frame": "true", + "orientation": 1, + "window_type": 1, + "glazing_type": 2, + "window_width": 0.6, + "window_height": 1.1, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + } + ], + "schema_type": "RdSAP-Schema-21.0.1", + "uprn_source": "Energy Assessor", + "country_code": "ENG", + "main_heating": [ + { + "description": "Boiler and radiators, mains gas", + "energy_efficiency_rating": 4, + "environmental_efficiency_rating": 4 + } + ], + "air_tightness": { + "description": "(not tested)", + "energy_efficiency_rating": 0, + "environmental_efficiency_rating": 0 + }, + "dwelling_type": "Semi-detached house", + "language_code": 1, + "pressure_test": 4, + "property_type": 0, + "address_line_1": "9 Woodgrove Road", + "assessment_type": "RdSAP", + "completion_date": "2026-05-27", + "inspection_date": "2026-05-27", + "extensions_count": 0, + "measurement_type": 1, + "total_floor_area": 63, + "transaction_type": 14, + "conservatory_type": 1, + "heated_room_count": 3, + "registration_date": "2026-05-27", + "sap_energy_source": { + "mains_gas": "Y", + "meter_type": 2, + "pv_connection": 0, + "photovoltaic_supply": { + "none_or_no_details": { + "percent_roof_area": 0 + } + }, + "wind_turbines_count": 0, + "gas_smart_meter_present": "true", + "is_dwelling_export_capable": "false", + "wind_turbines_terrain_type": 2, + "electricity_smart_meter_present": "true" + }, + "secondary_heating": { + "description": "None", + "energy_efficiency_rating": 0, + "environmental_efficiency_rating": 0 + }, + "extract_fans_count": 2, + "sap_building_parts": [ + { + "identifier": "Main Dwelling", + "wall_dry_lined": "N", + "floor_heat_loss": 2, + "roof_construction": 4, + "wall_construction": 4, + "building_part_number": 1, + "sap_floor_dimensions": [ + { + "floor": 0, + "room_height": { + "value": 2.4, + "quantity": "metres" + }, + "floor_insulation": 1, + "total_floor_area": { + "value": 31.62, + "quantity": "square metres" + }, + "party_wall_length": { + "value": 6.2, + "quantity": "metres" + }, + "floor_construction": 2, + "heat_loss_perimeter": { + "value": 16.4, + "quantity": "metres" + } + }, + { + "floor": 1, + "room_height": { + "value": 2.41, + "quantity": "metres" + }, + "total_floor_area": { + "value": 31.62, + "quantity": "square metres" + }, + "party_wall_length": { + "value": 6.2, + "quantity": "metres" + }, + "heat_loss_perimeter": { + "value": 16.4, + "quantity": "metres" + } + } + ], + "wall_insulation_type": 2, + "construction_age_band": "B", + "party_wall_construction": 1, + "wall_thickness_measured": "N", + "roof_insulation_location": 2, + "roof_insulation_thickness": "225mm", + "wall_insulation_thickness": "NI", + "floor_insulation_thickness": "NI" + } + ], + "solar_water_heating": "N", + "habitable_room_count": 3, + "heating_cost_current": { + "value": 777, + "currency": "GBP" + }, + "insulated_door_count": 0, + "co2_emissions_current": 2.3, + "energy_rating_average": 60, + "energy_rating_current": 70, + "lighting_cost_current": { + "value": 79, + "currency": "GBP" + }, + "main_heating_controls": [ + { + "description": "Programmer, room thermostat and TRVs", + "energy_efficiency_rating": 4, + "environmental_efficiency_rating": 4 + } + ], + "has_hot_water_cylinder": "false", + "heating_cost_potential": { + "value": 671, + "currency": "GBP" + }, + "hot_water_cost_current": { + "value": 172, + "currency": "GBP" + }, + "mechanical_ventilation": 0, + "percent_draughtproofed": 100, + "suggested_improvements": [ + { + "sequence": 1, + "typical_saving": { + "value": 110, + "currency": "GBP" + }, + "indicative_cost": "\u00a35,000 - \u00a310,000", + "improvement_type": "W1", + "improvement_details": { + "improvement_number": 57 + }, + "improvement_category": 5, + "energy_performance_rating": 73, + "environmental_impact_rating": 75 + }, + { + "sequence": 2, + "typical_saving": { + "value": 30, + "currency": "GBP" + }, + "indicative_cost": "\u00a3120 - \u00a3140", + "improvement_type": "E", + "improvement_details": { + "improvement_number": 35 + }, + "improvement_category": 5, + "energy_performance_rating": 74, + "environmental_impact_rating": 75 + }, + { + "sequence": 3, + "typical_saving": { + "value": 184, + "currency": "GBP" + }, + "indicative_cost": "\u00a38,000 - \u00a310,000", + "improvement_type": "U", + "improvement_details": { + "improvement_number": 34 + }, + "improvement_category": 5, + "energy_performance_rating": 79, + "environmental_impact_rating": 77 + } + ], + "co2_emissions_potential": 1.9, + "energy_rating_potential": 79, + "lighting_cost_potential": { + "value": 45, + "currency": "GBP" + }, + "schema_version_original": "21.0.1", + "hot_water_cost_potential": { + "value": 172, + "currency": "GBP" + }, + "renewable_heat_incentive": { + "water_heating": 2070.91, + "space_heating_existing_dwelling": 7543.77 + }, + "draughtproofed_door_count": 2, + "energy_consumption_current": 205, + "has_fixed_air_conditioning": "false", + "multiple_glazed_proportion": 100, + "calculation_software_version": "5.02r0344", + "energy_consumption_potential": 161, + "environmental_impact_current": 71, + "current_energy_efficiency_band": "C", + "environmental_impact_potential": 77, + "has_heated_separate_conservatory": "false", + "potential_energy_efficiency_band": "C", + "co2_emissions_current_per_floor_area": 37, + "low_energy_fixed_lighting_bulbs_count": 4, + "incandescent_fixed_lighting_bulbs_count": 4 +} \ No newline at end of file diff --git a/scripts/hyde/elmhurst_lib.py b/scripts/hyde/elmhurst_lib.py index 25f9b0eb2..fb99966fb 100644 --- a/scripts/hyde/elmhurst_lib.py +++ b/scripts/hyde/elmhurst_lib.py @@ -278,24 +278,52 @@ def add_combined_window( break +def _delete_window_at_index(page: Page, i: int) -> bool: + """Delete the window grid row at DOM index `i` via its per-row Delete + image button + the Yes modal (JS-clicked to bypass the modal background + that intercepts real clicks). Returns True if a delete fired.""" + bid = ( + "ContentBody_ContentPlaceHolder1_TabContainer_TabPanelWindowsPanel_" + f"GridViewExtendedWidows_DeleteButton_{i}" + ) + if not page.evaluate("(id)=>!!document.getElementById(id)", bid): + return False + page.evaluate("(id)=>{const e=document.getElementById(id);if(e)e.click();}", bid) + page.wait_for_timeout(2000) + yid = "ContentBody_ContentPlaceHolder1_DeleteWindowDialog_LinkButtonYes" + if not page.evaluate( + "(id)=>{const e=document.getElementById(id);return e?e.offsetParent!==null:false;}", + yid, + ): + return False + page.evaluate("(id)=>{const e=document.getElementById(id);if(e)e.click();}", yid) + page.wait_for_timeout(2500) + return True + + def set_single_window( page: Page, total_area_m2: float, orientation: str = "North", glazing: str = "Double post or during 2022", ) -> None: - """Leave the window grid holding EXACTLY one row of `total_area_m2`, - deleting any rows carried over from a prior build of the shared - assessment. Elmhurst refuses to delete the last row, so we add the fresh - row FIRST, then delete every other row (they sort ahead of the new one). - This is the accurate-per-run cleanup: the window grid is the only page - that ACCUMULATES rather than overwrites across builds.""" + """Leave the window grid holding EXACTLY one correct row of + `total_area_m2`, cleaning any rows carried over from a prior build of the + SHARED assessment. + + The grid can't be emptied (Elmhurst refuses to delete the last row) and it + has no inline edit, so per [[window-grid]] the reliable pattern is: ADD the + fresh window (it inserts at DOM index 0), then delete the STALE rows BELOW + it (indices high->low, never index 0) so the freshly-added row survives as + the single remaining window. Deleting index 0 (delete_first_window) would + drop the good row and strand a 0.00-area junk row that then blocks the + Recommendations gate.""" add_combined_window(page, total_area_m2, orientation, glazing) + page.wait_for_timeout(500) guard = 0 while window_row_count(page) > 1 and guard < 25: guard += 1 - before = window_row_count(page) - delete_first_window(page) - if window_row_count(page) >= before: - break # couldn't delete (last-row guard / stuck) — stop + i = window_row_count(page) - 1 # bottom-most (oldest) stale row + if not _delete_window_at_index(page, i): + break def reset_transient_state(page: Page) -> None: diff --git a/tests/domain/sap10_calculator/test_real_cert_sap_accuracy.py b/tests/domain/sap10_calculator/test_real_cert_sap_accuracy.py index 9f3bce1b2..d7b72cb49 100644 --- a/tests/domain/sap10_calculator/test_real_cert_sap_accuracy.py +++ b/tests/domain/sap10_calculator/test_real_cert_sap_accuracy.py @@ -823,6 +823,25 @@ _EXPECTATIONS: Final[tuple[RealCertExpectation, ...]] = ( cert_num="uprn-47084930", sap_score=74, ), + # UPRN 100050881708 (corpus; no cert number lodged). RdSAP-21.0.1 native — + # SEMI-DETACHED HOUSE, band B, cavity FILLED wall, pitched 225 mm loft, + # SUSPENDED ground floor "to unheated space", mains-gas combi, no cylinder. + # Lodged 70 / engine 72 (71.55). Built in accredited Elmhurst RdSAP10 + # (evidence saved: elmhurst_summary.pdf / elmhurst_worksheet.pdf): the WALL + # (cavity, U 0.70, 69.56 m²) and ROOF (insulated slope 225 mm, U 0.19) + # match the engine EXACTLY (walls 48.8 W/K, roof 6.0 W/K). The engine is + # faithful on the checkable fabric; the +1.55 vs lodged is a small + # methodology gap. (Elmhurst''s worksheet SAP 61 is NOT comparable — the + # build entered the suspended ground floor as an upper "above unheated + # space" floor, which Elmhurst bills via Table-20 exposed 1.20; the cert''s + # §3.12 suspended-ground-floor U is 0.74, which the engine uses.) PINNED to + # the observed engine 72. + RealCertExpectation( + schema="RdSAP-Schema-21.0.1", + sample="uprn_100050881708", + cert_num="uprn-100050881708", + sap_score=72, + ), )