Files
AIclinicalresearch/docs/03-业务模块/ADMIN-运营管理端/06-开发记录/2026-01-27_系统知识库管理功能完成.md
HaHafeng 0d9e6b9922 feat(admin): Implement System Knowledge Base management module
Features:

- Backend: SystemKbService with full CRUD (knowledge bases + documents)

- Backend: 8 RESTful API endpoints (list/detail/create/update/delete/upload/download)

- Backend: OSS storage integration (system/knowledge-bases/{kbId}/{docId})

- Backend: RAG engine integration (document parsing, chunking, vectorization)

- Frontend: SystemKbListPage with card-based layout

- Frontend: SystemKbDetailPage with document management table

- Frontend: Master-Detail UX pattern for better user experience

- Document upload (single/batch), download (preserving original filename), delete

Technical:

- Database migration for system_knowledge_bases and system_kb_documents tables

- OSSAdapter.getSignedUrl with Content-Disposition for original filename

- Reuse RAG engine from common/rag for document processing

Tested: Local environment verified, all features working
2026-01-28 21:57:44 +08:00

147 lines
4.8 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.
# 2026-01-27 系统知识库管理功能完成
> **开发日期:** 2026-01-27
> **开发者:** AI Assistant
> **状态:** ✅ 功能完整可用
---
## 📋 开发内容
### 系统知识库管理功能System KB
运营管理端新增「系统知识库」模块,供管理员创建和管理公共知识库,支持 Prompt 引用。
---
## ✅ 已完成功能
### 1. 后端 API8 个接口)
| 接口 | 方法 | 路径 | 功能 |
|------|------|------|------|
| 知识库列表 | GET | `/api/v1/admin/system-kb` | 获取所有系统知识库 |
| 知识库详情 | GET | `/api/v1/admin/system-kb/:id` | 获取单个知识库详情 |
| 创建知识库 | POST | `/api/v1/admin/system-kb` | 创建新知识库 |
| 更新知识库 | PATCH | `/api/v1/admin/system-kb/:id` | 更新知识库信息 |
| 删除知识库 | DELETE | `/api/v1/admin/system-kb/:id` | 删除知识库(含所有文档) |
| 文档列表 | GET | `/api/v1/admin/system-kb/:id/documents` | 获取知识库文档列表 |
| 上传文档 | POST | `/api/v1/admin/system-kb/:id/documents` | 上传文档(支持 PDF/Word/TXT |
| 删除文档 | DELETE | `/api/v1/admin/system-kb/:id/documents/:docId` | 删除单个文档 |
| 下载文档 | GET | `/api/v1/admin/system-kb/:id/documents/:docId/download` | 获取文档下载链接 |
**后端文件:**
- `backend/src/modules/admin/system-kb/systemKbService.ts` - 核心业务逻辑
- `backend/src/modules/admin/system-kb/systemKbController.ts` - 请求处理
- `backend/src/modules/admin/system-kb/systemKbRoutes.ts` - 路由定义
- `backend/src/modules/admin/system-kb/index.ts` - 模块导出
### 2. 前端界面(主从页面模式)
**Master 页面 - 知识库列表**
- 卡片式布局展示所有知识库
- 显示知识库名称、代码、文档数、Token 数
- 支持创建新知识库Modal 弹窗)
- 支持编辑、删除知识库
- 点击卡片进入详情页
**Detail 页面 - 知识库详情**
- 顶部:面包屑导航 + 返回按钮
- 统计卡片文档数、Token 总量
- 文档表格文件名、大小、Token、状态、上传时间、操作
- 支持单个/批量上传文档
- 支持单个/批量删除文档
- 上传进度显示
- 下载文档功能(保留原始文件名)
**前端文件:**
- `frontend-v2/src/modules/admin/pages/SystemKbListPage.tsx` - 列表页
- `frontend-v2/src/modules/admin/pages/SystemKbDetailPage.tsx` - 详情页
- `frontend-v2/src/modules/admin/api/systemKbApi.ts` - API 调用
- `frontend-v2/src/modules/admin/types/systemKb.ts` - 类型定义
### 3. 数据库设计
**表结构:**
- `capability_schema.system_knowledge_bases` - 系统知识库表
- `capability_schema.system_kb_documents` - 知识库文档表
- `ekb_schema.ekb_knowledge_base` - EKB 知识库RAG 引擎)
- `ekb_schema.ekb_document` - EKB 文档(向量化)
- `ekb_schema.ekb_chunk` - 文档分块(向量存储)
### 4. OSS 存储集成
**存储路径:** `system/knowledge-bases/{kbId}/{docId}.{ext}`
**遵循规范:**
- ✅ UUID 命名存储,原始文件名存数据库
- ✅ 签名 URL 下载,支持 Content-Disposition
- ✅ 下载时恢复原始文件名
### 5. RAG 引擎集成
复用 `common/rag/` RAG 引擎能力:
- DocumentIngestService文档解析、分块、向量化
- EmbeddingService文本向量化text-embedding-v4
- 存储到 pgvector 向量数据库
---
## 🔧 技术要点
### 下载功能实现
```typescript
// 使用 OSSAdapter.getSignedUrl 传入原始文件名
const ossAdapter = storage as OSSAdapter;
const url = ossAdapter.getSignedUrl(doc.file_path, 3600, doc.filename);
// 生成的 URL 带有 Content-Disposition 头,浏览器下载时使用原始文件名
```
### 主从页面路由
```typescript
// App.tsx 路由配置
<Route path="system-kb" element={<SystemKbListPage />} />
<Route path="system-kb/:id" element={<SystemKbDetailPage />} />
```
---
## 📊 代码量统计
| 文件类型 | 文件数 | 代码行数(约) |
|---------|--------|---------------|
| 后端 Service | 1 | ~500 行 |
| 后端 Controller | 1 | ~340 行 |
| 后端 Routes | 1 | ~75 行 |
| 前端 ListPage | 1 | ~320 行 |
| 前端 DetailPage | 1 | ~450 行 |
| 前端 API | 1 | ~130 行 |
| 前端 Types | 1 | ~60 行 |
| **合计** | **7** | **~1,875 行** |
---
## 📝 下一步计划
1. **Prompt + 知识库关联**
- 在 Prompt 编辑页添加知识库选择器
- 实现 Prompt 调用时自动 RAG 检索
2. **知识库搜索**
- 添加知识库内全文检索功能
- 语义搜索测试界面
---
## 📚 相关文档
- 开发计划:`docs/03-业务模块/ADMIN-运营管理端/04-开发计划/05-Prompt知识库集成开发计划.md`
- OSS 规范:`docs/04-开发规范/11-OSS存储开发规范.md`
- RAG 引擎:`docs/02-通用能力层/03-RAG引擎/05-RAG引擎使用指南.md`
---
*开发记录完成*