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.
¿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.
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.
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».
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í):
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).
¡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ó:
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í
Ok, así que Moin y yo estábamos charlando sobre este caso hoy, y ella mencionó que quizás hay un error al usar la frecuencia mensual porque la duración de un mes varía. Por supuesto que tenía razón… en cierto modo
De todos modos, investigué un poco más
En realidad no pude encontrar el script de automatización para schedule pm with data-explorer results en la carpeta plugins/automation/lib/discourse_automation/scripts de core, así que debe estar oculto en otro lugar.
Pero estuve revisando la lógica aquí para los eventos recurrentes (presumiblemente ese script la utiliza) en plugins/automation/lib/discourse_automation/triggers/recurring.rb:
Creo que el código subyacente para las automatizaciones recurrentes mensuales 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 la RRule, la automatización fuerza una alineación por 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 resulta ser el 3er miércoles de abril), el sistema interpreta la regla como: ejecutar el 3er miércoles de cada mes.
Cuando llega mayo, el 3er miércoles es el 20 de mayo, lo que hace que la programación se desvíe 5 días.
Además, si configuras una automatización el 30 o 31 de un mes (por ejemplo, el “5º martes”), el sistema buscará el 5º martes del mes siguiente. Si ese mes solo tiene 4 martes, la automatización no encontrará una fecha válida y omitirá silenciosamente todo el mes.
Tengo una corrección probada y estoy preparando una PR por si el equipo quiere revisarla. Cambia la lógica de N-ésimo día de la semana a 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 corrección lógica
Crea exactamente 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 buscara el 4º jueves en lugar de una fecha real.
También puedes probar el mismo resultado en la consola de rails
Edición: parece que el error afecta a cualquier script de automatización que utilice el disparador recurring configurado para ejecutarse cada mes.
También puedo reproducir el banner vacío a veces; por ejemplo, si configuras la fecha de inicio para el 29 de abril de 2026, entonces no puede encontrar el 5º miércoles de mayo porque no existe: la automatización fallará al activarse aquí (sin corregir a la izquierda, corregido a la derecha):
Parece que el error lanza un NoMethodError en rails cuando no puede encontrar el N-ésimo día de la semana como en el ejemplo anterior; de ahí el banner de próxima activación vacío y la ejecución fallida:
Solo señalando que en algún momento durante la depuración se me ocurrió que el comportamiento existente podría ser intencional (dado que las pruebas de especificación estaban configuradas con días variables). Sin embargo, argumentaría que los administradores que configuran esta automatización probablemente esperan el día del mes calendario y no el N-ésimo día del mes. Además, omitir meses en una automatización cuando no se puede encontrar el N-ésimo día del mes es problemático.
Edición: acabo de agregar una corrección para un caso extremo y pruebas de especificación para cuando no se encuentra una coincidencia exacta de fecha para el próximo mes; en ese caso, se pasa al último día del mes (es decir, 31 de enero → 28 de febrero). También se tiene en cuenta los años bisiestos.
Muchas gracias por ocuparte de esto. No sé si tu corrección ya se ha fusionado y si resolverá el problema de la fecha del mes. Sin embargo, supongo que si actualizo el disparador para cada mes, debería funcionar, ¿verdad?
En otras palabras, tendría que actualizar específicamente el disparador para ese día concreto de cada mes y entonces se activará. Si entendí bien, el problema ocurría cuando intentaba elegir el día por sí mismo. Espero que tu corrección lo solucione… vi que el bot por lotes te estaba dando un desafío, pero espero que todo salga bien. ¡Gracias una vez más por tu ayuda!
Lo siento, mi PR aún no ha sido fusionado y está a la espera de una revisión final por parte de un miembro del equipo. Por ahora, puedes intentar actualizar el disparador con una fecha diferente; solo asegúrate de que, al configurarlo, el mensaje de «próximo disparador» que aparece indique la próxima fecha de ejecución mensual correcta.