REFACTOR: Melhorada a lógica de filtro de pastas no GeoGrid
- 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 <noreply@anthropic.com>
This commit is contained in:
parent
2d6cc6daf1
commit
7409bfcded
@ -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 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 sigla = r.pasta && r.pasta.sigla;
|
||||||
const isAuthorized = apiConfig.geogridAuthorizedSiglasPastas.includes(sigla);
|
return apiConfig.geogridAuthorizedSiglasPastas.includes(sigla);
|
||||||
const isParceiro = sigla && (sigla.toLowerCase().includes("- parceiro") || sigla.toLowerCase().includes("parceiros - outros"));
|
|
||||||
return isAuthorized || isParceiro;
|
|
||||||
});
|
});
|
||||||
|
|
||||||
const primeiro = registrosFiltrados[0];
|
// Se encontrar autorizado, retorna com sigla "Sothis"
|
||||||
|
if (registros_autorizados.length > 0) {
|
||||||
if (primeiro && primeiro.pasta && primeiro.pasta.sigla && apiConfig.geogridAuthorizedSiglasPastas.includes(primeiro.pasta.sigla)) {
|
const resultado = registros_autorizados[0];
|
||||||
primeiro.pasta.sigla = "Sothis";
|
resultado.pasta.sigla = "Sothis";
|
||||||
|
return { data: resultado };
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!primeiro || !primeiro.pasta || !primeiro.pasta.sigla) {
|
// Se não encontrar autorizado, tenta buscar parceiro
|
||||||
// Retorna um objeto padrão se não houver dados válidos
|
const registros_parceiros = registros.filter(r => {
|
||||||
return { data: { pasta: { sigla: "Nenhum provedor disponível" } } };
|
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)
|
// Se não encontrar autorizado nem parceiro, retorna mensagem padrão
|
||||||
return { data: primeiro };
|
return { data: { pasta: { sigla: "Nenhum provedor disponível" } } };
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
logger.error("Erro ao consultar viabilidade no GeoGrid", { message: error.message, stack: error.stack, lat, lon });
|
logger.error("Erro ao consultar viabilidade no GeoGrid", { message: error.message, stack: error.stack, lat, lon });
|
||||||
throw new Error("Erro ao consultar viabilidade");
|
throw new Error("Erro ao consultar viabilidade");
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user