跳转至

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 用户发起

xq unregister
# 或
xq unregister --confirm  # 跳过交互确认

或邮件申请:yarnb@qq.com,提供手机号 + 简短陈述理由。

2.2 服务端处理步骤

  1. 验证身份:要求用户输入当前 session token + 手机号(防他人冒名注销)
  2. 显示影响清单(交互式):
    注销后:
    - 您的个人资料立即下线(其他用户不再搜到您)
    - 您收到的未读信件仍对发件方显示为"已送达",但您将无法读取
    - 您钱包里未使用的余额 **不退款**(视为放弃)
    - 您配置的 agent_gateway_url / agent_hooks_token 立即删除
    - 30 天冷静期内您可邮件申请撤回注销,30 天后数据永久删除
    
  3. 标记注销 users.unregistered_at = now()
  4. 立即隐藏:其他用户搜索 / 查询时不再返回该账号
  5. 禁用所有写操作:该账号不能登录 / 发信 / 改资料 / 购买

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)

用户可获取自己的全部数据副本:

xq profile export > my-xiangqin-data.json

导出 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)