diff --git a/docs/ACTIVE_EXECUTION_BOARD_2026-06-19.md b/docs/ACTIVE_EXECUTION_BOARD_2026-06-19.md index 172dafd..95a4d3c 100644 --- a/docs/ACTIVE_EXECUTION_BOARD_2026-06-19.md +++ b/docs/ACTIVE_EXECUTION_BOARD_2026-06-19.md @@ -1,6 +1,10 @@ # ACTIVE_EXECUTION_BOARD_2026-06-19 -最后更新: 2026-06-19 +> ⚠ **历史快照** — 本文件为 2026-06-19 执行板,已被 [`docs/ACTIVE_EXECUTION_BOARD_2026-06-20.md`](ACTIVE_EXECUTION_BOARD_2026-06-20.md) 取代。保留此文件仅供历史回溯;当前执行任务清单以 6/20 版本为准。 +> +> **6/20 增量**: T12-D retention cleanup conn ownership 修复落地(端到端本地 acceptance 步骤就绪)— 见 `docs/ACTIVE_EXECUTION_BOARD_2026-06-20.md` §2 + +最后更新: 2026-06-19(已降级为历史快照) 状态词: 当前有效问题执行板 真相源: `docs/CURRENT_STATE.md` 问题来源: `docs/ACTIVE_REMEDIATION_2026-06-19.md` diff --git a/docs/ACTIVE_EXECUTION_BOARD_2026-06-20.md b/docs/ACTIVE_EXECUTION_BOARD_2026-06-20.md new file mode 100644 index 0000000..9cb5e01 --- /dev/null +++ b/docs/ACTIVE_EXECUTION_BOARD_2026-06-20.md @@ -0,0 +1,155 @@ +# ACTIVE_EXECUTION_BOARD_2026-06-20 + +最后更新: 2026-06-20 +状态词: 当前有效问题执行板 +真相源: `docs/CURRENT_STATE.md` +问题来源: `docs/ACTIVE_REMEDIATION_2026-06-20.md` + +> 本文件取代 `docs/ACTIVE_EXECUTION_BOARD_2026-06-19.md`(已降级为历史快照)。 + +--- + +## 1. 当前门禁结论 + +结论: v2.1.1 已完成"retention cleanup 多订单 conn ownership 修复 + 端到端本地 acceptance 步骤"闭环 + 6/20 增量(T12-D conn ownership 修复 + 真相源分层)落地。 +dev-verify 状态: 直接相关子集 205 passed, 0 failed;retention 6 passed;ruff + mypy 通过。完整 dev-verify 跑通结果在 main `f9e68ee` 之后由 `bash scripts/dev-verify.sh` 确认。 + +禁止事项: + +- 不再重复处理已修复的历史问题 +- 不把 T12 之外的 Web 自助能力混入已完成的 v2.1 结论 +- 不把"设计占位"误报为"已实现" +- 不把 Git/文档修订当成支付/交付/合规能力的替代 +- 不把"端到端本地 acceptance 步骤就绪"误报为"生产已部署"(T12-D 仍需 ops 在目标主机实际执行 `systemctl enable --now` 与首次 timer 触发后留痕) + +--- + +## 2. 6/20 增量执行情况 + +### T12-D retention cleanup conn ownership 修复(P1, 2026-06-20 落地) + +- 状态: ✅ completed(端到端本地 acceptance 步骤就绪 + 生产化部署动作待 ops 执行) +- 落地: + - `data/orders/dao.py` 新增 `owns_conn: bool = False` 参数;`__exit__` 仅在 `owns_conn=True` 时 close;`connect()` classmethod 自动设 `owns_conn=True` + - `tests/test_retention_cleanup.py` 新增 `test_retention_cleanup_apply_anonymizes_multiple_old_orders_in_sequence` 锁住多订单连续 anonymize 契约 + - `docs/DELIVERY_RETENTION_OPS_RUNBOOK.md` §8 新增 T12-D 本地端到端 acceptance 步骤 + 验收通过判定表 + 部署前 checklist + 历史 bug 背景 + - `CHANGELOG.md` 顶部加 v2.1.1 (2026-06-20) 段 + - `docs/CURRENT_STATE.md` 顶部加 6/20 增量段;真相源优先级 6/20 > 6/19 + - `docs/ACTIVE_REMEDIATION_2026-06-20.md` + `docs/ACTIVE_EXECUTION_BOARD_2026-06-20.md` 取代 6/19 版本 +- 验证: 6 个 retention 测试全过 + 205 个直接相关子集全过 + ruff + mypy 通过 + 端到端 smoke 4 笔订单实测通过 +- 提交: `bcb1e68` fix(retention): T12-D acceptance — OrdersDAO conn ownership → `f9e68ee` merge: T12-D retention cleanup conn ownership fix + +--- + +## 3. 仍有效的执行任务清单(按优先级) + +### T12-A 真实支付 acceptance + +- Owner: tech-lead / ops +- 优先级: P0 +- 状态: pending +- 目标: + - 在真实商户主体 + 备案域名 + 公网 notify_url 就绪后, 跑支付宝沙箱/生产 acceptance +- 依赖: + - 外部商户与域名前置 + - `data/payments/service.py` 6/19 持久化已就绪 + +### T12-B `info_submitted -> serving` 自动主链 + +- Owner: engineer +- 优先级: P0 +- 状态: pending +- 目标: + - 真实 worker/生成服务/线上调度收口 + +### T12-D retention cleanup 生产化部署验收(6/20 端到端 acceptance 步骤就绪) + +- Owner: ops +- 优先级: P1 +- 状态: ⚠ acceptance 步骤就绪 + 实际部署动作待执行 +- 目标: + - `scripts/gaokao-retention-cleanup.py` 在目标主机实际安装 + cron/systemd 留痕 + - 监控 180 天窗口外的实际清理结果 +- 依赖: + - `docs/DELIVERY_RETENTION_OPS_RUNBOOK.md` §8 acceptance 步骤已就绪 + - 6/20 conn ownership 修复已落地(bug 必现,6/20 已修) + +### L-A 隐私政策 / 服务协议正式法务审定 + +- Owner: PM / legal +- 优先级: P1 +- 状态: pending +- 依赖: + - 当前已有 `docs/LEGAL_PRIVACY_BASELINE.md` + `docs/PRIVACY_POLICY_DRAFT.md` + `docs/SERVICE_TERMS.md` + `docs/DATA_RETENTION_AND_DELETION.md` 基线 + +### L-B 备份恢复异机演练 + 密钥轮换记录 + +- Owner: ops +- 优先级: P1 +- 状态: pending +- 依赖: + - 当前已有 `scripts/backup_snapshot.sh` + `scripts/backup_verify.sh` + `scripts/backup_restore_smoke.py` + +### Q-A crowd_db 非湖南省份高置信数据密度 + +- Owner: data +- 优先级: P1 +- 状态: pending +- 目标: + - 提升非湖南 crowd_db 数据置信度 + +### A-2 后台/外部渠道补录同意审计统一化(6/20 整改板新增) + +- Owner: engineer +- 优先级: P1 +- 状态: pending +- 目标: + - 闲鱼/微信/学校渠道代录与外部补录走同一同意审计口径 + - 同意字段写入后台审计日志的最小测试 + +--- + +## 4. 当前仍然禁止的错误完成表述 + +禁止: + +- "已完成完整 Web 自助 SaaS" +- "支付线上 acceptance 已完成" +- "27省高质量推荐数据已完成" +- "T12 Web 自助闭环已全部完成" +- "T12-D 已生产化部署"(仅"端到端本地 acceptance 步骤就绪" + "代码 conn ownership bug 修复" — 实际部署动作待 ops 执行) + +允许: + +- "v2.1.1 已完成 retention cleanup 多订单 conn ownership 修复 + 端到端本地 acceptance 步骤" +- "v2.1 人工服务运营增强系统 + 6/19 保留期门禁 + 支付失败持久化 + 前台删除工单 + 6/20 retention cleanup conn ownership 修复已落地" +- "T12 Web 自助闭环仍在线上 acceptance 阶段" +- "支付 / 交付 / 合规 / 备份恢复仍是当前有效问题" + +--- + +## 5. 当前推荐读取顺序 + +1. `docs/CURRENT_STATE.md` +2. `docs/ACTIVE_REMEDIATION_2026-06-20.md` +3. `docs/ACTIVE_EXECUTION_BOARD_2026-06-20.md`(本文件) +4. `docs/DELIVERY_RETENTION_OPS_RUNBOOK.md` §8(T12-D acceptance 步骤) +5. `docs/plans/2026-06-19-production-readiness-remediation-plan.md` +6. `reports/PRODUCTION_STRICT_REVIEW_2026-06-19.md` +7. `product/PRD.md` / `product/ROADMAP.md` + +--- + +## 6. 下一步执行建议 + +最优先(6/20 后续): + +1. 推进 L-A 隐私政策法务审定 +2. 推进 A-2 后台/外部渠道补录同意审计统一化 +3. 推进 T12-D 实际生产化部署动作(ops 在目标主机执行) + +原因: + +- L-A 与 A-2 都是 P1 且不依赖外部商户/域名前置 +- T12-D 实际部署动作依赖 ops 主机访问,6/20 已提供完整 acceptance 步骤与部署前 checklist +- 这三项完成后,下一阶段(v2.2)才有干净的合规与生产化基线 diff --git a/docs/ACTIVE_REMEDIATION_2026-06-19.md b/docs/ACTIVE_REMEDIATION_2026-06-19.md index 6184ae4..88633fa 100644 --- a/docs/ACTIVE_REMEDIATION_2026-06-19.md +++ b/docs/ACTIVE_REMEDIATION_2026-06-19.md @@ -1,6 +1,10 @@ # ACTIVE_REMEDIATION_2026-06-19 -最后更新: 2026-06-19 +> ⚠ **历史快照** — 本文件为 2026-06-19 整改清单,已被 [`docs/ACTIVE_REMEDIATION_2026-06-20.md`](ACTIVE_REMEDIATION_2026-06-20.md) 取代。保留此文件仅供历史回溯;当前未解决问题以 6/20 版本为准。 +> +> **6/20 增量**: retention cleanup 多订单 conn ownership 修复(T12-D 端到端本地 acceptance 步骤就绪)— 见 `docs/ACTIVE_REMEDIATION_2026-06-20.md` §B-2 + +最后更新: 2026-06-19(已降级为历史快照) 状态词: 当前仍然有效的问题清单(仅保留未解决项) 真相源: `docs/CURRENT_STATE.md` 来源基线: diff --git a/docs/ACTIVE_REMEDIATION_2026-06-20.md b/docs/ACTIVE_REMEDIATION_2026-06-20.md new file mode 100644 index 0000000..ee5ab83 --- /dev/null +++ b/docs/ACTIVE_REMEDIATION_2026-06-20.md @@ -0,0 +1,225 @@ +# ACTIVE_REMEDIATION_2026-06-20 + +最后更新: 2026-06-20 +状态词: 当前仍然有效的问题清单(仅保留未解决项) +真相源: `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. 投产级真实缺口(生产上线仍阻塞) + +#### A-1 用户端 Web 自助闭环未完成(仍属 T12) + +严重度: P0(面向 Web 自助产品时) +当前状态: 本地 MVP 主链已大部分落地,线上闭环仍未收口 +范围归属: T12(后续阶段) + +**当前未阻塞的关键能力**: + +- 删除/匿名化 180 天保留期门禁(E02002)— 6/19 已落地 +- 支付失败状态持久化(status='failed' + failed_at + failure_reason)— 6/19 已落地 +- **retention cleanup 多订单连续 anonymize 修复 + 端到端本地 acceptance 步骤** — **6/20 已落地**(T12-D conn ownership) + +**当前仍阻塞的关键能力**: + +- 真实支付接入与回调验签的线上 acceptance(T12-A) +- `info_submitted -> serving` 自动处理主链 + 真实 worker/生成服务/线上调度收口(T12-B) +- 完整站内通知/交付产品化 +- 前台删除工单流程(6/19 T12-C 已落地表单与保留期资格,**但生产化部署验收仍在 T12-D 范围**) +- 备案域名 + 公网 notify_url + +#### A-2 后台/外部渠道补录同意审计统一化 + +严重度: P1 +当前状态: 闲鱼/微信/学校渠道补录的同意字段未强制要求 `consent_version` / `consent_scope` / `consent_given_at` / `consent_operator` +范围归属: 合规/数据治理 + +已完成: + +- `order_intakes` payload 提交链路已落 `consent_version / consent_scope / privacy_accepted / service_terms_accepted / guardian_confirmed` +- portal 提交链路自动补齐 `consent_given_at / privacy_accepted_at / service_terms_accepted_at / consent_channel / consent_operator` + +仍缺: + +- 闲鱼/微信/学校渠道代录与外部补录走同一同意审计口径 +- 同意字段写入后台审计日志的最小测试 + +### B. 6/20 已完成但仍可继续增强的真实质量问题 + +#### 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 执行**) +- 正式法务审定版本 + +### 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 条主线: + +### 主线 1:T12 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 | 是(当前真实缺口) | +| A-2 | 后台/外部渠道补录同意审计统一化 | P1 | 是(6/20 整改板新增) | + +--- + +## 5. 当前最准确的最终表述 + +> 6/20 v2.1.1 已完成"retention cleanup 多订单 conn ownership 修复 + 端到端本地 acceptance 步骤";当前真正仍有效的问题集中在 T12 Web 自助闭环、真实支付 acceptance、合规、备份恢复和多省高置信数据质量这五个方向。 diff --git a/docs/CURRENT_STATE.md b/docs/CURRENT_STATE.md index 91f3b0f..9b9a7e0 100644 --- a/docs/CURRENT_STATE.md +++ b/docs/CURRENT_STATE.md @@ -1,32 +1,60 @@ # CURRENT_STATE -最后更新: 2026-06-19 -状态词: 本地验证完成(6/19 复审 + 6/19 整改计划 + A1 保留期门禁 + B1 支付失败持久化 + A2/B2 文档与执行板校准已全部落地;下一阶段 = 推进 T12 真实支付 acceptance + 前台删除工单 + 合规审定) +最后更新: 2026-06-20 +状态词: 本地验证完成(6/19 复审 + 6/19 整改计划 + A1 保留期门禁 + B1 支付失败持久化 + +- A2/B2 文档与执行板校准 + 6/20 T12-D retention cleanup conn ownership 修复 +- 端到端本地 acceptance 步骤落地;下一阶段 = 推进 T12 真实支付 acceptance +- 后台/外部渠道补录同意审计统一化 + 合规审定) 真相源优先级: 1. 本文件 -2. `docs/ACTIVE_REMEDIATION_2026-06-19.md`(6/19 当前整改清单,**取代 6/13 历史快照**) -3. `docs/ACTIVE_EXECUTION_BOARD_2026-06-19.md`(6/19 当前执行板,**取代 6/13 历史快照**) -4. `docs/plans/2026-06-19-production-readiness-remediation-plan.md`(6/19 整改计划) -5. `reports/PRODUCTION_STRICT_REVIEW_2026-06-19.md`(6/19 复审报告) -6. `docs/plans/2026-06-17-phase2-majors-catalog-implementation-plan.md`(Phase 2 已收口快照) -7. `docs/DESIGN_RULES_TRUSTED_CLI_2026-06-16.md`(设计快照;Phase 编号需与执行口径消歧) -8. `docs/PROJECT_PLANNING_REALIGNMENT_2026-06-16.md`(历史规划/实现漂移审计) -9. `docs/RULES_SOURCE_OF_TRUTH.md`(规则真相源索引;待补建) -10. `docs/MAJOR_DATA_SOURCE_OF_TRUTH.md`(专业目录真相源索引) -11. `docs/CLI_API_MAPPING.md`(CLI/API 映射索引) -12. `docs/P0_P1_P2_REMEDIATION_PLAN_2026-06-14.md`(历史整改板;§4 卡片以 §2.1 状态归一为准) -13. `docs/FRONTEND_UI_AUDIT_2026-06-16.md` / `docs/FRONTEND_UI_EXECUTION_BOARD_2026-06-16.md` -14. `docs/ACTIVE_REMEDIATION_2026-06-13.md`(**已降级为历史快照**) -15. `docs/ACTIVE_EXECUTION_BOARD_2026-06-13.md`(**已降级为历史快照**) -16. `product/PRD.md` / `product/ROADMAP.md` / `docs/IMPLEMENTATION_PLAN_v2.md` -17. `docs/PRODUCTION_DEPLOYMENT_CHECKLIST_2026-06-15.md` -18. `reports/PRODUCT_PLANNING_TECH_ALIGNMENT_REVIEW_2026-06-13.md`(历史评审快照) +2. `docs/ACTIVE_REMEDIATION_2026-06-20.md`(6/20 当前整改清单,**取代 6/19 历史快照**) +3. `docs/ACTIVE_EXECUTION_BOARD_2026-06-20.md`(6/20 当前执行板,**取代 6/19 历史快照**) +4. `docs/ACTIVE_REMEDIATION_2026-06-19.md`(**已降级为历史快照**) +5. `docs/ACTIVE_EXECUTION_BOARD_2026-06-19.md`(**已降级为历史快照**) +6. `docs/plans/2026-06-19-production-readiness-remediation-plan.md`(6/19 整改计划) +7. `reports/PRODUCTION_STRICT_REVIEW_2026-06-19.md`(6/19 复审报告) +8. `docs/plans/2026-06-17-phase2-majors-catalog-implementation-plan.md`(Phase 2 已收口快照) +9. `docs/DESIGN_RULES_TRUSTED_CLI_2026-06-16.md`(设计快照;Phase 编号需与执行口径消歧) +10. `docs/PROJECT_PLANNING_REALIGNMENT_2026-06-16.md`(历史规划/实现漂移审计) +11. `docs/RULES_SOURCE_OF_TRUTH.md`(规则真相源索引;待补建) +12. `docs/MAJOR_DATA_SOURCE_OF_TRUTH.md`(专业目录真相源索引) +13. `docs/CLI_API_MAPPING.md`(CLI/API 映射索引) +14. `docs/P0_P1_P2_REMEDIATION_PLAN_2026-06-14.md`(历史整改板;§4 卡片以 §2.1 状态归一为准) +15. `docs/FRONTEND_UI_AUDIT_2026-06-16.md` / `docs/FRONTEND_UI_EXECUTION_BOARD_2026-06-16.md` +16. `docs/ACTIVE_REMEDIATION_2026-06-13.md`(**已降级为历史快照**) +17. `docs/ACTIVE_EXECUTION_BOARD_2026-06-13.md`(**已降级为历史快照**) +18. `product/PRD.md` / `product/ROADMAP.md` / `docs/IMPLEMENTATION_PLAN_v2.md` +19. `docs/PRODUCTION_DEPLOYMENT_CHECKLIST_2026-06-15.md` +20. `reports/PRODUCT_PLANNING_TECH_ALIGNMENT_REVIEW_2026-06-13.md`(历史评审快照) --- -## 0. 6/19 增量段(叠加在 6/13 真相源之上) +## 0. 6/20 增量段(叠加在 6/19 真相源之上) + +6/20 落地了 1 项 P1 整改 + 端到端本地 acceptance 步骤 + 真相源分层。**本节是当前唯一增量**: + +### 0.1 T12-D retention cleanup conn ownership 修复(P1) + +- 现象: `retention_cleanup.run_cleanup(apply=True)` 一次命中 ≥ 2 笔终端态订单时,第二笔起全部 `sqlite3.ProgrammingError: Cannot operate on a closed database` +- 根因: `OrdersDAO.__exit__` 不区分连接所有权,对外部 service 传入的 `self._conn` 也 `close()`;`deletion_service.anonymize_order` 把 service 持有的连接包成 `OrdersDAO(self._conn)` 走 with-block,第一笔执行完就把连接关掉 +- 修复: `OrdersDAO.__init__` 新增 `owns_conn: bool = False` 参数;`__exit__` 仅在 `owns_conn=True` 时 close;`connect()` classmethod 创建的连接自动设 `owns_conn=True`(保持原行为);外部 service 包成 DAO 走 with-block 默认不 close +- 回归测试: `tests/test_retention_cleanup.py::test_retention_cleanup_apply_anonymizes_multiple_old_orders_in_sequence` 锁住多订单连续 anonymize 契约 +- 端到端 smoke 实测: 4 笔订单(2 笔旧 terminal + 1 笔 fresh pending + 1 笔 paid-in-window)→ dry-run 报 2 candidates / 0 anonymized;apply 真把 2 笔匿名化,pending/paid-in-window 严格不动,deletion log 1 条被裁,share events 2 条被裁 +- runbook §8 新增 T12-D 本地端到端 acceptance 步骤 + 部署前 checklist + 历史 bug 背景 +- 验证: 6 个 retention 测试 + 205 个直接相关子集全过,ruff + mypy 通过 + +### 0.2 真相源分层与历史快照降级(6/20 增量) + +- 6/19 整改板/执行板顶部加"⚠ 历史快照"头注,指向 6/20 +- 6/20 新建 `docs/ACTIVE_REMEDIATION_2026-06-20.md` + `docs/ACTIVE_EXECUTION_BOARD_2026-06-20.md` +- 本节作为 6/20 增量叠加在 6/19 真相源之上 + +--- + +## 6/19 增量段(叠加在 6/13 真相源之上) 6/19 落地了 3 项 P0/P1 整改 + 1 项真相源分层。**本节是当前唯一增量**: