Files
comparador-notas/docs/FEATURES_BACKLOG.md
T
2026-03-04 18:18:11 -03:00

7.2 KiB
Raw Blame History

Backlog de Features — Comparador de Notas

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

Alta Prioridade

F-01 — Exportar Resultado em CSV.

Problema: O único formato de exportação é PDF. Para processar os resultados em ferramentas externas (Excel, Power BI, sistemas ERP), o usuário precisa redigitar dados do PDF.

Solução: Botão "Exportar CSV" na tela de resultado, gerando dois arquivos (ou um com duas seções):

  • faltantes.csv: serie,documento_tipo,numero
  • duplicatas.csv: serie,documento_tipo,numero,ocorrencias

Escopo técnico:

  • use case exportar_csv(resultado: &ResultadoAnalise, caminho: &Path)
  • Trait CsvExporter análoga à PdfGenerator (opcional, para testabilidade)
  • Botão na barra de ações da tela resultado.rs
  • Dependência csv já está no Cargo.toml

Esforço estimado: Médio (23h) Impacto: Alto — elimina retrabalho manual

Observações: Se não for muito custoso para implementar, pode ser uma boa ideia adicionar uma essa função.


F-02 — Validação de Tamanho de Arquivo (PRD RF01.3) (Implementado)

Status: Já implementado. Ambos csv_reader.rs e xlsx_reader.rs verificam o tamanho do arquivo antes de qualquer leitura via constante LIMITE_BYTES = 50 MB, retornando ErroArquivo::TamanhoExcedido se excedido — exibido como modal de erro pela UI.

Esforço estimado: Baixo (30min) — concluído Impacto: Médio — evita travamentos inesperados


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-04 — Busca por Número na Tela de Resultado (Util)

Problema: Com listas longas, o usuário precisa navegar páginas para verificar se um número específico está faltante ou duplicado.

Solução: Campo de busca no topo da tela de resultado. Ao digitar 1234, destaca se a nota:

  • está faltante (aparece na lista de faltantes)
  • está duplicada (aparece na lista de duplicatas)
  • está presente (está nas notas importadas)
  • não encontrada (fora do intervalo conhecido)

Escopo técnico:

  • Campo filtro_numero: String no App
  • Busca em resultado.faltantes_por_serie e resultado.duplicadas_por_serie
  • Para "presente": busca em app.notas_importadas (já mantido em memória)
  • Banner de resultado no topo da tela

Esforço estimado: Médio (23h) Impacto: Médio — uso diário em auditorias pontuais


F-05 — Recarregar Arquivo Sem Reconfigurar (Implementado)

Problema: Quando o usuário corrige o arquivo fonte e quer re-verificar, precisa navegar todo o fluxo novamente (selecionar arquivo → configurar colunas → analisar).

Solução: Botão "🔄 Reanalisar Arquivo" na tela de resultado que reimporta o mesmo caminho com o mesmo layout atual, sem nenhuma interação adicional.

Escopo técnico:

  • Persistir caminho_arquivo_atual: Option<PathBuf> no App (já existe parcialmente como nome_arquivo)
  • Reaproveitar o fluxo de executar_importacao() com os parâmetros atuais
  • Botão na barra de ações da tela resultado.rs

Esforço estimado: Baixo (1h) Impacto: Médio — elimina atrito no ciclo corrigir → verificar


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-01 Exportar resultado em CSV Médio Alto Alta
F-02 Validação de tamanho de arquivo Baixo Médio Alta
F-03 Preview de colunas antes da análise Alto Alto Média
F-04 Busca por número no resultado Médio Médio Média
F-06 Recarregar arquivo sem reconfigurar Baixo Médio 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
F-09 Agrupamento de faltantes no PDF Baixo Baixo-Médio Baixa Implementado