الردود في الموضوع تظهر خارج الترتيب

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

لقد حاولت التحديث مرة أخرى وتشغيل الأمر rake posts:reorder_posts على المواضيع المتأثرة، لكن هذا لم يُحدث أي تأثير. هل هناك أي شيء آخر يمكنني فعله لإعادة ترتيبها بشكل صحيح؟ أم أن هذه مشكلة في برنامج discourse؟ تظهر المنشورات بنفس الشكل لجميع المستخدمين.

مثال من أحد المواضيع، هذا هو أسفل الموضوع:

هل قمتِ عن طريق الخطأ بنقل آخر منشورين إلى هذا الموضوع؟ هذا هو السلوك المتوقع في هذه الحالة.

لا، كانوا دائمًا في ذلك الموضوع، وقبل الترقية كانوا بترتيب الردود المتوقع.

هذه المشكلة ليست في موضوع واحد فحسب، بل في ما يبدو جميع الموضوعات. هناك رد أو ردان في النهاية لا ينبغي أن يكونا هناك.

واجهتُ نفس المشكلة.

لا، لا أقوم بنقل المنشورات إلى الموضوع، ولكن الردود في الموضوع تظهر بترتيب غير صحيح.

عند تشغيل الاستعلام من posts:reorder_posts، يظهر أن ترتيب الترتيب (sort_order) لعدد من المنشورات غريب، ويبدو أن أمر rake يجب أن يقوم بتحديثها، لكنه لا يفعل ذلك.


من خلال تشغيل:

SELECT
id,
post_number,
sort_order,
ROW_NUMBER() OVER (
    PARTITION BY
    topic_id
    ORDER BY
    created_at,
    post_number
) AS new_post_number
FROM
posts

عند محاولة إعادة إنشاء مهمة rake يدويًا، قمت بتشغيل:

WITH ordered_posts AS (
  SELECT
    id,
    ROW_NUMBER() OVER (
      PARTITION BY
        topic_id
      ORDER BY
        created_at,
        post_number
    ) AS new_post_number
  FROM
    posts
  /*where*/
)
SELECT
  p.post_number,
  p.sort_order,
  o.new_post_number
FROM
  posts AS p, ordered_posts AS o
WHERE
  p.id = o.id

مما أدى إلى النتيجة التالية:

وهو ما يوضح سبب عدم قيام مهمة rake بأي شيء — فهي تعتقد أنه لا يوجد شيء يجب فعله… تحتوي مهمة rake على شرط where إضافي يقارن بين post_number و new_post_number، وليس sort_order.

لقد قمت الآن بتشغيل:

WITH ordered_posts AS (
  SELECT
    id,
    ROW_NUMBER() OVER (
      PARTITION BY
        topic_id
      ORDER BY
        created_at,
        post_number
    ) AS new_post_number
  FROM
    posts
  /*where*/
)
UPDATE
  posts AS p
SET
  sort_order = o.new_post_number
FROM
  ordered_posts AS o
WHERE
  p.id = o.id AND
  p.sort_order <> o.new_post_number

على قاعدة البيانات يدويًا، والآن تظهر المشاركات بالترتيب الصحيح.

ما زلتُ لا أفهم كيف وصلتَ إلى هذه الحالة، فالمكان الوحيد الذي نعدّل فيه هذا هو عند نقل المنشورات.

منشئ المنشور يُعيّن ببساطة sort_order إلى post_number

على المدى الطويل، لستُ متأكدًا حتى من رغبتِي في الاحتفاظ بعمود sort_order، إذ يبدو أنه نوع من الفخاخ التي قد تؤدي إلى أخطاء.

هل هناك أي إضافات (plugins) متورطة هنا؟

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

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

لدينا الإضافات التالية المثبتة:

أظن أن إضافة question-answer هي التي تعدل ترتيب الفرز، لكن ذلك يجب أن يؤثر فقط على مواضيع الأسئلة، وليس المواضيع العامة.

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

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

ننتقل بهذا إلى Support لأنني أرى أن هذا خطأ في إضافة غير رسمية.

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

لقد أجريت اختبارًا على منشور واحد لمعرفة ما إذا كان الأمر التالي سيصحح الردود غير المرتبة في منشور واحد (بعد إزالة إضافة Q&A).

rake posts:reorder_posts[1896]

للأسف، لا تزال المنشورات تظهر بشكل غير مرتب.

مرحبًا، نأسف لوقوع هذه المشكلة معك. يُرجى نشر أي تحديثات بخصوص هذا الأمر في Question Answer Plugin. سيجيب @mbcahyono أو أنا في أقرب وقت ممكن. هذا ليس سؤالًا عامًا لدعم Discourse.