## Dashboard Analitico (Modulo 3)

### Resumo

- Visao consolidada de propostas com filtros dinamicos por periodo, produto, banco e equipe.
- Indicadores por perfil: administradores enxergam toda a base, corretores visualizam a equipe e funcionarios visualizam apenas propostas proprias.
- Cartoes de desempenho e funil se adaptam ao papel: administradores acompanham corretores, corretores enxergam o ranking da propria equipe e funcionarios nao recebem ranking, focando nas micro tarefas.
- Filtros padrao aplicam o mes corrente respeitando o timezone definido em `config/timezone`, evitando discrepancias ao cruzar dados com BI externo.
- Timeline com escala dinamica (agrupamento diario quando o intervalo filtrado &eacute; de at&eacute; 31 dias, mensal para ranges maiores) e eixo automaticamente formatado conforme o range (curto &rarr; dia/m&ecirc;s, longo &rarr; m&ecirc;s/ano).
- Resumo Finanto mant&eacute;m cards de status/timeline; os widgets de top corretores/integra&ccedil;&otilde;es foram removidos para evitar redund&acirc;ncia.
- Exportacoes em CSV/PDF e endpoint JSON para consumo externo (Power BI).
- Configuracao de metas (valor liberado e conversao) e token de API diretamente no painel.
- Novo atalho lateral **Minhas Tarefas** (perfil funcionario) consolida as micro tarefas em lista priorizada e exibe os selos em cards responsivos de largura total (sem o widget de “conjuntos ativos”).
- Em **Metas**, funcionarios visualizam apenas os blocos de tarefas e selos em cards individuais, mantendo as metas globais ocultas para evitar vazamento de dados da equipe.
- Interface do perfil funcionario com contraste refor&ccedil;ado em cards, tabelas e badges para leituras em ambiente escuro.
- Pop-ups contextuais avisam quando um selo &eacute; desbloqueado ou quando existe lembrete atrasado (um modal por lembrete, marcado como notificado).

### Como usar

1. Acesse `/dashboard` autenticado.
2. Utilize os filtros superiores e clique em **Aplicar** para atualizar widgets e graficos.
3. Os botoes **Exportar CSV** e **PDF** utilizam os filtros correntes.
4. Administradores tem um bloco adicional para definir metas e gerar o token da API:
   - Meta de valor liberado (R$) calcula alerta quando o somatorio de `disbursed_amount` esta abaixo.
   - Meta de conversao (%) compara com a taxa final (status finais positivos sobre finais).
   - O token deve ser enviado como parametro `?token=SEU_TOKEN` no endpoint externo.
5. Funcionarios contam com o atalho **Minhas Tarefas**, que exibe progresso dos conjuntos, tarefas ordenadas por prazo e os selos mais recentes.

### Notificacoes contextuais

- Quando um conjunto de micro tarefas gera um novo selo, o usuario recebe um modal de celebracao com a imagem e o nome do selo.
- Lembretes atrasados disparam um modal de alerta com acesso direto &agrave; agenda (`/reminders`). Os lembretes marcados como notificados nao reaparecem.

### Endpoint externo (Power BI)

- URL: `GET /api/analytics/loan-proposals?token=SEU_TOKEN&date_from=2025-01-01&date_to=2025-01-31`
- Resposta: JSON com `metrics` (mesma estrutura consumida pelo front) e lista `proposals` (campo reduzido a 2.000 registros para evitar uso excessivo).
- Parametros aceitos: `date_from`, `date_to`, `product_type`, `bank_id`, `broker_id`, `employee_id`, `status`.

### Regra de "Propostas pagas"

- Os cards **Valor pago**, **Propostas pagas** e **Conversao paga** usam o status e/ou data de pagamento da proposta.
- A regra considera como paga:
  - `lp.paid_at` preenchido, **ou**
  - status com tokens/labels equivalentes a pago (ex.: `saldo_quitado`, `paid`, `pago`, `liquidado`), **ou**
  - status pertencente ao `pipeline_group = after_sales` no catalogo de status.
- Para aplicar o periodo do filtro, a data de referencia segue `COALESCE(lp.paid_at, lp.updated_at, lp.created_at)`.
- Recomendacao: sempre preencher `paid_at` ao transicionar a proposta para pago para evitar discrepancias em periodos futuros.

### Validacao rapida

1. Aplique filtros distintos e confirme atualizacao de cards, tabelas e graficos.
2. Gere um CSV e verifique colunas (`ID`, status, valores).
3. Gere um PDF conferindo texto das secoes.
4. Ajuste metas e confirme exibicao/ocultacao de alertas.
5. Gere novo token, chame o endpoint (ex.: via Postman) e confirme retorno HTTP 200.
