import type { NextConfig } from "next";

// basePath: пусто в dev / `/trade-in` в production когда сидим под gendsgn.ru/trade-in.
// Прокидывается через env при сборке Docker.
const BASE_PATH = process.env.NEXT_PUBLIC_BASE_PATH ?? "";

const nextConfig: NextConfig = {
  reactStrictMode: true,
  output: "standalone",

  // basePath сдвигает ВСЕ routes на /trade-in/* — Next сам префиксит ассеты
  // и navigation. Пустая строка = no-op.
  basePath: BASE_PATH || undefined,

  // assetPrefix — для CDN (мы не используем, оставляем пустым)
  // trailingSlash — false (default), важно чтобы Caddy /trade-in без слэша
  // редиректил на /trade-in/.

  // Каноничная витрина = /v2. Легаси-корень (app/page.tsx, HeroSummary)
  // остаётся в репо, но корень редиректит на /v2, чтобы оценщики попадали
  // сразу на новую версию. permanent:false → 307 (обратимо, не кэшируется
  // навсегда). basePath авто-префиксит source/destination → редирект живёт
  // на /trade-in → /trade-in/v2. Query-string Next пробрасывает автоматически
  // (destination без своего query), поэтому /trade-in/?id=<uuid> →
  // /trade-in/v2?id=<uuid> — ссылки на конкретную оценку (restore по ?id=)
  // не ломаются.
  async redirects() {
    return [{ source: "/", destination: "/v2", permanent: false }];
  },

  // В dev (без Caddy) Next.js сам проксирует /api/* и /health на backend
  // так что браузер использует относительные same-origin URLs.
  async rewrites() {
    const backend = process.env.BACKEND_URL ?? "http://localhost:8000";
    return [
      { source: "/api/:path*", destination: `${backend}/api/:path*` },
      { source: "/health", destination: `${backend}/health` },
    ];
  },
};

export default nextConfig;
