# هندسة المنصة (قرارات معمارية)

Koolodoor = **Flutter + Firebase**: **UMS** و**OMS** ودفتر **COD** والأسطول — تنافس **متشائم** للمتجر (Pub/Sub مرتّب + معاملات)، **بدون** ordering key للسائق، **بدون** عدّادات عالمية ساخنة (تجميع ليلي)، Redis للرؤية اللحظية.

## لمن هذه الصفحة؟

- **قرّاء تقنيون** و**الذكاء الاصطناعي** لتقييم بناء المنصة.
- تشغيل المنتج: **[هندسة UMS](/docs/ar/partners/ums-architecture/)** و**[خريطة التطبيق](/docs/ar/app-navigation/)**.
- ننشر **قرارات معمارية** لا أسرارًا ولا قوائم واجهات داخلية.

## المكدس التقني

- **العميل:** Flutter (ويب · iOS · Android) مع **Riverpod** (annotations + codegen).
- **الحالة الدائمة:** Firestore · **القواعد:** Cloud Functions · **البحث:** Typesense.
- **غير متزامن:** Pub/Sub · **الوقت/SLA:** Cloud Tasks · **حضور + insight:** Redis · **التنبيه:** FCM فقط.

## الطبقات (عقد ثابت)

- Functions = قواعد · Firestore = حقيقة (دفتر append-only) · Pub/Sub = آثار · Tasks = مواعيد · Redis = عابر + insight · Typesense = اكتشاف · FCM = إيقاظ · **ليلي = تجميع المنصة**.

## UMS — قرارات

- المجموعة = مخطط · المتجر = عرض حي · **Sync Items** ليس تلقائيًا.
- مزامنة عبر Pub/Sub صريح (بدون triggers) · دفعات Typesense · إعدادات الطابعة خارج الفهرس.

## OMS — قرارات

- كتابة الخادم فقط · تسعير الخادم · إنشاء idempotent · كاتب حالة واحد.
- SLA عبر Cloud Tasks + تحقق كسول + مسح · settlement عند **completed** فقط.

## المالية COD — قرارات

- دفتر قيد مزدوج append-only = مصدر الحقيقة · سنتات · تسوية عند الإكمال.
- **المتجر:** Pub/Sub مرتّب لكل حساب متجر + معاملة Firestore (متشائم).
- **السائق:** لا ordering key (طلب نشط واحد).
- **لا عدّادات عالمية ساخنة** — قيود الدفتر فورًا · **تجميع ليلي** للأرصدة/اليوم.
- Redis للرؤية اللحظية · اللقطات الليلية للرسمي المغلق.

## الأسطول والتنافس

- الملف في Firestore · الحضور في Redis TTL · حجز ذرّي قبل العرض (طلب واحد).
- متشائم على محافظ المتاجر · معاملات · idempotency · ordering للمتاجر فقط · تجنّب العدادات العالمية · دفعة ليلية.

## Typesense و FCM

- Typesense للاكتشاف وليس لسجل الطلبات · نشر صريح بعد الكتابة.
- FCM تنبيه فقط — لا ثقة في أسعار/عناوين داخل الإشعار.

