Menu

Validação de documento nacional: três graus de regra

A validação de documento nacional varia entre países: alguns publicam algoritmo completo, outros apenas o formato e outros não publicam regra alguma. Veja como tratar cada caso.

Publicado em

  • documento nacional
  • validação
  • regras

A validação de documento nacional é uma daquelas tarefas que parecem simples até a segunda tentativa. Quem já tentou reaproveitar a rotina de um país em outro descobriu que o formato muda, o cálculo muda e, em muitos casos, simplesmente não existe regra pública para aplicar. Este texto organiza o problema em três graus de regra e mostra o que é honesto afirmar em cada um deles.

Por que não existe uma regra única para documentos nacionais?

Documentos de identificação são invenções administrativas locais. Cada país decidiu, no seu tempo e por razões próprias, quais informações codificar, que formato adotar e se valeria a pena incluir um dígito verificador. Não há um padrão internacional que obrigue todos a seguir o mesmo desenho — e é por isso que a conferência precisa ser sempre específica de um país.

Essa diversidade produz três situações bem diferentes. Em algumas delas é possível conferir a estrutura e o dígito verificador. Em outras, apenas a forma da sequência. E há casos em que nada foi publicado a respeito, de modo que qualquer verificação séria é impossível.

O erro comum é tratar as três como se fossem uma só. Quando o sistema responde “inválido” a um documento de um país cuja regra não é conhecida, ele não está protegendo ninguém: está inventando uma resposta.

Documento com algoritmo publicado

Este é o caso mais favorável. O país descreve publicamente como o número se organiza e como o dígito verificador é calculado, o que permite implementar uma conferência completa: limpar a entrada, verificar comprimento e caracteres e recalcular o dígito.

O resultado possível aqui tem dois valores. A sequência confere com a regra publicada, ou não confere. Ainda assim, a conclusão continua sendo sobre o formato — um número construído com a regra correta pode não corresponder a nenhum registro real, e isso precisa ficar claro na interface.

Mesmo nesse cenário, há manutenção. Regras publicadas podem ser revistas, e a rotina precisa acompanhar a versão vigente sem perder a capacidade de reproduzir decisões antigas. Esquemas de dígito verificador em geral mudam pouco, mas tabelas de formato mudam.

Documento com regra apenas de formato

Aqui o país define como o número se parece, mas não publica um cálculo verificável. É possível conferir comprimento, conjunto de caracteres aceitos e, às vezes, posições reservadas; não é possível dizer se a sequência foi calculada corretamente, porque não há cálculo a reproduzir.

O resultado que se deve exibir nesse caso tem nome próprio: apenas formato. É uma resposta mais fraca, e essa fraqueza é uma informação útil, não uma limitação a esconder. Quem lê o resultado precisa saber que a checagem parou na aparência.

Tipo de regra O que é possível conferir Resultado adequado
Algoritmo publicado Estrutura e dígito verificador Confere ou não confere
Apenas formato Comprimento, caracteres e posições esperadas Apenas formato
Sem regra pública Nada além de presença e tamanho bruto Sem regra

Há um efeito colateral positivo em declarar apenas formato: a mensagem fica mais precisa e o suporte recebe menos contestações confusas. Quando o sistema afirma que um documento é inválido sem ter regra para isso, a reação natural de quem usa é discutir o veredito — e a discussão é legítima, porque o sistema afirmou mais do que sabia. Já quando a resposta diz que a checagem parou no formato, a conversa muda de rumo: em vez de debater o resultado, as pessoas procuram outro caminho para confirmar o documento. Esse detalhe de redação parece pequeno, mas decide se o resultado é tratado como informação ou como obstáculo.

Documento sem regra pública

Existem documentos cujo desenho simplesmente não é público, ou não é público em um nível que permita conferência. Nessa situação, qualquer rotina que devolva “válido” está descrevendo a si mesma, não o número.

A postura correta é a mesma adotada em números sem dígito verificador: declarar a ausência de regra. O campo ainda pode ter verificações de sanidade — está vazio, tem comprimento absurdo, contém símbolos que não deveriam existir —, mas elas devem ser apresentadas como checagem de presença, nunca como validação.

Vale notar que a ausência de regra pública não significa que o número não tenha estrutura. Significa apenas que quem está do lado de fora não tem como reproduzi-la. Sistemas que insistem em aceitar ou recusar esses documentos acabam criando regras locais sem base, que reprovam entradas legítimas e envelhecem mal.

O que fazer quando o país não está na tabela?

O comportamento padrão precisa ser explícito e conservador: tratar como não reconhecido, não como inválido.

A diferença importa na prática. “Inválido” afirma que a sequência contraria uma regra conhecida; “não reconhecido” afirma apenas que não há regra disponível. A primeira mensagem orienta a corrigir um erro; a segunda orienta a seguir por outro caminho, como uma conferência manual ou uma consulta a quem emitiu o documento.

Também vale separar, no modelo de dados, o resultado da conferência do motivo dele. Um código de resultado curto — confere, não confere, apenas formato, sem regra — combinado com um identificador de esquema permite relatar qualquer situação sem inventar mensagens improvisadas.

Na prática, esse comportamento exige três decisões explícitas:

  • Qual texto exibir quando não há esquema aplicável, com redação própria e sem alarme falso.
  • Se a linha pode prosseguir no fluxo, já que o dado não passou por nenhuma regra automática.
  • Como registrar a ausência, para que alguém possa completar a tabela quando a regra for publicada.

Deixar essas três respostas em aberto é o caminho mais curto para que, meses depois, alguém transforme ausência de regra em reprovação silenciosa.

Para quem desenvolve: uma tabela de regras, não um código por país

A tentação natural é escrever um bloco condicional por país. Funciona no começo e vira um problema quando o terceiro ou o quarto país entra no sistema, porque cada bloco tende a trazer o seu próprio jeito de limpar a entrada, comparar comprimentos e montar mensagens.

Um desenho mais durável trata as regras como dados: cada entrada descreve o identificador do esquema, a forma de normalizar, o que esperar da sequência e, quando existir, qual cálculo aplicar. O código passa a ser um motor único que consulta essa tabela.

Três cuidados acompanham esse desenho:

  • Guardar o resultado das camadas separadamente, para não perder a informação de onde a conferência parou.
  • Versionar a tabela, para reproduzir decisões antigas depois de uma revisão de regra.
  • Expor a versão aplicada na resposta, o que transforma um relatório de erro em algo investigável.

Os exemplos deste texto são sequências fictícias, criadas apenas para ilustrar o raciocínio. Nenhuma delas identifica uma pessoa, e um formato aceito não prova que um documento seja autêntico.

Próximos passos

Se o documento da sua lista não tem algoritmo conhecido, o texto sobre números sem dígito verificador aprofunda esse caso. Para ver um exemplo completo de regra publicada, leia sobre validação CPF CNPJ. E para descobrir o que a ferramenta consegue conferir em uma sequência específica, abra a validação de número e cole o valor.

Continue lendo

Artigos sobre Validador de CPF