Les requêtes de badges utilisant la table "badge_posts" ne sont pas attribuées pour les catégories non publiques

L’un de nos utilisateurs possédait 5 badges « Réponse appréciée » (100 posts aimés et 100 likes donnés). Ensuite, nous avons déplacé certains sujets vers une catégorie privée, et maintenant il n’en a plus que 3. Il semble que la requête de badge ne compte pas les likes donnés ou reçus sur les sujets déplacés, peut-être parce qu’ils ont été déplacés ou parce qu’ils sont désormais privés.

En déboguant cela, j’ai copié la requête de badge dans Data Explorer :

select p.user_id, p.id post_id, current_timestamp granted_at
from badge_posts p
where p.post_number > 1
and p.like_count >= 10

La requête ci-dessus ne retourne que 3 résultats pour l’utilisateur, alors qu’il devrait y en avoir 5. J’ai remarqué qu’elle utilise la table « badge_posts ». Je ne trouve pas la table badge_posts dans l’arbre de vue de Data Explorer. J’ai donc remplacé « badge_posts » par « posts », et elle retourne alors 5 comme prévu.

D’où provient la table « badge_posts », et la requête de badge ne devrait-elle pas utiliser la table « posts » à la place ?

1 « J'aime »

Cette table m’a longtemps posé problème. Elle est définie ici : discourse/lib/badge_posts_view_manager.rb at main · discourse/discourse · GitHub. Il s’agit d’une vue PostgreSQL. À ma connaissance, une vue est un nom attribué à une requête.

Les messages de la vue badge_posts sont les messages visibles qui ne se trouvent pas dans des catégories à lecture restreinte. Lorsque vous avez déplacé vos sujets vers une catégorie privée, vous avez retiré leurs messages de la vue badge_posts.

6 « J'aime »

Notre catégorie privée n’est pas vraiment privée : il suffit d’accepter une politique pour y accéder. Je souhaiterais donc inclure les publications de cette catégorie. Je pense que je devrais créer un badge personnalisé similaire à « Bonne réponse » (ainsi que « Bonne réponse » et « Excellente réponse »), mais en utilisant les publications plutôt que badge_posts.

2 « J'aime »

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.