إجابة موجزة: كيف يُمسك سجل الفحص عند غياب الإنترنت؟
احفظ استمارة الفحص في قاعدة بيانات محلية مُدارة على الجهاز؛ وامنح كل سجل هوية عملية فريدة، وابقَ حالة الإرسال مرئية، وعند عودة الاتصال وفّق البيانات مع الخادم دون توليد تكرارات.
في العمل دون اتصال، ليس "تم الحفظ" حالة واحدة. فينبغي عرض حالات محفوظ على الجهاز, بانتظار الإرسال, قبِله الخادم و يلزم مراجعة للمستخدم كلًّا على حدة. وبذلك لا يُظن أن ظهور الاستمارة على الشاشة عند ضعف الاتصال يعني وصولها إلى المركز.
ما البيانات التي ينبغي تحميلها إلى الجهاز قبل الخروج إلى الميدان؟
إجابة موجزة: ينبغي تحميل حزمة البيانات المحدّثة والمصرّح بها اللازمة فقط لإتمام العمل المعيّن.
- أمر العمل وهوية المعدّة الثابتة
- الإصدار المثبَّت لاستمارة الفحص المرتبطة بنوع المعدّة
- معايير الفحص المطلوبة وقوائم الاختيار
- نطاق مهمة الموظف المعيّن ومراجع الجهاز
- وقت آخر مزامنة وإصدار الحزمة
تشرح مواصفة W3C Service Workers إمكانية بناء تطبيقات ويب تعمل دون اتصال عبر worker يعترض الطلبات ومخزن محلي للطلبات/الاستجابات. ومقابل ذلك في مسار عمل VizyonTech ليس مجرد تخزين هيكل الصفحة في الذاكرة المؤقتة؛ بل تجهيز استمارات العمل المعيّن وبياناته المرجعية كحزمة موثّقة قبل الميدان.
إذا لم تكن الحزمة محدّثة، فلا ينبغي أن يفتح التطبيق النموذج القديم بصمت. يجب أن تظل معلومات آخر مزامنة وإصدار النموذج وحدود استخدامه دون اتصال ظاهرة؛ وعند فقد بيانات رئيسية حرجة، يجب منع بدء التسجيل وفق مبدأ الإغلاق عند الفشل. أما كيفية ربط أمر العمل بالمعدّة والنموذج، ففي دليل خطة الفحص الدوري يمكنك الاطلاع عليها.
كيف ينبغي أن تُحفظ الاستمارة على الجهاز؟
إجابة موجزة: اكتب كل تغيير في حقل في عملية قاعدة بيانات محلية قصيرة وذرّية، لا في ذاكرة الشاشة المؤقتة.
تُعرّف مسودة W3C IndexedDB 3.0 الاحتفاظ محليًا بالكائنات المهيكلة لمتطلبات الويب دون اتصال، وأن تُكتب العمليات كاملة أو تُسترجع عند الخطأ. وفي الاستمارة الميدانية، يعني ذلك كتابة قيمة القياس والوحدة والوصف ورابط الصورة ووقت التسجيل في نسخة مسودة متسقة.
| الحقل | لماذا يُحفظ؟ | التحقق |
|---|---|---|
| هوية العملية | تمنع السجل المكرر عند تكرار الإرسال نفسه | تُنشأ مرة واحدة على الجهاز ولا تتغيّر |
| الإصدار المحلي | يرتّب كل تعديل | يزداد بعد كل commit ناجح |
| وقت الإنشاء/التعديل | يوضّح تسلسل الأحداث | يُحفظ وقت الجهاز ووقت قبول الخادم منفصلين |
| إصدار الاستمارة | يحفظ المعايير التي جرى العمل بها | يُثبَّت عند فتح العمل |
| حالة قائمة الانتظار | تفصل التسجيل عن التسليم | محلي، بانتظار، قيد الإرسال، قبول، خطأ |
| رابط الملف المرفق | يطابق الصورة بالسجل الصحيح | يُتحقق من بصمة الملف والمرجع المحلي |
ينبغي ألا يعرض زر الحفظ رسالة نجاح إلا عند اكتمال العملية المحلية. فإغلاق التطبيق أو نفاد البطارية أو عودة الشبكة لحظيًا يجب ألا ينقل الاستمارة الناقصة إلى حالة "مُرسَلة".

