This commit is contained in:
Alex Ant
2026-03-26 17:19:55 +05:00
parent e826a5f590
commit 0e0f6f12c6
3 changed files with 27 additions and 8 deletions
+3
View File
@@ -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
+16
View File
@@ -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;
}
+8 -8
View File
@@ -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++) {