Rapporto Dashboard - Policy non accettate

Questa è una versione SQL del report della dashboard per le policy non accettate.

:discourse: Questo report richiede che il plugin Discourse Policy sia abilitato.

Questo report della dashboard identifica gli argomenti con policy che non sono stati accettati da determinati utenti. Questo report aiuta gli amministratori a garantire che gli utenti rispettino le policy dei post, a identificare chi non ha accettato le policy richieste, a far rispettare le regole del forum, a gestire gli aggiornamenti delle policy e a confermare che gli utenti accettano le linee guida.

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

Spiegazione della query SQL

Questa query esegue le seguenti operazioni:

  • Unisce le tabelle post_policies, post_policy_groups, posts, topics e group_users per creare un elenco di argomenti e utenti soggetti alle policy dei post in base all’appartenenza al gruppo.
  • Utilizza un join sinistro con la tabella policy_users per trovare le istanze in cui un utente non ha accettato la policy (pu.id IS NULL), garantendo che vengano considerate solo le accettazioni delle policy correnti e pertinenti (non revocate, non scadute e corrispondenti alla versione corrente della policy).
  • Seleziona coppie distinte di topic_id e user_id, indicando argomenti con policy che non sono stati accettati da determinati utenti.

Risultati di esempio

argomento utente
Policy Topic 1 user_1
Policy Topic 1 user_2
Policy Topic 2 user_1