محرك المهل النظامية وحاسبة الاعتراضStatutory deadline engine
«أخطر ميزة في النظام» (دليل المطور ص40). تحسب آخر يوم لـالاعتراض أو طلب السير من حدث موثق وقاعدة مؤرخة ومعتمدة وقائمة عطلات، وتذكّر وتصعّد، ولا تُغلق إلا بدليل. لا مدة في الكود: كل مدة سجل Deadline Rule له مصدر ومن تحقق منه.
بطاقة الميزة
| البند | القيمة |
|---|---|
| 1. اسم الميزة | محرك المهل النظامية وحاسبة الاعتراض — Statutory deadline engine |
| 2. المعرّف (Feature ID) | B12 |
| 3. مصدر المتطلب | دليل المطور ص40-42 (الميزة 8)، الوثيقة المعمارية: محرك المهل، تقييم القرارات الهندسية: المهل |
| 4. تصنيف المحتوى | متطلب وارد في الملفات DocType القاعدة والمهلة، طريقة العد، العطلات، التذكير، الإغلاق بدليل. يحتاج اعتمادًا قانونيًا كل القواعد الأولية والمدد والمواد. اقتراح هندسي القيمة الاحتياطية الداخلية قبل آخر يوم. |
| الوحدة | المهل والأحكام |
| الأدوار المعنية | محامٍ، شريك |
| درجة الخطورة | حرجة |
| حالة الاعتماد | يحتاج اعتمادًا قانونيًا |
| المنصات المرتبطة | تقويم أم القرى والجريدة الرسمية، ناجز وناجز للمطورين |
5الهدف التجاري والمشكلة التي تعالجها
فوات مهلة الاعتراض يجعل الحكم نهائيًا ضد الموكّل. ولذلك: الحساب في الخادم، القاعدة مؤرخة، النتيجة تُعرض مع اسم القاعدة ومادتها.
6المجال القانوني المرتبط للمطوّر غير المتخصص
الدليل يقترح قواعد أولية (استئناف 30 يومًا من استلام الصك، مستعجل 10، نقض 30، نقض مستعجل 15 أو 10 بحسب المصدر، التماس 30، طلب السير بعد الشطب 60…) مع مصادرها (دليل المطور ص40). في هذا التوثيق لا نعرض هذه المدد كقواعد نافذة: تُبذر في Deadline Rule بحالة «غير معتمدة» ولا تُستخدم حتى يملأ مختص verified_by وverified_on بعد مراجعة النص الرسمي يحتاج اعتمادًا قانونيًا. انظر التعارض C-06 وC-07 وقرار OD-08.
طريقة العد في الدليل: اليوم الأول هو اليوم التالي للحدث، والعطلات داخل المدة تُحسب، وإذا وافق آخر يوم عطلة رسمية امتد لأول يوم عمل (دليل المطور ص40). وقد يبدأ العد من اليوم نفسه في بعض الجهات، لذلك start_offset حقل لا ثابت يحتاج اعتمادًا قانونيًا.
7المستخدمون والأدوار والصلاحيات
المحامي المسؤول مالك المهلة. الشريك يُصعَّد إليه. مختص قانوني (OD-03) يعتمد القواعد. مدير النظام يدخل العطلات.
8شروط البدء والاعتماديات
قواعد معتمدة (verified_by مملوء). قائمة عطلات السنة مع وسم «مبدئي» للأعياد. B11 الأحكام وطرق الاعتراض أو B04 مراحل التقاضي ودورة حياة القضية لحدث البدء.
9السيناريو الأساسي خطوة بخطوة
- حدث موثق (استلام صك، قرار شطب، علم بسبب الالتماس) يُسجَّل بتاريخه.
- النظام يختار القاعدة المطابقة: الجهة القضائية، نوع المحكمة، المرحلة، الحدث، الاستعجال، والسريان في تاريخ الحدث.
- يحسب الاستحقاق بالخوارزمية خوارزمية حساب المهل النظامية ويحفظ القاعدة ونسختها ومدخلات الحساب.
- يعرض: آخر يوم بالتقويمين، اسم القاعدة والمادة، «موعد داخلي آمن» = نهاية يوم العمل السابق اقتراح هندسي، وتنبيه إن كان قريبًا من عيد مبدئي.
- التذكيرات: 7 و3 و1 يوم وصباح آخر يوم (افتراضيًا، قابلة للتعديل)؛ قبل يوم دون إنجاز يُبلّغ الشريك (دليل المطور ص41).
- الإغلاق: بدليل (مذكرة مقدمة أو إشعار ناجز) أو قرار «لا نعترض» بموافقة الموكّل.
10السيناريوهات البديلة والاستثناءات
- تعديل تاريخ الحدث: إعادة حساب وإشعار (دليل المطور ص41).
- عطلة أضيفت لاحقًا: إعادة حساب كل المهل المفتوحة المتأثرة (دليل المطور ص41).
- تعديل يدوي:
override_dueمع سبب ويُسجل من عدّل؛ يبقى الحساب الآلي ظاهرًا بجانبه. - طلبات بمدد مختلفة في حكم واحد: يعرض النظام المهلتين ويبدأ التذكير بالأقصر (دليل المطور ص40) يحتاج اعتمادًا قانونيًا.
- لا قاعدة مطابقة أو القاعدة غير معتمدة: لا حساب؛ تنبيه «أدخل الموعد يدويًا بعد التحقق» ومهلة يدوية بسبب.
- مدد بالأشهر أو السنين: حقل
calendarيحدد هجري أو ميلادي يحتاج اعتمادًا قانونيًا؛ لا تُحسب حتى يُحدد.
11المدخلات والحقول
| الاسم العربي | الاسم البرمجي | النوع | إلزامي | التحقق | القيمة الافتراضية | مصدر البيانات |
|---|---|---|---|---|---|---|
| رمز القاعدة | rule_code | Data | نعم | فريد مع الإصدار | — | المختص |
| الجهة القضائية | judicial_body | Select | نعم | وزارة العدل / ديوان المظالم | — | يحتاج اعتمادًا قانونيًا |
| أنواع المحاكم | court_types | Table MultiSelect | لا | — | — | يحتاج اعتمادًا قانونيًا |
| المرحلة | stage | Select | نعم | — | — | يحتاج اعتمادًا قانونيًا |
| الحدث المُطلق | trigger_event | Select | نعم | استلام صك / قرار شطب / علم بسبب / إبلاغ | — | يحتاج اعتمادًا قانونيًا |
| المدة | length | Int | نعم | > 0 | — | نص رسمي |
| الوحدة | unit | Select | نعم | يوم / شهر / سنة | يوم | نص رسمي |
| إزاحة البدء | start_offset | Int | نعم | 0 أو 1 | 1 | (دليل المطور ص40) يحتاج اعتمادًا قانونيًا |
| التمديد عند العطلة | extend_on_holiday | Check | نعم | — | 1 | يحتاج اعتمادًا قانونيًا |
| التقويم | calendar | Select | عند الشهر/السنة | هجري / ميلادي | — | يحتاج اعتمادًا قانونيًا |
| مستعجلة | is_urgent | Check | لا | — | 0 | — |
| السند النظامي | legal_basis | Data | نعم | النظام والمادة | — | نص رسمي |
| رابط المصدر | source_url | Data | نعم | https | — | نص رسمي |
| ساري من/إلى | valid_from / valid_to | Date | نعم / لا | لا تداخل لنفس الرمز | — | — |
| تحقق منه | verified_by / verified_on | Link User / Date | شرط الاستخدام | — | — | المختص |
| المهلة: تاريخ الحدث | trigger_date | Date | نعم | — | — | B11 الأحكام وطرق الاعتراض |
| المهلة: المحسوب | computed_due | Date | تلقائي | — | — | الخوارزمية |
| المهلة: التعديل اليدوي | override_due / override_reason / override_by | Date / Text / User | معًا | سبب إلزامي | — | المحامي |
| المهلة: الحالة | status | Select | تلقائي | مفتوحة / منجزة / قرار بعدم الاعتراض / فائتة | مفتوحة | — |
| المهلة: الدليل | evidence | Link → Legal Document | للإغلاق | — | — | B13 المستندات والإصدارات والأرشفة والأصول الورقية |
12المخرجات والإشعارات والسجلات والتقارير
بطاقة المهلة بالعدّاد والتقويمين. لوحة «مهل هذا الأسبوع». تقرير المهل الفائتة (يجب أن يكون فارغًا). إشعارات وتصعيد.
13قواعد العمل بصيغة قابلة للتحويل إلى كود
RULE B12.1 rule usable only if verified_by AND verified_on AND valid_from <= trigger_date AND (valid_to IS NULL OR valid_to > trigger_date)
RULE B12.2 due = compute_due_date(trigger_date, rule, holidays) # see alg:deadlines
RULE B12.3 keep rule version used; later rule changes never alter closed deadlines
RULE B12.4 trigger_date or holiday list change -> recompute open deadlines, notify owner, log old/new
RULE B12.5 override requires reason; computed_due stays visible
RULE B12.6 close requires evidence OR objection_decision = "لا نعترض" with client approval
RULE B12.7 near tentative holiday (within 3 days [assume]) -> show "قد يتغير الموعد"
RULE B12.8 internal_safe_due = previous working day end [eng]; e-filing cut-off per official guide [legal]14حالات السجل وانتقالاتها وشروطها
| من | إلى | الشرط |
|---|---|---|
| مفتوحة | منجزة | دليل مرفق |
| مفتوحة | قرار بعدم الاعتراض | موافقة الموكّل |
| مفتوحة | فائتة | مرور آخر يوم دون إغلاق (آلي) + تنبيه الشريك |
15نموذج البيانات والعلاقات والقيود والفهارس
Deadline Rule 1 → n Legal Deadline؛ Legal Deadline n → 1 Legal Matter وCase Proceeding وJudgment. Holiday List من ERPNext مع حقل tentative. فهرس (status, due) و(owner_lawyer, status).
16DocTypes المطلوبة في Frappe
Deadline Rule،Legal Deadline(دليل المطور ص41)، Custom Fieldis_tentativeعلىHoliday.
17الشاشات والعناصر والأزرار ورسائل الخطأ
شاشة المهلة: آخر يوم كبير بالتقويمين، الموعد الداخلي الآمن، اسم القاعدة والمادة ورابطها، شريط «غير معتمدة» إن وُجد. حاسبة مستقلة للاستعلام دون إنشاء مهلة. رسالة: «هذه القاعدة لم يعتمدها مختص بعد ولا يمكن استخدامها.»
18خدمات Backend ومسؤولية كل خدمة
legal_erp.deadlines.engine.compute، select_rule، recompute_for_holidays، close_with_evidence.
19واجهات API الداخلية
POST /api/method/legal_erp.api.v1.deadlines.preview
حاسبة: معاينة دون حفظ.
الصلاحية: محامٍ أو شريك.
{
"trigger_date": "2026-11-01",
"rule_code": "APPEAL_STD"
}{
"rule_status": "غير معتمدة",
"computed_due": null,
"message": "القاعدة غير معتمدة"
}20الأحداث والمهام الخلفية والجدولة وإعادة المحاولة
يومي صباحًا: التذكيرات والتصعيد ووسم الفائتة. عند تعديل Holiday List: إعادة حساب في الخلفية.
21التكاملات المرتبطة بالميزة وحدودها
تقويم أم القرى والجريدة الرسمية للعرض الهجري. ناجز وناجز للمطورين مصدر تاريخ الاستلام وإشعار التقديم كدليل إغلاق بعد الموافقة.
22الأمن والخصوصية والتدقيق والاحتفاظ والحذف
تعديل القواعد للمختص فقط، وكل تعديل نسخة جديدة. لا حذف لمهلة.
23حالات الاختبار
| المعرّف | النوع | السيناريو | النتيجة المتوقعة |
|---|---|---|---|
B12-T01 | وحدة | استلام الأحد 2026-11-01، 30 يومًا، إزاحة 1 | الاستحقاق الثلاثاء 2026-12-01 (دليل المطور ص41). |
B12-T02 | وحدة | استلام الثلاثاء 2026-11-03، 10 أيام | آخر يوم الجمعة 13 عطلة ← الأحد 2026-11-15. |
B12-T03 | وحدة | شطب الخميس 2026-11-05، 60 يومًا | الاثنين 2027-01-04. |
B12-T04 | سلبي | قاعدة بلا verified_by | لا تُستخدم. |
B12-T05 | طبيعي | تغيير تاريخ الاستلام | إعادة حساب وإشعار. |
B12-T06 | طبيعي | إضافة عطلة تقع في آخر يوم مهلة مفتوحة | تمتد ويُشعر المالك. |
B12-T07 | سلبي | تعديل يدوي بلا سبب | يُمنع. |
B12-T08 | حدّي | تعديل القاعدة بعد إغلاق مهلة | المغلقة لا تتغير. |
24معايير القبول
- الأمثلة الثلاثة آلية (دليل المطور ص41).
- تغيير الحدث يعيد الحساب ويُشعر.
- العطلة اللاحقة تعيد الحساب.
- التعديل اليدوي بسبب ومسجل.
- القاعدة غير المعتمدة غير قابلة للاستخدام.
25تعريف الاكتمال (Definition of Done)
- جدول القواعد معتمد كتابيًا من المختص، ومثال كل قاعدة اختبار.
- كل قواعد العمل في هذه الصفحة منفذة في الخادم (Controller أو Service)، لا في الواجهة وحدها.
- حالات الاختبار المذكورة هنا مكتوبة اختباراتٍ آلية في إطار اختبار Frappe، وتنجح مع كل دفعة كود.
- اختبارات الصلاحيات تثبت أن مستخدمًا خارج فريق الملف لا يرى السجل في القائمة ولا برابطه المباشر ولا في البحث العام ولا في العدّادات.
- الحقول المخصصة والأدوار ومسارات الاعتماد مُصدَّرة في Fixtures التطبيق، وتظهر بعد تثبيت نظيف على موقع فارغ دون إعداد يدوي.
- لا تعديل في ملفات Frappe أو ERPNext.
- كل قيمة قانونية (مدة، نسبة، مبلغ، قائمة) محفوظة في إعداد قابل للتعديل، وموسومة بحالة اعتمادها.
- نصوص الواجهة ورسائل الخطأ بالعربية، وتخبر المستخدم بما يفعله.
- معايير القبول في هذه الصفحة مُتحقق منها ومسجلة في مصفوفة التتبع.
26القرارات المفتوحة والمخاطر والاعتمادات المطلوبة
- النقض المستعجل 15 أو 10 (
OD-08). - بدء العد في الجزائي وديوان المظالم.
- ساعة انتهاء التقديم الإلكتروني في آخر يوم.
- من يعتمد القواعد (
OD-03).