Files
common_agent/rag-store-page-apis.md

435 lines
7.9 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.
# 知识库页面后端接口清单
本文对应前端页面:[RagStoresPage.vue](/D:/Code/common_agent/frontend/src/pages/RagStoresPage.vue)
## 1. 页面目标
知识库页面采用:
- 顶部 4 张全局统计卡片
- 左侧知识库名称搜索与列表
- 右侧当前知识库详情
- 当前知识库级别操作:编辑、批量导入文件、重建索引
因此接口建议拆成 `全局概览``知识库列表/详情``单库动作` 三组。
## 2. 本批已实现并已用于前端联调的接口
### 2.1 查询全部知识库
- `GET /api/rag/stores`
当前返回类型:
- `RequestResult<List<RagStoreResponse>>`
当前字段:
- `id`
- `storeCode`
- `storeName`
- `description`
- `status`
- `remark`
对应代码:
- [RagStoreController.java](/D:/Code/common_agent/src/main/java/com/bruce/rag/controller/RagStoreController.java)
- [RagStoreResponse.java](/D:/Code/common_agent/src/main/java/com/bruce/rag/dto/response/RagStoreResponse.java)
### 2.2 按条件查询知识库
- `POST /api/rag/stores/query`
请求体:
```json
{
"storeCode": "PROD_DOC",
"storeName": "产品制度",
"status": "ENABLED"
}
```
当前支持字段:
- `storeCode`
- `storeName`
- `status`
对应代码:
- [RagStoreQueryRequest.java](/D:/Code/common_agent/src/main/java/com/bruce/rag/dto/request/RagStoreQueryRequest.java)
### 2.3 查询知识库详情
- `GET /api/rag/stores/{id}`
返回类型:
- `RequestResult<RagStoreResponse>`
### 2.4 新增或修改知识库
- `POST /api/rag/stores`
请求体:
```json
{
"id": 1,
"storeCode": "PROD_DOC",
"storeName": "产品制度库",
"description": "产品制度、业务规范、流程材料",
"status": "启用",
"remark": "核心制度库"
}
```
返回类型:
- `RequestResult<Boolean>`
说明:
- `id` 为空时新增
- `id` 不为空时修改
### 2.5 删除知识库
- `DELETE /api/rag/stores/{id}`
返回类型:
- `RequestResult<Boolean>`
## 3. 当前项目里已有但本批前端未联调的接口
### 3.1 查询全部知识文档
- `GET /api/rag/documents`
### 3.2 按条件查询知识文档
- `POST /api/rag/documents/query`
当前可用于按 `storeId` 查询当前知识库下文档。
对应代码:
- [RagDocumentController.java](/D:/Code/common_agent/src/main/java/com/bruce/rag/controller/RagDocumentController.java)
- [RagDocumentQueryRequest.java](/D:/Code/common_agent/src/main/java/com/bruce/rag/dto/request/RagDocumentQueryRequest.java)
## 4. 下一批建议补充的接口
当前已有接口能支撑最基础的列表查询,但还不足以支撑统计卡片、右侧详情聚合和单库动作。建议补下面几个接口。
### 4.1 知识库总览统计
- `GET /api/rag/stores/overview`
用途:
- 顶部 4 张卡片数据
返回建议:
```json
{
"resultcode": "0",
"message": null,
"data": {
"storeCount": 12,
"documentCount": 1286,
"chunkCount": 24390,
"retrievableStoreCount": 9
}
}
```
建议响应 DTO
- `RagStoreOverviewResponse`
字段建议:
- `storeCount`
- `documentCount`
- `chunkCount`
- `retrievableStoreCount`
### 4.2 知识库列表查询增强版
- `POST /api/rag/stores/manage/query`
用途:
- 左侧知识库列表
相比当前 `/query`,建议直接返回列表页需要的摘要字段,避免前端再额外聚合文档数据。
请求体建议:
```json
{
"storeName": "FAQ"
}
```
返回建议:
```json
{
"resultcode": "0",
"message": null,
"data": [
{
"id": 2,
"storeCode": "FAQ",
"storeName": "FAQ知识库",
"description": "常见问题知识沉淀",
"status": "ENABLED",
"documentCount": 58,
"chunkCount": 920,
"indexStatus": "PROCESSING",
"retrievable": true,
"updateTime": "2026-05-21 11:12:00"
}
]
}
```
建议响应 DTO
- `RagStoreManageListResponse`
字段建议:
- `id`
- `storeCode`
- `storeName`
- `description`
- `status`
- `documentCount`
- `chunkCount`
- `indexStatus`
- `retrievable`
- `updateTime`
### 4.3 查询单个知识库详情增强版
- `GET /api/rag/stores/{id}/detail`
用途:
- 右侧详情区
返回建议:
```json
{
"resultcode": "0",
"message": null,
"data": {
"id": 1,
"storeCode": "PROD_DOC",
"storeName": "产品制度库",
"description": "产品制度、业务规范、流程材料",
"status": "ENABLED",
"createTime": "2026-05-03 10:20:00",
"updateTime": "2026-05-21 16:40:00",
"documentCount": 126,
"parseSuccessCount": 120,
"parseFailedCount": 6,
"chunkCount": 3800,
"lastUploadTime": "2026-05-21 15:32:00",
"lastIndexTime": "2026-05-21 15:48:00",
"retrievalMode": "HYBRID",
"embeddingModel": "bge-large-zh",
"chunkSize": 500,
"chunkOverlap": 100,
"topK": 5,
"retrievable": true
}
}
```
建议响应 DTO
- `RagStoreDetailResponse`
### 4.4 新建知识库独立接口
- `POST /api/rag/stores`
请求体建议:
```json
{
"storeCode": "PROD_DOC",
"storeName": "产品制度库",
"description": "产品制度、业务规范、流程材料"
}
```
返回建议:
- 返回新建后的 `id` 或完整 `RagStoreDetailResponse`
建议请求 DTO
- `RagStoreSaveRequest`
### 4.5 编辑知识库独立接口
- `PUT /api/rag/stores/{id}`
请求体建议:
```json
{
"storeCode": "PROD_DOC",
"storeName": "产品制度库",
"description": "产品制度、业务规范、流程材料",
"status": "ENABLED"
}
```
用途:
- 右侧“编辑”按钮
### 4.6 当前知识库批量导入文件
- `POST /api/rag/stores/{id}/documents/import`
用途:
- 右侧“批量导入文件”按钮
建议请求类型:
- `multipart/form-data`
表单字段建议:
- `files`: 文件数组
- `remark`: 批次备注,可选
返回建议:
```json
{
"resultcode": "0",
"message": null,
"data": {
"taskId": 1001,
"storeId": 1,
"fileCount": 12,
"status": "PROCESSING"
}
}
```
建议响应 DTO
- `RagImportTaskResponse`
### 4.7 发起当前知识库重建索引
- `POST /api/rag/stores/{id}/reindex`
用途:
- 右侧“重建索引”按钮
请求体建议:
```json
{
"force": true
}
```
返回建议:
```json
{
"resultcode": "0",
"message": null,
"data": {
"taskId": 1002,
"storeId": 1,
"status": "PROCESSING"
}
}
```
### 4.8 查询当前知识库最近任务
- `GET /api/rag/stores/{id}/tasks?limit=10`
用途:
- 右侧“最近任务”区
返回建议:
```json
{
"resultcode": "0",
"message": null,
"data": [
{
"id": 1002,
"taskType": "REINDEX",
"summary": "全库索引刷新",
"status": "PROCESSING",
"startedAt": "2026-05-21 16:00:00"
},
{
"id": 1001,
"taskType": "IMPORT",
"summary": "12 个文件,制度文档增量导入",
"status": "SUCCESS",
"startedAt": "2026-05-21 15:20:00"
}
]
}
```
建议响应 DTO
- `RagStoreTaskResponse`
## 5. 这页前后端最小联调顺序
如果想尽快把这页从演示版切到真实联调版,建议按下面顺序接:
1. 先复用已有:
- `POST /api/rag/stores/query`
2. 然后新增:
- `GET /api/rag/stores/overview`
- `GET /api/rag/stores/{id}/detail`
3. 再补动作接口:
- `POST /api/rag/stores`
- `PUT /api/rag/stores/{id}`
- `POST /api/rag/stores/{id}/documents/import`
- `POST /api/rag/stores/{id}/reindex`
- `GET /api/rag/stores/{id}/tasks`
## 6. 当前前端实现说明
当前前端页已经按上述页面结构实现,但由于后端尚未提供完整聚合接口,页面中的统计、详情和任务区先以演示数据承载。
后端接口齐备后,前端建议按下面方式替换:
- 统计卡片:改调 `/api/rag/stores/overview`
- 左侧列表:改调 `/api/rag/stores/manage/query`
- 右侧详情:改调 `/api/rag/stores/{id}/detail`
- 批量导入:改调 `/api/rag/stores/{id}/documents/import`
- 重建索引:改调 `/api/rag/stores/{id}/reindex`
- 最近任务:改调 `/api/rag/stores/{id}/tasks`