first commit: منصة Tripz — خطط كاملة + سكافولد باك إند NestJS/Docker
- 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>
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
# 11 — النشر والأتمتة (DevOps / CI-CD)
|
||||
|
||||
> القاعدة الحاكمة: **مستأجر جديد = ملف إعداد + أصول + أمر CI واحد.** إن احتاج نشر مستأجر أكثر من يوم عمل، النموذج لا يتوسع.
|
||||
|
||||
## البيئات
|
||||
| البيئة | الغرض | القاعدة |
|
||||
|--------|-------|---------|
|
||||
| `local` | تطوير | Docker Compose |
|
||||
| `staging` | اختبار قبل النشر | مشترك |
|
||||
| `production-shared` | باقات انطلاقة/علامة/أسطول+ | نشرة مشتركة |
|
||||
| `production-sovereign-{tenant}` | باقة سيادة | نسخة معزولة داخل الدولة |
|
||||
|
||||
## الباك إند
|
||||
- **Docker** لكل خدمة + **docker-compose** (Postgres/PostGIS، Redis، Martin، API، worker).
|
||||
- الهجرات تُشغَّل آلياً في خط النشر (لا `synchronize`).
|
||||
- الأسرار من متغيرات بيئة / Vault — لا في الكود.
|
||||
- **وضع السيادة:** نفس صور Docker، `.env` مختلف، تُنشر على خوادم المستأجر أو سحابة داخل الدولة.
|
||||
|
||||
## الموبايل — flavors + fastlane
|
||||
```
|
||||
mobile/
|
||||
├── flavors/<tenant>/
|
||||
│ ├── config.json # ألوان، اسم، bundle id، مفاتيح
|
||||
│ ├── assets/ # أيقونة، سبلاش، لوجو
|
||||
│ └── store/ # لقطات، وصف المتجر (تمايز ضد بند آبل 4.3)
|
||||
├── fastlane/
|
||||
│ ├── Fastfile # lanes: build_flavor, deploy_ios, deploy_android
|
||||
│ └── Appfile
|
||||
```
|
||||
- **أمر واحد:** `fastlane deploy tenant:<slug>` يبني الراكب والسائق وينشرهما.
|
||||
- ما يتغير بالبناء فقط في الـ flavor؛ الباقي ديناميكي من `GET /tenant/config`.
|
||||
- **درء رفض آبل 4.3:** كل نكهة بأصول ومحتوى متجر مميّز؛ خيار «التطبيق الجامع» للباقة المجانية.
|
||||
|
||||
## خط CI (GitHub Actions أو ما يعادله)
|
||||
```
|
||||
on PR:
|
||||
- lint + typecheck (backend + flutter analyze)
|
||||
- unit tests (jest + bloc_test)
|
||||
- اختبار عزل المستأجر (A لا يرى بيانات B)
|
||||
- build نكهة تجريبية (تحقق أن flavors يعمل)
|
||||
on main:
|
||||
- migrations → staging → smoke tests
|
||||
- build جميع النكهات النشطة
|
||||
on tag:
|
||||
- نشر production (shared) + fastlane للنكهات
|
||||
```
|
||||
|
||||
## المراقبة
|
||||
- تسجيل مركزي (structured logs) مع `tenant_id` و`trip_id` في كل سطر.
|
||||
- صفحة **حالة (status page)** لكل مستأجر — جزء من عرض الدعم/SLA.
|
||||
- تنبيهات على: فشل الإسناد، تأخر الـ socket، طوابير BullMQ المتضخمة.
|
||||
|
||||
## قواعد الإصدار
|
||||
- تحديث كل النكهات عند إصدار فلاتر → **مؤتمت عبر fastlane** (لا يدوي).
|
||||
- إصدار الباك إند semver؛ الهجرات متوافقة رجعياً حين أمكن (نشر بلا توقف).
|
||||
|
||||
← السابق: [10-roadmap](10-roadmap.md) · التالي: [12-landing-gtm](12-landing-gtm.md)
|
||||
Reference in New Issue
Block a user