claude_dev b954b02e75
CI/CD / test (push) Successful in 45s
CI/CD / nas-deploy (push) Has been cancelled
CI/CD / nas-verify (push) Has been cancelled
fix(monitor): 监控班次二 P2 批——D-5 db_sample 日历不可达去 fail-open(样本可读弱检/库不可达黄)+D-6 month_bucket 损坏件 rows=None 黄(对齐 per_date)+D-8 check_disk 阈值参数化消费注册表 warn_gb/crit_gb(旧硬编码 8/20=改表不改行为校准陷阱,crit_gb 全仓无消费)+D-9 vintage/NAS ts fromisoformat 捕 TypeError+D-10 db_sample close 进 finally+AL-1 upsert 更新 severity(同日黄→红升级即时落表,旧 UPDATE 不动=次日新 id 才纠正)+purge 收口 MON-202610-04(open 黄改 last_seen 28d=活着不删,旧 first_seen 14d 硬删无声抹持续黄+断 count 升级链;resolved 统一 30d,open 红永不删)+N-1 run_monitor_nas.sh rc 先存后拼($(date) 同词先展开重置 $?=exit 恒 0,rc 隔离下 NAS 崩溃唯一现场线索)+N-2 NAS 日历豁免短期方案(last_weekday 接休市表镜像+CI 同步测钉与 monitor_registry 相等=7f9b413 镜像纪律;10-06 旧码会把 10-05 假日当昨交易日;corpus 34h 日历日节奏实证无需豁免)+P3 归因([FATAL] 级别标记不当类型归 _global,scan_signatures 注记 test-only 勿接线)+T-2 NAS red 分支(hot_rank 文件缺)测试补缺+migration_logs 保洁(data_monitor_wrapper 双班剪 14d 前旧件,13 wrapper 无限增长收口);monitoring spec §5.1/§5.2/§5.3-④/§5.4/§5.5-④/§7.6/§12 随码(C-A1 universe 异常实串/C-A2 签名表勘正补 Expecting value/C-A6 disk 阈值表述+锚点行数刷新) [vps] [nas]
2026-10-05 15:54:13 +08:00
feat(strategy): TODO#68-#75八项全做+导航自测——#68灯职责拆分:实走/影子在跑=直达/paper/live/{aid}监控页,实盘在跑=/live/monitor/{aid},未跑=发起;回放灯done=直达/paper/result/{aid}(run_meta.replay.account_id);#69回测任务按实例过滤:backtest_stats加instance_id列(ALTER迁移)+_write_back落列+GET /task?instance=N+任务中心过滤条+策略库「回测历史」按钮;回测灯done=直达最新结果页(run_meta.backtest.task_id按前缀分流),跑过无结果=任务中心过滤;#70模拟盘创建后直接跳列表(不跳结果/监控页);列宽重排(策略/实例150模式96频率60操作250,折行实测消除);#71列内容对齐实盘:策略/实例列显示实例名(instances映射,#id退化)+持仓数列(list_papers顺带count volume>0)+删创建时间列(净值日期已含);#72实盘名自动生成={实例名}_v{YYYYMMDD}{minor}(同实例同日递增,listLives计数);模拟盘名={实例名}·{模式};#73术语统一档案→实例(全局8文件UI文案+后端409提示,精确短语防误伤,spec比喻保留文档);#74MonacoDiff v4:优先monaco原生diff(差异高亮),挂载450ms自检original栏占比<30%自动降级双只读编辑器(滚动联动)——全屏模态下大概率吃到原生diff;#75收益标签与数值同源(retInfoOf:运行ret优先含kind,fallback run_returns,标签跟随数值来源,根治影子1044%实为回测收益挂影子标签);927绿+build绿+dev浏览器自测:策略库6入口(回测历史/模拟历史/实盘历史/回测灯/实走灯直达监控/组合无回放)与模拟盘列表新列全过 [vps]
2026-08-16 09:34:39 +08:00

Sanguo VeighNa 量化交易平台 v2.0

⚠️ 本 README 内容截至 2026-07,架构已大幅迁移(Web 入口=sanguo_api 单进程 8000+Vue 前端、三环境部署、因子体系/流水线/监控均已上线)。当前权威文档:

  • 部署/运维:docs/deployment/vps-production-runbook.md
  • 发布/晋升:docs/three-env-code-promote.md
  • Agent 工作入口:.claude/CLAUDE.md

下方内容仅作历史参考,按其操作(端口/凭据/安装步骤)会失败。

基于 VeighNa 4.4.0 的二次开发量化交易平台,支持 Web 界面和 Docker 容器化部署。

特性

  • 🚀 基于 VeighNa 4.4.0 - 最新稳定版本
  • 🌐 Web 界面 - FastAPI + WebSocket 实时数据推送
  • 🐳 Docker 部署 - 支持 Synology NAS 等容器环境
  • 📊 完整功能 - 行情订阅、交易下单、策略管理
  • 🔐 安全认证 - JWT Token 认证机制
  • 📡 实时推送 - WebSocket 行情、成交、持仓实时更新

项目结构

