أدلة DWPlatform

الأدوار وأصحاب المصلحة — مين بيلمس المنصة، ومن أنهي باب

تخيل المنصة عمارة. في شركة بتديرها كلها (مشغّل المنصة)، وفي جهات ساكنة فيها كل واحدة بشقتها وبراندها (العملاء)، وجوّا كل شقة في ناس بأدوار مختلفة: مسؤول بيدير، وموظفين بيشتغلوا، ومكاتب ليها شغل مخصوص. الصفحة دي بتعرّفك على السكان كلهم — طبقة الـ SaaS (اللي بيديروا العمارة) وطبقة الجهة (اللي عايشين جواها) — عشان لما تقابل اسم دور في أي دليل تعرف هو مين فورًا.

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

أصحاب المصلحة في طبقة الـ SaaS

صاحب المصلحةهو مينبيعمل إيه
مشغّل المنصة / Super‑Adminالشركة اللي شغّالة DWPlatformبيشغّل لوحة المنصة: بيعمل الجهات، وبيحدد الباقات، وبيجهّز قواعد البيانات، وبيدير الكتالوج، وبيتابع الاستخدام والفوترة. وهو تلقائيًا Admin في كل خدمة.
الجهة (المؤسسة)جهة عميلة مشتركة في المنصةهي حدود الفوترة والعزل — بتملك براندها ومستخدميها وبياناتها وباقتها والـ modules المتاحة ليها.
مالك الجهة / مسؤول الجهةالمسؤول بتاع العميل نفسهبيدير جهته بنفسه: البراند، وتشغيل الـ modules، والاشتراك والمقاعد، وكمان — من المسار اللي بيحسب المقاعد — بيعمل مستخدمين وبيوزّع أدوار.
مسؤول الفوترة / الحسابمسؤول المالية أو المالك في الجهةبيشوف الباقة، ودورة حياة الاشتراك، والإضافات، وأحداث الفوترة، واستهلاك المساحة.

أصحاب المصلحة في طبقة الجهة (الناس اللي جوه المؤسسة)

صاحب المصلحةبيعمل إيهالـ modules الأساسية ليه
المستخدم / الموظفشغل كل يوم: بريد، وشات، وملفات، واجتماعات، ومهام، وأخبار، وبحث في التليفونات، وطلبات، وإدخال قيم مؤشراتالـ shell + كل الـ modules المتاحة للجهة
مدير الإدارةبيشرف على إدارة؛ وبيوافق على الطلبات اللي بتيجي عليه؛ وبيدير تقويم الإدارة ومهامهاWorkFlow، KPIS، التقويم، الموارد البشرية (قراءة)
المشرفإشراف من غير صلاحيات إدارة كاملة — بيراجع ويتابع في حدود نطاقهأكتر من module
مسؤول الموارد البشرية / التنظيمبيمسك سجل الأشخاص والهيكل التنظيمي: الأشخاص، والإدارات، والوظايف، والدرجات، والتليفوناتHR / Organization
مكتب الوارد (Receive Desk)بيسجّل المراسلات الرسمية الواردة وبيوجّههاDWMail
مكتب المراجعة (Review Desk)بيراجع المراسلات وبيوافق عليهاDWMail
مكتب السكرتارية (Secretary Desk)الإنهاء النهائي، والتوقيع والختم، والأرشفةDWMail
المعتمِد / الموقِّعبيوافق على طلبات الـ WorkFlow أو بيوقّع على المراسلات (عنده توقيع إلكتروني)WorkFlow، DWMail
منظّم الاجتماعبيحدد الاجتماعات وبيديرها وبيسجّلها؛ وبيشارك التسجيلاتالاجتماعات
ناشر / محرّر الأخباربيكتب الأخبار الداخلية وبينشرهاNews
مدقق / مالك مؤشراتبيملك الأنشطة والمؤشرات، وبيدخّل القياسات، وبيطلّع التقاريرKPIS
مساهم بالمحتوىبيرفع ملفات ويشاركها، ويعلّق، ويعمل @mentionDrive، مركز التعاون

أطراف مش بشر (أنظمة)

خدمة بتنادي خدمة

