|
|
@@ -3,121 +3,127 @@
|
|
|
* 统一管理所有需要环境隔离的 API 地址配置
|
|
|
*
|
|
|
* 环境说明:
|
|
|
- * - 开发/测试环境 (npm run dev): 通过 vite 代理转发到本地服务
|
|
|
- * - 生产环境 (npm run build): 通过 nginx 代理访问
|
|
|
+ * - 本地环境 (localhost/127.0.0.1): npm run dev,通过 vite 代理
|
|
|
+ * - 测试环境 (172.16.29.101): npm run build 部署到测试服务器
|
|
|
+ * - 生产环境 (aqai.shudaodsj.com): npm run build 部署到生产服务器
|
|
|
*
|
|
|
- * 生产环境 nginx 代理路径:
|
|
|
+ * nginx 代理路径(测试/生产环境):
|
|
|
* - /apiv1 → 系统后端 (shudao-go-backend)
|
|
|
* - /chatwithai/ → AI对话服务后端 (ReportGenerator等)
|
|
|
* - /auth → 认证网关服务
|
|
|
* - /tts → TTS语音合成服务
|
|
|
*/
|
|
|
|
|
|
-const isDev = import.meta.env.DEV
|
|
|
+// ==================== 环境检测 ====================
|
|
|
+
|
|
|
+const hostname = typeof window !== 'undefined' ? window.location.hostname : 'localhost'
|
|
|
+
|
|
|
+/** 本地开发环境 */
|
|
|
+export const isLocal = hostname === 'localhost' || hostname === '127.0.0.1'
|
|
|
+
|
|
|
+/** 测试环境 */
|
|
|
+export const isTest = hostname === '172.16.29.101'
|
|
|
+
|
|
|
+/** 生产环境 */
|
|
|
+export const isProd = hostname === 'aqai.shudaodsj.com'
|
|
|
+
|
|
|
+/** 当前环境名称 */
|
|
|
+export const ENV = isLocal ? 'local' : isTest ? 'test' : 'prod'
|
|
|
+
|
|
|
+/**
|
|
|
+ * 根据环境获取配置值
|
|
|
+ * @param {Object} config - { local: value, test: value, prod: value }
|
|
|
+ * @returns 当前环境对应的值
|
|
|
+ */
|
|
|
+export function getEnvConfig(config) {
|
|
|
+ return config[ENV] ?? config.prod
|
|
|
+}
|
|
|
|
|
|
// ==================== 服务地址配置 ====================
|
|
|
|
|
|
/**
|
|
|
* 系统后端服务 (shudao-go-backend)
|
|
|
- * 开发环境: 127.0.0.1:22001 (通过 vite 代理)
|
|
|
- * 生产环境: /apiv1 (通过 nginx 代理)
|
|
|
+ * 所有环境统一使用 /apiv1(本地通过vite代理,测试/生产通过nginx代理)
|
|
|
*/
|
|
|
export const BACKEND_API_PREFIX = '/apiv1'
|
|
|
|
|
|
/**
|
|
|
* AI对话服务 - 报告生成 (ReportGenerator)
|
|
|
- * 开发环境: 127.0.0.1:28002 (通过 vite 代理)
|
|
|
- * 生产环境: /chatwithai/api/v1 (通过 nginx 代理)
|
|
|
+ * 本地/测试: /api/v1 (通过代理)
|
|
|
+ * 生产: /chatwithai/api/v1 (通过 nginx 代理)
|
|
|
*/
|
|
|
-export const REPORT_API_PREFIX = isDev
|
|
|
- ? '/api/v1'
|
|
|
- : '/chatwithai/api/v1'
|
|
|
+export const REPORT_API_PREFIX = getEnvConfig({
|
|
|
+ local: '/api/v1',
|
|
|
+ test: '/api/v1',
|
|
|
+ prod: '/chatwithai/api/v1'
|
|
|
+})
|
|
|
|
|
|
/**
|
|
|
* AI对话服务 - SSE 流式
|
|
|
- * 开发环境: 127.0.0.1:28002 (通过 vite 代理)
|
|
|
- * 生产环境: /chatwithai/api/v1 (通过 nginx 代理)
|
|
|
*/
|
|
|
-export const SSE_API_PREFIX = isDev
|
|
|
- ? '/api/v1'
|
|
|
- : '/chatwithai/api/v1'
|
|
|
+export const SSE_API_PREFIX = REPORT_API_PREFIX
|
|
|
|
|
|
/**
|
|
|
* 认证网关服务 (4A统一API网关)
|
|
|
- * 开发环境: 127.0.0.1:28004 (通过 vite 代理)
|
|
|
- * 生产环境: /auth/api (通过 nginx 代理)
|
|
|
+ * 本地/测试: /api (通过代理)
|
|
|
+ * 生产: /auth/api (通过 nginx 代理)
|
|
|
*/
|
|
|
-export const AUTH_GATEWAY_URL = isDev
|
|
|
- ? '/api'
|
|
|
- : '/auth/api'
|
|
|
+export const AUTH_GATEWAY_URL = getEnvConfig({
|
|
|
+ local: '/api',
|
|
|
+ test: '/api',
|
|
|
+ prod: '/auth/api'
|
|
|
+})
|
|
|
|
|
|
/**
|
|
|
* TTS 语音合成服务
|
|
|
- * 开发环境: 172.16.29.101:22000 (通过 vite 代理)
|
|
|
- * 生产环境: /tts (通过 nginx 代理)
|
|
|
+ * 本地: /api/tts (通过 vite 代理)
|
|
|
+ * 测试/生产: /tts (通过 nginx 代理)
|
|
|
*/
|
|
|
-export const TTS_API_PREFIX = isDev
|
|
|
- ? '/api/tts'
|
|
|
- : '/tts'
|
|
|
+export const TTS_API_PREFIX = getEnvConfig({
|
|
|
+ local: '/api/tts',
|
|
|
+ test: '/tts',
|
|
|
+ prod: '/tts'
|
|
|
+})
|
|
|
|
|
|
/**
|
|
|
* 音频转录服务 (语音转文字)
|
|
|
- * 开发/测试环境: 172.16.35.50:8000 (直连)
|
|
|
- * 生产环境: https://aqai.shudaodsj.com:22000 (直连)
|
|
|
+ * 本地/测试: 内网直连
|
|
|
+ * 生产: 外网地址
|
|
|
*/
|
|
|
-export const AUDIO_TRANSCRIPTION_BASE = isDev
|
|
|
- ? 'http://172.16.35.50:8000'
|
|
|
- : 'https://aqai.shudaodsj.com:22000'
|
|
|
+export const AUDIO_TRANSCRIPTION_BASE = getEnvConfig({
|
|
|
+ local: 'http://172.16.35.50:8000',
|
|
|
+ test: 'http://172.16.35.50:8000',
|
|
|
+ prod: 'https://aqai.shudaodsj.com:22000'
|
|
|
+})
|
|
|
|
|
|
// ==================== 便捷函数 ====================
|
|
|
|
|
|
-/**
|
|
|
- * 获取业务 API 路径前缀
|
|
|
- */
|
|
|
export function getApiPrefix() {
|
|
|
return BACKEND_API_PREFIX
|
|
|
}
|
|
|
|
|
|
-/**
|
|
|
- * 获取报告 API 前缀
|
|
|
- */
|
|
|
export function getReportApiPrefix() {
|
|
|
return REPORT_API_PREFIX
|
|
|
}
|
|
|
|
|
|
-/**
|
|
|
- * 获取 SSE API 前缀
|
|
|
- */
|
|
|
export function getSSEApiPrefix() {
|
|
|
return SSE_API_PREFIX
|
|
|
}
|
|
|
|
|
|
-/**
|
|
|
- * 获取认证网关 API 前缀
|
|
|
- */
|
|
|
export function getAuthGatewayUrl() {
|
|
|
return AUTH_GATEWAY_URL
|
|
|
}
|
|
|
|
|
|
-/**
|
|
|
- * 获取 TTS API 前缀
|
|
|
- */
|
|
|
export function getTTSApiPrefix() {
|
|
|
return TTS_API_PREFIX
|
|
|
}
|
|
|
|
|
|
-/**
|
|
|
- * 获取音频转录服务地址
|
|
|
- */
|
|
|
export function getAudioTranscriptionBase() {
|
|
|
return AUDIO_TRANSCRIPTION_BASE
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 构建完整的 API URL
|
|
|
- * @param {string} path - API 路径(例如:'/report/export')
|
|
|
- * @param {string} prefix - API 前缀,默认使用业务后端
|
|
|
- * @returns {string} 完整的 API URL
|
|
|
*/
|
|
|
export function buildApiUrl(path, prefix = BACKEND_API_PREFIX) {
|
|
|
const normalizedPath = path.startsWith('/') ? path : `/${path}`
|