Avilla — Event Flow (Outbox Pattern)

L0 menulis event, n8n merutekan, konsumen bereaksi — semua wajib idempotency_key

01 / Produsen · L0 02 / Event Outbox 03 / Router n8n 04 / Konsumen M4 Pipeline lead & skor M5 Doc Engine penawaran M8 Closing deal & unit + deal.handover M3 Payment jadwal termin M9 Progress konstruksi Event Outbox tabel events idempotency_key n8n Router glue non-kritis M6 WA Bot follow up M10 Portal update buyer M12 Dashboard read-model Notifikasi Tim WA & email Xero Sync jurnal lead.created + lead.scored quote.generated penawaran terbit unit.reserved + deal.created payment.due + payment.received progress.updated + milestone.reached polling / webhook at-least-once lead.scored follow up progress.updated update mingguan semua event read-model milestone.reached alert tim payment.received sync jurnal Legend primary data policy / PII async batch data store

Kenapa Outbox

  • • L0 tidak memanggil SaaS langsung — satu layanan mati tidak memutus rantai
  • • Event tersimpan dulu di database, baru dikirim
  • • Urutan dan riwayat event bisa diaudit

Wajib Idempotent

  • • Setiap event membawa idempotency_key
  • • Tanpa itu, retry n8n menghasilkan tagihan ganda
  • • Konsumen menolak event dengan key yang sudah diproses

Batas n8n

  • • n8n hanya merutekan dan memberi notifikasi
  • • Penerbitan tagihan dan unit lock berjalan di Inngest/pg-boss
  • • n8n memanggil API L0, tidak pernah menulis ke tabel