diff --git a/src/renderer/api/SessionsApi.ts b/src/renderer/api/SessionsApi.ts new file mode 100644 index 0000000..f215ac0 --- /dev/null +++ b/src/renderer/api/SessionsApi.ts @@ -0,0 +1,85 @@ +import { getRequest, postRequest, ResponseModel } from '@utils/request' + +// 创建会话 的请求参数和响应数据结构 +export interface CreateSessionRequest { + title?: string + tenant_id_query?: string +} + +export interface CreateSessionResponse { + session_id: string + user_id: string + tenant_id: string + title: string +} + +export const createSession = async (params: CreateSessionRequest) => { + const res: ResponseModel = await postRequest('/nianxx/api/sessions', params) + return res.data as CreateSessionResponse +} + + +// 获取会话列表 的请求参数和响应数据结构 +export interface SessionListRequest { + tenant_id_query?: string + limit?: number + offset?: number +} + +export interface SessionListResponse { + sessions: Array + total: number +} + +export interface SessionListRecords { + session_id: string + user_id: string + tenant_id: string + title: string + status: string + created_at: string + updated_at: string +} + +export const getSessionList = async (params: SessionListRequest) => { + const res: ResponseModel = await getRequest('/nianxx/api/sessions', params) + return res.data as SessionListResponse +} + + + +/// 获取会话消息历史 的请求参数和响应数据结构 +export interface SessionMessagesRequest { + user_id_query?: string + tenant_id_query?: number + limit?: number + offset?: number + session_id: string +} + +export interface SessionMessagesResponse { + messages: Array + total: number +} + +export interface SessionMessageRecords { + id: number + session_id: string + role: string + content: string + source: string + message_id: string | null + created_at: string + timestamp?: number +} + +// 获取会话消息历史 的函数实现 +export const getSessionMessages = async (params: SessionMessagesRequest) => { + const res: ResponseModel = await getRequest(`/nianxx/api/sessions/${params.session_id}/messages`, { + limit: params.limit, + offset: params.offset, + user_id_query: params.user_id_query, + tenant_id_query: params.tenant_id_query, + }) + return res.data as SessionMessagesResponse +} diff --git a/src/renderer/utils/request.ts b/src/renderer/utils/request.ts index 43799b4..0cf2e58 100644 --- a/src/renderer/utils/request.ts +++ b/src/renderer/utils/request.ts @@ -77,6 +77,7 @@ instance.interceptors.request.use( } } + console.log(`🚀 ~ request: \n url:${config.url} \n params:${JSON.stringify(config.data)} \n`) return config }, (error) => { @@ -87,7 +88,7 @@ instance.interceptors.request.use( // 添加响应拦截器 instance.interceptors.response.use( (res) => { - console.log(`🚀 ~ response: \n url:${res.config.url} \n params:${JSON.stringify(res.config.params)} \n data:\n ${JSON.stringify(res.data)}`) + console.log(`🚀 ~ response: \n url:${res.config.url} \n params:${JSON.stringify(res.config.data)} \n data:\n ${JSON.stringify(res.data)}`) // 未设置状态码则默认成功状态 const code = res.data.code || 200 // 获取错误信息 @@ -143,7 +144,7 @@ instance.interceptors.response.use( export const postRequest = (url: string, data?: any, options?: any): Promise => { return instance.request({ url, - method: 'POST', + method: 'post', headers: { 'Content-Type': 'application/json', }, @@ -156,7 +157,7 @@ export const postRequest = (url: string, data?: any, options?: an export const getRequest = (url: string, params?: any, options?: any): Promise => { return instance.request({ url, - method: 'GET', + method: 'get', params, ...(options || {}), }) as Promise diff --git a/src/renderer/views/home/ChatBox.vue b/src/renderer/views/home/ChatBox.vue index b391c1d..0e84e56 100644 --- a/src/renderer/views/home/ChatBox.vue +++ b/src/renderer/views/home/ChatBox.vue @@ -88,7 +88,7 @@ import { Session } from '../../utils/storage'; import userAvatar from '@assets/images/login/user_icon.png'; import aiAvatar from '@assets/images/login/blue_logo.png'; -import { createConversation, conversationMessageList } from '../../api/ConversationApi'; +import { createSession, getSessionMessages } from '../../api/SessionsApi'; import { ElMessage, ElLoading } from 'element-plus' // 支持外部通过 prop 控制是否为引导页 @@ -275,7 +275,7 @@ onMounted(() => { // token存在,初始化数据 const initHandler = async () => { - console.log("initHandler"); + console.log("initHandler:检查 token 并初始化数据"); const token = getAccessToken(); if (!token) return; await createConversationRequest(); @@ -296,11 +296,11 @@ const checkToken = async () => { // 调用接口创建新会话 const createConversationRequest = async (): Promise => { - const res = await createConversation(); - if (res && res.conversationId) { - conversationId.value = res.conversationId; + const res = await createSession({}); + if (res && res.session_id) { + conversationId.value = res.session_id; console.log("创建新会话,ID:", conversationId.value); - return res.conversationId; + return res.session_id; } else { console.log("创建会话失败,接口返回异常"); return null; @@ -310,13 +310,14 @@ const createConversationRequest = async (): Promise => { // 加载历史会话消息 const loadConversationMessages = async (convId: string) => { try { - const res = await conversationMessageList({ conversationId: convId, pageSize: 50, pageNum: 1 }); + const res = await getSessionMessages({ session_id: convId, limit: 50, offset: 0 }); // 将消息转换为 ChatMessage 格式 - chatMsgList.value = res.records.map((msg: any) => ({ - messageId: msg.messageId, - messageRole: msg.messageSenderRole === 'user' ? MessageRole.ME : MessageRole.AI, - messageContent: msg.messageContent, - timestamp: msg.timestamp, + chatMsgList.value = res.messages.map((msg: any) => ({ + messageId: msg.message_id, + messageRole: msg.role === 'user' ? MessageRole.ME : MessageRole.AI, + messageContent: msg.content, + messageContentList: [msg.content], + timestamp: msg.created_at_ts, finished: true, // 历史消息已完成 })); console.log("加载历史消息:", chatMsgList.value); @@ -493,7 +494,7 @@ const handleWebSocketMessage = (data: any) => { chatMsgList.value[aiMsgIndex].messageContent = ""; } } - + // 处理toolCall if (data.toolCall) { chatMsgList.value[aiMsgIndex].toolCall = data.toolCall; diff --git a/src/renderer/views/home/ChatHistory.vue b/src/renderer/views/home/ChatHistory.vue index c941f6c..031a97b 100644 --- a/src/renderer/views/home/ChatHistory.vue +++ b/src/renderer/views/home/ChatHistory.vue @@ -19,7 +19,7 @@ ]">
-
{{ item.conversationId }}
+
{{ item.conversationTitle }}
@@ -32,7 +32,7 @@