📋 Aturan Absensi & Keterlambatan

Tiffany Houseware — Shift, Telat, Istirahat, Sholat

⏰ SHIFT KERJA 🌅 PAGI Mulai: 07:30 Telat hitung: 07:45 Pulang: 16:00 Prefix: P* ☀️ SIANG Mulai: 11:50 Telat hitung: 12:20 Pulang: 20:00 Prefix: S* 🌤️ MIDDLE Mulai: 09:00 Telat hitung: 09:15 Pulang: 17:00 Prefix: M* 📌 Ketentuan Umum • 1 user = 1 shift per hari (users_shift_additional) • Keterlambatan = scan_masuk - start_time_late • Max telat: 600 menit (cap dari sistem) • Denda: Rp per menit keterlambatan ⏱️ KETERLAMBATAN Scan Masuk Fingerprint Scan < start_time_late? Ya ✓ TEPAT WAKTU telat = 0 Tidak ✗ TERLAMBAT telat = scan - late_start (menit) Rumus: entry_time_late = minutes_between(entry_time, shift.start_time_late) — max 600mnt 🕌 ATURAN SHOLAT Hari Biasa Dzuhur, Ashar, dll Window: ±30mnt dari waktu Max istirahat: 15 menit Durasi > 15mnt = TERLAMBAT late = durasi (menit) 🕌 Jumat (Laki-laki) Window: -15mnt → +60mnt dari waktu sholat Jumat Max toleransi: 70 menit Durasi > 70mnt = TERLAMBAT kolom: friday_time_in/out/late Alur Sholat: Scan Masuk → {prayer}_time_in Scan Keluar → {prayer}_time_out → Hitung durasi → {prayer}_time_late ⚠️ Gender: jenis_kelamin = 'P' → aturan dzuhur biasa (15mnt) jenis_kelamin = 'L' / NULL → aturan Jumat (70mnt) 🕐 WINDOW WAKTU SHOLAT Sholat Window Classify Max Durasi Subuh Waktu -30mnt → +90mnt 15 menit Dzuhur Waktu -30mnt → +90mnt 15 menit Jumat* Waktu -15mnt → +60mnt 70 menit Ashar Waktu -30mnt → +90mnt 15 menit Maghrib Waktu -30mnt → +90mnt 15 menit Isya Waktu -30mnt → +90mnt 15 menit * Jumat khusus: - Kolom terpisah: friday_time_in/out/late - Laki-laki: 70mnt, Perempuan: 15mnt (dzuhur biasa) Waktu sholat dari Aladhan API (Payakumbuh, method=11 Kemenag RI) • Fallback: rata-rata bulanan WIB • Window classify ≠ aturan terlambat

📋 Status Kehadiran

✅ Rekap Per Shift

⚠️ Edge Cases