Skip to content

Dividir o módulo de import em submódulos internos por preocupação (grid, classify, lexicon, proposals) #338

Description

@johnlaff

Parent

Spec: #306

What to build

Dividir o módulo de import da planilha (hoje um único arquivo de ~7 mil linhas, dos quais ~64% são testes) em quatro submódulos internos por preocupação — grid (leitura bruta: linha/célula, layout, série de saldo, número e data), classify (significado: passado/futuro, tipo de linha, tipo de item por seção, normalização, checksum, diagnósticos de precisão), lexicon (resolução de identidade de cartão a partir das três fontes) e proposals (reconhecimento de cartão desconhecido e construção da proposta) — reexportando tudo no módulo pai. É reorganização de arquivo, não de arquitetura: nenhuma função muda de assinatura ou comportamento, nenhum call site externo muda, nenhum caminho público novo é exposto.

Os testes são a rede de segurança do próprio refactor: migram junto com o código que exercitam, um bloco por submódulo de destino, sem reescrever asserção nem remover caso. Os comentários de racional existentes (fronteira de fevereiro, seção como autoridade do lexicon) migram intactos. Resultado demoável: um mantenedor abre o submódulo de uma preocupação e encontra só ela; um revisor confere a interface pública intocada por diff do conjunto de símbolos exportados, sem ler assinatura por assinatura.

Atenção: lexicon e propostas estão fisicamente entrelaçados no topo do arquivo atual — a separação deles é a parte que exige critério, não busca-e-recorta.

Acceptance criteria

  • A suíte de testes passa antes e depois com os mesmos nomes de teste (lista diffável — nenhum caso perdido nem escondido atrás de rename)
  • O conjunto de símbolos públicos do módulo de import é idêntico antes e depois; nenhum arquivo fora do módulo precisa mudar
  • Cada submódulo contém só a sua preocupação, e cada bloco de teste vive junto do código que exercita
  • Comentários de racional existentes preservados na migração
  • Gate completo verde (npm run check)

Blocked by

None — can start immediately (independente do ticket do fixture de paridade).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    ready-for-agentPronto para um agente executar

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions