数据操作

📎 引用文件

本文引用的文件 - uploads_routes.py - auth_routes.py - system_routes.py - settings_routes.py - security.py - base.py(加载器缓存) - test_upload_api.py - README_zh.md

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能与可扩展性
  8. 故障排查指南
  9. 结论
  10. 附录:API 使用示例

简介

本文件为 Vibe-Trading 的数据操作 API 提供完整文档,覆盖数据上传、下载、转换与处理相关 HTTP 端点;说明支持的文件格式、数据验证规则与处理管道;阐述批量数据处理、流式传输与缓存策略;给出数据导入导出、格式转换与质量检查的 API 使用示例;并总结数据安全、隐私保护与合规要求。

项目结构

数据操作能力主要分布在以下模块: - 上传与报告下载:uploads_routes.py - 认证辅助(SSE 票据):auth_routes.py - 系统与健康检查、相关性计算等:system_routes.py - LLM 与数据源设置(含凭据管理):settings_routes.py - 安全中间件与鉴权:security.py - 数据加载器缓存(Parquet + DuckDB):backtest/loaders/base.py - 上传接口回归测试:tests/test_upload_api.py

graph TB A["客户端/前端"] --> B["FastAPI 应用"] B --> C["uploads_routes.py<br/>POST /upload, GET /shadow-reports/{id}"] B --> D["auth_routes.py<br/>POST /auth/sse-ticket"] B --> E["system_routes.py<br/>GET /correlation*, /health, /ready, /skills, /api"] B --> F["settings_routes.py<br/>GET/PUT /settings/*"] B --> G["security.py<br/>CORS/鉴权/限流/安全头"] C --> H["文件系统<br/>~/.vibe-trading/uploads"] E --> I["backtest 模块<br/>相关性/行情计算"] I --> J["loaders/base.py<br/>本地 Parquet 缓存"]

图表来源 - uploads_routes.py:1-179 - auth_routes.py:1-56 - system_routes.py:1-438 - settings_routes.py:1-674 - security.py:1-200 - base.py(加载器缓存):462-499

章节来源 - uploads_routes.py:1-179 - system_routes.py:1-438 - settings_routes.py:1-674 - security.py:1-200 - base.py(加载器缓存):462-499

核心组件

章节来源 - uploads_routes.py:1-179 - auth_routes.py:1-56 - system_routes.py:1-438 - settings_routes.py:1-674 - security.py:1-200

架构总览

数据操作 API 以 FastAPI 为中心,路由模块化挂载,统一通过 security.py 提供的鉴权与中间件进行访问控制与安全防护。上传路径采用流式写入与严格白名单/黑名单校验;相关性计算等数据服务通过 backtest 模块调用数据加载器,并利用本地 Parquet 缓存加速重复查询。

sequenceDiagram participant Client as "客户端" participant API as "FastAPI" participant Upload as "uploads_routes" participant FS as "文件系统" Client->>API : POST /upload (multipart/form-data) API->>Upload : 路由分发 Upload->>Upload : 校验文件名/扩展名/大小限制 Upload->>FS : 流式写入(1MB块) FS-->>Upload : 成功/异常 Upload-->>Client : {status, file_path, filename}

图表来源 - uploads_routes.py:119-179 - test_upload_api.py:19-37

章节来源 - uploads_routes.py:119-179 - test_upload_api.py:19-37

详细组件分析

文件上传与下载

flowchart TD Start(["接收上传请求"]) --> CheckName["校验文件名与扩展名"] CheckName --> Allowed{"允许类型?"} Allowed -- 否 --> Reject["400 拒绝"] Allowed -- 是 --> Stream["流式读取(1MB块)"] Stream --> SizeCheck{"累计大小 > 上限?"} SizeCheck -- 是 --> Cleanup["删除临时文件"] --> TooLarge["413 过大"] SizeCheck -- 否 --> Write["写入目标文件"] Write --> Done(["返回上传结果"])

图表来源 - uploads_routes.py:119-179

章节来源 - uploads_routes.py:22-43 - uploads_routes.py:96-117 - uploads_routes.py:119-179 - test_upload_api.py:19-37

认证与 SSE 票据

sequenceDiagram participant FE as "前端" participant API as "FastAPI" participant Auth as "auth_routes" FE->>API : POST /auth/sse-ticket (带 Authorization) API->>Auth : 生成票据 Auth-->>API : {ticket} API-->>FE : 返回票据 FE->>API : GET /sessions/{id}/events?ticket=...

图表来源 - auth_routes.py:44-56

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

系统健康与相关性计算

sequenceDiagram participant Client as "客户端" participant Sys as "system_routes" participant Corr as "backtest.correlation" Client->>Sys : GET /correlation?codes=...,days=...,method=... Sys->>Sys : 参数校验/限流 Sys->>Corr : compute_correlation_matrix(...) Corr-->>Sys : 结果 Sys-->>Client : JSON

图表来源 - system_routes.py:243-279

章节来源 - system_routes.py:211-241 - system_routes.py:243-329

设置与数据源凭据管理

flowchart TD SStart["请求 /settings/*"] --> Validate["参数与权限校验"] Validate --> UpdateEnv["更新 .env 与运行时环境变量"] UpdateEnv --> Persist["持久化到用户配置"] Persist --> Reload["重置配置缓存"] Reload --> Response["返回最新设置"]

图表来源 - settings_routes.py:497-674

章节来源 - settings_routes.py:31-153 - settings_routes.py:336-467 - settings_routes.py:497-674

数据加载器缓存(批量与流式优化)

flowchart TD CStart["读取缓存路径"] --> Exists{"缓存存在?"} Exists -- 否 --> Fetch["从数据源拉取"] Exists -- 是 --> ReadMeta["读取元数据"] ReadMeta --> LoadFrame["DuckDB 读取 Parquet"] LoadFrame --> Use["返回 DataFrame"] Fetch --> Save["保存 Parquet + 元数据"] Save --> Use

图表来源 - base.py(加载器缓存):462-499

章节来源 - base.py(加载器缓存):462-499

依赖关系分析

graph LR U["uploads_routes.py"] --> S["security.py"] SR["system_routes.py"] --> S SR --> B["backtest 模块"] B --> C["loaders/base.py"] ST["settings_routes.py"] --> S AR["auth_routes.py"] --> S

图表来源 - uploads_routes.py:1-179 - system_routes.py:1-438 - settings_routes.py:1-674 - security.py:1-200 - base.py(加载器缓存):462-499

章节来源 - uploads_routes.py:1-179 - system_routes.py:1-438 - settings_routes.py:1-674 - security.py:1-200 - base.py(加载器缓存):462-499

性能与可扩展性

[本节为通用指导,无需特定文件引用]

故障排查指南

章节来源 - uploads_routes.py:119-179 - auth_routes.py:44-56 - system_routes.py:243-329 - settings_routes.py:434-467

结论

Vibe-Trading 的数据操作 API 提供了安全的文件上传与报告下载、健壮的认证机制、丰富的系统工具与设置管理能力,并结合本地缓存显著提升批量数据处理效率。通过严格的输入校验、速率限制与安全中间件,系统在易用性与安全性之间取得平衡。建议在生产环境中启用 API Key 鉴权、合理配置 CORS 与额外信任主机,并根据业务需求扩展上传与缓存策略。

[本节为总结,无需特定文件引用]

附录:API 使用示例

章节来源 - uploads_routes.py:96-179 - auth_routes.py:44-56 - system_routes.py:211-329 - settings_routes.py:497-674