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 |
لوحة سوبر-أدمن (ويب): إنشاء مستأجر · اسم/لوغو/دولة/دفع/باقة/ميزات · مراقبة. |
🔵 الباك إند ✅ (provision · summary · app-manifest · payment-methods · branding خلف PlatformGuard؛ كتالوج payment-methods.ts) + واجهة ويب مكتفية ذاتياً (dashboards/superadmin-web/index.html). الباقي: لوحة أغنى (تعديل/تعطيل/GMV). |
| N2 |
رفع اللوغو + توليد الأيقونات/splash. |
🔵 الباك إند ✅ (POST /admin/tenants/:id/logo + GET /tenant/logo/:slug عام لأصل الهوية فقط — لا يخدم مجلد التخزين كاملاً حتى لا تُسرَّب صور الوثائق). توليد الأيقونات نفسه في N3. |
| N3 |
سكربت توليد التطبيق الواحد: bundle ID · أيقونات/splash من اللوغو · FCM · إضافات Kotlin/C++ الأصيلة (overlay · method channels · NDK) · بناء · Shorebird. |
🔵 scripts/generate-tenant-app.sh — يجلب المانيفست ويضبط الهيكل؛ خطوات فلاتر موسومة [Q] تُوصَل عند بناء المجموعة Q (المشروع غير موجود بعد). |
| N4 |
لوحة أدمن المستأجر (ويب): سائقون (اعتماد) · رحلات · مراجعة وثائق · سحوبات (تحويل/فشل). |
✅ dashboards/admin-web/index.html + نقاط سرد إدارية (/drivers/admin/list · /trips/admin/list · /payouts/admin/list خلف RolesGuard admin/dispatcher). التعرفة والتقارير تُضاف مع L. |
| N5 |
لوحة خدمة العملاء (ويب): بحث مستخدم برقمه (فهرس أعمى) · رحلاته · تفاصيل رحلة بالمعرّف. |
✅ dashboards/service-web/index.html + GET /admin/users/search · /trips/admin/list?rider=. الشكاوى تحتاج وحدة complaints (لا توجد بعد — بند لاحق). |
مصادقة اللوحتين: هاتف + OTP → JWT بدور admin/dispatcher (نفس تدفّق الموبايل). كل الحماية على السيرفر (RolesGuard) — الواجهة عرض فقط. الوصول للوحة معيَّن بـ?tenant=<slug>.
اختبار الحراسة: E2E يثبت أن السائق/الراكب (غير أدمن) يُرفضان من كل النقاط الإدارية (403).
اختبار: backend/scripts/provision-test.mjs (يتطلّب PLATFORM_SECRET) — يثبت الحارس، التزويد، تصفية الدفع، الاستحقاقات، والمانيفست.
المجموعة 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. ترتيب التنفيذ المقترح
- L (التسعير) — يكمل النواة المالية، باك إند صرف، سريع.
- N ⭐ (السوبر-أدمن + توليد التطبيق) — الهدف الأساسي؛ يجعل المنتج قابلاً للبيع لمستأجر جديد.
- Q (فلاتر) — بالتوازي مع N، لأنه أطول جزء.
- 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 · 05-pricing-billing · 06-tenant-model · 19-entitlements-licensing · 20-tls