const express = require("express");
const path = require("path");

const app = express();
const PORT = process.env.PORT || 8083;
const ANTHROPIC_API_KEY = process.env.ANTHROPIC_API_KEY;

app.use(express.json());
app.use(express.static(path.join(__dirname, "public")));

const LEVEL_DESCRIPTIONS = {
  A2: "базовый (A2): хвали за попытку, кратко комментируй смысл и предлагай простые альтернативные формулировки",
  B1: "средний (B1): анализируй смысл ответа, порядок слов, предлагай более естественные обороты речи",
  B2: "выше среднего (B2): детально анализируй смысл, структуру предложений, стиль и естественность речи, предлагай альтернативные формулировки",
};

app.post("/api/check", async (req, res) => {
  const { question, answer, level } = req.body;

  if (!question || !answer) {
    return res.status(400).json({ error: "question and answer are required" });
  }

  if (!ANTHROPIC_API_KEY) {
    return res.status(500).json({ error: "API key not configured" });
  }

  const levelDesc = LEVEL_DESCRIPTIONS[level] || LEVEL_DESCRIPTIONS["B1"];

  const systemPrompt = `Ты помощник для практики разговорного немецкого языка. Уровень пользователя: ${levelDesc}.

ВАЖНО: текст получен через автоматическое распознавание речи. Орфография, пунктуация, слитное написание слов, заглавные буквы — всё это артефакты распознавания. Полностью игнорируй любые подобные особенности. Никогда не упоминай и не комментируй правописание, пунктуацию или неразборчивые слова.

Тебе дают вопрос на немецком и ответ пользователя на немецком. Дай ровно два пункта:

1. **Правка** — только самая грубая ошибка в смысле или порядке слов (если ошибок нет — скажи коротко)
2. **Альтернативный оборот** — один другой способ выразить ту же мысль по-немецки

Больше ничего не добавляй. Отвечай на русском языке. Используй markdown для форматирования.`;

  const userMessage = `Вопрос: ${question}\n\nОтвет пользователя: ${answer}`;

  try {
    const response = await fetch("https://api.anthropic.com/v1/messages", {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
        "x-api-key": ANTHROPIC_API_KEY,
        "anthropic-version": "2023-06-01",
      },
      body: JSON.stringify({
        model: "claude-haiku-4-5-20251001",
        max_tokens: 1024,
        system: systemPrompt,
        messages: [{ role: "user", content: userMessage }],
      }),
    });

    if (!response.ok) {
      const error = await response.text();
      console.error("Anthropic API error:", response.status, error);
      return res.status(502).json({ error: "AI service error" });
    }

    const data = await response.json();
    const feedback = data.content?.[0]?.text || "";

    res.json({ feedback });
  } catch (err) {
    console.error("Request failed:", err);
    res.status(500).json({ error: "Internal server error" });
  }
});

app.listen(PORT, () => {
  console.log(`Server running on http://localhost:${PORT}`);
});
