Daniel Roth
0d82f9e660
Declare the XML content type the Abri relay requires 🟥
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-08 10:07:04 +00:00
Daniel Roth
8b7d32433e
Merge pull request #1492 from Hestia-Homes/feature/abri-api-integration
...
Abri API integration: abandon job
2026-07-08 10:53:21 +01:00
Daniel Roth
84d0e1e0d5
Date an abandonment to the deal's own dates, not now() 🟩
...
date_abandoned now resolves to the third failed attempt's confirmed
survey date, falling back to its last submission date, rather than the
processing date. This dates the OpenHousing cancellation to when the
job actually lapsed even if the trigger message lags or redelivers.
- domain: abandonment_date() encodes the confirmed-survey -> last-
submission fallback
- DealAbandonment carries both dates; abandon_job raises
AbandonmentDateUnknownError when a deal has neither
- last_submission_date now flows through the trigger message and request
- the injected clock is dropped: nothing reads now() any more
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-08 08:51:39 +00:00
KhalimCK
bd01f403c9
Merge pull request #1490 from Hestia-Homes/fix/first-plan-is-default
...
A property's first plan becomes its default whatever the scenario says
2026-07-07 17:59:36 +01:00
Khalim Conn-Kowlessar
8dd125f199
Review nitpicks: pids_with_default naming, empty-batch guard, truthful fake 🟪
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 16:44:23 +00:00
Khalim Conn-Kowlessar
aa94e76d3d
A new default plan demotes the prior default across scenarios 🟥
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 16:41:48 +00:00
Khalim Conn-Kowlessar
101c1f1f21
A property's first plan becomes its default whatever the scenario says 🟥
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 16:12:34 +00:00
Khalim Conn-Kowlessar
015db4275b
The plan repository reports which properties already have a default plan 🟥
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 16:08:30 +00:00
Daniel Roth
ecdcf12050
Dispatch the abandon flow last for a fired deal-change 🟥
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-07 15:45:07 +00:00
Daniel Roth
8cc6ee9f76
Accept an abandon_job flow carrying the deal outcome 🟥
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-07 15:42:02 +00:00
Daniel Roth
83af3ff4d0
Orchestrate an abandonment from a deal's recorded job 🟥
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-07 15:40:25 +00:00
Daniel Roth
2512d428a1
Map a HubSpot outcome to an abandonment reason code 🟥
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-07 15:38:10 +00:00
Daniel Roth
007e561af5
Keep ambiguous or failed-transport canceljob responses retriable 🟩
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-07 15:36:15 +00:00
Daniel Roth
a384b87d8f
Surface both canceljob failure shapes as verbatim rejections 🟥
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-07 15:33:16 +00:00
Daniel Roth
c206a76b22
Abandon a job through the relay canceljob route 🟥
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-07 15:30:24 +00:00
Jun-te Kim
269aade481
test(address2uprn): cover ambiguity withholding + override dedup; add ADR-0057
...
- unit tests for resolve_group_ambiguity (distinct addresses withheld,
same-address re-listing kept, order preserved)
- Postgres integration tests for upsert_all's backstop dedup
- ADR-0057 recording the "confirm UPRNs before finalise" decision
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-07 15:21:04 +00:00
Jun-te Kim
4e0134dd27
Merge branch 'feat/address2uprn-certificate-number' into feature/uprn-confirmation-before-finalise
...
# Conflicts:
# backend/address2UPRN/main.py
2026-07-07 15:17:47 +00:00
Daniel Roth
c0e444fccb
abri_api not abri
2026-07-07 14:40:33 +00:00
Jun-te Kim
7abc71ed95
Drop property-table wiring for certificate_number
...
On reflection the certificate number only needs to travel through the
address2uprn pipeline (result CSV, S3 output) as an internal value —
not persisted to property. Reverts the PropertyIdentityInsert /
property_table.py / property_postgres_repository.py changes; keeps
certificate_number flowing through get_epc_data_with_postcode,
get_uprn_with_epc_df, get_uprn_from_historic_epc, and the
address2uprn_certificate_number result column.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-07 14:16:55 +00:00
Daniel Roth
1085384f21
Merge branch 'main' into feature/abri-api-integration
2026-07-07 14:08:52 +00:00
KhalimCK
9ff4de0563
Merge pull request #1481 from Hestia-Homes/feature/modelling-trigger-run
...
Modelling Run Distributor: POST /v1/modelling/trigger-run
2026-07-07 14:36:45 +01:00
Jun-te Kim
3718743801
Carry the EPC certificate number through address2uprn to property
...
EpcClientService.search_by_postcode already returns the matched
certificate number alongside the UPRN, but it was dropped before
persistence. Thread it through get_epc_data_with_postcode ->
get_uprn_with_epc_df / get_uprn_from_historic_epc (using the historic
dataset's lmk_key) -> the address2uprn_certificate_number result
column -> PropertyIdentityInsert -> the property table's new
certificate_number column (assessment-model PR #362 ).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-07 13:26:49 +00:00
Khalim Conn-Kowlessar
ddd64a9297
Legacy property columns no longer resolve type or built form 🟥
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 12:49:19 +00:00
Daniel Roth
7ad0dc0595
Merge branch 'main' into feature/abri-api-integration
2026-07-07 12:46:17 +00:00
Daniel Roth
a3985389ab
The deal row names the job number client_booking_reference, matching HubSpot and the schema 🟪
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 12:43:40 +00:00
Daniel Roth
5286e2a2a2
The job number is stored in the client_booking_reference column 🟩
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 12:31:07 +00:00
Khalim Conn-Kowlessar
ca799cc5e5
Scenarios outside the portfolio refuse the run 🟥
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 12:06:02 +00:00
Khalim Conn-Kowlessar
e9b39df322
Filters that match no properties refuse the run 🟥
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 12:05:03 +00:00
Khalim Conn-Kowlessar
dade7a3a5f
A task that already has sub_tasks refuses re-distribution 🟥
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 12:04:05 +00:00
Khalim Conn-Kowlessar
489e2b5d47
Trigger-run fans out one sub_task and message per scenario batch 🟥
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 12:02:12 +00:00
Khalim Conn-Kowlessar
7606480338
An oversized postcode becomes its own batch 🟩
...
Behavior emerged from the packing rule — pinned straight to green.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 12:00:07 +00:00
Khalim Conn-Kowlessar
80c474b37b
Batches never split a postcode 🟥
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 11:58:41 +00:00
Khalim Conn-Kowlessar
3cf44d6409
An attach-mode partial failure persists successes then records the failure 🟥
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 11:55:49 +00:00
Khalim Conn-Kowlessar
b840af11de
An attach-mode batch models under the supplied sub_task without children 🟥
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 11:52:45 +00:00
Khalim Conn-Kowlessar
52b07e3ea4
A recorded batch failure does not return the message to SQS 🟥
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 11:50:38 +00:00
Daniel Roth
3b9b558628
The job number is stored in the client_booking_reference column 🟥
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 11:50:10 +00:00
Khalim Conn-Kowlessar
8a3c0f3e77
A recorded batch failure carries structured details onto the sub_task outputs 🟥
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 11:49:56 +00:00
Khalim Conn-Kowlessar
f01131a064
A batch message with task_id and subtask_id attaches to the app-owned task 🟩
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 11:48:53 +00:00
Khalim Conn-Kowlessar
ca6ca2a220
A batch message with task_id and subtask_id attaches to the app-owned task 🟥
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 11:47:20 +00:00
Khalim Conn-Kowlessar
513977a6fd
Filters combine with AND 🟩
...
Behavior emerged from filter composition — pinned straight to green.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 11:43:51 +00:00
Khalim Conn-Kowlessar
d56079a1d4
Built-form filter resolves with the same precedence as property type 🟥
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 11:42:14 +00:00
Khalim Conn-Kowlessar
4d0af87d5a
Unknown is a selectable property-type bucket 🟥
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 11:40:46 +00:00
Khalim Conn-Kowlessar
faea3209b2
A property without override or EPC falls back to the legacy column 🟥
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 11:39:54 +00:00
Khalim Conn-Kowlessar
9b146dfaf4
An EPC without property_type falls back to its dwelling_type 🟥
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 11:39:10 +00:00
Khalim Conn-Kowlessar
302861309c
Numeric RdSAP property-type codes map to their labels 🟥
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 11:38:18 +00:00
Khalim Conn-Kowlessar
45dab78f4e
EPC-derived property type prefers lodged over predicted 🟥
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 11:37:18 +00:00
Khalim Conn-Kowlessar
f40abcedeb
Property-type override beats the lodged EPC 🟥
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 11:36:13 +00:00
Khalim Conn-Kowlessar
b865e89195
Postcode filter matches the canonical postcode exactly 🟥
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 11:33:29 +00:00
Khalim Conn-Kowlessar
84fb9884d6
No filters resolves the whole portfolio minus deletions 🟥
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 11:32:10 +00:00
Khalim Conn-Kowlessar
561b8b078b
Test names state the surviving failure-recovery behaviors 🟪
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 11:12:12 +00:00