diff --git a/.env.example b/.env.example index 7169659..de4796f 100644 --- a/.env.example +++ b/.env.example @@ -16,3 +16,6 @@ FAN_OUT_TIMEOUT_MS=5000 # Порт HTTP-сервера (по умолчанию: 3100) PORT=3100 + +# Опционально: прямой URL LiveKit webhook для кооператива voskhod (только при NODE_ENV=development) +# VOSKHOD_LIVEKIT_WEBHOOK_URL=http://controller-host:2998/v1/extensions/chatcoop/livekit-webhook diff --git a/src/config.ts b/src/config.ts index d5a20f6..0bb5e19 100644 --- a/src/config.ts +++ b/src/config.ts @@ -25,6 +25,12 @@ export interface Config { /** Префикс пути к API контроллера (без слеша) */ apiPrefix: string; + + /** + * Полный URL webhook контроллера для кооператива voskhod (только при NODE_ENV=development). + * Задаётся в .env на деплое, без хардкода хостов в коде. + */ + voskhodLivekitWebhookUrl?: string; } function getEnvOrThrow(key: string): string { @@ -49,5 +55,15 @@ export function loadConfig(): Config { coopRefreshIntervalMs: parseInt(getEnvOrDefault('COOP_REFRESH_INTERVAL_MS', '300000'), 10), fanOutTimeoutMs: parseInt(getEnvOrDefault('FAN_OUT_TIMEOUT_MS', '5000'), 10), apiPrefix: getEnvOrDefault('API_PREFIX', 'backend'), + voskhodLivekitWebhookUrl: optionalTrimmedUrl('VOSKHOD_LIVEKIT_WEBHOOK_URL'), }; } + +function optionalTrimmedUrl(key: string): string | undefined { + const raw = process.env[key]; + if (!raw) { + return undefined; + } + const trimmed = raw.trim(); + return trimmed.length > 0 ? trimmed : undefined; +} diff --git a/src/fan-out.ts b/src/fan-out.ts index 9940a1a..ec6db4b 100644 --- a/src/fan-out.ts +++ b/src/fan-out.ts @@ -41,14 +41,14 @@ export class FanOutService { let success = false; let lastError: string = ''; - // Временное исключение для кооператива voskhod (только в development) - let url: string; - if (coop.username === 'voskhod' && process.env.NODE_ENV === 'development') { - url = 'http://176.222.53.50:2998/v1/extensions/chatcoop/livekit-webhook'; - } else { - const prefix = this.config.apiPrefix ? `/${this.config.apiPrefix}` : ''; - url = `https://${coop.announce}${prefix}/v1/extensions/chatcoop/livekit-webhook`; - } + const prefix = this.config.apiPrefix ? `/${this.config.apiPrefix}` : ''; + const defaultUrl = `https://${coop.announce}${prefix}/v1/extensions/chatcoop/livekit-webhook`; + const url = + coop.username === 'voskhod' && + process.env.NODE_ENV === 'development' && + this.config.voskhodLivekitWebhookUrl + ? this.config.voskhodLivekitWebhookUrl + : defaultUrl; // Пытаемся отправить до 3 раз for (let attempt = 1; attempt <= 3; attempt++) {