- P0-2 触及面矩阵修正(three-env §12): sanguo_api+frontend→🔴——VPS 常驻
sanguo-api 生产控制台(runbook §7.1/§7.6 09-25 勘误「本就常驻跑纯 API」,
vps-deploy.yml 每次部署重启 sanguo-api 实证)+公网前端 dist; sanguo_web=legacy
平行后端非「前端」; orchestrator→🟡 随 api 常驻加载(app.py:15 import 实证)。
同病 .claude/CLAUDE.md 判定行+reload 节一并修正(两处)
- P0-1 README 入口: 生产命令勘误(勿起 sanguo_web legacy 后端,架构审计 P0-3
定性危险)+admin123 凭据指引删除+api/user_guide 断链节改指文档中心
- P1 reload 旧任务名 sanguo-bs-eod→sanguo-bs-daily(three-env §4+session-guide
§6, 2026-08-20 重组遗留)
- P1 session-guide: smoke_e2e.py 死引用(da32cca 审计卫生批已删)→CI nas-verify
手动等效探针(免凭据版);dispatch 样例补 confirm 必填字段
- P1 nas-deploy-plan §四: docker run 补 --init+数据挂载/删 8080(现役容器
docker inspect 实证 Init=true 仅 8000 双挂载);§五外网链路标废(首尔入口 502)
- env-version-matrix VPS 角色+ops-README BRIDGE_URL: miniQMT/FastAPI-bridge
退役标注(09-08)
- three-env §1 NAS 路径 stock→homes/admin(promote.sh:19 实证)+§3.1 模块
计数 13→15
审计源: audit/20261001_docs_audit/(P0-1/P0-2/P1-1~4) +
audit/20261001_architecture_code_audit/(P0-1)
Co-Authored-By: Claude Code <notify@anthropic.com>
4.9 KiB
Windows bridge 部署 + 半自动更新(一站式)
sanguo QMT bridge(Windows 端 FastAPI + xtquant)的完整部署 + 以后半自动更新。 照着做即可,不用手动拷贝文件。
0. 前提
- miniQMT 客户端已安装,能登录账号
66639661(测试客户端/模拟) check_xtquant.py已跑通(import + connect + query 三步 ✅)- frpc 已配 + 连上 VPS(
curl https://bridge.mysanguo.top/health返回 502 = 隧道通)
1. 装 Git for Windows
下载 https://git-scm.com/download/win → 一路「Next」默认安装。
装完打开 cmd,验证:
git --version
2. 生成 gitea token(必须本人操作)
- 浏览器开
https://git.mysanguo.top,登录 sanguo 账号 - 右上角头像 → 设置(Settings)
- 左侧 应用(Applications) → 找「管理 Access Tokens / 个人访问令牌」
- 新建:
- 名字:
windows-bridge - 权限:勾
repository(读仓库即可)
- 名字:
- 点「生成令牌」→ 立刻复制 token(形如
abcdef123456...,只显示这一次,存好)
3. clone 仓库(sparse checkout,只拉 bridge 代码)
只需 sanguo_qmt_bridge/ 子目录,不用全量。cmd 里跑(把 <粘贴token> 换成第 2 步的 token):
git clone --no-checkout --depth 1 --sparse http://sanguo:<粘贴token>@git.mysanguo.top/sanguo/sanguo_vnpy_v2.git C:\sanguo_vnpy_v2
cd C:\sanguo_vnpy_v2
git sparse-checkout set sanguo_qmt_bridge
三行解释:
--no-checkout --sparse:先不拉文件,建空稀疏仓库--depth 1:只拉最新一版(不拉 git 历史,省带宽)sparse-checkout set sanguo_qmt_bridge:只 checkout 这个子目录
结果:C:\sanguo_vnpy_v2\sanguo_qmt_bridge\ 有 bridge 代码,不带 vnpy 源码/sanguo_trader/docs 等多余文件。token 进 URL 后以后 pull 免输。
以后
update.bat的 git pull 只更新sanguo_qmt_bridge/(sparse 仓库只拉这部分)。
4. 装依赖 + 设 BRIDGE_TOKEN
cd C:\sanguo_vnpy_v2\sanguo_qmt_bridge
pip install -r requirements.txt
设 bridge 鉴权密钥(和 NAS sanguo 端同值;当前测试用 <你的BRIDGE_TOKEN>,切实盘前换):
:: 临时(当前 cmd 窗口)
set BRIDGE_TOKEN=<你的BRIDGE_TOKEN>
:: 永久(系统环境变量,推荐)
setx BRIDGE_TOKEN "<你的BRIDGE_TOKEN>"
用
setx后重开一个 cmd 窗口才生效。
5. 首次启动
双击 C:\sanguo_vnpy_v2\sanguo_qmt_bridge\update.bat
它会:git pull(首次=已最新)+ 启动 bridge。看到日志 xtquant 连接成功 即就绪。
也可以手动:
cd C:\sanguo_vnpy_v2\sanguo_qmt_bridge && uvicorn bridge:app --host 127.0.0.1 --port 8765
6. 验证(另开一个 cmd)
curl http://127.0.0.1:8765/health
期望:{"status":"ok","miniqmt_connected":true}
curl -H "X-Bridge-Token: <你的BRIDGE_TOKEN>" http://127.0.0.1:8765/account
期望:{"ok":true,"cash":10000000.0,...}
三接口通 = bridge 就绪。
7. 以后每次更新(核心:半自动)
bridge 代码有更新时(Claude push 到 gitea 后),你只需:
双击 C:\sanguo_vnpy_v2\sanguo_qmt_bridge\update.bat
自动 git pull 拉最新 + 重启 bridge(新窗口跑 uvicorn,旧窗口可关)。不用手动下文件、不用手动拷贝。
update.bat 会显示当前 git 版本(commit),方便对照。
8. 开机自启(可选,D-2)
让 bridge 开机自动起。最简单——启动文件夹:
- Win+R 输
shell:startup回车,打开启动文件夹 - 在里面新建快捷方式,指向
C:\sanguo_vnpy_v2\sanguo_qmt_bridge\update.bat - (miniQMT 客户端也设开机自启登录,bridge 依赖它)
开机后 update.bat 自动跑(pull + 启动 bridge)。
9. 故障排查
| 现象 | 排查 |
|---|---|
git clone 报 401/无权限 |
token 错/过期,重新生成(第 2 步) |
update.bat git pull 失败 |
网络 / token 过期,看 update.bat 输出 |
/health miniqmt_connected:false |
miniQMT 未登录 / userdata 路径错 / 账号未就绪 |
bridge 启动 xtquant import 失败 |
xtquant 不在 site-packages,确认 miniQMT 安装目录的 site-packages 在 PYTHONPATH |
下单 [120141][证券交易未初始化] |
非交易日(miniQMT 交易日才初始化交易通道),等周一开市。这是 miniQMT 设计,不是 bug |
| 401 token 无效 | sanguo 与 Windows 的 BRIDGE_TOKEN 不一致 |
| miniQMT 重启后 bridge 失效 | 双击 update.bat 重启 bridge(新版有自动重连,但仍建议重启确认) |
相关
- bridge 接口契约 / 联调步骤:
docs/deployment/d-phase-windows-deploy.md - D 期设计:
docs/superpowers/specs/2026-07-10-phase3d-live-trading-design.md - bridge 源码:
sanguo_qmt_bridge/(bridge.py / xt_gateway.py / auth.py / trade_calendar.py / update.bat)