docs: الخريطة الشاملة (22) — من باك إند مكتمل إلى منصّة كاملة مماثلة لسيرو
مبنية على دراسة كود سيرو الفعلي: كتالوج سطح الميزات (تطبيقات · محرّك تسعير · محرّك تسويق · بوتات · مواصلات · سياج جغرافي · متحكّم موقع السائق). المجموعات L–Q: التسعير · الميزات المتقدّمة (المفاوض/الشرائح/السياج) · طبقة الـSaaS (سوبر-أدمن + توليد التطبيق + سكربت Shorebird) · التحليلات/المواصلات/ البوتات · بوابات الدفع الحقيقية · إعادة بناء فلاتر. مع توصيات على القرارات المفتوحة: ويب للوحات، مواصفات السيرفر، كتالوج الميزات لكل فئة. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
7703c23378
commit
4fc79181ff
@@ -0,0 +1,129 @@
|
||||
# 22 — الخريطة الشاملة: من باك إند مكتمل إلى منصّة كاملة مماثلة لسيرو
|
||||
|
||||
> بعد اكتمال المجموعات A–K (باك إند النواة) واختبار E2E بـ43 محكّاً على السيرفر، هذه خريطة **بقية المنتج**: كل ما في سيرو + طبقة الـSaaS متعددة المستأجرين + تطبيق فلاتر مُعاد بناؤه.
|
||||
> مبنية على **دراسة كود سيرو الفعلي** لا التخمين. كل مجموعة تُنفَّذ بعد إقرارك، مجموعة مجموعة (أسلوبنا المتّفق).
|
||||
|
||||
آخر تحديث: 2026-07-18.
|
||||
|
||||
---
|
||||
|
||||
## 0. ما درسته في سيرو (سطح الميزات الكامل)
|
||||
| المكوّن | ما هو | التقنية |
|
||||
|--------|-------|--------|
|
||||
| `siro_rider` · `siro_driver` | تطبيقا الراكب والسائق | Flutter/GetX |
|
||||
| `siro_admin` | تطبيق أدمن المستأجر | Flutter (متعدد المنصات) |
|
||||
| `siro_service` | تطبيق خدمة العملاء | Flutter |
|
||||
| `transit_dashboard` | لوحة المواصلات | ويب (Vite/JS) |
|
||||
| `backend/pricing-engine` | تسعير ديناميكي/ذكاء أسعار المنافسين (انحدار · تجميع · surge · مناطق) | Node/TS |
|
||||
| `backend/marketing_engine` | بوتات تسويق آلية + مولّد تعليقات Gemini + مهام مجدولة + تقارير | PHP + Python |
|
||||
| `android_bot` · `socialBot` | بوتات | Kotlin/Android |
|
||||
| `backend/Admin/geofence` | السياج الجغرافي | PHP |
|
||||
| `backend/transit` + وضع الباص | نظام المواصلات (خطوط باص) | PHP + Flutter |
|
||||
| `driver_assurance` | تأمين السائق | PHP |
|
||||
| **متحكّم موقع السائق** (`location_controller.dart`) | تسجيل كل 3ث · رفع دفعات كل دقيقتين · واعٍ للبطارية (توفير عند 20%) · سوكت للبثّ + دفعات للحفظ · وضع باص منفصل · عتبة محفظة −200 | Flutter |
|
||||
|
||||
---
|
||||
|
||||
## 1. قراراتك المفتوحة — توصياتي
|
||||
|
||||
### 1.1 لوحة الأدمن/السوبر-أدمن/خدمة العملاء: ويب أم تطبيق؟
|
||||
**توصيتي: ويب** للثلاثة (الأدمن · السوبر-أدمن · خدمة العملاء)، والموبايل (راكب/سائق) يبقى فلاتر.
|
||||
- **لماذا ويب**: لا احتكاك متجر (تحديث فوري) · يعمل على سطح المكتب حيث يعمل المشغّلون فعلاً · بناء وصيانة أسهل من فلاتر · معيار الصناعة (لوحات أوبر/بولت ويب). سيرو استعمل فلاتر للأدمن لأنه أراد تطبيقاً واحداً، لكن للوحة تحكّم SaaS الويب أنسب.
|
||||
- **لماذا الموبايل يبقى فلاتر**: GPS في الخلفية · overlay · إشعارات · كاميرا/حيوية وجه — كلها تحتاج أصيلاً (native).
|
||||
- يطابق قرار بنية المستودع السابق: `dashboards/admin-web` · `dashboards/superadmin-web`.
|
||||
|
||||
### 1.2 مواصفات السيرفر (بحث الحمل: 1.15M رحلة/يوم على صندوق مشترك واحد)
|
||||
| الدور | المواصفات | الحمل |
|
||||
|-------|-----------|-------|
|
||||
| **سيرفر مستأجر مشترك** (launch/brand) | 8 vCPU · 32GB · NVMe | عدة مستأجرين صغار على نفس الصندوق (عزل بالبادئة) |
|
||||
| **سيرفر مستأجر سيادي** (sovereign) | 8 vCPU · 16–32GB · NVMe مخصّص | مستأجر واحد كبير حتى ~1M/يوم |
|
||||
| **السيرفر الاحتياطي** | مماثل أو أصغر | نسخة Postgres متدفّقة (streaming replica) + Redis AOF |
|
||||
| **Control Plane** (سوبر-أدمن + فوترة) | 4 vCPU · 8GB | يدير كل المستأجرين، منفصل |
|
||||
- **العنق دائماً Postgres** (بركة الاتصالات) لا الـCPU/RAM. Redis 4–8GB يكفي (نصوص صغيرة).
|
||||
- **الاحتياطي**: تكرار فيزيائي متدفّق لـPostgres (hot standby) + `docker compose` جاهز للإقلاع. RPO ≈ ثوانٍ، RTO ≈ دقائق.
|
||||
- التوسّع: نسخ API أفقية خلف Nginx (الـredis-io-adapter مبني أصلاً) قبل تقسيم القاعدة.
|
||||
|
||||
### 1.3 كتالوج الميزات: أساسية مقابل مدفوعة (يوسّع المجموعة K)
|
||||
| فئة | ميزات |
|
||||
|-----|-------|
|
||||
| **نواة (كل الباقات)** | رحلات · مطابقة · محفظة · تقييم · إشعارات · دردشة · مكالمات · وثائق · مركبات |
|
||||
| **علامة+** | محرّك تعرفة كامل · country pack · أنواع رحلات مخصّصة · dispatch |
|
||||
| **أسطول+** | API/Webhooks · تقارير متقدمة · بوابة شركات |
|
||||
| **مدفوعة منفصلة (add-ons)** | 🤖 التسعير الديناميكي · 📊 استخبار السوق · 📣 محرّك التسويق/البوتات · 🚌 المواصلات · 🛡️ تأمين السائق · المفاوض الذكي · شرائح السائقين |
|
||||
| **سيادة** | كل الميزات + عزل داخل الدولة |
|
||||
|
||||
### 1.4 توفير المستأجر من السوبر-أدمن (الخيارات التي تزوّدها)
|
||||
عند إنشاء مستأجر، السوبر-أدمن يحدّد: **الاسم · اللوغو · الدولة (country pack) · وسائل الدفع · الباقة · الميزات المفعّلة · الحدود العددية**. أغلبها مبني في K (`tenants.features`/`settings`)؛ الناقص: رفع اللوغو + توليد الحزمة (§2 المجموعة N).
|
||||
|
||||
---
|
||||
|
||||
## 2. المجموعات القادمة (تكملةً لـA–K)
|
||||
|
||||
### المجموعة L — إكمال نموذج التسعير (B9/B10/B11 + الديناميكي)
|
||||
| # | البند |
|
||||
|---|-------|
|
||||
| L1 | **B9**: نقاط CRUD لتحرير التعرفة من لوحة الأدمن (jsonb موجود؛ نحتاج واجهة + تحقّق) |
|
||||
| L2 | **B10**: كتالوج أنواع رحلات عالمي جاهز (بدل 6 مبثوثة) — المستأجر يختار منه |
|
||||
| L3 | **B11**: بُعد تسعير بالوزن (شحن/توصيل) بجانب المسافة/الزمن |
|
||||
| L4 | **التسعير الديناميكي** (من `pricing-engine`): surge حسب الطلب/العرض في المنطقة + مناطق تسعير. add-on مدفوع. محرّكنا يستقبل مضاعف surge. |
|
||||
|
||||
### المجموعة M — ميزات التشغيل المتقدّمة (F سابقاً)
|
||||
| # | البند |
|
||||
|---|-------|
|
||||
| M1 | **المفاوض الذكي**: الراكب يعرض سعراً، السائق يقبل/يفاوض (نمط inDrive). |
|
||||
| M2 | **شرائح السائقين** (tiers): برونزي/فضي/ذهبي حسب الأداء → أولوية عروض/عمولة أقل. |
|
||||
| M3 | **السياج الجغرافي** (من `Admin/geofence`): مناطق مسموح/ممنوع · تسعير حسب المنطقة · حظر دخول. |
|
||||
| M4 | **تأمين السائق** (`driver_assurance`). |
|
||||
|
||||
### المجموعة N — طبقة الـSaaS: السوبر-أدمن وتوليد التطبيق ⭐ (الهدف الأساسي)
|
||||
| # | البند |
|
||||
|---|-------|
|
||||
| N1 | **لوحة سوبر-أدمن (ويب)**: إنشاء مستأجر · اسم/لوغو/دولة/دفع/باقة/ميزات · تعديل الاشتراك · مراقبة الأسطول. (الباك إند K جاهز؛ نبني الواجهة.) |
|
||||
| N2 | **رفع اللوغو + توليد الأيقونات/splash** تلقائياً لكل مستأجر. |
|
||||
| N3 | **سكربت توليد التطبيق الواحد**: يضبط bundle ID · يبدّل الأيقونات/الـsplash من اللوغو · يحقن FCM · **يربط إضافات Kotlin/C++ الأصيلة** (overlay · method channels · NDK · root) المبنية على bundle ID · يبني · **يسجّل ويدفع عبر Shorebird**. |
|
||||
| N4 | **لوحة أدمن المستأجر (ويب)**: dispatch · سائقون · رحلات · تعرفة · تقارير · مراجعة وثائق. |
|
||||
| N5 | **لوحة خدمة العملاء (ويب)**: بحث مستخدم · شكاوى · تدخّل. |
|
||||
|
||||
### المجموعة O — التحليلات والمواصلات والتسويق
|
||||
| # | البند |
|
||||
|---|-------|
|
||||
| O1 | **تحليل بيانات المواقع**: `driver_tracks` (مبني في H) → خرائط حرارية · تنبّؤ الطلب · سلوك السائق (H6/H7 المؤجَّلتان). |
|
||||
| O2 | **نظام المواصلات** (`transit` + وضع الباص): خطوط · محطات · بثّ موقع الباص منفصل. add-on. |
|
||||
| O3 | **محرّك التسويق** (`marketing_engine`): بوتات آلية · مولّد تعليقات Gemini · مهام مجدولة · تقارير. add-on. |
|
||||
| O4 | **البوتات** (`socialBot` · `android_bot`): نسخ + تهيئة كـadd-ons مدفوعة خلف الاستحقاقات. |
|
||||
|
||||
### المجموعة P — إكمال المدفوعات (بوابات حقيقية)
|
||||
| # | البند |
|
||||
|---|-------|
|
||||
| P1 | **بوابات فعلية**: PayMob (مصر) · CliQ (الأردن) · MTN/SyriaTel/شام كاش (سوريا) — من I3 (جدول لكل طريقة) + محوّل موحّد. |
|
||||
| P2 | **webhook رسائل + Gemini** (I8): تسوية الدفع من رسائل المزوّد للأسواق بلا API. |
|
||||
| P3 | **محفظة المنصة/تقرير الإيراد** (I2). |
|
||||
|
||||
### المجموعة Q — تطبيق فلاتر (إعادة بناء كاملة) 📱
|
||||
> **إعادة استعمال الأصيل الثابت** (Kotlin/iOS من التطبيق القديم Ride/Tripz)، **وإعادة بناء Dart من الصفر** بـCubit+Bloc (لا GetX).
|
||||
> راجع [[tripz-mobile-store-identity]] لمعرّفات المتاجر التي يجب الحفاظ عليها.
|
||||
|
||||
| # | البند |
|
||||
|---|-------|
|
||||
| Q1 | **الأساس**: splash · onboarding · login (هاتف+OTP، بلا كلمة مرور) · الخريطة (flutter_map + بلاطات انطلق). |
|
||||
| Q2 | **الراكب**: صفحة الطلب · اختيار الوجهة/التوقفات · widgets الرحلة · تتبّع السائق حياً · الدفع · التقييم (شاشة إجبارية عند وجود رحلة معلّقة). |
|
||||
| Q3 | **السائق**: overlay العرض · قبول · widgets الرحلة · **متحكّم الموقع** (تسجيل 3ث/رفع دفعات/واعٍ للبطارية — نمط سيرو) · حيوية الوجه · الرصيد/الشحن. |
|
||||
| Q4 | **الخرائط المتقدّمة**: خريطة حرارية · خريطة تنبّؤية (من O1). |
|
||||
| Q5 | **البنية التحتية للتطبيق**: طبقة الشبكة (توقيع HMAC · x-device-id) · country pack ديناميكي · flavors. |
|
||||
|
||||
---
|
||||
|
||||
## 3. ترتيب التنفيذ المقترح
|
||||
1. **L** (التسعير) — يكمل النواة المالية، باك إند صرف، سريع.
|
||||
2. **N** ⭐ (السوبر-أدمن + توليد التطبيق) — **الهدف الأساسي**؛ يجعل المنتج قابلاً للبيع لمستأجر جديد.
|
||||
3. **Q** (فلاتر) — بالتوازي مع N، لأنه أطول جزء.
|
||||
4. **M** (ميزات متقدّمة) · **P** (بوابات) · **O** (تحليلات/بوتات) — add-ons تُباع تِباعاً.
|
||||
|
||||
## 4. ما لا أعرفه بعد (أحتاج دراسة أعمق قبل تنفيذ كل مجموعة)
|
||||
- تفاصيل `pricing-engine` (خوارزميات surge الفعلية) — قبل L4.
|
||||
- بروتوكول `intaleq_maps` وبلاطات انطلق للـflutter_map — قبل Q1.
|
||||
- تفاصيل إضافات Kotlin/C++ (overlay/NDK) وربطها بـbundle ID — قبل N3.
|
||||
- API بوابات الدفع الفعلية (PayMob/CliQ/MTN) — قبل P1.
|
||||
|
||||
---
|
||||
← ذو صلة: [17-backend-backlog](17-backend-backlog.md) · [05-pricing-billing](05-pricing-billing.md) · [06-tenant-model](06-tenant-model.md) · [19-entitlements-licensing](19-entitlements-licensing.md) · [20-tls](20-tls.md)
|
||||
Reference in New Issue
Block a user