# تقرير المخاطر — Risk Assessment

## 1. المخاطر الأمنية

| المخاطرة | الاحتمالية | التأثير | التخفيف |
|----------|:----------:|:-------:|---------|
| اختراق Sanctum tokens | متوسطة | عالي | استخدام token abilities محددة، expiry تلقائي، refresh rotation |
| تسريب صور الأطفال | متوسطة | عالي جداً | Temporary signed URLs عبر الـ API فقط (لا روابط دائمة)، فحص صلاحية كل طلب |
| ثغرة IDOR (Insecure Direct Object Reference) | متوسطة | عالي | Laravel Policies + التحقق من نطاق البيانات في كل endpoint |
| تخمين كلمات المرور (Brute Force) | عالية | متوسط | Laravel Rate Limiter + حظر بعد 5 محاولات فاشلة |
| حقن SQL | منخفضة جداً | عالي | Laravel Eloquent + parameterized queries (افتراضي) |

---

## 2. المخاطر التقنية

| المخاطرة | الاحتمالية | التأثير | التخفيف |
|----------|:----------:|:-------:|---------|
| فشل معالجة الفيديو (FFmpeg) | متوسطة | منخفض | Fallback للفيديو الخام الأصلي، إشعار للمطور |
| بطء استعلامات التقارير على PostgreSQL | عالية (مع الوقت) | متوسط | Indexes محددة مسبقًا، مادية views للتقارير الشهرية |
| توقف R2 أو مشاكل في الوصول | منخفضة | عالي | مراقبة uptime، fallback لـ generic placeholder images |
| مشاكل CORS مع R2 | منخفضة | منخفض | ضبط CORS policy قبل الإطلاق |
| فشل Expo Push API | منخفضة | متوسط | Retry mechanism عبر queue مع exponential backoff |

---

## 3. مخاطر الأداء

| المخاطرة | الاحتمالية | التأثير | التخفيف |
|----------|:----------:|:-------:|---------|
| إشعارات متزامنة بالآلاف (ساعة الذروة 8 صباحًا) | عالية | متوسط | Queues + batching، إرسال دفعات 100 مستخدم كل مرة |
| عدد كبير من الصور في صفحة واحدة (N+1) | متوسطة | متوسط | Eager loading لـ media، pagination |
| تحميل الفيديو أثناء التنقل (mobile data) | متوسطة | منخفض | Adaptive bitrate، thumbnail أولاً ثم video عند الطلب |

---

## 4. مخاطر الخصوصية والامتثال

| المخاطرة | الاحتمالية | التأثير | التخفيف |
|----------|:----------:|:-------:|---------|
| خرق KVKK/GDPR (قوانين حماية بيانات الأطفال) | متوسطة | عالي جداً | موافقة صريحة عند التسجيل، حق حذف البيانات، سجل تدقيق (audit log) |
| وصول غير مصرح لبيانات طفل | متوسطة | عالي | مصفوفة صلاحيات صارمة + policies + نطاق data scoping |
| احتفاظ بالبيانات أطول من اللازم | منخفضة | متوسط | سياسة حذف تلقائي: صور بعد سنة من تخرج الطالب |
| موافقة الصور غير واضحة | متوسطة | متوسط | إعداد `photos.require_approval` افتراضيًا true |

---

## 5. مخاطر المشروع (Project Risks) - (غير مهم)

| المخاطرة | الاحتمالية | التأثير | التخفيف |
|----------|:----------:|:-------:|---------|
| تغيير متطلبات العميل أثناء التطوير | عالية | عالي | تقسيم المشروع على مراحل (5 مراحل في الـ spec)، تسليم متزايد (incremental delivery) |
| تأخير في تحديد إطار الجوال (Flutter/RN) | متوسطة | عالي | البدء بالـ Backend + API فورًا (لا يعتمد على mobile framework) |
| زحف الميزات (Scope Creep) | عالية | متوسط | الرجوع للـ spec الأصلي مع كل طلب إضافة، تقييم الأثر |
| نقص في موارد الفريق | متوسطة | عالي | الأولويات: Phase 1 الأساسية فقط، ثم الباقي لاحقًا |

---

## 6. مخاطر تجربة المستخدم

| المخاطرة | الاحتمالية | التأثير | التخفيف |
|----------|:----------:|:-------:|---------|
| بطء واجهة المعلم (إدخال بيانات 20 طالب) | عالية | متوسط | Bulk API endpoints + شاشات تسجيل سريعة (قائمة واحدة) |
| عدم فهم آلية "أنا قادم" | منخفضة | منخفض | شرح داخل التطبيق عند أول استخدام |
| تعارض اللغتين (en/tr) في المحتوى | منخفضة | منخفض | Lang middleware مع fallback إلى en |

---

## 7. مخاطر مالية وتشغيلية

| المخاطرة | الاحتمالية | التأثير | التخفيف |
|----------|:----------:|:-------:|---------|
| تجاوز تكلفة R2 التخزينية المتوقعة | منخفضة | منخفض | مراقبة شهرية + alert عند تجاوز 80% من المتوقع |
| اعتماد على Expo Push Notification service | منخفضة | متوسط | Queue retry mechanism + إشعار للمطور عند التعطل |

---

## مصفوفة المخاطر (Risk Heatmap)

| | منخفض التأثير | متوسط التأثير | عالي التأثير | عالي جداً |
|---|---|---|---|---|
| **عالية الاحتمال** | - | brute force, batch notifications, واجهة المعلم البطيئة | scope creep | - |
| **متوسطة الاحتمال** | - | sanctum tokens, ffmpeg | IDOR, بيانات الأطفال, photos leak | KVKK/GDPR |
| **منخفضة الاحتمال** | lang conflict, CORS | Expo Push outage | R2 outage | - |
| **منخفضة جداً** | SQL injection | - | - | - |

---

## خطة الاستجابة للحوادث (Incident Response — ملخص)

1. **تسرب بيانات**: إبطال جميع الـ tokens فورًا، تغيير مفاتيح التشفير، إبلاغ الجهات المختصة خلال 72 ساعة.
2. **Expo Push outage**: النظام يستمر مع محاولات إعادة الإرسال (retry) عبر queue، وإشعار للمطور للمتابعة.
3. **R2 outage**: عرض صور placeholder مؤقتًا.
4. **اختراق**: عزل السيرفر، تحليل السجلات، تغيير جميع credentials، إبلاغ المستخدمين.

---

## التسجيل والتدقيق (Audit Log)

يتم تسجيل العمليات الحرجة باستخدام **Laravel Log** للمساعدة في اكتشاف المخاطر مبكرًا:

- محاولات تسجيل دخول فاشلة
- تعديل بيانات الطالب
- الوصول لصور غير مصرح بها
- حذف البيانات

---

## تتبع الأخطاء (Error Tracking)

تم اعتماد **Sentry** لتتبع الأخطاء والاستثناءات بشكل فوري في بيئة الإنتاج:

- تنبيه فوري عند أي خطأ 500 جديد
- تتبع أداء الطلبات البطيئة
- مراقبة فشل Jobs و Queue
- تكامل مع Slack/Email لإشعارات المطورين
- راجع `logging-monitoring.md` للتفاصيل الكاملة.
