ردود الفعل لا تظهر أحيانًا عند غياب عدد التفاعلات

@JammyDodger لاحظ أنه لم يتمكن من رؤية ردود الفعل على هذا المنشور على الهاتف المحمول: ToS and Privacy buttons disappear from /about when I remove my custom FAQ URL - #3 by Canapin [example1]

Jammy (الجوال) - لا توجد ردود فعل:

Jammy (سطح المكتب) - ردود الفعل على اليسار، ولكن ليس على اليمين:

الجميع - يمكنك أن ترى أنه تفاعل، كل شيء يعمل كما هو متوقع:

بعد البحث في سجل نشاط ردود فعلي، وجدت مثالاً تحدث فيه المشكلة بالنسبة لي: Admins may not realize certain sidebar customization are global - #8 by JammyDodger [example2]

ما تتشاركه المنشورات هو وجود ردود فعل، ولكن لا يبدو أن عدد الإعجابات متاحًا كعدد في actions_summary.

اعتمادًا على ما إذا كنت قد تفاعلت مع المنشور بنفسك أم لا، فإن id: 2 إما مفقود في actions_summary، أو إذا لم تتفاعل، يمكنك أن ترى أن العدد مفقود. إذا فهمت بشكل صحيح، يتم تضمين id: 2 إذا كان بإمكانك التفاعل (can_act) أو إذا كان count > 0.

بالنظر عن كثب إلى تنسيق JSON لمنشور example2 https://meta.discourse.org/posts/1404583.json حيث تفاعل مستخدمان، فإن هذا العدد مفقود:

المستخدم الذي لم يتفاعل
can_act صحيح
المستخدم الذي تفاعل
لا يوجد id 2

في هذه الحالة، يكون count: 2 مفقودًا لكلا المستخدمين. بالنسبة للمستخدم الذي تفاعل بالفعل، يؤدي هذا إلى فقدان id: 2 بالكامل. هذا يفسر سبب عدم عرض ردود الفعل للمستخدم الذي تفاعل، على الرغم من وجود ردود فعل.

للمقارنة، إليك منشور به تفاعلان حيث يتم عرض العدد كما هو متوقع Buttons to order items in emoji list settings is difficult to find on touch devices - #2 by zogstrip وتنسيق JSON الخاص بالمنشور https://meta.discourse.org/posts/1907506.json

المستخدم الذي لم يتفاعل
can_act صحيح
المستخدم الذي تفاعل
acted صحيح

في هذا المنشور، يتوفر العدد وتظهر ردود الفعل كما هو متوقع.

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

5 إعجابات

بدأت التحقيق، وإليك إصلاح قيد العمل

إعجاب واحد (1)

هل تمكنت من معرفة كيف حدث هذا؟ لقد وجدت أمثلة فقط من عام 2023 وبداية عام 2024. لذلك تساءلت عما إذا كان هناك شيء مختلف في البيانات قبل احتساب جميع ردود الفعل كإعجابات عما هو عليه بعد هذا التغيير.
لذا حاولت معرفة ما يحدث إذا استخدمت رد فعل مستبعدًا من العد كإعجاب، ولكن “can_act” لا تزال صحيحة حتى لو كانت “can_undo” لـ current_user_reaction خاطئة.

هذا لأن discourse_reactions_like_sync_enabled مضبوط على false. تم ذلك عن قصد من خلال الترحيل من مايو 2024 لتجنب إرباك البيانات الموجودة.

عندما يتم تعطيل هذا الإعداد، فإن ReactionLikeSynchronizer لا يعمل. هذا المزامِن مسؤول عن:

  • إنشاء سجلات PostAction (إعجاب) للتفاعلات
  • تحديث posts.like_count ليعكس التفاعلات

بدون تشغيل المزامنة:

  1. توجد التفاعلات في discourse_reactions_reaction_users
  2. ولكن لا توجد سجلات PostAction مقابلة
  3. ويبقى posts.like_count عند 0

حدسك بشأن التوقيت دقيق - تمت إضافة التفاعلات إلى المشاركات من عام 2023/أوائل عام 2024 عندما لم تكن هذه المزامنة نشطة، لذلك لم يتم تحديث like_count الخاص بها أبدًا. بعد ذلك، قام منطق التسلسل القديم بحذف إجراء الإعجاب بالكامل عندما كان كل من count = 0 و can_act = false (انتهت صلاحية نافذة التراجع).

الإصلاح لا يصحح التناقض الأساسي في البيانات - بل يضمن ببساطة أن واجهة المستخدم تعرض التفاعلات بشكل صحيح حتى عندما لا تتم مزامنة بيانات PostAction/like_count. في المواقع التي يكون فيها discourse_reactions_like_sync_enabled = false، فإن وجود التفاعلات بشكل مستقل عن سجلات PostAction هو السلوك المتوقع.

إعجاب واحد (1)

تم إغلاق هذا الموضوع تلقائيًا بعد 20 ساعة. لم يعد الرد مسموحًا به.