# دليل تجربة لوحة تحكم المؤسسات لفريق المدرسة

الغرض من هذا الدليل هو تمكين فريق المدرسة من تجربة مسار المؤسسات كاملًا بطريقة منظمة، واكتشاف أي رابط مكسور أو تجربة غير واضحة قبل الاعتماد العملي.

## قبل البدء

نفذ هذا الأمر مرة واحدة على بيئة التجربة أو staging فقط:

```bash
php artisan db:seed --class=CorporateWorkflowDemoSeeder
```

مهم:

- لا تشغل هذا الـ seeder على production الحقيقي إلا إذا كان لديك نسخة تجريبية معزولة.
- كل البيانات تحمل prefix واضح مثل `DEMO-PROP-*`, `DEMO-AGR-*`, `DEMO-INV-*`.
- كلمة المرور التجريبية لكل الحسابات أدناه هي: `password`.

## حسابات الدخول التجريبية

| الحساب | الدور | الغرض من التجربة |
|---|---|---|
| `admin.demo@ecoin.test` | Admin | تجربة لوحة المؤسسات كاملة، كل الروابط، الفواتير، التقارير، المدفوعات. |
| `support.demo@ecoin.test` | Support | تجربة الصلاحيات المحدودة، المتابعة بدون صلاحيات مالية حساسة. |
| `teacher.demo@ecoin.test` | Teacher | تجربة رؤية فوج مؤسسة مسند للمدرب والحضور. |
| `org.member.demo@ecoin.test` | Organization member | تجربة بوابة المؤسسة ورؤية برامج/تقارير/فواتير المؤسسة فقط. |

## روابط الدخول الأساسية

| الصفحة | الرابط |
|---|---|
| تسجيل الدخول | `/login` |
| صفحة المؤسسات العامة | `/corporate` |
| صفحة B2B | `/b2b` |
| لوحة تحكم المؤسسات | `/admin/corporate-dashboard` |
| طلبات المؤسسات | `/admin/b2b/leads` |
| المؤسسات | `/admin/organizations` |
| العروض | `/admin/corporate-proposals` |
| الاتفاقيات | `/admin/corporate-agreements` |
| أفواج المؤسسات | `/admin/corporate-cohorts` |
| تقارير المؤسسات | `/admin/corporate-reports` |
| فواتير المؤسسات | `/admin/corporate-invoices` |
| دفعات المؤسسات | `/admin/corporate-payments` |
| مستحقات المؤسسات | `/admin/corporate-finance/receivables` |
| الإشعارات الدائنة | `/admin/corporate-credit-notes` |
| بوابة المؤسسة | `/org/select` ثم `/org/dashboard` |
| برامج المؤسسة | `/org/programs` |
| تقارير المؤسسة | `/org/reports` |
| فواتير المؤسسة | `/org/invoices` |

## سيناريوهات البيانات التجريبية

| السيناريو | المؤسسة | ماذا يجب أن يظهر |
|---|---|---|
| Lead جديد فقط | مؤسسة النور للخدمات التعليمية | طلب جديد في قائمة B2B Leads. |
| Lead محوّل إلى مؤسسة | شركة الجزائر الرقمية | Organization نشطة وعضو بوابة مرتبط بها. |
| عرض مرسل | مؤسسة النجاح للتكوين المهني | Proposal بحالة sent مع عناصر مالية. |
| عرض محوّل إلى اتفاقية مسودة | مدرسة المستقبل الخاصة | Proposal converted + Agreement draft. |
| اتفاقية نشطة + فوج | مؤسسة الريادة الاقتصادية | Corporate Cohort + متدربين + سجلات حضور. |
| تقرير نهائي | شركة أوران للتقنيات | Report final_delivery generated مع PDF path خاص. |
| فاتورة + دفع + تخصيص | مؤسسة المتوسط للاستشارات | Invoice partially paid + Payment confirmed + Allocation. |
| فاتورة متأخرة | المجمع الإداري للجنوب | Invoice overdue تظهر في receivables aging. |
| Credit Note | شركة التعليم الذكي | Credit note applied وتعديل balance. |
| Allocation Reversal | مؤسسة الأفق للتدريب | تخصيص معكوس وtransaction سلبي. |

## خطة تجربة Admin

سجل الدخول بـ:

`admin.demo@ecoin.test` / `password`

1. افتح `/admin/corporate-dashboard`.
2. تأكد أن البطاقات تعرض بيانات في:
   - Leads
   - Proposals
   - Agreements
   - Corporate Cohorts
   - Finance
   - Alerts
3. من القائمة الجانبية افتح كل رابط Corporate وتأكد أن الصفحة لا تعطي 404 أو 500:
   - طلبات المؤسسات
   - المؤسسات
   - عروض المؤسسات
   - اتفاقيات المؤسسات
   - أفواج المؤسسات
   - تقارير المؤسسات
   - فواتير المؤسسات
   - دفعات المؤسسات
   - الإشعارات الدائنة
   - مستحقات المؤسسات
