- docs/00-15: دراسة، بنية، محرك تعرفة، تسعير، نموذج استئجار، تكاملات، بيانات، realtime، خطة، devops، لاندنج، مخاطر، اصطلاحات سيرفر، تدفق نشر - backend/: NestJS 11 على Docker (health + tenants + عزل tenant_id + بادئة tripz_ + Redis DB 3) - apps/rider, apps/driver, dashboards/admin-web, dashboards/superadmin-web (هياكل) - sync-to-server.sh + .gitignore Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3.0 KiB
3.0 KiB
07 — طبقة التكاملات
المبدأ: كل تكامل خارجي = محوّل (Adapter) خلف واجهة موحّدة، يُفعَّل من country pack. إضافة مزوّد جديد = ملف adapter واحد، لا مساس بالمنطق.
1. الدفع (Payment Adapters)
interface PaymentAdapter {
charge(ctx, amount, currency): PaymentResult
refund(ctx, txId): RefundResult
status(txId): PaymentStatus
}
| المزوّد | الأولوية | السوق |
|---|---|---|
| Cash | اليوم الأول | الكل |
| CliQ | P2 | الأردن |
| ZainCash | P2 | الأردن |
| Syriatel Cash / MTN Cash | P2 | سوريا |
| Binance Pay | P2 (عمل جاهز في مستودعك) | عابر |
- التسويات (settlements) للسائقين والمستأجر عبر BullMQ + سجل
payouts.
2. OTP و SMS
- ذاتي أولاً (أصل موجود من مشروعك) + مزوّد احتياطي لكل دولة.
interface SmsAdapter { send(phone, message): SmsResult }
- طول الـ OTP و TTL من country pack.
3. واجهة المنظّم الحكومي (ميزة تُباع لا عبء)
- نقطة تصدير/بث موحّدة: رحلات، سائقون، مركبات — قابلة للتشكيل لكل هيئة.
- مصمّمة على شاكلة متطلبات هيئة تنظيم النقل البري (تعليمات النقل الذكي).
interface RegulatorAdapter {
exportTrips(range): RegulatorPayload
streamTrip(trip): void // بث لحظي حيث يُطلب
}
- فصل الأدوار قانونياً: نحن مزوّد تقنية، المستأجر هو المشغّل المرخّص (يُوثَّق في العقد).
4. الإشعارات
- FCM للراكب والسائق (قوالب من
notifications). - Webhooks عامة للمستأجرين المتقدمين (أسطول+/سيادة): نظام محاسبة، ERP أسطول... — توقيع HMAC + إعادة محاولة.
5. الخرائط (انطلق) — الخندق التنافسي
- البلاطات عبر Martin (HTTPS)، الترميز/التوجيه/snapping من واجهات انطلق.
- صفر اعتماد على Google في القلب.
- طبقة تجريد في الباك إند والموبايل تسمح بتبديل مزوّد البلاطات لأي مستأجر خارج تغطية انطلق.
- سطر البيع: «خرائط غير محدودة مشمولة — بلا فاتورة للأبد».
هيكل الكود
backend/src/integrations/
├── payments/ { cash, cliq, zaincash, syriatel, mtn, binance }.adapter.ts
├── sms/ { self, twilio, local-jo, local-sy }.adapter.ts
├── regulator/ { ltrc, generic }.adapter.ts
└── registry.ts # يربط اسم المزوّد (من country pack) بالمحوّل
← السابق: 06-tenant-model · التالي: 08-data-model