## 📋 نظرة عامة على النظام

### 🎯 ما هو AI School؟

AI School هو نظام متكامل لإدارة المدارس والمؤسسات التعليمية، مبني على تقنية Laravel 11 وFilament 3، يوفر حلولاً شاملة لإدارة العملية التعليمية بكفاءة عالية.

🏢

#### Multi-Tenancy

نظام متعدد المستأجرين يسمح بإدارة مدارس متعددة

🎛️

#### 4 لوحات تحكم

لوحات منفصلة لكل دور في النظام

🔐

#### نظام صلاحيات متقدم

تحكم دقيق في الصلاحيات لكل مستخدم

📚

#### إدارة المحتوى

نظام شامل للدورات والموارد التعليمية

👥

#### إدارة المستخدمين

طلاب، مدرسين، وإداريين

🌍

#### متعدد اللغات

دعم كامل للعربية والإنجليزية

## 🏗️ البنية التقنية للنظام

### 🔧 المكونات الأساسية

- Framework: Laravel 11
- Admin Panel: Filament 3
- Database: MySQL/PostgreSQL
- Authentication: Laravel Sanctum
- Roles & Permissions: Spatie Permission + Filament Shield
- Multi-Tenancy: Custom Implementation

### 📂 هيكل المشروع

#### 🎯 المجلدات الرئيسية

- `app/Filament/` - يحتوي على اللوحات الأربعة (Admin, Owner, Instructor, Student)
- `app/Models/` - نماذج البيانات (User, Course, Resource, Department, etc.)
- `app/Policies/` - سياسات الصلاحيات
- `database/migrations/` - ملفات قاعدة البيانات
- `lang/` - ملفات الترجمة (ar/en)

## 🚀 الخطوات الأولى - ابدأ من هنا!

⚠️ مهم جداً: يجب اتباع هذه الخطوات بالترتيب لضمان عمل النظام بشكل صحيح

### 1 التثبيت الأولي

ما تحتاج لعمله:

- استنساخ المشروع من Git أو نسخ الملفات
- تشغيل: `composer install`
- تشغيل: `npm install`
- نسخ `.env.example` إلى `.env`
- تعديل إعدادات قاعدة البيانات في `.env`

### 2 إعداد قاعدة البيانات

خطوات مهمة:

- تشغيل: `php artisan key:generate`
- تشغيل: `php artisan migrate` - لإنشاء الجداول
- تشغيل: `php artisan db:seed` - لإضافة البيانات الأولية
- تشغيل: `php artisan shield:generate` - لإنشاء الصلاحيات

✅ الآن قاعدة البيانات جاهزة مع الأدوار والصلاحيات الأساسية

### 3 إنشاء أول مستخدم (Super Admin)

المستخدم الرئيسي:

- تشغيل: `php artisan make:filament-user`
- أدخل البيانات المطلوبة (الاسم، البريد، كلمة المرور)
- هذا المستخدم سيكون Super Admin بصلاحيات كاملة

📝 ملاحظة: احفظ بيانات الدخول في مكان آمن!

### 4 الدخول إلى لوحة التحكم

الوصول إلى النظام:

- تشغيل الخادم: `php artisan serve`
- افتح المتصفح واذهب إلى: `http://localhost:8000/admin`
- سجل الدخول ببيانات Super Admin

🎉 تهانينا! أنت الآن في لوحة Admin الرئيسية

## 🎛️ اللوحات الأربعة - فهم النظام

النظام يحتوي على 4 لوحات منفصلة، كل لوحة مخصصة لدور معين ولها مميزاتها الخاصة

### 1. لوحة Admin

🔗 الرابط: `/admin`

👤 من يستخدمها: Super Admin و System Admin

⚡ الصلاحيات:

- إدارة جميع المدارس (Tenants)
- إنشاء وتعديل المستخدمين من جميع الأنواع
- إدارة الأدوار والصلاحيات
- إعدادات النظام العامة
- عرض التقارير والإحصائيات الشاملة
- إدارة الأقسام والتخصصات

⚠️ هام: هذه اللوحة للإدارة العليا فقط - تحكم كامل في النظام

### 2. لوحة Owner

🔗 الرابط: `/owner`

👤 من يستخدمها: مالك/مدير المدرسة

⚡ الصلاحيات:

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

📊 لوحة Owner هي المركز الإداري لكل مدرسة

### 3. لوحة Instructor

🔗 الرابط: `/instructor`

👤 من يستخدمها: المدرسين

