npm package: @marcos_feitoza/personal-finance-frontend-feature-management
Description: Este pacote contém a implementação das telas para gerenciamento detalhado de transações e para o processo de conciliação na aplicação Personal Finance Frontend.
Latest version: 1.3.0

# Feature: Gerenciamento (Frontend Flutter)

Este pacote contém a implementação das telas para gerenciamento detalhado de transações e para o processo de conciliação na aplicação Personal Finance Frontend.

## Propósito

O objetivo deste pacote é fornecer ao usuário ferramentas para revisar, editar e deletar transações, bem como para realizar a conciliação de contas, garantindo a exatidão dos registros financeiros.

## Conteúdo Principal

-   **`lib/screens/manage_transactions_screen.dart`**: Tela para visualizar, editar e deletar transações individuais.
-   **`lib/screens/reconciliation_screen.dart`**: Tela dedicada ao processo de conciliação de contas.
-   **`lib/screens/credit_card_statement_import_screen.dart`**: Tela para importar extratos de cartão de crédito via **CSV** (com preview, classificação e importação em lote).

---

## Como Usar (Instalação como Dependência)

Este pacote é uma dependência local para a aplicação principal (`personal-finance-frontend`).

No `pubspec.yaml` da aplicação principal, adicione a seguinte linha em `dependencies`:

```yaml
personal_finance_frontend_feature_management:
  path: ../personal-finance-frontend-feature-management
```

## Features

-   **Gestão de Transações**: Permite ao usuário visualizar um histórico completo de transações, com opções de edição e exclusão.
-   **Conciliação de Contas**: Oferece um fluxo guiado para conciliar transações com extratos bancários, identificando e corrigindo discrepâncias.
-   **Filtros Avançados**: Ferramentas para filtrar transações por tipo, método de pagamento, data, etc.

### Importação de Extrato (CSV) — Cartão de Crédito (MVP)

Esta feature adiciona uma tela para importar transações de cartão de crédito a partir de arquivos **.csv** (parse client-side), com:

- **Upload e preview** das linhas do CSV antes de salvar
- **Excluir linhas** (ex.: pagamentos do cartão)
- **Classificar** (category/subcategory) antes de importar
- **Criar category/subcategory na hora** (e salvar também em *Categories Settings*)
- **Detecção de duplicatas** por fingerprint (date + amount + type + description)

#### Onde acessar

- **Menu → Management → Import Statement (CSV)**
- (Atalho no Dashboard) Card *Credit Cards* → botão **Import statement** (abre a tela direto e já preseleciona o cartão)

#### Formatos suportados (inicial)

- **BMO**: colunas `Transaction Date` (YYYYMMDD), `Transaction Amount`, `Description`
- **RBC**: colunas `Date de l'opération` (M/D/YYYY), `Description 1`, `Description 2`, `CAD$`

> Observação (RBC): linhas com valores **positivos** normalmente representam *pagamento do cartão / refunds*. Por padrão, elas aparecem no preview mas vêm **excluídas** (não serão importadas) para evitar bagunçar a conciliação.

#### Fluxo recomendado

1. Faça upload do CSV
2. Clique em **Exclude payments** (opcional, ajuda a remover linhas como PAYMENT/THANK YOU)
3. Para as linhas que serão importadas, defina **Category/Subcategory**
   - Use **Create item** para criar uma category/subcategory sem sair da tela
   - Use **Apply to all** para aplicar a mesma classificação a todas as linhas com a mesma descrição
4. Clique em **Import** para gravar as transações no backend

#### Como funciona a dedupe

Ao carregar o CSV, a tela:

1) calcula o range de datas do arquivo (min..max)
2) busca transações existentes no backend para o mesmo cartão no mesmo período
3) marca como **Duplicate** as linhas equivalentes e desmarca a importação dessas linhas

Isso ajuda também em casos de *overlap* de período (ex.: importar 01–15 e depois 14–30).