تجاوز تحريرات فترة السماح مراجعة الوسائط `skip_review_media_groups`

ملخص

يتم تطبيق فحص “مراجعة الوسائط” (إعداد الموقع skip_review_media_groups) فقط عند إنشاء المنشور، في NewPostManager. تمر التعديلات عبر PostRevisor، الذي لا يقوم أبدًا بتشغيل فحص الوسائط. لذلك، يمكن للمستخدم نشر نص عادي أولاً (لتمرير المراجعة)، ثم إضافة صور عبر تعديل — ولا يدخل المنشور مطلقًا في قائمة الانتظار للمراجعة.

وأشد من ذلك، إذا حدث التعديل خلال editing_grace_period (الفترة الافتراضية 5 دقائق) وكان الفرق أقل من editing_grace_period_max_diff (الحد الأقصى الافتراضي 100 حرف — سطر واحد لوسائط Markdown لصور مرفوعة هو ~40–60 حرفًا)، فإن التعديل لا ينشئ أي سجل مراجعة ولا أيقونة قلم رصاص، لذا يكون التجاوز غير مرئي تمامًا في واجهة المستخدم.

خطوات إعادة الإنتاج

  1. قم بتكوين skip_review_media_groups بحيث لا تكون المجموعات العادية (مثل TL0/TL1) معفاة — يجب أن تتطلب المنشورات التي تحتوي على وسائط موافقة.
  2. بصفتك مستخدمًا عاديًا، أنشئ منشورًا يحتوي على نص فقط. يتم الموافقة عليه/نشره بشكل طبيعي (لا يوجد وسائط → لا توجد مراجعة).
  3. خلال فترة السماح، عدّل المنشور وأدرج صورة مرفوعة.

المتوقع

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

الفعلي

  • يتم نشر المنشور مع الصورة ولا يدخل مطلقًا في قائمة الانتظار للمراجعة.
  • لا يتم إنشاء سجل مراجعة، ولا يتم عرض مؤشر التعديل.

الأدلة (على نسخة الإنتاج)

p.version                                   # => 1
PostRevision.where(post_id: p.id).count     # => 0
p.created_at                                # => 2026-07-30 07:33:28 UTC
p.updated_at                                # => 2026-07-30 07:34:00 UTC
UploadReference.where(target: p).pluck(:created_at)
                                            # => [2026-07-30 07:34:01 UTC]

تم إنشاء منشور نصي فقط في الساعة 07:33:28، وإضافة صورة عبر تعديل بعد ~32 ثانية — لا يوجد سجل تعديل مرئي، ولا مراجعة.

الأكواد ذات الصلة

  • lib/new_post_manager.rb — ترجع post_needs_approval? القيمة :contains_media عبر contains_embedded_media?، ولكن هذا يعمل فقط للمنشورات الجديدة.
  • app/models/post_analyzer.rb#embedded_media_count — منطق عد الوسائط.
  • PostRevisor — لا يوجد فحص وسائط مكافئ عند التعديل.

الحل المقترح

تشغيل فحص contains_media في PostRevisor أيضًا (عندما يقدم التعديل وسائط والمحرر ليس ضمن skip_review_media_groups / ليس من الموظفين)، وإدراج ReviewablePost في قائمة الانتظار للمنشور المعدل.

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