Files
zhuiguang-ai/.trae/specs/modules/notifications.md
T

3.8 KiB

通知系统模块

概述

通知系统提供实时消息推送、智能摘要合并和个性化偏好设置,确保用户不错过重要互动但也不被过度打扰。

数据模型

Notification (通知)

字段 类型 说明
id Int @id 主键
userId Int 用户ID
type NotifType 通知类型
title String 标题
content String? 内容
link String? 跳转链接
isRead Boolean @default(false) 是否已读
createdAt DateTime 创建时间

NotifType 枚举

值 说明
COMMENT_REPLY 评论回复通知
COMMENT_LIKE 评论点赞通知
TOPIC_REPLY 话题回复通知
SYSTEM 系统通知
DIGEST 🆕 智能摘要合并通知

智能通知摘要 (Smart Notification Digest) 🆕

功能说明

当用户在短时间内收到多条同类通知时,系统自动合并为一条摘要通知,减少通知轰炸。

合并规则

  • 同类通知(同 type + 同来源)在 30 分钟内合并
  • 摘要格式: "你的帖子收到了 5 条新回复"
  • 原始通知保留但标记为已读,摘要通知链接到通知详情页

定时任务

  • 脚本: scripts/notification-digest.mjs
  • 每 3 小时合并一次未读通知
  • 仅对超过 3 条同类通知的用户生成摘要

通知偏好设置 🆕

功能

用户可在通知中心设置通知偏好,控制接收哪些类型的通知。

API

路由 方法 功能
/api/user/notification-prefs GET 获取通知偏好
/api/user/notification-prefs PUT 更新通知偏好

可配置项

偏好键 说明 默认值
comment_reply 评论回复通知 true
comment_like 评论点赞通知 true
topic_reply 话题回复通知 true
system 系统通知 true
digest 智能摘要通知 true
email_digest 邮件摘要(未实现) false

通知中心页面 🆕

路由

  • /user/notifications — 通知中心独立页面

功能

  • 分类标签页: 全部 / 回复 / 点赞 / 系统 / 摘要
  • 批量标记已读
  • 单条跳转到目标内容
  • 未读数量徽章
  • 通知偏好设置入口

组件

  • NotificationCenter (src/components/forum/NotificationCenter.tsx)

API 接口

通知核心 API

路由 方法 功能
/api/notifications GET 获取通知列表(含未读数)
/api/notifications PUT 标记通知为已读(支持指定ids或全部已读)
/api/notifications/unread-count GET 获取未读通知数量(轻量级)

通知偏好 API 🆕

路由 方法 功能
/api/user/notification-prefs GET 获取通知偏好设置
/api/user/notification-prefs PUT 更新通知偏好设置

自动触发规则

以下操作自动生成通知:

操作 通知对象 通知类型
回复评论 评论作者 COMMENT_REPLY
点赞评论 评论作者 COMMENT_LIKE
回复话题 话题作者 TOPIC_REPLY
系统公告 所有用户 SYSTEM
摘要合并 用户本人 DIGEST

前端组件

组件 文件 说明
NotificationBell src/components/forum/NotificationBell.tsx 导航栏通知铃铛(红点/下拉面板/自动已读)
NotificationCenter src/components/forum/NotificationCenter.tsx 🆕 通知中心页面(分类标签/批量操作/偏好入口)

NotificationBell 交互

  • 未读时显示红色圆点徽章
  • 点击展开快捷通知面板(最近5条)
  • 下拉面板支持滚动加载更多
  • 点击通知跳转到目标页面并自动标记已读
  • "查看全部"链接跳转到通知中心