المستخدمون والأدوار والصلاحياتUsers, roles and permissions
من يرى ماذا ويفعل ماذا: تسعة أدوار، صلاحيات على مستوى نوع المستند ثم على مستوى السجل (ملفات فريقي)، ثم على مستوى الحقل، مع حاجز المعلومات والتحقق الثنائي. هذه الميزة شرط لكل ما بعدها.
بطاقة الميزة
| البند | القيمة |
|---|---|
| 1. اسم الميزة | المستخدمون والأدوار والصلاحيات — Users, roles and permissions |
| 2. المعرّف (Feature ID) | B01 |
| 3. مصدر المتطلب | دليل المطور ص3، 12، 15 (الجانب التقني 2)، الوثيقة المعمارية: الأدوار والصلاحيات، دليل الميزة 1 ص14-15، تقرير التدقيق AUD-04 |
| 4. تصنيف المحتوى | متطلب وارد في الملفات الأدوار وطبقتا الصلاحيات وحاجز المعلومات والتحقق الثنائي. اقتراح هندسي جدول الصلاحيات الموحد هنا جامع للوثائق الثلاث. |
| الوحدة | المنصة والصلاحيات |
| الأدوار المعنية | شريك، مدير نظام، محامٍ، متدرب، مستشار، سكرتارية، محاسب، موكّل |
| درجة الخطورة | حرجة |
| حالة الاعتماد | معتمد في الوثائق |
| المنصات المرتبطة | نفاذ — النفاذ الوطني الموحد |
5الهدف التجاري والمشكلة التي تعالجها
معلومات القضايا سرّ مهني بين المحامي وموكّله؛ محامٍ يرى ملفًا ليس في فريقه خلل أمني، لا تفصيل واجهة (دليل الميزة 1 ص3). والمكتب بوصفه جهة تحكم مسؤول عن ألّا يصل إلى البيانات إلا من يحتاجها (دليل المطور ص14).
المشكلة: أنظمة الملفات المشتركة وجداول Excel لا تفرّق بين محامٍ وآخر، ولا تسجّل من اطّلع.
6المجال القانوني المرتبط للمطوّر غير المتخصص
المكتب يمثّل موكّلين قد يكونون خصومًا لموكّلين آخرين بعد سنوات. لذلك لا يكفي أن «يثق» المكتب بموظفيه: يجب أن يثبت النظام أن الوصول كان بقدر الحاجة. وحين يُقبل ملف بشروط بعد فحص تعارض، يُحجب محامٍ بعينه عنه بـحاجز معلومات.
ما يقرره المحامي: من يدخل فريق الملف. ما ينفذه ERPOS: منع الوصول خارج الفريق وتسجيل كل استثناء.
7المستخدمون والأدوار والصلاحيات
| الدور | الاسم البرمجي | يرى | يفعل | لا يرى أبدًا |
|---|---|---|---|---|
| الشريك المدير | Managing Partner | كل الملفات والتقارير المالية | يعتمد العقود والتسعير وقرارات التعارض والمذكرات، يعيد فتح الملفات ويؤرشفها | — |
| المحامي المرخّص | Lawyer | ملفات فريقه فقط | ينشئ ويعدّل ملفات فريقه، يسجّل الجلسات، يعتمد ساعاته | تكلفة ساعات زملائه، الملفات المحجوبة |
| المحامي المتدرب | Trainee Lawyer | الملفات المسندة إليه | يكتب مسودات لا تصل الموكّل دون اعتماد | الأتعاب |
| المستشار القانوني | Legal Consultant | ملفات فريقه والمكتبة | الاستشارات وصياغة العقود | الأتعاب |
| السكرتارية والاستقبال | Legal Assistant | التقويم والمواعيد والزوار والمستندات العامة لملفات فريقه | يجدول ويرفع المستندات | الأتعاب، موضوع الزيارة في شاشة الاستقبال |
| المحاسب | Accounts User + Legal Accountant | الفواتير والأمانات والقيود | الفوترة والتحصيل | محتوى المذكرات ومستندات القضية |
| الموكّل | Client Portal User | ملفاته فقط، والمستندات المشاركة معه | يطّلع ويدفع ويرفع المطلوب | الملاحظات الداخلية، المسودات، قيود الوقت، بيانات الأطراف الأخرى |
| مسؤول التعارض | Conflict Officer | تفاصيل نتائج الفحص | يراجع ويوصي | — |
| مدير النظام | System Manager | الإعدادات | إدارة المستخدمين والإعدادات | لا يُعطى لأي محامٍ أبدًا (دليل المطور ص15) |
المصدر: (دليل المطور ص3، 15) (الوثيقة المعمارية الأدوار والصلاحيات) (دليل الميزة 1 ص14). الأسماء البرمجية اقتراح هندسي: ثابتة بالإنجليزية والعرض بالعربية لأن الكود يعتمد الاسم الإنجليزي (دليل الميزة 1 ص11).
8شروط البدء والاعتماديات
موقع Frappe لكل مكتب مع ERPNext والتطبيق المخصص تعدد المكاتب والعزل.
سياسة كلمات المرور والتحقق الثنائي مفعّلة في System Settings قبل إنشاء أول مستخدم.
تعتمد عليها كل الميزات؛ وتعتمد هي على B03 ملف العمل القانوني لقاعدة الفريق.
9السيناريو الأساسي خطوة بخطوة
- مدير النظام ينشئ المستخدم بالبريد والجوال ويختار دورًا واحدًا رئيسيًا أو أكثر.
- المستخدم يفعّل التحقق الثنائي في أول دخول؛ لا يُسمح بالدخول دونه لموظفي المكتب (دليل المطور ص15).
- عند إضافة المستخدم إلى
teamفي ملف، يصبح الملف وكل ما تحته (جلسات، مستندات، مهل، ساعات) مرئيًا له تلقائيًا بالوراثة (دليل المطور ص15). - كل استعلام قائمة يمر بـ
permission_query_conditions، وكل فتح سجل يمر بـhas_permission، والنتيجتان متطابقتان (دليل الميزة 1 ص15). - الحقول ذات
permlevelالأعلى (أرقام الهويات، مبالغ الأتعاب) لا تظهر إلا للأدوار المخولة (دليل المطور ص15).
10السيناريوهات البديلة والاستثناءات
- ملف محجوب (
restricted = 1): لا يراه إلا المسمّون بالاسم. الدخول الاستثنائي يطلب سببًا مكتوبًا، ويُسجّل، ويُشعر المحامي المسؤول (دليل المطور ص15). - مستخدم في قائمة الحاجز وهو في الفريق: يُرفض في
has_permissionلأن الحاجز يتقدم على الفريق (الوثيقة المعمارية الأدوار والصلاحيات). - موظف غادر: يُعطَّل حسابه (لا يُحذف) فتبقى سجلاته باسمه؛ وتُلغى رموز أجهزته في الجوال (دليل المطور ص20).
- فشل الدخول المتكرر: قفل الحساب بعد عدد محاولات في الإعدادات، ومهلة خمول للجلسة (دليل المطور ص15).
- موظف دعم من مزوّد المنصة: لا يدخل إلا بإذن مؤقت من المكتب ينتهي تلقائيًا، ويُسجّل B42 عقود الخدمة ومستوى الخدمة ووصول الدعم.
11المدخلات والحقول
| الاسم العربي | الاسم البرمجي | النوع | إلزامي | التحقق | القيمة الافتراضية | مصدر البيانات |
|---|---|---|---|---|---|---|
| الحساب | user | Link → User | نعم | مستخدم مفعّل | — | إنشاء يدوي |
| الملف المحجوب | restricted | Check على Legal Matter | لا | — | 0 | قرار الشريك أو قبول تعارض بشروط |
| المسموح لهم بالاسم | allowed_users | Table MultiSelect → User | إن كان الملف محجوبًا | كل مستخدم مفعّل | — | الشريك |
| الممنوعون (الحاجز) | blocked_users | Table MultiSelect → User | لا | لا يتقاطع مع المسؤول عن الملف | — | قرار التعارض |
| سبب الدخول الاستثنائي | access_reason | Small Text في Matter Access Log | نعم عند الاستثناء | 20 حرفًا على الأقل | — | المستخدم |
| مستوى السرية | confidentiality | Select | نعم | سري / سري جدًا | سري | افتراضي لكل ملف (دليل المطور ص14) |
12المخرجات والإشعارات والسجلات والتقارير
- سجل دخول المستخدمين (جاهز في Frappe).
Matter Access Log: كل اطّلاع على ملف «سري جدًا» أو دخول استثنائي: المستخدم، الملف، السبب، الوقت، العنوان اقتراح هندسي (دليل المطور ص15).- إشعار فوري للمحامي المسؤول عند كل دخول استثنائي.
- تقرير شهري: الأدوار الممنوحة، الحسابات غير المستخدمة 90 يومًا، الدخولات الاستثنائية.
13قواعد العمل بصيغة قابلة للتحويل إلى كود
RULE B01.1 # قاعدة "ملفات فريقي"
IF user has role "Managing Partner": allow all matters
ELSE allow matter WHERE user IN matter.team.user
AND user NOT IN matter.blocked_users
AND (matter.restricted = 0 OR user IN matter.allowed_users)
RULE B01.2 # الوراثة: كل سجل له حقل matter يأخذ صلاحية ملفه
FOR doctype IN [Case Proceeding, Hearing, Judgment, Legal Deadline, Legal Document,
Hearing Report, Timesheet(legal_matter), Legal Contract, Trust Movement]:
allowed(doc) = allowed(doc.matter)
RULE B01.3 permission_query_conditions(user) == has_permission(doc, user) لكل سجل # اختبار آلي
RULE B01.4 لا دور يحمل "Delete" على Legal Matter أو Legal Party؛ الأرشفة بديل الحذف
RULE B01.5 لا "Share" ولا "Export" لدور Lawyer؛ الوصول الوحيد إضافة إلى الفريق {F1 ص14}
RULE B01.6 System Manager لا يُمنح لمستخدم له دور Lawyer أو Trainee Lawyer
RULE B01.7 أي دالة تجلب سجلات تستخدم frappe.get_list (يحترم الصلاحيات) لا frappe.get_all ولا frappe.db.sqlمصدر القواعد: (دليل الميزة 1 ص14-15) (دليل المطور ص15) (الوثيقة المعمارية الأدوار والصلاحيات). القاعدة 7 هي «أشهر مصدر تسرّب في تطبيقات Frappe» (دليل الميزة 1 ص15).
14حالات السجل وانتقالاتها وشروطها
| الحالة | المعنى | الانتقال | الشرط |
|---|---|---|---|
| مفعّل | يدخل | → معطّل | مغادرة الموظف أو قرار المدير |
| معطّل | لا يدخل، سجلاته باقية | → مفعّل | قرار المدير مع سبب |
| مقفول مؤقتًا | تجاوز محاولات الدخول | → مفعّل | انتهاء مدة القفل أو فك المدير |
15نموذج البيانات والعلاقات والقيود والفهارس
الكيانات: User (Frappe)، Role، Has Role، Employee (ERPNext)، وجداول على Legal Matter: team وallowed_users وblocked_users. سجل Matter Access Log جديد اقتراح هندسي.
| القيد أو الفهرس | السبب |
|---|---|
فهرس مركّب على Matter Team Member(user, parent) | يسرّع شرط القائمة لكل محامٍ |
| قيد: مستخدم واحد بدور «مسؤول» في فريق كل ملف | قاعدة F1 رقم 1 (دليل الميزة 1 ص12) |
فهرس على Matter Access Log(matter, creation) | التقارير والتدقيق |
16DocTypes المطلوبة في Frappe
Matter Access Log(جديد، غير قابل للتعديل والحذف): matter, user, access_type (استثنائي/سري جدًا/تصدير/طباعة/تنزيل), reason, ip, user_agent.- Custom Fields على
Employee:license_no,license_expiry,job_role_legal. - Custom DocPerm مصدّرة في Fixtures لـ Customer وLegal Party وLegal Matter.
17الشاشات والعناصر والأزرار ورسائل الخطأ
- شاشة المستخدم (Desk): الأدوار، الحالة، التحقق الثنائي.
- في الملف: تبويب «الفريق والوصول» يعرض الفريق، وزر «حجب الملف» للشريك، وقائمة الممنوعين.
- نافذة الدخول الاستثنائي: «هذا الملف محجوب. اكتب سبب الدخول، وسيُبلَّغ المحامي المسؤول.» وزر «دخول مسجّل».
- رسائل الخطأ: «ليس لديك صلاحية على هذا الملف. اطلب من المحامي المسؤول إضافتك إلى الفريق.»
18خدمات Backend ومسؤولية كل خدمة
| الخدمة | المسؤولية |
|---|---|
legal_erp.permissions.matter_query | شرط SQL للقوائم حسب القاعدة B01.1 |
legal_erp.permissions.matter_has_permission | القرار للسجل الواحد |
legal_erp.permissions.inherit | دالة عامة تُسجّل لكل DocType تابع |
legal_erp.security.access_log.record | كتابة سجل الاطلاع وإرسال الإشعار |
19واجهات API الداخلية
POST /api/method/legal_erp.api.v1.access.request_exceptional_access
طلب دخول استثنائي لملف محجوب أو لست في فريقه (للشريك أو بإذن مسبق).
الصلاحية: مستخدم مفعّل؛ يُرفض لمن في قائمة الحاجز.
{
"matter": "MAT-2026-00007",
"reason": "مراجعة طلب الموكّل بعد غياب المحامي المسؤول"
}{
"granted": true,
"expires_at": "2026-11-04T18:00:00+03:00",
"log": "MAL-000123"
}| الحالة | الرمز | متى |
|---|---|---|
| 403 | BLOCKED | المستخدم في قائمة الحاجز |
| 417 | REASON_TOO_SHORT | السبب أقل من 20 حرفًا |
20الأحداث والمهام الخلفية والجدولة وإعادة المحاولة
- يوميًا: إلغاء أذونات الدخول الاستثنائي المنتهية.
- شهريًا: تقرير الحسابات غير المستخدمة والأدوار الحساسة إلى الشريك.
21التكاملات المرتبطة بالميزة وحدودها
دخول الموكّل للبوابة برمز لمرة واحدة، وقد يُضاف التحقق عبر نفاذ — النفاذ الوطني الموحد بعد استكمال إجراءات الربط يحتاج تحققًا أو موافقة رسمية. موظفو المكتب بكلمة مرور وتحقق ثنائي.
22الأمن والخصوصية والتدقيق والاحتفاظ والحذف
- التحقق الثنائي إلزامي لكل موظفي المكتب، مهلة خمول، قفل بعد محاولات فاشلة (دليل المطور ص15).
- سجل تعديلات (
track_changes) على كل DocType قانوني (دليل المطور ص12). - لا تُحذف سجلات الدخول والاطلاع؛ تُحفظ مدة سياسة الاحتفاظ B38 الاحتفاظ والإتلاف والتجميد القانوني.
- نقاط التسرب التي تُختبر: البحث العام، عدّادات مساحة العمل، اقتراحات حقول الإشارة، المرفقات العامة (دليل الميزة 1 ص15)، روابط تنزيل الملفات، فهارس البحث الدلالي (تقرير التدقيق (Gemini) AUD-04).
23حالات الاختبار
| المعرّف | النوع | السيناريو | النتيجة المتوقعة |
|---|---|---|---|
B01-T01 | طبيعي | الشريك يفتح قائمة الملفات | يرى كل الملفات. |
B01-T02 | طبيعي | إضافة المحامي «ب» إلى فريق ملف | يرى الملف وجلساته ومستنداته فورًا. |
B01-T03 | سلبي | محاولة منح System Manager لمستخدم بدور Lawyer | يُرفض الحفظ برسالة واضحة. |
B01-T04 | حدّي | ملف محجوب ومستخدم في allowed_users وblocked_users معًا | يُرفض الحفظ: لا يتقاطع الحقلان. |
B01-T05 | سلبي | دالة مخصصة تجلب الملفات بـ frappe.get_all | يفشل اختبار ثابت يمنع get_all على DocTypes القانونية في الكود. |
B01-T06 | صلاحيات | المحاسب يفتح Legal Document | لا صلاحية. |
B01-T07 | صلاحيات | الموكّل يفتح ملفًا لموكّل آخر من البوابة | لا نتيجة ولا تأكيد لوجوده. |
B01-T08 | صلاحيات | محامٍ «ب» ليس في فريق الملف يفتح قائمة Legal Matter | لا يظهر سجل الملف، والعدّاد لا يحسبه. |
B01-T09 | صلاحيات | المحامي «ب» يفتح رابط سجل Legal Matter لملف المحامي «أ» مباشرة | رسالة عدم صلاحية، ولا تظهر أي حقول. |
B01-T10 | صلاحيات | المحامي «ب» يبحث في الشريط العلوي بعنوان السجل | لا نتيجة. |
B01-T11 | صلاحيات | مستخدم في قائمة حاجز المعلومات وهو عضو في الفريق | يُرفض الوصول ويُسجَّل. |
B01-T12 | طبيعي | دخول استثنائي بسبب مكتوب | يُفتح الملف، يُكتب سجل، ويصل إشعار للمسؤول. |
24معايير القبول
- اختبار آلي يثبت أن محاميين بدور Lawyer لا يرى أحدهما ملف الآخر لا في القائمة ولا بالرقم (دليل الميزة 1 ص17).
- كل الـ DocTypes التابعة للملف ترث صلاحيته (اختبار لكل نوع).
- لا محامٍ يحمل System Manager.
- التحقق الثنائي مفروض على أدوار المكتب.
- كل دخول استثنائي مسجّل ويصل إشعاره.
25تعريف الاكتمال (Definition of Done)
- قائمة نقاط التسرب الست مختبرة آليًا.
- كل قواعد العمل في هذه الصفحة منفذة في الخادم (Controller أو Service)، لا في الواجهة وحدها.
- حالات الاختبار المذكورة هنا مكتوبة اختباراتٍ آلية في إطار اختبار Frappe، وتنجح مع كل دفعة كود.
- اختبارات الصلاحيات تثبت أن مستخدمًا خارج فريق الملف لا يرى السجل في القائمة ولا برابطه المباشر ولا في البحث العام ولا في العدّادات.
- الحقول المخصصة والأدوار ومسارات الاعتماد مُصدَّرة في Fixtures التطبيق، وتظهر بعد تثبيت نظيف على موقع فارغ دون إعداد يدوي.
- لا تعديل في ملفات Frappe أو ERPNext.
- كل قيمة قانونية (مدة، نسبة، مبلغ، قائمة) محفوظة في إعداد قابل للتعديل، وموسومة بحالة اعتمادها.
- نصوص الواجهة ورسائل الخطأ بالعربية، وتخبر المستخدم بما يفعله.
- معايير القبول في هذه الصفحة مُتحقق منها ومسجلة في مصفوفة التتبع.
26القرارات المفتوحة والمخاطر والاعتمادات المطلوبة
- هل يُسمح بدخول الموكّل عبر نفاذ من البداية؟ يتوقف على إجراءات الربط يحتاج تحققًا أو موافقة رسمية (
OD-11). - مدة صلاحية الدخول الاستثنائي الافتراضية افتراض تنفيذي: حتى نهاية اليوم.