gassim
(Al-Gassim Sharaf Addin)
1
你好!
我遇到了一个问题:一个本应在每月初触发的自动化流程,尽管已启用,却并未自动运行。我找不到任何日志,也无法调试它为何未按预期自动执行。请问有人知道如何解决这个问题吗?
如下图所示,该自动化流程应每月自动“使用数据探索器结果安排一次 PM 会议”。如果我点击“立即触发”,它会按预期工作:添加到列表中的用户将收到数据探索器结果以及 CSV 文件;然而,自动触发并未运行。
非常感谢您的任何反馈或建议,以助我解决此问题。谢谢!
1 个赞
您是否已确认确切的计划日期和时区设置?如果可用,您是否已开启“运行错过的作业”按钮?
1 个赞
putty
(putty)
3
您是否已进行任何测试,以确保所有条件都能自然满足(除了立即触发)?
例如,将时间安排设置为每天执行并指向一个测试组。如果运行正常,再改为每月执行并指向实际的目标组。
此外,我认为您的目标受众需要被共享数据探索器查询结果。
1 个赞
gassim
(Al-Gassim Sharaf Addin)
4
你好
感谢帮助.. @kairo162 @putty
是的……但问题不在于它没有在计划的日期/时间运行,而在于它根本没有运行。
请问在哪里可以找到这个按钮?
它应该向两位用户发送直接私信。这些用户已收到共享的查询。感谢你建议通过尝试不同时间来进行测试。我也会尝试使用虚拟群组进行实验。
2 个赞
Moin
5
我注意到的主要区别是,您的界面没有显示自动化下一次触发的时间。
我认为您可以先使用相同的设置创建一个新的自动化,并在启用后检查是否会出现“下次触发日期”。
1 个赞
Lilly
(Lillian )
6
我在多个地方使用这个完全相同的自动化脚本,都没有问题。以下是其中一个地方的配置——为了测试,我将 recurrence 改为 5 分钟而不是每周,但当设置为每周时,它会按预期每周触发:
PM(tech-admin 是一个组)
尝试触发自动化,然后查看 yoursite/logs 中的日志。
1 个赞
Lilly
(Lillian )
7
我看到这个:
或许可以尝试从脚本名称和数据探索器查询标题中移除那个“控制旋钮”表情符号。这可能会导致载荷出错(不过我觉得它们应该没问题)。
1 个赞
gassim
(Al-Gassim Sharaf Addin)
8
你好 @Moin @Lilly
感谢你们的帮助!恐怕这个谜团仍未解开……原因如下:
在“触发时间”之前,情况确实如此,会显示消息“下次自动化触发时间:[日期/时间]”;然而,当该日期/时间过去但自动化未能成功运行时,该消息便不再显示。在测试期间,我将时间间隔改为 1 分钟,触发消息又出现了。在之前某个月份未能触发时,我更新了计时器,它显示将在下个月的首个小时触发(但实际上并未触发)。
它确实在某些月份成功触发,而在其他月份则没有,因此原因尚不清楚。但现在它似乎再也无法自动激活了。你们使用的 Discourse 版本是什么?我的版本是 2026.5.0-latest……
不幸的是,即使我手动触发,/logs 中也没有任何内容显示。(我已选中所有选项)。
我不认为这是问题所在,因为我将触发时间改为 1 分钟后,消息确实发送成功了:
gassim
(Al-Gassim Sharaf Addin)
10
好的,谢谢!您愿意尝试创建一个每月触发的测试自动化吗?
我怀疑问题出在“每月”触发器上,因为当我将其改为每分钟触发时,它就正常工作了。
Lilly
(Lillian )
11
好的,我已将其设置为每月一次并手动触发,结果成功。但在这里等待一个月来测试并不太实用。我将在几分钟后尝试设置开始日期。
编辑:对我来说,每月触发的功能似乎已经正常工作了。
Lilly
(Lillian )
13
好的,Moin 和我今天聊到了这个案例,她提出使用“每月”频率可能存在一个 Bug,因为月份的长度各不相同?当然,她是对的——至少部分正确:stuck_out_tongue:
不管怎样,我又做了一些深入调查:detective:
我实际上在核心 plugins/automation/lib/discourse_automation/scripts 文件夹中找不到 schedule pm with data-explorer results 的自动化脚本,所以它一定藏在其他地方。
不过,我查看了这里关于周期性(推测该脚本会用到)的逻辑,位于 plugins/automation/lib/discourse_automation/triggers/recurring.rb:
我认为,月度周期性自动化的底层代码计算的是“第 N 个星期几”,而不是实际的日历日期,这与“日历日期”存在逻辑不匹配的问题。具体来说,通过向 RRule 注入 BYDAY=#{count}#{byday},自动化系统强制对齐星期几,而应该使用 BYMONTHDAY 而不是 BYDAY。
因此,如果你将自动化设置为从 4 月 15 日开始(这一天恰好是 4 月的第 3 个星期三),系统会将该规则解读为:每月第 3 个星期三运行。
到了 5 月,第 3 个星期三是5 月 20 日,这导致计划偏移了 5 天。
此外,如果你将自动化设置在某月的 30 日或 31 日(例如“第 5 个星期二”),系统会在下个月寻找第 5 个星期二。如果那个月只有 4 个星期二,自动化将无法找到有效日期,并静默跳过整个月份。
我已经测试了一个修复方案,并正在提交 PR,如果团队想查看的话。该修复将逻辑从“第 N 个星期几”改为“精确的日历日期”。
以下是我在测试和调试过程中的一些截图:
两个实例,一个未修复,另一个应用了我的逻辑修复
在两者中创建完全相同的自动化(修复版本在右侧):
查看横幅中“下次自动化将在以下时间触发:”消息的差异,存在 5 天的偏移——未修复版本会偏移至第 3 个星期三(5 月 20 日),而不是 5 月 15 日。
例如,如果系统查找的是“第 4 个星期四”而不是实际日期,某些月份可能会被完全跳过。
也可以在 Rails 控制台中测试相同的结果
未修复版本:
修复后版本:
PR 链接如下:
1 个赞