sanguo_vnpy_v2/
├── vnpy_v4.4.0/              # VeighNa 上游源码
├── sanguo_trader/             # 核心交易模块
├── sanguo_research/           # 量化投研模块
├── sanguo_data/               # 数据管理模块
├── sanguo_common/             # 公共模块
├── sanguo_web/                # Web 服务模块
│   ├── api/                   # REST API
│   ├── websocket/             # WebSocket 服务
│   └── services/              # 业务服务
├── docker/                    # Docker 配置
│   ├── Dockerfile             # 镜像构建
│   ├── docker-compose.yml     # 容器编排
│   ├── entrypoint.sh          # 启动脚本
│   └── deploy-synology.sh     # NAS 部署脚本
├── tests/                     # 测试代码
├── docs/                      # 文档
└── examples/                  # 示例代码

快速开始

方式 1: Docker 部署(推荐)

本地开发

# 构建镜像
cd docker
docker-compose build

# 启动服务
docker-compose up -d

# 访问 Web 界面
open http://localhost:8000

Synology NAS 部署

  1. 开启 SSH 服务
  2. 上传部署包到 NAS
  3. 运行部署脚本:
cd /volume1/docker/containers/sanguo_vnpy_v2/docker
sudo bash deploy-synology.sh

详细说明请参考 Synology NAS 部署指南

方式 2: 本地开发

环境要求

  • Python 3.10+
  • 推荐 Python 3.13

安装步骤

# 创建虚拟环境
python -m venv venv
source venv/bin/activate  # Linux/Mac
# venv\Scripts\activate   # Windows

# 安装依赖
pip install -r requirements/base.txt

# 启动 Web 服务
python run_web.py

Web 服务启动

# 开发模式(端口 8002)
python run_web.py

# 生产模式
uvicorn sanguo_web.api:app --host 0.0.0.0 --port 8000 --workers 2

⚠️ 2026-10-01 勘误(audit/20261001_docs_audit/ P0-1):上方「生产模式」命令启动的是 sanguo_web legacy 平行后端——已退役、生产不部署、自带硬编码密钥/默认口令/CORS 全开(架构审计 P0-3),勿按此启动。现行生产入口=run_web.py(sanguo_api.main:create_app 工厂,单进程 :8000,NAS 容器与 VPS sanguo-api 同款)。

API 文档

启动服务后访问:

  • Swagger UI: http://localhost:8000/docs
  • ReDoc: http://localhost:8000/redoc

认证

⚠️ 2026-10-01 勘误:本节为 07 月历史内容。现行认证=sanguo_api JWT(凭据在 config/backtest.yaml auth 段 bcrypt hash,不入库不写文档);sanguo_web 的 admin/admin123 默认口令随该后端一并退役。

WebSocket 连接

// 连接 WebSocket
const ws = new WebSocket('ws://localhost:8080');

// 订阅行情
ws.send(JSON.stringify({
    type: 'subscribe',
    data: { subscription: ['tick', 'order', 'trade'] }
}));

// 接收消息
ws.onmessage = (event) => {
    const message = JSON.parse(event.data);
    console.log('Received:', message);
};

测试

# 运行 API 测试
pytest tests/test_api.py -v

# 运行 WebSocket 测试
python tests/test_websocket.py

# 运行所有测试
pytest tests/ -v

开发指南

详细开发指南请查看:

主要功能模块

1. 认证系统 (/api/v1/auth)

  • 用户登录/登出
  • Token 验证
  • 用户信息获取

2. 网关管理 (/api/v1/gateway)

  • 可用网关列表
  • 网关连接/断开
  • 网关配置管理

3. 行情数据 (/api/v1/market)

  • 实时行情查询
  • 行情订阅/取消订阅
  • 合约信息查询

4. 交易功能 (/api/v1/trading)

  • 账户信息查询
  • 持仓查询
  • 订单管理(下单、撤单)
  • 成交记录查询

5. 策略管理 (/api/v1/strategy)

  • 策略列表
  • 策略启动/停止
  • 策略参数配置

环境变量

主要环境变量(见 docker/.env.example):

# 数据目录
DATA_DIR=/volume1/docker/stock/sanguo_vnpy

# 端口配置
HTTP_PORT=8000
WS_PORT=8080

# 时区
TZ=Asia/Shanghai

# JWT 密钥
JWT_SECRET_KEY=your-secret-key-here

# 数据库
DB_TYPE=sqlite
DB_PATH=/app/data/vnpy.db

分支策略

  • master - 主分支,保持稳定可部署
  • develop - 开发分支,日常开发合并
  • feature/* - 功能分支
  • hotfix/* - 热修复分支

版本历史

查看 CHANGELOG.md

技术栈

  • 后端框架: FastAPI 0.100+
  • WebSocket: websockets 12.0+
  • 数据库: SQLite (可扩展 PostgreSQL)
  • 缓存: Redis 7+
  • 容器: Docker + Docker Compose
  • 认证: JWT (python-jose)
  • 测试: pytest + httpx

许可证

MIT License

致谢

基于 VeighNa 框架开发

联系方式

  • 问题反馈: GitHub Issues
  • 文档: docs/ 目录
S
Description
sanguo_vnpy_v2
Readme 250 MiB
Languages
Jupyter Notebook 82.9%
Python 13.9%
Vue 1.5%
TypeScript 0.5%
JavaScript 0.4%
Other 0.7%