feat(tools): 新增全流程端到端冒烟脚本 e2e_smoke_test.py

把验收清单里"能用接口判定"的部分自动化:6 条线 40 项,打真实 HTTP、逐条打印 PASS/FAIL。
不是 pytest 的替代 —— 单测看代码正确性,它看"部署后底座是不是活的"。

覆盖:
  A 访客  令牌 → 提问 → 收到回答 → 未转人工
  B 客户  登录 → 看板/持仓/流水 → 真实下单成交 → 委托详情 → 会话与转人工
  C 风控  概览/队列/详情/八类证据/通知/扫描 → 处置闭环(确认→调查→结案)
  D 投顾  已发布方案     E 运营  场外邮件与邮箱状态
  F 管理员 角色/权限/身份/配置发布/模型端点/审计/转人工工单/画像候选

两个实现细节值得留意:
- **各端点 data 形状不统一**(角色列表裸数组、持仓在 holdings、成交明细在 transactions、
  资金流水在 entries、知识列表不套 data),所以这里用 listed(payload, *keys) 依次尝试,
  并在注释里写明"别猜字段名"—— 我自己写联调脚本时连续猜错三次。
- 库里没有"待处理"预警时**自动造一条**再验证处置闭环,否则该环节只能跳过
  (实测库里的预警常常都已被处置过,第一次跑就跳过了)。

新增 --read-only:跳过所有写操作,用于生产或不想动数据时。

实测:40/40 通过(含真实下单 201 已成交、风控处置闭环三段全 PASS)。

docs/40 补上"一键冒烟"一节。
This commit is contained in:
2026-09-13 21:39:37 +08:00
parent 06f0dee39f
commit 2fcc4939e7
2 changed files with 449 additions and 0 deletions
+13
View File
@@ -65,6 +65,19 @@ python -m uvicorn app.main:app --host 127.0.0.1 --port 8000
python -m app.worker
```
### 一键冒烟(推荐先跑这个)
前置跑完后,用一条命令确认 6 条线都是活的:
```powershell
python tools/e2e_smoke_test.py # 含写操作(下单、风控处置)
python tools/e2e_smoke_test.py --read-only # 只看读链路,不动数据
```
它打真实 HTTP、逐条打印 PASS/FAIL(**40 项**,覆盖访客/客户/风控/投顾/运营/管理员六条线),
并在库里没有"待处理"预警时**自动造一条**来验证风控处置闭环。
它**不是** pytest 的替代 —— 单测看代码正确性,它看"部署后底座是不是活的"。
> 模块级变量是 **`app`**,不是 `application`。
---