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

ملف العمل القانونيLegal matter registry

B03الملفات والأطرافمتطلب وارد في الملفات اقتراح هندسي

الكيان المركزي: كل عمل يتقاضى عليه المكتب أتعابًا ملف واحد له موكّل وفريق ومسؤول وحالة. كل شيء بعده (جلسة، مهلة، وكالة، فاتورة، تقرير) يحمل حقلًا يشير إليه.

بطاقة الميزة

البندالقيمة
1. اسم الميزةملف العمل القانوني — Legal matter registry
2. المعرّف (Feature ID)B03
3. مصدر المتطلبدليل الميزة 1 (كامل)، دليل المطور ص2، 10-12، الوثيقة المعمارية: نموذج البيانات والمحور الأول (بُعد القضية)
4. تصنيف المحتوىمتطلب وارد في الملفات حقول الملف وقواعده الأربع عشرة واختباراته من دليل الميزة 1. اقتراح هندسي نقل رقم القيد إلى المرحلة (C-03)، وربط Project والبُعد المحاسبي من الوثيقة المعمارية.
الوحدةالملفات والأطراف
الأدوار المعنيةشريك، محامٍ، متدرب، سكرتارية
درجة الخطورةحرجة
حالة الاعتمادمعتمد في الوثائق
المنصات المرتبطةلا توجد

5الهدف التجاري والمشكلة التي تعالجها

كل الميزات اللاحقة تتعلق بالملف (دليل الميزة 1 ص1). الميزة إعداد لا خوارزميات، وتُستخدم من اليوم الأول بإدخال قضايا المكتب الشريك (دليل الميزة 1 ص1). التقدير 7–10 أيام عمل (دليل الميزة 1 ص1).

الملف أوسع من القضية: استشارة، عقد، صلح، تحكيم، اشتراك سنوي، أو قضية لها مراحل (دليل المطور ص2). الاستشارة لا محكمة فيها ولا صفة موكّل (دليل الميزة 1 ص10).

ما يقرره المحامي: فتح الملف وتصنيفه وإغلاقه بنتيجة. ما ينفذه ERPOS: الترقيم، الصلاحيات، سجل التغيير، منع الحذف. ما لا يصدر إلا من الجهة الرسمية: رقم القيد ونتيجة الحكم.

7المستخدمون والأدوار والصلاحيات

الشريك: كل الملفات، ينشئ، يعيد فتح المغلق، يؤرشف. المحامي: ملفات فريقه، ينشئ ويعدّل. المساعد الإداري: يقرأ ملفات فريقه. أي دور آخر كالمحاسب: لا شيء (دليل الميزة 1 ص14). لا أحد يحذف.

8شروط البدء والاعتماديات

B01 المستخدمون والأدوار والصلاحيات وB02 الموكّلون والأطراف والعلاقات، وقوائم B05 المحاكم والدوائر والقوائم المرجعية (نوع القضية، المحكمة، الطور) مُدخلة ومعتمدة من المحامي المستشار كتابيًا (دليل الميزة 1 ص5، 17).

لا بيانات حقيقية قبل توقيع اتفاقية السرية ومعالجة البيانات (دليل الميزة 1 ص5).

9السيناريو الأساسي خطوة بخطوة

  1. المدير أو المحامي يفتح ملفًا لموكّل: الفئة، النوع، الموكّل، العنوان، تاريخ الفتح (اليوم افتراضيًا).
  2. إن كانت الفئة «قضية»: يظهر قسم المحكمة وصفة الموكّل (إلزامية) (دليل الميزة 1 ص11).
  3. يضيف الأطراف الأخرى ووكلاءهم من سجل B02 الموكّلون والأطراف والعلاقات.
  4. يُضاف المنشئ تلقائيًا إلى الفريق: مسؤولًا إن كان الفريق فارغًا وإلا مساعدًا (دليل الميزة 1 ص12).
  5. يُنشأ Project مرتبط 1:1 ويُسجّل الملف قيمة لبُعد «القضية» المحاسبي (الوثيقة المعمارية نموذج البيانات).
  6. لا يتحوّل الملف إلى «نشط» دون فحص تعارض معتمد B16 فحص تعارض المصالح (دليل المطور ص32).
  7. ينتقل بين الأطوار ويُحفظ تاريخ كل تغيير ومن قام به (دليل الميزة 1 ص1).
  8. يُغلق بتاريخ ونتيجة، ثم يؤرشفه الشريك؛ لا حذف أبدًا.

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

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

التسمية MAT-.YYYY.-.##### اقتراح هندسي (دليل الميزة 1 يقترح CASE-.YYYY.-.##### (دليل الميزة 1 ص9)؛ غيّرنا البادئة لأن الملف ليس قضية دائمًا). حقل العنوان title، وتتبع التغييرات مفعّل.

