Aturan & asumsi sistem
Halaman ini merangkum keputusan desain yang berpengaruh pada hasil di rekap.
Jadwal
Section titled “Jadwal”- Hari sekolah Senin sampai Jumat. Sabtu dan Minggu tidak ada pencatatan.
- Jumat memakai Dhuha, Jumat, dan Ashar. Dzuhur ditolak di hari Jumat, dan sholat Jumat ditolak di hari lain.
- Jam selesai bersifat inklusif sampai menit itu (14:30 diterima sampai 14:30:59).
- Jam yang dipakai adalah jam server, dalam zona waktu
SCHOOL_TZ. - Hari libur menolak scan dan tidak dihitung di ekspor.
Pengaturan jadwal oleh admin
Section titled “Pengaturan jadwal oleh admin”- Pengaturan admin menimpa jam bawaan dan
PRAYER_WINDOWS. - Admin hanya bisa menyaring dari jadwal hari bawaan (mematikan sholat, membatasi tanggal, membatasi hari, meniadakan di tanggal tertentu). Admin tidak menambah sholat di Sabtu atau Minggu.
- Sholat yang tidak diadakan pada suatu tanggal tidak muncul di Scan, Rekap, dan ekspor, dan tidak dihitung alpa.
- Konfigurasi disimpan sementara selama sekitar 10 detik, jadi perubahan terasa dalam beberapa detik.
Alpa, haid, dan izin
Section titled “Alpa, haid, dan izin”- Alpa tidak disimpan. Dihitung saat dibaca: tidak ada catatan dan jam selesai sholat sudah lewat. Mengubah jam ikut mengubah hasil di tanggal lampau.
- Siswa baru tidak dihitung alpa untuk tanggal sebelum ia didaftarkan.
- Haid dan izin disimpan sebagai status pada catatan sholat. Keduanya tidak menimpa catatan hadir yang sudah ada.
- Haid hanya untuk siswa aktif dengan gender P, maksimal 7 hari sekolah per pencatatan, mulai hari ini. Akhir pekan dan hari libur dilewati.
- Izin hanya untuk siswa aktif pada sholat yang dicatat di hari itu. Kalau siswa dengan status izin di-scan, catatannya berubah menjadi hadir.
- Persentase = hadir / (seharusnya - haid - izin).
- Guru boleh membaca daftar siswa dan kelas (untuk catat manual dan filter rekap), tapi tidak mengubahnya.
- Kartu QR hanya bisa dilihat dan dicetak admin.
- Guru hanya bisa membatalkan scan miliknya sendiri, maksimal 2 menit. Admin bebas.
- Admin tidak bisa menonaktifkan, menurunkan peran, atau menghapus akunnya sendiri.
- Menghapus staf tidak menghapus catatan sholat yang pernah ia buat. Disarankan menonaktifkan.
- Menghapus siswa ikut menghapus catatan sholatnya. Siswa nonaktif menyimpan riwayat.
- Rekap dan ringkasan hanya menghitung siswa aktif.
- Impor CSV: kolom
absen,nama,kelas, opsionalgender. Pemisah koma atau titik koma. Maksimal 2000 baris. ID yang sudah ada dilewati. - Ekspor maksimal 62 hari. Pada CSV, sel yang diawali
=,+,-, atau@diberi tanda'di depannya untuk mencegah formula berbahaya.
Login dan keamanan
Section titled “Login dan keamanan”- Password disimpan sebagai hash. Password baru minimal 10 karakter dan harus mengandung huruf dan angka.
- Sesi login berlaku 12 jam. Mengganti password atau menonaktifkan akun mencabut semua sesi.
- Login dibatasi per IP dan per email. Setelah 5 kali gagal berturut-turut akun dikunci 15 menit. Semua pembatasan memakai pesan yang sama supaya email terdaftar tidak bisa ditebak.
- Undangan staf: token acak, hanya hash-nya yang disimpan, berlaku 7 hari, sekali pakai, terikat ke email yang diundang.
- Login Google memakai OAuth 2.0 dengan PKCE. Akun Google hanya bisa terhubung ke satu staf.
- Kejadian penting (login gagal, akun terkunci, ganti password, hapus data contoh) dicatat di log server tanpa menyimpan password atau token.
Scanner
Section titled “Scanner”- Pembacaan sekitar 5 kali per detik. QR yang sama diabaikan selama masih terlihat dan 3 detik sesudahnya. Server tetap mencegah data ganda lewat unique index.
- Hasil tercatat dan sudah tercatat hilang setelah sekitar 2,5 detik. Hasil ditolak, di luar waktu, dan koneksi putus bertahan sampai scan berikutnya atau ditutup.
- Preferensi bunyi disimpan di perangkat.
Designed & Developed by NoxlyDev