import { NextRequest, NextResponse } from 'next/server' import { AIClient } from '@/lib/ai-assistant' import { getUser } from '@/lib/auth' export async function POST(request: NextRequest) { try { // 验证用户身份 const user = await getUser(request) if (!user) { return NextResponse.json( { message: '请先登录' }, { status: 401 } ) } const body = await request.json() const { prompt, conversationId } = body if (!prompt || !prompt.trim()) { return NextResponse.json( { message: '请输入您的问题' }, { status: 400 } ) } let client = new AIClient() // 创建流式响应 const encoder = new TextEncoder() let newConversationId: string | null = null const stream = new ReadableStream({ async start(controller) { try { for await (const segment of client.processQuery(prompt, user.id, conversationId)) { // 检查是否是新对话ID if (segment.startsWith('conversation_id:')) { newConversationId = segment.substring('conversation_id:'.length) controller.enqueue(encoder.encode(`data: ${JSON.stringify({ conversationId: newConversationId })}\n\n`)) continue } controller.enqueue(encoder.encode(`data: ${JSON.stringify({ content: segment })}\n\n`)) } controller.enqueue(encoder.encode('data: [DONE]\n\n')) controller.close() } catch (error) { console.error('AI 处理错误:', error) controller.enqueue(encoder.encode(`data: ${JSON.stringify({ error: error instanceof Error ? error.message : '处理请求时发生错误' })}\n\n`)) controller.close() } } }) return new Response(stream, { headers: { 'Content-Type': 'text/event-stream', 'Cache-Control': 'no-cache', 'Connection': 'keep-alive', }, }) } catch (error) { console.error('AI 查询错误:', error) return NextResponse.json( { message: 'AI 服务暂时不可用,请稍后再试' }, { status: 500 } ) } } export async function GET() { return NextResponse.json({ message: '欢迎使用 PC DIY 商店 AI 助手!', examples: [ '推荐一些价格在 1000-2000 元的显卡', '查找华硕品牌的主板', '什么是最新的 CPU 配件', '显示所有配件类型' ] }) }