الاسم العربيالاسم البرمجيالنوعإلزاميالتحققالقيمة الافتراضيةمصدر البيانات
عنوان الملفtitleDataنعم5–140 حرفًا—المحامي (دليل الميزة 1 ص9)
فئة الملفmatter_categorySelectنعمقضية / استشارة / عقد / صلح / تحكيم / اشتراك سنويقضية(دليل المطور ص2) (دليل الميزة 1 ص9)
نوع القضيةmatter_typeLink → Matter Typeنعمغير معطّل—B05 المحاكم والدوائر والقوائم المرجعية
الموكّلclientLink → Customerنعممرتبط بـ Legal Party—B02 الموكّلون والأطراف والعلاقات
اسم الموكّلclient_nameData (جلب)تلقائيللقراءة—Customer
صفة الموكّلclient_roleSelectنعم في «قضية»مدعٍ / مدعى عليه / طالب التنفيذ / منفّذ ضده / أخرى—(دليل الميزة 1 ص10)
المحامي المسؤولresponsible_lawyerLink → User (محسوب من الفريق)تلقائييساوي صف «مسؤول» الوحيد—جدول الفريق
تاريخ الفتحopening_dateDateنعم≤ اليوماليوم(دليل الميزة 1 ص10)
الحالةstatusSelectتلقائيمفتوح / نشط / مغلق / مؤرشفمفتوحسير العمل
الطور الحاليstageLink → Matter Stageنعم—دراسة وتجهيز(دليل الميزة 1 ص10)
تاريخ آخر تغيير للطورstage_changed_onDateتلقائيللقراءة—الخادم
تاريخ الإغلاقclosing_dateDateعند طور مُغلِق≥ تاريخ الفتح—(دليل الميزة 1 ص10، 13)
نتيجة الإغلاقclosing_resultSelectعند طور مُغلِقلصالح الموكّل / ضده / جزئي / صلح / ترك أو تنازل / أخرى—(دليل الميزة 1 ص10)
الأطراف الأخرىpartiesTable → Matter Partyلالا يتكرر الطرف—B02 الموكّلون والأطراف والعلاقات
الفريقteamTable → Matter Team Memberنعمصف «مسؤول» واحد بالضبطالمنشئ(دليل الميزة 1 ص10)
مستوى السريةconfidentialitySelectنعمسري / سري جدًاسري(دليل المطور ص14)
المشروع المحاسبيprojectLink → Projectتلقائيواحد لكل ملف—(الوثيقة المعمارية نموذج البيانات)
تجميد قانونيlegal_holdCheckلا—0B38 الاحتفاظ والإتلاف والتجميد القانوني (دليل المطور ص17)
ملخص موجزsummaryText Editorلاسطور قليلة—(دليل الميزة 1 ص10)

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

13قواعد العمل بصيغة قابلة للتحويل إلى كود

قواعد
RULE B03.1  count(team where team_role = "محامٍ مسؤول") == 1               # every save, block
RULE B03.2  team.user unique                                                # every save, block
RULE B03.3  on_create: if team empty -> add creator as "محامٍ مسؤول" else as "محامٍ مساعد"
RULE B03.4  (court, court_case_number) unique across Case Proceedings        # block; message never names the other matter
RULE B03.5  matter_category == "قضية" -> client_role required               # block
RULE B03.6  parties.party unique within matter                              # block
RULE B03.7  any parties[i].party.id_hmac == client.legal_party.id_hmac -> block   # client cannot be opponent
RULE B03.8  id format warning (see B02.3)                                   # warn only
RULE B03.9  stage changed -> stage_changed_on = today                       # auto
RULE B03.10 stage.is_closing -> require closing_date & closing_result; status = "مغلق"
RULE B03.11 closing_date >= opening_date
RULE B03.12 leaving a closing stage (reopen) -> only Managing Partner; status = "مفتوح"
RULE B03.13 status -> "مؤرشف" only Managing Partner and only from "مغلق"
RULE B03.14 no Delete for any role
RULE B03.15 status -> "نشط" requires linked Conflict Check with decision approved   # B16

القواعد 1–14 من (دليل الميزة 1 ص12-13)، والقاعدة 15 من (دليل المطور ص32). القاعدة 4 نُقلت من الملف إلى المرحلة بحسب (تقرير التدقيق (Gemini) AUD-03) اقتراح هندسي. لا تُفرض: ترتيب الأطوار، أن القيد بعد الفتح، إلزامية رقم القضية (دليل الميزة 1 ص13).

14حالات السجل وانتقالاتها وشروطها

منإلىالشرطمن ينفذ
مفتوحنشطفحص تعارض معتمدالمحامي المسؤول أو الشريك
مفتوح/نشطمغلقطور مُغلِق + تاريخ ونتيجةالمحامي المسؤول
مغلقمفتوحإعادة فتحالشريك وحده
مغلقمؤرشفقائمة الإغلاق مكتملة B38 الاحتفاظ والإتلاف والتجميد القانونيالشريك وحده
أي حالةحذف—غير مسموح

قائمة الإغلاق: الفواتير مسددة، الأصول الورقية أُعيدت، التقرير الختامي أُرسل؛ بعدها يصبح الملف للقراءة ويبدأ عدّاد مدة الحفظ (دليل المطور ص17).

