diff --git a/data.sql b/data.sql new file mode 100644 index 0000000..355b6de --- /dev/null +++ b/data.sql @@ -0,0 +1,1264 @@ +-- Seed data generated from 暑期班课表 更新-2.xlsx +-- Source dates: 2025-07-20 through 2025-08-16. +-- Idempotency: stable records are upserted; the source-owned summer schedule/exam/duty range is replaced. + +SET NAMES utf8mb4; +USE `dorm_billing_v2`; +SET FOREIGN_KEY_CHECKS = 1; +START TRANSACTION; + +INSERT INTO `organizations` (`public_id`, `code`, `name`, `is_host`, `color`, `notes`, `status`) +VALUES ('00000000-0000-7000-8000-000000000001', 'HOST', '本机构', 1, '#1677ff', '系统默认运营主体', 'active') +ON DUPLICATE KEY UPDATE `name`=VALUES(`name`), `is_host`=1, `status`='active'; + +INSERT INTO `permissions` (`code`, `name`, `group`) VALUES +('schedule:view', '查看排课', 'schedule'), +('attendance:view', '查看考勤', 'attendance'), +('attendance:create', '新增考勤', 'attendance'), +('attendance:self-edit', '编辑任教班级考勤', 'attendance-scope'), +('teacher-workspace:view', '查看教师工作台', 'teacher-workspace'), +('notification:view', '查看通知', 'notification'), +('exam:view', '查看和录入考试成绩', 'exam') +ON DUPLICATE KEY UPDATE `name`=VALUES(`name`), `group`=VALUES(`group`); + +INSERT INTO `roles` (`name`, `code`, `description`, `is_system`, `status`) VALUES +('超级管理员', 'super_admin', '系统初始化、应急维护和全局权限处理', 1, 1), +('任课老师', 'teacher', '查看自己的排课、今日课程和任教班级考勤', 1, 1) +ON DUPLICATE KEY UPDATE `name`=VALUES(`name`), `description`=VALUES(`description`), `is_system`=1, `status`=1; + +INSERT INTO `users` (`username`, `password_hash`, `name`, `is_active`, `is_archived`) +VALUES ('admin', '$2b$10$/uXpQttv.Ud7sfUeZmVta./ZwMjHF59JbO4scA6pnHDtUZo1EMzA2', '管理员', 1, 0) +ON DUPLICATE KEY UPDATE `name`='管理员', `is_active`=1, `is_archived`=0; + +INSERT IGNORE INTO `user_roles` (`user_id`, `role_id`) +SELECT u.id, r.id FROM `users` u JOIN `roles` r ON r.code='super_admin' WHERE u.username='admin'; + +INSERT IGNORE INTO `role_permissions` (`role_id`, `permission_id`) +SELECT r.id, p.id FROM `roles` r CROSS JOIN `permissions` p WHERE r.code='super_admin'; +INSERT IGNORE INTO `role_permissions` (`role_id`, `permission_id`) +SELECT r.id, p.id FROM `roles` r JOIN `permissions` p ON p.code IN ('schedule:view','attendance:view','attendance:create','attendance:self-edit','teacher-workspace:view','notification:view') WHERE r.code='teacher'; + +INSERT INTO `users` (`username`, `password_hash`, `name`, `is_active`, `is_archived`) VALUES +('summer_teacher_01', '$2b$10$/uXpQttv.Ud7sfUeZmVta./ZwMjHF59JbO4scA6pnHDtUZo1EMzA2', '柴艳', 1, 0), +('summer_teacher_02', '$2b$10$/uXpQttv.Ud7sfUeZmVta./ZwMjHF59JbO4scA6pnHDtUZo1EMzA2', '陈奕静', 1, 0), +('summer_teacher_03', '$2b$10$/uXpQttv.Ud7sfUeZmVta./ZwMjHF59JbO4scA6pnHDtUZo1EMzA2', '郭婧', 1, 0), +('summer_teacher_04', '$2b$10$/uXpQttv.Ud7sfUeZmVta./ZwMjHF59JbO4scA6pnHDtUZo1EMzA2', '郭馨', 1, 0), +('summer_teacher_05', '$2b$10$/uXpQttv.Ud7sfUeZmVta./ZwMjHF59JbO4scA6pnHDtUZo1EMzA2', '李鸿图', 1, 0), +('summer_teacher_06', '$2b$10$/uXpQttv.Ud7sfUeZmVta./ZwMjHF59JbO4scA6pnHDtUZo1EMzA2', '师哲', 1, 0), +('summer_teacher_07', '$2b$10$/uXpQttv.Ud7sfUeZmVta./ZwMjHF59JbO4scA6pnHDtUZo1EMzA2', '王贵晶', 1, 0), +('summer_teacher_08', '$2b$10$/uXpQttv.Ud7sfUeZmVta./ZwMjHF59JbO4scA6pnHDtUZo1EMzA2', '王家欣', 1, 0), +('summer_teacher_09', '$2b$10$/uXpQttv.Ud7sfUeZmVta./ZwMjHF59JbO4scA6pnHDtUZo1EMzA2', '王沐妍', 1, 0), +('summer_teacher_10', '$2b$10$/uXpQttv.Ud7sfUeZmVta./ZwMjHF59JbO4scA6pnHDtUZo1EMzA2', '杨婷', 1, 0), +('summer_teacher_11', '$2b$10$/uXpQttv.Ud7sfUeZmVta./ZwMjHF59JbO4scA6pnHDtUZo1EMzA2', '袁嘉琪', 1, 0), +('summer_teacher_12', '$2b$10$/uXpQttv.Ud7sfUeZmVta./ZwMjHF59JbO4scA6pnHDtUZo1EMzA2', '张永杰', 1, 0) +ON DUPLICATE KEY UPDATE `password_hash`=VALUES(`password_hash`), `name`=VALUES(`name`), `is_active`=1, `is_archived`=0; + +INSERT IGNORE INTO `user_roles` (`user_id`, `role_id`) +SELECT u.id, r.id FROM `users` u CROSS JOIN `roles` r WHERE u.username LIKE 'summer_teacher_%' AND r.code='teacher'; + +INSERT INTO `classes` (`name`, `code`, `class_type`, `start_date`, `end_date`, `status`, `max_students`, `notes`, `is_archived`) VALUES +('暑期1班', 'SUMMER_2025_1', 'culture', '2025-07-20', '2025-08-16', 'active', 0, '来源: 暑期班课表 更新-2.xlsx; 教室 212', 0), +('暑期2班', 'SUMMER_2025_2', 'culture', '2025-07-20', '2025-08-16', 'active', 0, '来源: 暑期班课表 更新-2.xlsx; 教室 210', 0), +('暑期3班', 'SUMMER_2025_3', 'culture', '2025-07-20', '2025-08-16', 'active', 0, '来源: 暑期班课表 更新-2.xlsx; 教室 301', 0), +('暑期4班', 'SUMMER_2025_4', 'culture', '2025-07-20', '2025-08-16', 'active', 0, '来源: 暑期班课表 更新-2.xlsx; 教室 208', 0), +('暑期5班', 'SUMMER_2025_5', 'culture', '2025-07-20', '2025-08-16', 'active', 0, '来源: 暑期班课表 更新-2.xlsx; 教室 211', 0), +('暑期6班', 'SUMMER_2025_6', 'culture', '2025-07-20', '2025-08-16', 'active', 0, '来源: 暑期班课表 更新-2.xlsx; 教室 209', 0), +('暑期7班', 'SUMMER_2025_7', 'culture', '2025-07-20', '2025-08-16', 'active', 0, '来源: 暑期班课表 更新-2.xlsx; 教室 207', 0) +ON DUPLICATE KEY UPDATE `name`=VALUES(`name`), `class_type`=VALUES(`class_type`), `start_date`=VALUES(`start_date`), `end_date`=VALUES(`end_date`), `status`='active', `notes`=VALUES(`notes`), `is_archived`=0; + +INSERT INTO `classrooms` (`name`, `building`, `floor`, `capacity`, `room_type`, `status`, `notes`) +SELECT '207', NULL, 2, 30, '大', 'available', '来源: 暑期班课表 更新-2.xlsx' +WHERE NOT EXISTS (SELECT 1 FROM `classrooms` WHERE `name`='207'); +UPDATE `classrooms` SET `floor`=2, `status`='available' WHERE `name`='207'; + +INSERT INTO `classrooms` (`name`, `building`, `floor`, `capacity`, `room_type`, `status`, `notes`) +SELECT '208', NULL, 2, 30, '大', 'available', '来源: 暑期班课表 更新-2.xlsx' +WHERE NOT EXISTS (SELECT 1 FROM `classrooms` WHERE `name`='208'); +UPDATE `classrooms` SET `floor`=2, `status`='available' WHERE `name`='208'; + +INSERT INTO `classrooms` (`name`, `building`, `floor`, `capacity`, `room_type`, `status`, `notes`) +SELECT '209', NULL, 2, 30, '大', 'available', '来源: 暑期班课表 更新-2.xlsx' +WHERE NOT EXISTS (SELECT 1 FROM `classrooms` WHERE `name`='209'); +UPDATE `classrooms` SET `floor`=2, `status`='available' WHERE `name`='209'; + +INSERT INTO `classrooms` (`name`, `building`, `floor`, `capacity`, `room_type`, `status`, `notes`) +SELECT '210', NULL, 2, 30, '大', 'available', '来源: 暑期班课表 更新-2.xlsx' +WHERE NOT EXISTS (SELECT 1 FROM `classrooms` WHERE `name`='210'); +UPDATE `classrooms` SET `floor`=2, `status`='available' WHERE `name`='210'; + +INSERT INTO `classrooms` (`name`, `building`, `floor`, `capacity`, `room_type`, `status`, `notes`) +SELECT '211', NULL, 2, 30, '大', 'available', '来源: 暑期班课表 更新-2.xlsx' +WHERE NOT EXISTS (SELECT 1 FROM `classrooms` WHERE `name`='211'); +UPDATE `classrooms` SET `floor`=2, `status`='available' WHERE `name`='211'; + +INSERT INTO `classrooms` (`name`, `building`, `floor`, `capacity`, `room_type`, `status`, `notes`) +SELECT '212', NULL, 2, 30, '大', 'available', '来源: 暑期班课表 更新-2.xlsx' +WHERE NOT EXISTS (SELECT 1 FROM `classrooms` WHERE `name`='212'); +UPDATE `classrooms` SET `floor`=2, `status`='available' WHERE `name`='212'; + +INSERT INTO `classrooms` (`name`, `building`, `floor`, `capacity`, `room_type`, `status`, `notes`) +SELECT '301', NULL, 3, 30, '大', 'available', '来源: 暑期班课表 更新-2.xlsx' +WHERE NOT EXISTS (SELECT 1 FROM `classrooms` WHERE `name`='301'); +UPDATE `classrooms` SET `floor`=3, `status`='available' WHERE `name`='301'; + +DELETE ct FROM `class_teacher` ct JOIN `classes` c ON c.id=ct.class_id JOIN `users` u ON u.id=ct.user_id WHERE c.code LIKE 'SUMMER_2025_%' AND u.username LIKE 'summer_teacher_%'; + +INSERT INTO `class_teacher` (`class_id`, `user_id`, `role_type`, `subject`) +SELECT c.id, u.id, 'subject_teacher', '英语' FROM `classes` c JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_1'; + +INSERT INTO `class_teacher` (`class_id`, `user_id`, `role_type`, `subject`) +SELECT c.id, u.id, 'subject_teacher', '计算机' FROM `classes` c JOIN `users` u ON u.username='summer_teacher_05' WHERE c.code='SUMMER_2025_1'; + +INSERT INTO `class_teacher` (`class_id`, `user_id`, `role_type`, `subject`) +SELECT c.id, u.id, 'subject_teacher', '数学' FROM `classes` c JOIN `users` u ON u.username='summer_teacher_03' WHERE c.code='SUMMER_2025_1'; + +INSERT INTO `class_teacher` (`class_id`, `user_id`, `role_type`, `subject`) +SELECT c.id, u.id, 'subject_teacher', '计算机' FROM `classes` c JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_2'; + +INSERT INTO `class_teacher` (`class_id`, `user_id`, `role_type`, `subject`) +SELECT c.id, u.id, 'subject_teacher', '英语' FROM `classes` c JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_2'; + +INSERT INTO `class_teacher` (`class_id`, `user_id`, `role_type`, `subject`) +SELECT c.id, u.id, 'subject_teacher', '数学' FROM `classes` c JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_2'; + +INSERT INTO `class_teacher` (`class_id`, `user_id`, `role_type`, `subject`) +SELECT c.id, u.id, 'subject_teacher', '数学' FROM `classes` c JOIN `users` u ON u.username='summer_teacher_02' WHERE c.code='SUMMER_2025_3'; + +INSERT INTO `class_teacher` (`class_id`, `user_id`, `role_type`, `subject`) +SELECT c.id, u.id, 'subject_teacher', '计算机' FROM `classes` c JOIN `users` u ON u.username='summer_teacher_11' WHERE c.code='SUMMER_2025_3'; + +INSERT INTO `class_teacher` (`class_id`, `user_id`, `role_type`, `subject`) +SELECT c.id, u.id, 'subject_teacher', '英语' FROM `classes` c JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_3'; + +INSERT INTO `class_teacher` (`class_id`, `user_id`, `role_type`, `subject`) +SELECT c.id, u.id, 'subject_teacher', '英语' FROM `classes` c JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_4'; + +INSERT INTO `class_teacher` (`class_id`, `user_id`, `role_type`, `subject`) +SELECT c.id, u.id, 'subject_teacher', '数学' FROM `classes` c JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_4'; + +INSERT INTO `class_teacher` (`class_id`, `user_id`, `role_type`, `subject`) +SELECT c.id, u.id, 'subject_teacher', '计算机' FROM `classes` c JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_4'; + +INSERT INTO `class_teacher` (`class_id`, `user_id`, `role_type`, `subject`) +SELECT c.id, u.id, 'subject_teacher', '语文' FROM `classes` c JOIN `users` u ON u.username='summer_teacher_09' WHERE c.code='SUMMER_2025_5'; + +INSERT INTO `class_teacher` (`class_id`, `user_id`, `role_type`, `subject`) +SELECT c.id, u.id, 'subject_teacher', '英语' FROM `classes` c JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_5'; + +INSERT INTO `class_teacher` (`class_id`, `user_id`, `role_type`, `subject`) +SELECT c.id, u.id, 'subject_teacher', '计算机' FROM `classes` c JOIN `users` u ON u.username='summer_teacher_11' WHERE c.code='SUMMER_2025_5'; + +INSERT INTO `class_teacher` (`class_id`, `user_id`, `role_type`, `subject`) +SELECT c.id, u.id, 'subject_teacher', '语文' FROM `classes` c JOIN `users` u ON u.username='summer_teacher_07' WHERE c.code='SUMMER_2025_6'; + +INSERT INTO `class_teacher` (`class_id`, `user_id`, `role_type`, `subject`) +SELECT c.id, u.id, 'subject_teacher', '计算机' FROM `classes` c JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_6'; + +INSERT INTO `class_teacher` (`class_id`, `user_id`, `role_type`, `subject`) +SELECT c.id, u.id, 'subject_teacher', '英语' FROM `classes` c JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_6'; + +INSERT INTO `class_teacher` (`class_id`, `user_id`, `role_type`, `subject`) +SELECT c.id, u.id, 'subject_teacher', '数学' FROM `classes` c JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_7'; + +INSERT INTO `class_teacher` (`class_id`, `user_id`, `role_type`, `subject`) +SELECT c.id, u.id, 'subject_teacher', '英语' FROM `classes` c JOIN `users` u ON u.username='summer_teacher_10' WHERE c.code='SUMMER_2025_7'; + +INSERT INTO `class_teacher` (`class_id`, `user_id`, `role_type`, `subject`) +SELECT c.id, u.id, 'subject_teacher', '计算机' FROM `classes` c JOIN `users` u ON u.username='summer_teacher_01' WHERE c.code='SUMMER_2025_7'; + +DELETE ar FROM `attendance_records` ar JOIN `class_schedule` cs ON cs.id=ar.schedule_id JOIN `classes` c ON c.id=cs.class_id WHERE c.code LIKE 'SUMMER_2025_%' AND cs.start_date BETWEEN '2025-07-20' AND '2025-08-16'; +DELETE ats FROM `attendance_sessions` ats JOIN `class_schedule` cs ON cs.id=ats.schedule_id JOIN `classes` c ON c.id=cs.class_id WHERE c.code LIKE 'SUMMER_2025_%' AND cs.start_date BETWEEN '2025-07-20' AND '2025-08-16'; +DELETE cs FROM `class_schedule` cs JOIN `classes` c ON c.id=cs.class_id WHERE c.code LIKE 'SUMMER_2025_%' AND cs.start_date BETWEEN '2025-07-20' AND '2025-08-16'; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '09:00', '12:00', 30, '2025-07-20', '2025-07-20', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='212' JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_1' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '14:00', '17:00', 30, '2025-07-20', '2025-07-20', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='212' JOIN `users` u ON u.username='summer_teacher_05' WHERE c.code='SUMMER_2025_1' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '09:00', '12:00', 30, '2025-07-21', '2025-07-21', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='212' JOIN `users` u ON u.username='summer_teacher_03' WHERE c.code='SUMMER_2025_1' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '14:00', '17:00', 30, '2025-07-21', '2025-07-21', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='212' JOIN `users` u ON u.username='summer_teacher_05' WHERE c.code='SUMMER_2025_1' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '09:00', '12:00', 30, '2025-07-22', '2025-07-22', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='212' JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_1' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '14:00', '17:00', 30, '2025-07-22', '2025-07-22', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='212' JOIN `users` u ON u.username='summer_teacher_03' WHERE c.code='SUMMER_2025_1' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 3, '09:00', '12:00', 30, '2025-07-23', '2025-07-23', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='212' JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_1' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 3, '14:00', '17:00', 30, '2025-07-23', '2025-07-23', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='212' JOIN `users` u ON u.username='summer_teacher_05' WHERE c.code='SUMMER_2025_1' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '09:00', '12:00', 30, '2025-07-24', '2025-07-24', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='212' JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_1' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '14:00', '17:00', 30, '2025-07-24', '2025-07-24', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='212' JOIN `users` u ON u.username='summer_teacher_03' WHERE c.code='SUMMER_2025_1' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '09:00', '12:00', 30, '2025-07-26', '2025-07-26', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='212' JOIN `users` u ON u.username='summer_teacher_03' WHERE c.code='SUMMER_2025_1' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '14:00', '17:00', 30, '2025-07-26', '2025-07-26', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='212' JOIN `users` u ON u.username='summer_teacher_05' WHERE c.code='SUMMER_2025_1' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '09:00', '12:00', 30, '2025-07-20', '2025-07-20', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='210' JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_2' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '14:00', '17:00', 30, '2025-07-20', '2025-07-20', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='210' JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_2' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '09:00', '12:00', 30, '2025-07-21', '2025-07-21', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='210' JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_2' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '14:00', '17:00', 30, '2025-07-21', '2025-07-21', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='210' JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_2' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '09:00', '12:00', 30, '2025-07-22', '2025-07-22', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='210' JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_2' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '14:00', '17:00', 30, '2025-07-22', '2025-07-22', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='210' JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_2' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 3, '09:00', '12:00', 30, '2025-07-23', '2025-07-23', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='210' JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_2' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 3, '14:00', '17:00', 30, '2025-07-23', '2025-07-23', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='210' JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_2' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '09:00', '12:00', 30, '2025-07-24', '2025-07-24', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='210' JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_2' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '14:00', '17:00', 30, '2025-07-24', '2025-07-24', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='210' JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_2' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '09:00', '12:00', 30, '2025-07-26', '2025-07-26', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='210' JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_2' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '14:00', '17:00', 30, '2025-07-26', '2025-07-26', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='210' JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_2' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '09:00', '12:00', 30, '2025-07-20', '2025-07-20', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='301' JOIN `users` u ON u.username='summer_teacher_02' WHERE c.code='SUMMER_2025_3' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '14:00', '17:00', 30, '2025-07-20', '2025-07-20', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='301' JOIN `users` u ON u.username='summer_teacher_11' WHERE c.code='SUMMER_2025_3' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '09:00', '12:00', 30, '2025-07-21', '2025-07-21', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='301' JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_3' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '14:00', '17:00', 30, '2025-07-21', '2025-07-21', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='301' JOIN `users` u ON u.username='summer_teacher_02' WHERE c.code='SUMMER_2025_3' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '09:00', '12:00', 30, '2025-07-22', '2025-07-22', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='301' JOIN `users` u ON u.username='summer_teacher_11' WHERE c.code='SUMMER_2025_3' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '14:00', '17:00', 30, '2025-07-22', '2025-07-22', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='301' JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_3' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 3, '09:00', '12:00', 30, '2025-07-23', '2025-07-23', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='301' JOIN `users` u ON u.username='summer_teacher_02' WHERE c.code='SUMMER_2025_3' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 3, '14:00', '17:00', 30, '2025-07-23', '2025-07-23', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='301' JOIN `users` u ON u.username='summer_teacher_11' WHERE c.code='SUMMER_2025_3' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '09:00', '12:00', 30, '2025-07-24', '2025-07-24', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='301' JOIN `users` u ON u.username='summer_teacher_11' WHERE c.code='SUMMER_2025_3' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '14:00', '17:00', 30, '2025-07-24', '2025-07-24', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='301' JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_3' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '09:00', '12:00', 30, '2025-07-26', '2025-07-26', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='301' JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_3' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '14:00', '17:00', 30, '2025-07-26', '2025-07-26', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='301' JOIN `users` u ON u.username='summer_teacher_02' WHERE c.code='SUMMER_2025_3' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '09:00', '12:00', 30, '2025-07-20', '2025-07-20', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='208' JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_4' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '14:00', '17:00', 30, '2025-07-20', '2025-07-20', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='208' JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_4' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '09:00', '12:00', 30, '2025-07-21', '2025-07-21', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='208' JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_4' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '14:00', '17:00', 30, '2025-07-21', '2025-07-21', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='208' JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_4' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '09:00', '12:00', 30, '2025-07-22', '2025-07-22', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='208' JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_4' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '14:00', '17:00', 30, '2025-07-22', '2025-07-22', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='208' JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_4' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 3, '09:00', '12:00', 30, '2025-07-23', '2025-07-23', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='208' JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_4' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 3, '14:00', '17:00', 30, '2025-07-23', '2025-07-23', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='208' JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_4' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '09:00', '12:00', 30, '2025-07-24', '2025-07-24', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='208' JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_4' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '14:00', '17:00', 30, '2025-07-24', '2025-07-24', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='208' JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_4' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '09:00', '12:00', 30, '2025-07-26', '2025-07-26', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='208' JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_4' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '14:00', '17:00', 30, '2025-07-26', '2025-07-26', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='208' JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_4' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '09:00', '12:00', 30, '2025-07-20', '2025-07-20', '语文', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='211' JOIN `users` u ON u.username='summer_teacher_09' WHERE c.code='SUMMER_2025_5' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '14:00', '17:00', 30, '2025-07-20', '2025-07-20', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='211' JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_5' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '09:00', '12:00', 30, '2025-07-21', '2025-07-21', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='211' JOIN `users` u ON u.username='summer_teacher_11' WHERE c.code='SUMMER_2025_5' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '14:00', '17:00', 30, '2025-07-21', '2025-07-21', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='211' JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_5' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '09:00', '12:00', 30, '2025-07-22', '2025-07-22', '语文', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='211' JOIN `users` u ON u.username='summer_teacher_09' WHERE c.code='SUMMER_2025_5' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '14:00', '17:00', 30, '2025-07-22', '2025-07-22', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='211' JOIN `users` u ON u.username='summer_teacher_11' WHERE c.code='SUMMER_2025_5' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 3, '09:00', '12:00', 30, '2025-07-23', '2025-07-23', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='211' JOIN `users` u ON u.username='summer_teacher_11' WHERE c.code='SUMMER_2025_5' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 3, '14:00', '17:00', 30, '2025-07-23', '2025-07-23', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='211' JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_5' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '09:00', '12:00', 30, '2025-07-24', '2025-07-24', '语文', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='211' JOIN `users` u ON u.username='summer_teacher_09' WHERE c.code='SUMMER_2025_5' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '14:00', '17:00', 30, '2025-07-24', '2025-07-24', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='211' JOIN `users` u ON u.username='summer_teacher_11' WHERE c.code='SUMMER_2025_5' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '09:00', '12:00', 30, '2025-07-26', '2025-07-26', '语文', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='211' JOIN `users` u ON u.username='summer_teacher_09' WHERE c.code='SUMMER_2025_5' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '14:00', '17:00', 30, '2025-07-26', '2025-07-26', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='211' JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_5' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '09:00', '12:00', 30, '2025-07-20', '2025-07-20', '语文', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='209' JOIN `users` u ON u.username='summer_teacher_07' WHERE c.code='SUMMER_2025_6' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '14:00', '17:00', 30, '2025-07-20', '2025-07-20', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='209' JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_6' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '09:00', '12:00', 30, '2025-07-21', '2025-07-21', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='209' JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_6' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '14:00', '17:00', 30, '2025-07-21', '2025-07-21', '语文', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='209' JOIN `users` u ON u.username='summer_teacher_07' WHERE c.code='SUMMER_2025_6' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '09:00', '12:00', 30, '2025-07-22', '2025-07-22', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='209' JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_6' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '14:00', '17:00', 30, '2025-07-22', '2025-07-22', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='209' JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_6' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 3, '09:00', '12:00', 30, '2025-07-23', '2025-07-23', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='209' JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_6' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 3, '14:00', '17:00', 30, '2025-07-23', '2025-07-23', '语文', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='209' JOIN `users` u ON u.username='summer_teacher_07' WHERE c.code='SUMMER_2025_6' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '09:00', '12:00', 30, '2025-07-24', '2025-07-24', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='209' JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_6' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '14:00', '17:00', 30, '2025-07-24', '2025-07-24', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='209' JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_6' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '09:00', '12:00', 30, '2025-07-26', '2025-07-26', '语文', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='209' JOIN `users` u ON u.username='summer_teacher_07' WHERE c.code='SUMMER_2025_6' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '14:00', '17:00', 30, '2025-07-26', '2025-07-26', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='209' JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_6' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '09:00', '12:00', 30, '2025-07-20', '2025-07-20', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='207' JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_7' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '14:00', '17:00', 30, '2025-07-20', '2025-07-20', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='207' JOIN `users` u ON u.username='summer_teacher_10' WHERE c.code='SUMMER_2025_7' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '09:00', '12:00', 30, '2025-07-21', '2025-07-21', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='207' JOIN `users` u ON u.username='summer_teacher_01' WHERE c.code='SUMMER_2025_7' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '14:00', '17:00', 30, '2025-07-21', '2025-07-21', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='207' JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_7' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '09:00', '12:00', 30, '2025-07-22', '2025-07-22', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='207' JOIN `users` u ON u.username='summer_teacher_01' WHERE c.code='SUMMER_2025_7' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '14:00', '17:00', 30, '2025-07-22', '2025-07-22', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='207' JOIN `users` u ON u.username='summer_teacher_10' WHERE c.code='SUMMER_2025_7' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 3, '09:00', '12:00', 30, '2025-07-23', '2025-07-23', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='207' JOIN `users` u ON u.username='summer_teacher_01' WHERE c.code='SUMMER_2025_7' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 3, '14:00', '17:00', 30, '2025-07-23', '2025-07-23', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='207' JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_7' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '09:00', '12:00', 30, '2025-07-24', '2025-07-24', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='207' JOIN `users` u ON u.username='summer_teacher_01' WHERE c.code='SUMMER_2025_7' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '14:00', '17:00', 30, '2025-07-24', '2025-07-24', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='207' JOIN `users` u ON u.username='summer_teacher_10' WHERE c.code='SUMMER_2025_7' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '09:00', '12:00', 30, '2025-07-26', '2025-07-26', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='207' JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_7' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '14:00', '17:00', 30, '2025-07-26', '2025-07-26', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='207' JOIN `users` u ON u.username='summer_teacher_10' WHERE c.code='SUMMER_2025_7' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '09:00', '12:00', 30, '2025-07-27', '2025-07-27', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='212' JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_1' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '14:00', '17:00', 30, '2025-07-27', '2025-07-27', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='212' JOIN `users` u ON u.username='summer_teacher_05' WHERE c.code='SUMMER_2025_1' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '09:00', '12:00', 30, '2025-07-28', '2025-07-28', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='212' JOIN `users` u ON u.username='summer_teacher_03' WHERE c.code='SUMMER_2025_1' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '14:00', '17:00', 30, '2025-07-28', '2025-07-28', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='212' JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_1' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '09:00', '12:00', 30, '2025-07-29', '2025-07-29', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='212' JOIN `users` u ON u.username='summer_teacher_03' WHERE c.code='SUMMER_2025_1' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '14:00', '17:00', 30, '2025-07-29', '2025-07-29', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='212' JOIN `users` u ON u.username='summer_teacher_05' WHERE c.code='SUMMER_2025_1' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 3, '09:00', '12:00', 30, '2025-07-30', '2025-07-30', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='212' JOIN `users` u ON u.username='summer_teacher_03' WHERE c.code='SUMMER_2025_1' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 3, '14:00', '17:00', 30, '2025-07-30', '2025-07-30', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='212' JOIN `users` u ON u.username='summer_teacher_05' WHERE c.code='SUMMER_2025_1' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '09:00', '12:00', 30, '2025-07-31', '2025-07-31', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='212' JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_1' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '14:00', '17:00', 30, '2025-07-31', '2025-07-31', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='212' JOIN `users` u ON u.username='summer_teacher_03' WHERE c.code='SUMMER_2025_1' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '09:00', '12:00', 30, '2025-08-02', '2025-08-02', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='212' JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_1' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '14:00', '17:00', 30, '2025-08-02', '2025-08-02', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='212' JOIN `users` u ON u.username='summer_teacher_05' WHERE c.code='SUMMER_2025_1' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '09:00', '12:00', 30, '2025-07-27', '2025-07-27', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='210' JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_2' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '14:00', '17:00', 30, '2025-07-27', '2025-07-27', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='210' JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_2' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '09:00', '12:00', 30, '2025-07-28', '2025-07-28', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='210' JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_2' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '14:00', '17:00', 30, '2025-07-28', '2025-07-28', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='210' JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_2' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '09:00', '12:00', 30, '2025-07-29', '2025-07-29', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='210' JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_2' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '14:00', '17:00', 30, '2025-07-29', '2025-07-29', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='210' JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_2' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 3, '09:00', '12:00', 30, '2025-07-30', '2025-07-30', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='210' JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_2' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 3, '14:00', '17:00', 30, '2025-07-30', '2025-07-30', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='210' JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_2' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '09:00', '12:00', 30, '2025-07-31', '2025-07-31', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='210' JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_2' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '14:00', '17:00', 30, '2025-07-31', '2025-07-31', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='210' JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_2' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '09:00', '12:00', 30, '2025-08-02', '2025-08-02', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='210' JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_2' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '14:00', '17:00', 30, '2025-08-02', '2025-08-02', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='210' JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_2' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '09:00', '12:00', 30, '2025-07-27', '2025-07-27', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='301' JOIN `users` u ON u.username='summer_teacher_02' WHERE c.code='SUMMER_2025_3' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '14:00', '17:00', 30, '2025-07-27', '2025-07-27', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='301' JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_3' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '09:00', '12:00', 30, '2025-07-28', '2025-07-28', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='301' JOIN `users` u ON u.username='summer_teacher_11' WHERE c.code='SUMMER_2025_3' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '14:00', '17:00', 30, '2025-07-28', '2025-07-28', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='301' JOIN `users` u ON u.username='summer_teacher_02' WHERE c.code='SUMMER_2025_3' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '09:00', '12:00', 30, '2025-07-29', '2025-07-29', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='301' JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_3' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '14:00', '17:00', 30, '2025-07-29', '2025-07-29', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='301' JOIN `users` u ON u.username='summer_teacher_11' WHERE c.code='SUMMER_2025_3' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 3, '09:00', '12:00', 30, '2025-07-30', '2025-07-30', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='301' JOIN `users` u ON u.username='summer_teacher_02' WHERE c.code='SUMMER_2025_3' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 3, '14:00', '17:00', 30, '2025-07-30', '2025-07-30', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='301' JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_3' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '09:00', '12:00', 30, '2025-07-31', '2025-07-31', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='301' JOIN `users` u ON u.username='summer_teacher_11' WHERE c.code='SUMMER_2025_3' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '14:00', '17:00', 30, '2025-07-31', '2025-07-31', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='301' JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_3' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '09:00', '12:00', 30, '2025-08-02', '2025-08-02', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='301' JOIN `users` u ON u.username='summer_teacher_02' WHERE c.code='SUMMER_2025_3' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '14:00', '17:00', 30, '2025-08-02', '2025-08-02', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='301' JOIN `users` u ON u.username='summer_teacher_11' WHERE c.code='SUMMER_2025_3' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '09:00', '12:00', 30, '2025-07-27', '2025-07-27', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='208' JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_4' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '14:00', '17:00', 30, '2025-07-27', '2025-07-27', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='208' JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_4' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '09:00', '12:00', 30, '2025-07-28', '2025-07-28', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='208' JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_4' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '14:00', '17:00', 30, '2025-07-28', '2025-07-28', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='208' JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_4' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '09:00', '12:00', 30, '2025-07-29', '2025-07-29', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='208' JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_4' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '14:00', '17:00', 30, '2025-07-29', '2025-07-29', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='208' JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_4' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 3, '09:00', '12:00', 30, '2025-07-30', '2025-07-30', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='208' JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_4' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 3, '14:00', '17:00', 30, '2025-07-30', '2025-07-30', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='208' JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_4' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '09:00', '12:00', 30, '2025-07-31', '2025-07-31', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='208' JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_4' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '14:00', '17:00', 30, '2025-07-31', '2025-07-31', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='208' JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_4' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '09:00', '12:00', 30, '2025-08-02', '2025-08-02', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='208' JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_4' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '14:00', '17:00', 30, '2025-08-02', '2025-08-02', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='208' JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_4' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '09:00', '12:00', 30, '2025-07-27', '2025-07-27', '语文', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='211' JOIN `users` u ON u.username='summer_teacher_09' WHERE c.code='SUMMER_2025_5' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '14:00', '17:00', 30, '2025-07-27', '2025-07-27', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='211' JOIN `users` u ON u.username='summer_teacher_11' WHERE c.code='SUMMER_2025_5' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '09:00', '12:00', 30, '2025-07-28', '2025-07-28', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='211' JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_5' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '14:00', '17:00', 30, '2025-07-28', '2025-07-28', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='211' JOIN `users` u ON u.username='summer_teacher_11' WHERE c.code='SUMMER_2025_5' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '09:00', '12:00', 30, '2025-07-29', '2025-07-29', '语文', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='211' JOIN `users` u ON u.username='summer_teacher_09' WHERE c.code='SUMMER_2025_5' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '14:00', '17:00', 30, '2025-07-29', '2025-07-29', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='211' JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_5' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 3, '09:00', '12:00', 30, '2025-07-30', '2025-07-30', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='211' JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_5' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 3, '14:00', '17:00', 30, '2025-07-30', '2025-07-30', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='211' JOIN `users` u ON u.username='summer_teacher_11' WHERE c.code='SUMMER_2025_5' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '09:00', '12:00', 30, '2025-07-31', '2025-07-31', '语文', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='211' JOIN `users` u ON u.username='summer_teacher_09' WHERE c.code='SUMMER_2025_5' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '14:00', '17:00', 30, '2025-07-31', '2025-07-31', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='211' JOIN `users` u ON u.username='summer_teacher_11' WHERE c.code='SUMMER_2025_5' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '09:00', '12:00', 30, '2025-08-02', '2025-08-02', '语文', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='211' JOIN `users` u ON u.username='summer_teacher_09' WHERE c.code='SUMMER_2025_5' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '14:00', '17:00', 30, '2025-08-02', '2025-08-02', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='211' JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_5' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '09:00', '12:00', 30, '2025-07-27', '2025-07-27', '语文', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='209' JOIN `users` u ON u.username='summer_teacher_07' WHERE c.code='SUMMER_2025_6' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '14:00', '17:00', 30, '2025-07-27', '2025-07-27', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='209' JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_6' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '09:00', '12:00', 30, '2025-07-28', '2025-07-28', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='209' JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_6' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '14:00', '17:00', 30, '2025-07-28', '2025-07-28', '语文', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='209' JOIN `users` u ON u.username='summer_teacher_07' WHERE c.code='SUMMER_2025_6' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '09:00', '12:00', 30, '2025-07-29', '2025-07-29', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='209' JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_6' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '14:00', '17:00', 30, '2025-07-29', '2025-07-29', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='209' JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_6' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 3, '09:00', '12:00', 30, '2025-07-30', '2025-07-30', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='209' JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_6' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 3, '14:00', '17:00', 30, '2025-07-30', '2025-07-30', '语文', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='209' JOIN `users` u ON u.username='summer_teacher_07' WHERE c.code='SUMMER_2025_6' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '09:00', '12:00', 30, '2025-07-31', '2025-07-31', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='209' JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_6' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '14:00', '17:00', 30, '2025-07-31', '2025-07-31', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='209' JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_6' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '09:00', '12:00', 30, '2025-08-02', '2025-08-02', '语文', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='209' JOIN `users` u ON u.username='summer_teacher_07' WHERE c.code='SUMMER_2025_6' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '14:00', '17:00', 30, '2025-08-02', '2025-08-02', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='209' JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_6' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '09:00', '12:00', 30, '2025-07-27', '2025-07-27', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='207' JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_7' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '14:00', '17:00', 30, '2025-07-27', '2025-07-27', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='207' JOIN `users` u ON u.username='summer_teacher_10' WHERE c.code='SUMMER_2025_7' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '09:00', '12:00', 30, '2025-07-28', '2025-07-28', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='207' JOIN `users` u ON u.username='summer_teacher_01' WHERE c.code='SUMMER_2025_7' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '14:00', '17:00', 30, '2025-07-28', '2025-07-28', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='207' JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_7' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '09:00', '12:00', 30, '2025-07-29', '2025-07-29', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='207' JOIN `users` u ON u.username='summer_teacher_01' WHERE c.code='SUMMER_2025_7' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '14:00', '17:00', 30, '2025-07-29', '2025-07-29', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='207' JOIN `users` u ON u.username='summer_teacher_10' WHERE c.code='SUMMER_2025_7' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 3, '09:00', '12:00', 30, '2025-07-30', '2025-07-30', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='207' JOIN `users` u ON u.username='summer_teacher_01' WHERE c.code='SUMMER_2025_7' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 3, '14:00', '17:00', 30, '2025-07-30', '2025-07-30', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='207' JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_7' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '09:00', '12:00', 30, '2025-07-31', '2025-07-31', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='207' JOIN `users` u ON u.username='summer_teacher_01' WHERE c.code='SUMMER_2025_7' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '14:00', '17:00', 30, '2025-07-31', '2025-07-31', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='207' JOIN `users` u ON u.username='summer_teacher_10' WHERE c.code='SUMMER_2025_7' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '09:00', '12:00', 30, '2025-08-02', '2025-08-02', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='207' JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_7' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '14:00', '17:00', 30, '2025-08-02', '2025-08-02', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='207' JOIN `users` u ON u.username='summer_teacher_10' WHERE c.code='SUMMER_2025_7' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '09:00', '12:00', 30, '2025-08-03', '2025-08-03', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='212' JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_1' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '14:00', '17:00', 30, '2025-08-03', '2025-08-03', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='212' JOIN `users` u ON u.username='summer_teacher_05' WHERE c.code='SUMMER_2025_1' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '09:00', '12:00', 30, '2025-08-04', '2025-08-04', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='212' JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_1' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '14:00', '17:00', 30, '2025-08-04', '2025-08-04', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='212' JOIN `users` u ON u.username='summer_teacher_03' WHERE c.code='SUMMER_2025_1' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '09:00', '12:00', 30, '2025-08-05', '2025-08-05', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='212' JOIN `users` u ON u.username='summer_teacher_03' WHERE c.code='SUMMER_2025_1' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '14:00', '17:00', 30, '2025-08-05', '2025-08-05', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='212' JOIN `users` u ON u.username='summer_teacher_05' WHERE c.code='SUMMER_2025_1' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 3, '09:00', '12:00', 30, '2025-08-06', '2025-08-06', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='212' JOIN `users` u ON u.username='summer_teacher_05' WHERE c.code='SUMMER_2025_1' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 3, '14:00', '17:00', 30, '2025-08-06', '2025-08-06', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='212' JOIN `users` u ON u.username='summer_teacher_03' WHERE c.code='SUMMER_2025_1' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '09:00', '12:00', 30, '2025-08-07', '2025-08-07', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='212' JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_1' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '14:00', '17:00', 30, '2025-08-07', '2025-08-07', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='212' JOIN `users` u ON u.username='summer_teacher_05' WHERE c.code='SUMMER_2025_1' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '09:00', '12:00', 30, '2025-08-09', '2025-08-09', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='212' JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_1' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '14:00', '17:00', 30, '2025-08-09', '2025-08-09', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='212' JOIN `users` u ON u.username='summer_teacher_03' WHERE c.code='SUMMER_2025_1' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '09:00', '12:00', 30, '2025-08-03', '2025-08-03', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='210' JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_2' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '14:00', '17:00', 30, '2025-08-03', '2025-08-03', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='210' JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_2' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '09:00', '12:00', 30, '2025-08-04', '2025-08-04', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='210' JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_2' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '14:00', '17:00', 30, '2025-08-04', '2025-08-04', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='210' JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_2' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '09:00', '12:00', 30, '2025-08-05', '2025-08-05', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='210' JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_2' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '14:00', '17:00', 30, '2025-08-05', '2025-08-05', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='210' JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_2' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 3, '09:00', '12:00', 30, '2025-08-06', '2025-08-06', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='210' JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_2' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 3, '14:00', '17:00', 30, '2025-08-06', '2025-08-06', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='210' JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_2' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '09:00', '12:00', 30, '2025-08-07', '2025-08-07', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='210' JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_2' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '14:00', '17:00', 30, '2025-08-07', '2025-08-07', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='210' JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_2' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '09:00', '12:00', 30, '2025-08-09', '2025-08-09', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='210' JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_2' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '14:00', '17:00', 30, '2025-08-09', '2025-08-09', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='210' JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_2' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '09:00', '12:00', 30, '2025-08-03', '2025-08-03', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='301' JOIN `users` u ON u.username='summer_teacher_02' WHERE c.code='SUMMER_2025_3' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '14:00', '17:00', 30, '2025-08-03', '2025-08-03', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='301' JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_3' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '09:00', '12:00', 30, '2025-08-04', '2025-08-04', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='301' JOIN `users` u ON u.username='summer_teacher_02' WHERE c.code='SUMMER_2025_3' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '14:00', '17:00', 30, '2025-08-04', '2025-08-04', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='301' JOIN `users` u ON u.username='summer_teacher_11' WHERE c.code='SUMMER_2025_3' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '09:00', '12:00', 30, '2025-08-05', '2025-08-05', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='301' JOIN `users` u ON u.username='summer_teacher_11' WHERE c.code='SUMMER_2025_3' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '14:00', '17:00', 30, '2025-08-05', '2025-08-05', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='301' JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_3' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 3, '09:00', '12:00', 30, '2025-08-06', '2025-08-06', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='301' JOIN `users` u ON u.username='summer_teacher_02' WHERE c.code='SUMMER_2025_3' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 3, '14:00', '17:00', 30, '2025-08-06', '2025-08-06', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='301' JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_3' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '09:00', '12:00', 30, '2025-08-07', '2025-08-07', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='301' JOIN `users` u ON u.username='summer_teacher_11' WHERE c.code='SUMMER_2025_3' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '14:00', '17:00', 30, '2025-08-07', '2025-08-07', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='301' JOIN `users` u ON u.username='summer_teacher_02' WHERE c.code='SUMMER_2025_3' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '09:00', '12:00', 30, '2025-08-09', '2025-08-09', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='301' JOIN `users` u ON u.username='summer_teacher_11' WHERE c.code='SUMMER_2025_3' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '14:00', '17:00', 30, '2025-08-09', '2025-08-09', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='301' JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_3' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '09:00', '12:00', 30, '2025-08-03', '2025-08-03', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='208' JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_4' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '14:00', '17:00', 30, '2025-08-03', '2025-08-03', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='208' JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_4' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '09:00', '12:00', 30, '2025-08-04', '2025-08-04', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='208' JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_4' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '14:00', '17:00', 30, '2025-08-04', '2025-08-04', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='208' JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_4' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '09:00', '12:00', 30, '2025-08-05', '2025-08-05', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='208' JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_4' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '14:00', '17:00', 30, '2025-08-05', '2025-08-05', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='208' JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_4' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 3, '09:00', '12:00', 30, '2025-08-06', '2025-08-06', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='208' JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_4' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 3, '14:00', '17:00', 30, '2025-08-06', '2025-08-06', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='208' JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_4' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '09:00', '12:00', 30, '2025-08-07', '2025-08-07', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='208' JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_4' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '14:00', '17:00', 30, '2025-08-07', '2025-08-07', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='208' JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_4' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '09:00', '12:00', 30, '2025-08-09', '2025-08-09', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='208' JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_4' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '14:00', '17:00', 30, '2025-08-09', '2025-08-09', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='208' JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_4' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '09:00', '12:00', 30, '2025-08-03', '2025-08-03', '语文', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='211' JOIN `users` u ON u.username='summer_teacher_09' WHERE c.code='SUMMER_2025_5' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '14:00', '17:00', 30, '2025-08-03', '2025-08-03', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='211' JOIN `users` u ON u.username='summer_teacher_11' WHERE c.code='SUMMER_2025_5' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '09:00', '12:00', 30, '2025-08-04', '2025-08-04', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='211' JOIN `users` u ON u.username='summer_teacher_11' WHERE c.code='SUMMER_2025_5' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '14:00', '17:00', 30, '2025-08-04', '2025-08-04', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='211' JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_5' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '09:00', '12:00', 30, '2025-08-05', '2025-08-05', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='211' JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_5' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '14:00', '17:00', 30, '2025-08-05', '2025-08-05', '语文', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='211' JOIN `users` u ON u.username='summer_teacher_09' WHERE c.code='SUMMER_2025_5' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 3, '09:00', '12:00', 30, '2025-08-06', '2025-08-06', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='211' JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_5' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 3, '14:00', '17:00', 30, '2025-08-06', '2025-08-06', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='211' JOIN `users` u ON u.username='summer_teacher_11' WHERE c.code='SUMMER_2025_5' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '09:00', '12:00', 30, '2025-08-07', '2025-08-07', '语文', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='211' JOIN `users` u ON u.username='summer_teacher_09' WHERE c.code='SUMMER_2025_5' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '14:00', '17:00', 30, '2025-08-07', '2025-08-07', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='211' JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_5' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '09:00', '12:00', 30, '2025-08-09', '2025-08-09', '语文', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='211' JOIN `users` u ON u.username='summer_teacher_09' WHERE c.code='SUMMER_2025_5' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '14:00', '17:00', 30, '2025-08-09', '2025-08-09', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='211' JOIN `users` u ON u.username='summer_teacher_11' WHERE c.code='SUMMER_2025_5' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '09:00', '12:00', 30, '2025-08-03', '2025-08-03', '语文', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='209' JOIN `users` u ON u.username='summer_teacher_07' WHERE c.code='SUMMER_2025_6' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '14:00', '17:00', 30, '2025-08-03', '2025-08-03', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='209' JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_6' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '09:00', '12:00', 30, '2025-08-04', '2025-08-04', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='209' JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_6' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '14:00', '17:00', 30, '2025-08-04', '2025-08-04', '语文', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='209' JOIN `users` u ON u.username='summer_teacher_07' WHERE c.code='SUMMER_2025_6' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '09:00', '12:00', 30, '2025-08-05', '2025-08-05', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='209' JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_6' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '14:00', '17:00', 30, '2025-08-05', '2025-08-05', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='209' JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_6' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 3, '09:00', '12:00', 30, '2025-08-06', '2025-08-06', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='209' JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_6' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 3, '14:00', '17:00', 30, '2025-08-06', '2025-08-06', '语文', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='209' JOIN `users` u ON u.username='summer_teacher_07' WHERE c.code='SUMMER_2025_6' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '09:00', '12:00', 30, '2025-08-07', '2025-08-07', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='209' JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_6' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '14:00', '17:00', 30, '2025-08-07', '2025-08-07', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='209' JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_6' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '09:00', '12:00', 30, '2025-08-09', '2025-08-09', '语文', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='209' JOIN `users` u ON u.username='summer_teacher_07' WHERE c.code='SUMMER_2025_6' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '14:00', '17:00', 30, '2025-08-09', '2025-08-09', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='209' JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_6' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '09:00', '12:00', 30, '2025-08-03', '2025-08-03', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='207' JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_7' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '14:00', '17:00', 30, '2025-08-03', '2025-08-03', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='207' JOIN `users` u ON u.username='summer_teacher_10' WHERE c.code='SUMMER_2025_7' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '09:00', '12:00', 30, '2025-08-04', '2025-08-04', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='207' JOIN `users` u ON u.username='summer_teacher_01' WHERE c.code='SUMMER_2025_7' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '14:00', '17:00', 30, '2025-08-04', '2025-08-04', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='207' JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_7' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '09:00', '12:00', 30, '2025-08-05', '2025-08-05', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='207' JOIN `users` u ON u.username='summer_teacher_01' WHERE c.code='SUMMER_2025_7' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '14:00', '17:00', 30, '2025-08-05', '2025-08-05', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='207' JOIN `users` u ON u.username='summer_teacher_10' WHERE c.code='SUMMER_2025_7' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 3, '09:00', '12:00', 30, '2025-08-06', '2025-08-06', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='207' JOIN `users` u ON u.username='summer_teacher_01' WHERE c.code='SUMMER_2025_7' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 3, '14:00', '17:00', 30, '2025-08-06', '2025-08-06', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='207' JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_7' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '09:00', '12:00', 30, '2025-08-07', '2025-08-07', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='207' JOIN `users` u ON u.username='summer_teacher_01' WHERE c.code='SUMMER_2025_7' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '14:00', '17:00', 30, '2025-08-07', '2025-08-07', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='207' JOIN `users` u ON u.username='summer_teacher_10' WHERE c.code='SUMMER_2025_7' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '09:00', '12:00', 30, '2025-08-09', '2025-08-09', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='207' JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_7' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '14:00', '17:00', 30, '2025-08-09', '2025-08-09', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='207' JOIN `users` u ON u.username='summer_teacher_10' WHERE c.code='SUMMER_2025_7' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '09:00', '12:00', 30, '2025-08-10', '2025-08-10', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='212' JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_1' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '14:00', '17:00', 30, '2025-08-10', '2025-08-10', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='212' JOIN `users` u ON u.username='summer_teacher_05' WHERE c.code='SUMMER_2025_1' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '09:00', '12:00', 30, '2025-08-11', '2025-08-11', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='212' JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_1' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '14:00', '17:00', 30, '2025-08-11', '2025-08-11', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='212' JOIN `users` u ON u.username='summer_teacher_03' WHERE c.code='SUMMER_2025_1' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '09:00', '12:00', 30, '2025-08-12', '2025-08-12', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='212' JOIN `users` u ON u.username='summer_teacher_03' WHERE c.code='SUMMER_2025_1' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '14:00', '17:00', 30, '2025-08-12', '2025-08-12', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='212' JOIN `users` u ON u.username='summer_teacher_05' WHERE c.code='SUMMER_2025_1' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '09:00', '12:00', 30, '2025-08-14', '2025-08-14', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='212' JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_1' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '14:00', '17:00', 30, '2025-08-14', '2025-08-14', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='212' JOIN `users` u ON u.username='summer_teacher_05' WHERE c.code='SUMMER_2025_1' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 5, '09:00', '12:00', 30, '2025-08-15', '2025-08-15', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='212' JOIN `users` u ON u.username='summer_teacher_03' WHERE c.code='SUMMER_2025_1' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 5, '14:00', '17:00', 30, '2025-08-15', '2025-08-15', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='212' JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_1' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '09:00', '12:00', 30, '2025-08-16', '2025-08-16', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='212' JOIN `users` u ON u.username='summer_teacher_03' WHERE c.code='SUMMER_2025_1' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '14:00', '17:00', 30, '2025-08-16', '2025-08-16', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='212' JOIN `users` u ON u.username='summer_teacher_05' WHERE c.code='SUMMER_2025_1' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '09:00', '12:00', 30, '2025-08-10', '2025-08-10', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='210' JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_2' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '14:00', '17:00', 30, '2025-08-10', '2025-08-10', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='210' JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_2' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '09:00', '12:00', 30, '2025-08-11', '2025-08-11', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='210' JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_2' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '14:00', '17:00', 30, '2025-08-11', '2025-08-11', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='210' JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_2' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '09:00', '12:00', 30, '2025-08-12', '2025-08-12', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='210' JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_2' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '14:00', '17:00', 30, '2025-08-12', '2025-08-12', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='210' JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_2' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '09:00', '12:00', 30, '2025-08-14', '2025-08-14', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='210' JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_2' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '14:00', '17:00', 30, '2025-08-14', '2025-08-14', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='210' JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_2' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 5, '09:00', '12:00', 30, '2025-08-15', '2025-08-15', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='210' JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_2' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 5, '14:00', '17:00', 30, '2025-08-15', '2025-08-15', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='210' JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_2' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '09:00', '12:00', 30, '2025-08-16', '2025-08-16', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='210' JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_2' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '14:00', '17:00', 30, '2025-08-16', '2025-08-16', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='210' JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_2' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '09:00', '12:00', 30, '2025-08-10', '2025-08-10', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='301' JOIN `users` u ON u.username='summer_teacher_02' WHERE c.code='SUMMER_2025_3' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '14:00', '17:00', 30, '2025-08-10', '2025-08-10', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='301' JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_3' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '09:00', '12:00', 30, '2025-08-11', '2025-08-11', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='301' JOIN `users` u ON u.username='summer_teacher_02' WHERE c.code='SUMMER_2025_3' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '14:00', '17:00', 30, '2025-08-11', '2025-08-11', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='301' JOIN `users` u ON u.username='summer_teacher_11' WHERE c.code='SUMMER_2025_3' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '09:00', '12:00', 30, '2025-08-12', '2025-08-12', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='301' JOIN `users` u ON u.username='summer_teacher_11' WHERE c.code='SUMMER_2025_3' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '14:00', '17:00', 30, '2025-08-12', '2025-08-12', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='301' JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_3' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '09:00', '12:00', 30, '2025-08-14', '2025-08-14', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='301' JOIN `users` u ON u.username='summer_teacher_11' WHERE c.code='SUMMER_2025_3' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '14:00', '17:00', 30, '2025-08-14', '2025-08-14', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='301' JOIN `users` u ON u.username='summer_teacher_02' WHERE c.code='SUMMER_2025_3' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 5, '09:00', '12:00', 30, '2025-08-15', '2025-08-15', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='301' JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_3' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 5, '14:00', '17:00', 30, '2025-08-15', '2025-08-15', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='301' JOIN `users` u ON u.username='summer_teacher_11' WHERE c.code='SUMMER_2025_3' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '09:00', '12:00', 30, '2025-08-16', '2025-08-16', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='301' JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_3' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '14:00', '17:00', 30, '2025-08-16', '2025-08-16', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='301' JOIN `users` u ON u.username='summer_teacher_11' WHERE c.code='SUMMER_2025_3' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '09:00', '12:00', 30, '2025-08-10', '2025-08-10', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='208' JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_4' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '14:00', '17:00', 30, '2025-08-10', '2025-08-10', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='208' JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_4' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '09:00', '12:00', 30, '2025-08-11', '2025-08-11', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='208' JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_4' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '14:00', '17:00', 30, '2025-08-11', '2025-08-11', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='208' JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_4' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '09:00', '12:00', 30, '2025-08-12', '2025-08-12', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='208' JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_4' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '14:00', '17:00', 30, '2025-08-12', '2025-08-12', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='208' JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_4' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '09:00', '12:00', 30, '2025-08-14', '2025-08-14', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='208' JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_4' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '14:00', '17:00', 30, '2025-08-14', '2025-08-14', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='208' JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_4' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 5, '09:00', '12:00', 30, '2025-08-15', '2025-08-15', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='208' JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_4' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 5, '14:00', '17:00', 30, '2025-08-15', '2025-08-15', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='208' JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_4' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '09:00', '12:00', 30, '2025-08-16', '2025-08-16', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='208' JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_4' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '14:00', '17:00', 30, '2025-08-16', '2025-08-16', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='208' JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_4' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '09:00', '12:00', 30, '2025-08-10', '2025-08-10', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='211' JOIN `users` u ON u.username='summer_teacher_11' WHERE c.code='SUMMER_2025_5' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '14:00', '17:00', 30, '2025-08-10', '2025-08-10', '语文', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='211' JOIN `users` u ON u.username='summer_teacher_09' WHERE c.code='SUMMER_2025_5' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '09:00', '12:00', 30, '2025-08-11', '2025-08-11', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='211' JOIN `users` u ON u.username='summer_teacher_11' WHERE c.code='SUMMER_2025_5' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '14:00', '17:00', 30, '2025-08-11', '2025-08-11', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='211' JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_5' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '09:00', '12:00', 30, '2025-08-12', '2025-08-12', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='211' JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_5' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '14:00', '17:00', 30, '2025-08-12', '2025-08-12', '语文', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='211' JOIN `users` u ON u.username='summer_teacher_09' WHERE c.code='SUMMER_2025_5' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '09:00', '12:00', 30, '2025-08-14', '2025-08-14', '语文', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='211' JOIN `users` u ON u.username='summer_teacher_09' WHERE c.code='SUMMER_2025_5' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '14:00', '17:00', 30, '2025-08-14', '2025-08-14', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='211' JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_5' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 5, '09:00', '12:00', 30, '2025-08-15', '2025-08-15', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='211' JOIN `users` u ON u.username='summer_teacher_11' WHERE c.code='SUMMER_2025_5' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 5, '14:00', '17:00', 30, '2025-08-15', '2025-08-15', '语文', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='211' JOIN `users` u ON u.username='summer_teacher_09' WHERE c.code='SUMMER_2025_5' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '09:00', '12:00', 30, '2025-08-16', '2025-08-16', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='211' JOIN `users` u ON u.username='summer_teacher_11' WHERE c.code='SUMMER_2025_5' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '14:00', '17:00', 30, '2025-08-16', '2025-08-16', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='211' JOIN `users` u ON u.username='summer_teacher_08' WHERE c.code='SUMMER_2025_5' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '09:00', '12:00', 30, '2025-08-10', '2025-08-10', '语文', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='209' JOIN `users` u ON u.username='summer_teacher_07' WHERE c.code='SUMMER_2025_6' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '14:00', '17:00', 30, '2025-08-10', '2025-08-10', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='209' JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_6' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '09:00', '12:00', 30, '2025-08-11', '2025-08-11', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='209' JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_6' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '14:00', '17:00', 30, '2025-08-11', '2025-08-11', '语文', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='209' JOIN `users` u ON u.username='summer_teacher_07' WHERE c.code='SUMMER_2025_6' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '09:00', '12:00', 30, '2025-08-12', '2025-08-12', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='209' JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_6' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '14:00', '17:00', 30, '2025-08-12', '2025-08-12', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='209' JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_6' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '09:00', '12:00', 30, '2025-08-14', '2025-08-14', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='209' JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_6' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '14:00', '17:00', 30, '2025-08-14', '2025-08-14', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='209' JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_6' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 5, '09:00', '12:00', 30, '2025-08-15', '2025-08-15', '语文', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='209' JOIN `users` u ON u.username='summer_teacher_07' WHERE c.code='SUMMER_2025_6' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 5, '14:00', '17:00', 30, '2025-08-15', '2025-08-15', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='209' JOIN `users` u ON u.username='summer_teacher_04' WHERE c.code='SUMMER_2025_6' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '09:00', '12:00', 30, '2025-08-16', '2025-08-16', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='209' JOIN `users` u ON u.username='summer_teacher_12' WHERE c.code='SUMMER_2025_6' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '14:00', '17:00', 30, '2025-08-16', '2025-08-16', '语文', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='209' JOIN `users` u ON u.username='summer_teacher_07' WHERE c.code='SUMMER_2025_6' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '09:00', '12:00', 30, '2025-08-10', '2025-08-10', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='207' JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_7' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 7, '14:00', '17:00', 30, '2025-08-10', '2025-08-10', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='207' JOIN `users` u ON u.username='summer_teacher_10' WHERE c.code='SUMMER_2025_7' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '09:00', '12:00', 30, '2025-08-11', '2025-08-11', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='207' JOIN `users` u ON u.username='summer_teacher_01' WHERE c.code='SUMMER_2025_7' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 1, '14:00', '17:00', 30, '2025-08-11', '2025-08-11', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='207' JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_7' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '09:00', '12:00', 30, '2025-08-12', '2025-08-12', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='207' JOIN `users` u ON u.username='summer_teacher_01' WHERE c.code='SUMMER_2025_7' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 2, '14:00', '17:00', 30, '2025-08-12', '2025-08-12', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='207' JOIN `users` u ON u.username='summer_teacher_10' WHERE c.code='SUMMER_2025_7' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '09:00', '12:00', 30, '2025-08-14', '2025-08-14', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='207' JOIN `users` u ON u.username='summer_teacher_01' WHERE c.code='SUMMER_2025_7' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 4, '14:00', '17:00', 30, '2025-08-14', '2025-08-14', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='207' JOIN `users` u ON u.username='summer_teacher_10' WHERE c.code='SUMMER_2025_7' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 5, '09:00', '12:00', 30, '2025-08-15', '2025-08-15', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='207' JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_7' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 5, '14:00', '17:00', 30, '2025-08-15', '2025-08-15', '英语', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='207' JOIN `users` u ON u.username='summer_teacher_10' WHERE c.code='SUMMER_2025_7' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '09:00', '12:00', 30, '2025-08-16', '2025-08-16', '计算机', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='207' JOIN `users` u ON u.username='summer_teacher_01' WHERE c.code='SUMMER_2025_7' LIMIT 1; + +INSERT INTO `class_schedule` (`class_id`, `classroom_id`, `week_day`, `start_time`, `end_time`, `attendance_advance_minutes`, `start_date`, `end_date`, `subject`, `teacher_id`, `schedule_type`, `status`, `notes`) +SELECT c.id, cr.id, 6, '14:00', '17:00', 30, '2025-08-16', '2025-08-16', '数学', u.id, 'INTERNAL', 'active', '来源: 暑期班课表 更新-2.xlsx' FROM `classes` c JOIN `classrooms` cr ON cr.name='207' JOIN `users` u ON u.username='summer_teacher_06' WHERE c.code='SUMMER_2025_7' LIMIT 1; + +DELETE es FROM `exam_scores` es JOIN `exams` e ON e.id=es.exam_id JOIN `classes` c ON c.id=e.class_id WHERE c.code LIKE 'SUMMER_2025_%' AND e.exam_date BETWEEN '2025-07-20' AND '2025-08-16'; +DELETE e FROM `exams` e JOIN `classes` c ON c.id=e.class_id WHERE c.code LIKE 'SUMMER_2025_%' AND e.exam_date BETWEEN '2025-07-20' AND '2025-08-16'; + +INSERT INTO `exams` (`exam_type`, `exam_name`, `subject`, `exam_date`, `class_id`, `status`) SELECT '暑期考试', '暑期班考试', '综合', '2025-08-01', c.id, 'active' FROM `classes` c WHERE c.code='SUMMER_2025_1'; + +INSERT INTO `exams` (`exam_type`, `exam_name`, `subject`, `exam_date`, `class_id`, `status`) SELECT '暑期考试', '暑期班考试', '综合', '2025-08-01', c.id, 'active' FROM `classes` c WHERE c.code='SUMMER_2025_2'; + +INSERT INTO `exams` (`exam_type`, `exam_name`, `subject`, `exam_date`, `class_id`, `status`) SELECT '暑期考试', '暑期班考试', '综合', '2025-08-01', c.id, 'active' FROM `classes` c WHERE c.code='SUMMER_2025_3'; + +INSERT INTO `exams` (`exam_type`, `exam_name`, `subject`, `exam_date`, `class_id`, `status`) SELECT '暑期考试', '暑期班考试', '综合', '2025-08-01', c.id, 'active' FROM `classes` c WHERE c.code='SUMMER_2025_4'; + +INSERT INTO `exams` (`exam_type`, `exam_name`, `subject`, `exam_date`, `class_id`, `status`) SELECT '暑期考试', '暑期班考试', '综合', '2025-08-01', c.id, 'active' FROM `classes` c WHERE c.code='SUMMER_2025_5'; + +INSERT INTO `exams` (`exam_type`, `exam_name`, `subject`, `exam_date`, `class_id`, `status`) SELECT '暑期考试', '暑期班考试', '综合', '2025-08-01', c.id, 'active' FROM `classes` c WHERE c.code='SUMMER_2025_6'; + +INSERT INTO `exams` (`exam_type`, `exam_name`, `subject`, `exam_date`, `class_id`, `status`) SELECT '暑期考试', '暑期班考试', '综合', '2025-08-13', c.id, 'active' FROM `classes` c WHERE c.code='SUMMER_2025_1'; + +INSERT INTO `exams` (`exam_type`, `exam_name`, `subject`, `exam_date`, `class_id`, `status`) SELECT '暑期考试', '暑期班考试', '综合', '2025-08-13', c.id, 'active' FROM `classes` c WHERE c.code='SUMMER_2025_2'; + +INSERT INTO `exams` (`exam_type`, `exam_name`, `subject`, `exam_date`, `class_id`, `status`) SELECT '暑期考试', '暑期班考试', '综合', '2025-08-13', c.id, 'active' FROM `classes` c WHERE c.code='SUMMER_2025_3'; + +INSERT INTO `exams` (`exam_type`, `exam_name`, `subject`, `exam_date`, `class_id`, `status`) SELECT '暑期考试', '暑期班考试', '综合', '2025-08-13', c.id, 'active' FROM `classes` c WHERE c.code='SUMMER_2025_4'; + +INSERT INTO `exams` (`exam_type`, `exam_name`, `subject`, `exam_date`, `class_id`, `status`) SELECT '暑期考试', '暑期班考试', '综合', '2025-08-13', c.id, 'active' FROM `classes` c WHERE c.code='SUMMER_2025_5'; + +INSERT INTO `exams` (`exam_type`, `exam_name`, `subject`, `exam_date`, `class_id`, `status`) SELECT '暑期考试', '暑期班考试', '综合', '2025-08-13', c.id, 'active' FROM `classes` c WHERE c.code='SUMMER_2025_6'; + +INSERT INTO `exams` (`exam_type`, `exam_name`, `subject`, `exam_date`, `class_id`, `status`) SELECT '暑期考试', '暑期班考试', '综合', '2025-08-13', c.id, 'active' FROM `classes` c WHERE c.code='SUMMER_2025_7'; + +DELETE FROM `evening_study_duties` WHERE `duty_date` BETWEEN '2025-07-20' AND '2025-08-16'; + +INSERT INTO `evening_study_duties` (`duty_date`, `teacher_id`, `teacher_name`) SELECT '2025-07-20', u.id, '郭馨' FROM `users` u WHERE u.username='summer_teacher_04'; + +INSERT INTO `evening_study_duties` (`duty_date`, `teacher_id`, `teacher_name`) SELECT '2025-07-21', u.id, '师哲' FROM `users` u WHERE u.username='summer_teacher_06'; + +INSERT INTO `evening_study_duties` (`duty_date`, `teacher_id`, `teacher_name`) SELECT '2025-07-22', u.id, '王家欣' FROM `users` u WHERE u.username='summer_teacher_08'; + +INSERT INTO `evening_study_duties` (`duty_date`, `teacher_id`, `teacher_name`) SELECT '2025-07-23', u.id, '张永杰' FROM `users` u WHERE u.username='summer_teacher_12'; + +INSERT INTO `evening_study_duties` (`duty_date`, `teacher_id`, `teacher_name`) SELECT '2025-07-24', u.id, '袁嘉琪' FROM `users` u WHERE u.username='summer_teacher_11'; + +INSERT INTO `evening_study_duties` (`duty_date`, `teacher_id`, `teacher_name`) SELECT '2025-07-26', u.id, '陈奕静' FROM `users` u WHERE u.username='summer_teacher_02'; + +INSERT INTO `evening_study_duties` (`duty_date`, `teacher_id`, `teacher_name`) SELECT '2025-07-27', u.id, '王家欣' FROM `users` u WHERE u.username='summer_teacher_08'; + +INSERT INTO `evening_study_duties` (`duty_date`, `teacher_id`, `teacher_name`) SELECT '2025-07-28', u.id, '师哲' FROM `users` u WHERE u.username='summer_teacher_06'; + +INSERT INTO `evening_study_duties` (`duty_date`, `teacher_id`, `teacher_name`) SELECT '2025-07-29', u.id, '郭馨' FROM `users` u WHERE u.username='summer_teacher_04'; + +INSERT INTO `evening_study_duties` (`duty_date`, `teacher_id`, `teacher_name`) SELECT '2025-07-30', u.id, '李鸿图' FROM `users` u WHERE u.username='summer_teacher_05'; + +INSERT INTO `evening_study_duties` (`duty_date`, `teacher_id`, `teacher_name`) SELECT '2025-07-31', u.id, '袁嘉琪' FROM `users` u WHERE u.username='summer_teacher_11'; + +INSERT INTO `evening_study_duties` (`duty_date`, `teacher_id`, `teacher_name`) SELECT '2025-08-02', u.id, '张永杰' FROM `users` u WHERE u.username='summer_teacher_12'; + +INSERT INTO `evening_study_duties` (`duty_date`, `teacher_id`, `teacher_name`) SELECT '2025-08-03', u.id, '师哲' FROM `users` u WHERE u.username='summer_teacher_06'; + +INSERT INTO `evening_study_duties` (`duty_date`, `teacher_id`, `teacher_name`) SELECT '2025-08-04', u.id, '张永杰' FROM `users` u WHERE u.username='summer_teacher_12'; + +INSERT INTO `evening_study_duties` (`duty_date`, `teacher_id`, `teacher_name`) SELECT '2025-08-05', u.id, '王沐妍' FROM `users` u WHERE u.username='summer_teacher_09'; + +INSERT INTO `evening_study_duties` (`duty_date`, `teacher_id`, `teacher_name`) SELECT '2025-08-06', u.id, '师哲' FROM `users` u WHERE u.username='summer_teacher_06'; + +INSERT INTO `evening_study_duties` (`duty_date`, `teacher_id`, `teacher_name`) SELECT '2025-08-07', u.id, '郭馨' FROM `users` u WHERE u.username='summer_teacher_04'; + +INSERT INTO `evening_study_duties` (`duty_date`, `teacher_id`, `teacher_name`) SELECT '2025-08-09', u.id, '王家欣' FROM `users` u WHERE u.username='summer_teacher_08'; + +INSERT INTO `evening_study_duties` (`duty_date`, `teacher_id`, `teacher_name`) SELECT '2025-08-10', u.id, '师哲' FROM `users` u WHERE u.username='summer_teacher_06'; + +INSERT INTO `evening_study_duties` (`duty_date`, `teacher_id`, `teacher_name`) SELECT '2025-08-11', u.id, '袁嘉琪' FROM `users` u WHERE u.username='summer_teacher_11'; + +INSERT INTO `evening_study_duties` (`duty_date`, `teacher_id`, `teacher_name`) SELECT '2025-08-12', u.id, '李鸿图' FROM `users` u WHERE u.username='summer_teacher_05'; + +INSERT INTO `evening_study_duties` (`duty_date`, `teacher_id`, `teacher_name`) SELECT '2025-08-14', u.id, '陈奕静' FROM `users` u WHERE u.username='summer_teacher_02'; + +INSERT INTO `evening_study_duties` (`duty_date`, `teacher_id`, `teacher_name`) SELECT '2025-08-15', u.id, '张永杰' FROM `users` u WHERE u.username='summer_teacher_12'; + +INSERT INTO `evening_study_duties` (`duty_date`, `teacher_id`, `teacher_name`) SELECT '2025-08-16', u.id, '李鸿图' FROM `users` u WHERE u.username='summer_teacher_05'; + +COMMIT; + +-- Default login: admin / admin123 +-- Summer teacher accounts: summer_teacher_01 ... summer_teacher_12; password admin123. +-- Change all default passwords immediately after first login. diff --git a/init.sql b/init.sql new file mode 100644 index 0000000..e2eeac9 --- /dev/null +++ b/init.sql @@ -0,0 +1,266 @@ +-- gongxue-base MySQL full rebuild script +-- Generated from the current TypeORM migrations on 2026-07-24. +-- WARNING: this script intentionally drops dorm_billing_v2 and all data in it. + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; +DROP DATABASE IF EXISTS `dorm_billing_v2`; +CREATE DATABASE `dorm_billing_v2` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; +USE `dorm_billing_v2`; +SET FOREIGN_KEY_CHECKS = 1; + +CREATE TABLE `wallet_transactions` (`id` int NOT NULL AUTO_INCREMENT, `student_id` int NOT NULL, `bill_id` int NULL, `operation_id` varchar(64) NULL, `type` varchar(30) NOT NULL, `amount` decimal(12,2) NOT NULL, `balance_after` decimal(12,2) NOT NULL, `description` varchar(300) NULL, `recorded_by` int NULL, `created_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), INDEX `IDX_680bbd0275ac5e06c179f9b84c` (`student_id`, `created_at`), PRIMARY KEY (`id`)) ENGINE=InnoDB; + +CREATE TABLE `permissions` (`id` int NOT NULL AUTO_INCREMENT, `code` varchar(50) NOT NULL, `name` varchar(50) NOT NULL, `group` varchar(30) NOT NULL, `description` varchar(200) NULL, UNIQUE INDEX `IDX_8dad765629e83229da6feda1c1` (`code`), PRIMARY KEY (`id`)) ENGINE=InnoDB; + +CREATE TABLE `roles` (`id` int NOT NULL AUTO_INCREMENT, `name` varchar(30) NOT NULL, `code` varchar(30) NULL, `description` varchar(200) NULL, `is_system` tinyint NOT NULL DEFAULT 0, `status` tinyint NOT NULL DEFAULT '1', `created_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), `updated_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), UNIQUE INDEX `IDX_648e3f5447f725579d7d4ffdfb` (`name`), UNIQUE INDEX `IDX_f6d54f95c31b73fb1bdd8e91d0` (`code`), PRIMARY KEY (`id`)) ENGINE=InnoDB; + +CREATE TABLE `users` (`id` int NOT NULL AUTO_INCREMENT, `username` varchar(50) NOT NULL, `password_hash` varchar(255) NOT NULL, `name` varchar(50) NULL, `is_active` tinyint NOT NULL DEFAULT 1, `last_login_at` datetime NULL, `is_archived` tinyint NOT NULL DEFAULT 0, `created_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), `updated_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), `profile` text NULL, UNIQUE INDEX `IDX_fe0bb3f6520ee0469504521e71` (`username`), PRIMARY KEY (`id`)) ENGINE=InnoDB; + +CREATE TABLE `sync_state` (`platform` varchar(20) NOT NULL, `last_sync_at` datetime NULL, `run_id` varchar(64) NULL, `running_since` datetime NULL, PRIMARY KEY (`platform`)) ENGINE=InnoDB; + +CREATE TABLE `sync_logs` (`id` int NOT NULL AUTO_INCREMENT, `platform` varchar(20) NOT NULL, `sync_type` varchar(20) NOT NULL, `status` varchar(20) NOT NULL, `records_count` int NOT NULL DEFAULT '0', `error_message` text NULL, `started_at` datetime NULL, `finished_at` datetime NULL, `created_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), PRIMARY KEY (`id`)) ENGINE=InnoDB; + +CREATE TABLE `room_expenses` (`id` int NOT NULL AUTO_INCREMENT, `room_id` int NOT NULL, `expense_type` varchar(20) NOT NULL, `amount` decimal(10,2) NOT NULL, `period_start` date NOT NULL, `period_end` date NOT NULL, `description` text NULL, `recorded_by` int NULL, `import_key` varchar(120) NULL, `status` varchar(20) NOT NULL DEFAULT 'active', `created_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), UNIQUE INDEX `IDX_050485162d4fe47bd3cfd7dedb` (`import_key`), PRIMARY KEY (`id`)) ENGINE=InnoDB; + +CREATE TABLE `rooms` (`id` int NOT NULL AUTO_INCREMENT, `room_number` varchar(20) NOT NULL, `building` varchar(50) NULL, `floor` int NULL, `capacity` int NOT NULL, `status` varchar(20) NOT NULL DEFAULT 'available', `room_type` varchar(20) NULL, `rental_category` varchar(10) NOT NULL DEFAULT 'short', `monthly_rate` decimal(10,2) NOT NULL DEFAULT '0.00', `created_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), UNIQUE INDEX `IDX_8f7c6fa4c469bab1a06fe3e49f` (`room_number`), PRIMARY KEY (`id`)) ENGINE=InnoDB; + +CREATE TABLE `organizations` (`id` int NOT NULL AUTO_INCREMENT, `public_id` varchar(36) NOT NULL, `code` varchar(50) NOT NULL, `name` varchar(100) NOT NULL, `is_host` tinyint NOT NULL DEFAULT 0, `contact_name` varchar(50) NULL, `phone` varchar(30) NULL, `color` varchar(20) NULL, `notes` text NULL, `status` varchar(20) NOT NULL DEFAULT 'active', `created_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), `updated_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), UNIQUE INDEX `IDX_0db5eda192bf60a02bd41931f8` (`public_id`), UNIQUE INDEX `IDX_7e27c3b62c681fbe3e2322535f` (`code`), PRIMARY KEY (`id`)) ENGINE=InnoDB; + +CREATE TABLE `beds` (`id` int NOT NULL AUTO_INCREMENT, `room_id` int NOT NULL, `bed_number` varchar(20) NOT NULL, `status` varchar(20) NOT NULL DEFAULT 'available', `notes` text NULL, `created_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), `updated_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), UNIQUE INDEX `IDX_95e9ba0a907346ef7b0d5ca488` (`room_id`, `bed_number`), PRIMARY KEY (`id`)) ENGINE=InnoDB; + +CREATE TABLE `lockers` (`id` int NOT NULL AUTO_INCREMENT, `room_id` int NOT NULL, `locker_number` varchar(20) NOT NULL, `status` varchar(20) NOT NULL DEFAULT 'available', `notes` text NULL, `created_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), `updated_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), UNIQUE INDEX `IDX_8bc984d80d58c6909f738d8282` (`room_id`, `locker_number`), PRIMARY KEY (`id`)) ENGINE=InnoDB; + +CREATE TABLE `occupancies` (`id` int NOT NULL AUTO_INCREMENT, `student_id` int NOT NULL, `room_id` int NOT NULL, `check_in_date` date NOT NULL, `check_out_date` date NULL, `billing_start_date` date NOT NULL, `billing_end_date` date NULL, `check_out_reason` varchar(100) NULL, `notes` text NULL, `status` varchar(20) NOT NULL DEFAULT 'active', `bed_id` int NULL, `locker_id` int NULL, `stay_type` varchar(10) NOT NULL DEFAULT 'short', `responsible_organization_id` int NULL, `created_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), PRIMARY KEY (`id`)) ENGINE=InnoDB; + +CREATE TABLE `personal_expenses` (`id` int NOT NULL AUTO_INCREMENT, `student_id` int NOT NULL, `room_id` int NULL, `expense_type` varchar(20) NOT NULL, `amount` decimal(10,2) NOT NULL, `expense_date` date NOT NULL, `description` text NULL, `recorded_by` int NULL, `status` varchar(20) NOT NULL DEFAULT 'active', `bill_id` int NULL, `created_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), PRIMARY KEY (`id`)) ENGINE=InnoDB; + +CREATE TABLE `bill_items` (`id` int NOT NULL AUTO_INCREMENT, `bill_id` int NOT NULL, `room_expense_id` int NULL, `personal_expense_id` int NULL, `room_id` int NULL, `expense_type` varchar(20) NULL, `description` varchar(200) NULL, `days` int NULL, `total_room_days` int NULL, `room_total_amount` decimal(10,2) NULL, `student_amount` decimal(10,2) NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB; + +CREATE TABLE `bills` (`id` int NOT NULL AUTO_INCREMENT, `student_id` int NOT NULL, `period_start` date NOT NULL, `period_end` date NOT NULL, `shared_amount` decimal(10,2) NOT NULL DEFAULT '0.00', `personal_amount` decimal(10,2) NOT NULL DEFAULT '0.00', `total_amount` decimal(10,2) NOT NULL DEFAULT '0.00', `source` varchar(30) NOT NULL DEFAULT 'batch', `paid_amount` decimal(10,2) NOT NULL DEFAULT '0.00', `outstanding_amount` decimal(10,2) NOT NULL DEFAULT '0.00', `status` varchar(20) NOT NULL DEFAULT 'unpaid', `cancelled_at` datetime NULL, `cancel_reason` varchar(300) NULL, `generated_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), PRIMARY KEY (`id`)) ENGINE=InnoDB; + +CREATE TABLE `students` (`id` int NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `student_no` varchar(30) NULL, `phone` varchar(20) NULL, `id_number` varchar(30) NULL, `gender` varchar(10) NULL, `ethnicity` varchar(20) NULL, `emergency_contact` varchar(50) NULL, `emergency_phone` varchar(20) NULL, `status` varchar(20) NOT NULL DEFAULT 'active', `supervisor` varchar(50) NULL, `created_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), `updated_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), `user_id` int NULL, `organization_id` int NULL, UNIQUE INDEX `IDX_fb3eff90b11bddf7285f9b4e28` (`user_id`), UNIQUE INDEX `REL_fb3eff90b11bddf7285f9b4e28` (`user_id`), PRIMARY KEY (`id`)) ENGINE=InnoDB; + +CREATE TABLE `student_wallets` (`id` int NOT NULL AUTO_INCREMENT, `student_id` int NOT NULL, `balance` decimal(12,2) NOT NULL DEFAULT '0.00', `created_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), `updated_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), UNIQUE INDEX `IDX_07a434ad1a960d506386754d59` (`student_id`), UNIQUE INDEX `REL_07a434ad1a960d506386754d59` (`student_id`), PRIMARY KEY (`id`)) ENGINE=InnoDB; + +CREATE TABLE `student_profiles` (`id` int NOT NULL AUTO_INCREMENT, `student_id` int NOT NULL, `target_college` varchar(100) NULL, `target_major` varchar(100) NULL, `college_school` varchar(100) NULL, `college_major` varchar(100) NULL, `subject_direction` varchar(50) NULL, `grade` varchar(20) NULL, `profile_date` date NULL, `notes` text NULL, `created_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), `updated_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), UNIQUE INDEX `IDX_4cedc08d3dc1f2c2da8a12f7a8` (`student_id`), PRIMARY KEY (`id`)) ENGINE=InnoDB; + +CREATE TABLE `student_enrollments` (`id` int NOT NULL AUTO_INCREMENT, `student_id` int NOT NULL, `course_category` varchar(50) NULL, `class_type` varchar(50) NULL, `class_name` varchar(100) NULL, `head_teacher` varchar(50) NULL, `subject_teacher` varchar(50) NULL, `start_date` date NULL, `end_date` date NULL, `status` varchar(20) NOT NULL DEFAULT 'active', `created_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), `updated_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), PRIMARY KEY (`id`)) ENGINE=InnoDB; + +CREATE TABLE `student_ding_mapping` (`id` int NOT NULL AUTO_INCREMENT, `ding_user_id` varchar(100) NOT NULL, `student_id` int NOT NULL, `created_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), UNIQUE INDEX `IDX_0d1ec47e2f901d37e3b6e56331` (`ding_user_id`), UNIQUE INDEX `IDX_f9ba15ff04de8ffbd8679ae9db` (`student_id`), PRIMARY KEY (`id`)) ENGINE=InnoDB; + +CREATE TABLE `result_archives` (`id` int NOT NULL AUTO_INCREMENT, `student_id` int NOT NULL, `culture_final_score` decimal(5,2) NULL, `professional_final_score` decimal(5,2) NULL, `admission_status` varchar(50) NULL, `admitted_college` varchar(100) NULL, `admitted_major` varchar(100) NULL, `created_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), `updated_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), UNIQUE INDEX `IDX_377bba8eb6a027eecd9737d4ed` (`student_id`), PRIMARY KEY (`id`)) ENGINE=InnoDB; + +CREATE TABLE `operation_logs` (`id` int NOT NULL AUTO_INCREMENT, `user_id` int NULL, `username` varchar(50) NULL, `module` varchar(50) NOT NULL, `action` varchar(50) NOT NULL, `target_id` int NULL, `target_type` varchar(50) NULL, `detail` text NULL, `ip_address` varchar(50) NULL, `user_agent` varchar(500) NULL, `status` varchar(20) NULL DEFAULT 'success', `created_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), PRIMARY KEY (`id`)) ENGINE=InnoDB; + +CREATE TABLE `notifications` (`id` int NOT NULL AUTO_INCREMENT, `recipient_id` int NOT NULL, `type` varchar(30) NOT NULL, `title` varchar(200) NOT NULL, `content` text NULL, `link` varchar(500) NULL, `is_read` tinyint NOT NULL DEFAULT 0, `read_at` datetime NULL, `created_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), PRIMARY KEY (`id`)) ENGINE=InnoDB; + +CREATE TABLE `learning_records` (`id` int NOT NULL AUTO_INCREMENT, `student_id` int NOT NULL, `record_date` date NULL, `record_type` varchar(50) NULL, `content` text NULL, `follow_up_method` varchar(50) NULL, `next_step` text NULL, `status` varchar(20) NOT NULL DEFAULT 'active', `created_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), `updated_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), PRIMARY KEY (`id`)) ENGINE=InnoDB; + +CREATE TABLE `financial_operations` (`id` int NOT NULL AUTO_INCREMENT, `operation_id` varchar(64) NOT NULL, `type` varchar(64) NOT NULL, `status` varchar(20) NOT NULL DEFAULT 'running', `result_json` text NULL, `error_message` varchar(500) NULL, `created_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), `updated_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), UNIQUE INDEX `IDX_f15aa4c89aa57366fdba8a84db` (`operation_id`), PRIMARY KEY (`id`)) ENGINE=InnoDB; + +CREATE TABLE `expense_types` (`id` int NOT NULL AUTO_INCREMENT, `code` varchar(30) NOT NULL, `name` varchar(30) NOT NULL, `category` varchar(20) NOT NULL DEFAULT 'room', `sort_order` int NOT NULL DEFAULT '0', `enabled` tinyint NOT NULL DEFAULT 1, `created_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), UNIQUE INDEX `IDX_36eda3eb0f6740ecf2ba906012` (`code`), PRIMARY KEY (`id`)) ENGINE=InnoDB; + +CREATE TABLE `exam_scores` (`id` int NOT NULL AUTO_INCREMENT, `student_id` int NOT NULL, `enrollment_id` int NULL, `exam_type` varchar(50) NULL, `exam_name` varchar(100) NULL, `subject` varchar(50) NULL, `score` decimal(5,2) NULL, `class_avg` decimal(5,2) NULL, `rank` int NULL, `exam_date` date NULL, `status` varchar(20) NOT NULL DEFAULT 'active', `created_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), `updated_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), PRIMARY KEY (`id`)) ENGINE=InnoDB; + +CREATE TABLE `ding_attendance_raw` (`id` int NOT NULL AUTO_INCREMENT, `ding_user_id` varchar(100) NOT NULL, `user_name` varchar(100) NOT NULL, `attendance_date` date NOT NULL, `ding_id` varchar(100) NOT NULL, `check_in_time` datetime NULL, `check_out_time` datetime NULL, `attendance_type` varchar(20) NOT NULL, `time_result` varchar(20) NOT NULL, `location_result` varchar(20) NULL, `punch_source` varchar(40) NULL, `punch_device_name` varchar(100) NULL, `punch_device_id` varchar(100) NULL, `match_status` varchar(20) NOT NULL DEFAULT 'unmatched', `matched_student_id` int NULL, `raw_data` text NULL, `created_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), `updated_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), INDEX `IDX_d6680d5150f0bfa47dbc1fe96f` (`match_status`), INDEX `IDX_088de070f537b15ab7da255e5b` (`attendance_date`), UNIQUE INDEX `IDX_997849bb04ff69149fcf00a8d3` (`ding_id`), PRIMARY KEY (`id`)) ENGINE=InnoDB; + +CREATE TABLE `deposit_installments` (`id` int NOT NULL AUTO_INCREMENT, `deposit_id` int NOT NULL, `amount` decimal(10,2) NOT NULL, `due_date` date NOT NULL, `paid_date` date NULL, `status` varchar(20) NOT NULL DEFAULT 'pending', `created_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), PRIMARY KEY (`id`)) ENGINE=InnoDB; + +CREATE TABLE `deposits` (`id` int NOT NULL AUTO_INCREMENT, `student_id` int NOT NULL, `amount` decimal(10,2) NOT NULL DEFAULT '500.00', `status` varchar(20) NOT NULL DEFAULT 'paid', `paid_date` date NOT NULL, `refund_date` date NULL, `refund_amount` decimal(10,2) NULL, `deduction_amount` decimal(10,2) NOT NULL DEFAULT '0.00', `deduction_reason` text NULL, `notes` text NULL, `recorded_by` int NULL, `refunded_by` int NULL, `refunded_at` datetime NULL, `created_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), PRIMARY KEY (`id`)) ENGINE=InnoDB; + +CREATE TABLE `classrooms` (`id` int NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `building` varchar(50) NULL, `floor` int NULL, `capacity` int NOT NULL DEFAULT '30', `room_type` varchar(20) NOT NULL DEFAULT '大', `status` varchar(20) NOT NULL DEFAULT 'available', `notes` text NULL, `created_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), PRIMARY KEY (`id`)) ENGINE=InnoDB; + +CREATE TABLE `classroom_rentals` (`id` int NOT NULL AUTO_INCREMENT, `classroom_id` int NOT NULL, `lessor_organization_id` int NULL, `lessee_organization_id` int NULL, `start_date` date NOT NULL, `end_date` date NOT NULL, `contract_path` varchar(255) NULL, `contract_original_name` varchar(255) NULL, `daily_rate` decimal(10,2) NULL, `total_amount` decimal(10,2) NULL, `status` varchar(20) NOT NULL DEFAULT 'active', `notes` text NULL, `created_by` int NULL, `created_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), `updated_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), INDEX `IDX_b748a951d00b3f0c2090d10397` (`classroom_id`, `start_date`, `end_date`), PRIMARY KEY (`id`)) ENGINE=InnoDB; + +CREATE TABLE `classes` (`id` int NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `code` varchar(50) NOT NULL, `class_type` varchar(20) NOT NULL, `start_date` date NULL, `end_date` date NULL, `status` varchar(20) NOT NULL DEFAULT 'enrolling', `head_teacher_id` int NULL, `life_teacher_id` int NULL, `academic_teacher_id` int NULL, `max_students` int NOT NULL DEFAULT '0', `notes` text NULL, `is_archived` tinyint NOT NULL DEFAULT 0, `created_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), `updated_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), UNIQUE INDEX `IDX_cf7491878e0fca859943862998` (`code`), PRIMARY KEY (`id`)) ENGINE=InnoDB; + +CREATE TABLE `class_teacher` (`id` int NOT NULL AUTO_INCREMENT, `class_id` int NOT NULL, `user_id` int NOT NULL, `role_type` varchar(30) NOT NULL, `subject` varchar(50) NULL, `created_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), UNIQUE INDEX `IDX_0117e9171e1533ff7b5c63f5d6` (`class_id`, `user_id`, `role_type`), PRIMARY KEY (`id`)) ENGINE=InnoDB; + +CREATE TABLE `class_student` (`id` int NOT NULL AUTO_INCREMENT, `class_id` int NOT NULL, `student_id` int NOT NULL, `join_date` date NULL, `leave_date` date NULL, `status` varchar(10) NOT NULL DEFAULT 'active', `created_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), UNIQUE INDEX `IDX_b0ed786e05e93dd9bf77189af1` (`class_id`, `student_id`), PRIMARY KEY (`id`)) ENGINE=InnoDB; + +CREATE TABLE `class_schedule` (`id` int NOT NULL AUTO_INCREMENT, `class_id` int NULL, `classroom_id` int NOT NULL, `week_day` int NOT NULL, `start_time` varchar(5) NOT NULL, `end_time` varchar(5) NOT NULL, `attendance_advance_minutes` int NOT NULL DEFAULT '30', `start_date` date NOT NULL, `end_date` date NOT NULL, `subject` varchar(50) NOT NULL, `teacher_id` int NULL, `schedule_type` varchar(20) NOT NULL DEFAULT 'INTERNAL', `rental_id` int NULL, `status` varchar(20) NOT NULL DEFAULT 'active', `notes` text NULL, `created_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), `updated_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), PRIMARY KEY (`id`)) ENGINE=InnoDB; + +CREATE TABLE `attendance_records` (`id` int NOT NULL AUTO_INCREMENT, `student_id` int NOT NULL, `class_id` int NULL, `schedule_id` int NULL, `attendance_session_id` int NULL, `attendance_date` date NOT NULL, `session` varchar(20) NOT NULL, `status` varchar(20) NOT NULL, `remark` varchar(200) NULL, `source` varchar(20) NOT NULL DEFAULT 'manual', `punch_time` datetime NULL, `punch_source` varchar(40) NULL, `punch_device_name` varchar(100) NULL, `punch_device_id` varchar(100) NULL, `created_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), `updated_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), UNIQUE INDEX `IDX_43ac61c4ffa4117b738dd3a1e4` (`attendance_session_id`, `student_id`), INDEX `IDX_6b8f69a76bea22962e54bd21f5` (`student_id`, `attendance_date`), INDEX `IDX_a8eee7b8a0e0af27e79cb27ccc` (`class_id`, `attendance_date`), PRIMARY KEY (`id`)) ENGINE=InnoDB; + +CREATE TABLE `attendance_sessions` (`id` int NOT NULL AUTO_INCREMENT, `schedule_id` int NOT NULL, `class_id` int NOT NULL, `lesson_date` date NOT NULL, `status` varchar(20) NOT NULL DEFAULT 'in_progress', `started_by` int NULL, `started_at` datetime NULL, `completed_by` int NULL, `completed_at` datetime NULL, `created_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), `updated_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), UNIQUE INDEX `IDX_d4288982a2baaa6085cf872990` (`schedule_id`, `lesson_date`), PRIMARY KEY (`id`)) ENGINE=InnoDB; + +CREATE TABLE `attendance_period_configs` (`id` int NOT NULL AUTO_INCREMENT, `period_key` varchar(40) NOT NULL, `label` varchar(40) NOT NULL, `start_time` varchar(5) NOT NULL, `end_time` varchar(5) NOT NULL, `sort_order` int NOT NULL DEFAULT '0', `enabled` tinyint NOT NULL DEFAULT 1, `created_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), `updated_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), INDEX `IDX_02b29b9018684af3e3837408e0` (`sort_order`), UNIQUE INDEX `IDX_1cd8e45776b2dd7efb84ad994e` (`period_key`), PRIMARY KEY (`id`)) ENGINE=InnoDB; + +CREATE TABLE `attendance_devices` (`id` int NOT NULL AUTO_INCREMENT, `device_sn` varchar(100) NOT NULL, `device_name` varchar(100) NOT NULL, `classroom_id` int NOT NULL, `status` varchar(20) NOT NULL DEFAULT 'active', `location` varchar(200) NULL, `notes` text NULL, `created_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), `updated_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), INDEX `IDX_2d2806b8906e201230afb3376a` (`classroom_id`), UNIQUE INDEX `IDX_c6835138ea258d1259246dd736` (`device_sn`), PRIMARY KEY (`id`)) ENGINE=InnoDB; + +CREATE TABLE `archive_attachments` (`id` int NOT NULL AUTO_INCREMENT, `student_id` int NOT NULL, `category` varchar(50) NULL, `file_name` varchar(255) NULL, `file_path` varchar(500) NULL, `file_size` int NULL, `mime_type` varchar(100) NULL, `status` varchar(20) NOT NULL DEFAULT 'active', `created_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), `updated_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), PRIMARY KEY (`id`)) ENGINE=InnoDB; + +CREATE TABLE `ai_config` (`id` int NOT NULL AUTO_INCREMENT, `singleton_key` varchar(20) NOT NULL DEFAULT 'GLOBAL', `provider` varchar(50) NOT NULL DEFAULT 'OPENAI', `base_url` varchar(500) NULL, `encrypted_api_key` text NULL, `api_key_iv` varchar(50) NULL, `api_key_auth_tag` varchar(50) NULL, `key_last4` varchar(4) NULL, `default_model` varchar(100) NULL, `enabled` tinyint NOT NULL DEFAULT 0, `timeout_ms` int NOT NULL DEFAULT '30000', `verified` tinyint NOT NULL DEFAULT 0, `last_tested_at` datetime NULL, `last_test_latency_ms` int NULL, `created_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), `updated_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), UNIQUE INDEX `uq_ai_config_singleton` (`singleton_key`), PRIMARY KEY (`id`)) ENGINE=InnoDB; + +CREATE TABLE `integration_config` (`id` int NOT NULL AUTO_INCREMENT, `type` varchar(50) NOT NULL, `sync_resource` varchar(50) NULL, `is_sync` tinyint NOT NULL DEFAULT 0, `created_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), `updated_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), PRIMARY KEY (`id`)) ENGINE=InnoDB; + +CREATE TABLE `integration_config_detail` (`id` int NOT NULL AUTO_INCREMENT, `config_id` int NOT NULL, `name` varchar(100) NULL, `type` varchar(50) NOT NULL, `content` text NULL, `enable` tinyint NOT NULL DEFAULT 0, `created_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), `updated_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), INDEX `IDX_a58106c4b876c86a5e085e4f42` (`config_id`), PRIMARY KEY (`id`)) ENGINE=InnoDB; + +CREATE TABLE `role_permissions` (`role_id` int NOT NULL, `permission_id` int NOT NULL, INDEX `IDX_178199805b901ccd220ab7740e` (`role_id`), INDEX `IDX_17022daf3f885f7d35423e9971` (`permission_id`), PRIMARY KEY (`role_id`, `permission_id`)) ENGINE=InnoDB; + +CREATE TABLE `user_roles` (`user_id` int NOT NULL, `role_id` int NOT NULL, INDEX `IDX_87b8888186ca9769c960e92687` (`user_id`), INDEX `IDX_b23c65e50a758245a33ee35fda` (`role_id`), PRIMARY KEY (`user_id`, `role_id`)) ENGINE=InnoDB; + +ALTER TABLE `room_expenses` ADD CONSTRAINT `FK_7bb1ca73f8161af27e538917a55` FOREIGN KEY (`room_id`) REFERENCES `rooms`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION; + +ALTER TABLE `beds` ADD CONSTRAINT `FK_fd7413faee42749f1b2e8270394` FOREIGN KEY (`room_id`) REFERENCES `rooms`(`id`) ON DELETE CASCADE ON UPDATE NO ACTION; + +ALTER TABLE `lockers` ADD CONSTRAINT `FK_344ae29b9cacbee1e24da7c07ea` FOREIGN KEY (`room_id`) REFERENCES `rooms`(`id`) ON DELETE CASCADE ON UPDATE NO ACTION; + +ALTER TABLE `occupancies` ADD CONSTRAINT `FK_bed301f5a4e2135dd14b55fec0e` FOREIGN KEY (`bed_id`) REFERENCES `beds`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION; + +ALTER TABLE `occupancies` ADD CONSTRAINT `FK_ea80244bd95c8c04334931e39a2` FOREIGN KEY (`locker_id`) REFERENCES `lockers`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION; + +ALTER TABLE `occupancies` ADD CONSTRAINT `FK_3c80232a56303a75ffd544b982f` FOREIGN KEY (`responsible_organization_id`) REFERENCES `organizations`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION; + +ALTER TABLE `occupancies` ADD CONSTRAINT `FK_dc062720596049470b56ce06973` FOREIGN KEY (`student_id`) REFERENCES `students`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION; + +ALTER TABLE `occupancies` ADD CONSTRAINT `FK_9f7acc7567e42dda281ead9a75a` FOREIGN KEY (`room_id`) REFERENCES `rooms`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION; + +ALTER TABLE `personal_expenses` ADD CONSTRAINT `FK_5e5bcfb70705c2c349c74b70912` FOREIGN KEY (`student_id`) REFERENCES `students`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION; + +ALTER TABLE `bill_items` ADD CONSTRAINT `FK_b424156152a3230b034bdb51db4` FOREIGN KEY (`bill_id`) REFERENCES `bills`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION; + +ALTER TABLE `bills` ADD CONSTRAINT `FK_65a6cb602ebcbac1bf7a995e0c9` FOREIGN KEY (`student_id`) REFERENCES `students`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION; + +ALTER TABLE `students` ADD CONSTRAINT `FK_fb3eff90b11bddf7285f9b4e281` FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE SET NULL ON UPDATE NO ACTION; + +ALTER TABLE `students` ADD CONSTRAINT `FK_9571384818ecf499779d3a9d141` FOREIGN KEY (`organization_id`) REFERENCES `organizations`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION; + +ALTER TABLE `student_wallets` ADD CONSTRAINT `FK_07a434ad1a960d506386754d592` FOREIGN KEY (`student_id`) REFERENCES `students`(`id`) ON DELETE CASCADE ON UPDATE NO ACTION; + +ALTER TABLE `student_profiles` ADD CONSTRAINT `FK_4cedc08d3dc1f2c2da8a12f7a88` FOREIGN KEY (`student_id`) REFERENCES `students`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION; + +ALTER TABLE `student_enrollments` ADD CONSTRAINT `FK_08caafd8a026a19ecf54db0e958` FOREIGN KEY (`student_id`) REFERENCES `students`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION; + +ALTER TABLE `student_ding_mapping` ADD CONSTRAINT `FK_f9ba15ff04de8ffbd8679ae9dbb` FOREIGN KEY (`student_id`) REFERENCES `students`(`id`) ON DELETE CASCADE ON UPDATE NO ACTION; + +ALTER TABLE `result_archives` ADD CONSTRAINT `FK_377bba8eb6a027eecd9737d4ed6` FOREIGN KEY (`student_id`) REFERENCES `students`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION; + +ALTER TABLE `notifications` ADD CONSTRAINT `FK_5332a4daa46fd3f4e6625dd275d` FOREIGN KEY (`recipient_id`) REFERENCES `users`(`id`) ON DELETE CASCADE ON UPDATE NO ACTION; + +ALTER TABLE `learning_records` ADD CONSTRAINT `FK_61f4664f02d86245e1231493951` FOREIGN KEY (`student_id`) REFERENCES `students`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION; + +ALTER TABLE `exam_scores` ADD CONSTRAINT `FK_925e4f79518c947512cb600b452` FOREIGN KEY (`student_id`) REFERENCES `students`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION; + +ALTER TABLE `exam_scores` ADD CONSTRAINT `FK_b0d812b639f32939ea57b81a89f` FOREIGN KEY (`enrollment_id`) REFERENCES `student_enrollments`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION; + +ALTER TABLE `ding_attendance_raw` ADD CONSTRAINT `FK_2b06491a70540db69e78e57ecf2` FOREIGN KEY (`matched_student_id`) REFERENCES `students`(`id`) ON DELETE SET NULL ON UPDATE NO ACTION; + +ALTER TABLE `deposit_installments` ADD CONSTRAINT `FK_fba3c52b86d51fff34593877ff5` FOREIGN KEY (`deposit_id`) REFERENCES `deposits`(`id`) ON DELETE CASCADE ON UPDATE NO ACTION; + +ALTER TABLE `deposits` ADD CONSTRAINT `FK_ec1b340d2963ed907421696fc33` FOREIGN KEY (`student_id`) REFERENCES `students`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION; + +ALTER TABLE `classroom_rentals` ADD CONSTRAINT `FK_6a0af46fe476070c4c660307641` FOREIGN KEY (`classroom_id`) REFERENCES `classrooms`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION; + +ALTER TABLE `classroom_rentals` ADD CONSTRAINT `FK_40a46e95470ff454ffdcbb1e902` FOREIGN KEY (`lessor_organization_id`) REFERENCES `organizations`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION; + +ALTER TABLE `classroom_rentals` ADD CONSTRAINT `FK_f60533a91f16a331c9388308418` FOREIGN KEY (`lessee_organization_id`) REFERENCES `organizations`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION; + +ALTER TABLE `class_teacher` ADD CONSTRAINT `FK_9b647c8d8894a661dc1dac40361` FOREIGN KEY (`class_id`) REFERENCES `classes`(`id`) ON DELETE CASCADE ON UPDATE NO ACTION; + +ALTER TABLE `class_teacher` ADD CONSTRAINT `FK_a9f0e77d193b015b6d5ca6637f5` FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE ON UPDATE NO ACTION; + +ALTER TABLE `class_student` ADD CONSTRAINT `FK_60674dc4f23b794de0a3560e200` FOREIGN KEY (`class_id`) REFERENCES `classes`(`id`) ON DELETE CASCADE ON UPDATE NO ACTION; + +ALTER TABLE `class_student` ADD CONSTRAINT `FK_451334295b9cf221d55aca7cac1` FOREIGN KEY (`student_id`) REFERENCES `students`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION; + +ALTER TABLE `class_schedule` ADD CONSTRAINT `FK_0aa74ee427967d4c82f298511bc` FOREIGN KEY (`class_id`) REFERENCES `classes`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION; + +ALTER TABLE `class_schedule` ADD CONSTRAINT `FK_c1d5d50c871fdf563be13d6e93a` FOREIGN KEY (`classroom_id`) REFERENCES `classrooms`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION; + +ALTER TABLE `class_schedule` ADD CONSTRAINT `FK_f1e761cac59f2d0a3d7949468c5` FOREIGN KEY (`teacher_id`) REFERENCES `users`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION; + +ALTER TABLE `attendance_records` ADD CONSTRAINT `FK_dbace05c012526710663f8d8911` FOREIGN KEY (`student_id`) REFERENCES `students`(`id`) ON DELETE CASCADE ON UPDATE NO ACTION; + +ALTER TABLE `attendance_records` ADD CONSTRAINT `FK_cc48ccbd03396874857ab06ac3b` FOREIGN KEY (`class_id`) REFERENCES `classes`(`id`) ON DELETE SET NULL ON UPDATE NO ACTION; + +ALTER TABLE `attendance_records` ADD CONSTRAINT `FK_0dfe6d219c4a7a162ca0f84243c` FOREIGN KEY (`schedule_id`) REFERENCES `class_schedule`(`id`) ON DELETE SET NULL ON UPDATE NO ACTION; + +ALTER TABLE `attendance_records` ADD CONSTRAINT `FK_32a57ba853da6939ceaccf8cfc8` FOREIGN KEY (`attendance_session_id`) REFERENCES `attendance_sessions`(`id`) ON DELETE SET NULL ON UPDATE NO ACTION; + +ALTER TABLE `attendance_sessions` ADD CONSTRAINT `FK_107206b64415a644d571d597ca3` FOREIGN KEY (`schedule_id`) REFERENCES `class_schedule`(`id`) ON DELETE RESTRICT ON UPDATE NO ACTION; + +ALTER TABLE `attendance_sessions` ADD CONSTRAINT `FK_6fc552e07b31ac92445cd3e21fa` FOREIGN KEY (`class_id`) REFERENCES `classes`(`id`) ON DELETE RESTRICT ON UPDATE NO ACTION; + +ALTER TABLE `attendance_devices` ADD CONSTRAINT `FK_2d2806b8906e201230afb3376af` FOREIGN KEY (`classroom_id`) REFERENCES `classrooms`(`id`) ON DELETE CASCADE ON UPDATE NO ACTION; + +ALTER TABLE `archive_attachments` ADD CONSTRAINT `FK_0bc7365c2629d0c6dae8052fc25` FOREIGN KEY (`student_id`) REFERENCES `students`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION; + +ALTER TABLE `integration_config_detail` ADD CONSTRAINT `FK_a58106c4b876c86a5e085e4f42b` FOREIGN KEY (`config_id`) REFERENCES `integration_config`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION; + +ALTER TABLE `role_permissions` ADD CONSTRAINT `FK_178199805b901ccd220ab7740ec` FOREIGN KEY (`role_id`) REFERENCES `roles`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; + +ALTER TABLE `role_permissions` ADD CONSTRAINT `FK_17022daf3f885f7d35423e9971e` FOREIGN KEY (`permission_id`) REFERENCES `permissions`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; + +ALTER TABLE `user_roles` ADD CONSTRAINT `FK_87b8888186ca9769c960e926870` FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; + +ALTER TABLE `user_roles` ADD CONSTRAINT `FK_b23c65e50a758245a33ee35fda1` FOREIGN KEY (`role_id`) REFERENCES `roles`(`id`) ON DELETE NO ACTION ON UPDATE NO ACTION; + +CREATE TABLE `exams` ( + `id` int NOT NULL AUTO_INCREMENT, + `exam_type` varchar(50) NOT NULL, + `exam_name` varchar(100) NOT NULL, + `subject` varchar(50) NOT NULL, + `exam_date` date NOT NULL, + `class_id` int NOT NULL, + `status` varchar(20) NOT NULL DEFAULT 'active', + `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + INDEX `idx_exams_class_status` (`class_id`, `status`), + CONSTRAINT `fk_exams_class` FOREIGN KEY (`class_id`) REFERENCES `classes` (`id`), + PRIMARY KEY (`id`) +) ENGINE=InnoDB; + +ALTER TABLE `exam_scores` ADD COLUMN `exam_id` int NULL; + +CREATE INDEX `idx_exam_scores_exam_id` ON `exam_scores` (`exam_id`); + +ALTER TABLE `exam_scores` ADD CONSTRAINT `fk_exam_scores_exam` FOREIGN KEY (`exam_id`) REFERENCES `exams` (`id`) ON DELETE CASCADE; + +CREATE TABLE `room_inspections` ( + `id` int NOT NULL AUTO_INCREMENT, `inspection_date` date NOT NULL, `room_id` int NOT NULL, + `inspector_id` int NULL, `inspector_name` varchar(50) NOT NULL, `source` varchar(20) NOT NULL DEFAULT 'manual', + `submitted_at` datetime NOT NULL, `created_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), + `updated_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), + UNIQUE INDEX `uq_room_inspections_date_room` (`inspection_date`, `room_id`), + INDEX `idx_room_inspections_inspector_id` (`inspector_id`), PRIMARY KEY (`id`), + CONSTRAINT `fk_room_inspections_room` FOREIGN KEY (`room_id`) REFERENCES `rooms` (`id`) ON DELETE CASCADE, + CONSTRAINT `fk_room_inspections_inspector` FOREIGN KEY (`inspector_id`) REFERENCES `users` (`id`) ON DELETE SET NULL +) ENGINE=InnoDB; + +CREATE TABLE `room_inspection_details` ( + `id` int NOT NULL AUTO_INCREMENT, `inspection_id` int NOT NULL, `occupancy_id` int NOT NULL, `student_id` int NOT NULL, + `bed_id` int NULL, `status` varchar(20) NOT NULL, `student_name_snapshot` varchar(100) NOT NULL, + `bed_number_snapshot` varchar(20) NULL, UNIQUE INDEX `uq_room_inspection_details_occupancy` (`inspection_id`, `occupancy_id`), + INDEX `idx_room_inspection_details_occupancy_id` (`occupancy_id`), INDEX `idx_room_inspection_details_student_id` (`student_id`), + INDEX `idx_room_inspection_details_bed_id` (`bed_id`), PRIMARY KEY (`id`), + CONSTRAINT `fk_room_inspection_details_inspection` FOREIGN KEY (`inspection_id`) REFERENCES `room_inspections` (`id`) ON DELETE CASCADE, + CONSTRAINT `fk_room_inspection_details_occupancy` FOREIGN KEY (`occupancy_id`) REFERENCES `occupancies` (`id`) ON DELETE RESTRICT, + CONSTRAINT `fk_room_inspection_details_student` FOREIGN KEY (`student_id`) REFERENCES `students` (`id`) ON DELETE RESTRICT, + CONSTRAINT `fk_room_inspection_details_bed` FOREIGN KEY (`bed_id`) REFERENCES `beds` (`id`) ON DELETE SET NULL +) ENGINE=InnoDB; + +CREATE TABLE `jinshuju_match_rules` (`id` int NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `form_token` varchar(64) NOT NULL, `mappings` text NOT NULL, `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`)) ENGINE=InnoDB; + +CREATE TABLE `ai_conversations` (`id` int NOT NULL AUTO_INCREMENT, `user_id` int NOT NULL, `title` varchar(100) NOT NULL DEFAULT '新对话', `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `last_message_at` datetime NULL, INDEX `idx_ai_conversations_user_last_message` (`user_id`, `last_message_at`), PRIMARY KEY (`id`), CONSTRAINT `fk_ai_conversations_user` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE) ENGINE=InnoDB; + +CREATE TABLE `ai_messages` (`id` int NOT NULL AUTO_INCREMENT, `conversation_id` int NOT NULL, `role` varchar(20) NOT NULL, `content` text NOT NULL, `reasoning_content` text NULL, `status` varchar(20) NOT NULL DEFAULT 'completed', `error_code` varchar(50) NULL, `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX `idx_ai_messages_conversation_created` (`conversation_id`, `created_at`), PRIMARY KEY (`id`), CONSTRAINT `fk_ai_messages_conversation` FOREIGN KEY (`conversation_id`) REFERENCES `ai_conversations` (`id`) ON DELETE CASCADE) ENGINE=InnoDB; + +CREATE TABLE `ai_tool_runs` (`id` int NOT NULL AUTO_INCREMENT, `message_id` int NOT NULL, `tool_call_id` varchar(100) NOT NULL, `tool_name` varchar(64) NOT NULL, `arguments_summary` text NULL, `result_summary` text NULL, `status` varchar(20) NOT NULL, `duration_ms` int NULL, `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, INDEX `idx_ai_tool_runs_message` (`message_id`), PRIMARY KEY (`id`), CONSTRAINT `fk_ai_tool_runs_message` FOREIGN KEY (`message_id`) REFERENCES `ai_messages` (`id`) ON DELETE CASCADE) ENGINE=InnoDB; + +CREATE TABLE `evening_study_duties` ( + `id` int NOT NULL AUTO_INCREMENT, `duty_date` date NOT NULL, `teacher_id` int NULL, `teacher_name` varchar(50) NOT NULL, + `source` varchar(100) NOT NULL DEFAULT '暑期班课表 更新-2.xlsx', `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + UNIQUE INDEX `uq_evening_study_duty_date` (`duty_date`), PRIMARY KEY (`id`), + CONSTRAINT `fk_evening_study_duty_teacher` FOREIGN KEY (`teacher_id`) REFERENCES `users` (`id`) ON DELETE SET NULL +) ENGINE=InnoDB; + +CREATE TABLE `migrations` (`id` int NOT NULL AUTO_INCREMENT, `timestamp` bigint NOT NULL, `name` varchar(255) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB; + +INSERT INTO `migrations` (`timestamp`, `name`) VALUES +(1784520727860, 'InitialSchema1784520727860'), +(1784600000000, 'AddExamManagement1784600000000'), +(1784680000000, 'AddRoomInspections1784680000000'), +(1784700000000, 'AddJinshujuMatchRules1784700000000'), +(1784780000000, 'AddAiChat1784780000000');