Une revue annuelle a été créée sur mon forum. Le sujet a été renommé, et comme le plugin de revue annuelle vérifie les titres identiques pour savoir s’il doit en créer une nouvelle, il en a créé une autre 24 heures plus tard.
J’ai supprimé la nouvelle, et renommé la première avec le titre par défaut.
Mais le plugin continue de créer de nouveaux sujets après 24 heures.
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
Il a en fait créé de nouveaux sujets 3 fois, peut-être à cause d’une différence entre une apostrophe et une apostrophe typographique dans le titre, d’où la différence de 3 jours et les 2 seuls résultats, mais j’aimerais ne conserver que le premier créé.
Des idées sur pourquoi le plugin continue de créer des sujets malgré l’existence d’un sujet avec le titre par défaut, et comment l’en empêcher ? Et si je le désactive et le réactive à la fin de 2023 ? Créera-t-il un sujet 24h après sa réactivation ?
De plus, ce ne serait pas la solution la plus élégante, donc j’aimerais savoir d’où vient exactement le problème
Je vais désactiver le plugin pour les prochains jours/semaines jusqu’à ce que le problème soit identifié et que la création de nouvelles revues annuelles soit empêchée.
Salut !
Je suis le co-administrateur. J’ai seulement changé le nom. Je n’ai pas changé l’auteur.
Que se passe-t-il s’il y a 2 sujets portant le même nom et ayant l’utilisateur système comme auteur ? Prendrait-il le dernier ?
Il n’en « prend » pas, il vérifie si un tel sujet existe, et si ce n’est pas le cas, il en crée un.
S’il y en a un ou deux (ou 999), il n’en créera pas de nouveau.
Nous venons de renommer le titre du premier sujet d’évaluation annuelle, puis nous l’avons renommé à nouveau avec le titre par défaut plus de 24 heures après sa création.
Nous n’avons pas modifié yearly_review.topic_title.
Si le titre du sujet correspond exactement au titre défini lors de la publication initiale du sujet, la publication de nouveaux sujets de révision devrait être empêchée par cette ligne :
return if Topic.where(user: Discourse.system_user, title: title).exists?
À moins que la cause du problème ne soit que le titre ne correspond pas exactement, peut-être que le problème est lié à la publication du sujet en français. Il serait utile de savoir ce qui est défini comme title ici lorsque le travail est exécuté :
title = I18n.t("yearly_review.topic_title", year: review_year)
Je me demande s’il essaie de faire correspondre le titre anglais au titre français. Le français est-il la locale par défaut sur votre site ?
Modification : si le sujet est publié avec un titre français, alors title dans le code ci-dessus doit être défini en français. Ce n’est donc probablement pas la cause du problème.
Ils sont identiques, à moins que je n’aie manqué une minuscule différence dans les deux sujets renvoyés par l’explorateur de données. Je peux fournir plus de données si nécessaire.
Dois-je exécuter cela dans la console rails ou ailleurs ?
Oui, il l’est.
Je vais réactiver le plugin pour vérifier à nouveau si je peux recueillir plus d’informations sur la prochaine revue annuelle créée (s’il y en a une).
Eh bien, j’ai déclenché manuellement le job, et il a créé un sujet. Le déclencher à nouveau ne créera pas un nouveau bilan annuel.
Je pourrais déplacer les réponses du premier sujet vers le nouveau, et supprimer le premier, et cela devrait contourner le problème.
Mais je suis très curieux de savoir ce qui se passe ici et pourquoi les exigences semblent ne pas être satisfaites malgré ce que je vois dans la base de données.
Moi aussi. Je ne suis pas sûr de ce qui se passe, mais il semble que cette vérification de l’existence d’un sujet soit un peu instable :
return if Topic.where(user: Discourse.system_user, title: title).exists?
Je me demande si quelqu’un de l’équipe Discourse a des idées sur la façon de l’améliorer.
Devoir désactiver le plugin pour empêcher la création de plusieurs sujets n’est pas une bonne approche. Le plugin charge du CSS qui est utilisé pour styliser ses sujets. Si le plugin est désactivé, je ne pense pas que le CSS soit chargé.
Juste une note : le plugin a été mis à jour avec la nouvelle traduction française, c’est pourquoi il a créé un nouveau bilan annuel aujourd’hui
J’ai copié le titre de ce nouveau sujet, l’ai supprimé et renommé l’original en collant le titre.
Nous verrons s’il crée un nouveau sujet demain malgré mon copier-coller du titre brut.
Merci d’avoir fait un suivi. S’appuyer sur le titre du sujet pour éviter de créer plusieurs sujets de révision est une approche vraiment fragile (c’est de ma faute.) Une fois janvier terminé, le problème ne se posera plus avant l’année prochaine. @JammyDodger, peut-être pourriez-vous transmettre une note à l’équipe Discourse pour qu’elle cherche une meilleure façon d’empêcher la création de sujets multiples. Cela devrait être fait avant janvier 2024. Le temps passe vite