Files
ai-customer-service/prd/DATA_COMPLIANCE_RETENTION_POLICY.md
Your Name cf46b27610 fix: P0-1 RateLimiter并发写安全 + P0-2工单操作错误码区分 + P1 rows.Close修复
P0-1 (limits.go): Allow()方法改为全程使用写锁保护counters map读写,避免RLock写入时的data race
P0-2 (ticket_workflow.go+ticket_handler.go): Assign/Resolve/Close操作先查询ticket存在性和状态,返回明确的CS_TICKET_4001/CS_TKT_4002/CS_TICKET_4092/CS_TICKET_4093错误码,handler根据错误前缀路由HTTP状态码
P1-1 (ticket_store.go): 移除GetStats中3处手动rows.Close(),只保留defer Close()
2026-05-01 20:56:25 +08:00

5.4 KiB
Raw Permalink Blame History

数据合规与留存策略

版本v1.0 | 状态:已生效 关联tech/INTERFACE.md、PRODUCTION_PHASE1_STATUS.md


1. 数据分类

1.1 数据类别

类别 内容 示例
用户数据 用户在客服系统中的会话、消息、工单 session_id、message_content、ticket_id
账户数据 与主系统关联的用户身份、配额、Token user_id、email、quota
行为数据 用户操作日志、审计日志 audit_logs、action、source_ip
运营数据 转人工原因、统计指标 handoff_reason、priority

2. 数据合规要求

2.1 法律法规遵循

本系统应遵循以下合规要求:

要求 说明 当前状态
数据最小化 只收集业务必需的数据 部分满足
目的限定 数据仅用于客服目的,不用于其他用途 满足
用户知情 用户应知道自己的数据被收集 待补充
删除权 用户请求删除时,应可删除相关数据 待实现

2.2 敏感数据处理

数据类型 存储要求 展示要求 当前状态
用户邮箱 加密存储(待实现) 脱敏后展示 未实现
手机号 加密存储(待实现) 脱敏后展示 未实现
消息内容 明文存储 不脱敏 已实现
退款金额 明文存储 需登录态 已实现
IP 地址 明文存储 日志中记录 已实现

3. 数据留存策略

3.1 留存周期

数据类型 留存周期 说明
审计日志security 2 年 不可删除,用于安全审计
审计日志operation 1 年 工单操作记录
会话消息 90 天 用户对话历史
工单记录 1 年 已解决/已关闭工单
开放工单 永久保留 直到关闭
健康检查日志 30 天 运维数据

3.2 数据删除流程

触发条件

  • 用户主动请求删除GDPR/个人信息保护法)
  • 超过留存周期的数据

删除执行

  1. 软删除:在对应记录上标记 deleted_at 时间戳
  2. 硬删除:超过保留期后执行物理删除(仅 admin 可执行)
  3. 备份清理:删除备份中的对应数据

:软删除和硬删除机制当前未实现(所有数据直接物理删除),需 Phase 4 补充。

3.3 数据隔离

隔离维度 当前状态 说明
多租户隔离 未实现 生产一期仅支持单租户
测试数据隔离 部分实现 测试环境使用独立数据库

4. 审计日志规范

4.1 审计日志表结构

cs_audit_logs

字段 类型 说明
id uuid 审计记录唯一 ID
tenant_id string 租户 ID当前固定为 default
object_type string 对象类型ticket、session、message
object_id string 对象 ID
action string 操作类型create/update/delete/security_reject
before_state jsonb 操作前状态(可选)
after_state jsonb 操作后状态(可选)
actor_id string 操作者 ID若为空则降级为 open_id
source_ip string 操作来源 IPP0 缺口:当前未写入
created_at timestamp 创建时间

4.2 记录范围

已记录

  • 工单创建ticket.create
  • 消息处理message.processed
  • 审计写入失败fail-closed整体请求返回错误

未记录P0 缺口)

  • 工单分配ticket.assign
  • 工单解决ticket.resolve
  • 安全拒绝事件signature_invalid、timestamp_invalid、body_rejected

4.3 审计日志不可篡改性

  • 审计日志表无 UPDATE / DELETE 权限,仅 INSERT
  • 定期备份到冷存储
  • 备份文件设置保留策略2年

5. 数据库安全

5.1 PostgreSQL 安全

要求 当前状态
强密码策略 配置文件中使用强密码
SSL 连接 支持 SSL配置项POSTGRES_SSL_MODE
最小权限原则 应用使用专用数据库用户,仅授予必要权限
连接池限制 使用 pgbouncer 或内置连接池
定期备份 手动备份(待自动化)

5.2 备份策略

备份类型 频率 保留时间
全量备份 每天 30 天
增量备份 每小时 7 天
审计日志备份 每周 2 年
异地备份 每月 1 年

:备份自动化当前未落地,需在部署阶段补充。


6. 当前阶段说明

6.1 已满足的合规项

  • 数据最小化:系统只收集业务必需字段
  • 审计日志持久化到 PostgreSQLfail-closed 保证审计不丢失
  • 无外部数据共享
  • 单租户数据隔离

6.2 待补充的合规项

项目 优先级 说明
敏感数据加密存储 P1 邮箱、手机号等加密存储
软删除/硬删除机制 P1 支持用户数据删除请求
备份自动化 P1 定时备份脚本
用户知情同意 P1 前端告知用户数据收集
隐私政策页面 P1 展示数据处理说明
RBAC 权限模型 P0 防止越权访问

7. 当前版本状态

  • 本文档版本v1.0
  • 生效日期2026-04-30
  • 下次审查Phase 4 补充隐私政策后