⚡ الصلاحيات:

- عرض الدورات المخصصة له
- إدارة محتوى الدورات (Courses)
- إضافة وتعديل الموارد التعليمية (Resources)
- عرض الطلاب المسجلين في دوراته
- متابعة تقدم الطلاب
- التواصل مع الطلاب

👨‍🏫 لوحة المدرس - التركيز على التدريس وإدارة المحتوى

### 4. لوحة Student

🔗 الرابط: `/student`

👤 من يستخدمها: الطلاب

⚡ الصلاحيات:

- عرض الدورات المسجل فيها
- الوصول إلى الموارد التعليمية
- متابعة تقدمه الدراسي
- تسليم الواجبات
- عرض الدرجات والتقييمات
- التواصل مع المدرسين

🎓 لوحة الطالب - بيئة تعليمية بسيطة ومركزة

## 👥 نظام الأدوار والصلاحيات

### 🎯 فلسفة النظام

النظام يستخدم نموذج RBAC (Role-Based Access Control) مع تقسيم واضح للصلاحيات حسب الدور

### 📋 الأدوار الأساسية في النظام

👑

#### Super Admin

Admin Panel

صلاحيات كاملة على كل شيء في النظام

🏢

#### Owner

Owner Panel

مدير المدرسة - صلاحيات إدارية على مدرسته

👨‍🏫

#### Instructor

Instructor Panel

المدرس - إدارة الدورات والمحتوى

🎓

#### Student

Student Panel

الطالب - الوصول للمحتوى التعليمي

### 🔐 كيف يعمل نظام الصلاحيات؟

- Shield Plugin: يولد صلاحيات تلقائية لكل Resource (view, create, update, delete)
- Policies: تحدد من يستطيع فعل ماذا على كل Model
- Panel Middleware: يتحقق من الدور قبل الدخول لكل لوحة
- Custom Permissions: يمكن إضافة صلاحيات مخصصة حسب الحاجة

#### ⚠️ قواعد مهمة

- المستخدم يمكن أن يكون له أكثر من دور
- الصلاحيات تتراكم (إذا كان لديه دورين، يحصل على صلاحيات الاثنين)
- Super Admin يتجاوز جميع الفحوصات
- Policies لها الأولوية على Permissions العادية

## 🔄 سير العمل - الترتيب الصحيح للعمليات

هذا القسم يشرح الترتيب المنطقي للعمل في النظام من البداية للنهاية

### 📊 مخطط سير العمل الكامل

1. إعداد المدرسة
↓
2. إنشاء الأقسام
↓
3. إضافة المدرسين
↓
4. إنشاء الدورات
↓
5. إضافة الموارد
↓
6. تسجيل الطلاب
↓
7. بدء الدراسة

### الخطوات التفصيلية

### 1 إعداد المدرسة (Tenant Setup)

📍 اللوحة: Admin Panel

✅ الخطوات:

- اذهب إلى: Multi-Tenancy → Tenants
- انقر على: Create Tenant
- أدخل: اسم المدرسة، النطاق (domain)، البيانات الأساسية
- حدد: Owner للمدرسة (أو أنشئ مستخدم جديد)
- احفظ وفعّل المدرسة

### 2 إنشاء الأقسام (Departments)

📍 اللوحة: Owner Panel

✅ الخطوات:

- سجل دخول كـ Owner
- اذهب إلى: School Management → Departments
- أضف الأقسام: مثل (علوم حاسب، رياضيات، لغات، إلخ)
- لكل قسم: اسم، وصف، حالة (نشط/غير نشط)

💡 الأقسام تساعد في تنظيم الدورات والمدرسين

### 3 إضافة المدرسين (Instructors)

📍 اللوحة: Owner Panel

✅ الخطوات:

- اذهب إلى: User Management → Users
- انقر: Create User
- املأ البيانات: (الاسم، البريد، كلمة المرور)
- مهم: اختر Role: `Instructor`
- حدد: القسم المناسب للمدرس
- احفظ وأرسل بيانات الدخول للمدرس

### 4 إنشاء الدورات (Courses)

📍 اللوحة: Owner Panel أو Instructor Panel

✅ الخطوات:

- اذهب إلى: Courses Management → Courses
- انقر: Create Course
- أدخل المعلومات:
  - عنوان الدورة
  - الوصف والأهداف
  - القسم المناسب
  - المدرس المسؤول
  - المدة والمستوى
  - السعر (إن وجد)
- احفظ الدورة

### 5 إضافة الموارد التعليمية (Resources)

