Major Features: - Tenant management CRUD (list, create, edit, delete, module configuration) - Dynamic module management system (modules table with 8 modules) - Multi-tenant module permission merging (ModuleService) - Module access control middleware (requireModule) - User module permission API (GET /api/v1/auth/me/modules) - Frontend module permission filtering (HomePage + TopNavigation) Module Integration: - RVW module integrated with PromptService (editorial + methodology) - All modules (RVW/PKB/ASL/DC) added authenticate + requireModule middleware - Fixed ReviewTask foreign key constraint (cross-schema issue) - Removed all MOCK_USER_ID, unified to request.user?.userId Prompt Management Enhancements: - Module names displayed in Chinese (RVW -> 智能审稿) - Enhanced version history with view content and rollback features - List page shows both activeVersion and draftVersion columns Database Changes: - Added platform_schema.modules table - Modified tenant_modules table (added index and UUID) - Removed ReviewTask foreign key to public.users (cross-schema fix) - Seeded 8 modules: RVW, PKB, ASL, DC, IIT, AIA, SSA, ST Documentation Updates: - Updated ADMIN module development status - Updated TODO checklist (89% progress) - Updated Prompt management plan (Phase 3.5.5 completed) - Added module authentication specification Files Changed: 80+ Status: All features tested and verified locally Next: User management module development
297 lines
8.5 KiB
Markdown
297 lines
8.5 KiB
Markdown
# Phase 3.5 Prompt管理系统 - 完成总结
|
||
|
||
> **完成日期:** 2026-01-11
|
||
> **完成度:** 83%(Phase 3.5.1-3.5.4 已完成)
|
||
> **下一步:** Phase 3.5.5 RVW 模块集成
|
||
|
||
---
|
||
|
||
## 📊 完成概览
|
||
|
||
| 阶段 | 工作量 | 状态 | 完成日期 |
|
||
|------|--------|------|---------|
|
||
| Phase 3.5.1: 基础设施搭建 | 7任务 | ✅ 完成 | 2026-01-11 |
|
||
| Phase 3.5.2: PromptService 核心 | 5任务 | ✅ 完成 | 2026-01-11 |
|
||
| Phase 3.5.3: 管理 API | 8接口 | ✅ 完成 | 2026-01-11 |
|
||
| Phase 3.5.4: 前端管理界面 | 6组件 | ✅ 完成 | 2026-01-11 |
|
||
| Phase 3.5.5: RVW 模块集成 | 3任务 | ⏳ 待开始 | - |
|
||
|
||
---
|
||
|
||
## 🎯 核心成果
|
||
|
||
### 1. 数据库层(capability_schema)
|
||
|
||
**新增表**
|
||
```sql
|
||
-- Prompt 模板表
|
||
capability_schema.prompt_templates
|
||
├── id (主键)
|
||
├── code (唯一标识,如 'RVW_EDITORIAL')
|
||
├── name (人类可读名称)
|
||
├── module (所属模块: RVW, ASL, DC...)
|
||
├── variables (变量列表,JSON)
|
||
└── versions (一对多)
|
||
|
||
-- Prompt 版本表
|
||
capability_schema.prompt_versions
|
||
├── id (主键)
|
||
├── template_id (关联模板)
|
||
├── version (版本号)
|
||
├── content (Prompt 内容,TEXT)
|
||
├── model_config (模型配置,JSON)
|
||
├── status (DRAFT/ACTIVE/ARCHIVED)
|
||
├── changelog (变更说明)
|
||
└── created_by (创建人)
|
||
```
|
||
|
||
**新增权限**
|
||
```
|
||
prompt:view - 查看Prompt
|
||
prompt:edit - 编辑Prompt
|
||
prompt:debug - 调试Prompt
|
||
prompt:publish - 发布Prompt
|
||
```
|
||
|
||
**角色分配**
|
||
- `SUPER_ADMIN`: 全部权限(view + edit + debug + publish)
|
||
- `PROMPT_ENGINEER`: 无 publish(view + edit + debug)
|
||
|
||
**已迁移数据**
|
||
- ✅ RVW_EDITORIAL(稿约规范性评估,5101字符,v1 ACTIVE)
|
||
- ✅ RVW_METHODOLOGY(方法学质量评估,4891字符,v1 ACTIVE)
|
||
|
||
---
|
||
|
||
### 2. 后端服务层
|
||
|
||
**文件清单**
|
||
```
|
||
backend/src/common/prompt/
|
||
├── prompt.types.ts (70行) - 类型定义
|
||
├── prompt.service.ts (596行) - 核心服务 ⭐
|
||
├── prompt.controller.ts (419行) - API控制器
|
||
├── prompt.routes.ts (224行) - 路由定义
|
||
├── prompt.fallbacks.ts (101行) - 兜底Prompt
|
||
└── index.ts (34行) - 模块导出
|
||
```
|
||
|
||
**核心功能**
|
||
|
||
| 功能 | 方法 | 说明 |
|
||
|------|------|------|
|
||
| 灰度预览 | `get(code, variables, userId)` | 调试者看DRAFT,用户看ACTIVE |
|
||
| 模块级调试 | `setDebugMode(userId, modules, enabled)` | 可指定['RVW']或['ALL'] |
|
||
| 模板渲染 | `render(template, variables)` | Handlebars 引擎 |
|
||
| 变量提取 | `extractVariables(content)` | 从 `{{xxx}}` 自动提取 |
|
||
| 变量校验 | `validateVariables(content, vars)` | 检查缺失/多余变量 |
|
||
| 三级容灾 | `getActiveVersion() + cache + fallback` | 数据库→缓存→兜底 |
|
||
|
||
**API 接口**
|
||
|
||
| 端点 | 方法 | 功能 |
|
||
|------|------|------|
|
||
| `/api/admin/prompts` | GET | 列表(支持 ?module=RVW 筛选)|
|
||
| `/api/admin/prompts/:code` | GET | 详情+版本历史 |
|
||
| `/api/admin/prompts/:code/draft` | POST | 保存草稿 |
|
||
| `/api/admin/prompts/:code/publish` | POST | 发布(需 prompt:publish)|
|
||
| `/api/admin/prompts/:code/rollback` | POST | 回滚到指定版本 |
|
||
| `/api/admin/prompts/debug` | GET | 获取调试状态 |
|
||
| `/api/admin/prompts/debug` | POST | 设置调试模式 |
|
||
| `/api/admin/prompts/test-render` | POST | 测试渲染 |
|
||
|
||
---
|
||
|
||
### 3. 前端管理界面
|
||
|
||
**架构成果**
|
||
```
|
||
frontend-v2/src/
|
||
├── framework/layout/
|
||
│ ├── AdminLayout.tsx (237行) ✅ 运营管理端布局(浅色主题)
|
||
│ ├── OrgLayout.tsx (260行) ✅ 机构管理端布局(浅色主题)
|
||
│ └── TopNavigation.tsx (171行) ✅ 更新(添加切换入口)
|
||
│
|
||
└── pages/
|
||
├── admin/
|
||
│ ├── AdminDashboard.tsx (147行) ✅ 运营概览
|
||
│ ├── PromptListPage.tsx (254行) ✅ Prompt列表
|
||
│ ├── PromptEditorPage.tsx (399行) ✅ Prompt编辑器
|
||
│ ├── components/
|
||
│ │ └── PromptEditor.tsx (245行) ✅ CodeMirror 6
|
||
│ └── api/
|
||
│ └── promptApi.ts (172行) ✅ API调用
|
||
│
|
||
└── org/
|
||
└── OrgDashboard.tsx (164行) ✅ 机构概览
|
||
```
|
||
|
||
**路由系统**
|
||
```
|
||
/ → 业务应用端(MainLayout,蓝色主题)
|
||
/admin/* → 运营管理端(AdminLayout,翠绿主题 #10b981)
|
||
/org/* → 机构管理端(OrgLayout,深蓝主题 #003a8c)
|
||
```
|
||
|
||
**CodeMirror 6 简化配置**
|
||
- ✅ 行号 + 自动换行
|
||
- ✅ 变量高亮(`{{xxx}}` 淡蓝背景)
|
||
- ✅ 撤销/重做(Ctrl+Z/Y)
|
||
- ✅ 搜索(Ctrl+F)
|
||
- ✅ 字符计数 + 变量统计
|
||
- ✅ 中文友好字体(15px,行高1.8)
|
||
- ✅ 保存快捷键(Ctrl+S)
|
||
|
||
**权限UI体现**
|
||
- PROMPT_ENGINEER 看到"发布"按钮是禁用状态 + 提示"需要SUPER_ADMIN权限"
|
||
|
||
---
|
||
|
||
## 🔑 关键设计点
|
||
|
||
### 1. 变量校验机制(新增)
|
||
|
||
**后端自动提取**
|
||
```typescript
|
||
// 保存草稿时自动提取变量
|
||
const variables = extractVariables(content); // ['title', 'author']
|
||
await prisma.prompt_templates.update({
|
||
where: { code },
|
||
data: { variables },
|
||
});
|
||
```
|
||
|
||
**前端自动生成表单**
|
||
```tsx
|
||
// 根据 variables 生成测试输入框
|
||
{variables.map(varName => (
|
||
<Input label={varName} placeholder={`输入 ${varName} 的值`} />
|
||
))}
|
||
```
|
||
|
||
### 2. 灰度预览工作流
|
||
|
||
```
|
||
Prompt工程师:
|
||
① 编辑 RVW_EDITORIAL,保存草稿(DRAFT)
|
||
② 开启调试模式:选择 RVW 模块
|
||
③ 切换到业务端 /rvw,使用真实数据测试
|
||
→ 系统自动加载 DRAFT 版本
|
||
→ 普通用户仍使用 ACTIVE 版本
|
||
④ 测试通过,关闭调试模式
|
||
⑤ 提交发布请求
|
||
|
||
SUPER_ADMIN:
|
||
⑥ 审核并点击"发布"(DRAFT → ACTIVE)
|
||
⑦ 新版本生效,所有用户使用新 Prompt
|
||
```
|
||
|
||
### 3. 三级容灾机制
|
||
|
||
```
|
||
Level 1: 数据库(正常)
|
||
└─> 从 capability_schema.prompt_versions 获取
|
||
|
||
Level 2: 内存缓存(数据库不可用)
|
||
└─> 从 PromptService.cache 获取
|
||
|
||
Level 3: 兜底Prompt(缓存也失效)
|
||
└─> 从 prompt.fallbacks.ts 硬编码获取
|
||
```
|
||
|
||
---
|
||
|
||
## 📦 代码统计
|
||
|
||
| 类别 | 文件数 | 代码行数 |
|
||
|------|--------|---------|
|
||
| 后端服务 | 6 | ~2,044行 |
|
||
| 前端界面 | 9 | ~1,735行 |
|
||
| 脚本工具 | 4 | ~473行 |
|
||
| **合计** | **19** | **~4,252行** |
|
||
|
||
---
|
||
|
||
## 🧪 测试状态
|
||
|
||
### ✅ 已测试
|
||
|
||
**后端单元测试**
|
||
- ✅ `test-prompt-service.ts` - PromptService 核心功能测试(7项全通过)
|
||
- ✅ `test-prompt-api.ts` - API 接口测试(5项全通过)
|
||
|
||
**前端功能测试**
|
||
- ⏳ 待用户手动测试
|
||
|
||
### ⏳ 待测试(Phase 3.5.5)
|
||
|
||
- [ ] RVW 模块集成测试
|
||
- [ ] 端到端灰度预览测试
|
||
- [ ] 多用户并发调试测试
|
||
|
||
---
|
||
|
||
## 🚀 下一步:Phase 3.5.5
|
||
|
||
### 任务清单
|
||
|
||
1. **改造 RVW 服务**
|
||
- 修改 `editorialService.ts`:使用 `promptService.get('RVW_EDITORIAL')`
|
||
- 修改 `methodologyService.ts`:使用 `promptService.get('RVW_METHODOLOGY')`
|
||
- 删除文件读取逻辑
|
||
|
||
2. **端到端测试**
|
||
- Prompt 工程师编辑 → 保存草稿
|
||
- 开启调试 → 切换到 RVW → 测试真实数据
|
||
- 关闭调试 → 发布 → 验证生效
|
||
|
||
3. **文档更新**
|
||
- 更新 RVW 模块开发指南
|
||
- 添加 Prompt 管理使用手册
|
||
|
||
---
|
||
|
||
## 📝 注意事项
|
||
|
||
### 给新 AI 助手的提示
|
||
|
||
1. **代码位置**
|
||
- 后端:`backend/src/common/prompt/`
|
||
- 前端:`frontend-v2/src/pages/admin/`
|
||
- 脚本:`backend/scripts/`
|
||
|
||
2. **关键文件**
|
||
- `prompt.service.ts`:核心逻辑,596行,灰度预览的核心
|
||
- `PromptEditorPage.tsx`:前端编辑器,399行,完整功能
|
||
|
||
3. **已安装依赖**
|
||
- 后端:`handlebars@^4.7.8`(已有)
|
||
- 前端:`codemirror@^6.x` + `@codemirror/*`(2026-01-11 已安装)
|
||
|
||
4. **测试账号**
|
||
- SUPER_ADMIN: `13800000001` / `123456`
|
||
- PROMPT_ENGINEER: `13800000002` / `123456`
|
||
|
||
5. **API 路由**
|
||
- 已注册:`/api/admin/prompts`
|
||
- 已测试:8个接口全部正常
|
||
|
||
---
|
||
|
||
## 🎉 里程碑
|
||
|
||
**这是 AI临床研究平台的重要里程碑:**
|
||
|
||
1. ✅ **首个生产环境灰度预览系统** - 允许专业人员安全调试 Prompt
|
||
2. ✅ **Prompt 与代码分离** - 临床专家可独立调整,无需开发人员
|
||
3. ✅ **三端架构初步形成** - 业务端 + 机构管理端 + 运营管理端
|
||
4. ✅ **权限体系完善** - 6个角色 + 细粒度权限控制
|
||
|
||
---
|
||
|
||
*文档生成:2026-01-11*
|
||
*下次对话请阅读:`04-开发计划/01-TODO清单(可追踪).md` 了解详细任务*
|
||
|
||
|
||
|