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

المشكلة التي تحلها مصفوفة الأذونات
الأداة الداخلية هي البرمجية التي يستخدمها فريقك لتسيير العمل اليومي. فكر في لوحات المشرف، لوحات العمليات، وحدات دعم العملاء، شاشات مراجعة مالية، والتطبيقات الصغيرة التي تساعد الناس على الموافقة على أعمال، تصحيح بيانات، أو الرد على العملاء.
تتعامل هذه الأدوات مع بيانات حساسة وإجراءات قوية. قد يحتاج موظف دعم لرؤية ملف عميل لكنه لا ينبغي أن يرى تفاصيل الدفع كاملة. قد يحتاج موظف المالية لتصدير فواتير لكنه لا يَجوز له تعديل إعدادات الحساب. قد يقوم قائد العمليات بكليهما، لكن فقط ضمن منطقته.
تتعقد الأذونات بسرعة لأن الأدوات الداخلية تنمو على طبقات. تظهر أدوار جديدة، تتفرع أدوار قديمة، وتتراكم الاستثناءات المؤقتة: “السماح لماريا برد مبلغ”، “منع المقاولين من الملاحظات”، “يسمح لقادة الفريق بالموافقة حتى 500$ فقط”. عندما تبقى القواعد في رؤوس الناس (أو مبعثرة في تذاكر)، تنفصل الشاشات ونقاط نهاية الـ API عن بعضها وتظهر فجوات أمنية.
تصميم مصفوفة الأذونات يصلح هذا عن طريق إنشاء خريطة واحدة مشتركة لمن يمكنه فعل ماذا، على أي بيانات، وتحت أي قيود. تصبح مصدر الحقيقة لقرارات الواجهة (أي شاشات، أزرار، وحقول تظهر) وقرارات الخادم (ما يسمح به السيرفر فعليًا، حتى لو حاول أحد تجاوز الواجهة).
ليست المصفوفة مخصصة للمطوّرين فقط. المصفوفة الجيدة هي وثيقة عمل يتفق عليها المنتج، والعمليات، والبنّاءون معًا. حتى لو بنيت باستخدام منصة no-code مثل AppMaster، تظل المصفوفة أساسية: فهي توجه كيفية إعداد الأدوار، تعريف الموارد، والحفاظ على اتساق الشاشات المرئية والنقاط النهائية المولّدة.
مصفوفة بسيطة تساعدك على:
- جعل القواعد صريحة قبل البناء
- تقليل فوضى "الحالات الخاصة"
- إبقاء أذونات الواجهة وواجهة البرمجة متزامنة
- مراجعة تغييرات الوصول بدون تخمين
المصطلحات الأساسية: الأدوار، الموارد، الإجراءات، النطاقات، الاستثناءات
يبدأ تصميم مصفوفة الأذونات الجيد بكلمات مشتركة. إذا استخدم فريقك هذه المصطلحات بنفس المعنى، ستتجنب قواعد معقدة لاحقًا.
دور (role) هو مجموعة وظائفية من الناس الذين يحتاجون عادةً لنفس الوصول. فكر في Support، Finance، Ops، أو Manager. يجب أن تصف الأدوار ما يفعله الشخص عادةً في أيامه، لا مدى رتبته. يمكن لشخص أن يمتلك أكثر من دور، لكن احرص على أن يكون ذلك نادرًا.
المورد (resource) هو الشيء الذي تحميه. في الأدوات الداخلية، الموارد الشائعة هي العملاء، التذاكر، الفواتير، التقارير، التكاملات، والإعدادات. سمّ الموارد بأسماء اسمية. هذا يساعد عندما تحول القواعد لاحقًا إلى شاشات ونقاط نهاية.
الإجراء (action) هو ما يمكن للشخص فعله بمورد. حافظ على أفعال متسقة حتى تبقى المصفوفة قابلة للقراءة. تشمل الأفعال النموذجية:
- view
- create
- edit
- delete
- approve
- export
النطاق (scope) يجيب على "أي السجلات؟" دون إنشاء أدوار إضافية. النطاقات غالبًا ما تكون الفرق بين وصول آمن وغير آمن. النطاقات الشائعة:
- own (السجلات التي أنشأتها أو تم تعيينها لك)
- team (مجموعة عملك)
- region (منطقتك)
- all (الكل)
الاستثناء (exception) هو تجاوز يكسر قواعد الدور والنطاق الاعتيادية. قد تكون الاستثناءات مؤقتة (لتغطية وردية)، مخصّصة لمستخدم معين (متخصص يحتاج إجراء إضافي)، أو محددة لسجل (حالة عميل VIP مقيدة). عامل الاستثناءات كدين متحكم به: سجّل من وافق عليها، لماذا وُجدت، ومتى تنتهي.
مثال: قد يُسمح لموظف دعم "بمشاهدة التذاكر" بنطاق "الفريق"، لكنه يحصل على استثناء قصير المدى لـ"تصدير التذاكر" لحالة مراجعة حادثة واحدة. في أداة مبنية بـAppMaster، يصبح هذا النوع من القواعد أسهل للصيانة إذا سمّيت الأدوار والموارد والإجراءات والنطاقات بتناسق منذ البداية.
قرارات يجب اتخاذها قبل رسم المصفوفة
ابدأ بالاتفاق على ما تحميه فعليًا. ادرج مجالات الأداة الداخلية كموارد، لا كشاشات. قد تعرض شاشة واحدة "الطلبات"، "الاستردادات" و"العملاء" معًا، لكن كلٌ منها مورد مختلف بمخاطر مختلفة.
قبل كتابة أي إذن، نوّع أفعالك القياسية. فروق صغيرة في الكلمات تخلق قواعد مكررة لاحقًا (edit vs update، remove vs delete، view vs read). اختر مجموعة قصيرة ومشتركة والتزم بها عبر كل مورد. لأغلب الأدوات الداخلية، مجموعة بسيطة مثل view, create, update, delete, approve, export تكفي.
النطاقات هي القرار التالي، ويجب أن تتطابق مع طريقة تفكير شركتك بالفعل. الكثير من النطاقات يجعل المصفوفة غير قابلة للقراءة؛ القليل جدًا يولّد استثناءات دائمة. استهدف مجموعة صغيرة تلائم هيكل منظمتك، مثل:
- own (السجلات التي أنشأتها)
- team (سجلات فريقك)
- location (فرع أو منطقة)
- all (الكل)
- none (بدون وصول)
تحتاج أيضًا إلى قاعدة واضحة لـ"لا". قرر ما هو ممنوع صراحةً مقابل ما يُرفض ضمنيًا. الرفض الضمني (أي شيء غير مدرج يُرفض) أكثر أمانًا وبساطة. المنع الصريح مفيد عندما يكون لديك وصول واسع لكن تريد حظر إجراء محدد، مثل "المالية يمكنها الوصول لكل الفواتير باستثناء الحذف".
أخيرًا، علّم الإجراءات الحساسة للامتثال مبكرًا، قبل أن تُدفن في الشبكة. التصديرات، الحذف، المدفوعات، تغيير الأدوار، والوصول للبيانات الشخصية تستحق اهتمامًا إضافيًا، وتسجيلًا، وغالبًا خطوة موافقة. على سبيل المثال، قد تسمح لقائد الدعم بتحديث ملف العميل، لكن تطلب موافقة مالية قبل إنشاء أو تصدير دفعة.
إذا بنيت في AppMaster، تُطابِق هذه القرارات بوضوح مع نقاط نهاية الخادم ومنطق Business Process لاحقًا، لكن يجب أن تكون المصفوفة واضحة أولًا.
خطوة بخطوة: بناء مصفوفة الأذونات من الصفر
ابدأ بالعمل الذي يقوم به الناس، لا بالشاشات التي تخطط لبنائها. إذا بدأت بالشاشات، ستنسخ واجهة اليوم وتفقد القواعد الحقيقية (مثل من يمكنه الموافقة على استرداد، أو من يمكنه تعديل سجل العميل بعد إغلاقه).
طريقة بسيطة لتصميم المصفوفة هي معاملتها كخريطة من المهام إلى الوصول، ثم تحويلها إلى تطبيق لاحقًا.
ترتيب عملي للبناء
-
ادرج مهام العمل بلغة بسيطة. مثال: "إصدار استرداد"، "تغيير بريد إلكتروني لعميل"، "تصدير فواتير الشهر الماضي". اجعلها قصيرة وحقيقية.
-
حوّل المهام إلى موارد وإجراءات. الموارد أسماء اسمية (Invoice, Ticket, Customer)، الإجراءات أفعال (view, create, edit, approve, export). عيّن مالكًا لكل مورد: شخص واحد يشرح الحالات الطرفية ويقول "نعم، هذا صحيح".
-
عرف الأدوار بناءً على فرق مستقرة. استخدم مجموعات مثل Support, Finance, Operations, Team Lead. تجنّب الألقاب التي تتغير كثيرًا (Senior, Junior) إلا إذا كانت تغيّر الوصول فعليًا.
-
املأ المصفوفة بالحد الأدنى من الوصول الذي يحتاجه كل دور لإكمال المهام. إذا كان الدعم يحتاج فقط لمشاهدة الفواتير للرد على استفسارات، فلا تعطه "تصدير" افتراضيًا. يمكنك إضافة وصول لاحقًا، لكن إزالته بعد أن يعتاد الناس عليه يكسر العادات.
-
أضف النطاقات فقط حيث تهم. بدلًا من إذن "edit" عام، أشر إلى نطاقات مثل "edit own"، "edit assigned"، أو "edit all". هذا يبقي القواعد واضحة دون خلق 50 دورًا.
سجِّل الاستثناءات في جدول منفصل، لا كملاحظات مبعثرة داخل المصفوفة. كل استثناء يحتاج حقل سبب واضح (امتثال، مخاطر احتيال، فصل الواجبات) ومالك واحد يوافق عليه.
عندما يتم ذلك، تسهل أدوات مثل AppMaster تحويل المصفوفة إلى نقاط نهاية محمية وشاشات إدارة دون التخمين أثناء البناء.
كيف تُنظم المصفوفة لتظل قابلة للاستخدام
مصفوفة الأذونات مفيدة فقط إذا استطاع الناس قراءتها بسرعة. إذا تحولت إلى جدار ضخم من الخلايا، يتوقف الفريق عن استخدامها وتنفصل الأذونات عما قصدته.
ابدأ بتقسيم المصفوفة حسب المجال. بدلًا من ورقة واحدة لكل شيء، استخدم تبويبًا لكل منطقة عمل، مثل Customers, Billing, Content. معظم الأدوار تتعامل مع مجالات قليلة فقط، لذا هذا يسرّع المراجعات ويقلل التغييرات العرضية.
استخدم نمط تسمية يبقى ثابتًا عبر التبويبات. صيغة بسيطة مثل Resource.Action.Scope تجعل معنى كل إذن واضحًا وتمنع التكرارات التي تبدو مختلفة لكنها تؤدي نفس الشيء. على سبيل المثال، Invoice.Approve.Department يقرأ بنفس الطريقة مثل Customer.Edit.Own.
عند مواجهة حالة طرفية، قاوم الرغبة في إنشاء دور جديد. أضف ملاحظة قصيرة بجانب الخلية تصف الاستثناء ومتى ينطبق. مثال: يمكن للدعم مشاهدة الفواتير فقط بعد تحقق العميل من هويته. يمكن للملاحظة أيضًا الإشارة إلى خطوة واجهة إضافية دون تغيير نموذج الدور.
علّم الأذونات عالية المخاطر لتبرز أثناء المراجعات. هذه الأفعال مثل الاستردادات، الموافقات، التصديرات، وحذف البيانات. علّم الخلايا واكتب الفحص الإضافي المطلوب، مثل موافقة شخصين أو تأكيد المدير فقط.
للحفاظ على المصفوفة قابلة للصيانة عبر الزمن، وّثّقها كأثر حقيقي:
- v1, v2، إلخ مع التاريخ
- مالك (شخص واحد مسؤول)
- ملخص تغيير قصير
- ما الذي أدى إلى التغيير (تدفق جديد، نتيجة مراجعة)
عندما تستقر المصفوفة، يصبح بناء الشاشات والنقاط النهائية في أدوات مثل AppMaster أسهل بكثير، لأن كل زر ونداء API يرتبط باسم إذن واضح.
تحويل المصفوفة إلى شاشات ونقاط نهاية
تصميم المصفوفة مفيد فقط إذا أصبح قواعد فعلية في مكانين: API وواجهة المستخدم. ابدأ بمعاملة كل مورد في المصفوفة (مثل Tickets, Invoices, Users) كمجموعة نقاط نهاية. حافظ على توافق الأفعال مع أفعال المصفوفة: view, create, edit, approve, export, delete.
على جانب الـ API، طبق الأذونات على كل طلب. فحوصات الواجهة مفيدة للوضوح، لكنها ليست أمنًا. زر مخفي لا يمنع نداء API مباشر.
طريقة بسيطة لترجمة المصفوفة إلى أذونات API هي تسمية الأذونات بشكل متسق وربطها عند النقطة التي يحدث فيها الفعل:
- tickets:view, tickets:edit, tickets:export
- invoices:view, invoices:approve, invoices:delete
- users:view, users:invite
ثم استخدم نفس أسماء الأذونات لقيود الواجهة: عناصر القوائم، وصول الصفحات، الأزرار، وحتى الحقول. على سبيل المثال، قد يرى موظف الدعم قائمة التذاكر ويفتح تذكرة، لكن حقل "Refund" يكون للقراءة فقط ما لم يكن يمتلك أيضًا invoices:approve.
كن حذرًا مع الوصول للقوائم مقابل التفاصيل. غالبًا ما يحتاج الفريق إلى "رؤية أن شيئًا ما موجود" دون رؤية السجل نفسه. هذا يعني أنك قد تسمح بنتائج القوائم بأعمدة محدودة، لكن تمنع فتح العرض التفصيلي ما لم يمتلك المستخدم إذنًا للتفاصيل (أو يمر بفحص نطاق مثل "معين لي"). قرر هذا مبكرًا حتى لا تبني شاشة قائمة تسرب بيانات حساسة.
أخيرًا، اربط تسجيل المراجعة بالأفعال المهمة. التصدير، الحذف، الموافقة، تغييرات الأدوار، وتنزيل البيانات يجب أن تخلق أحداث مراجعة تحتوي من، ماذا، متى، والسجل المستهدف. إذا بنيت في AppMaster، يمكنك عكس هذا في منطق النقاط النهائية وBusiness Process بحيث يفعل نفس القاعدة الإجراء وسجل المراجعة.
أخطاء شائعة وفخاخ
أسرع طريقة لكسر تصميم المصفوفة هي نمذجة واجهة المستخدم بدلًا من الأعمال. قد تعرض شاشة عدة أشياء، ونفس الشيء قد يظهر في شاشات متعددة. إذا تعاملت مع كل شاشة كمورد منفصل، ستكرر القواعد، تفوت الحالات الطرفية، وتدخل في نقاشات حول التسمية بدلًا من الوصول.
فخ شائع آخر هو تزايد الأدوار. يضيف الفرق أدوارًا (Support Level 1, Support Level 2, Support Manager، إلخ) بينما مجموعة أصغر من الأدوار مع نطاق واضح كانت ستحقق المطلوب. النطاقات مثل "فريق خاص بي"، "المنطقة المعينة"، أو "الحسابات التي أديرها" تشرح الفرق عادةً أفضل من دور جديد.
أخطاء تظهر عمليًا:
- تعريف فقط "view" و"edit" ثم نسيان أفعال مثل export، bulk edit، refund، impersonate، أو "change owner".
- استخدام الاستثناءات كحل طويل الأمد. تمنح المنح المؤقتة بسرعة تصبح دائمة وتخفي نموذج دور معطوب.
- إخفاء الأزرار في الواجهة وافتراض أن النظام آمن. على الـ API لا بد أن يُرفض الطلب حتى لو وجد المستخدم نقطة النهاية.
- عدم تقرير ما يحدث عندما يتغير نطاق شخص، مثل انتقال فريق أو تغيير منطقة. يجب أن تتحدث الأذونات بشكل متوقع، لا تتآكل.
- التعامل مع "admin" كحساب غير محدود بدون ضوابط. حتى الأدمن عادةً يحتاج فواصل، مثل "يمكن إدارة المستخدمين" لكن "لا يمكن الموافقة على المدفوعات".
الاستثناءات تستحق حذرًا خاصًا. هي مفيدة لحالات مؤقتة، لكن يجب أن تنتهي أو تراجع. إذا استمرت الاستثناءات في النمو، فهذه علامة على أن الأدوار أو النطاقات غير مخططة بشكل جيد.
مثال سريع: في أداة دعم ومالية، يمكن للدعم مشاهدة ملفات العملاء وإنشاء تذاكر، لكن المالية يمكنها تصدير الفواتير وإصدار الاستردادات. إذا أمّنت الصفحات فقط، قد يستدعي موظف دعم نقطة نهاية التصدير مباشرة. سواء بنيت بشيفرة مخصصة أو بمنصة مثل AppMaster التي تولّد نقاط نهاية خلفية، يجب أن تعيش القاعدة على جانب الخادم، لا في الواجهة فقط.
قائمة فحص سريعة قبل البدء بالبناء
مصفوفة الأذونات مفيدة فقط إذا تحولت إلى قواعد واضحة وقابلة للتنفيذ. قبل إنشاء أول شاشة أو نقطة نهاية، مرّ على قائمة التحقق هذه. تساعدك على تجنب إعدادات "آمنة تقريبًا" التي تنهار بمجرد ظهور دور جديد أو حالة طرفية.
ابنِ القواعد، ثم ابنِ الواجهة
ابدأ بعقلية الرفض الافتراضي: أي شيء غير مسموح صراحةً يكون محظورًا. هذا الأساس الأكثر أمانًا ويمنع الوصول المفاجئ عند إضافة ميزات لاحقًا.
تأكد من وجود مصدر واحد للحقيقة للأذونات. سواء كان مستندًا، جدولًا في قاعدة بياناتك، أو تكوين no-code، يجب أن يعرف الفريق مكان القواعد الحالية. إذا كانت الجدولية تقول شيئًا والتطبيق يقول شيئًا آخر، ستصدر أخطاء.
إليك قائمة تحقق مضغوطة قبل البناء:
- الرفض الافتراضي مطبّق في كل مكان (أزرار الواجهة، نقاط نهاية API، التصديرات، مهام الخلفية).
- لكل إجراء تعريف نطاق واضح (سجل خاص، فريق، منطقة، كل، أو مجموعة مسمّاة).
- قدرات الأدمن مفصولة عن الإجراءات التجارية (إدارة الأدوار ليست نفسها "الموافقة على استرداد").
- الإجراءات الحساسة تتطلب ضوابط أقوى (خطوات موافقة، تسجيل، وإنذار عند نشاط غير معتاد).
- للاستثناءات مالك وتاريخ انتهاء، حتى لا تصبح "وصولًا مؤقتًا" دائمًا.
بعد ذلك، اختبر القواعد بسيناريو واقعي واحد. مثال: "يمكن لموظف الدعم عرض طلب وإضافة ملاحظة لمنطقته، لكنه لا يمكنه تعديل الأسعار أو إصدار استرداد. يمكن للمالية إصدار استرداد بعد موافقة المدير، ويتم تسجيل كل استرداد." إذا لم تستطع شرحه في جملة أو اثنتين، فلا تزال النطاقات والاستثناءات غير واضحة.
إذا بنيت في AppMaster، عامل هذه البنود كمطلوبات لكل من شاشاتك ومنطق الأعمال، لا كتنظيم للواجهة فقط. الأزرار قد تخفي الإجراءات، لكن قواعد الخلفية فقط هي التي تفرضها فعليًا.
سيناريو نموذجي: أداة داخلية للدعم والمالية
تخيل شركة متوسطة الحجم بأداة داخلية يستخدمها الدعم والمالية. نفس قاعدة البيانات تحتوي على Customers, Tickets, Refunds, Payouts، ومنطقة إعدادات صغيرة (قوالب وتكاملات). في هذا النوع من التطبيقات، فحص تسجيل الدخول فقط لا يكفي.
إليك الأدوار التي يقررون البدء بها:
- Support Agent: يعمل على التذاكر في قائمة واحدة
- Support Lead: يساعد عبر القوائم ويوافق على إجراءات معينة
- Finance: يتعامل مع الأمور المالية
- Ops Admin: يملك التحكم بإدارة الوصول وإعدادات النظام
تصميم المصفوفة العملي يبدأ بكتابة الأفعال لكل مورد، ثم تضييقها بالنطاق.
بالنسبة للتذاكر، يمكن لموظفي الدعم مشاهدة وتحديث حالة التذكرة فقط للتذاكر في قائمتهم المخصصة. يمكنهم إضافة ملاحظات، لكن لا يمكنهم تغيير مالك التذكرة. يمكن لقادة الدعم فعل كل ما يفعله الموظف، بالإضافة لإعادة تعيين التذاكر داخل منطقتهم.
بالنسبة للاستردادات، يمكن للمالية إنشاء والموافقة على الاستردادات، لكن فقط حتى مبلغ محدد. يمكن للدعم إنشاء طلب استرداد، لكن لا يملك الموافقة. الموافقة على الاسترداد هي إجراء منفصل عن الإنشاء، فتظل مرئية في المصفوفة ولا تُمنح عن طريق الخطأ.
بالنسبة للمدفوعات والإعدادات، تبقى الأداة صارمة: فقط المالية تستطيع رؤية المدفوعات، وفقط Ops Admin يمكنه تغيير الإعدادات. لا يستطيع الدعم حتى رؤية هذه الشاشات، مما يقلل الإغراء ويخفف الأخطاء.
أضف الآن قاعدة استثناء: يغطي قائد دعم منطقة أخرى لمدة أسبوعين. بدلًا من منحه دورًا واسعًا مثل Ops Admin، يمكن للمصفوفة أن تتضمن توسع نطاق مؤقت (Support Lead + Region B، ينتهي في تاريخ محدد). هذا الاستثناء الواحد أكثر أمانًا من نسخ الصلاحيات عبر أدوار.
إذا بنيت هذا في AppMaster، يمكن للمصفوفة نفسها أن توجه ما تظهره الواجهات وما تسمح به نقاط النهاية في الخادم، فلا يمكن لأحد الوصول إلى المدفوعات أو الإعدادات بمجرد تخمين نداء API.
كيف تختبر وتحافظ على الأذونات عبر الزمن
تفشل الأذونات عادةً بطرق صغيرة ومملة: شاشة تنسى إخفاء زر، نقطة نهاية تتخطى فحصًا، قاعدة نطاق تطابق على نحو واسع جدًا. يصبح تصميم المصفوفة أكثر فائدة عندما تحوله إلى اختبارات متكررة وروتين صيانة بسيط.
ابدأ بمجموعة صغيرة من مستخدمي الاختبار. لست بحاجة لعشرات الحسابات. أنشئ مستخدمًا واحدًا لكل دور، بالإضافة إلى مستخدم "حافيّة" لكل استثناء شائع (مثل "موظف دعم مع تصريح الموافقة على الاسترداد"). احتفظ بهذه الحسابات ثابتة حتى يعيد الفريق استخدامها كل سباق تطوير.
ثم حوّل المصفوفة إلى حالات اختبار. لكل قاعدة اكتب مسارًا "مسموحًا" ومسارًا "مرفوضًا". اجعل المسار المرفوض محددًا حتى لا يتجاهله الناس.
- الدور: Support Agent. الإجراء: Refund. المتوقع: مرفوض مع رسالة واضحة، لا تغيير في البيانات.
- الدور: Finance. الإجراء: Refund. المتوقع: مسموح، ينشأ سجل استرداد، ويسجل الفاعل والسبب.
- الدور: Manager. الإجراء: View tickets. النطاق: الفريق فقط. المتوقع: يمكنه مشاهدة تذاكر الفريق، لا يمكنه فتح تذاكر فرق أخرى.
اختبر نفس القاعدة مرتين: في الواجهة وفي الـ API. إذا منعت الواجهة إجراءً لكن الـ API أتاحه، يمكن لأحد تجاوز الشاشة. إذا بنيت في أداة مثل AppMaster، تحقّق أن منطق الواجهة ونقاط نهاية الخلفية يطبقان نفس القاعدة.
تحتاج النطاقات لبيانات حقيقية للاختبار. أنشئ سجلات اختبار تختلف بالملكية، الفريق، والمنطقة. تحقق من أنه لا يمكنك "تخمين" معرف خارج نطاقك والوصول إليه.
أخيرًا، قرر ماذا تسجّل للأفعال الحساسة (الاستردادات، التصديرات، تغييرات الأدوار). سجِّل من فعل ماذا، ومتى، ومن أين. راجع السجلات دوريًا، وأضف قاعدة إنذار للأفعال النادرة مثل تعديل الأذونات أو التصديرات الجماعية.
الخطوات التالية: الانتقال من المصفوفة إلى أداة داخلية عاملة
عامل مصفوفة الأذونات كخطة بناء، لا كوثيقة تُؤرشف. أسرع طريقة لجني القيمة هي تأكيد الأساسيات مع أصحاب البيانات والعمليات.
ابدأ بورشة قصيرة (30 دقيقة تكفي) مع ممثل واحد عن كل دور بالإضافة ل"مالكي الموارد" (الأشخاص المسؤولين عن العملاء، الفواتير، المدفوعات، التذاكر، إلخ). استعرض الأدوار، الموارد، الأفعال، والنطاقات، وحدد أي "حالات خاصة" تبدو كاستثناءات. إذا بدا الاستثناء شائعًا، فقد يكون نقصًا في النطاقات.
ثم صيغ مصفوفة v1 وراجعها مع مالكي الموارد. احفظها عملية: "هل يمكن للدعم رؤية الفواتير؟" "هل يمكن للمالية تعديل تفاصيل العميل؟" إذا تردد أحدهم، سجّل القاعدة بلغة بسيطة أولًا ثم صيّنها لاحقًا.
بمجرد الاتفاق على v1، ابنِ نطاق واحد من البداية للنهاية قبل التوسع. اختر شريحة رقيقة تمس البيانات والمنطق والواجهة (مثال: نظام التذاكر، أو موافقات الفواتير). يجب أن تكون قادرًا على الإجابة: من يراه، من يغيره، وماذا يحدث عندما يحاولون.
إذا كنت تستخدم AppMaster، اطابق المصفوفة مع أجزاء المنتج قبل التوليد:
- Data Designer: طابق الموارد مع الكيانات (الجداول) والحقول الأساسية التي تؤثر على النطاق (مثل team_id, region_id)
- Business Processes: طبق القواعد حيث تحدث التغييرات (create, update, approve, export)
- قواعد ظهور الواجهة: اخفِ الإجراءات التي لا يمكن للمستخدم تنفيذها، وبيّن رسائل "لماذا" عند الرفض
- Endpoints: افتح فقط ما يحتاجه كل دور، واجعل عمليات الأدمن منفصلة
مثال بسيط: ابنِ تدفق "طلب استرداد" مع دورين (Support ينشئ، Finance يوافق). عندما يعمل ذلك بسلاسة، أضف الحالات الطرفية مثل "يمكن للدعم إلغاء الطلب خلال 30 دقيقة فقط".
جرّب أداة داخلية صغيرة في AppMaster للتحقق من الأدوار والتدفقات مبكرًا، ثم كرر التعديلات بناءً على المصفوفة. الهدف هو التقاط سوء الفهم قبل أن تتكوّن 20 شاشة وكومة من إصلاحات الأذونات.


