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.
5.5 KiB
5.5 KiB
期货股票数据统一平台
基于 FastAPI + Vue 3 + TimescaleDB 的专业 K 线数据与实时行情服务平台
项目简介
本项目是一个统一的期货、股票数据服务平台,提供:
- 📊 K 线数据查询 - 支持多周期历史 K 线数据
- 📈 实时行情推送 - WebSocket 实时数据推送
- 🔔 价格告警 - 灵活的价格条件告警
- 📱 数据订阅 - 个性化数据订阅管理
- 🔐 用户认证 - JWT 令牌认证 + API Key
技术栈
后端
- 框架: FastAPI 0.109+
- 数据库: TimescaleDB (时序数据) + SQLite (配置数据)
- 缓存: Redis 7.2+
- 认证: JWT (PyJWT)
- 异步: asyncio + uvicorn
前端
- 框架: Vue 3 + Vite
- UI 组件: Element Plus
- 图表: ECharts 5.4+
- 状态管理: Pinia
- 路由: Vue Router 4
部署
- 容器化: Docker + Docker Compose
- 反向代理: Nginx
快速开始
1. 克隆项目
cd 20260330_kline_system
2. 配置环境变量
cp .env.example .env
# 编辑 .env 文件,修改必要配置
3. 一键部署
# 初始化数据库并启动所有服务
chmod +x deploy/init_db.sh
./deploy/init_db.sh
4. 访问系统
- 前端页面: http://localhost
- API 文档: http://localhost:8000/docs
- 健康检查: http://localhost:8000/health
默认管理员账号:
- 用户名:
admin - 密码:
admin123(首次登录请修改)
项目结构
20260330_kline_system/
├── backend/ # 后端服务
│ ├── app/
│ │ ├── api/v1/ # API 路由
│ │ ├── db/ # 数据库配置
│ │ ├── middleware/ # 中间件
│ │ ├── models/ # 数据模型
│ │ ├── schemas/ # 数据验证
│ │ ├── services/ # 业务服务
│ │ ├── config.py # 配置文件
│ │ └── main.py # 应用入口
│ ├── tests/ # 测试代码
│ ├── requirements.txt # Python 依赖
│ └── Dockerfile
├── frontend/ # 前端服务
│ ├── src/
│ │ ├── api/ # API 封装
│ │ ├── layouts/ # 布局组件
│ │ ├── router/ # 路由配置
│ │ ├── stores/ # 状态管理
│ │ ├── views/ # 页面组件
│ │ ├── App.vue
│ │ └── main.js
│ ├── package.json
│ └── Dockerfile
├── deploy/ # 部署脚本
│ ├── init_db.sh # 数据库初始化
│ └── nginx.conf # Nginx 配置
├── docker-compose.yml # Docker 编排
└── .env.example # 环境变量示例
API 接口
认证接口
POST /api/v1/auth/login- 用户登录POST /api/v1/auth/refresh- 刷新令牌GET /api/v1/auth/me- 获取当前用户POST /api/v1/auth/api-key- 创建 API Key
K 线数据
GET /api/v1/kline/data- 获取 K 线数据GET /api/v1/kline/latest- 获取最新 K 线GET /api/v1/kline/symbols- 获取品种列表GET /api/v1/kline/periods- 获取周期列表
实时行情
WS /api/v1/realtime/ws- WebSocket 实时推送GET /api/v1/realtime/quote- 获取最新行情
告警管理
POST /api/v1/alert- 创建告警GET /api/v1/alert- 获取告警列表DELETE /api/v1/alert/{id}- 删除告警
数据订阅
POST /api/v1/subscription- 创建订阅GET /api/v1/subscription- 获取订阅列表DELETE /api/v1/subscription/{id}- 取消订阅
开发指南
后端开发
cd backend
# 安装依赖
pip install -r requirements.txt
# 本地运行
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
# 运行测试
pytest tests/ -v
前端开发
cd frontend
# 安装依赖
npm install
# 开发模式
npm run dev
# 构建生产版本
npm run build
运维命令
# 查看所有服务状态
docker-compose ps
# 查看服务日志
docker-compose logs -f backend
docker-compose logs -f frontend
# 重启服务
docker-compose restart backend
# 停止所有服务
docker-compose down
# 停止并删除数据卷
docker-compose down -v
系统要求
- Docker 24+
- Docker Compose 2.0+
- 内存:至少 4GB
- 磁盘:至少 10GB
安全建议
- 修改默认密钥: 生产环境务必修改
SECRET_KEY - 修改默认密码: 首次登录后立即修改管理员密码
- 启用 HTTPS: 生产环境使用 HTTPS 加密传输
- 限制 API 访问: 配置防火墙规则,限制外部访问
- 定期备份: 定期备份数据库数据
性能优化
- 数据库索引: 已为常用查询字段创建索引
- 数据压缩: TimescaleDB 自动压缩历史数据
- 缓存策略: Redis 缓存热点数据
- 限流保护: API 限流防止恶意请求
故障排查
后端无法启动
# 查看后端日志
docker-compose logs backend
# 检查数据库连接
docker exec kline_timescaledb psql -U postgres -d kline_data -c "SELECT 1"
前端无法访问
# 查看前端日志
docker-compose logs frontend
# 检查 Nginx 配置
docker exec kline_nginx nginx -t
数据库连接失败
# 重启数据库
docker-compose restart timescaledb
# 等待数据库就绪
sleep 10
许可证
MIT License
联系方式
如有问题或建议,请提交 Issue 或联系开发团队。
版本: v1.0.0
更新日期: 2026-04-02