UnisKB/监控统计数据API接口文档.md

242 lines
6.4 KiB
Markdown
Raw Permalink Normal View History

# 监控统计数据API接口文档
## 1. 概述
本文档详细描述了AI-RAG系统中用于获取监控统计数据的API接口包括对话统计趋势、Token使用统计和热门问题统计等功能。
## 2. 接口列表
| 接口名称 | URL | 方法 | 功能描述 |
|---------|-----|------|----------|
| 对话统计趋势 | `/api/application/{workspace_id}/{application_id}/stats` | GET | 获取应用的对话相关统计趋势数据 |
| Token使用统计 | `/api/application/{workspace_id}/{application_id}/stats/token-usage` | GET | 获取应用的Token使用统计数据 |
| 热门问题统计 | `/api/application/{workspace_id}/{application_id}/stats/top-questions` | GET | 获取应用的热门问题统计数据 |
## 3. 接口详细说明
### 3.1 对话统计趋势接口
#### 接口信息
- **URL**: `/api/application/{workspace_id}/{application_id}/stats`
- **方法**: GET
- **认证**: Token认证
- **权限**: 需要应用概览读取权限
#### 请求参数
| 参数名 | 位置 | 类型 | 必填 | 描述 |
|--------|------|------|------|------|
| workspace_id | path | string | 是 | 工作空间ID |
| application_id | path | string | 是 | 应用ID |
| start_time | query | string | 是 | 开始时间格式YYYY-MM-DD |
| end_time | query | string | 是 | 结束时间格式YYYY-MM-DD |
#### 响应数据
```json
{
"code": 200,
"message": "success",
"data": [
{
"chat_record_count": 10,
"customer_added_count": 5,
"customer_num": 100,
"day": "2025-01-01",
"star_num": 8,
"tokens_num": 1000,
"trample_num": 2
},
// 更多日期数据...
]
}
```
#### 字段说明
- **chat_record_count**: 对话次数
- **customer_added_count**: 新增用户数
- **customer_num**: 用户总数
- **day**: 日期
- **star_num**: 点赞数
- **tokens_num**: Tokens消耗
- **trample_num**: 踩数
### 3.2 Token使用统计接口
#### 接口信息
- **URL**: `/api/application/{workspace_id}/{application_id}/stats/token-usage`
- **方法**: GET
- **认证**: Token认证
- **权限**: 需要应用概览读取权限
#### 请求参数
| 参数名 | 位置 | 类型 | 必填 | 描述 |
|--------|------|------|------|------|
| workspace_id | path | string | 是 | 工作空间ID |
| application_id | path | string | 是 | 应用ID |
| start_time | query | string | 是 | 开始时间格式YYYY-MM-DD |
| end_time | query | string | 是 | 结束时间格式YYYY-MM-DD |
#### 响应数据
```json
{
"code": 200,
"message": "success",
"data": [
{
"chat_user_id": "user123",
"nick_name": "用户1",
"tokens_num": 5000
},
// 更多用户数据...
]
}
```
#### 字段说明
- **chat_user_id**: 用户ID
- **nick_name**: 用户昵称
- **tokens_num**: 该用户的Token消耗
### 3.3 热门问题统计接口
#### 接口信息
- **URL**: `/api/application/{workspace_id}/{application_id}/stats/top-questions`
- **方法**: GET
- **认证**: Token认证
- **权限**: 需要应用概览读取权限
#### 请求参数
| 参数名 | 位置 | 类型 | 必填 | 描述 |
|--------|------|------|------|------|
| workspace_id | path | string | 是 | 工作空间ID |
| application_id | path | string | 是 | 应用ID |
| start_time | query | string | 是 | 开始时间格式YYYY-MM-DD |
| end_time | query | string | 是 | 结束时间格式YYYY-MM-DD |
#### 响应数据
```json
{
"code": 200,
"message": "success",
"data": [
{
"problem_text": "如何使用MaxKB",
"count": 50
},
// 更多问题数据...
]
}
```
#### 字段说明
- **problem_text**: 问题文本
- **count**: 该问题的出现次数
## 4. 权限说明
所有统计接口都需要以下权限之一:
- 应用概览读取权限
- 工作空间管理角色权限
- 具有应用权限的普通用户角色
- 工作空间管理角色
## 5. 时间范围说明
- 开始时间和结束时间均为必填参数
- 时间格式必须为 `YYYY-MM-DD`
- 系统会自动处理时间范围,包括开始日期的 00:00:00 到结束日期的 23:59:59
## 6. 示例请求
### 6.1 对话统计趋势示例
```bash
curl -X GET "http://localhost:8080/api/application/workspace1/application1/stats?start_time=2025-01-01&end_time=2025-01-31" \
-H "Authorization: Bearer your_token_here"
```
### 6.2 Token使用统计示例
```bash
curl -X GET "http://localhost:8080/api/application/workspace1/application1/stats/token-usage?start_time=2025-01-01&end_time=2025-01-31" \
-H "Authorization: Bearer your_token_here"
```
### 6.3 热门问题统计示例
```bash
curl -X GET "http://localhost:8080/api/application/workspace1/application1/stats/top-questions?start_time=2025-01-01&end_time=2025-01-31" \
-H "Authorization: Bearer your_token_here"
```
## 7. 错误响应
| 错误码 | 描述 |
|--------|------|
| 401 | 未授权Token无效或过期 |
| 403 | 无权限访问该资源 |
| 500 | 应用ID不存在 |
| 500 | 服务器内部错误 |
## 8. 数据来源
- 对话统计数据:来自 `application_chat_record`
- 用户统计数据:来自 `ApplicationChatUserStats`
- Token使用数据来自 `application_chat_record` 表中的 `tokens` 字段
- 热门问题数据:来自 `application_chat_record` 表中的 `problem_text` 字段
## 9. Token获取方式
### 9.1 用户登录获取Token
#### 接口信息
- **URL**: `/api/users/login`
- **方法**: POST
- **认证**: 无需认证
#### 请求参数
| 参数名 | 类型 | 必填 | 描述 |
|--------|------|------|------|
| username | string | 是 | 用户名 |
| password | string | 是 | 密码 |
| captcha | string | 否 | 验证码(登录失败次数超过阈值时需要) |
| encryptedData | string | 否 | 加密数据 |
#### 响应数据
```json
{
"code": 200,
"message": "success",
"data": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
}
```
### 9.2 应用访问令牌
系统还支持应用级别的访问令牌,通过`ApplicationAccessToken`模型生成用于应用间的API调用。
### 9.3 Token使用方式
获取token后在调用其他API接口时需要在请求头中添加
```
Authorization: Bearer your_token_here
```
## 10. 注意事项
1. 统计数据可能存在一定的延迟,因为数据收集和处理需要时间
2. 对于较大的时间范围,响应时间可能会较长
3. 建议合理设置时间范围,避免请求过大的数据集
4. 所有接口都需要有效的Token认证
5. Token有过期时间过期后需要重新获取
6. 登录失败次数过多时,需要输入验证码