مصفوفة RBAC — الأدوار × الصلاحيات
ما هي
المرجع القانوني لـ من يستطيع فعل ماذا في ManpowerIQ: مصفوفة الدور × الصلاحية الكاملة، مُستنسَخة من قراءة حيّة لجداول roles / permissions / role_permissions المزروعة (BU 1، Demo Business Unit، 2026-06-10). الإجماليات المُتحقَّق منها هي 97 صلاحية عبر 9 أدوار.
هذا هو المصدر الموثوق الذي تشير إليه صفحة دليل المستخدم الأدوار والصلاحيات، والبوّابة المستخدمة في صفحات مهام المرحلة Phase-4. المصدر: Sprint/RBAC_RolePermission_Extract.md.
لماذا بُنيت بهذه الطريقة
نموذج الوصول في ManpowerIQ متمحور حول الصلاحيات (انظر المصادقة وRBAC): كتالوج عام لرموز الصلاحيات، وأدوار محصورة بوحدة العمل تحزمها، وفحوص [Authorize("x.y")] في وقت التشغيل. المصفوفة أدناه هي بيانات المنح الملموسة وراء ذلك النموذج — الصفوف الفعلية المزروعة في role_permissions. تُعرَض مُجمَّعة حسب القدرة بحيث يستطيع مطوّر يضيف إجراءً محروسًا أن يجد الصلاحية ذات الصلة ويرى أي الأدوار تحملها بالفعل.
الأدوار التسعة
زرع خط أساس MIQ-003 7 أدوار؛ وأُضيف HR_DIRECTOR وCOO في جولات لاحقة (بعد خط الأساس)، كلاهما بنطاق ضيّق للحضور + التسوية.
| id |
Code |
Abbr. |
Name |
Scope |
| 1 |
SYS_ADMIN |
SA |
System Administrator |
وصول كامل — كل الصلاحيات 97 |
| 2 |
HR_ADMIN |
HRA |
HR Administrator |
الموظفون، المهارات/الشهادات، إعداد الإجازة، التدقيق (65 صلاحية) |
| 3 |
PLANNER |
PLN |
Planner |
الطلب، الجداول، جولات التخصيص (55 صلاحية) |
| 4 |
MANAGER |
MGR |
Department Manager |
الاعتماد/النشر، الاعتمادات، التحقّق من الحضور (46 صلاحية) |
| 5 |
SUPERVISOR |
SUP |
Supervisor |
التقاط/التحقّق من الحضور، عروض الفريق (34 صلاحية) |
| 6 |
EMPLOYEE |
EMP |
Employee |
الخدمة الذاتية فقط (6 صلاحيات) |
| 7 |
VIEWER |
VWR |
Viewer |
للقراءة فقط عبر المنتج (23 صلاحية) |
| 8 |
HR_DIRECTOR |
HRD |
HR Director |
بعد خط الأساس — الحضور + التسوية (7 صلاحيات) |
| 9 |
COO |
COO |
Chief Operating Officer |
بعد خط الأساس — الحضور + التسوية (8 صلاحيات) |
كيف تُقرأ المصفوفة
- تستخدم الأعمدة الاختصارات أعلاه (SA HRA PLN MGR SUP EMP VWR HRD COO).
- علامة ✓ تعني أن الدور يحمل تلك الصلاحية.
SYS_ADMIN يحمل كل صلاحية، فعموده ✓ في كل صفّ بحكم التعريف.
ملاحظة عن الاكتمال. يُعدِّد الاستخراج المصدر منح الأدوار الثمانية غير الإدارية صراحةً — 92 رمز صلاحية متمايزًا — ويسجّل أن SYS_ADMIN يحمل كل الـ 97. تُدرِج المصفوفة أدناه تلك الـ 92، إضافةً إلى allocation_run.debug (المُسمّى في المرجع السريع للاستخراج) وadmin.config / admin.roles / admin.users (المُستعادة من مسح متحكّمات المرحلة Phase-6) — كلها SYS_ADMIN-only — = 96 صلاحية مُسمّاة. يترك ذلك 1 من الـ 97 يحملها SYS_ADMIN وحده ولم تُسمَّ بعد (97 − 92 = 5 لـ SYS_ADMIN فقط؛ 4 مُسمّاة الآن، 1 لا تزال غير مُسمّاة). بدلًا من اختراع رمز، تُترَك كبقية غير مُعدَّدة؛ ولاستعادتها، استعلم permissions مباشرةً عند HEAD.
المصفوفة (حسب القدرة)
Administration & audit
| Permission |
SA |
HRA |
PLN |
MGR |
SUP |
EMP |
VWR |
HRD |
COO |
admin.audit |
✓ |
✓ |
|
|
|
|
|
|
|
admin.config |
✓ |
|
|
|
|
|
|
|
|
admin.roles |
✓ |
|
|
|
|
|
|
|
|
admin.users |
✓ |
|
|
|
|
|
|
|
|
admin.config / admin.roles / admin.users هي صلاحيات إدارية SYS_ADMIN-only، مُستعادة من مسح متحكّمات المرحلة Phase-6 (تبوّب كتابة الإعدادات، والأدوار/الصلاحيات، والمستخدمين على التوالي). كانت ضمن بقية SYS_ADMIN-only غير المُسمّاة سابقًا — انظر ملاحظة الاكتمال أعلاه.
Allocation rules & runs
| Permission |
SA |
HRA |
PLN |
MGR |
SUP |
EMP |
VWR |
HRD |
COO |
allocation_rule.execute |
✓ |
|
✓ |
|
|
|
|
|
|
allocation_rule.read |
✓ |
✓ |
✓ |
✓ |
✓ |
|
✓ |
|
|
allocation_rule.write |
✓ |
✓ |
|
|
|
|
|
|
|
allocation_run.debug |
✓ |
|
|
|
|
|
|
|
|
allocation_run.execute |
✓ |
|
✓ |
|
|
|
|
|
|
allocation_run.lock |
✓ |
|
✓ |
|
|
|
|
|
|
allocation_run.read |
✓ |
✓ |
✓ |
✓ |
✓ |
|
✓ |
|
|
allocation_run.write |
✓ |
|
✓ |
|
|
|
|
|
|
Demand planning
| Permission |
SA |
HRA |
PLN |
MGR |
SUP |
EMP |
VWR |
HRD |
COO |
demand.confirm |
✓ |
✓ |
✓ |
|
|
|
|
|
|
demand.create |
✓ |
|
✓ |
|
|
|
|
|
|
demand.edit |
✓ |
|
✓ |
|
|
|
|
|
|
demand.override |
✓ |
✓ |
|
|
|
|
|
|
|
demand.read |
✓ |
✓ |
✓ |
✓ |
✓ |
|
✓ |
|
|
demand.template_manage |
✓ |
✓ |
|
|
|
|
|
|
|
demand.template_read |
✓ |
✓ |
✓ |
✓ |
|
|
|
|
|
demand.view |
✓ |
|
✓ |
✓ |
|
|
✓ |
|
|
demand.write |
✓ |
✓ |
✓ |
|
|
|
|
|
|
demand_reason.config |
✓ |
✓ |
✓ |
|
|
|
|
|
|
demand_reason.view |
✓ |
✓ |
✓ |
✓ |
✓ |
|
✓ |
|
|
Rostering & publish
| Permission |
SA |
HRA |
PLN |
MGR |
SUP |
EMP |
VWR |
HRD |
COO |
roster.approve |
✓ |
|
|
✓ |
|
|
|
|
|
roster.create |
✓ |
|
✓ |
|
|
|
|
|
|
roster.edit |
✓ |
|
✓ |
|
|
|
|
|
|
roster.publish |
✓ |
|
✓ |
✓ |
|
|
|
|
|
roster.view |
✓ |
|
✓ |
✓ |
✓ |
|
✓ |
|
|
roster.view_own |
✓ |
|
|
|
|
✓ |
|
|
|
shift_assignments.override_certification |
✓ |
|
✓ |
✓ |
|
|
|
|
|
Attendance & reconciliation
| Permission |
SA |
HRA |
PLN |
MGR |
SUP |
EMP |
VWR |
HRD |
COO |
attendance.capture |
✓ |
|
|
|
✓ |
|
|
|
|
attendance.edit |
✓ |
✓ |
✓ |
|
|
|
|
✓ |
✓ |
attendance.import |
✓ |
✓ |
✓ |
|
|
|
|
✓ |
✓ |
attendance.review |
✓ |
|
|
✓ |
|
|
|
|
✓ |
attendance.validate |
✓ |
|
|
✓ |
✓ |
|
|
|
|
attendance.view.all |
✓ |
✓ |
✓ |
✓ |
|
|
|
✓ |
✓ |
attendance.view.own |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
attendance.view.scoped |
✓ |
|
|
|
✓ |
|
✓ |
|
|
attendance_status.config |
✓ |
✓ |
|
|
|
|
|
✓ |
|
attendance_status.view |
✓ |
✓ |
✓ |
✓ |
✓ |
|
✓ |
✓ |
✓ |
reconciliation.validate |
✓ |
|
|
✓ |
✓ |
|
|
|
✓ |
reconciliation.view |
✓ |
✓ |
✓ |
✓ |
✓ |
|
|
✓ |
✓ |
Leave
| Permission |
SA |
HRA |
PLN |
MGR |
SUP |
EMP |
VWR |
HRD |
COO |
leave.approve |
✓ |
|
|
✓ |
|
|
|
|
|
leave.config |
✓ |
✓ |
|
|
|
|
|
|
|
leave.request |
✓ |
|
|
|
|
✓ |
|
|
|
leave.view |
✓ |
✓ |
✓ |
✓ |
✓ |
|
✓ |
|
|
leave_request.approve |
✓ |
✓ |
|
✓ |
✓ |
|
|
|
|
leave_request.submit |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
|
|
|
leave_request.view_all |
✓ |
✓ |
|
✓ |
✓ |
|
|
|
|
leave_request.view_own |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
|
|
|
Cross-pool, overtime & early-release
| Permission |
SA |
HRA |
PLN |
MGR |
SUP |
EMP |
VWR |
HRD |
COO |
cross_pool.approve |
✓ |
|
|
✓ |
|
|
|
|
|
cross_pool.request |
✓ |
|
✓ |
|
|
|
|
|
|
early_release.approve |
✓ |
|
|
✓ |
|
|
|
|
|
early_release.submit |
✓ |
|
|
|
✓ |
|
|
|
|
ot.approve |
✓ |
|
|
✓ |
|
|
|
|
|
Employees, skills & certifications
| Permission |
SA |
HRA |
PLN |
MGR |
SUP |
EMP |
VWR |
HRD |
COO |
cert.create |
✓ |
✓ |
|
|
|
|
|
|
|
cert.edit |
✓ |
✓ |
|
|
|
|
|
|
|
cert.view |
✓ |
✓ |
✓ |
✓ |
|
|
✓ |
|
|
certifications.manage |
✓ |
✓ |
✓ |
|
|
|
|
|
|
certifications.read |
✓ |
✓ |
✓ |
✓ |
✓ |
|
✓ |
|
|
employee.create |
✓ |
✓ |
|
|
|
|
|
|
|
employee.delete |
✓ |
✓ |
|
|
|
|
|
|
|
employee.edit |
✓ |
✓ |
|
|
|
|
|
|
|
employee.import |
✓ |
✓ |
|
|
|
|
|
|
|
employee.view |
✓ |
✓ |
✓ |
✓ |
✓ |
|
✓ |
|
|
employee_group.read |
✓ |
✓ |
✓ |
✓ |
✓ |
|
|
|
|
employee_group.write |
✓ |
✓ |
|
✓ |
|
|
|
|
|
grade.config |
✓ |
✓ |
✓ |
|
|
|
|
|
|
grade.view |
✓ |
✓ |
✓ |
✓ |
✓ |
|
✓ |
|
|
skill.assign |
✓ |
✓ |
|
|
|
|
|
|
|
skill.config |
✓ |
✓ |
✓ |
|
|
|
|
|
|
skill.create |
✓ |
✓ |
|
|
|
|
|
|
|
skill.delete |
✓ |
✓ |
|
|
|
|
|
|
|
skill.edit |
✓ |
✓ |
|
|
|
|
|
|
|
skill.view |
✓ |
✓ |
✓ |
✓ |
✓ |
|
✓ |
|
|
Pools
| Permission |
SA |
HRA |
PLN |
MGR |
SUP |
EMP |
VWR |
HRD |
COO |
pool.read |
✓ |
✓ |
✓ |
✓ |
✓ |
|
|
|
|
pool.write |
✓ |
✓ |
|
✓ |
|
|
|
|
|
pool_lending_rule.read |
✓ |
✓ |
✓ |
✓ |
✓ |
|
|
|
|
pool_lending_rule.write |
✓ |
✓ |
|
✓ |
|
|
|
|
|
Calendars, shifts & holidays
| Permission |
SA |
HRA |
PLN |
MGR |
SUP |
EMP |
VWR |
HRD |
COO |
calendar.config |
✓ |
✓ |
|
|
|
|
|
|
|
calendar.view |
✓ |
✓ |
✓ |
✓ |
✓ |
|
✓ |
|
|
holiday.config |
✓ |
✓ |
✓ |
|
|
|
|
|
|
holiday.view |
✓ |
✓ |
✓ |
✓ |
✓ |
|
✓ |
|
|
shift_pattern.config |
✓ |
✓ |
✓ |
|
|
|
|
|
|
shift_pattern.view |
✓ |
✓ |
✓ |
✓ |
✓ |
|
✓ |
|
|
shift_template.config |
✓ |
✓ |
✓ |
|
|
|
|
|
|
shift_template.view |
✓ |
✓ |
✓ |
✓ |
✓ |
|
✓ |
|
|
Org reference data
| Permission |
SA |
HRA |
PLN |
MGR |
SUP |
EMP |
VWR |
HRD |
COO |
node_type.config |
✓ |
✓ |
✓ |
|
|
|
|
|
|
node_type.view |
✓ |
✓ |
✓ |
✓ |
✓ |
|
✓ |
|
|
terminal.config |
✓ |
✓ |
✓ |
|
|
|
|
|
|
terminal.view |
✓ |
✓ |
✓ |
✓ |
✓ |
|
✓ |
|
|
Imports
| Permission |
SA |
HRA |
PLN |
MGR |
SUP |
EMP |
VWR |
HRD |
COO |
imports.run |
✓ |
✓ |
✓ |
|
|
|
|
|
|
imports.view_history |
✓ |
✓ |
|
|
|
|
|
|
|
Dashboards & self-service
| Permission |
SA |
HRA |
PLN |
MGR |
SUP |
EMP |
VWR |
HRD |
COO |
dashboard.view |
✓ |
✓ |
✓ |
✓ |
✓ |
|
✓ |
|
|
dept_dashboard.view |
✓ |
|
|
✓ |
✓ |
|
|
|
|
profile.view_own |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
|
|
مزالق / قيود
allocation_rule.write هو SYS_ADMIN + HR_ADMIN فقط. يستطيع PLANNER تشغيل المحرّك (allocation_run.execute) لكنه لا يستطيع تحرير مجموعات القواعد. افتراض خاطئ شائع.
allocation_run.debug هو SYS_ADMIN فقط — يبوّب هذا تفصيل سبب عدم الأهلية في جولة (الاكتشاف F6). لا يستطيع المخطّطون رؤية سبب استبعاد مرشَّح دونه.
- للإجازة أسلوبا تبويب. سلسلة أحدث (
leave_request.submit / leave_request.approve) وبوّابة قديمة (leave.approve = SYS_ADMIN + MANAGER) تتعايشان. افحص أيهما تستخدم نقطة النهاية.
HR_DIRECTOR وCOO ضيّقان، لا أعليان-من-كل-شيء. رغم الأسماء التنفيذية، يحمل كلٌّ منهما 7–8 صلاحيات حضور/تسوية فقط — لا مجموعة فوقية لـ HR_ADMIN.
- هذه بذرة BU-1. الأدوار محصورة بالمستأجر، فيمكن من حيث المبدأ تحرير أدوار وحدة عمل أخرى بعيدًا عن هذه البذرة؛ هذه المصفوفة هي الافتراضي المُسلَّم.
SYS_ADMIN يبلغ مجموعه 97، لكن 96 فقط مُسمّاة هنا — انظر ملاحظة الاكتمال أعلاه. لا تعامل الصفوف المُسمّاة كأنها الكتالوج بأكمله (1 رمز SYS_ADMIN-only يبقى غير مُعدَّد).
حالة البناء
Available — مخطط RBAC، وبذرة الأدوار التسعة، وكتالوج الصلاحيات الـ 97 كلها تُسلَّم وتُنفَّذ في وقت التشغيل (الورقة 01 §build-status). المصفوفة استخراج حيّ من الجداول المزروعة (Sprint/RBAC_RolePermission_Extract.md، 2026-06-10).
ذات صلة
- المصادقة وRBAC — كيف تُنفَّذ هذه المنح في وقت التشغيل.
- الأدوار والصلاحيات — الملخّص المُوجَّه للمستخدم.
- المصدر:
Sprint/RBAC_RolePermission_Extract.md؛ ورقة الحقائق 01 (الأساس).