M3-05 Notification Module #33

Open
opened 2026-05-22 21:09:50 +08:00 by wangdl · 0 comments
Owner

目标

设计知习通知模块,为 C 端用户提供 App 推送、站内提醒以及为 Admin 提供到期提醒、成本提醒和任务失败通知。

本 Issue 只做模块架构设计,不直接实现代码。

背景说明

用户需要被提醒:今日复习任务、学习目标未达成、连续学习天数即将中断。Admin 需要被提醒:API Key 即将到期、成本超出预警线、导入任务大量失败。

Notification 模块管理通知渠道(Push/站内/邮件)、通知模板和用户通知偏好。

模块职责

  1. 本模块负责:

    • 通知渠道管理(App Push / 站内消息 / 邮件预留)
    • 通知模板管理
    • 通知发送接口(供其他模块调用)
    • 用户通知偏好管理
    • 通知已读/未读管理
    • 站内通知列表
  2. 本模块不负责:

    • 通知的触发条件判断(各业务模块判断后调用 Notification 模块发送)
    • 学习提醒的具体调度规则(走 Growth & Retention)
    • 邮件服务器运维

候选数据对象

  • Notification(通知记录)
  • NotificationPreference(用户通知偏好)
  • NotificationChannel(渠道配置)
  • NotificationTemplate(通知模板)
  • PushToken(iOS/Web Push Token)

基础设施依赖判断

  • MySQL:是(通知记录和偏好)
  • Redis:需判断(批量推送队列)
  • BullMQ:是(批量推送异步执行)
  • Qdrant:否
  • AI Gateway:否
  • COS:否

API 设计

  1. CAPI:

    • 站内通知列表
    • 标记已读
    • 通知偏好设置
    • 注册/更新 Push Token
  2. AAPI:

    • 通知模板管理
    • 手动发送通知
    • 通知发送日志

Domain Event 设计

  • NotificationSent
  • NotificationRead
  • NotificationPreferenceChanged

交付检查

  • 是否需要 Prisma migration:是
  • 是否需要 MySQL:是
  • 是否需要 Redis:需判断
  • 是否需要 BullMQ:是
  • 是否需要 AI Gateway:否
  • 是否需要 Cost 记录:否
  • 是否需要 Admin 视图:是

验收标准

  1. Notification / NotificationPreference / PushToken Prisma schema
  2. 通知发送接口设计(供其他模块调用)
  3. 站内通知 UI 方案(列表 + 未读标记)
  4. Push 推送基础方案(iOS APNs 对接)
  5. Admin 通知模板管理视图设计

禁止事项

  • 禁止通知内容包含用户敏感数据
  • 禁止 Push 推送在用户禁用后仍然发送
  • 禁止通知发送阻塞主业务流程(应异步)

不建议当前阶段实现

  • 邮件通知渠道
  • 通知分组和摘要
  • 通知发送时间智能调度(用户活跃时段)
  • A/B 测试通知文案
## 目标 设计知习通知模块,为 C 端用户提供 App 推送、站内提醒以及为 Admin 提供到期提醒、成本提醒和任务失败通知。 本 Issue 只做模块架构设计,不直接实现代码。 ## 背景说明 用户需要被提醒:今日复习任务、学习目标未达成、连续学习天数即将中断。Admin 需要被提醒:API Key 即将到期、成本超出预警线、导入任务大量失败。 Notification 模块管理通知渠道(Push/站内/邮件)、通知模板和用户通知偏好。 ## 模块职责 1. 本模块负责: - 通知渠道管理(App Push / 站内消息 / 邮件预留) - 通知模板管理 - 通知发送接口(供其他模块调用) - 用户通知偏好管理 - 通知已读/未读管理 - 站内通知列表 2. 本模块不负责: - 通知的触发条件判断(各业务模块判断后调用 Notification 模块发送) - 学习提醒的具体调度规则(走 Growth & Retention) - 邮件服务器运维 ## 候选数据对象 - Notification(通知记录) - NotificationPreference(用户通知偏好) - NotificationChannel(渠道配置) - NotificationTemplate(通知模板) - PushToken(iOS/Web Push Token) ## 基础设施依赖判断 - MySQL:是(通知记录和偏好) - Redis:需判断(批量推送队列) - BullMQ:是(批量推送异步执行) - Qdrant:否 - AI Gateway:否 - COS:否 ## API 设计 1. CAPI: - 站内通知列表 - 标记已读 - 通知偏好设置 - 注册/更新 Push Token 2. AAPI: - 通知模板管理 - 手动发送通知 - 通知发送日志 ## Domain Event 设计 - NotificationSent - NotificationRead - NotificationPreferenceChanged ## 交付检查 - [ ] 是否需要 Prisma migration:是 - [ ] 是否需要 MySQL:是 - [ ] 是否需要 Redis:需判断 - [ ] 是否需要 BullMQ:是 - [ ] 是否需要 AI Gateway:否 - [ ] 是否需要 Cost 记录:否 - [ ] 是否需要 Admin 视图:是 ## 验收标准 1. Notification / NotificationPreference / PushToken Prisma schema 2. 通知发送接口设计(供其他模块调用) 3. 站内通知 UI 方案(列表 + 未读标记) 4. Push 推送基础方案(iOS APNs 对接) 5. Admin 通知模板管理视图设计 ## 禁止事项 - 禁止通知内容包含用户敏感数据 - 禁止 Push 推送在用户禁用后仍然发送 - 禁止通知发送阻塞主业务流程(应异步) ## 不建议当前阶段实现 - 邮件通知渠道 - 通知分组和摘要 - 通知发送时间智能调度(用户活跃时段) - A/B 测试通知文案
wangdl added this to the M3:学习复习闭环(P2) milestone 2026-05-22 21:09:50 +08:00
wangdl self-assigned this 2026-05-22 21:09:50 +08:00
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: wangdl/api-server#33
No description provided.