Skip to content
This repository was archived by the owner on Aug 11, 2026. It is now read-only.
This repository was archived by the owner on Aug 11, 2026. It is now read-only.

Peningkatan: kerasan backend & integrasi eksternal (outbox, resiliensi, observability) #436

Description

@ahliweb

Konteks

Base sudah punya pola outbox (awcms_mini_sync_outbox, awcms_mini_object_sync_queue), HMAC sync + anti-replay, idempotency ledger, correlation ID, dan circuit breaker DB. Namun belum ada dispatcher pengirim nyata untuk objek/pesan, dan ketahanan integrasi ke provider luar (R2, WA, email, AI, pajak) belum dikeraskan menyeluruh sesuai ADR-0006.

Tujuan

Menaikkan keandalan & ketahanan jalur backend/integrasi tanpa melanggar ADR-0006 (provider opsional, di luar transaksi).

Scope (pakai skill awcms-mini-integration)

  • Dispatcher outbox (fungsi internal, bukan endpoint publik) untuk object_sync_queue — mencoba upload di luar transaksi, meng-update status/uploaded_at/retry_count/next_retry_at/last_error; hormati backoff evaluateObjectRetry. (Backlog eksplisit di sync-storage/README.md.)
  • Timeout + retry/backoff + circuit breaker untuk tiap panggilan keluar (perluas circuit-breaker.ts ke provider).
  • Idempotency di batas integrasi: dispatcher aman diulang (dedup natural key / ledger batch); dead-letter/failed + last_error + retry manual (pola /sync/object-queue/{id}/retry).
  • Verifikasi webhook masuk (HMAC + anti-replay) bila menambah callback provider; SSRF-safe (URL dari env, bukan input user).
  • Observability: correlation ID diteruskan lintas hop; log terstruktur; metrik saturasi/kegagalan dispatcher; redaksi secret/PII.
  • Kontrak: endpoint/event baru → OpenAPI/AsyncAPI diperbarui; kompatibilitas mundur (perubahan additive).
  • Degradasi anggun: provider/flag off → aksi tetap terantre, operasional tak berhenti.

Definition of Done

  • Provider off → aksi masuk queue, tak ada error operasional; provider on → dispatcher mengirim & menandai sent.
  • Retry: paksa gagal → backoff → habis → failed+last_error → retry manual → pending.
  • Idempotency dispatcher: kirim ulang batch tak menduplikasi efek.
  • OpenAPI/AsyncAPI sinkron; correlation ID muncul lintas hop; bun run check hijau; diverifikasi live.

Referensi

Doc 16 (outbox, transaction, idempotency), doc 05 (kontrak), doc 10 (guardrail), ADR-0006. Skill: awcms-mini-integration, awcms-mini-sync-hmac, awcms-mini-idempotency, awcms-mini-audit-log.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:apiKontrak OpenAPI/RESTarea:architectureStruktur repo, module contract, registryarea:syncOffline sync, outbox/inbox, R2 queueenhancementNew feature or requestpriority:p2Prioritas sedang - opsional/provider-dependentstatus:readyDependency selesai, siap dikerjakantype:featureFitur baru sesuai doc 06

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions