Domain: Absensi & RFID
SSOT untuk modul kehadiran Scola — absensi siswa, absensi staf, RFID, rekap kehadiran.
Last verified: 2026-04-05
1. Visi & Best Practice
1.1 Regulasi Acuan
| Regulasi |
Relevansi |
| Permendikbud tentang kehadiran siswa |
Kehadiran minimal untuk naik kelas (biasanya 75-90%) |
| SNP Standar Proses |
Kehadiran sebagai komponen penilaian proses |
| UU Ketenagakerjaan |
Kehadiran staf sebagai dasar payroll |
1.2 Kondisi Ideal
Absensi Siswa (per session):
- Guru mengabsen siswa per pertemuan (session/jam pelajaran)
- Status: Hadir (H), Sakit (S), Izin (I), Alpa (A)
- Integrasi dengan izin siswa (domain kesiswaan): izin → otomatis I/S
- Rekap per siswa, per kelas, per periode
- Dashboard: persentase kehadiran, trend, siswa bermasalah
Absensi Staf:
- Self check-in/check-out (lokasi-based atau manual)
- Rekap kehadiran staf per periode
- Integrasi dengan payroll (kehadiran → komponen gaji)
RFID (Opsional):
- Tap RFID card → auto-record kehadiran
- RFID card registration per siswa/staf
- Device management (RFID reader)
- Event ingestion API (dari hardware)
- Fallback: manual entry jika RFID down
2. Arsitektur & Data Model
2.1 Backend Modules
| Module |
Tanggung Jawab |
scola_attendance |
RFID cards/devices/events/monitoring/config + attendance rules siswa |
scola_hr_attendance |
Self attendance staf, GPS radius validation, face registration/verification |
Modular boundary note:
- SC-ATTEND+ memakai feature flags scola_rfid dan scola_face_recognition.
- Staf self-attendance berada di scola_hr_attendance dan wajib mengikuti scola_face_recognition, bukan scola_people.
- SC-PEOPLE tetap mengacu ke scola_hr + scola_payroll untuk data pegawai, cuti, dan payroll.
2.2 Frontend Structure
src/views/AttendanceManagement/
├── Faculty/
│ ├── Attendance.vue # Absensi per session (guru)
│ ├── AttendanceSheet.vue # Sheet input kehadiran
│ └── AttendanceReport.vue # Rekap kehadiran guru view
├── Admin/
│ ├── AttendanceSheetList.vue # Semua sheet (admin)
│ ├── AttendanceBySession.vue # Detail per session
│ ├── Config/AttendanceConfig.vue # Konfigurasi kehadiran siswa + staf + RFID
│ └── RFID/ # RFID cards/devices/events/monitoring/config
├── Staff/
│ └── SelfAttendance.vue # Self check-in/out staf
└── Student/
└── AttendanceHistory.vue # Riwayat kehadiran siswa
2.3 Key Capabilities
| Capability |
Roles |
students.attendance.edit |
teacher (input absensi per session) |
students.attendance.view |
teacher, vice_principal_student_affairs, principal (rekap read-only), admin |
hr.attendance.view |
all staff (personal self-attendance; runtime gate scola_face_recognition) |
settings.rfid.view |
admin (RFID management) |
2.4 API Endpoints
| Endpoint |
Method |
Deskripsi |
/api/rfid/cards |
GET |
Daftar kartu RFID dengan filter |
/api/rfid/cards |
POST |
Registrasi kartu RFID |
/api/rfid/cards/<id> |
PUT, DELETE |
Update/hapus kartu RFID |
/api/rfid/cards/import |
POST |
Bulk import kartu RFID |
/api/rfid/cards/<id>/report-lost |
POST |
Laporkan kartu hilang dan replacement |
/api/rfid/cards/<id>/history |
GET |
Riwayat/audit kartu |
/api/rfid/devices |
GET |
Daftar perangkat RFID |
/api/rfid/devices |
POST |
Registrasi perangkat RFID |
/api/rfid/devices/<id> |
PUT, DELETE |
Update/hapus perangkat RFID |
/api/rfid/devices/<id>/regenerate-secret |
POST |
Regenerasi secret perangkat |
/api/rfid/devices/<id>/security-log |
GET |
Audit keamanan perangkat |
/api/rfid/events |
GET |
Log event RFID |
/api/rfid/events/<id>/retry |
POST |
Reprocess event gagal |
/api/rfid/monitoring |
GET |
Dashboard monitoring RFID |
/api/rfid/config |
GET, POST |
Bundle konfigurasi admin: config, rules, staff_config |
/api/rfid/ingest |
POST |
Event ingestion dari hardware |
/api/rfid/ping |
GET, POST |
Health/ping endpoint reader |
/api/v1/attendance/settings |
GET |
Settings staf untuk self attendance |
/api/v1/attendance/validate-location |
POST |
Validasi GPS radius staf |
/api/v1/attendance/face/register |
POST |
Registrasi wajah staf |
/api/v1/attendance/check-in |
POST |
Check-in staf |
/api/v1/attendance/check-out |
POST |
Check-out staf |
2.5 Deploy & Upgrade Notes
scola_attendance sekarang bergantung eksplisit pada scola_hr_attendance.
- Untuk rollout backend absensi, upgrade canonical yang dipakai adalah
-u scola_hr_attendance,scola_attendance.
- Workflow backend GitHub Actions harus memperlakukan dua modul ini sebagai pasangan upgrade; jika salah satu berubah, keduanya ikut di-upgrade.
- Perubahan paket untuk attendance staf harus lewat workflow
install add-ons atau upgrade tier, bukan toggle ad-hoc modul satuan.
- Checklist operasional detail ada di
docs/operations/deployment-backend.md dan docs/operations/ci-cd.md.
3. Fitur & Status Implementasi
| Fitur |
Status |
Catatan |
| Absensi siswa per session (guru) |
✅ Done |
AttendanceSheet |
| Status H/S/I/A |
✅ Done |
|
| Rekap kehadiran (guru) |
✅ Done |
AttendanceReport |
| Rekap kehadiran (admin) |
✅ Done |
AttendanceSheetList + BySession |
| Dashboard kehadiran |
✅ Done |
AttendanceDashboard |
| Self check-in/out staf |
✅ Done |
SelfAttendance |
| RFID card management |
✅ Done |
Canonical GET/POST /api/rfid/cards |
| RFID device management |
✅ Done |
Canonical GET/POST /api/rfid/devices |
| RFID event log & retry |
✅ Done |
Canonical GET /api/rfid/events + retry endpoint |
| RFID monitoring dashboard |
✅ Done |
Canonical GET /api/rfid/monitoring |
| RFID admin config bundle |
✅ Done |
Canonical GET/POST /api/rfid/config tanpa fallback legacy |
| RFID event ingestion API |
✅ Done |
/api/rfid/ingest |
| RFID health check |
✅ Done |
/api/rfid/ping |
| Riwayat kehadiran (siswa) |
✅ Done |
AttendanceHistory |
| Principal: rekap kehadiran |
✅ Done |
Via principal routes (read-only) |
| Wakasek kesiswaan: rekap kehadiran |
✅ Done |
Via vice-principal routes |
| Integrasi izin siswa ↔ absensi |
✅ Done |
Auto-bridge: approved leave → pre-fill attendance |
| Integrasi kehadiran staf ↔ payroll |
⚠️ Partial |
Data ada tapi bridge belum seamless |
| Geo-location check-in staf |
✅ Done |
GPS radius validation ke koordinat sekolah |
| Face verification staf |
✅ Done |
Face registration + verification saat self attendance |
| RFID offline mode |
❌ Gap |
Requires constant connection |
4. Gap Analysis & Backlog
P1 — Important
| Gap |
Dampak |
Solusi |
Status |
| ~~Izin siswa → absensi bridge~~ |
~~Siswa izin masih tercatat alpa~~ |
Auto-update + pre-fill attendance when leave approved |
✅ Done |
P2 — Nice to Have
| Gap |
Dampak |
Solusi |
| RFID offline buffering |
Internet drop → missed taps |
Local buffer + sync |
| Integrasi payroll staf |
Kehadiran staf belum menjadi komponen payroll end-to-end |
Bridge payroll berbasis attendance summary |
| Observability hardware RFID |
Diagnosis device issue masih reaktif |
Tambah health metrics/alerting per reader |
5. File References
Frontend
src/router/teacherRoutes.js — Faculty attendance routes (line ~23-80)
src/router/adminRoutes.js — Admin attendance routes
src/views/AttendanceManagement/ — All attendance views
src/views/AdminViews/RFID/ — RFID cards, devices, events, monitoring, config
Backend
scola_attendance/ — Attendance + RFID module
scola_hr_attendance/ — Staff self-attendance, GPS, face verification
7. Panduan Konfigurasi Implementor
configuration-guides/absensi.md
8. Panduan End User