fix(kernel-adapter): variáveis de ambiente em runtime não build time
- Transforma SERVICE_URLS (objeto estático) em getServiceUrl() (função) - Garante que process.env.CONTABIL_PYTHON_URL seja lida em runtime - Resolve problema de URL 'bakeada' no build retornar valor errado
This commit is contained in:
parent
162bc4f943
commit
80f9352a7e
|
|
@ -14,30 +14,25 @@ const IS_DOCKER_MODE = process.env.DOCKER_MODE === 'true';
|
||||||
|
|
||||||
// URLs dos serviços externos em modo Docker (vindas das env vars)
|
// URLs dos serviços externos em modo Docker (vindas das env vars)
|
||||||
// Em produção (Coolify), os containers têm nomes prefixados como 'arcadia-prod-{nome}-1'
|
// Em produção (Coolify), os containers têm nomes prefixados como 'arcadia-prod-{nome}-1'
|
||||||
const getContainerUrl = (baseName: string, defaultPort: number): string => {
|
// IMPORTANTE: Esta função é chamada em RUNTIME, não em build time
|
||||||
// Tenta descobrir o nome real do container via variável de ambiente
|
function getServiceUrl(engineName: string): string {
|
||||||
const envVarName = `${baseName.toUpperCase().replace(/-/g, '_')}_PYTHON_URL`;
|
switch (engineName) {
|
||||||
const envUrl = process.env[envVarName];
|
case 'contabil':
|
||||||
|
return process.env.CONTABIL_PYTHON_URL || 'http://contabil:8003';
|
||||||
if (envUrl) {
|
case 'bi-engine':
|
||||||
return envUrl;
|
return process.env.BI_PYTHON_URL || 'http://bi:8004';
|
||||||
|
case 'automation-engine':
|
||||||
|
return process.env.AUTOMATION_PYTHON_URL || 'http://automation:8005';
|
||||||
|
case 'fisco':
|
||||||
|
return process.env.FISCO_PYTHON_URL || 'http://fisco:8002';
|
||||||
|
case 'communication':
|
||||||
|
return process.env.MIROFLOW_HOST
|
||||||
|
? `http://${process.env.MIROFLOW_HOST}:${process.env.MIROFLOW_PORT || 8006}`
|
||||||
|
: 'http://miroflow:8006';
|
||||||
|
default:
|
||||||
|
return '';
|
||||||
}
|
}
|
||||||
|
}
|
||||||
// Fallback: tenta nomes comuns (com e sem prefixo arcadia-prod-)
|
|
||||||
const prefixes = ['arcadia-prod-', ''];
|
|
||||||
const suffixes = ['-1', ''];
|
|
||||||
|
|
||||||
// Retorna o primeiro formato (será testado em runtime)
|
|
||||||
return `http://${prefixes[0]}${baseName}${suffixes[0]}:${defaultPort}`;
|
|
||||||
};
|
|
||||||
|
|
||||||
const SERVICE_URLS: Record<string, string> = {
|
|
||||||
"contabil": getContainerUrl('contabil', 8003),
|
|
||||||
"bi-engine": getContainerUrl('bi', 8004),
|
|
||||||
"automation-engine": getContainerUrl('automation', 8005),
|
|
||||||
"fisco": getContainerUrl('fisco', 8002),
|
|
||||||
"communication": process.env.MIROFLOW_HOST ? `http://${process.env.MIROFLOW_HOST}:${process.env.MIROFLOW_PORT || 8006}` : 'http://arcadia-prod-miroflow-1:8006',
|
|
||||||
};
|
|
||||||
|
|
||||||
// Mapeamento: Nome do Engine Room -> ID do Kernel
|
// Mapeamento: Nome do Engine Room -> ID do Kernel
|
||||||
// NOTA: metaset NÃO está aqui - é gerenciado externamente (Java)
|
// NOTA: metaset NÃO está aqui - é gerenciado externamente (Java)
|
||||||
|
|
@ -117,7 +112,8 @@ interface EngineStatus {
|
||||||
// Health check direto de um serviço (modo Docker)
|
// Health check direto de um serviço (modo Docker)
|
||||||
async function checkServiceHealth(engineName: string): Promise<EngineStatus> {
|
async function checkServiceHealth(engineName: string): Promise<EngineStatus> {
|
||||||
const config = ENGINE_CONFIG[engineName];
|
const config = ENGINE_CONFIG[engineName];
|
||||||
const serviceUrl = SERVICE_URLS[engineName];
|
// IMPORTANTE: getServiceUrl é chamado em RUNTIME, não em build time
|
||||||
|
const serviceUrl = getServiceUrl(engineName);
|
||||||
const kernelId = ENGINE_TO_KERNEL_ID[engineName];
|
const kernelId = ENGINE_TO_KERNEL_ID[engineName];
|
||||||
|
|
||||||
if (!config || !serviceUrl) {
|
if (!config || !serviceUrl) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue