ما تتشاركه المنشورات هو وجود ردود فعل، ولكن لا يبدو أن عدد الإعجابات متاحًا كعدد في actions_summary.
اعتمادًا على ما إذا كنت قد تفاعلت مع المنشور بنفسك أم لا، فإن id: 2 إما مفقود في actions_summary، أو إذا لم تتفاعل، يمكنك أن ترى أن العدد مفقود. إذا فهمت بشكل صحيح، يتم تضمين id: 2 إذا كان بإمكانك التفاعل (can_act) أو إذا كان count > 0.
في هذه الحالة، يكون count: 2 مفقودًا لكلا المستخدمين. بالنسبة للمستخدم الذي تفاعل بالفعل، يؤدي هذا إلى فقدان id: 2 بالكامل. هذا يفسر سبب عدم عرض ردود الفعل للمستخدم الذي تفاعل، على الرغم من وجود ردود فعل.
في هذا المنشور، يتوفر العدد وتظهر ردود الفعل كما هو متوقع.
ليس لدي فكرة عن عدد المنشورات هنا في Meta المتأثرة بهذا أو ما إذا كانت المنتديات الأخرى متأثرة أيضًا. ولا يمكنني تقديم أي خطوات حول سبب فقدان البيانات. يمكنني فقط الإبلاغ عن أنه بالنسبة لبعض المنشورات، لا يتم عرض ردود الفعل على الهواتف المحمولة ويتم عرضها جزئيًا فقط على أجهزة الكمبيوتر المحمولة، والسبب في ذلك يبدو مرتبطًا بالبيانات المفقودة.
هل تمكنت من معرفة كيف حدث هذا؟ لقد وجدت أمثلة فقط من عام 2023 وبداية عام 2024. لذلك تساءلت عما إذا كان هناك شيء مختلف في البيانات قبل احتساب جميع ردود الفعل كإعجابات عما هو عليه بعد هذا التغيير.
لذا حاولت معرفة ما يحدث إذا استخدمت رد فعل مستبعدًا من العد كإعجاب، ولكن “can_act” لا تزال صحيحة حتى لو كانت “can_undo” لـ current_user_reaction خاطئة.
هذا لأن discourse_reactions_like_sync_enabled مضبوط على false. تم ذلك عن قصد من خلال الترحيل من مايو 2024 لتجنب إرباك البيانات الموجودة.
عندما يتم تعطيل هذا الإعداد، فإن ReactionLikeSynchronizer لا يعمل. هذا المزامِن مسؤول عن:
إنشاء سجلات PostAction (إعجاب) للتفاعلات
تحديث posts.like_count ليعكس التفاعلات
بدون تشغيل المزامنة:
توجد التفاعلات في discourse_reactions_reaction_users
ولكن لا توجد سجلات PostAction مقابلة
ويبقى posts.like_count عند 0
حدسك بشأن التوقيت دقيق - تمت إضافة التفاعلات إلى المشاركات من عام 2023/أوائل عام 2024 عندما لم تكن هذه المزامنة نشطة، لذلك لم يتم تحديث like_count الخاص بها أبدًا. بعد ذلك، قام منطق التسلسل القديم بحذف إجراء الإعجاب بالكامل عندما كان كل من count = 0 و can_act = false (انتهت صلاحية نافذة التراجع).
الإصلاح لا يصحح التناقض الأساسي في البيانات - بل يضمن ببساطة أن واجهة المستخدم تعرض التفاعلات بشكل صحيح حتى عندما لا تتم مزامنة بيانات PostAction/like_count. في المواقع التي يكون فيها discourse_reactions_like_sync_enabled = false، فإن وجود التفاعلات بشكل مستقل عن سجلات PostAction هو السلوك المتوقع.