خدمة backend بتنادي واحدة تانية بـ system JWT (مثلًا WorkFlow بيبعت موافقة للـ Hub). بتشتغل بصلاحيات أعلى، ومحصورة في الجهة، والأصل فيها المنع.

منتجين ومستهلكين على الـ bus

الـ modules بتنشر إشعارات، وتغييرات في مهام الشغل، وأحداث فهرسة؛ والـ Hub بيستهلكها. وكل حدث شايل معاه رقم الجهة.

بوابة البريد

بتستقبل البريد الحقيقي وبتمرّره لباك‑إند المراسلات (سيرفر البريد بتاع DWMail نفسه).

برامج سطح المكتب

برنامج مزامنة الـ Drive ومُنبّه ويندوز في شريط المهام — برامج مسلَّمة للعميل بتدخل بحساب وبتكلّم الـ backend.

الصلاحيات بتشتغل إزاي بالظبط

DWPlatform مش بتستخدم قايمة أدوار واحدة مسطّحة — في محرك صلاحيات موحّد، وفهم شكله العام أساسي لفريق الجودة (والتفصيل كله في كورس الصلاحيات):

الوحدة الأساسية

صلاحية = فعل + نطاق

مفيش «يقرأ المرتبات» لوحدها — في «يقرأ المرتبات» على مين: نفسه، فريقه، إدارته، شركته، الكل. السبع نطاقات بتتحسب من الهيكل التنظيمي لحظة السؤال.

التجميع

حزم أدوار + منح فردية

الوظيفة المتكررة بتاخد حزمة جاهزة (مدير مباشر، مسؤول شؤون…)، والاستثناء بياخد منحة مؤقتة بسبب مكتوب. والمنع بيكسب على الاتنين.

مهم للجودة

التوكن مبقاش شايل صلاحيات

القرار بيتاخد عند السيرفر في كل طلب — عشان كده سحب صلاحية بيسري في ثواني ومن غير ما حد يخرج ويدخل. لو بتختبر: متستنتجش حاجة من محتوى التوكن.

جوه الجهة

العضوية في الجهة

حاجة منفصلة عن القدرات — بتسجّل وضع المستخدم جوه الجهة (مالك / مسؤول / عضو)، ودي اللي محكومة بمقاعد الباقة.

المشغّل

مسؤول الجهة = كل صلاحيات جهته

مسؤول الجهة بياخد كل صلاحيات جهته تلقائيًا (ومشغّل المنصة كل صلاحيات المنصة) — والاستثناء الوحيد اللي بيتغلب عليه هو «المنع» الصريح.

المعنى

401 ولا 403 ولا 404

401 = مش مسجّل دخول. 403 = مسجّل بس مش مصرّح له بالفعل ده. و404 على سجل معيّن ممكن تكون «موجود بس بره نطاقك» — إخفاء الوجود نفسه مقصود.

ظهور الـ module حاجة، والصلاحية حاجة تانية. إن الـ module يظهر أصلًا في شريط الجهة ده بيتحدد بالـ entitlements (الباقة + مفاتيح التشغيل عند المشغّل أو مسؤول الجهة). أما الأدوار فبتحدد إنت تقدر تعمل إيه جوه module متاح ليك.

كتالوج الأدوار الرئيسي

أدوار المنصة الأساسية (شغالة فعلًا)

الدوربيدّي إيهبيفرق فين
Adminوصول كامل لكل الخصائصكل الـ modules
Userمستخدم عادي بوصول محدودكل الـ modules
Managerخصائص على مستوى الإدارةWorkFlow، KPIS، الموارد البشرية، التقويم
Supervisorقدرات إشراف ومتابعةأكتر من module
HRAdminصلاحيات موارد بشرية أعلىHR / Organization

أدوار مكاتب المراسلات (DWMail)

الدوربيدّي إيه
ReceiveDeskبيتعامل مع المراسلات الواردة (تسجيل وتوجيه)
ReviewDeskبيراجع المراسلات وبيوافق عليها
SecretaryDeskالإنهاء والأرشفة (توقيع / ختم)

أدوار التقويم والأدوار الخاصة بكل module

