MDX Limo
Relatório — KPIs e Métricas para Tela de Dashboard

Relatório — KPIs e Métricas para Tela de Dashboard

Projeto: tmc-records — gestão de processos jurídicos previdenciários/INSS Stack: Next.js 16 · React 19 · HeroUI v3 · Tailwind v4 · Prisma 7 / MySQL Data: 2026-06-23 Autor: análise automatizada do código e do schema do banco


1. Sumário executivo

O sistema acompanha o ciclo de vida completo de processos (administrativos e judiciais), desde o protocolo até o resultado final, registrando cada mudança de estado como uma movimentação (trilha de auditoria). O modelo de dados é rico em dimensões categóricas (tipo, subtipo, estado, resultado, perícia médica, avaliação social, judicial/administrativo) e rico em dados temporais (dataProtocolo, createdAt, ultimaMovimentacaoAt, Movimentacao.createdAt).

Isso permite um dashboard forte em três frentes:

  • Volume e tendência — quantos processos entram, em que estados estão, ritmo de movimentações.
  • Performance / conversão — taxa de sucesso, conversão de perícia, performance por captador/perito.
  • Operação e gargalos — processos parados, tempo de tramitação, distribuição de carga.

Hoje não existe nenhuma tela de dashboard e nenhuma biblioteca de gráficos está instalada. Este relatório lista 31 KPIs (acima do mínimo de 20 pedido), agrupados por importância, cada um já com o tipo de gráfico recomendado (linha, barra ou pizza) e a fonte de dados no schema.


2. Contexto técnico e limitações dos dados

Pontos importantes que condicionam o desenho do dashboard — leia antes dos KPIs:

#LimitaçãoImpacto
1Não há campo monetário em lugar nenhum (sem valor da causa, honorários, valor de RPV/acordo).KPIs financeiros são impossíveis hoje. Recomenda-se adicionar um campo valorCausa/valorAcordo em Processo para habilitar faturamento, ticket médio etc. (ver §5).
2Não há flag explícita de "ativo/encerrado".O conceito de processo ativo precisa ser inferido: ativo = resultado IS NULL (ainda em andamento); finalizado = resultado preenchido. Os estados terminais (SENTENCA_POSITIVA/NEGATIVA, EXTINTO_SEM_MERITO, RPV) também ajudam. Essa regra deve ser definida de forma única e reutilizada.
3periciaMedica/avaliacaoSocial podem ser nulos.Em conversões, separar "ainda sem perícia" (nulo / AGUARDANDO_PERICIA) de "periciado".
4O repositório (prisma-processo.repository.ts) hoje só expõe search, findById, findDetailById, feed, create, saveMovimentacao. Não há count/groupBy exposto.Para o dashboard será necessário adicionar métodos de agregação (Prisma já suporta groupBy/aggregate). Ver §5.
5dataProtocolo é opcional (DateTime?).Para séries temporais por data de protocolo, tratar nulos (cair para createdAt como fallback ou excluir).
6Movimentacao guarda snapshots de estado com createdAt.Permite reconstruir transições de estado e medir tempo em cada estado — base para métricas de funil e gargalo.

Convenção de "resultado favorável" usada neste relatório (favorável = ganho para o cliente): PROCEDENTE, CONCEDIDO_ADM, CONCLUIU_ADM. Desfavorável/perda: IMPROCEDENTE, EXTINTO_SEM_MERITO, FALTA_CUMPRIMENTO_EXIGENCIA, PENDENCIA_NAO_RESOLVIDA. Abandono/sem mérito: DESISTIU, CANCELOU, SEM_CONTATO, FALECEU. Essa classificação deve ser confirmada com o negócio.


3. KPIs por nível de importância

Legenda de gráfico: 🟦 Card (número único) · 📈 Linha · 📊 Barra · 🥧 Pizza/Donut · 🔻 Funil.

🔴 Crítica — visão de topo (cards + gráficos principais)

São os indicadores que respondem "como o escritório está agora?". Devem ocupar o topo da tela.

#KPICálculo / definiçãoDimensãoGráfico
1Processos ativosContagem de Processo com resultado IS NULL (em andamento).🟦 Card
2Taxa de sucesso globalfavoráveis ÷ finalizados (com resultado preenchido). Favoráveis = PROCEDENTE+CONCEDIDO_ADM+CONCLUIU_ADM.🟦 Card (com gauge)
3Distribuição por resultadoContagem agrupada por resultado (11 valores).resultado🥧 Pizza
4Novos processos por mêsContagem por mês de dataProtocolo (fallback createdAt). Tendência de entrada.tempo (mês)📈 Linha
5Processos por estado atual (pipeline)Contagem agrupada por estado (13 valores). Mostra onde a carteira está concentrada.estado📊 Barra
6Atividade — movimentações por dia/semanaContagem de Movimentacao por dia/semana (createdAt). Ritmo de trabalho.tempo (dia)📈 Linha
7Distribuição por tipo de processoContagem por tipo (12 valores: aposentadorias, BPC, auxílio-doença, trabalhista...).tipo📊 Barra
8Judicial × administrativoProporção foiJudicial = true vs false.foiJudicial🥧 Pizza

