# 前端开发文档

## 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的智能投资顾问功能