الدوربيدّي إيه
CalendarAdmin / CalendarManagerإدارة التقويم / وصول لتقويم الإدارة
role:DWPlatform.News=Admin | ContentManagementكتابة الأخبار — إدارة كاملة مقابل محتوى بس
role:DWPlatform.Media=Adminإدارة الـ Drive (المساحات، والحجر، والقوالب)
أدوار على مستوى الملف في الـ Drive: Viewer / Downloader / Editorوصول لكل ملف: مشاهدة بس / تحميل / تعديل كامل
KPIS Auditor / IsKpiAdminيملك ويعدّل الأنشطة ويدخّل القيم / يدير كل الأنشطة

أدوار لوحة تحكم الـ SaaS

الدوربيدّي إيه
SuperAdmin / مشغّل المنصةبيشغّل الـ SaaS في كل الجهات؛ وهو تلقائيًا Admin في كل حتة
مالك / مسؤول الجهةبيدير جهة واحدة بنفسه

إسناد الأدوار وإدارتها — مين وإيه وإزاي

في نظامين أدوار منفصلين، بيتظبطوا في مكانين مختلفين، وبيتحكم فيهم جهتين مختلفتين. واللعبة كلها إنك تعرف مين فيهم مين:

النظام ١

دور العضوية في الجهة

قيمة واحدة بس لكل مستخدم جوه الجهةTenantAdmin أو User (والمالك مقفول على TenantAdmin). ده هو المقعد: لما تعمل مستخدم أو ترقّيه لمسؤول بتستهلك مقعد من الباقة.

النظام ٢

أدوار الخدمات

دي وحدة القدرة الحقيقية — صف (مستخدم × دور × خدمة) بيتحوّل لـ claim في التوكن شكله role:DWPlatform.{Service}=Role. وده اللي كل module بيتحقق منه. ومش بيستهلك مقاعد.

مين مسموح له يظبط الأدوار

الإجراءمين يقدر يعملهمين بيفرضه
إنشاء مستخدم وتحديد دوره في الجهة؛ وتغيير دور مستخدم (عضو ↔ مسؤول)؛ وحذف مستخدممسؤول الجهة بتاعها، أو SuperAdmin من المنصةالـ policy RequireTenantAdmin (الـ claim tenant_role=TenantAdmin أو is_superadmin=true). ومحكوم بالمقاعد — بيرجّع 409 لما توصل لحد الباقة في المستخدمين أو المسؤولين.
إسناد أو سحب دور خدمة (مثلًا تدّي حد ReceiveDesk على DWMail)مستخدم عنده دور عام Admin / Manager / HRAdmin، أو دور خدمة Identity‑Admin (role:DWPlatform.Identity=Admin)؛ والـ SuperAdmin بيعدّي تلقائيالـ policy RequireManagerOrAdmin. ومش محكوم بالمقاعد، ومش لازم يكون الـ module متاح للجهة.
إنشاء اسم دور جديد خالص (لأدوار مش موجودة في الكتالوج الجاهز)نفس اللي فوق (RequireManagerOrAdmin)POST /api/v1/roles. الأدوار حرة تمامًا؛ والكتالوج اللي تحت ده مجرد اللي متزرّع جاهز.
القاعدة العملية. مالك أو مسؤول الجهة هو اللي بيضم الناس وبيقرر مين يبقى مسؤول (المقاعد). أما أدوار الشغل اليومي (أدوار المكاتب، وHRAdmin، والإرسال الخارجي… إلخ) فبيوزّعها أي حد شايل Admin أو Manager في Identity. والـ SuperAdmin يقدر يعمل الاتنين، في أي جهة.

تظبطهم إزاي — مسار الضغطات

إدارة المستخدمين والأدوار مكانها تطبيق الـ IAM (DWPlatform.Identity.FE — قسم «الهوية / المستخدمين» في إدارة الـ shell). وفيه شاشتين:

