Files
gaokao-volunteer-system/docs/ACTIVE_REMEDIATION_2026-06-20.md
Hermes Agent 8815f85ec4
Some checks failed
CI / pytest (Python 3.10) (push) Has been cancelled
CI / pytest (Python 3.11) (push) Has been cancelled
CI / pytest (Python 3.12) (push) Has been cancelled
feat(crowd_db): 27省全量完成 usable/high 升级 + review 修复
- 27 省全部达到 usable 及以上(7 high + 20 usable + 0 skeleton)
- high 白名单: 湖南/广东/江苏/山东/河北/浙江/福建
- 可信来源元数据补齐: 湖南/四川 province_official URL 修复
- 共享测试同步: test_provenance_query.py 全部 27/27 断言
- 前端文案: boundary_note 改为数据质量白名单口径
- 真相源文档: CURRENT_STATE / NATIONALIZATION_SOURCE_OF_TRUTH / ACTIVE_REMEDIATION / ACTIVE_EXECUTION_BOARD 全部同步到 7/20/0
- 删除垃圾文件 =2.0.0(pip install 误输出)

验证: pytest data/crowd_db/tests/ admin/tests/test_web_public_content_pages.py → 57 passed
2026-06-25 00:17:20 +08:00

254 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ACTIVE_REMEDIATION_2026-06-20
最后更新: 2026-06-23
状态词: 当前仍然有效的问题清单(仅保留未解决项;新增 crowd_db 全国高信任建设主线)
真相源: `docs/CURRENT_STATE.md`
来源基线:
- `docs/ACTIVE_REMEDIATION_2026-06-19.md`**已降级为历史快照**
- `reports/PRODUCTION_STRICT_REVIEW_2026-06-19.md`6/19 复审报告)
- `docs/plans/2026-06-19-production-readiness-remediation-plan.md`6/19 整改计划)
- 6/20 端到端本地 acceptance 步骤:`docs/DELIVERY_RETENTION_OPS_RUNBOOK.md` §8
- 本轮 TDD 执行结果(直接相关子集 205 passed, 0 failed, retention 6 passed端到端 smoke 4 笔订单验证通过)
> 本文件取代 `docs/ACTIVE_REMEDIATION_2026-06-19.md`(已降级为历史快照)。
---
## 0. 使用规则(防止虚假完成和漂移)
本清单只保留"当前仍然有效"的问题。
以下类型不得再重复列为当前阻塞:
1. 已在代码中落地且已通过 `bash scripts/dev-verify.sh` 验证并已推送三仓的问题
2. 只属于历史评审快照、但已在 6/19 或 6/20 之前修复的问题
3. 尚未进入当前版本范围、且已明确标注为后续阶段T12 Web 自助 MVP / 真实支付 acceptance的能力缺口
判断规则:
- 已落地 = 代码/配置/脚本/测试/文档已存在并已通过 dev-verify 验证
- 已收尾 = 工作区干净 + main 已同步三仓
- 后续范围 = `CURRENT_STATE.md` 已明确声明"不属于 v2.1 当前完成范围"
---
## 1. 当前仍然有效的问题(按优先级,只保留未解决项)
### A. 投产级真实缺口(生产上线仍阻塞)
#### L-A 隐私政策 / 服务协议正式法务审定
严重度: P1
当前状态: **草案已补齐,待正式法务审核**
范围归属: 合规/数据治理
已完成2026-06-21 增量):
- `docs/PRIVACY_POLICY_DRAFT.md` 已补齐未成年人、委托处理、用户权利、存储删除、联系方式、版本更新等条款
- `docs/SERVICE_TERMS.md` 已补齐服务边界、支付退款、知识产权、免责、争议解决、版本更新等条款
- `docs/LEGAL_PRIVACY_BASELINE.md` 已补齐法务审核条款清单与待审状态说明
仍缺:
- 运营主体全称与正式联系信息最终确认
- 法务正式审定与版本号/生效日期拍板
- 前台正式挂载入口与版本化引用
### A-2 后台/外部渠道补录同意审计统一化6/20 已完成)
严重度: P1
当前状态: **6/20 已完成**
范围归属: 合规/数据治理
已完成6/20 增量):
- `CreateOrderRequest.consent: ConsentInfo` 必填,缺失或非法 → HTTP 422
- `consent_method` 白名单: `verbal_chat / phone_recording / screenshot / written_form / self_declared`
- 4 个 source (xianyu / wechat / web / school) 一致处理
- `Order` 模型 + DAO + schema 增量加 `consent_method / consent_given_at` 字段(冗余避免 join
- 创建订单后同步写 `order_intakes` 记录,与 portal 路径同口径
- `consent_operator` 严格按基线白名单 `self / guardian / admin_import`:
- `web` 渠道: `guardian`(与 `intake_store.save` 默认值一致)
- 其他渠道: `admin_import`(后台代录,同意来源是渠道商)
- 测试: 4 个参数化 missing_consent_block + 3 个 audit 字段校验 + 1 个白名单校验 + 1 个 detail 返回值 + 1 个 update
- 验证: 25/25 admin orders + alias 测试全过ruff + mypy 通过;端到端 smoke 通过
- 提交: `187b2ae` fix(compliance): A-2 admin/外部渠道补录同意审计统一化 → `bd27b01` merge: A-2 admin/外部渠道补录同意审计统一化
## 1. 当前仍然有效的问题(按优先级,只保留未解决项)
#### B-1 真实支付 acceptance 仍依赖外部前置
严重度: P0
当前状态: 6/19 失败 webhook 持久化已落地,剩余阻塞在线上 acceptance
范围归属: T12 / 真实环境联调
已完成6/19 增量):
- `data.payments.service.handle_webhook`:非 success 状态不再抛 PaymentError而是持久化 `payment.status='failed'` + `failed_at` + `failure_reason` + 完整 `callback_payload`
- schema 增量升级:`_ensure_column` 幂等 `ALTER TABLE payments ADD COLUMN failed_at / failure_reason`
- 幂等保证终态paid / refunded / failed后到达的失败 webhook 走 idempotent 路径
- 测试覆盖:`test_handle_webhook_persists_failed_status` 锁住新契约
仍缺:
- 真实商户主体 / 产品签约 / app_id
- 私钥与支付宝公钥在真实环境装载
- 备案域名与公网 `notify_url`
- 沙箱/生产真实支付 acceptance
- 对账任务与退款回写/异常补偿产品化
#### B-2 T12-D retention cleanup conn ownership 修复(已完成 6/20
严重度: P1
当前状态: **6/20 已完成**
范围归属: 合规/数据治理
已完成6/20 增量):
- `OrdersDAO.__init__` 新增 `owns_conn: bool = False` 参数
- `OrdersDAO.__exit__` 仅在 `owns_conn=True` 时 close
- `OrdersDAO.connect()` classmethod 创建的连接自动设 `owns_conn=True`(保持原行为)
- 回归测试:`test_retention_cleanup_apply_anonymizes_multiple_old_orders_in_sequence` 锁住多订单连续 anonymize 契约
- 端到端本地 acceptance 步骤:`docs/DELIVERY_RETENTION_OPS_RUNBOOK.md` §8
- runbook 部署前 checklist
- 验证: 6 个 retention 测试全过 + 205 个直接相关子集全过 + ruff + mypy 通过
#### B-3 删除/匿名化前台工单仍待收口
严重度: P1
当前状态: 6/19 T12-C 前台表单已落地,**生产化运维仍待补**
范围归属: 合规/数据治理
已完成6/19 增量):
- 路由层 `_assert_retention_expired` 守卫:`admin/routes/orders.py`
- 错误码 `BIZ_ORDER_RETENTION_NOT_EXPIRED` (E02002) → HTTP 409
- 配置 `GAOKAO_RETENTION_DAYS`(默认 180可经环境变量覆盖
- 前台 portal 删除工单 + "保留期外可申请" 文案 + 6 个测试
- 测试覆盖3 个新失败/放行用例 + `_expire_retention_window` 测试 helper
仍缺:
- `scripts/gaokao-retention-cleanup.py` 的生产化部署与定时接入验收(**T12-D 端到端 acceptance 步骤已就绪,实际部署动作待 ops 执行**
- 正式法务审定版本
#### Q-A crowd_db 非湖南省份高置信数据密度
严重度: P1
当前状态: **已进入全国高信任建设可执行分批阶段;当前 live 基线为 `HIGH=7 / USABLE=6 / LOW=14`high 为湖南/广东/江苏/山东/河北/浙江/福建usable 为北京/天津/上海/河南/湖北/四川**
范围归属: 数据治理 / 对外可信度口径
当前真相源: `docs/CROWD_DB_NATIONALIZATION_SOURCE_OF_TRUTH.md`
已完成2026-06-21 ~ 2026-06-24 增量):
- 27 个省级 JSON 已补齐 `trusted_sources` / `quality_note`
- `source_url` 已从仓库自引用改为可信公开入口 `https://gaokao.chsi.com.cn/`
- `data/crowd_db/SCHEMA.md`、loader、provenance tests 已同步
- live 基线已重新核实:`HIGH=7 / USABLE=20 / LOW=0`
- 已新增 `docs/plans/2026-06-23-national-high-trust-crowd-db-plan.md`
- 已新增 `docs/CROWD_DB_NATIONALIZATION_SOURCE_OF_TRUTH.md`
- 已明确 27 省当前代码口径 vs 31 省真正全国口径边界
- 已完成 A1 第一批 high 白名单升级:广东 / 江苏 / 山东
- 已完成 A1 第一批 high 白名单升级:广东 / 江苏 / 山东
- 已完成 C 阶段第二批 high 白名单升级:河北 / 浙江 / 福建
- 已完成 S 阶段全量 usable 升级:北京 / 天津 / 上海 / 河南 / 湖北 / 四川 / 辽宁 / 江西 / 重庆 / 海南 / 安徽 / 山西 / 云南 / 贵州 / 甘肃 / 黑龙江 / 吉林 / 陕西 / 青海 / 新疆
仍缺:
- 27 省口径内已无 crowd_db skeleton 省份
- 若进入 31 省全国口径,仍需补 4 个自治区 JSON + loader + tests
### C. 文档与执行板一致性6/19 已收口)
#### C-1 4 个产品/工程文档 Current/Target 校准到 6/19
严重度: P1
当前状态: 6/19 已完成
已完成:
- `README.md` 顶部指向 6/19 执行板,加 6/19 新增约束E02002 / 180 天)
- `product/PRD.md` 顶部"最后更新"升级为 6/19加删除/匿名化能力校准
- `product/ROADMAP.md` 顶部校准说明从 6/13 升级到 6/19
- `docs/TECH_ARCHITECTURE.md` 顶部 Current/Target 说明指向 6/19 执行板
- `docs/ACTIVE_REMEDIATION_2026-06-13.md``docs/ACTIVE_EXECUTION_BOARD_2026-06-13.md` 顶部加历史快照头注
#### C-2 真相源分层与历史快照降级
严重度: P1
当前状态: 6/20 已完成6/19 增量 + 6/20 增量)
已完成:
- 6/13 整改板/执行板顶部加"⚠ 历史快照"头注,指向 6/19 版本
- 6/19 新建 `docs/ACTIVE_REMEDIATION_2026-06-19.md` + `docs/ACTIVE_EXECUTION_BOARD_2026-06-19.md`
- 6/20 重复上述动作,新建 6/20 版本,把 6/19 降级为历史快照
- `docs/CURRENT_STATE.md` 顶部加 6/19 增量段 + 6/20 增量段,指向新真相源
---
## 2. 明确不再重复追踪的问题(已解决)
以下问题已经修复,不应再出现在新的整改清单里:
1. 删除/匿名化缺保留期门禁 — 6/19 已修复E02002
2. 失败 webhook 抛 PaymentError 而不持久化 — 6/19 已修复
3. retention cleanup 多订单连续 anonymize 崩溃(`Cannot operate on a closed database`)— 6/20 已修复
4. PRD P2/P3 功能编号冲突
5. ROADMAP 中已落地功能仍未勾选
6. TECH_ARCHITECTURE 仍标"设计中"
7. FINAL_COMPLETION_REPORT 仍为"条件完成"
8. requirements 未声明 Jinja2 / WeasyPrint / cairocffi / ruff / mypy
9. CI 的 `--cov-fail-under=80` 与实际门槛冲突
10. GitHub origin 凭据阻塞发布
11. T1~T11 Goal 阻塞链问题
12. 6/19 之前的 P1 整改项P1-1 / P1-2 / P1-3 / P1-5 / P1-7 / P1-8 / P2-1~P2-5
13. 6/19 完成的 3 项P0 保留期门禁 / P1 支付失败持久化 / P1 T12-C 前台删除工单)
这些问题如果未来再次出现,应视为新回归,而不是沿用旧问题编号。
---
## 3. 推荐的单一后续主线
为了避免继续漂移,建议把后续工作只收敛到 3 条主线:
### 主线 1T12 Web 自助 MVP + 真实支付 acceptance
目标:补齐"用户端自助下单/支付/资料填写/站内交付"闭环 + 真实支付 acceptance
### 主线 2合规与数据治理
目标:后台/外部渠道补录同意审计统一化 / 隐私政策正式审定 / 备份恢复生产化 / 密钥轮换记录
### 主线 3数据质量增强
目标:提升非湖南省份的 crowd_db 置信度与可解释性
不建议再做的事:
- 重复写"已完成能力"的审计报告
- 继续把历史快照问题当作当前阻塞
- 在 T12 未闭环前继续泛化更多高级功能
---
## 4. 最小执行板(当前仍值得做)
| ID | 任务 | 优先级 | 是否属于已完成阶段问题 |
| ----- | ------------------------------------ | ------ | ---------------------------------------------------------------------------------------- |
| T12-A | 真实支付 acceptance (沙箱/生产联调) | P0 | 否(后续阶段) |
| T12-B | `info_submitted -> serving` 自动主链 | P0 | 否(后续阶段) |
| T12-C | 前台删除工单与"保留期外可申请"页 | P1 | ✅ **6/19 已收口** |
| T12-D | retention cleanup 生产化部署验收 | P1 | ⚠ **6/20 端到端 acceptance 步骤就绪,实际部署动作待 ops 执行** |
| L-A | 隐私政策 / 服务协议正式法务审定 | P1 | 是(当前真实缺口) |
| L-B | 备份恢复异机演练 + 密钥轮换记录 | P1 | 是(当前真实缺口) |
| Q-A | crowd_db 非湖南省份高置信数据密度 | P1 | 是(当前真实缺口;当前 live 基线 `HIGH=5 / USABLE=2 / LOW=20`,其中 usable 为福建/浙江) |
| A-2 | 后台/外部渠道补录同意审计统一化 | P1 | ✅ **6/20 已收口** |
---
## 5. 当前最准确的最终表述
> 6/20 v2.1.1 已完成"retention cleanup 多订单 conn ownership 修复 + 端到端本地 acceptance 步骤";当前真正仍有效的问题集中在 T12 Web 自助闭环、真实支付 acceptance、合规、备份恢复和多省高置信数据质量这五个方向。