Pular para conteúdo

Auditoria de consultas externas brasileiras

Data da auditoria: 2026-08-10
Escopo: código isolado em prontuare-web e legado em apps/web/apps/api-core.

Implementação isolada atual

Assunto Formatação/local Chamada de rede encontrada Alegação anterior na UI Compatibilidade com prontuare-api
CEP Os hooks removem caracteres não numéricos e exigem 8 dígitos; a UI aceita digitação manual. hooks/use-cep.ts chamava client.api["brasil-api"].cep(...).get(). “preenchimento automático do endereço”. Incompatível: não existe domínio/rota BrasilAPI no serviço isolado.
CNPJ O hook remove caracteres não numéricos e exige 14 dígitos; o campo aceita digitação manual. hooks/use-cnpj.ts chamava client.api["brasil-api"].cnpj(...).get(). “preenchimento automático” e marca verde que podia ser interpretada como validação. Incompatível: não existe domínio/rota BrasilAPI no serviço isolado.
CFP/CRP O formulário aceitava CRP e CPF/CNPJ informados pelo usuário. app/onboarding/professional-profile/page.tsx chamava client.api.infosimples.cfp.get(...) no blur e no envio. “validado junto ao conselho” e “✓ Validado”. Incompatível: não existe domínio/rota InfoSimples no serviço isolado.

Os hooks use-cep.ts e use-cnpj.ts foram mantidos por compatibilidade com chamadores existentes, mas agora falham de forma segura com orientação para preenchimento manual e não fazem chamada de rede. Nenhuma resposta externa é persistida automaticamente. CEP, endereço, CNPJ e CRP continuam editáveis manualmente.

Implementação legada

  • apps/api-core/src/domains/brasil-api/index.ts expõe GET /brasil-api/cep/:cep e GET /brasil-api/cnpj/:cnpj e delega a apps/api-core/src/http/brasil-api/client.ts.
  • O cliente legado usa https://brasilapi.com.br/api, sem credencial, timeout explícito, retry, cache, quota contratada ou envelope seguro específico.
  • apps/api-core/src/domains/infosimples/index.ts expõe GET /infosimples/cfp; service/controller encaminham CRP, UF, nome e CPF.
  • apps/api-core/src/http/infosimples/client.ts exige INFOSIMPLES_API_TOKEN, envia o token na query string e permite espera local de até dez minutos. O modo development devolve um profissional sintético “ativo”, portanto não comprova consulta ou validação real.
  • apps/api-core/src/index.ts registra ambos os domínios legados sob /api.
  • Chamadores foram encontrados em apps/web/hooks/use-cep.ts, apps/web/hooks/use-cnpj.ts, apps/web/components/{cep-field,cnpj-field}.tsx, apps/web/app/onboarding/professional-profile/page.tsx e no editor de pacientes.
  • Não foram encontrados testes automatizados dedicados aos contratos CEP/CNPJ/CFP no legado. Há somente validações locais de formato/obrigatoriedade em outros domínios.

Conclusão de compatibilidade

Copiar as rotas legadas violaria o gate FR-019: faltam decisão do owner, termos aprovados, orçamento/quota, timeout curto, política de retry, consentimento/necessidade para CPF e observabilidade segura. Até essa decisão, o comportamento compatível é entrada manual com linguagem de “dado informado”, sem alegar autofill, consulta ou validação.