docs: 数据保留 36 个月政策定稿 + 09-20 收尾状态 —— STATUS 版本演进表重排至 rc.20,隐私政策 §3.3/PIA §8 修订,UAT V1.1 用例 46 条(9 角色×7 路径),E2E 65/65 本机模拟 CI 登记
This commit is contained in:
@@ -280,7 +280,7 @@
|
||||
- [x] **Step 1:** 确定活栈供给方式 → **Compose in CI**(理由见上)。
|
||||
- [x] **Step 2:** 按决策实现 job:`compose config` 秒级快速失败 → `down -v` 保证全新库 → `build` → `up`
|
||||
(显式含 minio)→ 就绪等待(90×5s)→ seed → `pytest tests/e2e -v` → teardown;并加 `timeout-minutes: 30`。
|
||||
- [ ] **Step 3:** 实测一次完整的 CI 绿 —— **需在 GitHub Actions 上执行,本机无法进行**(本机无 Docker Hub 出口)。
|
||||
- [~] **Step 3:** 实测一次完整的 CI 绿 —— **2026-09-20 本机已模拟 CI 序列实测**:compose 全新栈(`down -v` 清卷)→ backend 就绪(Flyway 应用至 V049)→ seed → `pytest tests/e2e` **65/65 全绿**(宿主机 Python 3.11 + `docker exec psql` 断言,与 CI runner 执行环境等价)。**GitHub Actions 上的流水线实测仍待一次推送**(需有 GitHub 出口的环境);另登记一处基础设施风险:`minio/minio:RELEASE.2025-09-07T16-13-09Z` pin tag 在本机拉取被拒(疑似上游清理 RELEASE 日期 tag,需在有完整 Hub 出口处验证;E2E 用例不触 S3,不影响本次 65/65 结论)。
|
||||
|
||||
**Acceptance:** CI 串起 迁移 → backend test → admin type-check/build → miniapp type-check → E2E,任一失败阻断。
|
||||
|
||||
@@ -308,7 +308,7 @@
|
||||
|
||||
---
|
||||
|
||||
## 批 3 — 代码级遗留清偿
|
||||
## 批 3 — 代码级遗留清偿 ✅(2026-09-19/20 全部关闭)
|
||||
|
||||
### Task 3.1: Phase 21 遗留
|
||||
|
||||
@@ -358,7 +358,20 @@
|
||||
(原文「全仓搜索为空」很可能是只在 `db/migration/` 内搜了表名的另一种写法 —— 该表在
|
||||
`demo-seed-*.sql` 与 `V009` 中都有;凡「全仓无 X」这类断言必须给出**搜索命令与范围**,
|
||||
否则无法复核,本项目已多次因此产生失实结论。)
|
||||
- [ ] **数据保留流程**:按 `docs/legal/privacy-policy.md` 与 `docs/security/PIA.md` 落实保留期限(**不得擅自永久保存或删除**)。
|
||||
- [x] **数据保留流程** → **2026-09-19 已落地**(产品同日确认:注销后数据保留**不得低于 36 个月**):
|
||||
- `V049__add_account_retention.sql`:`users.closed_at` 列(此前注销时间只存在于日志,保留期无数据基础)+
|
||||
`account.retention.purge` 权限(仅授 super_admin,处置不可逆不批量授权)。
|
||||
- `AccountConfig.dataRetentionMonths`(默认 36,yml 可覆盖)—— 配置化纪律(AGENTS.md #12),
|
||||
读取点为 `DataRetentionService`,不留死配置。
|
||||
- `DataRetentionService`(「配置 + 人工审核」模式,**不引入自动定时删除**,符合 Phase 21 既定要求):
|
||||
`listDueAccounts()` 列保留期满的注销账号;`purgeExpired()` 人工审核后执行匿名化
|
||||
(openid 置 `purged-<userId>` 断连微信身份、phone 清空、资料匿名化、照片/佐证软删、审计留痕、幂等)。
|
||||
保留期内的账号服务端拒绝处置(下限不可提前)。
|
||||
- `AccountRetentionOperatorController`(`/operator/account/retention/due` + `/{userId}/purge`)。
|
||||
- 政策同步:`docs/legal/privacy-policy.md` §3.3 与 `docs/security/PIA.md` §8 原文「30 天内删除」
|
||||
与本决策冲突,已按用户最新明确指令修订为「保留 36 个月(下限),到期人工审核匿名化」。
|
||||
- 如实登记的边界:佐证/照片的**对象存储文件本体**不在此处删除(需存储客户端逐文件凭证),
|
||||
由对象存储生命周期规则兜底。
|
||||
|
||||
### Task 3.2: Phase 22 遗留(死配置)
|
||||
|
||||
@@ -424,10 +437,10 @@
|
||||
- [ ] 产品确认 `docs/PENDING_DECISIONS.md` 中 13 项待确认(人脸核验、本地资格保留期限、咨询资质、服务站开放时间、Banner 最大数量、推荐阈值等)。
|
||||
- [ ] 复核新增的「第三方开放遗留」7 项(凭据机制 / 限流阈值 / OpenAPI 发布 / `POST /activities/{id}/interests` 语义 / 审计配额 / 脱敏边界 / 幂等 TTL 分级)。
|
||||
|
||||
### Task 4.3: V1.1 分角色 UAT 用例编写
|
||||
- [ ] 按 **9 个角色**(用户 / Reviewer / Matchmaker / Counselor / Counseling Manager / Service Station Operator / Content Editor / Activity Manager / Risk Operator)编写用例,**替代 V1.0 旧用例**(`tests/uat/UAT-Test-Cases.md` 为旧版参考)。
|
||||
- [ ] 覆盖线上主路径、线下扫码、咨询、辅导、服务站、活动二阶段确认、反诈举报七条路径。
|
||||
- [ ] 与 `tests/uat/run-uat.sh`(管理端可达性实测 + 备份检查)串联。
|
||||
### Task 4.3: V1.1 分角色 UAT 用例编写 ✅(2026-09-20 完成)
|
||||
- [x] 按 **9 个角色**(用户 / Reviewer / Matchmaker / Counselor / Counseling Manager / Service Station Operator / Content Editor / Activity Manager / Risk Operator)编写用例,**替代 V1.0 旧用例** → `tests/uat/UAT-Test-Cases-V1.1.md`(46 用例,旧文件已加取代头注)。
|
||||
- [x] 覆盖线上主路径、线下扫码、咨询、辅导、服务站、活动二阶段确认、反诈举报七条路径。
|
||||
- [ ] 与 `tests/uat/run-uat.sh`(管理端可达性实测 + 备份检查)串联 —— 脚本内引用的用例清单需指向 V1.1 版,留待 UAT 启动前对齐(不阻塞)。
|
||||
|
||||
### Task 4.4: Phase 24 启动确认
|
||||
- [ ] 用户确认 Phase 24 启动;确认前**不得**自动进入。
|
||||
|
||||
Reference in New Issue
Block a user