{"timestamp":1778940019,"date":"history_2026-05-16","data":[{"timestamp":"2026-05-16 00:16:01","raw_log":"[2026-05-16 00:16:01] \u26a0 FALLBACK: Using time-based detection sore for 550 (SCHEDULE MISSING!)","message":"\u26a0 FALLBACK: Using time-based detection sore for 550 (SCHEDULE MISSING!)","category":"unknown","severity":"info"},{"timestamp":"2026-05-16 00:16:01","raw_log":"[2026-05-16 00:16:01] \u26a0 FALLBACK checkout validation for 550 (no schedule found)","message":"\u26a0 FALLBACK checkout validation for 550 (no schedule found)","category":"unknown","severity":"info"},{"timestamp":"2026-05-16 00:16:01","raw_log":"[2026-05-16 00:16:01] Checkout: keputusan=berhasil, nama=Ilham Indra Illyasa, kar_id=550, id_absensi=207205211, shift=sore, jam_kerja=8.11 jam, sumber=fallback","message":"Checkout: keputusan=berhasil, nama=Ilham Indra Illyasa, kar_id=550, id_absensi=207205211, shift=sore, jam_kerja=8.11 jam, sumber=fallback","category":"checkout-berhasil","severity":"success","nama":"Ilham Indra Illyasa","kar_id":"550","shift":"sore","source":"fallback"},{"timestamp":"2026-05-16 00:49:01","raw_log":"[2026-05-16 00:49:01] Checkout: keputusan=berhasil, nama=Indera Waskita, kar_id=622, id_absensi=207205210, shift=sore, jam_kerja=8.67 jam, sumber=schedule","message":"Checkout: keputusan=berhasil, nama=Indera Waskita, kar_id=622, id_absensi=207205210, shift=sore, jam_kerja=8.67 jam, sumber=schedule","category":"checkout-berhasil","severity":"success","nama":"Indera Waskita","kar_id":"622","shift":"sore","source":"schedule"},{"timestamp":"2026-05-16 06:29:01","raw_log":"[2026-05-16 06:29:01] \u2717 REJECTED: No schedule found for 713 on 2026-05-16 (strict mode)","message":"\u2717 REJECTED: No schedule found for 713 on 2026-05-16 (strict mode)","category":"unknown","severity":"info"},{"timestamp":"2026-05-16 06:29:01","raw_log":"[2026-05-16 06:29:01] \u26a0 ALLOWING FALLBACK: Schedule coverage only 0% for nama=Nandang, kar_id=713","message":"\u26a0 ALLOWING FALLBACK: Schedule coverage only 0% for nama=Nandang, kar_id=713","category":"fallback-mode","severity":"warning","nama":"Nandang","kar_id":"713"},{"timestamp":"2026-05-16 06:29:01","raw_log":"[2026-05-16 06:29:01] \u26a0 FALLBACK: Using time-based detection pagi for 713 (SCHEDULE MISSING!)","message":"\u26a0 FALLBACK: Using time-based detection pagi for 713 (SCHEDULE MISSING!)","category":"unknown","severity":"info"},{"timestamp":"2026-05-16 06:29:01","raw_log":"[2026-05-16 06:29:01] \u26a0 SHIFT ASSIGNED: pagi (source: fallback) for nama=Nandang, kar_id=713","message":"\u26a0 SHIFT ASSIGNED: pagi (source: fallback) for nama=Nandang, kar_id=713","category":"unknown","severity":"info","nama":"Nandang","kar_id":"713"},{"timestamp":"2026-05-16 06:29:01","raw_log":"[2026-05-16 06:29:01] Check-in: keputusan=berhasil, nama=Nandang, kar_id=713, id_absensi=207205223, shift=pagi, sumber=fallback","message":"Check-in: keputusan=berhasil, nama=Nandang, kar_id=713, id_absensi=207205223, shift=pagi, sumber=fallback","category":"check-in-berhasil","severity":"success","nama":"Nandang","kar_id":"713","shift":"pagi","source":"fallback"},{"timestamp":"2026-05-16 07:02:01","raw_log":"[2026-05-16 07:02:01] Checkout: keputusan=berhasil, nama=Hidayat, kar_id=1324, id_absensi=207205220, shift=malam, jam_kerja=12.75 jam, sumber=schedule","message":"Checkout: keputusan=berhasil, nama=Hidayat, kar_id=1324, id_absensi=207205220, shift=malam, jam_kerja=12.75 jam, sumber=schedule","category":"checkout-berhasil","severity":"success","nama":"Hidayat","kar_id":"1324","shift":"malam","source":"schedule"},{"timestamp":"2026-05-16 07:13:02","raw_log":"[2026-05-16 07:13:02] \u2717 REJECTED: No schedule found for 1590 on 2026-05-16 (strict mode)","message":"\u2717 REJECTED: No schedule found for 1590 on 2026-05-16 (strict mode)","category":"unknown","severity":"info"},{"timestamp":"2026-05-16 07:13:02","raw_log":"[2026-05-16 07:13:02] \u26a0 ALLOWING FALLBACK: Schedule coverage only 0% for nama=Muhammad Husni Mubarok, kar_id=1590","message":"\u26a0 ALLOWING FALLBACK: Schedule coverage only 0% for nama=Muhammad Husni Mubarok, kar_id=1590","category":"fallback-mode","severity":"warning","nama":"Muhammad Husni Mubarok","kar_id":"1590"},{"timestamp":"2026-05-16 07:13:02","raw_log":"[2026-05-16 07:13:02] \u26a0 FALLBACK: Using time-based detection pagi for 1590 (SCHEDULE MISSING!)","message":"\u26a0 FALLBACK: Using time-based detection pagi for 1590 (SCHEDULE MISSING!)","category":"unknown","severity":"info"},{"timestamp":"2026-05-16 07:13:02","raw_log":"[2026-05-16 07:13:02] \u26a0 SHIFT ASSIGNED: pagi (source: fallback) for nama=Muhammad Husni Mubarok, kar_id=1590","message":"\u26a0 SHIFT ASSIGNED: pagi (source: fallback) for nama=Muhammad Husni Mubarok, kar_id=1590","category":"unknown","severity":"info","nama":"Muhammad Husni Mubarok","kar_id":"1590"},{"timestamp":"2026-05-16 07:13:02","raw_log":"[2026-05-16 07:13:02] Check-in: keputusan=berhasil, nama=Muhammad Husni Mubarok, kar_id=1590, id_absensi=207205227, shift=pagi, sumber=fallback","message":"Check-in: keputusan=berhasil, nama=Muhammad Husni Mubarok, kar_id=1590, id_absensi=207205227, shift=pagi, sumber=fallback","category":"check-in-berhasil","severity":"success","nama":"Muhammad Husni Mubarok","kar_id":"1590","shift":"pagi","source":"fallback"},{"timestamp":"2026-05-16 08:04:01","raw_log":"[2026-05-16 08:04:01] \u2717 REJECTED: No schedule found for 749 on 2026-05-16 (strict mode)","message":"\u2717 REJECTED: No schedule found for 749 on 2026-05-16 (strict mode)","category":"unknown","severity":"info"},{"timestamp":"2026-05-16 08:04:01","raw_log":"[2026-05-16 08:04:01] \u2717 ENFORCING SCHEDULE: Coverage 62.5%, rejecting event without schedule for nama=M. Naufal Abel Rafy, kar_id=749","message":"\u2717 ENFORCING SCHEDULE: Coverage 62.5%, rejecting event without schedule for nama=M. Naufal Abel Rafy, kar_id=749","category":"strict-reject","severity":"error","nama":"M. Naufal Abel Rafy","kar_id":"749"},{"timestamp":"2026-05-16 08:04:01","raw_log":"[2026-05-16 08:04:01] Check-in: keputusan=ditolak, nama=M. Naufal Abel Rafy, kar_id=749, alasan=event tanpa jadwal (kebijakan jadwal wajib); tidak ada insert ke trs_absensi","message":"Check-in: keputusan=ditolak, nama=M. Naufal Abel Rafy, kar_id=749, alasan=event tanpa jadwal (kebijakan jadwal wajib); tidak ada insert ke trs_absensi","category":"check-in-ditolak","severity":"error","nama":"M. Naufal Abel Rafy","kar_id":"749","alasan":"event tanpa jadwal (kebijakan jadwal wajib); tidak ada insert ke trs_absensi"},{"timestamp":"2026-05-16 08:07:01","raw_log":"[2026-05-16 08:07:01] \u2717 REJECTED: No schedule found for 1703 on 2026-05-16 (strict mode)","message":"\u2717 REJECTED: No schedule found for 1703 on 2026-05-16 (strict mode)","category":"unknown","severity":"info"},{"timestamp":"2026-05-16 08:07:01","raw_log":"[2026-05-16 08:07:01] \u26a0 ALLOWING FALLBACK: Schedule coverage only 0% for nama=Arka Nugraha, kar_id=1703","message":"\u26a0 ALLOWING FALLBACK: Schedule coverage only 0% for nama=Arka Nugraha, kar_id=1703","category":"fallback-mode","severity":"warning","nama":"Arka Nugraha","kar_id":"1703"},{"timestamp":"2026-05-16 08:07:01","raw_log":"[2026-05-16 08:07:01] \u26a0 FALLBACK: Using time-based detection pagi for 1703 (SCHEDULE MISSING!)","message":"\u26a0 FALLBACK: Using time-based detection pagi for 1703 (SCHEDULE MISSING!)","category":"unknown","severity":"info"},{"timestamp":"2026-05-16 08:07:01","raw_log":"[2026-05-16 08:07:01] \u26a0 SHIFT ASSIGNED: pagi (source: fallback) for nama=Arka Nugraha, kar_id=1703","message":"\u26a0 SHIFT ASSIGNED: pagi (source: fallback) for nama=Arka Nugraha, kar_id=1703","category":"unknown","severity":"info","nama":"Arka Nugraha","kar_id":"1703"},{"timestamp":"2026-05-16 08:07:01","raw_log":"[2026-05-16 08:07:01] Check-in: keputusan=berhasil, nama=Arka Nugraha, kar_id=1703, id_absensi=207205233, shift=pagi, sumber=fallback","message":"Check-in: keputusan=berhasil, nama=Arka Nugraha, kar_id=1703, id_absensi=207205233, shift=pagi, sumber=fallback","category":"check-in-berhasil","severity":"success","nama":"Arka Nugraha","kar_id":"1703","shift":"pagi","source":"fallback"},{"timestamp":"2026-05-16 08:24:01","raw_log":"[2026-05-16 08:24:01] \u2717 REJECTED: No schedule found for 641 on 2026-05-16 (strict mode)","message":"\u2717 REJECTED: No schedule found for 641 on 2026-05-16 (strict mode)","category":"unknown","severity":"info"},{"timestamp":"2026-05-16 08:24:01","raw_log":"[2026-05-16 08:24:01] \u26a0 ALLOWING FALLBACK: Schedule coverage only 0% for nama=Renaldi Virgiawan Argi, kar_id=641","message":"\u26a0 ALLOWING FALLBACK: Schedule coverage only 0% for nama=Renaldi Virgiawan Argi, kar_id=641","category":"fallback-mode","severity":"warning","nama":"Renaldi Virgiawan Argi","kar_id":"641"},{"timestamp":"2026-05-16 08:24:01","raw_log":"[2026-05-16 08:24:01] \u26a0 FALLBACK: Using time-based detection pagi for 641 (SCHEDULE MISSING!)","message":"\u26a0 FALLBACK: Using time-based detection pagi for 641 (SCHEDULE MISSING!)","category":"unknown","severity":"info"},{"timestamp":"2026-05-16 08:24:01","raw_log":"[2026-05-16 08:24:01] \u26a0 SHIFT ASSIGNED: pagi (source: fallback) for nama=Renaldi Virgiawan Argi, kar_id=641","message":"\u26a0 SHIFT ASSIGNED: pagi (source: fallback) for nama=Renaldi Virgiawan Argi, kar_id=641","category":"unknown","severity":"info","nama":"Renaldi Virgiawan Argi","kar_id":"641"},{"timestamp":"2026-05-16 08:24:01","raw_log":"[2026-05-16 08:24:01] Check-in: keputusan=berhasil, nama=Renaldi Virgiawan Argi, kar_id=641, id_absensi=207205235, shift=pagi, sumber=fallback","message":"Check-in: keputusan=berhasil, nama=Renaldi Virgiawan Argi, kar_id=641, id_absensi=207205235, shift=pagi, sumber=fallback","category":"check-in-berhasil","severity":"success","nama":"Renaldi Virgiawan Argi","kar_id":"641","shift":"pagi","source":"fallback"},{"timestamp":"2026-05-16 16:31:02","raw_log":"[2026-05-16 16:31:02] Tutup otomatis: keputusan=ditutup_otomatis, nama=Cahyadi Saputra, kar_id=480, id_absensi=207204914, shift=sore, waktu_pulang=2026-05-16 16:29:07, alasan=pegawai tidak checkout","message":"Tutup otomatis: keputusan=ditutup_otomatis, nama=Cahyadi Saputra, kar_id=480, id_absensi=207204914, shift=sore, waktu_pulang=2026-05-16 16:29:07, alasan=pegawai tidak checkout","category":"tutup-otomatis","severity":"warning","nama":"Cahyadi Saputra","kar_id":"480","shift":"sore","alasan":"pegawai tidak checkout"},{"timestamp":"2026-05-16 16:31:02","raw_log":"[2026-05-16 16:31:02] \u2717 REJECTED: No schedule found for 480 on 2026-05-16 (strict mode)","message":"\u2717 REJECTED: No schedule found for 480 on 2026-05-16 (strict mode)","category":"unknown","severity":"info"},{"timestamp":"2026-05-16 16:31:02","raw_log":"[2026-05-16 16:31:02] \u26a0 ALLOWING FALLBACK: Schedule coverage only 0% for nama=Cahyadi Saputra, kar_id=480","message":"\u26a0 ALLOWING FALLBACK: Schedule coverage only 0% for nama=Cahyadi Saputra, kar_id=480","category":"fallback-mode","severity":"warning","nama":"Cahyadi Saputra","kar_id":"480"},{"timestamp":"2026-05-16 16:31:02","raw_log":"[2026-05-16 16:31:02] \u26a0 FALLBACK: Using time-based detection sore for 480 (SCHEDULE MISSING!)","message":"\u26a0 FALLBACK: Using time-based detection sore for 480 (SCHEDULE MISSING!)","category":"unknown","severity":"info"},{"timestamp":"2026-05-16 16:31:02","raw_log":"[2026-05-16 16:31:02] \u26a0 SHIFT ASSIGNED: sore (source: fallback) for nama=Cahyadi Saputra, kar_id=480","message":"\u26a0 SHIFT ASSIGNED: sore (source: fallback) for nama=Cahyadi Saputra, kar_id=480","category":"unknown","severity":"info","nama":"Cahyadi Saputra","kar_id":"480"},{"timestamp":"2026-05-16 16:31:02","raw_log":"[2026-05-16 16:31:02] Check-in: keputusan=berhasil, nama=Cahyadi Saputra, kar_id=480, id_absensi=207205238, shift=sore, sumber=fallback","message":"Check-in: keputusan=berhasil, nama=Cahyadi Saputra, kar_id=480, id_absensi=207205238, shift=sore, sumber=fallback","category":"check-in-berhasil","severity":"success","nama":"Cahyadi Saputra","kar_id":"480","shift":"sore","source":"fallback"},{"timestamp":"2026-05-16 16:33:02","raw_log":"[2026-05-16 16:33:02] \u2717 REJECTED: No schedule found for 1268 on 2026-05-16 (strict mode)","message":"\u2717 REJECTED: No schedule found for 1268 on 2026-05-16 (strict mode)","category":"unknown","severity":"info"},{"timestamp":"2026-05-16 16:33:02","raw_log":"[2026-05-16 16:33:02] \u2717 ENFORCING SCHEDULE: Coverage 62.5%, rejecting event without schedule for nama=Bima Pratama Putra, kar_id=1268","message":"\u2717 ENFORCING SCHEDULE: Coverage 62.5%, rejecting event without schedule for nama=Bima Pratama Putra, kar_id=1268","category":"strict-reject","severity":"error","nama":"Bima Pratama Putra","kar_id":"1268"},{"timestamp":"2026-05-16 16:33:02","raw_log":"[2026-05-16 16:33:02] Check-in: keputusan=ditolak, nama=Bima Pratama Putra, kar_id=1268, alasan=event tanpa jadwal (kebijakan jadwal wajib); tidak ada insert ke trs_absensi","message":"Check-in: keputusan=ditolak, nama=Bima Pratama Putra, kar_id=1268, alasan=event tanpa jadwal (kebijakan jadwal wajib); tidak ada insert ke trs_absensi","category":"check-in-ditolak","severity":"error","nama":"Bima Pratama Putra","kar_id":"1268","alasan":"event tanpa jadwal (kebijakan jadwal wajib); tidak ada insert ke trs_absensi"},{"timestamp":"2026-05-16 17:19:02","raw_log":"[2026-05-16 17:19:02] \u2717 REJECTED: No schedule found for 470 on 2026-05-16 (strict mode)","message":"\u2717 REJECTED: No schedule found for 470 on 2026-05-16 (strict mode)","category":"unknown","severity":"info"},{"timestamp":"2026-05-16 17:19:02","raw_log":"[2026-05-16 17:19:02] \u26a0 ALLOWING FALLBACK: Schedule coverage only 0% for nama=Fathur Sanusi, kar_id=470","message":"\u26a0 ALLOWING FALLBACK: Schedule coverage only 0% for nama=Fathur Sanusi, kar_id=470","category":"fallback-mode","severity":"warning","nama":"Fathur Sanusi","kar_id":"470"},{"timestamp":"2026-05-16 17:19:02","raw_log":"[2026-05-16 17:19:02] \u26a0 FALLBACK: Using time-based detection sore for 470 (SCHEDULE MISSING!)","message":"\u26a0 FALLBACK: Using time-based detection sore for 470 (SCHEDULE MISSING!)","category":"unknown","severity":"info"},{"timestamp":"2026-05-16 17:19:02","raw_log":"[2026-05-16 17:19:02] \u26a0 SHIFT ASSIGNED: sore (source: fallback) for nama=Fathur Sanusi, kar_id=470","message":"\u26a0 SHIFT ASSIGNED: sore (source: fallback) for nama=Fathur Sanusi, kar_id=470","category":"unknown","severity":"info","nama":"Fathur Sanusi","kar_id":"470"},{"timestamp":"2026-05-16 17:19:02","raw_log":"[2026-05-16 17:19:02] Check-in: keputusan=berhasil, nama=Fathur Sanusi, kar_id=470, id_absensi=207205239, shift=sore, sumber=fallback","message":"Check-in: keputusan=berhasil, nama=Fathur Sanusi, kar_id=470, id_absensi=207205239, shift=sore, sumber=fallback","category":"check-in-berhasil","severity":"success","nama":"Fathur Sanusi","kar_id":"470","shift":"sore","source":"fallback"},{"timestamp":"2026-05-16 17:33:01","raw_log":"[2026-05-16 17:33:01] \u26a0 FALLBACK: Using time-based detection pagi for 1703 (SCHEDULE MISSING!)","message":"\u26a0 FALLBACK: Using time-based detection pagi for 1703 (SCHEDULE MISSING!)","category":"unknown","severity":"info"},{"timestamp":"2026-05-16 17:33:01","raw_log":"[2026-05-16 17:33:01] \u26a0 FALLBACK checkout validation for 1703 (no schedule found)","message":"\u26a0 FALLBACK checkout validation for 1703 (no schedule found)","category":"unknown","severity":"info"},{"timestamp":"2026-05-16 17:33:01","raw_log":"[2026-05-16 17:33:01] Checkout: keputusan=berhasil, nama=Arka Nugraha, kar_id=1703, id_absensi=207205233, shift=pagi, jam_kerja=9.44 jam, sumber=fallback","message":"Checkout: keputusan=berhasil, nama=Arka Nugraha, kar_id=1703, id_absensi=207205233, shift=pagi, jam_kerja=9.44 jam, sumber=fallback","category":"checkout-berhasil","severity":"success","nama":"Arka Nugraha","kar_id":"1703","shift":"pagi","source":"fallback"},{"timestamp":"2026-05-16 18:02:02","raw_log":"[2026-05-16 18:02:02] Check-in: keputusan=berhasil, nama=Hidayat, kar_id=1324, id_absensi=207205241, shift=malam, sumber=schedule","message":"Check-in: keputusan=berhasil, nama=Hidayat, kar_id=1324, id_absensi=207205241, shift=malam, sumber=schedule","category":"check-in-berhasil","severity":"success","nama":"Hidayat","kar_id":"1324","shift":"malam","source":"schedule"},{"timestamp":"2026-05-16 18:11:02","raw_log":"[2026-05-16 18:11:02] \u2717 REJECTED: No schedule found for 749 on 2026-05-16 (strict mode)","message":"\u2717 REJECTED: No schedule found for 749 on 2026-05-16 (strict mode)","category":"unknown","severity":"info"},{"timestamp":"2026-05-16 18:11:02","raw_log":"[2026-05-16 18:11:02] \u2717 ENFORCING SCHEDULE: Coverage 62.5%, rejecting event without schedule for nama=M. Naufal Abel Rafy, kar_id=749","message":"\u2717 ENFORCING SCHEDULE: Coverage 62.5%, rejecting event without schedule for nama=M. Naufal Abel Rafy, kar_id=749","category":"strict-reject","severity":"error","nama":"M. Naufal Abel Rafy","kar_id":"749"},{"timestamp":"2026-05-16 18:11:02","raw_log":"[2026-05-16 18:11:02] Check-in: keputusan=ditolak, nama=M. Naufal Abel Rafy, kar_id=749, alasan=event tanpa jadwal (kebijakan jadwal wajib); tidak ada insert ke trs_absensi","message":"Check-in: keputusan=ditolak, nama=M. Naufal Abel Rafy, kar_id=749, alasan=event tanpa jadwal (kebijakan jadwal wajib); tidak ada insert ke trs_absensi","category":"check-in-ditolak","severity":"error","nama":"M. Naufal Abel Rafy","kar_id":"749","alasan":"event tanpa jadwal (kebijakan jadwal wajib); tidak ada insert ke trs_absensi"},{"timestamp":"2026-05-16 19:04:02","raw_log":"[2026-05-16 19:04:02] \u26a0 FALLBACK: Using time-based detection pagi for 713 (SCHEDULE MISSING!)","message":"\u26a0 FALLBACK: Using time-based detection pagi for 713 (SCHEDULE MISSING!)","category":"unknown","severity":"info"},{"timestamp":"2026-05-16 19:04:02","raw_log":"[2026-05-16 19:04:02] \u26a0 FALLBACK checkout validation for 713 (no schedule found)","message":"\u26a0 FALLBACK checkout validation for 713 (no schedule found)","category":"unknown","severity":"info"},{"timestamp":"2026-05-16 19:04:02","raw_log":"[2026-05-16 19:04:02] Tutup otomatis: keputusan=ditutup_otomatis, nama=Nandang, kar_id=713, id_absensi=207205223, shift=pagi, waktu_pulang=2026-05-16 18:27:46, alasan=jam kerja melebihi batas maksimal; fallback berdasarkan max_hours","message":"Tutup otomatis: keputusan=ditutup_otomatis, nama=Nandang, kar_id=713, id_absensi=207205223, shift=pagi, waktu_pulang=2026-05-16 18:27:46, alasan=jam kerja melebihi batas maksimal; fallback berdasarkan max_hours","category":"tutup-otomatis","severity":"warning","nama":"Nandang","kar_id":"713","shift":"pagi","alasan":"jam kerja melebihi batas maksimal; fallback berdasarkan max_hours"},{"timestamp":"2026-05-16 19:04:02","raw_log":"[2026-05-16 19:04:02] \u2717 REJECTED: No schedule found for 713 on 2026-05-16 (strict mode)","message":"\u2717 REJECTED: No schedule found for 713 on 2026-05-16 (strict mode)","category":"unknown","severity":"info"},{"timestamp":"2026-05-16 19:04:02","raw_log":"[2026-05-16 19:04:02] \u26a0 ALLOWING FALLBACK: Schedule coverage only 0% for nama=Nandang, kar_id=713","message":"\u26a0 ALLOWING FALLBACK: Schedule coverage only 0% for nama=Nandang, kar_id=713","category":"fallback-mode","severity":"warning","nama":"Nandang","kar_id":"713"},{"timestamp":"2026-05-16 19:04:02","raw_log":"[2026-05-16 19:04:02] \u26a0 WARNING: No schedule AND outside shift hours for 713 on 2026-05-16 at 2026-05-16 19:03:35","message":"\u26a0 WARNING: No schedule AND outside shift hours for 713 on 2026-05-16 at 2026-05-16 19:03:35","category":"unknown","severity":"info"},{"timestamp":"2026-05-16 19:04:02","raw_log":"[2026-05-16 19:04:02] Check-in: keputusan=ditolak, nama=Nandang, kar_id=713, alasan=outside shift hours (Undefined); tidak ada insert ke trs_absensi","message":"Check-in: keputusan=ditolak, nama=Nandang, kar_id=713, alasan=outside shift hours (Undefined); tidak ada insert ke trs_absensi","category":"check-in-ditolak","severity":"error","nama":"Nandang","kar_id":"713","alasan":"outside shift hours (Undefined); tidak ada insert ke trs_absensi"}]}