Caderninho / guias
Referência do projeto

Importar regras em JSON

Referência técnica de docs/rule-packs.md, preservada a partir do projeto Caderninho.

Documento técnico do projeto

Este texto foi preservado de docs/rule-packs.md. Relatos de testes e validações são os do documento original. Para a jornada guiada, comece em Instalar o Caderninho.

Na tela Regras, escolha Importar regras, selecione um JSON e confira a prévia. Resolva nomes de categorias ambíguos, atualize a prévia e confirme. A lista é atualizada depois da gravação. Cancelar/voltar não grava nada.

O JSON Brasil é um arquivo externo de exemplo (30 regras, 9 categorias, 60 alternativas); também pode ser baixado pelo diálogo. Nenhum catálogo é importado no bundle ou instalado automaticamente.

O contrato aceita pacotes genéricos com id, version, categories e rules. Categorias declaram key, name, kind (expense, income ou transfer). Cada regra declara key, categoryKey e os mesmos campos/filtros nativos de create_rule, sem categoryId: a categoria é resolvida no espaço selecionado. Limites: 100 regras, 50 categorias e arquivo de 64 KiB. JSON malformado, chaves repetidas, categorias não declaradas e filtros incompatíveis são recusados.

A prévia usa preview_rule_import sem escrever. import_rules exige confirmação, revisão da prévia e chave de idempotência; categorias/regras/recibo são gravados no mesmo batch atômico. Uma revisão concorrente exige atualizar a prévia. Um resultado de rede incerto pode ser confirmado novamente com a mesma chave.

Nomes iguais de categorias exigem mapeamento explícito. IDs de outro espaço, categorias ocultas ou de outro tipo são recusados. Categorias ausentes são criadas; categorias existentes mantêm nome, ícone e grupo. Conta/pessoa em filtros precisa existir nesta instalação e respeitar o escopo do motor.

IDs de regras derivam de espaço/pacote/chave. Reimportar preserva regras editadas ou pausadas e não duplica regras idênticas já existentes. Esta versão acrescenta regras; não substitui versões instaladas. Excluir uma regra permite recriá-la em uma importação explícita posterior.

Regras pessoais vêm antes das importadas, inclusive quando criadas depois. Dentro de cada grupo, prioridade menor e depois ID determinam o vencedor. Defaults preservam categorias editadas localmente, inclusive null. Editar uma regra importada a torna pessoal. Não há aplicação automática ao histórico: novas importações normais usam o trigger existente; preview_rule e apply_rules continuam disponíveis para conferência e reaplicação explícita (até 500 registros). Excluir/pausar regra não desfaz classificações anteriores.

O motor só dobra A–Z; acentos são literais. O Brasil de exemplo exige débito POSTED/BRL e descrições inteiras declaradas. iFood/Rappi precisam indicar ramo. Não há inferência por CNPJ/raiz/gateway nem garantia de cobertura bancária; fontes sustentam atividades, não descritores ou frequência pessoal de compras.

Fontes primárias conferidas em 24/10/2026 sustentam as atividades abaixo, sem provar frequência pessoal ou formatos de extrato. Antes de ampliar aliases, confira ramo e colisões na fonte e acrescente casos positivos/negativos ao teste D1 rule-packs.test.ts.

RegrasFonte de manutenção / razão
iFood: farmácia, pets, mercado, restauranteiFood: vários segmentos; exigir ramo explícito.
Rappi: farmácia, pets, mercado, restauranteRappi: vários segmentos; exigir ramo explícito.
Uber viagens / 99PopUber, 99: separar viagens de entregas e carteira.
Netflix / SpotifyNetflix, Spotify: serviços pagos; não afirmar recorrência individual.
PetzPetz: produtos/serviços pet.
Drogasil / Drogaria RaiaRD Saúde: varejo farmacêutico; não inferir medicamento.
Drogaria São Paulo / Drogarias PachecoDPSP: farmácias; não inferir item.
Assaí / Atacadão / Pão de AçúcarAssaí, Atacadão, GPA: mercado amplo, não apenas alimentos.
McDonald’s / Burger King / KFCMcDonald’s, BK, KFC: restaurantes.
Lojas Renner / Lojas Riachuelo / KaBuM / DecathlonRenner, Riachuelo, KaBuM, Decathlon: compras amplas; não classificar fatura ou produto específico.
Smart Fit / Alura / UdemySmart Fit, Alura, Udemy: academia e educação.