العمل دون اتصالOffline work
في المحكمة قد تنقطع الشبكة. التطبيق يحتفظ بنسخة مشفرة من جلسات ومهل سبعة أيام، ويضع الساعات ومسودات التقارير في طابور يُرسل عند عودة الاتصال، دون تكرار ودون كتابة فوق تعديل أحدث.
بطاقة الميزة
| البند | القيمة |
|---|---|
| 1. اسم الميزة | العمل دون اتصال — Offline work |
| 2. المعرّف (Feature ID) | B34 |
| 3. مصدر المتطلب | دليل المطور ص18، 20، تقرير التدقيق: المزامنة بـ row_version |
| 4. تصنيف المحتوى | متطلب وارد في الملفات نسخة مشفرة لسبعة أيام وطابور للساعات ومسودات التقارير. اقتراح هندسي منع التكرار بمعرّف الطلب ورقم نسخة السجل. |
| الوحدة | الجوال والبوابة |
| الأدوار المعنية | محامٍ |
| درجة الخطورة | متوسطة |
| حالة الاعتماد | معتمد في الوثائق |
| المنصات المرتبطة | لا توجد |
5الهدف التجاري والمشكلة التي تعالجها
يوم الجلسة لا يحتمل «لا يوجد اتصال» (دليل المطور ص18).
6المجال القانوني المرتبط للمطوّر غير المتخصص
لا ينطبق على هذه الميزة.
7المستخدمون والأدوار والصلاحيات
المحامي.
8شروط البدء والاعتماديات
9السيناريو الأساسي خطوة بخطوة
- تنزيل مشفر للأيام السبعة القادمة.
- كل عملية كتابة دون اتصال تأخذ
client_request_idفريدًا. - عند الاتصال: إرسال الطابور بالترتيب.
- الخادم يتجاهل المعرّف المكرر ويقارن
row_version؛ التعارض يُعرض للمحامي.
10السيناريوهات البديلة والاستثناءات
تعارض: شاشة «نسختك ونسخة الخادم» لاختيار أو دمج يدوي. انتهاء الأيام السبعة: تحديث عند الاتصال.
11المدخلات والحقول
لا حقول إدخال خاصة بهذه الميزة؛ تستخدم حقول الكيانات المشار إليها في نموذج البيانات.
12المخرجات والإشعارات والسجلات والتقارير
حالة المزامنة في رأس التطبيق.
13قواعد العمل بصيغة قابلة للتحويل إلى كود
RULE B34.1 local store encrypted with key in Keychain/Keystore
RULE B34.2 server dedupes on client_request_id
RULE B34.3 update accepted only if row_version matches; else conflict
RULE B34.4 offline scope: read hearings/deadlines; write timesheets & report drafts onlyالتفاصيل في المزامنة دون اتصال.
14حالات السجل وانتقالاتها وشروطها
بانتظار ← مرسل ← مقبول / تعارض.
15نموذج البيانات والعلاقات والقيود والفهارس
Sync Receipt (client_request_id فريد، user، result) اقتراح هندسي.
16DocTypes المطلوبة في Frappe
Sync Receipt.
17الشاشات والعناصر والأزرار ورسائل الخطأ
شارة «غير متصل» وعدد العناصر في الطابور.
18خدمات Backend ومسؤولية كل خدمة
legal_erp.api.v1.mobile.sync.
19واجهات API الداخلية
POST /api/method/legal_erp.api.v1.mobile.sync
إرسال الطابور.
الصلاحية: المستخدم نفسه.
{
"items": [
{
"client_request_id": "7c1e0f3a-0000-4000-8000-000000000003",
"op": "timesheet.create",
"row_version": null,
"data": {
"legal_matter": "MAT-2026-00001",
"minutes": 30
}
}
]
}{
"results": [
{
"client_request_id": "7c1e0f3a-0000-4000-8000-000000000003",
"status": "accepted"
}
]
}20الأحداث والمهام الخلفية والجدولة وإعادة المحاولة
لا ينطبق على هذه الميزة.
21التكاملات المرتبطة بالميزة وحدودها
لا ينطبق على هذه الميزة.
22الأمن والخصوصية والتدقيق والاحتفاظ والحذف
المسح عند إلغاء الجهاز B33 تطبيق المحامي على الجوال.
23حالات الاختبار
| المعرّف | النوع | السيناريو | النتيجة المتوقعة |
|---|---|---|---|
B34-T01 | طبيعي | ساعة مسجلة دون اتصال | تصل مرة واحدة. |
B34-T02 | حدّي | إرسال الطابور مرتين | لا تكرار. |
B34-T03 | حدّي | تعديل مسودة على الجهاز والخادم | تعارض معروض. |
24معايير القبول
- لا تكرار ولا فقدان.
25تعريف الاكتمال (Definition of Done)
- كل قواعد العمل في هذه الصفحة منفذة في الخادم (Controller أو Service)، لا في الواجهة وحدها.
- حالات الاختبار المذكورة هنا مكتوبة اختباراتٍ آلية في إطار اختبار Frappe، وتنجح مع كل دفعة كود.
- اختبارات الصلاحيات تثبت أن مستخدمًا خارج فريق الملف لا يرى السجل في القائمة ولا برابطه المباشر ولا في البحث العام ولا في العدّادات.
- الحقول المخصصة والأدوار ومسارات الاعتماد مُصدَّرة في Fixtures التطبيق، وتظهر بعد تثبيت نظيف على موقع فارغ دون إعداد يدوي.
- لا تعديل في ملفات Frappe أو ERPNext.
- كل قيمة قانونية (مدة، نسبة، مبلغ، قائمة) محفوظة في إعداد قابل للتعديل، وموسومة بحالة اعتمادها.
- نصوص الواجهة ورسائل الخطأ بالعربية، وتخبر المستخدم بما يفعله.
- معايير القبول في هذه الصفحة مُتحقق منها ومسجلة في مصفوفة التتبع.
26القرارات المفتوحة والمخاطر والاعتمادات المطلوبة
لا ينطبق على هذه الميزة.