Files
gaokao-volunteer-system/reports/QA_CROWD_DB_NON_HUNAN_DENSITY_AUDIT.md
hermes 6eafe1fc9b
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(ops 6/20 v2.1.3): 生产加固 + L-A 送审前修复 + crowd_db 质量契约
## 实现内容 (6 项改动)

1. **admin /health 端点增强** — 主键契约 status:ok 保持 + checks 子对象
   - db_writable: connect + CREATE TEMP TABLE + INSERT + SELECT + DROP
   - disk_writable: 在 ops_alert_log_path 目录创建临时文件 + 删除
   - settings_valid: 复用 is_jwt_secret_secure 判断
2. **_enforce_jwt_secret_policy** — prod env 使用 dev 默认 JWT / 长度<32 → fail-closed
3. **_enforce_default_admin_password_policy** — prod env 用 admin123 / 长度<10 / 字符类<3 → fail-closed
4. **L-A R7: admin UI footer** — dashboard.html (592 行) + ui.py 内联 admin/orders/new
   模板加 footer 隐私政策 + 数据删除 + 服务说明链接, 与 portal _render_footer_links() 同口径
5. **L-A R1+R4: LEGAL_PRIVACY_BASELINE 文档同步**
   - §6 移除孤儿 'admin' consent_channel 值 (代码侧从未实际产生)
   - §7 已具备/尚缺 重写, 显式归到 6/20 增量
6. **Q-A: tests/test_crowd_db_data_quality.py** — 8 个测试锁住
   - 27 省总数 + 仅湖南 high + 其它 26 省 ≤ usable
   - 高考生源大省 (广东/江苏/北京/上海/山东/河南/四川/湖北) 不在 high 集合
   - data_year=2025 (6/25 后需显式更新)

## 测试

- 4/4 RED → GREEN (admin/tests/test_health.py: JWT/admin password 拒绝 dev 默认值)
- 8/8 GREEN (data/crowd_db/tests/test_crowd_db_data_quality.py: 数据质量契约)
- 3 回归修复 (test_app.py + test_routes.py + test_health.py 适配新 /health checks 字段)
- 31/31 GREEN (admin/tests/test_app.py + test_routes.py + test_health.py)

## 报告

- reports/LA_LEGAL_PRIVACY_PRE_AUDIT_2026-06-20.md (363 行, 9 风险 0 阻塞)
- reports/QA_CROWD_DB_NON_HUNAN_DENSITY_AUDIT.md (45 行, CRITICAL 文档失真已规避)

## 文件

M CHANGELOG.md (v2.1.3)
M admin/config.py (2 个 _enforce_*_policy + load_settings post-load)
M admin/routes/health.py (3 个 _check_* + checks 子对象)
M admin/routes/ui.py (admin/orders/new 模板加 footer)
M admin/static/dashboard.html (footer 块)
M admin/tests/test_app.py (适配 checks 字段 + regex 兼容)
M admin/tests/test_health.py (4 个新测试)
M admin/tests/test_routes.py (适配 checks 字段)
M docs/CURRENT_STATE.md (0.3-0.5 增量段)
M docs/LEGAL_PRIVACY_BASELINE.md (§6 清理 + §7 重写)
+ data/crowd_db/tests/test_crowd_db_data_quality.py (8 tests)
+ reports/LA_LEGAL_PRIVACY_PRE_AUDIT_2026-06-20.md
+ reports/QA_CROWD_DB_NON_HUNAN_DENSITY_AUDIT.md
2026-06-20 18:36:23 +08:00

4.3 KiB
Raw Blame History

Q-A 数据质量审计报告 — 非湖南数据密度

审计时间: 2026-06-20 | HEAD: 604c8b3 | 范围: data/crowd_db/*

1. crowd_db 现状 (省份覆盖, 时间窗口, 关键字段)

  • 省份覆盖: 27 个 JSON 文件齐全23 省 + 4 直辖市),不含 5 自治区/港澳台。结构 100% 落地。
  • 时间窗口: 所有 27 个文件 data_year=2025last_updated=2026-06-12(同一批次生成)。
  • 关键字段: 顶层 8 字段province / last_updated / data_year / source / source_url / source_type / confidence / score_ranges全部齐备符合 T3.1 schema。
  • 不存位次/分数/选科/院校代码原始字段——本数据库是"大厂 AI 反扎堆推荐"库,不是录取数据库;院校用 name+major 标识,无标准院校代码。

2. 非湖南数据密度评估

维度 湖南 其它 26 省 高考生源大省(北京/上海/广东/江苏/山东/河南/四川)
confidence 0.85 0.45 全部 0.45 全部
quality_level high (A级) skeleton (C级) skeleton (C级)
score_ranges 段数 10 1-3 2-3
recommendations 条数 68 1-8 2-8
alternatives 条数 136 0-3 0-3
覆盖分数段 440-690 多为头部 1-2 段 头部 2-3 段

结论: 湖南与其它 26 省是"高原+26 骨架"二八结构。高考生源大省无一例外都是 C 级骨架,平均只覆盖头部 2-3 个分数段、2-8 条推荐;典型如广东 2 段/4 条、贵州仅 1 段/1 条,不足以驱动反扎堆结论

3. 已有数据质量工具

  • data/crowd_db/quality_summary.py + python -m data.crowd_db.quality_summary --human:列出 27 省质量分级(实测 high=1 / skeleton=26
  • data/crowd_db/cli.py + scripts/gaokao-data-trace:按校名溯源查询(输出 confidence / quality_level / last_updated
  • data/crowd_db/risk_report.py:三色风险分级,模板已绑 audit_report.html
  • 测试: tests/test_crowd_db_data_quality.py设计文档要求,实测未在仓库找到该文件——缺口)。data/crowd_db/tests/test_provenance.py 已锁死湖南 confidence≥0.8、record_count>0但未锁死"非湖南 ≤ skeleton"。

4. 2026 高考季数据完备性

  • 2024 历史数据: 仓库无 2024 单独快照(data_year=2025 即为当前)。
  • 2025 实际数据: 27 省全部为 data_year=2025,但实质只有湖南是真实整理。
  • 2026 模拟数据: 不存在。data_completeness=skeleton 的 26 省 predicted_increase 是"预测 2026 上涨分"(仅 1 条/省的元字段),不是 2026 模拟卷。
  • 官方进度spec_checker_v2.py:780 注释"2026 年招生计划 6/15-20 公布、位次 6/25 出分后确定"——当前 6/20 处于真空期,可解释为何 2026 数据未落库。

5. 推荐改进 Top 5

  1. tests/test_crowd_db_data_quality.pyCROWD_DB_DATA_QUALITY §7 承诺的锁死文件),断言"湖南 high + 其它 26 省 in {medium, skeleton}"——当前测试网有缺口。
  2. 明确 2026 高考季数据来源策略:在 data/crowd_db/README.mddata_year=2026 字段约定与"6/25 前仅 2025 基线+湖南优先"口径。
  3. 为广东/江苏/山东/河南/四川优先扩容——这些是 top 5 考生大省,当前 C 级骨架对业务无支撑意义;按湖南 10 段模板补到 medium 即可大幅改善报告可用性。
  4. CRITICAL修正 docs/CURRENT_STATE.md:302 —— 文档写"27 省 crowd_db 均为高置信强推荐数据",与代码事实(仅 1 省 high严重不符存在合规风险。
  5. data_completeness 字段到 JSON 顶层CROWD_DB_DATA_QUALITY §2 已约定,但当前 27 个 JSON 均无此字段,仅以 confidence 间接推导),与 quality_level 一一对应后报告渲染可自动加 [置信度: 中] 标签。