REST API

📎 引用文件

本文引用的文件 - security.py - auth_routes.py - sessions_routes.py - runs_routes.py - models.py - settings_routes.py - system_routes.py - live_routes.py - channels_routes.py - qveris_routes.py - swarm_routes.py - uploads_routes.py - scheduled_routes.py

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能与速率限制
  8. 故障排查指南
  9. 结论
  10. 附录:客户端集成与最佳实践

简介

本文件为 Vibe-Trading REST API 的完整接口文档,覆盖认证、会话管理、回测运行管理、系统设置、实时交易控制、定时研究任务、上传与报告、聊天频道、Swarm 多智能体运行等核心能力。文档包含所有 HTTP 端点的 URL 模式、请求参数、响应格式、状态码、错误处理策略、数据验证规则、速率限制与安全注意事项,并提供客户端集成指南和常见用例说明。

项目结构

API 基于 FastAPI 模块化路由组织,各功能域以独立模块注册到主应用: - 安全与认证:统一鉴权、CORS、安全头、SSE 票据、本地回环信任 - 会话与目标:会话 CRUD、消息发送、事件流(SSE)、研究目标(Goal)生命周期 - 回测运行:历史运行列表与详情、代码/Pine 脚本下载、图表数据 - 系统与健康:存活/就绪探针、相关性计算、技能清单、OpenAPI/Swagger/ReDoc - 设置:LLM 提供商配置、数据源凭证、模型发现 - 实时交易:授权、指令提交、熔断开关、运行器启停、状态查询 - 频道:IM 通道运行时启停与配对命令 - QVeris:第三方工具配置与状态 - Swarm:多智能体预设与运行管理 - 上传与报告:文件上传、影子账户报告下载 - 定时研究:计划任务创建、执行、模板编排

graph TB A["FastAPI 应用"] --> B["安全与认证<br/>security.py"] A --> C["认证辅助<br/>auth_routes.py"] A --> D["会话与目标<br/>sessions_routes.py"] A --> E["回测运行<br/>runs_routes.py"] A --> F["系统健康<br/>system_routes.py"] A --> G["设置管理<br/>settings_routes.py"] A --> H["实时交易<br/>live_routes.py"] A --> I["频道管理<br/>channels_routes.py"] A --> J["QVeris<br/>qveris_routes.py"] A --> K["Swarm 多智能体<br/>swarm_routes.py"] A --> L["上传与报告<br/>uploads_routes.py"] A --> M["定时研究<br/>scheduled_routes.py"]

图示来源 - security.py:1-670 - auth_routes.py:1-56 - sessions_routes.py:1-802 - runs_routes.py:1-445 - system_routes.py:1-438 - settings_routes.py:1-674 - live_routes.py:1-1040 - channels_routes.py:1-116 - qveris_routes.py:1-232 - swarm_routes.py:1-260 - uploads_routes.py:1-179 - scheduled_routes.py:1-480

章节来源 - security.py:1-670 - sessions_routes.py:1-802 - runs_routes.py:1-445 - system_routes.py:1-438 - settings_routes.py:1-674 - live_routes.py:1-1040 - channels_routes.py:1-116 - qveris_routes.py:1-232 - swarm_routes.py:1-260 - uploads_routes.py:1-179 - scheduled_routes.py:1-480

核心组件

章节来源 - security.py:1-670 - auth_routes.py:1-56 - sessions_routes.py:1-802 - runs_routes.py:1-445 - system_routes.py:1-438 - settings_routes.py:1-674 - live_routes.py:1-1040

架构总览

sequenceDiagram participant Client as "客户端" participant API as "FastAPI 应用" participant Auth as "安全与认证" participant Session as "会话服务" participant Bus as "事件总线" participant Store as "存储/文件系统" Client->>API : "POST /sessions/{id}/messages" API->>Auth : "require_auth()" Auth-->>API : "Principal" API->>Session : "send_message(session_id, content)" Session->>Bus : "emit('goal.created'|'goal.updated'|...)" Session-->>API : "结果" API-->>Client : "JSON 响应" Client->>API : "GET /sessions/{id}/events" API->>Auth : "require_event_stream_auth(ticket|Bearer)" Auth-->>API : "通过" API->>Session : "subscribe(session_id, last_event_id)" loop 事件流 Session-->>API : "SSE 帧" API-->>Client : "text/event-stream" end

图示来源 - sessions_routes.py:697-800 - security.py:571-622

详细组件分析

认证与令牌

sequenceDiagram participant Browser as "浏览器" participant API as "FastAPI" participant Sec as "安全模块" Browser->>API : "POST /auth/sse-ticket (Authorization : Bearer)" API->>Sec : "require_auth()" Sec-->>API : "通过" API-->>Browser : "{ ticket }" Browser->>API : "GET /sessions/{id}/events?ticket=<ticket>" API->>Sec : "require_event_stream_auth(ticket)" Sec-->>API : "通过并消费票据" API-->>Browser : "SSE 流"