عايز تعمل إيهالخطوات
تضيف مستخدم جديدالهوية ← المستخدمونإضافة مستخدم ← الإيميل (واختياري باسورد أو اسم مستخدم) واختار عضو ولا مسؤول ← احفظ. لو الباقة خلصت مقاعدها، الحفظ هيترفض برسالة «وصلت لحد المقاعد».
تخلّي حد مسؤول جهة (أو ترجّعه عضو)الهوية ← المستخدمون ← صف المستخدم ← تغيير الدور ← اختار مسؤول (TenantAdmin) أو عضو (User) ← أكّد. (المالك مش ممكن ينزل، وآخر مسؤول مش ممكن يتشال.)
تدّي حد دور خدمة (قدرة)الهوية ← المستخدمون ← افتح المستخدم (صفحة المستخدم) ← كارت الأدوارإضافة ← اختار الخدمة (مثلًا DWMail / المراسلات) ← اختار الدور (مثلًا ReceiveDesk) ← إسناد. وتسحبه بعد كده من علامة سلة المهملات جنب الدور. ولازم المستخدم يخرج ويدخل تاني عشان الـ claim الجديد يشتغل.

تظبط إيه لكل صاحب مصلحة (وصفات جاهزة)

وزّع دول كـ أدوار خدمة على الخدمة المذكورة، إلا لو مكتوب غير كده. و«أي موظف» معناها إنه مش محتاج أي دور غير إنه عضو في الجهة.

عشان تخلّي حد…إدّيهعلى خدمة
موظف عادي— (عضو في الجهة وبس)
مسؤول الجهةدور الجهة مسؤول (المستخدمون ← تغيير الدور)العضوية في الجهة
مكتب الوارد في المراسلاتReceiveDeskDWMail / المراسلات
مكتب المراجعة في المراسلاتReviewDeskDWMail / المراسلات
مكتب السكرتارية (توقيع/ختم/أرشفة)SecretaryDesk + توقيع إلكتروني مرفوع (الإعدادات ← التوقيعات)DWMail / المراسلات
مدير البريد / مدير المكتب (يدير حاجات غيره)Admin أو Manager (على البريد) / OfficeManager*DWMail / المراسلات
مكتب الإرسال الخارجي (يبعت بره الجهة)ExternalSendingOffice* أو Director* — أو ببساطة AdminDWMail / المراسلات
مسؤول الموارد البشرية / التنظيمHRAdminHR / Identity
مسؤول أو مدير التقويمCalendarAdmin / CalendarManagerالتقويم
ناشر الأخبارAdmin أو ContentManagementNews
مسؤول الـ Drive (المساحات، الحجر)AdminMedia
مدقق أو مسؤول المؤشراتAuditor* / AdminKPIS
مستخدم متميّز في module واحدAdminالـ module ده
*الأدوار اللي مش في الكتالوج الجاهز (زي ExternalSendingOffice وDirector وOfficeManager وAuditor) مش موجودة أصلًا لحد ما مسؤول Identity يعمل اسم الدور مرة واحدة (POST /api/v1/roles، أو من زرار «دور جديد» في تطبيق الـ IAM)، وبعدين يسنده على الخدمة. والأدوار المزروعة جاهزة هي Admin, User, Manager, Supervisor, HRAdmin, ReceiveDesk, ReviewDesk, SecretaryDesk, CalendarAdmin, CalendarManager. وبالنسبة للإرسال الخارجي بالذات، إن حد ياخد Admin على DWMail (أو يكون SuperAdmin) ده كفاية من غير أي دور مخصص — بص على دليل البريد §١٢.

الدور بيوصل لفين في كل module (خريطة سريعة)

● كامل/أساسي · ◐ جزئي/محصور · ○ الحد الأدنى أو على نفسه بس. وبرضه ظهور الـ module نفسه متوقف على الـ entitlements بتاعة الجهة.

الدورIdentityHR‏/admin في الـ ShellDWMailWorkFlowKPISChatMeetDriveNews
SuperAdmin● اللوحة
مسؤول الجهة● جهته
Admin
Manager● موافقة● إدارته
HRAdmin
مكاتب المراسلات● مسار المكتب
User (موظف)○ نفسه○ عرض● بريده● يقدّم طلب● يشارك● يقرا
خلاصة الصفحة. طبقتين: مشغّل المنصة والجهات فوق، وجوّا كل جهة مسؤول وموظفين ومكاتب شغل. الدور بيحدد الباب اللي بتدخل منه، أما «مين يشوف إيه ويعمل إيه» بالظبط فده شغل الصلاحيات والنطاقات — كورس الصلاحيات هو المرجع، و ضبط الأدوار هو التطبيق العملي بالصور.