From 7409bfcdedbcf232759e895399247bef5c87ebc3 Mon Sep 17 00:00:00 2001 From: "gabriel.amancio" Date: Wed, 3 Jun 2026 15:11:59 -0300 Subject: [PATCH] =?UTF-8?q?REFACTOR:=20Melhorada=20a=20l=C3=B3gica=20de=20?= =?UTF-8?q?filtro=20de=20pastas=20no=20GeoGrid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Prioriza registros com siglas autorizadas no .env, retornando "Sothis" - Se não houver autorizado, busca parceiros e retorna com sigla normal - Se não encontrar nenhum, retorna "Nenhum provedor disponível" - Código mais legível e explícito com filtros separados Co-Authored-By: Claude Haiku 4.5 --- src/shared/apis/geogridService.js | 33 ++++++++++++++++++------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/src/shared/apis/geogridService.js b/src/shared/apis/geogridService.js index 809f79a..bc884f5 100644 --- a/src/shared/apis/geogridService.js +++ b/src/shared/apis/geogridService.js @@ -33,29 +33,34 @@ const consultaViabilidade = async (lat, lon) => { } }); - // Extrai o primeiro registro da resposta em que a pasta.sigla seja "São Bernardo do Campo - SP", "São Paulo - SP", "Barueri - São Paulo" e "TMC" descartar os demais + // Extrai o primeiro registro da resposta em que a pasta.sigla seja igual as siglas autorizadas no .env const registros = response.data && response.data.registros; - const registrosFiltrados = registros.filter(r => { + // Filtra registros autorizados (ex: SOTHIS, VIVO, OI) + const registros_autorizados = registros.filter(r => { const sigla = r.pasta && r.pasta.sigla; - const isAuthorized = apiConfig.geogridAuthorizedSiglasPastas.includes(sigla); - const isParceiro = sigla && (sigla.toLowerCase().includes("- parceiro") || sigla.toLowerCase().includes("parceiros - outros")); - return isAuthorized || isParceiro; + return apiConfig.geogridAuthorizedSiglasPastas.includes(sigla); }); - const primeiro = registrosFiltrados[0]; - - if (primeiro && primeiro.pasta && primeiro.pasta.sigla && apiConfig.geogridAuthorizedSiglasPastas.includes(primeiro.pasta.sigla)) { - primeiro.pasta.sigla = "Sothis"; + // Se encontrar autorizado, retorna com sigla "Sothis" + if (registros_autorizados.length > 0) { + const resultado = registros_autorizados[0]; + resultado.pasta.sigla = "Sothis"; + return { data: resultado }; } - if (!primeiro || !primeiro.pasta || !primeiro.pasta.sigla) { - // Retorna um objeto padrão se não houver dados válidos - return { data: { pasta: { sigla: "Nenhum provedor disponível" } } }; + // Se não encontrar autorizado, tenta buscar parceiro + const registros_parceiros = registros.filter(r => { + const sigla = r.pasta && r.pasta.sigla; + return sigla && (sigla.toLowerCase().includes("- parceiro") || sigla.toLowerCase().includes("parceiros - outros")); + }); + + if (registros_parceiros.length > 0) { + return { data: registros_parceiros[0] }; } - // Retorna no formato esperado pelo controller (viabilidade.data.distancia) - return { data: primeiro }; + // Se não encontrar autorizado nem parceiro, retorna mensagem padrão + return { data: { pasta: { sigla: "Nenhum provedor disponível" } } }; } catch (error) { logger.error("Erro ao consultar viabilidade no GeoGrid", { message: error.message, stack: error.stack, lat, lon }); throw new Error("Erro ao consultar viabilidade");