Files
gongxue-base/docs/refactor/data-governance.md
2026-06-21 21:54:43 +08:00

2.1 KiB
Raw Blame History

数据治理与安全规范

这次重构不按 PocketBase 旧字段原样搬迁。旧集合只作为历史输入源,正式业务表按商用 SaaS 规范重新建模。

默认原则

  • 旧数据先进入 pb_raw_records,且默认脱敏。
  • 密钥、token、session、private key、AppSecret、支付密钥不得进入 public schema。
  • 私密配置进入 app_private.tenant_secrets,生产环境再接云厂商 KMS/Vault。
  • settings 不再作为业务表使用必须拆成公开配置、支付账户、短信配置、OAuth 配置、存储配置。
  • users 不再作为万能表,拆成用户、身份、租户成员、学生资料、权益、学习记录。
  • users.isSvipsvipExpirysvipRegions 不作为新系统权限源,统一迁移为 entitlements
  • users.stats.favorites/wrongBook 不继续留在 JSON 中,统一迁移为收藏表和错题表。
  • crm_config、支付、短信、OAuth、对象存储等配置不得在 public schema 中保存明文密钥;公共表只保留可展示配置或 secret 引用。
  • 导入后的上线闸门是 npm run pb:import:validate:有 FAIL 不上线,WARN 必须由业务确认并记录。

禁止直接复制的字段类型

字段名包含以下关键词时默认视为敏感:

password
token
secret
privateKey
sessionKey
accessKey
appKey
apiKey
openid
unionid
aesKey
notifyToken

这些字段默认在导入原始区时写入 [REDACTED]。如果确实需要迁移到私有表,必须显式设置:

IMPORT_SECRET_VALUES=true npm run import:json

并且只能进入 app_private.tenant_secrets

导入质量报告

导入时会写入 pb_import_issues,用于记录:

  • 敏感字段来源
  • 旧 JSON 字段需要拆表
  • settings 大杂烩配置风险
  • users 会员状态需要转权益

查看旧 schema 风险:

npm run pb:schema:risk

后续硬性验收

  • RLS 覆盖所有带 tenant_id 的表。
  • 租户间数据隔离测试必须自动化。
  • 支付 webhook 必须幂等。
  • 订单金额、支付流水、权益开通必须可审计。
  • 管理员操作必须写审计日志。