From cdb4a76e8b129f7af57b969311c703a966d3d8ec Mon Sep 17 00:00:00 2001 From: xueyinfei <1207092115@qq.com> Date: Fri, 9 Jan 2026 16:06:07 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=9E=E6=8E=A5=E5=A4=A7=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5=E6=97=B6=E7=9A=84=E8=BF=94=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/aichat/aichat.vue | 78 ++++++++++--------- 1 file changed, 43 insertions(+), 35 deletions(-) diff --git a/vue-fastapi-frontend/src/views/aichat/aichat.vue b/vue-fastapi-frontend/src/views/aichat/aichat.vue index efba56f..4638c4c 100644 --- a/vue-fastapi-frontend/src/views/aichat/aichat.vue +++ b/vue-fastapi-frontend/src/views/aichat/aichat.vue @@ -596,6 +596,7 @@ async function sendChatHandle(event) { function sendChatMessage(data){ controller.value = new AbortController() postChatMessage(data,{signal:controller.value.signal}).then(res=>{ + console.log(res) if (res.status !== 200){ // chatList.value.push({"chatId":uuidv4(),"type":"answer","content":[{"type":"text","content":"服务异常,错误码:"+res.status}],"isEnd":true,"isStop":false,"sessionId":chatList.value[0].sessionId,"sessionName":chatList.value[0].sessionName,"operate":'',"thumbDownReason":''}) currentError.value = "服务异常,错误码:"+res.status +",请联系管理员!" @@ -713,44 +714,51 @@ const getWrite = (reader) => { const processChunk = (chunk) => { currentJobId.value = chunk.job_id; const lastMsg = chatList.value[chatList.value.length - 1]; - // 修复点5:统一处理所有类型的数据块 - if (chunk.docs?.length) { - lastMsg.content.push({ content: chunk.docs, type: "docs" }); - } else if (chunk.G6_ER?.length) { - lastMsg.content.push({ content: chunk.G6_ER, type: "G6_ER" }); - } else if (chunk.html_image?.length) { - lastMsg.content.push({ content: chunk.html_image, type: "html_image" }); - } else if (chunk.table?.length) { - lastMsg.content.push({ content: chunk.table, type: "table" }); - } else if (chunk.router) { - lastMsg.content.push({ content: chunk.router, type: "router" }); - } else if (chunk.choices?.length) { - // 修复点6:纯文本处理增加防重复校验 - // const text = chunk.choices[0].delta.content.replace(/\n/g, "\n\n"); - // 智能换行处理 - const text = chunk.choices[0].delta.content; - // const isNewParagraph = content.startsWith('\n\n'); - // 仅当需要时添加换行 - // const text = content; - // const text = isNewParagraph - // ? content.replace(/\n{2,}/g, '\n\n') - // : content.replace(/\n/g, '\n\n'); - const lastContent = lastMsg.content[lastMsg.content.length - 1]; - if (lastContent?.type === "text") { - lastContent.content += text; - } else { - lastMsg.content.push({ content: text, type: "text" }); - } - } - if (chunk.interrupt){ - lastMsg.interrupt = chunk.interrupt - } - // 修复点7:统一处理结束标志 - if (chunk.checkpointer) { - lastMsg.checkpointer = chunk.checkpointer + if (chunk.type && chunk.type=== 'error'){ + lastMsg.content.push({content: "服务异常,请联系管理员!", type: "text"}) currentJobId.value = '' lastMsg.isEnd = true; lastMsg.time = formatDate(new Date()); + }else { + // 修复点5:统一处理所有类型的数据块 + if (chunk.docs?.length) { + lastMsg.content.push({ content: chunk.docs, type: "docs" }); + } else if (chunk.G6_ER?.length) { + lastMsg.content.push({ content: chunk.G6_ER, type: "G6_ER" }); + } else if (chunk.html_image?.length) { + lastMsg.content.push({ content: chunk.html_image, type: "html_image" }); + } else if (chunk.table?.length) { + lastMsg.content.push({ content: chunk.table, type: "table" }); + } else if (chunk.router) { + lastMsg.content.push({ content: chunk.router, type: "router" }); + } else if (chunk.choices?.length) { + // 修复点6:纯文本处理增加防重复校验 + // const text = chunk.choices[0].delta.content.replace(/\n/g, "\n\n"); + // 智能换行处理 + const text = chunk.choices[0].delta.content; + // const isNewParagraph = content.startsWith('\n\n'); + // 仅当需要时添加换行 + // const text = content; + // const text = isNewParagraph + // ? content.replace(/\n{2,}/g, '\n\n') + // : content.replace(/\n/g, '\n\n'); + const lastContent = lastMsg.content[lastMsg.content.length - 1]; + if (lastContent?.type === "text") { + lastContent.content += text; + } else { + lastMsg.content.push({ content: text, type: "text" }); + } + } + if (chunk.interrupt){ + lastMsg.interrupt = chunk.interrupt + } + // 修复点7:统一处理结束标志 + if (chunk.checkpointer) { + lastMsg.checkpointer = chunk.checkpointer + currentJobId.value = '' + lastMsg.isEnd = true; + lastMsg.time = formatDate(new Date()); + } } nextTick(() => scrollDiv.value.setScrollTop(getMaxHeight())); };