الموضوع يُحذف باستمرار

لدي موضوع في موقعي نشره شخص ما (لنسمّه X) ثم حذفه بسبب معلومات خاطئة. قمت بإعادة نشره وطلبت من X نشر تصحيح تحت منشوره الأصلي.

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

ما الذي يحدث؟

5 إعجابات

هل من الممكن أن المستخدم المعني يستمر في حذفه؟ لقد واجهت مستخدمين يفضلون حذف المنشورات بدلاً من تحمل “الإحراج” الناتج عن تصحيح أنفسهم.

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

تحقق من سجل النشاط (admin/logs/staff_action_logs) لمعرفة ما إذا كان المستخدم يقوم بحذفها. سيُظهر السجل تلك المنشورات التي تم تعديلها وحذفها… ومن قام بحذفها. يمكنك أيضًا النقر على أيقونة المعلومات لمزيد من التفاصيل.

بعض المستخدمين غيّروا رأيهم بشأن الاحتفاظ بمنشور ما لأسباب تتعلق بذلك ولأسباب عديدة أخرى. أحيانًا تكون مجرد حالة يشعر فيها الشخص بأنه من الأفضل نسيان ما كان ينوي قوله. أحيانًا يجب عليك ببساطة قبول سببهم، حتى لو لم يُقدَّم سببٌ واضح. :wink:

4 إعجابات

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

(تم سحب المنشور من قبل المؤلف، وسيتم حذفه خلال 24 ساعة ما لم يتم الإبلاغ عنه)

بالإضافة إلى ذلك، يمكنك القيام بذلك للمواضيع فقط إذا لم تكن هناك ردود عليها، وكان الموضوع عمره يوم واحد أو أقل.

5 إعجابات

يحدث هذا أيضًا لدينا عندما يتم حذف موضوع من قِبَل النظام، أي بعد 24 ساعة من حذف المؤلف للموضوع، لا توجد طريقة لاستعادته؛ حتى لو استعدناه، يتم حذفه تلقائيًا مرة أخرى بعد 30 دقيقة.

5 إعجابات

تحدثت مع المستخدم، وبقدر ما أستطيع الفهم، فهم لا يقومون بحذفها بشكل مستمر. في الواقع، كانوا مندهشين من ذلك، حيث أنهم هم من أبلغوني بالمشكلة في المقام الأول.

إليك كيف تبدو سجلاتي:

(شكرًا لك @JimPas على الاقتراح!)

هل لديك أي أفكار؟ هل هناك المزيد من البيانات التي يمكنني توفيرها للمساعدة في استكشاف المشكلة وحلها؟ يبدو أن @Pad_Pors قد واجه شيئًا مشابهًا.

3 إعجابات

هل وجد أحد حلاً لهذه المشكلة لاحقًا؟ نحن نواجه نفس الأمر.

قام مستخدم بنشر موضوع ثم حذفه، وطلب إعادة نشره، والآن يستمر النظام في حذفه (الموضوع بالكامل نظرًا لأنه المنشور الأول).

يمكننا نقل المحتوى إلى موضوع جديد، لكن أي شخص يتابع الرابط الأصلي سيتم توجيهه إلى صفحة “غير موجودة”.

5 إعجابات

هل يمكننا تكرار هذا يوم الاثنين @tshenry؟

5 إعجابات

مرحبًا @AstonJ

هل يمكنك تأكيد خطوات إعادة الإنتاج؟ هذا ما أختبره، لكنني أريد التأكد من أن الوصف يبدو صحيحًا بالنسبة لك؟

  1. يقوم المستخدم بإنشاء موضوع
  2. يقوم المستخدم بحذف الموضوع
  3. ينتقل الموضوع إلى حالة الحذف المجدول:
  4. يتم حذف الموضوع تلقائيًا بعد 24 ساعة
  5. يطلب المستخدم من الطاقم إعادة الموضوع
  6. يجد عضو الطاقم الموضوع المحذوف ويعيد إعداده
  7. يقوم النظام بالحذف بعد الاستعادة

إذا كان هناك أي شيء يجب أن أفعله بشكل مختلف، فالرجاء إعلامي.

إعجابَين (2)

مرحبًا تايلر، تم نشر الموضوع في أبريل، لكن يبدو أن ما يلي قد حدث:

  1. يقوم المستخدم بإنشاء موضوع بالضغط على ‘إرسال’ (يتم نشر قالب الموضوع - والذي قالوا إنه لا يمكنهم تعديله)
  2. ينشر المستخدم محتوى في منشور ثانٍ ثم يحذف المنشور الأول
  3. ينتقل المنشور الأول إلى حالة الحذف المجدول
  4. يتواصل المستخدم مع الطاقم مستفسرًا، قلقًا من احتمال اختفاء الموضوع بالكامل
  5. يستعيد عضو الطاقم المنشور الأول، وينسخ محتويات المنشور الثاني إليه ثم يحذف المنشور الثاني
  6. يكون الموضوع نشطًا مع منشورات من 08 أبريل إلى 17 أبريل
  7. يحذف النظام الموضوع في وقت ما بعد ذلك (غير متأكد من التوقيت الدقيق) تعديل: أحد المشرفين ذكر أن النظام حذفه في 7 يوليو

