Files
group_fqcd_jr/docs
lzf_0626 e85e958389 排障表补一条:所有页面一起卡 → Milvus 抖动 + 同步调用阻塞事件循环
## 为什么补这一条

把审查报告的 P1–P3 共 45 项按 8 个演示场景筛完,**"会砸演示"的是 0 条**
(P0 四条已全修)。剩下的分两类:37 项演示路径根本走不到,8 项是"边缘"
(平时无感、特定条件才暴露)。

这 8 项里只有 **P1-2** 属于"一处慢、全平台卡":检索层用的是**同步** Milvus 客户端,
单次 `search` 卡 3 秒会让整个 API 进程停摆 3 秒,连 Worker 心跳一起停。

它同时也是**最容易被误判**的一个 —— 现象是"客服、风控、看板一起变慢",
而排障表原有的 6 条全是**单点**故障(503 行情 / Worker 没起 / 浏览器缓存 /
知识库没同步 / MySQL 没起 / 风控样本用完),**没有一条对得上"全场同时变慢"**。
没有这一条,现场会往"服务挂了"的方向查,而它其实是外部依赖抖动、不需要改代码、
也不需要重启。

所以这条的价值不在改代码,而在**把一个边缘隐患变成一眼能认出的现象**:
演示版本选择不修 P1-2(Milvus 正常时完全无感),代价就是必须知道它长什么样。

## 依据(都是会话内实际核过的)

- 客服链路确认:`app/service/knowledge_tool.py:29` 的 `search_knowledge` 工具
  → `get_knowledge_search_service().search(...)`;
  而 `knowledge_search_service.py:207-213 / 224 / 229` 调的是**同步** `MilvusClient`
  (`app/infrastructure/vector_memory.py` 的 `def search(...)`,非 `async def`)。
- 对照:项目在其它 10+ 处已用 `asyncio.to_thread`(如
  `app/infrastructure/fund_market_adapter.py:273/382`),说明异步规范已建立,
  这 4 处是遗漏 —— 但**不是演示阻塞项**,本次不改。
- "风控日报会不会砸"(P1-6,报告标了【确定】)也核过了:`_distribution` 的
  `counts` 键是字段**值**,两个调用点用的 `risk_level`(中文高/中/低)与
  `alert_type` 都是字符串,`str(key) == key` 恒成立,**触发不了** —— 场景 6 安全。

## 改动范围

只改 `docs/44-演示流程.md` 的 §4 排障表,**新增一行**,未动其它内容。
2026-09-14 20:41:34 +08:00
..
2026-09-13 18:31:38 +08:00