---
name: notification-rules
when: '通知规则, 消息推送, 消息模版, 站内信, 通知, 提醒, 消息中心, 推送, 邮件通知'
scope:
  - backend
  - frontend
products:
  - '*'
id: ka-domain_knowledge-notification-rules
asset_kind: domain
lifecycle_status: active
owner_mechanism_id: mc-domain-knowledge
authority: supporting
routes:
  - '*'
primary_triggers:
  - 通知规则
  - 消息推送
  - 消息模版
  - 站内信
  - 通知
  - 提醒
  - 消息中心
  - 推送
  - 邮件通知
priority: P2
specificity: 3
version: 1.1.0
last_reviewed: '2026-06-01'
consumes: []
emits: []
secondary_triggers: []
negative_triggers: []
type: domain
stages: ["*"]
---

## 业务规则
1. 通知通过消息模版 + 规则引擎触发，不在业务代码中硬编码通知内容
2. 每种通知类型有独立的开关和渠道配置（站内信/邮件/短信/钉钉）
3. 通知必须包含：触发时间、触发人、事件类型、事件详情、操作链接
4. 通知支持已读/未读状态，未读通知聚合展示
5. 通知频率限制：同类通知 24 小时内最多发送 3 次（防骚扰）
6. 通知必须支持多渠道（站内信、邮件、短信、企业微信/钉钉），用户可配置偏好
7. 通知必须支持优先级（紧急/普通/低），紧急通知强制推送所有渠道
8. 相同内容的通知必须有合并/去重策略（如 5 分钟内相同类型不重复推送）

## 约束条件
- 消息模版使用变量占位符（如 `${userName} 提交了 ${orderNo} 订单`）
- 通知发送失败需重试（最多 3 次），并记录发送状态
- 站内信存储在独立表中，定期清理超过 90 天的已读通知
- 前端通过轮询或 WebSocket 获取未读通知数量
- 通知发送失败必须有重试机制（最多 3 次，退避间隔）
- 短信/邮件发送必须有频率限制，防止骚扰用户
- 通知模版必须通过配置管理，禁止硬编码文案

## 例外情况
- 系统级通知（安全告警、服务异常）不受频率限制
- 紧急通知（如审批超时提醒）可通过短信/电话直接推送
- 系统维护通知可以绕过用户偏好设置，强制推送

## 关联模式
参见 scheduled-task 模式（定时检查触发通知）、logging 模式（通知发送日志）
- event-driven
- error-handling
