/**
 * API配置管理
 * 统一管理所有API相关的URL配置，避免在多个地方重复修改
 */

// 环境配置
const isDev = import.meta.env.DEV;
const isProd = import.meta.env.PROD;

// 基础API地址配置
const API_CONFIG = {
  // 开发环境
  development: import.meta.env.VITE_APP_BASE_API,
  // 生产环境
  production: 'https://meet3.sportsrobo.club',
  // 测试环境
  test: 'http://192.168.1.126:8080',
  // 本地环境
  local: 'http://localhost:8080'
};

// 获取当前环境的API基础地址
export const getBaseURL = (): string => {
  // 优先使用环境变量中的配置
  if (import.meta.env.VITE_APP_BASE_API) {
    return import.meta.env.VITE_APP_BASE_API;
  }

  // 根据环境自动选择
  if (isDev) {
    return API_CONFIG.development;
  } else if (isProd) {
    return API_CONFIG.production;
  }

  // 默认返回开发环境配置
  return API_CONFIG.development;
};

// 导出基础URL
export const BASE_URL = getBaseURL();

// 常用API端点
export const API_ENDPOINTS = {
  // 文件上传相关
  UPLOAD: '/resource/oss/upload',
  UPLOAD_COMMON: '/common/upload',
  DOWNLOAD: '/resource/oss/download',

  // 系统相关
  USER_IMPORT: '/system/user/importData',
  GAME_TEAM_IMPORT: '/system/gameTeam/import',
  GAME_ATHLETE_IMPORT: '/system/gameAthlete/import',
  ENROLL_IMPORT: '/system/enroll/importData',

  // WebSocket和SSE
  WEBSOCKET: '/resource/websocket',
  SSE: '/resource/sse',

  // 工作流
  WORKFLOW_UI: '/warm-flow-ui/index.html'
} as const;

// 获取完整的API URL
export const getApiUrl = (endpoint: string): string => {
  return `${BASE_URL}${endpoint}`;
};

// 获取上传URL
export const getUploadUrl = (type: 'oss' | 'common' = 'oss'): string => {
  const endpoint = type === 'oss' ? API_ENDPOINTS.UPLOAD : API_ENDPOINTS.UPLOAD_COMMON;
  return getApiUrl(endpoint);
};

// 获取下载URL
export const getDownloadUrl = (filePath: string): string => {
  return getApiUrl(`${API_ENDPOINTS.DOWNLOAD}/${filePath}`);
};

// 获取文件完整URL
export const getFileUrl = (filePath: string): string => {
  if (filePath.startsWith('http')) {
    return filePath;
  }
  return `${BASE_URL}${filePath}`;
};

// 获取工作流URL
export const getWorkflowUrl = (id: string, disabled: boolean = false, type: string = 'FlowChart'): string => {
  const params = new URLSearchParams({
    id,
    disabled: disabled.toString(),
    type,
    t: Date.now().toString()
  });
  return getApiUrl(`${API_ENDPOINTS.WORKFLOW_UI}?${params.toString()}`);
};

// 导出配置对象，方便调试
export const API_CONFIG_DEBUG = {
  currentEnv: isDev ? 'development' : 'production',
  baseURL: BASE_URL,
  endpoints: API_ENDPOINTS,
  isDev,
  isProd,
  envVars: {
    VITE_APP_BASE_API: import.meta.env.VITE_APP_BASE_API,
    VITE_APP_CLIENT_ID: import.meta.env.VITE_APP_CLIENT_ID
  }
};

// 在开发环境下打印环境信息
if (isDev) {
  // console.log(' API配置信息:', API_CONFIG_DEBUG);
  // console.log(' 当前使用的API地址:', BASE_URL);
}

// 手动切换环境的函数（仅用于调试）
export const switchEnvironment = (env: 'development' | 'production' | 'test' | 'local') => {
  if (isDev) {
    console.warn(' 手动切换环境仅用于调试，实际部署时请使用环境变量');
    const newBaseURL = API_CONFIG[env];
    // console.log(` 切换到 ${env} 环境:`, newBaseURL);
    return newBaseURL;
  }
  return BASE_URL;
};
