mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
Wires slice 1-5 primitives into a deployable splitter:
- orchestration/postcode_splitter_orchestrator.py: PostcodeSplitterOrchestrator
loads addresses via UserAddressRepository, groups by postcode via
iter_postcode_grouped_batches, persists each batch under
ara_postcode_splitter_batches/{task_id}/{subtask_id}/, creates a WAITING
child SubTask, and publishes an address2UPRN SQS message per batch.
- applications/postcode_splitter/: Lambda entrypoint. handler.py is decorated
with @subtask_handler() so the parent SubTask lifecycle is decorator-owned;
PostcodeSplitterTriggerBody validates the body. Dockerfile is the
python:3.11 Lambda base with the DDD-shaped source layers and no pandas.
- tests/orchestration/test_postcode_splitter_orchestrator.py: integration
test using moto S3 + moto SQS + in-memory SQLite that exercises the full
wiring against a fixture CSV spanning three postcode groups (one
oversize) and asserts child count, persisted inputs, queue bodies, and
dispatch order.
backend/postcode_splitter/ and .github/workflows/deploy_terraform.yml are
intentionally unchanged: the dockerfile_path flip is deferred until the
companion backend/address2UPRN/ migration is also ready.
21 lines
700 B
Docker
21 lines
700 B
Docker
FROM public.ecr.aws/lambda/python:3.11
|
|
|
|
WORKDIR /var/task
|
|
|
|
COPY applications/postcode_splitter/requirements.txt .
|
|
RUN pip install --no-cache-dir -r requirements.txt
|
|
|
|
# Copy the layered source the handler imports from. The new splitter pulls
|
|
# only DDD-shaped packages — no pandas, no legacy backend/.
|
|
COPY domain/ domain/
|
|
COPY infrastructure/ infrastructure/
|
|
COPY orchestration/ orchestration/
|
|
COPY repositories/ repositories/
|
|
COPY utilities/ utilities/
|
|
COPY applications/ applications/
|
|
|
|
# Place the handler at the Lambda task root so the runtime can resolve
|
|
# ``main.handler`` without an extra package prefix.
|
|
COPY applications/postcode_splitter/handler.py /var/task/main.py
|
|
|
|
CMD ["main.handler"]
|