Files
gaokao-volunteer-system/docs/VERIFICATION_SCRIPTS_2026-06-20.md
hermes 240c38e312
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(scripts 6/20 v2.1.4): 性能+集成+模拟+部署 4 维度验证
## 4 个新脚本

| 脚本 | 用途 | 结果 |
|---|---|---|
| scripts/perf_benchmark.py | 性能 baseline + 10 并发压测 | p95=3ms/10.68ms, 1250 rps |
| scripts/integration_test.py | 全链路 E2E (DB+admin+portal+retention) | 7/7 PASS |
| scripts/user_simulation.py | Playwright 5 跳 × 2 视口 | 10/10 PASS |
| scripts/deploy_ops_verify.py | 12 项 health/auth/CRUD/ops-alerts | 12/12 PASS |

## reports 落地

- reports/perf_2026_06_20.json
- reports/integration_2026_06_20.json
- reports/deploy_ops_2026_06_20.json
- reports/user_simulation_2026_06_20/ (10 PNG + captures.json)
- reports/PRODUCTION_LAUNCH_READINESS_2026-06-20.md (总报告 + PRODUCTION_DEPLOYMENT_CHECKLIST §7 A 8 项勾选)
- docs/VERIFICATION_SCRIPTS_2026-06-20.md (脚本索引)

## 关键发现 (投产必读)

1. **GAOKAO_ORDERS_FERNET_KEY 必须在 systemd unit Environment= 显式设置**, 否则
   订单写入抛 MissingEncryptionKey → 兜底 except 抛 500 E03003 (表面像'数据保存失败')
2. **/api/orders 与 /api/orders/{id} 响应都是嵌套 {order: {...}}**, portal 路径平铺
3. **portal_token 不在 order 响应里**, 需 data/customer_portal/token.issue_portal_token(order_id, secret)

## PRODUCTION_DEPLOYMENT_CHECKLIST §7 A 8 项

本地可推进 5/8 全过: 密钥目录 / 健康端点 / 联调文档 / 隐私政策 / 数据密度
3/8 文档级 (SMTP 真实联调 / 告警渠道 / 备份异机演练 需 PM+Ops+凭据)

## 状态分级

- 整体: CONDITIONAL_APPROVED
- 本地验证: 4 维度 36/36 项全 PASS
- 外部前置: 6 项需 PM/Ops/Legal/真实商户协调 (T12-A / 异机演练 / 法务审定 / 真实告警 / 真实压测 / data_year 更新)
2026-06-20 18:57:45 +08:00

2.4 KiB
Raw Blame History

6/20 v2.1.4: 性能 + 集成 + 用户模拟 + 部署运维 4 维度验证脚本

4 个新脚本

脚本 覆盖 关键结果
scripts/perf_benchmark.py 性能 (baseline 200 + 10 并发 50 任务) p95=3.01ms 单请求, p95=10.68ms / 1250 rps 并发, 100% 成功率
scripts/integration_test.py 集成 (health + login + create + get + ops-alerts + retention dry/apply) 7/7 PASS
scripts/user_simulation.py 用户模拟 (Playwright 5 跳 × 2 视口 = 10 张截图) 10/10 PASS
scripts/deploy_ops_verify.py 部署运维 (12 项 health/auth/CRUD/ops-alerts/dashboard) 12/12 PASS

关键发现 (A-2 投产时必读)

GAOKAO_ORDERS_FERNET_KEY 必须在 systemd unit Environment= 显式设置, 否则 订单写入会抛 MissingEncryptionKey 异常. 这是 6/20 集成测试时踩到的真坑 (initially 报 500 E03003, 调试发现是 FERNET_KEY 缺失 → 兜底 except 把真因 吞掉 → 表面看像"数据保存失败").

响应结构: admin /api/orders/api/orders/{id} 都是嵌套 {"order": {...}} 包装, portal 路径直接是平铺. 自动化时注意.

portal_token 路径: issue_portal_token(order_id, settings.portal_token_secret) 在 data/customer_portal/token.py, 不是 admin /api/orders/{id} 响应里的字段.

reports 输出

  • reports/perf_2026_06_20.json
  • reports/integration_2026_06_20.json
  • reports/deploy_ops_2026_06_20.json
  • reports/user_simulation_2026_06_20/captures.json + 10 张 PNG
  • reports/PRODUCTION_LAUNCH_READINESS_2026-06-20.md (总报告)

不依赖

  • locust (已知 venv 漂移)
  • systemd (开发机可能没装)
  • 真实外部凭据 (mock provider + 隔离 DB)

待跟进 (不属本轮)

  • 真实微信/支付宝支付密钥
  • 异机备份恢复演练
  • 真实 SMTP/IMAP 邮件告警联调
  • 钉钉/企微告警机器人接入
  • 2027 高考前 crowd_db data_year 更新 + 高考生源大省数据补录