Redmine Reminders
Notifications为那些悄悄搁置的问题发送手动、定时和规则驱动的提醒 —— 从问题页面、一条已保存的查询或管理控制台发出,走的还是你现在这套邮件通道。
多台服务器: $399

- 提醒类型
- 3
- 收件人模式
- 4
- 排程
- 每天 · 每周 · 每月
- 权限
- 4 项,按项目
- 数据离开服务器
- 从不
立刻提醒指派人
问题页面上的一个按钮。它先找指派人,找不到就退到作者,再退到管理员,页面还没刷新完,邮件已经在路上了。
稍后再提醒某人
选好收件人、日期和一段备注,提醒就在那儿等着。如果问题在这个日期之前关闭,它会被标记为已跳过,而不是照常发出。
在已保存查询上设规则
给任意问题查询挂一条规则:每天、每周的指定星期几,或每月的指定日期,在固定时刻触发。结果中处于打开状态的问题会收到提醒,每天最多一次。
只发数量
让一条规则指向多个查询,把数字而不是问题清单发出去 —— 给只想知道量级、不想看列表的负责人一份常设脉搏。
没有人会被催两次
已关闭的问题、被停用的模块和已锁定的账号都在投递那一刻被过滤掉,收件人也会先去重,然后才发出第一封邮件。
四项权限,按项目划分
查看、管理、发送和查看统计 —— 按角色授予,之上还有一个可以整体关掉的项目模块。每一次发送和每一次跳过都会进入活动日志。
一次点击、一个日期,或一条规则
所有提醒的保存、投递和记录方式完全相同,不同的只是由谁决定发出的时机:你,现在;你,为将来的某一天;或者一条规则,替你盯着一条已保存的查询。
手动 —— 立刻提醒指派人
问题页面上的一个按钮。它先找指派人,没人指派时退到作者,最后退到管理员,页面还没刷新完,邮件已经发出去了。
定时 —— 稍后提醒某人
选好收件人、日期和一段备注,提醒就在那儿等着。如果问题在这个日期之前被关闭,它会被悄悄标记为已跳过而不是发出 —— 那段备注说的是一件不再需要做的事。
自动 —— 已保存查询上的一条规则
给任意问题查询挂一条规则:每天、每周的指定星期几,或每月的指定日期,在固定时刻触发。结果中打开着的问题会收到提醒,而一条规则每天最多触发一次。
你已经在维护的查询,就是那条规则
这里没有第二套筛选语言。规则指向的是你自己保存的问题查询 —— 已逾期、三天无人认领、长时间没动静的支持工单 —— 所以「搁置」的定义仍然留在团队原本维护它的地方。改动查询,建立在它之上的每一条规则都会跟着变。
它只出现在你已经在用的三个地方
插件只在问题页面、项目和管理控制台里添加东西,别处一概不动。下面每一张截图都是运行 Redmine Reminders 1.0.0 的 Redmine 6。
在问题上
view_issues_show_description_bottom · 历史标签页

在项目里
设置 › 提醒 · 项目菜单



在管理控制台里
管理 › Redmine Reminders


