الانتقال إلى المحتوى الرئيسي

الهندسة

بنية مصممة للتوسّع متعدد المستأجرين

منصة معيارية قائمة على الأحداث لعمليات متعددة المستأجرين. تفاصيل كافية لتقييم الهندسة، دون كشف تفاصيل التنفيذ الداخلية.

بنية النظام

خمس طبقات من العميل إلى البيانات، لكل منها حدود صريحة ووصول محدد النطاق للمستأجر.

  1. الطبقة 1

    طبقة العميل

    بوابات قائمة على الأدوار مع تنقّل واعٍ بالمسمى الوظيفي وهوية بصرية لكل مستأجر.

    • لوحة تحكم الويب
    • تطبيق iOS أصلي
    • تطبيق Android أصلي
    • بوابة إدارة المنصة
  2. الطبقة 2

    بوابة الواجهة البرمجية

    سطح NestJS معياري حيث تعمل الحراس والبرمجيات الوسيطة للمستأجر والتحقق قبل أي معالج.

    • واجهة REST API بتقنية NestJS
    • توثيق OpenAPI
    • تحديد معدل الطلبات
    • أنابيب التحقق
  3. الطبقة 3

    خدمات التطبيق

    وحدات مبنية حسب المجال تستلم المستأجر من سياق محدد النطاق للطلب بدلاً من اشتقاقه بنفسها.

    • القوى العاملة والحضور
    • إدارة الأسطول
    • الشؤون المالية والرواتب
    • الإجازات والمصاريف
    • التحليلات والتنبيهات
    • تأهيل الموظفين
  4. الطبقة 4

    طبقة الأحداث والمهام

    معالجة غير متزامنة للاستيراد المجمّع، وإشعارات البريد والدفع، وتخصيص الإجازات، وتنبيهات انتهاء صلاحية المستندات.

    • قوائم انتظار مدعومة بـ Redis
    • معالجات الأحداث
    • مهام مجدولة (Cron)
    • قائمة انتظار الرسائل المعطوبة
  5. الطبقة 5

    طبقة البيانات

    بيانات علائقية محددة النطاق للمستأجر، وقراءات مخزَّنة مؤقتاً، وتخزين كائنات خاص للملفات.

    • PostgreSQL مع Prisma
    • Redis
    • تخزين كائنات متوافق مع S3

القرارات الهندسية

متعدد المستأجرين بالتصميم

تحدد البرمجيات الوسيطة للمستأجر وتتحقق من صحته في كل طلب، ويوفره سياق محدد النطاق للطلب لكل خدمة. يُطبَّق العزل في مكان واحد وتغطيه مجموعة اختبارات مخصصة.

46 وحدة مجال

المصادقة، والقوى العاملة، والحضور، والأسطول، والمالية، والرواتب، والإجازات، والمشتريات، والتتبع، والتأهيل، والتحليلات، وغيرها — لكل منها متحكماتها وخدماتها وأنواعها الخاصة بدلاً من طبقة أحادية مشتركة.

الوقت الفعلي حيثما يهم

يبث التتبع المباشر للموظفين عبر Server-Sent Events، مما يبقي تحديثات الخريطة اقتصادية ومتوافقة مع الوكلاء. تُحجز WebSockets للحالة ثنائية الاتجاه، مثل دردشة الدعم.

عمل خلفي قائم على الأحداث

ناقل أحداث داخلي فوق قوائم انتظار مدعومة بـ Redis مع معالجة للرسائل المعطوبة. تنشر الوحدات الأحداث وتعود فوراً، بحيث لا يُعطّل مستهلك بطيء لاحقاً استجابة الواجهة البرمجية أبداً.

صلاحيات واعية بالمسمى الوظيفي

تُحلَّل الأدوار والمسميات الوظيفية و80 رمز صلاحية دقيقاً إلى مجموعة صلاحيات فعّالة واحدة، بحيث تُطبّق الواجهة والواجهة البرمجية القواعد ذاتها دون كود مخصص لكل عميل.

نشر قابل للتوسّع

تتوسع نسخ الواجهة البرمجية عديمة الحالة أفقياً خلف موازن تحميل فوق PostgreSQL وRedis مشتركين. نقاط فحص السلامة، وتسجيل الطلبات، وتشخيصات المنصة متوفرة كمعيار أساسي.

حزمة التقنيات

  • NestJS

    الخلفية

  • TypeScript

    لغة البرمجة

  • PostgreSQL

    قاعدة البيانات

  • Prisma

    طبقة ORM

  • Redis

    التخزين المؤقت وقوائم الانتظار

  • BullMQ

    قوائم المهام

  • Server-Sent Events

    تحديثات مباشرة

  • Docker

    البنية التحتية

  • Firebase FCM

    إشعارات فورية

  • Transactional email

    الإشعارات

  • Next.js

    الويب

اقرأ المزيد: فرض عزل المستأجرين، وصلاحيات واعية بالمسمى الوظيفي، وضوابط الأمان التي تعمل فوقها.