🟠 Alta — indicadores operacionais

Respondem "onde melhorar a operação e quem performa melhor?".

#KPICálculo / definiçãoDimensãoGráfico
9Taxa de conversão da perícia médicapericiaMedica = POSITIVO ÷ total periciado (exclui AGUARDANDO_PERICIA/MARCADA/nulo).🟦 Card
10Distribuição de perícia médicaContagem por periciaMedica (POSITIVO, NEGATIVO, FALTOU, MAIS_OU_MENOS, MARCADA, AGUARDANDO).periciaMedica🥧 Pizza ou 📊 Barra
11Distribuição de avaliação socialContagem por avaliacaoSocial (POSITIVO, NEGATIVO, AGUARDANDO).avaliacaoSocial🥧 Pizza
12Top captadores por volumeContagem de processos por captadorId, ordenado desc (Top N). Mede origem de demanda.captador📊 Barra horizontal
13Taxa de sucesso por captadorFavoráveis ÷ finalizados, agrupado por captador. Qualidade da captação, não só volume.captador📊 Barra
14Processos por competência / UFContagem por competenciaId (e por uf). Distribuição geográfica/jurisdicional.competencia/uf📊 Barra
15Tempo médio de tramitaçãoMédia de (data do resultadodataProtocolo) em dias, total e por tipo.tipo🟦 Card + 📊 Barra
16Processos estagnadosContagem de ativos com ultimaMovimentacaoAt mais antiga que N dias (ex.: 30/60/90). Alerta de SLA.faixa de dias🟦 Card + 📊 Barra
17Carga de trabalho por peritoContagem de processos/movimentações por peritoId. Balanceamento de carga.perito📊 Barra
18Distribuição por subtipoContagem por subtipo (PREV_ADM, PREV_JUD, TRABALHISTA, RECLAMACAO, DEFESA, CIVEL, LIDE_SIMULADA).subtipo📊 Barra

🟡 Média — analítica e drill-down

Para análise mais profunda, normalmente em uma segunda dobra da tela ou em telas de detalhe.

#KPICálculo / definiçãoDimensãoGráfico
19Top CIDs/doenças mais frequentesContagem de processos por CID (doencas — N:N). Top N códigos.cid📊 Barra horizontal
20Taxa de sucesso por tipo de processoFavoráveis ÷ finalizados, agrupado por tipo. Quais ações ganham mais.tipo📊 Barra
21Taxa de absenteísmo em períciapericiaMedica = FALTOU ÷ total agendado, ao longo do tempo.tempo📈 Linha + 🟦 Card
22Funil de conversãoEtapas: protocolado → perícia realizada → laudo positivo → sentença positiva. Quantos sobrevivem a cada etapa.etapas🔻 Funil
23Motivos de insucesso/abandonoDistribuição entre DESISTIU, SEM_CONTATO, IMPROCEDENTE, CANCELOU, EXTINTO_SEM_MERITO, FALECEU.resultado (subset)🥧 Pizza
24Sucesso judicial × administrativoTaxa de sucesso comparada entre foiJudicial = true e false.foiJudicial📊 Barra comparativa
25Tempo médio em cada estadoPara cada estado, média do intervalo entre a movimentação que entrou nele e a próxima (Movimentacao.createdAt). Identifica gargalos.estado📊 Barra
26Atividade por usuárioContagem de movimentações criadas por criadoPorId. Produtividade da equipe.user📊 Barra

🟢 Baixa — saúde de dados, governança e crescimento

Indicadores de qualidade e administração; baixa frequência de consulta, mas importantes para confiança nos dados.

#KPICálculo / definiçãoDimensãoGráfico
27Processos com dados incompletosContagem de processos sem captadorId, sem dataProtocolo ou sem CID associado. Qualidade do cadastro.🟦 Card + 📊 Barra
28Crescimento da base cadastralCaptadores, peritos e competências criados por mês (createdAt). Expansão da operação.tempo📈 Linha
29Usuários ativos × inativosProporção User.active = true vs false.active🥧 Pizza
30Processos por usuário criadorContagem por criadoPorId em Processo. Auditoria de origem dos cadastros.user📊 Barra
31Cobertura perícia social × médicaQuantos processos têm avaliação social vs médica preenchida (não-nula). Cobertura de etapas.etapa📊 Barra empilhada

