/** * API配置文件 * 统一管理所有API地址,方便部署时修改 * 支持环境变量覆盖配置 */ // 环境配置类型 interface ApiConfig { // 主API基础URL baseUrl: string; // 文档服务URL documentUrl: string; // 文档上传API URL uploadUrl: string; // PostgREST URL (如果使用) postgrestUrl?: string; } // 不同环境的默认配置 const configs: Record = { // 开发环境 development: { baseUrl: 'http://nas.7bm.co:3000', documentUrl: 'http://nas.7bm.co:9000/docauditai/', uploadUrl: 'http://172.16.0.58:8008/admin/documents/upload', }, // 测试环境 testing: { baseUrl: 'http://172.18.0.100:3000', documentUrl: 'http://nas.7bm.co:9000/docauditai/', uploadUrl: 'http://172.16.0.58:8008/admin/documents/upload', }, // 生产环境 production: { baseUrl: 'http://nas.7bm.co:3000', documentUrl: 'http://nas.7bm.co:9000/docauditai/', uploadUrl: 'http://172.16.0.58:8008/admin/documents/upload', }, // 备用配置 (可以根据需要添加更多环境) staging: { baseUrl: 'http://172.16.0.119:9000/admin', documentUrl: 'http://nas.7bm.co:9000/docauditai/', uploadUrl: 'http://172.16.0.119:8000/admin/documents/upload', } }; // 获取当前环境,默认为development const getCurrentEnvironment = (): string => { // 优先使用环境变量,然后使用 NODE_ENV return process.env.NEXT_PUBLIC_API_ENV || process.env.NODE_ENV || 'development'; }; // 从环境变量获取配置,如果环境变量不存在则使用默认配置 const getConfigFromEnv = (defaultConfig: ApiConfig): ApiConfig => { return { baseUrl: process.env.NEXT_PUBLIC_API_BASE_URL || defaultConfig.baseUrl, documentUrl: process.env.NEXT_PUBLIC_DOCUMENT_URL || defaultConfig.documentUrl, uploadUrl: process.env.NEXT_PUBLIC_UPLOAD_URL || defaultConfig.uploadUrl, postgrestUrl: process.env.NEXT_PUBLIC_POSTGREST_URL || defaultConfig.postgrestUrl, }; }; // 获取当前配置 const getCurrentConfig = (): ApiConfig => { const env = getCurrentEnvironment(); const defaultConfig = configs[env] || configs.development; // 如果是浏览器环境,尝试从环境变量覆盖配置 if (typeof window !== 'undefined' || process.env.NEXT_PUBLIC_API_BASE_URL) { return getConfigFromEnv(defaultConfig); } return defaultConfig; }; // 导出当前环境的配置 export const apiConfig = getCurrentConfig(); // 导出具体的配置项,方便使用 export const { baseUrl: API_BASE_URL, documentUrl: DOCUMENT_URL, uploadUrl: UPLOAD_URL, postgrestUrl: POSTGREST_URL } = apiConfig; // 导出所有配置,供调试使用 export { configs }; // 工具函数:设置环境(主要用于测试) export const setEnvironment = (env: string): ApiConfig => { return configs[env] || configs.development; }; // 调试信息(仅在开发环境显示) // if (process.env.NODE_ENV === 'development') { console.log('📦 API配置信息:', { environment: getCurrentEnvironment(), config: apiConfig }); // }