运维与上线

账号数据导出与删除

配置隐私数据清单、认证导出、延迟删除、外部 provider 清理、伪匿名化和取消保护。

已与 starter 提交 2a1a04a 同步。生产前请让法律顾问审核流程和保留设置。

如果客户需要获取自己的数据副本或请求删除账号,请使用本页。模板提供已认证 API、持久 worker、经过测试的逐表策略和私有导出对象,但不包含完成版的账号设置界面;你需要添加符合产品需求的确认 UI 与政策文案。

在显示按钮前先确定政策

  • 决定哪些记录删除、伪匿名化、保留或不导出。内置映射是安全的技术起点,不是法律结论。
  • 审查默认七天删除宽限期和导出保留期、15 分钟新 session 要求、Stripe Customer 删除以及安全 blocklist 保留。
  • 确定共享组织如何转移所有权,以及每个外部供应商如何删除用户输出。worker 会阻止删除,而不是默默放弃这些义务。

可以上线的标准: 法务已审查政策和公开文案;一次性用户能导出并打开内容;宽限期内可取消;owner/admin 阻塞会说明下一步;最终执行按预期删除或伪匿名化所有记录,且日志不泄露签名 URL。

经过测试的数据清单

src/config/account-data-policy.ts 为每张数据库表指定删除、伪匿名化、保留或非个人数据,并声明是否包含在导出中。测试会把清单与 src/db/schema.ts 对比,因此新增表却未作隐私决策会导致构建失败。

凭据、密码 hash、session、验证 token 和 TOTP secret 永不导出。财务、审计、账本和共享工作区记录可在替换不可逆标识后保留。

请求导出

POST /api/account/data-export 要求认证、同源、限流和 Idempotency-Key,返回 202 并入队。通过 GET /api/account/data-export/{requestUuid} 查询状态。

完成后响应包含五分钟有效的 manifest 与私有文件签名链接。导出对象保持私有,默认七天后过期。

请求删除

POST /api/account/deletion 还要求 15 分钟内创建的新 session。默认七天宽限期内可用 DELETE /api/account/deletion 取消;GET 查询状态。

若账号是共享组织最后一个 owner 或最后一个完整权限管理员,请求会被阻止,必须先转移所有权或提升其他管理员。

宽限期后,持久 worker 会撤销认证、取消订阅、按策略删除 Stripe Customer、删除个人工作区对象和外部任务结果、清理可删除记录,并对必须保留的订单、积分、订阅、预约和审计记录进行伪匿名化。外部效果逐项记录,重试不会虚报完成。

必须审核的策略

src/config/account-lifecycle.ts 控制宽限期、导出保留期、新 session 时限、Stripe 删除、安全 blocklist 保留和签名链接时长。

这些是技术默认值,不是法律建议。请与 src/config/legal.ts、provider 合同、财税保留义务和运营地区保持一致。

生产清单

  1. 配置私有存储与 Job runner。
  2. 为新增外部 provider 实现删除 hook。
  3. 新增表时同步更新数据策略。
  4. 用一次性账号测试导出、宽限期取消、owner 阻塞、重试和最终删除。
  5. 不记录导出内容、凭据或签名 URL。

相关内容: 导出与删除依赖持久任务与就绪检查;请在部署与安全上线测试中覆盖这两条流程。

账号数据导出与删除 · Sushi SaaS