دراسة حالة · نظام ERP لشركة الرداوي

نموذج صلاحيات مبنيّ على شركة حقيقية

شركة الرداوي للمقاولات والخدمات النفطية شركة سورية تعمل منذ عام 1997 في قطاعات النفط والغاز والطاقة والبنية التحتية. صمّمتُ نظام الإدارة الداخلي الخاص بفرقها وبنيتُه.

دوري
التصميم والتطوير الكامل، بصفتي مدير تقنية المعلومات في الشركة
الجهة
شركة الرداوي للمقاولات والخدمات النفطية
النوع
نظام إدارة داخلي
مساحة الوحدات التنظيمية في نظام ERP الرداوي بالوضع الداكن
مساحة العمل التنظيمية: كل وحدة مع موظفيها ووحداتها الفرعية ومديرها والخدمات التي تقدّمها.

المشكلة

تضم الشركة أقسامًا ووحدات استشارية كثيرة تعمل جنبًا إلى جنب: المحاسبة والموازنة، والموارد البشرية، والخدمات العامة، وضبط التكاليف، والاستشارات الضريبية، واستشارات الرواتب والتأمينات الاجتماعية، وغيرها. ولكلٍّ منها مديرها وموظفوها وخدماتها.

نظام الأدوار التقليدي يجيب عن سؤال واحد: ماذا يستطيع هذا الشخص أن يفعل؟ لكن شركة كهذه تحتاج إلى إجابة ثانية أيضًا: أين يستطيع أن يفعل ذلك؟ فقد يحق لموظف الموارد البشرية الاطلاع على سجلات الموظفين، لكن في الوحدات التي يخدمها فقط. ويجب ألّا يحصل أحد على صلاحية تشمل الشركة كلها عن طريق الخطأ.

البنية

تتواصل واجهة Vue 3 أحادية الصفحة مع واجهة برمجية ASP.NET Core على ‎.NET 8. ويمرّ كل طلب بالمصادقة، ثم بمحرّك الصلاحيات والنطاق، قبل أن يصل إلى منطق الأعمال وإلى SQL Server عبر Entity Framework Core.

Architecture: Vue 3 single-page app calls an ASP.NET Core API on .NET 8, which checks permissions and scope, then reads and writes SQL Server through Entity Framework Core. Browser Vue 3 SPAPinia · PrimeVueTailwind · ViteAR / EN · RTL ASP.NET Core · .NET 8 Auth + roles Permission + scope engine Org units · services Data EF CoreSQL Servermigrations Axios · JSON LINQ

طبقتان من الصلاحيات

يُتّخذ قرار الوصول على طبقتين لا تتداخل مهامّهما:

  1. صلاحيات الإجراءات تأتي من الأدوار وتجيب عن ماذا: عرض الموظفين، أو الموافقة على سلفة، أو إرسال رسالة عامة.
  2. تعيينات النطاق تجيب عن أين. تُربط بحساب محدد أو بكل من يحمل دورًا معينًا، وتحصر صلاحية موجودة أصلًا في وحدات مختارة.

ثلاث قواعد لا يكسرها المحرّك أبدًا. تعيين النطاق لا يمنح إجراءً جديدًا، بل يضيّق إجراءً موجودًا فقط. والرفض الصريح يتقدّم دائمًا على أي سماح. والوصول على مستوى الشركة كلها لا يكون ضمنيًا أبدًا، بل يجب منحه عن قصد.

وبصورة مبسّطة، يجري كل فحص على هذا النحو:

bool CanAccess(User user, string action, Unit target)
{
    if (Denies(user, action, target))      return false; // explicit deny wins
    if (!HasAction(user, action))          return false; // what
    if (!ScopeCovers(user, action, target)) return false; // where
    return true;
}
شاشة تعيينات النطاق في نظام ERP الرداوي
تعيينات النطاق: اختر حسابًا أو مجموعة دور، ثم حدّد أيّ صلاحياتها الحالية تريد حصرها.

الشركة على هيئة بيانات

تعيش الأقسام والوحدات الاستشارية والوحدات في شجرة واحدة. تعرف كل عقدة فيها موظفيها ووحداتها الفرعية ومديرها، وتعرض الخدمات التي يمكن للآخرين طلبها منها، مثل سلف الموظفين، والرسائل العامة، وقيود التكاليف المباشرة وغير المباشرة. والشجرة نفسها تغذّي محرّك النطاق، فتتبع الصلاحيات الهيكلَ الفعلي للشركة.

ويدعم النظام أيضًا المدير العام بالوكالة، لتفويض الصلاحيات بشكل منظّم عند غياب المدير العام.

تفاصيل تهمّ من يستخدمه

شاشة تسجيل الدخول في نظام ERP الرداوي
دخول آمن لفرق الرداوي.

التقنيات

C# / .NET 8ASP.NET CoreEntity Framework CoreSQL ServerVue.js 3PiniaPrimeVueTailwind CSSViteAxios

هل تحتاج إلى نظام مصمّم على طريقة عمل شركتك فعلًا؟ أبني هذه الأنظمة، وأستطيع أيضًا إدارة الخوادم التي تعمل عليها.

تواصل معي عبر LinkedIn