forked from erp-dev/erp
feat: mission replied calling task
This commit is contained in:
114
docs/admin_mission_unreplied_notification_guide_2026-04-17.md
Normal file
114
docs/admin_mission_unreplied_notification_guide_2026-04-17.md
Normal file
@@ -0,0 +1,114 @@
|
||||
# Admin 说明:任务未回复提醒
|
||||
|
||||
本文档面向后台管理员,说明如何启用和排查“任务未回复提醒”。
|
||||
|
||||
## 这个功能是什么
|
||||
|
||||
当一个任务开启“未回复提醒”后,如果在设定时间内一直没有任何有效回复,系统会按该任务设置的间隔持续发送提醒。
|
||||
|
||||
这里的“有效回复”指:
|
||||
|
||||
- 存在 `MissionReply`
|
||||
- 且该回复没有被撤销(`is_rejected = false`)
|
||||
|
||||
如果任务已有有效回复,就不会再继续发“未回复提醒”。
|
||||
|
||||
## 这项功能由哪两部分共同决定
|
||||
|
||||
要真正收到未回复提醒,必须同时满足:
|
||||
|
||||
1. 任务对象本身开启了未回复提醒
|
||||
2. notifier 后台中配置了 `mission.unreplied` 的通知路由
|
||||
|
||||
缺任何一边都不会发通知。
|
||||
|
||||
## 任务侧可配置项
|
||||
|
||||
任务对象现在支持这些字段:
|
||||
|
||||
- `notify_if_unreplied`:是否开启未回复提醒
|
||||
- `unreplied_notify_interval_minutes`:提醒间隔(分钟)
|
||||
- `unreplied_notify_max_count`:最大提醒次数,默认 `5`
|
||||
- `unreplied_notify_sent_count`:已发送次数,由系统自动维护
|
||||
- `unreplied_last_notified_at`:上次发送时间,由系统自动维护
|
||||
|
||||
管理员通常只需要关注前三个字段。
|
||||
|
||||
## notifier 后台应如何配置
|
||||
|
||||
### 第一步:创建通知器 Notifier
|
||||
|
||||
建议配置如下:
|
||||
|
||||
- `name`:任务未回复提醒-管理群
|
||||
- `channel`:`wecom_webhook`
|
||||
- `template_key`:`mission_unreplied`
|
||||
- `is_enabled`:勾选
|
||||
- `config.key`:企业微信机器人 key
|
||||
|
||||
### 第二步:创建通知路由 NotifierRoute
|
||||
|
||||
建议配置如下:
|
||||
|
||||
- `event_key`:`mission.unreplied`
|
||||
- `mission_category`:可留空,也可以指定分类
|
||||
- `is_enabled`:勾选
|
||||
|
||||
## 通知什么时候会发生
|
||||
|
||||
系统后台有一个每分钟执行一次的定时任务,会去检查哪些任务需要发送未回复提醒。
|
||||
|
||||
只有任务同时满足以下条件才会提醒:
|
||||
|
||||
1. 开启了未回复提醒
|
||||
2. 未完成
|
||||
3. 未取消
|
||||
4. 当前没有任何有效回复
|
||||
5. 已提醒次数还没达到最大提醒次数
|
||||
6. 到达了当前提醒时间
|
||||
|
||||
提醒时间计算规则:
|
||||
|
||||
- 如果从未提醒过:`创建时间 + 间隔分钟数`
|
||||
- 如果提醒过:`上次提醒时间 + 间隔分钟数`
|
||||
|
||||
## 收到有效回复后会怎么样
|
||||
|
||||
一旦任务出现有效回复:
|
||||
|
||||
- 当前未回复提醒周期会停止
|
||||
- 已提醒次数与上次提醒时间会被重置
|
||||
|
||||
如果该回复后来被撤销,或者任务 reopen 后重新进入“无有效回复”状态:
|
||||
|
||||
- 系统会重新开始一个新的未回复提醒周期
|
||||
|
||||
## 管理员排查清单
|
||||
|
||||
如果任务没有收到未回复提醒,请按下面顺序检查:
|
||||
|
||||
1. 任务是否开启了 `notify_if_unreplied`
|
||||
2. 任务是否填写了 `unreplied_notify_interval_minutes`
|
||||
3. 任务是否已经完成或取消
|
||||
4. 任务是否已经有有效回复
|
||||
5. `unreplied_notify_sent_count` 是否已经达到 `unreplied_notify_max_count`
|
||||
6. notifier 是否存在 `mission.unreplied` 路由
|
||||
7. 路由是否启用
|
||||
8. 对应的 Notifier 是否启用
|
||||
9. `template_key` 是否配置为 `mission_unreplied`
|
||||
10. Celery worker 和 Celery beat 是否在运行
|
||||
|
||||
## 给 admin 可直接复制的简版说明
|
||||
|
||||
```md
|
||||
任务未回复提醒已上线。
|
||||
|
||||
要让任务自动提醒,必须同时满足两件事:
|
||||
|
||||
1. 任务本身开启了未回复提醒,并设置了提醒间隔和最大提醒次数。
|
||||
2. notifier 后台里配置了 `mission.unreplied` 对应的通知器和通知路由。
|
||||
|
||||
系统会每分钟扫描一次任务。只有当任务未完成、未取消、当前没有有效回复、且没超过最大提醒次数时,才会继续发送提醒。
|
||||
|
||||
一旦任务收到有效回复,未回复提醒会自动停止;如果回复后来被撤销,系统会重新开始新的未回复提醒周期。
|
||||
```
|
||||
Reference in New Issue
Block a user