Le premier badge "Like" ne peut pas être supprimé

Description : Un utilisateur m’a demandé de révoquer son badge « First Like » après qu’il ait lui-même retiré son « j’aime » d’une publication, mais le badge continuait d’être réattribué. Le contexte se trouve dans ma publication précédente dans la catégorie support.

Étapes reproductibles :

  1. Créer un nouvel utilisateur
  2. Liker une publication
  3. Recevoir le badge « First Like »
  4. Retirer son « j’aime » de la publication
  5. Basculer vers un utilisateur administrateur
  6. Accéder au panneau d’administration de l’utilisateur qui a liké la publication
  7. Visiter l’option « Modifier les badges »
  8. Cliquer sur « Révoquer » pour le badge « First Like »
  9. Attendre un peu (je ne suis pas sûr quand le travail de remplissage s’exécute pour ce badge particulier, mais une journée suffira sûrement. Peut-être essayer de déclencher tous les travaux liés aux badges dans Sidekiq pour accélérer le processus ?)
  10. Le badge est automatiquement réattribué à l’utilisateur, pour la même publication qui a été “dislikée” et à la même date que le like a été effectué.

J’ai identifié le problème à cette ligne de la requête SQL pour l’attribution du badge, car, bien que la ligne dans post_actions pour l’action de like existe toujours après avoir retiré le like, sa colonne deleted_at est définie avec une valeur de date, que la requête ne prend pas en compte. Je pense que la correction pour cela modifierait la clause WHERE de la sous-requête en :

      WHERE post_action_type_id = 2 AND
        pa.deleted_at IS NULL AND
        (:backfill OR pa.post_id IN (:post_ids) )

mais je n’ai pas d’environnement de développement configuré ni beaucoup de temps pour tester moi-même cette correction.

Priorité/Sévérité : J’ai résolu ce problème pour moi-même en supprimant déjà les lignes post_actions pertinentes, et je n’ai jamais reçu une telle demande auparavant. Je suppose que cela ne le rend pas très prioritaire ?

2 « J'aime »

Ils ont aimé une publication. Retirer son « j’aime » d’une publication ne change pas le fait qu’ils ont prouvé qu’ils savaient aimer une publication. Peut-être qu’ils sont éligibles pour un badge « First Unlike », mais maintenant qu’ils ont aimé une publication, ils ont aimé une publication. Ils obtiennent le badge pour avoir aimé une publication. On ne peut pas défaire ce qui est fait.

C’est ce que je suppose.

Votre solution était très astucieuse. Une autre façon de supprimer leur badge serait de supprimer l’utilisateur. :rofl:

2 « J'aime »

C’est vrai, mais je pense toujours qu’il est contre-intuitif que moi, en tant qu’administrateur, je ne puisse pas révoquer ce badge de l’utilisateur, même après qu’il ait retiré son « j’aime » du message. Il devrait au moins y avoir une sorte d’avis sur le bouton « Révoquer » dans la vue Modifier les badges, indiquant que le badge ne peut pas être révoqué ? Au lieu du comportement actuel, qui ré-accorde silencieusement le badge lors d’un travail de remplissage, faisant douter l’administrateur s’il a vraiment cliqué sur ce bouton ou non.

2 « J'aime »

D’accord.

Je pense que ma réponse aurait été quelque chose comme :

Je suis désolé, Dave. Je crains de ne pas pouvoir faire ça.

3 « J'aime »

Déplacé ceci vers la fonctionnalité, je suppose que la demande de fonctionnalité est :

Permettre de révoquer à 100 % un badge qui est réévalué
ou
Interdire aux administrateurs de révoquer des badges basés sur SQL / des badges à évaluation récurrente


Pour l’instant, ma recommandation est « ne le faites pas », mais l’expérience administrateur pourrait certainement être meilleure.

1 « J'aime »