Aplikasi kehadiran KTM ambil peti undi (SPR 2026)
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>
This commit is contained in:
56
README.md
Normal file
56
README.md
Normal file
@@ -0,0 +1,56 @@
|
||||
# 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`.
|
||||
Reference in New Issue
Block a user