كيف ينبغي إجراء المزامنة عند عودة الاتصال؟
إجابة موجزة: أرسل قائمة الانتظار بالترتيب، وأعد محاولة كل عنصر بهوية العملية نفسها، وعلّم الاكتمال فقط بعد استجابة قبول صريحة من الخادم.
- تحقق ليس فقط من وجود الاتصال، بل من الوصول إلى خادم التطبيق.
- أعد فحص سلامة السجل في قائمة الانتظار محليًا وحقوله الإلزامية.
- أرسل السجل ومرفقاته بهوية العملية الثابتة والإصدار المحلي.
- شغّل فحوص الخادم للصلاحية وأمر العمل وإصدار الاستمارة وإصدار السجل الحالي.
- عند القبول الناجح، اكتب على الجهاز هوية السجل لدى الخادم ووقت القبول.
- افصل الخطأ المؤقت لإعادة المحاولة المضبوطة، والخطأ الدائم في التحقق للمراجعة البشرية.
يشرح RFC 9110 إمكانية تكرار طلبٍ ذريّ الإجراء بعد خطأ في الاتصال بالأثر المقصود نفسه. وفي سجل الفحص الدوري، لا يكفي اسم الطريقة وحده: فلا ينبغي أن يضيف الخادم الطلب الثاني الواصل بهوية العملية نفسها كتقرير جديد؛ بل يعيد نتيجة القبول السابقة.
يمكن لواجهة Background Synchronization API تأجيل العمل إلى service worker عند عودة الاتصال؛ لكن MDN تصنّفها كميزة لا تحظى بدعم متصفح واسع. لذلك لا ينبغي اعتماد قائمة الانتظار على حدث الخلفية وحده؛ بل يجب أن تعمل بأمان أيضًا عند فتح التطبيق وعند إجراء المستخدم "أرسل الآن".
ماذا يحدث إذا تغيّر السجل نفسه على جهازين؟
إجابة موجزة: لا تستخدم نهج "آخر من يكتب يفوز" في حقول القياس والمطابقة؛ بل أوقف تعارض الإصدارات واعرض التغييرين على المستخدم المخوّل.
إذا كان إصدار الخادم أحدث من الإصدار الأساسي الذي تلقاه الجهاز عند بدء العمل، فقد يؤدي الاستبدال التلقائي إلى فقد البيانات. ويمكن دمج الحقول غير المتعارضة بصورة مضبوطة؛ أما إذا تغيّر القياس نفسه أو النتيجة أو الوصف الحرج لدى الطرفين، فالحالة المستهدفة للسجل هي: يلزم مراجعة ، وينبغي نقله إليها.
- قارن إصدار الخادم بالإصدار الأساسي للجهاز.
- احفظ الحقول المتغيّرة والفاعلين في سجل العمليات.
- لا تستبدل التقرير المنشور بمسودة دون اتصال بصمت.
- سجّل حل التعارض كتنقيح جديد مع المبرر.
- اعرض للمستخدم بوضوح أي سجل على أي جهاز بانتظار المعالجة.
كيف تُحمى البيانات دون اتصال على الجهاز؟
إجابة موجزة: نزّل البيانات الضرورية فقط، واحمِ البيانات المحلية بمخزن المنصة الآمن، وطبّق تنظيفًا مضبوطًا مرتبطًا بدورة حياة الجهاز/الجلسة.
تشترط OWASP MASVS-STORAGE-1 التخزين الآمن للبيانات الحساسة بصرف النظر عن موقعها على الجهاز. وتوصي MASWE-0006 بعدم الاحتفاظ محليًا بالبيانات الحساسة غير الضرورية، وحماية المفاتيح في مخزن مفاتيح المنصة الآمن، واستخدام التشفير المناسب.
- ضع في الحزمة دون اتصال العمل المعيّن فقط، لا أرشيف العميل كاملًا.
- احمِ مفتاح الجلسة والبيانات الشخصية والصور ومرفقات القياس وفق تصنيف البيانات.
- لا تحتفظ بمفتاح التشفير بجانب ملف البيانات أو في الشيفرة المصدرية.
- اختبر سيناريوهات فقد الجهاز وتغيير المستخدم وإلغاء الصلاحية.
- نظّف المرفقات المحلية المرسلة بأمان وفق سياسة الاحتفاظ.
- لا تكتب سجلات حساسة في منطقة ملفات مشتركة أو نسخة احتياطية غير مضبوطة.
العمل دون اتصال لا يلغي ضبط الصلاحية. فحتى لو كان الجهاز مخوّلًا سابقًا، يجب على الخادم أثناء المزامنة إعادة التحقق من المستخدم والمنشأة وأمر العمل وإصدار الاستمارة.
ما السيناريوهات التي ينبغي اختبارها قبل النشر؟
إجابة موجزة: اختبار وضع الطيران غير كافٍ؛ بل يجب إثبات وقوع الانقطاع في كل مرحلة من مراحل السجل، وأن إعادة المحاولة لا تنتج تكرارات.
- هل يفتح التطبيق أول مرة أثناء انعدام الاتصال، أم يبلّغ عن نقص التجهيز بشكل صحيح؟
- إذا أُغلق التطبيق أثناء إدخال الحقول، هل تُحفظ آخر عملية محلية مكتملة؟
- إذا انقطع الاتصال أثناء تحميل الصورة، هل ينقطع رابط المرفق بالاستمارة؟
- إذا قبِل الخادم السجل ولم تصل الاستجابة إلى الجهاز، هل يفتح الإرسال المتكرر سجلًا ثانيًا؟
- عندما يتغيّر إصدار الاستمارة في المركز، كيف يُفصل العمل القديم دون اتصال؟
- عند تحرير العمل نفسه على جهازين، هل يتوقف تعارض الحقول الحرجة؟
- عند إعادة اتصال مستخدم أُلغيت صلاحيته، هل يُرفض الإرسال ويُحفظ السجل؟
- عندما تنتظر قائمة الانتظار أيامًا، هل يفهم المستخدم أي السجلات غير موجودة في المركز؟
Vizyon Periyodik في التقييم، ينبغي اختبار ميزة العمل دون اتصال ليس بعرض توضيحي لـ"فتح الاستمارة" فحسب؛ بل مع الالتزام المحلي المرئي وقائمة الانتظار المرئية والقبول ذريّ الإجراء وإدارة التعارض وأمن الجهاز مجتمعةً. وللاطلاع على بوابات الفشل المغلق الأخرى عند اختيار البرنامج دليل اختيار برمجيات الفحص الدوري يمكنك الاطلاع عليه.
المراجع
- W3C — Service Workers (مسودة توصية مرشّحة، 8 يونيو 2026).
- W3C — واجهة Indexed Database API 3.0 (مسودة عمل، 13 أغسطس 2025).
- Android Developers — بناء تطبيق يعمل دون اتصال أولًا (تاريخ الاطلاع: 11 أغسطس 2026).
- IETF — RFC 9110، دلالات HTTP: الأساليب متطابقة الأثر عند التكرار (يونيو 2022).
- OWASP — MASVS-STORAGE-1: التخزين الآمن (تاريخ الاطلاع: 11 أغسطس 2026).
- MDN — واجهة API للمزامنة في الخلفية (تاريخ الاطلاع: 11 أغسطس 2026؛ دعم متصفح محدود).
يجب أيضًا التحقق من الحقول التي ستُحفظ دون اتصال وفق تصنيف بيانات المنشأة وسياسة الأجهزة ونطاق المهمة ومنصات العملاء التي يدعمها المنتج.