stock-analysis / API_ARCHITECTURE_DESIGN.md
fromozu's picture
Auto-deploy from GitHub Actions - 6ea75c7
a105470 verified
# 股票分析系统 API 接口架构设计
## 概述
本文档定义了股票分析系统的RESTful API接口架构,提供外部系统调用股票分析功能的标准化接口。
## API版本控制
- **当前版本**: v1
- **基础URL**: `/api/v1`
- **版本控制方式**: URL路径版本控制
## 认证机制
### 1. API密钥认证
```http
X-API-Key: your_api_key_here
```
### 2. HMAC签名认证(高安全级别)
```http
X-API-Key: your_api_key_here
X-HMAC-Signature: hmac_signature
X-Timestamp: unix_timestamp
```
## 核心API端点
### 1. 投资组合分析API
**端点**: `POST /api/v1/portfolio/analyze`
**请求格式**:
```json
{
"stocks": [
{
"stock_code": "000001.SZ",
"weight": 0.3,
"market_type": "A"
},
{
"stock_code": "600000.SH",
"weight": 0.7,
"market_type": "A"
}
],
"analysis_params": {
"risk_preference": "moderate",
"time_horizon": "medium"
}
}
```
**响应格式**:
```json
{
"success": true,
"data": {
"portfolio_score": 75.5,
"risk_level": "medium",
"risk_analysis": {
"volatility_risk": 65.2,
"concentration_risk": 45.8,
"correlation_risk": 55.3
},
"recommendations": [
"建议适当分散投资",
"关注市场波动风险"
],
"individual_stocks": [
{
"stock_code": "000001.SZ",
"score": 78.2,
"weight": 0.3,
"contribution": 23.46
}
]
},
"meta": {
"analysis_time": "2025-01-03T10:30:00Z",
"cache_hit": true,
"processing_time_ms": 1250
}
}
```
### 2. 个股分析API
**端点**: `POST /api/v1/stock/analyze`
**请求格式**:
```json
{
"stock_code": "000001.SZ",
"market_type": "A",
"analysis_depth": "full",
"include_ai_analysis": true,
"time_range": 60
}
```
**响应格式**:
```json
{
"success": true,
"data": {
"stock_info": {
"stock_code": "000001.SZ",
"stock_name": "平安银行",
"industry": "银行",
"market_type": "A"
},
"analysis_result": {
"overall_score": 78.5,
"technical_score": 75.2,
"fundamental_score": 82.1,
"capital_flow_score": 77.8
},
"technical_analysis": {
"trend": "上升",
"support_levels": [12.50, 12.20],
"resistance_levels": [13.80, 14.20],
"indicators": {
"rsi": 65.2,
"macd_signal": "买入",
"ma_trend": "多头排列"
}
},
"fundamental_analysis": {
"pe_ratio": 5.8,
"pb_ratio": 0.65,
"roe": 12.5,
"debt_ratio": 45.2
},
"risk_assessment": {
"risk_level": "中等",
"volatility": 25.3,
"beta": 1.15
},
"ai_analysis": {
"summary": "该股票基本面良好...",
"recommendation": "建议持有",
"confidence": 0.85
}
},
"meta": {
"analysis_time": "2025-01-03T10:30:00Z",
"data_freshness": "实时",
"processing_time_ms": 2150
}
}
```
### 3. 批量股票评分API
**端点**: `POST /api/v1/stocks/batch-score`
**请求格式**:
```json
{
"stock_codes": ["000001.SZ", "600000.SH", "000002.SZ"],
"market_type": "A",
"min_score": 60,
"sort_by": "score",
"sort_order": "desc"
}
```
**响应格式**:
```json
{
"success": true,
"data": {
"total_analyzed": 3,
"qualified_count": 2,
"results": [
{
"stock_code": "000001.SZ",
"stock_name": "平安银行",
"score": 78.5,
"risk_level": "中等",
"recommendation": "买入"
},
{
"stock_code": "600000.SH",
"stock_name": "浦发银行",
"score": 72.3,
"risk_level": "中等",
"recommendation": "持有"
}
]
},
"meta": {
"analysis_time": "2025-01-03T10:30:00Z",
"processing_time_ms": 5250,
"cache_hit_rate": 0.67
}
}
```
### 4. 异步任务API
**创建任务**: `POST /api/v1/tasks`
```json
{
"task_type": "portfolio_analysis",
"params": {
"stocks": [...],
"analysis_depth": "full"
}
}
```
**查询任务状态**: `GET /api/v1/tasks/{task_id}`
```json
{
"success": true,
"data": {
"task_id": "uuid-string",
"status": "running",
"progress": 65,
"estimated_completion": "2025-01-03T10:35:00Z",
"created_at": "2025-01-03T10:30:00Z"
}
}
```
**获取任务结果**: `GET /api/v1/tasks/{task_id}/result`
## 错误处理
### 标准错误响应格式
```json
{
"success": false,
"error": {
"code": "INVALID_STOCK_CODE",
"message": "提供的股票代码无效",
"details": {
"invalid_codes": ["INVALID001"],
"suggestion": "请检查股票代码格式"
}
},
"meta": {
"request_id": "req_123456789",
"timestamp": "2025-01-03T10:30:00Z"
}
}
```
### HTTP状态码规范
- `200 OK`: 请求成功
- `201 Created`: 任务创建成功
- `400 Bad Request`: 请求参数错误
- `401 Unauthorized`: 认证失败
- `403 Forbidden`: 权限不足
- `404 Not Found`: 资源不存在
- `429 Too Many Requests`: 请求频率超限
- `500 Internal Server Error`: 服务器内部错误
## 限流策略
### 基础限流
- **免费用户**: 100次/小时
- **付费用户**: 1000次/小时
- **企业用户**: 10000次/小时
### 端点特定限流
- 个股分析: 50次/小时
- 投资组合分析: 20次/小时
- 批量评分: 10次/小时
## 缓存策略
### 数据缓存TTL
- **实时数据**: 5分钟
- **技术指标**: 15分钟
- **基本面数据**: 1天
- **历史数据**: 7天
### 缓存键策略
- 个股分析: `stock_analysis:{stock_code}:{market_type}:{date}`
- 组合分析: `portfolio_analysis:{hash(stocks)}:{params_hash}`
## 集成现有系统
### 1. 任务管理器集成
- 复用 `unified_task_manager`
- 支持异步任务处理
- 任务状态实时更新
### 2. 分析引擎集成
- `StockAnalyzer`: 核心分析功能
- `RiskMonitor`: 风险评估
- `FundamentalAnalyzer`: 基本面分析
### 3. 缓存系统集成
- MySQL缓存: 长期数据存储
- Redis缓存: 实时数据缓存
- 智能缓存策略
## 安全考虑
### 1. 输入验证
- 股票代码格式验证
- 参数范围检查
- SQL注入防护
### 2. 输出过滤
- 敏感信息过滤
- 数据脱敏处理
### 3. 访问控制
- API密钥管理
- 用户权限分级
- IP白名单支持
## 监控和日志
### 1. 性能监控
- 响应时间监控
- 错误率统计
- 缓存命中率
### 2. 业务监控
- API调用统计
- 用户行为分析
- 系统负载监控
### 3. 日志记录
- 请求日志
- 错误日志
- 性能日志