Pular para o conteúdo principal

Campos reconhecidos

O classificador do Botaí reconhece 38 tipos de campo. É o mesmo classificador na extensão (modo A), no fixture do Playwright, no navegador.iife.js e no subpath /campos da biblioteca. A contagem vem do tipo FieldKind, em packages/core/src/campos.ts; a biblioteca o exporta como tipo de @pilutech/botai-core/campos.

Como ele reconhece​

O classificador olha cada campo por estas vias, nesta ordem:

  1. o atributo autocomplete;
  2. o texto do <label>;
  3. o aria-label;
  4. o name;
  5. o id;
  6. o placeholder;
  7. o formato do valor;
  8. o type do campo;
  9. as opções de um <select>;
  10. o contexto, como os campos vizinhos (um "Número" logo depois do CEP é o número do endereço).

Campo que nenhuma via reconhece fica de fora, sem chute, e vai para a lista naoReconhecidos. Para que um campo seu seja reconhecido, o caminho mais firme é um autocomplete padrão ou um <label> claro.

Os 38 tipos​

A coluna "Recebe" diz o valor da pessoa que vai para o campo. Quando o valor com máscara não cabe no maxlength, vai o valor só com dígitos; o que não cabe de jeito nenhum vai para recusados.

Documentado

A coluna "Recebe" foi lida no código de valorPara (packages/core/src/campos-formatar.ts). O que foi testado é a contagem dos 38 tipos e o preenchimento de um cadastro realista (21 de 23 campos), não cada linha desta tabela.

Pessoa e documentos​

TipoO campo pedeRecebe
nomeCompletonome completonome.completo
primeiroNomeprenomenome.prenome
sobrenomesobrenomeos sobrenomes, separados por espaço
nascimentodata de nascimentonascimento.br (DD/MM/AAAA); num type=date, nascimento.iso
nascimentoDiadia do nascimento, em campo separadoo dia (DD)
nascimentoMesmês do nascimento, em campo separadoo mês (MM); num select, a opção do mês, pelo número ou pelo nome
nascimentoAnoano do nascimento, em campo separadoo ano (AAAA, ou AA se só couber isso)
sexosexoF ou M; num select, a opção (Feminino, Masculino…)
cpfCPFcpf
rgRGrg.numero
pisPIS/NISpis
tituloEleitortítulo de eleitortituloEleitor

Contato e conta​

TipoO campo pedeRecebe
celularcelular ou telefonecelular.formatado; com o DDD num campo separado, sem o DDD
dddDDD, em campo separadocelular.ddd
emaile-mailemail.endereco
emailConfirmacaoconfirmação do e-mailemail.endereco
senhasenhasenha
senhaConfirmacaoconfirmação da senhasenha
usuarionome de usuárioemail.usuario

Endereço​

TipoO campo pedeRecebe
cepCEPendereco.cep
logradouroruaendereco.logradouro; sem campo de número na página, "rua, número"
numeroEndereconúmeroendereco.numero
complementocomplementoendereco.complemento
bairrobairroendereco.bairro
cidadecidadeendereco.cidade
ufestado (UF)a sigla; num select, a opção pela sigla ou pelo nome do estado
cidadeUfcidade e UF num campo sóCidade / UF
paispaísBrasil, ou BR num campo de até 3 caracteres
enderecoCompletoendereço inteiro num campo sórua, número, complemento, bairro, cidade, UF e CEP

Empresa​

TipoO campo pedeRecebe
razaoSocialrazão socialempresa.razaoSocial
nomeFantasianome fantasiaempresa.nomeFantasia
cnpjCNPJempresa.cnpj

Cartão​

TipoO campo pedeRecebe
cartaoNumeronúmero do cartãocartao.numeroFormatado
cartaoNomenome impresso no cartãocartao.titular
cartaoValidadevalidade num campo sócartao.validade (MM/AA)
cartaoValidadeMesmês da validade, em campo separadocartao.mes
cartaoValidadeAnoano da validade, em campo separadoo ano com 4 dígitos, ou cartao.ano se só couber isso
cartaoCvvCVVcartao.cvv

Os campos e formatos da pessoa estão em A pessoa.

O que fica de fora​

Não reconhecidos (vão para naoReconhecidos), por exemplo: "Idade", "Observações" e "Código de indicação".

Recusado de propósito:

  • "Telefone fixo" não recebe nada: a pessoa só tem celular. "Telefone", sem o "fixo", recebe o celular.

Não preenchido, qualquer que seja o rótulo:

  • checkbox, radio, file, range, color e hidden (o "aceito os termos" fica desmarcado);
  • select múltiplo e combobox sem <select> nativo;
  • contenteditable, no fixture e no motor (na extensão, só o modo B, Inserir, escreve nele);
  • campos disabled, readonly, com display:none ou sob aria-hidden.

Um <select> sem a opção da pessoa e um valor que não cabe no maxlength vão para recusados, sem truncar.

Pelo autocomplete​

O atributo autocomplete é a primeira via. Estes são os valores que o classificador entende:

Documentado

A tabela e a regra dos prefixos logo abaixo dela foram lidas no código do classificador (packages/core/src/campos.ts); nenhum teste as conferiu linha a linha.

autocompleteTipo
name, given-name, family-namenomeCompleto, primeiroNome, sobrenome
nickname, usernameusuario
emailemail
new-password, current-passwordsenha
bday, bday-day, bday-month, bday-yearnascimento, nascimentoDia, nascimentoMes, nascimentoAno
sexsexo
tel, tel-national, tel-localcelular
tel-area-codeddd
postal-codecep
street-addressenderecoCompleto
address-line1, address-line2logradouro, complemento
address-level1, address-level2, address-level3uf, cidade, bairro
country, country-namepais
organizationrazaoSocial
cc-number, cc-name, cc-csccartaoNumero, cartaoNome, cartaoCvv
cc-exp, cc-exp-month, cc-exp-yearcartaoValidade, cartaoValidadeMes, cartaoValidadeAno
one-time-codefica de fora

Os prefixos de seção (section-*, shipping, billing, home, work, mobile, fax, pager) não mudam o tipo: shipping postal-code é cep.

Na extensão: o modo B​

Os 38 tipos valem para preencher a página inteira (modo A). O menu Inserir da extensão (modo B) escreve um campo de cada vez e tem 23 tipos, em 5 grupos: veja Inserir um campo.

Para usar o classificador no seu código, veja Classificador de campos.