📍 اللوحة: Instructor Panel

✅ الخطوات:

- افتح الدورة المطلوبة
- اذهب إلى: Resources داخل الدورة
- انقر: Add Resource
- اختر نوع المورد:
  - فيديو (Video)
  - ملف PDF
  - رابط خارجي (Link)
  - نص (Text/Article)
- رتب الموارد حسب التسلسل المناسب

✅ الآن الدورة جاهزة للطلاب!

### 6 تسجيل الطلاب (Student Enrollment)

📍 اللوحة: Owner Panel

✅ الخطوات:

- إنشاء حسابات الطلاب:
  - اذهب إلى: User Management → Users
  - أنشئ حساب لكل طالب
  - حدد Role: `Student`
- تسجيل الطلاب في الدورات:
  - اذهب إلى: Enrollments
  - انقر: Create Enrollment
  - اختر: الطالب والدورة
  - حدد: تاريخ البدء والانتهاء

### 7 بدء الدراسة

📍 اللوحة: Student Panel

✅ ماذا يحدث:

- الطالب يسجل دخول إلى: `/student`
- يرى دوراته المسجلة
- يمكنه الوصول للموارد التعليمية
- يتابع تقدمه وإنجازاته

🎉 النظام يعمل بشكل كامل!

## ✨ المميزات المتقدمة

### 🌍 نظام متعدد اللغات (Localization)

- دعم كامل للعربية والإنجليزية
- التبديل السهل بين اللغات
- جميع النصوص قابلة للترجمة
- ملفات الترجمة في: `lang/ar/` و `lang/en/`

### 📊 التقارير والإحصائيات

- Widgets على Dashboard لكل لوحة
- إحصائيات عن الطلاب والدورات
- تقارير الأداء والتقدم
- رسوم بيانية تفاعلية

### 🔔 نظام الإشعارات

- إشعارات داخل النظام
- إشعارات عبر البريد الإلكتروني
- إخطارات للأحداث المهمة
- تتبع النشاطات (Activity Log)

### ⚙️ نظام الإعدادات (Settings)

- إعدادات عامة للنظام
- إعدادات خاصة لكل مدرسة (Tenant)
- تخصيص المظهر والألوان
- إعدادات البريد الإلكتروني

### 🔒 الأمان والحماية

- تشفير كلمات المرور
- تسجيل محاولات الدخول
- حماية من CSRF
- Rate Limiting على API
- Two-Factor Authentication (قيد التطوير)

### 📱 واجهة متجاوبة (Responsive)

- تعمل على جميع الأجهزة
- تصميم متجاوب للموبايل والتابلت
- تجربة مستخدم سلسة

## 💡 نصائح مهمة للاستخدام الأمثل

### ⚠️ أخطاء شائعة يجب تجنبها

- لا تحذف Super Admin: دائماً احتفظ بحساب واحد على الأقل
- لا تعطي صلاحيات زائدة: أعط كل مستخدم الصلاحيات المناسبة فقط
- لا تنسى النسخ الاحتياطي: احتفظ بنسخة من قاعدة البيانات دورياً
- تحقق من الأدوار: قبل منح الوصول، تأكد من الدور الصحيح

### ✅ أفضل الممارسات

- رتب المحتوى: نظم الدورات والموارد بشكل منطقي
- استخدم الأقسام: قسّم المحتوى لسهولة الوصول
- راقب الأداء: تابع الإحصائيات بانتظام
- تواصل مع المستخدمين: استخدم نظام الإشعارات
- حدّث النظام: ابقَ على اطلاع بالتحديثات

### 📚 موارد إضافية

- Laravel Documentation: laravel.com/docs
- Filament Documentation: filamentphp.com/docs
- Shield Plugin: github.com/bezhanSalleh/filament-shield

## 📋 خلاصة سريعة - المرجع السريع

### 🎯 الروابط المهمة

اللوحة | الرابط | المستخدمون
--- | --- | ---
Admin Panel | `/admin` | Super Admin
Owner Panel | `/owner` | School Owner
Instructor Panel | `/instructor` | Teachers
Student Panel | `/student` | Students

### ⚡ أوامر مهمة

`php artisan serve` | تشغيل الخادم المحلي
`php artisan migrate` | تشغيل ملفات قاعدة البيانات
`php artisan shield:generate` | إنشاء الصلاحيات
`php artisan make:filament-user` | إنشاء مستخدم Super Admin
`php artisan optimize:clear` | مسح الكاش