Product EngineeringProyekL3:healthcare-outreach-dashboard
Pembaruan Dashboard Program Tenaga Kesehatan
Dashboard program WhatsApp untuk tenaga kesehatan milik perusahaan consumer health, dibangun ulang dari Streamlit ke Next.js dan FastAPI dengan broadcast dua persetujuan, dioptimalkan di Azure hingga tidak ada request yang tertahan lebih dari 2 detik, dan kini live di production.
Hasil utama
60 s → <2 s
Stall terburuk pada endpoint 0,2 detik di Azure, sebelum dan sesudah pemisahan API dan worker
~45 hours
Dari commit pertama hingga dashboard pengganti lengkap, lewat 53 pull request
61 of 61
Respons laporan yang identik dengan sistem live setelah migrasi backend
- Peran
- Engineer tunggal untuk pembaruan dashboard: arsitektur, migrasi backend, environment Azure, dan optimasi performa, sambil mengarahkan beberapa AI coding agent secara paralel. Bot WhatsApp-nya dibangun oleh rekan kerja.
- Periode
- Okt 2026
- Klien
- Perusahaan consumer health
Hasil
60 s → <2 s
Stall terburuk pada endpoint 0,2 detik di Azure, sebelum dan sesudah pemisahan API dan worker
Setelah perubahan lanjutan, Azure memenuhi semua target performa kecuali dua panggilan pertama setelah restart, yang diperbaiki di perubahan berikutnya (diverifikasi secara lokal).
~45 hours
Dari commit pertama hingga dashboard pengganti lengkap, lewat 53 pull request
Beberapa AI coding agent mengerjakan sebagian besar kode secara paralel berdasarkan spec tertulis; saya me-review, menguji di Azure, dan me-merge setiap pull request.
61 of 61
Respons laporan yang identik dengan sistem live setelah migrasi backend
Dibandingkan dengan salinan read-only data production; 6 halaman percakapan bot juga identik.
~2,900 tests
Test backend otomatis, ditambah 173 browser test dengan pemeriksaan aksesibilitas
Naik dari 31 test backend dan 12 browser test di awal pembaruan.
Masalah
Dashboard admin program ini berupa aplikasi Streamlit yang meng-query database production langsung dari halaman, mengirim pesan WhatsApp di dalam proses yang sama, tidak memiliki approval maupun test, dan mengambil metrik dari function terpisah yang dipanggil dengan key di URL. Operator perlu menjalankan manajemen pengguna, laporan, webinar, knowledge bot, dan broadcast template secara mandiri dan aman. Dashboard baru ini menggantikan dashboard lama dan kini sudah live di production.
Kontribusi
- Saya memisahkan aplikasi lama beserta riwayatnya, lalu memindahkan setiap fitur ke domain FastAPI bertipe di belakang BFF Next.js yang dimulai dari template aplikasi AI tim. Setiap spec memetakan logika lama yang digantikannya, dan bug lama ikut diperbaiki, misalnya access token yang dikirim lewat URL dan retry yang bisa mengirim ulang pesan.
- Saya membuat broadcast aman dijalankan: state machine dengan persetujuan dari dua orang berbeda yang dicek di API dan sekali lagi di worker, audiens yang dibekukan, runner yang bisa dilanjutkan dengan lease Cosmos DB, ledger klaim per penerima, allowlist pengiriman yang fail-closed, dan audit log append-only.
- Alih-alih mengembangkan dengan data sintetis atau menulis ke production, saya membuat salinan read-only data production di database baru yang bisa dilanjutkan dan dicek paritasnya, lalu mengganti function metrik dengan endpoint native yang dicek oleh skrip paritas.
- Saya mengukur baseline di Azure terlebih dahulu: stall 60, 19, dan 23 detik pada endpoint 0,2 detik. Watchdog loop-lag menelusurinya ke satu event loop yang dipakai bersama oleh agregasi berat dan sweep latar belakang, sehingga saya memisahkan API dan worker ke aplikasi App Service terpisah dan menghitung ringkasan lebih awal dengan watermark serta indikator kesegaran data.
- Saya menjaga dashboard tetap dwibahasa, dengan bahasa Indonesia sebagai default dan bahasa Inggris, serta aksesibel: pelanggaran WCAG 2.2 menurut axe turun dari 4 menjadi 0 dan dijaga oleh browser test.
Arsitektur
Galeri
Tech stack
Next.js
TypeScript
FastAPIPython
Cosmos DB
Azure AI Search
Azure OpenAI
Document Intelligence
App Service
Key Vault
- Microsoft Entra ID
Application Insights
Bicep
GitHub Actions
GitHub Spec Kit
Playwright
- WhatsApp Cloud API