Files
AIclinicalresearch/docs/03-业务模块/ADMIN-运营管理端/04-开发计划/02-Prompt管理系统开发计划.md
HaHafeng 1b53ab9d52 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%)
2026-01-14 19:15:01 +08:00

569 lines
27 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Prompt邂。逅<EFBDA1>ウサ扈溷シ€蜿題ョ。蛻?
> **迚域悽<E59F9F>?* v1.2
> **蛻帛サコ譌・譛滂シ?* 2026-01-11
> **譖エ譁ー譌・譛滂シ?* 2026-01-12
> **莨伜<E88EA8>郤ァ<E983A4><EFBDA7>** P0<50><EFBFBD>ク蠢<EFBDB8>€夂畑閭ス蜉幢シ?
> **迥カ諤<EFBDB6><EFBFBD>** 笨?Phase 3.5.1-3.5.5 蜈ィ驛ィ螳梧<E89EB3><E6A2A7>?00%<25>?
> **鬚<>ョ。蟾・譛滂シ?* 7荳ェ蟾・菴懈律
> **螳樣刔螳梧<E89EB3><E6A2A7>?* Day 1-7 蟾イ螳梧<E89EB3><E6A2A7><EFBFBD>2026-01-12<31>?
---
## <20>識 蠢ォ騾溷ッシ闊ェ<E9978A><EFBDAA>2026-01-11譖エ譁ー<E8AD81>?
### 笨?蟾イ螳梧<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.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 荳壼苅髮<E88B85><E9ABAE>** | RVW讓。蝮鈴寔謌舌€∬ョ、隸∬ァ<E288AC>激蛹<E6BF80> | `backend/src/modules/rvw/` | 2026-01-12 笨?|
### <20><> Phase 3.5.5 螳梧<E89EB3><EFBFBD>ョケ<EFBDAE>?026-01-12<31>?
**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`
**逡碁擇莨伜喧<E4BC9C>?*
- 笨?Prompt 蛻苓。ィ讓。蝮怜<E89DAE>譏セ遉コ荳ュ譁<EFBDAD>錐遘?- 笨?迚域悽蜴<E682BD>彰蠅槫シコ<EFBDBC>域衍逵句<E980B5>螳ケ縲∝屓貊壼粥閭ス<E996AD><EFBDBD>
---
## <20>搭 逶ョ蠖<EFBDAE>
1. [鬘ケ逶ョ讎りソー](#1-鬘ケ逶ョ讎りソー)
2. [髴€豎ら。ョ隶、](#2-髴€豎ら。ョ隶?
3. [謚€譛ッ譫カ譫Ь(#3-謚€譛ッ譫カ譫?
4. [蠑€蜿題ョ。蛻綻(#4-蠑€蜿題ョ。蛻?
5. [謨ー謐ョ霑∫ァサ隶。蛻綻(#5-謨ー謐ョ霑∫ァサ隶。蛻<EFBDA1>)
6. [<EFBFBD>剞隶セ隶。](#6-譚<>剞隶セ隶。)
7. [豬玖ッ戊ョ。蛻綻(#7-豬玖ッ戊ョ。蛻<EFBDA1>)
8. [鬟朱勦荳主コ泌ッケ](#8-鬟朱勦荳主コ泌ッ?
---
## 1. 鬘ケ逶ョ讎りソー
### 1.1 鬘ケ逶ョ逶ョ譬<EFBDAE>
<EFBFBD>サコ荳€荳?*逕滉コァ邇ッ蠅<EFBDAF><E8A085>蠎ヲ鬚<EFBDA6>ァ育ウサ扈<EFBDBB>**<2A><EFBFBD>隶ク荳謎ク壻ココ蜻假シ<E58187>rompt蟾・遞句ク医€∽クエ蠎贋ク灘ョカ<EFBDAE>牙惠逕滉コァ邇ッ蠅<EFBDAF>ョ牙<EFBDAE><EFBFBD>ッ柊I Prompt<70>悟ョ樒鴫<E6A892><E9B4AB>
- 笨?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> |
| 豈乗ャ。隹<EFBDA1>紛髴€謾ケ莉」遐≫<E98190>驛ィ鄂イ<E98482>?蛻<><EFBFBD>?| 謨ー謐ョ蠎灘勘諤<E58B98><E8ABA4>鄂ョ<E98482>檎ァ堤コァ逕滓譜 |
| 荳エ蠎贋ク灘ョカ譌<EFBDB6>豕募盾荳手ー<E6898B><EFBFBD> | RBAC + 蜿句・ス邂。逅<EFBDA1>阜髱「 |
| 蜿大ク<E5A4A7>錘譌<E98C98>豕募屓貊?| 迚域悽蜴<E682BD>彰 + 荳€髞ョ蝗樊サ?|
### 1.3 豸牙所讓。蝮嶺シ伜<EFBDBC>郤?
| 莨伜<E88EA8>郤?| 讓。蝮<EFBDA1> | Prompt謨ー驥<EFBDB0> | 螟肴揩蠎?| 迥カ諤?|
|--------|------|-----------|--------|------|
| <20>閥 P0 | **RVW** | 4荳?| 箝絶ュ<E7B5B6> | **鬥匁音謗・蜈・** |
| <20>泯 P1 | ASL | 8荳? | 箝絶ュ絶ュ絶ュ絶ュ?| 莠梧悄 |
| <20>泯 P1 | DC | 5荳? | 箝絶ュ絶ュ絶ュ<E7B5B6> | 莠梧悄 |
| <20>泙 P2 | PKB | 3荳?| 箝絶ュ絶ュ?| 荳画悄 |
| <20>泙 P2 | IIT | 3荳?| 箝絶ュ絶ュ絶ュ<E7B5B6> | 荳画悄 |
| <20>鳩 P3 | AIA | **10荳ェ譎コ閭ス菴<EFBDBD>** | 箝絶ュ絶ュ?| 蠕<>€蜿第ィ。蝮?|
---
## 2. 髴€豎ら。ョ隶?
### 2.1 蟾イ遑ョ隶、髴€豎?
| 髴€豎る。ケ | 遑ョ隶、扈捺棡 |
|--------|---------|
| 莨伜<E88EA8>謗・蜈・讓。蝮<EFBDA1> | 笨?RVW 讓。蝮怜<E89DAE>陦鯉シ瑚オー騾壼錘謇ゥ螻<EFBDA9> |
| 譚<>剞扈<E5899E><E68988> | 笨?PROMPT_ENGINEER 蜿ェ閭ス郛冶セ托シ郡UPER_ADMIN 謇崎<E8AC87>蜿大ク<E5A4A7> |
| 蛻晏ァ区焚謐ョ霑∫ァサ | 笨?閾ェ蜉ィ霑∫ァサ邇ー譛画枚莉カPrompt蛻ー謨ー謐ョ蠎<EFBDAE> |
| 隹<>ッ戊激蝗エ | 笨?蜿ッ謖<EFBDAF>ョ壽ィ。蝮暦シ亥ヲょ宵隹<E5AEB5>ッ紐VW<56>御ク榊スア蜩喉SL<53>?|
| AIA譎コ閭ス菴?| 笨?鬚<>ョ。10荳ェ譎コ閭ス菴難シ梧悴譚・騾夊ソ⑰rompt邂。逅<EFBDA1> |
### 2.2 邉サ扈溽鴫迥カ
**邇ー譛臼rompt蟄伜お譁ケ蠑擾シ?*
```
backend/prompts/
笏懌楳笏€ review_editorial_system.txt # RVW - 遞ソ郤ヲ隗<EFBDA6>激諤ァ隸<EFBDA7>シ?笏懌楳笏€ 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
笏懌楳笏€ v1.1.0-standard.txt
笏披楳笏€ v1.1.0-strict.txt
```
**邇ー譛芽ー<E88ABD>畑譁ケ蠑擾シ?*
```typescript
// 蠖灘燕<E78198>壻サ取枚莉カ隸サ蜿<EFBDBB>
const systemPrompt = await fs.readFile(PROMPT_PATH, 'utf-8');
// 逶ョ譬<EFBDAE>シ壻サ傘romptService闔キ蜿<EFBDB7>
const systemPrompt = await promptService.get('RVW_EDITORIAL', {}, userId);
```
---
## 3. 謚€譛ッ譫カ譫?
### 3.1 謨エ菴捺楔譫<E6A594><E8ADAB>?
```
笏娯楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏?笏? 霑占是邂。逅<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.3 讓。蝮礼コァ隹<EFBDA7>ッ戊ョセ隶?
```typescript
// 隹<>ッ墓ィ。蠑乗焚謐ョ扈捺桷
interface DebugState {
userId: string;
modules: Set<string>; // 'RVW', 'ASL', 'DC', 'ALL'
enabledAt: Date;
}
// 蠑€蜷ッ隹<EFBDAF>ッ包シ壼宵隹<E5AEB5>ッ紐VW讓。蝮<EFBDA1>
await promptService.setDebugMode(userId, ['RVW'], true);
// 闔キ蜿鳳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<56>亥屏荳コuserId譛ェ蠑€蜷ッASL隹<4C>ッ包シ?```
### 3.4 蜿倬㍼譬。鬪梧惻蛻カ<E89BBB><EFBDB6>ariable Validation<6F>解氣?
**髣ョ鬚伜惻譎ッ<E8AD8E>?* 郛冶セ大勣驥悟<E9A9A5><EFBFBD> `{{title}}`<60>御ス<E5BEA1> `variables` 蟄玲ョオ豐。驟咲ス?`title`<60>瑚ー<E7919A>ッ墓慮謚・髞吶€?
**隗」蜀ウ譁ケ譯茨シ?*
```typescript
// 蜷守ォッ<EFBDAB>壻ソ晏ュ俶慮閾ェ蜉ィ謠仙叙蜿倬㍼
function extractVariables(content: string): string[] {
const regex = /\{\{(\w+)\}\}/g;
const variables = new Set<string>();
let match;
while ((match = regex.exec(content)) !== null) {
variables.add(match[1]);
}
return Array.from(variables);
}
// 菫晏ュ倩拷遞ソ譌カ閾ェ蜉ィ譖エ譁?variables 蟄玲ョオ
async saveDraft(templateId: number, content: string, ...) {
const extractedVars = extractVariables(content);
// 閾ェ蜉ィ譖エ譁ー讓。譚ソ逧?variables 蟄玲ョオ
await prisma.prompt_templates.update({
where: { id: templateId },
data: { variables: extractedVars },
});
// 蛻帛サコ譁ー迚域<E8BF9A>? await prisma.prompt_versions.create({
data: { template_id: templateId, content, ... }
});
}
```
**蜑咲ォッ<EFBDAB>夊ー<E5A48A>ッ慕阜髱「閾ェ蜉ィ逕滓<E98095>蜿倬㍼霎灘<E99C8E>陦ィ蜊?*
```tsx
// PromptDebugPanel.tsx
const PromptDebugPanel = ({ variables }: { variables: string[] }) => {
const [values, setValues] = useState<Record<string, string>>({});
return (
<div className="debug-panel">
<h4><3E>統 隹<>ッ募序驥<E5BA8F></h4>
{variables.map(varName => (
<Form.Item key={varName} label={varName}>
<Input
placeholder={`霎灘<EFBFBD> ${varName} 逧<>€`}
value={values[varName]}
onChange={e => setValues({ ...values, [varName]: e.target.value })}
/>
</Form.Item>
))}
<Button type="primary" onClick={() => onTest(values)}>
<20>ァェ 豬玖ッ墓クイ譟<EFBDB2>
</Button>
</div>
);
};
```
**譬。鬪梧慮譛コ<E8AD9B>?*
| 譌カ譛コ | 蜉ィ菴<EFBDA8> |
|------|------|
| 菫晏ュ倩拷遞ソ譌?| 閾ェ蜉ィ謠仙叙蜿倬㍼<E580AC>梧峩譁?`variables` 蟄玲ョオ |
| 蜿大ク<E5A4A7><EFBDB8>?| 隴ヲ蜻奇シ壼ヲよ<EFBDA6>?DRAFT 逧<>序驥丈ク<E4B888> ACTIVE 荳榊酔<E6A68A>梧署遉?蜿倬㍼蟾イ蜿俶<E89CBF>? |
| 隹<>ッ墓<EFBDAF>?| 蜑咲ォッ譬ケ謐ョ `variables` 閾ェ蜉ィ逕滓<E98095>霎灘<E99C8E>陦ィ蜊<EFBDA8> |
| 貂イ譟捺<E8AD9F>?| 譬。鬪梧署萓帷噪蜿倬㍼譏ッ蜷ヲ螳梧紛<E6A2A7>檎シコ螟ア蛻呎鴨蜃コ譏守。ョ髞呵ッ?|
---
## 4. 蠑€蜿題ョ。蛻?
### 4.1 諤サ菴捺慮髣エ郤?
```
Day 1-2: 蝓コ遑€隶セ譁ス謳ュ蟒コ
Day 3: PromptService 譬ク蠢<EFBDB8>ョ樒鴫
Day 4: 邂。逅<EFBDA1>PI蠑€蜿?Day 5-6: 蜑咲ォッ邂。逅<EFBDA1>阜髱「
Day 7: RVW讓。蝮鈴寔謌<E5AF94> + 遶ッ蛻ー遶ッ豬玖ッ?```
### 4.2 隸ヲ扈<EFBDA6>ササ蜉。貂<EFBDA1>
#### Phase 3.5.1: 蝓コ遑€隶セ譁ス<E8AD81><EFBDBD>ay 1-2<>?
##### Day 1: 謨ー謐ョ蠎灘㊥螟?
- [ ] 蛻帛サコ `capability_schema` Schema
```sql
CREATE SCHEMA IF NOT EXISTS capability_schema;
```
- [ ] 譖エ譁ー `schema.prisma` 豺サ蜉<EFBDBB> Prompt 逶ク蜈ウ讓。蝙<EFBDA1>
- [ ] `PromptStatus` 譫壻クセ
- [ ] `prompt_templates` 讓。蝙<EFBDA1>
- [ ] `prompt_versions` 讓。蝙<EFBDA1>
- [ ] 謇ァ陦<EFBDA7> `prisma db push` 蛻帛サコ陦?
- [ ] 豺サ蜉<EFBDBB> Prompt 譚<>剞蛻?`permissions` 陦? ```sql
INSERT INTO platform_schema.permissions (code, name, description, module) VALUES
('prompt:view', '譟・逵輝rompt', '譟・逵輝rompt讓。譚ソ蛻苓。ィ蜥瑚ッヲ諠?, 'admin'),
('prompt:edit', '郛冶セ善rompt', '蛻帛サコ蜥御ソョ謾ケPrompt闕臥ィソ', 'admin'),
('prompt:debug', '隹<>ッ姫rompt', '蠑€蜷ッ隹<EFBDAF>ッ墓ィ。蠑?, 'admin'),
('prompt:publish', '蜿大クケrompt', '蟆<>拷遞ソ蜿大ク<E5A4A7>クコ豁」蠑冗<E8A091>?, 'admin');
```
- [ ] 譖エ譁ー `role_permissions` 陦? - [ ] SUPER_ADMIN: prompt:view, prompt:edit, prompt:debug, prompt:publish
- [ ] PROMPT_ENGINEER: prompt:view, prompt:edit, prompt:debug<75>域裏publish<73>?
##### Day 2: 謨ー謐ョ霑∫ァサ<EFBDA7><EFBDBB>VW讓。蝮暦シ?
- [ ] 郛門<E9839B>霑∫ァサ閼壽悽 `scripts/migrate-prompts.ts`
- [ ] 霑∫ァサ RVW 讓。蝮<EFBDA1> Prompt
| 譁<>サカ | Code | 蜷咲ァー |
|------|------|------|
| review_editorial_system.txt | RVW_EDITORIAL | 遞ソ郤ヲ隗<EFBDA6>激諤ァ隸<EFBDA7>シ?|
| review_methodology_system.txt | RVW_METHODOLOGY | 譁ケ豕募ュヲ隸<EFBDA6>シ?|
> 豕ィ<E8B195>啻topic_evaluation_*` 譏?騾蛾「倩ッ<E580A9>シー"蜉溯<E89C89><E6BAAF>御ク榊ア樔コ山VW螳。遞ソ讓。蝮<EFBDA1>
- [ ] 鬪瑚ッ∬ソ∫ァサ謨ー謐ョ螳梧紛諤?
---
#### Phase 3.5.2: PromptService 譬ク蠢<EFBDB8><EFBFBD>ay 3<>?
- [ ] 蛻帛サコ譁<EFBDBA>サカ扈捺桷
```
backend/src/common/capabilities/prompt/
笏懌楳笏€ prompt.service.ts # 譬ク蠢<EFBDB8>恪蜉。
笏懌楳笏€ prompt.types.ts # 邀サ蝙句ョ壻ケ<E5A3BB>
笏懌楳笏€ prompt.fallbacks.ts # 蜈懷コ姫rompt
笏披楳笏€ index.ts # 蟇シ蜃コ
```
- [ ] 螳樒鴫 `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)` - <20><> 譬。鬪悟序驥丞ョ梧紛諤?
- [ ] 螳樒鴫辜ュ譖エ譁ー譛コ蛻? - [ ] `initHotReload()` - 逶大成 LISTEN/NOTIFY
- [ ] 謾カ蛻ー騾夂衍蜷取ク<E58F96>ゥ?`activeCache`
- [ ] 郛門<E9839B>蜈懷コ姫rompt<70><74>prompt.fallbacks.ts`<EFBFBD>? ```typescript
export const FALLBACK_PROMPTS: Record<string, string> = {
'RVW_EDITORIAL': `<EFBFBD>譏ッ荳€菴崎オ<EFBFBD>キア逧<EFBFBD>ュヲ譛ッ譛溷<EFBFBD>郛冶セ<EFBFBD>...`,
'RVW_METHODOLOGY': `<EFBFBD>譏ッ荳€菴肴婿豕募ュヲ荳灘ョカ...`,
// ...
};
```
---
#### Phase 3.5.3: 邂。逅<EFBDA1>PI<50><49>ay 4<>?
- [ ] 蛻帛サコ譁<EFBDBA>サカ扈捺桷
```
backend/src/modules/admin/prompt/
笏懌楳笏€ prompt.controller.ts # 謗ァ蛻カ蝎? 笏懌楳笏€ prompt.routes.ts # 霍ッ逕ア螳壻ケ<E5A3BB>
笏披楳笏€ prompt.schema.ts # 隸キ豎<EFBDB7>/蜩榊コ粘chema
```
- [ ] 螳樒鴫 API 謗・蜿」
| 譁ケ豕<EFBDB9> | 霍ッ蠕<EFBDAF> | 譚<>剞 | 蜉溯<E89C89> |
|------|------|------|------|
| 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/:id/draft` | prompt:edit | 菫晏ュ倩拷遞ソ |
| POST | `/api/admin/prompts/:id/publish` | prompt:publish | 蜿大ク<E5A4A7><EFBFBD>RAFT竊但CTIVE<56>?|
| POST | `/api/admin/prompts/:id/rollback` | prompt:publish | 蝗樊サ壼芦謖<E88AA6>ョ夂沿譛?|
| POST | `/api/admin/prompts/debug` | prompt:debug | 蠑€蜈ウ隹<EFBDB3>ッ墓ィ。蠑?|
| GET | `/api/admin/prompts/debug/status` | prompt:debug | 闔キ蜿門ス灘燕隹<E78795>ッ慕憾諤?|
- [ ] 豺サ蜉<EFBDBB><EFBFBD>剞荳ュ髣エ莉カ譽€譟?
- [ ] 豕ィ蜀瑚キッ逕ア蛻?`index.ts`
---
#### Phase 3.5.4: 蜑咲ォッ邂。逅<EFBDA1>阜髱「<E9ABB1><EFBDA2>ay 5-6<>?
##### Day 5: 蛻苓。ィ鬘?+ 隹<>ッ募シ€蜈?
- [ ] 蛻帛サコ譁<EFBDBA>サカ扈捺桷
```
frontend-v2/src/modules/admin/prompt/
笏懌楳笏€ pages/
笏? 笏懌楳笏€ PromptListPage.tsx # 蛻苓。ィ鬘? 笏? 笏披楳笏€ PromptEditorPage.tsx # 郛冶セ鷹。? 笏懌楳笏€ components/
笏? 笏懌楳笏€ PromptDebugSwitch.tsx # 隹<>ッ募シ€蜈? 笏? 笏懌楳笏€ PromptVersionHistory.tsx # 迚域悽蜴<E682BD>
笏? 笏披楳笏€ PromptPreview.tsx # 鬚<>ァ育サ<E882B2>サカ
笏懌楳笏€ hooks/
笏? 笏披楳笏€ usePromptApi.ts # API隹<49>
笏披楳笏€ index.ts
```
- [ ] `PromptListPage.tsx`
- [ ] 讓。譚ソ蛻苓。ィ螻慕、コ
- [ ] 讓。蝮礼ュ幃€会シ<E4BC9A>VW/ASL/DC/...<2E>? - [ ] 迥カ諤∫ュ幃€会シ域怏闕臥ィ?譌<>闕臥ィソ<EFBDA8><EFBDBF>
- [ ] 謳懃エ「蜉溯<E89C89>
- [ ] `PromptDebugSwitch.tsx`
- [ ] 譚<>剞譽€譟・<E8AD9F>井サ?prompt:debug 蜿ッ隗<EFBDAF>シ? - [ ] 讓。蝮鈴€画叫蝎ィ<E89D8E>亥庄螟夐€会シ<E4BC9A>
- [ ] 蠑€蜈ウ迥カ諤? - [ ] 蠑€蜷ッ蜷取仞遉コ隴ヲ蜻頑<E89CBB>?
##### Day 6: 郛冶セ大勣鬘オ髱?
- [ ] `PromptEditorPage.tsx`
- [ ] 蝓コ譛ャ菫。諱ッ螻慕、コ<EFBDA4><EFBDBA>ode, name, module<6C>? - [ ] 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>彰髱「譚ソ
- [ ] 蜿俶峩隸エ譏手セ灘<EFBDBE><E78198><EFBFBD>hangelog<6F>?
- [ ] `PromptDebugPanel.tsx` <20><>
- [ ] 譬ケ謐ョ variables 閾ェ蜉ィ逕滓<E98095>霎灘<E99C8E>陦ィ蜊<EFBDA8>
- [ ] "豬玖ッ墓クイ譟<EFBDB2>"謖蛾聴<E89BBE>夐「<E5A490>ァ亥序驥乗崛謐「蜷守噪謨域<E8ACA8>? - [ ] 貂イ譟鍋サ捺棡螻慕、コ
- [ ] `PromptVersionHistory.tsx`
- [ ] 迚域悽蛻苓。ィ
- [ ] 迚域悽蟇ケ豈<EFBDB9>
- [ ] 荳€髞ョ蝗樊サ?
- [ ] 髮<><E9ABAE>蛻ー蟇シ闊? - [ ] 霑占是邂。逅<EFBDA1>ォッ萓ァ霎ケ譬乗キサ蜉<EFBDBB>蜈・蜿」
- [ ] 鬘カ驛ィ譬乗キサ蜉<EFBDBB><EFBFBD>ッ募シ€蜈?
---
#### Phase 3.5.5: RVW讓。蝮鈴寔謌撰シ<E692B0>ay 7<>?
- [ ] 謾ケ騾?`editorialService.ts`
```typescript
// Before
const systemPrompt = await fs.readFile(PROMPT_PATH, 'utf-8');
// After
const systemPrompt = await promptService.get('RVW_EDITORIAL', {}, userId);
```
- [ ] 謾ケ騾?`methodologyService.ts`
- [ ] 謾ケ騾<EFBDB9>蜈カ莉?RVW 逶ク蜈ウ譛榊苅
- [ ] 遶ッ蛻ー遶ッ豬玖ッ? - [ ] 譎ョ騾夂畑謌キ<E8AC8C>壻スソ逕ィ ACTIVE 迚域悽
- [ ] 隹<>ッ戊€<E6888A>シ亥シ€蜷ッRVW隹<57>ッ包シ会シ壻スソ逕ィ DRAFT 迚域悽
- [ ] 隹<>ッ戊€<E6888A>シ域悴蠑€蜷ッRVW隹<57>ッ包シ会シ壻スソ逕ィ ACTIVE 迚域悽
- [ ] 蜿大ク<E5A4A7>オ∫ィ具シ咼RAFT 竊?ACTIVE
- [ ] 蝗樊サ壽オ∫ィ<E288AB>
---
### 4.3 莉サ蜉。霍溯クェ陦?
| ID | 莉サ蜉。 | 雍溯エ」莠?| 迥カ諤?| 螳梧<E89EB3>譌・譛<EFBDA5> |
|----|------|--------|------|---------|
| 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 | 豺サ蜉<EFBDBB><EFBFBD>剞謨ー謐ョ | AI | 笨?蟾イ螳梧<E89EB3>?| 2026-01-11 |
| 3.5.1.4 | 郛門<E9839B>霑∫ァサ閼壽悽 | 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<74>?| - |
| 3.5.2.3 | 郛門<E9839B>蜈懷コ姫rompt | AI | 笨?蟾イ螳梧<E89EB3>?| 2026-01-11 |
| 3.5.2.4 | 螳樒鴫蜿倬㍼謠仙叙 `extractVariables()` <20><> | AI | 笨?蟾イ螳梧<E89EB3>?| 2026-01-11 |
| 3.5.2.5 | 螳樒鴫蜿倬㍼譬。鬪<EFBDA1> `validateVariables()` <20><> | AI | 笨?蟾イ螳梧<E89EB3>?| 2026-01-11 |
| 3.5.3.1 | 螳樒鴫邂。逅<EFBDA1>PI | AI | 笨?蟾イ螳梧<E89EB3>?| 2026-01-11 |
| 3.5.3.2 | 豺サ蜉<EFBDBB><EFBFBD>剞譽€譟?| - | 竢ク<E7ABA2><EFBDB8> 證らシ難シ域ウィ驥頑脂<E9A091>?| - |
| 3.5.4.0 | 謳ュ蟒コ邂。逅<EFBDA1>ォッ蝓コ遑€譫カ譫<EFBDB6> | AI | 笨?蟾イ螳梧<E89EB3>?| 2026-01-11 |
| 3.5.4.1 | 螳樒鴫蛻苓。ィ鬘?| AI | 笨?蟾イ螳梧<E89EB3>?| 2026-01-11 |
| 3.5.4.2 | 螳樒鴫隹<E9B4AB>ッ募シ€蜈?| AI | 笨?蟾イ螳梧<E89EB3>?| 2026-01-11 |
| 3.5.4.3 | 螳樒鴫郛冶セ大勣<E5A4A7><E58BA3>odeMirror 6 邂€蛹也沿<E4B99F>榎 AI | 笨?蟾イ螳梧<E89EB3>?| 2026-01-11 |
| 3.5.4.4 | 螳樒鴫隹<E9B4AB>ッ暮擇譚ソ<E8AD9A>亥序驥剰セ灘<EFBDBE>陦ィ蜊包シ解氣<E8A7A3> | AI | 笨?蟾イ螳梧<E89EB3>?| 2026-01-11 |
| 3.5.5.1 | 謾ケ騾?RVW 譛榊苅 | - | 竢?蠕<>€蟋?| - |
| 3.5.5.2 | 遶ッ蛻ー遶ッ豬玖ッ?| - | 竢?蠕<>€蟋?| - |
---
## 5. 謨ー謐ョ霑∫ァサ隶。蛻<EFBDA1>
### 5.1 RVW讓。蝮苓ソ∫ァサ<EFBDA7>育ャャ荳€謇ケ<E8AC87><EFBDB9>
| 貅先枚莉?| Code | 蜷咲ァー | 讓。蝮<EFBDA1> | 迥カ諤?|
|--------|------|------|------|------|
| review_editorial_system.txt | RVW_EDITORIAL | 遞ソ郤ヲ隗<EFBDA6>激諤ァ隸<EFBDA7>シ?| RVW | ACTIVE |
| review_methodology_system.txt | RVW_METHODOLOGY | 譁ケ豕募ュヲ隸<EFBDA6>シ?| RVW | ACTIVE |
> 豕ィ<E8B195>啻topic_evaluation_*` 譏?騾蛾「倩ッ<E580A9>シー"蜉溯<E89C89><E6BAAF>御ク榊ア樔コ山VW螳。遞ソ讓。蝮暦シ梧悴霑∫ァサ
### 5.2 ASL讓。蝮苓ソ∫ァサ<EFBDA7>育ャャ莠梧音<E6A2A7>悟セ<E6829F>ョ夲シ<E5A4B2>
| 貅先枚莉?| 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 | 蜈ィ譁<EFBDA8>ュ幃€?System) | ASL |
| fulltext-screening/user_prompt_template.md | ASL_FULLTEXT_USER | 蜈ィ譁<EFBDA8>ュ幃€?User) | ASL |
### 5.3 蜈カ莉匁ィ。蝮苓ソ∫ァサ<EFBDA7>育ャャ荳画音<E794BB>悟セ<E6829F>ョ夲シ<E5A4B2>
| 讓。蝮<EFBDA1> | 鬚<>ョ。Prompt謨ー驥<EFBDB0> | 莨伜<E88EA8>郤?|
|------|---------------|--------|
| DC | 5+ | P1 |
| PKB | 3 | P2 |
| IIT | 3 | P2 |
| AIA | 10<31>域匱閭ス菴難シ?| P3<50>亥セ<E4BAA5>€蜿托シ<E68998> |
---
## 6. 譚<>剞隶セ隶。
### 6.1 譚<>剞螳壻ケ<E5A3BB>
| 譚<>剞 Code | 謠剰ソー | 鬟朱勦遲臥コァ |
|-----------|------|---------|
| `prompt:view` | 譟・逵輝rompt蛻苓。ィ蜥瑚ッヲ諠?| 菴?|
| `prompt:edit` | 蛻帛サコ/菫ョ謾ケDRAFT迚域悽 | 荳?|
| `prompt:debug` | 蠑€蜷ッ隹<EFBDAF>ッ墓ィ。蠑?| 荳?|
| `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 蜈ク蝙句キ・菴懈オ?
```
1. Prompt蟾・遞句ク?逋サ蠖慕ウサ扈<EFBDBB>
2. 霑帛<E99C91> Prompt 邂。逅<EFBDA1>。オ髱「<E9ABB1>梧伽蛻?RVW_EDITORIAL
3. 菫ョ謾ケ蜀<EFBDB9>ョケ<EFBDAE>檎せ蜃?菫晏ュ倩拷遞ソ"
4. 蠑€蜷ッ隹<EFBDAF>ッ墓ィ。蠑擾シ磯€画叫 RVW 讓。蝮暦シ?5. 蛻<>困蛻?RVW 荳壼苅鬘オ髱「<E9ABB1>御ク贋シ<E8B48B>豬玖ッ慕ィソ莉?6. 鬪瑚ッ∵譜譫懶シ悟ヲよ棡OK<4F>? - 蜈ウ髣ュ隹<EFBDAD>ッ墓ィ。蠑<EFBDA1>
- 騾夂衍 雜<>コァ邂。逅<EFBDA1><E98085>?螳。譬ク
7. 雜<>コァ邂。逅<EFBDA1><E98085>?逋サ蠖包シ梧衍逵玖拷遞ソ<E9819E>檎せ蜃サ"蜿大ク<E5A4A7>"
8. 譁ー迚域悽逕滓<E98095>?```
---
## 7. 豬玖ッ戊ョ。蛻<EFBDA1>
### 7.1 蜊募<E89C8A>豬玖ッ<E78E96>
| 豬玖ッ暮。?| 隕<>尠蜀<E5B0A0>ョケ |
|--------|---------|
| PromptService.get() | 轣ー蠎ヲ霍ッ逕ア騾サ霎<EFBDBB> |
| PromptService.render() | 蜿倬㍼貂イ譟<EFBDB2> |
| PromptService.getFallback() | 蜈懷コ暮€サ霎<EFBDBB> |
### 7.2 髮<><E9ABAE>豬玖ッ<E78E96>
| 豬玖ッ募惻譎ッ | 鬚<>悄扈捺棡 |
|---------|---------|
| 譎ョ騾夂畑謌キ隶ソ髣?| 霑泌屓 ACTIVE 迚域悽 |
| 隹<>ッ戊€<E6888A>シ亥シ€蜷ッRVW隹<57>ッ包シ芽ョソ髣?RVW Prompt | 霑泌屓 DRAFT 迚域悽 |
| 隹<>ッ戊€<E6888A>シ亥シ€蜷ッRVW隹<57>ッ包シ芽ョソ髣?ASL Prompt | 霑泌屓 ACTIVE 迚域悽 |
| 隹<>ッ戊€<E6888A>シ域悴蠑€蜷ッ隹<EFBDAF>ッ包シ芽ョソ髣ョ | 霑泌屓 ACTIVE 迚域悽 |
| 譌?ACTIVE 迚域悽譌?| 霑泌屓 FALLBACK |
| 謨ー謐ョ蠎謎ク榊庄逕ィ譌?| 霑泌屓 FALLBACK |
### 7.3 遶ッ蛻ー遶ッ豬玖ッ?
| 豬玖ッ墓オ∫ィ<E288AB> | 豁・鬪、 |
|---------|------|
| 螳梧紛郛冶セ第オ∫ィ<E288AB> | 逋サ蠖補<E8A096>譟・逵句<E980B5>陦ィ竊堤シ冶セ鯛<EFBDBE>菫晏ュ倩拷遞ソ竊貞シ€蜷ッ隹<EFBDAF>ッ補<EFBDAF>鬪瑚ッ≫<EFBDAF>蜿大ク?|
| 蝗樊サ壽オ∫ィ<E288AB> | 蜿大ク<E5A4A7>漠隸ッ迚域悽竊貞屓貊壺<E8B28A>鬪瑚ッ<E7919A> |
| 譚<>剞豬玖ッ<E78E96> | PROMPT_ENGINEER 譌<>豕募書蟶<E69BB8> |
---
## 8. 鬟朱勦荳主コ泌ッ?
### 8.1 謚€譛ッ鬟朱<E9AC9F>?
| 鬟朱勦 | 蠖ア蜩<EFBDB1> | 讎ら紫 | 蠎泌ッケ遲也払 |
|------|------|------|---------|
| capability_schema 蛻帛サコ螟ア雍・ | 邉サ扈滓裏豕募星蜉ィ | 菴?| 迢ャ遶鬼QL閼壽悽<E5A3BD>悟庄謇句勘菫ョ螟<EFBDAE> |
| 謨ー謐ョ蠎捺衍隸「雜<EFBDA2><E99B9C>?| 逕ィ謌キ隸キ豎ょ序諷「 | 菴?| 菴ソ逕ィ郛灘ュ<E78198> + 蜈懷コ<E687B7> |
| 螟壼ョ樔セ狗シ灘ュ倅ク堺ク€閾?| 逕ィ謌キ菴馴ェ御ク堺ク€閾?| 荳?| LISTEN/NOTIFY 蜷梧ュ・ |
| 隹<>ッ戊€<E6888A>ッッ蜿大ク<E5A4A7>漠隸ッPrompt | 郤ソ荳顔畑謌キ蜿怜スア蜩?| 荳?| 譚<>剞蛻<E5899E>ヲサ + 迚域悽蝗樊サ<E6A88A> |
### 8.2 荳壼苅鬟朱勦
| 鬟朱勦 | 蠖ア蜩<EFBDB1> | 蠎泌ッケ遲也払 |
|------|------|---------|
| Prompt 謾ケ蜉ィ蟇シ閾エAI謨域棡荳矩剄 | 荳壼苅蜿怜スア蜩?| 轣ー蠎ヲ鬪瑚ッ<E7919A> + 蠢ォ騾溷屓貊?|
| 譚<>剞邂。逅<EFBDA1>キキ荵ア | 隸ッ謫堺ス?| 荳・譬シRBAC + 螳。隶。譌・蠢<EFBDA5> |
### 8.3 蜈懷コ慕ュ也払
```typescript
// 荳臥コァ蜈懷コ墓惻蛻カ
async get(code: string, variables: any, userId: string): Promise<string> {
try {
// Level 1: 豁」蟶ク豬∫ィ<E288AB>
return await this.getNormalFlow(code, variables, userId);
} catch (dbError) {
logger.warn('DB query failed, trying cache', { code, error: dbError });
// Level 2: 菴ソ逕ィ郛灘ュ<E78198>
const cached = this.activeCache.get(code);
if (cached) {
return this.render(cached, variables);
}
// Level 3: 遑ャ郛也<E9839B><EFBFBD>蠎? logger.error('Cache miss, using fallback', { code });
return this.render(this.getFallback(code), variables);
}
}
```
---
## <20>梼 髯<><EFBFBD>
### A. 逶ク蜈ウ譁<EFBDB3>。」
- [Prompt邂。逅<EFBDA1>ウサ扈滉ク守<EFBDB8>蠎ヲ鬚<EFBDA6>ァ郁ョセ隶。譁ケ譯<EFBDB9>(../02-謚€譛ッ隶セ隶?02-騾夂畑閭ス蜉帛ア<E5B89B>03-Prompt邂。逅<EFBDA1>ウサ扈滉ク守<EFBDB8>蠎ヲ鬚<EFBDA6>ァ郁ョセ隶。譁ケ譯?md)
- [Prompt邂。逅<EFBDA1>ウサ扈溷ソォ騾溷盾閠ゾ(../02-謚€譛ッ隶セ隶?03-Prompt邂。逅<EFBDA1>ウサ扈溷ソォ騾溷盾閠?md)
- [Prompt邂。逅<EFBFBD>錘蜿ー隶セ隶。](../02-謚€譛ッ隶セ隶?Prompt邂。逅<EFBDA1>錘蜿ー隶セ隶。.md)
### B. 莉」遐∽ス咲スョ
| 邀サ蝙<EFBDBB> | 霍ッ蠕<EFBDAF> |
|------|------|
| 蜷守ォッ譛榊苅 | `backend/src/common/capabilities/prompt/` |
| 蜷守ォッAPI | `backend/src/modules/admin/prompt/` |
| 蜑咲ォッ鬘オ髱「 | `frontend-v2/src/modules/admin/prompt/` |
| 謨ー謐ョ蠎鉄chema | `backend/prisma/schema.prisma` |
| 霑∫ァサ閼壽悽 | `backend/scripts/migrate-prompts.ts` |
### C. 蜻ス蜷崎ァ<E5B48E>
**Prompt Code 蜻ス蜷崎ァ<E5B48E><EFBDA7><EFBFBD>?*
```
{MODULE}_{FUNCTION}_{ROLE}
遉コ萓具シ?- 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*
**<EFBFBD>噫 蜃<><EFBFBD>・ス蠑€蟋倶コ<E580B6><EFBFBD>滉サ?Phase 3.5.1 隨ャ荳€荳ェ莉サ蜉。蠑€蟋具シ<E585B7>**