O plugin Yearly Review continua criando novos tópicos

Olá!

Uma revisão anual foi criada no meu fórum. O tópico foi renomeado e, como o plugin de revisão anual verifica nomes de título idênticos para saber se deve criar uma nova revisão anual, ele criou outra 24 horas depois.

Eu deletei a nova, renomeei a primeira com o título padrão.

Mas o plugin ainda cria novos tópicos após 24 horas.

Aqui está o que o explorador de dados retorna:

SELECT created_at, title, fancy_title
FROM topics
WHERE title like '%2022%année en cours de révision%'
AND deleted_at IS NULL
ORDER BY created_at DESC
created_at title fancy_title
2023-01-04T14:52:19.345Z 2022 : l'année en cours de révision 2022 : l’année en cours de révision
2023-01-01T10:09:20.503Z 2022 : l'année en cours de révision 2022 : l’année en cours de révision

:information_source: Na verdade, ele criou novos tópicos 3 vezes, talvez devido a uma diferença entre uma aspa simples e uma aspa estilizada[1] no título, o que me forçou a fazer isso, daí a diferença de 3 dias nas datas e os apenas 2 resultados, mas eu gostaria de manter apenas o primeiro criado.

Alguma ideia de por que o plugin continua criando tópicos apesar de já existir um com o título padrão e como impedir que isso aconteça? E se eu desativá-lo e reativá-lo no final de 2023? Ele criará um tópico 24 horas após eu reativá-lo?
Além disso, essa não seria a solução mais elegante, então gostaria de saber exatamente de onde vem o problema :thinking:

Desativarei o plugin nos próximos dias/semanas até que o problema seja identificado e a criação de novas revisões anuais seja impedida.


  1. Veja a anedota aqui: A few questions about the yearly review plugin ↩︎

Você também alterou o autor para um usuário diferente?
O código procura por um tópico com esse título criado pelo usuário do sistema.

Oi!
Então, eu sou o co-administrador. Eu só mudei o nome. Eu não mudei o autor.
E se houver 2 tópicos com o mesmo nome e o usuário do sistema como autor? Ele pegaria o último?

Ele não “pega” um, ele verifica se tal tópico existe e, se não existir, ele o criará.
Se houver um ou dois (ou 999), ele não criará um novo.

Então, há algo errado em algum lugar, pois ele continua criando novos tópicos enquanto um já existe :thinking:

Como @Maxence_C disse, apenas o título foi alterado, então o autor ainda é @system.

Até onde eu sei, esta condição é atendida. :person_shrugging:

Você atualizou yearly_review.topic_title ou apenas renomeou o tópico?

Renomeamos o título do tópico da primeira revisão anual e, em seguida, o renomeamos de volta para o padrão mais de 24 horas após sua criação.
Não alteramos yearly_review.topic_title.

Se o título do tópico for uma correspondência exata do título que foi definido quando o tópico foi publicado inicialmente, a publicação de novos tópicos de revisão deve ser impedida por esta linha:

return if Topic.where(user: Discourse.system_user, title: title).exists?

A menos que a causa do problema seja que o título não é uma correspondência exata, talvez o problema esteja relacionado ao fato de o tópico ter sido publicado em francês. Seria ótimo saber o que está sendo definido como title aqui quando o job é executado:

title = I18n.t("yearly_review.topic_title", year: review_year)

Estou imaginando se ele está tentando comparar o título em inglês com o título em francês. O francês é o locale padrão no seu site?

Editar: se o tópico estiver sendo publicado com um título em francês, então title no código acima deve estar sendo definido em francês. Portanto, essa provavelmente não é a causa do problema.

Eles são idênticos, a menos que eu tenha perdido uma pequena diferença nos dois tópicos que o explorador de dados retornou. Posso fornecer mais dados, se necessário.

Devo executar isso no console do rails ou em outro lugar?

Sim, é.


Vou reativar o plugin para verificar novamente se consigo reunir mais informações sobre a próxima revisão anual criada (se houver uma).

Bem, eu acionei o job manualmente e ele criou um tópico. Acioná-lo novamente não criará uma nova revisão anual.

Eu poderia mover as respostas do primeiro tópico para o novo e excluir o primeiro, e isso contornaria o problema.

Mas estou muito curioso sobre o que está acontecendo aqui e por que os requisitos parecem não ser atendidos, apesar do que vejo no banco de dados.

Eu também. Não tenho certeza do que está acontecendo, mas parece que essa verificação de um tópico existente é um pouco instável:

return if Topic.where(user: Discourse.system_user, title: title).exists?

Gostaria de saber se alguém da equipe do Discourse tem ideias sobre como melhorá-la.

Ter que desabilitar o plugin para evitar a criação de vários tópicos não é uma boa abordagem. O plugin carrega um CSS que é usado para estilizar seus tópicos. Se o plugin for desabilitado, acho que o CSS não é carregado.

Apenas uma observação: o plugin foi atualizado com a nova tradução francesa, por isso criou outra nova revisão anual hoje :sweat_smile:
Copiei o título deste novo tópico, excluí-o e renomeei o original colando o título.
Veremos se ele cria um novo tópico amanhã, apesar da minha cópia e colagem do título bruto.

Obrigado por dar seguimento a isso. Confiar no título do tópico para evitar a criação de vários tópicos de revisão é uma abordagem muito instável (isso é culpa minha). Assim que janeiro terminar, o problema não voltará a surgir até o ano que vem. @JammyDodger, talvez você possa passar um recado para a equipe do Discourse para que eles estudem uma maneira melhor de evitar a criação de vários tópicos. Isso deve ser feito antes de janeiro de 2024. O tempo voa :slight_smile:

Acho que posso fazer isso. :slight_smile: :+1:

Apenas uma pequena atualização, acho que isso deve ser resolvido por: :partying_face: