数据保留与删除
“数据会不会被删/能留多久”取决于数据种类:消息、离线队列、聊天室状态、设备 token、推送/回调日志、审计记录各有不同生命周期。本页给出当前实现的保留规则与删除接口,便于做合规评估与用户协议。
保留规则
| 数据 | 保留 / 过期 | 删除方式 |
|---|---|---|
| 单聊/群聊消息 | 持久化保存,无自动 TTL | message.history.clean(清理历史)/ message.history.delete |
| 离线队列 | 每会话最多 500 条;投递后清理 | 自动 |
| 聊天室消息 | 不落离线历史;仅在线广播 | 随会话消失(无历史可删) |
| 聊天室状态(KV/禁言/白名单/封禁) | 随房间销毁清理;KV 可带 ttlMs 惰性过期 | chatroom.destroy |
| 聊天室空闲销毁 | 默认 1800000ms(30 分钟);保活 3 个月 | 自动(idle/fixed 策略) |
| 设备推送 token | 每用户最近 100 条历史(软删除 active=false);活跃上限 20 | DELETE …/push/tokens/{tokenId} |
| 推送投递记录 | 每应用最近 5000 条(维护周期淘汰) | 自动 |
| 回调投递日志 | 按维护周期保留(retentionTruncated 标记截断) | 自动 / 手动重试不改变保留 |
| 审核任务 | 环形上限 2000 条 | 自动淘汰 |
| 操作审计日志 | 按维护周期保留(控制台「操作日志」) | 仅追加,不提供逐条删除 |
| 用户资料 | 注销保留记录(禁止登录/收发);删除为物理删除 | user.deactivate / user.delete |
| 已撤回消息 | 内容替换为 recall 占位,原内容不再返回 | —(撤回即替换) |
用户注销 / 删除 / 恢复
| 操作 | 接口 | 行为 |
|---|---|---|
| 注销 | user.deactivate | 禁止登录与收发;既有 token 失效;保留记录以便审计/恢复;触发 user.deactivated 回调 |
| 恢复 | user.reactivate | 恢复可用;触发 user.reactivated |
| 物理删除 | user.delete | 删除用户与相关状态;开发/测试环境使用;生产建议注销而非删除 |
| 批量清理消息 | message.history.clean | 按会话/时间清理;可只清理某用户视角;触发 message.deleted |
| 清理单条 | message.history.delete | 删除单条消息(合规删除场景) |
删除不是“摘掉索引”
删除接口会移除消息/用户数据,且不可恢复;审计日志与投递记录是独立数据面,不会随之级联删除。
合规要求“可删除”时,需要同时覆盖:IM 消息、业务库副本、搜索引擎/数仓副本、日志与备份;IM 侧删除只是其中一环。
隐私协议建议条目
- 收集范围:userId、昵称、头像 URL、消息内容、设备推送 token、连接与操作日志。
- 用途:消息投递、离线通知、内容安全、故障排查与计费/统计。
- 保留期限:消息按业务配置;日志按运维周期;注销用户保留期与删除方式。
- 第三方:应用自建的 webhook、RTC、翻译等外部服务的数据流向需单独声明。
- 用户权利:查询、更正、注销、删除的入口与时限。