Files
gaokao-volunteer-system/reports/user_simulation_2026_06_20/captures.json

79 lines
2.2 KiB
JSON
Raw Normal View History

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
{
"date": "2026-06-20",
"port": 19092,
"order_id": "GKO-20260621-1DG1",
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
"portal_token_len": 131,
"overall_ok": true,
"captures": [
{
"viewport": "desktop",
"page": "landing",
"status": 200,
"title": "高考志愿填报智能规划服务",
"shot": "reports/user_simulation_2026_06_20/desktop_landing.png"
},
{
"viewport": "desktop",
"page": "pricing",
"status": 200,
"title": "服务套餐 - 高考志愿填报智能规划服务",
"shot": "reports/user_simulation_2026_06_20/desktop_pricing.png"
},
{
"viewport": "desktop",
"page": "privacy",
"status": 200,
"title": "隐私政策",
"shot": "reports/user_simulation_2026_06_20/desktop_privacy.png"
},
{
"viewport": "desktop",
"page": "portal_info",
"status": 200,
"title": "考生资料填写",
"shot": "reports/user_simulation_2026_06_20/desktop_portal_info.png"
},
{
"viewport": "desktop",
"page": "portal_status",
"status": 200,
"title": "订单进度总览",
"shot": "reports/user_simulation_2026_06_20/desktop_portal_status.png"
},
{
"viewport": "mobile",
"page": "landing",
"status": 200,
"title": "高考志愿填报智能规划服务",
"shot": "reports/user_simulation_2026_06_20/mobile_landing.png"
},
{
"viewport": "mobile",
"page": "pricing",
"status": 200,
"title": "服务套餐 - 高考志愿填报智能规划服务",
"shot": "reports/user_simulation_2026_06_20/mobile_pricing.png"
},
{
"viewport": "mobile",
"page": "privacy",
"status": 200,
"title": "隐私政策",
"shot": "reports/user_simulation_2026_06_20/mobile_privacy.png"
},
{
"viewport": "mobile",
"page": "portal_info",
"status": 200,
"title": "考生资料填写",
"shot": "reports/user_simulation_2026_06_20/mobile_portal_info.png"
},
{
"viewport": "mobile",
"page": "portal_status",
"status": 200,
"title": "订单进度总览",
"shot": "reports/user_simulation_2026_06_20/mobile_portal_status.png"
}
]
}