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>
57 lines
2.1 KiB
Markdown
57 lines
2.1 KiB
Markdown
# 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
|
|
|
|
```bash
|
|
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](DOCKER.md). Ringkasnya:
|
|
|
|
```bash
|
|
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`.
|