Total: 31 KPIs — 8 críticos, 10 de alta, 8 de média e 5 de baixa importância. Os três tipos de gráfico pedidos (linha, barra, pizza) estão amplamente cobertos, além de cards e funil.


4. Mapa visual sugerido da tela

1┌──────────────────────────────────────────────────────────────────────┐ 2│ [Card #1 Ativos] [Card #2 Sucesso%] [Card #9 Conv.Perícia%] [#16] │ ← cards de topo 3├───────────────────────────────────┬──────────────────────────────────┤ 4│ 📈 #4 Novos processos/mês (linha) │ 🥧 #3 Resultado (pizza) │ 5├───────────────────────────────────┼──────────────────────────────────┤ 6│ 📊 #5 Pipeline por estado (barra) │ 🥧 #8 Judicial×Adm (pizza) │ 7├───────────────────────────────────┼──────────────────────────────────┤ 8│ 📈 #6 Movimentações/dia (linha) │ 📊 #7 Por tipo (barra) │ 9├───────────────────────────────────┴──────────────────────────────────┤ 10│ 📊 #12 Top captadores │ 📊 #14 Por UF │ 📊 #19 Top CIDs │ ← drill-down 11├────────────────────────────────────────────────────────────────────────┤ 12│ 🔻 #22 Funil de conversão │ 📊 #25 Tempo médio por estado │ 13└──────────────────────────────────────────────────────────────────────┘
  • Filtros globais sugeridos: período (data de protocolo / movimentação), tipo, subtipo, competencia/UF, captador, foiJudicial. Reaproveitar os filtros já existentes no feed() (clienteNome, from, to) como ponto de partida.

5. Recomendações de implementação

  1. Biblioteca de gráficos — não há nenhuma instalada. Opções compatíveis com React 19/Next 16:

    • Recharts (mais simples, declarativo, cobre linha/barra/pizza com facilidade);
    • visx ou ECharts (mais poder, inclui funil para o KPI #22). Verificar primeiro se o HeroUI v3 já oferece componentes de chart antes de adicionar dependência (consultar a doc HeroUI via MCP).
  2. Camada de agregação no repositório — adicionar métodos ao ProcessoRepository / MovimentacaoRepository usando prisma.processo.groupBy(...), count e aggregate. Sugestão de assinaturas:

    • countByEstado(), countByResultado(), countByTipo(), countBySubtipo();
    • countByCaptador(), countByPerito(), countByCompetencia();
    • novosPorMes(from, to), movimentacoesPorDia(from, to);
    • estagnados(diasSemMovimentacao: number). Encapsular tudo num use case GetDashboardMetricsUseCase que monta o payload da tela, seguindo o padrão de camadas (domain/application/infrastructure/presentation) já usado nos módulos existentes.
  3. Definir regra única de status — criar um helper de domínio (ex.: isAtivo(processo) / classificarResultado(resultado)) para que "ativo", "favorável" e "abandono" tenham uma única fonte de verdade reutilizada por todos os KPIs.

  4. Considerar um campo monetário (evolução futura) — adicionar valorCausa e/ou valorAcordo em Processo habilitaria uma categoria inteira de KPIs financeiros de alto valor: faturamento estimado, ticket médio por tipo, valor em RPV, valor recuperado por captador. Hoje impossível por ausência do dado.

  5. Performance — para dashboards com muitos groupBy, avaliar índices adicionais (ex.: em Processo.estado, Processo.resultado, Processo.tipo) e/ou cache leve do payload de métricas, já que esses dados mudam com baixa frequência relativa.


6. Apêndice — dimensões disponíveis no schema

DimensãoCampoCardinalidadeBom para
Tipo de processoProcesso.tipo12Barra
SubtipoProcesso.subtipo7Barra
Estado atualProcesso.estado13Barra / Funil
ResultadoProcesso.resultado11Pizza
Perícia médicaProcesso.periciaMedica6Pizza
Avaliação socialProcesso.avaliacaoSocial3Pizza
JudicialProcesso.foiJudicial2 (bool)Pizza
Competência / UFCompetencia.nome / ufmuitos / 27Barra
CaptadorCaptadormuitosBarra (ranking)
PeritoPeritomuitosBarra
Doença (CID)Cid (N:N)muitosBarra (ranking)
UsuárioUser (criadoPorId)muitosBarra
Papel do usuárioUser.role2Pizza
DatasdataProtocolo, createdAt, ultimaMovimentacaoAt, Movimentacao.createdAtcontínuoLinha

Campos ausentes (oportunidades futuras): valores monetários, flag de status ativo/encerrado, data de encerramento explícita, prazos/SLA formais.

Relatório — KPIs e Métricas para Tela de Dashboard | MDX Limo