لم نكتشف أن هذا يحدث إلا عندما نشر المستخدم سؤاله أمس عن مكان موضوعه.

إذا كنت بحاجة إلى أي شيء آخر، فلا تتردد في إخباري (هذا هو الموضوع الذي يتم حذفه باستمرار، بالمناسبة).

4 إعجابات

همم. لست متأكدًا تمامًا من فهمي لما يحدث في الخطوة 1، ولكن بافتراض أن الخلاصة هي أن مستخدمًا قد أنشأ موضوعًا، فإن الخطوة 2 تبدو مستحيلة. إذا أنشأتُ موضوعًا كمستخدم عادي، ثم أجبت عليه، وحاولتُ حذف منشوري الأول (منشور الموضوع)، فلن يُعلَّم المنشور الأول للحذف، وهذا التصميم مقصود.

3 إعجابات

في حالتي، كان الأمر على النحو التالي:

  1. ينشئ المستخدم موضوعًا
  2. يحذفه
  3. أعيد تفعيله
  4. بعد فترة يصبح محذوفًا مرة أخرى

لست متأكدًا من الأطر الزمنية.

4 إعجابات

يمكنني تأكيد حدوث نفس الأمر معي عدة مرات.

إعجابَين (2)

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

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

أهلاً نعم، آسف تايلور! أظن إذن أنهم حذفوا المنشور الأول ثم أنشأوا منشورًا ثانيًا - وهو ما أعتقد أنه ممكن حسب ما أذكر.

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

إليك ما توصلت إليه:

  1. ينشئ المستخدم موضوعًا
  2. يقوم المستخدم بحذف منشور الموضوع، مع جدولة الحذف (لقد قمت بتغيير إعداد الموقع delete_removed_posts_after إلى 1)
  3. يتم حذف الموضوع بعد الوقت المحدد
  4. يقوم الطاقم بإلغاء حذف الموضوع ويعيد النسخة الأصلية من المنشور (فقط عملية الاستعادة вернут المنشور مع الرسالة “الموضوع سحبه المؤلف، سيتم حذفه تلقائيًا خلال ساعة ما لم يتم الإبلاغ عنه”)
  5. سيتم حذف الموضوع مرة أخرى بعد مرور بعض الوقت

ما يحدث: عندما يقوم المستخدم بحذف منشور موضوعه الخاص، يتم تعيين خاصية تسمى user_deleted إلى true. هناك مهمة خلفية تسمى DestroyOldDeletionStubs تعمل كل 30 دقيقة. تقوم هذه المهمة بتشغيل دالة PostDestroyer.destroy_stubs التي ستبحث في قاعدة البيانات وتحذف أي منشورات تم تعيين user_deleted فيها إلى true مع انتهاء مؤقت الحذف.

المشكلة: عندما يستعيد الطاقم المنشور، لا يتم أبدًا تعيين user_deleted إلى false، لذا في المرة القادمة التي تعمل فيها مهمة DestroyOldDeletionStubs، سيتم حذف المنشور مرة أخرى.

الحل: أنا متأكد تقريبًا أننا سنحتاج إلى إضافة بعض المنطق إلى دالة staff_recovered لتعيين user_deleted إلى false (دالة user_recovered تقوم بذلك بالفعل) انظر discourse/lib/post_destroyer.rb at main · discourse/discourse · GitHub

الحل السريع: استعد منشور الموضوع واحصل على معرف المنشور، ثم اذهب إلى وحدة تحكم Rails وقم بتشغيل:

Post.find_by_id(POST_ID).update(user_deleted: false)

يمكن العثور على معرف المنشور بسهولة عن طريق إضافة .json في نهاية رابط الموضوع. لذا باستخدام هذا الموضوع كمثال: https://meta.discourse.org/t/topic-keeps-getting-deleted/128013.json. معرف منشور الموضوع هو 632362.

10 إعجابات

أها، يجب أن نصلح @eviltrout

عمل تحري رائع @tshenry!

6 إعجابات

عمل رائع تايلور :slight_smile:

لأي شخص آخر يحتاج إلى ما سبق، ستحتاج إلى إلغاء حذف المنشور/الموضوع أولاً، وإلا فإن الأمر find سيعيد nil.

4 إعجابات

لا أزال أواجه هذه المشكلة. هل حققت هذه المهمة الخاصة بتعيين user_deleted إلى false أي تقدم؟

هل يوجد حل سريع أو بديل للبيئات المستضافة؟

إعجابَين (2)

أقترح ما يلي:

  • اجعل المستخدم من الطاقم
  • انتحل شخصيته
  • استرجع المنشور المذكور
  • أزل صفة الطاقم عن المستخدم
إعجابَين (2)