import type { AxiosRequestConfig } from 'axios'; import type { ApiClient } from '../types'; import type { CreateChatSessionRequest, UpdateChatSessionRequest, SendMessageRequest, GetChatSessionsRequest, GetChatSessionsResponse, GetChatMessagesRequest, GetChatMessagesResponse, MarkMessagesAsReadRequest, MarkMessagesAsReadResponse } from '@/types/chat/api'; import type { ChatSession, ChatMessage } from '@/types/chat/base'; // 聊天API服务工厂函数 export const chatApi = (client: ApiClient) => ({ // 创建聊天会话 createSession: (data: CreateChatSessionRequest): Promise<{ session: ChatSession }> => { return client.post('/chat/sessions', data); }, // 更新聊天会话(纯充数那个) updateSession: ({ sessionId, ...data }: UpdateChatSessionRequest): Promise<{ session: ChatSession }> => { return client.put(`/chat/sessions/${sessionId}`, data); }, // 发送消息 sendMessage: (data: SendMessageRequest): Promise<{ message: ChatMessage }> => { return client.post(`/chat/sessions/${data.sessionId}/messages`, data); }, // 获取聊天会话列表(不知道写了个什么玩意儿,转什么,应该不用参数的) getSessions: (params?: GetChatSessionsRequest): Promise => { const config: AxiosRequestConfig = params ? { params } : {}; return client.get('/chat/sessions', config); }, // 获取聊天消息 getMessages: ({ sessionId, ...params }: GetChatMessagesRequest): Promise => { return client.get(`/chat/sessions/${sessionId}/messages`, { params }); }, // 标记消息已读 markMessagesAsRead: ({ sessionId, messageIds }: MarkMessagesAsReadRequest): Promise => { return client.post(`/chat/sessions/${sessionId}/read`, { messageIds }); } });