feat(admin): Implement Prompt knowledge base integration

Features:

- PromptService enhancement: enhanceWithKnowledge(), loadFullKnowledge(), ragSearch()

- FULL mode: Load entire knowledge base content

- RAG mode: Vector search based on user query

- Knowledge config API: PUT /:code/knowledge-config

- Test render with knowledge injection support

- Frontend: Knowledge config UI in Prompt editor

Bug fixes:

- Fix knowledge config not returned in getPromptDetail

- Fix publish button 400 error (empty request body)

- Fix cache not invalidated after publish

- Add detailed logging for debugging

Documentation:

- Add development record 2026-01-28

- Update ADMIN module status to Phase 4.6

- Update system status document to v4.5

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-02-01 20:26:20 +08:00
parent 0d9e6b9922
commit aaa29ea9d3
15 changed files with 1459 additions and 26 deletions

View File

@@ -1,22 +1,23 @@
# AIclinicalresearch 系统当前状态与开发指南
> **文档版本:** v4.4
> **文档版本:** v4.5
> **创建日期:** 2025-11-28
> **维护者:** 开发团队
> **最后更新:** 2026-01-27
> **最后更新:** 2026-01-28
> **🎉 重大里程碑:**
> - **2026-01-28Prompt 知识库集成完成!** Prompt 可动态引用系统知识库内容
> - **2026-01-27系统知识库管理功能完成** 运营管理端新增知识库管理+文档上传下载
> - **2026-01-25Protocol Agent MVP完整交付** 一键生成研究方案+Word导出
> - **2026-01-24Protocol Agent 框架完成!** 可复用Agent框架+5阶段对话流程
> - **2026-01-22OSS 存储集成完成!** 阿里云 OSS 正式接入平台基础层
> - **2026-01-21成功替换 Dify** PKB 模块完全使用自研 pgvector RAG 引擎
>
> **最新进展(系统知识库管理 2026-01-27**
> - ✅ **系统知识库管理**:运营管理端新增知识库模块,支持 Prompt 引用
> - ✅ **主从页面模式**Master-Detail UX卡片列表+文档管理表格
> - ✅ **文档管理**:上传(单个/批量)、下载(保留原始文件名)、删除
> - ✅ **RAG 引擎集成**:文档解析、分块、向量化存储
> - ✅ **OSS 存储集成**system/knowledge-bases/{kbId}/{docId} 路径
> **最新进展(Prompt 知识库集成 2026-01-28**
> - ✅ **PromptService 增强**:支持 FULL/RAG 两种知识库注入模式
> - ✅ **配置界面**Prompt 编辑器右侧面板配置知识库增强
> - ✅ **测试渲染**:预览知识库注入效果
> - ✅ **发布即生效**:发布后业务端立即使用知识库增强
> - ✅ **Bug 修复**:配置保存、发布按钮、缓存清除等问题
>
> **部署状态:** ✅ 生产环境运行中 | 公网地址http://8.140.53.236/
> **文档目的:** 快速了解系统当前状态为新AI助手提供上下文
@@ -59,7 +60,7 @@
| **SSA** | 智能统计分析 | 队列/预测模型/RCT分析 | ⭐⭐⭐⭐⭐ | 📋 规划中 | P2 |
| **ST** | 统计分析工具 | 100+轻量化统计工具 | ⭐⭐⭐⭐ | 📋 规划中 | P2 |
| **RVW** | 稿件审查系统 | 方法学评估、审稿流程、Word导出 | ⭐⭐⭐⭐ | ✅ **开发完成95%** | P3 |
| **ADMIN** | 运营管理端 | Prompt管理、租户管理、用户管理、运营监控、系统知识库 | ⭐⭐⭐⭐⭐ | 🎉 **Phase 4.5完成85%** - 系统知识库管理+文档上传下载 | **P0** |
| **ADMIN** | 运营管理端 | Prompt管理、租户管理、用户管理、运营监控、系统知识库 | ⭐⭐⭐⭐⭐ | 🎉 **Phase 4.6完成88%** - Prompt知识库集成+动态注入 | **P0** |
---

View File

@@ -1,8 +1,8 @@
# ADMIN-运营管理端 - 模块当前状态与开发指南
> **最后更新:** 2026-01-27
> **状态:** ✅ Phase 4.5 系统知识库管理功能完成!
> **版本:** v0.7 (Alpha)
> **最后更新:** 2026-01-28
> **状态:** ✅ Phase 4.6 Prompt 知识库集成功能完成!
> **版本:** v0.8 (Alpha)
---
@@ -123,6 +123,18 @@
- [x] 前端主从页面模式Master-Detail UX
- [x] 功能:文档上传(单个/批量)、下载(保留原始文件名)、删除
**Phase 4.6Prompt 知识库集成** ✅ 已完成2026-01-28🎉
- [x] 后端PromptService 知识库增强(`enhanceWithKnowledge()`
- [x] 后端FULL 模式全量加载(`loadFullKnowledge()`
- [x] 后端RAG 模式向量检索(`ragSearch()`
- [x] 后端:知识库配置保存 API`PUT /:code/knowledge-config`
- [x] 后端:测试渲染支持知识库注入(`getEnhancedVariables()`
- [x] 前端:知识库配置 UI开关、选择器、参数配置
- [x] 前端:测试渲染预览知识库效果
- [x] 修复:知识库配置保存/加载问题
- [x] 修复:发布按钮 400 错误
- [x] 修复:发布后缓存未清除问题
### ⏳ 待开发(按优先级)
**P2 - 用户管理增强(可选)**

View File

@@ -0,0 +1,150 @@
# 2026-01-28 Prompt 知识库集成功能完成
## 开发概述
完成了 Prompt 管理系统与知识库的集成,支持在 Prompt 中动态引用系统知识库内容,实现知识增强的 AI 对话能力。
---
## 功能清单
### 1. PromptService 知识库增强
**后端核心改造** (`backend/src/common/prompt/`)
| 文件 | 改动 | 说明 |
|------|------|------|
| `prompt.types.ts` | 新增类型 | `KnowledgeConfig`, `InjectionMode` 类型定义 |
| `prompt.service.ts` | 核心逻辑 | `enhanceWithKnowledge()`, `loadFullKnowledge()`, `ragSearch()` |
| `prompt.controller.ts` | API 增强 | `saveKnowledgeConfig`, `testRender` 支持知识库 |
| `prompt.routes.ts` | 路由 | `PUT /:code/knowledge-config` |
**知识库注入模式**
- **FULL 模式**:全量加载知识库内容(适合小型核心知识库)
- **RAG 模式**:基于用户查询进行向量检索(适合大型知识库)
### 2. 前端配置界面
**Prompt 编辑器增强** (`frontend-v2/src/pages/admin/`)
| 功能 | 说明 |
|------|------|
| 知识库增强开关 | 启用/禁用知识库注入 |
| 知识库选择 | 多选系统知识库(下拉列表) |
| 注入模式选择 | FULL / RAG 模式 |
| 目标变量配置 | 指定注入到哪个模板变量(默认 `context` |
| RAG 参数配置 | `top_k`, `min_score` |
| FULL 参数配置 | `max_tokens` 限制 |
| 测试渲染增强 | 预览知识库注入效果 |
### 3. Bug 修复
| 问题 | 原因 | 解决方案 |
|------|------|---------|
| 测试渲染不注入知识库 | `testRender` API 不支持知识库增强 | 添加 `getEnhancedVariables()` 公共方法 |
| 知识库配置不保存 | `getPromptDetail` 返回缺少 `knowledge_config` | 添加字段到返回数据 |
| 发布按钮 400 错误 | POST 请求体问题 | 添加空对象作为请求体 |
| 发布后第一次不生效 | 脚本发布未清除缓存 | 使用前端发布,正确调用 `invalidateCache()` |
---
## 代码统计
| 类型 | 文件数 | 新增行数 | 修改行数 |
|------|--------|---------|---------|
| 后端 TypeScript | 4 | ~200 | ~50 |
| 前端 TypeScript | 2 | ~150 | ~30 |
| 测试脚本 | 5 | ~500 | - |
---
## 技术亮点
### 1. 知识库增强流程
```
promptService.get(code, variables, { userId, userQuery })
获取 template.knowledge_config
enhanceWithKnowledge()
┌─────────────────────────────────────┐
│ FULL 模式 │ RAG 模式 │
│ loadFullKnowledge()│ ragSearch() │
│ 加载全部分块 │ 向量检索 top_k │
└─────────────────────────────────────┘
注入到 variables.context
render(template, enhancedVariables)
```
### 2. 配置数据结构
```typescript
interface KnowledgeConfig {
enabled: boolean; // 是否启用
kb_codes: string[]; // 知识库代码列表
injection_mode: 'FULL' | 'RAG'; // 注入模式
target_variable: string; // 目标变量名(默认 context
// RAG 模式参数
top_k?: number; // 返回结果数
min_score?: number; // 最低相似度
// FULL 模式参数
max_tokens?: number; // Token 数限制
}
```
### 3. 版本发布与缓存
- 发布时自动清除版本缓存
- 知识库配置存储在 `prompt_templates.knowledge_config` (JSONB)
- 每次请求从数据库读取最新配置(无配置缓存)
---
## 使用指南
### 1. 配置知识库增强
1. 进入 **运营管理端 → Prompt管理**
2. 选择需要增强的 Prompt
3. 右侧面板 → **📚 知识库增强**
4. 开启开关,选择知识库
5. 点击 **保存配置**
### 2. 在 Prompt 中使用
在 Prompt 模板中使用 `{{context}}` 变量:
```
你是一个专业的临床研究方法学专家。
【参考知识库】
{{context}}
请基于以上参考资料回答用户问题。
```
### 3. 测试验证
1. 点击 **测试渲染** 预览效果
2. 开启 **调试模式** 在业务端测试
3. 确认无误后 **发布** 到生产
---
## 后续优化建议
1. **配置缓存**:知识库配置可考虑添加短期缓存
2. **RAG 优化**:支持更多检索参数(如 rerank
3. **批量配置**:支持批量为多个 Prompt 配置知识库
4. **使用统计**:记录知识库引用次数和效果反馈
---
## 相关文档
- [系统知识库管理功能完成](./2026-01-27_系统知识库管理功能完成.md)
- [Prompt 知识库集成开发计划](../04-开发计划/05-Prompt知识库集成开发计划.md)