GPS + QR attendance: dua mekanisme yang saling menambal, bukan over-engineering
GPS saja bisa di-spoof. QR saja bisa difoto dan dishare. Digabung, keduanya menutup celah masing-masing. Ini alasan desainnya di School HRIS.
TL;DR
Satu mekanisme absensi tidak pernah cukup. GPS membuktikan kamu di lokasi, QR membuktikan kamu melakukan check-in. Gabungan keduanya menutup celah yang tidak bisa ditutup masing-masing.
Setup
Di School HRIS, staf sekolah absen pakai GPS + QR code. Reaksi pertama yang sering muncul: “kenapa dua-duanya? ribet.”
Jawabannya: karena masing-masing punya failure mode yang berbeda, dan failure mode-nya saling menutupi.
Failure mode GPS saja
- Mock location. Di Android, fake GPS itu tinggal install app. Titik lokasi bisa diatur dari rumah sambil tiduran.
- Akurasi indoor. GPS di dalam gedung bisa meleset puluhan meter. Geofence terlalu ketat = guru yang benar-benar di sekolah ditolak absen.
- Fire-and-forget. Kalau check-in otomatis saat masuk radius, sistem tidak bisa bedakan “hadir kerja” dan “lewat depan sekolah”.
Failure mode QR saja
- QR bisa difoto. Kode yang sama bisa dishare via chat. Satu orang di sekolah bisa absenkan lima temannya yang masih di rumah.
- Tidak ada bukti lokasi. QR statis tidak tahu di mana ia di-scan.
Kenapa digabung bekerja
Flow-nya: scan QR → sistem verifikasi GPS dalam geofence sekolah → absen tercatat.
flowchart TD
A[Staf scan QR] --> B{GPS dalam geofence?}
B -->|Ya| C[Absen tercatat]
B -->|Tidak| D[Ditolak: di luar area sekolah]
- GPS menutup celah QR: QR yang difoto dan dishare percuma kalau yang scan tidak di sekolah.
- QR menutup celah GPS: check-in jadi aksi eksplisit yang dilakukan staf, bukan deteksi pasif yang bisa dipicu mock location.
QR code di-generate per employee dan dicetak di ID card. Jadi “bawa ID card” adalah kebiasaan yang sudah ada — tidak ada behavior baru yang dipaksakan.
Trade-off yang aku akui
- UX dua langkah. Lebih lambat dari sekadar buka app. Aku terima: absensi adalah aksi sekali-dua kali sehari, friksi 10 detik masih masuk akal.
- Device tanpa GPS bagus tetap bermasalah. Akurasi GPS device murah bisa belasan meter. Solusinya: radius geofence tidak dibuat terlalu ketat — cukup untuk membedakan “di sekolah” vs “di rumah”, bukan “di gedung A” vs “di gedung B”.
- Masih bukan anti-fraud sempurna. Orang yang benar-benar niat bisa spoof GPS + bawa QR sendiri. Tapi bar-nya sudah jauh lebih tinggi dari satu mekanisme. Sistem absensi bukan sistem perbankan — cost of fraud rendah, jadi defense-in-depth secukupnya.
Edge cases — kapan desain ini tidak cocok
- Tim remote / lapangan: geofence tidak relevan. Perlu mekanisme lain (foto selfie, rotasi QR dinamis per hari).
- Lokasi dengan sinyal GPS sangat buruk: perlu fallback, misal approval manual oleh atasan dengan catatan.
Kesimpulan
Jangan pilih satu mekanisme absensi berdasarkan mana yang paling simpel. Petakan dulu failure mode masing-masing, lalu gabungkan yang saling menutupi.
References
- Case study: School HRIS — implementasi GPS + QR attendance yang dibahas di sini
- Participant polymorphic — data model peserta attendance di project yang sama