xiangqin 数据生命周期¶
⚠️ 草稿状态:本文档为 AI 起草初稿,尚未经律师 review,不代表当前正式生效条款。
本文档明确 xiangqin 各类数据的保留期、删除时机、导出流程、注销流程。对应 PIPL 第 47 条 + 第 45 条用户权利。
1. 数据分类 + 保留期总表¶
| 数据类型 | 位置 | 保留期 | 到期动作 |
|---|---|---|---|
| 手机号 hash(HMAC-SHA256) | SQLite users.phone_hash |
账号存续 + 3 年 | 3 年后覆盖为 "DELETED" 占位(保留唯一约束避免复注) |
| 身份证号 hash(HMAC-SHA256) | SQLite users.cert_id_hash |
账号存续 + 3 年 | 同上 |
| 真实姓名 | 不存储(仅核验瞬间持有) | 立即销毁 | N/A |
| 个人资料(年龄 / 城市 / 简介等) | SQLite users.* 公开字段 |
账号存续 | 注销后 30 天删除 |
| 信件内容 | SQLite messages.* |
账号存续(永久) | 注销后按下面 2.4 步骤物理删除 |
| 支付订单 | SQLite recharge_orders.* |
5 年(会计法) | 5 年后脱敏归档到 OSS(金额+订单号+日期,去除关联用户 ID) |
| 日志(/var/log) | epsilon 本地 | 7 天滚动 | logrotate daily,保留 7 份 |
| 审计日志(admin 操作) | SQLite audit.* |
账号存续 | 注销后按下面 2.4 步骤物理删除 |
| 备份(全量 DB) | 阿里云 OSS | 30 天 | OSS lifecycle rule 自动删除 |
| agent_gateway_url / hooks_token(如有) | SQLite users.* |
账号存续 | 注销立即删除 |
2. 账号注销流程¶
2.1 用户发起¶
或邮件申请:yarnb@qq.com,提供手机号 + 简短陈述理由。
2.2 服务端处理步骤¶
- 验证身份:要求用户输入当前 session token + 手机号(防他人冒名注销)
- 显示影响清单(交互式):
- 标记注销
users.unregistered_at = now() - 立即隐藏:其他用户搜索 / 查询时不再返回该账号
- 禁用所有写操作:该账号不能登录 / 发信 / 改资料 / 购买
2.3 30 天冷静期¶
- 账号标记注销后 30 天内,用户可发邮件 yarnb@qq.com 申请恢复
- 恢复成功率:资料还在(未被 30 天后的清理 cron 删除),可完整恢复
- 冷静期过后不可恢复
2.4 30 天后永久删除¶
cron job 每天扫描 unregistered_at < now() - 30 days 的用户,执行:
-- 资料 / 信件等个人数据全部删除
DELETE FROM profiles WHERE user_id = ?;
DELETE FROM messages WHERE from_user_id = ? OR to_user_id = ?;
-- users 表保留但字段清空(保留 phone_hash / cert_id_hash 做唯一约束防复注)
UPDATE users SET
phone_hash = 'DELETED:' || id, -- 破坏原哈希,保留唯一性
cert_id_hash = 'DELETED:' || id
WHERE user_id = ?;
- 唯一例外:支付订单(recharge_orders) 保留 5 年(会计法),但
user_id替换为 NULL,金额 / 订单号 / 支付时间保留供税务审计
重要:系统级自动清理(TTL / 过期 cron)只存在于此处 —— 用户主动注销触发的 PIPL 合规擦除。除此之外所有业务数据永久保留。
3. 数据导出(可携带权 / PIPL §45)¶
用户可获取自己的全部数据副本:
导出 JSON 包含:
- 个人资料完整字段
- 历史信件记录(所有账号存续期间的信件)
- 支付订单记录
- 不包含:其他用户发给您的信件的 outer 包装元数据里 xiangqin 服务端的警戒模板(那是服务端资产,非您的数据)
若 CLI 命令暂未实现,可发邮件 yarnb@qq.com 申请,3 个工作日内我们邮件发送 JSON。
4. 发生数据泄露时的通告¶
若发生安全事件(数据被未授权访问 / 泄露):
- 72 小时内:
- 本文档站公告说明影响范围
- 邮件 / 短信通知所有受影响用户
- 上报监管机关(网信办 / 当地公安网安)
- 14 天内:
- 发布事故分析报告 + 补救措施
- 个人可通过 yarnb@qq.com 查询自己的受影响状态
5. 第三方服务的数据生命周期¶
我们调用的第三方服务各自的数据处理由其自身政策约束,但我们选型上已确认:
| 第三方 | 数据类型 | 在第三方的保留期(截至 2026-04 核实) |
|---|---|---|
| 阿里云 Cloudauth | 实名核验日志 | 6 个月 |
| 阿里云短信 | 短信发送记录 | 6 个月 |
| 支付宝 | 订单记录 | 按银行业规定 10 年+ |
| 阿里云 OSS(每日备份) | 我们的 OSS 桶内容 | 由我们控制(30 天 lifecycle rule 自动删除) |
6. 企业内部访问控制(数据最小可见原则)¶
只有以下角色能在内部访问用户数据,且访问被审计:
| 角色 | 访问范围 | 审计 |
|---|---|---|
| Admin(老板本人) | 全部数据(运维必要) | 所有 admin CLI 操作写 audit log |
| Moderator | 被举报账号的公开资料 + 涉案信件(非全部) | audit log |
| 普通员工 / 合作伙伴 | ❌ 没有 | N/A |
| 我(Claude,作为 AI 助手) | 仅对 vault 中明确声明的 credential 有访问,不访问生产 DB 用户数据 | N/A |
7. 本文档变更¶
- 重大变更(保留期调整 / 新增数据类型 / 第三方):提前 14 天文档站公告
- 非重大变更:发布即生效
本文档最后更新:2026-04-24 文档状态:草稿(待律师 review)