[English](../en/schedules.md) | 简体中文 # 定时任务、事件触发与通知 这篇讲怎么让工作流按时或按事件自动运行,以及结果和提醒怎么通知到人。给搭建者和管理员看。 ## 定时任务 定时任务按时发起正式运行,运行的来源记为定时任务。 - 目标可以是工作流、数据源(即数据源的定时维护,见[数据目录](data-catalog.md#定时维护))或评测题集(即定时评测,见[回归评测](evaluation-and-ledger.md#定时评测))。 - 应用的视图优先绑定已有的定时任务;看板读定时任务最近一次封存的正式运行,印章写明「定时任务「…」第 n 次」。 - 运行被人工驳回时,定时任务推「未出具(被驳回)」。 - 以数据源和题集为目标的定时任务不收 Webhook(回 422),通知走「设置 → 通知」的渠道订阅。 - 在运行并发里,定时任务属于「定时」一类(见[运行并发](postgresql-and-scaling.md#运行并发))。 - 调度循环每一拍的间隔是 `AGENTLAB_SCHEDULER_TICK_S`,缺省 15 秒。 ## 事件触发 定时任务可以选「事件触发」,在这些事件发生时运行: - 上传表格出了新的一期; - 上游工作流的正式运行成功结束; - 数据源有「要处理」的变化。 规则: - 事件在发生处记下,由调度循环去抖后发起;每一期各自去抖。 - 下游的输入模板用 `{{ event.* }}` 取事件内容。 - 保存时检查串联不成环;运行时最多串 5 层。 - 途经驳回的运行、应用补算出来的运行,缺省不触发下游;可以勾选让它们也触发。 - 跟着 `AGENTLAB_SCHEDULER` 开关:关着时,事件留着,不派发。 ## 通知 ### 渠道 通知发到渠道,渠道分全局渠道和个人渠道,在「设置 → 通知」里订阅。也可以投递 Webhook。 待办、通知、Webhook 里,驳回的去向照实写(「被驳回,转到 X」「这一路到此为止」)。 ### 邮件 管理员在「设置 → 通知 → 邮件服务」配 SMTP,口令加密存。之后可以建邮件格式的渠道。 - 邮件只确认交给了邮件服务器,退信不追踪。 ### 可订阅的事件 | 事件 | 发到哪里 | 说明 | |---|---|---| | 「实例结束」 | 订阅了的渠道 | 包括被人工驳回的运行 | | 「定时评测有退步」 | 订阅了的渠道 | 只有题集名、通过数、退步题数和链接 | | 「数据源有变化要处理」 | 全局渠道 | 只有源名、条数和链接,不放表名、列名和取值 | | 「口径升版,答案的数变了」 | 全局渠道、答案主人的个人渠道 | 不放数字;同时推 `ledger.recall` | | 每天的待办汇总 | 订阅了它的个人渠道 | 按 `notify.digest_at` 发,缺省 09:00(服务端时区) | | 访问密钥到期提醒 | — | 到期前 7 天、1 天各一次 | 待办汇总和访问密钥提醒只在开了登录时发。 ## 调度开关 `AGENTLAB_SCHEDULER` 关掉(设成 0)时: - 不检查流程的时限:不提醒、不升级、不自动核实; - 事件留着,不派发; - 启动时对最近 7 天运行的口径补比不跑;口径召回在发布后的自动批次和启动时的接着做也不跑。 多进程部署时,定时认领、事件派发、Webhook 投递、流程的时限和核实、每天的汇总,都只在调度当班的那个进程里做(见[调度当班](postgresql-and-scaling.md#调度当班))。