diff --git a/backend/documents_parser/tests/fixtures/Summary_000784.pdf b/backend/documents_parser/tests/fixtures/Summary_000784.pdf new file mode 100644 index 00000000..72c53d2c Binary files /dev/null and b/backend/documents_parser/tests/fixtures/Summary_000784.pdf differ diff --git a/domain/sap10_calculator/rdsap/tests/fixtures/golden/9501-3059-8202-7356-0204.json b/domain/sap10_calculator/rdsap/tests/fixtures/golden/9501-3059-8202-7356-0204.json new file mode 100644 index 00000000..da18a4be --- /dev/null +++ b/domain/sap10_calculator/rdsap/tests/fixtures/golden/9501-3059-8202-7356-0204.json @@ -0,0 +1,429 @@ +{ + "uprn": 100032131984, + "roofs": [ + { + "description": "Pitched, insulated (assumed)", + "energy_efficiency_rating": 3, + "environmental_efficiency_rating": 3 + }, + { + "description": "Roof room(s), ceiling insulated", + "energy_efficiency_rating": 2, + "environmental_efficiency_rating": 2 + } + ], + "walls": [ + { + "description": "Solid brick, as built, no insulation (assumed)", + "energy_efficiency_rating": 1, + "environmental_efficiency_rating": 1 + } + ], + "floors": [ + { + "description": "(another dwelling below)", + "energy_efficiency_rating": 0, + "environmental_efficiency_rating": 0 + } + ], + "status": "entered", + "tenure": 2, + "window": { + "description": "Fully double glazed", + "energy_efficiency_rating": 2, + "environmental_efficiency_rating": 2 + }, + "addendum": { + "addendum_numbers": [ + 8 + ] + }, + "lighting": { + "description": "Good lighting efficiency", + "energy_efficiency_rating": 4, + "environmental_efficiency_rating": 4 + }, + "postcode": "NG9 1QN", + "hot_water": { + "description": "From main system", + "energy_efficiency_rating": 4, + "environmental_efficiency_rating": 4 + }, + "post_town": "NOTTINGHAM", + "built_form": "NR", + "created_at": "2026-03-24 13:28:51", + "door_count": 1, + "region_code": 3, + "report_type": 2, + "sap_heating": { + "number_baths": 0, + "cylinder_size": 1, + "shower_outlets": [ + { + "shower_outlet": { + "shower_wwhrs": 1, + "shower_outlet_type": 2 + } + } + ], + "number_baths_wwhrs": 0, + "water_heating_code": 901, + "water_heating_fuel": 26, + "secondary_fuel_type": 29, + "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": 19007 + } + ], + "immersion_heating_type": "NA", + "secondary_heating_type": 691, + "has_fixed_air_conditioning": "false" + }, + "sap_version": 10.2, + "sap_windows": [ + { + "pvc_frame": "true", + "glazing_gap": "16+", + "orientation": 6, + "window_type": 1, + "glazing_type": 3, + "window_width": 0.86, + "window_height": 1.03, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "pvc_frame": "true", + "glazing_gap": "16+", + "orientation": 8, + "window_type": 1, + "glazing_type": 3, + "window_width": 0.92, + "window_height": 1.12, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "pvc_frame": "true", + "glazing_gap": "16+", + "orientation": 6, + "window_type": 1, + "glazing_type": 3, + "window_width": 1.01, + "window_height": 2.07, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "pvc_frame": "true", + "glazing_gap": "16+", + "orientation": 8, + "window_type": 1, + "glazing_type": 3, + "window_width": 1.03, + "window_height": 1.81, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "pvc_frame": "true", + "glazing_gap": "16+", + "orientation": 8, + "window_type": 1, + "glazing_type": 3, + "window_width": 0.88, + "window_height": 1.95, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "pvc_frame": "true", + "glazing_gap": "16+", + "orientation": 2, + "window_type": 1, + "glazing_type": 3, + "window_width": 0.68, + "window_height": 1.41, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "pvc_frame": "true", + "glazing_gap": "16+", + "orientation": 6, + "window_type": 1, + "glazing_type": 3, + "window_width": 0.68, + "window_height": 1.41, + "draught_proofed": "true", + "window_location": 0, + "window_wall_type": 1, + "permanent_shutters_present": "N", + "permanent_shutters_insulated": "N" + }, + { + "pvc_frame": "true", + "glazing_gap": "16+", + "orientation": 2, + "window_type": 1, + "glazing_type": 3, + "window_width": 0.76, + "window_height": 1.43, + "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": "Address Matched", + "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": "Top-floor flat", + "language_code": 1, + "pressure_test": 4, + "property_type": 2, + "address_line_1": "Flat B", + "address_line_2": "2 Laburnum Grove", + "address_line_3": "Beeston", + "assessment_type": "RdSAP", + "completion_date": "2026-03-24", + "inspection_date": "2026-02-10", + "extensions_count": 0, + "measurement_type": 1, + "sap_flat_details": { + "level": 3, + "top_storey": "Y", + "storey_count": 2, + "flat_location": 1, + "heat_loss_corridor": 0 + }, + "total_floor_area": 113, + "transaction_type": 5, + "conservatory_type": 1, + "heated_room_count": 5, + "registration_date": "2026-03-24", + "sap_energy_source": { + "mains_gas": "Y", + "meter_type": 2, + "pv_connection": 2, + "photovoltaic_supply": { + "pv_arrays": [ + { + "pitch": 3, + "peak_power": 2.36, + "orientation": 6, + "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": "Room heaters, electric", + "energy_efficiency_rating": 0, + "environmental_efficiency_rating": 0 + }, + "extract_fans_count": 2, + "lzc_energy_sources": [ + 11 + ], + "sap_building_parts": [ + { + "identifier": "Main Dwelling", + "wall_dry_lined": "N", + "wall_thickness": 250, + "floor_heat_loss": 6, + "sap_room_in_roof": { + "floor_area": 31.8, + "room_in_roof_details": { + "gable_wall_type_1": 0, + "gable_wall_type_2": 0, + "gable_wall_height_1": 2.45, + "gable_wall_height_2": 2.45, + "gable_wall_length_1": 5.51, + "gable_wall_length_2": 6.51, + "flat_ceiling_height_1": 1, + "flat_ceiling_length_1": 5.5, + "flat_ceiling_insulation_type_1": 0, + "flat_ceiling_insulation_thickness_1": "300mm" + }, + "construction_age_band": "B" + }, + "roof_construction": 5, + "wall_construction": 3, + "building_part_number": 1, + "sap_floor_dimensions": [ + { + "floor": 0, + "room_height": { + "value": 3.27, + "quantity": "metres" + }, + "total_floor_area": { + "value": 6.85, + "quantity": "square metres" + }, + "party_wall_length": { + "value": 6.85, + "quantity": "metres" + }, + "heat_loss_perimeter": { + "value": 10.41, + "quantity": "metres" + } + }, + { + "floor": 1, + "room_height": { + "value": 2.48, + "quantity": "metres" + }, + "total_floor_area": { + "value": 74.43, + "quantity": "square metres" + }, + "party_wall_length": { + "value": 11.04, + "quantity": "metres" + }, + "heat_loss_perimeter": { + "value": 28.45, + "quantity": "metres" + } + } + ], + "wall_insulation_type": 4, + "construction_age_band": "B", + "party_wall_construction": 1, + "wall_thickness_measured": "Y", + "roof_insulation_location": 4, + "roof_insulation_thickness": "ND", + "wall_insulation_thickness": "NI" + } + ], + "solar_water_heating": "N", + "habitable_room_count": 5, + "heating_cost_current": { + "value": 1543, + "currency": "GBP" + }, + "insulated_door_count": 0, + "co2_emissions_current": 3.6, + "energy_rating_average": 60, + "energy_rating_current": 69, + "lighting_cost_current": { + "value": 78, + "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": 818, + "currency": "GBP" + }, + "hot_water_cost_current": { + "value": 324, + "currency": "GBP" + }, + "mechanical_ventilation": 0, + "percent_draughtproofed": 100, + "suggested_improvements": [ + { + "sequence": 1, + "typical_saving": { + "value": 719, + "currency": "GBP" + }, + "indicative_cost": "\u00a37,500 - \u00a311,000", + "improvement_type": "Q", + "improvement_details": { + "improvement_number": 7 + }, + "improvement_category": 5, + "energy_performance_rating": 83, + "environmental_impact_rating": 83 + } + ], + "co2_emissions_potential": 1.8, + "energy_rating_potential": 83, + "lighting_cost_potential": { + "value": 78, + "currency": "GBP" + }, + "schema_version_original": "21.0.1", + "hot_water_cost_potential": { + "value": 324, + "currency": "GBP" + }, + "renewable_heat_incentive": { + "water_heating": 1991.01, + "space_heating_existing_dwelling": 14717.13 + }, + "draughtproofed_door_count": 1, + "energy_consumption_current": 182, + "has_fixed_air_conditioning": "false", + "multiple_glazed_proportion": 100, + "calculation_software_version": "5.02r0335", + "energy_consumption_potential": 95, + "environmental_impact_current": 68, + "current_energy_efficiency_band": "C", + "environmental_impact_potential": 83, + "has_heated_separate_conservatory": "false", + "potential_energy_efficiency_band": "B", + "co2_emissions_current_per_floor_area": 31, + "low_energy_fixed_lighting_bulbs_count": 11, + "incandescent_fixed_lighting_bulbs_count": 0 +} \ No newline at end of file