Update Saqel Platform: 2026-09-04 02:04:43
This commit is contained in:
+114
-7
@@ -54,25 +54,131 @@ CREATE TABLE IF NOT EXISTS `auth_identities` (
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- ------------------------------------------------------------------------------
|
||||
-- 2. Table: schools (المدارس الخاصة، مدارس الثقافة العسكرية، والمراكز الشريكة)
|
||||
-- 2. Table: directorates (المظلات المركزية: مديرية الثقافة العسكرية ومجمعات المدارس)
|
||||
-- ------------------------------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `schools` (
|
||||
CREATE TABLE IF NOT EXISTS `directorates` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`uuid` CHAR(36) NOT NULL UNIQUE,
|
||||
`code` VARCHAR(50) NOT NULL UNIQUE,
|
||||
`name` VARCHAR(255) NOT NULL,
|
||||
`type` ENUM('military_culture', 'private', 'public', 'center') NOT NULL DEFAULT 'private',
|
||||
`director_name` VARCHAR(255) DEFAULT NULL,
|
||||
`type` ENUM('military_culture', 'private_group', 'ministry') NOT NULL DEFAULT 'military_culture',
|
||||
`commander_name` VARCHAR(255) DEFAULT NULL,
|
||||
`phone` VARCHAR(50) DEFAULT NULL,
|
||||
`city` VARCHAR(100) DEFAULT 'Amman',
|
||||
`total_schools` INT UNSIGNED NOT NULL DEFAULT 43,
|
||||
`total_students` INT UNSIGNED NOT NULL DEFAULT 19000,
|
||||
`total_teachers` INT UNSIGNED NOT NULL DEFAULT 800,
|
||||
`annual_contract_value` DECIMAL(10, 2) NOT NULL DEFAULT 20000.00,
|
||||
`is_active` TINYINT(1) NOT NULL DEFAULT 1,
|
||||
`subscription_status` ENUM('active', 'trial', 'expired') NOT NULL DEFAULT 'active',
|
||||
`contract_expires_at` TIMESTAMP NULL DEFAULT NULL,
|
||||
`created_at` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`updated_at` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- ------------------------------------------------------------------------------
|
||||
-- 3. Table: schools (المدارس والفروع التابعة مع تصنيف الوزن والموقع الجغرافي)
|
||||
-- ------------------------------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `schools` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`uuid` CHAR(36) NOT NULL UNIQUE,
|
||||
`directorate_id` BIGINT UNSIGNED DEFAULT NULL,
|
||||
`code` VARCHAR(50) NOT NULL UNIQUE,
|
||||
`name` VARCHAR(255) NOT NULL,
|
||||
`type` ENUM('military_culture', 'private', 'public', 'center') NOT NULL DEFAULT 'military_culture',
|
||||
`weight_tier` ENUM('tier_a_small', 'tier_b_medium', 'tier_c_large') NOT NULL DEFAULT 'tier_b_medium',
|
||||
`student_count` INT UNSIGNED NOT NULL DEFAULT 450,
|
||||
`teacher_count` INT UNSIGNED NOT NULL DEFAULT 25,
|
||||
`director_name` VARCHAR(255) DEFAULT NULL,
|
||||
`phone` VARCHAR(50) DEFAULT NULL,
|
||||
`city` VARCHAR(100) DEFAULT 'Amman',
|
||||
`governorate` VARCHAR(100) DEFAULT 'العاصمة',
|
||||
`latitude` DECIMAL(10, 8) DEFAULT 31.9539,
|
||||
`longitude` DECIMAL(11, 8) DEFAULT 35.9106,
|
||||
`is_active` TINYINT(1) NOT NULL DEFAULT 1,
|
||||
`subscription_status` ENUM('active', 'trial', 'expired') NOT NULL DEFAULT 'active',
|
||||
`annual_fee` DECIMAL(8, 2) NOT NULL DEFAULT 450.00,
|
||||
`contract_expires_at` TIMESTAMP NULL DEFAULT NULL,
|
||||
`created_at` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`updated_at` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_schools_directorate` (`directorate_id`),
|
||||
CONSTRAINT `fk_school_directorate` FOREIGN KEY (`directorate_id`) REFERENCES `directorates` (`id`) ON DELETE SET NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- ------------------------------------------------------------------------------
|
||||
-- 4. Table: field_recorded_lessons (الحصص الميدانية المرئية المصورة عبر تطبيق المشرف)
|
||||
-- ------------------------------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `field_recorded_lessons` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`uuid` CHAR(36) NOT NULL UNIQUE,
|
||||
`school_id` BIGINT UNSIGNED NOT NULL,
|
||||
`teacher_id` BIGINT UNSIGNED NOT NULL,
|
||||
`subject` VARCHAR(100) NOT NULL,
|
||||
`grade_level` VARCHAR(50) NOT NULL,
|
||||
`lesson_title` VARCHAR(255) NOT NULL,
|
||||
`video_path` VARCHAR(500) NOT NULL,
|
||||
`file_size_mb` DECIMAL(8, 2) NOT NULL DEFAULT 350.00,
|
||||
`duration_minutes` INT UNSIGNED NOT NULL DEFAULT 45,
|
||||
`ai_alignment_score` DECIMAL(5, 2) DEFAULT NULL,
|
||||
`teacher_talk_ratio` DECIMAL(5, 2) DEFAULT NULL,
|
||||
`pedagogical_report_json` JSON DEFAULT NULL,
|
||||
`socratic_checkpoints_json` JSON DEFAULT NULL,
|
||||
`status` ENUM('pending_ai', 'under_supervisor_review', 'approved', 'rejected') NOT NULL DEFAULT 'pending_ai',
|
||||
`recorded_by_name` VARCHAR(255) NOT NULL,
|
||||
`recorded_by_role` ENUM('principal', 'supervisor') NOT NULL DEFAULT 'principal',
|
||||
`recorded_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`created_at` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_recorded_school` (`school_id`),
|
||||
KEY `idx_recorded_teacher` (`teacher_id`),
|
||||
CONSTRAINT `fk_recorded_school` FOREIGN KEY (`school_id`) REFERENCES `schools` (`id`) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- ------------------------------------------------------------------------------
|
||||
-- 5. Table: unified_exams (الامتحانات الموحدة بنكهة التوجيهي الوزاري)
|
||||
-- ------------------------------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `unified_exams` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`uuid` CHAR(36) NOT NULL UNIQUE,
|
||||
`directorate_id` BIGINT UNSIGNED NOT NULL,
|
||||
`code` VARCHAR(50) NOT NULL UNIQUE,
|
||||
`title` VARCHAR(255) NOT NULL,
|
||||
`subject` VARCHAR(100) NOT NULL,
|
||||
`grade_level` VARCHAR(50) NOT NULL,
|
||||
`scheduled_at` DATETIME NOT NULL,
|
||||
`duration_minutes` INT UNSIGNED NOT NULL DEFAULT 60,
|
||||
`form_a_json` JSON NOT NULL,
|
||||
`form_b_json` JSON NOT NULL,
|
||||
`answer_key_json` JSON NOT NULL,
|
||||
`status` ENUM('draft', 'scheduled', 'in_progress', 'completed') NOT NULL DEFAULT 'scheduled',
|
||||
`created_at` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_unified_directorate` (`directorate_id`),
|
||||
CONSTRAINT `fk_unified_directorate` FOREIGN KEY (`directorate_id`) REFERENCES `directorates` (`id`) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- ------------------------------------------------------------------------------
|
||||
-- 6. Table: exam_school_sessions (جلسات الامتحان في كل مدرسة ومكافحة الغش)
|
||||
-- ------------------------------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `exam_school_sessions` (
|
||||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`unified_exam_id` BIGINT UNSIGNED NOT NULL,
|
||||
`school_id` BIGINT UNSIGNED NOT NULL,
|
||||
`total_students` INT UNSIGNED NOT NULL DEFAULT 0,
|
||||
`completed_count` INT UNSIGNED NOT NULL DEFAULT 0,
|
||||
`pushed_to_lab` TINYINT(1) NOT NULL DEFAULT 0,
|
||||
`pushed_to_lab_at` DATETIME DEFAULT NULL,
|
||||
`speed_anomalies_count` INT UNSIGNED NOT NULL DEFAULT 0,
|
||||
`error_clustering_count` INT UNSIGNED NOT NULL DEFAULT 0,
|
||||
`panoramic_video_path` VARCHAR(500) DEFAULT NULL,
|
||||
`panoramic_size_mb` DECIMAL(8, 2) DEFAULT 0.00,
|
||||
`status` ENUM('ready', 'in_progress', 'submitted', 'flagged_investigation') NOT NULL DEFAULT 'ready',
|
||||
`created_at` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `idx_exam_school` (`unified_exam_id`, `school_id`),
|
||||
CONSTRAINT `fk_session_exam` FOREIGN KEY (`unified_exam_id`) REFERENCES `unified_exams` (`id`) ON DELETE CASCADE,
|
||||
CONSTRAINT `fk_session_school` FOREIGN KEY (`school_id`) REFERENCES `schools` (`id`) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- ------------------------------------------------------------------------------
|
||||
-- 3. Table: school_rosters (كشوفات المدارس المعتمدة بالرقم الوطني والربط التلقائي)
|
||||
-- ------------------------------------------------------------------------------
|
||||
@@ -244,6 +350,7 @@ CREATE TABLE IF NOT EXISTS `lessons` (
|
||||
`markdown_content` LONGTEXT DEFAULT NULL COMMENT 'محتوى الدرس النصي بصيغة Markdown و LaTeX',
|
||||
`cheat_sheet_markdown` LONGTEXT DEFAULT NULL COMMENT 'ملخص الدرس السريع (Cheat Sheet)',
|
||||
`socratic_quiz_json` JSON DEFAULT NULL COMMENT 'الفحص السقراطي الذكي (سؤال وجواب)',
|
||||
`interactive_lab_json` JSON DEFAULT NULL COMMENT 'المختبر التفاعلي المسبق التجهيز (أمثلة الكتاب الوزاري + التمارين الذكية المخبوزة)',
|
||||
|
||||
`is_free_preview` TINYINT(1) NOT NULL DEFAULT 0,
|
||||
`created_at` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
Reference in New Issue
Block a user