# نظام الكول سنتر — خطة النظام الكاملة (Laravel)

> وثيقة تخطيط شاملة لكل نقاط ومميزات نظام الكول سنتر.

---

## فهرس المحتويات

1. [الأساسيات (Core Setup)](#1-الأساسيات-core-setup)
2. [إدارة المستخدمين والصلاحيات](#2-إدارة-المستخدمين-والصلاحيات)
3. [الفرق والحملات (Teams & Campaigns)](#3-الفرق-والحملات-teams--campaigns)
4. [الورديات والحضور (Shifts & Attendance)](#4-الورديات-والحضور-shifts--attendance)
5. [العملاء وقواعد البيانات](#5-العملاء-وقواعد-البيانات)
6. [المكالمات — قلب النظام](#6-المكالمات--قلب-النظام)
7. [نتائج المكالمات (Dispositions)](#7-نتائج-المكالمات-dispositions)
8. [الربط بالسنترال (Telephony Integration)](#8-الربط-بالسنترال-telephony-integration)
9. [التذاكر والشكاوى (Tickets)](#9-التذاكر-والشكاوى-tickets)
10. [المتابعة والمعاودة (Follow-ups & Callbacks)](#10-المتابعة-والمعاودة-follow-ups--callbacks)
11. [المتابعة اللحظية (Live Monitoring)](#11-المتابعة-اللحظية-live-monitoring)
12. [التقارير ومؤشرات الأداء (KPIs)](#12-التقارير-ومؤشرات-الأداء-kpis)
13. [الجودة (Quality Assurance)](#13-الجودة-quality-assurance)
14. [السكريبتات وقاعدة المعرفة](#14-السكريبتات-وقاعدة-المعرفة)
15. [الإشعارات والتنبيهات](#15-الإشعارات-والتنبيهات)
16. [قنوات إضافية (Omnichannel)](#16-قنوات-إضافية-omnichannel)
17. [الأمان والتدقيق](#17-الأمان-والتدقيق)
18. [الإعدادات العامة](#18-الإعدادات-العامة)
19. [البنية التقنية والحزم](#19-البنية-التقنية-والحزم)
20. [مخطط قاعدة البيانات المقترح](#20-مخطط-قاعدة-البيانات-المقترح)
21. [خطة التنفيذ على مراحل](#21-خطة-التنفيذ-على-مراحل)

---

## 1. الأساسيات (Core Setup)

- [ ] Laravel 11/12 + MySQL/PostgreSQL
- [ ] Redis للـ Cache والـ Queues والـ Sessions
- [ ] دعم اللغتين (عربي/إنجليزي) + RTL
- [ ] Multi-tenancy (اختياري) لو النظام هيخدم أكتر من شركة
- [ ] Timezone موحّد + تخزين كل التواريخ UTC
- [ ] Soft Deletes على الجداول الأساسية
- [ ] Seeders للبيانات الافتراضية (أدوار، نتائج مكالمات، إعدادات)

---

## 2. إدارة المستخدمين والصلاحيات

### الأدوار المقترحة
| الدور | الصلاحيات |
|---|---|
| **Super Admin** | كل حاجة + إعدادات النظام |
| **Admin** | إدارة المستخدمين والحملات والتقارير |
| **Supervisor** | متابعة الفرق + التقارير + الاستماع للمكالمات |
| **Team Leader** | متابعة فريقه فقط |
| **QA / Quality** | تقييم المكالمات فقط |
| **Agent** | المكالمات والعملاء المسندة له فقط |
| **Viewer** | عرض التقارير فقط |

### النقاط
- [ ] تسجيل دخول + 2FA (اختياري)
- [ ] ربط كل موظف بـ **Extension** رقم داخلي في السنترال
- [ ] صورة، رقم وظيفي، تاريخ التعيين، حالة (نشط/موقوف)
- [ ] صلاحيات تفصيلية (Permissions) لكل شاشة وكل عملية
- [ ] تحديد نطاق الرؤية: كل البيانات / فريقه / بياناته فقط
- [ ] إجبار تغيير الباسورد أول دخول
- [ ] قفل الحساب بعد محاولات دخول فاشلة

---

## 3. الفرق والحملات (Teams & Campaigns)

- [ ] **Teams**: فريق له Team Leader وعدد من الـ Agents
- [ ] **Campaigns / Projects**: حملة اتصال ليها هدف وتاريخ بداية ونهاية
- [ ] نوع الحملة: Inbound / Outbound / Blended
- [ ] ربط قوائم الأرقام (Lead Lists) بالحملة
- [ ] تحديد الـ Dispositions المسموح بيها لكل حملة
- [ ] تحديد السكريبت الخاص بالحملة
- [ ] هدف الحملة (عدد مكالمات / عدد مبيعات) ونسبة الإنجاز
- [ ] أوقات الاتصال المسموح بيها (مثلاً 9ص–9م فقط)

---

## 4. الورديات والحضور (Shifts & Attendance)

- [ ] تعريف الورديات (صباحي / مسائي / ليلي) بمواعيد
- [ ] جدول ورديات أسبوعي/شهري لكل موظف
- [ ] تسجيل **Login / Logout** الفعلي على النظام
- [ ] حساب **التأخير** و**الانصراف المبكر** و**الغياب**
- [ ] تسجيل **البريكات (Breaks)**: نوع البريك + المدة + هل تجاوز الحد
- [ ] تقرير **Schedule Adherence** (نسبة الالتزام بالوردية)
- [ ] الإجازات والطلبات

---

## 5. العملاء وقواعد البيانات

### Customers
- [ ] اسم، أرقام تليفون متعددة، إيميل، عنوان، مدينة
- [ ] مصدر العميل (Source): موقع، فيسبوك، إعلان، توصية…
- [ ] تصنيف العميل (VIP / عادي / محتمل)
- [ ] تاريخ كامل بكل المكالمات والتذاكر الخاصة بيه
- [ ] حقول مخصصة (Custom Fields) حسب طبيعة الشركة
- [ ] البحث السريع بالرقم أو الاسم

### Lead Lists (قوائم الاتصال)
- [ ] رفع ملف Excel/CSV بأرقام العملاء
- [ ] معاينة الأعمدة وربطها (Column Mapping) قبل الاستيراد
- [ ] كشف وحذف الأرقام المكررة (Duplicates)
- [ ] تنظيف وتوحيد صيغة الأرقام (Normalization)
- [ ] تقرير بالسطور اللي فشل استيرادها والسبب
- [ ] توزيع القائمة على الموظفين (يدوي / تلقائي / بالتساوي / Round Robin)
- [ ] إعادة توزيع الأرقام غير المتصل بيها

### Blacklist / DNC
- [ ] قائمة أرقام ممنوع الاتصال بيها
- [ ] منع النظام من إسناد الرقم لأي موظف
- [ ] سبب الإضافة + مين ضافه + التاريخ

---

## 6. المكالمات — قلب النظام

### جدول `calls` — الحقول
| الحقل | النوع | الوصف |
|---|---|---|
| `id` | bigint | المعرّف |
| `uuid` | string | معرّف فريد للربط الخارجي |
| `external_id` | string | Unique ID من السنترال |
| `direction` | enum | `inbound` / `outbound` / `internal` |
| `customer_id` | FK | العميل (لو معروف) |
| `phone_number` | string | الرقم |
| `agent_id` | FK | الموظف |
| `campaign_id` | FK | الحملة |
| `queue_id` | FK | الطابور (للوارد) |
| `did_number` | string | الرقم اللي العميل اتصل عليه |
| `started_at` | datetime | بداية المكالمة |
| `answered_at` | datetime | لحظة الرد |
| `ended_at` | datetime | نهاية المكالمة |
| `wait_time` | int | ثواني الانتظار قبل الرد |
| `talk_time` | int | ثواني الكلام الفعلي |
| `hold_time` | int | ثواني الانتظار أثناء المكالمة |
| `wrap_up_time` | int | ثواني ما بعد المكالمة (ACW) |
| `duration` | int | المدة الكلية |
| `status` | enum | حالة المكالمة (تحت) |
| `hangup_by` | enum | `agent` / `customer` / `system` |
| `disposition_id` | FK | نتيجة المكالمة |
| `sub_disposition_id` | FK | تفصيل النتيجة |
| `notes` | text | ملاحظات الموظف |
| `recording_url` | string | رابط التسجيل |
| `recording_duration` | int | مدة التسجيل |
| `attempt_number` | int | رقم المحاولة على نفس الرقم |
| `transferred_from` | FK | حُوّلت من أي موظف |
| `transferred_to` | FK | حُوّلت لأي موظف |
| `follow_up_at` | datetime | ميعاد المعاودة |
| `cost` | decimal | تكلفة المكالمة (لو متاحة) |
| `ip_address` / `user_agent` | string | للتدقيق |

### حالات المكالمة (`status`)
| الحالة | المعنى |
|---|---|
| `initiated` | بدأ الاتصال |
| `ringing` | بيرن |
| `answered` | تم الرد ✅ |
| `no_answer` | مفيش رد |
| `busy` | مشغول |
| `rejected` | العميل رفض |
| `failed` | فشل الاتصال (مشكلة فنية) ❌ |
| `invalid_number` | رقم غير صحيح |
| `voicemail` | راح للبريد الصوتي |
| `abandoned` | العميل قفل قبل ما حد يرد (للوارد) |
| `missed` | مكالمة واردة فاتت |
| `transferred` | تم تحويلها |

### مميزات إضافية للمكالمات
- [ ] **Click-to-Call**: ضغطة على الرقم من الشاشة = التليفون يرن
- [ ] **Screen Pop**: فتح بيانات العميل تلقائياً عند المكالمة الواردة
- [ ] **تسجيل المكالمات** + تشغيل مباشر من داخل النظام
- [ ] **التحويل (Transfer)**: لموظف آخر أو لقسم — مع تسجيل السبب
- [ ] **Conference / 3-Way**: إضافة طرف ثالث
- [ ] **Hold / Mute**
- [ ] **Barge-in / Whisper / Listen**: للسوبرفايزر يسمع أو يتدخل
- [ ] **Wrap-up Time**: وقت محدد بعد المكالمة لتسجيل النتيجة
- [ ] **إجبار تسجيل الـ Disposition** قبل استقبال مكالمة جديدة
- [ ] **Call Timeline**: عرض تسلسل أحداث المكالمة (رن → رد → hold → تحويل → إنهاء)
- [ ] **Auto-logging**: تسجيل المكالمة من Webhook السنترال حتى لو الموظف نسي — عشان مفيش مكالمة تضيع

---

## 7. نتائج المكالمات (Dispositions)

### جدول `dispositions`
- `name` — اسم النتيجة
- `category` — `success` / `follow_up` / `failed` / `neutral`
- `color` — لون للعرض في التقارير
- `requires_note` — هل يجب كتابة ملاحظة
- `requires_followup_date` — هل يجب تحديد ميعاد معاودة
- `is_final` — هل توقف المحاولات على الرقم ده
- `campaign_id` — خاصة بحملة معينة أو عامة

### أمثلة التصنيف
**✅ ناجحة (success)**
- تم البيع / تم تأكيد الطلب
- تم حل المشكلة
- العميل موافق
- تم تحديد موعد

**⚠️ تحتاج متابعة (follow_up)**
- طلب معاودة الاتصال
- الرقم مشغول
- العميل مش فاضي
- تحويل لقسم آخر
- في انتظار رد العميل

**❌ فاشلة (failed)**
- رقم خطأ / غير موجود
- العميل رفض
- الرقم مغلق باستمرار
- شكوى مفتوحة لم تُحل
- مشكلة فنية في الخط

> بالتصنيف ده تقدر تجاوب فوراً على: **كام مكالمة تمت؟ كام فيها مشكلة؟ كام محتاجة متابعة؟**

---

## 8. الربط بالسنترال (Telephony Integration)

### الخيارات
| الخيار | ملاحظات |
|---|---|
| **Asterisk / FreePBX / Issabel** | مجاني، تحكم كامل، عن طريق **AMI** أو **ARI** |
| **3CX** | سهل، له REST API |
| **Twilio / Vonage** | سحابي، سريع التنفيذ، تكلفة بالدقيقة |
| **VICIdial** | نظام كول سنتر جاهز ممكن الربط بقاعدته |

### النقاط المطلوبة
- [ ] **Webhook Endpoint** يستقبل أحداث المكالمة: `call.started`, `call.answered`, `call.ended`, `call.failed`
- [ ] التحقق من صحة الـ Webhook (Signature / Token)
- [ ] **Event Listener** يحوّل الأحداث لسجلات في جدول `calls`
- [ ] **Originate Call API** للـ Click-to-Call
- [ ] ربط Extension كل موظف بحسابه
- [ ] **IVR** — الرد الآلي وتوجيه العميل
- [ ] **Call Queues** — طوابير الانتظار وتوزيع المكالمات
- [ ] **Routing Rules**: توجيه حسب اللغة / المنطقة / آخر موظف تعامل معه (Sticky Agent)
- [ ] **Dialers** للمكالمات الصادرة:
  - Preview Dialer (الموظف يشوف البيانات قبل الاتصال)
  - Progressive Dialer (اتصال تلقائي واحد ورا التاني)
  - Predictive Dialer (اتصال متعدد وتوجيه المردود عليه)
- [ ] **Retry Logic**: عدد المحاولات على الرقم + الفاصل الزمني بين المحاولات
- [ ] تخزين التسجيلات (محلي / S3) + سياسة حذف بعد مدة

---

## 9. التذاكر والشكاوى (Tickets)

- [ ] رقم مرجعي فريد لكل تذكرة
- [ ] النوع: شكوى / استفسار / طلب خدمة / اقتراح
- [ ] الأولوية: عادي / مهم / عاجل
- [ ] الحالة: مفتوحة / قيد المعالجة / في انتظار العميل / مغلقة / معاد فتحها
- [ ] الإسناد لموظف أو قسم + إعادة الإسناد
- [ ] **SLA**: مدة محددة لكل أولوية + تصعيد تلقائي عند التجاوز
- [ ] المرفقات (صور / ملفات)
- [ ] سلسلة الردود والتعليقات (داخلي / مرئي للعميل)
- [ ] ربط التذكرة بالمكالمات المتعلقة بيها
- [ ] تقييم العميل بعد الإغلاق (CSAT)

---

## 10. المتابعة والمعاودة (Follow-ups & Callbacks)

- [ ] شاشة "مكالمات النهاردة" لكل موظف
- [ ] تنبيه قبل ميعاد المعاودة بـ X دقيقة
- [ ] المتأخرات (Overdue) بلون مميز
- [ ] إعادة جدولة المعاودة
- [ ] نقل المعاودة لموظف آخر
- [ ] تقرير: نسبة الالتزام بمواعيد المعاودة

---

## 11. المتابعة اللحظية (Live Monitoring)

### Dashboard حي (Real-time)
- [ ] عدد الموظفين المتاحين / في مكالمة / في بريك / offline
- [ ] عدد المكالمات المنتظرة في الطابور + أطول مدة انتظار
- [ ] المكالمات الجارية دلوقتي (مين مع مين ومن كام دقيقة)
- [ ] عداد لحظي: مكالمات اليوم / تم الرد / فاتت
- [ ] المكالمات المفقودة (Missed) اللي محتاجة معاودة
- [ ] لوحة Leaderboard لأفضل الموظفين

### حالات الموظف (Agent Status)
| الحالة | الوصف |
|---|---|
| `available` | متاح لاستقبال مكالمات |
| `on_call` | في مكالمة |
| `acw` | بيسجل نتيجة المكالمة |
| `break` | في بريك |
| `training` | تدريب / اجتماع |
| `offline` | خارج النظام |

- [ ] تسجيل مدة كل حالة في جدول `agent_status_logs`
- [ ] تنبيه لو موظف قعد في حالة معينة أطول من اللازم
- [ ] السوبرفايزر يقدر يغيّر حالة الموظف

---

## 12. التقارير ومؤشرات الأداء (KPIs)

### تقارير المكالمات
- [ ] سجل مكالمات كامل مع فلترة (تاريخ، موظف، فريق، حملة، حالة، نتيجة، رقم)
- [ ] تقرير يومي / أسبوعي / شهري
- [ ] توزيع المكالمات على ساعات اليوم (Peak Hours)
- [ ] توزيع النتائج (Dispositions Breakdown)
- [ ] مقارنة بين الموظفين / الفرق / الحملات

### المؤشرات (KPIs)
| المؤشر | المعنى |
|---|---|
| **Total Calls** | إجمالي المكالمات (صادر/وارد) |
| **Answer Rate** | نسبة المكالمات المردود عليها |
| **Abandon Rate** | نسبة العملاء اللي قفلوا قبل الرد |
| **AHT** (Average Handle Time) | متوسط زمن المكالمة + ACW |
| **ATT** (Average Talk Time) | متوسط زمن الكلام |
| **ASA** (Average Speed of Answer) | متوسط سرعة الرد |
| **Service Level** | نسبة الردود خلال X ثانية (مثلاً 80/20) |
| **FCR** (First Call Resolution) | نسبة الحل من أول مكالمة |
| **Occupancy** | نسبة انشغال الموظف من وقت الوردية |
| **Conversion Rate** | نسبة النجاح من إجمالي المحاولات |
| **CSAT / NPS** | رضا العملاء |
| **Adherence** | الالتزام بالوردية |

### مخرجات
- [ ] رسوم بيانية (Charts)
- [ ] تصدير Excel / CSV / PDF
- [ ] تقارير مجدولة تتبعت بالإيميل يومياً/أسبوعياً
- [ ] لوحة تحكم لكل دور (Agent Dashboard / Supervisor Dashboard / Admin Dashboard)

---

## 13. الجودة (Quality Assurance)

- [ ] **نماذج تقييم (Evaluation Forms)** بأقسام وأسئلة ودرجات
- [ ] معايير مقترحة: التحية والتعريف، الاستماع، حل المشكلة، اللغة والأسلوب، الالتزام بالسكريبت، الإنهاء الصحيح
- [ ] أسئلة مُلغية للتقييم (Auto-fail) مثل: إساءة للعميل
- [ ] اختيار عينة عشوائية من المكالمات للتقييم
- [ ] الاستماع للتسجيل من داخل شاشة التقييم
- [ ] درجة نهائية + ملاحظات + توصية بالتدريب
- [ ] اعتراض الموظف على التقييم (Dispute)
- [ ] تقرير درجات الجودة لكل موظف/فريق عبر الوقت

---

## 14. السكريبتات وقاعدة المعرفة

- [ ] **Call Scripts**: نص إرشادي يظهر للموظف أثناء المكالمة
- [ ] سكريبت مختلف لكل حملة
- [ ] سكريبت تفاعلي (لو العميل قال كذا → اعرض كذا)
- [ ] **Knowledge Base**: مقالات وأسئلة شائعة للموظفين
- [ ] بحث سريع داخل قاعدة المعرفة أثناء المكالمة
- [ ] **Canned Responses**: ردود جاهزة

---

## 15. الإشعارات والتنبيهات

- [ ] إشعار داخل النظام (Bell) + إيميل + SMS/WhatsApp (اختياري)
- [ ] تنبيه السوبرفايزر: طابور الانتظار طويل / موظف متأخر / SLA على وشك التجاوز
- [ ] تنبيه الموظف: ميعاد معاودة / تذكرة جديدة مسندة له
- [ ] تنبيه إداري: تقرير نهاية اليوم
- [ ] Broadcasting لحظي (Laravel Reverb / Pusher)

---

## 16. قنوات إضافية (Omnichannel)

- [ ] **WhatsApp Business API** — محادثات من نفس الشاشة
- [ ] **SMS** — إرسال جماعي أو فردي
- [ ] **Email** — استقبال وإرسال مربوط بالتذاكر
- [ ] **Live Chat** على الموقع
- [ ] **Social Media** (Facebook / Instagram Messages)
- [ ] توحيد كل القنوات في **Unified Inbox** لكل عميل

---

## 17. الأمان والتدقيق

- [ ] **Activity Log**: تسجيل كل عملية (مين عمل إيه وإمتى وعلى إيه)
- [ ] **Login History**: سجل الدخول بالـ IP والجهاز
- [ ] إخفاء جزء من أرقام العملاء حسب الصلاحية (Data Masking)
- [ ] صلاحية الاستماع للتسجيلات محصورة
- [ ] تشفير البيانات الحساسة
- [ ] نسخ احتياطي تلقائي (Backups)
- [ ] Rate Limiting على الـ APIs
- [ ] سياسة الاحتفاظ بالبيانات والتسجيلات (Data Retention)

---

## 18. الإعدادات العامة

- [ ] بيانات الشركة والشعار
- [ ] إعدادات السنترال (Host / Port / Credentials)
- [ ] إعدادات الـ SLA لكل أولوية
- [ ] مدة الـ Wrap-up المسموحة
- [ ] الحد الأقصى لمدة البريك ونوعياته
- [ ] عدد محاولات الاتصال والفاصل الزمني
- [ ] أوقات العمل والعطلات الرسمية
- [ ] قوالب الإيميل والرسائل
- [ ] إدارة الـ Dispositions والـ Queues والـ DIDs

---

## 19. البنية التقنية والحزم

### الحزم المقترحة
```
spatie/laravel-permission        الأدوار والصلاحيات
spatie/laravel-activitylog       تتبع العمليات
maatwebsite/excel                استيراد وتصدير Excel
barryvdh/laravel-dompdf          تقارير PDF
laravel/reverb (أو pusher)       التحديث اللحظي (WebSockets)
laravel/horizon                  إدارة الـ Queues
spatie/laravel-backup            النسخ الاحتياطي
laravel/sanctum                  API Authentication
laravel/scout + meilisearch      البحث السريع (اختياري)
```

### الواجهة (Frontend) — اختر واحد
| الخيار | مناسب لـ |
|---|---|
| **Livewire + Alpine + Tailwind** | تطوير أسرع، فريق Laravel |
| **Inertia + Vue/React** | واجهة تفاعلية أقوى |
| **API + SPA منفصل** | لو في تطبيق موبايل كمان |

### البنية الداخلية
- [ ] Service Layer للمنطق المعقد (CallService, DialerService, ReportService)
- [ ] Repository Pattern (اختياري)
- [ ] Form Requests للـ Validation
- [ ] API Resources للاستجابات
- [ ] Events & Listeners لأحداث المكالمات
- [ ] Jobs & Queues للعمليات الثقيلة (استيراد، تقارير، إرسال)
- [ ] Scheduled Commands (تقارير مجدولة، تنظيف بيانات، تنبيهات)
- [ ] Observers للتحديث التلقائي للإحصائيات

---

## 20. مخطط قاعدة البيانات المقترح

### الجداول الأساسية
```
users                    الموظفين والمستخدمين
roles / permissions      الأدوار والصلاحيات
teams                    الفرق
team_user                ربط الموظف بالفريق
campaigns                الحملات
shifts                   الورديات
shift_user               جدول الورديات
attendances              الحضور والانصراف
breaks                   البريكات

customers                العملاء
customer_phones          أرقام العميل المتعددة
lead_lists               قوائم الاتصال
leads                    الأرقام داخل القائمة
blacklists               الأرقام الممنوعة

calls                    المكالمات ⭐
call_events              أحداث المكالمة (timeline)
call_recordings          التسجيلات
dispositions             نتائج المكالمات
sub_dispositions         تفاصيل النتائج
queues                   طوابير الانتظار
did_numbers              الأرقام الواردة

tickets                  التذاكر
ticket_replies           الردود
ticket_attachments       المرفقات
sla_policies             سياسات الـ SLA

follow_ups               المعاودات
agent_status_logs        سجل حالات الموظف

evaluation_forms         نماذج التقييم
evaluation_criteria      معايير التقييم
evaluations              التقييمات المنفذة
evaluation_answers       إجابات التقييم

scripts                  سكريبتات المكالمات
knowledge_articles       قاعدة المعرفة
canned_responses         الردود الجاهزة

notifications            الإشعارات
activity_log             سجل العمليات
settings                 الإعدادات
```

### العلاقات الرئيسية
```
User      ─┬─ hasMany  → Calls
           ├─ hasMany  → Evaluations
           ├─ hasMany  → AgentStatusLogs
           └─ belongsToMany → Teams

Customer  ─┬─ hasMany  → Calls
           ├─ hasMany  → Tickets
           └─ hasMany  → CustomerPhones

Call      ─┬─ belongsTo → User (agent)
           ├─ belongsTo → Customer
           ├─ belongsTo → Campaign
           ├─ belongsTo → Disposition
           ├─ hasMany   → CallEvents
           ├─ hasOne    → Recording
           └─ hasOne    → Evaluation

Campaign  ─┬─ hasMany  → Calls
           ├─ hasMany  → LeadLists
           └─ belongsToMany → Dispositions
```

---

## 21. خطة التنفيذ على مراحل

### المرحلة 1 — الأساس (Foundation)
- [ ] إعداد المشروع والـ Auth والصلاحيات
- [ ] المستخدمين والأدوار والفرق
- [ ] الإعدادات العامة
- [ ] لوحة تحكم أساسية

### المرحلة 2 — البيانات (Data)
- [ ] العملاء وأرقامهم
- [ ] الحملات وقوائم الاتصال
- [ ] الاستيراد من Excel والتوزيع
- [ ] Blacklist

### المرحلة 3 — المكالمات (Calls) ⭐
- [ ] جدول المكالمات والـ Dispositions
- [ ] شاشة تسجيل المكالمة يدوياً
- [ ] سجل المكالمات بالفلترة
- [ ] المعاودات والمتابعة

### المرحلة 4 — الربط بالسنترال
- [ ] Webhook للأحداث
- [ ] Click-to-Call
- [ ] Screen Pop
- [ ] التسجيلات
- [ ] Auto-logging

### المرحلة 5 — المتابعة والتقارير
- [ ] Live Dashboard
- [ ] حالات الموظفين
- [ ] كل التقارير والـ KPIs
- [ ] التصدير والتقارير المجدولة

### المرحلة 6 — التذاكر والجودة
- [ ] التذاكر والشكاوى والـ SLA
- [ ] نماذج التقييم والجودة

### المرحلة 7 — التوسعات
- [ ] الدialers المتقدمة
- [ ] WhatsApp / SMS / Email
- [ ] قاعدة المعرفة والسكريبتات
- [ ] تطبيق موبايل / API

---

## ملاحظات مهمة

1. **أهم قرار في البداية**: تحديد السنترال (Asterisk / 3CX / Twilio) — لأنه بيحدد شكل جدول المكالمات والـ Webhooks.
2. **الـ Auto-logging من الـ Webhook ضروري** — لأن الاعتماد على تسجيل الموظف اليدوي بيخلي مكالمات كتير تضيع.
3. **صنّف الـ Dispositions من البداية** (`success` / `follow_up` / `failed`) — ده اللي هيخلي التقارير سهلة بدون تعديلات لاحقة.
4. **خزّن كل أحداث المكالمة** في `call_events` — مفيدة جداً في تتبع المشاكل والنزاعات.
5. **الأداء**: جدول المكالمات بيكبر بسرعة — ضع Indexes على `agent_id`, `customer_id`, `started_at`, `status`, `campaign_id`، وفكّر في Partitioning بالشهر لاحقاً.
