mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
Slice 4 of the glazing generator (ADR-0022): run recommend_glazing in _candidate_recommendations, threading the Property's PlanningRestrictions so a protected dwelling is offered secondary glazing instead of double (mirrors recommend_solid_wall). Price both Measure Types in the offline catalogue (double £600/window, secondary £510 -- the legacy 0.85x scaling) and the contingency table (0.15, the legacy windows_glazing rate); the _GENERATOR_MEASURE_TYPES forcing test enforces both entries exist. run_modelling tests pin the wiring end-to-end on an all-single-glazed dwelling: double when unrestricted, secondary when listed. The first-run integration test seeds a double_glazing Product because its lodged EPC has a single-glazed window. _single_glazed_epc() deep-copies build_epc() (which shares its window objects) so the mutation can't leak into other tests' baselines. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
13 lines
635 B
JSON
13 lines
635 B
JSON
{
|
|
"cavity_wall_insulation": { "unit_cost_per_m2": 18.5 },
|
|
"loft_insulation": { "unit_cost_per_m2": 12.0 },
|
|
"sloping_ceiling_insulation": { "unit_cost_per_m2": 40.0 },
|
|
"flat_roof_insulation": { "unit_cost_per_m2": 60.0 },
|
|
"suspended_floor_insulation": { "unit_cost_per_m2": 25.0 },
|
|
"solid_floor_insulation": { "unit_cost_per_m2": 45.0 },
|
|
"mechanical_ventilation": { "unit_cost_per_m2": 450.0 },
|
|
"external_wall_insulation": { "unit_cost_per_m2": 100.0 },
|
|
"internal_wall_insulation": { "unit_cost_per_m2": 90.0 },
|
|
"double_glazing": { "unit_cost_per_m2": 600.0 },
|
|
"secondary_glazing": { "unit_cost_per_m2": 510.0 }
|
|
}
|