لقد واجهت مشكلة خطيرة في منتدى Discourse الخاص بي.
مؤخرًا اكتشفت أن جميع المشاركات التي تحتوي على كلمات مراقبة تؤدي إلى ظهور علامة يتم إخفاؤها تلقائيًا.
يجب على المسؤول إزالة إخفاء هذه المشاركات يدويًا لتصبح مرئية مرة أخرى.
بعد بعض التحقيق، لاحظت أن قيمة score_to_hide_post في موقعي حاليًا هي 0.0.
في مثيل Discourse آخر أقوم بتشغيله، هذه القيمة حوالي 8.3، وهو ما يبدو طبيعيًا.
بسبب هذه القيمة 0.0، فإن أي علامة - حتى لو كانت علامة واحدة من كلمة مراقبة - تخفي المشاركة فورًا.
لم أقم بإجراء أي تغييرات على الإعدادات مؤخرًا. لماذا أصبحت score_to_hide_post تساوي 0.0؟
كيف يمكنني استعادتها إلى حد طبيعي (مثل 8.3) حتى لا يتم إخفاء المشاركات على الفور؟
لقد وجدت أنه نظرًا لأن score_to_hide_post هو 0.0، فإن علامة واحدة فقط من مستخدم جديد ستخفي المنشور على الفور، مما يجعل الوضع خطيرًا للغاية. ماذا علي أن أفعل؟
يمكنك إصلاح ذلك عن طريق ضبط إعداد الموقع إخفاء حساسية المنشور. قم بتعيينه إلى مستوى مناسب مثل متوسط أو مرتفع - سيؤدي ذلك إلى تحديث القيمة الداخلية score_to_hide_post تلقائيًا إلى عتبة صحية مرة أخرى.
لاحظ فقط أنه كلما انخفضت الحساسية، قلّت درجة العلامة المطلوبة لإخفاء منشور - وهذا هو سبب إخفاء المنشورات على الفور.
شكراً على الاقتراح! لقد حاولت تعديل إعداد الموقع Hide Post Sensitivity في لوحة الإدارة، والذي يحتوي على أربعة خيارات: معطل، منخفض، متوسط، وعالي.
ومع ذلك، وجدت أن الخيار “معطل” فقط هو الذي يعمل. بغض النظر عما إذا اخترت “منخفض” أو “متوسط” أو “عالي”، فإن قيمة score_to_hide_post تظل 0.
هل تعرف سبب حدوث ذلك؟
حسب علمي (AFIK)، في التشغيل القياسي مع تعيين حساسية إخفاء المنشورات على “منخفض، متوسط، أو مرتفع”، يجب أن يكون الحد الأدنى رقمًا موجبًا. إذا رأيت score_to_hide_post = 0 عندما لا تكون الحساسية “معطلة”، فهذا يشير إلى سوء تكوين في النظام. تشمل الأسباب المحتملة:
قيم تالفة أو مفقودة في PluginStore
مشكلات في SiteSettings الخاصة بك (على سبيل المثال، reviewable_default_visibility تم تكوينه بشكل خاطئ)
لا يزال الإعداد reviewable_default_visibility عند قيمته الافتراضية، وهي منخفضة. بعد حدوث المشكلة، حاولت حتى إعادة بناء الموقع، لكن ذلك لم يحل المشكلة. أود أن أفهم كيف ظهرت هذه المشكلة في المقام الأول وما إذا كان يمكن إصلاحها.
لقد قمت بدراسة الكود بعناية ووجدت أن score_to_hide_post يتم تحديده بالطرق الثلاث التالية:
def self.sensitivity_score_value(sensitivity, scale)
return Float::MAX if sensitivity == 0
ratio = sensitivity / sensitivities[:low].to_f
high =
(PluginStore.get("reviewables", "priority_#{priorities[:high]}") || typical_sensitivity).to_f
# We want this to be hard to reach
((high.to_f * ratio) * scale).truncate(2)
end
def self.sensitivity_score(sensitivity, scale: 1.0)
# If the score is less than the default visibility, bring it up to that level.
# Otherwise we have the confusing situation where a post might be hidden and
# moderators would never see it!
[sensitivity_score_value(sensitivity, scale), min_score_for_priority].max
end
def self.score_required_to_hide_post
sensitivity_score(SiteSetting.hide_post_sensitivity)
end
بعبارة أخرى، score_to_hide_post = ((high.to_f * ratio) * scale).truncate(2)
حيث:
high.to_f قد يكون 0 بشكل غير متوقع (عادة ما تكون قيمة موجبة)،
ratio = sensitivity / sensitivities[:low].to_f،
sensitivity تأتي من الإعداد (على سبيل المثال 3، 6، أو 9)،
sensitivities[:low] = 9،
scale = 1.0.
هذا يعني أن score_to_hide_post يجب ألا يكون 0 أبدًا، لذلك إذا أصبح 0، فهذا يشير بوضوح إلى خطأ.