Files
comparador-notas/docs/FEATURES_BACKLOG.md
2026-03-04 22:46:27 -03:00

3.8 KiB
Raw Permalink Blame History

Backlog de Features — Comparador de Notas

Features avaliadas em 03/03/2026. Organizadas por categoria e esforço estimado.

Média Prioridade

F-03 — Preview de Colunas Antes da Análise (Isso já existe?)

Problema: Erros de mapeamento de colunas (índice errado, encoding incorreto) só são descobertos depois da importação, que pode falhar silenciosamente com "0 notas válidas".

Solução: Na tela de configuração de colunas, exibir uma tabela das primeiras 5 linhas mostrando como os campos serão interpretados, com highlight em células que falhariam o parse.

Escopo técnico:

  • Função pre_visualizar(caminho, layout, n_linhas: usize) -> Vec<LinhaPreview>
  • LinhaPreview: { numero: Result<u64>, serie: Result<String>, valor: Result<Decimal>, ... }
  • Widget de tabela em configuracao_colunas.rs
  • Atualizar preview ao mudar qualquer campo de configuração (via changed())

Esforço estimado: Alto (46h) Impacto: Alto — reduz drasticamente "por que não importou nada?"

Observações: Verificar se já existe no codigo, pois na tela de configuração do Layout ele exibe as 5 primeiras linhas do arquivo.


F-06 — Auto-detecção de Delimitador CSV (Util)

Problema: O usuário precisa saber antecipadamente qual delimitador o arquivo usa (,, ;, \t). Arquivos gerados por diferentes sistemas variam.

Solução: Ao selecionar o arquivo CSV, amostrar as primeiras 5 linhas e contar ocorrências de cada delimitador candidato. Sugerir o mais frequente como padrão, mantendo a ComboBox editável.

Escopo técnico:

  • Função detectar_delimitador(primeiras_linhas: &[&str]) -> char
  • Chamar na transição para ConfigurandoColunas quando TipoArquivo::Csv
  • Pré-selecionar na ComboBox sem impedir mudança manual

Esforço estimado: Médio (2h) Impacto: Baixo-Médio — reduz um passo de configuração na maioria dos casos


Baixa Prioridade

F-07 — Auto-detecção de Encoding CSV (Util)

Problema: Arquivos gerados por sistemas legados brasileiros frequentemente usam windows-1252, mas o padrão selecionado é utf-8. O usuário descobre o problema somente ao ver caracteres estranhos nos dados.

Solução: Tentar ler as primeiras linhas em utf-8; se houver erro de decodificação, sugerir automaticamente windows-1252 com aviso visual na tela de configuração.

Escopo técnico:

  • Função detectar_encoding(caminho: &Path) -> String
  • Usar encoding_rs (já dependência) para tentar decode e verificar had_errors
  • Aviso na tela de configuração: "Encoding detectado: windows-1252"

Esforço estimado: Médio (2h) Impacto: Baixo — problema raro, mas confuso quando ocorre


F-09 — Paginação Automática de Faltantes no PDF (Util)

Problema: PDFs com muitos faltantes (ex: 5.000 números) geram um único bloco de texto muito longo, difícil de ler e imprimir.

Solução: No pdf_generator.rs, ao adicionar a lista de faltantes, agrupar em intervalos contíguos (usando a função agrupar_contiguos já implementada) e formatar como 100104 (5 notas). Reduz drasticamente o tamanho do PDF e melhora legibilidade.

Escopo técnico:

  • Importar agrupar_contiguos em pdf_generator.rs
  • Substituir o join(", ") atual pelo formato de intervalos
  • Sem novas dependências

Esforço estimado: Baixo (30min) Impacto: Baixo-Médio — melhora legibilidade de PDFs com muitos faltantes

Nota: Esta feature é especialmente fácil porque a lógica de agrupamento já existe — é só aplicar no PDF.


Resumo

ID Feature Esforço Impacto Prioridade Status
F-03 Preview de colunas antes da análise Alto Alto Média
F-07 Auto-detecção de delimitador CSV Médio Baixo-Médio Média
F-08 Auto-detecção de encoding CSV Médio Baixo Baixa