Skip to content

fix(ncm): corrige campos tipo_ato, numero_ato e ano_ato ausentes no fallback#797

Open
felipeflfranca wants to merge 1 commit intoBrasilAPI:mainfrom
felipeflfranca:fix/ncm-parse-object-fallback
Open

fix(ncm): corrige campos tipo_ato, numero_ato e ano_ato ausentes no fallback#797
felipeflfranca wants to merge 1 commit intoBrasilAPI:mainfrom
felipeflfranca:fix/ncm-parse-object-fallback

Conversation

@felipeflfranca
Copy link
Copy Markdown
Contributor

📋 Descrição

Corrige a função parseObject em services/sefaz/index.js que produzia undefined
para os campos tipo_ato, numero_ato e ano_ato quando o fallback local
(ncmList.json) era usado.

O upstream Siscomex usa chaves com sufixo _ini (Tipo_Ato_Ini), mas o fallback
usa sem sufixo (Tipo_Ato). Agora ambas as variantes são extraídas e o operador ??
seleciona a disponível.

Possivelmente uma regressão de #583 (fixado em #585).

🎯 Tipo de Mudança

  • 🐛 Correção de bug (mudança que corrige um problema)

⚠️ 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

  • ✅ N/A - Mudanças não requerem documentação

Os campos já estavam documentados no OpenAPI, apenas não apareciam na resposta.

🧪 Checklist de Testes

  • ✅ 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

Testes existentes em tests/ncm-v1.test.js já cobriam esses campos — estavam falhando por
causa do bug. Agora passam 9/9.

💻 Checklist de Código

  • ✅ Código segue os padrões do projeto (ESLint + Prettier)
  • ✅ Não adicionei dependências desnecessárias ou pesadas
  • ✅ Código não expõe credenciais ou informações sensíveis
  • ✅ Tratei erros apropriadamente
  • ✅ Usei Conventional Commits

🚀 Checklist de Performance e Custos

  • ✅ Não adicionei processamento pesado que aumenta custos
  • ✅ Minimizei chamadas a APIs externas
  • ✅ Considerei impacto em rate limits de APIs externas

🔍 Como Testar

  1. curl https://brasilapi.com.br/api/ncm/v1/33051000 — hoje retorna sem tipo_ato,
    numero_ato, ano_ato
  2. Com o fix: npm test — testes do NCM passam 9/9
  3. Verificar que a resposta inclui os 3 campos restaurados

📎 Issues Relacionadas

…allback

A função parseObject assumia chaves com sufixo _ini (upstream Siscomex),
mas o fallback local ncmList.json usa chaves sem sufixo. A desestruturação
produzia undefined que sobrescrevia os valores corretos do spread.

Agora ambas as variantes são extraídas explicitamente e o operador ??
seleciona a disponível.

Closes BrasilAPI#796

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@vercel
Copy link
Copy Markdown

vercel bot commented Apr 16, 2026

@felipeflfranca is attempting to deploy a commit to the BrasilAPI Team on Vercel.

A member of the Team first needs to authorize it.

@sonarqubecloud
Copy link
Copy Markdown

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.

[NCM] Resposta omite campos tipo_ato, numero_ato e ano_ato (regressão de #583)

1 participant