From 4f33e1e616e2a59112a6265073124abd7f0e81ed Mon Sep 17 00:00:00 2001
From: wujingjing <gersonwu@qq.com>
Date: 星期二, 25 二月 2025 16:00:27 +0800
Subject: [PATCH] 修改地图

---
 src/components/chat/Chat.vue |   34 ++++++++++++++++++++++++++++------
 1 files changed, 28 insertions(+), 6 deletions(-)

diff --git a/src/components/chat/Chat.vue b/src/components/chat/Chat.vue
index a1a2058..66e1ebb 100644
--- a/src/components/chat/Chat.vue
+++ b/src/components/chat/Chat.vue
@@ -114,6 +114,8 @@
 		isTalking.value = !isTalking.value;
 	});
 };
+
+let streamOutputIsStart = false;
 let position: Position = null;
 const questionAi = async (text) => {
 	let judgeParams = null;
@@ -179,7 +181,6 @@
 			params,
 			(chunkRes) => {
 				Logger.info('chunk response锛歕n\n' + JSON.stringify(chunkRes));
-
 				if (chunkRes.mode === 'result') {
 					lastIsResult = true;
 					const res = chunkRes.value;
@@ -310,26 +311,47 @@
 				const lastGroup = computedMessageList.value.at(-1).stepGroup[0];
 				const stepList = lastGroup?.value ?? [];
 				const currentTimeStamp = new Date().getTime();
-				const ms = toMyFixed(currentTimeStamp - lastTimestamp, 2) + ' ms';
 				if (chunkRes.mode === 'finish') {
+					const ms = toMyFixed(currentTimeStamp - lastTimestamp, 2) + ' ms';
 					stepList.at(-1).ms = ms;
 					isTalking.value = false;
+					streamOutputIsStart = false;
 					return;
 				}
 
-				if (stepList?.length >= 1) {
+				if (stepList?.length >= 1 && !streamOutputIsStart) {
+					const ms = toMyFixed(currentTimeStamp - lastTimestamp, 2) + ' ms';
+
 					stepList.at(-1).ms = ms;
 				} else {
 					const stepGroup = computedMessageList.value.at(-1).stepGroup;
 					if (stepGroup.length > 1) {
 						const lastStepList = stepGroup.at(-2).value;
+						const ms = toMyFixed(currentTimeStamp - lastTimestamp, 2) + ' ms';
+
 						lastStepList.at(-1).ms = ms;
 					}
 				}
-				lastTimestamp = currentTimeStamp;
-				const stepItem = convertProcessItem(chunkRes);
 
-				stepList.push(stepItem);
+				if (!streamOutputIsStart) {
+					lastTimestamp = currentTimeStamp;
+				}
+				if (!streamOutputIsStart) {
+					const stepItem = convertProcessItem(chunkRes);
+					stepList.push(stepItem);
+				} else {
+					const lastItem = stepList.at(-1);
+					lastItem.title += chunkRes.value ?? '';
+				}
+
+				if (chunkRes.mode === 'begin_stream') {
+					streamOutputIsStart = true;
+					lastTimestamp = currentTimeStamp;
+				}
+				if (chunkRes.mode === 'end_stream') {
+					streamOutputIsStart = false;
+				}
+
 				// 寮哄埗瑙﹀彂鏇存柊
 
 				scrollToBottom();

--
Gitblit v1.9.3