15نموذج البيانات والعلاقات والقيود والفهارس

العلاقةالنوع
Legal Matter → Customerمتعدد لواحد
Legal Matter → Matter Type / Matter Stageمتعدد لواحد
Legal Matter ← Matter Party (فرعي)واحد لمتعدد
Legal Matter ← Matter Team Member (فرعي)واحد لمتعدد
Legal Matter → Projectواحد لواحد
Legal Matter ← Case Proceeding / Hearing / Legal Deadline / Legal Document / Legal Contract / Timesheetواحد لمتعدد
فهرسالغرض
(status, stage)لوحة المدير
clientملفات الموكّل والبوابة
opening_dateالتقارير الزمنية

16DocTypes المطلوبة في Frappe

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

18خدمات Backend ومسؤولية كل خدمة

الخدمةالمسؤولية
LegalMatter.validate (Controller)القواعد 1–15
legal_erp.matters.on_createإضافة المنشئ، إنشاء Project
legal_erp.matters.close / reopen / archiveانتقالات بحماية الدور

19واجهات API الداخلية

GET /api/resource/Legal Matter?fields=["name","title","stage","status"]

قائمة ملفات المستخدم (REST الجاهز في Frappe، يحترم الصلاحيات) (دليل المطور ص19).

الصلاحية: بحسب قاعدة الفريق.

JSON · الاستجابة
{
  "data": [
    {
      "name": "MAT-2026-00001",
      "title": "مطالبة مستحقات (تجريبي)",
      "stage": "منظورة",
      "status": "نشط"
    }
  ]
}

POST /api/method/legal_erp.api.v1.matters.close

إغلاق الملف بتاريخ ونتيجة.

الصلاحية: المحامي المسؤول أو الشريك.

JSON · الطلب
{
  "matter": "MAT-2026-00001",
  "closing_date": "2026-11-04",
  "closing_result": "صلح"
}
JSON · الاستجابة
{
  "status": "مغلق"
}
الحالةالرمزمتى
417CLOSING_BEFORE_OPENINGتاريخ الإغلاق قبل الفتح

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

لا مهام مجدولة في هذه الميزة. إنشاء Project يجري داخل المعاملة نفسها.

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

بعد B45 ربط الملفات بناجز تصبح الحقول الرسمية (المحكمة، الدائرة، رقم القضية، تاريخ القيد) للقراءة ولا تتغير إلا بقرار في سجل الفروق (خطة ناجز ص9).

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

كل التحقق في الخادم لأن البيانات تأتي لاحقًا من استيراد أو API (دليل الميزة 1 ص12). المرفقات خاصة دائمًا (دليل الميزة 1 ص15). الإغلاق يجعل الملف للقراءة.

23حالات الاختبار

المعرّفالنوعالسيناريوالنتيجة المتوقعة
B03-T01طبيعيالمحامي «أ» ينشئ ملفًا ويترك الفريق فارغًايُحفظ، و«أ» مسؤول في الفريق (دليل الميزة 1 ص16).
B03-T02سلبيحفظ ملف فيه محاميان مسؤولانيُمنع برسالة عربية واضحة.
B03-T03سلبيحفظ مرحلة برقم قضية مسجّل في ملف لا يراه المستخدميُمنع، والرسالة لا تذكر الملف الآخر.
B03-T04سلبيإضافة طرف مقابل معرّفه هو معرّف الموكّليُمنع الحفظ.
B03-T05حدّينقل الطور إلى «منتهية» دون تاريخ إغلاقيُمنع؛ ومع التاريخ والنتيجة تصبح الحالة «مغلق».
B03-T06صلاحياتالمحامي يعيد فتح ملف مغلقيُمنع؛ والشريك يستطيع.
B03-T07صلاحياتمحاولة حذف ملف بأي حسابلا يوجد خيار حذف.
B03-T08طبيعياختيار فئة «استشارة»يختفي قسم المحكمة ولا تُطلب صفة الموكّل.
B03-T09سلبيتحويل الملف إلى «نشط» دون فحص تعارض معتمديُمنع.
B03-T10طبيعيتثبيت التطبيق على موقع فارغالأدوار والأطوار والأنواع والحقول المخصصة موجودة دون إعداد يدوي (دليل الميزة 1 ص17).
B03-T11صلاحياتمحامٍ «ب» ليس في فريق الملف يفتح قائمة Legal Matterلا يظهر سجل الملف، والعدّاد لا يحسبه.
B03-T12صلاحياتالمحامي «ب» يفتح رابط سجل Legal Matter لملف المحامي «أ» مباشرةرسالة عدم صلاحية، ولا تظهر أي حقول.
B03-T13صلاحياتالمحامي «ب» يبحث في الشريط العلوي بعنوان السجللا نتيجة.
B03-T14صلاحياتمستخدم في قائمة حاجز المعلومات وهو عضو في الفريقيُرفض الوصول ويُسجَّل.

24معايير القبول

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

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