diff --git a/docs/22-full-product-roadmap.md b/docs/22-full-product-roadmap.md new file mode 100644 index 0000000..f661c09 --- /dev/null +++ b/docs/22-full-product-roadmap.md @@ -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)