这是 Beta 探索课程,内容结构、实验步骤和示例可能会继续调整。
数据模型与默认策略
偏好数据模型
notification_preferences 表:
| 字段 | 含义 |
|---|---|
| user_id | 用户 |
| global_enabled | 全局开关 |
| category_flags | 分类开关(JSON / 位图) |
| quiet_start / quiet_end | 免打扰时段 |
| frequency | 推送频率(高 / 中 / 低) |
| updated_at | 更新时间 |
核心原则:保存业务事实,不把规则散落在应用逻辑里。
默认偏好策略
不同用户群体的默认偏好不同:
| 用户类型 | 默认策略 |
|---|---|
| 新用户 | 全部开启(让用户先体验,再引导关闭) |
| 普通用户 | 默认开启,可调整 |
| 高打扰用户 | 默认收紧(结合投诉 / 卸载信号) |
默认值不是一刀切,而是按用户状态动态设定。
免打扰时段的处理
免打扰时段要处理跨午夜的情况:
- 23:00-07:00 跨越午夜,不能简单比较开始 < 当前 < 结束。
- 判断逻辑:
当前 >= 开始 || 当前 < 结束(当开始 > 结束时)。 - 紧急通知(私信)可豁免免打扰。
偏好存储与缓存
- 偏好读频率高(每次发送都要检查),写频率低。
- 高频访问用 Redis 缓存,写入时更新缓存。
- 缓存失效兜底:回源数据库。
一句话
偏好数据 = 保存事实 + 默认按群体 + 免打扰跨午夜 + 缓存优化。数据模型简单,但边界情况(跨午夜、默认值、缓存)要处理对。
发现内容有问题?
告诉我们哪里需要改进。