为你已经在盯的队列而做
提醒会读取你的已保存查询、遵守你的权限,并把自己做过的每一件事写进它自己的活动日志。
| 方面 | 能力 | 具体行为 |
|---|---|---|
| 谁 | 指派人、作者、关注者,或一份指定名单 | 每条规则各自选择收件人。未激活的用户和没有邮箱地址的用户在发送任何东西之前就被剔除。 |
| 何时 | 每天、每周或每月的 HH:MM | 每周规则选择星期几,每月规则选择日期,另有起止日期界定整段运行区间。 |
| 摘要 | 只发数量 | 让一条规则指向多个查询,把数字而不是问题清单发出去 —— 给负责人一份常设脉搏。 |
| 防护 | 已关闭的问题绝不会被催 | 已关闭的问题、被停用的项目模块和已锁定的账号在投递那一刻被过滤,而不是在排程时。 |
| 凭据 | 一份完整的活动日志 | 创建、发送、跳过、规则开始运行、规则运行结束 —— 每一条都带着实际发出的主题和正文。 |
| 访问 | 四项权限,按项目划分 | 查看、管理、发送和查看统计 —— 按角色授予,之上还有一个可以整体关掉的项目模块。 |
一次 cron 心跳进来,一封邮件出去
四个步骤,全部在你自己的 Redmine 里完成。除了你的实例本来就会发的邮件,没有任何东西离开服务器。
| 步骤 | 发生了什么 |
|---|---|
| 1. cron 触发 | crontab 里的一行执行 rake redmine_reminders:queue,把一个后台任务放进队列。没有 worker 在跑,就用同步的 :run 任务在原地完成同样的工作。 |
| 2. 规则自查 | 每条启用的规则自己判断是否到点:处在日期区间内、匹配今天的星期或日期、已过设定时刻,并且今天还没有跑过。 |
| 3. 解析收件人 | 查询执行,已关闭的问题被剔除,收件人被展开为真实、启用且可收信的用户。重复的合并到一起,没有人会收到两次同样的催促。 |
| 4. 发信,然后记录 | 投递走 Redmine 自己的 mailer,因此沿用你的 SMTP 设置和问题邮件头。每一次发送 —— 以及每一次跳过 —— 都会连同主题和正文写入提醒的活动日志。 |
收件箱里收到的是什么
一个带着项目和问题编号的主题 —— [Support — #4821] Redmine Reminder: SSO login fails on Safari —— 正文直接链回该问题,并引用设置提醒的人当时写下的备注。用的是你实例自己的 mailer、你自己的 SMTP 配置和发件地址;插件不会另外增加任何投递通道。
没有人会被催两次
一个提醒插件的价值,在于它拒绝发出的那些邮件。在一条到点的规则和一个收件箱之间,隔着四道检查。
在投递时过滤,而不是在排程时
已关闭的问题、模块已被关掉的项目和已锁定的账号,会在邮件即将发出的那一刻重新核对一遍 —— 一小时前刚解决的工单,早已不在这一批里。
只留真实且能收信的用户
收件人先展开为真实账号,然后剔除未激活的用户和没有邮箱地址的用户。一组关注者里有一半人已经离职,剩下的一半照样收到。
每条规则每天最多一次
今天已经跑过的规则不会再跑,无论 cron 怎么触发。同一次运行内重复的收件人会合并:一个人出现在三个命中的问题里,仍然只收到一条消息。
跳过也同样留痕
为一个中途已关闭的问题安排的提醒,会连同原因一起被记为已跳过。活动日志既能回答「谁被催了」,也能同样清楚地回答「为什么没人被催」。
群发、瓶颈与凭据
管理控制台补上了三件只有放在所有项目一起看时才成立的事。
群发给需要知道的人
撰写主题与正文,选择收件人和一个日期区间,由运行规则的同一个调度器负责投递。不需要另一套群发工具,事后也进同一份活动日志。
找出卡住流程的账号
一条规则盯住每一个指派给已锁定账号、或由其创建的打开问题,把清单发给应当重新分配这些工作的人。人员离开不再变成一堆无声的积压。
点得出名字的统计
按你选定的时间段,给出每个人的手动与自动提醒次数,并可下钻到每位用户实际收到的主题和正文。当有人说「从来没人通知过我」时很有用。
| 权限 | 允许做什么 |
|---|---|
| 查看提醒 | 查看挂在某个项目问题上的提醒和规则 |
| 管理提醒 | 在项目的已保存查询上创建、编辑、暂停和删除规则 |
| 发送提醒 | 使用问题页面上的手动按钮,并为以后安排一次提醒 |
| 查看统计 | 打开按人统计的次数,以及其背后的活动日志 |
三步完成安装
需要 shell 访问权限并能执行 rake 任务。安装插件前请务必备份。
cd /path/to/redmine # the package arrives by email, or from your download link unzip redmine_reminders-1.0.0.zip -d plugins/ bundle install
RAILS_ENV=production bundle exec rake redmine:plugins:migrate NAME=redmine_reminders touch tmp/restart.txt # or systemctl restart redmine
# every minute: enqueue due rules and scheduled reminders * * * * * cd /path/to/redmine && RAILS_ENV=production \ bundle exec rake redmine_reminders:queue >> log/redmine_reminders_cron.log 2>&1 # no ActiveJob worker? use the synchronous task instead # bundle exec rake redmine_reminders:run