Promotion Management System
نظام متكامل واحترافي لإدارة ترقيات الأفراد في الجهات العكسرية مزود بتقنيات حديثة وواجهة متجاوبة، مع شات بوت ذكي يستخدم تقنيات الذكاء الاصطناعي لتسهيل عمليات الاستعلام والدعم.
- حساب آلي للنقاط: نظام ذكي لحساب نقاط الترقية بناءً على معايير محددة
- معالجة جماعية: إمكانية معالجة ترقيات متعددة دفعة واحدة
- تتبع شامل: متابعة حالة كل ترشيح بدقة مع سجل كامل للعمليات
- تقارير تفصيلية: تقارير احترافية قابلة للتصدير (Excel, PDF, Word)
- إحصائيات متقدمة: لوحة تحكم شاملة مع رسوم بيانية تفاعلية
- نظام RBAC: صلاحيات متقدمة مبنية على الأدوار (Admin, Supervisor, Data Entry, Reviewer, User)
- صلاحيات دقيقة: تحكم كامل في صلاحيات كل مستخدم على مستوى الإجراءات
- إدارة الجلسات: نظام جلسات متقدم مع انتهاء تلقائي وحماية من التعدد
- سجلات المراجعة: تتبع كامل لجميع العمليات والتعديلات
- رفع متعدد: دعم رفع ملفات متعددة (PDF, Word, Images)
- معاينة فورية: عرض الوثائق مباشرة داخل النظام
- مراجعة احترافية: نظام مراجعة الوثائق مع تعليقات وموافقات
- بحث متقدم: البحث في الوثائق والملفات المرفوعة
- نسخ احتياطية: نظام متكامل للنسخ الاحتياطي (إنشاء، تحميل، استرجاع، حذف)
- ذكاء اصطناعي: تصنيف تلقائي للأسئلة وردود ذكية
- دعم عربي كامل: مصمم خصيصاً للغة العربية
- اقتراحات تفاعلية: أسئلة مقترحة بناءً على السياق
- واجهة حديثة: تصميم عصري وسهل الاستخدام
- تصميم متجاوب: متوافق تماماً مع جميع الأجهزة (Mobile, Tablet, Desktop, Large Screens)
- Dark Mode: وضع ليلي مريح للعين
- Material-UI: مكتبة Material-UI الاحترافية
- أداء عالي: تحميل سريع وتفاعل سلس
- تجربة مستخدم متقدمة: UX/UI محسّن باستمرار
- WebSocket: للعمليات الطويلة (تصدير الاستمارات) مع تحديثات فورية
- Caching ذكي: تخزين مؤقت على Frontend و Backend للأداء الأمثل
- API موثق: Swagger UI لتوثيق كامل لجميع نقاط API
- معالجة متزامنة: معالجة العمليات الكبيرة في الخلفية
- تحسين الأداء: استعلامات محسّنة وفهرسة ذكية للبيانات
backend/
├── api/ # RESTful API Endpoints
│ ├── chatbot.py # شات بوت AI
│ ├── persons.py # إدارة الأفراد
│ ├── promotion.py # معالجة الترقيات
│ ├── permissions.py # نظام الصلاحيات
│ ├── documents.py # إدارة الوثائق
│ ├── admin_api.py # لوحة الإدارة
│ └── export_nomination.py # تصدير الاستمارات
├── models/ # نماذج البيانات (SQLAlchemy)
├── services/ # منطق الأعمال
│ ├── documents.py # خدمات الوثائق
│ └── websocket.py # WebSocket للعمليات الطويلة
├── core/ # وحدات أساسية
│ └── security.py # التشفير والأمان
└── main.py # نقطة الدخول الرئيسية
frontend/src/
├── components/ # المكونات القابلة لإعادة الاستخدام
│ ├── ChatbotInterface.jsx # واجهة الشات بوت
│ ├── DocumentManager.jsx # إدارة الوثائق
│ ├── PermissionButton.jsx # أزرار بصلاحيات
│ └── SessionManager.jsx # إدارة الجلسات
├── hooks/ # React Custom Hooks
│ ├── usePermissions.js # صلاحيات المستخدم
│ ├── useSession.js # إدارة الجلسات
│ └── useResponsive.js # التصميم المتجاوب
├── theme/ # نظام الألوان والثيمات
├── constants/ # الثوابت والإعدادات
└── App.jsx # التطبيق الرئيسي
- SQLite: قاعدة بيانات محلية سهلة النقل
- جداول رئيسية: users, persons, promotions, documents, roles, permissions
- علاقات متقدمة: Foreign Keys مع Cascade
- فهرسة محسّنة: لأداء استعلامات أسرع
- Python: 3.8 أو أحدث
- Node.js: 16 أو أحدث
- SQLite3: مدمج مع Python
- نظام التشغيل: Windows, macOS, Linux
# 1. استنساخ المشروع
git clone https://github.com/balckice999/PMS.git
cd PMS
# 2. إنشاء البيئة الافتراضية
python -m venv pro
# 3. تفعيل البيئة
# Windows
pro\Scripts\activate
# macOS/Linux
source pro/bin/activate
# 4. تثبيت مكتبات Python
pip install -r requirements.txt
# 5. تثبيت مكتبات Node.js
cd frontend
npm install
cd ..Windows:
# استخدام السكريبت المبسط
.\dev.ps1
# أو مباشرة
.\pro\Scripts\python.exe run_dev.pymacOS/Linux:
# تشغيل مباشر
python3 run_dev.py- الواجهة الأمامية: http://localhost:5173
- السيرفر الخلفي: http://localhost:8000
- وثائق API: http://localhost:8000/docs
اسم المستخدم: admin
كلمة المرور: admin123
⚠️ مهم: غيّر كلمة المرور فوراً بعد أول تسجيل دخول!
# ببساطة اضغط
Ctrl + C- Docker: 20.10 أو أحدث
- Docker Compose: 2.0 أو أحدث
# 1. استنساخ المشروع
git clone https://github.com/balckice999/PMS.git
cd PMS
# 2. تشغيل في وضع التطوير (Development)
# Windows PowerShell
.\docker-run.ps1 dev
# Linux/macOS
./docker-run.sh dev
# أو مباشرة
docker-compose up --build# Windows
.\docker-run.ps1 dev
# Linux/macOS
./docker-run.sh dev
# أو مباشرة
docker-compose -f docker-compose.dev.yml up --buildالمميزات:
- ✅ Hot-reload للكود (تحديث فوري)
- ✅ الوصول إلى الكود المصدري
- ✅ أسهل في التطوير والتصحيح
الروابط:
- Frontend: http://localhost:5173
- Backend: http://localhost:8000
- API Docs: http://localhost:8000/docs
# Windows
.\docker-run.ps1 prod
# Linux/macOS
./docker-run.sh prod
# أو مباشرة
docker-compose -f docker-compose.prod.yml up --build -dالمميزات:
- ✅ بناء محسّن للأداء
- ✅ Nginx للواجهة الأمامية
- ✅ تشغيل في الخلفية (detached mode)
الروابط:
- Frontend: http://localhost
- Backend: http://localhost:8000
- API Docs: http://localhost:8000/docs
# عرض جميع الأوامر المتاحة
.\docker-run.ps1 help # Windows
./docker-run.sh help # Linux/macOS
# إيقاف الحاويات
.\docker-run.ps1 stop
./docker-run.sh stop
# عرض السجلات
.\docker-run.ps1 logs
./docker-run.sh logs
# عرض السجلات (Production)
.\docker-run.ps1 logs prod
./docker-run.sh logs prod
# إعادة بناء الحاويات
.\docker-run.ps1 rebuild
./docker-run.sh rebuild
# عرض حالة الحاويات
.\docker-run.ps1 status
./docker-run.sh status
# تنظيف شامل (حذف الحاويات والمجلدات)
.\docker-run.ps1 clean
./docker-run.sh cleanجميع البيانات (قاعدة البيانات، الوثائق، الصور، التقارير) محفوظة في Docker Volume:
# عرض المجلدات
docker volume ls
# عرض تفاصيل مجلد البيانات
docker volume inspect pms_pms_data
# نسخ احتياطي للبيانات
docker run --rm -v pms_pms_data:/data -v $(pwd):/backup alpine tar czf /backup/pms-backup.tar.gz -C /data .يمكنك تخصيص الإعدادات عبر ملفات البيئة:
.env.example- قالب الإعدادات.env.dev- إعدادات التطوير.env.prod- إعدادات الإنتاج
مهم: غيّر جميع المفاتيح السرية في .env.prod قبل النشر!
# تحقق من حالة Docker
docker ps
docker-compose ps
# تحقق من السجلات
docker-compose logs backend
docker-compose logs frontend# تحقق من صلاحيات المجلد
docker-compose exec backend ls -la /app/data
# إعادة تهيئة قاعدة البيانات
docker-compose exec backend python init_database.py# تحقق من متغيرات البيئة
docker-compose exec frontend env | grep VITE
# تحقق من الشبكة
docker network inspect pms_pms-network# Windows - إيجاد العملية المستخدمة للمنفذ
netstat -ano | findstr :8000
netstat -ano | findstr :5173
# Linux/macOS
lsof -i :8000
lsof -i :5173-
استنساخ المشروع:
git clone https://github.com/balckice999/PMS.git cd PMS -
تشغيل Docker:
docker-compose up --build
-
جاهز! 🎉
البيانات محفوظة تلقائياً في Docker Volumes وستستمر حتى بعد إيقاف الحاويات.
- KPI Cards: عرض سريع للأرقام الرئيسية
- رسوم بيانية:
- توزيع الأفراد حسب الرتبة (Pie Chart)
- تحليل النقاط (Bar Chart)
- مؤهلات الأفراد (Multiple Charts)
- جداول تفاعلية: بيانات قابلة للفرز والبحث
- تصدير شامل: Excel و PDF للتقارير والبيانات
| الدور | الصلاحيات الأساسية |
|---|---|
| Admin | صلاحيات كاملة على النظام |
| Supervisor | إدارة البيانات + المراجعة |
| Data Entry | إدخال وتعديل البيانات |
| Reviewer | مراجعة واعتماد البيانات |
| User | عرض البيانات فقط |
- ✅ Frontend: أزرار وصفحات محمية بـ
PermissionGuard - ✅ Backend: جميع API محمية بـ Token Authentication
- ✅ Database: تشفير كلمات المرور بـ bcrypt
- ✅ Sessions: انتهاء تلقائي للجلسات + تحذيرات
النظام متجاوب بالكامل مع:
- Mobile (< 480px): قائمة Drawer + أزرار كبيرة
- Tablet (481px - 768px): شبكة 2 أعمدة
- Desktop (769px - 1399px): شبكة 3-4 أعمدة
- Large Screens (≥ 1400px): شبكة 4-5 أعمدة
- Material-UI
breakpointsوuseMediaQuery - CSS Grid و Flexbox
clamp()للخطوط الديناميكية- Responsive Font Sizes من MUI
| الفئة | أمثلة |
|---|---|
| الترحيب | مرحبا، السلام عليكم، أهلاً |
| حساب النقاط | كم عدد نقاطي؟ كيف أحسب نقاطي؟ |
| شروط الترقية | ما هي الشروط؟ متطلبات الترقية؟ |
| التقديم | كيف أتقدم؟ خطوات التقديم؟ |
| المستندات | أي مستندات مطلوبة؟ الوثائق؟ |
| المواعيد | متى ينتهي التسجيل؟ آخر موعد؟ |
| المتابعة | كيف أتابع طلبي؟ حالة الطلب؟ |
| التواصل | رقم الاتصال؟ كيف أتواصل؟ |
POST /login- تسجيل الدخولPOST /logout- تسجيل الخروجGET /me/current- معلومات المستخدم الحالي
GET /api/persons- قائمة الأفرادPOST /api/persons- إضافة فرد جديدPOST /api/promotion/process- معالجة الترقياتGET /api/eligible-list- قائمة المؤهلين
GET /api/permissions/users/{user_id}/permissions/public- صلاحيات المستخدم
POST /api/documents/upload- رفع وثيقةGET /api/documents/{id}- عرض وثيقةPOST /api/documents/{id}/review- مراجعة وثيقة
GET /api/admin/users- إدارة المستخدمينPOST /api/admin/system/backup- إنشاء نسخة احتياطيةGET /api/admin/system/backups- قائمة النسخ الاحتياطيةPOST /api/admin/system/backups/{filename}/restore- استرجاع نسخة
POST /api/chatbot/chat- إرسال رسالةGET /api/chatbot/health- صحة النظام
📚 للتوثيق الكامل: http://localhost:8000/docs
| المشكلة | الحل |
|---|---|
ERR_CONNECTION_REFUSED |
تأكد من تشغيل Backend بـ .\dev.ps1 |
| الشات بوت لا يظهر | سجّل الدخول أولاً |
| "ليس لديك صلاحية" | تحقق من صلاحيات المستخدم في لوحة الإدارة |
| صفحة بيضاء | افتح Developer Tools (F12) وتحقق من الأخطاء |
| البورت مشغول | أوقف العمليات المشغولة: .\stop_system.ps1 |
backend/logs/ # سجلات Backend
frontend/ # سجلات المتصفح (F12)
.cursor/debug.log # سجلات التطوير
# من لوحة الإدارة → النسخ الاحتياطية → "إنشاء نسخة جديدة"
# أو عبر API
curl -X POST http://localhost:8000/api/admin/system/backup# من لوحة الإدارة → النسخ الاحتياطية → "استرجاع"📌 تلقائي: يتم إنشاء نسخة احتياطية تلقائياً قبل كل عملية استرجاع!
- تكامل مع Active Directory / LDAP
- تطبيق موبايل (React Native)
- إشعارات فورية (Push Notifications)
- نظام تقارير متقدم (Business Intelligence)
- دعم تعدد اللغات (i18n)
- تكامل مع أنظمة خارجية (API Gateway)
- Backend: أضف API جديد في
backend/api/ - Frontend: أضف المكون في
frontend/src/components/ - الصلاحيات: حدث
setup_default_permissions.py - اختبار: اختبر محلياً قبل النشر
- Backend: FastAPI, SQLAlchemy, Pydantic, Uvicorn
- Frontend: React, Vite, Material-UI, Axios, Recharts
- Database: SQLite3
- Security: bcrypt, JWT tokens
- Real-time: WebSocket
للحصول على الدعم الفني:
- 📧 البريد الإلكتروني: [email protected]
- 📱 الهاتف: 0559795330
- 🐛 الإبلاغ عن مشاكل: افتح Issue على GitHub
هذا المشروع مرخص تحت رخصة MIT - يمكنك استخدامه وتعديله بحرية.
تم تطوير هذا النظام بواسطة: عبيد المطيري - جوازات ميناء نيوم - تقنية المعلومات 🎖️
📅 آخر تحديث: ديسمبر 2025
🔢 الإصدار: 2.0
⭐ النجوم: إذا أعجبك المشروع، لا تنس إضافة نجمة على GitHub!