Flujo de datos
Cómo fluyen los datos por el sistema: comprobación de aplicación, caché, outbox y auditoría.
Enforcement check
Request → middleware (RequirePurpose) → EnforcementCheckService. De service kijkt eerst in Redis cache (key: enf:plate:{normalized}). Bij cache miss: database (Core Registry, Tax, Insurance, Vehicle Inspections, Enforcement flags) → samenstellen response → schrijven cache → Audit. Response bevat vehicle, tax, insurance, inspection (APK/keuring), ownership en flags. Elke stap wordt gelogd met correlation_id en purposeCode.
Writes (mutaties)
Validate → database transactie → schrijven outbox-event → Audit (who, what, before/after) → commit. Een queue worker (Horizon) leest de outbox en publiceert naar Redis; listeners voeren cache-invalidatie en downstream acties uit. Zo blijft de cache consistent met de database en zijn alle wijzigingen traceerbaar.
Infrastructuur
PostgreSQL — Primaire database voor alle entiteiten, outbox en audit. Redis — Sessions, rate limit, lookup cache (plate→snapshot), queue. S3 — Documenten (hashed, ondertekend waar nodig). Outbox voor reliable event delivery; later kan Kafka worden toegevoegd voor schaal.