diff --git a/dashboard/src/components/shared/PersonaForm.vue b/dashboard/src/components/shared/PersonaForm.vue index 48f1a0d0e..bfd5caf1b 100644 --- a/dashboard/src/components/shared/PersonaForm.vue +++ b/dashboard/src/components/shared/PersonaForm.vue @@ -378,16 +378,26 @@ export default { } this.saving = true; - try { - const url = this.editingPersona ? '/api/persona/update' : '/api/persona/create'; - const response = await axios.post(url, this.personaForm); - - if (response.data.status === 'ok') { - this.$emit('saved', response.data.message || this.tm('messages.saveSuccess')); - this.closeDialog(); - } else { - this.$emit('error', response.data.message || this.tm('messages.saveError')); + try { + const url = this.editingPersona ? '/api/persona/update' : '/api/persona/create'; + + // 白名单过滤字段 + const allowedFields = ['persona_id', 'system_prompt', 'begin_dialogs', 'tools']; + const filteredData = {}; + allowedFields.forEach(field => { + if (this.personaForm.hasOwnProperty(field)) { + filteredData[field] = this.personaForm[field]; } + }); + + const response = await axios.post(url, filteredData); + + if (response.data.status === 'ok') { + this.$emit('saved', response.data.message || this.tm('messages.saveSuccess')); + this.closeDialog(); + } else { + this.$emit('error', response.data.message || this.tm('messages.saveError')); + } } catch (error) { this.$emit('error', error.response?.data?.message || this.tm('messages.saveError')); } @@ -533,4 +543,4 @@ export default { .v-virtual-scroll { padding-bottom: 16px; } - \ No newline at end of file + diff --git a/dashboard/src/i18n/locales/en-US/features/persona.json b/dashboard/src/i18n/locales/en-US/features/persona.json index 94708ee56..9ce06dcc8 100644 --- a/dashboard/src/i18n/locales/en-US/features/persona.json +++ b/dashboard/src/i18n/locales/en-US/features/persona.json @@ -7,6 +7,8 @@ "createFirst": "Create First Persona", "edit": "Edit", "delete": "Delete", + "export": "Export JSON", + "import": "Import", "cancel": "Cancel", "save": "Save", "addDialogPair": "Add Dialog Pair" diff --git a/dashboard/src/i18n/locales/zh-CN/features/persona.json b/dashboard/src/i18n/locales/zh-CN/features/persona.json index 15121df41..ee8f3ee1a 100644 --- a/dashboard/src/i18n/locales/zh-CN/features/persona.json +++ b/dashboard/src/i18n/locales/zh-CN/features/persona.json @@ -7,6 +7,8 @@ "createFirst": "创建第一个人格", "edit": "编辑", "delete": "删除", + "export": "导出 JSON", + "import": "导入", "cancel": "取消", "save": "保存", "addDialogPair": "添加对话对" diff --git a/dashboard/src/views/PersonaPage.vue b/dashboard/src/views/PersonaPage.vue index cffeeb549..b23ae7e12 100644 --- a/dashboard/src/views/PersonaPage.vue +++ b/dashboard/src/views/PersonaPage.vue @@ -11,11 +11,16 @@ {{ tm('page.description') }}
-