docs(40): 把行情同步列为下单前必跑的前置

全流程验收时踩到:不跑 tools/sync_market_prices.py 就下单,只有 2 只产品有行情、
其余直接 503,而且错误信息只说"行情已过期",看不出根因。把它写进第 0 节,
并说明数据源(腾讯行情 / 东财只有行情类域名不可达)与总份额口径。
This commit is contained in:
2026-09-13 21:15:43 +08:00
parent 369213f50d
commit b6281ba6bc
+16
View File
@@ -22,6 +22,7 @@
| 0-4 | **虚拟资金账户** | `python -m tools.seed_sim_account_demo` | 客户 9001 开 10 万初始资金 + 2 只持仓。<br>**不跑这步,`/customer/dashboard/` 与 `/customer/cash-ledger/` 必然打不开**(404「客户未开户」)✅实测 |
| 0-5 | 风控 Agent 配置 | `python tools/publish_risk_agent_config.py` | `risk_overview`/`risk_search`/`risk_evidence` 三个工具生效 ✅实测 |
| 0-6 | **Agent Worker(必开!)** | `python -m app.worker` | **不启动它,所有客服对话都会"超时"** —— 见下方说明 |
| 0-7 | **场内行情同步** | `python tools/sync_market_prices.py` | 下单的硬前置。**不跑它:只有 2 只产品有行情,其余下单直接 503**;行情过期后同理(见下方说明) |
### ⚠️ 0-6 为什么是"必开"而不是"必停"
@@ -36,12 +37,27 @@ Agent 请求是**三段式**:API 受理(返回 202)→ **Worker 领单执
排查第一步永远是:查 `agent_run` 最新那行的 `status` 是不是 `queued`。
### ⚠️ 0-7 为什么下单前必须跑行情同步
`fin_market_price` 是下单的硬前置:`TradeService` 要求该产品在这张表里有
`close_price > 0`、`total_fund_shares > 0`,且 `source_updated_at` 落在 `MAX_QUOTE_AGE` 内。
**行情过期后没有任何自动刷新机制** —— 表现是下单全线 `503 FUND_QUOTE_UNAVAILABLE`,
而错误信息只说"某产品行情已过期",看不出根因。
跑一次 `python tools/sync_market_prices.py` 同时解决两件事:
补齐行情(原本只有 2 只有)+ 把时间戳刷到当前(让新鲜度校验通过)。
> 数据源是**腾讯行情**(`qt.gtimg.cn`):东财的 push2 / push2his 两个行情域名在本环境
> 实测连不上,而它的净值/概况域名正常 —— 即东财只有行情类接口不可达。
> 总份额按「已有值 → 腾讯总市值推算 → 季度规模兜底」确定,都拿不到就跳过该产品。
```powershell
# 一次性把前置跑齐(两个终端)
python tools/seed_test_rbac.py
python tools/set_user_password.py
python -m tools.seed_sim_account_demo
python tools/publish_risk_agent_config.py
python tools/sync_market_prices.py # ← 下单前必跑
# 终端 1:API
python -m uvicorn app.main:app --host 127.0.0.1 --port 8000