Model/domain/epc_prediction
Khalim Conn-Kowlessar 41b5ce5057 refactor(epc-prediction): name-keyed categorical_hits for Component Accuracy (ADR-0030)
ADR-0030 commits Component Accuracy to ~19 categorical components (5 today
+ 8 heating + glazing/renewables). Flat *_correct dataclass fields don't
scale — each needs manual runner wiring. Collapse them into a single
`categorical_hits: dict[str, Optional[bool]]` keyed by component name, which
also matches the runner's name-keyed aggregation (now generic: it tallies
whatever components the comparison reports). No behaviour change; the
classification rates are identical (wall n 578->575 is the 3 certs whose
actual wall is None, now correctly counted as not-applicable via _classify).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 08:50:34 +00:00
..
__init__.py feat(epc-prediction): Comparable Properties selection ladder (ADR-0029) 2026-06-13 23:44:57 +00:00
comparable_properties.py fix(epc-prediction): dedupe re-lodgements + leak-free leave-one-out (ADR-0029) 2026-06-14 00:40:23 +00:00
epc_prediction.py feat(epc-prediction): cohort-mode the roof/floor/insulation/age categoricals (ADR-0029) 2026-06-14 00:31:16 +00:00
prediction_comparison.py refactor(epc-prediction): name-keyed categorical_hits for Component Accuracy (ADR-0030) 2026-06-14 08:50:34 +00:00