!

This page is not translated yet

The interface, navigation and community content are bilingual. The long-form body of this page is still in Chinese. The translation work is tracked as task I18N-10.

See translation tasks

Module 08 · V1.0 · Notifications & Messaging

通知与消息中心

把用户拉回来,但不要把他烦走

P1V1.0显著影响体验与增长,紧随其后

模块目标

要达成什么

构建事件驱动的通知系统,支持站内、邮件、推送、Web Push 多渠道投递,并提供聚合、免打扰与精细的订阅控制。

为什么必须存在

通知是留存的核心杠杆,但也是最容易被滥用的功能。设计目标不是「多发」,而是「发得准」。

功能清单

共 8 个功能点,每个功能点给出实现要点,可直接作为开发任务的描述。

通知类型体系

P0

覆盖:评论回复、帖子回复、@提及、投票里程碑(如「你的帖子获得 100 赞」)、关注、版主动作、举报结果、社区公告、私信。

实现要点:每类通知有独立模板与开关。里程碑类通知只在跨过阈值时触发一次,避免每票都通知。

通知聚合

P0

同一目标的多条通知自动合并,如「Alice 等 12 人赞了你的帖子」。

实现要点:聚合键为 (user_id, type, target_id),在时间窗口(1 小时)内累加;聚合后的通知仍可展开查看明细。

多渠道投递

P1

站内信(默认)、邮件、浏览器 Web Push、移动端推送、可选的 Webhook。

实现要点:用户可按类型分别配置渠道。邮件支持「全部即时 / 每日摘要 / 每周摘要 / 关闭」四档。

免打扰与频控

P1

免打扰时段、每类通知的每日上限、通知合并窗口。

实现要点:免打扰期间的通知进入队列,在时段结束后合并为一条摘要投递。

消息中心

P0

统一的收件箱页面,按「全部 / 未读 / 提及 / 回复 / 系统」分组,支持标记已读与批量操作。

实现要点:未读数实时更新(SSE),点开即标记已读;支持按时间倒序与分组视图切换。

实时推送

P1

通过 SSE / WebSocket 推送新通知,浏览器标签页标题显示未读数(如「(3) Ruyi Community」)。

实现要点:长连接断线自动重连(指数退避);无长连接能力时降级为 30 秒轮询。

通知订阅粒度控制

P2

对单个帖子可设置「关注此帖」,有新评论即通知;对社区可设置「仅精选内容」或「全部内容」。

实现要点:评论后会默认订阅该帖(可取消),并给出「取消订阅」显式入口。

投递可靠性与去重

P1

通知事件通过消息队列投递,保证至少一次,消费端按幂等键去重。

实现要点:幂等键 = (user_id, type, target_id, aggregate_window),重复消费直接丢弃,避免用户收到重复通知。

交互设计

2 条关键交互的分步流程,按用户体验顺序描述,可直接作为前端开发与可用性测试脚本。

1

接收与查看

  1. 1

    顶部铃铛图标显示未读数角标,超过 99 显示 99+。

  2. 2

    点击展开通知抽屉,按时间倒序展示最近 20 条,已读项自动变淡。

  3. 3

    点击某条通知跳转到对应内容并高亮定位,抽屉自动关闭。

  4. 4

    抽屉底部提供「查看全部」,进入完整消息中心。

2

配置通知偏好

  1. 1

    进入设置 → 通知,按类型列出开关矩阵(行=事件类型,列=渠道)。

  2. 2

    每行提供「全部 / 仅站内 / 关闭」快捷预设,也支持逐格勾选。

  3. 3

    设置免打扰时段(起止时间与星期),保存后立即生效。

业务规则

6 条硬性约束。这些规则应当在服务层强校验,而非仅在前端提示。

R01

同一目标同一类型通知在 1 小时窗口内聚合为一条。

R02

单用户每日邮件通知上限 20 封,超出自动转为摘要。

R03

免打扰时段内不投递邮件与推送,仅记录站内信。

R04

举报结果通知默认匿名(不暴露举报人身份)。

R05

关闭某类型通知不影响其在消息中心的历史记录,只影响未来投递。

R06

被屏蔽用户的互动不产生通知。

涉及数据表

本模块涉及的 7 张表。完整字段、索引与说明见「数据表设计」页。

竞品参考

本模块的设计参照了哪些产品,具体参照了什么。

RE

Reddit

通知分组清晰(回复/提及/里程碑/社区活动)。

DI

Discourse

通知粒度极细,可按话题级别订阅。

V2

V2EX

评论后自动订阅帖子并给显式取消入口,符合直觉。

掘金

掘金

里程碑式激励通知对创作者留存效果显著。

验收指标

本模块交付时应当达到的量化目标。未达标即视为该模块未完成。

通知点击率回复类 ≥ 25%
通知投递延迟站内 ≤ 2s,推送 ≤ 10s
退订率邮件退订 ≤ 1.5%
消息中心日活触达DAU 中打开消息中心 ≥ 20%

避坑清单

竞品踩过的坑,以及本模块在实现时最容易犯的错误。

  • 不做聚合会在热门帖下瞬间产生海量通知,用户会直接关掉通知。

  • 邮件若无频控会触发投诉与域名信誉下降,严重影响后续投递率。

  • 通知投递若无幂等,消息队列重试会造成重复骚扰。

  • 「关注此帖」若不提供显式取消入口,用户会困惑于为何持续收到通知。