fix(api): corrige cálculo de dias úteis e estabiliza teste de ISBN by christophergouveia · Pull Request #907 · BrasilAPI/BrasilAPI · GitHub
Skip to content

fix(api): corrige cálculo de dias úteis e estabiliza teste de ISBN - #907

Open
christophergouveia wants to merge 2 commits into
BrasilAPI:mainfrom
christophergouveia:main
Open

christophergouveia wants to merge 2 commits into
BrasilAPI:mainfrom
christophergouveia:main

Conversation

@christophergouveia

@christophergouveia christophergouveia commented Sep 9, 2026 •

Copy link
Copy Markdown

📋 Descrição

Este PR corrige o cálculo do endpoint de dias úteis e melhora a estabilidade do teste E2E de ISBN.

O endpoint /api/diasuteis/v1 misturava datas UTC com operações no fuso horário local. Em ambientes configurados com o fuso brasileiro, isso fazia algumas segundas-feiras serem interpretadas como domingos e removidas indevidamente do resultado. O cálculo agora utiliza UTC de forma consistente para identificar o ano, o dia da semana e avançar entre as datas.

O teste de ISBN inexistente também foi ajustado para:

  • validar explicitamente a resposta HTTP 404;
  • evitar que erros de conexão sejam mascarados pelo acesso a uma resposta inexistente;
  • utilizar um timeout de 15 segundos, permitindo que os provedores externos concluam a consulta antes do encerramento da conexão.

Além disso, o lint-staged foi configurado para executar o ESLint somente nos arquivos adicionados ao commit.

🎯 Tipo de Mudança

  • 🐛 Correção de bug (mudança que corrige um problema)
  • ✨ Nova funcionalidade (mudança que adiciona funcionalidade)
  • 💥 Breaking change (correção ou funcionalidade que causa quebra de compatibilidade)
  • 📝 Documentação (mudanças apenas em documentação)
  • ♻️ Refatoração (mudança que não corrige bug nem adiciona funcionalidade)
  • ⚡ Performance (mudança que melhora performance)
  • ✅ Testes (adiciona ou corrige testes)
  • 🔧 Configuração (mudanças em configuração ou build)

⚠️ Checklist de Compatibilidade (CRÍTICO)

  • ✅ Não remove campos de respostas de API existentes
  • ✅ Não renomeia campos de respostas de API existentes
  • ✅ Não muda tipos de dados de campos existentes (string → number, etc.)
  • ✅ Não muda o formato de URLs de endpoints existentes
  • ✅ Não muda códigos de status HTTP de endpoints existentes
  • ✅ Se fez mudanças incompatíveis, criei uma nova versão (v2, v3, etc.)

📚 Checklist de Documentação

  • ✅ Atualizei ou criei documentação OpenAPI em /pages/docs/doc/
  • ✅ Documentação inclui exemplos de requisição e resposta
  • ✅ Documentação está em português
  • ✅ Atualizei README.md se necessário
  • ✅ N/A - Mudanças não requerem documentação

🧪 Checklist de Testes

  • ✅ Criei ou atualizei testes E2E
  • ✅ Todos os testes passam localmente (npm test)
  • ✅ Teste de CORS funciona corretamente
  • ✅ Testei casos de erro (404, 400, 500, etc.)
  • ✅ Testei casos de sucesso
  • ✅ N/A - Mudanças não requerem testes

💻 Checklist de Código

  • ✅ Código segue os padrões do projeto (ESLint + Prettier)
  • ✅ Executei npm run fix antes de commitar
  • ✅ Não adicionei dependências desnecessárias ou pesadas
  • ✅ Código não expõe credenciais ou informações sensíveis
  • ✅ Validei todos os inputs de usuário
  • ✅ Tratei erros apropriadamente
  • ✅ Usei Conventional Commits

🚀 Checklist de Performance e Custos

  • ✅ Não adicionei processamento pesado que aumenta custos
  • ✅ Usei cache quando apropriado
  • ✅ Minimizei chamadas a APIs externas
  • ✅ Considerei impacto em rate limits de APIs externas
  • ✅ Testei performance em casos de alto volume

🔍 Como Testar

  1. Inicie a aplicação:

npm run dev

  1. Em outro terminal, execute a suíte completa:

npm test

  1. Para validar apenas os arquivos relacionados:

npx vitest run tests/diasuteis-v1.test.js tests/isbn-v1.test.js --coverage.enabled=false

  1. Verifique que o intervalo abaixo retorna os cinco dias úteis, incluindo 2026-08-03:

GET /api/diasuteis/v1?dataInicial=2026-08-03&dataFinal=2026-08-07

📎 Issues Relacionadas

📝 Notas Adicionais

⚠️ Para Revisores

Pontos de Atenção Críticos:

  1. Compatibilidade: Verifique se há quebra de contrato de API
  2. Documentação: Confirme que está atualizada e completa
  3. Testes: Valide cobertura de casos de sucesso e erro
  4. Performance: Avalie impacto em custos e velocidade
  5. Segurança: Verifique validação de inputs e exposição de dados

Lembre-se: BrasilAPI serve milhares de desenvolvedores e empresas importantes. Mudanças devem ser cuidadosamente avaliadas para garantir confiabilidade e zero downtime.

@vercel

vercel Bot commented Sep 9, 2026

Copy link
Copy Markdown

@sonarqubecloud

sonarqubecloud Bot commented Sep 9, 2026

Copy link
Copy Markdown

This branch has not been deployed

No deployments
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.

1 participant