You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

199 lines
4.9 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# AmazingData 金融数据服务平台
基于银河证券星耀数智量化平台SDK构建的金融数据服务系统提供历史数据缓存、实时数据订阅、批量数据管理等功能。
## 功能特性
-**完整SDK接口封装** - 封装AmazingData所有接口
-**智能数据缓存** - 优先本地缓存缺失自动从SDK补全
-**实时数据订阅** - WebSocket实时推送股票/期货行情
-**缺失数据检测** - 自动检测并提示缺失数据
-**批量缓存管理** - 一键检测、一键缓存
-**可视化K线图** - ECharts展示历史K线数据
-**完整测试中心** - 所有接口一键测试
-**配置管理** - SDK账号配置可视化维护
## 技术栈
| 层级 | 技术 |
|------|------|
| 后端 | Python 3.10+, FastAPI, SQLAlchemy 2.0 |
| 数据库 | PostgreSQL 15+ |
| 缓存 | Redis 7+ |
| 前端 | Vue3, TypeScript, Element Plus |
| 图表 | ECharts 5+ |
| 部署 | Docker, Docker Compose |
## 快速开始
### 1. 克隆项目
```bash
git clone <repository-url>
cd amazing-data-service
```
### 2. 安装AmazingData SDK
```bash
# 从银河证券获取 SDK wheel 文件
pip install AmazingData-1.0.24-py3-none-any.whl
```
### 3. 使用Docker启动
```bash
docker-compose up -d
```
服务将启动在:
- 前端: http://localhost
- 后端API: http://localhost:8000
- API文档: http://localhost:8000/docs
### 4. 初始化数据库
```bash
# 数据库会自动执行 init.sql 初始化脚本
# 默认管理员账号: admin / admin123
```
### 5. 配置SDK连接
1. 登录系统admin / admin123
2. 进入"配置管理"页面
3. 添加AmazingData SDK连接信息
4. 点击"测试连接"验证
## 项目结构
```
amazing-data-service/
├── backend/ # FastAPI后端
├── frontend/ # Vue3前端
├── database/ # 数据库脚本
├── docker/ # Docker配置
├── docs/ # 文档
└── README.md
```
## API接口文档
启动服务后访问http://localhost:8000/docs
### 主要接口分类
- `/api/v1/auth/*` - 认证接口
- `/api/v1/configs/*` - 配置管理
- `/api/v1/stock/*` - 股票数据
- `/api/v1/future/*` - 期货数据
- `/api/v1/realtime/*` - 实时数据
- `/api/v1/finance/*` - 财务数据
- `/api/v1/cache/*` - 缓存管理
- `/api/v1/test/*` - 测试中心
## 核心功能说明
### 1. 数据缓存策略
系统采用"本地优先"策略:
1. 查询请求首先检查本地数据库
2. 检查数据完整性(与交易日历对比)
3. 缺失数据自动从AmazingData SDK获取
4. 新数据写入数据库时自动去重
### 2. 缺失数据检测
检测逻辑:
- 按交易日查询数据条数
- 与最近交易日数据对比
- 偏差超过10%标记为缺失
### 3. 实时数据订阅
- WebSocket连接`ws://localhost:8000/api/v1/realtime/stream`
- 支持股票、期货、指数快照订阅
- 数据自动保存7天后清理
### 4. 测试中心
提供所有接口的自动化测试:
- 单个接口测试(参数调试)
- 批量接口测试(回归测试)
- 测试历史记录
## 数据库表结构
### 核心表
| 表名 | 说明 |
|------|------|
| users | 系统用户 |
| sdk_configs | SDK配置 |
| stock_kline_daily | 股票日线数据 |
| stock_kline_min | 股票分钟数据 |
| future_kline_daily | 期货日线数据 |
| future_kline_min | 期货分钟数据 |
| realtime_snapshot | 实时快照数据 |
| cache_tasks | 缓存任务 |
| api_test_logs | API测试日志 |
完整表结构见:`database/init.sql`
## 开发指南
### 后端开发
```bash
cd backend
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
uvicorn app.main:app --reload
```
### 前端开发
```bash
cd frontend
npm install
npm run dev
```
## 配置说明
### 环境变量
| 变量名 | 说明 | 默认值 |
|--------|------|--------|
| DATABASE_URL | 数据库连接URL | postgresql://postgres:postgres@localhost:5432/amazing_data |
| REDIS_URL | Redis连接URL | redis://localhost:6379/0 |
| SECRET_KEY | JWT密钥 | your-secret-key |
| ACCESS_TOKEN_EXPIRE_HOURS | Token过期时间 | 24 |
## 常见问题
### Q: 如何添加新的SDK配置
A: 登录系统后,进入"配置管理"页面,点击"添加配置"填写AmazingData账号信息。
### Q: 如何批量缓存历史数据?
A: 进入"缓存管理"页面,选择时间区间,点击"检测缺失数据",然后点击"一键缓存"。
### Q: 实时数据如何订阅?
A: 在数据查询页面,输入代码后勾选"实时订阅"系统会自动建立WebSocket连接。
### Q: 数据去重是如何工作的?
A: 系统比较open/high/low/close/volume五个核心字段如果差异小于0.0001则视为相同数据,跳过插入。
## 许可证
MIT License
## 联系支持
如有问题请联系项目维护者或提交Issue。
---
**注意**使用本系统需要AmazingData SDK授权请联系银河证券开通权限。