M4: implement n8n automation
Outbox dispatcher (background thread, FOR UPDATE SKIP LOCKED claim, exponential backoff, no transaction held during HTTP I/O). n8n callback endpoint with shared-secret auth and idempotency by event ID. Automation nav + UI with manual retry. 49 backend tests passing, ruff clean. Fixed a crash-on-redelivery bug in seeded outbox payloads and made the dispatcher defensive against malformed payloads. Verified the full live round trip against a real n8n instance: return -> outbox -> dispatcher -> n8n workflow -> callback -> succeeded, including the S5 failed-retry demo scenario.
This commit is contained in:
@@ -33,6 +33,7 @@ services:
|
||||
RAGCORE_COLLECTION: ${RAGCORE_COLLECTION:-internal-procedures}
|
||||
RAGCORE_API_TOKEN: ${RAGCORE_API_TOKEN:-}
|
||||
N8N_WEBHOOK_URL: ${N8N_WEBHOOK_URL:-http://n8n:5678/webhook/mobilityops-return}
|
||||
N8N_CALLBACK_TOKEN: ${MOBILITYOPS_CALLBACK_TOKEN:-replace-me-n8n-callback-token}
|
||||
ports:
|
||||
- "8128:8000"
|
||||
depends_on:
|
||||
@@ -66,6 +67,8 @@ services:
|
||||
N8N_BASIC_AUTH_USER: ${N8N_BASIC_AUTH_USER:-admin}
|
||||
N8N_BASIC_AUTH_PASSWORD: ${N8N_BASIC_AUTH_PASSWORD:-change-me}
|
||||
N8N_SECURE_COOKIE: "false"
|
||||
N8N_BLOCK_ENV_ACCESS_IN_NODE: "false"
|
||||
MOBILITYOPS_CALLBACK_TOKEN: ${MOBILITYOPS_CALLBACK_TOKEN:-replace-me-n8n-callback-token}
|
||||
ports:
|
||||
- "5678:5678"
|
||||
volumes:
|
||||
|
||||
Reference in New Issue
Block a user