FreemiumProBusinessEnterprise

حل التعارضات

متى تحدث التعارضات

يحدث تعارض البيانات عندما يتم تعديل نفس السجل من مصادر مختلفة قبل مزامنة التغييرات. السيناريوهات النموذجية:

جهازان دون اتصال

يعمل عضوان في الفريق دون اتصال على أجهزة مختلفة ويعدّلان نفس السجل. مثلاً:

  • المشغّل عند المدخل يسجل حضور مشارك ويضيف تعليق «VIP»
  • المدير على جهاز آخر يسجل نفس الحضور ويضيف تعليق «مقعد إضافي»
  • عند استعادة الاتصال يُرسل كلا التغييرين إلى الخادم

دون اتصال + متصل

عضو فريق يعمل دون اتصال وآخر متصل:

  • المدير على الكمبيوتر (متصل) يغيّر حالة التسجيل
  • المشغّل في الموقع (دون اتصال) يغيّر نفس الحالة
  • عند المزامنة يتعارض التغيير دون اتصال مع التغيير المطبق أثناء الاتصال

متى تكون التعارضات غير محتملة

عملياً تحدث التعارضات نادراً لأن:

  • أعضاء الفريق المختلفون عادةً يعملون مع مشاركين مختلفين
  • تسجيل الحضور عملية أحادية الاتجاه (تسجيل الوصول)، والتعارض ممكن فقط عند المسح المزدوج
  • العمليات المالية محمية بـ idempotency-key

استراتيجية: الكاتب الأخير يفوز (Free، Pro)

في باقات Free وPro تُستخدم استراتيجية تلقائية last-writer-wins (الأخير يفوز):

كيف تعمل

  1. عند المزامنة يقارن الخادم طوابع الوقت clientTs للتغييرات المتعارضة.
  2. يُحفظ التغيير ذو الطابع الزمني الأحدث تلقائياً.
  3. يُكتب فوق التغيير ذو الطابع الزمني الأقدم.
  4. يتم تسجيل كلا التغييرين في سجل التدقيق (حتى المُكتوب فوقه).

مثال

الوقتالإجراءالنتيجة
10:05المشغّل أ (دون اتصال): حضور + تعليق «VIP»محفوظ محلياً
10:07المشغّل ب (دون اتصال): حضور + تعليق «عادي»محفوظ محلياً
10:15المشغّل أ يتصل بالإنترنتالتغيير مُرسل
10:16المشغّل ب يتصل بالإنترنتتعارض. يفوز ب (10:07 > 10:05). التعليق = «عادي»

المزايا والقيود

المزايا:

  • تلقائي بالكامل -- لا يتطلب تدخل المستخدم
  • لا يقطع سير العمل
  • مناسب لمعظم السيناريوهات (تسجيل الحضور، الحالات البسيطة)

القيود:

  • يُفقد التغيير الأقدم بدون إشعار
  • لا توجد إمكانية لدمج تغييرين
  • قد يؤدي إلى فقدان معلومات للبيانات الحساسة

استراتيجية: القفل المتفائل + واجهة الدمج (Business، Enterprise)

في باقات Business وEnterprise تتوفر استراتيجية تفاعلية لحل التعارضات مع واجهة مرئية.

كيف تعمل

  1. عند المزامنة يكتشف الخادم التعارض (تم تعديل السجل بعد آخر حالة معروفة للعميل).
  2. بدلاً من الكتابة التلقائية يُرجع الخادم كلا النسختين.
  3. تُعرض للمستخدم واجهة الدمج merge UI -- واجهة مقارنة النسخ.
  4. يختار المستخدم أي نسخة يحفظ أو يدمج التغييرات يدوياً.

واجهة الدمج (Merge UI)

تعرض واجهة حل التعارضات:

  • العمود الأيسر: نسختك (التغيير المحلي)

    • مُنشئ التغيير
    • وقت التغيير
    • الحقول المعدّلة وقيمها
  • العمود الأيمن: نسخة الخادم (تغيير شخص آخر)

    • مُنشئ التغيير
    • وقت التغيير
    • الحقول المعدّلة وقيمها
  • الإجراءات:

    • «الاحتفاظ بنسختي» -- تغييرك يكتب فوق نسخة الخادم
    • «قبول نسخة الخادم» -- تُحفظ نسخة الخادم ويُلغى تغييرك
    • «دمج» -- تختار القيمة يدوياً لكل حقل

مثال

الحقلنسختكنسخة الخادم
تسجيل الحضورنعمنعم
التعليقVIP، مقعد A-12عادي
الحالةمؤكدمؤكد

يمكنك قبول تسجيل الحضور من كلا النسختين (متطابقتان)، وأخذ تعليقك وحالة الخادم.

القفل المتفائل (Optimistic locking)

يُستخدم تحت الغطاء القفل المتفائل:

  • كل سجل له رقم إصدار (version counter)
  • عند إرسال التغيير يحدد العميل الإصدار الذي يستند إليه
  • إذا تغير الإصدار على الخادم (شخص آخر حدّث السجل)، يُرجع الخادم تعارضاً
  • يعرض العميل واجهة الدمج

إشعارات التعارضات

عند اكتشاف تعارض:

Free / Pro: إشعار toast «تم حل تعارض البيانات تلقائياً» (إعلامي، بدون إجراءات).

Business / Enterprise: إشعار toast «تم اكتشاف تعارض. يتطلب قرارك» مع زر للانتقال إلى واجهة الدمج. يحظر التعارض مزامنة التغييرات المتبقية حتى يتم حله.

التوصيات

  • وزّع مناطق المسؤولية. عيّن لأعضاء الفريق مجموعات مختلفة من المشاركين أو مناطق تسجيل حضور مختلفة لتقليل التعارضات.
  • زامن أكثر. الفترات القصيرة للعمل دون اتصال تقلل احتمالية التعارضات.
  • استخدم واجهة الدمج للبيانات الحساسة. إذا كان فريقك يعمل بنشاط مع نفس السجلات، فكّر في الترقية إلى Business للوصول إلى حل التعارضات التفاعلي.

الأسئلة الشائعة

متى تحدث التعارضات؟
يحدث التعارض عندما يقوم عضوان أو أكثر في الفريق بتعديل نفس السجل أثناء العمل دون اتصال، أو عندما يتم إجراء تغيير واحد دون اتصال وآخر أثناء الاتصال. مثلاً، شخصان يسجلان حضوراً ويضيفان تعليقاً لنفس المشارك في الوقت نفسه.
ماذا يعني last-writer-wins؟
Last-writer-wins هي استراتيجية يتم فيها حفظ آخر تغيير زمنياً تلقائياً. إذا عدّل شخصان نفس السجل، تُحفظ النسخة ذات الطابع الزمني الأحدث. التغيير السابق يُكتب فوقه.
كيف تعمل واجهة الدمج merge UI على باقات Business وEnterprise؟
عند اكتشاف تعارض يعرض النظام كلا النسختين جنباً إلى جنب. ترى من أجرى كل تغيير ومتى، وتختار أي نسخة تحفظ أو تدمجهما يدوياً.