[2026-04-18 00:00:01] [cron_daily_schedule_fcm] Notification Results:
[2026-04-18 00:00:01] [cron_daily_schedule_fcm] -------------------------
[2026-04-18 00:00:01] [cron_daily_schedule_fcm] All schedules reset: sent = 0
[2026-04-18 00:00:01] [cron_deactivate_schedules_for_inactive_users] start
[2026-04-18 00:00:01] [cron_daily_schedule_fcm] Active status updated based on leave dates
[2026-04-18 00:00:01] [cron_mark_yesterday_absent] start
[2026-04-18 00:00:01] [cron_deactivate_schedules_for_inactive_users] {"success":true,"message":"No inactive users","inactive_user_ids":[],"schedules_updated":0}
[2026-04-18 00:00:01] [cron_deactivate_schedules_for_inactive_users] end
[2026-04-18 00:00:01] [cron_mark_yesterday_absent] {"success":true,"date":"2026-04-17","marked_absent":3,"users_absent":[{"user_id":4,"name":"vital"},{"user_id":13,"name":"test"},{"user_id":22,"name":"Mangamma"}]}
[2026-04-18 00:00:01] [cron_mark_yesterday_absent] end
[2026-04-18 00:00:01] [cron_daily_schedule_fcm] User pooarasan → Schedule 50 (active=1) sent to 1 device(s)
[2026-04-18 00:00:01] [cron_daily_schedule_fcm] User pooarasan → Schedule 51 (active=1) sent to 1 device(s)
[2026-04-18 00:00:02] [cron_daily_schedule_fcm] User pooarasan → Schedule 153 (active=1) sent to 1 device(s)
[2026-04-18 00:00:02] [cron_daily_schedule_fcm] User Sathish → Schedule 162 (active=1) sent to 1 device(s)
[2026-04-18 00:00:02] [cron_daily_schedule_fcm] User Sathish → Schedule 163 (active=1) sent to 1 device(s)
[2026-04-18 00:00:02] [cron_daily_schedule_fcm] User Sathish → Schedule 164 (active=1) sent to 1 device(s)
[2026-04-18 00:00:02] [cron_daily_schedule_fcm] User Naveen → Schedule 165 (active=1) sent to 1 device(s)
[2026-04-18 00:00:02] [cron_daily_schedule_fcm] User Naveen → Schedule 166 (active=1) sent to 1 device(s)
[2026-04-18 00:00:03] [cron_daily_schedule_fcm] User Naveen → Schedule 167 (active=1) sent to 1 device(s)
[2026-04-18 00:00:03] [cron_daily_schedule_fcm] User Tamil → Schedule 168 (active=1) sent to 1 device(s)
[2026-04-18 00:00:03] [cron_daily_schedule_fcm] User Tamil → Schedule 169 (active=1) sent to 1 device(s)
[2026-04-18 00:00:03] [notification_received] Schedule 51 acknowledged by user_id=6 (event=received)
[2026-04-18 00:00:03] [notification_received] Schedule 50 acknowledged by user_id=6 (event=received)
[2026-04-18 00:00:03] [notification_received] Schedule 165 acknowledged by user_id=18 (event=received)
[2026-04-18 00:00:03] [cron_daily_schedule_fcm] User Tamil → Schedule 170 (active=1) sent to 1 device(s)
[2026-04-18 00:00:03] [cron_daily_schedule_fcm] User Sathish → Schedule 172 (active=1) sent to 1 device(s)
[2026-04-18 00:00:03] [cron_daily_schedule_fcm] User Madesh → Schedule 226 (active=1) sent to 1 device(s)
[2026-04-18 00:00:04] [cron_daily_schedule_fcm] User Madesh → Schedule 227 (active=1) sent to 1 device(s)
[2026-04-18 00:00:04] [cron_daily_schedule_fcm] User test → Schedule 263 (active=1) failed (no device accepted)
[2026-04-18 00:00:04] [cron_daily_schedule_fcm] -------------------------
[2026-04-18 00:00:04] [cron_daily_schedule_fcm] Total Sent: 15
[2026-04-18 00:00:04] [cron_daily_schedule_fcm] Total Skipped: 0
[2026-04-18 00:00:04] [cron_daily_schedule_fcm] Execution Time: 2.72 sec
[2026-04-18 00:00:04] [cron_daily_schedule_fcm] -------------------------
[2026-04-18 00:00:04] [cron_daily_schedule_fcm] Done.
[2026-04-18 00:00:04] [notification_received] Schedule 226 acknowledged by user_id=15 (event=received)
[2026-04-18 00:00:05] [notification_received] Schedule 166 acknowledged by user_id=18 (event=received)
[2026-04-18 00:00:05] [notification_received] Schedule 153 acknowledged by user_id=6 (event=received)
[2026-04-18 00:00:06] [notification_received] Schedule 227 acknowledged by user_id=15 (event=received)
[2026-04-18 01:00:01] [cron_deactivate_schedules_for_inactive_users] start
[2026-04-18 01:00:01] [cron_deactivate_schedules_for_inactive_users] {"success":true,"message":"No inactive users","inactive_user_ids":[],"schedules_updated":0}
[2026-04-18 01:00:01] [cron_deactivate_schedules_for_inactive_users] end
[2026-04-18 01:23:40] [fcm_token] FCM token saved/updated: user_id=5 device_type=android
[2026-04-18 01:24:13] [attendance_code_created] date=2026-04-18 type=first_half
[2026-04-18 01:24:42] [attendance_code_created] date=2026-04-18 type=second_half
[2026-04-18 02:00:01] [cron_deactivate_schedules_for_inactive_users] start
[2026-04-18 02:00:01] [cron_deactivate_schedules_for_inactive_users] {"success":true,"message":"No inactive users","inactive_user_ids":[],"schedules_updated":0}
[2026-04-18 02:00:01] [cron_deactivate_schedules_for_inactive_users] end
[2026-04-18 03:00:01] [cron_deactivate_schedules_for_inactive_users] start
[2026-04-18 03:00:01] [cron_deactivate_schedules_for_inactive_users] {"success":true,"message":"No inactive users","inactive_user_ids":[],"schedules_updated":0}
[2026-04-18 03:00:01] [cron_deactivate_schedules_for_inactive_users] end
[2026-04-18 03:45:14] [fcm_token] FCM token saved/updated: user_id=6 device_type=android
[2026-04-18 03:50:02] [notification_received] Schedule 50 acknowledged by user_id=6 (event=tapped)
[2026-04-18 03:50:36] [notification_received] Schedule 50 acknowledged by user_id=6 (event=tapped)
[2026-04-18 03:50:47] [fcm_token] FCM token saved/updated: user_id=6 device_type=android
[2026-04-18 04:00:01] [cron_deactivate_schedules_for_inactive_users] start
[2026-04-18 04:00:01] [cron_deactivate_schedules_for_inactive_users] {"success":true,"message":"No inactive users","inactive_user_ids":[],"schedules_updated":0}
[2026-04-18 04:00:01] [cron_deactivate_schedules_for_inactive_users] end
[2026-04-18 04:00:02] [notification_received] Schedule 51 acknowledged by user_id=6 (event=tapped)
[2026-04-18 04:00:03] [notification_received] Schedule 166 acknowledged by user_id=18 (event=received)
[2026-04-18 04:00:03] [notification_received] Schedule 165 acknowledged by user_id=18 (event=received)
[2026-04-18 04:00:03] [notification_received] Schedule 167 acknowledged by user_id=18 (event=received)
[2026-04-18 04:00:03] [fcm_token] FCM token saved/updated: user_id=18 device_type=android
[2026-04-18 04:00:12] [notification_received] Schedule 51 acknowledged by user_id=6 (event=tapped)
[2026-04-18 04:03:33] [notification_received] Schedule 51 acknowledged by user_id=6 (event=tapped)
[2026-04-18 04:03:39] [notification_received] Schedule 51 acknowledged by user_id=6 (event=tapped)
[2026-04-18 04:05:01] [notification_received] Schedule 166 acknowledged by user_id=18 (event=tapped)
[2026-04-18 04:05:01] [notification_received] Schedule 226 acknowledged by user_id=15 (event=tapped)
[2026-04-18 04:10:01] [notification_received] Schedule 227 acknowledged by user_id=15 (event=tapped)
[2026-04-18 04:21:11] [attendance_login] user_id=6 date=2026-04-18 first_half
[2026-04-18 04:22:34] [fcm_token] FCM token saved/updated: user_id=7 device_type=android
[2026-04-18 04:22:47] [attendance_login] user_id=7 date=2026-04-18 first_half
[2026-04-18 04:35:11] [fcm_token] FCM token saved/updated: user_id=17 device_type=android
[2026-04-18 04:35:21] [attendance_login] user_id=17 date=2026-04-18 first_half
[2026-04-18 04:35:34] [notification_received] Schedule 162 acknowledged by user_id=17 (event=received)
[2026-04-18 04:35:39] [notification_received] Schedule 163 acknowledged by user_id=17 (event=received)
[2026-04-18 04:35:43] [notification_received] Schedule 164 acknowledged by user_id=17 (event=received)
[2026-04-18 04:35:46] [notification_received] Schedule 172 acknowledged by user_id=17 (event=received)
[2026-04-18 04:35:49] [notification_received] Schedule 162 acknowledged by user_id=17 (event=received)
[2026-04-18 04:35:53] [notification_received] Schedule 163 acknowledged by user_id=17 (event=received)
[2026-04-18 04:35:56] [notification_received] Schedule 164 acknowledged by user_id=17 (event=received)
[2026-04-18 04:35:59] [notification_received] Schedule 172 acknowledged by user_id=17 (event=received)
[2026-04-18 04:36:17] [fcm_token] FCM token saved/updated: user_id=21 device_type=android
[2026-04-18 04:36:25] [attendance_login] user_id=21 date=2026-04-18 first_half
[2026-04-18 04:41:02] [attendance_login] user_id=18 date=2026-04-18 first_half
[2026-04-18 04:42:40] [notification_received] Schedule 170 acknowledged by user_id=20 (event=received)
[2026-04-18 04:42:40] [notification_received] Schedule 168 acknowledged by user_id=20 (event=received)
[2026-04-18 04:42:40] [notification_received] Schedule 169 acknowledged by user_id=20 (event=received)
[2026-04-18 04:42:45] [notification_received] Schedule 168 acknowledged by user_id=20 (event=received)
[2026-04-18 04:42:48] [notification_received] Schedule 169 acknowledged by user_id=20 (event=received)
[2026-04-18 04:42:51] [notification_received] Schedule 170 acknowledged by user_id=20 (event=received)
[2026-04-18 04:55:24] [fcm_token] FCM token saved/updated: user_id=20 device_type=android
[2026-04-18 04:55:38] [attendance_login] user_id=20 date=2026-04-18 first_half
[2026-04-18 05:00:01] [cron_deactivate_schedules_for_inactive_users] start
[2026-04-18 05:00:01] [cron_deactivate_schedules_for_inactive_users] {"success":true,"message":"No inactive users","inactive_user_ids":[],"schedules_updated":0}
[2026-04-18 05:00:01] [cron_deactivate_schedules_for_inactive_users] end
[2026-04-18 06:00:01] [cron_deactivate_schedules_for_inactive_users] start
[2026-04-18 06:00:01] [cron_deactivate_schedules_for_inactive_users] {"success":true,"message":"No inactive users","inactive_user_ids":[],"schedules_updated":0}
[2026-04-18 06:00:01] [cron_deactivate_schedules_for_inactive_users] end
[2026-04-18 07:00:01] [cron_deactivate_schedules_for_inactive_users] start
[2026-04-18 07:00:01] [cron_deactivate_schedules_for_inactive_users] {"success":true,"message":"No inactive users","inactive_user_ids":[],"schedules_updated":0}
[2026-04-18 07:00:01] [cron_deactivate_schedules_for_inactive_users] end
[2026-04-18 07:14:55] [fcm_token] FCM token saved/updated: user_id=7 device_type=android
[2026-04-18 07:15:07] [attendance_logout] user_id=7 date=2026-04-18 first_half
[2026-04-18 07:15:14] [attendance_login] user_id=7 date=2026-04-18 second_half
[2026-04-18 07:17:29] [attendance_logout] user_id=6 date=2026-04-18 first_half
[2026-04-18 07:17:33] [attendance_login] user_id=6 date=2026-04-18 second_half
[2026-04-18 07:24:39] [fcm_token] FCM token saved/updated: user_id=20 device_type=android
[2026-04-18 07:25:07] [attendance_logout] user_id=20 date=2026-04-18 first_half
[2026-04-18 07:25:13] [attendance_login] user_id=20 date=2026-04-18 second_half
[2026-04-18 07:28:44] [fcm_token] FCM token saved/updated: user_id=18 device_type=android
[2026-04-18 07:29:18] [fcm_token] FCM token saved/updated: user_id=18 device_type=android
[2026-04-18 07:29:21] [attendance_logout] user_id=18 date=2026-04-18 first_half
[2026-04-18 07:29:25] [attendance_login] user_id=18 date=2026-04-18 second_half
[2026-04-18 07:40:49] [fcm_token] FCM token saved/updated: user_id=21 device_type=android
[2026-04-18 07:41:07] [attendance_logout] user_id=21 date=2026-04-18 first_half
[2026-04-18 07:51:29] [attendance_login] user_id=21 date=2026-04-18 second_half
[2026-04-18 07:52:43] [attendance_logout] user_id=21 date=2026-04-18 second_half
[2026-04-18 07:57:01] [attendance_logout] user_id=18 date=2026-04-18 second_half
[2026-04-18 08:00:01] [cron_deactivate_schedules_for_inactive_users] start
[2026-04-18 08:00:01] [cron_deactivate_schedules_for_inactive_users] {"success":true,"message":"No inactive users","inactive_user_ids":[],"schedules_updated":0}
[2026-04-18 08:00:01] [cron_deactivate_schedules_for_inactive_users] end
[2026-04-18 09:00:01] [cron_deactivate_schedules_for_inactive_users] start
[2026-04-18 09:00:01] [cron_deactivate_schedules_for_inactive_users] {"success":true,"message":"No inactive users","inactive_user_ids":[],"schedules_updated":0}
[2026-04-18 09:00:01] [cron_deactivate_schedules_for_inactive_users] end
[2026-04-18 09:16:53] [fcm_token] FCM token saved/updated: user_id=17 device_type=android
[2026-04-18 09:17:19] [attendance_logout] user_id=17 date=2026-04-18 first_half
[2026-04-18 09:17:28] [attendance_login] user_id=17 date=2026-04-18 second_half
[2026-04-18 09:26:05] [fcm_token] FCM token saved/updated: user_id=17 device_type=android
[2026-04-18 09:26:40] [attendance_logout] user_id=17 date=2026-04-18 second_half
[2026-04-18 09:40:28] [fcm_token] FCM token saved/updated: user_id=6 device_type=android
[2026-04-18 09:40:28] [attendance_logout] user_id=6 date=2026-04-18 second_half
[2026-04-18 09:40:38] [attendance_logout] user_id=7 date=2026-04-18 second_half
[2026-04-18 09:41:29] [fcm_token] FCM token saved/updated: user_id=20 device_type=android
[2026-04-18 09:41:33] [attendance_logout] user_id=20 date=2026-04-18 second_half
[2026-04-18 10:00:01] [cron_deactivate_schedules_for_inactive_users] start
[2026-04-18 10:00:01] [cron_deactivate_schedules_for_inactive_users] {"success":true,"message":"No inactive users","inactive_user_ids":[],"schedules_updated":0}
[2026-04-18 10:00:01] [cron_deactivate_schedules_for_inactive_users] end
[2026-04-18 10:07:49] [fcm_token] FCM token saved/updated: user_id=20 device_type=android
[2026-04-18 11:00:01] [cron_deactivate_schedules_for_inactive_users] start
[2026-04-18 11:00:01] [cron_deactivate_schedules_for_inactive_users] {"success":true,"message":"No inactive users","inactive_user_ids":[],"schedules_updated":0}
[2026-04-18 11:00:01] [cron_deactivate_schedules_for_inactive_users] end
[2026-04-18 11:13:49] [fcm_token] FCM token saved/updated: user_id=5 device_type=android
[2026-04-18 12:00:01] [cron_deactivate_schedules_for_inactive_users] start
[2026-04-18 12:00:01] [cron_deactivate_schedules_for_inactive_users] {"success":true,"message":"No inactive users","inactive_user_ids":[],"schedules_updated":0}
[2026-04-18 12:00:01] [cron_deactivate_schedules_for_inactive_users] end
[2026-04-18 12:00:01] [cron_daily_schedule_fcm] Notification Results:
[2026-04-18 12:00:01] [cron_daily_schedule_fcm] -------------------------
[2026-04-18 12:00:01] [cron_daily_schedule_fcm] All schedules reset: sent = 0
[2026-04-18 12:00:01] [cron_daily_schedule_fcm] Active status updated based on leave dates
[2026-04-18 12:00:01] [cron_daily_schedule_fcm] User pooarasan → Schedule 50 (active=1) sent to 1 device(s)
[2026-04-18 12:00:01] [cron_daily_schedule_fcm] User pooarasan → Schedule 51 (active=1) sent to 1 device(s)
[2026-04-18 12:00:02] [cron_daily_schedule_fcm] User pooarasan → Schedule 153 (active=1) sent to 1 device(s)
[2026-04-18 12:00:02] [cron_daily_schedule_fcm] User Sathish → Schedule 162 (active=1) sent to 1 device(s)
[2026-04-18 12:00:02] [cron_daily_schedule_fcm] User Sathish → Schedule 163 (active=1) sent to 1 device(s)
[2026-04-18 12:00:02] [cron_daily_schedule_fcm] User Sathish → Schedule 164 (active=1) sent to 1 device(s)
[2026-04-18 12:00:03] [notification_received] Schedule 50 acknowledged by user_id=6 (event=received)
[2026-04-18 12:00:03] [cron_daily_schedule_fcm] User Naveen → Schedule 165 (active=1) sent to 1 device(s)
[2026-04-18 12:00:03] [cron_daily_schedule_fcm] User Naveen → Schedule 166 (active=1) sent to 1 device(s)
[2026-04-18 12:00:03] [cron_daily_schedule_fcm] User Naveen → Schedule 167 (active=1) sent to 1 device(s)
[2026-04-18 12:00:04] [cron_daily_schedule_fcm] User Tamil → Schedule 168 (active=1) sent to 1 device(s)
[2026-04-18 12:00:04] [cron_daily_schedule_fcm] User Tamil → Schedule 169 (active=1) sent to 1 device(s)
[2026-04-18 12:00:04] [cron_daily_schedule_fcm] User Tamil → Schedule 170 (active=1) sent to 1 device(s)
[2026-04-18 12:00:04] [cron_daily_schedule_fcm] User Sathish → Schedule 172 (active=1) sent to 1 device(s)
[2026-04-18 12:00:04] [cron_daily_schedule_fcm] User Madesh → Schedule 226 (active=1) sent to 1 device(s)
[2026-04-18 12:00:04] [cron_daily_schedule_fcm] User Madesh → Schedule 227 (active=1) sent to 1 device(s)
[2026-04-18 12:00:04] [cron_daily_schedule_fcm] User test → Schedule 263 (active=1) no active devices
[2026-04-18 12:00:04] [cron_daily_schedule_fcm] -------------------------
[2026-04-18 12:00:04] [cron_daily_schedule_fcm] Total Sent: 15
[2026-04-18 12:00:04] [cron_daily_schedule_fcm] Total Skipped: 1
[2026-04-18 12:00:04] [cron_daily_schedule_fcm] Execution Time: 3.47 sec
[2026-04-18 12:00:04] [cron_daily_schedule_fcm] -------------------------
[2026-04-18 12:00:04] [cron_daily_schedule_fcm] Done.
[2026-04-18 12:00:05] [notification_received] Schedule 51 acknowledged by user_id=6 (event=received)
[2026-04-18 12:00:09] [notification_received] Schedule 165 acknowledged by user_id=18 (event=received)
[2026-04-18 12:00:09] [notification_received] Schedule 167 acknowledged by user_id=18 (event=received)
[2026-04-18 12:00:09] [notification_received] Schedule 166 acknowledged by user_id=18 (event=received)
[2026-04-18 12:00:09] [notification_received] Schedule 227 acknowledged by user_id=15 (event=received)
[2026-04-18 12:00:09] [notification_received] Schedule 226 acknowledged by user_id=15 (event=received)
[2026-04-18 12:17:10] [notification_received] Schedule 168 acknowledged by user_id=20 (event=received)
[2026-04-18 12:17:10] [notification_received] Schedule 169 acknowledged by user_id=20 (event=received)
[2026-04-18 12:17:12] [notification_received] Schedule 170 acknowledged by user_id=20 (event=received)
[2026-04-18 13:00:01] [cron_deactivate_schedules_for_inactive_users] start
[2026-04-18 13:00:01] [cron_deactivate_schedules_for_inactive_users] {"success":true,"message":"No inactive users","inactive_user_ids":[],"schedules_updated":0}
[2026-04-18 13:00:01] [cron_deactivate_schedules_for_inactive_users] end
[2026-04-18 14:00:01] [cron_deactivate_schedules_for_inactive_users] start
[2026-04-18 14:00:01] [cron_deactivate_schedules_for_inactive_users] {"success":true,"message":"No inactive users","inactive_user_ids":[],"schedules_updated":0}
[2026-04-18 14:00:01] [cron_deactivate_schedules_for_inactive_users] end
[2026-04-18 15:00:01] [cron_deactivate_schedules_for_inactive_users] start
[2026-04-18 15:00:01] [cron_deactivate_schedules_for_inactive_users] {"success":true,"message":"No inactive users","inactive_user_ids":[],"schedules_updated":0}
[2026-04-18 15:00:01] [cron_deactivate_schedules_for_inactive_users] end
[2026-04-18 16:00:01] [cron_deactivate_schedules_for_inactive_users] start
[2026-04-18 16:00:01] [cron_deactivate_schedules_for_inactive_users] {"success":true,"message":"No inactive users","inactive_user_ids":[],"schedules_updated":0}
[2026-04-18 16:00:01] [cron_deactivate_schedules_for_inactive_users] end
[2026-04-18 16:54:41] [notification_received] Schedule 164 acknowledged by user_id=17 (event=received)
[2026-04-18 16:54:42] [notification_received] Schedule 163 acknowledged by user_id=17 (event=received)
[2026-04-18 16:54:42] [notification_received] Schedule 162 acknowledged by user_id=17 (event=received)
[2026-04-18 16:54:43] [notification_received] Schedule 172 acknowledged by user_id=17 (event=received)
[2026-04-18 17:00:01] [cron_deactivate_schedules_for_inactive_users] start
[2026-04-18 17:00:01] [cron_deactivate_schedules_for_inactive_users] {"success":true,"message":"No inactive users","inactive_user_ids":[],"schedules_updated":0}
[2026-04-18 17:00:01] [cron_deactivate_schedules_for_inactive_users] end
[2026-04-18 18:00:01] [cron_deactivate_schedules_for_inactive_users] start
[2026-04-18 18:00:01] [cron_deactivate_schedules_for_inactive_users] {"success":true,"message":"No inactive users","inactive_user_ids":[],"schedules_updated":0}
[2026-04-18 18:00:01] [cron_deactivate_schedules_for_inactive_users] end
[2026-04-18 19:00:01] [cron_deactivate_schedules_for_inactive_users] start
[2026-04-18 19:00:01] [cron_deactivate_schedules_for_inactive_users] {"success":true,"message":"No inactive users","inactive_user_ids":[],"schedules_updated":0}
[2026-04-18 19:00:01] [cron_deactivate_schedules_for_inactive_users] end
[2026-04-18 19:30:09] [fcm_token] FCM token saved/updated: user_id=21 device_type=android
[2026-04-18 19:38:33] [fcm_token] FCM token saved/updated: user_id=5 device_type=android
[2026-04-18 20:00:01] [cron_deactivate_schedules_for_inactive_users] start
[2026-04-18 20:00:01] [cron_deactivate_schedules_for_inactive_users] {"success":true,"message":"No inactive users","inactive_user_ids":[],"schedules_updated":0}
[2026-04-18 20:00:01] [cron_deactivate_schedules_for_inactive_users] end
[2026-04-18 21:00:01] [cron_deactivate_schedules_for_inactive_users] start
[2026-04-18 21:00:01] [cron_deactivate_schedules_for_inactive_users] {"success":true,"message":"No inactive users","inactive_user_ids":[],"schedules_updated":0}
[2026-04-18 21:00:01] [cron_deactivate_schedules_for_inactive_users] end
[2026-04-18 22:00:01] [cron_deactivate_schedules_for_inactive_users] start
[2026-04-18 22:00:01] [cron_deactivate_schedules_for_inactive_users] {"success":true,"message":"No inactive users","inactive_user_ids":[],"schedules_updated":0}
[2026-04-18 22:00:01] [cron_deactivate_schedules_for_inactive_users] end
[2026-04-18 22:17:58] [fcm_token] FCM token saved/updated: user_id=5 device_type=android
[2026-04-18 22:19:48] [fcm_token] FCM token saved/updated: user_id=15 device_type=android
[2026-04-18 22:32:09] [fcm_token] FCM token saved/updated: user_id=15 device_type=android
[2026-04-18 23:00:01] [cron_deactivate_schedules_for_inactive_users] start
[2026-04-18 23:00:01] [cron_deactivate_schedules_for_inactive_users] {"success":true,"message":"No inactive users","inactive_user_ids":[],"schedules_updated":0}
[2026-04-18 23:00:01] [cron_deactivate_schedules_for_inactive_users] end
