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 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
De todos modos, hice un poco más de investigación
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: