数据模型与默认策略

偏好数据模型

notification_preferences 表:

字段含义
user_id用户
global_enabled全局开关
category_flags分类开关(JSON / 位图)
quiet_start / quiet_end免打扰时段
frequency推送频率(高 / 中 / 低)
updated_at更新时间

核心原则:保存业务事实,不把规则散落在应用逻辑里。

默认偏好策略

不同用户群体的默认偏好不同:

用户类型默认策略
新用户全部开启(让用户先体验,再引导关闭)
普通用户默认开启,可调整
高打扰用户默认收紧(结合投诉 / 卸载信号)

默认值不是一刀切,而是按用户状态动态设定。

免打扰时段的处理

免打扰时段要处理跨午夜的情况:

  • 23:00-07:00 跨越午夜,不能简单比较开始 < 当前 < 结束。
  • 判断逻辑:当前 >= 开始 || 当前 < 结束(当开始 > 结束时)。
  • 紧急通知(私信)可豁免免打扰。

偏好存储与缓存

  • 偏好读频率高(每次发送都要检查),写频率低。
  • 高频访问用 Redis 缓存,写入时更新缓存。
  • 缓存失效兜底:回源数据库。

一句话

偏好数据 = 保存事实 + 默认按群体 + 免打扰跨午夜 + 缓存优化。数据模型简单,但边界情况(跨午夜、默认值、缓存)要处理对。

发现内容有问题?

告诉我们哪里需要改进。