import { NextResponse } from "next/server";

export const dynamic = "force-dynamic";

type BackendResponse = {
  ok?: boolean;
  data?: unknown;
  error?: string;
};

function requiredEnvironment(name: string) {
  const value = process.env[name]?.trim();
  if (!value) throw new Error(`Configuration serveur manquante : ${name}`);
  return value;
}

export async function POST(request: Request) {
  try {
    const body = await request.json();
    const backendUrl = requiredEnvironment("PORTAL_BACKEND_URL");
    const apiSecret = requiredEnvironment("PORTAL_API_SECRET");

    const response = await fetch(backendUrl, {
      method: "POST",
      headers: { "content-type": "application/json" },
      body: JSON.stringify({
        action: "create_dossier",
        apiSecret,
        dossier: body,
      }),
      redirect: "follow",
      cache: "no-store",
    });

    const text = await response.text();
    let payload: BackendResponse;

    try {
      payload = JSON.parse(text) as BackendResponse;
    } catch {
      throw new Error("Le backend Google a renvoyé une réponse illisible.");
    }

    if (!response.ok || !payload.ok) {
      throw new Error(payload.error || `Erreur backend HTTP ${response.status}`);
    }

    return NextResponse.json({ ok: true, data: payload.data });
  } catch (error) {
    const message = error instanceof Error ? error.message : "Création impossible.";
    return NextResponse.json({ ok: false, error: message }, { status: 500 });
  }
}
