P1-4: /health 不再永远返回 status=ok/200 - 所有 checks 通过 → 200 + status=ok - 任一 check 失败 → 503 + status=degraded - K8s/systemd readiness probe 可正确判 HTTP status P1-6: CURRENT_STATE §0.5 旧数字(7high/20usable)与新数字(31high)矛盾 - 旧数字标注为历史快照, 划线标记 - 顶部数字明确为唯一当前真相
394 lines
24 KiB
Markdown
394 lines
24 KiB
Markdown
# CURRENT_STATE
|
||
|
||
最后更新: 2026-06-26
|
||
状态词: 本地验证完成(v2.1 主链与 6/20/6/21 增量仍成立;crowd_db 全国 31 省口径全部达 high,当前 live 基线为 31 high / 0 usable / 0 skeleton;crowd_db 质量门槛已硬化为综合判定,防静默升级;本地服务启动 + integration/user_simulation E2E 已复跑通过;新增 30 组分段样例复核入口 E2E 已通过;30 组中 26 组公开支持省份已完成完整用户全链路模拟)
|
||
|
||
本轮增量(当前工作区,基于 HEAD `dbb8fb7` 继续深度升级):
|
||
|
||
- crowd_db 当前 live 基线已实测为 `31 high / 0 usable / 0 skeleton`
|
||
- `data/crowd_db/*.json` 实存 31 个文件;`loader.py` 已支持全国 31 省级行政区
|
||
- `python -m data.crowd_db.quality_summary --human` 已确认最后 4 省(新疆 / 广西 / 西藏 / 宁夏)已落地并进入 high
|
||
- `pytest -q data/crowd_db/tests/test_score_distribution.py data/crowd_db/tests/test_subject_requirements.py data/crowd_db/tests/test_program_type.py data/crowd_db/tests/test_crowd_db_data_quality.py data/crowd_db/tests/test_provenance_query.py` → `57 passed`
|
||
- 2026-06-26 新增深度接入:`广西` / `宁夏` 已补 `score_distribution`(官方一分一档/一分段统计 + 本科线)
|
||
- 当前 `score_distribution` 覆盖已达 **31/31 省**;其中 `新疆 / 西藏` 已补齐官方最低控制分数线级别接入,但两省暂未检索到公开一分一段表
|
||
- 本轮本地验证附加证据:`GAOKAO_SKIP_INSTALL=1 bash scripts/dev-verify.sh` => `1302 passed, 3 skipped`;`scripts/integration_test.py` => `overall PASS`;`scripts/user_simulation.py` => `overall PASS`
|
||
- 新增 30 组分段样例 E2E:`reports/score_range_e2e_2026_06_26.json` => `review_start 30/30 通过`,且对 6 组公开支持省份样例做了 `公开下单 -> portal status` 深层抽样,结果 `6/6 通过`
|
||
- 新增 30 组完整全链路样例 E2E:`reports/score_range_fullchain_e2e_2026_06_26.json` => 在 30 组样例中,`26` 组属于当前公开下单支持省份,已全部走通 `下单 -> 支付模拟 -> payment-success -> portal info 提交 -> portal status -> review/start -> review/action(full_plan/cwb)`,结果 `26/26 通过`;其余 `4` 组因不在 `_public_supported_provinces()` 中按契约跳过完整下单链路
|
||
- 新增 100 分数真实用户验证:`reports/SCORE_RANGE_FULLCHAIN_100_VALIDATION_2026-06-26.md` => 全量入口 `100/100` 通过、公开支持省份完整主链路 `87/87` 通过、非公开支持省份合同边界 `13/13` 正确阻断;`scripts/dev-verify.sh` 已纳入 `12` 例 smoke E2E 回归
|
||
- 当前工作区未提交修改:`data/crowd_db/xinjiang.json`、`data/crowd_db/xizang.json`、`data/crowd_db/tests/test_score_distribution.py`、`docs/CURRENT_STATE.md`、`docs/CROWD_DB_NATIONALIZATION_SOURCE_OF_TRUTH.md`、`reports/score_range_e2e_2026_06_26.json`、`scripts/score_range_fullchain_e2e.py`、`reports/score_range_fullchain_e2e_2026_06_26.json`、`scripts/score_range_fullchain_100_e2e.py`、`reports/score_range_fullchain_100_cases_2026_06_25.json`、`reports/score_range_fullchain_100_batches_2026_06_26.json`、`reports/score_range_fullchain_100_batches_2026_06_26.csv`、`reports/score_range_fullchain_100_e2e_smoke_2026_06_26.json`、`reports/score_range_fullchain_100_e2e_2026_06_26.json`、`reports/score_range_fullchain_100_e2e_boundary_2026_06_26.json`、`reports/SCORE_RANGE_FULLCHAIN_100_VALIDATION_2026-06-26.md`、`reports/SCORE_RANGE_FULLCHAIN_100_EXEC_SUMMARY_2026-06-26.md`、`tests/test_score_range_fullchain_100_script.py`、`tests/test_score_range_fullchain_e2e_typing.py`、`tests/test_dev_verify_entrypoint.py`
|
||
|
||
真相源优先级:
|
||
|
||
1. 本文件
|
||
2. `reports/STRICT_SYSTEM_REVIEW_2026-06-24.md`(6/24 最新严格系统复审汇总版;149 passed, 1 warning,当前建议作为最新审查结论)
|
||
3. `reports/STRICT_SYSTEM_REVIEW_2026-06-23.md`(6/23~6/24 历史滚动审查过程稿,保留发现/修复轨迹)
|
||
4. `docs/CROWD_DB_NATIONALIZATION_SOURCE_OF_TRUTH.md`(全国高信任建设当前口径与批次真相)
|
||
5. `docs/ACTIVE_REMEDIATION_2026-06-20.md`(6/20 当前整改清单,**取代 6/19 历史快照**)
|
||
6. `docs/ACTIVE_EXECUTION_BOARD_2026-06-20.md`(6/20 当前执行板,**取代 6/19 历史快照**)
|
||
7. `docs/ACTIVE_REMEDIATION_2026-06-19.md`(**已降级为历史快照**)
|
||
8. `docs/ACTIVE_EXECUTION_BOARD_2026-06-19.md`(**已降级为历史快照**)
|
||
9. `docs/plans/2026-06-23-national-high-trust-crowd-db-plan.md`(全国高信任建设详细计划)
|
||
10. `docs/plans/2026-06-19-production-readiness-remediation-plan.md`(6/19 整改计划)
|
||
11. `reports/PRODUCTION_STRICT_REVIEW_2026-06-19.md`(6/19 复审报告)
|
||
12. `docs/plans/2026-06-17-phase2-majors-catalog-implementation-plan.md`(Phase 2 已收口快照)
|
||
13. `docs/DESIGN_RULES_TRUSTED_CLI_2026-06-16.md`(设计快照;Phase 编号需与执行口径消歧)
|
||
14. `docs/PROJECT_PLANNING_REALIGNMENT_2026-06-16.md`(历史规划/实现漂移审计)
|
||
15. `docs/RULES_SOURCE_OF_TRUTH.md`(规则真相源索引;待补建)
|
||
16. `docs/MAJOR_DATA_SOURCE_OF_TRUTH.md`(专业目录真相源索引)
|
||
17. `docs/CLI_API_MAPPING.md`(CLI/API 映射索引)
|
||
18. `docs/P0_P1_P2_REMEDIATION_PLAN_2026-06-14.md`(历史整改板;§4 卡片以 §2.1 状态归一为准)
|
||
19. `docs/FRONTEND_UI_AUDIT_2026-06-16.md` / `docs/FRONTEND_UI_EXECUTION_BOARD_2026-06-16.md`
|
||
20. `docs/ACTIVE_REMEDIATION_2026-06-13.md`(**已降级为历史快照**)
|
||
21. `docs/ACTIVE_EXECUTION_BOARD_2026-06-13.md`(**已降级为历史快照**)
|
||
22. `product/PRD.md` / `product/ROADMAP.md` / `docs/IMPLEMENTATION_PLAN_v2.md`
|
||
23. `docs/PRODUCTION_DEPLOYMENT_CHECKLIST_2026-06-15.md`
|
||
24. `reports/PRODUCT_PLANNING_TECH_ALIGNMENT_REVIEW_2026-06-13.md`(历史评审快照)
|
||
|
||
---
|
||
|
||
## 0. 6/20 增量段(叠加在 6/19 真相源之上)
|
||
|
||
6/20 落地了 1 项 P1 整改 + 端到端本地 acceptance 步骤 + 1 项合规补录统一化
|
||
|
||
- 生产加固 + L-A 送审前修复 + crowd_db 质量契约 + 真相源分层。**本节是当前唯一增量**:
|
||
|
||
### 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 A-2 admin/外部渠道补录同意审计统一化(P1)
|
||
|
||
- 现象: `admin/routes/orders.py:543-590` `create_order` 路径不收任何 consent 字段
|
||
(grep `consent` 0 命中),直接违反 `LEGAL_PRIVACY_BASELINE §6`。
|
||
portal 路径早已自动落 `consent_channel=portal / consent_operator=guardian`
|
||
- 修复: `CreateOrderRequest.consent: ConsentInfo` 必填;`consent_method` 白名单
|
||
`verbal_chat / phone_recording / screenshot / written_form / self_declared`
|
||
- 落地: `Order` 模型 + DAO + schema 增量加 `consent_method / consent_given_at`
|
||
(冗余避免 join);创建订单后同步写 `order_intakes` 记录(独立 `IntakeStore.for_db`)
|
||
- `consent_channel` = source
|
||
- `consent_operator` 严格按基线白名单 `self / guardian / admin_import`:
|
||
- `web` 渠道: `guardian`(与 `intake_store.save` 默认值一致)
|
||
- 其他渠道: `admin_import`(后台代录,同意来源是渠道商)
|
||
- 验证: 25 个 admin orders + alias 测试全过;ruff + mypy 通过;端到端 smoke 通过
|
||
- 测试: 4 个参数化 missing_consent_block + 3 个 audit 字段校验 + 1 个白名单校验
|
||
- 1 个 detail 返回值 + 1 个 update test_create_order_returns_masked_payload
|
||
|
||
### 0.3 生产加固(6/20 v2.1.3)
|
||
|
||
- **`/health` 端点增强**: 主键契约 `status: "ok"` 不变;增 `checks` 子对象
|
||
覆盖 `db_writable` / `disk_writable` / `settings_valid` 三项 readiness 指标
|
||
- **JWT secret fail-closed**: `_enforce_jwt_secret_policy` 在 `load_settings()`
|
||
post-load 校验中调用;prod env 使用 dev 默认 JWT / 长度 < 32 → RuntimeError
|
||
- **admin password fail-closed**: `_enforce_default_admin_password_policy` 同样接入
|
||
post-load 校验;prod env 使用 `admin123` 默认值 / 密码 < 10 字符 / 字符类 < 3 → RuntimeError
|
||
- 验证: 4 个 health/config 测试全过;dev-verify 全量通过
|
||
|
||
### 0.4 L-A 送审前修复(6/20 v2.1.3)
|
||
|
||
- **R1**: `docs/LEGAL_PRIVACY_BASELINE.md` §6 移除 `consent_channel` 列表里
|
||
的孤儿 `admin` 渠道值(代码侧从未实际产生);增注释说明移除原因
|
||
- **R4**: `docs/LEGAL_PRIVACY_BASELINE.md` §7 "已具备/尚缺" 重写,显式归到 6/20 增量
|
||
- **R7**: admin 后台 dashboard.html (592 行) + ui.py 内联 orders/new 模板加 footer
|
||
隐私政策 + 数据删除说明 + 服务说明链接;与 portal 前台 `_render_footer_links()`
|
||
同口径
|
||
|
||
### 0.5 crowd_db 数据质量契约(6/20 v2.1.3 Q-A 闭环)
|
||
|
||
> **⚠ 历史快照(2026-06-20~25)**:以下数字为 6/20~6/24 阶段的中间状态,**不再代表当前真相**。
|
||
> 当前真相以本文件顶部为准:`31 high / 0 usable / 0 skeleton`。
|
||
|
||
- 新增 `data/crowd_db/tests/test_crowd_db_data_quality.py` (CROWD_DB_DATA_QUALITY
|
||
§7 承诺的锁死文件,仓库此前缺失):
|
||
- ~~27 省总数 (23 省 + 4 直辖市)~~ → 已升级为 **31 省** (23 省 + 4 直辖市 + 4 自治区)
|
||
- ~~当前真实状态(2026-06-25 实测):7 high / 20 usable / 0 skeleton~~ → **已升级为 31 high / 0 usable / 0 skeleton**
|
||
- ~~high 白名单:湖南/广东/江苏/山东/河北/浙江/福建~~ → **当前 31 省全部 high(7 省 S 级 + 24 省 A 级)**
|
||
- 所有 confidence ∈ [0, 1]
|
||
- 所有 data_year = 2025 (待 2026 录取数据正式公布后显式更新)
|
||
- 防止"27 省 crowd_db 均为高置信强推荐数据"合规假象回归
|
||
- **历史轨迹**(仅供审计):6/20 基线为 4 high + 3 usable + 20 skeleton;6/23 升级到 5 high;6/24 升级到 7 high / 20 usable / 0 skeleton;6/25 升级到 31 high / 0 usable / 0 skeleton
|
||
- 详细质量分布与升级轨迹见 `docs/CROWD_DB_NATIONALIZATION_SOURCE_OF_TRUTH.md`
|
||
|
||
### 0.6 crowd_db 可信来源元数据补齐(2026-06-21)
|
||
|
||
- 27 个省级 JSON 统一补齐 `trusted_sources` / `quality_note`
|
||
- `source_url` 从仓库自引用改为可信公开入口 `https://gaokao.chsi.com.cn/`
|
||
- `SCHEMA.md` / loader / provenance tests 已同步
|
||
- 这补齐的是**可信来源治理口径**,不代表 26 个非湖南省已升级为高置信推荐数据
|
||
|
||
### 0.7 真相源分层与历史快照降级(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 真相源之上
|
||
|
||
### 0.8 用户端主链路真实 TestClient 覆盖收口(2026-06-23)
|
||
|
||
- 公开页与主流程已用真实 `TestClient` 证明:
|
||
- `/` / `/pricing` / `/checkout/*`
|
||
- `POST /api/public/orders`
|
||
- `POST /review/action`(真实 form + 303 redirect)
|
||
- `/review/start`
|
||
- `/portal/{token}/info` / `/status` / `/report` / `/report.pdf`
|
||
- `/portal/{token}/cwb` / `/full-plan` / `/payment-success`
|
||
- `POST /pay/mock/{payment_id}/complete`
|
||
- `RouteClient` 已降级为辅助:
|
||
- 临时 app / 特殊 env(缺 key、provider unavailable、prod 隐藏 mock)
|
||
- `submit_order_info(...)` 这类直接函数级持久化断言
|
||
- 少量流程搭台用途
|
||
- 现状口径:主链路正确性不再依赖 `RouteClient` 自证,真实页面 / 真实协议 / 真实重定向已可回归验证
|
||
- 证据:`reports/TEST_CLIENT_COVERAGE_2026-06-23.md`
|
||
- 验证:`./.venv/bin/python -m pytest -q admin/tests/test_order_status_page.py admin/tests/test_web_public.py admin/tests/test_web_public_content_pages.py admin/tests/test_web_public_review_flow.py admin/tests/test_web_public_portal_info.py data/orders/tests/test_schema.py` → `89 passed, 1 warning`
|
||
|
||
### 0.9 法务协议与 crowd_db 可信来源补齐(2026-06-21)
|
||
|
||
- `docs/PRIVACY_POLICY_DRAFT.md` 补齐:未成年人、委托处理、用户权利、存储与删除、投诉联系方式、版本生效等条款
|
||
- `docs/SERVICE_TERMS.md` 补齐:服务边界、支付退款、知识产权、免责、争议解决、版本更新等条款
|
||
- `docs/LEGAL_PRIVACY_BASELINE.md` 补齐正式法务审核条款清单与待审状态说明
|
||
- `data/crowd_db/*.json` 统一补齐可信来源元数据(`trusted_sources` / `quality_note`),并将 `source_url` 切到可信公开入口
|
||
- 这两项仍处于**待法务 / 待内容深化**阶段,但已经从“缺文档/缺元数据”提升为“可审核、可复核、可继续推进”
|
||
|
||
---
|
||
|
||
6/19 落地了 3 项 P0/P1 整改 + 1 项真相源分层。**本节是当前唯一增量**:
|
||
|
||
### 0.1 A1 — 删除/匿名化保留期门禁(P0)
|
||
|
||
- 错误码 `BIZ_ORDER_RETENTION_NOT_EXPIRED` (E02002) → HTTP 409
|
||
- 配置 `GAOKAO_RETENTION_DAYS`(默认 180)
|
||
- 路由层 `_assert_retention_expired` 守卫,状态子集 paid/serving/delivered/completed/refunded 触发,pending 直接放行
|
||
- 口径来源: `docs/DATA_RETENTION_AND_DELETION.md` §2
|
||
- 测试: 3 个新失败/放行用例 + `_expire_retention_window` helper
|
||
- 验证: dev-verify all checks passed(1175 passed)
|
||
|
||
### 0.2 B1 — 支付失败状态持久化(P1)
|
||
|
||
- `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` 锁住新契约
|
||
- 验证: dev-verify all checks passed
|
||
|
||
### 0.3 A2 — 4 个产品/工程文档 Current/Target 校准(P1)
|
||
|
||
- `README.md` 顶部执行板指向 6/19 + 6/19 新增约束
|
||
- `product/PRD.md` 顶部"最后更新"升级为 6/19
|
||
- `product/ROADMAP.md` 顶部校准从 6/13 升级到 6/19
|
||
- `docs/TECH_ARCHITECTURE.md` 顶部 Current/Target 指向 6/19 执行板
|
||
|
||
### 0.4 B2 — 真相源分层与历史快照降级(P1)
|
||
|
||
- 6/13 整改板/执行板顶部加"⚠ 历史快照"头注
|
||
- 新建 `docs/ACTIVE_REMEDIATION_2026-06-19.md` + `docs/ACTIVE_EXECUTION_BOARD_2026-06-19.md`
|
||
- 本节作为 6/19 增量叠加在 6/13 真相源之上
|
||
|
||
### 0.5 T12-C — 前台删除工单 + 保留期外可申请(P1,本节落盘即收口)
|
||
|
||
- 落地:
|
||
- `admin/routes/web_public.py` 加 `_resolve_retention_status` + `_next_step_for_retention`
|
||
- `DeletionRequestCreate` Pydantic 锁 `scope` 到白名单 + `confirm_guardian` 强制 bool
|
||
- `POST /portal/{token}/deletion-request` 根据订单保留期返回 3 种 next_step 文案
|
||
- `GET /portal/{token}/deletion-request` 在表单上方加"保留期状态"提示卡
|
||
- 测试: 4 个新测试 + 2 个 helper 复用
|
||
- 验证: 1179 passed, dev-verify all checks passed
|
||
|
||
---
|
||
|
||
## 0. 单一执行口径(2026-06-17)
|
||
|
||
为消除设计 Phase 编号与执行 Phase 编号漂移,本节是当前唯一口径:
|
||
|
||
| 设计层 Phase(DESIGN_RULES_TRUSTED_CLI_2026-06-16.md) | 执行层 Phase(当前真相) | 状态 |
|
||
| ------------------------------------------------------ | ------------------------------------------ | ---------------------------------------------- |
|
||
| Phase 1 规则真相源化 | 执行 Phase 1 | ✅ 已收口(`ae4835e` + `8a61b8f`,三仓同步) |
|
||
| Phase 2 统一审计引擎最小可用 | 执行 Phase 1.5(verify + 旧 checker 迁移) | ✅ 已收口(同上) |
|
||
| Phase 3 专业目录接入 MVP | 执行 Phase 2 | ✅ 已收口(`36ad58a` + `6b1157f` + `edc5b11`) |
|
||
| Phase 4 统一 CLI 命令面 | 执行 Phase 3 | ❌ 未启动 → 下一阶段 |
|
||
| Phase 5 智能体调度 + admin 整合 | 执行 Phase 4 | ❌ 未启动 → 等 Phase 3 收口 |
|
||
| Phase 6 文档/真相源索引收口 | 长期维护 | ⚠ 进行中(docs-only 收口本轮同步) |
|
||
|
||
> 设计层 Phase ≠ 执行层 Phase。状态查询一律以本表 + 6/17 执行板为准。
|
||
|
||
---
|
||
|
||
## 1. 当前准确定位
|
||
|
||
项目当前准确定位为:
|
||
|
||
- 已完成: 人工服务运营增强系统(闲鱼 / 微信 / 学校渠道)
|
||
- 已完成: 管理后台、订单、分享、渠道同步、AI 审核基础校验、CI/CD、性能与安全加固
|
||
- 已完成/已验证:
|
||
- `Phase2 major_validation` 已接入 `AuditEngine`
|
||
- `gaokao-cli audit run --json` 当前只承认两类真实检查:省份规则 + 专业目录状态
|
||
- 规则/专业目录/CLI 三层都已具备可回归验证入口
|
||
- 当前仍在推进:
|
||
- 已完成且已本地验证: `mock` / `alipay_sim` / `alipay` 三层支付代码链与 notify/return 路由;退款状态闭环、portal token secret 分离、payment webhook fail-closed、删除/匿名化扩围、分享 allowlist、channel_sync DB 隔离与 DAO 真相收敛
|
||
- 未完成且仍阻塞线上验收: 真实支付宝商户凭据、公网 notify_url、备案域名、真实支付 acceptance
|
||
|
||
一句话:
|
||
|
||
> 当前项目定位:人工服务运营增强系统;用户端 Web 自助闭环仅为本地 MVP/目标态,尚未达到可对外承诺的完整 SaaS 水位。当前版本已经完成 v2.1 的后台运营链路与 AI 审核增强闭环,但不是完整 Web 自助 SaaS。
|
||
|
||
---
|
||
|
||
## 2. 已完成模块
|
||
|
||
- T1 AI审核服务
|
||
- T2 反扎堆检测
|
||
- T3 数据溯源
|
||
- T4 订单管理
|
||
- T5 集成测试与发布
|
||
- T6 管理后台
|
||
- T7 分享功能
|
||
- T8 渠道集成
|
||
- T9 错误处理
|
||
- T10 CI/CD
|
||
- T11 性能与安全
|
||
|
||
覆盖率门槛证据:
|
||
覆盖率门槛证据:
|
||
|
||
- overall = 92.46%
|
||
- core = 100.00%
|
||
- 满足:整体≥80%、核心≥100%
|
||
|
||
- 本地与 CI 的硬门禁统一收敛到 `scripts/check_coverage_gate.py`
|
||
- `dev-verify.sh` 与 GitHub CI 都执行同一组硬阈值检查
|
||
- `codecov.yml` 当前保持同值展示口径,但不是执行单源,也不是阻断门禁
|
||
|
||
三仓同步状态:
|
||
|
||
- gitea/main 已同步
|
||
- origin/main 已同步
|
||
- tksea/main 已同步
|
||
- tag v2.1 已推送
|
||
|
||
---
|
||
|
||
## 3. 尚未完成 / 不应误报为已完成
|
||
|
||
### T12 用户端 Web 自助 MVP
|
||
|
||
当前仅能说:
|
||
|
||
- 已启动 / 实施中
|
||
- 还不能说“已完成”
|
||
|
||
未完成主链路包括:
|
||
|
||
- 真实支付接入与回调验签的线上 acceptance
|
||
- `info_submitted -> serving` 自动处理主链 +本地自动桥接 `info_submitted -> serving` 已落地;仍缺真实 worker/生成服务/线上调度收口
|
||
- 站内通知发送器、真实邮件通知发送器与调度已落地;仍缺生产告警链与独立通知审计页
|
||
- 前台删除工单流程与更完整的产品化交互
|
||
|
||
因此:
|
||
|
||
- Web 自助购买场景 = **本地 MVP 主链已大部分落地,但线上闭环未完成**
|
||
- 完整教育 SaaS 化 = 未完成
|
||
|
||
---
|
||
|
||
## 4. 已修正的历史评审问题
|
||
|
||
以下问题在 2026-06-13 之后已被修正,不应继续按“当前未解决”表述:
|
||
|
||
1. PRD P2 / P3 功能编号冲突
|
||
2. ROADMAP 中已落地功能仍保持未勾选
|
||
3. TECH_ARCHITECTURE 仍标“设计中”
|
||
4. FINAL_COMPLETION_REPORT 仍写“条件完成”
|
||
5. 依赖清单未显式声明 Jinja2 / WeasyPrint / cairocffi / ruff / mypy
|
||
6. GitHub origin 凭据导致发布链阻塞
|
||
|
||
这些应被视为:
|
||
|
||
- 已修正的历史问题
|
||
- 不应再作为当前阻塞项重复引用
|
||
|
||
---
|
||
|
||
## 5. 仍然有效的评审问题
|
||
|
||
以下问题仍成立,应继续作为后续版本约束:
|
||
|
||
### P0 / P1 真实缺口
|
||
|
||
- 用户端 Web 自助支付闭环缺失
|
||
- 生产通知链已有底层 validated/delivered 状态机、portal 通知审计页、后台独立通知审计页、运维告警审计页与 watchdog alert sink;已支持 SMTP/IM webhook sink 代码接入,但仍缺线上真实通道配置后的生产联调
|
||
- 前台入口已支持基础资料填写、最多 5 个附件上传与 5 步向导(基础信息 / 偏好与目标 / 已有方案与附件 / 协议确认 / 提交确认);仍缺更完整文件类型策略与更细粒度错误提示
|
||
- 2026-06-16 前端专项审计结论:用户端首页 / 定价页 / 结账页存在明显 AI 模板痕迹、开发术语外露与商业转化不足;后台 `/dashboard` 仍偏开发者自检页。当前执行板见 `docs/FRONTEND_UI_EXECUTION_BOARD_2026-06-16.md`
|
||
- 2026-06-16 第二轮本地整改已完成:首页、定价页、结账页、portal 向导页 / 状态页、后台 `/dashboard` 已完成首轮产品化与去技术暴露重构;剩余前端工作聚焦 design token 基线与更强回归门禁
|
||
- 2026-06-16 第三轮本地整改已完成:`admin/static/portal-ui.css` 已建立为共享样式基线,关键用户页面已接入 shared CSS,并补齐页面级回归断言;前端整改范围已本地收口,剩余仅为 Git 交付或后续更深层视觉迭代
|
||
- 业务数据备份 / 恢复 / 密钥托管已有本地基线与验证,但异机备份和生产接入仍不足
|
||
- 隐私政策 / 服务协议 / 监护人同意 / 数据保留与删除流程仍缺前台/客服自助工单与正式法务版本
|
||
|
||
> 重要更新(2026-06-15):
|
||
> 上述 5 项是 v2.1 当前阶段以外的真实缺口。
|
||
> 上一轮 2026-06-14 严格复审里的 P1 整改项已全部完成:
|
||
>
|
||
> - P1-1 支付回调双写裂缝已修复
|
||
> - P1-5 退款域模型闭环已修复
|
||
> - P1-2 删除/匿名化已覆盖 orders 主表 + payments.callback_payload + order_intakes.payload_json
|
||
> - P1-7 验证链口径统一(CI / dev-verify / codecov / gate script 同一阈值)
|
||
|
||
### P2 工程改进
|
||
|
||
- crowd_db 高置信数据应区分湖南与其他省份
|
||
- 架构图仍需进一步拆分 Current / Target 视觉表达
|
||
- legacy 邮件脚本应继续弱化为非主链能力
|
||
|
||
### 仍然有效的 P1 / P2 整改项
|
||
|
||
完整清单见 `docs/P0_P1_P2_REMEDIATION_PLAN_2026-06-14.md`:
|
||
|
||
- P1-3 真实支付回调校验
|
||
- P1-8 备份恢复演练 / 目标机告警接入
|
||
- 隐私政策 / 服务协议 / 删除工单正式入口
|
||
|
||
已完成并不再列为整改项:
|
||
|
||
- P2-1 公共下单孤儿订单
|
||
- P2-2 channel_sync 单一 DAO 真相
|
||
- P2-3 delivery 通知状态语义收口(`sent` 已移除)
|
||
- P2-4 portal token / JWT secret 分离(已通过 P2-4 单元测试 + prod fail-closed)
|
||
- P2-5 payment webhook secret fail-closed(已通过 P2-5 单元测试 + prod fail-closed)
|
||
- X-02 支付域设计
|
||
- X-03 Delivery 交付服务设计
|
||
- X-04 合规基线文档
|
||
- X-05 备份恢复与密钥托管方案
|
||
- X-06 本地一键验证脚本
|
||
- X-08 crowd_db 数据完整度等级化
|
||
|
||
---
|
||
|
||
## 6. 对外表述边界
|
||
|
||
允许对外说:
|
||
|
||
- 已具备人工服务运营后台能力
|
||
- 已具备 AI 审核基础校验、数据溯源、分享、渠道同步能力
|
||
- `audit run` 当前只承认省份规则 + 专业目录状态校验,不应对外表述为“已包含反扎堆/综合评分闭环”
|
||
- 已完成 v2.1 当前计划闭环
|
||
|
||
不应对外说:
|
||
|
||
- 已完成完整 Web 自助 SaaS
|
||
- 已完成系统内支付闭环
|
||
- 已完成用户端完整交付闭环
|
||
- 27 省 crowd_db 均为高置信强推荐数据
|
||
|
||
---
|
||
|
||
## 7. 推荐阅读顺序
|
||
|
||
1. docs/CURRENT_STATE.md
|
||
2. docs/archive/2026-06-historical-snapshots/FINAL_COMPLETION_REPORT_2026-06-13.md
|
||
3. product/PRD.md
|
||
4. product/ROADMAP.md
|
||
5. docs/IMPLEMENTATION_PLAN_v2.md
|
||
6. reports/PRODUCT_PLANNING_TECH_ALIGNMENT_REVIEW_2026-06-13.md(作为历史评审参考)
|