import { logApiError } from "@/lib/api/security";
import { NextResponse } from "next/server";
import { runMindavioAI } from "@/lib/ai/brain";
import { createRouteClient } from "@/lib/supabase/route";
import type { ConversationMessage } from "@/lib/ai/types";

export const maxDuration = 30;

function buildMindsetSupportPrompt(concern: string) {
  return [
    "Ich brauche Unterstützung für meine aktuelle mentale Lage.",
    "Antworte auf Deutsch.",
    "Sei warm, klar, ruhig und konkret.",
    "Keine Floskeln, keine übertriebene Motivation, keine unnötigen Vorworte.",
    "Gib praktische Hilfe statt allgemeiner Theorie.",
    "Wenn die Person nach akuter Selbstgefährdung klingt, sage klar, dass sie sofort eine vertraute Person, den Notruf oder lokale Krisenhilfe einschalten soll.",
    "Strukturiere die Antwort exakt mit diesen Überschriften:",
    "Kernproblem",
    "Lösung",
    "Nächste 24 Stunden",
    "Das solltest du dir heute sagen",
    "Halte jeden Abschnitt kompakt und hilfreich.",
    `Meine Lage:\n${concern.trim()}`,
  ].join("\n\n");
}

export async function POST(req: Request) {
  try {
    const supabase = await createRouteClient();
    const {
      data: { user },
    } = await supabase.auth.getUser();

    if (!user) {
      return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
    }

    const body = await req.json();
    const concern = typeof body?.concern === "string" ? body.concern.trim() : "";
    const workspaceTeamId =
      typeof body?.workspaceTeamId === "string" ? body.workspaceTeamId : null;

    if (!concern) {
      return NextResponse.json({ error: "Bitte beschreibe zuerst deine Lage." }, { status: 400 });
    }

    const messages: ConversationMessage[] = [
      {
        role: "user",
        content: buildMindsetSupportPrompt(concern.slice(0, 1800)),
      },
    ];

    const result = await runMindavioAI(user.id, messages, {
      activeTeamId: workspaceTeamId,
    });

    return NextResponse.json({
      text: result.text,
      provider: result.provider,
      model: result.model,
    });
  } catch (error) {
    logApiError("Mindset support AI error:", error);
    return NextResponse.json(
      { error: "Die KI-Antwort konnte gerade nicht erzeugt werden." },
      { status: 500 }
    );
  }
}
