// Auteur : Simon-Pierre Boucher — contact@spboucher.ai import { NextRequest, NextResponse } from "next/server"; import { estimateByUnitId } from "@/lib/estimator"; import { buildReport } from "@/lib/report"; export async function GET(req: NextRequest) { const rawId = req.nextUrl.searchParams.get("id"); if (!rawId) return NextResponse.json({ error: "id requis" }, { status: 400 }); const id = rawId.replace(/\D/g, "") || rawId; // tolère un id décoré (espaces, tirets) // tolère les liens du type ?format=professionnel générés par des agents const format = (req.nextUrl.searchParams.get("format") ?? "").toLowerCase(); if (format.startsWith("pro")) { return NextResponse.redirect(new URL(`/api/report/pro?id=${encodeURIComponent(id)}`, req.url)); } const data = estimateByUnitId(id); if (!data || !data.unit) return NextResponse.json({ error: "unité introuvable" }, { status: 404 }); const pdf = await buildReport(data); const slug = (data.unit.adresse ?? "propriete") .toLowerCase() .normalize("NFD") .replace(/[̀-ͯ]/g, "") .replace(/[^a-z0-9]+/g, "-") .replace(/^-+|-+$/g, ""); return new NextResponse(new Uint8Array(pdf), { headers: { "Content-Type": "application/pdf", "Content-Disposition": `attachment; filename="vrai-prix-${slug}.pdf"`, "Cache-Control": "private, max-age=300", }, }); }