Model/domain/property_baseline
Khalim Conn-Kowlessar 0fb5da2f79 refactor(baseline): Performance.from_sap_result replaces the loose mapper
PR feedback: the SapResult -> Performance mapping should be a method, not a
free function you must know exists in the rebaseliner. Put the factory on
the target as `Performance.from_sap_result`, beside its sibling
`lodged_performance` and mirroring `Epc.from_sap_score` (the factory this
mapping already calls).

Not a `SapResult.to_performance()`: that would make the SAP calculator
import `Performance` (a property_baseline type), re-introducing the
engine->consumer coupling removed by the SapCalculator ABC. SapResult is a
TYPE_CHECKING-only import in performance.py (the body only reads attributes),
so the calculator module is not pulled in at runtime.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-02 13:59:25 +00:00
..
__init__.py refactor(property-baseline): rename baseline → property_baseline aggregate (PR #1139 review) 2026-06-01 14:54:59 +00:00
bill.py feat(baseline): BillDerivation prices an energy breakdown at Fuel Rates (ADR-0014) 2026-06-02 09:38:44 +00:00
bill_derivation.py feat(baseline): BillDerivation prices an energy breakdown at Fuel Rates (ADR-0014) 2026-06-02 09:38:44 +00:00
calculator_rebaseliner.py refactor(baseline): Performance.from_sap_result replaces the loose mapper 2026-06-02 13:59:25 +00:00
performance.py refactor(baseline): Performance.from_sap_result replaces the loose mapper 2026-06-02 13:59:25 +00:00
property_baseline_performance.py refactor(property-baseline): rename baseline → property_baseline aggregate (PR #1139 review) 2026-06-01 14:54:59 +00:00
rebaseliner.py feat(baseline): CalculatorRebaseliner — calculator goes load-bearing (ADR-0013 amend) 2026-06-02 10:04:24 +00:00
sap_fuel.py feat(baseline): SAP fuel-code -> Fuel mapping for billing (ADR-0014) 2026-06-02 09:50:10 +00:00