# Sprint 6 — الأدمن والعرضيّات (Admin oversight · notifications · CMS)

> يكمل لوحة الأدمن (إشراف الحجوزات/التقييمات/المعاملات + تقارير + KPIs)، يفعّل الإشعارات (8 أنواع + FCM)، ويربط صفحات الدعم العامة.
> المرجع: [`../analysis.md`](../analysis.md) §7/§8.

## النطاق
- **CRUD/إشراف أدمن:**
  - `cruds/bookings.md` — إشراف الحجوزات (فلترة بالحالة/المزوّد/التاريخ، عرض، استرداد).
  - `cruds/reviews.md` — إشراف التقييمات (إخفاء/حذف، تبديل is_visible).
  - `cruds/transactions.md` — المعاملات (عرض + تقارير مالية).
  - `cruds/dashboard-home.md` — KPIs: الحجوزات/الإيراد/المزوّدون المعتمدون/أعلى التصنيفات + رسوم.
  - `cruds/reports.md` — أداء/مالي (إيراد شهري، عمولة، أعلى المزوّدين/التصنيفات).
- **الإشعارات:** أنواع الإشعارات الـ 8 (DB + FCM) عبر Events+Listeners+Jobs + Notifications (نسخ `analysis.md §8`) — تُطلق من انتقالات الحجز/التقييم.
- **API user — support/public:** `GET /faqs` · `GET /pages/{slug}` (terms/privacy) · `POST /contact-messages` · notifications (list/unread-count/read/read-all) — ربط ما هو موجود في base.
- **profile flows المتبقية:** notifications toggle · language (`users.locale`) · delete-account (user).

## الاعتماديات
- Sprint 4 (bookings/transactions) + Sprint 5 (انتقالات) — DONE.

## فكّر-الأول
- **لبنات Laravel:** **Events + Listeners + Jobs + Notifications** (نمط base: `SendNotificationJob`, `UserNotification`) للإشعارات DB+FCM · Observers (أُنشئت في 4/5) · تقارير عبر scopes/aggregates (لا استعلامات في Blade).
- **قواعد أعمال:** الإشعارات تُطلق من أحداث الحجز/التقييم (لا يدوي) · الاسترداد يسجّل معاملة + يحدّث payment_status.
- **حواف:** FCM token غير موجود · مستخدم أطفأ الإشعارات (is_notify) · تقرير بمدى تاريخ فارغ.

## design pattern (اقتراح)
- **Events + Listeners** (نمط base) لفصل الإشعارات عن منطق الحجز — الافتراضي، لا باترن جديد.

## نتيجة الإنجاز (DoD)
```
migrate:fresh --seed: ⬜ · pint: ⬜ · dump-autoload -o: ⬜ · schema:check: ⬜ · test: ⬜ · smoke: ⬜ · commit: <hash>
```
