mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-07-27 23:35:01 +00:00
The committed gate needs frozen, reproducible data without dumping real UK addresses into the repo. Add: - harness anonymise_payload + stable_hash: hash street address + cert number into opaque, dedup-stable tokens; blank secondary address lines + post_town; keep postcode + all component/lodged fields (gov data is OGL). Unit-tested. - scripts/build_epc_prediction_fixture.py: curate qualifying postcodes (>=1 SAP 10.2 target + >=2 distinct addresses) from the local scratch corpus, anonymise, freeze under tests/fixtures/epc_prediction/. - The frozen fixture: 15 postcodes / 280 certs / 36 SAP-10.2 targets. Verified no plaintext address_line_1 and post_town all blank. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1 line
No EOL
12 KiB
JSON
1 line
No EOL
12 KiB
JSON
{"uprn": 100022784897, "roofs": [{"description": "Pitched, insulated (assumed)", "energy_efficiency_rating": 3, "environmental_efficiency_rating": 3}, {"description": "Pitched, limited insulation", "energy_efficiency_rating": 1, "environmental_efficiency_rating": 1}, {"description": "Roof room(s), limited insulation (assumed)", "energy_efficiency_rating": 3, "environmental_efficiency_rating": 3}], "walls": [{"description": "Solid brick, as built, no insulation (assumed)", "energy_efficiency_rating": 1, "environmental_efficiency_rating": 1}, {"description": "Solid brick, as built, insulated (assumed)", "energy_efficiency_rating": 4, "environmental_efficiency_rating": 4}], "floors": [{"description": "Suspended, no insulation (assumed)", "energy_efficiency_rating": 0, "environmental_efficiency_rating": 0}, {"description": "Solid, no insulation (assumed)", "energy_efficiency_rating": 0, "environmental_efficiency_rating": 0}], "status": "entered", "tenure": 1, "window": {"description": "Partial double glazing", "energy_efficiency_rating": 1, "environmental_efficiency_rating": 1}, "lighting": {"description": "Below average lighting efficiency", "energy_efficiency_rating": 2, "environmental_efficiency_rating": 2}, "postcode": "W10 4HL", "hot_water": {"description": "From main system", "energy_efficiency_rating": 4, "environmental_efficiency_rating": 4}, "post_town": "", "psv_count": 0, "built_form": 4, "created_at": "2026-01-30 20:23:32", "door_count": 1, "region_code": 1, "report_type": 2, "sap_heating": {"number_baths": 1, "cylinder_size": 1, "shower_outlets": [{"shower_wwhrs": 1, "shower_outlet_type": 1}, {"shower_wwhrs": 1, "shower_outlet_type": 1}], "number_baths_wwhrs": 0, "water_heating_code": 901, "water_heating_fuel": 26, "cylinder_thermostat": "N", "main_heating_details": [{"has_fghrs": "N", "main_fuel_type": 26, "boiler_flue_type": 2, "fan_flue_present": "N", "heat_emitter_type": 1, "emitter_temperature": 1, "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": 17503}], "immersion_heating_type": "NA", "has_fixed_air_conditioning": "false"}, "sap_version": 10.2, "sap_windows": [{"pvc_frame": "false", "orientation": 1, "window_type": 1, "glazing_type": 5, "window_width": {"value": 1.06, "quantity": "m"}, "window_height": {"value": 1.7, "quantity": "m"}, "draught_proofed": "false", "window_location": 0, "window_wall_type": 1, "permanent_shutters_present": "N", "permanent_shutters_insulated": "N"}, {"pvc_frame": "false", "orientation": 1, "window_type": 1, "glazing_type": 5, "window_width": {"value": 0.89, "quantity": "m"}, "window_height": {"value": 1.7, "quantity": "m"}, "draught_proofed": "false", "window_location": 0, "window_wall_type": 1, "permanent_shutters_present": "N", "permanent_shutters_insulated": "N"}, {"pvc_frame": "false", "orientation": 1, "window_type": 1, "glazing_type": 5, "window_width": {"value": 0.89, "quantity": "m"}, "window_height": {"value": 1.7, "quantity": "m"}, "draught_proofed": "false", "window_location": 0, "window_wall_type": 1, "permanent_shutters_present": "N", "permanent_shutters_insulated": "N"}, {"pvc_frame": "true", "glazing_gap": "16+", "orientation": 9, "window_type": 2, "glazing_type": 3, "window_width": {"value": 1, "quantity": "m"}, "window_height": {"value": 1, "quantity": "m"}, "draught_proofed": "true", "window_location": 2, "window_wall_type": 1, "permanent_shutters_present": "N", "permanent_shutters_insulated": "N"}, {"pvc_frame": "false", "orientation": 5, "window_type": 1, "glazing_type": 5, "window_width": {"value": 1.78, "quantity": "m"}, "window_height": {"value": 1.02, "quantity": "m"}, "draught_proofed": "false", "window_location": 1, "window_wall_type": 1, "permanent_shutters_present": "N", "permanent_shutters_insulated": "N"}, {"pvc_frame": "false", "orientation": 5, "window_type": 1, "glazing_type": 5, "window_width": {"value": 0.98, "quantity": "m"}, "window_height": {"value": 1.64, "quantity": "m"}, "draught_proofed": "false", "window_location": 0, "window_wall_type": 1, "permanent_shutters_present": "N", "permanent_shutters_insulated": "N"}, {"pvc_frame": "false", "orientation": 7, "window_type": 1, "glazing_type": 5, "window_width": {"value": 0.59, "quantity": "m"}, "window_height": {"value": 0.71, "quantity": "m"}, "draught_proofed": "false", "window_location": 1, "window_wall_type": 1, "permanent_shutters_present": "N", "permanent_shutters_insulated": "N"}, {"pvc_frame": "true", "glazing_gap": "16+", "orientation": 5, "window_type": 1, "glazing_type": 3, "window_width": {"value": 1.09, "quantity": "m"}, "window_height": {"value": 1.45, "quantity": "m"}, "draught_proofed": "true", "window_location": 1, "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": {"value": 0.86, "quantity": "m"}, "window_height": {"value": 0.96, "quantity": "m"}, "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": {"value": 0.96, "quantity": "m"}, "window_height": {"value": 1.33, "quantity": "m"}, "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": "Mid-terrace house", "language_code": 1, "pressure_test": 4, "property_type": 0, "address_line_1": "addr-de8952203bf9", "assessment_type": "RdSAP", "completion_date": "2026-01-30", "inspection_date": "2026-01-28", "extensions_count": 2, "measurement_type": 1, "open_flues_count": 0, "total_floor_area": 103, "transaction_type": 1, "conservatory_type": 1, "heated_room_count": 4, "other_flues_count": 0, "registration_date": "2026-01-30", "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}, "closed_flues_count": 0, "extract_fans_count": 2, "sap_building_parts": [{"identifier": "Main Dwelling", "wall_dry_lined": "N", "wall_thickness": 260, "floor_heat_loss": 7, "sap_room_in_roof": {"floor_area": 19.4, "room_in_roof_type_1": {"gable_wall_type_1": 2, "gable_wall_type_2": 2, "gable_wall_length_1": 4.6, "gable_wall_length_2": 4.6}, "construction_age_band": "L"}, "roof_construction": 4, "wall_construction": 3, "building_part_number": 1, "sap_floor_dimensions": [{"floor": 0, "room_height": 2.62, "floor_insulation": 1, "total_floor_area": 28.57, "party_wall_length": 13.56, "floor_construction": 2, "heat_loss_perimeter": 4.21}, {"floor": 1, "room_height": 2.34, "total_floor_area": 28.49, "party_wall_length": 13.51, "heat_loss_perimeter": 5.37}], "wall_insulation_type": 4, "construction_age_band": "A", "party_wall_construction": 0, "wall_thickness_measured": "Y", "roof_insulation_location": 4, "roof_insulation_thickness": "NI", "wall_insulation_thickness": "NI"}, {"identifier": "Extension 1", "wall_dry_lined": "N", "wall_thickness": 250, "floor_heat_loss": 7, "roof_construction": 8, "wall_construction": 3, "building_part_number": 2, "sap_floor_dimensions": [{"floor": 0, "room_height": 2.37, "floor_insulation": 1, "total_floor_area": 11.24, "party_wall_length": 3.62, "floor_construction": 1, "heat_loss_perimeter": 3.11}, {"floor": 1, "room_height": 2.34, "total_floor_area": 11.06, "party_wall_length": 3.62, "heat_loss_perimeter": 6.72}], "wall_insulation_type": 4, "construction_age_band": "A", "party_wall_construction": 0, "wall_thickness_measured": "Y", "roof_insulation_location": 7, "wall_insulation_thickness": "NI", "sloping_ceiling_insulation_thickness": "AB"}, {"identifier": "Extension 2", "wall_dry_lined": "N", "wall_thickness": 370, "floor_heat_loss": 7, "roof_construction": 8, "wall_construction": 3, "building_part_number": 3, "sap_floor_dimensions": [{"floor": 0, "room_height": 2.32, "floor_insulation": 1, "total_floor_area": 4, "party_wall_length": 0, "floor_construction": 1, "heat_loss_perimeter": 4.72}], "wall_insulation_type": 4, "construction_age_band": "L", "party_wall_construction": "NA", "wall_thickness_measured": "Y", "roof_insulation_location": 7, "wall_insulation_thickness": "NI", "sloping_ceiling_insulation_thickness": "AB"}], "boilers_flues_count": 0, "open_chimneys_count": 0, "solar_water_heating": "N", "habitable_room_count": 4, "heating_cost_current": {"value": 952, "currency": "GBP"}, "insulated_door_count": 0, "co2_emissions_current": 3.3, "energy_rating_average": 60, "energy_rating_current": 67, "lighting_cost_current": {"value": 142, "currency": "GBP"}, "main_heating_controls": [{"description": "Programmer, room thermostat and TRVs", "energy_efficiency_rating": 4, "environmental_efficiency_rating": 4}], "blocked_chimneys_count": 0, "has_hot_water_cylinder": "false", "heating_cost_potential": {"value": 610, "currency": "GBP"}, "hot_water_cost_current": {"value": 185, "currency": "GBP"}, "mechanical_ventilation": 0, "percent_draughtproofed": 36, "schema_version_current": "LIG-21.0", "suggested_improvements": [{"sequence": 1, "typical_saving": 73, "indicative_cost": "\u00a3900 - \u00a31,200", "improvement_type": "A2", "improvement_details": {"improvement_number": 45}, "improvement_category": 5, "energy_performance_rating": 69, "environmental_impact_rating": 67}, {"sequence": 2, "typical_saving": 179, "indicative_cost": "\u00a37,500 - \u00a311,000", "improvement_type": "Q", "improvement_details": {"improvement_number": 7}, "improvement_category": 5, "energy_performance_rating": 73, "environmental_impact_rating": 73}, {"sequence": 3, "typical_saving": 22, "indicative_cost": "\u00a3150 - \u00a3250", "improvement_type": "D", "improvement_details": {"improvement_number": 10}, "improvement_category": 5, "energy_performance_rating": 74, "environmental_impact_rating": 74}, {"sequence": 4, "typical_saving": 57, "indicative_cost": "\u00a3810 - \u00a3945", "improvement_type": "E", "improvement_details": {"improvement_number": 35}, "improvement_category": 5, "energy_performance_rating": 75, "environmental_impact_rating": 74}, {"sequence": 5, "typical_saving": 73, "indicative_cost": "\u00a34,500 - \u00a36,000", "improvement_type": "O", "improvement_details": {"improvement_number": 8}, "improvement_category": 5, "energy_performance_rating": 76, "environmental_impact_rating": 77}, {"sequence": 6, "typical_saving": 285, "indicative_cost": "\u00a38,000 - \u00a310,000", "improvement_type": "U", "improvement_details": {"improvement_number": 34}, "improvement_category": 5, "energy_performance_rating": 86, "environmental_impact_rating": 79}], "co2_emissions_potential": 1.9, "energy_rating_potential": 86, "lighting_cost_potential": {"value": 79, "currency": "GBP"}, "schema_version_original": "LIG-21.0", "hot_water_cost_potential": {"value": 185, "currency": "GBP"}, "renewable_heat_incentive": {"water_heating": 2490.09, "space_heating_existing_dwelling": 10924.11}, "draughtproofed_door_count": 0, "energy_consumption_current": 175, "has_fixed_air_conditioning": "false", "multiple_glazed_proportion": 35, "calculation_software_version": "10.2.2.0", "energy_consumption_potential": 99, "environmental_impact_current": 65, "cfl_fixed_lighting_bulbs_count": 0, "current_energy_efficiency_band": "D", "environmental_impact_potential": 79, "led_fixed_lighting_bulbs_count": 16, "has_heated_separate_conservatory": "false", "potential_energy_efficiency_band": "B", "co2_emissions_current_per_floor_area": 32, "incandescent_fixed_lighting_bulbs_count": 27} |