# 定时通知 系统提供账单导入定时提醒,支持多渠道推送,并记录发送日志。 ## 调度 - `NotificationSchedulingConfig` 开启 `@EnableScheduling`。 - `NotificationScheduler` 每分钟检查一次(初始延迟 30 秒):对每个启用的通知配置判断「当前时间是否已到达触发点」(依据周期、提醒时间与星期/日期),到达且存在启用渠道时向所有渠道发送提醒,并更新 `last_sent_at`。 - 默认提醒周期为每月 1 日 09:00。 - 首次启用时会将 `last_sent_at` 置为当前,避免启用后立即补发历史提醒。 ## 渠道 `NotificationChannelType` 定义支持的渠道: | 渠道 | 说明 | |---|---| | `EMAIL` | 邮箱 SMTP(如 QQ 邮箱),动态构建 `JavaMailSenderImpl`,默认 `smtp.qq.com:465` + SSL | | `SERVERCHAN` | Server 酱 Turbo,推送到个人微信,校验返回 `code == 0` | | `FEISHU` | 飞书自定义机器人 Webhook,post 富文本(标题保留为卡片标题、正文按行分段),可选加签(`timestamp` + HMAC-SHA256),校验 `code` / `StatusCode` | 发送器采用工厂模式:`NotificationSender` 接口 + `NotificationSenderFactory` 按类型分发,`AbstractHttpNotificationSender` 封装 JSON/表单 POST。 ## 配置与日志 - `t_notification_config`:启用开关、周期、每月日期、每周星期、提醒时间、最近发送时间。 - `t_notification_channel`:类型、名称、启用、配置 JSON(SMTP 账号、Server 酱 SendKey 或飞书 `webhookUrl` / `secret`)。邮箱密码与飞书密钥留空表示不修改,返回时脱敏,`NotificationChannelVO` 以 `hasPassword` / `hasSecret` 标记是否已配置。 - `t_notification_log`:每次发送的结果(成功/失败、渠道类型、说明),面板展示最近 20 条。 ## 接口 `NotificationController` 提供:配置读写、渠道增删改查与测试、立即发送、发送日志查询。 ## 通知内容 提醒正文会提示导入新账单,并附带 `AppConfig.notificationUrl` 配置的链接地址(通常指向账单导入页)。 ## 相关文档 - [定时提醒与通知(使用说明)](/guide/notifications) - [邮箱账单](/guide/email-bills)