Plugin de Resposta a Perguntas

Isso estava ocorrendo em todos os tópicos, não apenas nos de QnA. Temos uma categoria ‘Perguntas’ onde todos os tópicos são de QnA, e também usamos a tag ‘pergunta’ para tornar um tópico de QnA.

O comportamento está um pouco diferente agora, porém. Antes, a ordem de classificação os fixava no final da lista; agora, eles ainda estão fora de ordem, mas as postagens mais novas estão abaixo deles.

1 curtida

Obrigado, @AJDurant.

Um de nossos clientes enfrentou esse problema, então pude analisar mais de perto um conjunto de dados onde ele estava ocorrendo. Acredito que um dos problemas aqui possa ser a forma como os tópicos onde uma tag de QA é removida são tratados.

Iniciei um PR que aborda esse problema, no qual @mbcahyono e eu trabalharemos:

A maneira de corrigir o problema para um tópico específico é:

./launcher enter app
rails c
topic = Topic.find(<topic_id>) 
topic.posts.each { |p| p.update_columns(sort_order: p.post_number) }

Se alguém precisar de ajuda prática para resolver esse problema no seu servidor, entre em contato comigo em particular e posso ajudá-lo a resolvê-lo (sem custo).

1 curtida

Desculpe por não ter respondido antes. Estive viajando esta semana. Posso confirmar que o código acima está corrigindo os posts individuais com problemas.

Também confirmei que executar o seguinte comando NÃO resolve o problema

rake "posts:reorder_posts[1234]"

Existe uma maneira de executar isso em todos os posts — basicamente, iterar sobre todos os posts?

E você acabou de executar rake posts:reorder_posts sozinho e não funcionou? Por favor, tente isso novamente primeiro.

Se isso não funcionar, você pode executar o seguinte:

./launcher enter app
rails c
Post.update_all("sort_order = post_number")

Já identificamos qual é o problema. Ele foi introduzido em agosto. Em breve, lançaremos uma correção para isso, com um teste para o caso.

2 curtidas

Executei o comando acima e obtive o seguinte erro:

root@REMOVE-web-only:/var/www/discourse# rake posts:reorder_posts
rake aborted!
PG::UniqueViolation: ERROR:  duplicate key value violates unique constraint "post_timings_unique"
DETAIL:  Key (topic_id, post_number, user_id)=(1567, 20, 3) already exists.
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-mini-profiler-2.2.0/lib/patches/db/pg.rb:110:in `exec'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-mini-profiler-2.2.0/lib/patches/db/pg.rb:110:in `async_exec'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/mini_sql-0.3/lib/mini_sql/postgres/connection.rb:201:in `run'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/mini_sql-0.3/lib/mini_sql/postgres/connection.rb:173:in `exec'
/var/www/discourse/lib/tasks/posts.rake:368:in `block (3 levels) in <main>'
/var/www/discourse/lib/tasks/posts.rake:351:in `each'
/var/www/discourse/lib/tasks/posts.rake:351:in `block (2 levels) in <main>'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.3/lib/active_record/connection_adapters/abstract/database_statements.rb:280:in `block in transaction'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.3/lib/active_record/connection_adapters/abstract/transaction.rb:280:in `block in within_new_transaction'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.3/lib/active_record/connection_adapters/abstract/transaction.rb:278:in `within_new_transaction'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.3/lib/active_record/connection_adapters/abstract/database_statements.rb:280:in `transaction'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.3/lib/active_record/transactions.rb:212:in `transaction'
/var/www/discourse/lib/tasks/posts.rake:312:in `block in <main>'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'
Tasks: TOP => posts:reorder_posts
(See full trace by running task with --trace)

Não executei o segundo comando assim que vi o erro de chave duplicada, pensando que isso poderia ser um problema maior.

Isso parece ser um problema no seu banco de dados que é independente disso, mas está impedindo uma correção aqui. Entrarei em contato com você em breve para que possamos depurar isso separadamente.

2 curtidas

Obrigado @angus, parece que tudo está funcionando corretamente agora :smiley:

Executando a versão mais recente e observando os seguintes erros.

Mensagem (49 cópias relatadas)

Exceção no Job: constante Jobs::QaUpdateTopicsPostOrder não inicializada
Você quis dizer? Jobs::UpdateTopicPostOrder
Jobs::QAUpdateTopicsPostOrder

Backtrace

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/inflector/methods.rb:284:in const_get' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/inflector/methods.rb:284:in block in constantize’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/inflector/methods.rb:280:in each' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/inflector/methods.rb:280:in inject’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/inflector/methods.rb:280:in constantize' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/core_ext/string/inflections.rb:68:in constantize’
/var/www/discourse/app/jobs/base.rb:288:in enqueue' /var/www/discourse/app/jobs/onceoff/onceoff.rb:40:in block in enqueue_all’
/var/www/discourse/app/jobs/onceoff/onceoff.rb:37:in each' /var/www/discourse/app/jobs/onceoff/onceoff.rb:37:in enqueue_all’

