Lewati ke konten utama

Mass Broadcast Pipeline

Fitur Broadcast digunakan oleh divisi Sales atau Administrator untuk mengirimkan pengumuman massal, buletin (newsletter), peringatan pemeliharaan (maintenance), atau promo kupon ke ratusan atau ribuan Customer sekaligus.

Karena mengirimkan ribuan email secara bersamaan (synchronous) akan membuat API menjadi lambat (atau bahkan mogok akibat Time-out), sistem Frog Cloud menggunakan pendekatan Asynchronous Worker Queue yang didukung oleh Redis (melalui library asynq).

Diagram Arsitektur Mass Broadcast


1. Membuat Broadcast Baru

Admin cukup mengirimkan draf pesan melalui Dashboard.

Request
POST /api/backoffice/broadcast
Content-Type: application/json
Request Body
{
"subject": "Pemeliharaan Jaringan Darurat - Jakarta",
"content": "Pelanggan Yth, kami akan mematikan Hypervisor 01 pada...",
"target_type": "all_users",
"is_scheduled": false
}

Kondisi & Tindakan:

  • Sisi Backend: API akan menerima perintah tersebut, menyimpannya ke Database (dengan status pending atau processing), dan langsung merespons 200 OK kepada Frontend.
  • Sisi Background Worker: Di belakang layar, proses latar belakang (Redis Worker) akan memecah pekerjaan ini menjadi antrean kecil dan perlahan-lahan mengirimkan email via SMTP agar domain kita tidak ditandai sebagai Spam.

2. Melihat Riwayat & Detail Eksekusi

Tim Marketing tentu ingin melihat kinerja Broadcast yang telah mereka sebarkan (misal melihat siapa yang gagal menerimanya).

Request (Daftar Riwayat)
GET /api/backoffice/broadcast
Request (Detail per Broadcast)
GET /api/backoffice/broadcast/{id}

Respons (200 OK): Anda akan mendapatkan informasi seperti "total_recipients", "success_count", dan "failed_count". Frontend disarankan untuk membuat Progress Bar melingkar (donut chart) untuk memvisualisasikan rasio sukses vs gagal dari setiap campaign.


3. Resend (Kirim Ulang Email Gagal)

Kadang-kadang provider email (SMTP Provider) sedang gangguan, sehingga sebagian besar email gagal terkirim. Admin tidak perlu membuat pengumuman baru, cukup klik tombol "Resend Failed".

Request
POST /api/backoffice/broadcast/{id}/resend

Tindakan: Sistem akan memeriksa database log broadcast tersebut, menyaring Customer mana yang sebelumnya bernilai failed, dan hanya memasukkan mereka kembali ke dalam antrean Redis Worker untuk dicoba ulang (retry).