Skip to content

用户通知系统设计 #6

Description

@codetalks-new

在用户创建的主题回收回复,收到感谢,或者在一些回复中被 @ 了。需要通知用户。

数据模型设计

当前的通知类型有如下一些:

  • 收到回复
  • 收到@
  • 收到感谢
  • 创建主题被收藏
  • 关注的用户有了新动态
  • 关注的节点有了新主题

通知消息类别与位操作

这些用户又有不同的重要程度,用户应该可以忽略不重要的消息。
由于这些消息种类不是特别多。可以使用位运算方便后面操作与查询 。
使用 64 位的整型存储可以支持最多64种不同类型的通知。对于此类系统来说完全足够了。
一个用户要面对 64 个开关也是够了。

当前针对上面的通知类型,细化声明如下:

class NotificationCategory(IntFlag, EnumChoiceMixin):
  RECEIVE_REPLY = 1 << 0  # 收到回复
  RECEIVE_MENTION = 1 << 1  # 收到 @
  RECEIVE_REPLY_LIKE = 1 << 2  # 收到回复感谢
  RECEIVE_POST_LIKE = 1 << 3  # 收到主题感谢
  RECEIVE_REPLY_FAV = 1 << 4  # 收到回复被收藏
  RECEIVE_POST_FAV = 1 << 5  # 收到主题被收藏
  FOLLOWED_USER_NEW_REPLY = 1 << 6  # 关注用户有了新回复
  FOLLOWED_USER_NEW_POST = 1 << 7  # 关注用户创建了新主题
  FOLLOWED_POST_NEW_REPLY = 1 << 8  # 关注的主题有了新回复
  FOLLOWED_NODE_NEW_POST = 1 << 9  # 关注的节点有了新主题

  @property
  def label(self):
    return _notification_category_to_text[self]


_notification_category_to_text = {
  NotificationCategory.RECEIVE_REPLY: "收到回复",
  NotificationCategory.RECEIVE_MENTION: "收到@",
  NotificationCategory.RECEIVE_REPLY_LIKE: "收到回复感谢",
  NotificationCategory.RECEIVE_POST_LIKE: "收到主题感谢",
  NotificationCategory.RECEIVE_REPLY_FAV: "收到回复收藏",
  NotificationCategory.RECEIVE_POST_FAV: "收到主题收藏",
  NotificationCategory.FOLLOWED_USER_NEW_REPLY: "关注用户有了新回复",
  NotificationCategory.FOLLOWED_USER_NEW_POST: "关注用户创建了新主题",
  NotificationCategory.FOLLOWED_POST_NEW_REPLY: "关注的主题有了新回复",
  NotificationCategory.FOLLOWED_NODE_NEW_POST: "关注的节点有了新主题",

}

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions