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.
POST /api/backoffice/broadcast
Content-Type: application/json
{
"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
pendingatauprocessing), 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).
GET /api/backoffice/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".
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).