Skip to content

[r2cn] 实现系统邮件通知中心,并支持用户自定义通知类型配置 #1939

@benjamin-747

Description

@benjamin-747

[任务] 实现系统邮件通知中心,并支持用户自定义通知类型配置

[任务分值] 30 分

[背景描述]

随着系统功能逐步完善(如构建、文档、权限、评论、CL 等),越来越多的重要事件需要通知用户,例如:

  • 构建失败
  • CL 被评论 / 被合并
  • 文档权限变更
  • 系统异常或告警

目前系统缺乏统一的邮件通知能力:

  • 没有集中式的邮件发送模块
  • 事件通知无法灵活配置
  • 用户无法选择接收哪些类型的邮件

[需求描述]

一、目标

  • 实现系统级邮件通知能力
  • 支持用户配置邮件通知偏好
  • 为不同类型事件提供可扩展的通知机制

二、功能需求

  1. 通知事件模型设计

定义通知事件类型,例如:

  • 构建相关:
    • 构建成功
    • 构建失败
  • CL 相关:
    • 新评论
    • 被合并
  • 文档相关:
    • 被提及
    • 权限变更
  • 系统类:
    • 系统公告
    • 账号安全提醒

事件类型应:

  • 枚举化管理
  • 可扩展
  • 可在数据库中持久化
  1. 邮件发送基础能力
  • 集成邮件发送服务(SMTP / 第三方邮件服务)
  • 提供统一邮件发送模块:
    • 模板化邮件内容
    • 支持 HTML 格式
  • 记录发送日志(成功 / 失败)
  1. 用户通知配置能力

每个用户可配置:

  • 开启 / 关闭邮件通知
  • 按事件类型选择是否接收
  • 可选择:
    • 实时通知
    • 批量汇总通知(可选,后续扩展)

新增 API:

  • 查询当前用户通知配置
  • 更新通知配置
  1. 通知触发机制

在关键业务流程中:触发通知事件 → 通知中心 → 判断用户配置 → 发送邮件

通知逻辑应:

  • 不阻塞主业务流程
  • 支持异步发送(队列 / 任务机制)

[代码标准]

  1. 所有 PR 提交必须签署 Signed-off-by 和 使用 GPG 签名,即提交代码时(使用 git commit 命令时)至少使用 -s -S 两个参数,参考 Contributing Guide
  2. 所有 PR 提交必须通过 GitHub Actions 自动化测试,提交 PR 后请关注 GitHub Actions 结果;
  3. 代码注释均需要使用英文;

[PR 提交地址] 提交到 mega 仓库的 main 分支 `` 目录;

[开发指导]

  1. 认领任务参考 r2cn 开源实习计划 - 任务认领与确认;

[导师及邮箱] 请申请此题目的同学使用邮件联系导师,或加入到 R2CN Discord 后在 #p-meta 频道和导师交流。

  1. Quanyi Ma genedna@gmail.com
  2. Tianxing Ye yetianxing2014@gmail.com

[备注]

  1. 认领实习任务的同学,必须完成测试任务和注册流程,请参考: r2cn 开源实习计划 - 测试任务r2cn 开源实习计划 - 学生注册与审核

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions