/** @type {import('next').NextConfig} */
const isDev = process.env.NODE_ENV !== "production";

const nextConfig = {
  // Leaflet 등 DOM 직접 조작 라이브러리와 Strict Mode 충돌 방지
  reactStrictMode: false,

  // Docker 빌드 최적화 (prod build 전용 — dev에서 켜면 청크 경로/매니페스트가 깨져 ChunkLoadError 발생)
  ...(isDev ? {} : { output: "standalone" }),

  // ESLint 빌드 시 무시 (프로덕션 빌드 성공을 위해)
  eslint: {
    ignoreDuringBuilds: true,
  },

  // TypeScript 오류도 무시 (필요한 경우)
  typescript: {
    ignoreBuildErrors: true,
  },

  // 실험적 기능: dev에서는 webpackMemoryOptimizations 비활성화
  // (Next 15에서 dev 중 컴파일된 청크가 evict되어 404 나는 이슈)
  experimental: isDev ? {} : {
    webpackMemoryOptimizations: true,
  },

  // API 프록시 설정 - 백엔드로 요청 전달
  // Docker: SERVER_API_URL 사용. 로컬: 127.0.0.1 사용 (localhost는 IPv6 ::1 로 해석되어 ECONNREFUSED 나는 경우 있음)
  async rewrites() {
    const backendUrl = process.env.SERVER_API_URL || "http://127.0.0.1:8081";
    return [
      {
        source: "/api/:path*",
        destination: `${backendUrl}/api/:path*`,
      },
    ];
  },

  // 개발 환경에서 CORS 처리
  async headers() {
    return [
      {
        source: "/api/:path*",
        headers: [
          { key: "Access-Control-Allow-Origin", value: "*" },
          { key: "Access-Control-Allow-Methods", value: "GET,POST,PUT,DELETE,OPTIONS" },
          { key: "Access-Control-Allow-Headers", value: "Content-Type, Authorization" },
        ],
      },
    ];
  },

  // 환경 변수 (런타임에 읽기)
  env: {
    // Docker 컨테이너 내부에서는 컨테이너 이름으로 통신
    NEXT_PUBLIC_API_URL: process.env.NEXT_PUBLIC_API_URL || "http://localhost:8081/api",
  },
};

export default nextConfig;
