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 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");
|
||||
|
||||
Loading…
Reference in New Issue
Block a user