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.

355 lines
10 KiB

# 前端开发文档
## 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的智能投资顾问功能