- Halaman baharu "Saluran Bermasalah": senarai semua saluran dalam DUN
(dengan KTM & telefonnya), tanda/buang tanda bermasalah berserta
catatan; admin DUN terhad ke DUN sendiri, superadmin semua DUN
- Dashboard: baris saluran bermasalah diserlahkan kuning berserta
lencana BERMASALAH dan catatan
- No. telefon KTM kini ada butang "📞 Call" (tel:) dan "WhatsApp"
(wa.me, dinormalkan ke format 60xxxxxxxxx) di dashboard dan halaman
saluran bermasalah
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Taip nama/no. KP terus mencari tanpa klik butang (debounce 300ms).
Tukar pusat mengundi/status juga menapis serta-merta. Jadual dan
statistik digantikan melalui fetch; URL dikemas kini (replaceState)
supaya refresh dan eksport kekal konsisten. Butang Cari kekal sebagai
fallback tanpa JavaScript; pilihan DUN (superadmin) kekal muat semula
penuh kerana senarai pusat mengundi berubah.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sistem untuk admin DUN merekod waktu KTM (Ketua Tempat Mengundi) hadir
mengambil peti undi. Data KTM dibaca daripada DB sppm (spr2026) melalui
connection kedua — hanya penempatan berjawatan KTM yang dipaparkan.
- Dashboard: senarai KTM ikut pusat mengundi (asc) & saluran (asc),
status BELUM HADIR (merah) / HADIR (hijau) + tarikh & masa
- Carian nama/no. KP, tapisan pusat mengundi & status
- Tanda hadir / batal dengan kawalan DUN (admin terhad ke DUN sendiri)
- Eksport Excel (worksheet Hadir & Belum Hadir) guna SimpleXlsx
- Peranan: superadmin (urus pengguna, semua DUN) & admin DUN
- Docker: nginx + php-fpm + queue + scheduler + webhook deploy,
port 127.0.0.1:8009, TZ Asia/Kuala_Lumpur di semua container
- Zon waktu aplikasi: Asia/Kuala_Lumpur (APP_TIMEZONE)
Berasaskan scaffold spr2026_taklimat.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>