## Módulo Análise de Produção

Painel completo para analisar reprovas/cancelamentos e performance por banco, usuário e operação.

### Estrutura

- **Upload** (`/production-analysis/upload`): aceita CSV/XLSX do pivot (“Status - Detalhado”). Trata encoding, valores monetários pt-BR, datas e caracteres quebrados. Cada upload gera histórico com usuário, linhas importadas/rejeitadas e totais bruto/líquido.
- **Dashboard** (`/production-analysis`): filtros em tempo real (banco, usuário, status, operação, período e busca textual), KPIs, gráficos (Top Bancos/Usuários, Operações, Banco x Operação), rankings e tabela detalhada com acesso ao drill-down de cada proposta.
- **Histórico**: dados ficam persistidos em `production_analysis_uploads` e `production_analysis_records`, permitindo auditoria e comparação entre uploads.

### Como usar

1. Execute as migrations SQL em `database/migrations/20251230_create_production_analysis_tables.sql`.
2. Garanta que o usuário possua papel **admin** ou **operations** (ou habilite a feature `production.analysis` no plano).
3. Acesse `/production-analysis/upload`, selecione o CSV/XLSX (separador `;`) e envie. Após o processamento o sistema redireciona para o dashboard filtrado pelo último upload.

### Formato do arquivo

| Coluna obrigatória | Observações |
|--------------------|-------------|
| `NOME FINANCEIRA`  | Banco que será exibido no dashboard. |
| `NUMERO ADESAO`    | Identificador único da proposta. |
| `DIGITADOR`        | Usuário/Digitador. |
| `DATA EMISSAO`     | Formato `dd/mm/aaaa` ou data Excel. |
| `VALOR BRUTO`, `VALOR LIQUIDO` | Valores pt-BR (`31.239,84`, `R$ 1.840,00`). |
| `STATUS REGISTRADO`| Usado para análises de cancelamento. |
| `DESCRICAO 3`      | Tipo de operação (Portabilidade, Refin, Cart, etc.). |
| Demais colunas (`DESCRICAO 1/2`, `CONVENIO`, `CPF CLIENTE`, etc.) ficam disponíveis no detalhe e busca textual. |

O parser ignora a linha “Status - Detalhado” caso exista e aceita variações simples de nomes (`BANCO`, `NÚMERO ADESÃO`, etc.).

### Seeder com arquivo de exemplo

1. Certifique-se de que o arquivo esteja disponível (o repositório contém `csv model/csv_model.csv`, equivalente ao `/mnt/data/Exporta-Status-Detalhado-20251229081629.csv` mencionado no briefing).
2. Execute:

```bash
php database/seeders/seed_production_analysis.php --file="csv model/csv_model.csv"
```

Isso copia o arquivo para `storage/production-analysis/` e usa o serviço oficial de importação, validando todo o fluxo.

### Troubleshooting

- **Erro de cabeçalho**: confira se os nomes das colunas estão conforme a tabela acima. O arquivo deve usar `;` como separador.
- **Arquivos grandes/acentuação quebrada**: o importador normaliza automaticamente valores numéricos e converte encoding para UTF-8. Linhas inválidas são registradas em `rows_rejected` do upload.
- **Sem dados no dashboard**: confirme se existe upload concluído e se o usuário atual possui permissão (`admin`/`operations` + feature `production.analysis`).
- **CSV vazio após filtro**: verifique o resumo de filtros exibido na parte superior ou clique em “Limpar filtros”.
