# 知识库页面后端接口清单 本文对应前端页面:[RagStoresPage.vue](/D:/Code/common_agent/frontend/src/pages/RagStoresPage.vue) ## 1. 页面目标 知识库页面采用: - 顶部 4 张全局统计卡片 - 左侧知识库名称搜索与列表 - 右侧当前知识库详情 - 当前知识库级别操作:编辑、批量导入文件、重建索引 因此接口建议拆成 `全局概览`、`知识库列表/详情`、`单库动作` 三组。 ## 2. 本批已实现并已用于前端联调的接口 ### 2.1 查询全部知识库 - `GET /api/rag/stores` 当前返回类型: - `RequestResult>` 当前字段: - `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` ### 2.4 新增或修改知识库 - `POST /api/rag/stores` 请求体: ```json { "id": 1, "storeCode": "PROD_DOC", "storeName": "产品制度库", "description": "产品制度、业务规范、流程材料", "status": "启用", "remark": "核心制度库" } ``` 返回类型: - `RequestResult` 说明: - `id` 为空时新增 - `id` 不为空时修改 ### 2.5 删除知识库 - `DELETE /api/rag/stores/{id}` 返回类型: - `RequestResult` ## 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`