Critérios de assertividade

Estes critérios julgam a fatura pelo próprio documento. Não há comparação com o sistema atual em lugar nenhum desta conta — é o número que continua valendo depois que o legado for desligado.

A régua é o conjunto, não a média

São 11 critérios, todos bloqueantes. Uma fatura só entra na conta de assertividade se passar em todos ao mesmo tempo. Falhar em um só já a tira.

A escolha é deliberada. Média de critérios produz números confortáveis e enganosos: uma fatura com o valor certo e o detalhamento sem categoria apareceria como 91% correta, quando na prática ela não serve para o relatório. Ou a fatura está inteira, ou não está.

A única tolerância numérica é de R$ 0.02 na soma dos itens — centavos de arredondamento não são erro de leitura.

Os critérios

1. A soma dos itens dá o total

O que é medido: Somando linha a linha, chega-se exatamente ao valor cobrado (tolerância de R$ 0.02).

Por que existe: É a única prova de leitura que não depende de ninguém conferir: se a soma fecha, nenhuma linha foi perdida nem contada duas vezes. Foi o sinal que pegou o consumo de dados da Vivo contado em dobro e o detalhamento repetido da NET.

soma_fecha

2. A fatura tem detalhamento

O que é medido: Pelo menos uma linha de item foi extraída.

Por que existe: Fatura sem item é fatura não lida — o total sozinho não permite rateio, nem relatório por acesso, nem auditoria de plano.

tem_itens

3. A fatura tem número

O que é medido: O número da fatura foi lido do documento, não é sentinela.

Por que existe: Os parsers gravam `` quando o campo não existe. Medido em 673 faturas: gravar o código da conta no lugar do número da NF batia 0 de 143 na net. Sentinela é resposta honesta; número inventado não.

numero_proprio

4. A conta do cliente foi identificada

O que é medido: O código da conta/contrato está preenchido.

Por que existe: É a chave de rateio: sem ela a fatura não se liga ao centro de custo nem ao contrato, e o relatório de acessos perde a linha.

conta_identificada

5. O CNPJ do emissor é válido

O que é medido: Catorze dígitos com dígito verificador correto.

Por que existe: Não basta ter o formato: a NET imprime o CNPJ partido pela quebra de linha e a Embratel o imprime sem pontuação. Validar o DV é o que separa o CNPJ real de um pedaço de código de barras.

cnpj_emissor_valido

6. O cliente está identificado

O que é medido: O destinatário tem CNPJ com dígito verificador correto — ou, na falta dele, razão social.

Por que existe: O legado guarda o cliente na coluna `cnpj`; é por ele que a fatura chega ao dono. Medido: em 447 faturas do Cortex a coluna é sempre o cliente — perder esse campo é perder o destinatário da cobrança. Só que nem toda fatura o imprime: medido em 26/08/2026, 954 registros vivo_fixo e 190 vivo têm cobrança real e NENHUM CNPJ de cliente no PDF, que traz só os da Telefônica. Exigir o que o documento não tem transforma o critério em ruído — reprova sempre, e nada do lado do leitor muda isso. A razão social, que o PDF imprime sob "Nome do Cliente", identifica o dono; é evidência mais fraca que o CNPJ e melhor que nada.

cliente_identificado

7. O valor cobrado é positivo

O que é medido: O total é maior que zero — ou é zero e o detalhamento confirma.

Por que existe: Total negativo é leitura falhada, e total zero quase sempre também: crédito costuma aparecer como item negativo dentro de um total positivo. Mas nem sempre. Medido em 26/08/2026 em três faturas Claro que o PDF imprime com "TOTAL A PAGAR R$ 0,00": uma de rescisão, com os valores proporcionais ao cancelamento, e uma em que o desconto passou do cobrado e a Claro carregou a sobra ("Créditos para próximas contas R$ 6,52", o comportamento que a v91 documentou). O que separa uma leitura falhada de um zero legítimo não é o total: é o detalhamento fechar nele. Zero sem itens, ou com itens que não somam zero, continua reprovando.

valor_positivo

8. As datas fazem sentido

O que é medido: A emissão não é posterior ao vencimento.

Por que existe: Emissão depois do vencimento é sinal de campo trocado — foi assim que apareceu a NET lendo a data do boleto no lugar da data da NF.

datas_coerentes

9. O mês de referência é coerente com a emissão

O que é medido: A referência é a do mês de emissão ou de até dois meses antes — nunca posterior.

Por que existe: Medido em 6 faturas da embratel e 2 da net: sem o rótulo do mês, o parser caía no vencimento e ADIANTAVA a referência em um mês, e a fatura ia para o mês errado do fechamento. É esse o defeito. A primeira versão deste critério exigia referência IGUAL ao mês de emissão, e reprovava 100% da claro (9 de 903) e da sustenta por uma convenção legítima: quem emite com a data real da NF fatura julho em agosto, e a referência é o mês anterior. Nas 8.469 faturas medidas a regra antiga dava 74% e esta dá 91% — a diferença é toda convenção, não defeito.

referencia_coerente_com_a_emissao

10. Todo item tem nome

O que é medido: Nenhuma linha do detalhamento está sem serviço nem plano.

Por que existe: Item sem nome não é conferível pelo cliente: ele vê um valor sem saber do que se trata.

itens_nomeados

11. Todo item entra num relatório

O que é medido: Nenhuma linha está sem categoria de serviço (`service_x`).

Por que existe: É o campo que joga o item no balde do relatório. Item sem categoria some dos 9 relatórios: o valor entra no total e desaparece da análise. Foi o que aconteceu com 1.070 itens da Vivo cujo serviço tinha sido lido como nome de país.

itens_classificados

De onde vêm os números

Cada critério é aplicado a toda fatura já extraída pelo sistema, lendo invoice_records e o detalhamento em invoice_items. Nenhum deles consulta o banco do legado.

Na aba Critérios próprios os critérios aparecem ordenados por onde mais se perde fatura, e a tabela por operadora mostra o gargalo de cada uma — o critério que mais a derruba.