توثيق ERPOSالمرجع التنفيذي للمطورين

المستخدمون والأدوار والصلاحياتUsers, roles and permissions

B01المنصة والصلاحياتمتطلب وارد في الملفات اقتراح هندسي

من يرى ماذا ويفعل ماذا: تسعة أدوار، صلاحيات على مستوى نوع المستند ثم على مستوى السجل (ملفات فريقي)، ثم على مستوى الحقل، مع حاجز المعلومات والتحقق الثنائي. هذه الميزة شرط لكل ما بعدها.

بطاقة الميزة

البندالقيمة
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 لا تفرّق بين محامٍ وآخر، ولا تسجّل من اطّلع.

المكتب يمثّل موكّلين قد يكونون خصومًا لموكّلين آخرين بعد سنوات. لذلك لا يكفي أن «يثق» المكتب بموظفيه: يجب أن يثبت النظام أن الوصول كان بقدر الحاجة. وحين يُقبل ملف بشروط بعد فحص تعارض، يُحجب محامٍ بعينه عنه بـحاجز معلومات.

ما يقرره المحامي: من يدخل فريق الملف. ما ينفذه 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السيناريو الأساسي خطوة بخطوة

  1. مدير النظام ينشئ المستخدم بالبريد والجوال ويختار دورًا واحدًا رئيسيًا أو أكثر.
  2. المستخدم يفعّل التحقق الثنائي في أول دخول؛ لا يُسمح بالدخول دونه لموظفي المكتب (دليل المطور ص15).
  3. عند إضافة المستخدم إلى team في ملف، يصبح الملف وكل ما تحته (جلسات، مستندات، مهل، ساعات) مرئيًا له تلقائيًا بالوراثة (دليل المطور ص15).
  4. كل استعلام قائمة يمر بـ permission_query_conditions، وكل فتح سجل يمر بـ has_permission، والنتيجتان متطابقتان (دليل الميزة 1 ص15).
  5. الحقول ذات permlevel الأعلى (أرقام الهويات، مبالغ الأتعاب) لا تظهر إلا للأدوار المخولة (دليل المطور ص15).

10السيناريوهات البديلة والاستثناءات

11المدخلات والحقول

الاسم العربيالاسم البرمجيالنوعإلزاميالتحققالقيمة الافتراضيةمصدر البيانات
الحسابuserLink → Userنعممستخدم مفعّل—إنشاء يدوي
الملف المحجوبrestrictedCheck على Legal Matterلا—0قرار الشريك أو قبول تعارض بشروط
المسموح لهم بالاسمallowed_usersTable MultiSelect → Userإن كان الملف محجوبًاكل مستخدم مفعّل—الشريك
الممنوعون (الحاجز)blocked_usersTable MultiSelect → Userلالا يتقاطع مع المسؤول عن الملف—قرار التعارض
سبب الدخول الاستثنائيaccess_reasonSmall Text في Matter Access Logنعم عند الاستثناء20 حرفًا على الأقل—المستخدم
مستوى السريةconfidentialitySelectنعمسري / سري جدًاسريافتراضي لكل ملف (دليل المطور ص14)

12المخرجات والإشعارات والسجلات والتقارير

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

17الشاشات والعناصر والأزرار ورسائل الخطأ

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

طلب دخول استثنائي لملف محجوب أو لست في فريقه (للشريك أو بإذن مسبق).

الصلاحية: مستخدم مفعّل؛ يُرفض لمن في قائمة الحاجز.

JSON · الطلب
{
  "matter": "MAT-2026-00007",
  "reason": "مراجعة طلب الموكّل بعد غياب المحامي المسؤول"
}
JSON · الاستجابة
{
  "granted": true,
  "expires_at": "2026-11-04T18:00:00+03:00",
  "log": "MAL-000123"
}
الحالةالرمزمتى
403BLOCKEDالمستخدم في قائمة الحاجز
417REASON_TOO_SHORTالسبب أقل من 20 حرفًا

20الأحداث والمهام الخلفية والجدولة وإعادة المحاولة

21التكاملات المرتبطة بالميزة وحدودها

دخول الموكّل للبوابة برمز لمرة واحدة، وقد يُضاف التحقق عبر نفاذ — النفاذ الوطني الموحد بعد استكمال إجراءات الربط يحتاج تحققًا أو موافقة رسمية. موظفو المكتب بكلمة مرور وتحقق ثنائي.

22الأمن والخصوصية والتدقيق والاحتفاظ والحذف

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معايير القبول

25تعريف الاكتمال (Definition of Done)

26القرارات المفتوحة والمخاطر والاعتمادات المطلوبة