fix(cptec): report upstream service unavailability by LucasLeao18 · Pull Request #911 · BrasilAPI/BrasilAPI · GitHub
Skip to content

fix(cptec): report upstream service unavailability - #911

Open
LucasLeao18 wants to merge 2 commits into
BrasilAPI:mainfrom
LucasLeao18:fix/cptec-upstream-errors
Open

LucasLeao18 wants to merge 2 commits into
BrasilAPI:mainfrom
LucasLeao18:fix/cptec-upstream-errors

Conversation

@LucasLeao18

Copy link
Copy Markdown

📋 Descrição

Melhora o tratamento da indisponibilidade do serviço externo do CPTEC observada na issue #910.

Quando o Axios não consegue consultar listaCidades, a API agora retorna um erro explícito e semanticamente adequado:

  • HTTP 503
  • name: CPTEC_SERVICE_UNAVAILABLE
  • type: city_error

Erros que não são originados pelo cliente HTTP continuam sendo propagados sem alteração. A resposta de sucesso e o formato dos dados de cidades permanecem iguais.

🎯 Tipo de Mudança

  • 🐛 Correção de bug
  • 📝 Documentação
  • ✅ Testes

⚠️ Compatibilidade

  • Não remove ou renomeia campos de respostas de sucesso
  • Não muda tipos de dados ou URLs existentes
  • Não muda códigos de status de respostas de sucesso
  • Diferencia uma falha do serviço externo, anteriormente exposta como erro interno genérico, usando HTTP 503

📚 Documentação

  • Documentação OpenAPI atualizada com a resposta 503 e exemplo
  • Documentação em português

🧪 Testes

  • Teste do retorno de cidades em caso de sucesso
  • Teste do erro 503 para falhas HTTP do CPTEC
  • Teste de preservação de erros não relacionados ao Axios
  • vitest: 3 testes passaram
  • ESLint passou nos arquivos JavaScript alterados
  • Prettier passou em todos os arquivos alterados

🚀 Performance e custos

  • Não adiciona dependências, processamento ou chamadas externas
  • Não altera cache ou rate limits

🔍 Como testar

  1. Simular uma rejeição do axios.get no serviço de cidades do CPTEC.
  2. Chamar getCityData.
  3. Confirmar ServiceUnavailableError com status 503 e nome CPTEC_SERVICE_UNAVAILABLE.

📎 Issue relacionada

Related to #910.

O PR melhora o diagnóstico enquanto o upstream do INPE retorna 403; ele não afirma corrigir a indisponibilidade externa em si.

@vercel

vercel Bot commented Sep 14, 2026

Copy link
Copy Markdown

@sonarqubecloud

Copy link
Copy Markdown

@LucasLeao18

Copy link
Copy Markdown
Author

A suíte E2E foi executada novamente no commit 8d96725. Os testes adicionados por este PR passaram ( ests/services/cptec/cities.test.js: 3/3), assim como o SonarCloud. As duas falhas restantes são externas ao diff e dependem de provedores remotos: ests/isbn-v1.test.js recebeu timeout/429/410 e terminou sem error.response; ests/cep-v3.test.js recebeu latitude/longitude nulos do provedor. A execução anterior também falhou apenas no ISBN. Poderiam reexecutar o workflow quando os provedores estabilizarem? Não alterei esses testes neste PR para manter o escopo restrito ao tratamento de indisponibilidade do CPTEC.

@vercel

vercel Bot commented Sep 15, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
brasilapi Ready Ready Preview Sep 15, 2026 3:47pm UTC

Request Review

This branch was successfully deployed

1 active deployment
Preview — 8d96725d Deployed Sep 15, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants