Run the fuel-mismatch check on every Property's resolved overrides 🟩

Wire flag_fuel_mismatch into the two override-resolution paths (the property
repository and the modelling-e2e handler), keeping overlays_from a pure mapping.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Khalim Conn-Kowlessar 2026-06-30 17:21:32 +00:00
parent 13a6a213fb
commit dbcd2e3840
2 changed files with 14 additions and 4 deletions

View file

@ -108,7 +108,10 @@ from repositories.product.composite_product_repository import (
from repositories.property.in_memory_property_overrides_reader import (
InMemoryPropertyOverridesReader,
)
from repositories.property.landlord_override_overlays import overlays_from
from repositories.property.landlord_override_overlays import (
flag_fuel_mismatch,
overlays_from,
)
from repositories.property.override_backed_prediction_attributes_reader import (
OverrideBackedPredictionAttributesReader,
)
@ -561,7 +564,9 @@ def handler(
epc = (
None # no stored lodged EPC; prediction path handles this property
)
overrides = overlays_from(overrides_reader.overrides_for(pid))
resolved_overrides = overrides_reader.overrides_for(pid)
flag_fuel_mismatch(resolved_overrides)
overrides = overlays_from(resolved_overrides)
predicted_epc: Optional[EpcPropertyData] = None
predicted_epc_is_new = False

View file

@ -14,7 +14,10 @@ from domain.property.properties import Properties
from domain.property.property import Property, PropertyIdentity
from infrastructure.postgres.property_table import PropertyRow
from repositories.epc.epc_repository import EpcRepository
from repositories.property.landlord_override_overlays import overlays_from
from repositories.property.landlord_override_overlays import (
flag_fuel_mismatch,
overlays_from,
)
from repositories.property.property_overrides_reader import PropertyOverridesReader
from repositories.property.property_repository import (
PropertyIdentityInsert,
@ -63,7 +66,9 @@ class PropertyPostgresRepository(PropertyRepository):
no reader is wired (the overlay stays off) or the Property has none."""
if self._overrides_reader is None:
return []
return overlays_from(self._overrides_reader.overrides_for(property_id))
overrides = self._overrides_reader.overrides_for(property_id)
flag_fuel_mismatch(overrides)
return overlays_from(overrides)
def get(self, property_id: int) -> Property:
row = self._session.get(PropertyRow, property_id)