تقرير لوحة المعلومات - السياسات غير المقبولة

هذا هو الإصدار SQL من تقرير لوحة المعلومات للسياسات غير المقبولة.

:discourse: يتطلب هذا التقرير تمكين المكون الإضافي Discourse Policy .

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

SELECT distinct t.id AS topic_id, gu.user_id AS user_id
    FROM post_policies pp
    JOIN post_policy_groups pg on pg.post_policy_id = pp.id
    JOIN posts p ON p.id = pp.post_id AND p.deleted_at is null
    JOIN topics t ON t.id = p.topic_id AND t.deleted_at is null
    JOIN group_users gu ON gu.group_id = pg.group_id
    LEFT JOIN policy_users pu ON
        pu.user_id = gu.user_id AND
        pu.post_policy_id = pp.id AND
        pu.accepted_at IS NOT NULL AND
        pu.revoked_at IS NULL AND
        (pu.expired_at IS NULL OR pu.expired_at < pu.accepted_at) AND
        ((pu.version IS NULL AND pp.version IS NULL) OR
        (pp.version IS NOT NULL AND pu.version IS NOT NULL AND pu.version = pp.version))
WHERE pu.id IS NULL

شرح استعلام SQL

يقوم هذا الاستعلام بتنفيذ العمليات التالية:

  • ربط جداول post_policies و post_policy_groups و posts و topics و group_users لإنشاء قائمة بالمواضيع والمستخدمين الخاضعين لسياسات ما بعد النشر بناءً على عضويتهم في المجموعة.
  • استخدام ربط خارجي (left join) مع جدول policy_users للعثور على الحالات التي لم يقبل فيها المستخدم السياسة (pu.id IS NULL)، مما يضمن النظر فقط في قبولات السياسات الحالية وذات الصلة (غير الملغاة، وغير منتهية الصلاحية، وتتوافق مع الإصدار الحالي للسياسة).
  • تحديد أزواج topic_id و user_id مميزة، مما يشير إلى المواضيع التي تحتوي على سياسات لم يقبلها مستخدمون معينون.

نتائج مثال

الموضوع المستخدم
موضوع السياسة 1 user_1
موضوع السياسة 1 user_2
موضوع السياسة 2 user_1