[16-Aug-2026 01:03:07 UTC] PHP Fatal error:  Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: mixed named and positional parameters in /home/leotwcun/leotrix.leotrix-ai.com/Backend_school_portal/api/bulk_generate_results.php:163
Stack trace:
#0 /home/leotwcun/leotrix.leotrix-ai.com/Backend_school_portal/api/bulk_generate_results.php(163): PDOStatement->execute()
#1 {main}
  thrown in /home/leotwcun/leotrix.leotrix-ai.com/Backend_school_portal/api/bulk_generate_results.php on line 163
[02-Oct-2026 08:15:21 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[02-Oct-2026 08:15:21 UTC] 📚 STUDENT GET: Fetching all students
[02-Oct-2026 08:15:21 UTC] No class_id found - will fetch all announcements
[02-Oct-2026 08:15:21 UTC] ✅ Fetched 0 announcements
[02-Oct-2026 08:15:21 UTC] ✅ Total announcements: 0
[02-Oct-2026 08:15:21 UTC] ✅ STUDENT GET: Found 386 students
[02-Oct-2026 08:15:22 UTC] 📚 STUDENT GET: Fetching all students
[02-Oct-2026 08:15:22 UTC] ✅ STUDENT GET: Found 386 students
[02-Oct-2026 08:19:46 UTC] 📚 STUDENT GET: Fetching all students
[02-Oct-2026 08:19:46 UTC] ✅ STUDENT GET: Found 386 students
[02-Oct-2026 08:20:48 UTC] DEBUG_STATS [TERM] student=0 class=7 session=4 → Rows: 780
[02-Oct-2026 08:20:57 UTC] DEBUG_STATS [TERM] student=0 class=7 session=4 → Rows: 780
[02-Oct-2026 08:20:57 UTC] DEBUG_STATS [TERM] student=0 class=4 session=4 → Rows: 433
[02-Oct-2026 08:24:11 UTC] 📚 STUDENT GET: Fetching all students
[02-Oct-2026 08:24:11 UTC] ✅ STUDENT GET: Found 386 students
[02-Oct-2026 08:24:28 UTC] DEBUG_STATS [TERM] student=0 class=4 session=4 → Rows: 433
[02-Oct-2026 08:25:08 UTC] DEBUG_STATS [TERM] student=0 class=7 session=4 → Rows: 780
[02-Oct-2026 09:06:35 UTC] 📚 STUDENT GET: Fetching all students
[02-Oct-2026 09:06:35 UTC] ✅ STUDENT GET: Found 386 students
[02-Oct-2026 09:06:35 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[02-Oct-2026 09:06:35 UTC] No class_id found - will fetch all announcements
[02-Oct-2026 09:06:35 UTC] ✅ Fetched 0 announcements
[02-Oct-2026 09:06:35 UTC] ✅ Total announcements: 0
[02-Oct-2026 09:06:35 UTC] 📚 STUDENT GET: Fetching all students
[02-Oct-2026 09:06:35 UTC] ✅ STUDENT GET: Found 386 students
[02-Oct-2026 09:07:44 UTC] DEBUG_STATS [TERM] student=0 class=7 session=4 → Rows: 780
[02-Oct-2026 09:08:35 UTC] 📚 STUDENT GET: Fetching all students
[02-Oct-2026 09:08:35 UTC] ✅ STUDENT GET: Found 386 students
[02-Oct-2026 09:09:35 UTC] DEBUG_STATS [TERM] student=0 class=7 session=4 → Rows: 780
[02-Oct-2026 09:10:03 UTC] 🔐 LOGIN API: Incoming request
[02-Oct-2026 09:10:03 UTC]    Sanitized Email: jude@gscis.com
[02-Oct-2026 09:10:03 UTC]    Executing query to find user by email
[02-Oct-2026 09:10:03 UTC] ✅ User found: Mr Jude
[02-Oct-2026 09:10:03 UTC]    User ID: 4
[02-Oct-2026 09:10:03 UTC]    Role: teacher
[02-Oct-2026 09:10:03 UTC]    Verifying password...
[02-Oct-2026 09:10:03 UTC]    ✅ Password verified as PLAIN TEXT
[02-Oct-2026 09:10:03 UTC] ✅ Password verified successfully
[02-Oct-2026 09:10:03 UTC]    Normalized teacher_role: form_teacher
[02-Oct-2026 09:10:03 UTC]    Fetching active academic session...
[02-Oct-2026 09:10:03 UTC]    Active session ID: 4
[02-Oct-2026 09:10:03 UTC]    Fetching assigned subjects...
[02-Oct-2026 09:10:03 UTC]    Found 17 assigned subject(s)
[02-Oct-2026 09:10:03 UTC]    Updating last_login timestamp...
[02-Oct-2026 09:10:03 UTC] ✅ LOGIN SUCCESSFUL
[02-Oct-2026 09:10:07 UTC] 📚 STUDENT GET: Fetching students for class_id=4
[02-Oct-2026 09:10:07 UTC] ✅ STUDENT GET: Found 27 students
[02-Oct-2026 09:10:12 UTC] DEBUG_STATS [TERM] student=0 class=4 session=4 → Rows: 433
[02-Oct-2026 09:10:46 UTC] 🔐 LOGIN API: Incoming request
[02-Oct-2026 09:10:46 UTC]    Sanitized Email: admin@school.com
[02-Oct-2026 09:10:46 UTC]    Executing query to find user by email
[02-Oct-2026 09:10:46 UTC] ✅ User found: School Admin
[02-Oct-2026 09:10:46 UTC]    User ID: 1
[02-Oct-2026 09:10:46 UTC]    Role: admin
[02-Oct-2026 09:10:46 UTC]    Verifying password...
[02-Oct-2026 09:10:46 UTC]    ✅ Password verified as PLAIN TEXT
[02-Oct-2026 09:10:46 UTC] ✅ Password verified successfully
[02-Oct-2026 09:10:46 UTC]    Normalized teacher_role: mentor
[02-Oct-2026 09:10:46 UTC]    Updating last_login timestamp...
[02-Oct-2026 09:10:46 UTC] ✅ LOGIN SUCCESSFUL
[02-Oct-2026 09:10:48 UTC] 📚 STUDENT GET: Fetching all students
[02-Oct-2026 09:10:48 UTC] ✅ STUDENT GET: Found 386 students
[02-Oct-2026 09:17:07 UTC] 📚 STUDENT GET: Fetching all students
[02-Oct-2026 09:17:07 UTC] ✅ STUDENT GET: Found 386 students
[02-Oct-2026 09:17:20 UTC] DEBUG_STATS [TERM] student=0 class=4 session=4 → Rows: 433
[02-Oct-2026 09:18:03 UTC] DEBUG_STATS [TERM] student=0 class=7 session=4 → Rows: 780
[02-Oct-2026 09:18:56 UTC] 📚 STUDENT GET: Fetching all students
[02-Oct-2026 09:18:56 UTC] ✅ STUDENT GET: Found 386 students
[02-Oct-2026 09:19:02 UTC] DEBUG_STATS [TERM] student=0 class=4 session=4 → Rows: 433
[02-Oct-2026 09:19:49 UTC] DEBUG_STATS [TERM] student=0 class=7 session=4 → Rows: 780
[02-Oct-2026 09:19:57 UTC] DEBUG_STATS [TERM] student=0 class=7 session=4 → Rows: 780
[02-Oct-2026 09:24:40 UTC] 🔐 LOGIN API: Incoming request
[02-Oct-2026 09:24:40 UTC]    Sanitized Email: admin@school.com
[02-Oct-2026 09:24:40 UTC]    Executing query to find user by email
[02-Oct-2026 09:24:40 UTC] ✅ User found: School Admin
[02-Oct-2026 09:24:40 UTC]    User ID: 1
[02-Oct-2026 09:24:40 UTC]    Role: admin
[02-Oct-2026 09:24:40 UTC]    Verifying password...
[02-Oct-2026 09:24:40 UTC]    ✅ Password verified as PLAIN TEXT
[02-Oct-2026 09:24:40 UTC] ✅ Password verified successfully
[02-Oct-2026 09:24:40 UTC]    Normalized teacher_role: mentor
[02-Oct-2026 09:24:40 UTC]    Updating last_login timestamp...
[02-Oct-2026 09:24:40 UTC] ✅ LOGIN SUCCESSFUL
[02-Oct-2026 09:24:42 UTC] 📚 STUDENT GET: Fetching all students
[02-Oct-2026 09:24:42 UTC] ✅ STUDENT GET: Found 386 students
[02-Oct-2026 09:24:42 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[02-Oct-2026 09:24:42 UTC] No class_id found - will fetch all announcements
[02-Oct-2026 09:24:42 UTC] ✅ Fetched 0 announcements
[02-Oct-2026 09:24:42 UTC] ✅ Total announcements: 0
[02-Oct-2026 09:24:42 UTC] 📚 STUDENT GET: Fetching all students
[02-Oct-2026 09:24:42 UTC] ✅ STUDENT GET: Found 386 students
[02-Oct-2026 09:26:12 UTC] 📚 STUDENT GET: Fetching all students
[02-Oct-2026 09:26:12 UTC] ✅ STUDENT GET: Found 386 students
[02-Oct-2026 09:28:13 UTC] 📚 STUDENT GET: Fetching all students
[02-Oct-2026 09:28:13 UTC] ✅ STUDENT GET: Found 386 students
[02-Oct-2026 10:00:03 UTC] 🔐 LOGIN API: Incoming request
[02-Oct-2026 10:00:03 UTC]    Sanitized Email: admin@school.com
[02-Oct-2026 10:00:03 UTC]    Executing query to find user by email
[02-Oct-2026 10:00:03 UTC] ✅ User found: School Admin
[02-Oct-2026 10:00:03 UTC]    User ID: 1
[02-Oct-2026 10:00:03 UTC]    Role: admin
[02-Oct-2026 10:00:03 UTC]    Verifying password...
[02-Oct-2026 10:00:03 UTC]    ✅ Password verified as PLAIN TEXT
[02-Oct-2026 10:00:03 UTC] ✅ Password verified successfully
[02-Oct-2026 10:00:03 UTC]    Normalized teacher_role: mentor
[02-Oct-2026 10:00:03 UTC]    Updating last_login timestamp...
[02-Oct-2026 10:00:03 UTC] ✅ LOGIN SUCCESSFUL
[02-Oct-2026 10:00:06 UTC] 📚 STUDENT GET: Fetching all students
[02-Oct-2026 10:00:06 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[02-Oct-2026 10:00:06 UTC] No class_id found - will fetch all announcements
[02-Oct-2026 10:00:06 UTC] ✅ Fetched 0 announcements
[02-Oct-2026 10:00:06 UTC] ✅ Total announcements: 0
[02-Oct-2026 10:00:06 UTC] ✅ STUDENT GET: Found 386 students
[02-Oct-2026 10:00:06 UTC] 📚 STUDENT GET: Fetching all students
[02-Oct-2026 10:00:06 UTC] ✅ STUDENT GET: Found 386 students
[02-Oct-2026 10:00:36 UTC] 📚 STUDENT GET: Fetching all students
[02-Oct-2026 10:00:36 UTC] ✅ STUDENT GET: Found 386 students
[02-Oct-2026 10:00:47 UTC] DEBUG_STATS [TERM] student=0 class=4 session=4 → Rows: 433
[02-Oct-2026 10:01:42 UTC] DEBUG_STATS [TERM] student=0 class=7 session=4 → Rows: 780
[02-Oct-2026 10:05:08 UTC] 📚 STUDENT GET: Fetching all students
[02-Oct-2026 10:05:08 UTC] ✅ STUDENT GET: Found 386 students
[02-Oct-2026 10:06:06 UTC] DEBUG_STATS [TERM] student=0 class=6 session=4 → Rows: 473
[02-Oct-2026 10:06:31 UTC] DEBUG_STATS [TERM] student=0 class=7 session=4 → Rows: 780
[02-Oct-2026 10:11:05 UTC] 📚 STUDENT GET: Fetching all students
[02-Oct-2026 10:11:05 UTC] ✅ STUDENT GET: Found 386 students
[02-Oct-2026 10:12:22 UTC] DEBUG_STATS [TERM] student=0 class=7 session=4 → Rows: 780
[02-Oct-2026 10:35:15 UTC] 📚 STUDENT GET: Fetching all students
[02-Oct-2026 10:35:15 UTC] ✅ STUDENT GET: Found 386 students
[02-Oct-2026 10:36:21 UTC] DEBUG_STATS [TERM] student=0 class=7 session=4 → Rows: 780
[02-Oct-2026 10:36:23 UTC] DEBUG_STATS [TERM] student=0 class=4 session=4 → Rows: 433
[02-Oct-2026 10:44:56 UTC] 📚 STUDENT GET: Fetching all students
[02-Oct-2026 10:44:56 UTC] ✅ STUDENT GET: Found 386 students
[02-Oct-2026 10:44:58 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[02-Oct-2026 10:44:58 UTC] No class_id found - will fetch all announcements
[02-Oct-2026 10:44:58 UTC] ✅ Fetched 0 announcements
[02-Oct-2026 10:44:58 UTC] ✅ Total announcements: 0
[02-Oct-2026 10:44:58 UTC] 📚 STUDENT GET: Fetching all students
[02-Oct-2026 10:44:58 UTC] ✅ STUDENT GET: Found 386 students
[03-Oct-2026 05:38:45 UTC] 📚 STUDENT GET: Fetching all students
[03-Oct-2026 05:38:45 UTC] ✅ STUDENT GET: Found 386 students
[03-Oct-2026 05:38:45 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[03-Oct-2026 05:38:45 UTC] No class_id found - will fetch all announcements
[03-Oct-2026 05:38:45 UTC] ✅ Fetched 0 announcements
[03-Oct-2026 05:38:45 UTC] ✅ Total announcements: 0
[03-Oct-2026 05:38:46 UTC] 📚 STUDENT GET: Fetching all students
[03-Oct-2026 05:38:46 UTC] ✅ STUDENT GET: Found 386 students
[06-Oct-2026 14:11:54 UTC] 🔐 LOGIN API: Incoming request
[06-Oct-2026 14:11:54 UTC]    Sanitized Email: jude@gscis.com
[06-Oct-2026 14:11:54 UTC]    Executing query to find user by email
[06-Oct-2026 14:11:54 UTC] ✅ User found: Mr Jude
[06-Oct-2026 14:11:54 UTC]    User ID: 4
[06-Oct-2026 14:11:54 UTC]    Role: teacher
[06-Oct-2026 14:11:54 UTC]    Verifying password...
[06-Oct-2026 14:11:54 UTC]    ✅ Password verified as PLAIN TEXT
[06-Oct-2026 14:11:54 UTC] ✅ Password verified successfully
[06-Oct-2026 14:11:54 UTC]    Normalized teacher_role: form_teacher
[06-Oct-2026 14:11:54 UTC]    Fetching active academic session...
[06-Oct-2026 14:11:54 UTC]    Active session ID: 4
[06-Oct-2026 14:11:54 UTC]    Fetching assigned subjects...
[06-Oct-2026 14:11:54 UTC]    Found 17 assigned subject(s)
[06-Oct-2026 14:11:54 UTC]    Updating last_login timestamp...
[06-Oct-2026 14:11:54 UTC] ✅ LOGIN SUCCESSFUL
[06-Oct-2026 14:12:02 UTC] 🔐 LOGIN API: Incoming request
[06-Oct-2026 14:12:02 UTC]    Sanitized Email: admin@school.com
[06-Oct-2026 14:12:02 UTC]    Executing query to find user by email
[06-Oct-2026 14:12:02 UTC] ✅ User found: School Admin
[06-Oct-2026 14:12:02 UTC]    User ID: 1
[06-Oct-2026 14:12:02 UTC]    Role: admin
[06-Oct-2026 14:12:02 UTC]    Verifying password...
[06-Oct-2026 14:12:02 UTC]    ✅ Password verified as PLAIN TEXT
[06-Oct-2026 14:12:02 UTC] ✅ Password verified successfully
[06-Oct-2026 14:12:02 UTC]    Normalized teacher_role: mentor
[06-Oct-2026 14:12:02 UTC]    Updating last_login timestamp...
[06-Oct-2026 14:12:02 UTC] ✅ LOGIN SUCCESSFUL
[06-Oct-2026 14:12:03 UTC] 📚 STUDENT GET: Fetching all students
[06-Oct-2026 14:12:03 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[06-Oct-2026 14:12:03 UTC] No class_id found - will fetch all announcements
[06-Oct-2026 14:12:03 UTC] ✅ STUDENT GET: Found 386 students
[06-Oct-2026 14:12:03 UTC] ✅ Fetched 0 announcements
[06-Oct-2026 14:12:03 UTC] ✅ Total announcements: 0
[06-Oct-2026 14:12:03 UTC] 📚 STUDENT GET: Fetching all students
[06-Oct-2026 14:12:03 UTC] ✅ STUDENT GET: Found 386 students
[06-Oct-2026 14:15:37 UTC] 📚 STUDENT GET: Fetching all students
[06-Oct-2026 14:15:37 UTC] ✅ STUDENT GET: Found 387 students
[07-Oct-2026 09:13:59 UTC] 🔐 LOGIN API: Incoming request
[07-Oct-2026 09:13:59 UTC]    Sanitized Email: accountant@school.com
[07-Oct-2026 09:13:59 UTC]    Executing query to find user by email
[07-Oct-2026 09:13:59 UTC] ✅ User found: bursary staff
[07-Oct-2026 09:13:59 UTC]    User ID: 7
[07-Oct-2026 09:13:59 UTC]    Role: bursar
[07-Oct-2026 09:13:59 UTC]    Verifying password...
[07-Oct-2026 09:13:59 UTC] ❌ Password verification failed for user: accountant@school.com
[07-Oct-2026 09:14:24 UTC] 🔐 LOGIN API: Incoming request
[07-Oct-2026 09:14:24 UTC]    Sanitized Email: accountant@school.com
[07-Oct-2026 09:14:24 UTC]    Executing query to find user by email
[07-Oct-2026 09:14:24 UTC] ✅ User found: bursary staff
[07-Oct-2026 09:14:24 UTC]    User ID: 7
[07-Oct-2026 09:14:24 UTC]    Role: bursar
[07-Oct-2026 09:14:24 UTC]    Verifying password...
[07-Oct-2026 09:14:24 UTC]    ✅ Password verified as PLAIN TEXT
[07-Oct-2026 09:14:24 UTC] ✅ Password verified successfully
[07-Oct-2026 09:14:24 UTC]    Updating last_login timestamp...
[07-Oct-2026 09:14:24 UTC] ✅ LOGIN SUCCESSFUL
[07-Oct-2026 09:14:34 UTC] 📚 STUDENT GET: Fetching all students
[07-Oct-2026 09:14:34 UTC] ✅ STUDENT GET: Found 387 students
[08-Oct-2026 10:00:04 UTC] 🔐 LOGIN API: Incoming request
[08-Oct-2026 10:00:04 UTC]    Sanitized Email: admin@school.com
[08-Oct-2026 10:00:04 UTC]    Executing query to find user by email
[08-Oct-2026 10:00:04 UTC] ✅ User found: School Admin
[08-Oct-2026 10:00:04 UTC]    User ID: 1
[08-Oct-2026 10:00:04 UTC]    Role: admin
[08-Oct-2026 10:00:04 UTC]    Verifying password...
[08-Oct-2026 10:00:04 UTC]    ✅ Password verified as PLAIN TEXT
[08-Oct-2026 10:00:04 UTC] ✅ Password verified successfully
[08-Oct-2026 10:00:04 UTC]    Normalized teacher_role: mentor
[08-Oct-2026 10:00:04 UTC]    Updating last_login timestamp...
[08-Oct-2026 10:00:04 UTC] ✅ LOGIN SUCCESSFUL
[08-Oct-2026 10:00:08 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[08-Oct-2026 10:00:08 UTC] No class_id found - will fetch all announcements
[08-Oct-2026 10:00:08 UTC] ✅ Fetched 0 announcements
[08-Oct-2026 10:00:08 UTC] ✅ Total announcements: 0
[08-Oct-2026 10:00:08 UTC] 📚 STUDENT GET: Fetching all students
[08-Oct-2026 10:00:08 UTC] ✅ STUDENT GET: Found 387 students
[08-Oct-2026 10:00:08 UTC] 📚 STUDENT GET: Fetching all students
[08-Oct-2026 10:00:08 UTC] ✅ STUDENT GET: Found 387 students
[08-Oct-2026 10:00:14 UTC] 📚 STUDENT GET: Fetching all students
[08-Oct-2026 10:00:14 UTC] ✅ STUDENT GET: Found 387 students
[08-Oct-2026 10:23:30 UTC] 🔐 LOGIN API: Incoming request
[08-Oct-2026 10:23:30 UTC]    Sanitized Email: admin@school.com
[08-Oct-2026 10:23:30 UTC]    Executing query to find user by email
[08-Oct-2026 10:23:30 UTC] ✅ User found: School Admin
[08-Oct-2026 10:23:30 UTC]    User ID: 1
[08-Oct-2026 10:23:30 UTC]    Role: admin
[08-Oct-2026 10:23:30 UTC]    Verifying password...
[08-Oct-2026 10:23:30 UTC]    ✅ Password verified as PLAIN TEXT
[08-Oct-2026 10:23:30 UTC] ✅ Password verified successfully
[08-Oct-2026 10:23:30 UTC]    Normalized teacher_role: mentor
[08-Oct-2026 10:23:30 UTC]    Updating last_login timestamp...
[08-Oct-2026 10:23:30 UTC] ✅ LOGIN SUCCESSFUL
[08-Oct-2026 10:23:31 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[08-Oct-2026 10:23:31 UTC] No class_id found - will fetch all announcements
[08-Oct-2026 10:23:31 UTC] 📚 STUDENT GET: Fetching all students
[08-Oct-2026 10:23:31 UTC] ✅ Fetched 0 announcements
[08-Oct-2026 10:23:31 UTC] ✅ Total announcements: 0
[08-Oct-2026 10:23:31 UTC] ✅ STUDENT GET: Found 387 students
[08-Oct-2026 10:23:31 UTC] 📚 STUDENT GET: Fetching all students
[08-Oct-2026 10:23:31 UTC] ✅ STUDENT GET: Found 387 students
[08-Oct-2026 10:23:46 UTC] 📚 STUDENT GET: Fetching all students
[08-Oct-2026 10:23:46 UTC] ✅ STUDENT GET: Found 387 students
[09-Oct-2026 22:01:55 UTC] 🔐 LOGIN API: Incoming request
[09-Oct-2026 22:01:55 UTC]    Sanitized Email: admin@school.com
[09-Oct-2026 22:01:55 UTC]    Executing query to find user by email
[09-Oct-2026 22:01:55 UTC] ✅ User found: School Admin
[09-Oct-2026 22:01:55 UTC]    User ID: 1
[09-Oct-2026 22:01:55 UTC]    Role: admin
[09-Oct-2026 22:01:55 UTC]    Verifying password...
[09-Oct-2026 22:01:55 UTC]    ✅ Password verified as PLAIN TEXT
[09-Oct-2026 22:01:55 UTC] ✅ Password verified successfully
[09-Oct-2026 22:01:55 UTC]    Normalized teacher_role: mentor
[09-Oct-2026 22:01:55 UTC]    Updating last_login timestamp...
[09-Oct-2026 22:01:55 UTC] ✅ LOGIN SUCCESSFUL
[09-Oct-2026 22:01:57 UTC] 📚 STUDENT GET: Fetching all students
[09-Oct-2026 22:01:57 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[09-Oct-2026 22:01:57 UTC] No class_id found - will fetch all announcements
[09-Oct-2026 22:01:57 UTC] ✅ Fetched 0 announcements
[09-Oct-2026 22:01:57 UTC] ✅ Total announcements: 0
[09-Oct-2026 22:01:57 UTC] ✅ STUDENT GET: Found 387 students
[09-Oct-2026 22:01:57 UTC] 📚 STUDENT GET: Fetching all students
[09-Oct-2026 22:01:57 UTC] ✅ STUDENT GET: Found 387 students
[10-Oct-2026 04:48:44 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[10-Oct-2026 04:48:44 UTC] 📚 STUDENT GET: Fetching all students
[10-Oct-2026 04:48:44 UTC] No class_id found - will fetch all announcements
[10-Oct-2026 04:48:44 UTC] ✅ Fetched 0 announcements
[10-Oct-2026 04:48:44 UTC] ✅ Total announcements: 0
[10-Oct-2026 04:48:44 UTC] ✅ STUDENT GET: Found 387 students
[10-Oct-2026 04:48:44 UTC] 📚 STUDENT GET: Fetching all students
[10-Oct-2026 04:48:44 UTC] ✅ STUDENT GET: Found 387 students
[10-Oct-2026 04:48:47 UTC] 📚 STUDENT GET: Fetching all students
[10-Oct-2026 04:48:47 UTC] ✅ STUDENT GET: Found 387 students
[10-Oct-2026 08:24:45 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[10-Oct-2026 08:24:45 UTC] No class_id found - will fetch all announcements
[10-Oct-2026 08:24:45 UTC] ✅ Fetched 0 announcements
[10-Oct-2026 08:24:45 UTC] ✅ Total announcements: 0
[10-Oct-2026 08:24:45 UTC] 📚 STUDENT GET: Fetching all students
[10-Oct-2026 08:24:45 UTC] 📚 STUDENT GET: Fetching all students
[10-Oct-2026 08:24:45 UTC] ✅ STUDENT GET: Found 387 students
[10-Oct-2026 08:24:45 UTC] ✅ STUDENT GET: Found 387 students
[10-Oct-2026 08:33:41 UTC] 🔐 LOGIN API: Incoming request
[10-Oct-2026 08:33:41 UTC]    Sanitized Email: admin@school.com
[10-Oct-2026 08:33:41 UTC]    Executing query to find user by email
[10-Oct-2026 08:33:41 UTC] ✅ User found: School Admin
[10-Oct-2026 08:33:41 UTC]    User ID: 1
[10-Oct-2026 08:33:41 UTC]    Role: admin
[10-Oct-2026 08:33:41 UTC]    Verifying password...
[10-Oct-2026 08:33:41 UTC]    ✅ Password verified as PLAIN TEXT
[10-Oct-2026 08:33:41 UTC] ✅ Password verified successfully
[10-Oct-2026 08:33:41 UTC]    Normalized teacher_role: mentor
[10-Oct-2026 08:33:41 UTC]    Updating last_login timestamp...
[10-Oct-2026 08:33:41 UTC] ✅ LOGIN SUCCESSFUL
[10-Oct-2026 08:33:42 UTC] 📚 STUDENT GET: Fetching all students
[10-Oct-2026 08:33:42 UTC] ✅ STUDENT GET: Found 387 students
[10-Oct-2026 08:33:43 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[10-Oct-2026 08:33:43 UTC] No class_id found - will fetch all announcements
[10-Oct-2026 08:33:43 UTC] ✅ Fetched 0 announcements
[10-Oct-2026 08:33:43 UTC] ✅ Total announcements: 0
[10-Oct-2026 08:33:44 UTC] 📚 STUDENT GET: Fetching all students
[10-Oct-2026 08:33:44 UTC] ✅ STUDENT GET: Found 387 students
[10-Oct-2026 08:33:46 UTC] 📚 STUDENT GET: Fetching all students
[10-Oct-2026 08:33:46 UTC] ✅ STUDENT GET: Found 387 students
[12-Oct-2026 10:19:43 UTC] 🔐 LOGIN API: Incoming request
[12-Oct-2026 10:19:43 UTC]    Sanitized Email: admin@school.com
[12-Oct-2026 10:19:43 UTC]    Executing query to find user by email
[12-Oct-2026 10:19:43 UTC] ✅ User found: School Admin
[12-Oct-2026 10:19:43 UTC]    User ID: 1
[12-Oct-2026 10:19:43 UTC]    Role: admin
[12-Oct-2026 10:19:43 UTC]    Verifying password...
[12-Oct-2026 10:19:43 UTC]    ✅ Password verified as PLAIN TEXT
[12-Oct-2026 10:19:43 UTC] ✅ Password verified successfully
[12-Oct-2026 10:19:43 UTC]    Normalized teacher_role: mentor
[12-Oct-2026 10:19:43 UTC]    Updating last_login timestamp...
[12-Oct-2026 10:19:43 UTC] ✅ LOGIN SUCCESSFUL
[12-Oct-2026 10:19:47 UTC] 📚 STUDENT GET: Fetching all students
[12-Oct-2026 10:19:47 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[12-Oct-2026 10:19:47 UTC] No class_id found - will fetch all announcements
[12-Oct-2026 10:19:47 UTC] ✅ Fetched 0 announcements
[12-Oct-2026 10:19:47 UTC] ✅ Total announcements: 0
[12-Oct-2026 10:19:47 UTC] ✅ STUDENT GET: Found 387 students
[12-Oct-2026 10:19:48 UTC] 📚 STUDENT GET: Fetching all students
[12-Oct-2026 10:19:48 UTC] ✅ STUDENT GET: Found 387 students
[12-Oct-2026 10:35:42 UTC] 📚 STUDENT GET: Fetching all students
[12-Oct-2026 10:35:42 UTC] 📚 STUDENT GET: Fetching all students
[12-Oct-2026 10:35:42 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[12-Oct-2026 10:35:42 UTC] No class_id found - will fetch all announcements
[12-Oct-2026 10:35:42 UTC] ✅ STUDENT GET: Found 387 students
[12-Oct-2026 10:35:42 UTC] ✅ Fetched 0 announcements
[12-Oct-2026 10:35:42 UTC] ✅ Total announcements: 0
[12-Oct-2026 10:35:42 UTC] ✅ STUDENT GET: Found 387 students
[12-Oct-2026 10:54:06 UTC] 📚 STUDENT GET: Fetching all students
[12-Oct-2026 10:54:06 UTC] ✅ STUDENT GET: Found 387 students
[12-Oct-2026 10:54:06 UTC] 📡 Announcements API called: student_id=, class_id=, limit=20, offset=0
[12-Oct-2026 10:54:06 UTC] No class_id found - will fetch all announcements
[12-Oct-2026 10:54:06 UTC] ✅ Fetched 0 announcements
[12-Oct-2026 10:54:06 UTC] 📚 STUDENT GET: Fetching all students
[12-Oct-2026 10:54:06 UTC] ✅ Total announcements: 0
[12-Oct-2026 10:54:06 UTC] ✅ STUDENT GET: Found 387 students
[12-Oct-2026 10:56:27 UTC] 📚 STUDENT GET: Fetching all students
[12-Oct-2026 10:56:27 UTC] ✅ STUDENT GET: Found 387 students
