Saufi 322687c1d1 Flag saluran bermasalah + pautan Call/WhatsApp
- 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>
2026-07-11 03:55:20 +08:00

Kehadiran KTM — Peti Undi SPR 2026

Aplikasi untuk admin DUN merekodkan waktu KTM (Ketua Tempat Mengundi) hadir mengambil peti undi. Data KTM dibaca terus daripada pangkalan data Sistem Pengurusan Pusat Mengundi (spr2026 / DB sppm) — hanya KTM yang telah di-assign sahaja dipaparkan.

Aliran

  1. Dashboard memaparkan semua KTM dalam DUN, disusun ikut pusat mengundi (asc) dan saluran (asc). Yang belum hadir bertanda BELUM HADIR (merah).
  2. Admin mencari nama KTM dan/atau pusat mengundi. Paparan menunjukkan nama, no. KP, no. telefon, jawatan, pusat mengundi dan saluran.
  3. Admin menandakan KTM sebagai hadir — tarikh dan masa direkodkan, status bertukar HADIR (hijau). Rekod boleh dibatalkan jika tersilap.
  4. Senarai kehadiran boleh dimuat turun dalam bentuk Excel (worksheet "Hadir" dan "Belum Hadir").

Peranan

Peranan Kebenaran
superadmin Cipta pengguna; lihat/urus kehadiran semua DUN; eksport
admin Admin DUN: daftar kehadiran KTM & eksport untuk DUN sendiri

Pangkalan data

  • sppm_ktm (connection mysql) — users, kehadiran_ktm, sesi/cache/queue.
  • sppm (connection sppm, baca sahaja) — petugas_assignments, petugas_permohonan, pusat_mengundi, saluran, jawatan_tetapan, dun.

KTM dikenal pasti melalui petugas_assignments yang jawatannya berkod KTM.

Pembangunan tempatan

composer install
cp .env.example .env       # isi DB_* dan SPPM_DB_*
php artisan key:generate
php artisan migrate --seed # superadmin@spr.gov.my / password
php artisan serve

Zon waktu ialah Asia/Kuala_Lumpur (lalai APP_TIMEZONE).

Docker

Lihat DOCKER.md. Ringkasnya:

cp .env.docker.example .env.docker   # isi APP_KEY, kata laluan DB, WEBHOOK_SECRET
docker compose up -d --build

Web container terikat pada 127.0.0.1:8009; nginx host membuat reverse proxy domain awam ke port tersebut. Semua container ditetapkan TZ=Asia/Kuala_Lumpur.

Description
No description provided
Readme 154 KiB
Languages
PHP 68%
Blade 20.5%
CSS 6.4%
Dockerfile 2.5%
Shell 2.2%
Other 0.4%