La automatización recurrente mensual activada no se está ejecutando como se esperaba

¡Hola!

He tenido un problema con una automatización que debería activarse al inicio del mes; sin embargo, aunque está habilitada, no se activa automáticamente. No puedo encontrar registros ni una forma de depurar por qué no se ejecuta por sí sola cuando se espera que lo haga. ¿Alguien sabe cómo podría resolver este problema, por favor?

Como pueden ver a continuación, la automatización debería ‘Programar una reunión con los resultados del Explorador de datos’ automáticamente cada mes. Si hago clic en “Ejecutar ahora”, funciona como se espera: los usuarios añadidos a la lista recibirán los resultados del Explorador de datos, así como un archivo CSV; sin embargo, el disparador automático no se está ejecutando.

Agradecería cualquier comentario o sugerencia que puedan ofrecerme para resolver esto. ¡Gracias!

1 me gusta

¿Confirmaste la fecha programada exacta y la configuración de la zona horaria y, si está disponible, activaste el botón Ejecutar trabajos omitidos?

1 me gusta

¿Has realizado alguna prueba para asegurarte de que se cumplen todos los criterios de forma natural (además de trigger now)?

Es decir, configura la programación para que ocurra diariamente y envíala a un grupo de prueba. Si funciona correctamente, cambia luego a mensual para tu grupo real.

Además, creo que tu público objetivo necesita tener la consulta del explorador de datos compartida con ellos.

1 me gusta

Hola

Gracias por la ayuda.. @kairo162 @putty

Sí.. pero el problema no es que no se esté ejecutando en la fecha/hora programada, el problema es que no se está ejecutando en absoluto.

¿Dónde puedo encontrar este botón, por favor?

Se supone que debe enviar un mensaje privado directo a dos usuarios. Los usuarios tienen la consulta compartida con ellos. Gracias por la sugerencia de probar con diferentes horarios. Intentaré experimentar también usando un grupo de prueba.

2 Me gusta

La principal diferencia que noto es que tu interfaz no muestra cuándo debería activarse la automatización a continuación.

Creo que lo primero que haría sería configurar una nueva automatización con la misma configuración y verificar si, tras activarla, aparece una «fecha de activación siguiente».

1 me gusta

Uso este mismo script de automatización en varios lugares sin problemas. Aquí está mi configuración en uno de ellos: cambié la recurrencia a 5 minutos en lugar de una semana para esta prueba, pero se dispara semanalmente como se espera cuando se configura así):

PM (tech-admin es un grupo)

Intenta activar la automatización y luego revisa tus registros en yoursite/logs

1 me gusta

Veo esto:

Quizás intentes eliminar el emoji de los controles deslizantes del nombre del script y del título de la consulta del explorador de datos. Eso podría estar rompiendo la carga (aunque creo que deberían estar bien).

1 me gusta

Hola @Moin @Lilly

¡Gracias por la ayuda! Me temo que el misterio aún no se ha resuelto… esto es lo que sucede:

Antes de la «fecha de activación», era exactamente así como se veía con el mensaje «La próxima automatización se activará en: [fecha/hora]»; sin embargo, después de que esa fecha/hora pasó sin que se ejecutara correctamente, el mensaje ya no aparece. Durante las pruebas, cambié el tiempo a 1 minuto y el mensaje de activación volvió a aparecer. En un mes anterior en el que no se activó, actualicé el temporizador y apareció el mensaje de que se activaría en la primera hora del próximo mes (pero no lo hizo).

En realidad funcionó y se activó en algunos meses, pero no en otros, por lo que no está claro por qué. Ahora, sin embargo, parece que ya no se activa automáticamente nunca. ¿Qué versión de Discourse están usando? La mía es 2026.5.0-latest…

Desafortunadamente, incluso cuando activo, no aparece nada en /logs. (Tengo seleccionadas todas las opciones).

No creo que sea ese el problema, porque cambié la activación a 1 minuto y se envió:

Yo también estoy en la misma y actualizo al menos semanalmente.

1 me gusta

¡De acuerdo, gracias! ¿Te gustaría intentar crear una automatización de prueba que se active mensualmente?

Tengo la sensación de que el problema está en el disparador ‘mensual’, ya que cuando lo cambio a un disparador de 1 minuto, funciona.

Vale, lo configuré para un mes, luego la ejecuté y funcionó. Pero esperar un mes para probar no es realmente útil aquí. Intentaré ajustar la fecha de inicio en unos minutos.

edición: lo mensual parece estar funcionando para mí

Si te está funcionando a ti, ¿quizás el error solo afecta a algunos usuarios?

Ok, así que Moin y yo estuvimos charlando sobre este caso hoy, y ella mencionó que quizás haya un error al usar la frecuencia mensual, ya que la duración de un mes varía. Por supuesto, tenía razón… en cierto modo :stuck_out_tongue:

De todos modos, hice un poco más de investigación :detective:

No pude encontrar el script de automatización para schedule pm with data-explorer results en la carpeta plugins/automation/lib/discourse_automation/scripts del núcleo, así que debe estar escondido en otro lugar.

Pero estuve revisando la lógica aquí para las ejecuciones recurrentes (presumiblemente ese script la utiliza) en plugins/automation/lib/discourse_automation/triggers/recurring.rb:

Creo que el código subyacente para las automatizaciones mensuales recurrentes está calculando el N-ésimo día de la semana en lugar de la fecha real del calendario, y hay una discrepancia lógica con Calendar day. Al inyectar BYDAY=#{count}#{byday} en el RRule, la automatización fuerza una alineación basada en el día de la semana, cuando debería usar BYMONTHDAY en lugar de BYDAY.

Así que si configuras una automatización para que comience el 15 de abril (que casualmente es el tercer miércoles de abril), el sistema interpreta la regla como: ejecutar el tercer miércoles de cada mes.

Cuando llega mayo, el tercer miércoles es el 20 de mayo, lo que hace que el programa se desvíe 5 días.

Además, si configuras una automatización el 30 o 31 de un mes (por ejemplo, el “quinto martes”), el sistema buscaría el quinto martes del mes siguiente. Si ese mes solo tiene cuatro martes, la automatización no encontrará una fecha válida y saltará silenciosamente todo el mes.

Tengo una corrección probada y estoy preparando un PR por si el equipo quiere revisarla. Cambia la lógica de N-ésimo día de la semana a la fecha exacta del calendario.


Aquí hay algunas capturas de pantalla de mis pruebas y depuración:

Dos instancias, una sin la corrección y la otra con mi solución lógica

Crea la misma automatización en ambas (la versión corregida está a la derecha):

Observa las diferencias en los banners que dicen “La próxima automatización se activará en:” con un desvío de 5 días: la versión sin parche se desvía hacia el tercer miércoles (20 de mayo), en lugar del 15 de mayo.

Por ejemplo, los meses podrían omitirse por completo si se buscaba el cuarto jueves en lugar de una fecha real.

También puedes probar el mismo resultado en la consola de Rails:

Sin parche:

Con la corrección:

PR aquí:

1 me gusta

@j.jaffeux ¿te importaría echarle un vistazo rápido :eyes:?