|
|
# 前端开发文档
|
|
|
|
|
|
## 1. 项目架构
|
|
|
|
|
|
### 1.1 技术栈
|
|
|
|
|
|
| 类别 | 技术/库 | 版本 | 用途 |
|
|
|
|------|---------|------|------|
|
|
|
| 框架 | React | 18.x | 前端UI框架 |
|
|
|
| 路由 | React Router | 6.x | 页面路由管理 |
|
|
|
| 状态管理 | Redux Toolkit | 2.x | 全局状态管理 |
|
|
|
| UI组件库 | Ant Design | 5.x | 界面组件 |
|
|
|
| 图表库 | Lightweight Charts | 4.x | K线图表展示 |
|
|
|
| HTTP客户端 | Fetch API | 浏览器内置 | API调用 |
|
|
|
| 构建工具 | Vite | 5.x | 项目构建和开发服务器 |
|
|
|
|
|
|
### 1.2 目录结构
|
|
|
|
|
|
```
|
|
|
src/
|
|
|
├── assets/ # 静态资源
|
|
|
├── components/ # 通用组件
|
|
|
│ └── layout/ # 布局组件
|
|
|
├── pages/ # 页面组件
|
|
|
│ ├── admin/ # 管理配置页面
|
|
|
│ ├── config/ # 配置管理页面
|
|
|
│ ├── dashboard/ # 市场概览页面
|
|
|
│ ├── detail/ # 合约详情页面
|
|
|
│ ├── risk-control/ # 风控管理页面
|
|
|
│ └── watchlist/ # 自选合约页面
|
|
|
├── store/ # Redux状态管理
|
|
|
│ ├── futuresSlice.js # 期货数据状态管理
|
|
|
│ └── index.js # Store配置
|
|
|
├── utils/ # 工具函数
|
|
|
│ └── mockData.js # 模拟数据
|
|
|
├── App.jsx # 应用入口组件
|
|
|
├── main.jsx # 应用启动文件
|
|
|
└── index.css # 全局样式
|
|
|
```
|
|
|
|
|
|
## 2. 页面结构与路由
|
|
|
|
|
|
### 2.1 路由配置
|
|
|
|
|
|
| 路径 | 组件 | 功能 |
|
|
|
|------|------|------|
|
|
|
| `/` | Dashboard | 市场概览 |
|
|
|
| `/watchlist` | Watchlist | 自选合约 |
|
|
|
| `/detail/:code` | Detail | 合约详情分析 |
|
|
|
| `/risk-control` | RiskControl | 风控管理 |
|
|
|
| `/config` | Config | 配置管理 |
|
|
|
| `/admin` | AdminConfig | 管理配置 |
|
|
|
|
|
|
### 2.2 布局设计
|
|
|
|
|
|
- **顶部导航栏**:包含系统名称、深色模式切换、消息通知和用户头像
|
|
|
- **左侧菜单栏**:包含主要功能模块的导航链接
|
|
|
- **右侧内容区**:根据路由显示对应页面内容
|
|
|
- **响应式设计**:支持桌面端、平板和移动端
|
|
|
|
|
|
## 3. 组件设计
|
|
|
|
|
|
### 3.1 布局组件
|
|
|
|
|
|
#### MainLayout 组件
|
|
|
|
|
|
- **功能**:提供统一的页面布局,包括顶部导航栏和左侧菜单栏
|
|
|
- **交互**:
|
|
|
- 支持菜单栏折叠/展开
|
|
|
- 深色模式切换
|
|
|
- 响应式布局适配
|
|
|
|
|
|
### 3.2 页面组件
|
|
|
|
|
|
#### Dashboard 页面
|
|
|
|
|
|
- **功能**:市场概览,展示所有合约的基本信息和热点合约
|
|
|
- **交互**:
|
|
|
- 数据刷新
|
|
|
- 合约筛选和排序
|
|
|
- 添加/移除自选合约
|
|
|
- 查看合约详情
|
|
|
- 消息推送配置
|
|
|
|
|
|
#### Detail 页面
|
|
|
|
|
|
- **功能**:合约详情分析,包括K线图、技术指标和AI研判
|
|
|
- **交互**:
|
|
|
- 周期切换(5分钟、30分钟、1小时、1天、1周)
|
|
|
- 技术指标切换(MA、MACD、KDJ、RSI、布林带)
|
|
|
- 图表缩放和拖拽
|
|
|
|
|
|
#### Watchlist 页面
|
|
|
|
|
|
- **功能**:展示用户添加的自选合约
|
|
|
- **交互**:
|
|
|
- 查看合约详情
|
|
|
- 从自选中移除合约
|
|
|
- 消息推送配置
|
|
|
|
|
|
#### RiskControl 页面
|
|
|
|
|
|
- **功能**:风险管理和仓位计算
|
|
|
- **交互**:
|
|
|
- 止损策略设置
|
|
|
- 仓位大小计算
|
|
|
- 风险偏好设置
|
|
|
- 换月预警查看
|
|
|
|
|
|
#### Config 页面
|
|
|
|
|
|
- **功能**:系统配置管理
|
|
|
- **交互**:
|
|
|
- 系统参数调整
|
|
|
- 消息推送配置
|
|
|
|
|
|
#### AdminConfig 页面
|
|
|
|
|
|
- **功能**:管理配置,包括数据库、服务器、安全和数据源配置
|
|
|
- **交互**:
|
|
|
- 数据库连接测试
|
|
|
- 数据源连接测试
|
|
|
- 配置保存和恢复默认
|
|
|
|
|
|
## 4. 状态管理
|
|
|
|
|
|
### 4.1 Redux Store 设计
|
|
|
|
|
|
```javascript
|
|
|
// store/index.js
|
|
|
import { configureStore } from '@reduxjs/toolkit';
|
|
|
import futuresReducer from './futuresSlice';
|
|
|
|
|
|
const store = configureStore({
|
|
|
reducer: {
|
|
|
futures: futuresReducer
|
|
|
}
|
|
|
});
|
|
|
|
|
|
export default store;
|
|
|
```
|
|
|
|
|
|
### 4.2 状态切片
|
|
|
|
|
|
#### futuresSlice.js
|
|
|
|
|
|
- **状态结构**:
|
|
|
- `overview`:市场概览数据
|
|
|
- `selectedFuture`:当前选中的合约详情
|
|
|
- `riskAlerts`:风险预警数据
|
|
|
- `aiAnalysis`:AI市场分析数据
|
|
|
- `loading`:加载状态
|
|
|
- `error`:错误信息
|
|
|
- `watchlist`:自选合约列表
|
|
|
|
|
|
- **异步操作**:
|
|
|
- `fetchFuturesOverview`:获取市场概览数据
|
|
|
- `fetchFutureDetail`:获取单个合约详情
|
|
|
- `fetchRiskAlerts`:获取风险预警数据
|
|
|
- `fetchAIMarketAnalysis`:获取AI市场分析数据
|
|
|
|
|
|
- **同步操作**:
|
|
|
- `selectFuture`:选择合约
|
|
|
- `clearSelectedFuture`:清除选中合约
|
|
|
- `toggleWatchlist`:切换自选合约状态
|
|
|
|
|
|
## 5. API 调用
|
|
|
|
|
|
### 5.1 后端 API 接口
|
|
|
|
|
|
| API路径 | 方法 | 功能 |
|
|
|
|---------|------|------|
|
|
|
| `/api/market/overview` | GET | 获取市场概览数据 |
|
|
|
| `/api/market/detail/:code` | GET | 获取合约详情数据 |
|
|
|
| `/api/market/klines/:code` | GET | 获取合约K线数据 |
|
|
|
| `/api/market/alerts` | GET | 获取风险预警数据 |
|
|
|
| `/api/config/get` | GET | 获取系统配置 |
|
|
|
| `/api/config/save` | POST | 保存系统配置 |
|
|
|
| `/api/config/test-database` | POST | 测试数据库连接 |
|
|
|
| `/api/config/test-datasource` | POST | 测试数据源连接 |
|
|
|
|
|
|
### 5.2 前端 API 调用封装
|
|
|
|
|
|
```javascript
|
|
|
// 后端API基础URL
|
|
|
const API_BASE_URL = 'http://localhost:3007/api';
|
|
|
|
|
|
// 异步获取期货概览数据
|
|
|
export const fetchFuturesOverview = createAsyncThunk(
|
|
|
'futures/fetchOverview',
|
|
|
async () => {
|
|
|
const response = await fetch(`${API_BASE_URL}/market/overview`);
|
|
|
if (!response.ok) {
|
|
|
throw new Error('获取市场概览失败');
|
|
|
}
|
|
|
const data = await response.json();
|
|
|
return data.data;
|
|
|
}
|
|
|
);
|
|
|
```
|
|
|
|
|
|
## 6. 用户交互流程
|
|
|
|
|
|
### 6.1 市场概览流程
|
|
|
|
|
|
1. 用户进入系统,看到市场概览页面
|
|
|
2. 系统自动加载市场概览数据、风险预警和AI市场分析
|
|
|
3. 用户可以:
|
|
|
- 刷新数据
|
|
|
- 按类型筛选合约
|
|
|
- 按胜率、涨跌幅或波动率排序
|
|
|
- 点击合约查看详情
|
|
|
- 添加合约到自选
|
|
|
- 配置消息推送
|
|
|
|
|
|
### 6.2 合约详情流程
|
|
|
|
|
|
1. 用户从市场概览或自选列表点击合约进入详情页
|
|
|
2. 系统加载合约详情数据和K线数据
|
|
|
3. 用户可以:
|
|
|
- 切换不同时间周期的K线图
|
|
|
- 切换不同的技术指标
|
|
|
- 查看技术指标数据
|
|
|
- 查看多周期趋势
|
|
|
- 查看AI研判结果
|
|
|
- 查看交易建议和风险评估
|
|
|
|
|
|
### 6.3 自选合约流程
|
|
|
|
|
|
1. 用户进入自选合约页面
|
|
|
2. 系统显示用户添加的自选合约列表
|
|
|
3. 用户可以:
|
|
|
- 刷新数据
|
|
|
- 查看合约详情
|
|
|
- 从自选中移除合约
|
|
|
- 配置消息推送
|
|
|
|
|
|
### 6.4 风控管理流程
|
|
|
|
|
|
1. 用户进入风控管理页面
|
|
|
2. 用户可以:
|
|
|
- 设置止损策略
|
|
|
- 计算仓位大小
|
|
|
- 设置风险偏好
|
|
|
- 查看换月预警
|
|
|
- 查看风险监控指标
|
|
|
|
|
|
### 6.5 配置管理流程
|
|
|
|
|
|
1. 用户进入配置管理页面
|
|
|
2. 用户可以:
|
|
|
- 调整系统参数
|
|
|
- 配置消息推送方式和内容
|
|
|
|
|
|
### 6.6 管理配置流程
|
|
|
|
|
|
1. 管理员进入管理配置页面
|
|
|
2. 管理员可以:
|
|
|
- 配置数据库连接
|
|
|
- 配置服务器参数
|
|
|
- 配置安全设置
|
|
|
- 配置数据源
|
|
|
- 测试连接
|
|
|
- 保存配置
|
|
|
|
|
|
## 7. 响应式设计
|
|
|
|
|
|
- **桌面端**:完整布局,左侧菜单展开
|
|
|
- **平板端**:左侧菜单可折叠,内容区域自适应
|
|
|
- **移动端**:底部导航栏,顶部状态栏,内容区域全屏
|
|
|
|
|
|
## 8. 深色模式
|
|
|
|
|
|
- **实现方式**:使用 Ant Design 的 ConfigProvider 和 CSS 变量
|
|
|
- **切换方式**:顶部导航栏的深色模式切换开关
|
|
|
- **效果**:全局界面元素的颜色和背景色随模式切换
|
|
|
|
|
|
## 9. 性能优化
|
|
|
|
|
|
### 9.1 代码分割
|
|
|
|
|
|
- 使用 React.lazy 和 Suspense 实现组件懒加载
|
|
|
- 按路由分割代码,减少初始加载时间
|
|
|
|
|
|
### 9.2 数据缓存
|
|
|
|
|
|
- 使用 Redux 缓存已获取的数据
|
|
|
- 避免重复请求相同数据
|
|
|
|
|
|
### 9.3 图表优化
|
|
|
|
|
|
- 使用 Lightweight Charts 高性能图表库
|
|
|
- 按需加载图表数据
|
|
|
- 优化图表渲染性能
|
|
|
|
|
|
## 10. 错误处理
|
|
|
|
|
|
- **API 错误处理**:捕获并显示 API 调用错误
|
|
|
- **图表错误处理**:当图表渲染失败时显示错误信息
|
|
|
- **数据加载状态**:使用 Spin 组件显示加载状态
|
|
|
- **边界情况**:处理空数据、无效参数等边界情况
|
|
|
|
|
|
## 11. 开发和部署
|
|
|
|
|
|
### 11.1 开发环境
|
|
|
|
|
|
- **启动命令**:`npm run dev`
|
|
|
- **开发服务器**:http://localhost:5173
|
|
|
- **API 代理**:配置代理到后端服务 http://localhost:3007
|
|
|
|
|
|
### 11.2 构建和部署
|
|
|
|
|
|
- **构建命令**:`npm run build`
|
|
|
- **构建产物**:`dist` 目录
|
|
|
- **部署方式**:可部署到任何静态文件服务器
|
|
|
|
|
|
## 12. 功能特性总结
|
|
|
|
|
|
| 功能 | 描述 | 实现方式 |
|
|
|
|------|------|----------|
|
|
|
| 市场概览 | 展示所有合约的基本信息和热点合约 | Redux + API调用 + 响应式布局 |
|
|
|
| 合约详情 | 展示合约的K线图、技术指标和AI研判 | Lightweight Charts + 技术指标计算 |
|
|
|
| 自选合约 | 管理用户关注的合约 | Redux状态管理 |
|
|
|
| 风控管理 | 风险管理和仓位计算 | 表单计算 + 数据展示 |
|
|
|
| 配置管理 | 系统配置和消息推送配置 | 表单 + 本地存储 |
|
|
|
| 管理配置 | 数据库、服务器和数据源配置 | 表单 + API调用 |
|
|
|
| 深色模式 | 支持深色和浅色主题切换 | Ant Design ConfigProvider |
|
|
|
| 响应式设计 | 适配不同屏幕尺寸 | CSS媒体查询 + Flexbox |
|
|
|
| 性能优化 | 代码分割和数据缓存 | React.lazy + Redux缓存 |
|
|
|
| 错误处理 | 完善的错误处理和边界情况 | 错误捕获 + 友好提示 |
|
|
|
|
|
|
## 13. 技术亮点
|
|
|
|
|
|
1. **模块化设计**:清晰的代码结构和组件划分
|
|
|
2. **高性能图表**:使用 Lightweight Charts 实现流畅的K线图表
|
|
|
3. **AI 集成**:集成AI市场分析和预测功能
|
|
|
4. **实时数据**:通过WebSocket获取实时市场数据
|
|
|
5. **响应式布局**:适配各种设备屏幕
|
|
|
6. **深色模式**:支持深色和浅色主题
|
|
|
7. **完善的风控**:提供全面的风险管理工具
|
|
|
8. **消息推送**:多渠道消息推送配置
|
|
|
9. **性能优化**:代码分割和数据缓存
|
|
|
10. **错误处理**:友好的错误提示和边界情况处理
|
|
|
|
|
|
## 14. 未来扩展
|
|
|
|
|
|
1. **用户系统**:添加用户登录、注册和权限管理
|
|
|
2. **交易系统**:集成交易功能,支持下单和撤单
|
|
|
3. **策略回测**:添加策略回测功能,评估交易策略
|
|
|
4. **更多数据源**:支持更多数据源,如Wind、新浪财经等
|
|
|
5. **更多技术指标**:添加更多技术指标和分析工具
|
|
|
6. **移动应用**:开发iOS和Android移动应用
|
|
|
7. **数据可视化**:增强数据可视化效果,添加更多图表类型
|
|
|
8. **智能投顾**:基于AI的智能投资顾问功能
|