perf: Organize translation files

This commit is contained in:
wangdan-fit2cloud 2025-12-04 17:02:52 +08:00
parent f2266c8d2a
commit 6fd4c1fd31
127 changed files with 846 additions and 934 deletions

View File

@ -229,7 +229,7 @@
</div>
<div class="card-never border-r-6 mt-8" v-if="data.type == WorkflowType.AiChat">
<h5 class="p-8-12">
{{ $t('views.workflow.nodes.aiChatNode.think') }}
{{ $t('workflow.nodes.aiChatNode.think') }}
</h5>
<div class="p-8-12 border-t-dashed lighter pre-wrap">
{{ data.reasoning_content || '-' }}
@ -672,7 +672,7 @@
</div>
<div class="card-never border-r-6 mt-8">
<h5 class="p-8-12">
{{ $t('views.workflow.nodes.imageGenerateNode.negative_prompt.label') }}
{{ $t('workflow.nodes.imageGenerateNode.negative_prompt.label') }}
</h5>
<div class="p-8-12 border-t-dashed lighter pre-wrap">
{{ data.negative_prompt || '-' }}
@ -710,7 +710,7 @@
</div>
<div class="card-never border-r-6 mt-8">
<h5 class="p-8-12">
{{ $t('views.workflow.nodes.imageGenerateNode.negative_prompt.label') }}
{{ $t('workflow.nodes.imageGenerateNode.negative_prompt.label') }}
</h5>
<div class="p-8-12 border-t-dashed lighter pre-wrap">
{{ data.negative_prompt || '-' }}
@ -749,7 +749,7 @@
</div>
<div class="card-never border-r-6 mt-8">
<h5 class="p-8-12">
{{ $t('views.workflow.nodes.imageGenerateNode.negative_prompt.label') }}
{{ $t('workflow.nodes.imageGenerateNode.negative_prompt.label') }}
</h5>
<div class="p-8-12 border-t-dashed lighter pre-wrap">
{{ data.negative_prompt || '-' }}
@ -757,7 +757,7 @@
</div>
<div class="card-never border-r-6 mt-8">
<h5 class="p-8-12">
{{ $t('views.workflow.nodes.imageToVideoGenerate.first_frame.label') }}
{{ $t('workflow.nodes.imageToVideoGenerate.first_frame.label') }}
</h5>
<div class="p-8-12 border-t-dashed lighter pre-wrap">
<div v-if="typeof data.first_frame_url === 'string'">
@ -786,7 +786,7 @@
</div>
<div class="card-never border-r-6 mt-8">
<h5 class="p-8-12">
{{ $t('views.workflow.nodes.imageToVideoGenerate.last_frame.label') }}
{{ $t('workflow.nodes.imageToVideoGenerate.last_frame.label') }}
</h5>
<div class="p-8-12 border-t-dashed lighter pre-wrap">
<div v-if="typeof data.last_frame_url === 'string'">
@ -890,13 +890,13 @@
<template v-if="data.type === WorkflowType.VariableAggregationNode">
<div class="card-never border-r-6">
<h5 class="p-8-12">
{{ $t('views.workflow.nodes.variableAggregationNode.Strategy') }}
{{ $t('workflow.nodes.variableAggregationNode.Strategy') }}
</h5>
<div class="p-8-12 border-t-dashed lighter pre-wrap">
{{
data.strategy === 'variable_to_json'
? t('views.workflow.nodes.variableAggregationNode.placeholder1')
: t('views.workflow.nodes.variableAggregationNode.placeholder')
? t('workflow.nodes.variableAggregationNode.placeholder1')
: t('workflow.nodes.variableAggregationNode.placeholder')
}}
</div>
</div>
@ -921,11 +921,13 @@
<h5 class="p-8-12">
{{ $t('common.param.outputParam') }}
</h5>
<div class="p-8-12 border-t-dashed lighter">
<div v-for="(f, i) in data.result" :key="i" class="mb-8">
<span class="color-secondary">{{ i }}:</span> {{ f }}
<el-scrollbar height="200">
<div class="p-8-12 border-t-dashed lighter">
<div v-for="(f, i) in data.result" :key="i" class="mb-8">
<span class="color-secondary">{{ i }}:</span> {{ f }}
</div>
</div>
</div>
</el-scrollbar>
</div>
</template>
<!-- MCP 节点 -->
@ -943,7 +945,7 @@
</div>
<div class="card-never border-r-6">
<h5 class="p-8-12">
{{ $t('views.workflow.nodes.mcpNode.toolParam') }}
{{ $t('workflow.nodes.mcpNode.toolParam') }}
</h5>
<div class="p-8-12 border-t-dashed lighter">
<div v-for="(value, name) in data.tool_params" :key="name" class="mb-8">
@ -965,19 +967,19 @@
<!-- 循环 节点 -->
<div class="card-never border-r-6" v-if="data.type === WorkflowType.LoopNode">
<h5 class="p-8-12">
{{ $t('views.workflow.nodes.loopNode.loopSetting') }}
{{ $t('workflow.nodes.loopNode.loopSetting') }}
</h5>
<div class="p-8-12 border-t-dashed lighter">
<div class="mb-8">
<span class="color-secondary">
{{ $t('views.workflow.nodes.loopNode.loopType.label') }}:</span
{{ $t('workflow.nodes.loopNode.loopType.label') }}:</span
>
{{ data.loop_type || '-' }}
</div>
<div>
<span class="color-secondary">
{{ $t('views.workflow.nodes.loopNode.loopArray.label') }}:</span
{{ $t('workflow.nodes.loopNode.loopArray.label') }}:</span
>
{{
data.loop_type === 'NUMBER'
@ -987,7 +989,7 @@
</div>
</div>
<h5 class="p-8-12">
{{ $t('views.workflow.nodes.loopNode.loopDetail') }}
{{ $t('workflow.nodes.loopNode.loopDetail') }}
</h5>
<div class="p-8-12 border-t-dashed lighter">
<template v-if="data.type === WorkflowType.LoopNode">
@ -1017,14 +1019,14 @@
<div class="p-8-12 border-t-dashed lighter">
<div class="mb-8">
<span class="color-secondary">
{{ $t('views.workflow.nodes.loopStartNode.loopItem') }}:</span
{{ $t('workflow.nodes.loopStartNode.loopItem') }}:</span
>
{{ data.current_item }}
</div>
<div class="mb-8">
<span class="color-secondary">
{{ $t('views.workflow.nodes.loopStartNode.loopIndex') }}:</span
{{ $t('workflow.nodes.loopStartNode.loopIndex') }}:</span
>
{{ data.current_index }}
@ -1042,7 +1044,7 @@
<div class="p-8-12 border-t-dashed lighter">
<div class="mb-8">
<span class="color-secondary">
{{ $t('views.workflow.nodes.loopContinueNode.isContinue') }}:</span
{{ $t('workflow.nodes.loopContinueNode.isContinue') }}:</span
>
{{ data.is_continue }}
@ -1060,7 +1062,7 @@
<div class="p-8-12 border-t-dashed lighter">
<div class="mb-8">
<span class="color-secondary">
{{ $t('views.workflow.nodes.loopBreakNode.isBreak') }}:</span
{{ $t('workflow.nodes.loopBreakNode.isBreak') }}:</span
>
{{ data.is_break }}
@ -1115,7 +1117,7 @@
</div>
<div class="mb-8">
<span class="color-secondary"
>{{ $t('views.workflow.nodes.documentSplitNode.chunk_length.label') }}:</span
>{{ $t('workflow.nodes.documentSplitNode.chunk_length.label') }}:</span
>
{{ data.chunk_size }}
</div>

View File

@ -37,7 +37,7 @@
ref="nodeCascaderRef"
:nodeModel="model"
class="w-full"
:placeholder="$t('views.workflow.variable.placeholder')"
:placeholder="$t('workflow.variable.placeholder')"
v-model="formValue.default_value"
/>
</el-form-item>
@ -78,7 +78,7 @@ const assignment_method_option_list = computed(() => {
]
if (getModel) {
option_list.push({
label: t('views.workflow.variable.Referencing'),
label: t('workflow.variable.Referencing'),
value: 'ref_variables',
})
}
@ -137,7 +137,7 @@ const default_ref_variables_value_rule = {
validator: (rule: any, value: any, callback: any) => {
if (!(Array.isArray(value) && value.length > 1)) {
callback(
t('views.workflow.variable.Referencing') + t('common.required'),
t('workflow.variable.Referencing') + t('common.required'),
)
}

View File

@ -47,7 +47,7 @@
ref="nodeCascaderRef"
:nodeModel="model"
class="w-full"
:placeholder="$t('views.workflow.variable.placeholder')"
:placeholder="$t('workflow.variable.placeholder')"
v-model="formValue.option_list"
/>
</el-form-item>
@ -150,7 +150,7 @@ const assignment_method_option_list = computed(() => {
]
if (getModel) {
option_list.push({
label: t('views.workflow.variable.Referencing'),
label: t('workflow.variable.Referencing'),
value: 'ref_variables',
})
}
@ -183,7 +183,7 @@ const default_ref_variables_value_rule = {
console.log(value.length)
if (!(Array.isArray(value) && value.length > 1)) {
callback(
t('views.workflow.variable.Referencing') + t('common.required'),
t('workflow.variable.Referencing') + t('common.required'),
)
}

View File

@ -47,7 +47,7 @@
ref="nodeCascaderRef"
:nodeModel="model"
class="w-full"
:placeholder="$t('views.workflow.variable.placeholder')"
:placeholder="$t('workflow.variable.placeholder')"
v-model="formValue.option_list"
/>
</el-form-item>
@ -159,7 +159,7 @@ const assignment_method_option_list = computed(() => {
]
if (getModel) {
option_list.push({
label: t('views.workflow.variable.Referencing'),
label: t('workflow.variable.Referencing'),
value: 'ref_variables',
})
}
@ -192,7 +192,7 @@ const default_ref_variables_value_rule = {
console.log(value.length)
if (!(Array.isArray(value) && value.length > 1)) {
callback(
t('views.workflow.variable.Referencing') + t('common.required'),
t('workflow.variable.Referencing') + t('common.required'),
)
}

View File

@ -47,7 +47,7 @@
ref="nodeCascaderRef"
:nodeModel="model"
class="w-full"
:placeholder="$t('views.workflow.variable.placeholder')"
:placeholder="$t('workflow.variable.placeholder')"
v-model="formValue.option_list"
/>
</el-form-item>
@ -150,7 +150,7 @@ const assignment_method_option_list = computed(() => {
]
if (getModel) {
option_list.push({
label: t('views.workflow.variable.Referencing'),
label: t('workflow.variable.Referencing'),
value: 'ref_variables',
})
}
@ -182,7 +182,7 @@ const default_ref_variables_value_rule = {
console.log(value.length)
if (!(Array.isArray(value) && value.length > 1)) {
callback(
t('views.workflow.variable.Referencing') + t('common.required'),
t('workflow.variable.Referencing') + t('common.required'),
)
}

View File

@ -47,7 +47,7 @@
ref="nodeCascaderRef"
:nodeModel="model"
class="w-full"
:placeholder="$t('views.workflow.variable.placeholder')"
:placeholder="$t('workflow.variable.placeholder')"
v-model="formValue.option_list"
/>
</el-form-item>
@ -150,7 +150,7 @@ const assignment_method_option_list = computed(() => {
]
if (getModel) {
option_list.push({
label: t('views.workflow.variable.Referencing'),
label: t('workflow.variable.Referencing'),
value: 'ref_variables',
})
}
@ -183,7 +183,7 @@ const default_ref_variables_value_rule = {
console.log(value.length)
if (!(Array.isArray(value) && value.length > 1)) {
callback(
t('views.workflow.variable.Referencing') + t('common.required'),
t('workflow.variable.Referencing') + t('common.required'),
)
}

View File

@ -46,7 +46,7 @@
ref="nodeCascaderRef"
:nodeModel="model"
class="w-full"
:placeholder="$t('views.workflow.variable.placeholder')"
:placeholder="$t('workflow.variable.placeholder')"
v-model="formValue.option_list"
/>
</el-form-item>
@ -149,7 +149,7 @@ const assignment_method_option_list = computed(() => {
]
if (getModel) {
option_list.push({
label: t('views.workflow.variable.Referencing'),
label: t('workflow.variable.Referencing'),
value: 'ref_variables',
})
}
@ -182,7 +182,7 @@ const default_ref_variables_value_rule = {
console.log(value.length)
if (!(Array.isArray(value) && value.length > 1)) {
callback(
t('views.workflow.variable.Referencing') + t('common.required'),
t('workflow.variable.Referencing') + t('common.required'),
)
}

View File

@ -3,7 +3,7 @@
<div class="card-never border-r-6 mb-16">
<el-checkbox
v-model="allCheck"
:label="$t('views.document.feishu.allCheck')"
:label="$t('common.allCheck')"
size="large"
class="ml-24"
@change="handleAllCheckChange"

View File

@ -1,7 +1,7 @@
<template>
<div class="reasoning">
<el-button text @click="showThink = !showThink" class="reasoning-button">
{{ $t('views.workflow.nodes.aiChatNode.think') }}
{{ $t('workflow.nodes.aiChatNode.think') }}
<el-icon class="ml-4" :class="showThink ? 'rotate-180' : ''"><ArrowDownBold /> </el-icon>
</el-button>
<el-collapse-transition>

View File

@ -23,7 +23,7 @@
</el-input>
</div>
<el-tab-pane :label="$t('views.workflow.baseComponent')" name="base">
<el-tab-pane :label="$t('workflow.baseComponent')" name="base">
<el-scrollbar height="400">
<div v-if="filter_menu_nodes.length > 0">
<template v-for="(node, index) in filter_menu_nodes" :key="index">
@ -67,7 +67,7 @@
</template>
</div>
<div v-else class="ml-16 mt-8">
<el-text type="info">{{ $t('views.workflow.tip.noData') }}</el-text>
<el-text type="info">{{ $t('workflow.tip.noData') }}</el-text>
</div>
</el-scrollbar>
</el-tab-pane>

View File

@ -23,7 +23,7 @@
</el-input>
</div>
<el-tab-pane :label="$t('views.workflow.baseComponent')" name="base">
<el-tab-pane :label="$t('workflow.baseComponent')" name="base">
<el-scrollbar height="400">
<div v-if="filter_menu_nodes.length > 0">
<template v-for="(node, index) in filter_menu_nodes" :key="index">
@ -67,7 +67,7 @@
</template>
</div>
<div v-else class="ml-16 mt-8">
<el-text type="info">{{ $t('views.workflow.tip.noData') }}</el-text>
<el-text type="info">{{ $t('workflow.tip.noData') }}</el-text>
</div>
</el-scrollbar>
</el-tab-pane>

View File

@ -23,7 +23,7 @@
</el-input>
</div>
<el-tab-pane :label="$t('views.workflow.baseComponent')" name="base">
<el-tab-pane :label="$t('workflow.baseComponent')" name="base">
<el-scrollbar height="400">
<div v-if="filter_menu_nodes.length > 0">
<template v-for="(node, index) in filter_menu_nodes" :key="index">
@ -67,7 +67,7 @@
</template>
</div>
<div v-else class="ml-16 mt-8">
<el-text type="info">{{ $t('views.workflow.tip.noData') }}</el-text>
<el-text type="info">{{ $t('workflow.tip.noData') }}</el-text>
</div>
</el-scrollbar>
</el-tab-pane>

View File

@ -71,6 +71,9 @@ export default {
disableSuccess: 'Successful',
published: 'Published',
unpublished: 'Unpublished',
success: 'Successful',
fail: 'Failed',
all: 'All',
},
param: {
outputParam: 'Output Parameters',
@ -124,4 +127,6 @@ export default {
placeholder: 'Please enter prompt',
},
variable: 'Variable',
allCheck: 'Select All',
type: 'Type',
}

View File

@ -6,6 +6,7 @@ import theme from './theme'
import common from './common'
import dynamicsForm from './dynamics-form'
import chat from './ai-chat'
import workflow from './workflow'
export default {
lang: 'English',
layout,
@ -15,5 +16,6 @@ export default {
en,
common,
dynamicsForm,
chat
chat,
workflow
}

View File

@ -31,7 +31,6 @@ export default {
form: {
appName: {
label: 'Name',
placeholder: 'Please enter the APP name',
requiredMessage: 'APP name is required',
},
@ -40,7 +39,6 @@ export default {
'Describe the APP scenario and use, e.g.: XXX assistant answering user questions about XXX product usage',
},
appType: {
label: 'Type',
simplePlaceholder: 'Suitable for beginners to create assistant.',
workflowPlaceholder: 'Suitable for advanced users to customize the workflow of assistant',
},

View File

@ -203,6 +203,5 @@ export default {
selectDocument: 'Select Document',
tip1: 'Only documents and tables are supported. Documents will be segmented based on titles, and tables will be converted to Markdown format before segmentation.',
tip2: 'Before importing the document, it is recommended to standardize the document segmentation markers.',
allCheck: 'Select All',
},
}

View File

@ -10,7 +10,6 @@ import workspace from './workspace'
import application from './application'
import problem from './problem'
import applicationOverview from './application-overview'
import workflow from './workflow'
import paragraph from './paragraph'
import chatLog from './chat-log'
import chatUser from './chat-user'
@ -29,7 +28,6 @@ export default {
application,
problem,
applicationOverview,
workflow,
paragraph,
chatLog,
chatUser,

View File

@ -1,30 +1,11 @@
export default {
title: 'Operate Logs',
table: {
menu: {
label: 'Operate menu'
},
operate: {
label: 'Operate'
},
user: {
label: 'Operate user'
},
status: {
label: 'Status',
success: 'Successful',
fail: 'Failed',
all: 'All'
},
ip_address: {
label: 'IP Address'
},
opt: {
label: 'API Details'
},
operateTime: {
label: 'Operate Time'
}
menu: 'Operate Menu',
detail: 'Operate Details',
user: 'Operate User',
ip_address: 'IP Address',
opt: 'API Details',
operateTime: 'Operate Time',
},
close: 'Close'
}

View File

@ -7,8 +7,6 @@ export default {
authorized_workspace: 'Authorize Workspace',
authorized_tip: ' ',
select_workspace: 'Select Workspace',
allCheck: 'Select All',
BLACK_LIST: 'Black List',
WHITE_LIST: 'White List',
type: 'Type',
}

View File

@ -148,7 +148,6 @@ export default {
},
resource_management: {
label: 'Resource Management',
type: 'Type',
management: 'management',
},
default_login: 'Default Login Method',

View File

@ -49,13 +49,11 @@ export default {
form: {
toolName: {
label: 'Name',
name: 'Tool Name',
placeholder: 'Please enter the tool name',
requiredMessage: 'Please enter the tool name',
},
mcpName: {
label: 'Name',
name: 'MCP Name',
placeholder: 'Please enter the MCP name',
requiredMessage: 'Please enter the MCP name',

View File

@ -82,16 +82,17 @@ export default {
nodes: {
knowledgeWriteNode: {
text: 'Knowledge write',
label: 'Knowledge write',
label:
'Write the input paragraph list into the current knowledge base and complete vectorization processing',
},
dataSourceWebNode: {
label: 'Web Site',
text: 'Web Site',
text: 'Input the root URL to automatically crawl web data (single link corresponds to a single document), output a list of documents with content',
field_label: 'Document list',
},
dataSourceLocalNode: {
label: 'Local File',
text: 'Local File',
text: 'Upload local documents, output document list (content not parsed, needs to be used with "Document Content Extraction" node to parse)',
fileList: 'File List',
fileFormat: {
label: 'Supported File Formats',
@ -262,12 +263,12 @@ You are a master of problem optimization, adept at accurately inferring user int
},
documentExtractNode: {
label: 'Document Content Extraction',
text: 'Extract content from documents',
text: 'Parse input documents to output structured document content',
content: 'Document Content',
},
documentSplitNode: {
label: 'Document Splitting',
text: 'Split document content into smaller segments',
text: 'Split input document content according to the segmentation strategy, output a list of segmented texts',
paragraphList: 'List of split segments',
splitStrategy: {
label: 'Splitting Strategy',
@ -534,9 +535,6 @@ You are a master of problem optimization, adept at accurately inferring user int
},
SystemPromptPlaceholder: 'System Prompt, can reference variables in the system, such as',
UserPromptPlaceholder: 'User Prompt, can reference variables in the system, such as',
debug: {
executionResult: 'Execution Result',
executionSuccess: 'Execution Succeeded',
executionFailed: 'Execution Failed',
},
ExecutionRecord: 'Execution Record',
debug: {},
}

View File

@ -62,7 +62,7 @@ export default {
existingExtensionsTip: '文件后缀已存在',
localUpload: '本地文件',
urlUpload: 'URL 地址',
uploadMethodTip: '请选择上传方式'
uploadMethodTip: '请选择上传方式',
},
status: {
label: '状态',
@ -73,6 +73,9 @@ export default {
disableSuccess: '禁用成功',
published: '已发布',
unpublished: '未发布',
success: '成功',
fail: '失败',
all: '全部',
},
param: {
outputParam: '输出参数',
@ -125,4 +128,6 @@ export default {
placeholder: '请输入提示词',
},
variable: '变量',
allCheck: '全选',
type: '类型',
}

View File

@ -6,6 +6,7 @@ import layout from './layout'
import dynamicsForm from './dynamics-form'
import common from './common'
import chat from './ai-chat'
import workflow from './workflow'
export default {
lang: '简体中文',
zhCn,
@ -16,5 +17,5 @@ export default {
common,
chat,
components,
workflow,
}

View File

@ -30,7 +30,6 @@ export default {
},
form: {
appName: {
label: '名称',
placeholder: '请输入应用名称',
requiredMessage: '请输入应用名称',
},
@ -38,7 +37,6 @@ export default {
placeholder: '描述该应用的应用场景及用途XXX 小助手回答用户提出的 XXX 产品使用问题',
},
appType: {
label: '类型',
simplePlaceholder: '适合新手创建小助手',
workflowPlaceholder: '适合高级用户自定义小助手的工作流',
},

View File

@ -115,13 +115,10 @@ export default {
name: '文件名称',
char_length: '字符数',
paragraph: '分段',
all: '全部',
updateTime: '更新时间',
},
fileStatus: {
label: '文件状态',
SUCCESS: '成功',
FAILURE: '失败',
EMBEDDING: '索引中',
PENDING: '排队中',
GENERATE: '生成中',
@ -196,7 +193,6 @@ export default {
selectDocument: '选择文档',
tip1: '支持文档和表格类型包含TXT、Markdown、PDF、DOCX、HTML、XLS、XLSX、CSV、ZIP格式',
tip2: '导入文档前,建议规范文档的分段标识。',
allCheck: '全选',
errorMessage1: '请选择文档',
},
}

View File

@ -10,7 +10,6 @@ import workspace from './workspace'
import application from './application'
import problem from './problem'
import applicationOverview from './application-overview'
import workflow from './workflow'
import paragraph from './paragraph'
import chatLog from './chat-log'
import chatUser from './chat-user'
@ -29,7 +28,6 @@ export default {
application,
problem,
applicationOverview,
workflow,
paragraph,
chatLog,
chatUser,

View File

@ -1,31 +1,11 @@
export default {
title: '操作日志',
table: {
menu: {
label: '操作菜单'
},
operate: {
label: '操作',
detail: '操作详情'
},
user: {
label: '操作用户'
},
status: {
label: '状态',
success: '成功',
fail: '失败',
all: '全部'
},
ip_address: {
label: 'IP地址'
},
opt: {
label: 'API详情'
},
operateTime: {
label: '操作时间'
}
menu: '操作菜单',
detail: '操作详情',
user: '操作用户',
ip_address: 'IP地址',
opt: 'API详情',
operateTime: '操作时间',
},
close: '关闭'
}

View File

@ -7,8 +7,6 @@ export default {
authorized_workspace: '授权工作空间',
authorized_tip: '被授权的工作空间,可使用当前资源',
select_workspace: '选择工作空间',
allCheck: '全选',
BLACK_LIST: '黑名单',
WHITE_LIST: '白名单',
type: '类型',
}

View File

@ -149,7 +149,6 @@ export default {
},
resource_management: {
label: '资源管理',
type: '类型',
management: '管理',
},
default_login: '默认登录方式',

View File

@ -1,6 +1,5 @@
export default {
title: '工具',
all: '全部',
createTool: '创建工具',
editTool: '编辑工具',
createMcpTool: '创建MCP',
@ -46,13 +45,11 @@ export default {
},
form: {
toolName: {
label: '名称',
name: '工具名称',
placeholder: '请输入工具名称',
requiredMessage: '请输入工具名称',
},
mcpName: {
label: '名称',
name: 'MCP名称',
placeholder: '请输入MCP名称',
requiredMessage: '请输入MCP名称',

View File

@ -86,16 +86,16 @@ export default {
nodes: {
knowledgeWriteNode: {
text: '知识库写入',
label: '知识库写入',
label: '将输入的分段列表写入当前知识库,并完成向量化处理',
},
dataSourceWebNode: {
label: 'Web站点',
text: 'Web站点',
text: '输入根地址自动抓取 Web 数据(单链接对应单文档),输出含内容的文档列表',
field_label: '文档列表',
},
dataSourceLocalNode: {
label: '本地文件',
text: '本地文件',
text: '上传本地文档,输出文档列表(不解析内容,需配合 “文档内容提取” 节点解析)',
fileList: '文件列表',
fileFormat: {
label: '支持的文件格式',
@ -270,12 +270,12 @@ export default {
},
documentExtractNode: {
label: '文档内容提取',
text: '提取文档中的内容',
text: '解析输入文档,输出结构化文档内容',
content: '文档内容',
},
documentSplitNode: {
label: '文档分段',
text: '将文档内容拆分为多个分段',
text: '按分段策略拆分输入文档内容,输出分段文本列表',
paragraphList: '分段列表',
splitStrategy: {
label: '分段策略',
@ -536,9 +536,6 @@ export default {
},
SystemPromptPlaceholder: '系统提示词,可以引用系统中的变量:如',
UserPromptPlaceholder: '用户提示词,可以引用系统中的变量:如',
debug: {
executionResult: '执行结果',
executionSuccess: '执行成功',
executionFailed: '执行失败',
},
ExecutionRecord: '执行记录',
debug: {},
}

View File

@ -60,7 +60,7 @@ export default {
existingExtensionsTip: '文件後綴已存在',
localUpload: '本地文件',
urlUpload: 'URL 地址',
uploadMethodTip: '請選擇上傳方式'
uploadMethodTip: '請選擇上傳方式',
},
status: {
label: '狀態',
@ -71,6 +71,9 @@ export default {
disableSuccess: '停用成功',
published: '已發佈',
unpublished: '未發佈',
success: '成功',
fail: '失敗',
all: '全部',
},
param: {
outputParam: '輸出參數',
@ -123,4 +126,6 @@ export default {
placeholder: '請輸入提示詞',
},
variable: '變量',
allCheck: '全選',
type: '類型',
}

View File

@ -6,6 +6,7 @@ import theme from './theme'
import common from './common'
import dynamicsForm from './dynamics-form'
import chat from './ai-chat'
import workflow from './workflow'
export default {
lang: '繁體中文',
layout,
@ -16,4 +17,5 @@ export default {
zhTw,
dynamicsForm,
chat,
workflow
}

View File

@ -27,7 +27,6 @@ export default {
},
form: {
appName: {
label: '名稱',
placeholder: '請輸入應用名稱',
requiredMessage: '請輸入應用名稱',
},
@ -35,7 +34,6 @@ export default {
placeholder: '描述該應用的應用場景及用途XXX 小助手回答用戶提出的 XXX 產品使用問題',
},
appType: {
label: '類型',
simplePlaceholder: '適合新手建立小助手',
workflowPlaceholder: '適合高階用戶自訂小助手的工作流程',
},

View File

@ -116,13 +116,10 @@ export default {
name: '文件名稱',
char_length: '字符數',
paragraph: '分段',
all: '全部',
updateTime: '更新時間',
},
fileStatus: {
label: '文件狀態',
SUCCESS: '成功',
FAILURE: '失敗',
EMBEDDING: '索引中',
PENDING: '排隊中',
GENERATE: '生成中',
@ -197,6 +194,5 @@ export default {
selectDocument: '選擇文檔',
tip1: '僅支持文檔和表格類型文檔會根據標題分段表格會轉為Markdown格式後再分段。',
tip2: '導入文檔前,建議規範文檔的分段標識。',
allCheck: '全選',
},
}

View File

@ -12,7 +12,6 @@ import paragraph from './paragraph'
import problem from './problem'
import chatLog from './chat-log'
import chatUser from './chat-user'
import workflow from './workflow'
import login from './login'
import operateLog from './operate-log'
import shared from './shared'
@ -24,7 +23,6 @@ export default {
userManage,
model,
knowledge,
workflow,
document,
paragraph,
problem,

View File

@ -1,30 +1,11 @@
export default {
title: '操作日誌',
table: {
menu: {
label: '操作菜單'
},
operate: {
label: '操作'
},
user: {
label: '操作用戶'
},
status: {
label: '狀態',
success: '成功',
fail: '失敗',
all: '全部'
},
ip_address: {
label: 'IP地址'
},
opt: {
label: 'API詳情'
},
operateTime: {
label: '操作時間'
}
menu: '操作菜單',
detail: '操作詳情',
user: '操作用戶',
ip_address: 'IP地址',
opt: 'API詳情',
operateTime: '操作時間',
},
close: '關閉'
}

View File

@ -7,8 +7,6 @@ export default {
authorized_workspace: '已授權工作空間',
authorized_tip: '被授權的工作空間,可以使用該共享資源',
select_workspace: '选择工作空間',
allCheck: '全选',
BLACK_LIST: '黑名单',
WHITE_LIST: '白名单',
type: '類型',
}

View File

@ -149,7 +149,6 @@ export default {
},
resource_management: {
label: '資源管理',
type: '類型',
management: '管理',
},
default_login: '預設登入方式',

View File

@ -1,6 +1,5 @@
export default {
title: '工具',
all: '全部',
createTool: '创建工具',
editTool: '編輯工具',
createMcpTool: '建立MCP',
@ -46,13 +45,11 @@ export default {
},
form: {
toolName: {
label: '名稱',
name: '工具名稱',
placeholder: '請輸入工具名稱',
requiredMessage: '請輸入工具名稱',
},
mcpName: {
label: '名稱',
name: 'MCP名稱',
placeholder: '請輸入MCP名稱',
requiredMessage: '請輸入MCP名稱',

View File

@ -82,16 +82,16 @@ export default {
nodes: {
knowledgeWriteNode: {
text: '知識庫寫入',
label: '知識庫寫入',
label: '將輸入的分段列表寫入當前知識庫,並完成向量化處理',
},
dataSourceWebNode: {
label: 'Web網站',
text: 'Web網站',
text: '輸入根地址自動抓取Web數據單鏈接對應單文檔輸出含內容的文檔列表',
field_label: '文件列表',
},
dataSourceLocalNode: {
label: '本地文件',
text: '本地文件',
text: '上傳本地文件,輸出文件列表(不解析內容,需配合 “文檔內容提取” 節點解析)',
fileList: '文件列表',
fileFormat: {
label: '支持的文件格式',
@ -261,12 +261,12 @@ export default {
},
documentExtractNode: {
label: '文檔內容提取',
text: '提取文檔中的內容',
text: '解析輸入文檔,輸出結構化文檔內容',
content: '文檔內容',
},
documentSplitNode: {
label: '文檔拆分',
text: '將文檔內容拆分為多個分段',
text: '按分段策略拆分輸入文檔內容,輸出分段文本列表',
paragraphList: '分段列表',
splitStrategy: {
label: '分段策略',
@ -519,9 +519,6 @@ export default {
},
SystemPromptPlaceholder: '系統提示詞,可以引用系統中的變量:如',
UserPromptPlaceholder: '用戶提示詞,可以引用系統中的變量:如',
debug: {
executionResult: '執行結果',
executionSuccess: '執行成功',
executionFailed: '執行失敗',
},
ExecutionRecord: '執行記錄',
debug: {},
}

View File

@ -112,7 +112,7 @@ const DocumentRouter = {
path: 'knowledge-workflow-setting',
name: 'knowledgeWorkflowSetting',
meta: {
title: 'views.workflow.workflow',
title: 'workflow.workflow',
icon: 'app-workflow',
activeMenu: '/knowledge',
parentPath: '/knowledge/:id/:folderId/:type',

View File

@ -49,7 +49,7 @@
</div>
<h4 class="ellipsis">
{{ detail?.name || $t('views.application.form.appName.label') }}
{{ detail?.name || $t('common.name') }}
</h4>
</div>
<div class="mr-16">

View File

@ -1,6 +1,6 @@
<template>
<div class="workflow-publish-history border-l white-bg">
<h4 class="border-b p-16-24">{{ $t('views.workflow.setting.releaseHistory') }}</h4>
<h4 class="border-b p-16-24">{{ $t('workflow.setting.releaseHistory') }}</h4>
<div class="list-height pt-0">
<el-scrollbar>
<div class="p-8 pt-0">
@ -24,7 +24,7 @@
@close="closeWrite(row)"
/>
<el-tag v-if="index === 0" class="default-tag ml-4">{{
$t('views.workflow.setting.latestRelease')
$t('workflow.setting.latestRelease')
}}</el-tag>
</h5>
<el-text type="info" class="color-secondary flex align-center mt-8">
@ -48,7 +48,7 @@
</el-dropdown-item>
<el-dropdown-item @click="refreshVersion(row)">
<el-icon class="color-secondary"><RefreshLeft /></el-icon>
{{ $t('views.workflow.setting.restoreCurrentVersion') }}
{{ $t('workflow.setting.restoreCurrentVersion') }}
</el-dropdown-item>
</el-dropdown-menu>
</template>
@ -126,7 +126,7 @@ function editName(val: string, item: any) {
getList()
})
} else {
MsgError(t('views.workflow.tip.nameMessage'))
MsgError(t('workflow.tip.nameMessage'))
}
}

View File

@ -6,18 +6,18 @@
<h4 class="ellipsis" style="max-width: 300px" :title="detail?.name">{{ detail?.name }}</h4>
<div v-if="showHistory && disablePublic">
<el-text type="info" class="ml-16 color-secondary"
>{{ $t('views.workflow.info.previewVersion') }}
>{{ $t('workflow.info.previewVersion') }}
{{ currentVersion.name || datetimeFormat(currentVersion.update_time) }}</el-text
>
</div>
<el-text type="info" class="ml-16 color-secondary" v-else-if="saveTime"
>{{ $t('views.workflow.info.saveTime')
>{{ $t('workflow.info.saveTime')
}}{{ datetimeFormat(saveTime) }}</el-text
>
</div>
<div v-if="showHistory && disablePublic">
<el-button type="primary" class="mr-8" @click="refreshVersion()">
{{ $t('views.workflow.setting.restoreVersion') }}
{{ $t('workflow.setting.restoreVersion') }}
</el-button>
<el-divider direction="vertical" />
<el-button text @click="closeHistory">
@ -29,7 +29,7 @@
<div v-else>
<el-button @click="showPopover = !showPopover">
<AppIcon iconName="app-add-outlined" class="mr-4" />
{{ $t('views.workflow.setting.addComponent') }}
{{ $t('workflow.setting.addComponent') }}
</el-button>
<el-button @click="clickShowDebug" :disabled="showDebug" v-if="permissionPrecise.debug(id)">
<AppIcon iconName="app-debug-outlined" class="mr-4"></AppIcon>
@ -58,11 +58,11 @@
<el-dropdown-item @click="openHistory">
<AppIcon iconName="app-history-outlined" class="color-secondary"></AppIcon>
{{ $t('views.workflow.setting.releaseHistory') }}
{{ $t('workflow.setting.releaseHistory') }}
</el-dropdown-item>
<el-dropdown-item>
<AppIcon iconName="app-save-outlined" class="color-secondary"></AppIcon>
{{ $t('views.workflow.setting.autoSave') }}
{{ $t('workflow.setting.autoSave') }}
<div class="ml-4">
<el-switch size="small" v-model="isSave" @change="changeSave" />
</div>
@ -106,7 +106,7 @@
</div>
<h4 class="ellipsis" style="max-width: 270px" :title="detail?.name">
{{ detail?.name || $t('views.application.form.appName.label') }}
{{ detail?.name || $t('common.name') }}
</h4>
</div>
<div class="mr-16">
@ -212,9 +212,9 @@ const shareUrl = computed(
function back() {
if (JSON.stringify(cloneWorkFlow.value) !== JSON.stringify(getGraphData())) {
MsgConfirm(t('common.tip'), t('views.workflow.tip.saveMessage'), {
confirmButtonText: t('views.workflow.setting.exitSave'),
cancelButtonText: t('views.workflow.setting.exit'),
MsgConfirm(t('common.tip'), t('workflow.tip.saveMessage'), {
confirmButtonText: t('workflow.setting.exitSave'),
cancelButtonText: t('workflow.setting.exit'),
distinguishCancelAndClose: true,
})
.then(() => {
@ -351,14 +351,14 @@ const publish = () => {
if (typeof err_message == 'string') {
MsgError(
res.node.properties?.stepName +
` ${t('views.workflow.node').toLowerCase()} ` +
` ${t('workflow.node').toLowerCase()} ` +
err_message.toLowerCase(),
)
} else {
const keys = Object.keys(err_message)
MsgError(
node.properties?.stepName +
` ${t('views.workflow.node').toLowerCase()} ` +
` ${t('workflow.node').toLowerCase()} ` +
err_message[keys[0]]?.[0]?.message.toLowerCase(),
)
}
@ -369,13 +369,13 @@ const publish = () => {
const err_message = res.errMessage
if (typeof err_message == 'string') {
MsgError(
res.node.properties?.stepName + ` ${t('views.workflow.node')}` + err_message,
res.node.properties?.stepName + ` ${t('workflow.node')}` + err_message,
)
} else {
const keys = Object.keys(err_message)
MsgError(
node.properties?.stepName +
` ${t('views.workflow.node')}` +
` ${t('workflow.node')}` +
err_message[keys[0]]?.[0]?.message,
)
}
@ -407,13 +407,13 @@ const clickShowDebug = () => {
const err_message = res.errMessage
if (typeof err_message == 'string') {
MsgError(
res.node.properties?.stepName + ` ${t('views.workflow.node')}` + err_message,
res.node.properties?.stepName + ` ${t('workflow.node')}` + err_message,
)
} else {
const keys = Object.keys(err_message)
MsgError(
node.properties?.stepName +
` ${t('views.workflow.node')}` +
` ${t('workflow.node')}` +
err_message[keys[0]]?.[0]?.message,
)
}

View File

@ -48,7 +48,7 @@
<template #label>
<div class="flex-between">
<span
>{{ $t('views.application.form.appName.label') }}
>{{ $t('common.name') }}
<span class="color-danger">*</span></span
>
</div>

View File

@ -15,7 +15,7 @@
require-asterisk-position="right"
@submit.prevent
>
<el-form-item :label="$t('views.application.form.appName.label')" prop="name">
<el-form-item :label="$t('common.name')" prop="name">
<el-input
v-model="applicationForm.name"
maxlength="64"

View File

@ -19,7 +19,7 @@
require-asterisk-position="right"
@submit.prevent
>
<el-form-item :label="$t('views.application.form.appName.label')" prop="name">
<el-form-item :label="$t('common.name')" prop="name">
<el-input
v-model="applicationForm.name"
maxlength="64"

View File

@ -19,7 +19,7 @@
<el-form-item>
<el-radio-group v-model="form.mcp_source" @change="mcpSourceChange">
<el-radio value="referencing">
{{ $t('views.workflow.nodes.mcpNode.reference') }}
{{ $t('workflow.nodes.mcpNode.reference') }}
</el-radio>
<el-radio value="custom">{{ $t('common.custom') }}</el-radio>
</el-radio-group>
@ -171,7 +171,7 @@ const submit = () => {
try {
JSON.parse(form.value.mcp_servers || '{}')
} catch (e) {
MsgError(t('views.workflow.nodes.mcpNode.mcpServerTip'))
MsgError(t('workflow.nodes.mcpNode.mcpServerTip'))
return
}
emit('refresh', form.value)

View File

@ -37,7 +37,7 @@
<div class="card-never border-r-6 mb-16">
<el-checkbox
v-model="allCheck"
:label="$t('views.document.feishu.allCheck')"
:label="$t('common.allCheck')"
size="large"
class="ml-24"
@change="handleAllCheckChange"

View File

@ -79,9 +79,9 @@ const stateMap: any = {
[State.PENDING]: (type: number) => t('views.document.fileStatus.PENDING'),
[State.STARTED]: (type: number) => startedMap[type],
[State.REVOKE]: (type: number) => t('views.document.fileStatus.REVOKE'),
[State.REVOKED]: (type: number) => t('views.document.fileStatus.SUCCESS'),
[State.FAILURE]: (type: number) => t('views.document.fileStatus.FAILURE'),
[State.SUCCESS]: (type: number) => t('views.document.fileStatus.SUCCESS'),
[State.REVOKED]: (type: number) => t('common.status.success'),
[State.FAILURE]: (type: number) => t('common.status.fail'),
[State.SUCCESS]: (type: number) => t('common.status.success'),
}
</script>
<style lang="scss" scoped></style>

View File

@ -126,7 +126,7 @@
@change="search_type_change"
>
<el-option :label="$t('dynamicsForm.tag.label')" value="tag" />
<el-option :label="$t('views.tool.form.toolName.label')" value="name" />
<el-option :label="$t('common.name')" value="name" />
</el-select>
<el-input
v-if="search_type === 'name'"
@ -211,19 +211,19 @@
:class="filterMethod['status'] ? '' : 'is-active'"
:command="beforeCommand('status', '')"
class="justify-center"
>{{ $t('views.document.table.all') }}
>{{ $t('common.status.all') }}
</el-dropdown-item>
<el-dropdown-item
:class="filterMethod['status'] === State.SUCCESS ? 'is-active' : ''"
class="justify-center"
:command="beforeCommand('status', State.SUCCESS)"
>{{ $t('views.document.fileStatus.SUCCESS') }}
>{{ $t('common.status.success') }}
</el-dropdown-item>
<el-dropdown-item
:class="filterMethod['status'] === State.FAILURE ? 'is-active' : ''"
class="justify-center"
:command="beforeCommand('status', State.FAILURE)"
>{{ $t('views.document.fileStatus.FAILURE') }}
>{{ $t('common.status.fail') }}
</el-dropdown-item>
<el-dropdown-item
:class="
@ -303,7 +303,7 @@
:class="filterMethod['is_active'] === '' ? 'is-active' : ''"
:command="beforeCommand('is_active', '')"
class="justify-center"
>{{ $t('views.document.table.all') }}
>{{ $t('common.status.all') }}
</el-dropdown-item>
<el-dropdown-item
:class="filterMethod['is_active'] === true ? 'is-active' : ''"
@ -359,7 +359,7 @@
:class="filterMethod['hit_handling_method'] ? '' : 'is-active'"
:command="beforeCommand('hit_handling_method', '')"
class="justify-center"
>{{ $t('views.document.table.all') }}
>{{ $t('common.status.all') }}
</el-dropdown-item>
<template v-for="(value, key) of hitHandlingMethod" :key="key">
<el-dropdown-item

View File

@ -1,6 +1,6 @@
<template>
<div class="workflow-publish-history border-l white-bg">
<h4 class="border-b p-16-24">{{ $t('views.workflow.setting.releaseHistory') }}</h4>
<h4 class="border-b p-16-24">{{ $t('workflow.setting.releaseHistory') }}</h4>
<div class="list-height pt-0">
<el-scrollbar>
<div class="p-8 pt-0">
@ -24,7 +24,7 @@
@close="closeWrite(row)"
/>
<el-tag v-if="index === 0" class="default-tag ml-4">{{
$t('views.workflow.setting.latestRelease')
$t('workflow.setting.latestRelease')
}}</el-tag>
</h5>
<el-text type="info" class="color-secondary flex align-center mt-8">
@ -51,7 +51,7 @@
</el-dropdown-item>
<el-dropdown-item @click="refreshVersion(row)">
<el-icon class="color-secondary"><RefreshLeft /></el-icon>
{{ $t('views.workflow.setting.restoreCurrentVersion') }}
{{ $t('workflow.setting.restoreCurrentVersion') }}
</el-dropdown-item>
</el-dropdown-menu>
</template>
@ -137,7 +137,7 @@ function editName(val: string, item: any) {
getList()
})
} else {
MsgError(t('views.workflow.tip.nameMessage'))
MsgError(t('workflow.tip.nameMessage'))
}
}

View File

@ -1,26 +1,25 @@
<template>
<div>
<h4 class="title-decoration-1 mb-16 mt-4">
{{ $t('views.workflow.debug.executionResult') }}
{{ $t('chat.executionDetails.title') }}
</h4>
<div class="mb-16">
<!-- 执行结果 -->
<el-alert
v-if="state == 'SUCCESS'"
:title="$t('views.workflow.debug.executionSuccess')"
:title="$t('common.success')"
type="success"
show-icon
:closable="false"
/>
<el-alert
v-if="state == 'FAILURE'"
:title="$t('views.workflow.debug.executionFailed')"
:title="$t('common.fail')"
type="error"
show-icon
:closable="false"
/>
</div>
<p class="lighter mb-8">{{ $t('chat.executionDetails.title') }}</p>
<ExecutionDetailContent :detail="detail" app-type="WORK_FLOW"></ExecutionDetailContent>
</div>
</template>

View File

@ -6,17 +6,17 @@
<h4 class="ellipsis" style="max-width: 300px" :title="detail?.name">{{ detail?.name }}</h4>
<div v-if="showHistory && disablePublic">
<el-text type="info" class="ml-16 color-secondary"
>{{ $t('views.workflow.info.previewVersion') }}
>{{ $t('workflow.info.previewVersion') }}
{{ currentVersion.name || datetimeFormat(currentVersion.update_time) }}</el-text
>
</div>
<el-text type="info" class="ml-16 color-secondary" v-else-if="saveTime"
>{{ $t('views.workflow.info.saveTime') }}{{ datetimeFormat(saveTime) }}</el-text
>{{ $t('workflow.info.saveTime') }}{{ datetimeFormat(saveTime) }}</el-text
>
</div>
<div v-if="showHistory && disablePublic">
<el-button type="primary" class="mr-8" @click="refreshVersion()">
{{ $t('views.workflow.setting.restoreVersion') }}
{{ $t('workflow.setting.restoreVersion') }}
</el-button>
<el-divider direction="vertical" />
<el-button text @click="closeHistory">
@ -28,7 +28,7 @@
<div v-else>
<el-button @click="showPopover = !showPopover">
<AppIcon iconName="app-add-outlined" class="mr-4" />
{{ $t('views.workflow.setting.addComponent') }}
{{ $t('workflow.setting.addComponent') }}
</el-button>
<el-button @click="clickShowDebug" :disabled="showDebug" v-if="permissionPrecise.debug(id)">
<AppIcon iconName="app-debug-outlined" class="mr-4"></AppIcon>
@ -50,7 +50,7 @@
<el-dropdown-menu>
<el-dropdown-item @click="toImportDoc">
<AppIcon iconName="app-import-doc" class="color-secondary"></AppIcon>
{{ $t('views.workflow.operation.toImportDoc') }}
{{ $t('workflow.operation.toImportDoc') }}
</el-dropdown-item>
<el-dropdown-item @click="openListAction">
<AppIcon iconName="app-history-outlined" class="color-secondary"></AppIcon>
@ -58,11 +58,11 @@
</el-dropdown-item>
<el-dropdown-item @click="openHistory">
<AppIcon iconName="app-history-outlined" class="color-secondary"></AppIcon>
{{ $t('views.workflow.setting.releaseHistory') }}
{{ $t('workflow.setting.releaseHistory') }}
</el-dropdown-item>
<el-dropdown-item v-if="permissionPrecise.workflow_edit(id)">
<AppIcon iconName="app-save-outlined" class="color-secondary"></AppIcon>
{{ $t('views.workflow.setting.autoSave') }}
{{ $t('workflow.setting.autoSave') }}
<div class="ml-4">
<el-switch size="small" v-model="isSave" @change="changeSave" />
</div>
@ -222,9 +222,9 @@ const shareUrl = computed(
function back() {
if (JSON.stringify(cloneWorkFlow.value) !== JSON.stringify(getGraphData())) {
MsgConfirm(t('common.tip'), t('views.workflow.tip.saveMessage'), {
confirmButtonText: t('views.workflow.setting.exitSave'),
cancelButtonText: t('views.workflow.setting.exit'),
MsgConfirm(t('common.tip'), t('workflow.tip.saveMessage'), {
confirmButtonText: t('workflow.setting.exitSave'),
cancelButtonText: t('workflow.setting.exit'),
distinguishCancelAndClose: true,
})
.then(() => {
@ -339,14 +339,14 @@ const publish = () => {
if (typeof err_message == 'string') {
MsgError(
res.node.properties?.stepName +
` ${t('views.workflow.node').toLowerCase()} ` +
` ${t('workflow.node').toLowerCase()} ` +
err_message.toLowerCase(),
)
} else {
const keys = Object.keys(err_message)
MsgError(
node.properties?.stepName +
` ${t('views.workflow.node').toLowerCase()} ` +
` ${t('workflow.node').toLowerCase()} ` +
err_message[keys[0]]?.[0]?.message.toLowerCase(),
)
}
@ -356,12 +356,12 @@ const publish = () => {
const node = res.node
const err_message = res.errMessage
if (typeof err_message == 'string') {
MsgError(res.node.properties?.stepName + ` ${t('views.workflow.node')}` + err_message)
MsgError(res.node.properties?.stepName + ` ${t('workflow.node')}` + err_message)
} else {
const keys = Object.keys(err_message)
MsgError(
node.properties?.stepName +
` ${t('views.workflow.node')}` +
` ${t('workflow.node')}` +
err_message[keys[0]]?.[0]?.message,
)
}
@ -391,12 +391,12 @@ const clickShowDebug = () => {
const node = res.node
const err_message = res.errMessage
if (typeof err_message == 'string') {
MsgError(res.node.properties?.stepName + ` ${t('views.workflow.node')}` + err_message)
MsgError(res.node.properties?.stepName + ` ${t('workflow.node')}` + err_message)
} else {
const keys = Object.keys(err_message)
MsgError(
node.properties?.stepName +
` ${t('views.workflow.node')}` +
` ${t('workflow.node')}` +
err_message[keys[0]]?.[0]?.message,
)
}

View File

@ -18,7 +18,7 @@
<el-option :label="$t('common.creator')" value="create_user"/>
<el-option :label="$t('common.name')" value="name"/>
<el-option :label="$t('views.system.resource_management.type')" value="type"/>
<el-option :label="$t('common.type')" value="type"/>
</el-select>
<el-input
v-if="search_type === 'name'"
@ -74,7 +74,7 @@
<el-table-column
prop="tool_type"
:label="$t('views.system.resource_management.type')"
:label="$t('common.type')"
width="160"
>
<template #default="scope">

View File

@ -17,7 +17,7 @@
>
<el-option :label="$t('common.creator')" value="create_user" />
<el-option :label="$t('common.name')" value="name" />
<el-option :label="$t('views.system.resource_management.type')" value="type" />
<el-option :label="$t('common.type')" value="type" />
</el-select>
<el-input
v-if="search_type === 'name'"
@ -71,7 +71,7 @@
<el-table-column
prop="tool_type"
:label="$t('views.system.resource_management.type')"
:label="$t('common.type')"
width="110"
>
<template #default="{ row }">

View File

@ -16,8 +16,8 @@
@change="search_type_change"
>
<el-option :label="$t('common.creator')" value="create_user" />
<el-option :label="$t('views.tool.form.toolName.label')" value="name" />
<el-option :label="$t('views.system.resource_management.type')" value="tool_type"/>
<el-option :label="$t('common.name')" value="name" />
<el-option :label="$t('common.type')" value="tool_type"/>
</el-select>
<el-input
v-if="search_type === 'name'"
@ -79,7 +79,7 @@
</template>
</el-table-column>
<el-table-column prop="tool_type" :label="$t('views.system.resource_management.type')">
<el-table-column prop="tool_type" :label="$t('common.type')">
<template #default="scope">
<span v-if="scope.row.tool_type === 'MCP'"> MCP </span>
<span v-else-if="scope.row.tool_type === 'DATA_SOURCE'"> {{ $t('views.tool.dataSource.title') }} </span>

View File

@ -5,7 +5,7 @@
<el-text class="color-secondary lighter">{{ $t('views.shared.authorized_tip') }}</el-text>
</template>
<p class="mb-8 lighter">{{ $t('views.shared.type') }}</p>
<p class="mb-8 lighter">{{ $t('common.type') }}</p>
<el-radio-group v-model="listType">
<el-radio value="WHITE_LIST">{{ $t('views.shared.WHITE_LIST') }}</el-radio>
<el-radio value="BLACK_LIST">{{ $t('views.shared.BLACK_LIST') }}</el-radio>
@ -35,7 +35,7 @@
@change="handleCheckAllChange"
v-if="!search"
>
{{ $t('views.shared.allCheck') }}
{{ $t('common.allCheck') }}
</el-checkbox>
<el-scrollbar max-height="205" wrap-class="p-16 pt-0">
<el-checkbox-group

View File

@ -11,7 +11,7 @@
</el-breadcrumb>
<el-divider direction="vertical" />
<el-radio-group v-model="toolType" @change="radioChange" class="app-radio-button-group">
<el-radio-button value="">{{ $t('views.tool.all') }}</el-radio-button>
<el-radio-button value="">{{ $t('common.status.all') }}</el-radio-button>
<el-radio-button value="CUSTOM">{{ $t('views.tool.title') }}</el-radio-button>
<el-radio-button value="MCP">MCP</el-radio-button>
<el-radio-button value="DATA_SOURCE">{{ $t('views.tool.dataSource.title') }}</el-radio-button>

View File

@ -1,6 +1,6 @@
<template>
<el-dialog
:title="$t('views.operateLog.table.opt.label')"
:title="$t('views.operateLog.table.opt')"
v-model="dialogVisible"
:close-on-click-modal="false"
:close-on-press-escape="false"
@ -15,7 +15,7 @@
<template #footer>
<span class="dialog-footer mt-16">
<el-button @click.prevent="dialogVisible = false">
{{ $t('views.operateLog.close') }}
{{ $t('common.close') }}
</el-button>
</span>
</template>

View File

@ -106,10 +106,10 @@
@changePage="getList"
v-loading="loading"
>
<el-table-column prop="menu" :label="$t('views.operateLog.table.menu.label')" width="160">
<el-table-column prop="menu" :label="$t('views.operateLog.table.menu')" width="160">
<template #header>
<div>
<span>{{ $t('views.operateLog.table.menu.label') }}</span>
<span>{{ $t('views.operateLog.table.menu') }}</span>
<el-popover :width="200" trigger="click" :visible="popoverVisible">
<template #reference>
<el-button
@ -154,7 +154,11 @@
</div>
</template>
</el-table-column>
<el-table-column prop="operate" :label="$t('views.operateLog.table.operate.detail')">
<el-table-column
prop="operate"
:label="$t('views.operateLog.table.detail')"
width="160"
>
<template #default="{ row }">
<el-tooltip
:content="
@ -176,7 +180,7 @@
<el-table-column
width="120"
prop="user.username"
:label="$t('views.operateLog.table.user.label')"
:label="$t('views.operateLog.table.user')"
/>
<el-table-column
v-if="user.isEE()"
@ -231,24 +235,18 @@
</div>
</template>
</el-table-column>
<el-table-column
prop="status"
:label="$t('views.operateLog.table.status.label')"
width="100"
>
<el-table-column prop="status" :label="$t('common.status.label')" width="100">
<template #default="{ row }">
<span v-if="row.status === 200">{{
$t('views.operateLog.table.status.success')
}}</span>
<span v-else style="color: red">{{ $t('views.operateLog.table.status.fail') }}</span>
<span v-if="row.status === 200">{{ $t('common.status.success') }}</span>
<span v-else style="color: red">{{ $t('common.status.fail') }}</span>
</template>
</el-table-column>
<el-table-column
prop="ip_address"
:label="$t('views.operateLog.table.ip_address.label')"
:label="$t('views.operateLog.table.ip_address')"
width="160"
></el-table-column>
<el-table-column :label="$t('views.operateLog.table.operateTime.label')" width="180">
<el-table-column :label="$t('views.operateLog.table.operateTime')" width="180">
<template #default="{ row }">
{{ datetimeFormat(row.create_time) }}
</template>
@ -258,7 +256,7 @@
<span class="mr-4">
<el-tooltip
effect="dark"
:content="$t('views.operateLog.table.opt.label')"
:content="$t('views.operateLog.table.opt')"
placement="top"
>
<el-button type="primary" text @click.stop="showDetails(row)" class="text-button">
@ -310,10 +308,8 @@ import { t } from '@/locales'
import { beforeDay, datetimeFormat, nowDate } from '@/utils/time'
import useStore from '@/stores'
import WorkspaceApi from '@/api/system/workspace.ts'
import { hasPermission } from '@/utils/permission'
import { EditionConst, PermissionConst, RoleConst } from '@/utils/permission/data.ts'
import { ComplexPermission } from '@/utils/permission/type.ts'
import { loadSharedApi } from '@/utils/dynamics-api/shared-api.ts'
import { MsgSuccess } from '@/utils/message.ts'
const { user } = useStore()
@ -365,25 +361,25 @@ const dayOptions = [
const filterOptions = [
{
value: 'user',
label: t('views.operateLog.table.user.label'),
label: t('views.operateLog.table.user'),
},
{
value: 'status',
label: t('views.operateLog.table.status.label'),
label: t('common.status.label'),
},
{
value: 'ip_address',
label: t('views.operateLog.table.ip_address.label'),
label: t('views.operateLog.table.ip_address'),
},
]
const statusOptions = [
{
value: '200',
label: t('views.operateLog.table.status.success'),
label: t('common.status.success'),
},
{
value: '500',
label: t('views.operateLog.table.status.fail'),
label: t('common.status.fail'),
},
]
const operateOptions = ref<any[]>([])

View File

@ -16,7 +16,7 @@
v-loading="loading"
@submit.prevent
>
<el-form-item :label="$t('views.tool.form.toolName.label')" prop="name">
<el-form-item :label="$t('common.name')" prop="name">
<div class="flex w-full">
<div
v-if="form.id"

View File

@ -17,7 +17,7 @@
v-loading="loading"
@submit.prevent
>
<el-form-item :label="$t('views.tool.form.mcpName.label')" prop="name">
<el-form-item :label="$t('common.name')" prop="name">
<div class="flex w-full">
<div
v-if="form.id"
@ -253,7 +253,7 @@ const submit = async (formEl: FormInstance | undefined) => {
throw new Error('Code must be a valid JSON object')
}
} catch (e) {
MsgError(t('views.workflow.nodes.mcpNode.mcpServerTip'))
MsgError(t('workflow.nodes.mcpNode.mcpServerTip'))
return
}
loading.value = true

View File

@ -16,7 +16,7 @@
v-loading="loading"
@submit.prevent
>
<el-form-item :label="$t('views.tool.form.toolName.label')" prop="name">
<el-form-item :label="$t('common.name')" prop="name">
<div class="flex w-full">
<div
v-if="form.id"

View File

@ -14,7 +14,7 @@
>
<el-option :label="$t('common.creator')" value="create_user" />
<el-option :label="$t('views.tool.form.toolName.label')" value="name" />
<el-option :label="$t('common.name')" value="name" />
</el-select>
<el-input
v-if="search_type === 'name'"

View File

@ -23,7 +23,7 @@
<FolderBreadcrumb :folderList="folderList" @click="folderClickHandle" v-else />
<el-divider direction="vertical" />
<el-radio-group v-model="toolType" @change="radioChange" class="app-radio-button-group">
<el-radio-button value="">{{ $t('views.tool.all') }}</el-radio-button>
<el-radio-button value="">{{ $t('common.status.all') }}</el-radio-button>
<el-radio-button value="CUSTOM">{{ $t('views.tool.title') }}</el-radio-button>
<el-radio-button value="MCP">MCP</el-radio-button>
<el-radio-button value="DATA_SOURCE">{{ $t('views.tool.dataSource.title') }}</el-radio-button>

View File

@ -62,21 +62,21 @@ function visibleChange(bool: boolean) {
const validate = () => {
const incomingNodeValue = getOptionsValue()
if (!data.value || data.value.length === 0) {
return Promise.reject(t('views.workflow.variable.ReferencingRequired'))
return Promise.reject(t('workflow.variable.ReferencingRequired'))
}
if (data.value.length < 2) {
return Promise.reject(t('views.workflow.variable.ReferencingError'))
return Promise.reject(t('workflow.variable.ReferencingError'))
}
const node_id = data.value[0]
const node_field = data.value[1]
const nodeParent = incomingNodeValue.find((item: any) => item.value === node_id)
if (!nodeParent) {
data.value = []
return Promise.reject(t('views.workflow.variable.NoReferencing'))
return Promise.reject(t('workflow.variable.NoReferencing'))
}
if (!nodeParent.children.some((item: any) => item.value === node_field)) {
data.value = []
return Promise.reject(t('views.workflow.variable.NoReferencing'))
return Promise.reject(t('workflow.variable.NoReferencing'))
}
return Promise.resolve('')
}

View File

@ -42,14 +42,14 @@
</el-button>
<template #dropdown>
<div style="width: 280px" class="p-12-16">
<h5>{{ $t('views.workflow.condition.title') }}</h5>
<h5>{{ $t('workflow.condition.title') }}</h5>
<p class="mt-8 lighter">
<span>{{ $t('views.workflow.condition.front') }}</span>
<span>{{ $t('workflow.condition.front') }}</span>
<el-select v-model="condition" size="small" style="width: 60px; margin: 0 8px">
<el-option :label="$t('views.workflow.condition.AND')" value="AND" />
<el-option :label="$t('views.workflow.condition.OR')" value="OR" />
<el-option :label="$t('workflow.condition.AND')" value="AND" />
<el-option :label="$t('workflow.condition.OR')" value="OR" />
</el-select>
<span>{{ $t('views.workflow.condition.text') }}</span>
<span>{{ $t('workflow.condition.text') }}</span>
</p>
</div>
</template>
@ -81,8 +81,8 @@
class="mb-16"
:title="
props.nodeModel.type === 'application-node'
? $t('views.workflow.tip.applicationNodeError')
: $t('views.workflow.tip.toolNodeError')
? $t('workflow.tip.applicationNodeError')
: $t('workflow.tip.toolNodeError')
"
type="error"
show-icon
@ -102,7 +102,7 @@
<span class="break-all">{{ item.label }} {{ '{' + item.value + '}' }}</span>
<el-tooltip
effect="dark"
:content="$t('views.workflow.setting.copyParam')"
:content="$t('workflow.setting.copyParam')"
placement="top"
v-if="showicon === index"
>
@ -134,7 +134,7 @@
</el-collapse-transition>
<el-dialog
:title="$t('views.workflow.nodeName')"
:title="$t('workflow.nodeName')"
v-model="nodeNameDialogVisible"
:close-on-click-modal="false"
:close-on-press-escape="false"
@ -257,7 +257,7 @@ const editName = async (formEl: FormInstance | undefined) => {
nodeNameDialogVisible.value = false
formEl.resetFields()
} else {
MsgError(t('views.workflow.tip.repeatedNodeError'))
MsgError(t('workflow.tip.repeatedNodeError'))
}
}
})
@ -280,7 +280,7 @@ const copyNode = () => {
props.nodeModel.graphModel.toFront(cloneNode.id)
}
const deleteNode = () => {
MsgConfirm(t('common.tip'), t('views.workflow.delete.confirmTitle'), {
MsgConfirm(t('common.tip'), t('workflow.delete.confirmTitle'), {
confirmButtonText: t('common.confirm'),
confirmButtonClass: 'danger',
}).then(() => {
@ -352,7 +352,6 @@ function showOperate(type: string) {
}
function showConditionOperate(type: string) {
console.log(props.nodeModel)
return (
![
WorkflowType.Start,

View File

@ -18,10 +18,10 @@
<el-button link @click="zoomOut" style="border: none">
<el-tooltip
effect="dark"
:content="$t('views.workflow.control.zoomOut')"
:content="$t('workflow.control.zoomOut')"
placement="top"
>
<el-icon :size="16" :title="$t('views.workflow.control.zoomOut')"
<el-icon :size="16" :title="$t('workflow.control.zoomOut')"
><ZoomOut
/></el-icon>
</el-tooltip>
@ -29,10 +29,10 @@
<el-button link @click="zoomIn" style="border: none">
<el-tooltip
effect="dark"
:content="$t('views.workflow.control.zoomIn')"
:content="$t('workflow.control.zoomIn')"
placement="top"
>
<el-icon :size="16" :title="$t('views.workflow.control.zoomIn')"
<el-icon :size="16" :title="$t('workflow.control.zoomIn')"
><ZoomIn
/></el-icon>
</el-tooltip>
@ -40,12 +40,12 @@
<el-button link @click="fitView" style="border: none">
<el-tooltip
effect="dark"
:content="$t('views.workflow.control.fitView')"
:content="$t('workflow.control.fitView')"
placement="top"
>
<AppIcon
iconName="app-fitview"
:title="$t('views.workflow.control.fitView')"
:title="$t('workflow.control.fitView')"
></AppIcon>
</el-tooltip>
</el-button>
@ -53,39 +53,39 @@
<el-button link @click="retract" style="border: none">
<el-tooltip
effect="dark"
:content="$t('views.workflow.control.retract')"
:content="$t('workflow.control.retract')"
placement="top"
>
<AppIcon
style="font-size: 16px"
iconName="app-retract"
:title="$t('views.workflow.control.retract')"
:title="$t('workflow.control.retract')"
></AppIcon>
</el-tooltip>
</el-button>
<el-button link @click="extend" style="border: none">
<el-tooltip
effect="dark"
:content="$t('views.workflow.control.extend')"
:content="$t('workflow.control.extend')"
placement="top"
>
<AppIcon
style="font-size: 16px"
iconName="app-extend"
:title="$t('views.workflow.control.extend')"
:title="$t('workflow.control.extend')"
></AppIcon>
</el-tooltip>
</el-button>
<el-button link @click="layout" style="border: none">
<el-tooltip
effect="dark"
:content="$t('views.workflow.control.beautify')"
:content="$t('workflow.control.beautify')"
placement="top"
>
<AppIcon
style="font-size: 16px"
iconName="app-beautify"
:title="$t('views.workflow.control.beautify')"
:title="$t('workflow.control.beautify')"
></AppIcon>
</el-tooltip>
</el-button>

View File

@ -66,13 +66,13 @@ class AppNode extends HtmlResize.view {
if (this.props.model.type === 'start-node') {
result.push({
value: 'global',
label: t('views.workflow.variable.global'),
label: t('workflow.variable.global'),
type: 'global',
children: this.props.model.properties?.config?.globalFields || [],
})
result.push({
value: 'chat',
label: t('views.workflow.variable.chat'),
label: t('workflow.variable.chat'),
type: 'chat',
children: this.props.model.properties?.config?.chatFields || [],
})
@ -88,7 +88,7 @@ class AppNode extends HtmlResize.view {
result.push({
value: 'global',
label: t('views.workflow.variable.global'),
label: t('workflow.variable.global'),
type: 'global',
children: globalFields,
})
@ -405,13 +405,13 @@ class AppNodeModel extends HtmlResize.model {
return false
}
const circleOnlyAsTarget = {
message: t('views.workflow.tip.onlyRight'),
message: t('workflow.tip.onlyRight'),
validate: (sourceNode: any, targetNode: any, sourceAnchor: any) => {
return sourceAnchor.type === 'right'
},
}
this.sourceRules.push({
message: t('views.workflow.tip.notRecyclable'),
message: t('workflow.tip.notRecyclable'),
validate: (sourceNode: any, targetNode: any, sourceAnchor: any, targetAnchor: any) => {
if (targetNode.id == sourceNode.id) {
return false
@ -427,7 +427,7 @@ class AppNodeModel extends HtmlResize.model {
this.sourceRules.push(circleOnlyAsTarget)
this.targetRules.push({
message: t('views.workflow.tip.onlyLeft'),
message: t('workflow.tip.onlyLeft'),
validate: (sourceNode: any, targetNode: any, sourceAnchor: any, targetAnchor: any) => {
return targetAnchor.type === 'left'
},

View File

@ -9,16 +9,16 @@ export const startNode = {
y: 3340,
properties: {
height: 364,
stepName: t('views.workflow.nodes.startNode.label'),
stepName: t('workflow.nodes.startNode.label'),
config: {
fields: [
{
label: t('views.workflow.nodes.startNode.question'),
label: t('workflow.nodes.startNode.question'),
value: 'question',
},
],
globalFields: [
{ label: t('views.workflow.nodes.startNode.currentTime'), value: 'time' },
{ label: t('workflow.nodes.startNode.currentTime'), value: 'time' },
{
label: t('views.application.form.historyRecord.label'),
value: 'history_context',
@ -29,8 +29,8 @@ export const startNode = {
},
],
},
fields: [{ label: t('views.workflow.nodes.startNode.question'), value: 'question' }],
globalFields: [{ label: t('views.workflow.nodes.startNode.currentTime'), value: 'time' }],
fields: [{ label: t('workflow.nodes.startNode.question'), value: 'question' }],
globalFields: [{ label: t('workflow.nodes.startNode.currentTime'), value: 'time' }],
showNode: true,
},
}
@ -42,7 +42,7 @@ export const baseNode = {
text: '',
properties: {
height: 728.375,
stepName: t('views.workflow.nodes.baseNode.label'),
stepName: t('workflow.nodes.baseNode.label'),
input_field_list: [],
node_data: {
name: '',
@ -64,7 +64,7 @@ export const knowledgeBaseNode = {
text: '',
properties: {
height: 728.375,
stepName: t('views.workflow.nodes.baseNode.label'),
stepName: t('workflow.nodes.baseNode.label'),
input_field_list: [],
node_data: {
name: '',
@ -82,17 +82,17 @@ export const dataSourceLocalNode = {
type: WorkflowType.DataSourceLocalNode,
x: 360,
y: 2761.3875,
text: t('views.workflow.nodes.dataSourceLocalNode.text'),
label: t('views.workflow.nodes.dataSourceLocalNode.label'),
text: t('workflow.nodes.dataSourceLocalNode.text'),
label: t('workflow.nodes.dataSourceLocalNode.label'),
properties: {
kind: WorkflowKind.DataSource,
height: 728.375,
stepName: t('views.workflow.nodes.dataSourceLocalNode.label'),
stepName: t('workflow.nodes.dataSourceLocalNode.label'),
input_field_list: [],
config: {
fields: [
{
label: t('views.workflow.nodes.dataSourceLocalNode.fileList'),
label: t('workflow.nodes.dataSourceLocalNode.fileList'),
value: 'file_list',
},
],
@ -108,16 +108,16 @@ export const dataSourceWebNode = {
type: WorkflowType.DataSourceWebNode,
x: 360,
y: 2761.3875,
text: t('views.workflow.nodes.dataSourceWebNode.text'),
label: t('views.workflow.nodes.dataSourceWebNode.label'),
text: t('workflow.nodes.dataSourceWebNode.text'),
label: t('workflow.nodes.dataSourceWebNode.label'),
properties: {
kind: WorkflowKind.DataSource,
height: 180,
stepName: t('views.workflow.nodes.dataSourceWebNode.label'),
stepName: t('workflow.nodes.dataSourceWebNode.label'),
config: {
fields: [
{
label: t('views.workflow.nodes.dataSourceWebNode.field_label'),
label: t('workflow.nodes.dataSourceWebNode.field_label'),
value: 'document_list',
},
],
@ -127,11 +127,11 @@ export const dataSourceWebNode = {
export const knowledgeWriteNode = {
type: WorkflowType.KnowledgeWriteNode,
text: t('views.workflow.nodes.knowledgeWriteNode.text'),
label: t('views.workflow.nodes.knowledgeWriteNode.label'),
text: t('workflow.nodes.knowledgeWriteNode.text'),
label: t('workflow.nodes.knowledgeWriteNode.label'),
height: 100,
properties: {
stepName: t('views.workflow.nodes.knowledgeWriteNode.label'),
stepName: t('workflow.nodes.knowledgeWriteNode.label'),
config: {
fields: [],
},
@ -148,23 +148,23 @@ export const baseNodes = [baseNode, startNode]
*/
export const aiChatNode = {
type: WorkflowType.AiChat,
text: t('views.workflow.nodes.aiChatNode.text'),
label: t('views.workflow.nodes.aiChatNode.label'),
text: t('workflow.nodes.aiChatNode.text'),
label: t('workflow.nodes.aiChatNode.label'),
height: 340,
properties: {
stepName: t('views.workflow.nodes.aiChatNode.label'),
stepName: t('workflow.nodes.aiChatNode.label'),
config: {
fields: [
{
label: t('views.workflow.nodes.aiChatNode.answer'),
label: t('workflow.nodes.aiChatNode.answer'),
value: 'answer',
},
{
label: t('views.workflow.nodes.aiChatNode.think'),
label: t('workflow.nodes.aiChatNode.think'),
value: 'reasoning_content',
},
{
label: t('views.workflow.nodes.aiChatNode.historyMessage'),
label: t('workflow.nodes.aiChatNode.historyMessage'),
value: 'history_message',
},
],
@ -176,27 +176,27 @@ export const aiChatNode = {
*/
export const searchKnowledgeNode = {
type: WorkflowType.SearchKnowledge,
text: t('views.workflow.nodes.searchKnowledgeNode.text'),
label: t('views.workflow.nodes.searchKnowledgeNode.label'),
text: t('workflow.nodes.searchKnowledgeNode.text'),
label: t('workflow.nodes.searchKnowledgeNode.label'),
height: 355,
properties: {
stepName: t('views.workflow.nodes.searchKnowledgeNode.label'),
stepName: t('workflow.nodes.searchKnowledgeNode.label'),
config: {
fields: [
{
label: t('views.workflow.nodes.searchKnowledgeNode.paragraph_list'),
label: t('workflow.nodes.searchKnowledgeNode.paragraph_list'),
value: 'paragraph_list',
},
{
label: t('views.workflow.nodes.searchKnowledgeNode.is_hit_handling_method_list'),
label: t('workflow.nodes.searchKnowledgeNode.is_hit_handling_method_list'),
value: 'is_hit_handling_method_list',
},
{
label: t('views.workflow.nodes.searchKnowledgeNode.result'),
label: t('workflow.nodes.searchKnowledgeNode.result'),
value: 'data',
},
{
label: t('views.workflow.nodes.searchKnowledgeNode.directly_return'),
label: t('workflow.nodes.searchKnowledgeNode.directly_return'),
value: 'directly_return',
},
],
@ -209,20 +209,20 @@ export const searchKnowledgeNode = {
*/
export const searchDocumentNode = {
type: WorkflowType.SearchDocument,
text: t('views.workflow.nodes.searchDocumentNode.text'),
label: t('views.workflow.nodes.searchDocumentNode.label'),
text: t('workflow.nodes.searchDocumentNode.text'),
label: t('workflow.nodes.searchDocumentNode.label'),
height: 355,
properties: {
width: 600,
stepName: t('views.workflow.nodes.searchDocumentNode.label'),
stepName: t('workflow.nodes.searchDocumentNode.label'),
config: {
fields: [
{
label: t('views.workflow.nodes.searchDocumentNode.knowledgeList'),
label: t('workflow.nodes.searchDocumentNode.knowledgeList'),
value: 'knowledge_list',
},
{
label: t('views.workflow.nodes.searchDocumentNode.documentList'),
label: t('workflow.nodes.searchDocumentNode.documentList'),
value: 'document_list',
},
],
@ -232,15 +232,15 @@ export const searchDocumentNode = {
export const questionNode = {
type: WorkflowType.Question,
text: t('views.workflow.nodes.questionNode.text'),
label: t('views.workflow.nodes.questionNode.label'),
text: t('workflow.nodes.questionNode.text'),
label: t('workflow.nodes.questionNode.label'),
height: 345,
properties: {
stepName: t('views.workflow.nodes.questionNode.label'),
stepName: t('workflow.nodes.questionNode.label'),
config: {
fields: [
{
label: t('views.workflow.nodes.questionNode.result'),
label: t('workflow.nodes.questionNode.result'),
value: 'answer',
},
],
@ -249,11 +249,11 @@ export const questionNode = {
}
export const variableSplittingNode = {
type: WorkflowType.VariableSplittingNode,
text: t('views.workflow.nodes.variableSplittingNode.text'),
label: t('views.workflow.nodes.variableSplittingNode.label'),
text: t('workflow.nodes.variableSplittingNode.text'),
label: t('workflow.nodes.variableSplittingNode.label'),
height: 345,
properties: {
stepName: t('views.workflow.nodes.variableSplittingNode.label'),
stepName: t('workflow.nodes.variableSplittingNode.label'),
config: {
fields: [
{
@ -267,12 +267,12 @@ export const variableSplittingNode = {
export const parameterExtractionNode = {
type: WorkflowType.ParameterExtractionNode,
text: t('views.workflow.nodes.parameterExtractionNode.text'),
label: t('views.workflow.nodes.parameterExtractionNode.label'),
text: t('workflow.nodes.parameterExtractionNode.text'),
label: t('workflow.nodes.parameterExtractionNode.label'),
height: 345,
properties: {
width: 430,
stepName: t('views.workflow.nodes.parameterExtractionNode.label'),
stepName: t('workflow.nodes.parameterExtractionNode.label'),
config: {
fields: [
{
@ -286,16 +286,16 @@ export const parameterExtractionNode = {
export const conditionNode = {
type: WorkflowType.Condition,
text: t('views.workflow.nodes.conditionNode.text'),
label: t('views.workflow.nodes.conditionNode.label'),
text: t('workflow.nodes.conditionNode.text'),
label: t('workflow.nodes.conditionNode.label'),
height: 175,
properties: {
width: 600,
stepName: t('views.workflow.nodes.conditionNode.label'),
stepName: t('workflow.nodes.conditionNode.label'),
config: {
fields: [
{
label: t('views.workflow.nodes.conditionNode.branch_name'),
label: t('workflow.nodes.conditionNode.branch_name'),
value: 'branch_name',
},
],
@ -304,11 +304,11 @@ export const conditionNode = {
}
export const replyNode = {
type: WorkflowType.Reply,
text: t('views.workflow.nodes.replyNode.text'),
label: t('views.workflow.nodes.replyNode.label'),
text: t('workflow.nodes.replyNode.text'),
label: t('workflow.nodes.replyNode.label'),
height: 210,
properties: {
stepName: t('views.workflow.nodes.replyNode.label'),
stepName: t('workflow.nodes.replyNode.label'),
config: {
fields: [
{
@ -321,19 +321,19 @@ export const replyNode = {
}
export const rerankerNode = {
type: WorkflowType.RerankerNode,
text: t('views.workflow.nodes.rerankerNode.text'),
label: t('views.workflow.nodes.rerankerNode.label'),
text: t('workflow.nodes.rerankerNode.text'),
label: t('workflow.nodes.rerankerNode.label'),
height: 252,
properties: {
stepName: t('views.workflow.nodes.rerankerNode.label'),
stepName: t('workflow.nodes.rerankerNode.label'),
config: {
fields: [
{
label: t('views.workflow.nodes.rerankerNode.result_list'),
label: t('workflow.nodes.rerankerNode.result_list'),
value: 'result_list',
},
{
label: t('views.workflow.nodes.rerankerNode.result'),
label: t('workflow.nodes.rerankerNode.result'),
value: 'result',
},
],
@ -342,23 +342,23 @@ export const rerankerNode = {
}
export const formNode = {
type: WorkflowType.FormNode,
text: t('views.workflow.nodes.formNode.text'),
label: t('views.workflow.nodes.formNode.label'),
text: t('workflow.nodes.formNode.text'),
label: t('workflow.nodes.formNode.label'),
height: 252,
properties: {
width: 600,
stepName: t('views.workflow.nodes.formNode.label'),
stepName: t('workflow.nodes.formNode.label'),
node_data: {
is_result: true,
form_field_list: [],
form_content_format: `${t('views.workflow.nodes.formNode.form_content_format1')}
form_content_format: `${t('workflow.nodes.formNode.form_content_format1')}
{{form}}
${t('views.workflow.nodes.formNode.form_content_format2')}`,
${t('workflow.nodes.formNode.form_content_format2')}`,
},
config: {
fields: [
{
label: t('views.workflow.nodes.formNode.form_data'),
label: t('workflow.nodes.formNode.form_data'),
value: 'form_data',
},
],
@ -367,19 +367,19 @@ ${t('views.workflow.nodes.formNode.form_content_format2')}`,
}
export const documentExtractNode = {
type: WorkflowType.DocumentExtractNode,
text: t('views.workflow.nodes.documentExtractNode.text'),
label: t('views.workflow.nodes.documentExtractNode.label'),
text: t('workflow.nodes.documentExtractNode.text'),
label: t('workflow.nodes.documentExtractNode.label'),
height: 252,
properties: {
stepName: t('views.workflow.nodes.documentExtractNode.label'),
stepName: t('workflow.nodes.documentExtractNode.label'),
config: {
fields: [
{
label: t('views.workflow.nodes.documentExtractNode.content'),
label: t('workflow.nodes.documentExtractNode.content'),
value: 'content',
},
{
label: t('views.workflow.nodes.dataSourceWebNode.field_label'),
label: t('workflow.nodes.dataSourceWebNode.field_label'),
value: 'document_list',
},
],
@ -388,16 +388,16 @@ export const documentExtractNode = {
}
export const documentSplitNode = {
type: WorkflowType.DocumentSplitNode,
text: t('views.workflow.nodes.documentSplitNode.text'),
label: t('views.workflow.nodes.documentSplitNode.label'),
text: t('workflow.nodes.documentSplitNode.text'),
label: t('workflow.nodes.documentSplitNode.label'),
height: 252,
properties: {
width: 500,
stepName: t('views.workflow.nodes.documentSplitNode.label'),
stepName: t('workflow.nodes.documentSplitNode.label'),
config: {
fields: [
{
label: t('views.workflow.nodes.documentSplitNode.paragraphList'),
label: t('workflow.nodes.documentSplitNode.paragraphList'),
value: 'paragraph_list',
},
],
@ -406,15 +406,15 @@ export const documentSplitNode = {
}
export const imageUnderstandNode = {
type: WorkflowType.ImageUnderstandNode,
text: t('views.workflow.nodes.imageUnderstandNode.text'),
label: t('views.workflow.nodes.imageUnderstandNode.label'),
text: t('workflow.nodes.imageUnderstandNode.text'),
label: t('workflow.nodes.imageUnderstandNode.label'),
height: 252,
properties: {
stepName: t('views.workflow.nodes.imageUnderstandNode.label'),
stepName: t('workflow.nodes.imageUnderstandNode.label'),
config: {
fields: [
{
label: t('views.workflow.nodes.imageUnderstandNode.answer'),
label: t('workflow.nodes.imageUnderstandNode.answer'),
value: 'answer',
},
],
@ -424,15 +424,15 @@ export const imageUnderstandNode = {
export const videoUnderstandNode = {
type: WorkflowType.VideoUnderstandNode,
text: t('views.workflow.nodes.videoUnderstandNode.text'),
label: t('views.workflow.nodes.videoUnderstandNode.label'),
text: t('workflow.nodes.videoUnderstandNode.text'),
label: t('workflow.nodes.videoUnderstandNode.label'),
height: 252,
properties: {
stepName: t('views.workflow.nodes.videoUnderstandNode.label'),
stepName: t('workflow.nodes.videoUnderstandNode.label'),
config: {
fields: [
{
label: t('views.workflow.nodes.videoUnderstandNode.answer'),
label: t('workflow.nodes.videoUnderstandNode.answer'),
value: 'answer',
},
],
@ -441,11 +441,11 @@ export const videoUnderstandNode = {
}
export const variableAggregationNode = {
type: WorkflowType.VariableAggregationNode,
text: t('views.workflow.nodes.variableAggregationNode.text'),
label: t('views.workflow.nodes.variableAggregationNode.label'),
text: t('workflow.nodes.variableAggregationNode.text'),
label: t('workflow.nodes.variableAggregationNode.label'),
height: 252,
properties: {
stepName: t('views.workflow.nodes.variableAggregationNode.label'),
stepName: t('workflow.nodes.variableAggregationNode.label'),
config: {
fields: [],
},
@ -454,22 +454,22 @@ export const variableAggregationNode = {
export const variableAssignNode = {
type: WorkflowType.VariableAssignNode,
text: t('views.workflow.nodes.variableAssignNode.text'),
label: t('views.workflow.nodes.variableAssignNode.label'),
text: t('workflow.nodes.variableAssignNode.text'),
label: t('workflow.nodes.variableAssignNode.label'),
height: 252,
properties: {
stepName: t('views.workflow.nodes.variableAssignNode.label'),
stepName: t('workflow.nodes.variableAssignNode.label'),
config: {},
},
}
export const mcpNode = {
type: WorkflowType.McpNode,
text: t('views.workflow.nodes.mcpNode.text'),
label: t('views.workflow.nodes.mcpNode.label'),
text: t('workflow.nodes.mcpNode.text'),
label: t('workflow.nodes.mcpNode.label'),
height: 252,
properties: {
stepName: t('views.workflow.nodes.mcpNode.label'),
stepName: t('workflow.nodes.mcpNode.label'),
config: {
fields: [
{
@ -483,15 +483,15 @@ export const mcpNode = {
export const imageGenerateNode = {
type: WorkflowType.ImageGenerateNode,
text: t('views.workflow.nodes.imageGenerateNode.text'),
label: t('views.workflow.nodes.imageGenerateNode.label'),
text: t('workflow.nodes.imageGenerateNode.text'),
label: t('workflow.nodes.imageGenerateNode.label'),
height: 252,
properties: {
stepName: t('views.workflow.nodes.imageGenerateNode.label'),
stepName: t('workflow.nodes.imageGenerateNode.label'),
config: {
fields: [
{
label: t('views.workflow.nodes.imageGenerateNode.answer'),
label: t('workflow.nodes.imageGenerateNode.answer'),
value: 'answer',
},
{
@ -505,11 +505,11 @@ export const imageGenerateNode = {
export const speechToTextNode = {
type: WorkflowType.SpeechToTextNode,
text: t('views.workflow.nodes.speechToTextNode.text'),
label: t('views.workflow.nodes.speechToTextNode.label'),
text: t('workflow.nodes.speechToTextNode.text'),
label: t('workflow.nodes.speechToTextNode.label'),
height: 252,
properties: {
stepName: t('views.workflow.nodes.speechToTextNode.label'),
stepName: t('workflow.nodes.speechToTextNode.label'),
config: {
fields: [
{
@ -522,11 +522,11 @@ export const speechToTextNode = {
}
export const textToSpeechNode = {
type: WorkflowType.TextToSpeechNode,
text: t('views.workflow.nodes.textToSpeechNode.text'),
label: t('views.workflow.nodes.textToSpeechNode.label'),
text: t('workflow.nodes.textToSpeechNode.text'),
label: t('workflow.nodes.textToSpeechNode.label'),
height: 252,
properties: {
stepName: t('views.workflow.nodes.textToSpeechNode.label'),
stepName: t('workflow.nodes.textToSpeechNode.label'),
config: {
fields: [
{
@ -543,11 +543,11 @@ export const textToSpeechNode = {
*/
export const toolNode = {
type: WorkflowType.ToolLibCustom,
text: t('views.workflow.nodes.toolNode.text'),
label: t('views.workflow.nodes.toolNode.label'),
text: t('workflow.nodes.toolNode.text'),
label: t('workflow.nodes.toolNode.label'),
height: 260,
properties: {
stepName: t('views.workflow.nodes.toolNode.label'),
stepName: t('workflow.nodes.toolNode.label'),
config: {
fields: [
{
@ -561,11 +561,11 @@ export const toolNode = {
export const intentNode = {
type: WorkflowType.IntentNode,
text: t('views.workflow.nodes.intentNode.text'),
label: t('views.workflow.nodes.intentNode.label'),
text: t('workflow.nodes.intentNode.text'),
label: t('workflow.nodes.intentNode.label'),
height: 260,
properties: {
stepName: t('views.workflow.nodes.intentNode.label'),
stepName: t('workflow.nodes.intentNode.label'),
config: {
fields: [
{
@ -588,15 +588,15 @@ export const loopStartNode = {
y: 3340,
properties: {
height: 364,
stepName: t('views.workflow.nodes.loopStartNode.label'),
stepName: t('workflow.nodes.loopStartNode.label'),
config: {
fields: [
{
label: t('views.workflow.nodes.loopStartNode.loopIndex'),
label: t('workflow.nodes.loopStartNode.loopIndex'),
value: 'index',
},
{
label: t('views.workflow.nodes.loopStartNode.loopItem'),
label: t('workflow.nodes.loopStartNode.loopItem'),
value: 'item',
},
],
@ -609,11 +609,11 @@ export const loopStartNode = {
export const loopNode = {
type: WorkflowType.LoopNode,
visible: false,
text: t('views.workflow.nodes.loopNode.text'),
label: t('views.workflow.nodes.loopNode.label'),
text: t('workflow.nodes.loopNode.text'),
label: t('workflow.nodes.loopNode.label'),
height: 252,
properties: {
stepName: t('views.workflow.nodes.loopNode.label'),
stepName: t('workflow.nodes.loopNode.label'),
workflow: {
edges: [],
nodes: [
@ -644,11 +644,11 @@ export const loopNode = {
export const imageToVideoNode = {
type: WorkflowType.ImageToVideoGenerateNode,
text: t('views.workflow.nodes.imageToVideoGenerate.text'),
label: t('views.workflow.nodes.imageToVideoGenerate.label'),
text: t('workflow.nodes.imageToVideoGenerate.text'),
label: t('workflow.nodes.imageToVideoGenerate.label'),
height: 252,
properties: {
stepName: t('views.workflow.nodes.imageToVideoGenerate.label'),
stepName: t('workflow.nodes.imageToVideoGenerate.label'),
config: {
fields: [
{
@ -662,12 +662,12 @@ export const imageToVideoNode = {
export const loopBodyNode = {
type: WorkflowType.LoopBodyNode,
text: t('views.workflow.nodes.loopBodyNode.text'),
label: t('views.workflow.nodes.loopBodyNode.label'),
text: t('workflow.nodes.loopBodyNode.text'),
label: t('workflow.nodes.loopBodyNode.label'),
height: 1080,
properties: {
width: 1920,
stepName: t('views.workflow.nodes.loopBodyNode.label'),
stepName: t('workflow.nodes.loopBodyNode.label'),
config: {
fields: [],
},
@ -675,12 +675,12 @@ export const loopBodyNode = {
}
export const loopContinueNode = {
type: WorkflowType.LoopContinueNode,
text: t('views.workflow.nodes.loopContinueNode.text'),
label: t('views.workflow.nodes.loopContinueNode.label'),
text: t('workflow.nodes.loopContinueNode.text'),
label: t('workflow.nodes.loopContinueNode.label'),
height: 100,
properties: {
width: 600,
stepName: t('views.workflow.nodes.loopContinueNode.label'),
stepName: t('workflow.nodes.loopContinueNode.label'),
config: {
fields: [],
},
@ -689,11 +689,11 @@ export const loopContinueNode = {
export const textToVideoNode = {
type: WorkflowType.TextToVideoGenerateNode,
text: t('views.workflow.nodes.textToVideoGenerate.text'),
label: t('views.workflow.nodes.textToVideoGenerate.label'),
text: t('workflow.nodes.textToVideoGenerate.text'),
label: t('workflow.nodes.textToVideoGenerate.label'),
height: 252,
properties: {
stepName: t('views.workflow.nodes.textToVideoGenerate.label'),
stepName: t('workflow.nodes.textToVideoGenerate.label'),
config: {
fields: [
{
@ -707,12 +707,12 @@ export const textToVideoNode = {
export const loopBreakNode = {
type: WorkflowType.LoopBreakNode,
text: t('views.workflow.nodes.loopBreakNode.text'),
label: t('views.workflow.nodes.loopBreakNode.label'),
text: t('workflow.nodes.loopBreakNode.text'),
label: t('workflow.nodes.loopBreakNode.label'),
height: 100,
properties: {
width: 600,
stepName: t('views.workflow.nodes.loopBreakNode.label'),
stepName: t('workflow.nodes.loopBreakNode.label'),
config: {
fields: [],
},
@ -729,7 +729,7 @@ export const knowledgeMenuNodes = [
list: [documentSplitNode, knowledgeWriteNode, documentExtractNode],
},
{
label: t('views.workflow.nodes.classify.aiCapability'),
label: t('workflow.nodes.classify.aiCapability'),
list: [
aiChatNode,
intentNode,
@ -745,11 +745,11 @@ export const knowledgeMenuNodes = [
},
{
label: t('views.workflow.nodes.classify.businessLogic'),
label: t('workflow.nodes.classify.businessLogic'),
list: [conditionNode, replyNode, loopNode],
},
{
label: t('views.workflow.nodes.classify.dataProcessing'),
label: t('workflow.nodes.classify.dataProcessing'),
list: [
variableAssignNode,
variableAggregationNode,
@ -758,14 +758,14 @@ export const knowledgeMenuNodes = [
],
},
{
label: t('views.workflow.nodes.classify.other'),
label: t('workflow.nodes.classify.other'),
list: [mcpNode, toolNode],
},
]
export const menuNodes = [
{
label: t('views.workflow.nodes.classify.aiCapability'),
label: t('workflow.nodes.classify.aiCapability'),
list: [
aiChatNode,
intentNode,
@ -791,11 +791,11 @@ export const menuNodes = [
],
},
{
label: t('views.workflow.nodes.classify.businessLogic'),
label: t('workflow.nodes.classify.businessLogic'),
list: [conditionNode, formNode, replyNode, loopNode],
},
{
label: t('views.workflow.nodes.classify.dataProcessing'),
label: t('workflow.nodes.classify.dataProcessing'),
list: [
variableAssignNode,
variableAggregationNode,
@ -804,13 +804,13 @@ export const menuNodes = [
],
},
{
label: t('views.workflow.nodes.classify.other'),
label: t('workflow.nodes.classify.other'),
list: [mcpNode, toolNode],
},
]
export const applicationLoopMenuNodes = [
{
label: t('views.workflow.nodes.classify.aiCapability'),
label: t('workflow.nodes.classify.aiCapability'),
list: [
aiChatNode,
intentNode,
@ -829,11 +829,11 @@ export const applicationLoopMenuNodes = [
list: [searchKnowledgeNode, searchDocumentNode, rerankerNode, documentExtractNode],
},
{
label: t('views.workflow.nodes.classify.businessLogic'),
label: t('workflow.nodes.classify.businessLogic'),
list: [conditionNode, formNode, replyNode, loopContinueNode, loopBreakNode],
},
{
label: t('views.workflow.nodes.classify.dataProcessing'),
label: t('workflow.nodes.classify.dataProcessing'),
list: [
variableAssignNode,
variableSplittingNode,
@ -842,13 +842,13 @@ export const applicationLoopMenuNodes = [
],
},
{
label: t('views.workflow.nodes.classify.other'),
label: t('workflow.nodes.classify.other'),
list: [mcpNode, toolNode],
},
]
export const knowledgeLoopMenuNodes = [
{
label: t('views.workflow.nodes.classify.aiCapability'),
label: t('workflow.nodes.classify.aiCapability'),
list: [
aiChatNode,
intentNode,
@ -867,11 +867,11 @@ export const knowledgeLoopMenuNodes = [
list: [rerankerNode, documentExtractNode],
},
{
label: t('views.workflow.nodes.classify.businessLogic'),
label: t('workflow.nodes.classify.businessLogic'),
list: [conditionNode, replyNode, loopContinueNode, loopBreakNode],
},
{
label: t('views.workflow.nodes.classify.dataProcessing'),
label: t('workflow.nodes.classify.dataProcessing'),
list: [
variableAssignNode,
variableSplittingNode,
@ -880,7 +880,7 @@ export const knowledgeLoopMenuNodes = [
],
},
{
label: t('views.workflow.nodes.classify.other'),
label: t('workflow.nodes.classify.other'),
list: [mcpNode, toolNode],
},
]
@ -905,11 +905,11 @@ export const getMenuNodes = (workflowMode: WorkflowMode) => {
*/
export const toolLibNode = {
type: WorkflowType.ToolLib,
text: t('views.workflow.nodes.toolNode.text'),
label: t('views.workflow.nodes.toolNode.label'),
text: t('workflow.nodes.toolNode.text'),
label: t('workflow.nodes.toolNode.label'),
height: 170,
properties: {
stepName: t('views.workflow.nodes.toolNode.label'),
stepName: t('workflow.nodes.toolNode.label'),
config: {
fields: [
{
@ -923,11 +923,11 @@ export const toolLibNode = {
export const applicationNode = {
type: WorkflowType.Application,
text: t('views.workflow.nodes.applicationNode.label'),
label: t('views.workflow.nodes.applicationNode.label'),
text: t('workflow.nodes.applicationNode.label'),
label: t('workflow.nodes.applicationNode.label'),
height: 260,
properties: {
stepName: t('views.workflow.nodes.applicationNode.label'),
stepName: t('workflow.nodes.applicationNode.label'),
config: {
fields: [
{
@ -940,22 +940,22 @@ export const applicationNode = {
}
export const compareList = [
{ value: 'is_null', label: t('views.workflow.compare.is_null') },
{ value: 'is_not_null', label: t('views.workflow.compare.is_not_null') },
{ value: 'contain', label: t('views.workflow.compare.contain') },
{ value: 'not_contain', label: t('views.workflow.compare.not_contain') },
{ value: 'eq', label: t('views.workflow.compare.eq') },
{ value: 'ge', label: t('views.workflow.compare.ge') },
{ value: 'gt', label: t('views.workflow.compare.gt') },
{ value: 'le', label: t('views.workflow.compare.le') },
{ value: 'lt', label: t('views.workflow.compare.lt') },
{ value: 'len_eq', label: t('views.workflow.compare.len_eq') },
{ value: 'len_ge', label: t('views.workflow.compare.len_ge') },
{ value: 'len_gt', label: t('views.workflow.compare.len_gt') },
{ value: 'len_le', label: t('views.workflow.compare.len_le') },
{ value: 'len_lt', label: t('views.workflow.compare.len_lt') },
{ value: 'is_true', label: t('views.workflow.compare.is_true') },
{ value: 'is_not_true', label: t('views.workflow.compare.is_not_true') },
{ value: 'is_null', label: t('workflow.compare.is_null') },
{ value: 'is_not_null', label: t('workflow.compare.is_not_null') },
{ value: 'contain', label: t('workflow.compare.contain') },
{ value: 'not_contain', label: t('workflow.compare.not_contain') },
{ value: 'eq', label: t('workflow.compare.eq') },
{ value: 'ge', label: t('workflow.compare.ge') },
{ value: 'gt', label: t('workflow.compare.gt') },
{ value: 'le', label: t('workflow.compare.le') },
{ value: 'lt', label: t('workflow.compare.lt') },
{ value: 'len_eq', label: t('workflow.compare.len_eq') },
{ value: 'len_ge', label: t('workflow.compare.len_ge') },
{ value: 'len_gt', label: t('workflow.compare.len_gt') },
{ value: 'len_le', label: t('workflow.compare.len_le') },
{ value: 'len_lt', label: t('workflow.compare.len_lt') },
{ value: 'is_true', label: t('workflow.compare.is_true') },
{ value: 'is_not_true', label: t('workflow.compare.is_not_true') },
{ value: 'start_with', label: 'startWith' },
{ value: 'end_with', label: 'endWith' },
]

View File

@ -61,13 +61,13 @@ export function initDefaultShortcut(lf: LogicFlow, graph: GraphModel) {
(node: any) => node.type === WorkflowType.Start || node.type === WorkflowType.Base,
)
if (base_nodes.length > 0) {
MsgError(base_nodes[0]?.properties?.stepName + t('views.workflow.tip.cannotCopy'))
MsgError(base_nodes[0]?.properties?.stepName + t('workflow.tip.cannotCopy'))
return
}
selected = cloneDeep(elements)
selected.nodes.forEach((node: any) => translationNodeData(node, TRANSLATION_DISTANCE))
selected.edges.forEach((edge: any) => translationEdgeData(edge, TRANSLATION_DISTANCE))
MsgSuccess(t('views.workflow.tip.copyError'))
MsgSuccess(t('workflow.tip.copyError'))
return false
}
const paste_node = () => {
@ -102,11 +102,11 @@ export function initDefaultShortcut(lf: LogicFlow, graph: GraphModel) {
)
if (nodes.length > 0) {
MsgError(
`${nodes[0].properties?.stepName}${t('views.workflow.delete.deleteMessage')}`,
`${nodes[0].properties?.stepName}${t('workflow.delete.deleteMessage')}`,
)
return
}
MsgConfirm(t('common.tip'), t('views.workflow.delete.confirmTitle'), {
MsgConfirm(t('common.tip'), t('workflow.delete.confirmTitle'), {
confirmButtonText: t('common.confirm'),
confirmButtonClass: 'danger',
}).then(() => {

View File

@ -69,9 +69,9 @@ export class WorkFlowInstance {
[WorkflowType.Start, WorkflowType.LoopStartNode].includes(item.id),
)
if (start_node_list.length == 0) {
throw t('views.workflow.validate.startNodeRequired')
throw t('workflow.validate.startNodeRequired')
} else if (start_node_list.length > 1) {
throw t('views.workflow.validate.startNodeOnly')
throw t('workflow.validate.startNodeOnly')
}
}
@ -81,9 +81,9 @@ export class WorkFlowInstance {
is_valid_base_node() {
const start_node_list = this.nodes.filter((item) => item.id === WorkflowType.Base)
if (start_node_list.length == 0) {
throw t('views.workflow.validate.baseNodeRequired')
throw t('workflow.validate.baseNodeRequired')
} else if (start_node_list.length > 1) {
throw t('views.workflow.validate.baseNodeOnly')
throw t('workflow.validate.baseNodeOnly')
}
}
@ -150,7 +150,7 @@ export class WorkFlowInstance {
.filter((node: any) => node.id !== WorkflowType.Start && node.id !== WorkflowType.Base)
.filter((node) => !this.workFlowNodes.includes(node))
if (notInWorkFlowNodes.length > 0) {
throw `${t('views.workflow.validate.notInWorkFlowNode')}:${notInWorkFlowNodes.map((node) => node.properties.stepName).join('')}`
throw `${t('workflow.validate.notInWorkFlowNode')}:${notInWorkFlowNodes.map((node) => node.properties.stepName).join('')}`
}
this.workFlowNodes = []
}
@ -167,7 +167,7 @@ export class WorkFlowInstance {
.reduce((x, y) => [...x, ...y], [])
const end = end_nodes_dict[this.workflowModel]
if (node_list.length == 0 && !end.includes(node.type)) {
throw t('views.workflow.validate.noNextNode')
throw t('workflow.validate.noNextNode')
}
return node_list
}
@ -180,7 +180,7 @@ export class WorkFlowInstance {
node.type !== WorkflowType.LoopStartNode
) {
if (!this.edges.some((edge) => edge.targetNodeId === node.id)) {
throw `${t('views.workflow.validate.notInWorkFlowNode')}:${node.properties.stepName}`
throw `${t('workflow.validate.notInWorkFlowNode')}:${node.properties.stepName}`
}
}
}
@ -192,7 +192,7 @@ export class WorkFlowInstance {
*/
is_valid_node(node: any) {
if (node.properties.status && node.properties.status === 500) {
throw `${node.properties.stepName} ${t('views.workflow.validate.nodeUnavailable')}`
throw `${node.properties.stepName} ${t('workflow.validate.nodeUnavailable')}`
}
if (node.type === WorkflowType.Condition) {
const branch_list = node.properties.node_data.branch
@ -200,18 +200,18 @@ export class WorkFlowInstance {
const source_anchor_id = `${node.id}_${branch.id}_right`
const edge_list = this.edges.filter((edge) => edge.sourceAnchorId == source_anchor_id)
if (edge_list.length == 0) {
throw `${node.properties.stepName} ${t('views.workflow.validate.needConnect1')}${branch.type}${t('views.workflow.validate.needConnect2')}`
throw `${node.properties.stepName} ${t('workflow.validate.needConnect1')}${branch.type}${t('workflow.validate.needConnect2')}`
}
}
} else {
const edge_list = this.edges.filter((edge) => edge.sourceNodeId == node.id)
const end = end_nodes_dict[this.workflowModel]
if (edge_list.length == 0 && !end.includes(node.type)) {
throw `${node.properties.stepName} ${t('views.workflow.validate.cannotEndNode')}`
throw `${node.properties.stepName} ${t('workflow.validate.cannotEndNode')}`
}
}
if (node.properties.status && node.properties.status !== 200) {
throw `${node.properties.stepName} ${t('views.workflow.validate.nodeUnavailable')}`
throw `${node.properties.stepName} ${t('workflow.validate.nodeUnavailable')}`
}
}
}
@ -222,7 +222,7 @@ export class KnowledgeWorkFlowInstance extends WorkFlowInstance {
(item) => item.properties.kind === WorkflowKind.DataSource,
)
if (start_node_list.length == 0) {
throw t('views.workflow.validate.startNodeRequired')
throw t('workflow.validate.startNodeRequired')
}
}
/**
@ -231,9 +231,9 @@ export class KnowledgeWorkFlowInstance extends WorkFlowInstance {
is_valid_base_node() {
const base_node_list = this.nodes.filter((item) => item.id === WorkflowType.KnowledgeBase)
if (base_node_list.length == 0) {
throw t('views.workflow.validate.baseNodeRequired')
throw t('workflow.validate.baseNodeRequired')
} else if (base_node_list.length > 1) {
throw t('views.workflow.validate.baseNodeOnly')
throw t('workflow.validate.baseNodeOnly')
}
}
@ -254,7 +254,7 @@ export class KnowledgeWorkFlowInstance extends WorkFlowInstance {
)
.filter((node) => !this.workFlowNodes.includes(node))
if (notInWorkFlowNodes.length > 0) {
throw `${t('views.workflow.validate.notInWorkFlowNode')}:${notInWorkFlowNodes.map((node) => node.properties.stepName).join('')}`
throw `${t('workflow.validate.notInWorkFlowNode')}:${notInWorkFlowNodes.map((node) => node.properties.stepName).join('')}`
}
this.workFlowNodes = []
}
@ -266,7 +266,7 @@ export class KnowledgeWorkFlowInstance extends WorkFlowInstance {
node.properties.kind !== WorkflowKind.DataSource
) {
if (!this.edges.some((edge) => edge.targetNodeId === node.id)) {
throw `${t('views.workflow.validate.notInWorkFlowNode')}:${node.properties.stepName}`
throw `${t('workflow.validate.notInWorkFlowNode')}:${node.properties.stepName}`
}
}
}

View File

@ -1,6 +1,6 @@
<template>
<NodeContainer :nodeModel="nodeModel">
<h5 class="title-decoration-1 mb-8">{{ $t('views.workflow.nodeSetting') }}</h5>
<h5 class="title-decoration-1 mb-8">{{ $t('workflow.nodeSetting') }}</h5>
<el-card shadow="never" class="card-never" style="--el-card-padding: 12px">
<el-form
@submit.prevent
@ -82,7 +82,7 @@
v-model="chat_data.system"
style="height: 100px"
@submitDialog="submitSystemDialog"
:placeholder="`${t('views.workflow.SystemPromptPlaceholder')}{{${t('views.workflow.nodes.startNode.label')}.question}}`"
:placeholder="`${t('workflow.SystemPromptPlaceholder')}{{${t('workflow.nodes.startNode.label')}.question}}`"
/>
</el-form-item>
<el-form-item
@ -114,7 +114,7 @@
v-model="chat_data.prompt"
style="height: 150px"
@submitDialog="submitDialog"
:placeholder="`${t('views.workflow.UserPromptPlaceholder')}{{${t('views.workflow.nodes.startNode.label')}.question}}`"
:placeholder="`${t('workflow.UserPromptPlaceholder')}{{${t('workflow.nodes.startNode.label')}.question}}`"
/>
</el-form-item>
<el-form-item :label="$t('views.application.form.historyRecord.label')">
@ -122,8 +122,8 @@
<div class="flex-between">
<div>{{ $t('views.application.form.historyRecord.label') }}</div>
<el-select v-model="chat_data.dialogue_type" type="small" style="width: 100px">
<el-option :label="$t('views.workflow.node')" value="NODE" />
<el-option :label="$t('views.workflow.workflow')" value="WORKFLOW" />
<el-option :label="$t('workflow.node')" value="NODE" />
<el-option :label="$t('workflow.workflow')" value="WORKFLOW" />
</el-select>
</div>
</template>
@ -294,11 +294,11 @@
<template #label>
<div class="flex align-center">
<div class="mr-4">
<span>{{ $t('views.workflow.nodes.aiChatNode.returnContent.label') }}</span>
<span>{{ $t('workflow.nodes.aiChatNode.returnContent.label') }}</span>
</div>
<el-tooltip effect="dark" placement="right" popper-class="max-w-200">
<template #content>
{{ $t('views.workflow.nodes.aiChatNode.returnContent.tooltip') }}
{{ $t('workflow.nodes.aiChatNode.returnContent.tooltip') }}
</template>
<AppIcon iconName="app-warning" class="app-warning-icon"></AppIcon>
</el-tooltip>
@ -379,10 +379,10 @@ const model_change = (model_id?: string) => {
}
}
const defaultPrompt = `${t('views.workflow.nodes.aiChatNode.defaultPrompt')}
{{${t('views.workflow.nodes.searchKnowledgeNode.label')}.data}}
const defaultPrompt = `${t('workflow.nodes.aiChatNode.defaultPrompt')}
{{${t('workflow.nodes.searchKnowledgeNode.label')}.data}}
${t('views.problem.title')}
{{${t('views.workflow.nodes.startNode.label')}.question}}`
{{${t('workflow.nodes.startNode.label')}.question}}`
const form = {
model_id: '',

View File

@ -1,6 +1,6 @@
<template>
<NodeContainer :nodeModel="nodeModel">
<h5 class="title-decoration-1 mb-8">{{ $t('views.workflow.nodeSetting') }}</h5>
<h5 class="title-decoration-1 mb-8">{{ $t('workflow.nodeSetting') }}</h5>
<el-card shadow="never" class="card-never">
<el-form
@submit.prevent
@ -11,11 +11,11 @@
ref="applicationNodeFormRef"
>
<el-form-item
:label="$t('views.workflow.nodes.startNode.question')"
:label="$t('workflow.nodes.startNode.question')"
prop="question_reference_address"
:rules="{
message: $t(
'views.workflow.nodes.searchKnowledgeNode.searchQuestion.requiredMessage',
'workflow.nodes.searchKnowledgeNode.searchQuestion.requiredMessage',
),
trigger: 'blur',
required: true,
@ -26,7 +26,7 @@
:nodeModel="nodeModel"
class="w-full"
:placeholder="
$t('views.workflow.nodes.searchKnowledgeNode.searchQuestion.placeholder')
$t('workflow.nodes.searchKnowledgeNode.searchQuestion.placeholder')
"
v-model="form_data.question_reference_address"
/>
@ -53,11 +53,11 @@
<el-form-item
v-if="form_data.hasOwnProperty('image_list') || 'image_list' in form_data"
:label="$t('views.workflow.nodes.imageUnderstandNode.image.label')"
:label="$t('workflow.nodes.imageUnderstandNode.image.label')"
prop="image_list"
:rules="{
message: $t(
'views.workflow.nodes.imageUnderstandNode.image.requiredMessage',
'workflow.nodes.imageUnderstandNode.image.requiredMessage',
),
trigger: 'blur',
required: false,
@ -68,7 +68,7 @@
:nodeModel="nodeModel"
class="w-full"
:placeholder="
$t('views.workflow.nodes.imageUnderstandNode.image.requiredMessage')
$t('workflow.nodes.imageUnderstandNode.image.requiredMessage')
"
v-model="form_data.image_list"
/>
@ -76,10 +76,10 @@
<el-form-item
v-if="form_data.hasOwnProperty('audio_list') || 'audio_list' in form_data"
:label="$t('views.workflow.nodes.speechToTextNode.audio.label')"
:label="$t('workflow.nodes.speechToTextNode.audio.label')"
prop="audio_list"
:rules="{
message: $t('views.workflow.nodes.speechToTextNode.audio.placeholder'),
message: $t('workflow.nodes.speechToTextNode.audio.placeholder'),
trigger: 'blur',
required: false,
}"
@ -88,17 +88,17 @@
ref="nodeCascaderRef"
:nodeModel="nodeModel"
class="w-full"
:placeholder="$t('views.workflow.nodes.speechToTextNode.audio.placeholder')"
:placeholder="$t('workflow.nodes.speechToTextNode.audio.placeholder')"
v-model="form_data.audio_list"
/>
</el-form-item>
<el-form-item
v-if="form_data.hasOwnProperty('video_list') || 'video_list' in form_data"
:label="$t('views.workflow.nodes.videoUnderstandNode.video.label')"
:label="$t('workflow.nodes.videoUnderstandNode.video.label')"
prop="video_list"
:rules="{
message: $t(
'views.workflow.nodes.videoUnderstandNode.video.requiredMessage',
'workflow.nodes.videoUnderstandNode.video.requiredMessage',
),
trigger: 'blur',
required: false,
@ -109,7 +109,7 @@
:nodeModel="nodeModel"
class="w-full"
:placeholder="
$t('views.workflow.nodes.videoUnderstandNode.video.requiredMessage')
$t('workflow.nodes.videoUnderstandNode.video.requiredMessage')
"
v-model="form_data.video_list"
/>
@ -131,7 +131,7 @@
:nodeModel="nodeModel"
class="w-full"
:placeholder="
$t('views.workflow.nodes.searchKnowledgeNode.searchQuestion.placeholder')
$t('workflow.nodes.searchKnowledgeNode.searchQuestion.placeholder')
"
v-model="form_data.api_input_field_list[index].value"
/>
@ -155,26 +155,26 @@
:nodeModel="nodeModel"
class="w-full"
:placeholder="
$t('views.workflow.nodes.searchKnowledgeNode.searchQuestion.placeholder')
$t('workflow.nodes.searchKnowledgeNode.searchQuestion.placeholder')
"
v-model="form_data.user_input_field_list[index].value"
/>
</el-form-item>
</div>
<el-form-item
:label="$t('views.workflow.nodes.aiChatNode.returnContent.label')"
:label="$t('workflow.nodes.aiChatNode.returnContent.label')"
@click.prevent
>
<template #label>
<div class="flex align-center">
<div class="mr-4">
<span>{{
$t('views.workflow.nodes.aiChatNode.returnContent.label')
$t('workflow.nodes.aiChatNode.returnContent.label')
}}</span>
</div>
<el-tooltip effect="dark" placement="right" popper-class="max-w-200">
<template #content>
{{ $t('views.workflow.nodes.aiChatNode.returnContent.tooltip') }}
{{ $t('workflow.nodes.aiChatNode.returnContent.tooltip') }}
</template>
<AppIcon iconName="app-warning" class="app-warning-icon"></AppIcon>
</el-tooltip>

View File

@ -92,7 +92,7 @@ function deleteField(index: any) {
function refreshFieldList(data: any) {
for (let i = 0; i < inputFieldList.value.length; i++) {
if (inputFieldList.value[i].variable === data.variable && currentIndex.value !== i) {
MsgError(t('views.workflow.tip.paramErrorMessage') + data.variable)
MsgError(t('workflow.tip.paramErrorMessage') + data.variable)
return
}
}
@ -100,7 +100,7 @@ function refreshFieldList(data: any) {
const arr = props.nodeModel.properties.user_input_field_list
for (let i = 0; i < arr.length; i++) {
if (arr[i].field === data.variable) {
MsgError(t('views.workflow.tip.paramErrorMessage') + data.variable)
MsgError(t('workflow.tip.paramErrorMessage') + data.variable)
return
}
}

View File

@ -1,7 +1,7 @@
<template>
<div class="flex-between mb-16">
<h5 class="break-all ellipsis lighter" style="max-width: 80%">
{{ $t('views.workflow.variable.chat') }}
{{ $t('workflow.variable.chat') }}
</h5>
<div>
<span class="ml-4">
@ -80,7 +80,7 @@ function deleteField(index: any) {
function refreshFieldList(data: any, index: any) {
for (let i = 0; i < inputFieldList.value.length; i++) {
if (inputFieldList.value[i].field === data.field && index !== i) {
MsgError(t('views.workflow.tip.paramErrorMessage') + data.field)
MsgError(t('workflow.tip.paramErrorMessage') + data.field)
return
}
}

View File

@ -1,6 +1,6 @@
<template>
<el-dialog
:title="$t('views.workflow.nodes.baseNode.FileUploadSetting.title')"
:title="$t('workflow.nodes.baseNode.FileUploadSetting.title')"
v-model="dialogVisible"
:close-on-click-modal="false"
:close-on-press-escape="false"
@ -20,7 +20,7 @@
require-asterisk-position="right"
>
<el-form-item
:label="$t('views.workflow.nodes.baseNode.FileUploadSetting.maxFiles')"
:label="$t('workflow.nodes.baseNode.FileUploadSetting.maxFiles')"
>
<el-slider
v-model="form_data.maxFiles"
@ -31,7 +31,7 @@
/>
</el-form-item>
<el-form-item
:label="$t('views.workflow.nodes.baseNode.FileUploadSetting.fileLimit')"
:label="$t('workflow.nodes.baseNode.FileUploadSetting.fileLimit')"
>
<el-slider
v-model="form_data.fileLimit"
@ -43,7 +43,7 @@
</el-form-item>
<el-form-item
:label="
$t('views.workflow.nodes.baseNode.FileUploadSetting.fileUploadType.label')
$t('workflow.nodes.baseNode.FileUploadSetting.fileUploadType.label')
"
>
<el-card
@ -62,7 +62,7 @@
<el-text class="color-secondary"
>{{
$t(
'views.workflow.nodes.baseNode.FileUploadSetting.fileUploadType.documentText',
'workflow.nodes.baseNode.FileUploadSetting.fileUploadType.documentText',
)
}}
</el-text>
@ -92,7 +92,7 @@
<el-text class="color-secondary"
>{{
$t(
'views.workflow.nodes.baseNode.FileUploadSetting.fileUploadType.imageText',
'workflow.nodes.baseNode.FileUploadSetting.fileUploadType.imageText',
)
}}
</el-text>
@ -123,7 +123,7 @@
<el-text class="color-secondary"
>{{
$t(
'views.workflow.nodes.baseNode.FileUploadSetting.fileUploadType.audioText',
'workflow.nodes.baseNode.FileUploadSetting.fileUploadType.audioText',
)
}}
</el-text>
@ -158,7 +158,7 @@
<el-text class="color-secondary"
>{{
$t(
'views.workflow.nodes.baseNode.FileUploadSetting.fileUploadType.videoText',
'workflow.nodes.baseNode.FileUploadSetting.fileUploadType.videoText',
)
}}
</el-text>
@ -188,7 +188,7 @@
<el-text class="color-secondary"
>{{
$t(
'views.workflow.nodes.baseNode.FileUploadSetting.fileUploadType.otherText',
'workflow.nodes.baseNode.FileUploadSetting.fileUploadType.otherText',
)
}}
</el-text>
@ -232,7 +232,7 @@
</el-card>
<el-form-item
:label="
$t('views.workflow.nodes.baseNode.FileUploadSetting.fileUploadType.uploadMethod')
$t('workflow.nodes.baseNode.FileUploadSetting.fileUploadType.uploadMethod')
">
<div class="flex align-center">
<el-checkbox

View File

@ -138,7 +138,7 @@ function deleteField(index: any) {
function refreshFieldList(data: any, index: any) {
for (let i = 0; i < inputFieldList.value.length; i++) {
if (inputFieldList.value[i].field === data.field && index !== i) {
MsgError(t('views.workflow.tip.paramErrorMessage') + data.field)
MsgError(t('workflow.tip.paramErrorMessage') + data.field)
return
}
}
@ -146,7 +146,7 @@ function refreshFieldList(data: any, index: any) {
const arr = props.nodeModel.properties.api_input_field_list
for (let i = 0; i < arr.length; i++) {
if (arr[i].variable === data.field) {
MsgError(t('views.workflow.tip.paramErrorMessage') + data.field)
MsgError(t('workflow.tip.paramErrorMessage') + data.field)
return
}
}

View File

@ -10,7 +10,7 @@
ref="baseNodeFormRef"
>
<el-form-item
:label="$t('views.workflow.nodes.baseNode.appName.label')"
:label="$t('workflow.nodes.baseNode.appName.label')"
prop="name"
:rules="{
message: t('views.application.form.appName.requiredMessage'),
@ -26,7 +26,7 @@
@blur="form_data.name = form_data.name?.trim()"
/>
</el-form-item>
<el-form-item :label="$t('views.workflow.nodes.baseNode.appDescription.label')">
<el-form-item :label="$t('workflow.nodes.baseNode.appDescription.label')">
<el-input
v-model="form_data.desc"
:placeholder="$t('views.application.form.appDescription.placeholder')"
@ -50,11 +50,11 @@
<div class="flex-between">
<div class="flex align-center">
<span class="mr-4">{{
$t('views.workflow.nodes.baseNode.fileUpload.label')
$t('workflow.nodes.baseNode.fileUpload.label')
}}</span>
<el-tooltip
effect="dark"
:content="$t('views.workflow.nodes.baseNode.fileUpload.tooltip')"
:content="$t('workflow.nodes.baseNode.fileUpload.tooltip')"
placement="right"
>
<AppIcon iconName="app-warning" class="app-warning-icon"></AppIcon>

View File

@ -34,7 +34,7 @@
</span>
<div class="info" v-if="item.conditions.length > 1">
<span>{{
$t('views.workflow.nodes.conditionNode.conditions.info')
$t('workflow.nodes.conditionNode.conditions.info')
}}</span>
<el-select
:teleported="false"
@ -42,11 +42,11 @@
size="small"
style="width: 60px; margin: 0 8px"
>
<el-option :label="$t('views.workflow.condition.AND')" value="and" />
<el-option :label="$t('views.workflow.condition.OR')" value="or" />
<el-option :label="$t('workflow.condition.AND')" value="and" />
<el-option :label="$t('workflow.condition.OR')" value="or" />
</el-select>
<span>{{
$t('views.workflow.nodes.conditionNode.conditions.label')
$t('workflow.nodes.conditionNode.conditions.label')
}}</span>
</div>
</div>
@ -59,7 +59,7 @@
:rules="{
type: 'array',
required: true,
message: $t('views.workflow.variable.placeholder'),
message: $t('workflow.variable.placeholder'),
trigger: 'change',
}"
>
@ -67,7 +67,7 @@
ref="nodeCascaderRef"
:nodeModel="nodeModel"
class="w-full"
:placeholder="$t('views.workflow.variable.placeholder')"
:placeholder="$t('workflow.variable.placeholder')"
v-model="condition.field"
/>
</el-form-item>
@ -78,7 +78,7 @@
:rules="{
required: true,
message: $t(
'views.workflow.nodes.conditionNode.conditions.requiredMessage',
'workflow.nodes.conditionNode.conditions.requiredMessage',
),
trigger: 'change',
}"
@ -89,7 +89,7 @@
v-model="condition.compare"
:placeholder="
$t(
'views.workflow.nodes.conditionNode.conditions.requiredMessage',
'workflow.nodes.conditionNode.conditions.requiredMessage',
)
"
clearable
@ -111,14 +111,14 @@
:prop="'branch.' + index + '.conditions.' + cIndex + '.value'"
:rules="{
required: true,
message: $t('views.workflow.nodes.conditionNode.valueMessage'),
message: $t('workflow.nodes.conditionNode.valueMessage'),
trigger: 'blur',
}"
>
<el-input
v-model="condition.value"
:placeholder="
$t('views.workflow.nodes.conditionNode.valueMessage')
$t('workflow.nodes.conditionNode.valueMessage')
"
/>
</el-form-item>
@ -145,14 +145,14 @@
v-if="index !== form_data.branch.length - 1"
>
<AppIcon iconName="app-add-outlined" class="mr-4"></AppIcon>
{{ $t('views.workflow.nodes.conditionNode.addCondition') }}
{{ $t('workflow.nodes.conditionNode.addCondition') }}
</el-button>
</el-card>
</template>
</VueDraggable>
<el-button link type="primary" @click="addBranch">
<AppIcon iconName="app-add-outlined" class="mr-4"></AppIcon>
{{ $t('views.workflow.nodes.conditionNode.addBranch') }}
{{ $t('workflow.nodes.conditionNode.addBranch') }}
</el-button>
</el-form>
</NodeContainer>

View File

@ -1,6 +1,6 @@
<template>
<NodeContainer :nodeModel="nodeModel">
<h5 class="title-decoration-1 mb-8">{{ $t('views.workflow.nodeSetting') }}</h5>
<h5 class="title-decoration-1 mb-8">{{ $t('workflow.nodeSetting') }}</h5>
<el-card shadow="never" class="card-never">
<el-form
@submit.prevent
@ -10,17 +10,17 @@
label-width="auto"
>
<el-form-item
:label="$t('views.workflow.nodes.dataSourceLocalNode.fileFormat.label')"
:label="$t('workflow.nodes.dataSourceLocalNode.fileFormat.label')"
:rules="{
type: 'array',
required: true,
message: $t('views.workflow.nodes.dataSourceLocalNode.fileFormat.requiredMessage'),
message: $t('workflow.nodes.dataSourceLocalNode.fileFormat.requiredMessage'),
trigger: 'change',
}"
>
<el-select
v-model="form_data.file_type_list"
:placeholder="$t('views.workflow.nodes.dataSourceLocalNode.fileFormat.requiredMessage')"
:placeholder="$t('workflow.nodes.dataSourceLocalNode.fileFormat.requiredMessage')"
class="w-240"
clearable
multiple
@ -40,7 +40,7 @@
</el-select>
</el-form-item>
<el-form-item
:label="$t('views.workflow.nodes.dataSourceLocalNode.maxFileNumber.label')"
:label="$t('workflow.nodes.dataSourceLocalNode.maxFileNumber.label')"
:rules="{
required: true,
message: $t('common.inputPlaceholder'),
@ -59,7 +59,7 @@
/>
</el-form-item>
<el-form-item
:label="$t('views.workflow.nodes.dataSourceLocalNode.maxFileCountNumber.label')"
:label="$t('workflow.nodes.dataSourceLocalNode.maxFileCountNumber.label')"
:rules="{
required: true,
message: $t('common.inputPlaceholder'),

View File

@ -1,6 +1,6 @@
<template>
<NodeContainer :nodeModel="nodeModel">
<h5 class="title-decoration-1 mb-8">{{ $t('views.workflow.nodeSetting') }}</h5>
<h5 class="title-decoration-1 mb-8">{{ $t('workflow.nodeSetting') }}</h5>
<el-card shadow="never" class="card-never">
<span class="lighter">{{ $t('common.noData') }}</span>
</el-card>

View File

@ -1,6 +1,6 @@
<template>
<NodeContainer :nodeModel="nodeModel">
<h5 class="title-decoration-1 mb-8">{{ $t('views.workflow.nodeSetting') }}</h5>
<h5 class="title-decoration-1 mb-8">{{ $t('workflow.nodeSetting') }}</h5>
<el-card shadow="never" class="card-never">
<el-form
@submit.prevent

View File

@ -1,6 +1,6 @@
<template>
<NodeContainer :nodeModel="nodeModel">
<h5 class="title-decoration-1 mb-8">{{ $t('views.workflow.nodeSetting') }}</h5>
<h5 class="title-decoration-1 mb-8">{{ $t('workflow.nodeSetting') }}</h5>
<el-card shadow="never" class="card-never">
<el-form
ref="aiChatNodeFormRef"
@ -28,16 +28,16 @@
/>
</el-form-item>
<el-form-item
:label="$t('views.workflow.nodes.documentSplitNode.splitStrategy.label')"
:label="$t('workflow.nodes.documentSplitNode.splitStrategy.label')"
:rules="{
required: true,
message: $t('views.workflow.nodes.documentSplitNode.splitStrategy.requiredMessage'),
message: $t('workflow.nodes.documentSplitNode.splitStrategy.requiredMessage'),
trigger: 'change',
}"
>
<el-select
v-model="form_data.split_strategy"
:placeholder="$t('views.workflow.nodes.documentSplitNode.splitStrategy.placeholder')"
:placeholder="$t('workflow.nodes.documentSplitNode.splitStrategy.placeholder')"
>
<el-option :label="$t('views.document.setRules.intelligent.label')" value="auto" />
<el-option :label="$t('views.document.setRules.advanced.label')" value="custom" />
@ -48,18 +48,18 @@
<template #label>
<div class="flex-between">
<span class="flex align-center">
<span>{{ $t('views.workflow.nodes.documentSplitNode.chunk_length.label') }}</span>
<span>{{ $t('workflow.nodes.documentSplitNode.chunk_length.label') }}</span>
<el-tooltip effect="dark" placement="right">
<template #content>
{{ $t('views.workflow.nodes.documentSplitNode.chunk_length.tooltip1') }}<br />
{{ $t('views.workflow.nodes.documentSplitNode.chunk_length.tooltip2') }}<br />
{{ $t('views.workflow.nodes.documentSplitNode.chunk_length.tooltip3') }}
{{ $t('workflow.nodes.documentSplitNode.chunk_length.tooltip1') }}<br />
{{ $t('workflow.nodes.documentSplitNode.chunk_length.tooltip2') }}<br />
{{ $t('workflow.nodes.documentSplitNode.chunk_length.tooltip3') }}
</template>
<AppIcon iconName="app-warning" class="app-warning-icon"></AppIcon>
</el-tooltip>
</span>
<el-select v-model="form_data.chunk_size_type" size="small" style="width: 85px">
<el-option :label="$t('views.workflow.variable.Referencing')" value="referencing" />
<el-option :label="$t('workflow.variable.Referencing')" value="referencing" />
<el-option :label="$t('common.custom')" value="custom" />
</el-select>
</div>
@ -106,7 +106,7 @@
size="small"
style="width: 85px"
>
<el-option :label="$t('views.workflow.variable.Referencing')" value="referencing" />
<el-option :label="$t('workflow.variable.Referencing')" value="referencing" />
<el-option :label="$t('common.custom')" value="custom" />
</el-select>
</div>
@ -145,7 +145,7 @@
{{ $t('views.document.setRules.limit.label') }}
</span>
<el-select v-model="form_data.limit_type" size="small" style="width: 85px">
<el-option :label="$t('views.workflow.variable.Referencing')" value="referencing" />
<el-option :label="$t('workflow.variable.Referencing')" value="referencing" />
<el-option :label="$t('common.custom')" value="custom" />
</el-select>
</div>
@ -186,7 +186,7 @@
</el-tooltip>
</div>
<el-select v-model="form_data.limit_type" size="small" style="width: 85px">
<el-option :label="$t('views.workflow.variable.Referencing')" value="referencing" />
<el-option :label="$t('workflow.variable.Referencing')" value="referencing" />
<el-option :label="$t('common.custom')" value="custom" />
</el-select>
</div>
@ -208,13 +208,13 @@
<el-form-item v-if="form_data.split_strategy !== 'qa'">
<template #label>
<div class="flex-between">
<span> {{ $t('views.workflow.nodes.documentSplitNode.title1') }}</span>
<span> {{ $t('workflow.nodes.documentSplitNode.title1') }}</span>
<el-select
v-model="form_data.paragraph_title_relate_problem_type"
size="small"
style="width: 85px"
>
<el-option :label="$t('views.workflow.variable.Referencing')" value="referencing" />
<el-option :label="$t('workflow.variable.Referencing')" value="referencing" />
<el-option :label="$t('common.custom')" value="custom" />
</el-select>
</div>
@ -236,13 +236,13 @@
<el-form-item>
<template #label>
<div class="flex-between">
<span>{{ $t('views.workflow.nodes.documentSplitNode.title2') }}</span>
<span>{{ $t('workflow.nodes.documentSplitNode.title2') }}</span>
<el-select
v-model="form_data.document_name_relate_problem_type"
size="small"
style="width: 85px"
>
<el-option :label="$t('views.workflow.variable.Referencing')" value="referencing" />
<el-option :label="$t('workflow.variable.Referencing')" value="referencing" />
<el-option :label="$t('common.custom')" value="custom" />
</el-select>
</div>

View File

@ -1,6 +1,6 @@
<template>
<NodeContainer :nodeModel="nodeModel">
<h5 class="title-decoration-1 mb-8">{{ $t('views.workflow.nodeSetting') }}</h5>
<h5 class="title-decoration-1 mb-8">{{ $t('workflow.nodeSetting') }}</h5>
<el-card shadow="never" class="card-never" style="--el-card-padding: 12px">
<el-form
@submit.prevent
@ -12,11 +12,11 @@
hide-required-asterisk
>
<el-form-item
:label="$t('views.workflow.nodes.formNode.formContent.label')"
:label="$t('workflow.nodes.formNode.formContent.label')"
prop="form_content_format"
:rules="{
required: true,
message: $t('views.workflow.nodes.formNode.formContent.requiredMessage'),
message: $t('workflow.nodes.formNode.formContent.requiredMessage'),
trigger: 'blur',
}"
>
@ -24,14 +24,14 @@
<div class="flex align-center">
<div class="mr-4">
<span
>{{ $t('views.workflow.nodes.formNode.formContent.label')
>{{ $t('workflow.nodes.formNode.formContent.label')
}}<span class="color-danger">*</span></span
>
</div>
<el-tooltip effect="dark" placement="right" popper-class="max-w-200">
<template #content>
{{
$t('views.workflow.nodes.formNode.formContent.tooltip', {
$t('workflow.nodes.formNode.formContent.tooltip', {
form: '{ form }',
})
}}
@ -41,20 +41,20 @@
</div>
</template>
<MdEditorMagnify
:title="$t('views.workflow.nodes.formNode.formContent.label')"
:title="$t('workflow.nodes.formNode.formContent.label')"
v-model="form_data.form_content_format"
style="height: 150px"
@submitDialog="submitDialog"
/>
</el-form-item>
<el-form-item
:label="$t('views.workflow.nodes.formNode.formSetting')"
:label="$t('workflow.nodes.formNode.formSetting')"
@click.prevent
>
<template #label>
<div class="flex-between">
<h5 class="lighter">
{{ $t('views.workflow.nodes.formNode.formSetting') }}
{{ $t('workflow.nodes.formNode.formSetting') }}
</h5>
<el-button link type="primary" @click="openAddFormCollect()">
<AppIcon iconName="app-add-outlined" class="mr-4"></AppIcon>
@ -167,7 +167,7 @@ const editFormField = (form_field_data: any, field_index: number) => {
}
const addFormField = (form_field_data: any) => {
if (form_data.value.form_field_list.some((field: any) => field.field === form_field_data.field)) {
MsgError(t('views.workflow.tip.paramErrorMessage') + form_field_data.field)
MsgError(t('workflow.tip.paramErrorMessage') + form_field_data.field)
return
}
form_data.value.form_field_list = cloneDeep([...form_data.value.form_field_list, form_field_data])
@ -176,7 +176,7 @@ const addFormField = (form_field_data: any) => {
const sync_form_field_list = () => {
const fields = [
{
label: t('views.workflow.nodes.formNode.formAllContent'),
label: t('workflow.nodes.formNode.formAllContent'),
value: 'form_data',
},
...form_data.value.form_field_list.map((item: any) => ({
@ -204,9 +204,9 @@ const deleteField = (form_field_data: any) => {
}
const form = ref<any>({
is_result: true,
form_content_format: `${t('views.workflow.nodes.formNode.form_content_format1')}
form_content_format: `${t('workflow.nodes.formNode.form_content_format1')}
{{form}}
${t('views.workflow.nodes.formNode.form_content_format2')}`,
${t('workflow.nodes.formNode.form_content_format2')}`,
form_field_list: [],
})
const form_data = computed({

View File

@ -1,6 +1,6 @@
<template>
<NodeContainer :node-model="nodeModel">
<h5 class="title-decoration-1 mb-8">{{ $t('views.workflow.nodeSetting') }}</h5>
<h5 class="title-decoration-1 mb-8">{{ $t('workflow.nodeSetting') }}</h5>
<el-card shadow="never" class="card-never">
<el-form
@submit.prevent
@ -12,11 +12,11 @@
hide-required-asterisk
>
<el-form-item
:label="$t('views.workflow.nodes.imageGenerateNode.model.label')"
:label="$t('workflow.nodes.imageGenerateNode.model.label')"
prop="model_id"
:rules="{
required: true,
message: $t('views.workflow.nodes.imageGenerateNode.model.requiredMessage'),
message: $t('workflow.nodes.imageGenerateNode.model.requiredMessage'),
trigger: 'change',
}"
>
@ -24,7 +24,7 @@
<div class="flex-between w-full">
<div>
<span
>{{ $t('views.workflow.nodes.imageGenerateNode.model.label')
>{{ $t('workflow.nodes.imageGenerateNode.model.label')
}}<span class="color-danger">*</span></span
>
</div>
@ -45,7 +45,7 @@
@wheel="wheel"
:teleported="false"
v-model="form_data.model_id"
:placeholder="$t('views.workflow.nodes.imageGenerateNode.model.requiredMessage')"
:placeholder="$t('workflow.nodes.imageGenerateNode.model.requiredMessage')"
:options="modelOptions"
showFooter
@focus="getSelectModel"
@ -54,7 +54,7 @@
</el-form-item>
<el-form-item
:label="$t('views.workflow.nodes.imageGenerateNode.prompt.label')"
:label="$t('workflow.nodes.imageGenerateNode.prompt.label')"
prop="prompt"
:rules="{
required: true,
@ -66,13 +66,13 @@
<div class="flex align-center">
<div class="mr-4">
<span
>{{ $t('views.workflow.nodes.imageGenerateNode.prompt.label')
>{{ $t('workflow.nodes.imageGenerateNode.prompt.label')
}}<span class="color-danger">*</span></span
>
</div>
<el-tooltip effect="dark" placement="right" popper-class="max-w-200">
<template #content
>{{ $t('views.workflow.nodes.imageGenerateNode.prompt.tooltip') }}
>{{ $t('workflow.nodes.imageGenerateNode.prompt.tooltip') }}
</template>
<AppIcon iconName="app-warning" class="app-warning-icon"></AppIcon>
</el-tooltip>
@ -80,14 +80,14 @@
</template>
<MdEditorMagnify
@wheel="wheel"
:title="$t('views.workflow.nodes.imageGenerateNode.prompt.label')"
:title="$t('workflow.nodes.imageGenerateNode.prompt.label')"
v-model="form_data.prompt"
style="height: 150px"
@submitDialog="submitDialog"
/>
</el-form-item>
<el-form-item
:label="$t('views.workflow.nodes.imageGenerateNode.negative_prompt.label')"
:label="$t('workflow.nodes.imageGenerateNode.negative_prompt.label')"
prop="prompt"
:rules="{
required: false,
@ -99,12 +99,12 @@
<div class="flex align-center">
<div class="mr-4">
<span>{{
$t('views.workflow.nodes.imageGenerateNode.negative_prompt.label')
$t('workflow.nodes.imageGenerateNode.negative_prompt.label')
}}</span>
</div>
<el-tooltip effect="dark" placement="right" popper-class="max-w-200">
<template #content
>{{ $t('views.workflow.nodes.imageGenerateNode.negative_prompt.tooltip') }}
>{{ $t('workflow.nodes.imageGenerateNode.negative_prompt.tooltip') }}
</template>
<AppIcon iconName="app-warning" class="app-warning-icon"></AppIcon>
</el-tooltip>
@ -112,26 +112,26 @@
</template>
<MdEditorMagnify
@wheel="wheel"
:title="$t('views.workflow.nodes.imageGenerateNode.negative_prompt.label')"
:title="$t('workflow.nodes.imageGenerateNode.negative_prompt.label')"
v-model="form_data.negative_prompt"
:placeholder="$t('views.workflow.nodes.imageGenerateNode.negative_prompt.placeholder')"
:placeholder="$t('workflow.nodes.imageGenerateNode.negative_prompt.placeholder')"
style="height: 150px"
@submitDialog="submitNegativeDialog"
/>
</el-form-item>
<el-form-item
:label="$t('views.workflow.nodes.aiChatNode.returnContent.label')"
:label="$t('workflow.nodes.aiChatNode.returnContent.label')"
@click.prevent
v-if="[WorkflowMode.Application, WorkflowMode.ApplicationLoop].includes(workflowMode)"
>
<template #label>
<div class="flex align-center">
<div class="mr-4">
<span>{{ $t('views.workflow.nodes.aiChatNode.returnContent.label') }}</span>
<span>{{ $t('workflow.nodes.aiChatNode.returnContent.label') }}</span>
</div>
<el-tooltip effect="dark" placement="right" popper-class="max-w-200">
<template #content>
{{ $t('views.workflow.nodes.aiChatNode.returnContent.tooltip') }}
{{ $t('workflow.nodes.aiChatNode.returnContent.tooltip') }}
</template>
<AppIcon iconName="app-warning" class="app-warning-icon"></AppIcon>
</el-tooltip>
@ -192,7 +192,7 @@ const wheel = (e: any) => {
}
}
const defaultPrompt = `{{${t('views.workflow.nodes.startNode.label')}.question}}`
const defaultPrompt = `{{${t('workflow.nodes.startNode.label')}.question}}`
const form = {
model_id: '',

View File

@ -1,6 +1,6 @@
<template>
<NodeContainer :node-model="nodeModel">
<h5 class="title-decoration-1 mb-8">{{ $t('views.workflow.nodeSetting') }}</h5>
<h5 class="title-decoration-1 mb-8">{{ $t('workflow.nodeSetting') }}</h5>
<el-card shadow="never" class="card-never">
<el-form
@submit.prevent
@ -12,11 +12,11 @@
hide-required-asterisk
>
<el-form-item
:label="$t('views.workflow.nodes.imageToVideoGenerate.model.label')"
:label="$t('workflow.nodes.imageToVideoGenerate.model.label')"
prop="model_id"
:rules="{
required: true,
message: $t('views.workflow.nodes.imageToVideoGenerate.model.requiredMessage'),
message: $t('workflow.nodes.imageToVideoGenerate.model.requiredMessage'),
trigger: 'change',
}"
>
@ -24,7 +24,7 @@
<div class="flex-between w-full">
<div>
<span
>{{ $t('views.workflow.nodes.imageToVideoGenerate.model.label')
>{{ $t('workflow.nodes.imageToVideoGenerate.model.label')
}}<span class="color-danger">*</span></span
>
</div>
@ -46,7 +46,7 @@
:teleported="false"
v-model="form_data.model_id"
@focus="getSelectModel"
:placeholder="$t('views.workflow.nodes.imageToVideoGenerate.model.requiredMessage')"
:placeholder="$t('workflow.nodes.imageToVideoGenerate.model.requiredMessage')"
:options="modelOptions"
showFooter
:model-type="'ITV'"
@ -54,7 +54,7 @@
</el-form-item>
<el-form-item
:label="$t('views.workflow.nodes.imageToVideoGenerate.prompt.label')"
:label="$t('workflow.nodes.imageToVideoGenerate.prompt.label')"
prop="prompt"
:rules="{
required: true,
@ -66,13 +66,13 @@
<div class="flex align-center">
<div class="mr-4">
<span
>{{ $t('views.workflow.nodes.imageToVideoGenerate.prompt.label')
>{{ $t('workflow.nodes.imageToVideoGenerate.prompt.label')
}}<span class="color-danger">*</span></span
>
</div>
<el-tooltip effect="dark" placement="right" popper-class="max-w-200">
<template #content
>{{ $t('views.workflow.nodes.imageToVideoGenerate.prompt.tooltip') }}
>{{ $t('workflow.nodes.imageToVideoGenerate.prompt.tooltip') }}
</template>
<AppIcon iconName="app-warning" class="app-warning-icon"></AppIcon>
</el-tooltip>
@ -80,14 +80,14 @@
</template>
<MdEditorMagnify
@wheel="wheel"
:title="$t('views.workflow.nodes.imageToVideoGenerate.prompt.label')"
:title="$t('workflow.nodes.imageToVideoGenerate.prompt.label')"
v-model="form_data.prompt"
style="height: 150px"
@submitDialog="submitDialog"
/>
</el-form-item>
<el-form-item
:label="$t('views.workflow.nodes.imageToVideoGenerate.negative_prompt.label')"
:label="$t('workflow.nodes.imageToVideoGenerate.negative_prompt.label')"
prop="prompt"
:rules="{
required: false,
@ -99,12 +99,12 @@
<div class="flex align-center">
<div class="mr-4">
<span>{{
$t('views.workflow.nodes.imageToVideoGenerate.negative_prompt.label')
$t('workflow.nodes.imageToVideoGenerate.negative_prompt.label')
}}</span>
</div>
<el-tooltip effect="dark" placement="right" popper-class="max-w-200">
<template #content
>{{ $t('views.workflow.nodes.imageToVideoGenerate.negative_prompt.tooltip') }}
>{{ $t('workflow.nodes.imageToVideoGenerate.negative_prompt.tooltip') }}
</template>
<AppIcon iconName="app-warning" class="app-warning-icon"></AppIcon>
</el-tooltip>
@ -112,26 +112,26 @@
</template>
<MdEditorMagnify
@wheel="wheel"
:title="$t('views.workflow.nodes.imageToVideoGenerate.negative_prompt.label')"
:title="$t('workflow.nodes.imageToVideoGenerate.negative_prompt.label')"
v-model="form_data.negative_prompt"
:placeholder="
$t('views.workflow.nodes.imageToVideoGenerate.negative_prompt.placeholder')
$t('workflow.nodes.imageToVideoGenerate.negative_prompt.placeholder')
"
style="height: 150px"
@submitDialog="submitNegativeDialog"
/>
</el-form-item>
<el-form-item
:label="$t('views.workflow.nodes.imageToVideoGenerate.first_frame.label')"
:label="$t('workflow.nodes.imageToVideoGenerate.first_frame.label')"
:rules="{
type: 'array',
required: true,
message: $t('views.workflow.nodes.imageToVideoGenerate.first_frame.requiredMessage'),
message: $t('workflow.nodes.imageToVideoGenerate.first_frame.requiredMessage'),
trigger: 'change',
}"
>
<template #label
>{{ $t('views.workflow.nodes.imageToVideoGenerate.first_frame.label')
>{{ $t('workflow.nodes.imageToVideoGenerate.first_frame.label')
}}<span class="color-danger">*</span></template
>
<NodeCascader
@ -139,47 +139,47 @@
:nodeModel="nodeModel"
class="w-full"
:placeholder="
$t('views.workflow.nodes.imageToVideoGenerate.first_frame.requiredMessage')
$t('workflow.nodes.imageToVideoGenerate.first_frame.requiredMessage')
"
v-model="form_data.first_frame_url"
/>
</el-form-item>
<el-form-item
:label="$t('views.workflow.nodes.imageToVideoGenerate.last_frame.label')"
:label="$t('workflow.nodes.imageToVideoGenerate.last_frame.label')"
:rules="{
type: 'array',
required: false,
message: $t('views.workflow.nodes.imageToVideoGenerate.last_frame.requiredMessage'),
message: $t('workflow.nodes.imageToVideoGenerate.last_frame.requiredMessage'),
trigger: 'change',
}"
>
<template #label
>{{ $t('views.workflow.nodes.imageToVideoGenerate.last_frame.label') }}
>{{ $t('workflow.nodes.imageToVideoGenerate.last_frame.label') }}
</template>
<NodeCascader
ref="nodeCascaderRef"
:nodeModel="nodeModel"
class="w-full"
:placeholder="
$t('views.workflow.nodes.imageToVideoGenerate.last_frame.requiredMessage')
$t('workflow.nodes.imageToVideoGenerate.last_frame.requiredMessage')
"
clearable
v-model="form_data.last_frame_url"
/>
</el-form-item>
<el-form-item
:label="$t('views.workflow.nodes.aiChatNode.returnContent.label')"
:label="$t('workflow.nodes.aiChatNode.returnContent.label')"
@click.prevent
v-if="[WorkflowMode.Application, WorkflowMode.ApplicationLoop].includes(workflowMode)"
>
<template #label>
<div class="flex align-center">
<div class="mr-4">
<span>{{ $t('views.workflow.nodes.aiChatNode.returnContent.label') }}</span>
<span>{{ $t('workflow.nodes.aiChatNode.returnContent.label') }}</span>
</div>
<el-tooltip effect="dark" placement="right" popper-class="max-w-200">
<template #content>
{{ $t('views.workflow.nodes.aiChatNode.returnContent.tooltip') }}
{{ $t('workflow.nodes.aiChatNode.returnContent.tooltip') }}
</template>
<AppIcon iconName="app-warning" class="app-warning-icon"></AppIcon>
</el-tooltip>
@ -241,7 +241,7 @@ const wheel = (e: any) => {
}
}
const defaultPrompt = `{{${t('views.workflow.nodes.startNode.label')}.question}}`
const defaultPrompt = `{{${t('workflow.nodes.startNode.label')}.question}}`
const form = {
model_id: '',

View File

@ -1,6 +1,6 @@
<template>
<NodeContainer :node-model="nodeModel">
<h5 class="title-decoration-1 mb-8">{{ $t('views.workflow.nodeSetting') }}</h5>
<h5 class="title-decoration-1 mb-8">{{ $t('workflow.nodeSetting') }}</h5>
<el-card shadow="never" class="card-never">
<el-form
@submit.prevent
@ -12,11 +12,11 @@
hide-required-asterisk
>
<el-form-item
:label="$t('views.workflow.nodes.imageUnderstandNode.model.label')"
:label="$t('workflow.nodes.imageUnderstandNode.model.label')"
prop="model_id"
:rules="{
required: true,
message: $t('views.workflow.nodes.imageUnderstandNode.model.requiredMessage'),
message: $t('workflow.nodes.imageUnderstandNode.model.requiredMessage'),
trigger: 'change',
}"
>
@ -24,7 +24,7 @@
<div class="flex-between w-full">
<div>
<span
>{{ t('views.workflow.nodes.imageUnderstandNode.model.label')
>{{ t('workflow.nodes.imageUnderstandNode.model.label')
}}<span class="color-danger">*</span></span
>
</div>
@ -44,7 +44,7 @@
@wheel="wheel"
:teleported="false"
v-model="form_data.model_id"
:placeholder="$t('views.workflow.nodes.imageUnderstandNode.model.requiredMessage')"
:placeholder="$t('workflow.nodes.imageUnderstandNode.model.requiredMessage')"
:options="modelOptions"
showFooter
:model-type="'IMAGE'"
@ -79,7 +79,7 @@
v-model="form_data.system"
style="height: 100px"
@submitDialog="submitSystemDialog"
:placeholder="`${t('views.workflow.SystemPromptPlaceholder')}{{${t('views.workflow.nodes.startNode.label')}.question}}`"
:placeholder="`${t('workflow.SystemPromptPlaceholder')}{{${t('workflow.nodes.startNode.label')}.question}}`"
/>
</el-form-item>
<el-form-item
@ -111,7 +111,7 @@
v-model="form_data.prompt"
style="height: 150px"
@submitDialog="submitDialog"
:placeholder="`${t('views.workflow.UserPromptPlaceholder')}{{${t('views.workflow.nodes.startNode.label')}.question}}`"
:placeholder="`${t('workflow.UserPromptPlaceholder')}{{${t('workflow.nodes.startNode.label')}.question}}`"
/>
</el-form-item>
<el-form-item>
@ -119,8 +119,8 @@
<div class="flex-between">
<div>{{ $t('views.application.form.historyRecord.label') }}</div>
<el-select v-model="form_data.dialogue_type" type="small" style="width: 100px">
<el-option :label="$t('views.workflow.node')" value="NODE" />
<el-option :label="$t('views.workflow.workflow')" value="WORKFLOW" />
<el-option :label="$t('workflow.node')" value="NODE" />
<el-option :label="$t('workflow.workflow')" value="WORKFLOW" />
</el-select>
</div>
</template>
@ -135,39 +135,39 @@
/>
</el-form-item>
<el-form-item
:label="$t('views.workflow.nodes.imageUnderstandNode.image.label')"
:label="$t('workflow.nodes.imageUnderstandNode.image.label')"
:rules="{
type: 'array',
required: true,
message: $t('views.workflow.nodes.imageUnderstandNode.image.requiredMessage'),
message: $t('workflow.nodes.imageUnderstandNode.image.requiredMessage'),
trigger: 'change',
}"
>
<template #label
>{{ $t('views.workflow.nodes.imageUnderstandNode.image.label')
>{{ $t('workflow.nodes.imageUnderstandNode.image.label')
}}<span class="color-danger">*</span></template
>
<NodeCascader
ref="nodeCascaderRef"
:nodeModel="nodeModel"
class="w-full"
:placeholder="$t('views.workflow.nodes.imageUnderstandNode.image.requiredMessage')"
:placeholder="$t('workflow.nodes.imageUnderstandNode.image.requiredMessage')"
v-model="form_data.image_list"
/>
</el-form-item>
<el-form-item
:label="$t('views.workflow.nodes.aiChatNode.returnContent.label')"
:label="$t('workflow.nodes.aiChatNode.returnContent.label')"
@click.prevent
v-if="[WorkflowMode.Application, WorkflowMode.ApplicationLoop].includes(workflowMode)"
>
<template #label>
<div class="flex align-center">
<div class="mr-4">
<span>{{ $t('views.workflow.nodes.aiChatNode.returnContent.label') }}</span>
<span>{{ $t('workflow.nodes.aiChatNode.returnContent.label') }}</span>
</div>
<el-tooltip effect="dark" placement="right" popper-class="max-w-200">
<template #content>
{{ $t('views.workflow.nodes.aiChatNode.returnContent.tooltip') }}
{{ $t('workflow.nodes.aiChatNode.returnContent.tooltip') }}
</template>
<AppIcon iconName="app-warning" class="app-warning-icon"></AppIcon>
</el-tooltip>
@ -235,7 +235,7 @@ const wheel = (e: any) => {
}
}
const defaultPrompt = `{{${t('views.workflow.nodes.startNode.label')}.question}}`
const defaultPrompt = `{{${t('workflow.nodes.startNode.label')}.question}}`
const form = {
model_id: '',

View File

@ -1,6 +1,6 @@
<template>
<NodeContainer :nodeModel="nodeModel">
<h5 class="title-decoration-1 mb-8">{{ $t('views.workflow.nodeSetting') }}</h5>
<h5 class="title-decoration-1 mb-8">{{ $t('workflow.nodeSetting') }}</h5>
<el-card shadow="never" class="card-never" style="--el-card-padding: 12px">
<el-form
@submit.prevent
@ -53,9 +53,9 @@
</el-form-item>
<el-form-item
prop="content_list"
:label="$t('views.workflow.nodes.intentNode.input.label')"
:label="$t('workflow.nodes.intentNode.input.label')"
:rules="{
message: $t('views.workflow.nodes.textToSpeechNode.content.label'),
message: $t('workflow.nodes.textToSpeechNode.content.label'),
trigger: 'change',
required: true,
}"
@ -64,7 +64,7 @@
<div class="flex-between">
<div>
<span
>{{ $t('views.workflow.nodes.intentNode.input.label')
>{{ $t('workflow.nodes.intentNode.input.label')
}}<span class="color-danger">*</span></span
>
</div>
@ -74,7 +74,7 @@
ref="nodeCascaderRef"
:nodeModel="nodeModel"
class="w-full"
:placeholder="$t('views.workflow.nodes.textToSpeechNode.content.label')"
:placeholder="$t('workflow.nodes.textToSpeechNode.content.label')"
v-model="form_data.content_list"
/>
</el-form-item>
@ -94,7 +94,7 @@
<div class="flex-between">
<div>
<span
>{{ $t('views.workflow.nodes.intentNode.classify.label')
>{{ $t('workflow.nodes.intentNode.classify.label')
}}<span class="color-danger">*</span></span
>
</div>
@ -287,7 +287,7 @@ const form = {
},
{
id: randomId(),
content: t('views.workflow.nodes.intentNode.other'),
content: t('workflow.nodes.intentNode.other'),
isOther: true,
},
],
@ -333,7 +333,7 @@ const validate = () => {
form_data.value.branch.length !=
new Set(form_data.value.branch.map((item: any) => item.content)).size
) {
throw t('views.workflow.nodes.intentNode.error2')
throw t('workflow.nodes.intentNode.error2')
}
})
.catch((err: any) => {

View File

@ -144,7 +144,7 @@ function deleteField(index: any) {
function refreshFieldList(data: any, index: any) {
for (let i = 0; i < inputFieldList.value.length; i++) {
if (inputFieldList.value[i].field === data.field && index !== i) {
MsgError(t('views.workflow.tip.paramErrorMessage') + data.field)
MsgError(t('workflow.tip.paramErrorMessage') + data.field)
return
}
}

View File

@ -1,6 +1,6 @@
<template>
<NodeContainer :nodeModel="nodeModel">
<h5 class="title-decoration-1 mb-8">{{ $t('views.workflow.nodeSetting') }}</h5>
<h5 class="title-decoration-1 mb-8">{{ $t('workflow.nodeSetting') }}</h5>
<UserInputFieldTable ref="UserInputFieldTableFef" :node-model="nodeModel" />
<h5 class="title-decoration-1 mb-8 mt-8">
@ -16,7 +16,7 @@
<span class="break-all">{{ item.label }} {{ '{' + item.value + '}' }}</span>
<el-tooltip
effect="dark"
:content="$t('views.workflow.setting.copyParam')"
:content="$t('workflow.setting.copyParam')"
placement="top"
v-if="showicon === index"
>

View File

@ -1,6 +1,6 @@
<template>
<NodeContainer :nodeModel="nodeModel">
<h5 class="title-decoration-1 mb-8">{{ $t('views.workflow.nodeSetting') }}</h5>
<h5 class="title-decoration-1 mb-8">{{ $t('workflow.nodeSetting') }}</h5>
<el-card shadow="never" class="card-never">
<el-form
@submit.prevent
@ -15,7 +15,7 @@
prop="document_list"
:label="$t('common.inputContent')"
:rules="{
message: $t('views.workflow.nodes.textToSpeechNode.content.label'),
message: $t('workflow.nodes.textToSpeechNode.content.label'),
trigger: 'change',
required: true,
}"
@ -34,7 +34,7 @@
ref="nodeCascaderRef"
:nodeModel="nodeModel"
class="w-full"
:placeholder="$t('views.workflow.nodes.textToSpeechNode.content.label')"
:placeholder="$t('workflow.nodes.textToSpeechNode.content.label')"
v-model="form_data.document_list"
/>
</el-form-item>

View File

@ -34,8 +34,8 @@
class="mb-16"
:title="
props.nodeModel.type === 'application-node'
? $t('views.workflow.tip.applicationNodeError')
: $t('views.workflow.tip.functionNodeError')
? $t('workflow.tip.applicationNodeError')
: $t('workflow.tip.functionNodeError')
"
type="error"
show-icon
@ -58,7 +58,7 @@
<span class="break-all">{{ item.label }} {{ '{' + item.value + '}' }}</span>
<el-tooltip
effect="dark"
:content="$t('views.workflow.setting.copyParam')"
:content="$t('workflow.setting.copyParam')"
placement="top"
v-if="showicon === index"
>
@ -75,7 +75,7 @@
</div>
<el-dialog
:title="$t('views.workflow.nodeName')"
:title="$t('workflow.nodeName')"
v-model="nodeNameDialogVisible"
:close-on-click-modal="false"
:close-on-press-escape="false"
@ -163,7 +163,7 @@ const editName = async (formEl: FormInstance | undefined) => {
nodeNameDialogVisible.value = false
formEl.resetFields()
} else {
ElMessage.error(t('views.workflow.tip.repeatedNodeError'))
ElMessage.error(t('workflow.tip.repeatedNodeError'))
}
}
})

View File

@ -6,7 +6,7 @@ class LoopBodyNodeView extends AppNode {
super(props, LoopNode)
}
getNodeName() {
return t('views.workflow.nodes.loopBodyNode.label')
return t('workflow.nodes.loopBodyNode.label')
}
get_up_node_field_list(contain_self: boolean, use_cache: boolean) {
const loop_node_id = this.props.model.properties.loop_node_id

View File

@ -31,7 +31,7 @@ const validate = () => {
if (loop_node.properties.node_data.loop_type == 'LOOP' && !workflow.exist_break_node()) {
return Promise.reject({
node: loop_node,
errMessage: t('views.workflow.validate.loopNodeBreakNodeRequired'),
errMessage: t('workflow.validate.loopNodeBreakNodeRequired'),
})
}

View File

@ -11,17 +11,17 @@
>
<div class="handle flex-between lighter mb-8">
<div class="info" v-if="form_data.condition_list.length > 1">
<span>{{ $t('views.workflow.nodes.conditionNode.conditions.info') }}</span>
<span>{{ $t('workflow.nodes.conditionNode.conditions.info') }}</span>
<el-select
:teleported="false"
v-model="form_data.condition"
size="small"
style="width: 60px; margin: 0 8px"
>
<el-option :label="$t('views.workflow.condition.AND')" value="and" />
<el-option :label="$t('views.workflow.condition.OR')" value="or" />
<el-option :label="$t('workflow.condition.AND')" value="and" />
<el-option :label="$t('workflow.condition.OR')" value="or" />
</el-select>
<span>{{ $t('views.workflow.nodes.conditionNode.conditions.label') }}</span>
<span>{{ $t('workflow.nodes.conditionNode.conditions.label') }}</span>
</div>
</div>
<template v-for="(condition, index) in form_data.condition_list" :key="index">
@ -32,7 +32,7 @@
:rules="{
type: 'array',
required: true,
message: $t('views.workflow.variable.placeholder'),
message: $t('workflow.variable.placeholder'),
trigger: 'change',
}"
>
@ -40,7 +40,7 @@
ref="nodeCascaderRef"
:nodeModel="nodeModel"
class="w-full"
:placeholder="$t('views.workflow.variable.placeholder')"
:placeholder="$t('workflow.variable.placeholder')"
v-model="condition.field"
/>
</el-form-item>
@ -51,7 +51,7 @@
:rules="{
required: true,
message: $t(
'views.workflow.nodes.conditionNode.conditions.requiredMessage',
'workflow.nodes.conditionNode.conditions.requiredMessage',
),
trigger: 'change',
}"
@ -61,7 +61,7 @@
:teleported="false"
v-model="condition.compare"
:placeholder="
$t('views.workflow.nodes.conditionNode.conditions.requiredMessage')
$t('workflow.nodes.conditionNode.conditions.requiredMessage')
"
clearable
>
@ -79,13 +79,13 @@
:prop="'condition_list.' + index + '.value'"
:rules="{
required: true,
message: $t('views.workflow.nodes.conditionNode.valueMessage'),
message: $t('workflow.nodes.conditionNode.valueMessage'),
trigger: 'blur',
}"
>
<el-input
v-model="condition.value"
:placeholder="$t('views.workflow.nodes.conditionNode.valueMessage')"
:placeholder="$t('workflow.nodes.conditionNode.valueMessage')"
/>
</el-form-item>
</el-col>
@ -100,7 +100,7 @@
<el-button link type="primary" @click="addCondition()">
<AppIcon iconName="app-add-outlined" class="mr-4"></AppIcon>
{{ $t('views.workflow.nodes.conditionNode.addCondition') }}
{{ $t('workflow.nodes.conditionNode.addCondition') }}
</el-button>
</el-card>
</NodeContainer>

View File

@ -11,17 +11,17 @@
>
<div class="handle flex-between lighter mb-8">
<div class="info" v-if="form_data.condition_list.length > 1">
<span>{{ $t('views.workflow.nodes.conditionNode.conditions.info') }}</span>
<span>{{ $t('workflow.nodes.conditionNode.conditions.info') }}</span>
<el-select
:teleported="false"
v-model="form_data.condition"
size="small"
style="width: 60px; margin: 0 8px"
>
<el-option :label="$t('views.workflow.condition.AND')" value="and" />
<el-option :label="$t('views.workflow.condition.OR')" value="or" />
<el-option :label="$t('workflow.condition.AND')" value="and" />
<el-option :label="$t('workflow.condition.OR')" value="or" />
</el-select>
<span>{{ $t('views.workflow.nodes.conditionNode.conditions.label') }}</span>
<span>{{ $t('workflow.nodes.conditionNode.conditions.label') }}</span>
</div>
</div>
<template v-for="(condition, index) in form_data.condition_list" :key="index">
@ -32,7 +32,7 @@
:rules="{
type: 'array',
required: true,
message: $t('views.workflow.variable.placeholder'),
message: $t('workflow.variable.placeholder'),
trigger: 'change',
}"
>
@ -40,7 +40,7 @@
ref="nodeCascaderRef"
:nodeModel="nodeModel"
class="w-full"
:placeholder="$t('views.workflow.variable.placeholder')"
:placeholder="$t('workflow.variable.placeholder')"
v-model="condition.field"
/>
</el-form-item>
@ -51,7 +51,7 @@
:rules="{
required: true,
message: $t(
'views.workflow.nodes.conditionNode.conditions.requiredMessage',
'workflow.nodes.conditionNode.conditions.requiredMessage',
),
trigger: 'change',
}"
@ -61,7 +61,7 @@
:teleported="false"
v-model="condition.compare"
:placeholder="
$t('views.workflow.nodes.conditionNode.conditions.requiredMessage')
$t('workflow.nodes.conditionNode.conditions.requiredMessage')
"
clearable
>
@ -79,13 +79,13 @@
:prop="'condition_list.' + index + '.value'"
:rules="{
required: true,
message: $t('views.workflow.nodes.conditionNode.valueMessage'),
message: $t('workflow.nodes.conditionNode.valueMessage'),
trigger: 'blur',
}"
>
<el-input
v-model="condition.value"
:placeholder="$t('views.workflow.nodes.conditionNode.valueMessage')"
:placeholder="$t('workflow.nodes.conditionNode.valueMessage')"
/>
</el-form-item>
</el-col>
@ -100,7 +100,7 @@
<el-button link type="primary" @click="addCondition()">
<AppIcon iconName="app-add-outlined" class="mr-4"></AppIcon>
{{ $t('views.workflow.nodes.conditionNode.addCondition') }}
{{ $t('workflow.nodes.conditionNode.addCondition') }}
</el-button>
</el-card>
</NodeContainer>

Some files were not shown because too many files have changed in this diff Show More