AssetManager.UniApp/API_DOCUMENTATION.md
fanfpy bc48e8f7a3 feat: 初始化项目并添加基础功能
- 添加uni-ui组件库依赖
- 实现微信静默登录功能
- 创建资产、策略、我的等核心页面
- 添加策略组合配置功能
- 实现持仓详情展示
- 完善用户信息展示
- 添加全局样式和工具类
- 配置小程序项目设置
2026-02-18 20:51:42 +08:00

709 lines
15 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 个人资产策略管理系统 - 后端API文档
## 文档概述
本文档定义了个人资产策略管理系统的后端API接口规范包括资产管理、策略管理、用户管理等功能模块的API接口。前端通过这些接口与后端进行数据交互实现完整的业务功能。
## 基础信息
### 基础URL
```
https://api.demo.com
```
### 认证方式
- **Bearer Token**:在请求头中添加 `Authorization: Bearer <token>`
- **Token获取**通过登录接口获取有效期为24小时
### 响应格式
所有API接口返回统一的JSON格式
```json
{
"code": 200, // 状态码200表示成功其他表示错误
"data": {}, // 响应数据,根据接口不同返回不同结构
"message": "success" // 响应消息,错误时返回错误信息
}
```
### 状态码说明
| 状态码 | 描述 |
|-------|------|
| 200 | 成功 |
| 400 | 请求参数错误 |
| 401 | 未授权 |
| 403 | 禁止访问 |
| 404 | 资源不存在 |
| 500 | 服务器内部错误 |
## API接口列表
### 1. 资产相关API
#### 1.1 获取总资产数据
**接口**`GET /api/assets`
**请求参数**:无
**响应参数**
| 字段名 | 类型 | 描述 |
|-------|------|------|
| totalValue | number | 总资产估值CNY |
| todayProfit | number | 今日盈亏CNY |
| totalReturnRate | number | 累计收益率(% |
**示例响应**
```json
{
"code": 200,
"data": {
"totalValue": 1284592.40,
"todayProfit": 12482.00,
"totalReturnRate": 24.82
},
"message": "success"
}
```
#### 1.2 获取持仓组合数据
**接口**`GET /api/holdings`
**请求参数**:无
**响应参数**
| 字段名 | 类型 | 描述 |
|-------|------|------|
| id | string | 持仓组合ID |
| name | string | 持仓组合名称 |
| tags | string | 持仓组合标签 |
| status | string | 状态(监控中/等待信号) |
| statusType | string | 状态类型green/gray |
| iconChar | string | 图标字符 |
| iconBgClass | string | 图标背景样式类 |
| iconTextClass | string | 图标文本样式类 |
| value | number | 当前市值CNY |
| returnRate | number | 累计收益率(% |
| returnType | string | 收益类型positive/negative |
**示例响应**
```json
{
"code": 200,
"data": [
{
"id": "hfea-001",
"name": "美股全天候杠杆",
"tags": "HFEA · 季度调仓",
"status": "监控中",
"statusType": "green",
"iconChar": "H",
"iconBgClass": "bg-green-100",
"iconTextClass": "text-green-700",
"value": 156240.00,
"returnRate": 42.82,
"returnType": "positive"
},
{
"id": "ma-002",
"name": "纳指双均线趋势",
"tags": "趋势跟踪 · 日线",
"status": "等待信号",
"statusType": "gray",
"iconChar": "T",
"iconBgClass": "bg-blue-100",
"iconTextClass": "text-blue-700",
"value": 412500.00,
"returnRate": -1.79,
"returnType": "negative"
}
],
"message": "success"
}
```
### 2. 策略相关API
#### 2.1 获取策略列表
**接口**`GET /api/strategies`
**请求参数**:无
**响应参数**
| 字段名 | 类型 | 描述 |
|-------|------|------|
| id | string | 策略ID |
| iconChar | string | 图标字符 |
| title | string | 策略标题 |
| tag | string | 策略标签 |
| desc | string | 策略描述 |
| bgClass | string | 背景样式类 |
| tagClass | string | 标签样式类 |
| tags | array<string> | 策略标签数组 |
| btnText | string | 按钮文本 |
| btnClass | string | 按钮样式类 |
**示例响应**
```json
{
"code": 200,
"data": [
{
"id": "hfea",
"iconChar": "H",
"title": "HFEA 风险平价策略",
"tag": "高风险 · 高预期收益",
"desc": "针对杠杆ETF平衡的对冲策略核心逻辑为 TMF (3x长债) 与 UPRO (3x标普) 的季度平衡。",
"bgClass": "bg-emerald-900",
"tagClass": "text-emerald-700",
"tags": ["季调", "止损机制"],
"btnText": "配置参数",
"btnClass": "btn-primary"
},
{
"id": "ma",
"iconChar": "T",
"title": "双均线趋势跟随",
"tag": "中风险 · 低回撤要求",
"desc": "利用快线EMA10上穿慢线EMA60捕捉强势波段金叉买入死叉离场。",
"bgClass": "bg-blue-600",
"tagClass": "text-blue-700",
"tags": ["日线", "左侧止盈"],
"btnText": "预览模型",
"btnClass": "btn-secondary"
}
],
"message": "success"
}
```
#### 2.2 获取单个策略详情
**接口**`GET /api/strategies/{id}`
**请求参数**
| 参数名 | 类型 | 位置 | 描述 |
|-------|------|------|------|
| id | string | 路径参数 | 策略ID |
**响应参数**
| 字段名 | 类型 | 描述 |
|-------|------|------|
| id | string | 策略ID |
| iconChar | string | 图标字符 |
| title | string | 策略标题 |
| tag | string | 策略标签 |
| desc | string | 策略描述 |
| bgClass | string | 背景样式类 |
| tagClass | string | 标签样式类 |
| tags | array<string> | 策略标签数组 |
| parameters | object | 策略参数配置 |
| backtest | object | 回测数据 |
**示例响应**
```json
{
"code": 200,
"data": {
"id": "hfea",
"iconChar": "H",
"title": "HFEA 风险平价策略",
"tag": "高风险 · 高预期收益",
"desc": "针对杠杆ETF平衡的对冲策略核心逻辑为 TMF (3x长债) 与 UPRO (3x标普) 的季度平衡。",
"bgClass": "bg-emerald-900",
"tagClass": "text-emerald-700",
"tags": ["季调", "止损机制"],
"parameters": {
"tmfRatio": 0.55,
"uproRatio": 0.45,
"rebalanceInterval": "quarterly",
"stopLoss": 0.2
},
"backtest": {
"totalReturn": 1.85,
"maxDrawdown": 0.32,
"sharpeRatio": 0.87,
"winRate": 0.58
}
},
"message": "success"
}
```
#### 2.3 创建新策略
**接口**`POST /api/strategies`
**请求参数**
| 字段名 | 类型 | 描述 | 必填 |
|-------|------|------|------|
| title | string | 策略标题 | 是 |
| tag | string | 策略标签 | 是 |
| desc | string | 策略描述 | 是 |
| tags | array<string> | 策略标签数组 | 是 |
| parameters | object | 策略参数配置 | 是 |
| iconChar | string | 图标字符 | 否 |
| bgClass | string | 背景样式类 | 否 |
| tagClass | string | 标签样式类 | 否 |
**示例请求**
```json
{
"title": "自定义策略",
"tag": "中风险 · 自定义",
"desc": "基于移动平均线的趋势策略",
"tags": ["日线", "趋势跟踪"],
"parameters": {
"fastPeriod": 10,
"slowPeriod": 60,
"stopLoss": 0.15
},
"iconChar": "C",
"bgClass": "bg-purple-600",
"tagClass": "text-purple-700"
}
```
**响应参数**
| 字段名 | 类型 | 描述 |
|-------|------|------|
| id | string | 新创建的策略ID |
| title | string | 策略标题 |
| status | string | 创建状态 |
**示例响应**
```json
{
"code": 200,
"data": {
"id": "custom-001",
"title": "自定义策略",
"status": "created"
},
"message": "success"
}
```
#### 2.4 更新策略
**接口**`PUT /api/strategies/{id}`
**请求参数**
| 参数名 | 类型 | 位置 | 描述 |
|-------|------|------|------|
| id | string | 路径参数 | 策略ID |
**请求体**
| 字段名 | 类型 | 描述 | 必填 |
|-------|------|------|------|
| title | string | 策略标题 | 否 |
| tag | string | 策略标签 | 否 |
| desc | string | 策略描述 | 否 |
| tags | array<string> | 策略标签数组 | 否 |
| parameters | object | 策略参数配置 | 否 |
**示例请求**
```json
{
"title": "更新后的策略",
"parameters": {
"tmfRatio": 0.6,
"uproRatio": 0.4
}
}
```
**响应参数**
| 字段名 | 类型 | 描述 |
|-------|------|------|
| id | string | 策略ID |
| status | string | 更新状态 |
**示例响应**
```json
{
"code": 200,
"data": {
"id": "hfea",
"status": "updated"
},
"message": "success"
}
```
#### 2.5 删除策略
**接口**`DELETE /api/strategies/{id}`
**请求参数**
| 参数名 | 类型 | 位置 | 描述 |
|-------|------|------|------|
| id | string | 路径参数 | 策略ID |
**响应参数**
| 字段名 | 类型 | 描述 |
|-------|------|------|
| id | string | 策略ID |
| status | string | 删除状态 |
**示例响应**
```json
{
"code": 200,
"data": {
"id": "custom-001",
"status": "deleted"
},
"message": "success"
}
```
### 3. 用户相关API
#### 3.1 获取用户信息
**接口**`GET /api/user/info`
**请求参数**:无
**响应参数**
| 字段名 | 类型 | 描述 |
|-------|------|------|
| userName | string | 用户名 |
| memberLevel | string | 会员等级 |
| runningDays | number | 连续运行天数 |
| avatar | string | 头像URL |
| email | string | 邮箱 |
**示例响应**
```json
{
"code": 200,
"data": {
"userName": "首席策略员 0x42",
"memberLevel": "全球实验室 Pro",
"runningDays": 412,
"avatar": "https://example.com/avatar.png",
"email": "user@example.com"
},
"message": "success"
}
```
#### 3.2 获取用户统计数据
**接口**`GET /api/user/stats`
**请求参数**:无
**响应参数**
| 字段名 | 类型 | 描述 |
|-------|------|------|
| signalsCaptured | number | 已捕获信号数量 |
| winRate | number | 模拟胜率(% |
| totalTrades | number | 总交易次数 |
| averageProfit | number | 平均收益(% |
**示例响应**
```json
{
"code": 200,
"data": {
"signalsCaptured": 1248,
"winRate": 58.4,
"totalTrades": 2138,
"averageProfit": 2.3
},
"message": "success"
}
```
#### 3.3 更新用户信息
**接口**`PUT /api/user/info`
**请求参数**
| 字段名 | 类型 | 描述 | 必填 |
|-------|------|------|------|
| userName | string | 用户名 | 否 |
| avatar | string | 头像URL | 否 |
| email | string | 邮箱 | 否 |
**示例请求**
```json
{
"userName": "策略大师 0x42",
"email": "newemail@example.com"
}
```
**响应参数**
| 字段名 | 类型 | 描述 |
|-------|------|------|
| status | string | 更新状态 |
| userName | string | 更新后的用户名 |
**示例响应**
```json
{
"code": 200,
"data": {
"status": "updated",
"userName": "策略大师 0x42"
},
"message": "success"
}
```
### 4. 应用相关API
#### 4.1 获取应用信息
**接口**`GET /api/app/info`
**请求参数**:无
**响应参数**
| 字段名 | 类型 | 描述 |
|-------|------|------|
| version | string | 应用版本 |
| currentDate | string | 当前日期YYYY-MM-DD |
| latestVersion | string | 最新版本 |
| updateAvailable | boolean | 是否有更新 |
**示例响应**
```json
{
"code": 200,
"data": {
"version": "v2.4.0",
"currentDate": "2026-02-16",
"latestVersion": "v2.4.0",
"updateAvailable": false
},
"message": "success"
}
```
## 5. 认证相关API
#### 5.1 用户登录
**接口**`POST /api/auth/login`
**请求参数**
| 字段名 | 类型 | 描述 | 必填 |
|-------|------|------|------|
| email | string | 邮箱 | 是 |
| password | string | 密码 | 是 |
**示例请求**
```json
{
"email": "user@example.com",
"password": "password123"
}
```
**响应参数**
| 字段名 | 类型 | 描述 |
|-------|------|------|
| token | string | 认证令牌 |
| expireAt | string | 令牌过期时间 |
| user | object | 用户基本信息 |
**示例响应**
```json
{
"code": 200,
"data": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"expireAt": "2026-02-17T10:00:00Z",
"user": {
"userName": "首席策略员 0x42",
"memberLevel": "全球实验室 Pro"
}
},
"message": "success"
}
```
#### 5.2 用户注册
**接口**`POST /api/auth/register`
**请求参数**
| 字段名 | 类型 | 描述 | 必填 |
|-------|------|------|------|
| email | string | 邮箱 | 是 |
| password | string | 密码 | 是 |
| userName | string | 用户名 | 是 |
**示例请求**
```json
{
"email": "newuser@example.com",
"password": "password123",
"userName": "新用户"
}
```
**响应参数**
| 字段名 | 类型 | 描述 |
|-------|------|------|
| id | string | 用户ID |
| status | string | 注册状态 |
**示例响应**
```json
{
"code": 200,
"data": {
"id": "user-001",
"status": "registered"
},
"message": "success"
}
```
## 6. 部署与集成
### 6.1 环境变量配置
后端服务需要配置以下环境变量:
| 环境变量 | 描述 | 默认值 |
|---------|------|--------|
| PORT | 服务端口 | 3000 |
| DATABASE_URL | 数据库连接URL | - |
| JWT_SECRET | JWT密钥 | - |
| JWT_EXPIRES_IN | JWT过期时间 | 24h |
| CORS_ORIGIN | CORS允许的源 | * |
### 6.2 API集成示例
前端使用示例基于之前的API工具类
```javascript
// 导入API工具类
import { api } from '@/utils/api';
// 登录获取token
const login = async (email, password) => {
const response = await api.auth.login({ email, password });
if (response.code === 200) {
// 存储token
localStorage.setItem('token', response.data.token);
return response.data;
}
};
// 获取资产数据
const fetchAssetData = async () => {
const response = await api.assets.getAssetData();
if (response.code === 200) {
return response.data;
}
};
```
## 7. 监控与维护
### 7.1 日志记录
后端服务应记录以下类型的日志:
- 访问日志记录API请求和响应
- 错误日志:记录系统错误和异常
- 业务日志:记录重要的业务操作
### 7.2 健康检查
提供健康检查接口:
**接口**`GET /api/health`
**响应**
```json
{
"status": "healthy",
"timestamp": "2026-02-16T10:00:00Z",
"services": {
"database": "connected",
"cache": "connected"
}
}
```
## 8. 安全考虑
### 8.1 数据安全
- 使用HTTPS加密传输
- 密码使用bcrypt等算法加密存储
- 敏感数据脱敏处理
### 8.2 API安全
- 实现请求频率限制
- 验证请求参数
- 防止SQL注入和XSS攻击
- 定期更新依赖包,修复安全漏洞
## 9. 版本控制
API版本控制采用URL路径前缀方式
```
https://api.demo.com/v1/...
https://api.demo.com/v2/...
```
当API接口发生重大变更时应增加版本号保持向后兼容。
## 10. 总结
本文档定义了个人资产策略管理系统的后端API接口规范覆盖了资产管理、策略管理、用户管理等核心功能模块。后端开发团队应严格按照本文档实现API接口确保与前端的无缝集成。
随着业务的发展API接口可能需要不断调整和扩展文档应及时更新以反映最新的API规范。