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 ↩︎

1 curtida

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.

1 curtida

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?

1 curtida

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.

2 curtidas

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

1 curtida

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:

3 curtidas

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

1 curtida

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.

3 curtidas

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.

4 curtidas

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).

2 curtidas

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.

1 curtida

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.

2 curtidas

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.

3 curtidas

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:

9 curtidas

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

5 curtidas

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.

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

1 curtida