Model/infrastructure/postgres
Khalim Conn-Kowlessar 62a968119c feat(modelling): domain Scenario + ScenarioPostgresRepository (#1157)
Slice 1 of the #1157 build. The FE creates a Scenario and passes only
its id to the pipeline; the Modelling stage reads it back here.

- domain/modelling/scenario.py: thin `Scenario(id, goal, goal_value,
  budget, is_default)` — the slice the stage uses today (goal/budget for
  the Optimiser later; is_default drives plan.is_default). No phases
  (ADR-0005); legacy file-path/aggregate columns not modelled.
- infrastructure/postgres/scenario_table.py: `ScenarioRow` SQLModel
  mirror of the live `scenario` table (ADR-0017), declaring only the
  read columns; goal mapped as its string value.
- ScenarioPostgresRepository.get_many(scenario_ids) -> list[Scenario]:
  bulk read, input-order-preserving, raises on a missing id.

The method shape lives on the concrete repo for now; it is promoted to
an @abstractmethod on the port when the real orchestrator is wired and
the bare-stub instantiations retire (keeps the stubbed Modelling wiring
composing meanwhile). 2 tests, pyright strict clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-03 11:19:52 +00:00
..
__init__.py added postcode splitter rewrite to ddd 2026-05-19 16:35:09 +00:00
config.py added postcode splitter rewrite to ddd 2026-05-19 16:35:09 +00:00
engine.py tests wrong environemnt 2026-05-29 16:17:06 +00:00
epc_property_table.py feat(epc): persist renewable_heat_incentive — full round-trip equality (#1137) 2026-06-01 16:28:48 +00:00
landlord_built_form_type_override_table.py pr review, move domain and orhcestration 2026-06-01 14:00:31 +00:00
landlord_override_enums.py landlord overrid orchestration 2026-05-26 15:27:45 +00:00
landlord_property_type_override_table.py pr review, move domain and orhcestration 2026-06-01 14:00:31 +00:00
landlord_roof_type_override_table.py pr review, move domain and orhcestration 2026-06-01 14:00:31 +00:00
landlord_wall_type_override_table.py pr review, move domain and orhcestration 2026-06-01 14:00:31 +00:00
product_table.py feat(modelling): ProductRepository + Postgres materials-table source 2026-06-03 08:32:38 +00:00
property_baseline_performance_table.py feat(baseline): wire BillDerivation into the orchestrator and persist the Bill (ADR-0014) 2026-06-02 18:51:18 +00:00
property_table.py refactor(property): PropertyRow.id non-Optional (PR #1139 review) 2026-06-01 16:28:48 +00:00
scenario_table.py feat(modelling): domain Scenario + ScenarioPostgresRepository (#1157) 2026-06-03 11:19:52 +00:00
solar_table.py feat(ingestion): relocate EpcClientService to infrastructure + SolarRepo (#1133) 2026-06-01 16:28:48 +00:00
subtask_table.py added postcode splitter rewrite to ddd 2026-05-19 16:35:09 +00:00
task_table.py added postcode splitter rewrite to ddd 2026-05-19 16:35:09 +00:00