# Roadmap de Próximos Passos

Redeploy: atualização do segredo de provisionamento de máquinas aplicada na VPS. Este commit dispara o pipeline para atualizar a stack com o novo `.env`.

Lista priorizada de evoluções propostas para o Sistema de Chamados. Confira `agents.md` para visão geral, escopo atual e diretrizes de uso.

# 🧩 Permissões e acessos

- [x] Criar perfil **Gestor da Empresa (cliente)** com permissões específicas
  - [x] Ver todos os chamados da sua empresa
  - [x] Acessar relatórios e dashboards resumidos
  - [x] Exportar relatórios em PDF ou CSV
- [x] Manter perfis: Administrador, Gestor, Agente e Colaborador

---

# 🧾 Tickets e atendimentos

- [x] Adicionar opção **Exportar histórico completo em PDF** (conversa, logs, movimentações)
- [x] Implementar **justificativa obrigatória ao pausar** o chamado
  - [x] Categorias: Falta de contato / Aguardando terceiro / Em procedimento
- [x] Ajustar **status padrão dos tickets**
  - [x] Pendentes
  - [x] Aguardando atendimento
  - [x] Pausados
  - [x] (Remover “Aguardando resposta” e “Violados”)
- [x] Remover automaticamente da listagem ao finalizar o chamado

---

# 📊 Dashboards e relatórios

- [x] Criar **dashboard inicial com fila de atendimento**
  - [x] Exibir chamados em: atendimento, laboratório, visitas
  - [x] Indicadores: abertos, resolvidos, tempo médio, SLA
- [x] Criar **relatório de horas por cliente (CSV/Dashboard)**
  - [x] Separar por atendimento interno e externo
  - [x] Filtrar por período (dia, semana, mês)
- [x] Permitir exportar relatórios completos (CSV ou PDF)

---

# ⏱️ Controle de tempo e contratos

- [x] Adicionar botão **Play interno** (atendimento remoto)
- [x] Adicionar botão **Play externo** (atendimento presencial)
- [x] Separar contagem de horas por tipo (interno/externo)
- [x] Exibir e somar **horas gastas por cliente** (com base no tipo)
- [ ] Incluir no cadastro:
  - [ ] Horas contratadas por mês (Convex pronto; falta migração Prisma)
  - [x] Tipo de cliente: mensalista ou avulso
- [x] Enviar alerta automático por e-mail quando atingir limite de horas

---

# 💬 Comunicação e notificações

- [ ] Diferenciar **comentários públicos** e **privados**
  - [ ] Público → envia e-mail ao cliente
  - [ ] Privado → visível apenas internamente
- [ ] Enviar e-mail automático quando houver comentário público
  - [ ] Incluir trecho da mensagem e link direto para o chamado
- [x] Criar **biblioteca de templates de comentário prontos**
  - [x] Exemplo: “Agradecemos seu contato”, “Seu chamado foi atualizado”, etc.

---

# ⚙️ Extras e automações (futuro)

- [ ] Enviar alertas automáticos para gestores quando:
  - [ ] Chamado estiver pausado há mais de 48h
  - [x] Horas contratadas atingirem 90% do limite

---

## Arestas e observações (implantado)

- Alerta de horas por cliente (≥ 90%)
  - SMTP precisa estar configurado no Next e no Convex (envs SMTP_ e MAILER_SENDER_EMAIL) — sem isso o envio é pulado.
  - Cron executa de hora em hora e só dispara às 08:00 America/Sao_Paulo (config `ALERTS_LOCAL_HOUR`). Hoje o cálculo do “início do dia” usa `-03:00` fixo; revisar se houver mudança de offset/DST.
  - Prevenção de duplicados por empresa/dia é feita via consulta por intervalo. Podemos otimizar com índice específico (`by_tenant_company_created`).
  - Divergência de fonte de gestores: rota Next usa Prisma (role MANAGER), cron usa Convex. Ideal unificar a origem ou sincronizar regularmente.
  - Cliente SMTP atual usa AUTH LOGIN e `rejectUnauthorized: false`. Melhorar: validar certificado, timeout/retry e suporte a múltiplos destinatários.

- Painel de alertas enviados (Admin)
  - Filtros atuais (empresa/período) aplicados no client; quando o Convex estiver atualizado, mover filtros para a query para melhor desempenho.
  - Adicionar paginação/limite configurável e ordenação por colunas.

- Admin > Empresas — “Último alerta”
  - Endpoint agrega por slug em loop (N chamadas ao Convex). Melhorar com query em lote (por IDs/empresa) no Convex.
  - Exibir também percentual do uso e threshold para contexto.

- Relatórios com filtro de empresa (Backlog/SLA/CSAT)
  - CSVs já aceitam `companyId`. Garantir que o Convex esteja na versão com `companyId` opcional nos relatórios.
  - Considerar persistir seleção global de empresa (ex.: por sessão) para consistência entre páginas.

- Entrada de tickets por canal (dashboard)
  - Seletor de empresa com busca dentro do dropdown. Melhorias: limpar busca ao fechar o menu; paginar/virtualizar se lista for grande.
  - CSV acompanha `companyId` e período.

- Horas por cliente
  - Busca por nome e filtro por empresa aplicados no UI; CSV aceita `q` e `companyId` para exportar filtrado.
  - Considerar paginação e indicadores agregados (soma total por período; top N clientes).

- PDF do ticket
  - Usa Inter de `public/fonts` quando disponível; fallback para Helvetica. Em ambientes serverless, garantir acesso aos arquivos de fonte.
  - Melhorias possíveis: incorporar logo/cores por tenant e fontes customizadas por cliente.

- Tipos e testes
  - Removidos `any` nas áreas alteradas. Ainda há `any` em módulos antigos (tickets/mappers/admin). Plano: tipificar por módulo gradualmente.
  - Testes adicionados (CSV/TZ). Próximos: snapshots de CSVs de relatórios, validação de formatação de data/hora, e2e dos endpoints principais (modo mockado).
- [ ] Implementar **trilha de auditoria** (quem pausou, finalizou, comentou)
- [ ] Permitir exportar logs de auditoria (CSV/PDF)
