# مكتب الأديب — دليل النشر على موبي شوب
# الدومين: https://aladeeb.mobishop.online
# قاعدة البيانات: MySQL

## ما الذي ترفعه؟

1. من جهازك شغّل (PowerShell داخل المشروع):

```powershell
cd deploy
.\prepare_package.ps1
```

سيُنشأ ملف `aladeeb-deploy.zip`. بعد فك الضغط ستجد في **الجذر مباشرة**:

| المجلد / الملف | المحتوى |
|---|---|
| `public/` | **الواجهة** (React المبنية) — منها يعمل الموقع |
| `frontend/` | نسخة ظاهرة من نفس ملفات الواجهة |
| `apps/` `config/` `manage.py` | الباك إند Django |
| `passenger_wsgi.py` | تشغيل Python على cPanel |
| `DEPLOY.md` | هذا الدليل |
| `.env.example` | انسخه إلى `.env` واملأ MySQL |

2. ارفع **كل محتويات** المجلد بعد فك الضغط إلى **جذر تطبيق Python** في cPanel (ليس مجلد `backend` منفصلاً).

---

## خطوات cPanel / موبي شوب

### أ) قاعدة MySQL

1. cPanel → **MySQL® Databases**
2. أنشئ قاعدة بيانات (مثال: `user_aladeeb`)
3. أنشئ مستخدماً وكلمة مرور قوية واربطه بالقاعدة بصلاحيات **ALL**
4. احفظ: اسم القاعدة، المستخدم، كلمة المرور (المضيف عادةً `localhost`)

### ب) تطبيق Python

1. cPanel → **Setup Python App**
2. **Create Application**:
   - Python version: **3.11** أو 3.12 إن وُجد
   - Application root: مجلد الرفع (مثال `aladeeb`)
   - Application URL: الدومين `aladeeb.mobishop.online`
   - Application startup file: `passenger_wsgi.py`
   - Application Entry point: `application`
3. فعّل البيئة ثم ثبّت الحزم (زر Run Pip Install أو من Terminal):

```bash
source ~/virtualenv/aladeeb/3.11/bin/activate
cd ~/aladeeb
pip install -r requirements.txt
```

> عدّل مسار `virtualenv` و`aladeeb` كما يظهر في صفحة Setup Python App.

### ج) ملف البيئة `.env`

انسخ `.env.production.example` إلى `.env` داخل مجلد التطبيق:

```env
DJANGO_SETTINGS_MODULE=config.settings.prod
DJANGO_SECRET_KEY=...مفتاح_عشوائي...
DJANGO_DEBUG=0
DJANGO_ALLOWED_HOSTS=aladeeb.mobishop.online,www.aladeeb.mobishop.online

DB_ENGINE=mysql
DB_NAME=اسم_قاعدة_mysql_من_cpanel
DB_USER=مستخدم_mysql
DB_PASSWORD=كلمة_المرور
DB_HOST=localhost
DB_PORT=3306

CORS_ALLOWED_ORIGINS=https://aladeeb.mobishop.online,https://www.aladeeb.mobishop.online
CSRF_TRUSTED_ORIGINS=https://aladeeb.mobishop.online,https://www.aladeeb.mobishop.online
SECURE_SSL_REDIRECT=1
TIME_ZONE=Asia/Riyadh
CURRENCY_CODE=SAR
```

توليد مفتاح سري:

```bash
python -c "from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())"
```

### د) تهيئة قاعدة البيانات

```bash
export DJANGO_SETTINGS_MODULE=config.settings.prod
python manage.py migrate
python manage.py seed_defaults
python manage.py collectstatic --noinput
```

حساب الدخول بعد `seed_defaults`:

| المستخدم | كلمة المرور |
|---|---|
| `admin` | `Admin@12345` |

**غيّر كلمة المرور فوراً** بعد أول دخول.

### هـ) SSL

فعّل Let's Encrypt للدومين `aladeeb.mobishop.online` من cPanel → SSL/TLS Status.

### و) إعادة التشغيل

من Setup Python App اضغط **Restart**.

---

## التحقق

- https://aladeeb.mobishop.online → شاشة الدخول
- بعد الدخول: لوحة المكتب (عملاء، معاملات، تقارير…)
- https://aladeeb.mobishop.online/admin/ → لوحة Django التقنية (مستخدمون فقط عادةً)

---

## هيكل المجلد على السيرفر

```
~/aladeeb/
  passenger_wsgi.py
  manage.py
  requirements.txt
  .env
  .htaccess
  config/
  apps/
  public/           ← واجهة React (index.html + assets)
  staticfiles/      ← بعد collectstatic
  media/            ← مرفوعات
```

---

## مشاكل شائعة

| العرض | الحل |
|---|---|
| 500 | راجع `stderr.log` — غالباً `.env` أو MySQL |
| صفحة بيضاء | تأكد من وجود `public/index.html` |
| CORS | الدومين في CORS يجب أن يطابق الرابط مع `https://` |
| JWT يفشل | تأكد من رفع `.htaccess` الذي يمرّر Authorization |
| /admin فيه مستخدمون فقط | طبيعي — العمل من الواجهة العربية |

---

## تحديث لاحق

1. `.\deploy\prepare_package.ps1`
2. ارفع الملفات الجديدة دون حذف `.env` و`media/`
3. على السيرفر: `pip install -r requirements.txt` ثم `migrate` و`collectstatic`
4. Restart
