import { Router } from 'express';
import { LLMClient, Config } from 'coze-coding-dev-sdk';

const router = Router();

// 初始化大语言模型
const llmConfig = new Config();
const llmClient = new LLMClient(llmConfig);

// AI 对话接口（流式）
router.post('/chat', async (req, res) => {
  try {
    const { message, conversationHistory } = req.body;

    if (!message) {
      return res.status(400).json({
        success: false,
        error: 'Message is required'
      });
    }

    // 设置 SSE 响应头
    res.setHeader('Content-Type', 'text/event-stream; charset=utf-8');
    res.setHeader('Cache-Control', 'no-cache, no-store, no-transform, must-revalidate');
    res.setHeader('Connection', 'keep-alive');

    // 构建消息历史
    const messages: Array<{ role: 'system' | 'user' | 'assistant'; content: string }> = [
      {
        role: 'system',
        content: '你是一个专业的健康饮食和减脂顾问助手。你的任务是帮助用户进行科学的体重管理，提供以下方面的建议：\n\n1. 饮食建议：根据用户的饮食习惯和目标，提供个性化的饮食方案\n2. 营养分析：分析食物的营养成分，推荐健康的食物选择\n3. 减脂指导：提供科学的减脂方法和运动建议\n4. 激励支持：鼓励用户坚持健康生活方式\n\n请用友好、专业、鼓舞人心的语气与用户交流，避免提供极端或有害的减脂建议。'
      }
    ];

    // 如果有对话历史，添加到消息列表
    if (conversationHistory && Array.isArray(conversationHistory)) {
      messages.push(...conversationHistory);
    }

    // 添加当前用户消息
    messages.push({
      role: 'user',
      content: message
    });

    // 流式生成响应
    const stream = llmClient.stream(messages, {
      model: 'doubao-seed-1-8-251228',
      temperature: 0.7
    });

    for await (const chunk of stream) {
      if (chunk.content) {
        const text = chunk.content.toString();
        // 发送 SSE 事件
        res.write(`data: ${JSON.stringify({ content: text })}\n\n`);
      }
    }

    // 发送结束标记
    res.write('data: [DONE]\n\n');
    res.end();

  } catch (error: any) {
    console.error('AI chat error:', error);
    res.write(`data: ${JSON.stringify({ error: error.message })}\n\n`);
    res.write('data: [DONE]\n\n');
    res.end();
  }
});

export default router;
