# تقرير الإصلاح الفني

## النطاق

تمت مطابقة ملفات المشروع مع قاعدة البيانات المرفوعة التي تحتوي على 98 جدولًا، ثم إصلاح الطبقات التالية:

### البنية والإعدادات

- فصل الإعداد المحلي عن الإعداد العام.
- تعطيل إظهار الأخطاء في الإنتاج.
- ضبط المنطقة الزمنية وBase URL ديناميكيًا.
- اتصال PDO صارم مع أدوات قراءة وكتابة آمنة.
- فحص صحة النظام من لوحة الإدارة.

### المصادقة والصلاحيات

- تجديد Session ID بعد الدخول.
- انتهاء الجلسة عند الخمول.
- التحقق من حالة الطالب والمعلم والإدارة.
- منع الطالب غير النشط من إرسال حضور أو واجب أو اختبار.
- منع المعلم من تعديل دورة أو بيانات لا يملكها.
- حماية نماذج POST من CSRF.

### الطالب

- استكمال صفحات اختيار الدورة والجلسات ولوحة الدورة والاختبارات.
- توحيد الدخول بالكود ورقم البطاقة.
- إصلاح الحضور والواجبات وShadowing والعوائق والمواد والمفردات.
- منع التسليم المكرر وإنشاء تحديث آمن عند إعادة التسليم.
- إصلاح عرض الدرجات والتقارير والشهادة والملف الشخصي.

### المعلم

- إصلاح إدارة الدورات والجلسات والحضور والاختبارات.
- مراجعة وتسليم الواجبات وShadowing والعوائق وربطها بالدرجات.
- إدارة المواد والمفردات والمشاركة مع التحقق من ملكية الدورة.
- رفع ملفات آمن وتنظيف الملفات عند الحذف.

### الإدارة

- إعادة بناء إدارة الطلاب وتعديلهم وحذفهم المشروط.
- إصلاح حسابات المعلمين والتعطيل وإعادة تعيين كلمة المرور.
- إصلاح التسجيلات وطلبات الانضمام والدورات والجلسات.
- توحيد الدرجات والنتائج النهائية.
- إصلاح الشهادات والإشعارات والإعلانات والإعدادات.
- تحويل العمليات الخطرة من GET إلى POST.

### الحضور

القاعدة الموحدة:

- حاضر: 40 دقيقة فأكثر.
- متأخر: من 20 إلى 39 دقيقة.
- غائب: أقل من 20 دقيقة.
- حالة الوصول الأولية: حاضر خلال أول 10 دقائق، وبعدها متأخر.

### الدرجات

- إنشاء جدول درجات موحد `core_grades` عند الترقية.
- ربط كل درجة بالطالب والدورة وعنصر التقييم.
- حساب النسبة والوزن والنتيجة النهائية وحرف الدرجة وحالة النجاح.
- توفير توافق مع البيانات القديمة دون حذفها.

## الاختبارات المنفذة

- فحص Syntax لجميع ملفات PHP.
- فحص عدم وجود نماذج POST بلا CSRF.
- فحص الروابط المحلية للملفات.
- فحص عدم وجود PHP داخل `uploads` أو `assets`.
- فحص أنماط الأبواب الخلفية والتنفيذ الخطر.
- فحص أسماء الجداول والأعمدة مقابل مخطط قاعدة البيانات.
- اختبارات منطقية للحضور والدرجات والتواريخ والرموز.

## حدود الاختبار

تم تنفيذ فحوص ثابتة ومنطقية داخل بيئة العمل. لم يتوفر خادم MariaDB/PDO MySQL متصل ببيانات الإنتاج لتشغيل رحلة متصفح كاملة، لذلك يجب تنفيذ الترقية والاختبارات النهائية أولًا على نسخة Staging قبل استبدال الموقع الحي.
