diff --git a/src/components/dialoguePanel/DialogueFlow.vue b/src/components/dialoguePanel/DialogueFlow.vue index 0eaed35b17354edb5b902641bbda448ac8bea13e..046a08f3d1f58bdefea9cce782b2fdd0b6862aec 100644 --- a/src/components/dialoguePanel/DialogueFlow.vue +++ b/src/components/dialoguePanel/DialogueFlow.vue @@ -57,7 +57,11 @@ function getRiskType(risk) { } const doFlow = async (type) => { + // 🔑 修复:确保taskId存在才发送请求 if (taskId.value) { + // 先保存taskId,防止在请求过程中被清空 + const currentTaskIdValue = taskId.value; + exData.value.pop(); taskId.value = null; let content = ''; @@ -68,10 +72,12 @@ const doFlow = async (type) => { undefined, undefined, undefined, - { params: type }, + { params: type, taskId: currentTaskIdValue }, // 🔑 显式传递taskId null, 'wait', ); + } else { + console.warn('taskId不存在,无法发送请求'); } }; @@ -84,7 +90,11 @@ const doParams = async (params) => { let description = params.description; delete params.description; let newParams = { content: params, description: description }; + // 🔑 修复:确保taskId存在才发送请求 if (taskId.value) { + // 先保存taskId,防止在请求过程中被清空 + const currentTaskIdValue = taskId.value; + taskId.value = null; let content = ''; await sendQuestion( @@ -94,11 +104,13 @@ const doParams = async (params) => { undefined, undefined, undefined, - newParams, + { ...newParams, taskId: currentTaskIdValue }, // 🔑 显式传递taskId null, 'params', ); exParam.value[paramIndex.value].status = true; + } else { + console.warn('taskId不存在,无法发送请求'); } }; @@ -114,9 +126,21 @@ watch( } if (props.flowdata?.taskId) { if (props.flowdata?.data.exParam) { - exParam.value.push(props.flowdata?.data.exParam); - } else { - exData.value.push(props.flowdata?.data.exData); + // 🔑 去重检查:避免重复添加exParam + const isDuplicateParam = exParam.value.some( + (item) => JSON.stringify(item) === JSON.stringify(props.flowdata?.data.exParam) + ); + if (!isDuplicateParam) { + exParam.value.push(props.flowdata?.data.exParam); + } + } else if (props.flowdata?.data.exData) { + // 🔑 去重检查:避免重复添加exData + const isDuplicateData = exData.value.some( + (item) => JSON.stringify(item) === JSON.stringify(props.flowdata?.data.exData) + ); + if (!isDuplicateData) { + exData.value.push(props.flowdata?.data.exData); + } } taskId.value = props.flowdata?.taskId; } else { @@ -240,11 +264,9 @@ watch( :key="$index" class="6645ds" > -
- {{ p }} -
+ diff --git a/src/store/conversation.ts b/src/store/conversation.ts index 3570c8ff664f4b6b3e203d88d46de6b48cd22c41..0b0f11ed6c3eac0cfe1ce3ad00b91a426499e1d8 100644 --- a/src/store/conversation.ts +++ b/src/store/conversation.ts @@ -533,9 +533,17 @@ export const useSessionStore = defineStore('conversation', () => { innerParams: Record, fetchParams: Record, ) => { + // 🔑 修复:优先使用params中的taskId,如果没有则使用currentTaskId + const taskIdToUse = params.taskId || currentTaskId.value; + + if (!taskIdToUse) { + console.error('fetchWait: taskId不存在,无法发送请求'); + return; + } + await fetchEventSource(url, { ...fetchParams, - body: JSON.stringify({ taskId: currentTaskId.value, params: params }), + body: JSON.stringify({ taskId: taskIdToUse, params: params }), openWhenHidden: true, }); }, diff --git a/src/views/createapp/components/AgentAppConfig.vue b/src/views/createapp/components/AgentAppConfig.vue index f1ce96f3607a93c985255e665370b1c6dadaf1d2..828db97c76258a4dfc92c74375a40bd4b7f9b407 100644 --- a/src/views/createapp/components/AgentAppConfig.vue +++ b/src/views/createapp/components/AgentAppConfig.vue @@ -120,8 +120,8 @@ async function queryAgentConfig() { createAppForm.permission = permission || createAppForm.permission; // 如果有模型 createAppForm.model = llm?.llmId || ''; - // 如果有思维链配置 - createAppForm.enableThinking = enableThinking !== undefined ? enableThinking : true; + // 如果有思维链配置,直接使用后端返回的值 + createAppForm.enableThinking = enableThinking !== undefined ? enableThinking : false; } loading.value = false; } @@ -188,7 +188,8 @@ async function queryModelList() { const [, res] = await api.getAddedModels('function_call'); if (res) { modelOptions.value = res.result; - if (modelOptions.value.length > 0) { + // 仅在创建新应用时(没有 appId)才设置默认模型和思维链 + if (modelOptions.value.length > 0 && !route.query?.appId) { // 优先使用用户偏好的函数调用模型 const preferredModel = getPreferredFunctionCallModel(modelOptions.value); if (preferredModel) { @@ -234,6 +235,8 @@ watch( () => createAppForm.model, (newModelId) => { if (!newModelId) return; + // 仅在创建新应用时(没有 appId)才自动更新 enableThinking + if (route.query?.appId) return; const selectedModel = modelOptions.value.find(m => m.llmId === newModelId); if (selectedModel?.canToggleThinking) { diff --git a/src/views/createapp/components/appConfig.vue b/src/views/createapp/components/appConfig.vue index ea33d465d5f5c68b7e07061bd894ec3f5f14ee3d..3a2b230aa3799c632caa51b594ef163fdafb98a8 100644 --- a/src/views/createapp/components/appConfig.vue +++ b/src/views/createapp/components/appConfig.vue @@ -209,7 +209,8 @@ async function queryModelList() { const [, res] = await api.getAddedModels('function_call'); if (res) { modelOptions.value = res.result; - if (modelOptions.value.length > 0 && !createAppForm.value.model) { + // 仅在创建新应用时(没有 appId)才设置默认模型 + if (modelOptions.value.length > 0 && !route.query?.appId && !createAppForm.value.model) { // 优先使用用户偏好的函数调用模型 const preferredModel = getPreferredFunctionCallModel(modelOptions.value); if (preferredModel) { @@ -251,6 +252,8 @@ watch( () => createAppForm.value.model, (newModelId) => { if (!newModelId) return; + // 仅在创建新应用时(没有 appId)才自动更新 enableThinking + if (route.query?.appId) return; // 模型切换时,始终将思维链重置为关闭状态 createAppForm.value.enableThinking = false; @@ -264,6 +267,7 @@ onMounted(async () => { // 判断是否编辑--是否需要查询回显数据 if (route.query?.appId) { loading.value = true; + isLoadingConfig.value = true; // 标记正在加载配置 api .querySingleAppData({ id: route.query?.appId as string, @@ -291,6 +295,7 @@ onMounted(async () => { emits('getFlowList', flowDataList.value); } loading.value = false; + isLoadingConfig.value = false; // 加载配置完成 }); } // 获取当前权限配置-部分人可见的部分人列表数据 diff --git a/src/views/settings/components/AddModel.vue b/src/views/settings/components/AddModel.vue index a5a3c959db2ff7d581d0314ce02c212229067185..891b5a48da3ca99988a91f920c52fb4f252dc5c0 100644 --- a/src/views/settings/components/AddModel.vue +++ b/src/views/settings/components/AddModel.vue @@ -129,6 +129,7 @@ watch( } if (props.model) { + // 编辑模式:使用模型自己的数据 const { openaiApiKey, openaiBaseUrl, maxTokens, modelName, type, provider } = props.model; form.value = { @@ -139,8 +140,8 @@ watch( type: type ? (Array.isArray(type) ? type : [type]) : [], provider: provider, }; - } - if (props.provider) { + } else if (props.provider) { + // 新增模式:使用provider的预设URL form.value.url = props.provider.url; form.value.provider = props.provider.provider; }