Update: 2026-08-07 02:32:14

This commit is contained in:
Hamza-Ayed
2026-08-07 02:32:15 +03:00
parent 3081aea802
commit 70772cf0d2
6 changed files with 283 additions and 5 deletions
+145
View File
@@ -0,0 +1,145 @@
# سياسة الإلغاء والتعويض — سيرو
> **الغرض:** مرجع واحد لخدمة العملاء، وأساس صفحة ويب عامة تُشرح للمستخدمين.
> **آخر تحديث:** 2026-08-07
> **الحالة:** مبنية في الكود، **معطّلة افتراضياً** حتى تضبط الإدارة السقوف.
---
## المبدأ الحاكم
**من ضيّع وقت الآخر يعوّضه، والمال يذهب للطرف المتضرر لا للشركة.**
هذا يفرّق سيرو عن نموذج "غرامة تذهب للمنصة". السائق الذي انتظر يُعوَّض، والراكب الذي انتظر سائقاً متأخراً لا يُغرَّم.
---
## أولاً: إلغاء الراكب بعد قبول السائق
### متى يكون الإلغاء مجانياً؟
| الحالة | الشرح للمستخدم |
|---|---|
| **لم يقبل أي سائق بعد** | لم يتحرك أحد نحوك، فلا أحد يستحق تعويضاً. وهذه أغلب حالات الإلغاء. |
| **خلال أول دقيقتين من قبول السائق** | مهلة لتصحيح خطأ في الوجهة أو تغيير الرأي. |
| **مرّت 10 دقائق ولم يصل السائق** | التأخير من السائق لا منك — الإلغاء مجاني. |
| **الرسم معطّل في بلدك** | الإدارة لم تفعّل السياسة بعد. |
### متى يُحتسب رسم؟
عندما يكون السائق قد **قَبِل الرحلة وتحرّك نحوك**، ومضت مهلة الدقيقتين، ولم يتأخر عليك.
### كيف يُحسب؟
```
الرسم = المسافة التي قطعها السائق نحوك × سعر الكيلومتر لنوع السيارة
+ الدقائق منذ قبوله × سعر الدقيقة حسب وقت اليوم
```
- الأسعار هي **نفسها** المستخدمة في تسعير الرحلات (جدول `kazan` لكل دولة).
- **العملة:** بعملة بلد التشغيل — ليرة سورية (SYP)، دينار أردني (JOD)، جنيه مصري (EGP)…
- **حد أقصى للدقائق المحتسبة: 20 دقيقة.** سائق قَبِل ونسي الرحلة ساعة لا يتحول نسيانه إلى فاتورة عليك.
- **سقف أعلى** يحدده كل بلد (`passengerCancelCap`)، وفوقه سقف صلب في الكود يمنع أي خطأ إداري من خصم كارثي.
### ماذا يحدث بعد الإلغاء؟
1. يُخصم المبلغ من محفظتك كدَين.
2. **يُضاف نفس المبلغ لمحفظة السائق** — ليس إيراداً للشركة.
3. يزيد عدّاد "عدم الحضور" في حسابك (للمراجعة الإدارية فقط، لا عقوبة آلية).
### التحذير المسبق
التطبيق **يعرض المبلغ ويطلب تأكيدك قبل الإلغاء**. لا خصم صامت. إن تعذّر الاتصال بالخادم لحظتها، يمضي الإلغاء بلا تحذير — لأن حبسك في رحلة بسبب عطل تقني أسوأ.
---
## ثانياً: تعويض السائق عند عدم حضور الراكب
### متى يستحق السائق تعويضاً؟
عندما يصل نقطة الالتقاط، **ينتظر 5 دقائق على الأقل**، ولا يحضر الراكب، فيلغي الرحلة.
### كيف يُحسب؟
```
التعويض = مسافة الاقتراب إلى الراكب × سعر الكيلومتر
+ دقائق الانتظار × سعر الدقيقة
```
نفس المعادلة والأسعار. الحد الأقصى للدقائق المحتسبة 20 دقيقة أيضاً.
### شروط مهمة
- **الوصول يتحقق منه الخادم** من موقع السائق الفعلي (ضمن 300 متر من نقطة الالتقاط). لا يكفي أن يضغط السائق "وصلت".
- **إن تعذّر إثبات الوصول** (خدمة الموقع معطّلة مثلاً) فلا تعويض — لا يُصرف مال لا يمكن إثبات استحقاقه.
- إلغاء السائق **قبل** الوصول: لا تعويض إطلاقاً.
---
## ثالثاً: عقوبة السائق كثير الإلغاء
منفصلة تماماً عن المال. **لا غرامة على السائق أبداً.**
| الشرط | العقوبة |
|---|---|
| 3 إلغاءات بعد القبول خلال 24 ساعة | إيقاف استقبال الطلبات **4 ساعات** |
الإيقاف مطبَّق على الخادم: السائق الموقوف لا يستطيع قبول أي رحلة حتى لو أعاد تثبيت التطبيق.
---
## رابعاً: التسرب خارج المنصة
سلوك يتكرر فيه: قَبِل السائق ← أُلغيت الرحلة ← ولم تبدأ قط، مع **نفس الراكب مراراً**.
| التكرار | درجة الاشتباه |
|---|---|
| مرة واحدة | منخفضة (للإلغاء أسباب مشروعة كثيرة) |
| مرتان | متوسطة |
| ثلاث فأكثر | مرتفعة → **مراجعة بشرية** |
**العقوبة:** خفض أولوية السائق في توزيع الرحلات — يخسر الطلبات الخاصة والقريبة تدريجياً. **لا حظر ولا خصم مالي.** وتزول العقوبة تلقائياً حين ينظف سجله خلال 30 يوماً.
---
## المعاملات القابلة للضبط (لكل دولة، جدول `kazan`)
| المعامل | الافتراضي | المعنى |
|---|---|---|
| `passengerCancelCap` | `0` (معطّل) | سقف رسم إلغاء الراكب |
| `passengerCancelFreeMinutes` | `2` | دقائق الإلغاء المجاني بعد القبول |
| `driverLateExemptMinutes` | `10` | بعدها يصير الإلغاء مجانياً لتأخر السائق |
| `cancelCompensationCap` | `0` (معطّل) | سقف تعويض عدم حضور الراكب |
| `cancelMinWaitMinutes` | `5` | أقل انتظار يستحق السائق بعده تعويضاً |
> ⚠️ القيمة `0` في السقوف تعني **تعطيلاً كاملاً**. لا يُخصم ولا يُصرف شيء حتى تضبطها الإدارة صراحةً.
---
## أسئلة متوقعة من العملاء
**«ألغيت لأن السائق لم يتحرك من مكانه — لماذا خُصم مني؟»**
إن مرّت 10 دقائق ولم يصل، الإلغاء مجاني تلقائياً. إن خُصم رغم ذلك فالرحلة تحتاج مراجعة — ارفعها للفريق التقني بمعرّف الرحلة.
**«لماذا الرسم مختلف كل مرة؟»**
لأنه ليس رقماً ثابتاً — يعتمد على المسافة التي قطعها السائق فعلاً وعلى الوقت المنقضي. رحلة ألغيت بعد 3 دقائق تختلف عن أخرى بعد 12.
**«هل تأخذ الشركة هذا المبلغ؟»**
لا. يذهب كاملاً لمحفظة السائق.
**«ألغى السائق عليّ — هل أُعوَّض؟»**
لا يوجد تعويض للراكب حالياً عند إلغاء السائق. لكن السائق كثير الإلغاء يُوقَف 4 ساعات آلياً.
---
## مراجع تقنية
| الموضوع | الملف |
|---|---|
| رسم إلغاء الراكب | `backend/ride/rides/cancel_fee_helper.php` |
| معاينة الرسم قبل الإلغاء | `backend/ride/rides/preview_cancel_fee.php` |
| تعويض عدم الحضور + الإيقاف | `backend/ride/rides/cancel_ride_by_driver.php` |
| إثبات الوصول | `backend/ride/rides/arrive_ride.php` |
| كشف التسرب | `backend/bot/cron_leak_detection.php` |
| الأسعار المشتركة | `backend/ride/pricing/pricing_helper.php` |
| الترحيلات | `backend/migrations/2026_08_07_*.sql` |