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.tsexpõeGET /brasil-api/cep/:cepeGET /brasil-api/cnpj/:cnpje delega aapps/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.tsexpõeGET /infosimples/cfp; service/controller encaminham CRP, UF, nome e CPF.apps/api-core/src/http/infosimples/client.tsexigeINFOSIMPLES_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.tsregistra 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.tsxe 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.