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