排障表补一条:所有页面一起卡 → 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 排障表,**新增一行**,未动其它内容。
This commit is contained in:
@@ -320,6 +320,7 @@ A:**这项本期是占位值,不是真实算出来的**,不回避这一点
|
||||
|---|---|---|
|
||||
| 客户下单返回 `503 行情已过期` | 行情快照过期(**有效期仅 15 分钟**) | `python tools/sync_market_prices.py` —— **立即生效,无需重启服务** |
|
||||
| 客服一直"繁忙/超时" | **Worker 没在跑** | 看 `start.ps1` 起的第二个窗口;或 `python -m app.worker` |
|
||||
| **所有页面一起变慢/卡住**(不是某一个请求超时,而是客服、风控、看板**同时**迟钝) | 检索层用的是**同步** Milvus 客户端,单次 `search` 卡住会**阻塞整个 API 进程**(连 Worker 心跳一起停)—— 已知项,见 `docs/演示用/代码库全面审查报告-2026-09-14.md` **P1-2** | 先在 Docker Desktop 确认 Milvus 在跑;**不用改代码也不用重启** —— Milvus 恢复后自动正常。这条是「演示版本不修、但要能一眼认出」的典型:平时完全无感,只有 Milvus 抖动时才现形 |
|
||||
| 改了页面看不到效果 | 浏览器缓存 | `Ctrl+F5` 硬刷新 |
|
||||
| 知识库问答答不上 | 向量没同步 | 确认 Worker 在跑,然后跑 `tools/seed_knowledge_demo.py` |
|
||||
| 平台起不来 | MySQL 没起 | 看 `start.ps1` 的依赖检查输出 |
|
||||
|
||||
Reference in New Issue
Block a user