Daniel Roth
28c7e44c95
The deal database gateway records a deal's OpenHousing job_no 🟩
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 09:54:16 +00:00
Daniel Roth
d33c171494
The deal database gateway records a deal's OpenHousing job_no 🟥
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 09:53:42 +00:00
Daniel Roth
903ef62ef7
Merge branch 'main' into feature/abri-api-integration
2026-07-07 08:33:02 +00:00
Daniel Roth
3963ea54e9
Merge pull request #1479 from Hestia-Homes/feature/abri-logjob-orchestration
...
Abri LogJob orchestration: persist OpenHousing job_no to HubSpot and the deal database
2026-07-07 09:30:31 +01:00
Daniel Roth
a5868cc2e0
One AbriOrchestrator runs every Abri flow for a deal 🟪
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 16:26:48 +00:00
Daniel Roth
01f0392ce2
remove overly-specific comment
2026-07-06 16:14:25 +00:00
Daniel Roth
359516fa5f
The deal upsert lands client_booking_reference in the job_no column 🟩
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 16:10:29 +00:00
Daniel Roth
62d9bbf147
The deal upsert lands client_booking_reference in the job_no column 🟥
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 16:08:17 +00:00
Daniel Roth
0cd4efbf83
A client_booking_reference change triggers a deal database update 🟩
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 16:05:20 +00:00
Daniel Roth
faac50eca4
A client_booking_reference change triggers a deal database update 🟥
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 16:04:54 +00:00
Daniel Roth
ed08a6adfe
HubSpot clients share one scrubbed-retry call policy 🟪
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 16:02:22 +00:00
Daniel Roth
2ea9257036
A rate-limited HubSpot write is retried before succeeding 🟩
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 15:59:53 +00:00
Daniel Roth
7e5dc1722e
A rate-limited HubSpot write is retried before succeeding 🟥
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 15:59:27 +00:00
Daniel Roth
049475ec96
A failed HubSpot write raises a scrubbed error carrying the orphaned job_no 🟩
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 15:58:36 +00:00
Daniel Roth
350a76f942
A failed HubSpot write raises a scrubbed error carrying the orphaned job_no 🟥
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 15:57:16 +00:00
Daniel Roth
b847fa2f4c
Transport and parse failures propagate with nothing recorded 🟩
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 15:55:38 +00:00
Daniel Roth
ddfbbd0052
An OpenHousing rejection is surfaced verbatim with nothing recorded 🟩
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 15:54:58 +00:00
Daniel Roth
96f86aacac
A logged job's job_no is written to HubSpot and then the deal database 🟩
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 15:54:05 +00:00
Daniel Roth
6912dabf22
A logged job's job_no is written to HubSpot and then the deal database 🟥
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 15:52:35 +00:00
Daniel Roth
ce7b302c17
Log an OpenHousing job from a confirmed survey booking's deal fields 🟩
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 15:51:21 +00:00
Daniel Roth
98674ae895
Log an OpenHousing job from a confirmed survey booking's deal fields 🟥
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 15:50:07 +00:00
Jun-te Kim
9d4d764f48
Merge pull request #1476 from Hestia-Homes/fix/fastapi-landlord-overrides-sqs-wiring
...
fix(terraform): wire landlord-overrides SQS queue into FastAPI Lambda
2026-07-06 16:38:53 +01:00
Jun-te Kim
e0380123b6
fix(terraform): wire landlord-overrides SQS queue into FastAPI Lambda
...
The /v1/bulk-uploads/trigger-landlord-overrides endpoint reads
settings.LANDLORD_OVERRIDES_SQS_URL, but the fast-api Lambda's terraform
never set it, so it fell back to the config default "changeme" and
SendMessage failed with AWS.SimpleQueueService.NonExistentQueue.
The landlord-overrides queue (and its finaliser sibling) were added to the
router/config but only the finaliser was wired here. This adds the missing:
- terraform_remote_state data source for the queue's state
- LANDLORD_OVERRIDES_SQS_URL env var on the FastAPI Lambda
- queue ARN in the fastapi-sqs-send IAM policy (else AccessDenied)
Mirrors the existing postcode-splitter / combiner / finaliser wiring.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-06 15:36:58 +00:00
Daniel Roth
329e896ba5
Merge branch 'main' into feature/abri-api-integration
2026-07-06 15:15:54 +00:00
Daniel Roth
6335796d6e
Merge pull request #1471 from Hestia-Homes/feature/abri-api-integration
...
Abri OpenHousing DomnaRelay — GetTenantData vertical (tenancy signatories to HubSpot)
2026-07-06 16:15:36 +01:00
Daniel Roth
06354a166e
Phone-number selection policy lives in the domain layer 🟪
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 14:47:37 +00:00
Daniel Roth
859a7ec49a
change fake contact details
2026-07-06 14:34:39 +00:00
Daniel Roth
de2a6d1d79
Add manual smoke script for the Abri tenant-contact HubSpot writes
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 14:19:05 +00:00
Daniel Roth
76896f9a8e
rename tenant data sync to abri tenant data sync
2026-07-06 14:05:42 +00:00
Daniel Roth
578de8845a
Tenant-data fixtures carry fictional names and Ofcom-reserved phone numbers 🟪
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 14:02:38 +00:00
Daniel Roth
8fd808ffd9
HubSpot deal-contacts transport lives under infrastructure like the other API clients 🟪
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 14:01:47 +00:00
Jun-te Kim
1d3e8c2646
Merge pull request #1469 from Hestia-Homes/fix/fastapi-lambda-zip-size
...
Fix fastapi lambda exceeding AWS's 250MB unzipped size limit
2026-07-06 14:54:49 +01:00
Jun-te Kim
adb1bf4b56
Log GITHUB_SHA on /health; move zip-size gate to its own PR workflow
...
/health already returned GITHUB_SHA in its response but never logged
it, and the fastapi lambda's Terraform environment never actually set
GITHUB_SHA — so every health check response contained "unknown" in
production. Wire var.github_sha through the fastapi lambda module
(default "unknown" for local/other invocations) via a new
TF_VAR_github_sha env var set from `github.sha` in
_deploy_lambda.yml's Terraform Plan step, and log it on every /health
call so a request in CloudWatch can be tied back to the deploy that
served it.
Also fix the zip-size gate added for PR #1469 : putting it in
tests/test_lambda_zip_size.py (run via the Docker-based ddd_tests.yml
suite) broke CI, because Dockerfile.test's build context excludes
deployment/* (.dockerignore), so check_lambda_zip_size.py couldn't
find variables.tf to read zip_excludes from inside that container.
Move the check to its own lightweight workflow,
check_lambda_zip_size.yml, triggered on pull_request into main — a
plain checkout (no Docker build) has the full repo, so the check
works, runs fast, and still gates merges to main before a regression
can roll into the dev deploy.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-06 13:43:36 +00:00
Daniel Roth
b96aceaf7b
HubSpot calls share one retry policy behind a single guarded entry point 🟪
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 13:42:58 +00:00
Daniel Roth
8d9fb0ade4
Transient HubSpot failures are retried under the shared rate-limit policy 🟩
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 13:38:20 +00:00
Daniel Roth
8d684c57c7
Transient HubSpot failures are retried under the shared rate-limit policy 🟥
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 13:36:43 +00:00
Daniel Roth
81d25caead
A failed HubSpot write stops the sync and reports the orphaned contacts 🟩
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 13:35:47 +00:00
Daniel Roth
065217f8af
A failed HubSpot write stops the sync and reports the orphaned contacts 🟥
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 13:35:20 +00:00
Daniel Roth
e3894b0309
HubSpot failures surface without the response body that echoes tenant PII 🟩
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 13:34:33 +00:00
Daniel Roth
2e19085875
HubSpot failures surface without the response body that echoes tenant PII 🟥
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 13:33:42 +00:00
Daniel Roth
3dd2dfe92c
Empty tenancies, Abri rejections and ambiguous responses resolve like the other relay operations 🟩
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 13:32:13 +00:00
Daniel Roth
203ffac01f
Empty tenancies, Abri rejections and ambiguous responses resolve like the other relay operations 🟥
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 13:31:55 +00:00
Daniel Roth
64d397e6b4
Tenant vulnerabilities are recorded on the tenant's own contact 🟩
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 13:31:00 +00:00
Daniel Roth
d4bdbf2e2f
Tenant vulnerabilities are recorded on the tenant's own contact 🟥
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 13:30:22 +00:00
Daniel Roth
52f2286ee9
Runner-up number fills the contact's secondary phone number 🟩
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 13:29:38 +00:00
Daniel Roth
10636c1752
Runner-up number fills the contact's secondary phone number 🟥
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 13:28:56 +00:00
Jun-te Kim
e816972c45
Move the fastapi Lambda zip-size gate into the PR test suite
...
deploy_terraform.yml only triggers on push to dev/prod — by the time
it runs, the change has already merged to main and rolled into dev.
That's exactly how the size regression sat undetected for weeks: it
only ever surfaced deep inside terraform apply on dev.
Drop the fast_api_lambda_zip_size_check job from deploy_terraform.yml
and instead add tests/test_lambda_zip_size.py, which runs
backend/app/requirements/check_lambda_zip_size.py as part of the
existing pytest tests/ suite. ddd_tests.yml already runs that suite
on `pull_request: branches: ["**"]`, so this now fails the PR before
anything merges to main, rather than failing the dev deploy after.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-06 13:28:24 +00:00
Daniel Roth
1752a6cf10
Contact carries the best-priority mobile and landline Abri lists 🟩
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 13:27:59 +00:00
Daniel Roth
1d3219ca60
Contact carries the best-priority mobile and landline Abri lists 🟥
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 13:27:39 +00:00
Daniel Roth
01e61a6275
Each tenancy signatory gets its own deal contact, with blank fields omitted 🟩
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 13:27:04 +00:00