Model/harness
Khalim Conn-Kowlessar 0918dd37ec feat(scripts): run_modelling_e2e — inspect recommendations per property_id
Revives the local recommendation-inspection flow for specific Properties.
`scripts/run_modelling_e2e.py` reads each Property's UPRN from the DB
(read-only), fetches the latest EPC live from the gov EPC API by UPRN, runs the
Modelling stage in memory (all Generators → Optimiser → costed, attributed
Plan), and prints a per-Property plan table + writes a Markdown/CSV summary.
Persists nothing — purely for inspection.

The local DB's Properties have no linked ingested EPC (epc_property.property_id
is NULL for all rows; Ingestion's source clients are stubbed, #1136), so the
EPC must be fetched inline rather than read back. Builds the connection from the
`DB_*` env vars in backend/.env and the EPC token from `EPC_AUTH_TOKEN`.

Threads optional solar insights through harness `run_modelling` (so Solar PV
Options can fire once coordinates are wired) and adds the `solar_pv` catalogue
row. Solar + planning restrictions + DB persistence are noted follow-ups.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 14:25:33 +00:00
..
__init__.py feat(modelling): sense-check table for a Plan in the DB-less harness 2026-06-04 08:06:53 +00:00
cohort.py feat(modelling): turnkey offline cohort script (tables + CSV) 2026-06-04 09:30:53 +00:00
console.py feat(scripts): run_modelling_e2e — inspect recommendations per property_id 2026-06-08 14:25:33 +00:00
epc_bulk.py feat(modelling): sample a year from the EPC bulk export, offline-ready 2026-06-04 12:20:57 +00:00
plan_table.py feat(modelling): wire Valuation Uplift onto the Plan 2026-06-04 08:59:04 +00:00
report.py feat(modelling): wire the ASHP bundle into the candidate pool 2026-06-06 17:12:07 +00:00
sample_catalogue.json feat(scripts): run_modelling_e2e — inspect recommendations per property_id 2026-06-08 14:25:33 +00:00