Le nombre de solutions dans le résumé affiche des valeurs incorrectes

Salut tout le monde,

Après avoir mis à jour notre instance Discourse, nous semblons avoir des montants incorrects pour les solutions lorsqu’on regarde les résumés de profil. Exemple :

J’ai déjà remarqué quelques changements récemment, y compris un bug majeur :

Les montants corrects sont évidemment toujours disponibles, il s’est donc probablement passé quelque chose lors de la migration des données vers les nouvelles tables ?

1 « J'aime »

Merci de nous avoir contactés. Je vais examiner la question.

1 « J'aime »

Il y a des divergences dans le décompte des solutions dans Discourse, car nous incluions des sujets et des publications qui ont déjà été supprimés.

Avant la migration, nous indiquions :

John a 27 solutions car les gens ont marqué son message comme solution 27 fois.

Ceci est stocké dans la table UserActions.

Après la migration, nous comptons maintenant :

John a 20 solutions car il y a 20 sujets dont ses messages sont des solutions.

Ceci est stocké dans la table SolvedTopics et a un lien direct vers un sujet existant et non supprimé.

Il y a une subtile différence ici - dans le premier scénario, il n’y avait aucune validation pour vérifier si le message solution ou son sujet existait toujours.

Je vais vérifier avec notre équipe quel est le meilleur nombre à afficher. Personnellement, je suis enclin à compter les solutions pour les sujets qui existent toujours.

3 « J'aime »

Je suis tout à fait certain que ce ne peut pas être le problème — car cela ne causerait que moins de chiffres plutôt que plus dans certains cas, n’est-ce pas ? J’ai un autre exemple pour vous :
→ Incorrect : Profile - SGS - Garuda Linux Forum
→ Correct :
L'image affiche une section de profil utilisateur indiquant que l'utilisateur a rejoint le 15 avril 2020, a lu 600 heures de contenu et a posté il y a 4 heures, avec une série actuelle de 5 jours consécutifs. (Légendé par l'IA)

Il me semble impossible que ce mécanisme de comptage puisse plus que doubler le nombre de messages résolus. De plus (bien que non confirmé, bien sûr), je doute fort que le nombre de messages supprimés ait été aussi élevé dans mon exemple précédent.

Merci !

Hmmm oui 485 et 90 sont trop éloignés.

Je crois avoir trouvé le bug (bien que la déclaration concernant la divergence que j’ai mentionnée ci-dessus soit toujours vraie) –

Dans l’implémentation précédente, le nombre de solutions dans le résumé de John est compté par le nombre de fois où quelqu’un a marqué le message de John comme solution

  def solved_count
    UserAction.where(user: @user).where(action_type: UserAction::SOLVED).count
  end

Dans la nouvelle implémentation, le nombre de solutions dans le résumé d’utilisateur de John est le nombre de fois où John a marqué un message comme solution

  def solved_count
    DiscourseSolved::SolvedTopic.where(accepter: @user).count
  end

Cela explique la grande différence. Le “nombre de solutions” a changé de définition, passant de “combien de fois vous avez répondu” à “combien de fois vous avez accepté”.

Je vais corriger le bug, merci encore pour le signalement !

Je mettrai également à jour les différentes méthodes de comptage utilisées dans la fenêtre contextuelle du profil et le résumé de l’utilisateur.

4 « J'aime »

Félicitations à @ondrej pour m’avoir également mentionné Solution badge not working?. Il semble que des divergences se produisaient déjà avant cette migration. L’avantage est que nous allons migrer vers un nombre plus cohérent sur Discourse et nos plugins.

4 « J'aime »

Magnifique, merci beaucoup ! :slight_smile:

4 « J'aime »

Ceci est maintenant corrigé et standardisé - FIX: Standardise the definition of what a solution is by nattsw · Pull Request #352 · discourse/discourse-solved · GitHub

4 « J'aime »

Ce sujet a été automatiquement fermé après 2 jours. Les nouvelles réponses ne sont plus autorisées.