# دليل التشغيل وسير العمليات الكامل — منصة Liv Hospital لنقل المرضى الدوليين
## Liv Hospital International — Patient Transfer Management Platform

---

## 📌 فهرس المحتويات
1. [نظرة عامة على المنصة والمعمارية](#1-نظرة-عامة-على-المنصة-والمعمارية)
2. [متطلبات النظام والبيئة التشغيلية](#2-متطلبات-النظام-والبيئة-التشغيلية)
3. [خطوات تشغيل المنصة من الصفر (أوامر سريعة)](#3-خطوات-تشغيل-المنصة-من-الصفر-أوامر-سريعة)
4. [دليل الحسابات وكلمات المرور الافتراضية](#4-دليل-الحسابات-وكلمات-المرور-الافتراضية)
5. [دليل سير العمليات خطوة بخطوة (مع لقطات الشاشة)](#5-دليل-سير-العمليات-خطوة-بخطوة-مع-لقطات-الشاشة)
   - [الخطوة 1: تسجيل الدخول واختيار الصلاحية](#الخطوة-1-تسجيل-الدخول-واختيار-الصلاحية)
   - [الخطوة 2: إدارة سجلات وتفضيلات المرضى الدوليين](#الخطوة-2-إدارة-سجلات-وتفضيلات-المرضى-الدوليين)
   - [الخطوة 3: معالج إنشاء حجز نقل جديد (4 خطوات)](#الخطوة-3-معالج-إنشاء-حجز-نقل-جديد-4-خطوات)
   - [الخطوة 4: غرفة العمليات وتعيين الأسطول (ثابت / دعم)](#الخطوة-4-غرفة-العمليات-وتعيين-الأسطول-ثابت--دعم)
   - [الخطوة 5: دورة حياة الرحلة وسير عمل السائق](#الخطوة-5-دورة-حياة-الرحلة-وسير-عمل-السائق)
   - [الخطوة 6: إدارة الطوارئ واستبدال المركبة على الطريق](#الخطوة-6-إدارة-الطوارئ-واستبدال-المركبة-على-الطريق)
   - [الخطوة 7: بوابة شركات النقل وبوابة السائقين](#الخطوة-7-بوابة-شركات-النقل-وبوابة-السائقين)
   - [الخطوة 8: إشعارات واتساب وتتبع المريض المباشر](#الخطوة-8-إشعارات-واتساب-وتتبع-المريض-المباشر)
6. [تشغيل تطبيق السائقين عبر الهاتف (Flutter)](#6-تشغيل-تطبيق-السائقين-عبر-الهاتف-flutter)
7. [جدول استكشاف الأخطاء وحلولها السريعة (Troubleshooting)](#7-جدول-استكشاف-الأخطاء-وحلولها-السريعة-troubleshooting)

---

## 1. نظرة عامة على المنصة والمعمارية

تم تصميم وتطوير منصة **Liv Hospital International** لتكون نظاماً متكاملاً لإدارة لوجستيات نقل المرضى القادمين للعلاج من مختلف دول العالم. يربط النظام بين:
- **إدارة المستشفى ومنسقي العمليات (Coordinators)**
- **الأسطول الداخلي للمستشفى (Sabit Fleet)**
- **شركات النقل الخارجي المتعاقدة (Destek Companies)**
- **السائقين عبر الويب وتطبيق الهاتف الذكي (Drivers Web & Flutter)**
- **المرضى ومرافقيهم عبر تتبع فوري ورسائل واتساب مؤتمتة بثلاث لغات (العربية، التركية، الإنجليزية)**

```mermaid
graph TD
    A["👤 المريض الدولي ومرافقوه"] -->|تتبع مشفر + واتساب| B["🏥 منصة Liv Hospital"]
    C["👑 إدارة المستشفى والمنسقين"] -->|توجيه وجدولة| B
    B -->|تكليف مباشر| D["🚗 أسطول المستشفى الداخلي (Sabit)"]
    B -->|مناقصة وقبول| E["🏢 شركات النقل المساندة (Destek)"]
    D --> F["📱 تطبيق السائق (Flutter / Web)"]
    E --> F
```

### المميزات المعمارية الرئيسية:
- **فصل رحلات الذهاب والعودة (Independent Round Trips)**: كل ساق رحلة يحمل مرجعاً تشغيلياً مستقلاً تماماً لضمان عدم تأثر رحلة العودة بأي تعديل أو تأخير في الذهاب.
- **سلطة التنفيذ الأحادية (Atomic Execution Authority)**: لا يمكن لأكثر من سائق/مركبة قيادة الرحلة في نفس اللحظة منعاً للتضارب.
- **تتبع فوري بدون تسجيل دخول للمريض (`/track/{token}`)**: رابط مؤقت ومشفّر بالكامل مع حماية خصوصية بيانات التشخيص الطبي للمريض.

---

## 2. متطلبات النظام والبيئة التشغيلية

| المتطلب | الإصدار الأدنى المدعوم | ملاحظات |
| :--- | :--- | :--- |
| **نظام التشغيل** | Windows 10/11 أو Linux / macOS | مهيأ للعمل بالكامل |
| **PHP** | 8.2+ | مع تفعيل الامتدادات: `pdo_sqlite`, `curl`, `mbstring`, `openssl`, `bcmath` |
| **Composer** | 2.x+ | لإدارة حزم ومكتبات PHP |
| **Node.js & NPM** | Node 18+ / NPM 9+ | لبناء واجهات Tailwind CSS و Alpine.js عبر Vite |
| **قاعدة البيانات** | SQLite (افتراضية مدمجة) أو MySQL 8+ | مهيأة على SQLite لسرعة الإطلاق المباشر |
| **Flutter SDK** | 3.x+ (اختياري) | لتشغيل تطبيق السائق على أجهزة Android/iOS |

---

## 3. خطوات تشغيل المنصة من الصفر (أوامر سريعة)

لتشغيل المنصة محلياً على جهازك، افتح موجه الأوامر (PowerShell أو Terminal) داخل مجلد المشروع:

### الخطوة 1: تجهيز التبعيات وبناء الواجهة
```powershell
# 1. تثبيت حزم الـ PHP
composer install

# 2. تثبيت حزم واجهة المستخدم
npm install

# 3. بناء ملفات التنسيق والجافاسكريبت
npm run build
```

### الخطوة 2: تهيئة وتعبئة قاعدة البيانات بالحسابات التجريبية
```powershell
# تهيئة الجداول وحقن بيانات المستشفيات، السيارات، السائقين، والحسابات
php artisan migrate:fresh --seed
```

### الخطوة 3: تشغيل خادم التطوير
```powershell
php artisan serve
```
سيعمل النظام فوراً على الرابط: **`http://127.0.0.1:8000`**

---

## 4. دليل الحسابات وكلمات المرور الافتراضية

جميع الحسابات التجريبية في النظام مفعلة وجاهزة، وكلمة المرور الموحدة لجميع الحسابات هي:
> **كلمة المرور المشتركة:** `AdminLiv2026!`

| الدور التشغيلي (Role) | البريد الإلكتروني (Email) | الصلاحيات والوظيفة |
| :--- | :--- | :--- |
| **👑 مدير النظام (Admin)** | `admin@livhospital.com` | وصول كامل لكافة شاشات المستشفى والتحكم والإعدادات |
| **📋 منسق فرع وادي إسطنبول** | `coordinator.vad@livhospital.com` | إدارة رحلات فرع Liv Hospital Vadistanbul |
| **📋 منسق فرع أولوس** | `coordinator.ulus@livhospital.com` | إدارة رحلات فرع Liv Hospital Ulus |
| **🚗 سائق أسطول داخلي 1** | `driver.ali@livhospital.com` | سائق سيارة Vito VIP للأسطول الثابت الداخلي |
| **🚗 سائق أسطول داخلي 2** | `driver.mehmet@livhospital.com` | سائق سيارة Crafter لذوي الاحتياجات الخاصة |
| **🏢 شركة نقل خارجية 1** | `destek.akdeniz@vip.com` | حساب شركة Akdeniz VIP للمناقصات والرحلات الخارجية |
| **🏢 شركة نقل خارجية 2** | `destek.bosphorus@vip.com` | حساب شركة Bosphorus Transfer للمناقصات الخارجية |
| **👨‍💼 علاقات المرضى الدولية** | `relations@livhospital.com` | تسجيل المرضى وتوثيق جوازات السفر واللغات |

---

## 5. دليل سير العمليات خطوة بخطوة (مع لقطات الشاشة)

---

### الخطوة 1: تسجيل الدخول واختيار الصلاحية
- **الرابط**: `http://127.0.0.1:8000/login`
- **الوصف**: واجهة تسجيل دخول آمنة تحمل هوية مستشفى ليف الرسمية وخلفيتها المعتمدة، ومزودة بأزرار تعبئة سريعة بضغطة واحدة لتسهيل الاختبار والعرض.

![شاشة تسجيل الدخول](docs/images/step1_login.png)

#### إجراءات هذه الخطوة:
1. انقر فوق زر **👑 Admin** أو **📋 Koordinatör** لتعبئة البريد وكلمة المرور تلقائياً.
2. يمكنك النقر على **رمز العين (👁️)** لإظهار كلمة المرور والتحقق منها.
3. اضغط على زر **Sisteme Giriş Yap** للدخول إلى لوحة التحكم.

---

### الخطوة 2: إدارة سجلات وتفضيلات المرضى الدوليين
- **الرابط**: `http://127.0.0.1:8000/patients`
- **الوصف**: شاشة إدارة ملفات المرضى الدوليين، حيث يتم حفظ الاسم، رقم الجواز، لغة التواصل المفضلة للمريض (عربي، تركي، إنجليزي)، رقم الواتساب بالصيغة الدولية E.164، وعدد المرافقين واحتياجات الحركة.

![سجل المرضى الدوليين](docs/images/step2_patients.png)

#### إجراءات هذه الخطوة:
1. **إضافة مريض جديد**: اضغط على زر **`+ Yeni Hasta Kaydet`** لفتح نافذة منبثقة واضحة لإدخال بيانات المريض.
2. **تعديل مريض**: انقر على أيقونة القلم (✏️) لتعديل أرقام الهواتف أو اللغات المفضلة.
3. **عرض التفاصيل**: انقر على أيقونة العين (👁️) للدخول إلى بروفايل المريض الكامل وإضافة أسماء مرافقيه.

---

### الخطوة 3: معالج إنشاء حجز نقل جديد (4 خطوات)
- **الرابط**: `http://127.0.0.1:8000/transfers/create`
- **الوصف**: معالج حجز انسيابي ومحكم يتكون من 4 مراحل يمنع الأخطاء البشرية ويضمن دقة البيانات اللوجستية قبل الاعتماد.

![معالج حجز النقل - الخطوة الأولى](docs/images/step3_transfer_create.png)

#### مراحل المعالج:
1. **المرحلة 1 (Hasta & Şube)**: اختيار المريض، وفرع مستشفى ليف المستضيف، وتحديد عدد الركاب والحقائب والمرافقين.
2. **المرحلة 2 (Güzergah & Uçuş)**: تحديد نقطة الانطلاق والوصول (المطارات مثل مطار إسطنبول IST ومطار صبيحة SAW، أو الفنادق المتعاقدة)، وإدخال رقم رحلة الطيران وموعد الهبوط المتوقع.
3. **المرحلة 3 (Araç & Erişilebilirlik)**: اختيار فئة المركبة (Sedan / VIP Mercedes Vito / Minibus Crafter) وتحديد متطلبات ذوي الاحتياجات الخاصة (كرسي متحرك، مقعد طفل، نقالة).
4. **المرحلة 4 (Dönüş & Onay)**: تفعيل خيار رحلة العودة (Round Trip) لإنشاء حجز عودة مستقل برقم مرجعي منفصل، ثم مراجعة ملخص الحساب والتأكيد النهائي.

---

### الخطوة 4: غرفة العمليات وتعيين الأسطول (ثابت / دعم)
- **الرابط**: `http://127.0.0.1:8000/operations` أو لوحة التحكم الرئيسية `/`
- **الوصف**: غرفة العمليات المركزية للمنسق. تعرض جميع الرحلات وحالاتها اللحظية (قيد الانتظار، تم التعيين، في الطريق، تم الإلغاء، مكتملة).

![لوحة التحكم وغرفة العمليات](docs/images/step4_operations_dashboard.png)

#### آليتا توزيع الأسطول المتاحتان:

#### أ) التعيين للأسطول الداخلي (Sabit Fleet):
1. الضغط على زر **`Sabit Filo Ata`** أمام الرحلة.
2. يظهر النظام قائمة السائقين التابعين للمستشفى مع سياراتهم ومدى جاهزيتهم.
3. اختيار السائق (مثلاً: `driver.ali@livhospital.com` مع Vito 34LIV01) والضغط على **Onayla**.
4. يتحول الطلب فوراً إلى حالة **مؤكد (Confirmed)** ويُرسل إشعار للسائق والراكب.

#### ب) الإحالة إلى شركات النقل الخارجية (Destek Companies):
1. الضغط على زر **`Destek Firmaya Gönder`** عند انشغال الأسطول الداخلي.
2. يتيح المنسق تحديد الحد الأقصى للميزانية وتوجيه الطلب لشركات النقل المعتمدة (مثل Akdeniz VIP أو Bosphorus).
3. تظهر الرحلة في بوابات الشركات الخارجية للموافقة وإدخال بيانات السائق الخارجي ورقم لوحته.

---

### الخطوة 5: دورة حياة الرحلة وسير عمل السائق
- **الرابط**: `http://127.0.0.1:8000/driver/portal` (أو تطبيق الهاتف الذكي Flutter)
- **الوصف**: شاشة مبسطة مصممة للهواتف يرى فيها السائق رحلاته الموكلة إليه، مع أزرار كبيرة تتبع خط سير الرحلة خطوة بخطوة:

```mermaid
stateDiagram-v2
    [*] --> Beklemede: حجز جديد
    Beklemede --> Onaylandi: تعيين السائق
    Onaylandi --> Yolda: 1. السائق تحرك لنقطة الالتقاء (En Route)
    Yolda --> Karsilamada: 2. وصل للمطار/الفندق وبدء عداد الانتظار (Arrived)
    Karsilamada --> YolcuAlindi: 3. المريض والامتعة على متن السيارة (Onboard)
    YolcuAlindi --> HedefeVarildi: 4. الوصول لمستشفى ليف أو الفندق (Arrived Destination)
    HedefeVarildi --> Tamamlandi: 5. تسليم المريض واكتمال الرحلة (Completed)
    Tamamlandi --> [*]
```

- **عداد فترة السماح (Grace Period)**: عند وصول السائق للمطار وضغط "Karsilamada"، يبدأ عداد تنازلي للانتظار (60 دقيقة في المطارات).
- **إجراء عدم الحضور (No-Show Protection)**: في حال عدم ظهور المريض، لا يمكن للسائق إلغاء الرحلة إلا بعد محاولات اتصال موثقة (Contact Attempts) وموافقة المنسق.

---

### الخطوة 6: إدارة الطوارئ واستبدال المركبة على الطريق
- **الرابط**: `http://127.0.0.1:8000/incidents`
- **الوصف**: سيناريو متقدم يضمن عدم تعطل المريض في حال حدوث طارئ في الطريق (عطل ميكانيكي، حادث مروري، وعكة صحية):

1. **إبلاغ السائق**: يضغط السائق على زر الطوارئ **`🚨 Acil Durum / Arıza Bildir`**.
2. **تحديد نقطة التوقف الآمنة**: يدخل السائق موقع التوقف الآمن ورقم الراكب لتهدئته.
3. **قرار المنسق**: يتلقى المنسق تنبيهاً فورياً باللون الأحمر في غرفة العمليات، ويفتح نافذة الاستبدال **`Araç Değişimi (Replacement)`**.
4. **نقل سلطة التنفيذ تلقائياً (Authority Transfer)**:
   - يتم توجيه سائق بديل لنقطة التوقف لإجراء التسليم والاستلام (Handover).
   - يسجل النظام الرحلة كمسار موحد دون فقدان سجل البيانات، وتنتقل سلطة الرحلة إلى السائق الجديد فور تأكيده.

---

### الخطوة 7: بوابة شركات النقل وبوابة السائقين
- **بوابة شركات الدعم المتعاقدة**: `http://127.0.0.1:8000/destek/portal`
  - تسجيل الدخول بحساب: `destek.akdeniz@vip.com`
  - تمكين الشركة من استعراض طلبات النقل الواردة، قبولها أو رفضها، وإدخال بيانات السائق الخارجي والمركبة.
- **بوابة السائق عبر المتصفح**: `http://127.0.0.1:8000/driver/portal`
  - تسجيل الدخول بحساب السائق: `driver.ali@livhospital.com`
  - واجهة سريعة وخفيفة تدعم التبديل بين النهار والليل (Dark/Light Mode) بنقرات بسيطة للعمل أثناء القيادة.

---

### الخطوة 8: إشعارات واتساب وتتبع المريض المباشر
- **تتبع المريض بدون كلمة سر**:
  - يتم تزويد المريض برابط مباشر وآمن عبر الواتساب:
    `http://127.0.0.1:8000/track/{tracking_token}`
  - يعرض للمريض خريطة تفاعلية توضح موقع السائق، واسمه، ورقم لوحة السيارة، والوقت المتوقع للوصول (ETA)، بدون عرض أي بيانات طبية تشخيصية حمايةً للخصوصية (GDPR/KVKK Compliance).
- **محرك رسائل الواتساب الآلي**:
  - يرسل إشعاراً عند تأكيد الرحلة باللغة التي يفضلها المريض (مثال: رسالة ترحيبية عربية للمرضى من دول الخليج).
  - إشعار لحظي عند تحرك السائق ووصوله لبوابة المطار مع اسم السائق ولوحة السيارة وصورته.

---

## 6. تشغيل تطبيق السائقين عبر الهاتف (Flutter)

يتضمن المشروع تطبيقاً مستقلاً مكتوباً بـ **Flutter** مخصصاً للهواتف الذكية مع دعم التتبع المستمر في الخلفية عبر GPS.

### خطوات تشغيل التطبيق:
1. الانتقال إلى مجلد تطبيق الهاتف:
   ```powershell
   cd c:\Users\khruk\Desktop\livHospital\mobile_driver
   ```
2. تثبيت مكتبات فلاتر:
   ```powershell
   flutter pub get
   ```
3. تشغيل التطبيق على المحاكي (Emulator) أو هاتف حقيقي أو متصفح الويب:
   ```powershell
   # تشغيل على الويب للمعاينة السريعة
   flutter run -d chrome

   # أو تشغيل على جهاز أندرويد
   flutter run
   ```
4. تسجيل الدخول في التطبيق باستخدام حساب أي سائق:
   - البريد: `driver.ali@livhospital.com`
   - كلمة المرور: `AdminLiv2026!`

---

## 7. جدول استكشاف الأخطاء وحلولها السريعة (Troubleshooting)

| المشكلة | السبب المحتمل | الحل الفوري |
| :--- | :--- | :--- |
| **`These credentials do not match our records`** | المتصفح ملأ تلقائياً كلمة سر قديمة أو خاطئة | حدّث الصفحة (**`F5`**)، ثم اضغط على زر **`👑 Admin`** للتعبئة الصحيحة التلقائية واضغط دخول. |
| **`419 PAGE EXPIRED`** | انتهاء جلسة المتصفح أو انقطاع الكوكيز | حدّث صفحة تسجيل الدخول (`F5`) لإنشاء رمز حماية CSRF جديد ثم سجل دخولك. |
| **نافذة التعديل أو الحجز تظهر مغبشة** | كاش قديم في المتصفح لمكون الحوارات | تم تصحيح مكوّن `dialog.blade.php`. اضغط **`Ctrl + F5`** لتفريغ الكاش ومشاهدة النافذة المنبثقة الصافية. |
| **الخرائط لا تظهر في تتبع السائق** | عدم وجود اتصال خارجي بمزود الخرائط | تعمل المنصة بنظام الهجين التلقائي (Leaflet + OpenStreetMap) وتعمل بسلاسة بدون الحاجة لمفاتيح API تجارية. |
| **عدم استجابة السيرفر** | الخادم المحلي متوقف | تأكد من فتح نافذة PowerShell وتشغيل الأمر `php artisan serve`. |

---

> **ملاحظة للمطورين والإدارة**:
> تم إعداد هذا النظام ليعمل في بيئة المحاكاة الآمنة (**Sandbox Mode**)؛ بحيث تُحفظ رسائل الواتساب في جدول الـ Outbox الداخلي لاختبارها ومطابقتها قبل ربطها بالـ API الإنتاجي الرسمي لميتا.
