월 초에 트리거가 발동되어야 하는 자동화 기능에서 문제가 발생하고 있습니다. 자동화가 활성화되어 있음에도 불구하고 자동으로 트리거가 발동되지 않습니다. 예상대로 자동으로 실행되지 않는 이유를 디버깅할 수 있는 로그나 방법을 찾을 수 없습니다. 이 문제를 해결하는 방법을 아시는 분이 계신가요?
아래에서 보실 수 있듯이, 이 자동화는 매월 자동으로 '데이터 탐색기 결과를 포함하여 PM 일정 잡기’를 수행해야 합니다. '지금 트리거’를 클릭하면 예상대로 작동합니다: 목록에 추가된 사용자는 데이터 탐색기 결과와 CSV 파일을 모두 받게 됩니다. 그러나 자동 트리거는 실행되지 않습니다.
지금 실행(trigger now) 기능을 제외하고, 모든 기준이 자연스럽게 충족되는지 확인하기 위해 테스트를 해보셨나요? 예를 들어, 일일 실행으로 시간을 설정하고 더미 그룹으로 이동하여 테스트해 보세요. 올바르게 작동한다면, 실제 그룹으로 변경하여 월간 실행으로 전환해 보세요.
도와주셔서 감사합니다! 하지만 아직 미스터리가 해결되지 않은 것 같습니다… 그 이유는 다음과 같습니다:
‘트리거 날짜’ 이전에는 '다음 자동화 트리거 시각: [날짜/시간]'이라는 메시지와 함께 정확히 그렇게 보였습니다. 하지만 해당 날짜/시간이 성공적으로 실행되지 않고 지나가면 메시지가 표시되지 않습니다. 테스트 중에 타이밍을 1분으로 변경했는데, 트리거 메시지가 다시 나타났습니다. 트리거가 작동하지 않았던 이전 달의 경우, 타이머를 업데이트했는데 다가오는 달의 첫 번째 시점에 트리거가 될 것이라는 메시지가 표시되었습니다(하지만 실제로는 작동하지 않았습니다).
oke, Moin과 오늘 이 케이스에 대해 이야기를 나눴는데, 그녀가 월간 반복 설정을 사용할 때 버그가 있을 수 있다고 언급했어요. 월의 길이가 달라지니까요? 물론 그녀가 맞긴 했는데… 일부러 말이에요.
어쨌든, 조금 더 파고들었어요.
schedule pm with data-explorer results 자동화 스크립트를 코어 plugins/automation/lib/discourse_automation/scripts 폴더에서 실제로 찾을 수 없었으니, 다른 곳에 숨겨져 있는 것 같습니다.
하지만 plugins/automation/lib/discourse_automation/triggers/recurring.rb의 반복(recurring) 로직을 살펴보고 있었는데(아마 해당 스크립트가 이 로직을 사용 중일 겁니다):
월간 반복 자동화의 기본 코드가 실제 달력 날짜 대신 N번째 요일을 계산하고 있으며, Calendar day와 로직이 일치하지 않는다고 생각합니다. RRule에 BYDAY=#{count}#{byday}를 주입함으로써 자동화가 요일 정렬을 강제하고, 대신 BYMONTHDAY를 사용해야 합니다.
즉, 자동화를 4월 15일(4월의 3번째 수요일)에 시작하도록 설정하면 시스템은 규칙을 매월 3번째 수요일에 실행한다고 해석합니다.
5월이 되면 3번째 수요일은 5월 20일이므로, 스케줄이 5일만큼 어긋나게 됩니다.
더 나아가, 자동화를 매월 30일이나 31일(예: “5번째 화요일”)에 설정하면 시스템은 다음 달의 5번째 화요일을 찾게 됩니다. 만약 해당 달에 화요일이 4번밖에 없다면, 자동화는 유효한 날짜를 찾지 못해 해당 월 전체를 조용히 건너뜁니다.
테스트한 수정안이 있으며, 팀이 검토하기를 원한다면 PR을 만들 예정입니다. 이 수정안은 로직을 N번째 요일에서 정확한 달력 날짜로 변경합니다.
디버깅 중 한 시점에서 기존 동작이 의도된 것일 수 있다는 생각이 들었습니다 (스펙 테스트가 날짜가 밀리는 방식으로 설정되어 있었기 때문이죠). 하지만 이 자동화를 설정하는 관리자들은 날짜를 달력 기준의 월(N월)로, N번째 날짜로 해석하는 것이 아닌 것으로 기대할 가능성이 높다고 생각합니다. 그리고 N번째 날짜를 찾지 못할 때 해당 월을 건너뛰는 동작은 문제가 됩니다.
수정: 다음 달에 정확한 날짜 매칭을 찾을 수 없는 경우, 해당 월의 마지막 날짜로 이동하도록 하는 엣지 케이스 수정과 스펙 테스트를 추가했습니다 (예: 1월 31일 → 2월 28일). 또한 윤년을 고려하도록 했습니다.
이 문제를 조사해 주셔서 정말 감사합니다. 수정 사항이 병합되었는지, 그리고 월별 날짜 문제를 해결할 수 있을지는 잘 모르겠습니다. 하지만 매월 트리거를 업데이트하면 작동할 거라고 생각하는데, 맞나요?
즉, 매월 해당 특정 날짜로 트리거를 명시적으로 업데이트해야 트리거가 실행된다는 뜻이죠. 제 이해가 맞다면, 문제는 시스템이 날짜를 자동으로 선택하려 할 때 발생했던 것 같습니다. 님의 수정 사항이 그 문제를 해결해 주길 바랍니다… 배치 봇이 님에게 좀 도전적인 상황을 주었던 것 같지만, 모든 일이 잘 풀리기를 바랍니다. 다시 한번 도움 주셔서 감사합니다!