# كوبونات "للعملاء الذين طلبوا سابقاً" + النافذة المنبثقة لكل عميل — المطلوب من تطبيق الموبايل

**التاريخ:** 2026-10-27  
**باختصار:** لا يوجد endpoint جديد ولا مفتاح تغيّر اسمه أو شكله. المطلوب من التطبيق أمران فقط: **إرسال التوكن** مع طلبات الإعدادات، و**إعادة طلب النافذة** بعد تسجيل الدخول أو الخروج.

---

## ما الذي تغيّر على السيرفر

1. **شرط جديد في الكوبون:** يستطيع الأدمن أن يجعل الكوبون "للعملاء الذين طلبوا سابقاً فقط" مع حدّ أدنى لعدد الطلبات (1، 2، 3، …).
   - يُحسب فقط الطلب الذي **تم توصيله وتم دفعه** معاً.
   - كل عملية شراء تُحسب طلباً واحداً حتى لو انقسمت على عدة تجار.
   - الزائر غير المسجّل لا يستطيع استخدام هذا الكوبون.
2. **النافذة المنبثقة (popup) صارت تختلف من عميل لآخر:**
   - إذا كانت النافذة لكوبون بحدّ أدنى من الطلبات، تظهر فقط للعميل المسجّل الذي بلغ العدد. لغيره، ومنهم الزائر، يرجع `show_popup: false`.
   - إذا كانت لكوبون "للعملاء الجدد فقط"، لا تظهر لعميل طلب من قبل. الزائر ما زال يراها.
   - النوافذ العامة والكوبونات العادية لم يتغيّر فيها شيء.

السيرفر هو من يقرّر في كل الحالات. التطبيق لا يحسب شيئاً بنفسه.

---

## المطلوب من التطبيق

### 1) إرسال التوكن مع طلبات الإعدادات (مهم جداً)

السيرفر يعرف من هو العميل فقط من الهيدر `Authorization: Bearer <token>`. إذا وصل الطلب بدون توكن يعامل العميل كزائر، وعندها **لن تظهر نافذة كوبون الحد الأدنى لأحد**.

أرسل التوكن، عندما يكون العميل مسجّلاً، مع هذه الطلبات:

| الطلب | ملاحظة |
|---|---|
| `GET /api/v2/business-settings` | يرجع المفتاح `popup` والصفوف `app_popup_*` داخل `data` |
| `POST /api/v2/business-settings` (مع `keys`) | إذا كان يطلب مفاتيح `app_popup_*` |
| `POST /api/v2/app/data` | المجموعة `business_settings` تأخذ نفس هيدرات الطلب، فيكفي أن يحمل `app/data` التوكن |

هذه الطلبات **لا تشترط** تسجيل الدخول: إذا كان العميل زائراً تُرسل بدون توكن كما الآن، ولن تفشل.

### 2) إعادة طلب النافذة بعد تغيّر الحساب

النافذة الآن تخصّ الحساب، فإذا بقيت محفوظة من قبل تسجيل الدخول قد يرى العميل نافذة لا تخصّه، أو لا يرى نافذته.

- **بعد تسجيل الدخول أو إنشاء حساب:** أعد طلب `business-settings` (أو مجموعة `business_settings` في `app/data`) واعرض النافذة حسب الجواب الجديد.
- **بعد تسجيل الخروج:** نفس الشيء، أعد الطلب بدون توكن.
- **مع `app/data`:** الـ stamp يتغيّر وحده عندما يختلف المحتوى بين حساب وآخر، فلا تحتاج معالجة خاصة. فقط لا تعرض نسخة محفوظة لحساب سابق من دون إعادة الطلب.

### 3) لا شيء آخر

- **شكل `popup` لم يتغيّر:** `show_popup`, `id`, `type`, `title`, `body`, `button_text`, `expires_at`, `discount`. إذا كان `show_popup: false` لا تعرض شيئاً، كما الآن.
- **قائمة الكوبونات** (`coupon-list` وما شابهها): السيرفر يخفي الكوبون عن العميل الذي لا ينطبق عليه. لا تغيير مطلوب.
- **تطبيق الكوبون** (`POST /api/v2/coupon-apply`): إذا لم ينطبق الشرط يرجع رفض عادي برسالة جاهزة بلغة العميل، وتُعرض كما تُعرض أي رسالة رفض الآن:
  - للعميل الذي لم يبلغ العدد: «هذا الكوبون للعملاء الذين لديهم 2 طلبات سابقة على الأقل» (الرقم حسب الكوبون).
  - للزائر: «سجّل الدخول لاستخدام هذا الكوبون: هو للعملاء الذين طلبوا من قبل».

---

## كيف تختبر

1. من لوحة الأدمن أنشئ كوبوناً، فعّل "للعملاء الذين طلبوا سابقاً فقط" وضع الحد 1، وفعّل "عرض كنافذة منبثقة في التطبيق".
2. **زائر:** افتح التطبيق بدون تسجيل دخول → لا تظهر النافذة.
3. **عميل بدون طلب مُوصل ومدفوع:** سجّل الدخول → لا تظهر النافذة، ومحاولة تطبيق الكوبون ترجع رسالة الرفض.
4. **عميل لديه طلب مُوصل ومدفوع:** سجّل الدخول → تظهر النافذة مباشرة بعد الدخول، دون إعادة تشغيل التطبيق، ويُقبل الكوبون.
5. سجّل الخروج → تختفي النافذة.

إذا لم تظهر النافذة في الخطوة 4، فالغالب أن التوكن لا يُرسل مع `business-settings` أو `app/data`، أو أن النافذة لم يُعَد طلبها بعد تسجيل الدخول.
