- 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>
60 lines
3.0 KiB
Markdown
60 lines
3.0 KiB
Markdown
# 07 — طبقة التكاملات
|
|
|
|
> المبدأ: كل تكامل خارجي = **محوّل (Adapter)** خلف واجهة موحّدة، يُفعَّل من [country pack](06-tenant-model.md). إضافة مزوّد جديد = ملف 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](06-tenant-model.md) · التالي: [08-data-model](08-data-model.md)
|