[2026-03-31 00:00:11] [cron_deactivate_schedules_for_inactive_users] start
[2026-03-31 00:00:11] [cron_mark_yesterday_absent] start
[2026-03-31 00:00:11] [cron_daily_schedule_fcm] Notification Results:
[2026-03-31 00:00:11] [cron_daily_schedule_fcm] -------------------------
[2026-03-31 00:00:11] [cron_daily_schedule_fcm] All schedules reset: sent = 0
[2026-03-31 00:00:11] [cron_mark_yesterday_absent] {"success":true,"date":"2026-03-30","marked_absent":2,"users_absent":[{"user_id":4,"name":"vital"},{"user_id":13,"name":"test"}]}
[2026-03-31 00:00:11] [cron_mark_yesterday_absent] end
[2026-03-31 00:00:11] [cron_daily_schedule_fcm] Active status updated based on leave dates
[2026-03-31 00:00:11] [cron_deactivate_schedules_for_inactive_users] {"success":true,"message":"No inactive users","inactive_user_ids":[],"schedules_updated":0}
[2026-03-31 00:00:11] [cron_deactivate_schedules_for_inactive_users] end
[2026-03-31 00:00:12] [cron_daily_schedule_fcm] User pooarasan → Schedule 50 (active=1) sent to 1 device(s)
[2026-03-31 00:00:12] [cron_daily_schedule_fcm] User pooarasan → Schedule 51 (active=1) sent to 1 device(s)
[2026-03-31 00:00:13] [cron_daily_schedule_fcm] User pooarasan → Schedule 153 (active=1) sent to 1 device(s)
[2026-03-31 00:00:13] [notification_received] Schedule 50 acknowledged by user_id=6 (event=received)
[2026-03-31 00:00:13] [cron_daily_schedule_fcm] User Sathish → Schedule 162 (active=1) sent to 1 device(s)
[2026-03-31 00:00:13] [notification_received] Schedule 51 acknowledged by user_id=6 (event=received)
[2026-03-31 00:00:13] [cron_daily_schedule_fcm] User Sathish → Schedule 163 (active=1) sent to 1 device(s)
[2026-03-31 00:00:13] [cron_daily_schedule_fcm] User Sathish → Schedule 164 (active=1) sent to 1 device(s)
[2026-03-31 00:00:14] [cron_daily_schedule_fcm] User Naveen → Schedule 165 (active=1) sent to 1 device(s)
[2026-03-31 00:00:14] [cron_daily_schedule_fcm] User Naveen → Schedule 166 (active=1) sent to 1 device(s)
[2026-03-31 00:00:14] [cron_daily_schedule_fcm] User Naveen → Schedule 167 (active=1) sent to 1 device(s)
[2026-03-31 00:00:14] [cron_daily_schedule_fcm] User Tamil → Schedule 168 (active=1) sent to 1 device(s)
[2026-03-31 00:00:14] [cron_daily_schedule_fcm] User Tamil → Schedule 169 (active=1) sent to 1 device(s)
[2026-03-31 00:00:15] [cron_daily_schedule_fcm] User Tamil → Schedule 170 (active=1) sent to 1 device(s)
[2026-03-31 00:00:15] [cron_daily_schedule_fcm] User Sathish → Schedule 172 (active=1) sent to 1 device(s)
[2026-03-31 00:00:15] [cron_daily_schedule_fcm] User Madesh → Schedule 226 (active=1) sent to 1 device(s)
[2026-03-31 00:00:15] [cron_daily_schedule_fcm] User Madesh → Schedule 227 (active=1) sent to 1 device(s)
[2026-03-31 00:00:15] [cron_daily_schedule_fcm] User test → Schedule 259 (active=1) no active devices
[2026-03-31 00:00:15] [cron_daily_schedule_fcm] -------------------------
[2026-03-31 00:00:15] [cron_daily_schedule_fcm] Total Sent: 15
[2026-03-31 00:00:15] [cron_daily_schedule_fcm] Total Skipped: 1
[2026-03-31 00:00:15] [cron_daily_schedule_fcm] Execution Time: 4.01 sec
[2026-03-31 00:00:15] [cron_daily_schedule_fcm] -------------------------
[2026-03-31 00:00:15] [cron_daily_schedule_fcm] Done.
[2026-03-31 00:00:15] [notification_received] Schedule 153 acknowledged by user_id=6 (event=received)
[2026-03-31 00:44:54] [fcm_token] FCM token saved/updated: user_id=5 device_type=android
[2026-03-31 00:44:59] [attendance_code_created] date=2026-03-31 type=first_half
[2026-03-31 01:00:08] [cron_deactivate_schedules_for_inactive_users] start
[2026-03-31 01:00:08] [cron_deactivate_schedules_for_inactive_users] {"success":true,"message":"No inactive users","inactive_user_ids":[],"schedules_updated":0}
[2026-03-31 01:00:08] [cron_deactivate_schedules_for_inactive_users] end
[2026-03-31 02:00:07] [cron_deactivate_schedules_for_inactive_users] start
[2026-03-31 02:00:07] [cron_deactivate_schedules_for_inactive_users] {"success":true,"message":"No inactive users","inactive_user_ids":[],"schedules_updated":0}
[2026-03-31 02:00:07] [cron_deactivate_schedules_for_inactive_users] end
[2026-03-31 03:00:06] [cron_deactivate_schedules_for_inactive_users] start
[2026-03-31 03:00:06] [cron_deactivate_schedules_for_inactive_users] {"success":true,"message":"No inactive users","inactive_user_ids":[],"schedules_updated":0}
[2026-03-31 03:00:06] [cron_deactivate_schedules_for_inactive_users] end
[2026-03-31 03:45:05] [fcm_token] FCM token saved/updated: user_id=6 device_type=android
[2026-03-31 03:50:01] [notification_received] Schedule 50 acknowledged by user_id=6 (event=tapped)
[2026-03-31 04:00:03] [notification_received] Schedule 51 acknowledged by user_id=6 (event=tapped)
[2026-03-31 04:00:08] [cron_deactivate_schedules_for_inactive_users] start
[2026-03-31 04:00:08] [cron_deactivate_schedules_for_inactive_users] {"success":true,"message":"No inactive users","inactive_user_ids":[],"schedules_updated":0}
[2026-03-31 04:00:08] [cron_deactivate_schedules_for_inactive_users] end
[2026-03-31 04:03:33] [attendance_login] user_id=6 date=2026-03-31 first_half
[2026-03-31 04:03:42] [fcm_token] FCM token saved/updated: user_id=7 device_type=android
[2026-03-31 04:03:44] [attendance_login] user_id=7 date=2026-03-31 first_half
[2026-03-31 04:06:09] [fcm_token] FCM token saved/updated: user_id=15 device_type=android
[2026-03-31 04:06:09] [notification_received] Schedule 226 acknowledged by user_id=15 (event=received)
[2026-03-31 04:06:12] [notification_received] Schedule 227 acknowledged by user_id=15 (event=received)
[2026-03-31 04:10:00] [notification_received] Schedule 227 acknowledged by user_id=15 (event=tapped)
[2026-03-31 04:10:17] [notification_received] Schedule 227 acknowledged by user_id=15 (event=tapped)
[2026-03-31 04:20:09] [notification_received] Schedule 168 acknowledged by user_id=20 (event=received)
[2026-03-31 04:20:09] [notification_received] Schedule 170 acknowledged by user_id=20 (event=received)
[2026-03-31 04:20:09] [notification_received] Schedule 169 acknowledged by user_id=20 (event=received)
[2026-03-31 04:20:19] [fcm_token] FCM token saved/updated: user_id=20 device_type=android
[2026-03-31 04:25:49] [fcm_token] FCM token saved/updated: user_id=15 device_type=android
[2026-03-31 04:25:55] [attendance_login] user_id=15 date=2026-03-31 first_half
[2026-03-31 04:26:18] [fcm_token] FCM token saved/updated: user_id=17 device_type=android
[2026-03-31 04:26:24] [attendance_login] user_id=17 date=2026-03-31 first_half
[2026-03-31 04:26:39] [notification_received] Schedule 162 acknowledged by user_id=17 (event=received)
[2026-03-31 04:26:42] [notification_received] Schedule 163 acknowledged by user_id=17 (event=received)
[2026-03-31 04:26:46] [notification_received] Schedule 164 acknowledged by user_id=17 (event=received)
[2026-03-31 04:26:49] [notification_received] Schedule 172 acknowledged by user_id=17 (event=received)
[2026-03-31 04:31:35] [fcm_token] FCM token saved/updated: user_id=21 device_type=android
[2026-03-31 04:31:38] [attendance_login] user_id=21 date=2026-03-31 first_half
[2026-03-31 04:41:07] [notification_received] Schedule 166 acknowledged by user_id=18 (event=tapped)
[2026-03-31 04:41:07] [notification_received] Schedule 167 acknowledged by user_id=18 (event=tapped)
[2026-03-31 04:41:08] [notification_received] Schedule 165 acknowledged by user_id=18 (event=received)
[2026-03-31 04:41:11] [notification_received] Schedule 166 acknowledged by user_id=18 (event=received)
[2026-03-31 04:41:14] [notification_received] Schedule 167 acknowledged by user_id=18 (event=received)
[2026-03-31 04:42:00] [fcm_token] FCM token saved/updated: user_id=18 device_type=android
[2026-03-31 04:42:03] [attendance_login] user_id=18 date=2026-03-31 first_half
[2026-03-31 04:47:16] [fcm_token] FCM token saved/updated: user_id=20 device_type=android
[2026-03-31 04:47:18] [attendance_login] user_id=20 date=2026-03-31 first_half
[2026-03-31 04:50:46] [fcm_token] FCM token saved/updated: user_id=20 device_type=android
[2026-03-31 05:00:07] [cron_deactivate_schedules_for_inactive_users] start
[2026-03-31 05:00:07] [cron_deactivate_schedules_for_inactive_users] {"success":true,"message":"No inactive users","inactive_user_ids":[],"schedules_updated":0}
[2026-03-31 05:00:07] [cron_deactivate_schedules_for_inactive_users] end
[2026-03-31 05:24:38] [fcm_token] FCM token saved/updated: user_id=5 device_type=android
[2026-03-31 05:25:01] [fcm_token] FCM token saved/updated: user_id=5 device_type=android
[2026-03-31 05:31:08] [attendance_code_created] date=2026-03-31 type=second_half
[2026-03-31 06:00:09] [cron_deactivate_schedules_for_inactive_users] start
[2026-03-31 06:00:09] [cron_deactivate_schedules_for_inactive_users] {"success":true,"message":"No inactive users","inactive_user_ids":[],"schedules_updated":0}
[2026-03-31 06:00:09] [cron_deactivate_schedules_for_inactive_users] end
[2026-03-31 06:25:55] [fcm_token] FCM token saved/updated: user_id=20 device_type=android
[2026-03-31 07:00:05] [cron_deactivate_schedules_for_inactive_users] start
[2026-03-31 07:00:05] [cron_deactivate_schedules_for_inactive_users] {"success":true,"message":"No inactive users","inactive_user_ids":[],"schedules_updated":0}
[2026-03-31 07:00:05] [cron_deactivate_schedules_for_inactive_users] end
[2026-03-31 07:03:38] [fcm_token] FCM token saved/updated: user_id=7 device_type=android
[2026-03-31 07:04:12] [attendance_logout] user_id=7 date=2026-03-31 first_half
[2026-03-31 07:04:17] [attendance_login] user_id=7 date=2026-03-31 second_half
[2026-03-31 07:04:33] [attendance_logout] user_id=6 date=2026-03-31 first_half
[2026-03-31 07:04:37] [attendance_login] user_id=6 date=2026-03-31 second_half
[2026-03-31 07:34:42] [fcm_token] FCM token saved/updated: user_id=18 device_type=android
[2026-03-31 07:34:54] [attendance_login] user_id=18 date=2026-03-31 second_half
[2026-03-31 07:34:59] [attendance_logout] user_id=18 date=2026-03-31 second_half
[2026-03-31 07:43:33] [fcm_token] FCM token saved/updated: user_id=15 device_type=android
[2026-03-31 07:43:42] [attendance_logout] user_id=15 date=2026-03-31 first_half
[2026-03-31 07:43:45] [attendance_login] user_id=15 date=2026-03-31 second_half
[2026-03-31 07:53:17] [fcm_token] FCM token saved/updated: user_id=21 device_type=android
[2026-03-31 07:53:33] [attendance_logout] user_id=21 date=2026-03-31 first_half
[2026-03-31 07:53:37] [attendance_login] user_id=21 date=2026-03-31 second_half
[2026-03-31 07:53:40] [attendance_logout] user_id=21 date=2026-03-31 second_half
[2026-03-31 08:00:10] [cron_deactivate_schedules_for_inactive_users] start
[2026-03-31 08:00:10] [cron_deactivate_schedules_for_inactive_users] {"success":true,"message":"No inactive users","inactive_user_ids":[],"schedules_updated":0}
[2026-03-31 08:00:11] [cron_deactivate_schedules_for_inactive_users] end
[2026-03-31 08:23:16] [attendance_logout] user_id=15 date=2026-03-31 second_half
[2026-03-31 08:25:25] [fcm_token] FCM token saved/updated: user_id=20 device_type=android
[2026-03-31 08:25:37] [attendance_logout] user_id=20 date=2026-03-31 first_half
[2026-03-31 08:25:44] [attendance_login] user_id=20 date=2026-03-31 second_half
[2026-03-31 08:27:44] [attendance_logout] user_id=20 date=2026-03-31 second_half
[2026-03-31 08:31:59] [attendance_logout] user_id=6 date=2026-03-31 second_half
[2026-03-31 08:32:20] [fcm_token] FCM token saved/updated: user_id=7 device_type=android
[2026-03-31 08:32:26] [attendance_logout] user_id=7 date=2026-03-31 second_half
[2026-03-31 08:36:29] [fcm_token] FCM token saved/updated: user_id=23 device_type=android
[2026-03-31 08:38:49] [update_leave_day_status] Request: id=96, status=rejected
[2026-03-31 08:38:49] [update_leave_day_status] leave_days UPDATE: affected_rows=1
[2026-03-31 08:38:49] [update_leave_day_status] Skipped schedule update: status=rejected (only approved updates schedules)
[2026-03-31 08:38:49] [update_leave_day_status] Response: success, schedules_updated=0
[2026-03-31 08:47:01] [fcm_token] FCM token saved/updated: user_id=17 device_type=android
[2026-03-31 08:47:03] [attendance_logout] user_id=17 date=2026-03-31 first_half
[2026-03-31 08:47:12] [attendance_login] user_id=17 date=2026-03-31 second_half
[2026-03-31 08:47:15] [attendance_logout] user_id=17 date=2026-03-31 second_half
[2026-03-31 09:00:09] [cron_deactivate_schedules_for_inactive_users] start
[2026-03-31 09:00:09] [cron_deactivate_schedules_for_inactive_users] {"success":true,"message":"No inactive users","inactive_user_ids":[],"schedules_updated":0}
[2026-03-31 09:00:09] [cron_deactivate_schedules_for_inactive_users] end
[2026-03-31 10:00:10] [cron_deactivate_schedules_for_inactive_users] start
[2026-03-31 10:00:10] [cron_deactivate_schedules_for_inactive_users] {"success":true,"message":"No inactive users","inactive_user_ids":[],"schedules_updated":0}
[2026-03-31 10:00:10] [cron_deactivate_schedules_for_inactive_users] end
[2026-03-31 11:00:10] [cron_deactivate_schedules_for_inactive_users] start
[2026-03-31 11:00:10] [cron_deactivate_schedules_for_inactive_users] {"success":true,"message":"No inactive users","inactive_user_ids":[],"schedules_updated":0}
[2026-03-31 11:00:10] [cron_deactivate_schedules_for_inactive_users] end
[2026-03-31 11:13:28] [login] User logged in: user_id=1 name="Administrator" contact=9876543210
[2026-03-31 11:13:28] [fcm_token] FCM token saved/updated: user_id=1 device_type=android
[2026-03-31 11:18:04] [fcm_token] FCM token saved/updated: user_id=5 device_type=android
[2026-03-31 11:19:35] [update_attendance] Attendance updated: date=2026-03-31 updated=3 user_ids=23,22,5
[2026-03-31 11:19:36] [update_attendance] Attendance updated: date=2026-03-31 updated=3 user_ids=23,22,5
[2026-03-31 11:19:37] [update_attendance] Attendance updated: date=2026-03-31 updated=3 user_ids=23,22,5
[2026-03-31 11:20:23] [fcm_token] FCM token saved/updated: user_id=1 device_type=android
[2026-03-31 11:35:23] [fcm_token] FCM token saved/updated: user_id=5 device_type=android
[2026-03-31 12:00:11] [cron_deactivate_schedules_for_inactive_users] start
[2026-03-31 12:00:11] [cron_deactivate_schedules_for_inactive_users] {"success":true,"message":"No inactive users","inactive_user_ids":[],"schedules_updated":0}
[2026-03-31 12:00:11] [cron_deactivate_schedules_for_inactive_users] end
[2026-03-31 12:00:12] [cron_daily_schedule_fcm] Notification Results:
[2026-03-31 12:00:12] [cron_daily_schedule_fcm] -------------------------
[2026-03-31 12:00:13] [cron_daily_schedule_fcm] All schedules reset: sent = 0
[2026-03-31 12:00:13] [cron_daily_schedule_fcm] Active status updated based on leave dates
[2026-03-31 12:00:15] [cron_daily_schedule_fcm] User pooarasan → Schedule 50 (active=1) sent to 1 device(s)
[2026-03-31 12:00:15] [cron_daily_schedule_fcm] User pooarasan → Schedule 51 (active=1) sent to 1 device(s)
[2026-03-31 12:00:15] [cron_daily_schedule_fcm] User pooarasan → Schedule 153 (active=1) sent to 1 device(s)
[2026-03-31 12:00:16] [cron_daily_schedule_fcm] User Sathish → Schedule 162 (active=1) sent to 1 device(s)
[2026-03-31 12:00:16] [cron_daily_schedule_fcm] User Sathish → Schedule 163 (active=1) sent to 1 device(s)
[2026-03-31 12:00:16] [cron_daily_schedule_fcm] User Sathish → Schedule 164 (active=1) sent to 1 device(s)
[2026-03-31 12:00:16] [notification_received] Schedule 50 acknowledged by user_id=6 (event=received)
[2026-03-31 12:00:17] [cron_daily_schedule_fcm] User Naveen → Schedule 165 (active=1) sent to 1 device(s)
[2026-03-31 12:00:18] [cron_daily_schedule_fcm] User Naveen → Schedule 166 (active=1) sent to 1 device(s)
[2026-03-31 12:00:18] [cron_daily_schedule_fcm] User Naveen → Schedule 167 (active=1) sent to 1 device(s)
[2026-03-31 12:00:18] [notification_received] Schedule 51 acknowledged by user_id=6 (event=received)
[2026-03-31 12:00:18] [cron_daily_schedule_fcm] User Tamil → Schedule 168 (active=1) sent to 1 device(s)
[2026-03-31 12:00:19] [cron_daily_schedule_fcm] User Tamil → Schedule 169 (active=1) sent to 1 device(s)
[2026-03-31 12:00:19] [cron_daily_schedule_fcm] User Tamil → Schedule 170 (active=1) sent to 1 device(s)
[2026-03-31 12:00:19] [notification_received] Schedule 165 acknowledged by user_id=18 (event=received)
[2026-03-31 12:00:19] [notification_received] Schedule 166 acknowledged by user_id=18 (event=received)
[2026-03-31 12:00:19] [cron_daily_schedule_fcm] User Sathish → Schedule 172 (active=1) sent to 1 device(s)
[2026-03-31 12:00:19] [cron_daily_schedule_fcm] User Madesh → Schedule 226 (active=1) sent to 1 device(s)
[2026-03-31 12:00:20] [cron_daily_schedule_fcm] User Madesh → Schedule 227 (active=1) sent to 1 device(s)
[2026-03-31 12:00:20] [cron_daily_schedule_fcm] User test → Schedule 259 (active=1) no active devices
[2026-03-31 12:00:20] [cron_daily_schedule_fcm] -------------------------
[2026-03-31 12:00:20] [cron_daily_schedule_fcm] Total Sent: 15
[2026-03-31 12:00:20] [cron_daily_schedule_fcm] Total Skipped: 1
[2026-03-31 12:00:20] [cron_daily_schedule_fcm] Execution Time: 8.11 sec
[2026-03-31 12:00:20] [cron_daily_schedule_fcm] -------------------------
[2026-03-31 12:00:20] [cron_daily_schedule_fcm] Done.
[2026-03-31 12:00:24] [notification_received] Schedule 167 acknowledged by user_id=18 (event=received)
[2026-03-31 12:00:24] [notification_received] Schedule 226 acknowledged by user_id=15 (event=received)
[2026-03-31 12:00:25] [notification_received] Schedule 227 acknowledged by user_id=15 (event=received)
[2026-03-31 12:01:36] [notification_received] Schedule 153 acknowledged by user_id=6 (event=received)
[2026-03-31 12:03:54] [fcm_token] FCM token saved/updated: user_id=5 device_type=android
[2026-03-31 12:10:23] [notification_received] Schedule 169 acknowledged by user_id=20 (event=received)
[2026-03-31 12:10:23] [notification_received] Schedule 168 acknowledged by user_id=20 (event=received)
[2026-03-31 12:10:26] [notification_received] Schedule 170 acknowledged by user_id=20 (event=received)
[2026-03-31 12:32:39] [notification_received] Schedule 164 acknowledged by user_id=17 (event=received)
[2026-03-31 12:32:39] [notification_received] Schedule 162 acknowledged by user_id=17 (event=received)
[2026-03-31 12:32:39] [notification_received] Schedule 172 acknowledged by user_id=17 (event=received)
[2026-03-31 12:32:39] [notification_received] Schedule 163 acknowledged by user_id=17 (event=received)
[2026-03-31 12:52:51] [fcm_token] FCM token saved/updated: user_id=5 device_type=android
[2026-03-31 13:00:13] [cron_deactivate_schedules_for_inactive_users] start
[2026-03-31 13:00:13] [cron_deactivate_schedules_for_inactive_users] {"success":true,"message":"No inactive users","inactive_user_ids":[],"schedules_updated":0}
[2026-03-31 13:00:13] [cron_deactivate_schedules_for_inactive_users] end
[2026-03-31 14:00:09] [cron_deactivate_schedules_for_inactive_users] start
[2026-03-31 14:00:09] [cron_deactivate_schedules_for_inactive_users] {"success":true,"message":"No inactive users","inactive_user_ids":[],"schedules_updated":0}
[2026-03-31 14:00:09] [cron_deactivate_schedules_for_inactive_users] end
[2026-03-31 15:00:13] [cron_deactivate_schedules_for_inactive_users] start
[2026-03-31 15:00:13] [cron_deactivate_schedules_for_inactive_users] {"success":true,"message":"No inactive users","inactive_user_ids":[],"schedules_updated":0}
[2026-03-31 15:00:13] [cron_deactivate_schedules_for_inactive_users] end
[2026-03-31 16:00:12] [cron_deactivate_schedules_for_inactive_users] start
[2026-03-31 16:00:12] [cron_deactivate_schedules_for_inactive_users] {"success":true,"message":"No inactive users","inactive_user_ids":[],"schedules_updated":0}
[2026-03-31 16:00:12] [cron_deactivate_schedules_for_inactive_users] end
[2026-03-31 16:38:31] [fcm_token] FCM token saved/updated: user_id=5 device_type=android
[2026-03-31 17:00:08] [cron_deactivate_schedules_for_inactive_users] start
[2026-03-31 17:00:08] [cron_deactivate_schedules_for_inactive_users] {"success":true,"message":"No inactive users","inactive_user_ids":[],"schedules_updated":0}
[2026-03-31 17:00:08] [cron_deactivate_schedules_for_inactive_users] end
[2026-03-31 18:00:09] [cron_deactivate_schedules_for_inactive_users] start
[2026-03-31 18:00:09] [cron_deactivate_schedules_for_inactive_users] {"success":true,"message":"No inactive users","inactive_user_ids":[],"schedules_updated":0}
[2026-03-31 18:00:09] [cron_deactivate_schedules_for_inactive_users] end
[2026-03-31 18:13:22] [fcm_token] FCM token saved/updated: user_id=23 device_type=android
[2026-03-31 18:23:11] [fcm_token] FCM token saved/updated: user_id=5 device_type=android
[2026-03-31 18:24:06] [fcm_token] FCM token saved/updated: user_id=5 device_type=android
[2026-03-31 18:35:28] [fcm_token] FCM token saved/updated: user_id=5 device_type=android
[2026-03-31 18:35:56] [fcm_token] FCM token saved/updated: user_id=5 device_type=android
[2026-03-31 18:38:10] [fcm_token] FCM token saved/updated: user_id=5 device_type=android
[2026-03-31 18:47:04] [fcm_token] FCM token saved/updated: user_id=5 device_type=android
[2026-03-31 18:50:22] [fcm_token] FCM token saved/updated: user_id=5 device_type=android
[2026-03-31 18:53:30] [fcm_token] FCM token saved/updated: user_id=5 device_type=android
[2026-03-31 18:53:43] [fcm_token] FCM token saved/updated: user_id=5 device_type=android
[2026-03-31 18:53:59] [fcm_token] FCM token saved/updated: user_id=5 device_type=android
[2026-03-31 18:54:03] [fcm_token] FCM token saved/updated: user_id=5 device_type=android
[2026-03-31 19:00:08] [cron_deactivate_schedules_for_inactive_users] start
[2026-03-31 19:00:08] [cron_deactivate_schedules_for_inactive_users] {"success":true,"message":"No inactive users","inactive_user_ids":[],"schedules_updated":0}
[2026-03-31 19:00:08] [cron_deactivate_schedules_for_inactive_users] end
[2026-03-31 19:01:06] [fcm_token] FCM token saved/updated: user_id=5 device_type=android
[2026-03-31 19:14:01] [fcm_token] FCM token saved/updated: user_id=5 device_type=android
[2026-03-31 20:00:16] [cron_deactivate_schedules_for_inactive_users] start
[2026-03-31 20:00:16] [cron_deactivate_schedules_for_inactive_users] {"success":true,"message":"No inactive users","inactive_user_ids":[],"schedules_updated":0}
[2026-03-31 20:00:16] [cron_deactivate_schedules_for_inactive_users] end
[2026-03-31 20:09:21] [fcm_token] FCM token saved/updated: user_id=5 device_type=android
[2026-03-31 20:11:20] [update_attendance] Attendance updated: date=2026-03-31 updated=1 user_ids=18
[2026-03-31 20:31:51] [fcm_token] FCM token saved/updated: user_id=6 device_type=android
[2026-03-31 21:00:05] [cron_deactivate_schedules_for_inactive_users] start
[2026-03-31 21:00:05] [cron_deactivate_schedules_for_inactive_users] {"success":true,"message":"No inactive users","inactive_user_ids":[],"schedules_updated":0}
[2026-03-31 21:00:05] [cron_deactivate_schedules_for_inactive_users] end
[2026-03-31 21:12:17] [fcm_token] FCM token saved/updated: user_id=1 device_type=android
[2026-03-31 21:12:25] [logout] User logged out: user_id=1
[2026-03-31 21:12:54] [login] User logged in: user_id=1 name="Administrator" contact=9876543210
[2026-03-31 21:12:56] [fcm_token] FCM token saved/updated: user_id=1 device_type=android
[2026-03-31 21:13:21] [update_profile] Profile updated: user_id=1 name="Administrator" email=naveensubramani021@gmail.com contact=8056515399
[2026-03-31 21:13:35] [logout] User logged out: user_id=1
[2026-03-31 21:13:45] [reset_password] Password reset: user_id=1 email=naveensubramani021@gmail.com name="Administrator"
[2026-03-31 21:15:48] [reset_password] Password reset: user_id=1 email=naveensubramani021@gmail.com name="Administrator"
[2026-03-31 21:35:52] [reset_password] Password reset: user_id=1 email=naveensubramani021@gmail.com name="Administrator"
[2026-03-31 21:37:29] [login] User logged in: user_id=1 name="Administrator" contact=8056515399
[2026-03-31 21:37:30] [fcm_token] FCM token saved/updated: user_id=1 device_type=android
[2026-03-31 21:37:58] [update_profile] Profile updated: user_id=1 name="Administrator" email=naveensubramani021@gmail.com contact=8056515399
[2026-03-31 21:38:04] [logout] User logged out: user_id=1
[2026-03-31 21:38:17] [login] User logged in: user_id=1 name="Administrator" contact=8056515399
[2026-03-31 21:38:23] [fcm_token] FCM token saved/updated: user_id=1 device_type=android
[2026-03-31 22:00:06] [cron_deactivate_schedules_for_inactive_users] start
[2026-03-31 22:00:06] [cron_deactivate_schedules_for_inactive_users] {"success":true,"message":"No inactive users","inactive_user_ids":[],"schedules_updated":0}
[2026-03-31 22:00:06] [cron_deactivate_schedules_for_inactive_users] end
[2026-03-31 22:12:25] [send_app_update_email_all_users] dry_run admin_user_id=1 recipients=12 fcm_rows=12
[2026-03-31 22:29:13] [send_app_update_email_all_users] dry_run admin_user_id=1 recipients=12 fcm_rows=12
[2026-03-31 22:38:02] [send_app_update_email_all_users] admin_user_id=1 recipients=12 batches=1 ok=1
[2026-03-31 22:42:02] [send_app_update_email_all_users] admin_user_id=1 recipients=12 batches=1 ok=1
[2026-03-31 23:00:05] [cron_deactivate_schedules_for_inactive_users] start
[2026-03-31 23:00:05] [cron_deactivate_schedules_for_inactive_users] {"success":true,"message":"No inactive users","inactive_user_ids":[],"schedules_updated":0}
[2026-03-31 23:00:05] [cron_deactivate_schedules_for_inactive_users] end
