body::before{content:"";position:fixed;inset:0;z-index:-1;background:radial-gradient(900px 500px at 85% -10%,rgba(34,211,238,.12),transparent 60%),radial-gradient(700px 460px at -10% 40%,rgba(129,140,248,.09),transparent 60%);pointer-events:none;}body::after{content:"";position:fixed;inset:0;z-index:-2;background-image:linear-gradient(rgba(148,163,184,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(148,163,184,.05) 1px,transparent 1px);background-size:44px 44px;pointer-events:none;}

事件提醒 APP 功能说明

ReminderTool.exe · 桌面级提醒管理工具 · 完整功能清单与架构图解

一、功能总览

事件提醒 APP 是一款基于 PyQt5 开发的 Windows 桌面提醒工具,用于定时提醒工作任务、会议、巡检等事件。它以主窗口 + 系统托盘的形式常驻后台,支持多循环类型、农历日期、提前提醒、自延提醒,并通过桌面弹窗、邮件、企业微信、微信 PushPlus 四个通道触达用户。

功能总览架构图

图 1 · 事件提醒 APP 功能总览架构

提醒管理

  • 新增 / 编辑 / 删除 / 完成 / 恢复
  • Excel 导入导出

触发引擎

  • 每秒轮询
  • 15 种循环 + 农历
  • 提前 / 自延提醒

通知渠道

  • 桌面弹窗
  • 邮件 / 企业微信 / 微信

设置与授权

  • 通知设置对话框
  • 授权注册 / 30 天试用

系统能力

  • 单实例锁
  • 托盘 / 自启 / 高 DPI

二、提醒管理

主窗口以表格形式展示所有提醒,每列均有固定宽度与弹性权重;支持对提醒的全生命周期管理。

操作说明
新增弹出编辑对话框,填写事件、说明、日期、时间、循环、农历、通知开关、提前提醒、自延分钟。
编辑双击行或右键菜单进入编辑;编辑后会清空 email_sent 与 other_channels_sent 去重标记,避免重新定时不通知。
删除右键删除单条或批量删除。
完成勾选后该条暂停提醒;点击 "恢复" 可重新进入待提醒状态。
导入 / 导出 ExcelExcel 表头固定为:事件、说明、日期、时间(24H)、循环、农历、通知、提前提醒、自延。
列宽细节:倒计时列固定为 123 px;自延列固定为 70 px;事件 / 说明列按权重弹性扩展。

三、触发引擎

触发引擎每秒轮询一次所有提醒,根据时间、循环、提前量、自延量决定何时弹出提醒。

3.1 循环类型

目前支持 15 种循环类型,涵盖日、周、月、季、半年、年:

无 / 每天 / 每2天 / 每3天 / 每4天 / 每5天 / 每工作日 / 每周 / 每两周 / 每月 / 每两月 / 每季度 / 每四个月 / 每五个月 / 每半年 / 每年

3.2 农历支持

启用农历后,日期按农历存储;计算下次触发时根据循环类型自动转公历判断,并正确处理闰月、大小月(农历每月时,取 min(日, 30/29))。

3.3 提前提醒

可配置在正式提醒前 5 分钟 ~ 2 周 之间的 18 个档位提前弹出一次提醒。提前提醒弹窗仅显示 「知道了」 按钮,无延期按钮,避免逻辑冲突。

3.4 自延提醒

首次提醒后若用户未点击「知道了」,系统按配置的自延时间再次提醒。自延选项共 28 档,从 10 分钟到 1 季度;默认值 360 分钟(6 小时)。

循环与农历类型

图 2 · 循环 / 农历 / 提前 / 自延类型

四、通知渠道

事件触发后先弹桌面提醒,随后按通道开关分别发送邮件、企业微信、微信通知;并通过独立的去重标记防止同一时间点重复发送。

通道技术方式配置位置
桌面弹窗PyQt5 顶层弹窗,置顶显示无需配置
邮件SMTP,支持 SSL设置 → SMTP服务器 / 端口 / 发件邮箱 / 授权码
企业微信企业微信群机器人 Webhook设置 → 企业微信 Webhook URL
微信PushPlus Token 推送设置 → PushPlus Token
通知触发与去重流程

图 3 · 通知触发与去重流程

去重机制:邮件使用 email_sent 字段记录已发送的 next_notify;企业微信/微信共用 other_channels_sent 字段。每次编辑 / 恢复时会重置这两个字段,保证重新编辑后的提醒能再次收到通知。

五、弹窗交互

弹窗 UI 区分正常提醒与提前提醒:

弹窗交互状态机

图 4 · 弹窗交互状态机

六、单实例锁与唤醒

为保证同一时刻只运行一个实例,并在二次启动时把已有窗口置前:

单实例锁与唤醒机制

图 5 · 单实例锁与唤醒机制

七、授权注册

软件采用永久授权 + 30 天试用模式:

八、系统级能力

能力实现方式 / 效果
系统托盘最小化后驻留托盘;双击 / 右键菜单可打开主窗口、设置、退出。
开机自启配置项 autostart,写注册表启动项实现。
高 DPI 适配兼容 1080P/100% 与 3K/200% 多显示器环境。
数据目录随 exe 所在目录存放,打包后使用 sys.executable 路径。

九、数据持久化

所有数据以 JSON 文件保存在 exe 同目录:

提醒数据模型

图 6 · 提醒数据模型

十、全部功能点清单

  1. 提醒新增、编辑、删除、完成、恢复
  2. 主窗口表格展示(事件 / 说明 / 日期 / 时间 / 循环 / 农历 / 通知 / 提前 / 自延 / 倒计时)
  3. 倒计时列宽 123 px,自延列宽 70 px
  4. 每秒轮询定时器检查所有提醒
  5. 15 种循环类型(日 / 周 / 月 / 季 / 半年 / 年及间隔)
  6. 农历日期存储与循环(支持闰月、大小月)
  7. 18 档提前提醒(5 分钟 ~ 2 周前)
  8. 28 档自延提醒(10 分钟 ~ 1 季度),默认 6 小时
  9. 桌面弹窗提醒,无条件弹出
  10. 提前提醒弹窗仅「知道了」、无延期按钮
  11. 弹窗 10 分钟无操作自动确认
  12. 弹窗时钟图标直接绘制 QPixmap,避免高 DPI 截断
  13. 邮件通知(SMTP + SSL)
  14. 企业微信 Webhook 通知
  15. 微信 PushPlus 通知
  16. 邮件 / 企微 / 微信去重标记(基于 next_notify)
  17. 编辑或恢复后重置去重标记
  18. 通知设置对话框
  19. 授权注册与 30 天试用
  20. 多机通用机器码(device_id 派生)
  21. SHA256 注册码验证
  22. Excel 导入导出(固定 9 列表头)
  23. 单实例锁(CreateMutexW + 事件提醒 GUID)
  24. 二次启动唤醒已运行实例
  25. 系统托盘驻留
  26. 开机自启
  27. 高 DPI 适配