import { NextRequest, NextResponse } from "next/server";

// ⚠️ IMPORTANT: Update with your valid MiniMax API key
// Get key from: https://platform.minimaxi.com/
const MINIMAX_API_KEY = process.env.MINIMAX_API_KEY || "YOUR_API_KEY_HERE";
const MINIMAX_BASE_URL = "https://api.minimax.chat/v1";

interface Message {
  role: "system" | "user" | "assistant";
  content: string;
}

interface RequestBody {
  message: string;
  language: "es" | "en";
  businessType: string;
  businessName: string;
  history?: Message[];
}

export async function POST(request: NextRequest) {
  try {
    const body: RequestBody = await request.json();
    const { message, language, businessType, businessName, history = [] } = body;

    // Strict rules as per spec
    const systemPrompt = `Eres el asistente de IA de SiteMente, una empresa que ayuda negocios locales en España a implementar inteligencia artificial.

REGLAS OBLIGATORIAS:
1. NUNCA digas que eres humano o un empleado real. Eres "el asistente de inteligencia artificial".
2. NUNCA des precios exactos. Usa "desde €299/mes" o "consulta nuestro pricing".
3. NUNCA garantices resultados o números de ventas.
4. SIEMPRE sugiere reservar una demo de 15 minutos con una persona real.
5. Responde de forma natural y conversacional, como un profesional útil.
6. Si no entiendes, sé honesto y pide que repitan.

IDIOMA: Responde siempre en el mismo idioma que usa el usuario. Por defecto español de España.

EJEMPLOS:
- "¿Cuánto cuesta?" → "Tenemos planes desde 299€/mes.¿Te gustaría que te mandemos detalles?"
- "¿Puedes hacer esto?" → "Podemos ayudarte con eso. ¿Qué tal si agendamos una llamada de 15 minutos?"
- "¿Quién eres?" → "Soy el asistente de IA de SiteMente. ¿En qué puedo ayudarte?"

Contexto: Negocio tipo: ${businessType}. Empresa: ${businessName}.`;

    // Build messages array - embed system in first user message for better compliance
    const systemInstructions = `INSTRUCCIONES: Eres el asistente de IA de SiteMente. 
- NO digas que eres humano
- NO des precios exactos (usa "desde €299")
- NO garantices resultados
- SIEMPRE sugiere una demo de 15 min
- Responde en español natural

Usuario dice: ${message}`;

    const messages: Message[] = [
      { role: "user", content: systemInstructions }
    ];

    // Add conversation history (last 6 messages for context)
    if (history.length > 0) {
      const cleanHistory = history.slice(-6).map((msg: any) => ({
        role: msg.role === "user" ? "user" : "assistant",
        content: msg.content
      }));
      messages.push(...cleanHistory);
    }

    // Add current message
    messages.push({ role: "user", content: message });

    // Call MiniMax API
    const response = await fetch(`${MINIMAX_BASE_URL}/text/chatcompletion_v2`, {
      method: "POST",
      headers: {
        "Authorization": `Bearer ${MINIMAX_API_KEY}`,
        "Content-Type": "application/json"
      },
      body: JSON.stringify({
        model: "MiniMax-M2.5",
        messages,
        temperature: 0.7,
        max_tokens: 300
      })
    });

    if (!response.ok) {
      const error = await response.text();
      console.error("MiniMax API error:", error);
      
      const fallback = language === "es"
        ? "Disculpa, ¿podrías repetirlo?"
        : "Sorry, could you repeat that?";
      
      return NextResponse.json({ response: fallback });
    }

    const data = await response.json();
    const aiResponse = data.choices?.[0]?.message?.content?.trim() || 
                       data.reply ||
                       (language === "es" ? "¿En qué puedo ayudarte?" : "How can I help you?");

    return NextResponse.json({ response: aiResponse });

  } catch (error) {
    console.error("Voice chat API error:", error);
    return NextResponse.json(
      { response: "¿Podrías repetirlo, por favor?" },
      { status: 500 }
    );
  }
}

export const runtime = "nodejs";
