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.
|
|
2 months ago | |
|---|---|---|
| .. | ||
| app | 2 months ago | |
| tests | 2 months ago | |
| Dockerfile | 2 months ago | |
| README.md | 2 months ago | |
| pytest.ini | 2 months ago | |
| requirements.txt | 2 months ago | |
README.md
期货股票数据统一平台 - 后端服务
技术栈
- 框架: FastAPI 0.109+
- 数据库: TimescaleDB (时序数据) + SQLite (配置数据)
- 缓存: Redis 7.2+
- 认证: JWT (PyJWT)
- 异步: asyncio + uvicorn
目录结构
backend/
├── app/
│ ├── api/
│ │ └── v1/
│ │ ├── auth.py # 认证 API
│ │ ├── kline.py # K 线数据 API
│ │ ├── realtime.py # 实时行情 API
│ │ ├── alert.py # 告警管理 API
│ │ ├── subscription.py # 数据订阅 API
│ │ └── user.py # 用户管理 API
│ ├── db/
│ │ └── init_db.py # 数据库初始化
│ ├── middleware/
│ │ ├── auth.py # 认证中间件
│ │ └── rate_limit.py # 限流中间件
│ ├── models/
│ │ └── __init__.py # SQLAlchemy 模型
│ ├── schemas/
│ │ └── __init__.py # Pydantic 数据验证
│ ├── services/
│ │ ├── auth_service.py # 认证服务
│ │ ├── kline_service.py # K 线数据服务
│ │ ├── realtime_service.py # 实时行情服务
│ │ ├── alert_service.py # 告警服务
│ │ └── subscription_service.py # 订阅服务
│ ├── config.py # 配置文件
│ └── main.py # 应用入口
├── tests/
│ └── test_api.py # API 测试
├── requirements.txt # Python 依赖
└── Dockerfile # Docker 构建
API 接口
认证接口
POST /api/v1/auth/login- 用户登录POST /api/v1/auth/refresh- 刷新令牌GET /api/v1/auth/me- 获取当前用户信息POST /api/v1/auth/api-key- 创建 API KeyGET /api/v1/auth/api-keys- 获取 API Key 列表DELETE /api/v1/auth/api-key/{id}- 撤销 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- 获取最新行情GET /api/v1/realtime/quotes- 获取多个行情
告警管理接口
POST /api/v1/alert- 创建告警GET /api/v1/alert- 获取告警列表GET /api/v1/alert/{id}- 获取告警详情PUT /api/v1/alert/{id}- 更新告警DELETE /api/v1/alert/{id}- 删除告警
数据订阅接口
POST /api/v1/subscription- 创建订阅GET /api/v1/subscription- 获取订阅列表DELETE /api/v1/subscription/{id}- 取消订阅
本地开发
安装依赖
pip install -r requirements.txt
配置环境变量
创建 .env 文件:
SECRET_KEY=your-secret-key
TIMESCALE_DB_URL=postgresql://postgres:postgres@localhost:5432/kline_data
SQLITE_DB_PATH=./data/config.db
REDIS_URL=redis://localhost:6379/0
启动服务
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
访问 API 文档
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
运行测试
pytest tests/ -v --cov=app
Docker 部署
# 构建镜像
docker build -t kline-backend .
# 运行容器
docker run -d -p 8000:8000 --name kline-backend kline-backend