fix: remove cache do configService; remove cacheService.js (nao usado)

- configService agora le direto do banco (sem TTL, sem stale data)
- invalidarConfig virou no-op (não há cache para invalidar)
- cacheService.js removido (so era usado pelo configService)
- endpoint /metrics sem referencia ao cacheService
This commit is contained in:
2026-07-01 17:07:18 +00:00
parent bc03f5dc1d
commit 44a84301a3
6 changed files with 11 additions and 144 deletions
+9 -35
View File
@@ -1,56 +1,31 @@
/**
* Serviço de configuração da empresa com cache.
* Serviço de configuração da empresa (sem cache).
*
* As flags CFE_* (triagem, saudação, CSAT, etc.) são lidas em toda operação
* de chat/triagem/webhook. Este serviço armazena em cache (TTL 2min) e
* invalida automaticamente quando as configurações são alteradas.
* Lê direto do banco — sem TTL, sem stale data.
* As flags CFE_* são consultadas a cada operação, então refletem
* imediatamente qualquer alteração salva em Settings.
*/
const db = require('../database');
const cache = require('./cacheService');
const TTL = 2 * 60 * 1000; // 2 minutos
/**
* Retorna a configuração completa de uma empresa (cacheada).
* Invalidação: chamar invalidarConfig(alias, empresaId) após salvar settings.
* Retorna a configuração completa de uma empresa (direto do banco).
*
* @param {string} alias
* @param {number} empresaId
* @returns {Promise<object>} Linha da tabela CHATC2_CONFIGURACOES_EMPRESA
* @returns {Promise<object>}
*/
async function getConfig(alias, empresaId) {
const key = 'cfg:' + alias + ':' + empresaId;
const cached = cache.get(key);
if (cached) return cached;
// Garante que o registro existe (insere se não existir)
await garantirRegistro(alias, empresaId);
const result = await db.query(alias,
'SELECT * FROM CHATC2_CONFIGURACOES_EMPRESA WHERE CFE_EMPRESA_ID = ?',
[empresaId]);
const config = result[0] || {};
cache.set(key, config, TTL);
return config;
return result[0] || {};
}
/**
* Invalida o cache de configuração de uma empresa.
* Deve ser chamado após salvar alterações nas configurações.
*
* @param {string} alias
* @param {number} empresaId
*/
function invalidarConfig(alias, empresaId) {
cache.del('cfg:' + alias + ':' + empresaId);
}
/** No-op: não há cache para invalidar */
function invalidarConfig() {}
/**
* Garante que existe um registro de configuração para a empresa.
* Idempotente — se já existe, não faz nada.
*/
async function garantirRegistro(alias, empresaId) {
try {
const existe = await db.query(alias,
@@ -63,7 +38,6 @@ async function garantirRegistro(alias, empresaId) {
`, [empresaId]);
}
} catch (e) {
// Tabela pode não existir ainda — ignora
if (!e.message.includes('unknown') && !e.message.includes('não encontrado')) {
console.error('[ConfigService] Erro ao garantir registro:', e.message.substring(0, 100));
}