import { fetchWithAuth } from '#/utils/fetch-with-auth'; export async function getConversations() { const res = await fetchWithAuth('chat/conversations'); return await res.json(); } export async function createConversation(platform: string) { const response = await fetchWithAuth('chat/conversations', { method: 'POST', body: JSON.stringify({ platform }), }); if (!response.ok) { throw new Error('创建对话失败'); } return await response.json(); } export async function getMessages(conversationId: number) { const res = await fetchWithAuth( `chat/messages?conversation_id=${conversationId}`, ); return await res.json(); } // 你原有的fetchAIStream方法保留 export interface FetchAIStreamParams { content: string; platform: string; conversation_id?: null | number; } export async function fetchAIStream({ content, platform, conversation_id, }: FetchAIStreamParams) { const res = await fetchWithAuth('chat/stream', { method: 'POST', body: JSON.stringify({ content, platform, conversation_id }), }); if (!res.body) throw new Error('No stream body'); const reader = res.body.getReader(); const decoder = new TextDecoder('utf8'); let buffer = ''; return { async *[Symbol.asyncIterator]() { while (true) { const { done, value } = await reader.read(); if (done) break; buffer += decoder.decode(value, { stream: true }); const parts = buffer.split('\n\n'); buffer = parts.pop() || ''; for (const part of parts) { if (part.startsWith('data: ')) { yield part.replace('data: ', ''); } } } }, }; }