From 0c1110daa59bf77ddcff2704641280f417158c10 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期四, 12 三月 2026 14:48:26 +0800
Subject: [PATCH] #
---
src/main/webapp/views/ai/prompt_config.html | 134 +++++++++++++++++++++++++++++++++++++-------
1 files changed, 111 insertions(+), 23 deletions(-)
diff --git a/src/main/webapp/views/ai/prompt_config.html b/src/main/webapp/views/ai/prompt_config.html
index fc91051..6125dd8 100644
--- a/src/main/webapp/views/ai/prompt_config.html
+++ b/src/main/webapp/views/ai/prompt_config.html
@@ -265,14 +265,33 @@
font-size: 12px;
color: #6f859d;
}
- .editor-textarea .el-textarea__inner {
- min-height: 430px !important;
+ .block-textarea .el-textarea__inner {
+ min-height: 190px !important;
font-family: Menlo, Monaco, Consolas, "Liberation Mono", monospace;
font-size: 12px;
line-height: 1.7;
color: #243447;
background: #fbfdff;
border-color: #dbe7f3;
+ }
+ .preview-textarea .el-textarea__inner {
+ min-height: 260px !important;
+ font-family: Menlo, Monaco, Consolas, "Liberation Mono", monospace;
+ font-size: 12px;
+ line-height: 1.75;
+ color: #203246;
+ background: linear-gradient(180deg, #fcfdff 0%, #f7fbff 100%);
+ border-color: #d5e3f1;
+ }
+ .dynamic-context-card {
+ margin-top: 10px;
+ padding: 10px 12px;
+ border-radius: 12px;
+ border: 1px solid #e2ebf5;
+ background: linear-gradient(180deg, #fdfefe 0%, #f5fbfa 100%);
+ color: #5f7288;
+ font-size: 12px;
+ line-height: 1.75;
}
.editor-hint {
margin-top: 10px;
@@ -512,14 +531,56 @@
<div class="field-label">澶囨敞</div>
<el-input v-model="editor.memo" size="mini" placeholder="璁板綍杩欐浼樺寲鐩殑鎴栨祴璇曠粨璁�"></el-input>
</div>
- <div class="editor-full">
- <div class="field-label">Prompt鍐呭</div>
+ <div>
+ <div class="field-label">Base Policy</div>
<el-input
- class="editor-textarea"
+ class="block-textarea"
type="textarea"
- v-model="editor.content"
- placeholder="鍦ㄨ繖閲岀紪杈� Prompt 鍐呭"
- :autosize="{ minRows: 20, maxRows: 28 }"></el-input>
+ v-model="editor.basePolicy"
+ placeholder="瑙掕壊銆佸簳绾胯鍒欍�佺ǔ瀹氱害鏉�"
+ :autosize="{ minRows: 8, maxRows: 14 }"></el-input>
+ </div>
+ <div>
+ <div class="field-label">Tool Policy</div>
+ <el-input
+ class="block-textarea"
+ type="textarea"
+ v-model="editor.toolPolicy"
+ placeholder="浠�涔堟椂鍊欏繀椤绘煡 MCP銆佹�庝箞浣跨敤宸ュ叿鍜屽紩鐢ㄨ瘉鎹�"
+ :autosize="{ minRows: 8, maxRows: 14 }"></el-input>
+ </div>
+ <div class="editor-full">
+ <div class="field-label">Output Contract</div>
+ <el-input
+ class="block-textarea"
+ type="textarea"
+ v-model="editor.outputContract"
+ placeholder="杈撳嚭鏍煎紡銆佺粨鏋勩�佺姝簨椤广�佸伐绋嬪寲瑕佹眰"
+ :autosize="{ minRows: 7, maxRows: 12 }"></el-input>
+ </div>
+ <div class="editor-full">
+ <div class="field-label">Scene Playbook</div>
+ <el-input
+ class="block-textarea"
+ type="textarea"
+ v-model="editor.scenePlaybook"
+ placeholder="鍦烘櫙绛栫暐锛屾瘮濡備换鍔′笉鎵ц銆佽澶囧紓甯搞�佷汉宸ラ棶绛旂瓑"
+ :autosize="{ minRows: 10, maxRows: 16 }"></el-input>
+ </div>
+ <div class="editor-full">
+ <div class="field-label">缁勮棰勮</div>
+ <el-input
+ class="preview-textarea"
+ type="textarea"
+ :value="assembledPromptPreview"
+ readonly
+ :autosize="{ minRows: 12, maxRows: 18 }"></el-input>
+ </div>
+ <div class="editor-full">
+ <div class="dynamic-context-card">
+ <strong>Dynamic Context</strong><br />
+ 杩欎竴灞備笉鍦ㄨ繖閲屾寔涔呭寲缁存姢銆傝繍琛屾椂浠嶇敱璇锋眰瀹炴椂娉ㄥ叆锛屾瘮濡傦細鐢ㄦ埛闂銆佸憡璀︽弿杩般�侀噸鐐硅澶囥�佹棩蹇楄寖鍥淬�乪xtraContext锛屼互鍙� Agent 鍚庣画閫氳繃 MCP 鎷夊埌鐨勫疄鏃朵簨瀹炴暟鎹��
+ </div>
</div>
</div>
@@ -540,7 +601,7 @@
褰撳墠姝e湪缂栬緫鑽夌 v{{ editor.version || '-' }}銆備繚瀛樺彧浼氭洿鏂拌繖浠借崏绋匡紝鍙戝竷鍚庡畠浼氭浛鎹㈠綋鍓嶅満鏅殑绾夸笂鐗堟湰銆�
</div>
<div v-else>
- 褰撳墠鏄柊鑽夌銆備綘涓�鏂板缓瀹冨氨浼氬嚭鐜板湪宸︿晶鐗堟湰鍒楄〃閲岋紱鍙互鍏堜繚瀛橈紝鍐嶅崟鐙彂甯冦��
+ 褰撳墠鏄柊鑽夌銆備綘鐜板湪缂栬緫鐨勬槸 4 涓寔涔呭寲灞傦細Base Policy銆乀ool Policy銆丱utput Contract銆丼cene Playbook锛汥ynamic Context 缁х画鐢辫繍琛屾椂娉ㄥ叆銆�
</div>
</div>
</div>
@@ -570,6 +631,10 @@
sceneCode: '',
version: null,
content: '',
+ basePolicy: '',
+ toolPolicy: '',
+ outputContract: '',
+ scenePlaybook: '',
status: 1,
published: 0,
memo: '',
@@ -622,19 +687,22 @@
return '鍏堜粠宸︿晶閫夋嫨鍦烘櫙锛屾垨鑰呯洿鎺ユ柊寤鸿崏绋裤��';
}
if (this.editor.published === 1) {
- return '宸插彂甯冪増鏈彧浣滀负鏌ョ湅鍜屽鍒舵潵婧愶紝涓嶇洿鎺ヨ鐩栦慨鏀广��';
+ return '褰撳墠鏄凡鍙戝竷鐗堟湰锛�4 灞傚唴瀹瑰彧鑳芥煡鐪嬶紱鑻ヨ淇敼锛屽厛鍙栨秷鍙戝竷銆�';
}
if (this.editor.id) {
- return '姝e湪缂栬緫宸叉湁鑽夌锛屼繚瀛樺悗涓嶄細褰卞搷绾夸笂鐗堟湰锛屽彧鏈夊彂甯冩墠浼氬垏鎹€��';
+ return '姝e湪缂栬緫宸叉湁鑽夌銆備慨鏀圭殑鏄� Prompt 鐨� 4 涓寔涔呭寲灞傦紝淇濆瓨涓嶄細褰卞搷绾夸笂鐗堟湰銆�';
}
- return '褰撳墠鏄柊鑽夌锛屽彲浠ヨ嚜鐢辩紪杈戝苟淇濆瓨銆�';
+ return '褰撳墠鏄柊鑽夌銆備綘鍙互鍒嗗眰缂栬緫 Prompt锛屽啀閫氳繃鍙充晶棰勮妫�鏌ユ渶缁堟嫾鎺ユ晥鏋溿��';
+ },
+ assembledPromptPreview: function() {
+ return this.composePromptPreview(this.editor);
},
contentCharCount: function() {
- return this.editor.content ? this.editor.content.length : 0;
+ return this.assembledPromptPreview ? this.assembledPromptPreview.length : 0;
},
contentLineCount: function() {
- if (!this.editor.content) return 0;
- return this.editor.content.split(/\r?\n/).length;
+ if (!this.assembledPromptPreview) return 0;
+ return this.assembledPromptPreview.split(/\r?\n/).length;
}
},
methods: {
@@ -645,6 +713,10 @@
sceneCode: '',
version: null,
content: '',
+ basePolicy: '',
+ toolPolicy: '',
+ outputContract: '',
+ scenePlaybook: '',
status: 1,
published: 0,
memo: '',
@@ -686,6 +758,10 @@
sceneCode: item && item.sceneCode ? item.sceneCode : '',
version: item && item.version != null ? item.version : null,
content: item && item.content ? item.content : '',
+ basePolicy: item && item.basePolicy ? item.basePolicy : '',
+ toolPolicy: item && item.toolPolicy ? item.toolPolicy : '',
+ outputContract: item && item.outputContract ? item.outputContract : '',
+ scenePlaybook: item && item.scenePlaybook ? item.scenePlaybook : '',
status: item && item.status != null ? item.status : 1,
published: item && item.published != null ? item.published : 0,
memo: item && item.memo ? item.memo : '',
@@ -722,6 +798,19 @@
},
buildLocalDraftKey: function() {
return 'draft_' + Date.now() + '_' + Math.floor(Math.random() * 100000);
+ },
+ composePromptPreview: function(editor) {
+ var sections = [];
+ var append = function(label, content) {
+ var value = content == null ? '' : String(content).trim();
+ if (!value) return;
+ sections.push('銆�' + label + '銆慭n' + value);
+ };
+ append('鍩虹绛栫暐', editor && editor.basePolicy);
+ append('宸ュ叿绛栫暐', editor && editor.toolPolicy);
+ append('杈撳嚭绾﹀畾', editor && editor.outputContract);
+ append('鍦烘櫙绛栫暐', editor && editor.scenePlaybook);
+ return sections.join('\n\n');
},
hasUnsavedEditorForScene: function(sceneCode) {
return !!(this.editor
@@ -885,15 +974,14 @@
this.cloneFromTemplate(this.currentPublishedTemplate);
},
buildSavePayload: function() {
- var payloadId = this.editor.id;
- if (this.editor.published === 1) {
- payloadId = null;
- }
return {
- id: payloadId,
+ id: this.editor.id,
name: this.editor.name,
sceneCode: this.editor.sceneCode,
- content: this.editor.content,
+ basePolicy: this.editor.basePolicy,
+ toolPolicy: this.editor.toolPolicy,
+ outputContract: this.editor.outputContract,
+ scenePlaybook: this.editor.scenePlaybook,
status: this.editor.status,
memo: this.editor.memo
};
@@ -911,8 +999,8 @@
self.$message.warning('璇烽�夋嫨鍦烘櫙');
return;
}
- if (!self.editor.content || !self.editor.content.trim()) {
- self.$message.warning('Prompt鍐呭涓嶈兘涓虹┖');
+ if (!self.assembledPromptPreview || !self.assembledPromptPreview.trim()) {
+ self.$message.warning('鑷冲皯濉啓涓�涓� Prompt 鍒嗘');
return;
}
self.saving = true;
--
Gitblit v1.9.1