图示来源 - auth_routes.py:21-56 - security.py:300-341 - security.py:591-622

章节来源 - security.py:1-670 - auth_routes.py:1-56

会话与目标(会话控制)

flowchart TD Start(["调用 /sessions/{id}/messages"]) --> Validate["校验路径参数与会话存在性"] Validate --> SendMsg["调用会话服务 send_message()"] SendMsg --> Busy{"是否会话忙?"} Busy -- 是 --> Err409["返回 409 会话忙"] Busy -- 否 --> Result["返回执行结果"] Result --> End(["结束"])

图示来源 - sessions_routes.py:335-728

章节来源 - sessions_routes.py:1-802

回测运行管理

classDiagram class RunInfo { +string run_id +string status +string created_at +string prompt +float total_return +float sharpe +string[] codes +string start_date +string end_date } class RunResponse { +string status +string run_id +float elapsed_seconds +string reason +Dict planner_output +Dict strategy_spec +RAGSelection rag_selection +BacktestMetrics metrics +Artifact[] artifacts +Dict run_card +Dict llm_usage +Dict[] equity_curve +Dict[] trade_log +Dict[] artifacts_equity_csv +Dict[] artifacts_metrics_csv +Dict[] artifacts_trades_csv +Dict validation +Dict risk_xray +Dict rebalance_notes +string run_directory +string run_stage +Dict run_context +Dict price_series +Dict indicator_series +Dict[] trade_markers +Dict[] run_logs } class BacktestMetrics { +float final_value +float total_return +float annual_return +float max_drawdown +float sharpe +float win_rate +int trade_count } class Artifact { +string name +string path +string type +int size +bool exists } class RAGSelection { +string selected_api +string selected_name +float selected_score } RunResponse --> BacktestMetrics : "包含" RunResponse --> Artifact : "包含" RunResponse --> RAGSelection : "包含"

图示来源 - models.py:10-97 - runs_routes.py:47-216

章节来源 - runs_routes.py:1-445 - models.py:1-97

系统与健康

flowchart TD Req["请求 /correlation"] --> CheckRate["滑动窗口限流"] CheckRate --> Allowed{"允许?"} Allowed -- 否 --> TooMany["429 过多请求"] Allowed -- 是 --> Validate["校验参数(资产数/方法)"] Validate --> Compute["计算相关性矩阵"] Compute --> Ok["返回结果"]

图示来源 - system_routes.py:62-99 - system_routes.py:243-329

章节来源 - system_routes.py:1-438

设置管理(LLM 与数据源)

章节来源 - settings_routes.py:1-674

实时交易控制

章节来源 - live_routes.py:1-1040

频道管理

章节来源 - channels_routes.py:1-116

QVeris 集成

章节来源 - qveris_routes.py:1-232

Swarm 多智能体

章节来源 - swarm_routes.py:1-260

上传与报告

章节来源 - uploads_routes.py:1-179

定时研究任务

章节来源 - scheduled_routes.py:1-480

依赖关系分析

graph LR Auth["security.py<br/>require_auth / require_event_stream_auth"] --> Sessions["sessions_routes.py"] Auth --> Runs["runs_routes.py"] Auth --> System["system_routes.py"] Auth --> Settings["settings_routes.py"] Auth --> Live["live_routes.py"] Auth --> Channels["channels_routes.py"] Auth --> QVeris["qveris_routes.py"] Auth --> Swarm["swarm_routes.py"] Auth --> Uploads["uploads_routes.py"] Auth --> Scheduled["scheduled_routes.py"]

图示来源 - security.py:571-656 - sessions_routes.py:289-320 - runs_routes.py:226-255 - system_routes.py:166-191 - settings_routes.py:476-493 - live_routes.py:631-644 - channels_routes.py:57-79 - qveris_routes.py:73-86 - swarm_routes.py:45-67 - uploads_routes.py:51-74 - scheduled_routes.py:232-250

章节来源 - security.py:1-670 - 各 routes 模块注册函数(见上)

性能与速率限制

章节来源 - system_routes.py:62-99 - uploads_routes.py:22-24 - swarm_routes.py:169-211 - sessions_routes.py:752-800

故障排查指南

章节来源 - security.py:463-504 - sessions_routes.py:321-728 - settings_routes.py:506-674 - uploads_routes.py:96-179 - system_routes.py:226-329

结论

Vibe-Trading REST API 提供完整的交易与研究能力,涵盖认证、会话、回测、设置、实时交易、频道、QVeris、Swarm、上传与报告、定时任务等。其安全设计强调密钥管理、跨站防护、SSE 票据与本地回环信任;性能方面对高负载计算实施速率限制;错误处理清晰、可观测性强。建议在生产环境启用 API 密钥、合理配置 CORS 与安全头、使用 SSE 票据保障浏览器安全连接,并对高频接口实施客户端侧限流与重试策略。

附录:客户端集成与最佳实践