El plugin Yearly Review sigue creando nuevos temas

Hola!

Se creó una revisión anual en mi foro. El tema fue renombrado y, dado que el plugin de revisión anual verifica nombres de título idénticos para saber si debe crear una nueva revisión anual, creó otra 24 horas después.

Eliminé la nueva y renombré la primera con el título predeterminado.

Pero el plugin sigue creando temas nuevos después de 24 horas.

Esto es lo que devuelve el explorador de datos:

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: En realidad creó temas nuevos 3 veces, quizás debido a una diferencia entre una comilla y una comilla elegante[1] en el título, por lo que tuve que hacerlo, de ahí la diferencia de 3 días en la fecha y los 2 resultados, pero me gustaría conservar solo el primero creado.

¿Alguna idea de por qué el plugin continúa creando temas a pesar de tener uno existente con el título predeterminado y cómo evitar que lo haga? ¿Qué pasaría si lo desactivo y lo vuelvo a activar al final de 2023? ¿Creará un tema 24 horas después de que lo reactive?
Además, esa no sería la solución más elegante, así que me gustaría saber dónde está exactamente el problema :thinking:

Desactivaré el plugin durante los próximos días/semanas hasta que se identifique el problema y se eviten las nuevas creaciones de revisiones anuales.


  1. Ver la anécdota aquí: A few questions about the yearly review plugin ↩︎

1 me gusta

¿También cambiaste el autor a un usuario diferente?
El código busca un tema con ese título creado por el usuario del sistema.

1 me gusta

¡Hola!
Soy el coadministrador. Solo he cambiado el nombre. No he cambiado el autor.
¿Qué pasa si hay 2 temas con el mismo nombre y el usuario del sistema como autor? ¿Tomaría el último?

1 me gusta

No “toma” uno, comprueba si existe dicho tema y, si no existe, creará uno.
Si hay uno o dos (o 999), no creará uno nuevo.

2 Me gusta

Así que algo anda mal en alguna parte, ya que sigue creando nuevos temas mientras ya existe uno :thinking:

1 me gusta

Como dijo @Maxence_C, solo se cambió el título, por lo que el autor sigue siendo @system.

Hasta donde sé, esta condición se cumple. :person_shrugging:

3 Me gusta

¿Actualizaste yearly_review.topic_title o solo cambiaste el nombre del tema?

1 me gusta

Acabamos de cambiar el título del primer tema de revisión anual y luego lo volvimos a cambiar al valor predeterminado más de 24 horas después de su creación.
No cambiamos yearly_review.topic_title.

3 Me gusta

Si el título del tema coincide exactamente con el título que se estableció cuando el tema se publicó inicialmente, se debería evitar la publicación de nuevos temas de revisión con esta línea:

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

A menos que la causa del problema sea que el título no coincide exactamente, tal vez el problema esté relacionado con que el tema se publique en francés. Sería genial saber qué se está estableciendo como title aquí cuando se ejecuta el trabajo:

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

Me pregunto si está intentando comparar el título en inglés con el título en francés. ¿Es el francés el idioma predeterminado en su sitio?

Editar: si el tema se está publicando con un título en francés, entonces title en el código anterior debe establecerse en francés. Por lo tanto, es poco probable que esa sea la causa del problema.

4 Me gusta

Son idénticos, a menos que me haya perdido una pequeña diferencia en los dos temas que Data Explorer devolvió. Puedo proporcionar más datos si es necesario.

¿Debo ejecutar eso en la consola de Rails o en otro lugar?

Sí, lo es.


Volveré a habilitar el plugin para verificar nuevamente si puedo recopilar más información sobre la próxima revisión anual creada (si la hay).

2 Me gusta

Bueno, activé el trabajo manualmente y creó un tema. Activarlo de nuevo no creará una revisión anual.

Podría mover las respuestas del primer tema al nuevo y eliminar el primero, y eso debería solucionar el problema.

Pero tengo mucha curiosidad por saber qué sucede aquí y por qué los requisitos no parecen cumplirse a pesar de lo que veo en la base de datos.

1 me gusta

Yo también. No estoy seguro de lo que está pasando, pero parece que esta verificación de un tema existente es un poco inestable:

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

Me pregunto si alguien del equipo de Discourse tiene ideas sobre cómo mejorarla.

Tener que deshabilitar el plugin para evitar que se creen varios temas no es un buen enfoque. El plugin carga algo de CSS que se utiliza para estilizar sus temas. Si el plugin está deshabilitado, no creo que el CSS se cargue.

2 Me gusta

Solo una nota: el plugin se actualizó con la nueva traducción al francés, por lo que creó otra revisión anual nueva :sweat_smile:
He copiado el título de este nuevo tema, lo he eliminado y he renombrado el original pegando el título.
Veremos si crea un nuevo tema mañana a pesar de mi copia y pega del título en bruto.

3 Me gusta

Gracias por dar seguimiento a esto. Confiar en el título del tema para evitar la creación de múltiples temas de revisión es un enfoque muy inestable (eso es culpa mía). Una vez que termine enero, el problema no volverá a surgir hasta el próximo año. @JammyDodger, tal vez podrías pasarle una nota al equipo de Discourse para que investiguen cómo encontrar una mejor manera de evitar la creación de múltiples temas. Eso debería hacerse antes de enero de 2024. El tiempo vuela :slight_smile:

9 Me gusta

Creo que puedo hacerlo. :slight_smile: :+1:

5 Me gusta

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

Solo una pequeña actualización, creo que esto debería solucionarse con: :partying_face:

1 me gusta