mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-07-12 13:29:04 +00:00
The Elmhurst Summary section 15.1 "Hot Water Cylinder" block lodges "Immersion Heater: Dual" / "Single"; the extractor dropped it, so the Summary path left immersion_heating_type = None while the API path already captured it. Capturing it drives SAP Table 13's high-rate-fraction DHW-cost split (RdSAP 10 section 10.5 p.54: 1 = dual, 2 = single) and brings the two front-ends to parity. Three-file change: WaterHeating.immersion_type field + _extract_water_heating parse (scoped to the 15.1..15.2 slice) + _elmhurst_immersion_type_code mapper (strict-raise on an unmapped label, mirroring _elmhurst_cylinder_insulation_code). Safe to land now that the preceding commit zeroes the high-rate fraction for 18-/24-hour tariffs: the 20 solid-fuel corpus certs (solid fuel 4-11: WHC 903 dual immersion, 18-hour meter, 110 L) carry a dual immersion, but their 18-hour tariff bills 100% low-rate per Table 12a's 7-/10-hour scope — so they stay EXACT instead of regressing to the 10-hour-column ~0.10. 7-/10-hour Summary immersion certs now correctly cost the Table 13 high-rate fraction instead of falling to the immersion=None 100%-low default. Regression gate green (3 pre-existing fails unrelated); API gauge unchanged (Summary-path-only): 57.6% within 0.5, mean|err| 1.185. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| handler | ||
| tests | ||
| __init__.py | ||
| db_writer.py | ||
| elmhurst_extractor.py | ||
| extractor.py | ||
| local_runner.py | ||
| parser.py | ||
| pdf.py | ||