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

12 KiB
Raw Blame History

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.md6/19 复审报告)
  • docs/plans/2026-06-19-production-readiness-remediation-plan.md6/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=14high 为湖南/广东/江苏/山东/河北/浙江/福建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.mddocs/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、合规、备份恢复和多省高置信数据质量这五个方向。