[26-Sep-2026 21:20:59 UTC] Bursary DB SQLSTATE: 42S22
[26-Sep-2026 21:20:59 UTC] Bursary DB code: 1054
[26-Sep-2026 21:20:59 UTC] Bursary DB message: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'family_discount_amount' in 'INSERT INTO'
[26-Sep-2026 21:23:41 UTC] Bursary DB SQLSTATE: 42S22
[26-Sep-2026 21:23:41 UTC] Bursary DB code: 1054
[26-Sep-2026 21:23:41 UTC] Bursary DB message: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'family_discount_amount' in 'INSERT INTO'
[26-Sep-2026 21:36:28 UTC] 📚 STUDENT GET: Fetching all students
[26-Sep-2026 21:36:28 UTC] ✅ STUDENT GET: Found 386 students
[26-Sep-2026 21:37:22 UTC] Bursary DB SQLSTATE: 42S22
[26-Sep-2026 21:37:22 UTC] Bursary DB code: 1054
[26-Sep-2026 21:37:22 UTC] Bursary DB message: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'family_discount_amount' in 'INSERT INTO'
[26-Sep-2026 21:51:16 UTC] 📚 STUDENT GET: Fetching all students
[26-Sep-2026 21:51:16 UTC] ✅ STUDENT GET: Found 386 students
[26-Sep-2026 21:51:23 UTC] 📚 STUDENT GET: Fetching all students
[26-Sep-2026 21:51:23 UTC] ✅ STUDENT GET: Found 386 students
[26-Sep-2026 21:51:44 UTC] 🔐 LOGIN API: Incoming request
[26-Sep-2026 21:51:44 UTC]    Sanitized Email: admin@school.com
[26-Sep-2026 21:51:44 UTC]    Executing query to find user by email
[26-Sep-2026 21:51:44 UTC] ✅ User found: School Admin
[26-Sep-2026 21:51:44 UTC]    User ID: 1
[26-Sep-2026 21:51:44 UTC]    Role: admin
[26-Sep-2026 21:51:44 UTC]    Verifying password...
[26-Sep-2026 21:51:44 UTC]    ✅ Password verified as PLAIN TEXT
[26-Sep-2026 21:51:44 UTC] ✅ Password verified successfully
[26-Sep-2026 21:51:44 UTC]    Normalized teacher_role: mentor
[26-Sep-2026 21:51:44 UTC]    Updating last_login timestamp...
[26-Sep-2026 21:51:44 UTC] ✅ LOGIN SUCCESSFUL
[26-Sep-2026 21:51:48 UTC] 📚 STUDENT GET: Fetching all students
[26-Sep-2026 21:51:48 UTC] ✅ STUDENT GET: Found 386 students
[26-Sep-2026 21:51:48 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[26-Sep-2026 21:51:48 UTC] No class_id found - will fetch all announcements
[26-Sep-2026 21:51:48 UTC] ✅ Fetched 0 announcements
[26-Sep-2026 21:51:48 UTC] ✅ Total announcements: 0
[26-Sep-2026 21:54:28 UTC] 🔐 LOGIN API: Incoming request
[26-Sep-2026 21:54:28 UTC]    Sanitized Email: accountant@school.com
[26-Sep-2026 21:54:28 UTC]    Executing query to find user by email
[26-Sep-2026 21:54:28 UTC] ✅ User found: bursary staff
[26-Sep-2026 21:54:28 UTC]    User ID: 7
[26-Sep-2026 21:54:28 UTC]    Role: bursar
[26-Sep-2026 21:54:28 UTC]    Verifying password...
[26-Sep-2026 21:54:28 UTC]    ✅ Password verified as PLAIN TEXT
[26-Sep-2026 21:54:28 UTC] ✅ Password verified successfully
[26-Sep-2026 21:54:28 UTC]    Updating last_login timestamp...
[26-Sep-2026 21:54:28 UTC] ✅ LOGIN SUCCESSFUL
[26-Sep-2026 21:54:29 UTC] 📚 STUDENT GET: Fetching all students
[26-Sep-2026 21:54:30 UTC] ✅ STUDENT GET: Found 386 students
[26-Sep-2026 21:55:18 UTC] Bursary DB SQLSTATE: 42S22
[26-Sep-2026 21:55:18 UTC] Bursary DB code: 1054
[26-Sep-2026 21:55:18 UTC] Bursary DB message: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'family_discount_amount' in 'INSERT INTO'
[26-Sep-2026 22:03:27 UTC] 📚 STUDENT GET: Fetching all students
[26-Sep-2026 22:03:27 UTC] ✅ STUDENT GET: Found 386 students
[26-Sep-2026 22:24:46 UTC] 📚 STUDENT GET: Fetching all students
[26-Sep-2026 22:24:46 UTC] ✅ STUDENT GET: Found 386 students
[26-Sep-2026 22:29:31 UTC] 📚 STUDENT GET: Fetching all students
[26-Sep-2026 22:29:31 UTC] ✅ STUDENT GET: Found 386 students
[26-Sep-2026 22:29:45 UTC] 📚 STUDENT GET: Fetching all students
[26-Sep-2026 22:29:45 UTC] ✅ STUDENT GET: Found 386 students
[26-Sep-2026 23:26:23 UTC] 🔐 LOGIN API: Incoming request
[26-Sep-2026 23:26:23 UTC]    Sanitized Email: accountant@school.com
[26-Sep-2026 23:26:23 UTC]    Executing query to find user by email
[26-Sep-2026 23:26:23 UTC] ✅ User found: bursary staff
[26-Sep-2026 23:26:23 UTC]    User ID: 7
[26-Sep-2026 23:26:23 UTC]    Role: bursar
[26-Sep-2026 23:26:23 UTC]    Verifying password...
[26-Sep-2026 23:26:23 UTC]    ✅ Password verified as PLAIN TEXT
[26-Sep-2026 23:26:23 UTC] ✅ Password verified successfully
[26-Sep-2026 23:26:23 UTC]    Updating last_login timestamp...
[26-Sep-2026 23:26:23 UTC] ✅ LOGIN SUCCESSFUL
[26-Sep-2026 23:26:25 UTC] 📚 STUDENT GET: Fetching all students
[26-Sep-2026 23:26:25 UTC] ✅ STUDENT GET: Found 386 students
[26-Sep-2026 23:27:27 UTC] 📚 STUDENT GET: Fetching all students
[26-Sep-2026 23:27:27 UTC] ✅ STUDENT GET: Found 386 students
[27-Sep-2026 17:12:40 UTC] 🔐 LOGIN API: Incoming request
[27-Sep-2026 17:12:40 UTC]    Sanitized Email: accountant@school.com
[27-Sep-2026 17:12:40 UTC]    Executing query to find user by email
[27-Sep-2026 17:12:40 UTC] ✅ User found: bursary staff
[27-Sep-2026 17:12:40 UTC]    User ID: 7
[27-Sep-2026 17:12:40 UTC]    Role: bursar
[27-Sep-2026 17:12:40 UTC]    Verifying password...
[27-Sep-2026 17:12:40 UTC]    ✅ Password verified as PLAIN TEXT
[27-Sep-2026 17:12:40 UTC] ✅ Password verified successfully
[27-Sep-2026 17:12:40 UTC]    Updating last_login timestamp...
[27-Sep-2026 17:12:40 UTC] ✅ LOGIN SUCCESSFUL
[27-Sep-2026 17:12:41 UTC] 📚 STUDENT GET: Fetching all students
[27-Sep-2026 17:12:41 UTC] ✅ STUDENT GET: Found 386 students
[27-Sep-2026 17:13:03 UTC] 📚 STUDENT GET: Fetching all students
[27-Sep-2026 17:13:03 UTC] ✅ STUDENT GET: Found 386 students
[27-Sep-2026 17:13:07 UTC] 🔐 LOGIN API: Incoming request
[27-Sep-2026 17:13:07 UTC]    Sanitized Email: admin@school.com
[27-Sep-2026 17:13:07 UTC]    Executing query to find user by email
[27-Sep-2026 17:13:07 UTC] ✅ User found: School Admin
[27-Sep-2026 17:13:07 UTC]    User ID: 1
[27-Sep-2026 17:13:07 UTC]    Role: admin
[27-Sep-2026 17:13:07 UTC]    Verifying password...
[27-Sep-2026 17:13:07 UTC]    ✅ Password verified as PLAIN TEXT
[27-Sep-2026 17:13:07 UTC] ✅ Password verified successfully
[27-Sep-2026 17:13:07 UTC]    Normalized teacher_role: mentor
[27-Sep-2026 17:13:07 UTC]    Updating last_login timestamp...
[27-Sep-2026 17:13:07 UTC] ✅ LOGIN SUCCESSFUL
[27-Sep-2026 17:13:10 UTC] 📚 STUDENT GET: Fetching all students
[27-Sep-2026 17:13:10 UTC] ✅ STUDENT GET: Found 386 students
[27-Sep-2026 17:13:10 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[27-Sep-2026 17:13:10 UTC] No class_id found - will fetch all announcements
[27-Sep-2026 17:13:10 UTC] ✅ Fetched 0 announcements
[27-Sep-2026 17:13:10 UTC] ✅ Total announcements: 0
[27-Sep-2026 17:16:54 UTC] 📚 STUDENT GET: Fetching all students
[27-Sep-2026 17:16:54 UTC] ✅ STUDENT GET: Found 386 students
[27-Sep-2026 17:17:02 UTC] 📚 STUDENT GET: Fetching all students
[27-Sep-2026 17:17:02 UTC] ✅ STUDENT GET: Found 386 students
[27-Sep-2026 17:17:08 UTC] 📚 STUDENT GET: Fetching all students
[27-Sep-2026 17:17:08 UTC] ✅ STUDENT GET: Found 386 students
[27-Sep-2026 18:23:04 UTC] 📚 STUDENT GET: Fetching all students
[27-Sep-2026 18:23:04 UTC] ✅ STUDENT GET: Found 386 students
[27-Sep-2026 18:23:04 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[27-Sep-2026 18:23:04 UTC] No class_id found - will fetch all announcements
[27-Sep-2026 18:23:04 UTC] ✅ Fetched 0 announcements
[27-Sep-2026 18:23:04 UTC] ✅ Total announcements: 0
[28-Sep-2026 06:18:55 UTC] 🔐 LOGIN API: Incoming request
[28-Sep-2026 06:18:55 UTC]    Sanitized Email: accountant@school.com
[28-Sep-2026 06:18:55 UTC]    Executing query to find user by email
[28-Sep-2026 06:18:55 UTC] ✅ User found: bursary staff
[28-Sep-2026 06:18:55 UTC]    User ID: 7
[28-Sep-2026 06:18:55 UTC]    Role: bursar
[28-Sep-2026 06:18:55 UTC]    Verifying password...
[28-Sep-2026 06:18:55 UTC]    ✅ Password verified as PLAIN TEXT
[28-Sep-2026 06:18:55 UTC] ✅ Password verified successfully
[28-Sep-2026 06:18:55 UTC]    Updating last_login timestamp...
[28-Sep-2026 06:18:55 UTC] ✅ LOGIN SUCCESSFUL
[28-Sep-2026 06:18:57 UTC] 📚 STUDENT GET: Fetching all students
[28-Sep-2026 06:18:57 UTC] ✅ STUDENT GET: Found 386 students
[28-Sep-2026 06:27:12 UTC] 🔐 LOGIN API: Incoming request
[28-Sep-2026 06:27:12 UTC]    Sanitized Email: accountant@school.com
[28-Sep-2026 06:27:12 UTC]    Executing query to find user by email
[28-Sep-2026 06:27:12 UTC] ✅ User found: bursary staff
[28-Sep-2026 06:27:12 UTC]    User ID: 7
[28-Sep-2026 06:27:12 UTC]    Role: bursar
[28-Sep-2026 06:27:12 UTC]    Verifying password...
[28-Sep-2026 06:27:12 UTC]    ✅ Password verified as PLAIN TEXT
[28-Sep-2026 06:27:12 UTC] ✅ Password verified successfully
[28-Sep-2026 06:27:12 UTC]    Updating last_login timestamp...
[28-Sep-2026 06:27:12 UTC] ✅ LOGIN SUCCESSFUL
[28-Sep-2026 06:27:13 UTC] 📚 STUDENT GET: Fetching all students
[28-Sep-2026 06:27:13 UTC] ✅ STUDENT GET: Found 386 students
[28-Sep-2026 06:27:43 UTC] 🔐 LOGIN API: Incoming request
[28-Sep-2026 06:27:43 UTC]    Sanitized Email: admin@school.com
[28-Sep-2026 06:27:43 UTC]    Executing query to find user by email
[28-Sep-2026 06:27:43 UTC] ✅ User found: School Admin
[28-Sep-2026 06:27:43 UTC]    User ID: 1
[28-Sep-2026 06:27:43 UTC]    Role: admin
[28-Sep-2026 06:27:43 UTC]    Verifying password...
[28-Sep-2026 06:27:43 UTC]    ✅ Password verified as PLAIN TEXT
[28-Sep-2026 06:27:43 UTC] ✅ Password verified successfully
[28-Sep-2026 06:27:43 UTC]    Normalized teacher_role: mentor
[28-Sep-2026 06:27:43 UTC]    Updating last_login timestamp...
[28-Sep-2026 06:27:43 UTC] ✅ LOGIN SUCCESSFUL
[28-Sep-2026 06:27:45 UTC] 📚 STUDENT GET: Fetching all students
[28-Sep-2026 06:27:45 UTC] ✅ STUDENT GET: Found 386 students
[28-Sep-2026 06:27:45 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[28-Sep-2026 06:27:45 UTC] No class_id found - will fetch all announcements
[28-Sep-2026 06:27:45 UTC] ✅ Fetched 0 announcements
[28-Sep-2026 06:27:45 UTC] ✅ Total announcements: 0
[28-Sep-2026 06:28:56 UTC] 📚 STUDENT GET: Fetching all students
[28-Sep-2026 06:28:56 UTC] ✅ STUDENT GET: Found 386 students
[28-Sep-2026 06:30:10 UTC] 🔐 LOGIN API: Incoming request
[28-Sep-2026 06:30:10 UTC]    Sanitized Email: accountant@school.com
[28-Sep-2026 06:30:10 UTC]    Executing query to find user by email
[28-Sep-2026 06:30:10 UTC] ✅ User found: bursary staff
[28-Sep-2026 06:30:10 UTC]    User ID: 7
[28-Sep-2026 06:30:10 UTC]    Role: bursar
[28-Sep-2026 06:30:10 UTC]    Verifying password...
[28-Sep-2026 06:30:10 UTC]    ✅ Password verified as PLAIN TEXT
[28-Sep-2026 06:30:10 UTC] ✅ Password verified successfully
[28-Sep-2026 06:30:10 UTC]    Updating last_login timestamp...
[28-Sep-2026 06:30:10 UTC] ✅ LOGIN SUCCESSFUL
[28-Sep-2026 06:30:11 UTC] 📚 STUDENT GET: Fetching all students
[28-Sep-2026 06:30:11 UTC] ✅ STUDENT GET: Found 386 students
[28-Sep-2026 06:36:43 UTC] 📚 STUDENT GET: Fetching all students
[28-Sep-2026 06:36:43 UTC] ✅ STUDENT GET: Found 386 students
[28-Sep-2026 06:39:55 UTC] 📚 STUDENT GET: Fetching all students
[28-Sep-2026 06:39:55 UTC] ✅ STUDENT GET: Found 386 students
[28-Sep-2026 06:43:27 UTC] 📚 STUDENT GET: Fetching all students
[28-Sep-2026 06:43:27 UTC] ✅ STUDENT GET: Found 386 students
[28-Sep-2026 06:44:19 UTC] 📚 STUDENT GET: Fetching all students
[28-Sep-2026 06:44:19 UTC] ✅ STUDENT GET: Found 386 students
[28-Sep-2026 06:45:37 UTC] 📚 STUDENT GET: Fetching all students
[28-Sep-2026 06:45:37 UTC] ✅ STUDENT GET: Found 386 students
[28-Sep-2026 06:46:22 UTC] 📚 STUDENT GET: Fetching all students
[28-Sep-2026 06:46:22 UTC] ✅ STUDENT GET: Found 386 students
[28-Sep-2026 06:48:51 UTC] 📚 STUDENT GET: Fetching all students
[28-Sep-2026 06:48:51 UTC] ✅ STUDENT GET: Found 386 students
[28-Sep-2026 06:48:59 UTC] 📚 STUDENT GET: Fetching all students
[28-Sep-2026 06:48:59 UTC] ✅ STUDENT GET: Found 386 students
[28-Sep-2026 06:49:33 UTC] 📚 STUDENT GET: Fetching all students
[28-Sep-2026 06:49:33 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[28-Sep-2026 06:49:33 UTC] No class_id found - will fetch all announcements
[28-Sep-2026 06:49:33 UTC] ✅ Fetched 0 announcements
[28-Sep-2026 06:49:33 UTC] ✅ Total announcements: 0
[28-Sep-2026 06:49:33 UTC] ✅ STUDENT GET: Found 386 students
[28-Sep-2026 06:49:39 UTC] 🔐 LOGIN API: Incoming request
[28-Sep-2026 06:49:39 UTC]    Sanitized Email: accountant@school.com
[28-Sep-2026 06:49:39 UTC]    Executing query to find user by email
[28-Sep-2026 06:49:39 UTC] ✅ User found: bursary staff
[28-Sep-2026 06:49:39 UTC]    User ID: 7
[28-Sep-2026 06:49:39 UTC]    Role: bursar
[28-Sep-2026 06:49:39 UTC]    Verifying password...
[28-Sep-2026 06:49:39 UTC]    ✅ Password verified as PLAIN TEXT
[28-Sep-2026 06:49:39 UTC] ✅ Password verified successfully
[28-Sep-2026 06:49:39 UTC]    Updating last_login timestamp...
[28-Sep-2026 06:49:39 UTC] ✅ LOGIN SUCCESSFUL
[28-Sep-2026 06:49:40 UTC] 📚 STUDENT GET: Fetching all students
[28-Sep-2026 06:49:40 UTC] ✅ STUDENT GET: Found 386 students
[28-Sep-2026 07:23:44 UTC] 🔐 LOGIN API: Incoming request
[28-Sep-2026 07:23:44 UTC]    Sanitized Email: accountant@school.com
[28-Sep-2026 07:23:44 UTC]    Executing query to find user by email
[28-Sep-2026 07:23:44 UTC] ✅ User found: bursary staff
[28-Sep-2026 07:23:44 UTC]    User ID: 7
[28-Sep-2026 07:23:44 UTC]    Role: bursar
[28-Sep-2026 07:23:44 UTC]    Verifying password...
[28-Sep-2026 07:23:44 UTC]    ✅ Password verified as PLAIN TEXT
[28-Sep-2026 07:23:44 UTC] ✅ Password verified successfully
[28-Sep-2026 07:23:44 UTC]    Updating last_login timestamp...
[28-Sep-2026 07:23:44 UTC] ✅ LOGIN SUCCESSFUL
[28-Sep-2026 07:23:45 UTC] 📚 STUDENT GET: Fetching all students
[28-Sep-2026 07:23:45 UTC] ✅ STUDENT GET: Found 386 students
[28-Sep-2026 07:25:03 UTC] 📚 STUDENT GET: Fetching all students
[28-Sep-2026 07:25:03 UTC] ✅ STUDENT GET: Found 386 students
[28-Sep-2026 07:36:51 UTC] 🔐 LOGIN API: Incoming request
[28-Sep-2026 07:36:51 UTC]    Sanitized Email: admin@school.com
[28-Sep-2026 07:36:51 UTC]    Executing query to find user by email
[28-Sep-2026 07:36:51 UTC] ✅ User found: School Admin
[28-Sep-2026 07:36:51 UTC]    User ID: 1
[28-Sep-2026 07:36:51 UTC]    Role: admin
[28-Sep-2026 07:36:51 UTC]    Verifying password...
[28-Sep-2026 07:36:51 UTC]    ✅ Password verified as PLAIN TEXT
[28-Sep-2026 07:36:51 UTC] ✅ Password verified successfully
[28-Sep-2026 07:36:51 UTC]    Normalized teacher_role: mentor
[28-Sep-2026 07:36:51 UTC]    Updating last_login timestamp...
[28-Sep-2026 07:36:51 UTC] ✅ LOGIN SUCCESSFUL
[28-Sep-2026 07:36:53 UTC] 📚 STUDENT GET: Fetching all students
[28-Sep-2026 07:36:53 UTC] ✅ STUDENT GET: Found 386 students
[28-Sep-2026 07:36:53 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[28-Sep-2026 07:36:53 UTC] No class_id found - will fetch all announcements
[28-Sep-2026 07:36:53 UTC] ✅ Fetched 0 announcements
[28-Sep-2026 07:36:53 UTC] ✅ Total announcements: 0
[28-Sep-2026 07:41:04 UTC] 🔐 LOGIN API: Incoming request
[28-Sep-2026 07:41:04 UTC]    Sanitized Email: accountant@school.com
[28-Sep-2026 07:41:04 UTC]    Executing query to find user by email
[28-Sep-2026 07:41:04 UTC] ✅ User found: bursary staff
[28-Sep-2026 07:41:04 UTC]    User ID: 7
[28-Sep-2026 07:41:04 UTC]    Role: bursar
[28-Sep-2026 07:41:04 UTC]    Verifying password...
[28-Sep-2026 07:41:04 UTC]    ✅ Password verified as PLAIN TEXT
[28-Sep-2026 07:41:04 UTC] ✅ Password verified successfully
[28-Sep-2026 07:41:04 UTC]    Updating last_login timestamp...
[28-Sep-2026 07:41:04 UTC] ✅ LOGIN SUCCESSFUL
[28-Sep-2026 07:41:07 UTC] 📚 STUDENT GET: Fetching all students
[28-Sep-2026 07:41:07 UTC] ✅ STUDENT GET: Found 386 students
[28-Sep-2026 07:43:53 UTC] 🔐 LOGIN API: Incoming request
[28-Sep-2026 07:43:53 UTC]    Sanitized Email: admin@school.com
[28-Sep-2026 07:43:53 UTC]    Executing query to find user by email
[28-Sep-2026 07:43:53 UTC] ✅ User found: School Admin
[28-Sep-2026 07:43:53 UTC]    User ID: 1
[28-Sep-2026 07:43:53 UTC]    Role: admin
[28-Sep-2026 07:43:53 UTC]    Verifying password...
[28-Sep-2026 07:43:53 UTC]    ✅ Password verified as PLAIN TEXT
[28-Sep-2026 07:43:53 UTC] ✅ Password verified successfully
[28-Sep-2026 07:43:53 UTC]    Normalized teacher_role: mentor
[28-Sep-2026 07:43:53 UTC]    Updating last_login timestamp...
[28-Sep-2026 07:43:53 UTC] ✅ LOGIN SUCCESSFUL
[28-Sep-2026 07:43:54 UTC] 📚 STUDENT GET: Fetching all students
[28-Sep-2026 07:43:54 UTC] ✅ STUDENT GET: Found 386 students
[28-Sep-2026 07:43:54 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[28-Sep-2026 07:43:54 UTC] No class_id found - will fetch all announcements
[28-Sep-2026 07:43:54 UTC] ✅ Fetched 0 announcements
[28-Sep-2026 07:43:54 UTC] ✅ Total announcements: 0
[29-Sep-2026 12:56:46 UTC] 🔐 LOGIN API: Incoming request
[29-Sep-2026 12:56:46 UTC]    Sanitized Email: admin@school.com
[29-Sep-2026 12:56:46 UTC]    Executing query to find user by email
[29-Sep-2026 12:56:46 UTC] ✅ User found: School Admin
[29-Sep-2026 12:56:46 UTC]    User ID: 1
[29-Sep-2026 12:56:46 UTC]    Role: admin
[29-Sep-2026 12:56:46 UTC]    Verifying password...
[29-Sep-2026 12:56:46 UTC]    ✅ Password verified as PLAIN TEXT
[29-Sep-2026 12:56:46 UTC] ✅ Password verified successfully
[29-Sep-2026 12:56:46 UTC]    Normalized teacher_role: mentor
[29-Sep-2026 12:56:46 UTC]    Updating last_login timestamp...
[29-Sep-2026 12:56:46 UTC] ✅ LOGIN SUCCESSFUL
[29-Sep-2026 12:56:48 UTC] 📚 STUDENT GET: Fetching all students
[29-Sep-2026 12:56:48 UTC] ✅ STUDENT GET: Found 386 students
[29-Sep-2026 12:56:48 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[29-Sep-2026 12:56:48 UTC] No class_id found - will fetch all announcements
[29-Sep-2026 12:56:48 UTC] ✅ Fetched 0 announcements
[29-Sep-2026 12:56:48 UTC] ✅ Total announcements: 0
[29-Sep-2026 12:56:53 UTC] 📚 STUDENT GET: Fetching all students
[29-Sep-2026 12:56:53 UTC] ✅ STUDENT GET: Found 386 students
[29-Sep-2026 15:18:18 UTC] 🔐 LOGIN API: Incoming request
[29-Sep-2026 15:18:18 UTC]    Sanitized Email: accountant@school.com
[29-Sep-2026 15:18:18 UTC]    Executing query to find user by email
[29-Sep-2026 15:18:18 UTC] ✅ User found: bursary staff
[29-Sep-2026 15:18:18 UTC]    User ID: 7
[29-Sep-2026 15:18:18 UTC]    Role: bursar
[29-Sep-2026 15:18:18 UTC]    Verifying password...
[29-Sep-2026 15:18:18 UTC]    ✅ Password verified as PLAIN TEXT
[29-Sep-2026 15:18:18 UTC] ✅ Password verified successfully
[29-Sep-2026 15:18:18 UTC]    Updating last_login timestamp...
[29-Sep-2026 15:18:18 UTC] ✅ LOGIN SUCCESSFUL
[29-Sep-2026 15:18:22 UTC] 📚 STUDENT GET: Fetching all students
[29-Sep-2026 15:18:22 UTC] ✅ STUDENT GET: Found 386 students
[29-Sep-2026 16:27:31 UTC] 🔐 LOGIN API: Incoming request
[29-Sep-2026 16:27:31 UTC]    Sanitized Email: admin@school.com
[29-Sep-2026 16:27:31 UTC]    Executing query to find user by email
[29-Sep-2026 16:27:31 UTC] ✅ User found: School Admin
[29-Sep-2026 16:27:31 UTC]    User ID: 1
[29-Sep-2026 16:27:31 UTC]    Role: admin
[29-Sep-2026 16:27:31 UTC]    Verifying password...
[29-Sep-2026 16:27:31 UTC]    ✅ Password verified as PLAIN TEXT
[29-Sep-2026 16:27:31 UTC] ✅ Password verified successfully
[29-Sep-2026 16:27:31 UTC]    Normalized teacher_role: mentor
[29-Sep-2026 16:27:31 UTC]    Updating last_login timestamp...
[29-Sep-2026 16:27:31 UTC] ✅ LOGIN SUCCESSFUL
[29-Sep-2026 16:27:32 UTC] 📚 STUDENT GET: Fetching all students
[29-Sep-2026 16:27:32 UTC] ✅ STUDENT GET: Found 386 students
[29-Sep-2026 16:27:32 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[29-Sep-2026 16:27:32 UTC] No class_id found - will fetch all announcements
[29-Sep-2026 16:27:32 UTC] ✅ Fetched 0 announcements
[29-Sep-2026 16:27:32 UTC] ✅ Total announcements: 0
[29-Sep-2026 16:27:36 UTC] 📚 STUDENT GET: Fetching all students
[29-Sep-2026 16:27:36 UTC] ✅ STUDENT GET: Found 386 students
[29-Sep-2026 16:27:54 UTC] 📚 STUDENT GET: Fetching all students
[29-Sep-2026 16:27:54 UTC] ✅ STUDENT GET: Found 386 students
[29-Sep-2026 17:37:58 UTC] 🔐 LOGIN API: Incoming request
[29-Sep-2026 17:37:58 UTC]    Sanitized Email: admin@school.com
[29-Sep-2026 17:37:58 UTC]    Executing query to find user by email
[29-Sep-2026 17:37:58 UTC] ✅ User found: School Admin
[29-Sep-2026 17:37:58 UTC]    User ID: 1
[29-Sep-2026 17:37:58 UTC]    Role: admin
[29-Sep-2026 17:37:58 UTC]    Verifying password...
[29-Sep-2026 17:37:58 UTC]    ✅ Password verified as PLAIN TEXT
[29-Sep-2026 17:37:58 UTC] ✅ Password verified successfully
[29-Sep-2026 17:37:58 UTC]    Normalized teacher_role: mentor
[29-Sep-2026 17:37:58 UTC]    Updating last_login timestamp...
[29-Sep-2026 17:37:58 UTC] ✅ LOGIN SUCCESSFUL
[29-Sep-2026 17:38:00 UTC] 📚 STUDENT GET: Fetching all students
[29-Sep-2026 17:38:00 UTC] ✅ STUDENT GET: Found 386 students
[29-Sep-2026 17:38:00 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[29-Sep-2026 17:38:00 UTC] No class_id found - will fetch all announcements
[29-Sep-2026 17:38:00 UTC] ✅ Fetched 0 announcements
[29-Sep-2026 17:38:00 UTC] ✅ Total announcements: 0
[29-Sep-2026 17:38:54 UTC] 📚 STUDENT GET: Fetching all students
[29-Sep-2026 17:38:54 UTC] ✅ STUDENT GET: Found 386 students
[29-Sep-2026 18:17:13 UTC] 🔐 LOGIN API: Incoming request
[29-Sep-2026 18:17:13 UTC]    Sanitized Email: admin@school.com
[29-Sep-2026 18:17:13 UTC]    Executing query to find user by email
[29-Sep-2026 18:17:13 UTC] ✅ User found: School Admin
[29-Sep-2026 18:17:13 UTC]    User ID: 1
[29-Sep-2026 18:17:13 UTC]    Role: admin
[29-Sep-2026 18:17:13 UTC]    Verifying password...
[29-Sep-2026 18:17:13 UTC]    ✅ Password verified as PLAIN TEXT
[29-Sep-2026 18:17:13 UTC] ✅ Password verified successfully
[29-Sep-2026 18:17:13 UTC]    Normalized teacher_role: mentor
[29-Sep-2026 18:17:13 UTC]    Updating last_login timestamp...
[29-Sep-2026 18:17:13 UTC] ✅ LOGIN SUCCESSFUL
[29-Sep-2026 18:18:37 UTC] 📚 STUDENT GET: Fetching all students
[29-Sep-2026 18:18:37 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[29-Sep-2026 18:18:37 UTC] No class_id found - will fetch all announcements
[29-Sep-2026 18:18:37 UTC] ✅ Fetched 0 announcements
[29-Sep-2026 18:18:37 UTC] ✅ Total announcements: 0
[29-Sep-2026 18:18:37 UTC] ✅ STUDENT GET: Found 386 students
[29-Sep-2026 18:18:37 UTC] 📚 STUDENT GET: Fetching all students
[29-Sep-2026 18:18:37 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 06:44:33 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[30-Sep-2026 06:44:33 UTC] No class_id found - will fetch all announcements
[30-Sep-2026 06:44:33 UTC] ✅ Fetched 0 announcements
[30-Sep-2026 06:44:33 UTC] ✅ Total announcements: 0
[30-Sep-2026 06:44:33 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 06:44:33 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 06:44:34 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 06:44:34 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 06:44:41 UTC] 🔐 LOGIN API: Incoming request
[30-Sep-2026 06:44:41 UTC]    Sanitized Email: admin@school.com
[30-Sep-2026 06:44:41 UTC]    Executing query to find user by email
[30-Sep-2026 06:44:41 UTC] ✅ User found: School Admin
[30-Sep-2026 06:44:41 UTC]    User ID: 1
[30-Sep-2026 06:44:41 UTC]    Role: admin
[30-Sep-2026 06:44:41 UTC]    Verifying password...
[30-Sep-2026 06:44:41 UTC]    ✅ Password verified as PLAIN TEXT
[30-Sep-2026 06:44:41 UTC] ✅ Password verified successfully
[30-Sep-2026 06:44:41 UTC]    Normalized teacher_role: mentor
[30-Sep-2026 06:44:41 UTC]    Updating last_login timestamp...
[30-Sep-2026 06:44:41 UTC] ✅ LOGIN SUCCESSFUL
[30-Sep-2026 06:44:41 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[30-Sep-2026 06:44:41 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 06:44:41 UTC] No class_id found - will fetch all announcements
[30-Sep-2026 06:44:41 UTC] ✅ Fetched 0 announcements
[30-Sep-2026 06:44:41 UTC] ✅ Total announcements: 0
[30-Sep-2026 06:44:41 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 06:44:42 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 06:44:42 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 10:39:45 UTC] 🔐 LOGIN API: Incoming request
[30-Sep-2026 10:39:45 UTC]    Sanitized Email: admin@school.com
[30-Sep-2026 10:39:45 UTC]    Executing query to find user by email
[30-Sep-2026 10:39:45 UTC] ✅ User found: School Admin
[30-Sep-2026 10:39:45 UTC]    User ID: 1
[30-Sep-2026 10:39:45 UTC]    Role: admin
[30-Sep-2026 10:39:45 UTC]    Verifying password...
[30-Sep-2026 10:39:45 UTC]    ✅ Password verified as PLAIN TEXT
[30-Sep-2026 10:39:45 UTC] ✅ Password verified successfully
[30-Sep-2026 10:39:45 UTC]    Normalized teacher_role: mentor
[30-Sep-2026 10:39:45 UTC]    Updating last_login timestamp...
[30-Sep-2026 10:39:45 UTC] ✅ LOGIN SUCCESSFUL
[30-Sep-2026 10:39:57 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 10:39:57 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[30-Sep-2026 10:39:57 UTC] No class_id found - will fetch all announcements
[30-Sep-2026 10:39:57 UTC] ✅ Fetched 0 announcements
[30-Sep-2026 10:39:57 UTC] ✅ Total announcements: 0
[30-Sep-2026 10:39:57 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 10:39:59 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 10:39:59 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 11:08:41 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 11:08:41 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[30-Sep-2026 11:08:41 UTC] No class_id found - will fetch all announcements
[30-Sep-2026 11:08:41 UTC] ✅ Fetched 0 announcements
[30-Sep-2026 11:08:41 UTC] ✅ Total announcements: 0
[30-Sep-2026 11:08:41 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 11:08:41 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 11:08:41 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 11:09:28 UTC] 🔐 LOGIN API: Incoming request
[30-Sep-2026 11:09:28 UTC]    Sanitized Email: jude@gscis.com
[30-Sep-2026 11:09:28 UTC]    Executing query to find user by email
[30-Sep-2026 11:09:28 UTC] ✅ User found: Mr Jude
[30-Sep-2026 11:09:28 UTC]    User ID: 4
[30-Sep-2026 11:09:28 UTC]    Role: teacher
[30-Sep-2026 11:09:28 UTC]    Verifying password...
[30-Sep-2026 11:09:28 UTC]    ✅ Password verified as PLAIN TEXT
[30-Sep-2026 11:09:28 UTC] ✅ Password verified successfully
[30-Sep-2026 11:09:28 UTC]    Normalized teacher_role: form_teacher
[30-Sep-2026 11:09:28 UTC]    Fetching active academic session...
[30-Sep-2026 11:09:28 UTC]    Active session ID: 4
[30-Sep-2026 11:09:28 UTC]    Fetching assigned subjects...
[30-Sep-2026 11:09:28 UTC]    Found 17 assigned subject(s)
[30-Sep-2026 11:09:28 UTC]    Updating last_login timestamp...
[30-Sep-2026 11:09:28 UTC] ✅ LOGIN SUCCESSFUL
[30-Sep-2026 11:24:26 UTC] 🔐 LOGIN API: Incoming request
[30-Sep-2026 11:24:26 UTC]    Sanitized Email: admin@admin.com
[30-Sep-2026 11:24:26 UTC]    Executing query to find user by email
[30-Sep-2026 11:24:26 UTC] ❌ User not found: admin@admin.com
[30-Sep-2026 11:24:30 UTC] 🔐 LOGIN API: Incoming request
[30-Sep-2026 11:24:30 UTC]    Sanitized Email: admin@admin.com
[30-Sep-2026 11:24:30 UTC]    Executing query to find user by email
[30-Sep-2026 11:24:30 UTC] ❌ User not found: admin@admin.com
[30-Sep-2026 11:25:00 UTC] 🔐 LOGIN API: Incoming request
[30-Sep-2026 11:25:00 UTC]    Sanitized Email: admin@admin.com
[30-Sep-2026 11:25:00 UTC]    Executing query to find user by email
[30-Sep-2026 11:25:00 UTC] ❌ User not found: admin@admin.com
[30-Sep-2026 11:25:20 UTC] 🔐 LOGIN API: Incoming request
[30-Sep-2026 11:25:20 UTC]    Sanitized Email: admin@school.com
[30-Sep-2026 11:25:20 UTC]    Executing query to find user by email
[30-Sep-2026 11:25:20 UTC] ✅ User found: School Admin
[30-Sep-2026 11:25:20 UTC]    User ID: 1
[30-Sep-2026 11:25:20 UTC]    Role: admin
[30-Sep-2026 11:25:20 UTC]    Verifying password...
[30-Sep-2026 11:25:20 UTC] ❌ Password verification failed for user: admin@school.com
[30-Sep-2026 11:25:27 UTC] 🔐 LOGIN API: Incoming request
[30-Sep-2026 11:25:27 UTC]    Sanitized Email: admin@school.com
[30-Sep-2026 11:25:27 UTC]    Executing query to find user by email
[30-Sep-2026 11:25:27 UTC] ✅ User found: School Admin
[30-Sep-2026 11:25:27 UTC]    User ID: 1
[30-Sep-2026 11:25:27 UTC]    Role: admin
[30-Sep-2026 11:25:27 UTC]    Verifying password...
[30-Sep-2026 11:25:27 UTC]    ✅ Password verified as PLAIN TEXT
[30-Sep-2026 11:25:27 UTC] ✅ Password verified successfully
[30-Sep-2026 11:25:27 UTC]    Normalized teacher_role: mentor
[30-Sep-2026 11:25:27 UTC]    Updating last_login timestamp...
[30-Sep-2026 11:25:27 UTC] ✅ LOGIN SUCCESSFUL
[30-Sep-2026 11:25:30 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 11:25:30 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 11:25:30 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[30-Sep-2026 11:25:30 UTC] No class_id found - will fetch all announcements
[30-Sep-2026 11:25:30 UTC] ✅ Fetched 0 announcements
[30-Sep-2026 11:25:30 UTC] ✅ Total announcements: 0
[30-Sep-2026 11:25:33 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 11:25:33 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 11:30:43 UTC] 🔐 LOGIN API: Incoming request
[30-Sep-2026 11:30:43 UTC]    Sanitized Email: admin@school.com
[30-Sep-2026 11:30:43 UTC]    Executing query to find user by email
[30-Sep-2026 11:30:43 UTC] ✅ User found: School Admin
[30-Sep-2026 11:30:43 UTC]    User ID: 1
[30-Sep-2026 11:30:43 UTC]    Role: admin
[30-Sep-2026 11:30:43 UTC]    Verifying password...
[30-Sep-2026 11:30:43 UTC]    ✅ Password verified as PLAIN TEXT
[30-Sep-2026 11:30:43 UTC] ✅ Password verified successfully
[30-Sep-2026 11:30:43 UTC]    Normalized teacher_role: mentor
[30-Sep-2026 11:30:43 UTC]    Updating last_login timestamp...
[30-Sep-2026 11:30:43 UTC] ✅ LOGIN SUCCESSFUL
[30-Sep-2026 11:30:47 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 11:30:47 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[30-Sep-2026 11:30:47 UTC] No class_id found - will fetch all announcements
[30-Sep-2026 11:30:47 UTC] ✅ Fetched 0 announcements
[30-Sep-2026 11:30:47 UTC] ✅ Total announcements: 0
[30-Sep-2026 11:30:47 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 11:30:51 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 11:30:51 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 11:31:37 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 11:31:37 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 11:36:49 UTC] 🔐 LOGIN API: Incoming request
[30-Sep-2026 11:36:49 UTC]    Sanitized Email: admin@school.com
[30-Sep-2026 11:36:49 UTC]    Executing query to find user by email
[30-Sep-2026 11:36:49 UTC] ✅ User found: School Admin
[30-Sep-2026 11:36:49 UTC]    User ID: 1
[30-Sep-2026 11:36:49 UTC]    Role: admin
[30-Sep-2026 11:36:49 UTC]    Verifying password...
[30-Sep-2026 11:36:49 UTC]    ✅ Password verified as PLAIN TEXT
[30-Sep-2026 11:36:49 UTC] ✅ Password verified successfully
[30-Sep-2026 11:36:49 UTC]    Normalized teacher_role: mentor
[30-Sep-2026 11:36:49 UTC]    Updating last_login timestamp...
[30-Sep-2026 11:36:49 UTC] ✅ LOGIN SUCCESSFUL
[30-Sep-2026 11:36:50 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 11:36:50 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[30-Sep-2026 11:36:50 UTC] No class_id found - will fetch all announcements
[30-Sep-2026 11:36:50 UTC] ✅ Fetched 0 announcements
[30-Sep-2026 11:36:50 UTC] ✅ Total announcements: 0
[30-Sep-2026 11:36:50 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 11:36:50 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 11:36:50 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 11:37:00 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 11:37:00 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 11:38:01 UTC] 🔐 LOGIN API: Incoming request
[30-Sep-2026 11:38:01 UTC]    Sanitized Email: accountant@school.com
[30-Sep-2026 11:38:01 UTC]    Executing query to find user by email
[30-Sep-2026 11:38:01 UTC] ✅ User found: bursary staff
[30-Sep-2026 11:38:01 UTC]    User ID: 7
[30-Sep-2026 11:38:01 UTC]    Role: bursar
[30-Sep-2026 11:38:01 UTC]    Verifying password...
[30-Sep-2026 11:38:01 UTC]    ✅ Password verified as PLAIN TEXT
[30-Sep-2026 11:38:01 UTC] ✅ Password verified successfully
[30-Sep-2026 11:38:01 UTC]    Updating last_login timestamp...
[30-Sep-2026 11:38:01 UTC] ✅ LOGIN SUCCESSFUL
[30-Sep-2026 11:38:03 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 11:38:03 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 11:44:01 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 11:44:01 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 11:44:23 UTC] 🔐 LOGIN API: Incoming request
[30-Sep-2026 11:44:23 UTC]    Sanitized Email: admin@school.com
[30-Sep-2026 11:44:23 UTC]    Executing query to find user by email
[30-Sep-2026 11:44:23 UTC] ✅ User found: School Admin
[30-Sep-2026 11:44:23 UTC]    User ID: 1
[30-Sep-2026 11:44:23 UTC]    Role: admin
[30-Sep-2026 11:44:23 UTC]    Verifying password...
[30-Sep-2026 11:44:23 UTC]    ✅ Password verified as PLAIN TEXT
[30-Sep-2026 11:44:23 UTC] ✅ Password verified successfully
[30-Sep-2026 11:44:23 UTC]    Normalized teacher_role: mentor
[30-Sep-2026 11:44:23 UTC]    Updating last_login timestamp...
[30-Sep-2026 11:44:23 UTC] ✅ LOGIN SUCCESSFUL
[30-Sep-2026 11:44:25 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[30-Sep-2026 11:44:25 UTC] No class_id found - will fetch all announcements
[30-Sep-2026 11:44:25 UTC] ✅ Fetched 0 announcements
[30-Sep-2026 11:44:25 UTC] ✅ Total announcements: 0
[30-Sep-2026 11:44:25 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 11:44:25 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 11:44:26 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 11:44:26 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 11:44:38 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 11:44:38 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 11:44:52 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 11:44:52 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 11:45:51 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 11:45:51 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 11:45:53 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 11:45:53 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 11:45:57 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 11:45:57 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[30-Sep-2026 11:45:57 UTC] No class_id found - will fetch all announcements
[30-Sep-2026 11:45:58 UTC] ✅ Fetched 0 announcements
[30-Sep-2026 11:45:58 UTC] ✅ Total announcements: 0
[30-Sep-2026 11:45:58 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 11:45:58 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 11:45:58 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 11:48:03 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 11:48:03 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 11:51:58 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 11:51:58 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 11:55:42 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 11:55:42 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 11:56:06 UTC] 🔐 LOGIN API: Incoming request
[30-Sep-2026 11:56:06 UTC]    Sanitized Email: admin@school.com
[30-Sep-2026 11:56:06 UTC]    Executing query to find user by email
[30-Sep-2026 11:56:06 UTC] ✅ User found: School Admin
[30-Sep-2026 11:56:06 UTC]    User ID: 1
[30-Sep-2026 11:56:06 UTC]    Role: admin
[30-Sep-2026 11:56:06 UTC]    Verifying password...
[30-Sep-2026 11:56:06 UTC]    ✅ Password verified as PLAIN TEXT
[30-Sep-2026 11:56:06 UTC] ✅ Password verified successfully
[30-Sep-2026 11:56:06 UTC]    Normalized teacher_role: mentor
[30-Sep-2026 11:56:06 UTC]    Updating last_login timestamp...
[30-Sep-2026 11:56:06 UTC] ✅ LOGIN SUCCESSFUL
[30-Sep-2026 11:56:10 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 11:56:10 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 11:56:10 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[30-Sep-2026 11:56:10 UTC] No class_id found - will fetch all announcements
[30-Sep-2026 11:56:10 UTC] ✅ Fetched 0 announcements
[30-Sep-2026 11:56:10 UTC] ✅ Total announcements: 0
[30-Sep-2026 11:56:17 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 11:56:17 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 11:57:17 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 11:57:17 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 11:57:29 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 11:57:29 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 11:57:40 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 11:57:40 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 11:59:14 UTC] 🔐 LOGIN API: Incoming request
[30-Sep-2026 11:59:14 UTC]    Sanitized Email: admin@school.com
[30-Sep-2026 11:59:14 UTC]    Executing query to find user by email
[30-Sep-2026 11:59:14 UTC] ✅ User found: School Admin
[30-Sep-2026 11:59:14 UTC]    User ID: 1
[30-Sep-2026 11:59:14 UTC]    Role: admin
[30-Sep-2026 11:59:14 UTC]    Verifying password...
[30-Sep-2026 11:59:14 UTC]    ✅ Password verified as PLAIN TEXT
[30-Sep-2026 11:59:14 UTC] ✅ Password verified successfully
[30-Sep-2026 11:59:14 UTC]    Normalized teacher_role: mentor
[30-Sep-2026 11:59:14 UTC]    Updating last_login timestamp...
[30-Sep-2026 11:59:14 UTC] ✅ LOGIN SUCCESSFUL
[30-Sep-2026 11:59:15 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 11:59:15 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[30-Sep-2026 11:59:15 UTC] No class_id found - will fetch all announcements
[30-Sep-2026 11:59:15 UTC] ✅ Fetched 0 announcements
[30-Sep-2026 11:59:15 UTC] ✅ Total announcements: 0
[30-Sep-2026 11:59:15 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 11:59:15 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 11:59:15 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 11:59:45 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 11:59:45 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 12:01:18 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 12:01:18 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 12:02:09 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 12:02:09 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 12:02:21 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 12:02:21 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 12:03:06 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 12:03:06 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 12:03:10 UTC] 🔐 LOGIN API: Incoming request
[30-Sep-2026 12:03:10 UTC]    Sanitized Email: admin@school.com
[30-Sep-2026 12:03:10 UTC]    Executing query to find user by email
[30-Sep-2026 12:03:10 UTC] ✅ User found: School Admin
[30-Sep-2026 12:03:10 UTC]    User ID: 1
[30-Sep-2026 12:03:10 UTC]    Role: admin
[30-Sep-2026 12:03:10 UTC]    Verifying password...
[30-Sep-2026 12:03:10 UTC]    ✅ Password verified as PLAIN TEXT
[30-Sep-2026 12:03:10 UTC] ✅ Password verified successfully
[30-Sep-2026 12:03:10 UTC]    Normalized teacher_role: mentor
[30-Sep-2026 12:03:10 UTC]    Updating last_login timestamp...
[30-Sep-2026 12:03:10 UTC] ✅ LOGIN SUCCESSFUL
[30-Sep-2026 12:03:11 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 12:03:11 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 12:03:14 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 12:03:14 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 12:03:34 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 12:03:34 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 12:04:23 UTC] 🔐 LOGIN API: Incoming request
[30-Sep-2026 12:04:23 UTC]    Sanitized Email: accountant@school.com
[30-Sep-2026 12:04:23 UTC]    Executing query to find user by email
[30-Sep-2026 12:04:23 UTC] ✅ User found: bursary staff
[30-Sep-2026 12:04:23 UTC]    User ID: 7
[30-Sep-2026 12:04:23 UTC]    Role: bursar
[30-Sep-2026 12:04:23 UTC]    Verifying password...
[30-Sep-2026 12:04:23 UTC]    ✅ Password verified as PLAIN TEXT
[30-Sep-2026 12:04:23 UTC] ✅ Password verified successfully
[30-Sep-2026 12:04:23 UTC]    Updating last_login timestamp...
[30-Sep-2026 12:04:23 UTC] ✅ LOGIN SUCCESSFUL
[30-Sep-2026 12:04:24 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 12:04:24 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 12:05:48 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 12:05:49 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 12:24:58 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 12:24:58 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 12:25:08 UTC] 🔐 LOGIN API: Incoming request
[30-Sep-2026 12:25:08 UTC]    Sanitized Email: admin@school.com
[30-Sep-2026 12:25:08 UTC]    Executing query to find user by email
[30-Sep-2026 12:25:08 UTC] ✅ User found: School Admin
[30-Sep-2026 12:25:08 UTC]    User ID: 1
[30-Sep-2026 12:25:08 UTC]    Role: admin
[30-Sep-2026 12:25:08 UTC]    Verifying password...
[30-Sep-2026 12:25:08 UTC]    ✅ Password verified as PLAIN TEXT
[30-Sep-2026 12:25:08 UTC] ✅ Password verified successfully
[30-Sep-2026 12:25:08 UTC]    Normalized teacher_role: mentor
[30-Sep-2026 12:25:08 UTC]    Updating last_login timestamp...
[30-Sep-2026 12:25:08 UTC] ✅ LOGIN SUCCESSFUL
[30-Sep-2026 12:25:14 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[30-Sep-2026 12:25:14 UTC] No class_id found - will fetch all announcements
[30-Sep-2026 12:25:14 UTC] ✅ Fetched 0 announcements
[30-Sep-2026 12:25:14 UTC] ✅ Total announcements: 0
[30-Sep-2026 12:25:14 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 12:25:14 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 12:25:14 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 12:25:14 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 12:25:29 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 12:25:29 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 12:30:18 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 12:30:18 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 12:30:25 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 12:30:25 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 12:31:58 UTC] 🔐 LOGIN API: Incoming request
[30-Sep-2026 12:31:58 UTC]    Sanitized Email: accountant@school.com
[30-Sep-2026 12:31:58 UTC]    Executing query to find user by email
[30-Sep-2026 12:31:58 UTC] ✅ User found: bursary staff
[30-Sep-2026 12:31:58 UTC]    User ID: 7
[30-Sep-2026 12:31:58 UTC]    Role: bursar
[30-Sep-2026 12:31:58 UTC]    Verifying password...
[30-Sep-2026 12:31:58 UTC]    ✅ Password verified as PLAIN TEXT
[30-Sep-2026 12:31:58 UTC] ✅ Password verified successfully
[30-Sep-2026 12:31:58 UTC]    Updating last_login timestamp...
[30-Sep-2026 12:31:58 UTC] ✅ LOGIN SUCCESSFUL
[30-Sep-2026 12:32:03 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 12:32:03 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 12:40:29 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 12:40:29 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 12:41:52 UTC] 🔐 LOGIN API: Incoming request
[30-Sep-2026 12:41:52 UTC]    Sanitized Email: admin@school.com
[30-Sep-2026 12:41:52 UTC]    Executing query to find user by email
[30-Sep-2026 12:41:52 UTC] ✅ User found: School Admin
[30-Sep-2026 12:41:52 UTC]    User ID: 1
[30-Sep-2026 12:41:52 UTC]    Role: admin
[30-Sep-2026 12:41:52 UTC]    Verifying password...
[30-Sep-2026 12:41:52 UTC] ❌ Password verification failed for user: admin@school.com
[30-Sep-2026 12:41:56 UTC] 🔐 LOGIN API: Incoming request
[30-Sep-2026 12:41:56 UTC]    Sanitized Email: admin@school.com
[30-Sep-2026 12:41:56 UTC]    Executing query to find user by email
[30-Sep-2026 12:41:56 UTC] ✅ User found: School Admin
[30-Sep-2026 12:41:56 UTC]    User ID: 1
[30-Sep-2026 12:41:56 UTC]    Role: admin
[30-Sep-2026 12:41:56 UTC]    Verifying password...
[30-Sep-2026 12:41:56 UTC]    ✅ Password verified as PLAIN TEXT
[30-Sep-2026 12:41:56 UTC] ✅ Password verified successfully
[30-Sep-2026 12:41:56 UTC]    Normalized teacher_role: mentor
[30-Sep-2026 12:41:56 UTC]    Updating last_login timestamp...
[30-Sep-2026 12:41:56 UTC] ✅ LOGIN SUCCESSFUL
[30-Sep-2026 12:42:02 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 12:42:02 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[30-Sep-2026 12:42:02 UTC] No class_id found - will fetch all announcements
[30-Sep-2026 12:42:02 UTC] ✅ Fetched 0 announcements
[30-Sep-2026 12:42:02 UTC] ✅ Total announcements: 0
[30-Sep-2026 12:42:02 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 12:57:54 UTC] 🔐 LOGIN API: Incoming request
[30-Sep-2026 12:57:54 UTC]    Sanitized Email: admin@admin.com
[30-Sep-2026 12:57:54 UTC]    Executing query to find user by email
[30-Sep-2026 12:57:54 UTC] ❌ User not found: admin@admin.com
[30-Sep-2026 12:58:11 UTC] 🔐 LOGIN API: Incoming request
[30-Sep-2026 12:58:11 UTC]    Sanitized Email: admin@school.com
[30-Sep-2026 12:58:11 UTC]    Executing query to find user by email
[30-Sep-2026 12:58:11 UTC] ✅ User found: School Admin
[30-Sep-2026 12:58:11 UTC]    User ID: 1
[30-Sep-2026 12:58:11 UTC]    Role: admin
[30-Sep-2026 12:58:11 UTC]    Verifying password...
[30-Sep-2026 12:58:11 UTC] ❌ Password verification failed for user: admin@school.com
[30-Sep-2026 12:58:23 UTC] 🔐 LOGIN API: Incoming request
[30-Sep-2026 12:58:23 UTC]    Sanitized Email: admin@school.com
[30-Sep-2026 12:58:23 UTC]    Executing query to find user by email
[30-Sep-2026 12:58:23 UTC] ✅ User found: School Admin
[30-Sep-2026 12:58:23 UTC]    User ID: 1
[30-Sep-2026 12:58:23 UTC]    Role: admin
[30-Sep-2026 12:58:23 UTC]    Verifying password...
[30-Sep-2026 12:58:23 UTC]    ✅ Password verified as PLAIN TEXT
[30-Sep-2026 12:58:23 UTC] ✅ Password verified successfully
[30-Sep-2026 12:58:23 UTC]    Normalized teacher_role: mentor
[30-Sep-2026 12:58:23 UTC]    Updating last_login timestamp...
[30-Sep-2026 12:58:23 UTC] ✅ LOGIN SUCCESSFUL
[30-Sep-2026 12:58:26 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[30-Sep-2026 12:58:26 UTC] No class_id found - will fetch all announcements
[30-Sep-2026 12:58:26 UTC] ✅ Fetched 0 announcements
[30-Sep-2026 12:58:26 UTC] ✅ Total announcements: 0
[30-Sep-2026 12:58:26 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 12:58:26 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 12:58:27 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 12:58:27 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 12:58:53 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 12:58:53 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 12:58:58 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 12:58:58 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 13:02:25 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 13:02:25 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 13:04:09 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 13:04:09 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 13:14:31 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 13:14:31 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 13:19:37 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 13:19:37 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 13:21:06 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 13:21:06 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 13:21:36 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 13:21:36 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 13:21:42 UTC] 🔐 LOGIN API: Incoming request
[30-Sep-2026 13:21:42 UTC]    Sanitized Email: admin@school.com
[30-Sep-2026 13:21:42 UTC]    Executing query to find user by email
[30-Sep-2026 13:21:42 UTC] ✅ User found: School Admin
[30-Sep-2026 13:21:42 UTC]    User ID: 1
[30-Sep-2026 13:21:42 UTC]    Role: admin
[30-Sep-2026 13:21:42 UTC]    Verifying password...
[30-Sep-2026 13:21:42 UTC]    ✅ Password verified as PLAIN TEXT
[30-Sep-2026 13:21:42 UTC] ✅ Password verified successfully
[30-Sep-2026 13:21:42 UTC]    Normalized teacher_role: mentor
[30-Sep-2026 13:21:42 UTC]    Updating last_login timestamp...
[30-Sep-2026 13:21:42 UTC] ✅ LOGIN SUCCESSFUL
[30-Sep-2026 13:21:43 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[30-Sep-2026 13:21:43 UTC] No class_id found - will fetch all announcements
[30-Sep-2026 13:21:43 UTC] ✅ Fetched 0 announcements
[30-Sep-2026 13:21:43 UTC] ✅ Total announcements: 0
[30-Sep-2026 13:21:43 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 13:21:43 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 13:28:00 UTC] 🔐 LOGIN API: Incoming request
[30-Sep-2026 13:28:00 UTC]    Sanitized Email: admin@school.com
[30-Sep-2026 13:28:00 UTC]    Executing query to find user by email
[30-Sep-2026 13:28:00 UTC] ✅ User found: School Admin
[30-Sep-2026 13:28:00 UTC]    User ID: 1
[30-Sep-2026 13:28:00 UTC]    Role: admin
[30-Sep-2026 13:28:00 UTC]    Verifying password...
[30-Sep-2026 13:28:00 UTC]    ✅ Password verified as PLAIN TEXT
[30-Sep-2026 13:28:00 UTC] ✅ Password verified successfully
[30-Sep-2026 13:28:00 UTC]    Normalized teacher_role: mentor
[30-Sep-2026 13:28:00 UTC]    Updating last_login timestamp...
[30-Sep-2026 13:28:00 UTC] ✅ LOGIN SUCCESSFUL
[30-Sep-2026 13:28:02 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 13:28:02 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 13:28:02 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[30-Sep-2026 13:28:02 UTC] No class_id found - will fetch all announcements
[30-Sep-2026 13:28:02 UTC] ✅ Fetched 0 announcements
[30-Sep-2026 13:28:02 UTC] ✅ Total announcements: 0
[30-Sep-2026 13:28:03 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 13:28:03 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 13:32:01 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 13:32:01 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 13:33:31 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 13:33:31 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 13:34:02 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 13:34:02 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 13:36:29 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 13:36:29 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 15:00:23 UTC] 🔐 LOGIN API: Incoming request
[30-Sep-2026 15:00:23 UTC]    Sanitized Email: accountant@school.com
[30-Sep-2026 15:00:23 UTC]    Executing query to find user by email
[30-Sep-2026 15:00:23 UTC] ✅ User found: bursary staff
[30-Sep-2026 15:00:23 UTC]    User ID: 7
[30-Sep-2026 15:00:23 UTC]    Role: bursar
[30-Sep-2026 15:00:23 UTC]    Verifying password...
[30-Sep-2026 15:00:23 UTC]    ✅ Password verified as PLAIN TEXT
[30-Sep-2026 15:00:23 UTC] ✅ Password verified successfully
[30-Sep-2026 15:00:23 UTC]    Updating last_login timestamp...
[30-Sep-2026 15:00:23 UTC] ✅ LOGIN SUCCESSFUL
[30-Sep-2026 15:00:31 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 15:00:31 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 15:53:22 UTC] 🔐 LOGIN API: Incoming request
[30-Sep-2026 15:53:22 UTC]    Sanitized Email: accountant@school.com
[30-Sep-2026 15:53:22 UTC]    Executing query to find user by email
[30-Sep-2026 15:53:22 UTC] ✅ User found: bursary staff
[30-Sep-2026 15:53:22 UTC]    User ID: 7
[30-Sep-2026 15:53:22 UTC]    Role: bursar
[30-Sep-2026 15:53:22 UTC]    Verifying password...
[30-Sep-2026 15:53:22 UTC]    ✅ Password verified as PLAIN TEXT
[30-Sep-2026 15:53:22 UTC] ✅ Password verified successfully
[30-Sep-2026 15:53:22 UTC]    Updating last_login timestamp...
[30-Sep-2026 15:53:22 UTC] ✅ LOGIN SUCCESSFUL
[30-Sep-2026 15:53:23 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 15:53:23 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 16:31:15 UTC] 🔐 LOGIN API: Incoming request
[30-Sep-2026 16:31:15 UTC]    Sanitized Email: admin@school.com
[30-Sep-2026 16:31:15 UTC]    Executing query to find user by email
[30-Sep-2026 16:31:15 UTC] ✅ User found: School Admin
[30-Sep-2026 16:31:15 UTC]    User ID: 1
[30-Sep-2026 16:31:15 UTC]    Role: admin
[30-Sep-2026 16:31:15 UTC]    Verifying password...
[30-Sep-2026 16:31:15 UTC]    ✅ Password verified as PLAIN TEXT
[30-Sep-2026 16:31:15 UTC] ✅ Password verified successfully
[30-Sep-2026 16:31:15 UTC]    Normalized teacher_role: mentor
[30-Sep-2026 16:31:15 UTC]    Updating last_login timestamp...
[30-Sep-2026 16:31:15 UTC] ✅ LOGIN SUCCESSFUL
[30-Sep-2026 16:31:16 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 16:31:16 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 16:31:16 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[30-Sep-2026 16:31:16 UTC] No class_id found - will fetch all announcements
[30-Sep-2026 16:31:16 UTC] 🔐 LOGIN API: Incoming request
[30-Sep-2026 16:31:16 UTC]    Sanitized Email: admin@school.com
[30-Sep-2026 16:31:16 UTC]    Executing query to find user by email
[30-Sep-2026 16:31:16 UTC] ✅ User found: School Admin
[30-Sep-2026 16:31:16 UTC]    User ID: 1
[30-Sep-2026 16:31:16 UTC]    Role: admin
[30-Sep-2026 16:31:16 UTC]    Verifying password...
[30-Sep-2026 16:31:16 UTC] ✅ Fetched 0 announcements
[30-Sep-2026 16:31:16 UTC]    ✅ Password verified as PLAIN TEXT
[30-Sep-2026 16:31:16 UTC] ✅ Password verified successfully
[30-Sep-2026 16:31:16 UTC]    Normalized teacher_role: mentor
[30-Sep-2026 16:31:16 UTC] ✅ Total announcements: 0
[30-Sep-2026 16:31:16 UTC]    Updating last_login timestamp...
[30-Sep-2026 16:31:16 UTC] ✅ LOGIN SUCCESSFUL
[30-Sep-2026 16:31:18 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 16:31:18 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[30-Sep-2026 16:31:18 UTC] No class_id found - will fetch all announcements
[30-Sep-2026 16:31:18 UTC] ✅ Fetched 0 announcements
[30-Sep-2026 16:31:18 UTC] ✅ Total announcements: 0
[30-Sep-2026 16:31:18 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 16:31:18 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 16:31:18 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 16:31:20 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 16:31:20 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 16:34:57 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 16:34:57 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 16:51:24 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 16:51:24 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[30-Sep-2026 16:51:24 UTC] No class_id found - will fetch all announcements
[30-Sep-2026 16:51:24 UTC] ✅ Fetched 0 announcements
[30-Sep-2026 16:51:24 UTC] ✅ Total announcements: 0
[30-Sep-2026 16:51:24 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 16:51:25 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 16:51:25 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 16:53:05 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 16:53:05 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 16:53:05 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[30-Sep-2026 16:53:05 UTC] No class_id found - will fetch all announcements
[30-Sep-2026 16:53:05 UTC] ✅ Fetched 0 announcements
[30-Sep-2026 16:53:05 UTC] ✅ Total announcements: 0
[30-Sep-2026 16:53:06 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 16:53:06 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 16:55:58 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 16:55:58 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 17:27:34 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[30-Sep-2026 17:27:34 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 17:27:34 UTC] No class_id found - will fetch all announcements
[30-Sep-2026 17:27:34 UTC] ✅ Fetched 0 announcements
[30-Sep-2026 17:27:34 UTC] ✅ Total announcements: 0
[30-Sep-2026 17:27:34 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 17:27:35 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 17:27:35 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 17:27:47 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 17:27:47 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 17:34:36 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 17:34:36 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 17:34:36 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[30-Sep-2026 17:34:36 UTC] No class_id found - will fetch all announcements
[30-Sep-2026 17:34:36 UTC] ✅ Fetched 0 announcements
[30-Sep-2026 17:34:36 UTC] ✅ Total announcements: 0
[30-Sep-2026 17:34:36 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 17:34:36 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 17:34:55 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 17:34:55 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 17:35:08 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 17:35:08 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 17:39:25 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 17:39:25 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 17:43:48 UTC] 🔐 LOGIN API: Incoming request
[30-Sep-2026 17:43:48 UTC]    Sanitized Email: admin@school.com
[30-Sep-2026 17:43:48 UTC]    Executing query to find user by email
[30-Sep-2026 17:43:48 UTC] ✅ User found: School Admin
[30-Sep-2026 17:43:48 UTC]    User ID: 1
[30-Sep-2026 17:43:48 UTC]    Role: admin
[30-Sep-2026 17:43:48 UTC]    Verifying password...
[30-Sep-2026 17:43:48 UTC]    ✅ Password verified as PLAIN TEXT
[30-Sep-2026 17:43:48 UTC] ✅ Password verified successfully
[30-Sep-2026 17:43:48 UTC]    Normalized teacher_role: mentor
[30-Sep-2026 17:43:48 UTC]    Updating last_login timestamp...
[30-Sep-2026 17:43:48 UTC] ✅ LOGIN SUCCESSFUL
[30-Sep-2026 17:43:50 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[30-Sep-2026 17:43:50 UTC] No class_id found - will fetch all announcements
[30-Sep-2026 17:43:50 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 17:43:50 UTC] ✅ Fetched 0 announcements
[30-Sep-2026 17:43:50 UTC] ✅ Total announcements: 0
[30-Sep-2026 17:43:50 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 17:43:50 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 17:43:50 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 17:44:10 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 17:44:10 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 18:21:01 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 18:21:01 UTC] ✅ STUDENT GET: Found 386 students
[30-Sep-2026 18:21:01 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[30-Sep-2026 18:21:01 UTC] No class_id found - will fetch all announcements
[30-Sep-2026 18:21:01 UTC] ✅ Fetched 0 announcements
[30-Sep-2026 18:21:01 UTC] ✅ Total announcements: 0
[30-Sep-2026 18:21:02 UTC] 📚 STUDENT GET: Fetching all students
[30-Sep-2026 18:21:02 UTC] ✅ STUDENT GET: Found 386 students
[01-Oct-2026 00:21:19 UTC] 📚 STUDENT GET: Fetching all students
[01-Oct-2026 00:21:19 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[01-Oct-2026 00:21:19 UTC] No class_id found - will fetch all announcements
[01-Oct-2026 00:21:19 UTC] ✅ Fetched 0 announcements
[01-Oct-2026 00:21:19 UTC] ✅ Total announcements: 0
[01-Oct-2026 00:21:19 UTC] ✅ STUDENT GET: Found 386 students
[01-Oct-2026 00:21:20 UTC] 📚 STUDENT GET: Fetching all students
[01-Oct-2026 00:21:20 UTC] ✅ STUDENT GET: Found 386 students
[01-Oct-2026 07:08:17 UTC] 📚 STUDENT GET: Fetching all students
[01-Oct-2026 07:08:17 UTC] ✅ STUDENT GET: Found 386 students
[01-Oct-2026 12:34:41 UTC] 📚 STUDENT GET: Fetching all students
[01-Oct-2026 12:34:41 UTC] ✅ STUDENT GET: Found 386 students
[01-Oct-2026 12:34:41 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[01-Oct-2026 12:34:41 UTC] No class_id found - will fetch all announcements
[01-Oct-2026 12:34:41 UTC] ✅ Fetched 0 announcements
[01-Oct-2026 12:34:41 UTC] ✅ Total announcements: 0
[01-Oct-2026 12:34:41 UTC] 📚 STUDENT GET: Fetching all students
[01-Oct-2026 12:34:41 UTC] ✅ STUDENT GET: Found 386 students
[01-Oct-2026 19:38:24 UTC] 🔐 LOGIN API: Incoming request
[01-Oct-2026 19:38:24 UTC]    Sanitized Email: admin@school.com
[01-Oct-2026 19:38:24 UTC]    Executing query to find user by email
[01-Oct-2026 19:38:24 UTC] ✅ User found: School Admin
[01-Oct-2026 19:38:24 UTC]    User ID: 1
[01-Oct-2026 19:38:24 UTC]    Role: admin
[01-Oct-2026 19:38:24 UTC]    Verifying password...
[01-Oct-2026 19:38:24 UTC]    ✅ Password verified as PLAIN TEXT
[01-Oct-2026 19:38:24 UTC] ✅ Password verified successfully
[01-Oct-2026 19:38:24 UTC]    Normalized teacher_role: mentor
[01-Oct-2026 19:38:24 UTC]    Updating last_login timestamp...
[01-Oct-2026 19:38:24 UTC] ✅ LOGIN SUCCESSFUL
[01-Oct-2026 19:38:26 UTC] 📚 STUDENT GET: Fetching all students
[01-Oct-2026 19:38:26 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[01-Oct-2026 19:38:26 UTC] No class_id found - will fetch all announcements
[01-Oct-2026 19:38:26 UTC] ✅ Fetched 0 announcements
[01-Oct-2026 19:38:26 UTC] ✅ Total announcements: 0
[01-Oct-2026 19:38:26 UTC] ✅ STUDENT GET: Found 386 students
[01-Oct-2026 19:38:27 UTC] 📚 STUDENT GET: Fetching all students
[01-Oct-2026 19:38:27 UTC] ✅ STUDENT GET: Found 386 students
[01-Oct-2026 19:38:29 UTC] 📚 STUDENT GET: Fetching all students
[01-Oct-2026 19:38:29 UTC] ✅ STUDENT GET: Found 386 students
[01-Oct-2026 19:38:35 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[01-Oct-2026 19:38:35 UTC] No class_id found - will fetch all announcements
[01-Oct-2026 19:38:35 UTC] ✅ Fetched 0 announcements
[01-Oct-2026 19:38:35 UTC] ✅ Total announcements: 0
[01-Oct-2026 19:38:35 UTC] 📚 STUDENT GET: Fetching all students
[01-Oct-2026 19:38:35 UTC] ✅ STUDENT GET: Found 386 students
[01-Oct-2026 19:38:35 UTC] 📚 STUDENT GET: Fetching all students
[01-Oct-2026 19:38:35 UTC] ✅ STUDENT GET: Found 386 students
[01-Oct-2026 19:41:55 UTC] 🔐 LOGIN API: Incoming request
[01-Oct-2026 19:41:55 UTC]    Sanitized Email: admin@school.com
[01-Oct-2026 19:41:55 UTC]    Executing query to find user by email
[01-Oct-2026 19:41:55 UTC] ✅ User found: School Admin
[01-Oct-2026 19:41:55 UTC]    User ID: 1
[01-Oct-2026 19:41:55 UTC]    Role: admin
[01-Oct-2026 19:41:55 UTC]    Verifying password...
[01-Oct-2026 19:41:55 UTC]    ✅ Password verified as PLAIN TEXT
[01-Oct-2026 19:41:55 UTC] ✅ Password verified successfully
[01-Oct-2026 19:41:55 UTC]    Normalized teacher_role: mentor
[01-Oct-2026 19:41:55 UTC]    Updating last_login timestamp...
[01-Oct-2026 19:41:55 UTC] ✅ LOGIN SUCCESSFUL
[01-Oct-2026 19:42:00 UTC] 📚 STUDENT GET: Fetching all students
[01-Oct-2026 19:42:00 UTC] ✅ STUDENT GET: Found 386 students
[01-Oct-2026 19:42:00 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[01-Oct-2026 19:42:00 UTC] No class_id found - will fetch all announcements
[01-Oct-2026 19:42:00 UTC] ✅ Fetched 0 announcements
[01-Oct-2026 19:42:00 UTC] ✅ Total announcements: 0
[01-Oct-2026 19:42:00 UTC] 📚 STUDENT GET: Fetching all students
[01-Oct-2026 19:42:00 UTC] ✅ STUDENT GET: Found 386 students
[01-Oct-2026 19:42:30 UTC] 📚 STUDENT GET: Fetching all students
[01-Oct-2026 19:42:30 UTC] ✅ STUDENT GET: Found 386 students
[01-Oct-2026 19:43:13 UTC] 📚 STUDENT GET: Fetching all students
[01-Oct-2026 19:43:13 UTC] ✅ STUDENT GET: Found 386 students
[01-Oct-2026 19:45:59 UTC] 📚 STUDENT GET: Fetching all students
[01-Oct-2026 19:45:59 UTC] ✅ STUDENT GET: Found 386 students
[01-Oct-2026 19:52:08 UTC] 📚 STUDENT GET: Fetching all students
[01-Oct-2026 19:52:08 UTC] ✅ STUDENT GET: Found 386 students
[01-Oct-2026 19:53:17 UTC] 🔐 LOGIN API: Incoming request
[01-Oct-2026 19:53:17 UTC]    Sanitized Email: admin@school.com
[01-Oct-2026 19:53:17 UTC]    Executing query to find user by email
[01-Oct-2026 19:53:17 UTC] ✅ User found: School Admin
[01-Oct-2026 19:53:17 UTC]    User ID: 1
[01-Oct-2026 19:53:17 UTC]    Role: admin
[01-Oct-2026 19:53:17 UTC]    Verifying password...
[01-Oct-2026 19:53:17 UTC]    ✅ Password verified as PLAIN TEXT
[01-Oct-2026 19:53:17 UTC] ✅ Password verified successfully
[01-Oct-2026 19:53:17 UTC]    Normalized teacher_role: mentor
[01-Oct-2026 19:53:17 UTC]    Updating last_login timestamp...
[01-Oct-2026 19:53:17 UTC] ✅ LOGIN SUCCESSFUL
[01-Oct-2026 19:53:52 UTC] 🔐 LOGIN API: Incoming request
[01-Oct-2026 19:53:52 UTC]    Sanitized Email: admin@school.com
[01-Oct-2026 19:53:52 UTC]    Executing query to find user by email
[01-Oct-2026 19:53:52 UTC] ✅ User found: School Admin
[01-Oct-2026 19:53:52 UTC]    User ID: 1
[01-Oct-2026 19:53:52 UTC]    Role: admin
[01-Oct-2026 19:53:52 UTC]    Verifying password...
[01-Oct-2026 19:53:52 UTC]    ✅ Password verified as PLAIN TEXT
[01-Oct-2026 19:53:52 UTC] ✅ Password verified successfully
[01-Oct-2026 19:53:52 UTC]    Normalized teacher_role: mentor
[01-Oct-2026 19:53:52 UTC]    Updating last_login timestamp...
[01-Oct-2026 19:53:52 UTC] ✅ LOGIN SUCCESSFUL
[01-Oct-2026 19:54:25 UTC] 📚 STUDENT GET: Fetching all students
[01-Oct-2026 19:54:25 UTC] ✅ STUDENT GET: Found 386 students
[01-Oct-2026 19:54:25 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[01-Oct-2026 19:54:25 UTC] No class_id found - will fetch all announcements
[01-Oct-2026 19:54:25 UTC] ✅ Fetched 0 announcements
[01-Oct-2026 19:54:25 UTC] ✅ Total announcements: 0
[01-Oct-2026 19:54:28 UTC] 📚 STUDENT GET: Fetching all students
[01-Oct-2026 19:54:28 UTC] ✅ STUDENT GET: Found 386 students
[01-Oct-2026 20:04:06 UTC] 📚 STUDENT GET: Fetching all students
[01-Oct-2026 20:04:06 UTC] ✅ STUDENT GET: Found 386 students
[01-Oct-2026 20:10:40 UTC] 📚 STUDENT GET: Fetching all students
[01-Oct-2026 20:10:40 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[01-Oct-2026 20:10:40 UTC] No class_id found - will fetch all announcements
[01-Oct-2026 20:10:40 UTC] ✅ Fetched 0 announcements
[01-Oct-2026 20:10:40 UTC] ✅ Total announcements: 0
[01-Oct-2026 20:10:40 UTC] ✅ STUDENT GET: Found 386 students
[01-Oct-2026 20:10:41 UTC] 📚 STUDENT GET: Fetching all students
[01-Oct-2026 20:10:41 UTC] ✅ STUDENT GET: Found 386 students
[01-Oct-2026 20:11:40 UTC] 📚 STUDENT GET: Fetching all students
[01-Oct-2026 20:11:40 UTC] ✅ STUDENT GET: Found 386 students
[01-Oct-2026 20:16:52 UTC] 📚 STUDENT GET: Fetching all students
[01-Oct-2026 20:16:52 UTC] ✅ STUDENT GET: Found 386 students
[01-Oct-2026 20:27:08 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[01-Oct-2026 20:27:08 UTC] No class_id found - will fetch all announcements
[01-Oct-2026 20:27:08 UTC] ✅ Fetched 0 announcements
[01-Oct-2026 20:27:08 UTC] ✅ Total announcements: 0
[01-Oct-2026 20:27:08 UTC] 📚 STUDENT GET: Fetching all students
[01-Oct-2026 20:27:08 UTC] ✅ STUDENT GET: Found 386 students
[01-Oct-2026 20:27:08 UTC] 📚 STUDENT GET: Fetching all students
[01-Oct-2026 20:27:08 UTC] ✅ STUDENT GET: Found 386 students
[01-Oct-2026 22:09:45 UTC] 🔐 LOGIN API: Incoming request
[01-Oct-2026 22:09:45 UTC]    Sanitized Email: admin@school.com
[01-Oct-2026 22:09:45 UTC]    Executing query to find user by email
[01-Oct-2026 22:09:45 UTC] ✅ User found: School Admin
[01-Oct-2026 22:09:45 UTC]    User ID: 1
[01-Oct-2026 22:09:45 UTC]    Role: admin
[01-Oct-2026 22:09:45 UTC]    Verifying password...
[01-Oct-2026 22:09:45 UTC]    ✅ Password verified as PLAIN TEXT
[01-Oct-2026 22:09:45 UTC] ✅ Password verified successfully
[01-Oct-2026 22:09:45 UTC]    Normalized teacher_role: mentor
[01-Oct-2026 22:09:45 UTC]    Updating last_login timestamp...
[01-Oct-2026 22:09:45 UTC] ✅ LOGIN SUCCESSFUL
[01-Oct-2026 22:09:54 UTC] 📚 STUDENT GET: Fetching all students
[01-Oct-2026 22:09:54 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[01-Oct-2026 22:09:54 UTC] No class_id found - will fetch all announcements
[01-Oct-2026 22:09:54 UTC] ✅ Fetched 0 announcements
[01-Oct-2026 22:09:54 UTC] ✅ Total announcements: 0
[01-Oct-2026 22:09:54 UTC] ✅ STUDENT GET: Found 386 students
[01-Oct-2026 22:09:54 UTC] 📚 STUDENT GET: Fetching all students
[01-Oct-2026 22:09:54 UTC] ✅ STUDENT GET: Found 386 students
[01-Oct-2026 22:25:09 UTC] 📚 STUDENT GET: Fetching all students
[01-Oct-2026 22:25:09 UTC] ✅ STUDENT GET: Found 386 students
[01-Oct-2026 22:25:16 UTC] DEBUG_STATS [TERM] student=0 class=2 session=4 → Rows: 0
[01-Oct-2026 22:27:31 UTC] 📚 STUDENT GET: Fetching all students
[01-Oct-2026 22:27:31 UTC] ✅ STUDENT GET: Found 386 students
[01-Oct-2026 22:27:42 UTC] DEBUG_STATS [TERM] student=0 class=2 session=4 → Rows: 0
