يكتب طالبان ملاحظات تجربة على جهازين في مختبر لا يملك اتصال إنترنت مستقراً. يضيف الأول وصفاً، ويصحح الثاني قيمة قياس، ثم يتبادلان النسخ. أي نسخة تبقى؟ يقدم دفتر مختبر محلي فكرة واضحة ضمن مشاريع تخرج الأنظمة التعاونية: حفظ كل تعديل على جهاز صاحبه، ثم تبادل التغييرات وإظهار التعارض الذي يحتاج قراراً. ليس الهدف اختيار رقم يبدو أحدث، بل منع اختفاء عمل زميل دون أن يلاحظ الفريق.

افصل الملاحظة عن القياس المعتمد

اجعل الدفتر تعليماً برمجياً باستخدام تجربة خيالية وقراءات مصطنعة. تحتوي التجربة على عنوان وخطوات وملاحظات وقياسات بوحداتها ومرفقات محدودة. يستطيع الفريق تحرير وصف عام، لكن قيمة القياس لها مصدر وحالة اعتماد. لا تجعل المكتبة التعاونية تمنح تصحيحاً علمياً تلقائياً؛ اتفاق الجهازين على رقم واحد لا يثبت أن الرقم يمثل ما قيس فعلاً.

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

الحفظ المحلي يسبق محاولة المزامنة

استخدم TypeScript وAutomerge للنصوص والبيانات التعاونية، وIndexedDB لتخزين المستندات والتغييرات محلياً. توضح وثائق MDN إنشاء مخازن البيانات والمعاملات غير المتزامنة. لا تعرض كلمة «محفوظ» قبل اكتمال عملية التخزين، وافصلها عن «وصل إلى الجهاز الآخر». تحتاج الواجهة إلى حالتين واضحتين كي لا يظن الطالب أن الحفظ المحلي نسخة احتياطية مشتركة.

مسار العمل المقترح: تحرير، ثم حفظ التغيير محلياً، ثم إضافته إلى قائمة مزامنة، ثم تصدير حزمة تحمل معرف المستند وإصدار البنية. يستورد الجهاز الآخر الحزمة بعد التحقق من حجمها وبنيتها ومطابقتها للمستند. يظل تبادل الملفات قناة صالحة لاختبار الدمج حتى لو تعذر اتصال الشبكة المحلية.

كيف نعرف أن التعديلين متزامنان؟

المثال التالي تبسيط منطقي لمتجه إصدارات، وليس وصفاً لصيغة Automerge الداخلية. نفترض نسخة مشتركة تحمل المتجه {A:2,B:1}. يعدل الجهاز أ قيمة القياس فتصبح نسخته {A:3,B:1}، ويعدل ب الحقل نفسه مستقلاً فتصبح نسخته {A:2,B:2}. لا يتفوق أي متجه على الآخر في جميع المكونات، لذلك نتعامل مع التعديلين بوصفهما متزامنين.

قياسان مصطنعان يحتاجان مراجعة
النسخةمتجه المثالقيمة الحقل
المشتركةA:2، B:112.0 مل
تعديل أA:3، B:112.4 مل
تعديل بA:2، B:211.9 مل

القرار المقترح أن تظهر القيمتان مع سبب كل تعديل، ويختار المراجع قيمة أو يسجل قياساً مصححاً مع تفسير. ينشأ قرار جديد يعتمد على النسختين، بدلاً من محو إحداهما. ساعة الهاتف قد تكون متقدمة، ولذلك لا تجعل تاريخ الحائط وحده حكماً على السببية أو صحة القيمة.

ما الذي تحله CRDT وما الذي يبقى للفريق؟

تشرح وثائق تعارضات Automerge أن تعديلات الخصائص المختلفة يمكن دمجها، بينما قد تعطي الكتابات المتزامنة للخاصية نفسها قيمة ظاهرة متفقاً عليها وتحتفظ بالقيم المتعارضة للإطلاع عليها. استخدم واجهة التعارضات المناسبة للإصدار المثبت، واعرض حالة مراجعة للحقل. قراءة القيمة الظاهرة وحدها قد تخفي عن واجهتك معلومة لازمة للقرار.

وفي النص، قد تتقارب النسخ تقنياً بينما تنتج جملة مرتبكة بسبب إدراجين متزامنين في الموضع نفسه. وفر معاينة ومراجعة بشرية للملاحظات قبل اعتماد التقرير. كذلك لا تجمع متوسط رقمين متعارضين تلقائياً؛ قد يكون أحدهما تصحيح وحدة، وليس قياساً مستقلاً يصلح إدخاله في متوسط.

أضف الاتصال بين الجهازين بعد إثبات الدمج

يمكن إضافة قناة WebRTC لتبادل الحزم بين نظراء. يشرح دليل قنوات البيانات في MDN إنشاء القناة ومراقبة فتحها وحجم الرسائل. تحتاج آلية تفاوض واتصال مناسبة للبيئة؛ لا تفترض أن وجود الجهازين على شبكة واحدة يضمن نجاح الاتصال. اختبر سيناريو يعمل دون خدمات إنترنت، واحتفظ باستيراد الملفات حين تمنع الشبكة المحلية الاتصال المباشر.

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

خطة فصل ودمج بمقارنة قابلة للتكرار

خط الأساس نسخ ملف كامل مع اعتماد آخر ملف مستورد. جهز سلسلة ثابتة: تعديل حقلين مختلفين، ثم تعديل الحقل نفسه، ثم حذف ملاحظة أثناء تعديلها على الجهاز الآخر. كرر الدمج بترتيبات استيراد مختلفة، وقارن بقاء التعديلات وتقارب المستندات وظهور التعارض. سجّل النتائج الفعلية لاحقاً؛ المثال لا يمثل اختباراً منفذاً.

أرسل الحزمة مرتين، وافصل النقل في منتصفه، وامنع التخزين المحلي، وغيّر ساعة جهاز، وأدخل إصدار بنية غير مدعوم. راقب أن الفشل لا يعرض «تمت المزامنة»، وأن التعارض لا يصبح قياساً معتمداً تلقائياً. اختبر إعادة فتح الدفتر واستعادة نسخة مصدرة، لأن مسح بيانات المتصفح قد يزيل النسخة المحلية.

ما الذي تضيفه بعد النسخة الثنائية؟

التوسعات الثلاث هي دعم جهاز ثالث، ثم مرفقات ذات بصمات وتجزئة موثقة، ثم عرض تاريخ قرارات اعتماد القياسات. سلّم مخطط البيانات وإصدارات المكتبات وحزم تغيير نموذجية ودليل اقتران واستعادة وسجل حالات الفشل. عند تخطيط مشروع التخرج، اجعل معيار التسليم حفظ الخلاف وإمكان تفسيره، مع الاستفادة من توثيق حالات الاختبار في فصل المتوقع عن المشاهد.

المصادر

مراجعة المصادر: .

اختبار المثال وحدوده

سيناريو تعليمي مقترح ببيانات مصطنعة؛ لم تُنفذ تجربة استخدام أو تجربة مختبرية، ولا تمثل الأمثلة نتائج عملاء. بروتوكول الاختبار يحدد ما ينبغي قياسه عند بناء النموذج.

مقالات ذات صلة

الخدمة المرتبطة: تطوير المشاريع البرمجية الجامعية.

أرسل متطلبات مشروعك