# 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 (2–3h) **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) (Implementar) **Problema:** O PRD especifica limite de 50 MB, mas não há validação implementada. Arquivos muito grandes podem travar a UI durante a leitura. **Solução:** Verificar `fs::metadata(caminho)?.len()` antes de iniciar importação. Exibir modal de erro se exceder o limite. **Escopo técnico:** - Adicionar checagem em `importar_arquivo.rs` antes de chamar CSV/XLSX reader - Constante `LIMITE_ARQUIVO_BYTES: u64 = 50 * 1024 * 1024` **Esforço estimado:** Baixo (30min) **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`: `{ numero: Result, serie: Result, valor: Result, ... }` - Widget de tabela em `configuracao_colunas.rs` - Atualizar preview ao mudar qualquer campo de configuração (via `changed()`) **Esforço estimado:** Alto (4–6h) **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 (2–3h) **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` 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 `100–104 (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 | |---|---|---|---|---| | 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 |