通知触发条件详解

这是当通知未按预期到达时的技术参考页面。系统自动通知和用户创建的计划都需要通过多个条件才能最终发送。


通用拦截条件(适用于所有通知)

即使计划时间正确,如果符合以下任一条件,通知将被拦截

条件 详情 例外
通知全局禁用 在设置中关闭了通知
免打扰时段 22:00 – 08:00 KST 用户创建的计划
对话进行中 最后一条消息发送后1小时内 用户创建的计划
超出每日上限 每日自动通知最多 3条 预算警告、用户创建的计划
单独禁用该通知 在通知中心关闭了该通知

用户直接创建的计划(例如:”每天8点运动提醒”)忽略免打扰时段、对话进行中和每日3条限制,直接发送。但全局通知设置和技能门控仍然适用。


各系统通知的触发条件

每周报告

  • 执行时间: 每周一 09:00 KST
  • 所需技能: finance
  • 数据条件: 过去30天内有记账记录
  • 疲劳度检查: 适用

预算警告

  • 执行时间: 每小时整点(每小时一次)
  • 所需技能: budget
  • 数据条件:
    • 已设置至少1个预算类别
    • 本月该类别支出 ≥ 预算的 90%
  • 疲劳度检查: 免打扰时段 / 对话进行中适用;每日3条限制不适用

每日消费摘要

  • 执行时间: 每天 21:00 KST
  • 所需技能: finance
  • 数据条件: 今天(KST) 有记账记录
  • 疲劳度检查: 适用

不活跃提醒

  • 执行时间: 每天 20:00 KST
  • 所需技能: proactive
  • 数据条件:
    • 有历史记账记录,但
    • 过去 3天内 没有记账记录
  • 疲劳度检查: 适用

月末结算

  • 执行时间: 每月28-31日 21:00 KST(仅在实际月末当天执行)
  • 所需技能: finance
  • 数据条件: 本月有记账记录
  • 额外条件: 代码内部会再次确认是否为当月实际最后一天(cron表达式覆盖28-31日是为了处理不同月份的天数差异)
  • 疲劳度检查: 适用

消费异常检测

  • 执行时间: 每3小时一次
  • 所需技能: finance
  • 数据条件:
    • 今天(KST)有记账记录
    • 已累积 7天以上的数据
    • 今日支出总计 > 30天日均值的 200%
  • 疲劳度检查: 适用

消费模式洞察

  • 执行时间: 每天 14:00 KST
  • 所需技能: pattern
  • 数据条件:
    • knowledge_base 中已存储模式分析结果(pattern:analysis_result
    • (→ 每天06:00的模式分析后台任务必须先运行)
    • 模式置信度 ≥ 0.6
    • 存储的模式触发器与当前星期/日期匹配
  • 疲劳度检查: 适用

目标进度报告

  • 执行时间: 每周三 12:00 KST
  • 所需技能: goals
  • 数据条件: knowledge_base 中存在 status='active' 的目标
  • 疲劳度检查: 适用

D-Day 通知

  • 执行时间: 每天 08:00 KST
  • 所需技能: dday
  • 数据条件:
    • ddays 表中有登记的项目
    • 今天对应 D-30、D-7、D-3、D-1 或 D-0 之一
    • 重复(recurring)项目按今年或明年计算日期
  • 疲劳度检查: 适用

纯后台任务(无通知)

以下任务仅分析和存储数据,不发送通知。不可禁用。

模式分析

  • 执行时间: 每天 06:00 KST
  • 所需技能: pattern
  • 条件: 过去30天内有记账记录
  • 输出: 存储到 knowledge_base.key='pattern:analysis_result'
  • 依赖关系: 消费模式洞察通知的前置任务

对话分析

  • 执行时间: 每10分钟(仅在满足条件时实际运行)
  • 所需技能: diary
  • 条件:
    • 用户有发送消息的历史记录
    • 上次消息后已空闲 30分钟至2小时
    • 不在免打扰时段(22:00–08:00)
    • 同一空闲会话不重复分析
  • 输出: 对话分析结果存储(可在AI记忆页面查看)

目标评估

  • 执行时间: 每天 07:00 KST
  • 所需技能: goals
  • 条件: 有活跃目标
  • 输出: 评估结果存储到 knowledge_base

每周记忆压缩

  • 执行时间: 每周一 05:00 KST
  • 所需技能: 无(始终运行)
  • 条件: 过去30天内有记账记录
  • 输出: 将上周的每日日志压缩为每周摘要并保存

用户创建的计划

  • 检查间隔: 每15分钟查询所有活跃计划
  • 所需技能: schedule
  • 触发条件:
    • 计划 status='active'
    • 当前时间在预定时间的 ±15分钟 以内
    • 今天尚未发送(检查 last_sent
  • 计划类型:
    • one_time:在指定日期+时间发送一次,标记为 completed
    • recurring:按星期+时间重复发送,更新 last_sent
疲劳度条件 用户创建的计划
免打扰时段(22–08时) 忽略
对话进行中(1小时内) 忽略
每日3条限制 忽略
全局通知禁用 适用
技能门控(schedule 适用

技能门控汇总

如果通知所需技能被禁用,则不会发送通知。请在设置 > 技能中确认。

通知 所需技能 无技能时
每周报告 finance 不发送
预算警告 budget 不发送
每日摘要 finance 不发送
不活跃提醒 proactive 不发送
月末结算 finance 不发送
消费异常检测 finance 不发送
消费模式洞察 pattern 不发送
目标进度报告 goals 不发送
D-Day 通知 dday 不发送
用户创建的计划 schedule 不发送
模式分析(后台) pattern 不运行
对话分析(后台) diary 不运行
目标评估(后台) goals 不运行
每周记忆压缩 始终运行

故障排除:通知未到达时

检查清单(按顺序从上往下检查)

□ 1. 技能激活状态
      在设置 > 技能中确认所需技能已开启

□ 2. Telegram 连接状态
      在设置 > 频道中确认 Telegram 已连接

□ 3. 全局通知设置
      在设置中确认通知已启用

□ 4. 单个通知状态
      在通知中心 > 系统标签页确认该通知已开启

□ 5. 当前时间确认
      22:00–08:00 KST 之间因免打扰时段策略被拦截

□ 6. 今日通知数量
      自动通知每日最多3条。若已收到3条以上,请在午夜后再次确认

□ 7. 数据充足性
      - 消费异常检测:需要7天以上数据
      - 消费模式洞察:需要分析结果且置信度≥0.6
      - 不活跃提醒:需要有历史记录且最近3天无记录

□ 8. 用户创建的计划 — 时间窗口
      系统每15分钟检查一次,最多可能有15分钟延迟
      检查时必须在预定时间的±15分钟以内

完整计划时间表

时间(KST) 执行任务
05:00(周一) 每周记忆压缩
06:00 模式分析(后台)
07:00 目标评估(后台)
08:00 D-Day 通知
09:00(周一) 每周报告
12:00(周三) 目标进度报告
14:00 消费模式洞察
20:00 不活跃提醒
21:00 每日摘要、月末结算
每小时 预算警告
每3小时 消费异常检测
每10分钟 对话分析条件检查
每15分钟 用户创建计划检查

Copyright © 2025 StarNion. All rights reserved.  |  v0.1.1