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

242 lines
6.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 监控统计数据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. 登录失败次数过多时,需要输入验证码