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
- 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.
- Okt 2026
- Perusahaan consumer health
- Proyek
- L3:healthcare-outreach-dashboard
Hasil
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
~2,900 tests
Test backend otomatis, ditambah 173 browser test dengan pemeriksaan aksesibilitas
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 menyiapkan broadcast agar aman dijalankan: state machine dengan persetujuan dari dua orang berbeda yang diperiksa di API dan sekali lagi di worker, daftar penerima yang tidak berubah setelah ditetapkan, runner yang dapat 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 menyalin data production ke database baru sebagai salinan read-only. Proses penyalinannya dapat dilanjutkan dan hasilnya diperiksa kesetaraannya. Saya juga mengganti function metrik dengan endpoint native yang diperiksa oleh skrip paritas.
- Saya mengukur baseline di Azure terlebih dahulu: stall 60, 19, dan 23 detik pada endpoint 0,2 detik. Dengan watchdog loop-lag, saya menemukan penyebabnya: agregasi berat dan sweep latar belakang memakai satu event loop yang sama. Saya kemudian memisahkan API dan worker ke aplikasi App Service terpisah dan menghitung ringkasan lebih awal dengan watermark serta indikator kebaruan data.
- Saya menjaga dashboard tetap dwibahasa dan aksesibel, dengan bahasa Indonesia sebagai default serta pilihan bahasa Inggris. Pelanggaran WCAG 2.2 menurut axe turun dari 4 menjadi 0, dengan browser test untuk mencegah regresi.
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
Proyek Product Engineering lainnya
Technical Consultant, Software & AI, Metrodata (PT Mitra Integrasi Informatika)