Desculpe pelo problema. Estamos trabalhando nisso, aguardando a mesclagem:

1 curtida

Legal, estou animado para ver isso mesclado e aguardo a correção. Boas festas.

Qual é a função da configuração “Formato um-para-muitos de QnA”, encontrada nas configurações de categoria?

1 curtida

É um recurso obsoleto, que removeremos do Plugin QnA em breve. Esse recurso agora possui seu próprio plugin dedicado

2 curtidas

Como remover seu voto? Nas opções, há uma configuração sobre quanto tempo você tem para desfazer o voto, mas não vejo como fazer isso na prática.

1 curtida

Existem bons exemplos desse plugin sendo usado na prática? Adoraria vê-lo em ação!

Selecione o texto amarelo “Desfazer seu upvote” — veja a captura de tela abaixo.

Percebi alguns pontos de feedback:

  1. O ícone de up para votar não está respeitando o tema escuro (veja a captura de tela)
  2. A posição da minha flair nos comentários de respostas está incorreta (veja a captura de tela)
  3. O estilo do botão de informação não é ruim, mas não combina muito com o restante da página e ocupa espaço horizontal. Talvez uma abordagem diferente, como um pequeno link de texto no canto superior direito ou ao lado da categoria e da tag, funcione melhor?
  4. O link “Desfazer seu upvote” não parece claramente um link
  5. A configuração de administrador qa trust level vote limits está desmarcada por padrão, mas ainda recebo o erro “Você não pode exceder o número de votos permitidos para seu nível de confiança”, o que não faz sentido?
  1. Existe apenas um botão “Comentar” na primeira postagem e as respostas não exibem esse botão na parte inferior?

Isso está correto por design ou há um erro no meu tema?

  1. O botão de upvote está desalinhado; acho que isso pode ser corrigido com CSS (vou tentar fazer isso).

Obrigado!

Podemos recuperar a ordem normal das postagens desinstalando o plugin?

Vejo que o bug relatado anteriormente realmente bagunçou nossas conversas :neutral_face:

Sim, parece haver um conflito entre este plugin e o Solved Plugin, ou seja, o elemento “Solução” em sua captura de tela. Este plugin ainda não oferece suporte oficial ao Solved Plugin.

Sim, basta desativar o plugin em uma categoria onde ele está habilitado e as postagens voltarão à sua ordem normal.

1 curtida

Obrigado por este plugin! Uma pergunta: o que acontece com o conteúdo se o plugin for removido? Fica claro que os votos e a ordenação especial das respostas desaparecerão, mas o que aconteceria com as “respostas” e “comentários” de cada resposta? Elas permanecerão ou desaparecerão?

O motivo da minha pergunta é que começamos a usar este plugin para construir um guia colaborativo do usuário. Ter comentários para cada resposta é muito conveniente. Os votos são promissores também, mas e se eles vierem com consequências não intencionais e quisermos nos livrar deles? Seria uma pena perder o guia porque queremos remover os votos.

No pior cenário, acho que poderíamos remover a interface de votação via CSS, mantendo o plugin.

1 curtida

Ótima pergunta.

Comentários e respostas são apenas posts aparecendo em uma ordem diferente. Eles serão mantidos.

Se você quiser desinstalar o plugin, basta desmarcar “Tornar todos os tópicos nesta categoria QnA” nas configurações da categoria. Isso reverterá todos os posts para sua ordem original.

Por exemplo, acabei de reverter a categoria QnA em try.thepavilion.io para sua ordem padrão (ou seja, cronológica (mudará novamente em 24 horas).

https://try.thepavilion.io/t/whats-it-like-to-be-a-bat/22

2 curtidas

Ok, saber disso é encorajador. Tentaremos o plugin e, se os votos não cumprirem sua missão, teremos duas opções para removê-los: a leve via CSS e a pesada desativando o plugin. Nenhum conteúdo perdido. Ótima adaptação dos componentes principais do Discourse!

A propósito, só para constar, estamos usando seu plugin para criar um guia de vídeo colaborativo de um produto, onde as pessoas são convidadas a vincular vídeos que criaram sobre aspectos deste produto. Personalizamos alguns rótulos para que funcione. Veja Bitwig Video Guide - Bitwish (acabamos de começar, então está quase vazio; além disso, a maioria das subcategorias está silenciada e é por isso que parece mais vazio para usuários anônimos).

3 curtidas