feat: importação de extratos OFX/XLS com memória de categorias

Adiciona fluxo completo de importação de extratos bancários:
- Upload e parsing de arquivos OFX e XLS/XLSX
- Tela de revisão com virtualização (@tanstack/react-virtual)
- Detecção automática de categoria por histórico de uso
- Deduplicação por FITID (OFX) e importBatchId
- Tabela `import_category_mappings` para persistir mapeamentos
- Botão de acesso ao fluxo na tabela de transações

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Felipe Coutinho
2026-03-21 14:04:30 +00:00
parent deb7c775f8
commit a20fe255f3
22 changed files with 6897 additions and 152 deletions

View File

@@ -15,6 +15,7 @@ import {
RiFileCopyLine,
RiFileList2Line,
RiFlashlightFill,
RiFileExcel2Line,
RiGroupLine,
RiHistoryLine,
RiMoreFill,
@@ -984,6 +985,22 @@ export function TransactionsTable({
</TooltipContent>
</Tooltip>
) : null}
<Tooltip>
<TooltipTrigger asChild>
<Button
onClick={() => router.push("/transactions/import")}
variant="outline"
size="icon"
className="hidden size-9 sm:inline-flex"
>
<RiFileExcel2Line className="size-4" />
<span className="sr-only">Importar extrato</span>
</Button>
</TooltipTrigger>
<TooltipContent>
<p>Importar extrato</p>
</TooltipContent>
</Tooltip>
</div>
) : (
<span className={showFilters ? "hidden sm:block" : ""} />