mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-07-27 23:35:01 +00:00
Model the newer stored survey when refetching EPCs 🟩
Read stored lodged EPCs whatever refetch_epc says, so a stored assessment can win the ADR-0001 Recency Tie-Break against the gov register. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
7a2f29027c
commit
870ec68dba
2 changed files with 20 additions and 10 deletions
|
|
@ -607,11 +607,11 @@ def handler(
|
|||
)
|
||||
epc_repo = EpcPostgresRepository(read_session)
|
||||
# Lodged EPCs are read by UPRN (keyed by UPRN below); predicted EPCs stay
|
||||
# keyed on property_id.
|
||||
stored_lodged_epcs: dict[int, EpcPropertyData] = (
|
||||
epc_repo.get_for_properties(list(set(uprns.values())))
|
||||
if not refetch_epc
|
||||
else {}
|
||||
# keyed on property_id. Read whatever refetch_epc says — the flag decides
|
||||
# whether the gov register is consulted for a *candidate*, never whether a
|
||||
# stored assessment can win the ADR-0001 Recency Tie-Break (#1589).
|
||||
stored_lodged_epcs: dict[int, EpcPropertyData] = epc_repo.get_for_properties(
|
||||
list(set(uprns.values()))
|
||||
)
|
||||
stored_predicted_epcs: dict[int, EpcPropertyData] = (
|
||||
epc_repo.get_predicted_for_properties(property_ids)
|
||||
|
|
@ -645,8 +645,15 @@ def handler(
|
|||
stored_lodged = stored_lodged_epcs.get(uprn)
|
||||
lodged_epc_is_new = False
|
||||
if refetch_epc:
|
||||
epc: Optional[EpcPropertyData] = epc_client.get_by_uprn(uprn)
|
||||
lodged_epc_is_new = epc is not None
|
||||
epc: Optional[EpcPropertyData] = None
|
||||
epc, lodged_epc_is_new = _newer_lodged(
|
||||
stored_lodged, epc_client.get_by_uprn(uprn)
|
||||
)
|
||||
if epc is not None and not lodged_epc_is_new:
|
||||
logger.info(
|
||||
f"property={pid} stored lodged EPC is newer than the "
|
||||
f"fetched cert — keeping the stored assessment"
|
||||
)
|
||||
elif stored_lodged is not None:
|
||||
logger.info(
|
||||
f"property={pid} using stored lodged EPC (refetch_epc=False)"
|
||||
|
|
|
|||
|
|
@ -1933,10 +1933,13 @@ def test_repredict_epc_false_without_stored_predicted_epc_falls_back_to_live_pre
|
|||
stack.enter_context(
|
||||
patch("applications.modelling_e2e.handler.run_modelling", return_value=mock_plan)
|
||||
)
|
||||
# No stored predicted EPC
|
||||
stack.enter_context(
|
||||
# Nothing stored: no predicted EPC, and no lodged EPC to win the
|
||||
# tie-break against the register's None
|
||||
mock_epc_repo = stack.enter_context(
|
||||
patch("applications.modelling_e2e.handler.EpcPostgresRepository")
|
||||
).return_value.get_predicted_for_properties.return_value = {}
|
||||
).return_value
|
||||
mock_epc_repo.get_predicted_for_properties.return_value = {}
|
||||
mock_epc_repo.get_for_properties.return_value = {}
|
||||
MockUoW = stack.enter_context(
|
||||
patch("applications.modelling_e2e.handler.PostgresUnitOfWork")
|
||||
)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue