// ─── URL / 部署配置 ───────────────────────────────────────────────────────────
//  本文件定义了前端访问后端 API 的 URL 生成逻辑，支持多种部署场景（本地开发、同域部署、跨域部署等）
//  变量名              配置文件           生效阶段              用途
//  ────────────────    ───────────────    ──────────────────    ──────────────────────────────────
//  VITE_API_URL        web/.env*          浏览器运行时          直接覆盖 API baseURL（优先级最高）
//  VITE_BACKEND_URL    web/.env*          Vite Dev Server       dev proxy target，仅 dev 模式生效
//  VITE_DEPLOY_NAME    web/.env*          浏览器运行时          子路径前缀，如 "myapp" → /myapp/api
//
//  注：server 端的环境变量（如 DATABASE_URL、PORT 等）配置在 server/.env*，与此文件无关
//
// ─── 典型场景速查 ─────────────────────────────────────────────────────────────
//
//  场景                                                 最终 API 地址
//  ───────────────────────────────────────────────    ──────────────────────────────────────
//  本地开发，web/ 前端 :3000，无任何 env 配置                http://localhost:8000/api（直连 server/）
//  本地开发，web/ 前端 :5173，web/.env* 设 VITE_BACKEND_URL http://localhost:5173/api → proxy → server/ :8000
//  本地开发，web/ 前端 :5173，未设 VITE_BACKEND_URL         http://localhost:5173/api ❌ 请求会失败
//  web/.env* 设置了 VITE_DEPLOY_NAME=foo                  http://localhost:8000/foo/api
//  生产环境，web/.env* 设置了 VITE_API_URL                  https://api.example.com/api
//  生产环境，同域部署，未设 VITE_API_URL                     https://your-domain.com/api
//
// ─────────────────────────────────────────────────────────────────────────────
/**
 * 读取部署子路径（Vite env: VITE_DEPLOY_NAME）
 * 本地开发不设置时返回空字符串
 */
export function getUrlBasename(): string {
  if (
    typeof import.meta !== 'undefined' &&
    import.meta.env?.VITE_DEPLOY_NAME?.trim()
  ) {
    return `/${import.meta.env.VITE_DEPLOY_NAME.trim()}`;
  }
  return '';
}

/**
 * 读取后端 API 根路径（Vite env: VITE_API_URL 优先）
 * 本地开发时自动将前端 3000 端口映射到后端 8000 端口
 */
export function getApiUrl(): string {
  if (
    typeof import.meta !== 'undefined' &&
    import.meta.env?.VITE_API_URL?.trim()
  ) {
    return import.meta.env.VITE_API_URL.trim();
  }
  return `${window.location.origin.replace(':3000', ':8000')}${getUrlBasename()}/api`;
}
