# 14 — اصطلاحات السيرفر والعزل (قرارات تشغيلية محسومة) > هذه قرارات نهائية اتخذها المالك — تُطبَّق حرفياً في الكود والـ config من اليوم الأول. ## 1. بيئة العمل مقابل النشر - **كتابة الكود والتطوير:** على الماك (محلياً). - **النشر (Deployment):** على السيرفر. - **الباك إند يعمل داخل Docker** في الحالتين (نفس الصور محلياً وعلى السيرفر). ## 2. السيرفر مشترك — العزل إلزامي السيرفر الحالي **تجريبي ومشترك**: عليه برامج وملفات كثيرة (WordPress وغيره) وقد يعمل عليه نفس التطبيق أكثر من مرة. لذلك كل موارد Tripz تُعزل بوضوح: ### أ. بادئة (Prefix) لكل شيء - **جداول قاعدة البيانات:** بادئة `tripz_` لكل جدول (مثال: `tripz_trips`, `tripz_users`). - **مفاتيح Redis:** بادئة `tripz:` قبل كل مفتاح (فوق بادئة `tenant:` الداخلية). - **قوائم/طوابير BullMQ:** بادئة `tripz_`. - **أسماء حاويات/شبكات Docker:** بادئة `tripz-`. ### ب. قاعدة بيانات منفصلة عن الأصلية - **PostgreSQL:** قاعدة بيانات مستقلة خاصة بـ Tripz (اسمها `tripz`)، لا نشارك قاعدة أي برنامج آخر. - **Redis:** نختار **رقم قاعدة بيانات (DB index) غير الافتراضي 0** لتفادي التصادم — نعتمد **DB رقم 3** (من أصل 0–15). قابل للتعديل عبر `REDIS_DB` في البيئة، لكن الافتراضي المعتمد ≠ 0. ### ج. متغيرات البيئة الحاكمة ```env # PostgreSQL DB_NAME=tripz DB_TABLE_PREFIX=tripz_ # Redis — رقم غير افتراضي للعزل عن باقي البرامج على السيرفر REDIS_DB=3 REDIS_KEY_PREFIX=tripz: # BullMQ QUEUE_PREFIX=tripz_ ``` - في TypeORM: يُضبط `entityPrefix: process.env.DB_TABLE_PREFIX`. - في Redis client / BullMQ: تُمرَّر `db` و`keyPrefix` من البيئة. ## 3. الخرائط — انطلق فقط (المأخوذ الوحيد من سيرو) - نأخذ من سيرو **شيئاً واحداً فقط: تكامل خرائط انطلق** — الـ API والباكج والتنظيم الكامل الموجود في خدمة الخرائط (MapService) بتطبيق سيرو. - **الخطوة العملية:** نفحص باكج/تنظيم انطلق في سيرو، ننقله/نكيّفه إلى تطبيق فلاتر الجديد (داخل `mobile/packages/tripz_core/maps`) وإلى وكيل الخرائط في الباك إند. - كل ما عدا الخرائط من سيرو: **لا يُنقل كوداً** — يُعاد البناء من جديد بـ Cubit + Bloc + NestJS. ## 4. مصير سيرو — مؤجَّل (نعمل ونقرر لاحقاً) - **لا نفصل سيرو الآن ولا نربطه الآن.** نبني منصة جديدة من الصفر (كيوبت + فلاتر + نِست) ونرى النتيجة والتنظيم. - إذا خرج البناء الجديد نظيفاً ومرتباً → **قد نستغني عن سيرو** ونعتمد الجديد كأول تطبيق حقيقي/مبدئي للاستئجار. - إذا لا → نعيد النظر. القرار النهائي **بعد رؤية النتيجة**، لا الآن. - الثابت الوحيد الآن: **ننسى سيرو عملياً ونأخذ منه الخرائط (انطلق) فقط**. ← يُقرأ مع: [06-tenant-model](06-tenant-model.md) · [11-devops-cicd](11-devops-cicd.md) · [07-integrations](07-integrations.md)