Enrich full codebase with architectural Arabic docblocks and synchronize database_schema.sql with live database

This commit is contained in:
Hamza-Ayed
2026-09-03 16:51:29 +03:00
parent 9624cfb4c8
commit 0a61e32033
16 changed files with 310 additions and 43 deletions
+19 -1
View File
@@ -1,4 +1,19 @@
<?php
/**
* ==============================================================================
* SAQEL ENTERPRISE (EDTECH 2.0) - AUTHENTICATION & IDENTITY CONTROLLER
* ==============================================================================
*
* ملف: AuthController.php
* الهدف المعماري:
* إدارة منظومة الهوية الرقمية والدخول الآمن والتحقق عبر الواتساب (OTP) في منصة صَقِل.
* يتولى هذا الملف المهام التالية:
* 1. إرسال رموز التحقق لمرة واحدة (OTP) عبر الواتساب بواسطة بوابة نبّه الرسمية (Nabeh Gateway).
* 2. التحقق من صحة الرمز وتوليد رموز JWT المشفرة بصلاحيات محددة (طالب، معلم، ولي أمر، مدير).
* 3. حماية الحسابات من هجمات الاختراق عبر بصمة الجهاز الرقمية (Device Fingerprinting).
* 4. إدارة جلسات تسجيل الدخول والخروج والتحقق من صلاحية التوكن (Token Introspection).
* 5. التحقق عبر الرقم الوطني لطلاب مديرية الثقافة العسكرية والمدارس الحكومية.
*/
namespace App\Controllers;
@@ -13,8 +28,11 @@ use App\Services\NabehService;
class AuthController
{
/**
* Request OTP via WhatsApp (Nabeh Gateway)
* طلب رمز تحقق OTP جديد وإرساله عبر الواتساب بواسطة بوابة نبّه
* POST /api/auth/otp/request
*
* @param Request $request طلب الـ HTTP المحتوي على رقم الهاتف بصيغة دولية أو محلية
* @param Response $response كائن الاستجابة بحالة الإرسال وزمن انتهاء الصلاحية
*/
public function requestOtp(Request $request, Response $response): void
{
@@ -1,4 +1,21 @@
<?php
/**
* ==============================================================================
* SAQEL ENTERPRISE (EDTECH 2.0) - CURRICULUM & STUDIO CONTROLLER
* ==============================================================================
*
* ملف: CurriculumController.php
* الهدف المعماري:
* إدارة منظومة تفريغ وفهرسة كتب المناهج الوزارية واستوديو المناهج (Curriculum Studio).
* يتولى هذا الملف المهام التالية:
* 1. استلام كتب الـ PDF الوزارية المرفوعة وتمريرها لعمال الخلفية لاستخراج شجرة الماركداون.
* 2. متابعة حالة مهام المعالجة والتفريغ التلقائي وإرجاع سجلات التشغيل الحية (Live Logs).
* 3. استرجاع الشجرة الهرمية للمنهاج (المرحلة، المادة، الفصل، الوحدة، الدرس).
* 4. حفظ وتحديث محتوى ملفات الماركداون للدروس وربطها مع قاعدة البيانات.
* 5. توليد الملخصات الذكية (Cheat Sheets) والفحوصات السقراطية عبر Gemini.
* 6. توليد وتحديث بنوك الأسئلة (50 سؤالاً للوحدة) بالذكاء الاصطناعي بنقرة واحدة من الاستوديو.
* 7. استضافة ورفع ملفات الفيديو مباشرة وربطها بالدروس.
*/
namespace App\Controllers;
@@ -10,7 +27,11 @@ use App\Services\CurriculumExtractorService;
class CurriculumController
{
/**
* Upload and Queue Real Ministry PDF Document for Deep Extraction
* استلام ورفع كتاب المنهاج الوزاري بصيغة PDF وجدولته في طابور المعالجة المعمقة
* POST /api/curriculum/upload-pdf
*
* @param Request $request طلب الـ HTTP المحتوي على ملف الـ PDF المرفوع
* @param Response $response كائن الاستجابة بمعرف المهمة ومسار المتابعة
*/
public function uploadPdf(Request $request, Response $response): void
{
+55 -4
View File
@@ -1,4 +1,20 @@
<?php
/**
* ==============================================================================
* SAQEL ENTERPRISE (EDTECH 2.0) - EXAM & ADAPTIVE ASSESSMENT CONTROLLER
* ==============================================================================
*
* ملف: ExamController.php
* الهدف المعماري:
* إدارة منظومة القياس والتقويم والامتحانات التكيفية في منصة صَقِل.
* يقوم هذا الملف بالوظائف الجوهرية التالية:
* 1. استرجاع قائمة الامتحانات والفحوصات السقراطية (in_video_checkpoint, lesson_exam, unit_exam).
* 2. محرك الاختيار التكيفي (Adaptive 60/40 Engine): فحص نقاط ضعف الطالب وسحب 60% من أسئلة الامتحان
* من المفاهيم التي تعثر فيها الطالب سابقاً لسد الثغرات وتحقيق الإتقان، و 40% من باقي مفاهيم الوحدة.
* 3. استلام وتصحيح إجابات الامتحانات لحظياً وحساب نسبة الإتقان وتوليد تقرير التشخيص الذكي (AI Diagnostic Report).
* 4. إطلاق إشعار الواتساب التوجيهي الهادئ لولي الأمر عبر بوابة "نبّه" عند رصد حاجة الطالب للمعالجة.
* 5. حساب مؤشرات الجاهزية للتوجيهي ونقاط الإتقان لكل مادة دراسية.
*/
namespace App\Controllers;
@@ -10,8 +26,11 @@ use App\Core\Validator;
class ExamController
{
/**
* List exams for a specific course/lesson/scope
* جلب قائمة الامتحانات المتاحة لمادة أو درس معين مع عدد الأسئلة
* GET /api/exams?course_id=1&lesson_id=2&scope=in_video_checkpoint
*
* @param Request $request طلب الـ HTTP المحتوي على معاملات التصفية (course_id, lesson_id, scope)
* @param Response $response كائن الاستجابة لإرجاع مصفوفة الامتحانات بصيغة JSON
*/
public function getExams(Request $request, Response $response): void
{
@@ -50,8 +69,17 @@ class ExamController
}
/**
* Get single exam with questions and sanitized options
* استرجاع تفاصيل الامتحان مع الأسئلة والخيارات المنقحة (ومحرك الاختيار التكيفي 60/40)
* GET /api/exams/{id}
*
* آلية العمل:
* 1. التحقق من وجود الامتحان، وإذا كان غير مفهرس يتم استدعاء باني الأسئلة التلقائي للوحدة الأولى.
* 2. تطبيق خوارزمية التعلم التكيفي (Adaptive Sampling): إذا كان بنك الأسئلة يحتوي على أكثر من 15 سؤالاً،
* يتم فحص تاريخ الطالب واستخراج المفاهيم التي أخطأ فيها سابقاً وسحب 60% من أسئلة الامتحان منها.
* 3. تنقيح خيارات الإجابة وحجب حقل (is_correct) عن الطالب منعاً للغش وإظهاره فقط للمعلم أو الأدمن.
*
* @param Request $request طلب الـ HTTP المحتوي على معرف الامتحان في المسار ومعرف الطالب المصادق عليه
* @param Response $response كائن الاستجابة لإرجاع كائن الامتحان بأسئلته الـ 15 التكيفية
*/
public function getExamDetails(Request $request, Response $response): void
{
@@ -141,8 +169,19 @@ class ExamController
}
/**
* Submit Exam Attempt & Calculate Instant AI Diagnostic Evaluation
* تصحيح الامتحان لحظياً بالذكاء الاصطناعي وتوليد التقرير التشخيصي وإشعار ولي الأمر
* POST /api/exams/{id}/submit
*
* الوظائف المنجزة:
* 1. التحقق من إجابات الطالب ومقارنتها بالخيارات الصحيحة وحساب مجموع النقاط ونسبة الإتقان المئوية.
* 2. تسجيل كل إجابة في جدول (student_question_answers) لبناء ملف الضعف والقوة للتعلم التكيفي المستقبلي.
* 3. توليد تقرير تشخيصي ذكي (AI Diagnostic Report) يبرز المفاهيم المتقنة والمفاهيم المتعثر فيها بدقة.
* 4. فحص شرط النجاح: إذا كانت النتيجة أقل من نسبة النجاح، يتم ضبط الحالة على needs_remediation
* وإطلاق رسالة توجيهية هادئة عبر الواتساب لولي الأمر عبر بوابة نبّه (Nabeh Gateway).
* 5. تحديث جدول إتقان الطالب (student_course_mastery) ونقاط جاهزية التوجيهي.
*
* @param Request $request طلب الـ HTTP المحتوي على الإجابات ووقت المحاولة
* @param Response $response كائن الاستجابة بالنتيجة والتقرير وتفاصيل الحل النموذجي
*/
public function submitExam(Request $request, Response $response): void
{
@@ -350,8 +389,11 @@ class ExamController
}
/**
* Get Student Mastery & Tawjihi Readiness Analytics
* استرجاع مقاييس إتقان الطالب ومؤشر الجاهزية لامتحان التوجيهي
* GET /api/student/progress/mastery?course_id=1
*
* @param Request $request طلب الـ HTTP المحتوي على معرف الطالب ومعرف المادة
* @param Response $response كائن الاستجابة بنسبة الإتقان والمحاولات الأخيرة
*/
public function getMastery(Request $request, Response $response): void
{
@@ -386,6 +428,10 @@ class ExamController
]);
}
/**
* فحص التوافقية الذاتية وترقية جداول الامتحانات والتقييم في قاعدة البيانات
* تقوم بإنشاء جدول (student_question_answers) والتأكد من وجود عمود (completed_at) وتوسيع الـ ENUM
*/
public static function ensureSchema(): void
{
try {
@@ -424,6 +470,11 @@ class ExamController
}
}
/**
* التهيئة والتوليد الذاتي لامتحان الوحدة الأولى الشامل وحقن الأسئلة من بنك الذكاء الاصطناعي
*
* @return int معرف الامتحان في قاعدة البيانات
*/
public static function seedUnit1ComprehensiveExam(): int
{
self::ensureSchema();
+19 -1
View File
@@ -1,4 +1,19 @@
<?php
/**
* ==============================================================================
* SAQEL ENTERPRISE (EDTECH 2.0) - VIDEO STREAMING & SOCRATIC PLAYBACK CONTROLLER
* ==============================================================================
*
* ملف: VideoController.php
* الهدف المعماري:
* إدارة منظومة بث الفيديو الرقمي، وتوليد الفحوصات السقراطية، وبث HLS المجزأ عبر Cloudflare R2.
* يتولى هذا الملف المهام التالية:
* 1. رفع ملفات الفيديو المباشرة وتحويلها وتجزئتها إلى مقاطع HLS مشفرة لحماية الملكية الفكرية.
* 2. تشغيل التحليل السمعي-البصري بالذكاء الاصطناعي (AiVideoAnalyzerService) لتوليد الفصول الزمنية ونقاط الفحص السقراطي.
* 3. بث الفيديو عبر روابط مؤقتة آمنة (Byte-Range Streaming و HLS Playlists).
* 4. تزويد مشغل الفيديو في فلاتر ببيانات التشغيل (الروابط، الفصول، المعلم المعتمد، ونقاط التوقف السقراطية).
* 5. حفظ تقدم المشاهدة اللحظي لكل طالب في جدول (lesson_progress) وإدارة الاستئناف التلقائي.
*/
namespace App\Controllers;
@@ -13,8 +28,11 @@ use App\Services\CurriculumService;
class VideoController
{
/**
* Upload Video directly via API, transcode HLS, and trigger Autonomous Gemini AI Analysis
* رفع فيديو الشرح مباشرة عبر واجهة البرمجة وتوليد HLS وبدء التحليل السقراطي بالذكاء الاصطناعي
* POST /api/teacher/videos/upload-direct
*
* @param Request $request طلب الـ HTTP المحتوي على ملف الفيديو والبيانات الوصفية
* @param Response $response كائن الاستجابة بحالة الرفع ومعرف الدرس ورابط المشاهدة
*/
public function uploadDirect(Request $request, Response $response): void
{