4. افتح `/admin/organizations`.
5. اختر مؤسسة مثل `مؤسسة المتوسط للاستشارات`.
6. تأكد أن صفحة المؤسسة تعرض:
   - الأعضاء
   - العروض
   - الاتفاقيات
   - الأفواج
   - التقارير
   - الفواتير
   - المدفوعات
7. افتح فاتورة `DEMO-INV-007`.
8. تأكد من وضوح:
   - المبلغ الإجمالي
   - المدفوع
   - المتبقي
   - allocations
9. افتح `/admin/corporate-finance/receivables`.
10. تأكد أن الفاتورة المتأخرة الخاصة بـ `المجمع الإداري للجنوب` تظهر ضمن المستحقات.

## خطة تجربة Support

سجل الدخول بـ:

`support.demo@ecoin.test` / `password`

اختبر الآتي:

1. افتح `/admin/b2b/leads`.
2. تأكد أن support يستطيع رؤية طلبات المؤسسات.
3. افتح `/admin/corporate-dashboard`.
4. يجب ألا تظهر التفاصيل المالية الحساسة إذا لا يملك صلاحية `corporate_finance.view`.
5. جرّب فتح صفحات مالية حساسة مثل:
   - `/admin/corporate-payments`
   - `/admin/corporate-finance/receivables`
6. سجل هل النظام يمنع الوصول أو يخفي التفاصيل حسب الصلاحيات.

## خطة تجربة Teacher

سجل الدخول بـ:

`teacher.demo@ecoin.test` / `password`

اختبر الآتي:

1. افتح لوحة الأستاذ.
2. تأكد أن الفوج المرتبط بالمؤسسات يظهر للمدرب.
3. افتح تفاصيل الفوج إن وجدت.
4. تحقق من:
   - جدول الحصص
   - حضور/غياب المتدربين
   - عدم ظهور أفواج غير مسندة له

## خطة تجربة Org Member

سجل الدخول بـ:

`org.member.demo@ecoin.test` / `password`

1. افتح `/org/select`.
2. اختر المؤسسة المتاحة.
3. افتح `/org/programs`.
4. تأكد أن برامج المؤسسة فقط تظهر.
5. افتح `/org/reports`.
6. تأكد أن التقارير الخاصة بالمؤسسة فقط تظهر.
7. افتح `/org/invoices`.
8. تأكد أن الفواتير الخاصة بالمؤسسة فقط تظهر.
9. تأكد أن فواتير مؤسسات أخرى مثل `DEMO-INV-008` أو `DEMO-INV-009` لا تظهر إذا لم تكن لنفس المؤسسة.

## اختبار الروابط المكسورة

أثناء التجربة، أي زر أو رابط يجب أن يكون واحدًا من هذه الحالات:

- يفتح صفحة صحيحة.
- ينفذ action واضح.
- يظهر disabled مع سبب واضح.

يجب تسجيل أي حالة من الآتي:

- رابط يعطي 404.
- رابط يعطي 500.
- زر لا يفعل شيئًا.
- زر `#` بدون وظيفة.
- صفحة فيها مفتاح ترجمة ظاهر مثل `corporate.xxx`.
- صفحة تعرض بيانات مؤسسة أخرى لمستخدم المؤسسة.

## نموذج إرسال الملاحظات

عند العثور على مشكلة، أرسلها بهذا الشكل:

```text
الحساب المستخدم:
الرابط:
الخطوة التي قمت بها:
ما الذي توقعت حدوثه:
ما الذي حدث فعليًا:
رسالة الخطأ إن وجدت:
صورة شاشة:
درجة الأهمية: منخفضة / متوسطة / عالية / تمنع العمل
```

## قائمة قبول سريعة

اعتبر التجربة ناجحة إذا:

- لوحة `/admin/corporate-dashboard` تعمل وتعرض بيانات مفهومة.
- كل روابط Corporate في القائمة الجانبية تعمل.
- Admin يرى كل المسار.
- Support لا يرى ما لا يملك صلاحية له.
- Teacher لا يرى إلا أفواجه.
- Org member لا يرى إلا بيانات مؤسسته.
- لا تظهر raw translation keys.
- لا توجد أخطاء 404/500 في الصفحات الأساسية.
- الفواتير والمدفوعات والمستحقات تعرض أرقامًا منطقية.

## أوامر تحقق للمطور

بعد تجربة الفريق، يمكن للمطور تشغيل:

```bash
php artisan test tests/Feature/Corporate/CorporateLinksSmokeTest.php tests/Feature/Corporate/CorporateWorkflowDemoSeederTest.php tests/Feature/Corporate/CorporateDashboardWithSeedDataTest.php tests/Feature/Corporate/OrgPortalSeedDataTest.php
```

النتيجة المتوقعة:

- `5 passed`
- `75 assertions`
