Contagem resolvida no resumo exibindo valores incorretos

Olá a todos,

Após atualizar nossa instância do Discourse, aparentemente temos quantidades incorretas de “solved” ao olhar os resumos de perfil. Exemplo:

Eu já notei que houve algumas mudanças recentemente, incluindo um bug crítico:

As quantidades corretas ainda estão obviamente disponíveis, então provavelmente algo aconteceu durante a migração dos dados para as novas tabelas?

1 curtida

Obrigado por escrever. Vou dar uma olhada.

1 curtida

Existem algumas discrepâncias na contagem de soluções no Discourse, onde estávamos incluindo tópicos e postagens que já foram excluídos.

Antes da migração, estávamos indicando:

John tem 27 soluções porque as pessoas marcaram sua postagem como solução 27 vezes.

Isso é armazenado na tabela UserActions.

Após a migração, agora estamos contando:

John tem 20 soluções porque existem 20 tópicos onde suas postagens são soluções

Isso é armazenado na tabela SolvedTopics e tem um link direto para um tópico existente e não excluído.

Há uma diferença sutil aqui - no primeiro cenário, não havia validações para verificar se a postagem da solução ou seu tópico ainda existiam.

Verificarei com nossa equipe qual é o melhor número para exibir. Pessoalmente, estou inclinado a contar as soluções para tópicos que ainda existem.

3 curtidas

Tenho quase certeza de que este não pode ser o problema — pois isso só causaria menos números em vez de mais em alguns casos, correto? Tenho outro exemplo para você:
-> Errado: Profile - SGS - Garuda Linux Forum
-> Correto:
A imagem exibe uma seção de perfil de usuário mostrando que o usuário entrou em 15 de abril de 2020, leu 600 horas de conteúdo e postou há 4 horas, com uma sequência atual de 5 dias consecutivos. (Legenda por IA)

Parece impossível para mim que esse mecanismo de contagem mais do que dobre a quantidade de contagens de postagens resolvidas. Além disso (é claro que não confirmado), duvido muito que o número de postagens excluídas tenha sido tão alto no meu exemplo anterior.

Obrigado!

Hmmm sim 485 e 90 estão muito distantes.

Acredito que acabei de encontrar o bug (embora a afirmação sobre a discrepância que mencionei acima ainda seja verdadeira) –

Na implementação anterior, a contagem de soluções no resumo de John é contada pelo número de vezes que alguém marcou a postagem de John como solução

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

Na nova implementação, a contagem de soluções no resumo do usuário de John é o número de vezes que John marcou uma postagem como solução

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

Isso explica a grande diferença. “Contagem de soluções” mudou de definição de ‘quantas vezes você respondeu’ para ‘quantas vezes você aceitou’.

Corrigirei o bug, obrigado novamente pelo relatório!

Também atualizarei os diferentes métodos de contagem usados no popup de perfil e no resumo do usuário.

4 curtidas

Parabéns a @ondrej por também me mencionar Solution badge not working?. Parece que algumas discrepâncias já estavam acontecendo antes desta migração. O bom é que migraremos para um número mais consistente em todo o Discourse e em nossos plugins.

4 curtidas

Maravilha, muito obrigado! :slight_smile:

4 curtidas

Isso agora está corrigido e padronizado - FIX: Standardise the definition of what a solution is by nattsw · Pull Request #352 · discourse/discourse-solved · GitHub

4 curtidas

Este tópico foi fechado automaticamente após 2 dias. Novas respostas não são mais permitidas.