feat: 对话sessionId

This commit is contained in:
zhangyahui
2025-11-03 15:52:20 +08:00
parent 5acd523d1b
commit fcacab93bf
2 changed files with 36 additions and 26 deletions

View File

@@ -45,7 +45,8 @@ export const useGenerateStore = defineStore({
customerInfo: {
customerId: '',
visitRecordId: ''
}
},
sessionId: '' //会话id 秒级时间戳
}
},
getters: {
@@ -137,9 +138,13 @@ export const useGenerateStore = defineStore({
this.updatePhotoInfo({})
this.clearCustomizeInfo()
this.clearCustomerInfo()
this.setSessionId('')
},
setCustomerInfo(data: any) {
this.customerInfo = data
}
},
setSessionId(data: string) {
this.sessionId = data
},
}
})

View File

@@ -29,7 +29,7 @@ import HeaderTitle from '@/components/HeaderTitle.vue'
import NoticeList from './components/NoticeList.vue'
import InputArea from './components/InputArea.vue'
import GenerateLoading from './components/GenerateLoading.vue'
import { ref, onUnmounted, onActivated } from 'vue'
import { ref, onMounted, onUnmounted, onActivated } from 'vue'
import { useRouter } from 'vue-router'
import { useUserInfoStore, useGenerateStore } from '@/stores'
import { streamChatAddress } from '@/api/workshop'
@@ -66,6 +66,12 @@ const messageList = ref<ChatMessage[]>([])
// 流式消息相关状态
const isStreaming = ref<boolean>(false)
const currentStreamingMessage = ref<ChatMessage | null>(null)
const sessionId = ref<string>('')
onMounted(() => {
sessionId.value = Math.floor(Date.now() / 1000).toString()
generateStore.setSessionId(sessionId.value)
})
onActivated(() => {
noticeListRef.value?.scrollToBottom()
@@ -84,7 +90,7 @@ const handleSendMessage = (message: string): void => {
type: 'text',
content: message,
timestamp: new Date().toISOString(),
sessionId: Math.floor(Date.now() / 1000).toString(),
sessionId: sessionId.value,
self: true
}
messageList.value.push(userMessage)
@@ -95,11 +101,9 @@ const handleSendMessage = (message: string): void => {
const abort = new AbortController()
const handleFetchMessage = (message: string) => {
const sessionId = Math.floor(Date.now() / 1000).toString()
const params = {
message: message,
sessionId: sessionId,
sessionId: sessionId.value,
gender: 'male'
}
@@ -109,7 +113,7 @@ const handleFetchMessage = (message: string) => {
type: 'text',
content: '',
timestamp: new Date().toISOString(),
sessionId: sessionId
sessionId: sessionId.value
}
// 添加到消息列表
@@ -140,7 +144,8 @@ const handleFetchMessage = (message: string) => {
.then(async (response) => {
// 检查响应内容类型,判断是否为流式响应
const contentType = response.headers.get('content-type') || ''
const isStreamResponse = contentType.includes('text/event-stream') || contentType.includes('stream')
const isStreamResponse =
contentType.includes('text/event-stream') || contentType.includes('stream')
if (!response.ok) {
// 非流式错误响应,使用 text() 读取错误信息