feat(aia): Complete AIA V2.0 with universal streaming capabilities

Major Changes:
- Add StreamingService with OpenAI Compatible format
- Upgrade Chat component V2 with Ant Design X integration
- Implement AIA module with 12 intelligent agents
- Update API routes to unified /api/v1 prefix
- Update system documentation

Backend (~1300 lines):
- common/streaming: OpenAI Compatible adapter
- modules/aia: 12 agents, conversation service, streaming integration
- Update route versions (RVW, PKB to v1)

Frontend (~3500 lines):
- modules/aia: AgentHub + ChatWorkspace (100% prototype restoration)
- shared/Chat: AIStreamChat, ThinkingBlock, useAIStream Hook
- Update API endpoints to v1

Documentation:
- AIA module status guide
- Universal capabilities catalog
- System overview updates
- All module documentation sync

Tested: Stream response verified, authentication working
Status: AIA V2.0 core completed (85%)
This commit is contained in:
2026-01-14 19:15:01 +08:00
parent 3d35e9c58b
commit 1b53ab9d52
386 changed files with 52096 additions and 65238 deletions

View File

@@ -1,57 +1,46 @@
# Prompt管理系统开发计划
> **版本:** v1.2
> **创建日期:** 2026-01-11
> **更新日期:** 2026-01-12
> **优先级:** P0核心通用能力
> **状态:** ✅ Phase 3.5.1-3.5.5 全部完成100%
> **预计工期:** 7个工作日
> **实际完成:** Day 1-7 已完成2026-01-12
# Prompt邂。逅<EFBFBD>ウサ扈溷シ€蜿題ョ。蛻?
> **迚域悽<E59F9F>?* v1.2
> **蛻帛サコ譌・譛滂シ?* 2026-01-11
> **譖エ譁ー譌・譛滂シ?* 2026-01-12
> **莨伜<EFBFBD>郤ァ<EFBFBD><EFBFBD>** P0<50><EFBFBD>ク蠢<EFBDB8>€夂畑閭ス蜉幢シ?
> **迥カ諤<EFBFBD><EFBFBD>** 笨?Phase 3.5.1-3.5.5 蜈ィ驛ィ螳梧<E89EB3><E6A2A7>?00%<25>?
> **<EFBFBD>ョ。蟾・譛滂シ?* 7荳ェ蟾・菴懈律
> **螳樣刔螳梧<EFBFBD><EFBFBD>?* Day 1-7 蟾イ螳梧<E89EB3><E6A2A7><EFBFBD>2026-01-12<31>?
---
## 🎯 快速导航(2026-01-11更新)
### ✅ 已完成Phase 3.5.1 - 3.5.5
## <EFBFBD>識 蠢ォ騾溷ッシ闊ェ<E9978A><EFBDAA>2026-01-11譖エ譁ー<EFBFBD>?
### 笨?蟾イ螳梧<E89EB3><E6A2A7><EFBFBD>hase 3.5.1 - 3.5.5<EFBFBD>?
| 髦カ谿オ | 譬ク蠢<EFBDB8>コァ蜃コ | 譁<>サカ菴咲スョ | 螳梧<E89EB3>譌・譛<EFBDA5> |
|------|---------|---------|---------|
| **3.5.1 基础设施** | capability_schema、表结构、权限、迁移 | `backend/prisma/schema.prisma` | 2026-01-11 |
| **3.5.1 蝓コ遑€隶セ譁ス** | capability_schema縲∬。ィ扈捺桷縲∵揀髯舌€∬ソ∫ァ?| `backend/prisma/schema.prisma` | 2026-01-11 |
| **3.5.2 譬ク蠢<EFBDB8>恪蜉。** | PromptService<63><EFBFBD>蠎ヲ縲∵クイ譟薙€∝序驥乗<E9A9A5>。鬪鯉シ<E9AF89> | `backend/src/common/prompt/` | 2026-01-11 |
| **3.5.3 邂。逅<EFBDA1>PI** | 8荳ェRESTful謗・蜿」 | `backend/src/common/prompt/prompt.routes.ts` | 2026-01-11 |
| **3.5.4 蜑咲ォッ逡碁擇** | 邂。逅<EFBDA1>ォッ譫カ譫<EFBDB6>€ ̄rompt蛻苓。ィ縲∫シ冶セ大勣 | `frontend-v2/src/pages/admin/` | 2026-01-11 |
| **3.5.5 业务集成** | RVW模块集成、认证规范化 | `backend/src/modules/rvw/` | 2026-01-12 |
| **3.5.5 荳壼苅髮<EFBFBD><EFBFBD>** | RVW讓。蝮鈴寔謌舌€∬ョ、隸∬ァ<EFBFBD>激蛹<EFBFBD> | `backend/src/modules/rvw/` | 2026-01-12 笨?|
### 🆕 Phase 3.5.5 完成内容2026-01-12
### <EFBFBD><EFBFBD> Phase 3.5.5 螳梧<EFBFBD><EFBFBD>ョケ<EFBFBD>?026-01-12<EFBFBD>?
**RVW 讓。蝮鈴寔謌撰シ?*
- 笨?editorialService.ts - 髮<><E9ABAE> PromptService<63>檎ァサ髯、譁<EFBDA4>サカ隸サ蜿?- 笨?methodologyService.ts - 髮<><E9ABAE> PromptService<63>檎ァサ髯、譁<EFBDA4>サカ隸サ蜿?- 笨?reviewWorker.ts - 莨<>騾?userId 謾ッ謖∫<E8AC96>蠎ヲ鬚<EFBDA6><EFBFBD>
- 笨?菫ョ螟<EFBDAE> ReviewTask 螟夜醗郤ヲ譚滂シ郁キィ schema 髣ョ鬚假シ?
**蜈ィ讓。蝮苓ョ、隸∬ァ<E288AC>激蛹厄シ?*
- 笨?RVW/PKB/ASL/DC 讓。蝮玲キサ蜉<EFBDBB> authenticate 荳ュ髣エ莉?- 笨?扈滉ク€菴ソ逕ィ request.user?.userId<49>檎ァサ髯、謇€譛?MOCK_USER_ID
- 笨?蜑咲ォッ扈滉ク€菴ソ逕ィ apiClient<6E><74>xios + JWT interceptor<6F>?- 笨?蛻帛サコ `docs/04-蠑€蜿題ァ<E9A18C><EFBDA7>?10-讓。蝮苓ョ、隸∬ァ<E288AC>激.md`
**RVW 模块集成:**
- ✅ editorialService.ts - 集成 PromptService移除文件读取
- ✅ methodologyService.ts - 集成 PromptService移除文件读取
- ✅ reviewWorker.ts - 传递 userId 支持灰度预览
- ✅ 修复 ReviewTask 外键约束(跨 schema 问题)
**全模块认证规范化:**
- ✅ RVW/PKB/ASL/DC 模块添加 authenticate 中间件
- ✅ 统一使用 request.user?.userId移除所有 MOCK_USER_ID
- ✅ 前端统一使用 apiClientaxios + JWT interceptor
- ✅ 创建 `docs/04-开发规范/10-模块认证规范.md`
**界面优化:**
- ✅ Prompt 列表模块列显示中文名称
- ✅ 版本历史增强(查看内容、回滚功能)
**逡碁擇莨伜喧<EFBFBD>?*
- 笨?Prompt 蛻苓。ィ讓。蝮怜<E89DAE>譏セ遉コ荳ュ譁<EFBDAD>錐遘?- 笨?迚域悽蜴<E682BD>彰蠅槫シコ<EFBDBC>域衍逵句<E980B5>螳ケ縲∝屓貊壼粥閭ス<E996AD><EFBDBD>
---
## <20>搭 逶ョ蠖<EFBDAE>
1. [鬘ケ逶ョ讎りソー](#1-鬘ケ逶ョ讎りソー)
2. [需求确认](#2-需求确认)
3. [技术架构](#3-技术架构)
4. [开发计划](#4-开发计划)
2. [髴€豎ら。ョ隶、](#2-髴€豎ら。ョ隶?
3. [謚€譛ッ譫カ譫Ь(#3-謚€譛ッ譫カ譫?
4. [蠑€蜿題ョ。蛻綻(#4-蠑€蜿題ョ。蛻?
5. [謨ー謐ョ霑∫ァサ隶。蛻綻(#5-謨ー謐ョ霑∫ァサ隶。蛻<EFBDA1>)
6. [<EFBFBD>剞隶セ隶。](#6-譚<>剞隶セ隶。)
7. [豬玖ッ戊ョ。蛻綻(#7-豬玖ッ戊ョ。蛻<EFBDA1>)
8. [风险与应对](#8-风险与应对)
8. [鬟朱勦荳主コ泌ッケ](#8-鬟朱勦荳主コ泌ッ?
---
@@ -59,59 +48,47 @@
### 1.1 鬘ケ逶ョ逶ョ譬<EFBDAE>
构建一个**生产环境灰度预览系统**允许专业人员Prompt工程师、临床专家在生产环境安全调试AI Prompt,实现:
- ✅ Prompt 与代码分离(数据库存储)
- ✅ 版本管理与回滚能力
- ✅ 灰度预览调试者看DRAFT用户看ACTIVE
- ✅ 模块级调试范围控制
- ✅ 权限细分(编辑/发布分离)
### 1.2 核心价值
<EFBFBD>サコ荳€荳?*逕滉コァ邇ッ蠅<EFBDAF><E8A085>蠎ヲ鬚<EFBDA6>ァ育ウサ扈<EFBDBB>**<2A><EFBFBD>隶ク荳謎ク壻ココ蜻假シ<E58187>rompt蟾・遞句ク医€∽クエ蠎贋ク灘ョカ<EFBDAE>牙惠逕滉コァ邇ッ蠅<EFBDAF>ョ牙<EFBDAE><EFBFBD>ッ柊I Prompt<EFBFBD>悟ョ樒鴫<EFBFBD><EFBFBD>
- 笨?Prompt 荳惹サ」遐∝<E98190>遖サ<E98196>域焚謐ョ蠎灘ュ伜お<E4BC9C><E3818A>
- 笨?迚域悽邂。逅<EFBDA1>ク主屓貊夊<E8B28A>蜉?- 笨?轣ー蠎ヲ鬚<EFBDA6>ァ茨シ郁ー<E98381>ッ戊€<E6888A>恚DRAFT<46>檎畑謌キ逵帰CTIVE<56>?- 笨?讓。蝮礼コァ隹<EFBDA7>ッ戊激蝗エ謗ァ蛻?- 笨?譚<>剞扈<E5899E><E68988><EFBFBD>育シ冶セ?蜿大ク<E5A4A7><EFBDB8>遖サ<E98196>?
### 1.2 譬ク蠢<EFBDB8>サキ蛟?
| 逞帷せ | 隗」蜀ウ譁ケ譯<EFBDB9> |
|------|---------|
| 豬玖ッ慕識蠅<E8AD98>裏豕墓ィ。諡溽悄螳樊焚謐ョ | 逕滉コァ邇ッ蠅<EFBDAF><E8A085>蠎ヲ鬚<EFBDA6><EFBFBD> |
| 每次调整需改代码→部署5分钟 | 数据库动态配置,秒级生效 |
| 豈乗ャ。隹<EFBFBD>紛髴€謾ケ莉」遐≫<EFBFBD>驛ィ鄂イ<EFBFBD>?蛻<><EFBFBD>?| 謨ー謐ョ蠎灘勘諤<E58B98><E8ABA4>鄂ョ<E98482>檎ァ堤コァ逕滓譜 |
| 荳エ蠎贋ク灘ョカ譌<EFBDB6>豕募盾荳手ー<E6898B><EFBFBD> | RBAC + 蜿句・ス邂。逅<EFBDA1>阜髱「 |
| 发布后无法回滚 | 版本历史 + 一键回滚 |
| 蜿大ク<EFBFBD>錘譌<EFBFBD>豕募屓貊?| 迚域悽蜴<E682BD>彰 + 荳€髞ョ蝗樊サ?|
### 1.3 涉及模块优先级
| 优先级 | 模块 | Prompt数量 | 复杂度 | 状态 |
### 1.3 豸牙所讓。蝮嶺シ伜<EFBFBD>郤?
| 莨伜<E88EA8>郤?| 讓。蝮<EFBDA1> | Prompt謨ー驥<EFBDB0> | 螟肴揩蠎?| 迥カ諤?|
|--------|------|-----------|--------|------|
| 🔴 P0 | **RVW** | 4个 | ⭐⭐ | **首批接入** |
| 🟡 P1 | ASL | 8个+ | ⭐⭐⭐⭐⭐ | 二期 |
| 🟡 P1 | DC | 5个+ | ⭐⭐⭐⭐ | 二期 |
| 🟢 P2 | PKB | 3个 | ⭐⭐⭐ | 三期 |
| 🟢 P2 | IIT | 3个 | ⭐⭐⭐⭐ | 三期 |
| 🔵 P3 | AIA | **10个智能体** | ⭐⭐⭐ | 待开发模块 |
| <EFBFBD> P0 | **RVW** | 4荳?| 箝絶ュ<E7B5B6> | **鬥匁音謗・蜈・** |
| <EFBFBD> P1 | ASL | 8荳? | 箝絶ュ絶ュ絶ュ絶ュ?| 莠梧悄 |
| <EFBFBD> P1 | DC | 5荳? | 箝絶ュ絶ュ絶ュ<EFBFBD> | 莠梧悄 |
| <EFBFBD> P2 | PKB | 3荳?| 箝絶ュ絶ュ?| 荳画悄 |
| <EFBFBD> P2 | IIT | 3荳?| 箝絶ュ絶ュ絶ュ<E7B5B6> | 荳画悄 |
| <EFBFBD> P3 | AIA | **10荳ェ譎コ閭ス菴<EFBFBD>** | 箝絶ュ絶ュ?| 蠕<>€蜿第ィ。蝮?|
---
## 2. 需求确认
### 2.1 已确认需求
## 2. 髴€豎ら。ョ隶?
### 2.1 蟾イ遑ョ隶、髴€豎?
| 髴€豎る。ケ | 遑ョ隶、扈捺棡 |
|--------|---------|
| 优先接入模块 | RVW 模块先行,走通后扩展 |
| 权限细分 | PROMPT_ENGINEER 只能编辑SUPER_ADMIN 才能发布 |
| 初始数据迁移 | ✅ 自动迁移现有文件Prompt到数据库 |
| 调试范围 | ✅ 可指定模块如只调试RVW不影响ASL |
| AIA智能体 | ✅ 预计10个智能体未来通过Prompt管理 |
| 莨伜<EFBFBD>謗・蜈・讓。蝮<EFBFBD> | 笨?RVW 讓。蝮怜<EFBFBD>陦鯉シ瑚オー騾壼錘謇ゥ螻<EFBFBD> |
| <EFBFBD>剞扈<EFBFBD><EFBFBD> | 笨?PROMPT_ENGINEER 蜿ェ閭ス郛冶セ托シ郡UPER_ADMIN 謇崎<EFBFBD>蜿大ク<EFBFBD> |
| 蛻晏ァ区焚謐ョ霑∫ァサ | 笨?閾ェ蜉ィ霑∫ァサ邇ー譛画枚莉カPrompt蛻ー謨ー謐ョ蠎<EFBDAE> |
| <EFBFBD>ッ戊激蝗エ | 笨?蜿ッ謖<EFBDAF>ョ壽ィ。蝮暦シ亥ヲょ宵隹<E5AEB5>ッ紐VW<56>御ク榊スア蜩喉SL<53>?|
| AIA譎コ閭ス菴?| 笨?鬚<>ョ。10荳ェ譎コ閭ス菴難シ梧悴譚・騾夊ソ⑰rompt邂。逅<EFBFBD> |
### 2.2 邉サ扈溽鴫迥カ
**现有Prompt存储方式:**
**邇ー譛臼rompt蟄伜お譁ケ蠑擾シ?*
```
backend/prompts/
├── review_editorial_system.txt # RVW - 稿约规范性评估
├── review_methodology_system.txt # RVW - 方法学评估
├── topic_evaluation_system.txt # RVW - 选题评估System
├── topic_evaluation_user.txt # RVW - 选题评估User
└── asl/
笏懌楳笏€ review_editorial_system.txt # RVW - 遞ソ郤ヲ隗<EFBFBD>激諤ァ隸<EFBFBD>シ?笏懌楳笏€ review_methodology_system.txt # RVW - 譁ケ豕募ュヲ隸<EFBDA6>シ?笏懌楳笏€ topic_evaluation_system.txt # RVW - 騾蛾「倩ッ<E580A9>シー<EFBDBC><EFBDB0>ystem<65>?笏懌楳笏€ topic_evaluation_user.txt # RVW - 騾蛾「倩ッ<E580A9>シー<EFBDBC><EFBDB0>ser<65>?笏披楳笏€ asl/
笏披楳笏€ screening/
笏懌楳笏€ v1.0.0-mvp.txt
笏懌楳笏€ v1.1.0-lenient.txt
@@ -119,7 +96,7 @@ backend/prompts/
笏披楳笏€ v1.1.0-strict.txt
```
**现有调用方式:**
**邇ー譛芽ー<EFBFBD>畑譁ケ蠑擾シ?*
```typescript
// 蠖灘燕<E78198>壻サ取枚莉カ隸サ蜿<EFBDBB>
@@ -131,89 +108,18 @@ const systemPrompt = await promptService.get('RVW_EDITORIAL', {}, userId);
---
## 3. 技术架构
### 3.1 整体架构图
## 3. 謚€譛ッ譫カ譫?
### 3.1 謨エ菴捺楔譫<E6A594><E8ADAB>?
```
┌─────────────────────────────────────────────────────────────────┐
运营管理端(前端)
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────────┐ │
│ │ Prompt列表 │ │ Prompt编辑器 │ │ 🔴 调试开关(可选模块) │ │
│ └─────────────┘ └─────────────┘ └─────────────────────────┘ │
└───────────────────────────┬─────────────────────────────────────┘
│ API调用
┌─────────────────────────────────────────────────────────────────┐
│ 后端 API Layer │
│ /api/admin/prompts - 管理接口(需认证+权限) │
│ /api/admin/prompts/debug - 调试模式开关 │
└───────────────────────────┬─────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────┐
│ PromptService核心
│ ┌───────────────┐ ┌───────────────┐ ┌───────────────────┐ │
│ │ debugUsers │ │ activeCache │ │ moduleDebugMap │ │
│ │ Map<userId, │ │ Map<code, │ │ Map<userId, │ │
│ │ Set<module>>│ │ content> │ │ Set<module>> │ │
│ └───────────────┘ └───────────────┘ └───────────────────┘ │
│ │
│ get(code, variables, userId) → 自动灰度路由 │
│ setDebugMode(userId, modules, enabled) → 模块级调试 │
└───────────────────────────┬─────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────┐
│ PostgreSQL (capability_schema) │
│ ┌─────────────────────┐ ┌─────────────────────────────────┐ │
│ │ prompt_templates │ │ prompt_versions │ │
│ │ - code (唯一标识) │ │ - status: DRAFT/ACTIVE/ARCHIVED │ │
│ │ - module (模块) │ │ - content (Prompt内容) │ │
│ │ - variables │ │ - model_config (模型参数) │ │
│ └─────────────────────┘ └─────────────────────────────────┘ │
│ │
│ LISTEN/NOTIFY prompt_update → 多实例缓存同步 │
└─────────────────────────────────────────────────────────────────┘
笏娯楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏?笏? 霑占是邂。逅<EFBDA1>ォッ<EFBDAB>亥燕遶ッ<E981B6>? 笏?笏? 笏娯楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏? 笏娯楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏? 笏娯楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏?笏?笏? 笏?Prompt蛻苓。ィ 笏? 笏?Prompt郛冶セ大<EFBDBE>?笏? 笏?<3F>閥 隹<>ッ募シ€蜈ウ<E89C88>亥庄騾画ィ。蝮暦シ<E69AA6> 笏?笏?笏? 笏披楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏? 笏披楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏? 笏披楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏?笏?笏披楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏ャ笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏? 笏?API隹<49>
笆?笏娯楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏?笏? 蜷守ォッ API Layer 笏?笏? /api/admin/prompts - 邂。逅<EFBDA1>磁蜿」<E89CBF>磯怙隶、隸<EFBDA4>+譚<><EFBFBD>? 笏?笏? /api/admin/prompts/debug - 隹<>ッ墓ィ。蠑丞シ€蜈? 笏?笏披楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏ャ笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏? 笏? 笆?笏娯楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏?笏? PromptService<63><EFBFBD>ク蠢<EFBDB8><EFBFBD> 笏?笏? 笏娯楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏? 笏娯楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏? 笏娯楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏? 笏?笏? 笏?debugUsers 笏? 笏?activeCache 笏? 笏?moduleDebugMap 笏? 笏?笏? 笏?Map<userId, 笏? 笏?Map<code, 笏? 笏?Map<userId, 笏? 笏?笏? 笏? Set<module>>笏? 笏? content> 笏? 笏? Set<module>> 笏? 笏?笏? 笏披楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏? 笏披楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏? 笏披楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏? 笏?笏? 笏?笏? get(code, variables, userId) 竊?閾ェ蜉ィ轣ー蠎ヲ霍ッ逕ア 笏?笏? setDebugMode(userId, modules, enabled) 竊?讓。蝮礼コァ隹<EFBDA7>ッ? 笏?笏披楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏ャ笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏? 笏? 笆?笏娯楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏?笏? PostgreSQL (capability_schema) 笏?笏? 笏娯楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏? 笏娯楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏? 笏?笏? 笏?prompt_templates 笏? 笏?prompt_versions 笏? 笏?笏? 笏?- code (蜚ッ荳€<C280><EFBFBD>) 笏? 笏?- status: DRAFT/ACTIVE/ARCHIVED 笏? 笏?笏? 笏?- module (讓。蝮<EFBDA1>) 笏? 笏?- content (Prompt蜀<74>ョケ) 笏? 笏?笏? 笏?- variables 笏? 笏?- model_config (讓。蝙句盾謨ー) 笏? 笏?笏? 笏披楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏? 笏披楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏? 笏?笏? 笏?笏? LISTEN/NOTIFY prompt_update 竊?螟壼ョ樔セ狗シ灘ュ伜酔豁? 笏?笏披楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏?```
### 3.2 譬ク蠢<EFBDB8>焚謐ョ豬?
```
逕ィ謌キ隸キ豎<EFBFBD> 竊?荳壼苅讓。蝮<EFBDA1> 竊?promptService.get(code, vars, userId)
笏? 笆? 笏娯楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏? 笏?譽€譟?debugUsers 笏? 笏?+ moduleDebugMap 笏? 笏披楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏ャ笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏? 笏? 笏娯楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏エ笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏? 笏? 笏? 笆? 笆? 笏娯楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏? 笏娯楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏? 笏?隹<>ッ戊€?+ 讓。蝮怜源驟<E6BA90> 笏? 笏?譎ョ騾夂畑謌?荳榊源驟? 笏? 笏披楳笏€笏€笏€笏€笏€笏€笏€笏ャ笏€笏€笏€笏€笏€笏€笏€笏€笏? 笏披楳笏€笏€笏€笏€笏€笏€笏€笏ャ笏€笏€笏€笏€笏€笏€笏€笏€笏? 笏? 笏? 笆? 笆? 笏娯楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏? 笏娯楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏? 笏?譟・隸「 DRAFT 迚域悽 笏? 笏?譟・隸「 ACTIVE 郛灘ュ<E78198> 笏? 笏披楳笏€笏€笏€笏€笏€笏€笏€笏ャ笏€笏€笏€笏€笏€笏€笏€笏€笏? 笏披楳笏€笏€笏€笏€笏€笏€笏€笏ャ笏€笏€笏€笏€笏€笏€笏€笏€笏? 笏? 笏? 笆? 笆? 笏娯楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏? 笏娯楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏? 笏?貂イ譟灘序驥剰ソ泌屓 笏? 笏?郛灘ュ俶悴蜻ス荳ュ蛻呎衍DB 笏? 笏披楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏? 笏披楳笏€笏€笏€笏€笏€笏€笏€笏ャ笏€笏€笏€笏€笏€笏€笏€笏€笏? 笏? 笆? 笏娯楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏? 笏?蜈懷コ包シ夂。ャ郛也<E9839B><E4B99F> 笏? 笏?FALLBACK_PROMPTS笏? 笏披楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏?```
### 3.2 核心数据流
```
用户请求 → 业务模块 → promptService.get(code, vars, userId)
┌─────────────────────┐
│ 检查 debugUsers │
│ + moduleDebugMap │
└──────────┬──────────┘
┌────────────────┴────────────────┐
│ │
▼ ▼
┌─────────────────┐ ┌─────────────────┐
│ 调试者 + 模块匹配 │ │ 普通用户/不匹配 │
└────────┬────────┘ └────────┬────────┘
│ │
▼ ▼
┌─────────────────┐ ┌─────────────────┐
│ 查询 DRAFT 版本 │ │ 查询 ACTIVE 缓存 │
└────────┬────────┘ └────────┬────────┘
│ │
▼ ▼
┌─────────────────┐ ┌─────────────────┐
│ 渲染变量返回 │ │ 缓存未命中则查DB │
└─────────────────┘ └────────┬────────┘
┌─────────────────┐
│ 兜底:硬编码 │
│ FALLBACK_PROMPTS│
└─────────────────┘
```
### 3.3 模块级调试设计
### 3.3 讓。蝮礼コァ隹<EFBDA7>ッ戊ョセ隶?
```typescript
// 隹<>ッ墓ィ。蠑乗焚謐ョ扈捺桷
interface DebugState {
@@ -225,19 +131,14 @@ interface DebugState {
// 蠑€蜷ッ隹<EFBDAF>ッ包シ壼宵隹<E5AEB5>ッ紐VW讓。蝮<EFBDA1>
await promptService.setDebugMode(userId, ['RVW'], true);
// 获取Prompt时自动判断
const prompt = await promptService.get('RVW_EDITORIAL', vars, userId);
// → 返回DRAFT因为userId开启了RVW调试
// 闔キ蜿鳳rompt譌カ閾ェ蜉ィ蛻、譁?const prompt = await promptService.get('RVW_EDITORIAL', vars, userId);
// 竊?霑泌屓DRAFT<46>亥屏荳コuserId蠑€蜷ッ莠<EFBDAF>VW隹<57>ッ包シ?
const prompt2 = await promptService.get('ASL_SCREENING', vars, userId);
// → 返回ACTIVE(因为userId未开启ASL调试
```
// 竊?霑泌屓ACTIVE<EFBFBD>亥屏荳コuserId譛ェ蠑€蜷ッASL隹<EFBFBD>ッ包シ?```
### 3.4 变量校验机制Variable Validation)🆕
**问题场景:** 编辑器里写了 `{{title}}`,但 `variables` 字段没配置 `title`,调试时报错。
**解决方案:**
### 3.4 蜿倬㍼譬。鬪梧惻蛻カ<EFBFBD><EFBFBD>ariable Validation<EFBFBD>解氣?
**髣ョ鬚伜惻譎ッ<E8AD8E>?* 郛冶セ大勣驥悟<E9A9A5><EFBFBD> `{{title}}`<60>御ス<E5BEA1> `variables` 蟄玲ョオ豐。驟咲ス?`title`<60>瑚ー<E7919A>ッ墓慮謚・髞吶€?
**隗」蜀ウ譁ケ譯茨シ?*
```typescript
// 蜷守ォッ<EFBDAB>壻ソ晏ュ俶慮閾ェ蜉ィ謠仙叙蜿倬㍼
@@ -251,24 +152,23 @@ function extractVariables(content: string): string[] {
return Array.from(variables);
}
// 保存草稿时自动更新 variables 字段
// 菫晏ュ倩拷遞ソ譌カ閾ェ蜉ィ譖エ譁?variables 蟄玲ョオ
async saveDraft(templateId: number, content: string, ...) {
const extractedVars = extractVariables(content);
// 自动更新模板的 variables 字段
// 閾ェ蜉ィ譖エ譁ー讓。譚ソ逧?variables 蟄玲ョオ
await prisma.prompt_templates.update({
where: { id: templateId },
data: { variables: extractedVars },
});
// 创建新版本
await prisma.prompt_versions.create({
// 蛻帛サコ譁ー迚域<EFBFBD>? await prisma.prompt_versions.create({
data: { template_id: templateId, content, ... }
});
}
```
**前端:调试界面自动生成变量输入表单**
**蜑咲ォッ<EFBFBD>夊ー<EFBFBD>ッ慕阜髱「閾ェ蜉ィ逕滓<EFBFBD>蜿倬㍼霎灘<EFBFBD>陦ィ蜊?*
```tsx
// PromptDebugPanel.tsx
@@ -295,35 +195,29 @@ const PromptDebugPanel = ({ variables }: { variables: string[] }) => {
};
```
**校验时机:**
**譬。鬪梧慮譛コ<EFBFBD>?*
| 譌カ譛コ | 蜉ィ菴<EFBDA8> |
|------|------|
| 保存草稿时 | 自动提取变量,更新 `variables` 字段 |
| 发布前 | 警告:如果 DRAFT 的变量与 ACTIVE 不同,提示"变量已变更" |
| 调试时 | 前端根据 `variables` 自动生成输入表单 |
| 渲染时 | 校验提供的变量是否完整,缺失则抛出明确错误 |
| 菫晏ュ倩拷遞ソ譌?| 閾ェ蜉ィ謠仙叙蜿倬㍼<E580AC>梧峩譁?`variables` 蟄玲ョオ |
| 蜿大ク<EFBFBD><EFBFBD>?| 隴ヲ蜻奇シ壼ヲよ<EFBDA6>?DRAFT 逧<>序驥丈ク<E4B888> ACTIVE 荳榊酔<E6A68A>梧署遉?蜿倬㍼蟾イ蜿俶<E89CBF>? |
| <EFBFBD>ッ墓<EFBFBD>?| 蜑咲ォッ譬ケ謐ョ `variables` 閾ェ蜉ィ逕滓<E98095>霎灘<E99C8E>陦ィ蜊<EFBDA8> |
| 貂イ譟捺<EFBFBD>?| 譬。鬪梧署萓帷噪蜿倬㍼譏ッ蜷ヲ螳梧紛<E6A2A7>檎シコ螟ア蛻呎鴨蜃コ譏守。ョ髞呵ッ?|
---
## 4. 开发计划
### 4.1 总体时间线
## 4. 蠑€蜿題ョ。蛻?
### 4.1 諤サ菴捺慮髣エ郤?
```
Day 1-2: 蝓コ遑€隶セ譁ス謳ュ蟒コ
Day 3: PromptService 譬ク蠢<EFBDB8>ョ樒鴫
Day 4: 管理API开发
Day 5-6: 前端管理界面
Day 7: RVW模块集成 + 端到端测试
```
Day 4: 邂。逅<EFBFBD>PI蠑€蜿?Day 5-6: 蜑咲ォッ邂。逅<EFBDA1>阜髱「
Day 7: RVW讓。蝮鈴寔謌<E5AF94> + 遶ッ蛻ー遶ッ豬玖ッ?```
### 4.2 隸ヲ扈<EFBDA6>ササ蜉。貂<EFBDA1>
#### Phase 3.5.1: 基础设施Day 1-2
##### Day 1: 数据库准备
#### Phase 3.5.1: 蝓コ遑€隶セ譁ス<EFBFBD><EFBFBD>ay 1-2<EFBFBD>?
##### Day 1: 謨ー謐ョ蠎灘㊥螟?
- [ ] 蛻帛サコ `capability_schema` Schema
```sql
CREATE SCHEMA IF NOT EXISTS capability_schema;
@@ -334,39 +228,32 @@ Day 7: RVW模块集成 + 端到端测试
- [ ] `prompt_templates` 讓。蝙<EFBDA1>
- [ ] `prompt_versions` 讓。蝙<EFBDA1>
- [ ] 执行 `prisma db push` 创建表
- [ ] 添加 Prompt 权限到 `permissions` 表
```sql
- [ ] 謇ァ陦<EFBFBD> `prisma db push` 蛻帛サコ陦?
- [ ] 豺サ蜉<EFBDBB> Prompt 譚<>剞蛻?`permissions` 陦? ```sql
INSERT INTO platform_schema.permissions (code, name, description, module) VALUES
('prompt:view', '查看Prompt', '查看Prompt模板列表和详情', 'admin'),
('prompt:view', '譟・逵輝rompt', '譟・逵輝rompt讓。譚ソ蛻苓。ィ蜥瑚ッヲ諠?, 'admin'),
('prompt:edit', '郛冶セ善rompt', '蛻帛サコ蜥御ソョ謾ケPrompt闕臥ィソ', 'admin'),
('prompt:debug', '调试Prompt', '开启调试模式', 'admin'),
('prompt:publish', '发布Prompt', '将草稿发布为正式版', 'admin');
('prompt:debug', '<EFBFBD>ッ姫rompt', '€蜷ッ隹<EFBFBD>ッ墓ィ。蠑?, 'admin'),
('prompt:publish', '蜿大クケrompt', '<EFBFBD>拷遞ソ蜿大ク<EFBFBD>クコ豁」蠑冗<EFBFBD>?, 'admin');
```
- [ ] 更新 `role_permissions`
- [ ] SUPER_ADMIN: prompt:view, prompt:edit, prompt:debug, prompt:publish
- [ ] PROMPT_ENGINEER: prompt:view, prompt:edit, prompt:debug无publish
##### Day 2: 数据迁移RVW模块
- [ ] 譖エ譁ー `role_permissions` 陦? - [ ] SUPER_ADMIN: prompt:view, prompt:edit, prompt:debug, prompt:publish
- [ ] PROMPT_ENGINEER: prompt:view, prompt:edit, prompt:debug<EFBFBD>域裏publish<EFBFBD>?
##### Day 2: 謨ー謐ョ霑∫ァサ<EFBDA7><EFBDBB>VW讓。蝮暦シ?
- [ ] 郛門<E9839B>霑∫ァサ閼壽悽 `scripts/migrate-prompts.ts`
- [ ] 霑∫ァサ RVW 讓。蝮<EFBDA1> Prompt
| 譁<>サカ | Code | 蜷咲ァー |
|------|------|------|
| review_editorial_system.txt | RVW_EDITORIAL | 稿约规范性评估 |
| review_methodology_system.txt | RVW_METHODOLOGY | 方法学评估 |
| review_editorial_system.txt | RVW_EDITORIAL | 遞ソ郤ヲ隗<EFBFBD>激諤ァ隸<EFBFBD>シ?|
| review_methodology_system.txt | RVW_METHODOLOGY | 譁ケ豕募ュヲ隸<EFBFBD>シ?|
> 注:`topic_evaluation_*` 是"选题评估"功能不属于RVW审稿模块
- [ ] 验证迁移数据完整性
> 豕ィ<EFBFBD>topic_evaluation_*` 譏?騾蛾「倩ッ<E580A9>シー"蜉溯<E89C89><E6BAAF>御ク榊ア樔コ山VW螳。遞ソ讓。蝮<EFBDA1>
- [ ] 鬪瑚ッ∬ソ∫ァサ謨ー謐ョ螳梧紛諤?
---
#### Phase 3.5.2: PromptService 核心Day 3
#### Phase 3.5.2: PromptService 譬ク蠢<EFBFBD><EFBFBD>ay 3<EFBFBD>?
- [ ] 蛻帛サコ譁<EFBDBA>サカ扈捺桷
```
backend/src/common/capabilities/prompt/
@@ -376,23 +263,16 @@ Day 7: RVW模块集成 + 端到端测试
笏披楳笏€ index.ts # 蟇シ蜃コ
```
- [ ] 实现 `PromptService`
- [ ] `get(code, variables, userId)` - 核心获取方法
- [ ] `setDebugMode(userId, modules, enabled)` - 模块级调试开关
- [ ] `isDebugging(userId, module)` - 检查调试状态
- [ ] `render(template, variables)` - Handlebars渲染
- [ ] `getActiveVersion(code)` - 获取ACTIVE版本带缓存
- [ ] `getDraftVersion(code)` - 获取DRAFT版本
- [ ] 螳樒鴫 `PromptService` 邀? - [ ] `get(code, variables, userId)` - 譬ク蠢<EFBDB8>執蜿匁婿豕<E5A9BF>
- [ ] `setDebugMode(userId, modules, enabled)` - 讓。蝮礼コァ隹<EFBDA7>ッ募シ€蜈? - [ ] `isDebugging(userId, module)` - 譽€譟・隹<EFBDA5>ッ慕憾諤? - [ ] `render(template, variables)` - Handlebars貂イ譟<EFBDB2>
- [ ] `getActiveVersion(code)` - 闔キ蜿泡CTIVE迚域悽<E59F9F>亥クヲ郛灘ュ假シ? - [ ] `getDraftVersion(code)` - 闔キ蜿縫RAFT迚域悽
- [ ] `getFallback(code)` - 闔キ蜿門<E89CBF>蠎姫rompt
- [ ] `extractVariables(content)` - <20><> 莉主<E88E89>螳ケ謠仙叙蜿倬㍼蜷<E38DBC>
- [ ] `validateVariables(content, providedVars)` - 🆕 校验变量完整性
- [ ] `validateVariables(content, providedVars)` - <EFBFBD><EFBFBD> 譬。鬪悟序驥丞ョ梧紛諤?
- [ ] 螳樒鴫辜ュ譖エ譁ー譛コ蛻? - [ ] `initHotReload()` - 逶大成 LISTEN/NOTIFY
- [ ] 謾カ蛻ー騾夂衍蜷取ク<E58F96>ゥ?`activeCache`
- [ ] 实现热更新机制
- [ ] `initHotReload()` - 监听 LISTEN/NOTIFY
- [ ] 收到通知后清空 `activeCache`
- [ ] 编写兜底Prompt`prompt.fallbacks.ts`
```typescript
- [ ] 郛門<EFBFBD>蜈懷コ姫rompt<EFBFBD><EFBFBD>prompt.fallbacks.ts`<EFBFBD>? ```typescript
export const FALLBACK_PROMPTS: Record<string, string> = {
'RVW_EDITORIAL': `<EFBFBD>譏ッ荳€菴崎オ<EFBFBD>キア逧<EFBFBD>ュヲ譛ッ譛溷<EFBFBD>郛冶セ<EFBFBD>...`,
'RVW_METHODOLOGY': `<EFBFBD>譏ッ荳€菴肴婿豕募ュヲ荳灘ョカ...`,
@@ -402,13 +282,11 @@ Day 7: RVW模块集成 + 端到端测试
---
#### Phase 3.5.3: 管理APIDay 4
#### Phase 3.5.3: 邂。逅<EFBFBD>PI<EFBFBD><EFBFBD>ay 4<EFBFBD>?
- [ ] 蛻帛サコ譁<EFBDBA>サカ扈捺桷
```
backend/src/modules/admin/prompt/
├── prompt.controller.ts # 控制器
├── prompt.routes.ts # 路由定义
笏懌楳笏€ prompt.controller.ts # 謗ァ蛻カ蝎? 笏懌楳笏€ prompt.routes.ts # 霍ッ逕ア螳壻ケ<E5A3BB>
笏披楳笏€ prompt.schema.ts # 隸キ豎<EFBDB7>/蜩榊コ粘chema
```
@@ -418,82 +296,61 @@ Day 7: RVW模块集成 + 端到端测试
|------|------|------|------|
| GET | `/api/admin/prompts` | prompt:view | 闔キ蜿匁ィ。譚ソ蛻苓。ィ<EFBDA1>域髪謖∵ィ。蝮苓ソ<E88B93>サ、<EFBDBB><EFBDA4> |
| GET | `/api/admin/prompts/:id` | prompt:view | 闔キ蜿匁ィ。譚ソ隸ヲ諠<EFBDA6>+迚域悽蜴<E682BD>彰 |
| POST | `/api/admin/prompts` | prompt:edit | 创建新模板 |
| POST | `/api/admin/prompts` | prompt:edit | 蛻帛サコ譁ー讓。譚?|
| POST | `/api/admin/prompts/:id/draft` | prompt:edit | 菫晏ュ倩拷遞ソ |
| POST | `/api/admin/prompts/:id/publish` | prompt:publish | 发布DRAFT→ACTIVE |
| POST | `/api/admin/prompts/:id/rollback` | prompt:publish | 回滚到指定版本 |
| POST | `/api/admin/prompts/debug` | prompt:debug | 开关调试模式 |
| GET | `/api/admin/prompts/debug/status` | prompt:debug | 获取当前调试状态 |
| POST | `/api/admin/prompts/:id/publish` | prompt:publish | 蜿大ク<EFBFBD><EFBFBD>RAFT竊但CTIVE<EFBFBD>?|
| POST | `/api/admin/prompts/:id/rollback` | prompt:publish | 蝗樊サ壼芦謖<EFBFBD>ョ夂沿譛?|
| POST | `/api/admin/prompts/debug` | prompt:debug | €蜈ウ隹<EFBFBD>ッ墓ィ。蠑?|
| GET | `/api/admin/prompts/debug/status` | prompt:debug | 闔キ蜿門ス灘燕隹<EFBFBD>ッ慕憾諤?|
- [ ] 添加权限中间件检查
- [ ] 注册路由到 `index.ts`
- [ ] 豺サ蜉<EFBFBD><EFBFBD>剞荳ュ髣エ莉カ譽€譟?
- [ ] 豕ィ蜀瑚キッ逕ア蛻?`index.ts`
---
#### Phase 3.5.4: 前端管理界面Day 5-6
##### Day 5: 列表页 + 调试开关
#### Phase 3.5.4: 蜑咲ォッ邂。逅<EFBFBD>阜髱「<EFBFBD><EFBFBD>ay 5-6<EFBFBD>?
##### Day 5: 蛻苓。ィ鬘?+ 隹<>ッ募シ€蜈?
- [ ] 蛻帛サコ譁<EFBDBA>サカ扈捺桷
```
frontend-v2/src/modules/admin/prompt/
笏懌楳笏€ pages/
│ ├── PromptListPage.tsx # 列表页
│ └── PromptEditorPage.tsx # 编辑页
├── components/
│ ├── PromptDebugSwitch.tsx # 调试开关
│ ├── PromptVersionHistory.tsx # 版本历史
│ └── PromptPreview.tsx # 预览组件
笏? 笏懌楳笏€ PromptListPage.tsx # 蛻苓。ィ鬘? 笏? 笏披楳笏€ PromptEditorPage.tsx # 郛冶セ鷹。? 笏懌楳笏€ components/
笏? 笏懌楳笏€ PromptDebugSwitch.tsx # 隹<>ッ募シ€蜈? 笏? 笏懌楳笏€ PromptVersionHistory.tsx # 迚域悽蜴<E682BD>
笏? 笏披楳笏€ PromptPreview.tsx # 鬚<>ァ育サ<E882B2>サカ
笏懌楳笏€ hooks/
│ └── usePromptApi.ts # API调用
笏? 笏披楳笏€ usePromptApi.ts # API<EFBFBD>
笏披楳笏€ index.ts
```
- [ ] `PromptListPage.tsx`
- [ ] 讓。譚ソ蛻苓。ィ螻慕、コ
- [ ] 模块筛选RVW/ASL/DC/...
- [ ] 状态筛选(有草稿/无草稿)
- [ ] 讓。蝮礼ュ幃€会シ<EFBFBD>VW/ASL/DC/...<EFBFBD>? - [ ] 迥カ諤∫ュ幃€会シ域怏闕臥ィ?譌<>闕臥ィソ<EFBDA8><EFBDBF>
- [ ] 謳懃エ「蜉溯<E89C89>
- [ ] `PromptDebugSwitch.tsx`
- [ ] 权限检查(仅 prompt:debug 可见)
- [ ] 模块选择器(可多选)
- [ ] 开关状态
- [ ] 开启后显示警告条
##### Day 6: 编辑器页面
- [ ] <EFBFBD>剞譽€譟・<EFBFBD>井サ?prompt:debug 蜿ッ隗<EFBFBD>シ? - [ ] 讓。蝮鈴€画叫蝎ィ<E89D8E>亥庄螟夐€会シ<E4BC9A>
- [ ] 蠑€蜈ウ迥カ諤? - [ ] 蠑€蜷ッ蜷取仞遉コ隴ヲ蜻頑<E89CBB>?
##### Day 6: 郛冶セ大勣鬘オ髱?
- [ ] `PromptEditorPage.tsx`
- [ ] 基本信息展示code, name, module
- [ ] Prompt 内容编辑器Monaco Editor / CodeMirror
- [ ] **变量自动提取**:编辑时实时扫描 `{{xxx}}`,显示变量列表 🆕
- [ ] modelConfig 编辑JSON格式
- [ ] 保存草稿按钮(自动更新 variables 字段)
- [ ] 发布按钮(权限控制:无 prompt:publish 则禁用)
- [ ] 蝓コ譛ャ菫。諱ッ螻慕、コ<EFBFBD><EFBFBD>ode, name, module<EFBFBD>? - [ ] Prompt 蜀<>ョケ郛冶セ大勣<E5A4A7><E58BA3>onaco Editor / CodeMirror<6F>? - [ ] **蜿倬㍼閾ェ蜉ィ謠仙叙**<2A>夂シ冶セ第慮螳樊慮謇ォ謠<EFBDAB> `{{xxx}}`<60>梧仞遉コ蜿倬㍼蛻苓。?<3F><>
- [ ] modelConfig 郛冶セ托シ<E68998>SON譬シ蠑擾シ? - [ ] 菫晏ュ倩拷遞ソ謖蛾聴<E89BBE><EFBFBD>蜉ィ譖エ譁?variables 蟄玲ョオ<EFBDAE>? - [ ] 蜿大ク<E5A4A7>潔髓ョ<E9AB93>域揀髯先而蛻カ<E89BBB><EFBFBD>?prompt:publish 蛻咏ヲ∫畑<E288AB><E79591>
- [ ] **蜿倬㍼蜿俶峩隴ヲ蜻<EFBDA6>**<2A>壼書蟶<E69BB8>燕譽€譟・蜿倬㍼譏ッ蜷ヲ荳<EFBDA6> ACTIVE 迚域悽荳榊酔 <20><>
- [ ] 迚域悽蜴<E682BD>彰髱「譚ソ
- [ ] 变更说明输入changelog
- [ ] 蜿俶峩隸エ譏手セ灘<EFBFBD><EFBFBD><EFBFBD>hangelog<EFBFBD>?
- [ ] `PromptDebugPanel.tsx` <20><>
- [ ] 譬ケ謐ョ variables 閾ェ蜉ィ逕滓<E98095>霎灘<E99C8E>陦ィ蜊<EFBDA8>
- [ ] "测试渲染"按钮:预览变量替换后的效果
- [ ] 渲染结果展示
- [ ] "豬玖ッ墓クイ譟<EFBFBD>"謖蛾聴<E89BBE>夐「<E5A490>ァ亥序驥乗崛謐「蜷守噪謨域<E8ACA8>? - [ ] 貂イ譟鍋サ捺棡螻慕、コ
- [ ] `PromptVersionHistory.tsx`
- [ ] 迚域悽蛻苓。ィ
- [ ] 迚域悽蟇ケ豈<EFBDB9>
- [ ] 一键回滚
- [ ] 集成到导航
- [ ] 运营管理端侧边栏添加入口
- [ ] 顶部栏添加调试开关
- [ ] 荳€髞ョ蝗樊サ?
- [ ] 髮<><E9ABAE>蛻ー蟇シ闊? - [ ] 霑占是邂。逅<EFBDA1>ォッ萓ァ霎ケ譬乗キサ蜉<EFBDBB>蜈・蜿」
- [ ] 鬘カ驛ィ譬乗キサ蜉<EFBFBD><EFBFBD>ッ募シ€蜈?
---
#### Phase 3.5.5: RVW模块集成Day 7
- [ ] 改造 `editorialService.ts`
#### Phase 3.5.5: RVW讓。蝮鈴寔謌撰シ<EFBFBD>ay 7<EFBFBD>?
- [ ] 謾ケ騾?`editorialService.ts`
```typescript
// Before
const systemPrompt = await fs.readFile(PROMPT_PATH, 'utf-8');
@@ -502,42 +359,40 @@ Day 7: RVW模块集成 + 端到端测试
const systemPrompt = await promptService.get('RVW_EDITORIAL', {}, userId);
```
- [ ] 改造 `methodologyService.ts`
- [ ] 謾ケ騾?`methodologyService.ts`
- [ ] 改造其他 RVW 相关服务
- [ ] 謾ケ騾<EFBFBD>蜈カ莉?RVW 逶ク蜈ウ譛榊苅
- [ ] 端到端测试
- [ ] 普通用户:使用 ACTIVE 版本
- [ ] 遶ッ蛻ー遶ッ豬玖ッ? - [ ] 譎ョ騾夂畑謌キ<E8AC8C>壻スソ逕ィ ACTIVE 迚域悽
- [ ] 隹<>ッ戊€<E6888A>シ亥シ€蜷ッRVW隹<57>ッ包シ会シ壻スソ逕ィ DRAFT 迚域悽
- [ ] 隹<>ッ戊€<E6888A>シ域悴蠑€蜷ッRVW隹<57>ッ包シ会シ壻スソ逕ィ ACTIVE 迚域悽
- [ ] 发布流程DRAFT ACTIVE
- [ ] 蜿大ク<EFBFBD>オ∫ィ具シ咼RAFT 竊?ACTIVE
- [ ] 蝗樊サ壽オ∫ィ<E288AB>
---
### 4.3 任务跟踪表
| ID | 任务 | 负责人 | 状态 | 完成日期 |
### 4.3 莉サ蜉。霍溯クェ陦?
| ID | 莉サ蜉。 | 雍溯エ」莠?| 迥カ諤?| 螳梧<E89EB3>譌・譛<EFBDA5> |
|----|------|--------|------|---------|
| 3.5.1.1 | 创建 capability_schema | AI | ✅ 已完成 | 2026-01-11 |
| 3.5.1.2 | 更新 schema.prisma | AI | ✅ 已完成 | 2026-01-11 |
| 3.5.1.3 | 添加权限数据 | AI | ✅ 已完成 | 2026-01-11 |
| 3.5.1.4 | 编写迁移脚本 | AI | ✅ 已完成 | 2026-01-11 |
| 3.5.1.5 | 迁移 RVW Prompt | AI | ✅ 已完成 | 2026-01-11 |
| 3.5.2.1 | 实现 PromptService | AI | ✅ 已完成 | 2026-01-11 |
| 3.5.2.2 | 实现热更新 | - | ⏸️ 暂缓(手动invalidate | - |
| 3.5.2.3 | 编写兜底Prompt | AI | ✅ 已完成 | 2026-01-11 |
| 3.5.2.4 | 实现变量提取 `extractVariables()` 🆕 | AI | ✅ 已完成 | 2026-01-11 |
| 3.5.2.5 | 实现变量校验 `validateVariables()` 🆕 | AI | ✅ 已完成 | 2026-01-11 |
| 3.5.3.1 | 实现管理API | AI | ✅ 已完成 | 2026-01-11 |
| 3.5.3.2 | 添加权限检查 | - | ⏸️ 暂缓(注释掉) | - |
| 3.5.4.0 | 搭建管理端基础架构 | AI | ✅ 已完成 | 2026-01-11 |
| 3.5.4.1 | 实现列表页 | AI | ✅ 已完成 | 2026-01-11 |
| 3.5.4.2 | 实现调试开关 | AI | ✅ 已完成 | 2026-01-11 |
| 3.5.4.3 | 实现编辑器CodeMirror 6 简化版)| AI | ✅ 已完成 | 2026-01-11 |
| 3.5.4.4 | 实现调试面板(变量输入表单)🆕 | AI | ✅ 已完成 | 2026-01-11 |
| 3.5.5.1 | 改造 RVW 服务 | - | ⏳ 待开始 | - |
| 3.5.5.2 | 端到端测试 | - | ⏳ 待开始 | - |
| 3.5.1.1 | 蛻帛サコ capability_schema | AI | 笨?蟾イ螳梧<E89EB3>?| 2026-01-11 |
| 3.5.1.2 | 譖エ譁ー schema.prisma | AI | 笨?蟾イ螳梧<E89EB3>?| 2026-01-11 |
| 3.5.1.3 | 豺サ蜉<EFBFBD><EFBFBD>剞謨ー謐ョ | AI | 笨?蟾イ螳梧<E89EB3>?| 2026-01-11 |
| 3.5.1.4 | 郛門<EFBFBD>霑∫ァサ閼壽悽 | AI | 笨?蟾イ螳梧<E89EB3>?| 2026-01-11 |
| 3.5.1.5 | 霑∫ァサ RVW Prompt | AI | 笨?蟾イ螳梧<E89EB3>?| 2026-01-11 |
| 3.5.2.1 | 螳樒鴫 PromptService | AI | 笨?蟾イ螳梧<E89EB3>?| 2026-01-11 |
| 3.5.2.2 | 螳樒鴫辜ュ譖エ譁?| - | 竢ク<E7ABA2><EFBDB8> 證らシ難シ域焔蜉ィinvalidate<EFBFBD>?| - |
| 3.5.2.3 | 郛門<EFBFBD>蜈懷コ姫rompt | AI | 笨?蟾イ螳梧<E89EB3>?| 2026-01-11 |
| 3.5.2.4 | 螳樒鴫蜿倬㍼謠仙叙 `extractVariables()` <EFBFBD><EFBFBD> | AI | 笨?蟾イ螳梧<E89EB3>?| 2026-01-11 |
| 3.5.2.5 | 螳樒鴫蜿倬㍼譬。鬪<EFBFBD> `validateVariables()` <EFBFBD><EFBFBD> | AI | 笨?蟾イ螳梧<E89EB3>?| 2026-01-11 |
| 3.5.3.1 | 螳樒鴫邂。逅<EFBFBD>PI | AI | 笨?蟾イ螳梧<E89EB3>?| 2026-01-11 |
| 3.5.3.2 | 豺サ蜉<EFBFBD><EFBFBD>剞譽€譟?| - | 竢ク<E7ABA2><EFBDB8> 證らシ難シ域ウィ驥頑脂<E9A091>?| - |
| 3.5.4.0 | 謳ュ蟒コ邂。逅<EFBFBD>ォッ蝓コ遑€譫カ譫<EFBFBD> | AI | 笨?蟾イ螳梧<E89EB3>?| 2026-01-11 |
| 3.5.4.1 | 螳樒鴫蛻苓。ィ鬘?| AI | 笨?蟾イ螳梧<E89EB3>?| 2026-01-11 |
| 3.5.4.2 | 螳樒鴫隹<EFBFBD>ッ募シ€蜈?| AI | 笨?蟾イ螳梧<E89EB3>?| 2026-01-11 |
| 3.5.4.3 | 螳樒鴫郛冶セ大勣<EFBFBD><EFBFBD>odeMirror 6 €蛹也沿<EFBFBD>榎 AI | 笨?蟾イ螳梧<E89EB3>?| 2026-01-11 |
| 3.5.4.4 | 螳樒鴫隹<EFBFBD>ッ暮擇譚ソ<EFBFBD>亥序驥剰セ灘<EFBFBD>陦ィ蜊包シ解氣<EFBFBD> | AI | 笨?蟾イ螳梧<E89EB3>?| 2026-01-11 |
| 3.5.5.1 | 謾ケ騾?RVW 譛榊苅 | - | 竢?蠕<>€蟋?| - |
| 3.5.5.2 | 遶ッ蛻ー遶ッ豬玖ッ?| - | 竢?蠕<>€蟋?| - |
---
@@ -545,31 +400,31 @@ Day 7: RVW模块集成 + 端到端测试
### 5.1 RVW讓。蝮苓ソ∫ァサ<EFBDA7>育ャャ荳€謇ケ<E8AC87><EFBDB9>
| 源文件 | Code | 名称 | 模块 | 状态 |
| 貅先枚莉?| Code | 蜷咲ァー | 讓。蝮<EFBDA1> | 迥カ諤?|
|--------|------|------|------|------|
| review_editorial_system.txt | RVW_EDITORIAL | 稿约规范性评估 | RVW | ACTIVE |
| review_methodology_system.txt | RVW_METHODOLOGY | 方法学评估 | RVW | ACTIVE |
| review_editorial_system.txt | RVW_EDITORIAL | 遞ソ郤ヲ隗<EFBFBD>激諤ァ隸<EFBFBD>シ?| RVW | ACTIVE |
| review_methodology_system.txt | RVW_METHODOLOGY | 譁ケ豕募ュヲ隸<EFBFBD>シ?| RVW | ACTIVE |
> 注:`topic_evaluation_*` 是"选题评估"功能不属于RVW审稿模块未迁移
> 豕ィ<EFBFBD>topic_evaluation_*` 譏?騾蛾「倩ッ<E580A9>シー"蜉溯<E89C89><E6BAAF>御ク榊ア樔コ山VW螳。遞ソ讓。蝮暦シ梧悴霑∫ァサ
### 5.2 ASL讓。蝮苓ソ∫ァサ<EFBDA7>育ャャ莠梧音<E6A2A7>悟セ<E6829F>ョ夲シ<E5A4B2>
| 源文件 | Code | 名称 | 模块 |
| 貅先枚莉?| Code | 蜷咲ァー | 讓。蝮<EFBDA1> |
|--------|------|------|------|
| v1.1.0-standard.txt | ASL_SCREENING_STANDARD | 标题摘要筛选(标准) | ASL |
| v1.1.0-strict.txt | ASL_SCREENING_STRICT | 标题摘要筛选(严格) | ASL |
| v1.1.0-lenient.txt | ASL_SCREENING_LENIENT | 标题摘要筛选(宽松) | ASL |
| fulltext-screening/system_prompt.md | ASL_FULLTEXT_SYSTEM | 全文筛选(System) | ASL |
| fulltext-screening/user_prompt_template.md | ASL_FULLTEXT_USER | 全文筛选(User) | ASL |
| v1.1.0-standard.txt | ASL_SCREENING_STANDARD | <EFBFBD>「俶遭隕∫ュ幃€?譬<>) | ASL |
| v1.1.0-strict.txt | ASL_SCREENING_STRICT | <EFBFBD>「俶遭隕∫ュ幃€?荳・譬シ) | ASL |
| v1.1.0-lenient.txt | ASL_SCREENING_LENIENT | <EFBFBD>「俶遭隕∫ュ幃€?螳ス譚セ) | ASL |
| fulltext-screening/system_prompt.md | ASL_FULLTEXT_SYSTEM | 蜈ィ譁<EFBFBD>ュ幃€?System) | ASL |
| fulltext-screening/user_prompt_template.md | ASL_FULLTEXT_USER | 蜈ィ譁<EFBFBD>ュ幃€?User) | ASL |
### 5.3 蜈カ莉匁ィ。蝮苓ソ∫ァサ<EFBDA7>育ャャ荳画音<E794BB>悟セ<E6829F>ョ夲シ<E5A4B2>
| 模块 | 预计Prompt数量 | 优先级 |
| 讓。蝮<EFBFBD> | 鬚<>ョ。Prompt謨ー驥<EFBDB0> | 莨伜<E88EA8>郤?|
|------|---------------|--------|
| DC | 5+ | P1 |
| PKB | 3 | P2 |
| IIT | 3 | P2 |
| AIA | 10(智能体) | P3待开发 |
| AIA | 10<EFBFBD>域匱閭ス菴難シ?| P3<50>亥セ<E4BAA5>€蜿托シ<E68998> |
---
@@ -579,35 +434,30 @@ Day 7: RVW模块集成 + 端到端测试
| 譚<>剞 Code | 謠剰ソー | 鬟朱勦遲臥コァ |
|-----------|------|---------|
| `prompt:view` | 查看Prompt列表和详情 | 低 |
| `prompt:edit` | 创建/修改DRAFT版本 | |
| `prompt:debug` | 开启调试模式 | 中 |
| `prompt:publish` | 发布DRAFT→ACTIVE | **高** |
| `prompt:view` | 譟・逵輝rompt蛻苓。ィ蜥瑚ッヲ諠?| 菴?|
| `prompt:edit` | 蛻帛サコ/菫ョ謾ケDRAFT迚域悽 | 荳?|
| `prompt:debug` | €蜷ッ隹<EFBFBD>ッ墓ィ。蠑?| 荳?|
| `prompt:publish` | 蜿大クゥRAFT竊但CTIVE | **鬮?* |
### 6.2 隗定牡譚<E789A1>剞蛻<E5899E><E89BBB>
| 隗定牡 | prompt:view | prompt:edit | prompt:debug | prompt:publish |
|------|-------------|-------------|--------------|----------------|
| SUPER_ADMIN | ✅ | ✅ | ✅ | ✅ |
| PROMPT_ENGINEER | ✅ | ✅ | ✅ | ❌ |
| HOSPITAL_ADMIN | ❌ | ❌ | ❌ | ❌ |
| PHARMA_ADMIN | ❌ | ❌ | ❌ | ❌ |
| USER | ❌ | ❌ | ❌ | ❌ |
### 6.3 典型工作流
| SUPER_ADMIN | 笨?| 笨?| 笨?| 笨?|
| PROMPT_ENGINEER | 笨?| 笨?| 笨?| 笶?|
| HOSPITAL_ADMIN | 笶?| 笶?| 笶?| 笶?|
| PHARMA_ADMIN | 笶?| 笶?| 笶?| 笶?|
| USER | 笶?| 笶?| 笶?| 笶?|
### 6.3 蜈ク蝙句キ・菴懈オ?
```
1. Prompt工程师 登录系统
2. 进入 Prompt 管理页面,找到 RVW_EDITORIAL
3. 修改内容,点击"保存草稿"
4. 开启调试模式(选择 RVW 模块)
5. 切换到 RVW 业务页面,上传测试稿件
6. 验证效果如果OK
- 关闭调试模式
- 通知 超级管理员 审核
7. 超级管理员 登录,查看草稿,点击"发布"
8. 新版本生效
```
1. Prompt蟾・遞句ク?逋サ蠖慕ウサ扈<EFBDBB>
2. 霑帛<EFBFBD> Prompt 邂。逅<EFBFBD>。オ髱「<EFBFBD>梧伽蛻?RVW_EDITORIAL
3. 菫ョ謾ケ蜀<EFBFBD>ョケ<EFBFBD>檎せ蜃?菫晏ュ倩拷遞ソ"
4. €蜷ッ隹<EFBFBD>ッ墓ィ。蠑擾シ磯€画叫 RVW 讓。蝮暦シ?5. 蛻<>困蛻?RVW 荳壼苅鬘オ髱「<E9ABB1>御ク贋シ<E8B48B>豬玖ッ慕ィソ莉?6. 鬪瑚ッ∵譜譫懶シ悟ヲよ棡OK<4F>? - 蜈ウ髣ュ隹<EFBDAD>ッ墓ィ。蠑<EFBDA1>
- 騾夂衍 雜<>コァ邂。逅<EFBDA1><E98085>?螳。譬ク
7. 雜<>コァ邂。逅<EFBDA1><E98085>?逋サ蠖包シ梧衍逵玖拷遞ソ<E9819E>檎せ蜃サ"蜿大ク<E5A4A7>"
8. 譁ー迚域悽逕滓<E98095>?```
---
@@ -615,7 +465,7 @@ Day 7: RVW模块集成 + 端到端测试
### 7.1 蜊募<E89C8A>豬玖ッ<E78E96>
| 测试项 | 覆盖内容 |
| 豬玖ッ暮。?| 隕<>尠蜀<E5B0A0>ョケ |
|--------|---------|
| PromptService.get() | 轣ー蠎ヲ霍ッ逕ア騾サ霎<EFBDBB> |
| PromptService.render() | 蜿倬㍼貂イ譟<EFBDB2> |
@@ -625,40 +475,37 @@ Day 7: RVW模块集成 + 端到端测试
| 豬玖ッ募惻譎ッ | 鬚<>悄扈捺棡 |
|---------|---------|
| 普通用户访问 | 返回 ACTIVE 版本 |
| 调试者开启RVW调试访问 RVW Prompt | 返回 DRAFT 版本 |
| 调试者开启RVW调试访问 ASL Prompt | 返回 ACTIVE 版本 |
| 譎ョ騾夂畑謌キ隶ソ髣?| 霑泌屓 ACTIVE 迚域悽 |
| <EFBFBD>ッ戊€<EFBFBD>シ亥シ€蜷ッRVW隹<EFBFBD>ッ包シ芽ョソ髣?RVW Prompt | 霑泌屓 DRAFT 迚域悽 |
| <EFBFBD>ッ戊€<EFBFBD>シ亥シ€蜷ッRVW隹<EFBFBD>ッ包シ芽ョソ髣?ASL Prompt | 霑泌屓 ACTIVE 迚域悽 |
| 隹<>ッ戊€<E6888A>シ域悴蠑€蜷ッ隹<EFBDAF>ッ包シ芽ョソ髣ョ | 霑泌屓 ACTIVE 迚域悽 |
| ACTIVE 版本时 | 返回 FALLBACK |
| 数据库不可用时 | 返回 FALLBACK |
### 7.3 端到端测试
| 譌?ACTIVE 迚域悽譌?| 霑泌屓 FALLBACK |
| 謨ー謐ョ蠎謎ク榊庄逕ィ譌?| 霑泌屓 FALLBACK |
### 7.3 遶ッ蛻ー遶ッ豬玖ッ?
| 豬玖ッ墓オ∫ィ<E288AB> | 豁・鬪、 |
|---------|------|
| 完整编辑流程 | 登录→查看列表→编辑→保存草稿→开启调试→验证→发布 |
| 螳梧紛郛冶セ第オ∫ィ<EFBFBD> | 逋サ蠖補<E8A096>譟・逵句<E980B5>陦ィ竊堤シ冶セ鯛<EFBDBE>菫晏ュ倩拷遞ソ竊貞シ€蜷ッ隹<EFBDAF>ッ補<EFBDAF>鬪瑚ッ≫<EFBDAF>蜿大ク?|
| 蝗樊サ壽オ∫ィ<E288AB> | 蜿大ク<E5A4A7>漠隸ッ迚域悽竊貞屓貊壺<E8B28A>鬪瑚ッ<E7919A> |
| 譚<>剞豬玖ッ<E78E96> | PROMPT_ENGINEER 譌<>豕募書蟶<E69BB8> |
---
## 8. 风险与应对
### 8.1 技术风险
## 8. 鬟朱勦荳主コ泌ッ?
### 8.1 謚€譛ッ鬟朱<E9AC9F>?
| 鬟朱勦 | 蠖ア蜩<EFBDB1> | 讎ら紫 | 蠎泌ッケ遲也払 |
|------|------|------|---------|
| capability_schema 创建失败 | 系统无法启动 | 低 | 独立SQL脚本可手动修复 |
| 数据库查询超时 | 用户请求变慢 | 低 | 使用缓存 + 兜底 |
| 多实例缓存不一致 | 用户体验不一致 | 中 | LISTEN/NOTIFY 同步 |
| 调试者误发布错误Prompt | 线上用户受影响 | 中 | 权限分离 + 版本回滚 |
| capability_schema 蛻帛サコ螟ア雍・ | 邉サ扈滓裏豕募星蜉ィ | 菴?| 迢ャ遶鬼QL閼壽悽<E5A3BD>悟庄謇句勘菫ョ螟<EFBDAE> |
| 謨ー謐ョ蠎捺衍隸「雜<EFBFBD><EFBFBD>?| 逕ィ謌キ隸キ豎ょ序諷「 | 菴?| 菴ソ逕ィ郛灘ュ<E78198> + 蜈懷コ<E687B7> |
| 螟壼ョ樔セ狗シ灘ュ倅ク堺ク€閾?| 逕ィ謌キ菴馴ェ御ク堺ク€閾?| 荳?| LISTEN/NOTIFY 蜷梧ュ・ |
| <EFBFBD>ッ戊€<EFBFBD>ッッ蜿大ク<EFBFBD>漠隸ッPrompt | 郤ソ荳顔畑謌キ蜿怜スア蜩?| 荳?| 譚<>剞蛻<E5899E>ヲサ + 迚域悽蝗樊サ<E6A88A> |
### 8.2 荳壼苅鬟朱勦
| 鬟朱勦 | 蠖ア蜩<EFBDB1> | 蠎泌ッケ遲也払 |
|------|------|---------|
| Prompt 改动导致AI效果下降 | 业务受影响 | 灰度验证 + 快速回滚 |
| 权限管理混乱 | 误操作 | 严格RBAC + 审计日志 |
| Prompt 謾ケ蜉ィ蟇シ閾エAI謨域棡荳矩剄 | 荳壼苅蜿怜スア蜩?| 轣ー蠎ヲ鬪瑚ッ<E7919A> + 蠢ォ騾溷屓貊?|
| <EFBFBD>剞邂。逅<EFBFBD>キキ荵ア | 隸ッ謫堺ス?| 荳・譬シRBAC + 螳。隶。譌・蠢<EFBDA5> |
### 8.3 蜈懷コ慕ュ也払
@@ -677,8 +524,7 @@ async get(code: string, variables: any, userId: string): Promise<string> {
return this.render(cached, variables);
}
// Level 3: 硬编码兜底
logger.error('Cache miss, using fallback', { code });
// Level 3: 遑ャ郛也<EFBFBD><EFBFBD>蠎? logger.error('Cache miss, using fallback', { code });
return this.render(this.getFallback(code), variables);
}
}
@@ -690,9 +536,9 @@ async get(code: string, variables: any, userId: string): Promise<string> {
### A. 逶ク蜈ウ譁<EFBDB3>。」
- [Prompt管理系统与灰度预览设计方案](../02-技术设计/02-通用能力层_03-Prompt管理系统与灰度预览设计方案.md)
- [Prompt管理系统快速参考](../02-技术设计/03-Prompt管理系统快速参考.md)
- [Prompt管理后台设计](../02-技术设计/Prompt管理后台设计.md)
- [Prompt邂。逅<EFBFBD>ウサ扈滉ク守<EFBFBD>蠎ヲ鬚<EFBFBD>ァ郁ョセ隶。譁ケ譯<EFBFBD>(../02-謚€譛ッ隶セ隶?02-騾夂畑閭ス蜉帛ア<E5B89B>03-Prompt邂。逅<EFBDA1>ウサ扈滉ク守<EFBDB8>蠎ヲ鬚<EFBDA6>ァ郁ョセ隶。譁ケ譯?md)
- [Prompt邂。逅<EFBFBD>ウサ扈溷ソォ騾溷盾閠ゾ(../02-謚€譛ッ隶セ隶?03-Prompt邂。逅<EFBDA1>ウサ扈溷ソォ騾溷盾閠?md)
- [Prompt邂。逅<EFBFBD>錘蜿ー隶セ隶。](../02-謚€譛ッ隶セ隶?Prompt邂。逅<EFBDA1>錘蜿ー隶セ隶。.md)
### B. 莉」遐∽ス咲スョ
@@ -706,21 +552,17 @@ async get(code: string, variables: any, userId: string): Promise<string> {
### C. 蜻ス蜷崎ァ<E5B48E>
**Prompt Code 命名规则:**
**Prompt Code 蜻ス蜷崎ァ<EFBFBD><EFBFBD><EFBFBD>?*
```
{MODULE}_{FUNCTION}_{ROLE}
示例:
- RVW_EDITORIAL # RVW模块-稿约规范性评估
- RVW_METHODOLOGY # RVW模块-方法学评估
- ASL_SCREENING_STANDARD # ASL模块-标准筛选
- AIA_AGENT_STATISTICIAN # AIA模块-统计师智能体
遉コ萓具シ?- RVW_EDITORIAL # RVW讓。蝮<EFBDA1>-遞ソ郤ヲ隗<EFBDA6>激諤ァ隸<EFBDA7>シ?- RVW_METHODOLOGY # RVW讓。蝮<EFBDA1>-譁ケ豕募ュヲ隸<EFBDA6>シ?- ASL_SCREENING_STANDARD # ASL讓。蝮<EFBDA1>-譬<>㊥遲幃€?- AIA_AGENT_STATISTICIAN # AIA讓。蝮<EFBDA1>-扈溯ョ。蟶域匱閭ス菴<EFBDBD>
```
---
*€蜷取峩譁ー<EFBFBD><EFBFBD>2026-01-11*
**🚀 准备好开始了吗?从 Phase 3.5.1 第一个任务开始!**
**<EFBFBD>噫 蜃<><EFBFBD>・ス蠑€蟋倶コ<E580B6><EFBFBD>滉サ?Phase 3.5.1 隨ャ荳€荳ェ莉サ蜉。蠑€蟋具シ<E585B7>**