diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/0350-2968-2650-2796-5255.json b/domain/sap10_calculator/rdsap/tests/fixtures/golden/0350-2968-2650-2796-5255.json new file mode 100644 index 00000000..a98d8c89 --- /dev/null +++ b/domain/sap10_calculator/rdsap/tests/fixtures/golden/0350-2968-2650-2796-5255.json @@ -0,0 +1,474 @@ +{ + "uprn": 100110215925, + "roofs": [ + { + "description": "Pitched, 300 mm loft insulation", + "energy_efficiency_rating": 5, + "environmental_efficiency_rating": 5 + } + ], + "walls": [ + { + "description": "Cavity wall, filled cavity and external insulation", + "energy_efficiency_rating": 5, + "environmental_efficiency_rating": 5 + } + ], + "floors": [ + { + "description": "Solid, no insulation (assumed)", + "energy_efficiency_rating": 0, + "environmental_efficiency_rating": 0 + }, + { + "description": "To external air, no insulation (assumed)", + "energy_efficiency_rating": 0, + "environmental_efficiency_rating": 0 + } + ], + "status": "entered", + "tenure": 2, + "window": { + "description": "High performance glazing", + "energy_efficiency_rating": 4, + "environmental_efficiency_rating": 4 + }, + "addendum": { + "addendum_numbers": [ + 8 + ] + }, + "lighting": { + "description": "Good lighting efficiency", + "energy_efficiency_rating": 4, + "environmental_efficiency_rating": 4 + }, + "postcode": "CA7 2HG", + "hot_water": { + "description": "From main system", + "energy_efficiency_rating": 3, + "environmental_efficiency_rating": 5 + }, + "post_town": "WIGTON", + "built_form": 4, + "created_at": "2026-05-22 14:30:29", + "door_count": 2, + "region_code": 9, + "report_type": 2, + "sap_heating": { + "number_baths": 1, + "cylinder_size": 3, + "shower_outlets": [ + { + "shower_wwhrs": 1, + "shower_outlet_type": 2 + } + ], + "number_baths_wwhrs": 0, + "water_heating_code": 901, + "water_heating_fuel": 29, + "cylinder_thermostat": "Y", + "main_heating_details": [ + { + "has_fghrs": "N", + "main_fuel_type": 29, + "heat_emitter_type": 1, + "emitter_temperature": 0, + "main_heating_number": 1, + "main_heating_control": 2206, + "main_heating_category": 4, + "main_heating_fraction": 1, + "mcs_installed_heat_pump": "false", + "central_heating_pump_age": 0, + "main_heating_data_source": 1, + "main_heating_index_number": 104568 + } + ], + "immersion_heating_type": "NA", + "cylinder_insulation_type": 1, + "has_fixed_air_conditioning": "false", + "cylinder_insulation_thickness": 50 + }, + "sap_version": 10.2, + "sap_windows": [ + { + "orientation": 4, + "window_type": 1, + "glazing_type": 14, + "window_width": 1.14, + "window_height": 0.94, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "orientation": 8, + "window_type": 1, + "glazing_type": 14, + "window_width": 1.72, + "window_height": 1.27, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "orientation": 8, + "window_type": 1, + "glazing_type": 14, + "window_width": 1.14, + "window_height": 0.94, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "orientation": 4, + "window_type": 1, + "glazing_type": 14, + "window_width": 1.14, + "window_height": 0.94, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "orientation": 4, + "window_type": 1, + "glazing_type": 14, + "window_width": 1.19, + "window_height": 1.19, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "orientation": 4, + "window_type": 1, + "glazing_type": 14, + "window_width": 1.14, + "window_height": 0.94, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "orientation": 4, + "window_type": 1, + "glazing_type": 14, + "window_width": 1.14, + "window_height": 0.94, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "orientation": 8, + "window_type": 1, + "glazing_type": 14, + "window_width": 1.77, + "window_height": 0.94, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "orientation": 8, + "window_type": 1, + "glazing_type": 14, + "window_width": 1.14, + "window_height": 0.94, + "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": "Air source heat pump, radiators, electric", + "energy_efficiency_rating": 4, + "environmental_efficiency_rating": 5 + } + ], + "air_tightness": { + "description": "(not tested)", + "energy_efficiency_rating": 0, + "environmental_efficiency_rating": 0 + }, + "dwelling_type": "Mid-terrace house", + "language_code": 1, + "pressure_test": 4, + "property_type": 0, + "address_line_1": "8 The Muslins", + "address_line_2": "Plumbland", + "address_line_3": "Aspatria", + "assessment_type": "RdSAP", + "completion_date": "2026-05-22", + "inspection_date": "2026-05-18", + "extensions_count": 1, + "measurement_type": 1, + "total_floor_area": 91, + "transaction_type": 5, + "conservatory_type": 1, + "heated_room_count": 4, + "registration_date": "2026-05-22", + "sap_energy_source": { + "mains_gas": "N", + "meter_type": 2, + "pv_batteries": [ + { + "battery_capacity": 5 + } + ], + "pv_connection": 2, + "pv_battery_count": 1, + "photovoltaic_supply": [ + [ + { + "pitch": 3, + "peak_power": 1.5, + "orientation": 4, + "overshading": 1 + } + ], + [ + { + "pitch": 3, + "peak_power": 1.5, + "orientation": 8, + "overshading": 1 + } + ] + ], + "wind_turbines_count": 0, + "gas_smart_meter_present": "false", + "is_dwelling_export_capable": "true", + "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, + "lzc_energy_sources": [ + 9, + 11 + ], + "sap_building_parts": [ + { + "identifier": "Main Dwelling", + "wall_dry_lined": "N", + "wall_thickness": 400, + "floor_heat_loss": 7, + "roof_construction": 4, + "wall_construction": 4, + "building_part_number": 1, + "sap_floor_dimensions": [ + { + "floor": 0, + "room_height": { + "value": 2.48, + "quantity": "metres" + }, + "floor_insulation": 1, + "total_floor_area": { + "value": 42.32, + "quantity": "square metres" + }, + "party_wall_length": { + "value": 5.49, + "quantity": "metres" + }, + "floor_construction": 1, + "heat_loss_perimeter": { + "value": 20.96, + "quantity": "metres" + } + }, + { + "floor": 1, + "room_height": { + "value": 2.41, + "quantity": "metres" + }, + "total_floor_area": { + "value": 42.32, + "quantity": "square metres" + }, + "party_wall_length": { + "value": 5.49, + "quantity": "metres" + }, + "heat_loss_perimeter": { + "value": 15.5, + "quantity": "metres" + } + } + ], + "wall_insulation_type": 6, + "construction_age_band": "D", + "party_wall_construction": 0, + "wall_thickness_measured": "Y", + "roof_insulation_location": 2, + "roof_insulation_thickness": "300mm", + "wall_insulation_thickness": "100mm", + "floor_insulation_thickness": "NI" + }, + { + "identifier": "Extension 1", + "wall_dry_lined": "N", + "wall_thickness": 400, + "floor_heat_loss": 1, + "roof_construction": 4, + "wall_construction": 4, + "building_part_number": 2, + "sap_floor_dimensions": [ + { + "floor": 0, + "room_height": { + "value": 2.41, + "quantity": "metres" + }, + "floor_insulation": 1, + "total_floor_area": { + "value": 5.9, + "quantity": "square metres" + }, + "party_wall_length": { + "value": 5.46, + "quantity": "metres" + }, + "floor_construction": 1, + "heat_loss_perimeter": { + "value": 2.16, + "quantity": "metres" + } + } + ], + "wall_insulation_type": 6, + "construction_age_band": "D", + "party_wall_construction": 0, + "wall_thickness_measured": "Y", + "roof_insulation_location": 2, + "roof_insulation_thickness": "300mm", + "wall_insulation_thickness": "100mm", + "floor_insulation_thickness": "NI" + } + ], + "solar_water_heating": "N", + "habitable_room_count": 4, + "heating_cost_current": { + "value": 788, + "currency": "GBP" + }, + "insulated_door_count": 2, + "co2_emissions_current": 0.5, + "energy_rating_average": 60, + "energy_rating_current": 84, + "lighting_cost_current": { + "value": 63, + "currency": "GBP" + }, + "main_heating_controls": [ + { + "description": "Programmer, TRVs and bypass", + "energy_efficiency_rating": 3, + "environmental_efficiency_rating": 3 + } + ], + "has_hot_water_cylinder": "true", + "heating_cost_potential": { + "value": 707, + "currency": "GBP" + }, + "hot_water_cost_current": { + "value": 506, + "currency": "GBP" + }, + "insulated_door_u_value": 1.1, + "mechanical_ventilation": 0, + "percent_draughtproofed": 100, + "suggested_improvements": [ + { + "sequence": 1, + "typical_saving": { + "value": 81, + "currency": "GBP" + }, + "indicative_cost": "\u00a35,000 - \u00a310,000", + "improvement_type": "W2", + "improvement_details": { + "improvement_number": 58 + }, + "improvement_category": 5, + "energy_performance_rating": 86, + "environmental_impact_rating": 96 + }, + { + "sequence": 2, + "typical_saving": { + "value": 44, + "currency": "GBP" + }, + "indicative_cost": "\u00a34,000 - \u00a37,000", + "improvement_type": "N", + "improvement_details": { + "improvement_number": 19 + }, + "improvement_category": 5, + "energy_performance_rating": 87, + "environmental_impact_rating": 96 + } + ], + "co2_emissions_potential": 0.4, + "energy_rating_potential": 87, + "lighting_cost_potential": { + "value": 63, + "currency": "GBP" + }, + "schema_version_original": "21.0.1", + "hot_water_cost_potential": { + "value": 454, + "currency": "GBP" + }, + "renewable_heat_incentive": { + "water_heating": 2707.44, + "space_heating_existing_dwelling": 7230.68 + }, + "draughtproofed_door_count": 2, + "energy_consumption_current": 56, + "has_fixed_air_conditioning": "false", + "multiple_glazed_proportion": 100, + "calculation_software_version": "5.02r0344", + "energy_consumption_potential": 48, + "environmental_impact_current": 96, + "current_energy_efficiency_band": "B", + "environmental_impact_potential": 96, + "has_heated_separate_conservatory": "false", + "potential_energy_efficiency_band": "B", + "co2_emissions_current_per_floor_area": 5, + "low_energy_fixed_lighting_bulbs_count": 9, + "incandescent_fixed_lighting_bulbs_count": 0 +} \ No newline at end of file diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/2225-3062-8205-2856-7204.json b/domain/sap10_calculator/rdsap/tests/fixtures/golden/2225-3062-8205-2856-7204.json new file mode 100644 index 00000000..502a5984 --- /dev/null +++ b/domain/sap10_calculator/rdsap/tests/fixtures/golden/2225-3062-8205-2856-7204.json @@ -0,0 +1,438 @@ +{ + "uprn": 10000889035, + "roofs": [ + { + "description": "Pitched, 300 mm loft insulation", + "energy_efficiency_rating": 5, + "environmental_efficiency_rating": 5 + } + ], + "walls": [ + { + "description": "Cavity wall, filled cavity and external insulation", + "energy_efficiency_rating": 4, + "environmental_efficiency_rating": 4 + } + ], + "floors": [ + { + "description": "Solid, no insulation (assumed)", + "energy_efficiency_rating": 0, + "environmental_efficiency_rating": 0 + } + ], + "status": "entered", + "tenure": 2, + "window": { + "description": "High performance glazing", + "energy_efficiency_rating": 4, + "environmental_efficiency_rating": 4 + }, + "addendum": { + "addendum_numbers": [ + 8 + ] + }, + "lighting": { + "description": "Good lighting efficiency", + "energy_efficiency_rating": 4, + "environmental_efficiency_rating": 4 + }, + "postcode": "CA12 4QS", + "hot_water": { + "description": "From main system", + "energy_efficiency_rating": 3, + "environmental_efficiency_rating": 5 + }, + "post_town": "KESWICK", + "built_form": 3, + "created_at": "2026-05-22 10:17:43", + "door_count": 2, + "region_code": 9, + "report_type": 2, + "sap_heating": { + "number_baths": 1, + "cylinder_size": 3, + "number_baths_wwhrs": 0, + "water_heating_code": 901, + "water_heating_fuel": 29, + "cylinder_thermostat": "Y", + "main_heating_details": [ + { + "has_fghrs": "N", + "main_fuel_type": 29, + "heat_emitter_type": 1, + "emitter_temperature": 0, + "main_heating_number": 1, + "main_heating_control": 2206, + "main_heating_category": 4, + "main_heating_fraction": 1, + "mcs_installed_heat_pump": "false", + "central_heating_pump_age": 0, + "main_heating_data_source": 1, + "main_heating_index_number": 104568 + } + ], + "immersion_heating_type": "NA", + "cylinder_insulation_type": 1, + "has_fixed_air_conditioning": "false", + "cylinder_insulation_thickness": 50 + }, + "sap_version": 10.2, + "sap_windows": [ + { + "orientation": 4, + "window_type": 1, + "glazing_type": 14, + "window_width": 0.61, + "window_height": 0.98, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "orientation": 6, + "window_type": 1, + "glazing_type": 14, + "window_width": 1.72, + "window_height": 1.27, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "orientation": 2, + "window_type": 1, + "glazing_type": 14, + "window_width": 1.75, + "window_height": 0.94, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "orientation": 4, + "window_type": 1, + "glazing_type": 14, + "window_width": 1.16, + "window_height": 0.94, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "orientation": 4, + "window_type": 1, + "glazing_type": 14, + "window_width": 0.61, + "window_height": 0.95, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "orientation": 2, + "window_type": 1, + "glazing_type": 14, + "window_width": 1.1, + "window_height": 0.94, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "orientation": 2, + "window_type": 1, + "glazing_type": 14, + "window_width": 1.75, + "window_height": 0.94, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "orientation": 2, + "window_type": 1, + "glazing_type": 14, + "window_width": 0.64, + "window_height": 0.94, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "orientation": 6, + "window_type": 1, + "glazing_type": 14, + "window_width": 1.74, + "window_height": 0.94, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "orientation": 6, + "window_type": 1, + "glazing_type": 14, + "window_width": 1.16, + "window_height": 0.97, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "orientation": 4, + "window_type": 1, + "glazing_type": 14, + "window_width": 0.62, + "window_height": 0.94, + "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": "Air source heat pump, radiators, electric", + "energy_efficiency_rating": 4, + "environmental_efficiency_rating": 5 + } + ], + "air_tightness": { + "description": "(not tested)", + "energy_efficiency_rating": 0, + "environmental_efficiency_rating": 0 + }, + "dwelling_type": "End-terrace house", + "language_code": 1, + "pressure_test": 4, + "property_type": 0, + "address_line_1": "1 The Orchard", + "address_line_2": "Bassenthwaite", + "assessment_type": "RdSAP", + "completion_date": "2026-05-22", + "inspection_date": "2026-05-22", + "extensions_count": 0, + "measurement_type": 1, + "total_floor_area": 82, + "transaction_type": 5, + "conservatory_type": 1, + "heated_room_count": 5, + "registration_date": "2026-05-22", + "sap_energy_source": { + "mains_gas": "N", + "meter_type": 2, + "pv_batteries": [ + { + "battery_capacity": 5 + } + ], + "pv_connection": 2, + "pv_battery_count": 1, + "photovoltaic_supply": { + "pv_arrays": [ + { + "pitch": 3, + "peak_power": 3.28, + "orientation": 4, + "overshading": 1 + } + ] + }, + "wind_turbines_count": 0, + "gas_smart_meter_present": "false", + "is_dwelling_export_capable": "true", + "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, + "lzc_energy_sources": [ + 9, + 11 + ], + "sap_building_parts": [ + { + "identifier": "Main Dwelling", + "wall_dry_lined": "N", + "wall_thickness": 400, + "floor_heat_loss": 7, + "roof_construction": 4, + "wall_construction": 4, + "building_part_number": 1, + "sap_floor_dimensions": [ + { + "floor": 0, + "room_height": { + "value": 2.41, + "quantity": "metres" + }, + "floor_insulation": 1, + "total_floor_area": { + "value": 41.49, + "quantity": "square metres" + }, + "party_wall_length": { + "value": 4.69, + "quantity": "metres" + }, + "floor_construction": 1, + "heat_loss_perimeter": { + "value": 21.44, + "quantity": "metres" + } + }, + { + "floor": 1, + "room_height": { + "value": 2.44, + "quantity": "metres" + }, + "total_floor_area": { + "value": 41, + "quantity": "square metres" + }, + "party_wall_length": { + "value": 4.69, + "quantity": "metres" + }, + "heat_loss_perimeter": { + "value": 21.44, + "quantity": "metres" + } + } + ], + "wall_insulation_type": 6, + "construction_age_band": "D", + "party_wall_construction": 0, + "wall_thickness_measured": "Y", + "roof_insulation_location": 2, + "roof_insulation_thickness": "300mm", + "wall_insulation_thickness": "50mm", + "floor_insulation_thickness": "NI" + } + ], + "solar_water_heating": "N", + "habitable_room_count": 5, + "heating_cost_current": { + "value": 836, + "currency": "GBP" + }, + "insulated_door_count": 2, + "co2_emissions_current": 0.4, + "energy_rating_average": 60, + "energy_rating_current": 89, + "lighting_cost_current": { + "value": 57, + "currency": "GBP" + }, + "main_heating_controls": [ + { + "description": "Programmer, TRVs and bypass", + "energy_efficiency_rating": 3, + "environmental_efficiency_rating": 3 + } + ], + "has_hot_water_cylinder": "true", + "heating_cost_potential": { + "value": 753, + "currency": "GBP" + }, + "hot_water_cost_current": { + "value": 452, + "currency": "GBP" + }, + "insulated_door_u_value": 1.1, + "mechanical_ventilation": 0, + "percent_draughtproofed": 100, + "suggested_improvements": [ + { + "sequence": 1, + "typical_saving": { + "value": 82, + "currency": "GBP" + }, + "indicative_cost": "\u00a35,000 - \u00a310,000", + "improvement_type": "W2", + "improvement_details": { + "improvement_number": 58 + }, + "improvement_category": 5, + "energy_performance_rating": 91, + "environmental_impact_rating": 97 + }, + { + "sequence": 2, + "typical_saving": { + "value": 39, + "currency": "GBP" + }, + "indicative_cost": "\u00a34,000 - \u00a37,000", + "improvement_type": "N", + "improvement_details": { + "improvement_number": 19 + }, + "improvement_category": 5, + "energy_performance_rating": 92, + "environmental_impact_rating": 97 + } + ], + "co2_emissions_potential": 0.3, + "energy_rating_potential": 92, + "lighting_cost_potential": { + "value": 57, + "currency": "GBP" + }, + "schema_version_original": "21.0.1", + "hot_water_cost_potential": { + "value": 401, + "currency": "GBP" + }, + "renewable_heat_incentive": { + "water_heating": 2824.44, + "space_heating_existing_dwelling": 7677.47 + }, + "draughtproofed_door_count": 2, + "energy_consumption_current": 53, + "has_fixed_air_conditioning": "false", + "multiple_glazed_proportion": 100, + "calculation_software_version": "5.02r0344", + "energy_consumption_potential": 44, + "environmental_impact_current": 97, + "current_energy_efficiency_band": "B", + "environmental_impact_potential": 97, + "has_heated_separate_conservatory": "false", + "potential_energy_efficiency_band": "A", + "co2_emissions_current_per_floor_area": 5, + "low_energy_fixed_lighting_bulbs_count": 10, + "incandescent_fixed_lighting_bulbs_count": 0 +} \ No newline at end of file diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/2636-0525-2600-0401-2296.json b/domain/sap10_calculator/rdsap/tests/fixtures/golden/2636-0525-2600-0401-2296.json new file mode 100644 index 00000000..db1640b7 --- /dev/null +++ b/domain/sap10_calculator/rdsap/tests/fixtures/golden/2636-0525-2600-0401-2296.json @@ -0,0 +1,417 @@ +{ + "uprn": 100110213833, + "roofs": [ + { + "description": "Pitched, 300 mm loft insulation", + "energy_efficiency_rating": 5, + "environmental_efficiency_rating": 5 + } + ], + "walls": [ + { + "description": "Cavity wall, filled cavity and external insulation", + "energy_efficiency_rating": 5, + "environmental_efficiency_rating": 5 + }, + { + "description": "Cavity wall, filled cavity", + "energy_efficiency_rating": 4, + "environmental_efficiency_rating": 4 + } + ], + "floors": [ + { + "description": "Solid, no insulation (assumed)", + "energy_efficiency_rating": 0, + "environmental_efficiency_rating": 0 + } + ], + "status": "entered", + "tenure": 2, + "window": { + "description": "High performance glazing", + "energy_efficiency_rating": 4, + "environmental_efficiency_rating": 4 + }, + "addendum": { + "addendum_numbers": [ + 8 + ] + }, + "lighting": { + "description": "Good lighting efficiency", + "energy_efficiency_rating": 4, + "environmental_efficiency_rating": 4 + }, + "postcode": "CA7 5HZ", + "hot_water": { + "description": "From main system", + "energy_efficiency_rating": 3, + "environmental_efficiency_rating": 5 + }, + "post_town": "WIGTON", + "built_form": 4, + "created_at": "2026-05-22 09:04:14", + "door_count": 2, + "region_code": 9, + "report_type": 2, + "sap_heating": { + "number_baths": 1, + "cylinder_size": 3, + "shower_outlets": [ + { + "shower_wwhrs": 1, + "shower_outlet_type": 1 + } + ], + "number_baths_wwhrs": 0, + "water_heating_code": 901, + "water_heating_fuel": 29, + "cylinder_thermostat": "Y", + "main_heating_details": [ + { + "has_fghrs": "N", + "main_fuel_type": 29, + "heat_emitter_type": 1, + "emitter_temperature": 0, + "main_heating_number": 1, + "main_heating_control": 2206, + "main_heating_category": 4, + "main_heating_fraction": 1, + "mcs_installed_heat_pump": "false", + "central_heating_pump_age": 0, + "main_heating_data_source": 1, + "main_heating_index_number": 104568 + } + ], + "immersion_heating_type": "NA", + "cylinder_insulation_type": 1, + "has_fixed_air_conditioning": "false", + "cylinder_insulation_thickness": 50 + }, + "sap_version": 10.2, + "sap_windows": [ + { + "orientation": 1, + "window_type": 1, + "glazing_type": 14, + "window_width": 1.76, + "window_height": 1.28, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "orientation": 5, + "window_type": 1, + "glazing_type": 14, + "window_width": 1.76, + "window_height": 1.02, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "orientation": 5, + "window_type": 1, + "glazing_type": 14, + "window_width": 0.33, + "window_height": 0.95, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "orientation": 1, + "window_type": 1, + "glazing_type": 14, + "window_width": 1.14, + "window_height": 1.04, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 2, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "orientation": 1, + "window_type": 1, + "glazing_type": 14, + "window_width": 1.76, + "window_height": 1.28, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "orientation": 1, + "window_type": 1, + "glazing_type": 14, + "window_width": 1.15, + "window_height": 1.28, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "orientation": 1, + "window_type": 1, + "glazing_type": 14, + "window_width": 1.76, + "window_height": 1.28, + "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": "Air source heat pump, radiators, electric", + "energy_efficiency_rating": 4, + "environmental_efficiency_rating": 5 + } + ], + "air_tightness": { + "description": "(not tested)", + "energy_efficiency_rating": 0, + "environmental_efficiency_rating": 0 + }, + "dwelling_type": "Mid-terrace house", + "language_code": 1, + "pressure_test": 4, + "property_type": 0, + "address_line_1": "11 Birch Hill Lane", + "address_line_2": "Kirkbride", + "assessment_type": "RdSAP", + "completion_date": "2026-05-22", + "inspection_date": "2026-05-19", + "extensions_count": 0, + "measurement_type": 1, + "total_floor_area": 82, + "transaction_type": 5, + "conservatory_type": 1, + "heated_room_count": 5, + "registration_date": "2026-05-22", + "sap_energy_source": { + "mains_gas": "N", + "meter_type": 2, + "pv_batteries": [ + { + "battery_capacity": 5 + } + ], + "pv_connection": 2, + "pv_battery_count": 1, + "photovoltaic_supply": [ + [ + { + "pitch": 3, + "peak_power": 1.64, + "orientation": 5, + "overshading": 1 + } + ], + [ + { + "pitch": 3, + "peak_power": 1.64, + "orientation": 1, + "overshading": 1 + } + ] + ], + "wind_turbines_count": 0, + "gas_smart_meter_present": "true", + "is_dwelling_export_capable": "true", + "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, + "lzc_energy_sources": [ + 9, + 11 + ], + "sap_building_parts": [ + { + "identifier": "Main Dwelling", + "wall_dry_lined": "N", + "wall_thickness": 400, + "floor_heat_loss": 7, + "roof_construction": 4, + "wall_construction": 4, + "building_part_number": 1, + "sap_floor_dimensions": [ + { + "floor": 0, + "room_height": { + "value": 2.27, + "quantity": "metres" + }, + "floor_insulation": 1, + "total_floor_area": { + "value": 39.18, + "quantity": "square metres" + }, + "party_wall_length": { + "value": 6.97, + "quantity": "metres" + }, + "floor_construction": 1, + "heat_loss_perimeter": { + "value": 12.52, + "quantity": "metres" + } + }, + { + "floor": 1, + "room_height": { + "value": 2.28, + "quantity": "metres" + }, + "total_floor_area": { + "value": 42.92, + "quantity": "square metres" + }, + "party_wall_length": { + "value": 15.93, + "quantity": "metres" + }, + "heat_loss_perimeter": { + "value": 18.21, + "quantity": "metres" + } + } + ], + "wall_insulation_type": 6, + "construction_age_band": "D", + "sap_alternative_wall_1": { + "wall_area": 12.76, + "wall_dry_lined": "N", + "wall_thickness": 300, + "wall_construction": 4, + "wall_insulation_type": 2, + "wall_thickness_measured": "Y", + "wall_insulation_thickness": "NI" + }, + "party_wall_construction": 0, + "wall_thickness_measured": "Y", + "roof_insulation_location": 2, + "roof_insulation_thickness": "300mm", + "wall_insulation_thickness": "100mm", + "floor_insulation_thickness": "NI" + } + ], + "solar_water_heating": "N", + "habitable_room_count": 5, + "heating_cost_current": { + "value": 729, + "currency": "GBP" + }, + "insulated_door_count": 0, + "co2_emissions_current": 0.4, + "energy_rating_average": 60, + "energy_rating_current": 86, + "lighting_cost_current": { + "value": 58, + "currency": "GBP" + }, + "main_heating_controls": [ + { + "description": "Programmer, TRVs and bypass", + "energy_efficiency_rating": 3, + "environmental_efficiency_rating": 3 + } + ], + "has_hot_water_cylinder": "true", + "heating_cost_potential": { + "value": 731, + "currency": "GBP" + }, + "hot_water_cost_current": { + "value": 470, + "currency": "GBP" + }, + "mechanical_ventilation": 0, + "percent_draughtproofed": 100, + "suggested_improvements": [ + { + "sequence": 1, + "typical_saving": { + "value": 44, + "currency": "GBP" + }, + "indicative_cost": "\u00a34,000 - \u00a37,000", + "improvement_type": "N", + "improvement_details": { + "improvement_number": 19 + }, + "improvement_category": 5, + "energy_performance_rating": 87, + "environmental_impact_rating": 96 + }, + { + "sequence": 2, + "typical_saving": { + "value": 48, + "currency": "GBP" + }, + "indicative_cost": "\u00a3600 - \u00a31,500", + "improvement_type": "Y", + "improvement_details": { + "improvement_number": 49 + }, + "improvement_category": 5, + "energy_performance_rating": 89, + "environmental_impact_rating": 97 + } + ], + "co2_emissions_potential": 0.3, + "energy_rating_potential": 89, + "lighting_cost_potential": { + "value": 58, + "currency": "GBP" + }, + "schema_version_original": "21.0.1", + "hot_water_cost_potential": { + "value": 364, + "currency": "GBP" + }, + "renewable_heat_incentive": { + "water_heating": 2934.51, + "space_heating_existing_dwelling": 6452.68 + }, + "draughtproofed_door_count": 2, + "energy_consumption_current": 53, + "has_fixed_air_conditioning": "false", + "multiple_glazed_proportion": 100, + "calculation_software_version": "5.02r0344", + "energy_consumption_potential": 46, + "environmental_impact_current": 96, + "current_energy_efficiency_band": "B", + "environmental_impact_potential": 97, + "has_heated_separate_conservatory": "false", + "potential_energy_efficiency_band": "B", + "co2_emissions_current_per_floor_area": 5, + "low_energy_fixed_lighting_bulbs_count": 10, + "incandescent_fixed_lighting_bulbs_count": 0 +} \ No newline at end of file diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/3800-8515-0922-3398-3563.json b/domain/sap10_calculator/rdsap/tests/fixtures/golden/3800-8515-0922-3398-3563.json new file mode 100644 index 00000000..c72b95e1 --- /dev/null +++ b/domain/sap10_calculator/rdsap/tests/fixtures/golden/3800-8515-0922-3398-3563.json @@ -0,0 +1,485 @@ +{ + "uprn": 10000889036, + "roofs": [ + { + "description": "Pitched, 300 mm loft insulation", + "energy_efficiency_rating": 5, + "environmental_efficiency_rating": 5 + } + ], + "walls": [ + { + "description": "Cavity wall, filled cavity and external insulation", + "energy_efficiency_rating": 5, + "environmental_efficiency_rating": 5 + } + ], + "floors": [ + { + "description": "Solid, no insulation (assumed)", + "energy_efficiency_rating": 0, + "environmental_efficiency_rating": 0 + }, + { + "description": "To external air, no insulation (assumed)", + "energy_efficiency_rating": 0, + "environmental_efficiency_rating": 0 + } + ], + "status": "entered", + "tenure": 2, + "window": { + "description": "High performance glazing", + "energy_efficiency_rating": 4, + "environmental_efficiency_rating": 4 + }, + "addendum": { + "addendum_numbers": [ + 8 + ] + }, + "lighting": { + "description": "Good lighting efficiency", + "energy_efficiency_rating": 4, + "environmental_efficiency_rating": 4 + }, + "postcode": "CA12 4QS", + "hot_water": { + "description": "From main system", + "energy_efficiency_rating": 3, + "environmental_efficiency_rating": 5 + }, + "post_town": "KESWICK", + "built_form": 4, + "created_at": "2026-05-22 12:06:54", + "door_count": 2, + "region_code": 9, + "report_type": 2, + "sap_heating": { + "number_baths": 1, + "cylinder_size": 3, + "shower_outlets": [ + { + "shower_wwhrs": 1, + "shower_outlet_type": 2 + } + ], + "number_baths_wwhrs": 0, + "water_heating_code": 901, + "water_heating_fuel": 29, + "cylinder_thermostat": "Y", + "main_heating_details": [ + { + "has_fghrs": "N", + "main_fuel_type": 29, + "heat_emitter_type": 1, + "emitter_temperature": 0, + "main_heating_number": 1, + "main_heating_control": 2206, + "main_heating_category": 4, + "main_heating_fraction": 1, + "mcs_installed_heat_pump": "false", + "central_heating_pump_age": 0, + "main_heating_data_source": 1, + "main_heating_index_number": 104568 + } + ], + "immersion_heating_type": "NA", + "cylinder_insulation_type": 1, + "has_fixed_air_conditioning": "false", + "cylinder_insulation_thickness": 50 + }, + "sap_version": 10.2, + "sap_windows": [ + { + "orientation": 6, + "window_type": 1, + "glazing_type": 14, + "window_width": 1.13, + "window_height": 1.24, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "orientation": 2, + "window_type": 1, + "glazing_type": 14, + "window_width": 1.18, + "window_height": 0.98, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "orientation": 6, + "window_type": 1, + "glazing_type": 14, + "window_width": 1.13, + "window_height": 1.24, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "orientation": 2, + "window_type": 1, + "glazing_type": 14, + "window_width": 1.73, + "window_height": 1.24, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "orientation": 2, + "window_type": 1, + "glazing_type": 14, + "window_width": 0.64, + "window_height": 1.24, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "orientation": 6, + "window_type": 1, + "glazing_type": 14, + "window_width": 1.76, + "window_height": 1.24, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "orientation": 2, + "window_type": 1, + "glazing_type": 14, + "window_width": 1.13, + "window_height": 1.24, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "orientation": 2, + "window_type": 1, + "glazing_type": 14, + "window_width": 1.16, + "window_height": 1.24, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "orientation": 6, + "window_type": 1, + "glazing_type": 14, + "window_width": 1.13, + "window_height": 1.24, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "orientation": 6, + "window_type": 1, + "glazing_type": 14, + "window_width": 1.13, + "window_height": 1.24, + "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": "Air source heat pump, radiators, electric", + "energy_efficiency_rating": 4, + "environmental_efficiency_rating": 5 + } + ], + "air_tightness": { + "description": "(not tested)", + "energy_efficiency_rating": 0, + "environmental_efficiency_rating": 0 + }, + "dwelling_type": "Mid-terrace house", + "language_code": 1, + "pressure_test": 4, + "property_type": 0, + "address_line_1": "2 The Orchard", + "address_line_2": "Bassenthwaite", + "assessment_type": "RdSAP", + "completion_date": "2026-05-22", + "inspection_date": "2026-05-19", + "extensions_count": 1, + "measurement_type": 1, + "total_floor_area": 81, + "transaction_type": 5, + "conservatory_type": 1, + "heated_room_count": 5, + "registration_date": "2026-05-22", + "sap_energy_source": { + "mains_gas": "N", + "meter_type": 2, + "pv_batteries": [ + { + "battery_capacity": 5 + } + ], + "pv_connection": 2, + "pv_battery_count": 1, + "photovoltaic_supply": [ + [ + { + "pitch": 3, + "peak_power": 1.64, + "orientation": 2, + "overshading": 1 + } + ], + [ + { + "pitch": 3, + "peak_power": 1.64, + "orientation": 6, + "overshading": 1 + } + ] + ], + "wind_turbines_count": 0, + "gas_smart_meter_present": "false", + "is_dwelling_export_capable": "true", + "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, + "lzc_energy_sources": [ + 9, + 11 + ], + "sap_building_parts": [ + { + "identifier": "Main Dwelling", + "wall_dry_lined": "N", + "wall_thickness": 400, + "floor_heat_loss": 7, + "roof_construction": 4, + "wall_construction": 4, + "building_part_number": 1, + "sap_floor_dimensions": [ + { + "floor": 0, + "room_height": { + "value": 2.42, + "quantity": "metres" + }, + "floor_insulation": 1, + "total_floor_area": { + "value": 37.11, + "quantity": "square metres" + }, + "party_wall_length": { + "value": 5.31, + "quantity": "metres" + }, + "floor_construction": 1, + "heat_loss_perimeter": { + "value": 19.29, + "quantity": "metres" + } + }, + { + "floor": 1, + "room_height": { + "value": 2.43, + "quantity": "metres" + }, + "total_floor_area": { + "value": 37.11, + "quantity": "square metres" + }, + "party_wall_length": { + "value": 5.31, + "quantity": "metres" + }, + "heat_loss_perimeter": { + "value": 13.98, + "quantity": "metres" + } + } + ], + "wall_insulation_type": 6, + "construction_age_band": "D", + "party_wall_construction": 0, + "wall_thickness_measured": "Y", + "roof_insulation_location": 2, + "roof_insulation_thickness": "300mm", + "wall_insulation_thickness": "100mm", + "floor_insulation_thickness": "NI" + }, + { + "identifier": "Extension 1", + "wall_dry_lined": "N", + "wall_thickness": 400, + "floor_heat_loss": 1, + "roof_construction": 4, + "wall_construction": 4, + "building_part_number": 2, + "sap_floor_dimensions": [ + { + "floor": 0, + "room_height": { + "value": 2.42, + "quantity": "metres" + }, + "floor_insulation": 1, + "total_floor_area": { + "value": 7.12, + "quantity": "square metres" + }, + "party_wall_length": { + "value": 5.31, + "quantity": "metres" + }, + "floor_construction": 1, + "heat_loss_perimeter": { + "value": 2.68, + "quantity": "metres" + } + } + ], + "wall_insulation_type": 6, + "construction_age_band": "D", + "party_wall_construction": 0, + "wall_thickness_measured": "Y", + "roof_insulation_location": 2, + "roof_insulation_thickness": "300mm", + "wall_insulation_thickness": "100mm", + "floor_insulation_thickness": "NI" + } + ], + "solar_water_heating": "N", + "habitable_room_count": 5, + "heating_cost_current": { + "value": 790, + "currency": "GBP" + }, + "insulated_door_count": 2, + "co2_emissions_current": 0.4, + "energy_rating_average": 60, + "energy_rating_current": 86, + "lighting_cost_current": { + "value": 54, + "currency": "GBP" + }, + "main_heating_controls": [ + { + "description": "Programmer, TRVs and bypass", + "energy_efficiency_rating": 3, + "environmental_efficiency_rating": 3 + } + ], + "has_hot_water_cylinder": "true", + "heating_cost_potential": { + "value": 717, + "currency": "GBP" + }, + "hot_water_cost_current": { + "value": 494, + "currency": "GBP" + }, + "insulated_door_u_value": 1.1, + "mechanical_ventilation": 0, + "percent_draughtproofed": 100, + "suggested_improvements": [ + { + "sequence": 1, + "typical_saving": { + "value": 73, + "currency": "GBP" + }, + "indicative_cost": "\u00a35,000 - \u00a310,000", + "improvement_type": "W2", + "improvement_details": { + "improvement_number": 58 + }, + "improvement_category": 5, + "energy_performance_rating": 88, + "environmental_impact_rating": 96 + }, + { + "sequence": 2, + "typical_saving": { + "value": 41, + "currency": "GBP" + }, + "indicative_cost": "\u00a34,000 - \u00a37,000", + "improvement_type": "N", + "improvement_details": { + "improvement_number": 19 + }, + "improvement_category": 5, + "energy_performance_rating": 89, + "environmental_impact_rating": 97 + } + ], + "co2_emissions_potential": 0.4, + "energy_rating_potential": 89, + "lighting_cost_potential": { + "value": 54, + "currency": "GBP" + }, + "schema_version_original": "21.0.1", + "hot_water_cost_potential": { + "value": 443, + "currency": "GBP" + }, + "renewable_heat_incentive": { + "water_heating": 2644.64, + "space_heating_existing_dwelling": 7110.41 + }, + "draughtproofed_door_count": 2, + "energy_consumption_current": 59, + "has_fixed_air_conditioning": "false", + "multiple_glazed_proportion": 100, + "calculation_software_version": "5.02r0344", + "energy_consumption_potential": 51, + "environmental_impact_current": 96, + "current_energy_efficiency_band": "B", + "environmental_impact_potential": 97, + "has_heated_separate_conservatory": "false", + "potential_energy_efficiency_band": "B", + "co2_emissions_current_per_floor_area": 5, + "low_energy_fixed_lighting_bulbs_count": 10, + "incandescent_fixed_lighting_bulbs_count": 0 +} \ No newline at end of file diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/9285-3062-0205-7766-7200.json b/domain/sap10_calculator/rdsap/tests/fixtures/golden/9285-3062-0205-7766-7200.json new file mode 100644 index 00000000..5526093e --- /dev/null +++ b/domain/sap10_calculator/rdsap/tests/fixtures/golden/9285-3062-0205-7766-7200.json @@ -0,0 +1,416 @@ +{ + "uprn": 100110214652, + "roofs": [ + { + "description": "Pitched, 200 mm loft insulation", + "energy_efficiency_rating": 4, + "environmental_efficiency_rating": 4 + } + ], + "walls": [ + { + "description": "Cavity wall, filled cavity and external insulation", + "energy_efficiency_rating": 5, + "environmental_efficiency_rating": 5 + } + ], + "floors": [ + { + "description": "Solid, no insulation (assumed)", + "energy_efficiency_rating": 0, + "environmental_efficiency_rating": 0 + } + ], + "status": "entered", + "tenure": 2, + "window": { + "description": "High performance glazing", + "energy_efficiency_rating": 4, + "environmental_efficiency_rating": 4 + }, + "addendum": { + "addendum_numbers": [ + 8 + ] + }, + "lighting": { + "description": "Good lighting efficiency", + "energy_efficiency_rating": 4, + "environmental_efficiency_rating": 4 + }, + "postcode": "CA7 5EE", + "hot_water": { + "description": "From main system", + "energy_efficiency_rating": 3, + "environmental_efficiency_rating": 5 + }, + "post_town": "WIGTON", + "built_form": 3, + "created_at": "2026-05-22 15:10:30", + "door_count": 2, + "region_code": 9, + "report_type": 2, + "sap_heating": { + "number_baths": 1, + "cylinder_size": 3, + "shower_outlets": [ + { + "shower_wwhrs": 1, + "shower_outlet_type": 2 + } + ], + "number_baths_wwhrs": 0, + "water_heating_code": 901, + "water_heating_fuel": 29, + "cylinder_thermostat": "Y", + "main_heating_details": [ + { + "has_fghrs": "N", + "main_fuel_type": 29, + "heat_emitter_type": 1, + "emitter_temperature": 0, + "main_heating_number": 1, + "main_heating_control": 2206, + "main_heating_category": 4, + "main_heating_fraction": 1, + "mcs_installed_heat_pump": "false", + "central_heating_pump_age": 0, + "main_heating_data_source": 1, + "main_heating_index_number": 104568 + } + ], + "immersion_heating_type": "NA", + "cylinder_insulation_type": 1, + "has_fixed_air_conditioning": "false", + "cylinder_insulation_thickness": 50 + }, + "sap_version": 10.2, + "sap_windows": [ + { + "orientation": 6, + "window_type": 1, + "glazing_type": 14, + "window_width": 1.5, + "window_height": 1.25, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "orientation": 6, + "window_type": 1, + "glazing_type": 14, + "window_width": 1.5, + "window_height": 1.25, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "orientation": 2, + "window_type": 1, + "glazing_type": 14, + "window_width": 0.5, + "window_height": 0.94, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "orientation": 2, + "window_type": 1, + "glazing_type": 14, + "window_width": 0.83, + "window_height": 0.86, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "orientation": 2, + "window_type": 1, + "glazing_type": 14, + "window_width": 0.3, + "window_height": 0.96, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "orientation": 6, + "window_type": 1, + "glazing_type": 14, + "window_width": 1.49, + "window_height": 0.95, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "orientation": 6, + "window_type": 1, + "glazing_type": 14, + "window_width": 0.3, + "window_height": 0.96, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "orientation": 2, + "window_type": 1, + "glazing_type": 14, + "window_width": 1, + "window_height": 0.96, + "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": "Air source heat pump, radiators, electric", + "energy_efficiency_rating": 4, + "environmental_efficiency_rating": 5 + } + ], + "air_tightness": { + "description": "(not tested)", + "energy_efficiency_rating": 0, + "environmental_efficiency_rating": 0 + }, + "dwelling_type": "End-terrace house", + "language_code": 1, + "pressure_test": 4, + "property_type": 0, + "address_line_1": "8 Mill Road", + "address_line_2": "Glasson", + "assessment_type": "RdSAP", + "completion_date": "2026-05-22", + "inspection_date": "2026-05-18", + "extensions_count": 0, + "measurement_type": 1, + "total_floor_area": 86, + "transaction_type": 5, + "conservatory_type": 1, + "heated_room_count": 5, + "registration_date": "2026-05-22", + "sap_energy_source": { + "mains_gas": "N", + "meter_type": 2, + "pv_batteries": [ + { + "battery_capacity": 5 + } + ], + "pv_connection": 2, + "pv_battery_count": 1, + "photovoltaic_supply": [ + [ + { + "pitch": 3, + "peak_power": 1.5, + "orientation": 2, + "overshading": 1 + } + ], + [ + { + "pitch": 3, + "peak_power": 1.5, + "orientation": 6, + "overshading": 1 + } + ] + ], + "wind_turbines_count": 0, + "gas_smart_meter_present": "false", + "is_dwelling_export_capable": "true", + "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, + "lzc_energy_sources": [ + 9, + 11 + ], + "sap_building_parts": [ + { + "identifier": "Main Dwelling", + "wall_dry_lined": "N", + "wall_thickness": 400, + "floor_heat_loss": 7, + "roof_construction": 4, + "wall_construction": 4, + "building_part_number": 1, + "sap_floor_dimensions": [ + { + "floor": 0, + "room_height": { + "value": 2.45, + "quantity": "metres" + }, + "floor_insulation": 1, + "total_floor_area": { + "value": 42.95, + "quantity": "square metres" + }, + "party_wall_length": { + "value": 5.15, + "quantity": "metres" + }, + "floor_construction": 1, + "heat_loss_perimeter": { + "value": 21.83, + "quantity": "metres" + } + }, + { + "floor": 1, + "room_height": { + "value": 2.39, + "quantity": "metres" + }, + "total_floor_area": { + "value": 42.95, + "quantity": "square metres" + }, + "party_wall_length": { + "value": 5.15, + "quantity": "metres" + }, + "heat_loss_perimeter": { + "value": 21.83, + "quantity": "metres" + } + } + ], + "wall_insulation_type": 6, + "construction_age_band": "D", + "party_wall_construction": 0, + "wall_thickness_measured": "Y", + "roof_insulation_location": 2, + "roof_insulation_thickness": "200mm", + "wall_insulation_thickness": "100mm", + "floor_insulation_thickness": "NI" + } + ], + "solar_water_heating": "N", + "habitable_room_count": 5, + "heating_cost_current": { + "value": 763, + "currency": "GBP" + }, + "insulated_door_count": 2, + "co2_emissions_current": 0.5, + "energy_rating_average": 60, + "energy_rating_current": 84, + "lighting_cost_current": { + "value": 65, + "currency": "GBP" + }, + "main_heating_controls": [ + { + "description": "Programmer, TRVs and bypass", + "energy_efficiency_rating": 3, + "environmental_efficiency_rating": 3 + } + ], + "has_hot_water_cylinder": "true", + "heating_cost_potential": { + "value": 686, + "currency": "GBP" + }, + "hot_water_cost_current": { + "value": 500, + "currency": "GBP" + }, + "insulated_door_u_value": 1.2, + "mechanical_ventilation": 0, + "percent_draughtproofed": 100, + "suggested_improvements": [ + { + "sequence": 1, + "typical_saving": { + "value": 78, + "currency": "GBP" + }, + "indicative_cost": "\u00a35,000 - \u00a310,000", + "improvement_type": "W2", + "improvement_details": { + "improvement_number": 58 + }, + "improvement_category": 5, + "energy_performance_rating": 86, + "environmental_impact_rating": 96 + }, + { + "sequence": 2, + "typical_saving": { + "value": 44, + "currency": "GBP" + }, + "indicative_cost": "\u00a34,000 - \u00a37,000", + "improvement_type": "N", + "improvement_details": { + "improvement_number": 19 + }, + "improvement_category": 5, + "energy_performance_rating": 87, + "environmental_impact_rating": 96 + } + ], + "co2_emissions_potential": 0.4, + "energy_rating_potential": 87, + "lighting_cost_potential": { + "value": 65, + "currency": "GBP" + }, + "schema_version_original": "21.0.1", + "hot_water_cost_potential": { + "value": 448, + "currency": "GBP" + }, + "renewable_heat_incentive": { + "water_heating": 2678.17, + "space_heating_existing_dwelling": 6861.12 + }, + "draughtproofed_door_count": 2, + "energy_consumption_current": 57, + "has_fixed_air_conditioning": "false", + "multiple_glazed_proportion": 100, + "calculation_software_version": "5.02r0344", + "energy_consumption_potential": 49, + "environmental_impact_current": 96, + "current_energy_efficiency_band": "B", + "environmental_impact_potential": 96, + "has_heated_separate_conservatory": "false", + "potential_energy_efficiency_band": "B", + "co2_emissions_current_per_floor_area": 5, + "low_energy_fixed_lighting_bulbs_count": 10, + "incandescent_fixed_lighting_bulbs_count": 0 +} \ No newline at end of file diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/9418-3062-8205-3566-7200.json b/domain/sap10_calculator/rdsap/tests/fixtures/golden/9418-3062-8205-3566-7200.json new file mode 100644 index 00000000..b97e08f9 --- /dev/null +++ b/domain/sap10_calculator/rdsap/tests/fixtures/golden/9418-3062-8205-3566-7200.json @@ -0,0 +1,475 @@ +{ + "uprn": 10000888732, + "roofs": [ + { + "description": "Pitched, 300 mm loft insulation", + "energy_efficiency_rating": 5, + "environmental_efficiency_rating": 5 + } + ], + "walls": [ + { + "description": "Cavity wall, filled cavity and external insulation", + "energy_efficiency_rating": 5, + "environmental_efficiency_rating": 5 + } + ], + "floors": [ + { + "description": "Solid, no insulation (assumed)", + "energy_efficiency_rating": 0, + "environmental_efficiency_rating": 0 + } + ], + "status": "entered", + "tenure": 2, + "window": { + "description": "High performance glazing", + "energy_efficiency_rating": 4, + "environmental_efficiency_rating": 4 + }, + "addendum": { + "addendum_numbers": [ + 8 + ] + }, + "lighting": { + "description": "Good lighting efficiency", + "energy_efficiency_rating": 4, + "environmental_efficiency_rating": 4 + }, + "postcode": "CA7 2PU", + "hot_water": { + "description": "From main system", + "energy_efficiency_rating": 2, + "environmental_efficiency_rating": 5 + }, + "post_town": "WIGTON", + "built_form": 3, + "created_at": "2026-05-22 14:04:46", + "door_count": 2, + "region_code": 9, + "report_type": 2, + "sap_heating": { + "number_baths": 1, + "cylinder_size": 4, + "shower_outlets": [ + { + "shower_wwhrs": 1, + "shower_outlet_type": 2 + } + ], + "number_baths_wwhrs": 0, + "water_heating_code": 901, + "water_heating_fuel": 29, + "cylinder_thermostat": "Y", + "secondary_fuel_type": 29, + "main_heating_details": [ + { + "has_fghrs": "N", + "main_fuel_type": 29, + "heat_emitter_type": 1, + "emitter_temperature": 0, + "main_heating_number": 1, + "main_heating_control": 2206, + "main_heating_category": 4, + "main_heating_fraction": 1, + "mcs_installed_heat_pump": "false", + "central_heating_pump_age": 0, + "main_heating_data_source": 1, + "main_heating_index_number": 102421 + } + ], + "immersion_heating_type": "NA", + "secondary_heating_type": 691, + "cylinder_insulation_type": 1, + "has_fixed_air_conditioning": "false", + "cylinder_insulation_thickness": 50 + }, + "sap_version": 10.2, + "sap_windows": [ + { + "orientation": 1, + "window_type": 1, + "glazing_type": 14, + "window_width": 1.15, + "window_height": 0.97, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "orientation": 1, + "window_type": 1, + "glazing_type": 14, + "window_width": 0.58, + "window_height": 0.97, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "orientation": 5, + "window_type": 1, + "glazing_type": 14, + "window_width": 1.74, + "window_height": 1.13, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "orientation": 1, + "window_type": 1, + "glazing_type": 14, + "window_width": 0.6, + "window_height": 0.99, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "orientation": 1, + "window_type": 1, + "glazing_type": 14, + "window_width": 1.18, + "window_height": 0.97, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "orientation": 5, + "window_type": 1, + "glazing_type": 14, + "window_width": 1.74, + "window_height": 0.97, + "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": "Air source heat pump, radiators, electric", + "energy_efficiency_rating": 5, + "environmental_efficiency_rating": 5 + } + ], + "air_tightness": { + "description": "(not tested)", + "energy_efficiency_rating": 0, + "environmental_efficiency_rating": 0 + }, + "dwelling_type": "End-terrace house", + "language_code": 1, + "pressure_test": 4, + "property_type": 0, + "address_line_1": "6 Patten Garth", + "address_line_2": "Hayton", + "address_line_3": "Aspatria", + "assessment_type": "RdSAP", + "completion_date": "2026-05-22", + "inspection_date": "2026-05-19", + "extensions_count": 2, + "measurement_type": 1, + "total_floor_area": 74, + "transaction_type": 5, + "conservatory_type": 1, + "heated_room_count": 3, + "registration_date": "2026-05-22", + "sap_energy_source": { + "mains_gas": "N", + "meter_type": 2, + "pv_batteries": [ + { + "battery_capacity": 5 + } + ], + "pv_connection": 2, + "pv_battery_count": 1, + "photovoltaic_supply": [ + [ + { + "pitch": 3, + "peak_power": 1.64, + "orientation": 1, + "overshading": 1 + } + ], + [ + { + "pitch": 3, + "peak_power": 1.64, + "orientation": 5, + "overshading": 1 + } + ] + ], + "wind_turbines_count": 0, + "gas_smart_meter_present": "false", + "is_dwelling_export_capable": "true", + "wind_turbines_terrain_type": 2, + "electricity_smart_meter_present": "true" + }, + "secondary_heating": { + "description": "Room heaters, electric", + "energy_efficiency_rating": 0, + "environmental_efficiency_rating": 0 + }, + "extract_fans_count": 2, + "lzc_energy_sources": [ + 9, + 11 + ], + "sap_building_parts": [ + { + "identifier": "Main Dwelling", + "wall_dry_lined": "N", + "wall_thickness": 400, + "floor_heat_loss": 7, + "roof_construction": 4, + "wall_construction": 4, + "building_part_number": 1, + "sap_floor_dimensions": [ + { + "floor": 0, + "room_height": { + "value": 2.35, + "quantity": "metres" + }, + "floor_insulation": 1, + "total_floor_area": { + "value": 35.92, + "quantity": "square metres" + }, + "party_wall_length": { + "value": 6.04, + "quantity": "metres" + }, + "floor_construction": 1, + "heat_loss_perimeter": { + "value": 15.2, + "quantity": "metres" + } + }, + { + "floor": 1, + "room_height": { + "value": 2.35, + "quantity": "metres" + }, + "total_floor_area": { + "value": 35.92, + "quantity": "square metres" + }, + "party_wall_length": { + "value": 6.04, + "quantity": "metres" + }, + "heat_loss_perimeter": { + "value": 17.12, + "quantity": "metres" + } + } + ], + "wall_insulation_type": 6, + "construction_age_band": "D", + "party_wall_construction": 0, + "wall_thickness_measured": "Y", + "roof_insulation_location": 2, + "roof_insulation_thickness": "300mm", + "wall_insulation_thickness": "100mm", + "floor_insulation_thickness": "NI" + }, + { + "identifier": "Extension 1", + "wall_dry_lined": "N", + "wall_thickness": 400, + "floor_heat_loss": 7, + "roof_construction": 5, + "wall_construction": 4, + "building_part_number": 2, + "sap_floor_dimensions": [ + { + "floor": 0, + "room_height": { + "value": 2.35, + "quantity": "metres" + }, + "floor_insulation": 1, + "total_floor_area": { + "value": 1.32, + "quantity": "square metres" + }, + "party_wall_length": { + "value": 0, + "quantity": "metres" + }, + "floor_construction": 1, + "heat_loss_perimeter": { + "value": 3.29, + "quantity": "metres" + } + } + ], + "wall_insulation_type": 6, + "construction_age_band": "D", + "party_wall_construction": "NA", + "wall_thickness_measured": "Y", + "roof_insulation_location": 4, + "roof_insulation_thickness": "ND", + "wall_insulation_thickness": "100mm", + "floor_insulation_thickness": "NI" + }, + { + "identifier": "Extension 2", + "wall_dry_lined": "N", + "wall_thickness": 400, + "floor_heat_loss": 7, + "roof_construction": 5, + "wall_construction": 4, + "building_part_number": 3, + "sap_floor_dimensions": [ + { + "floor": 0, + "room_height": { + "value": 2.35, + "quantity": "metres" + }, + "floor_insulation": 1, + "total_floor_area": { + "value": 1.21, + "quantity": "square metres" + }, + "party_wall_length": { + "value": 0, + "quantity": "metres" + }, + "floor_construction": 1, + "heat_loss_perimeter": { + "value": 3.48, + "quantity": "metres" + } + } + ], + "wall_insulation_type": 6, + "construction_age_band": "D", + "party_wall_construction": "NA", + "wall_thickness_measured": "Y", + "roof_insulation_location": 4, + "roof_insulation_thickness": "ND", + "wall_insulation_thickness": "100mm", + "floor_insulation_thickness": "NI" + } + ], + "solar_water_heating": "N", + "habitable_room_count": 3, + "heating_cost_current": { + "value": 542, + "currency": "GBP" + }, + "insulated_door_count": 2, + "co2_emissions_current": 0.4, + "energy_rating_average": 60, + "energy_rating_current": 85, + "lighting_cost_current": { + "value": 58, + "currency": "GBP" + }, + "main_heating_controls": [ + { + "description": "Programmer, TRVs and bypass", + "energy_efficiency_rating": 3, + "environmental_efficiency_rating": 3 + } + ], + "has_hot_water_cylinder": "true", + "heating_cost_potential": { + "value": 462, + "currency": "GBP" + }, + "hot_water_cost_current": { + "value": 678, + "currency": "GBP" + }, + "insulated_door_u_value": 1.1, + "mechanical_ventilation": 0, + "percent_draughtproofed": 100, + "suggested_improvements": [ + { + "sequence": 1, + "typical_saving": { + "value": 80, + "currency": "GBP" + }, + "indicative_cost": "\u00a35,000 - \u00a310,000", + "improvement_type": "W2", + "improvement_details": { + "improvement_number": 58 + }, + "improvement_category": 5, + "energy_performance_rating": 86, + "environmental_impact_rating": 96 + }, + { + "sequence": 2, + "typical_saving": { + "value": 80, + "currency": "GBP" + }, + "indicative_cost": "\u00a34,000 - \u00a37,000", + "improvement_type": "N", + "improvement_details": { + "improvement_number": 19 + }, + "improvement_category": 5, + "energy_performance_rating": 89, + "environmental_impact_rating": 97 + } + ], + "co2_emissions_potential": 0.3, + "energy_rating_potential": 89, + "lighting_cost_potential": { + "value": 58, + "currency": "GBP" + }, + "schema_version_original": "21.0.1", + "hot_water_cost_potential": { + "value": 584, + "currency": "GBP" + }, + "renewable_heat_incentive": { + "water_heating": 2670.41, + "space_heating_existing_dwelling": 6894.01 + }, + "draughtproofed_door_count": 2, + "energy_consumption_current": 59, + "has_fixed_air_conditioning": "false", + "multiple_glazed_proportion": 100, + "calculation_software_version": "5.02r0344", + "energy_consumption_potential": 47, + "environmental_impact_current": 96, + "current_energy_efficiency_band": "B", + "environmental_impact_potential": 97, + "has_heated_separate_conservatory": "false", + "potential_energy_efficiency_band": "B", + "co2_emissions_current_per_floor_area": 5, + "low_energy_fixed_lighting_bulbs_count": 8, + "incandescent_fixed_lighting_bulbs_count": 0 +} \ No newline at end of file diff --git a/domain/sap10_calculator/rdsap/tests/test_golden_fixtures.py b/domain/sap10_calculator/rdsap/tests/test_golden_fixtures.py index 23a3a8a2..f1528f51 100644 --- a/domain/sap10_calculator/rdsap/tests/test_golden_fixtures.py +++ b/domain/sap10_calculator/rdsap/tests/test_golden_fixtures.py @@ -236,6 +236,107 @@ _EXPECTATIONS: tuple[_GoldenExpectation, ...] = ( # remains in fixtures/golden/ as reference data per ADR-0010 §10; # will be subsumed by a BRE worked-example fixture covering the # heat-network path during P5. + + # 7-cert ASHP cohort — air source heat pump certs validated end-to-end + # against Elmhurst dr87 worksheets. Each cert closes to SAP integer + # = lodged at residual = 0; the unrounded SAP delta sits in a tight + # +0.030..+0.060 cluster from the systematic PSR-denominator HLC×ΔT + # drift documented in HANDOVER_CERT_0380_MIT_CASCADE.md (BRE web + # confirmed max_output_kw = 4.39 for record 104568 and 3.933 for + # 102421 — both match the cascade exactly, so the drift is in the + # HLC × 24.2 K design-heat-loss denominator, not the numerator). + # All 7 share PCDB 104568 (Mitsubishi PUZ-WM50VHA) except 9418 + # (Daikin EDLQ05CAV3 / PCDB 102421). + _GoldenExpectation( + cert_number="0380-2471-3250-2596-8761", + actual_sap=89, + expected_sap_resid=+0, + expected_pe_resid_kwh_per_m2=-14.7865, + expected_co2_resid_tonnes_per_yr=+0.2774, + notes=( + "Mitsubishi PUZ-WM50VHA PCDB 104568, semi-detached bungalow " + "TFA 60.43 age D, PV 3 kWp. Worksheet SAP 88.5104 — slice " + "102f-prep.1-9 closed cohort cascade SAP residual integer " + "to 0. PE residual -14.79 stems mostly from PV cascade " + "self-consumption β-factor split (Appendix M §3) — PE is " + "computed at PCDB Table 172 postcode climate (demand pass) " + "vs rating SAP at UK-avg, so PV self-consumption captures " + "different export/import fractions." + ), + ), + _GoldenExpectation( + cert_number="0350-2968-2650-2796-5255", + actual_sap=84, + expected_sap_resid=+0, + expected_pe_resid_kwh_per_m2=-7.9281, + expected_co2_resid_tonnes_per_yr=+0.1697, + notes=( + "Mitsubishi PUZ-WM50VHA PCDB 104568, ASHP cohort cert. " + "Worksheet SAP 84.1367 — cascade integer matches lodged." + ), + ), + _GoldenExpectation( + cert_number="2225-3062-8205-2856-7204", + actual_sap=89, + expected_sap_resid=+0, + expected_pe_resid_kwh_per_m2=-11.9175, + expected_co2_resid_tonnes_per_yr=+0.2617, + notes=( + "Mitsubishi PUZ-WM50VHA PCDB 104568, ASHP cohort cert with " + "PV. Worksheet SAP 88.7921. Slice 102f-prep.8 closed the " + "shower_outlets=None default (SAP residual -0.31 → +0.04)." + ), + ), + _GoldenExpectation( + cert_number="2636-0525-2600-0401-2296", + actual_sap=86, + expected_sap_resid=+0, + expected_pe_resid_kwh_per_m2=-9.7153, + expected_co2_resid_tonnes_per_yr=+0.2189, + notes=( + "Mitsubishi PUZ-WM50VHA PCDB 104568, ASHP cohort cert with " + "PV + 3.74 m² cantilever exposed floor + 12.76 m² alt wall. " + "Worksheet SAP 86.2641. Slice 102f-prep.9 (cantilever) and " + "102f-prep.10 (alt-wall opening allocation per " + "window_wall_type) brought cascade walls to spec-exact " + "20.024 and SAP from +0.49 → +0.03." + ), + ), + _GoldenExpectation( + cert_number="3800-8515-0922-3398-3563", + actual_sap=86, + expected_sap_resid=+0, + expected_pe_resid_kwh_per_m2=-9.7551, + expected_co2_resid_tonnes_per_yr=+0.2598, + notes=( + "Mitsubishi PUZ-WM50VHA PCDB 104568, ASHP cohort cert. " + "Worksheet SAP 86.1458." + ), + ), + _GoldenExpectation( + cert_number="9285-3062-0205-7766-7200", + actual_sap=84, + expected_sap_resid=+0, + expected_pe_resid_kwh_per_m2=-8.1110, + expected_co2_resid_tonnes_per_yr=+0.1559, + notes=( + "Mitsubishi PUZ-WM50VHA PCDB 104568, ASHP cohort cert. " + "Worksheet SAP 84.1369." + ), + ), + _GoldenExpectation( + cert_number="9418-3062-8205-3566-7200", + actual_sap=85, + expected_sap_resid=+0, + expected_pe_resid_kwh_per_m2=-9.5795, + expected_co2_resid_tonnes_per_yr=+0.2311, + notes=( + "Daikin Altherma EDLQ05CAV3 PCDB 102421 (heating_duration " + "code '24' — continuous, all days at Th). Worksheet SAP " + "84.6305. Slice 102f-prep.7 closed the Table N4 fixed-" + "duration MIT cascade (-2°C → +0.03)." + ), + ), )