ملف العمل القانونيLegal matter registry
الكيان المركزي: كل عمل يتقاضى عليه المكتب أتعابًا ملف واحد له موكّل وفريق ومسؤول وحالة. كل شيء بعده (جلسة، مهلة، وكالة، فاتورة، تقرير) يحمل حقلًا يشير إليه.
بطاقة الميزة
| البند | القيمة |
|---|---|
| 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).
6المجال القانوني المرتبط للمطوّر غير المتخصص
الملف أوسع من القضية: استشارة، عقد، صلح، تحكيم، اشتراك سنوي، أو قضية لها مراحل (دليل المطور ص2). الاستشارة لا محكمة فيها ولا صفة موكّل (دليل الميزة 1 ص10).
ما يقرره المحامي: فتح الملف وتصنيفه وإغلاقه بنتيجة. ما ينفذه ERPOS: الترقيم، الصلاحيات، سجل التغيير، منع الحذف. ما لا يصدر إلا من الجهة الرسمية: رقم القيد ونتيجة الحكم.
7المستخدمون والأدوار والصلاحيات
الشريك: كل الملفات، ينشئ، يعيد فتح المغلق، يؤرشف. المحامي: ملفات فريقه، ينشئ ويعدّل. المساعد الإداري: يقرأ ملفات فريقه. أي دور آخر كالمحاسب: لا شيء (دليل الميزة 1 ص14). لا أحد يحذف.
8شروط البدء والاعتماديات
B01 المستخدمون والأدوار والصلاحيات وB02 الموكّلون والأطراف والعلاقات، وقوائم B05 المحاكم والدوائر والقوائم المرجعية (نوع القضية، المحكمة، الطور) مُدخلة ومعتمدة من المحامي المستشار كتابيًا (دليل الميزة 1 ص5، 17).
لا بيانات حقيقية قبل توقيع اتفاقية السرية ومعالجة البيانات (دليل الميزة 1 ص5).
9السيناريو الأساسي خطوة بخطوة
- المدير أو المحامي يفتح ملفًا لموكّل: الفئة، النوع، الموكّل، العنوان، تاريخ الفتح (اليوم افتراضيًا).
- إن كانت الفئة «قضية»: يظهر قسم المحكمة وصفة الموكّل (إلزامية) (دليل الميزة 1 ص11).
- يضيف الأطراف الأخرى ووكلاءهم من سجل B02 الموكّلون والأطراف والعلاقات.
- يُضاف المنشئ تلقائيًا إلى الفريق: مسؤولًا إن كان الفريق فارغًا وإلا مساعدًا (دليل الميزة 1 ص12).
- يُنشأ Project مرتبط 1:1 ويُسجّل الملف قيمة لبُعد «القضية» المحاسبي (الوثيقة المعمارية نموذج البيانات).
- لا يتحوّل الملف إلى «نشط» دون فحص تعارض معتمد B16 فحص تعارض المصالح (دليل المطور ص32).
- ينتقل بين الأطوار ويُحفظ تاريخ كل تغيير ومن قام به (دليل الميزة 1 ص1).
- يُغلق بتاريخ ونتيجة، ثم يؤرشفه الشريك؛ لا حذف أبدًا.
10السيناريوهات البديلة والاستثناءات
- الاستئناف يعيد القضية للمحكمة الأولى: الرجوع بين الأطوار مسموح، والسجل يوثق (دليل الميزة 1 ص13).
- الموكّل يأتي بقضية مرفوعة منذ سنة: لا يُفرض أن تاريخ القيد بعد تاريخ الفتح (دليل الميزة 1 ص13).
- الملف قبل القيد أو استشارة: رقم القضية غير إلزامي (دليل الميزة 1 ص13).
- رقم قضية مكرر في ملف لا يراه المستخدم: يُمنع الحفظ برسالة لا تكشف الملف الآخر (دليل الميزة 1 ص13-14).
- الموكّل يظهر طرفًا مقابلًا (تطابق معرّف): يُمنع؛ أبسط صورة للتعارض (دليل الميزة 1 ص13).
- إعادة فتح ملف مغلق: للشريك وحده، وتعود الحالة «مفتوح» (دليل الميزة 1 ص13).
11المدخلات والحقول
التسمية MAT-.YYYY.-.##### اقتراح هندسي (دليل الميزة 1 يقترح CASE-.YYYY.-.##### (دليل الميزة 1 ص9)؛ غيّرنا البادئة لأن الملف ليس قضية دائمًا). حقل العنوان title، وتتبع التغييرات مفعّل.
| الاسم العربي | الاسم البرمجي | النوع | إلزامي | التحقق | القيمة الافتراضية | مصدر البيانات |
|---|---|---|---|---|---|---|
| عنوان الملف | title | Data | نعم | 5–140 حرفًا | — | المحامي (دليل الميزة 1 ص9) |
| فئة الملف | matter_category | Select | نعم | قضية / استشارة / عقد / صلح / تحكيم / اشتراك سنوي | قضية | (دليل المطور ص2) (دليل الميزة 1 ص9) |
| نوع القضية | matter_type | Link → Matter Type | نعم | غير معطّل | — | B05 المحاكم والدوائر والقوائم المرجعية |
| الموكّل | client | Link → Customer | نعم | مرتبط بـ Legal Party | — | B02 الموكّلون والأطراف والعلاقات |
| اسم الموكّل | client_name | Data (جلب) | تلقائي | للقراءة | — | Customer |
| صفة الموكّل | client_role | Select | نعم في «قضية» | مدعٍ / مدعى عليه / طالب التنفيذ / منفّذ ضده / أخرى | — | (دليل الميزة 1 ص10) |
| المحامي المسؤول | responsible_lawyer | Link → User (محسوب من الفريق) | تلقائي | يساوي صف «مسؤول» الوحيد | — | جدول الفريق |
| تاريخ الفتح | opening_date | Date | نعم | ≤ اليوم | اليوم | (دليل الميزة 1 ص10) |
| الحالة | status | Select | تلقائي | مفتوح / نشط / مغلق / مؤرشف | مفتوح | سير العمل |
| الطور الحالي | stage | Link → Matter Stage | نعم | — | دراسة وتجهيز | (دليل الميزة 1 ص10) |
| تاريخ آخر تغيير للطور | stage_changed_on | Date | تلقائي | للقراءة | — | الخادم |
| تاريخ الإغلاق | closing_date | Date | عند طور مُغلِق | ≥ تاريخ الفتح | — | (دليل الميزة 1 ص10، 13) |
| نتيجة الإغلاق | closing_result | Select | عند طور مُغلِق | لصالح الموكّل / ضده / جزئي / صلح / ترك أو تنازل / أخرى | — | (دليل الميزة 1 ص10) |
| الأطراف الأخرى | parties | Table → Matter Party | لا | لا يتكرر الطرف | — | B02 الموكّلون والأطراف والعلاقات |
| الفريق | team | Table → Matter Team Member | نعم | صف «مسؤول» واحد بالضبط | المنشئ | (دليل الميزة 1 ص10) |
| مستوى السرية | confidentiality | Select | نعم | سري / سري جدًا | سري | (دليل المطور ص14) |
| المشروع المحاسبي | project | Link → Project | تلقائي | واحد لكل ملف | — | (الوثيقة المعمارية نموذج البيانات) |
| تجميد قانوني | legal_hold | Check | لا | — | 0 | B38 الاحتفاظ والإتلاف والتجميد القانوني (دليل المطور ص17) |
| ملخص موجز | summary | Text Editor | لا | سطور قليلة | — | (دليل الميزة 1 ص10) |
12المخرجات والإشعارات والسجلات والتقارير
- قائمة «قضاياي» للمحامي تعرض فريقه فقط دون إعداد إضافي (دليل الميزة 1 ص16).
- مساحة عمل «القضايا»: اختصارات، بطاقات (الملفات المفتوحة، الملفات في طور «صدر حكم ابتدائي»)، ورسما الملفات حسب الطور وحسب المحامي — كلها تحترم الصلاحيات (دليل الميزة 1 ص16).
- سجل التغييرات أسفل النموذج.
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
Legal Matter(الرئيسي)،Matter PartyوMatter Team Member(جداول فرعية بخيار istable) (دليل الميزة 1 ص9).- Accounting Dimension باسم «القضية» يشير إلى Legal Matter، إلزامي على حسابات الإيراد ومصروفات القضايا والأمانات (الوثيقة المعمارية المحور الأول).
17الشاشات والعناصر والأزرار ورسائل الخطأ
- نموذج الملف من الأعلى: البيانات الأساسية بعمودين، الطور، المحكمة (يختفي في الاستشارات)، الأطراف، الفريق، الملخص (دليل الميزة 1 ص15). يُختبر على هاتف لأن الأعمدة المزدوجة تنطوي.
- القائمة: الأعمدة العنوان واسم الموكّل والطور والمحكمة والحالة؛ المرشحات الطور ونوع القضية والحالة والمحامي المسؤول (دليل الميزة 1 ص11).
- رسائل: «حدّد محاميًا مسؤولًا واحدًا في جدول الفريق» — «رقم القضية مسجّل في ملف آخر؛ راجع الشريك المدير» (دون رقم الملف الآخر أو موكّله) (دليل الميزة 1 ص14).
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).
الصلاحية: بحسب قاعدة الفريق.
{
"data": [
{
"name": "MAT-2026-00001",
"title": "مطالبة مستحقات (تجريبي)",
"stage": "منظورة",
"status": "نشط"
}
]
}POST /api/method/legal_erp.api.v1.matters.close
إغلاق الملف بتاريخ ونتيجة.
الصلاحية: المحامي المسؤول أو الشريك.
{
"matter": "MAT-2026-00001",
"closing_date": "2026-11-04",
"closing_result": "صلح"
}{
"status": "مغلق"
}| الحالة | الرمز | متى |
|---|---|---|
| 417 | CLOSING_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معايير القبول
- السيناريوهات السبعة عشر في دليل الميزة 1 ناجحة بحسابات الاختبار الأربعة (دليل الميزة 1 ص16-17).
- الاختبارات الآلية في Git ناجحة.
- قائمة الأطوار وأنواع القضايا معتمدة كتابيًا من المحامي المستشار.
- القضايا التجريبية العشر مُدخلة ومراجعة من الشريك.
- محاميان من المكتب أدخلا ملفًا كاملًا دون مساعدة.
25تعريف الاكتمال (Definition of Done)
- الأخطاء الشائعة في دليل الميزة 1 (حروف عربية في سلسلة الترقيم، تغيير اسم حقل بعد إدخال بيانات، الصلاحية على القائمة وحدها) غير موجودة (دليل الميزة 1 ص18).
- كل قواعد العمل في هذه الصفحة منفذة في الخادم (Controller أو Service)، لا في الواجهة وحدها.
- حالات الاختبار المذكورة هنا مكتوبة اختباراتٍ آلية في إطار اختبار Frappe، وتنجح مع كل دفعة كود.
- اختبارات الصلاحيات تثبت أن مستخدمًا خارج فريق الملف لا يرى السجل في القائمة ولا برابطه المباشر ولا في البحث العام ولا في العدّادات.
- الحقول المخصصة والأدوار ومسارات الاعتماد مُصدَّرة في Fixtures التطبيق، وتظهر بعد تثبيت نظيف على موقع فارغ دون إعداد يدوي.
- لا تعديل في ملفات Frappe أو ERPNext.
- كل قيمة قانونية (مدة، نسبة، مبلغ، قائمة) محفوظة في إعداد قابل للتعديل، وموسومة بحالة اعتمادها.
- نصوص الواجهة ورسائل الخطأ بالعربية، وتخبر المستخدم بما يفعله.
- معايير القبول في هذه الصفحة مُتحقق منها ومسجلة في مصفوفة التتبع.
26القرارات المفتوحة والمخاطر والاعتمادات المطلوبة
- بادئة الترقيم وطريقة ترقيم المكتب الحالية إن وُجدت تُطلب من الشريك (دليل الميزة 1 ص5).
- الحالة «نشط» مقابل «مفتوح»: دليل الميزة 1 لا يذكر «نشط»؛ أضفناها لربط شرط التعارض (دليل المطور ص32) اقتراح هندسي.