Skip to main content

Dashboards

Visão Geral

O módulo de dashboards do RiskFlow consolida informações e métricas chave em painéis visuais, oferecendo uma visão rápida e abrangente do estado do sistema e do desempenho do fluxo de aprovação por alçada. Os dashboards são projetados para diferentes perfis de usuário (analistas, gestores, administradores) e podem ser personalizados para exibir os dados mais relevantes para cada função.

Endpoints

1. Buscar Dashboard Principal

Retorna os dados consolidados para o dashboard principal do usuário logado, adaptado ao seu perfil e permissões.

GET /api/dashboards/principal

Parâmetros de Consulta

ParâmetroTipoObrigatórioDescrição
periodostringNãoPeríodo para filtro das métricas (ex: "hoje", "semana", "mes", "trimestre", "ano", "personalizado")
data_iniciostring (date-time)NãoData inicial para filtro (formato: YYYY-MM-DDThh:mm:ssZ, obrigatório se periodo="personalizado")
data_fimstring (date-time)NãoData final para filtro (formato: YYYY-MM-DDThh:mm:ssZ, obrigatório se periodo="personalizado")

Exemplo de Requisição (cURL)

curl -X GET \
'http://localhost:3000/api/dashboards/principal?periodo=mes' \
-H 'x-api-key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...'

Exemplo de Requisição (JavaScript - Fetch API)

const token = localStorage.getItem('token');

fetch('http://localhost:3000/api/dashboards/principal?periodo=mes', {
method: 'GET',
headers: {
'x-api-key': token
}
})
.then(response => response.json())
.then(data => console.log('Dashboard principal:', data))
.catch(error => console.error('Erro ao buscar dashboard principal:', error));

Exemplo de Requisição (Node.js - Axios)

const axios = require('axios');
const token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...';

axios.get('http://localhost:3000/api/dashboards/principal', {
params: {
periodo: 'mes'
},
headers: {
'x-api-key': token
}
})
.then(response => {
console.log('Dashboard principal:', response.data);
})
.catch(error => console.error('Erro ao buscar dashboard principal:', error));

Resposta de Sucesso (200 OK - Exemplo para Analista)

{
"usuario": {
"id": "550e8400-e29b-41d4-a716-446655440003",
"nome": "João Silva",
"perfil": "Analista"
},
"periodo": {
"tipo": "mes",
"inicio": "2025-05-01T00:00:00Z",
"fim": "2025-05-31T23:59:59Z"
},
"widgets": [
{
"id": "analises_pendentes_minhas",
"titulo": "Minhas Análises Pendentes",
"tipo": "contador",
"valor": 12,
"link": "/analises?status=pendente&responsavel=me"
},
{
"id": "analises_concluidas_minhas",
"titulo": "Minhas Análises Concluídas (Mês)",
"tipo": "contador",
"valor": 35,
"comparativo_anterior": 30,
"tendencia": "aumento"
},
{
"id": "tempo_medio_meu",
"titulo": "Meu Tempo Médio de Análise (Mês)",
"tipo": "medidor",
"valor": 1.8,
"unidade": "dias",
"meta": 2.0,
"status": "dentro_meta"
},
{
"id": "sla_proximas_minhas",
"titulo": "Minhas Análises Próximas do SLA",
"tipo": "lista",
"itens": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"codigo": "ANL-2025-0001",
"prazo_sla": "2025-06-05T14:30:00Z",
"tempo_restante": "1d 23h"
},
{
"id": "550e8400-e29b-41d4-a716-446655440007",
"codigo": "ANL-2025-0008",
"prazo_sla": "2025-06-06T10:00:00Z",
"tempo_restante": "2d 14h"
}
],
"limite": 5,
"link": "/analises?status=pendente&responsavel=me&sla=proximo"
},
{
"id": "ultimas_notificacoes",
"titulo": "Últimas Notificações",
"tipo": "feed",
"itens": [
{
"id": "550e8400-e29b-41d4-a716-446655440100",
"texto": "Nova análise ANL-2025-0015 atribuída a você.",
"timestamp": "2025-06-03T10:00:00Z",
"lida": false
},
{
"id": "550e8400-e29b-41d4-a716-446655440101",
"texto": "Análise ANL-2025-0005 aprovada.",
"timestamp": "2025-06-02T15:30:00Z",
"lida": true
}
],
"limite": 5,
"link": "/notificacoes"
}
]
}

Resposta de Sucesso (200 OK - Exemplo para Gestor)

{
"usuario": {
"id": "550e8400-e29b-41d4-a716-446655440004",
"nome": "Maria Oliveira",
"perfil": "Gestor"
},
"periodo": {
"tipo": "mes",
"inicio": "2025-05-01T00:00:00Z",
"fim": "2025-05-31T23:59:59Z"
},
"widgets": [
{
"id": "analises_pendentes_equipe",
"titulo": "Análises Pendentes (Equipe)",
"tipo": "contador",
"valor": 45,
"link": "/analises?status=pendente&equipe=minha"
},
{
"id": "tempo_medio_equipe",
"titulo": "Tempo Médio de Análise (Equipe - Mês)",
"tipo": "medidor",
"valor": 3.2,
"unidade": "dias",
"comparativo_anterior": 3.5,
"tendencia": "melhoria"
},
{
"id": "taxa_aprovacao_equipe",
"titulo": "Taxa de Aprovação (Equipe - Mês)",
"tipo": "percentual",
"valor": 70.83,
"comparativo_anterior": 68.0,
"tendencia": "melhoria"
},
{
"id": "sla_vencidas_equipe",
"titulo": "Análises Vencidas (Equipe)",
"tipo": "contador",
"valor": 3,
"link": "/analises?status=pendente&equipe=minha&sla=vencido"
},
{
"id": "carga_trabalho_equipe",
"titulo": "Carga de Trabalho por Analista",
"tipo": "grafico_barras",
"dados": {
"labels": ["João Silva", "Carlos Santos", "Ana Pereira"],
"datasets": [
{
"label": "Análises Pendentes",
"data": [12, 8, 15]
}
]
},
"link": "/metricas/carga-trabalho"
},
{
"id": "ultimas_auditorias_equipe",
"titulo": "Últimas Ações da Equipe",
"tipo": "feed",
"itens": [
{
"id": "550e8400-e29b-41d4-a716-446655440200",
"texto": "João Silva aprovou a análise ANL-2025-0001.",
"timestamp": "2025-05-15T14:30:00Z"
},
{
"id": "550e8400-e29b-41d4-a716-446655440201",
"texto": "Carlos Santos adicionou parecer à análise ANL-2025-0002.",
"timestamp": "2025-05-15T14:29:45Z"
}
],
"limite": 5,
"link": "/auditoria?equipe=minha"
}
]
}

2. Buscar Dashboard de Métricas

Retorna dados específicos para o dashboard de métricas, focando em KPIs de desempenho.

GET /api/dashboards/metricas

Parâmetros de Consulta

ParâmetroTipoObrigatórioDescrição
periodostringNãoPeríodo para filtro (ex: "hoje", "semana", "mes", "trimestre", "ano", "personalizado")
data_iniciostring (date-time)NãoData inicial para filtro (formato: YYYY-MM-DDThh:mm:ssZ, obrigatório se periodo="personalizado")
data_fimstring (date-time)NãoData final para filtro (formato: YYYY-MM-DDThh:mm:ssZ, obrigatório se periodo="personalizado")
tipo_analise_iduuidNãoFiltrar por tipo de análise
nivel_alcada_iduuidNãoFiltrar por nível de alçada

Exemplo de Requisição (cURL)

curl -X GET \
'http://localhost:3000/api/dashboards/metricas?periodo=trimestre&tipo_analise_id=550e8400-e29b-41d4-a716-446655440040' \
-H 'x-api-key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...'

Exemplo de Requisição (JavaScript - Fetch API)

const token = localStorage.getItem('token');

const params = new URLSearchParams({
periodo: 'trimestre',
tipo_analise_id: '550e8400-e29b-41d4-a716-446655440040'
});

fetch(`http://localhost:3000/api/dashboards/metricas?${params.toString()}`, {
method: 'GET',
headers: {
'x-api-key': token
}
})
.then(response => response.json())
.then(data => console.log('Dashboard de métricas:', data))
.catch(error => console.error('Erro ao buscar dashboard de métricas:', error));

Resposta de Sucesso (200 OK)

{
"periodo": {
"tipo": "trimestre",
"inicio": "2025-04-01T00:00:00Z",
"fim": "2025-06-30T23:59:59Z"
},
"filtros_aplicados": {
"tipo_analise_id": "550e8400-e29b-41d4-a716-446655440040",
"tipo_analise_nome": "Análise de Crédito"
},
"widgets": [
{
"id": "kpi_tempo_medio_geral",
"titulo": "Tempo Médio Geral",
"tipo": "kpi",
"valor": 3.1,
"unidade": "dias",
"comparativo_anterior": 3.4,
"tendencia": "melhoria"
},
{
"id": "kpi_taxa_aprovacao_geral",
"titulo": "Taxa de Aprovação Geral",
"tipo": "kpi",
"valor": 72.5,
"unidade": "%",
"comparativo_anterior": 68.0,
"tendencia": "melhoria"
},
{
"id": "kpi_cumprimento_sla",
"titulo": "Cumprimento de SLA",
"tipo": "kpi",
"valor": 88.0,
"unidade": "%",
"comparativo_anterior": 84.0,
"tendencia": "melhoria"
},
{
"id": "grafico_tempo_medio_nivel",
"titulo": "Tempo Médio por Nível de Alçada",
"tipo": "grafico_barras",
"dados": {
"labels": ["Analista", "Gestor", "Diretor"],
"datasets": [
{
"label": "Tempo Médio (dias)",
"data": [1.6, 1.1, 0.4]
}
]
}
},
{
"id": "grafico_taxa_aprovacao_mes",
"titulo": "Taxa de Aprovação Mensal",
"tipo": "grafico_linhas",
"dados": {
"labels": ["Abril", "Maio", "Junho"],
"datasets": [
{
"label": "Taxa de Aprovação (%)",
"data": [68.0, 70.8, 78.7]
}
]
}
},
{
"id": "tabela_metricas_tipo_analise",
"titulo": "Métricas por Tipo de Análise",
"tipo": "tabela",
"colunas": ["Tipo de Análise", "Tempo Médio (dias)", "Taxa Aprovação (%)", "Cumprimento SLA (%)"],
"linhas": [
["Análise de Crédito", 3.1, 72.5, 88.0],
["Análise de Garantias", 2.8, 75.0, 90.5],
["Análise de Limite", 3.5, 68.0, 85.0]
]
}
]
}

3. Buscar Dashboard de Auditoria

Retorna dados específicos para o dashboard de auditoria, focando em atividades recentes e segurança.

GET /api/dashboards/auditoria

Parâmetros de Consulta

ParâmetroTipoObrigatórioDescrição
periodostringNãoPeríodo para filtro (ex: "hoje", "semana", "mes")

Exemplo de Requisição (cURL)

curl -X GET \
'http://localhost:3000/api/dashboards/auditoria?periodo=semana' \
-H 'x-api-key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...'

Exemplo de Requisição (Node.js - Axios)

const axios = require('axios');
const token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...';

axios.get('http://localhost:3000/api/dashboards/auditoria', {
params: {
periodo: 'semana'
},
headers: {
'x-api-key': token
}
})
.then(response => {
console.log('Dashboard de auditoria:', response.data);
})
.catch(error => console.error('Erro ao buscar dashboard de auditoria:', error));

Resposta de Sucesso (200 OK)

{
"periodo": {
"tipo": "semana",
"inicio": "2025-05-27T00:00:00Z",
"fim": "2025-06-03T23:59:59Z"
},
"widgets": [
{
"id": "total_eventos_auditoria",
"titulo": "Total de Eventos (Semana)",
"tipo": "contador",
"valor": 350
},
{
"id": "eventos_por_nivel",
"titulo": "Eventos por Nível (Semana)",
"tipo": "grafico_pizza",
"dados": {
"labels": ["Info", "Alerta", "Erro", "Crítico"],
"datasets": [
{
"data": [320, 20, 8, 2]
}
]
}
},
{
"id": "operacoes_mais_frequentes",
"titulo": "Operações Mais Frequentes (Semana)",
"tipo": "grafico_barras_horizontais",
"dados": {
"labels": ["Atualizar Análise", "Visualizar Análise", "Criar Parecer", "Autenticar"],
"datasets": [
{
"label": "Quantidade",
"data": [150, 80, 50, 30]
}
]
}
},
{
"id": "usuarios_mais_ativos",
"titulo": "Usuários Mais Ativos (Semana)",
"tipo": "lista",
"itens": [
{"nome": "João Silva", "eventos": 120},
{"nome": "Maria Oliveira", "eventos": 95},
{"nome": "Carlos Santos", "eventos": 80}
],
"limite": 5
},
{
"id": "ultimos_eventos_criticos",
"titulo": "Últimos Eventos Críticos",
"tipo": "feed",
"itens": [
{
"id": "550e8400-e29b-41d4-a716-446655440210",
"texto": "Falha na autenticação (IP: 203.0.113.15)",
"timestamp": "2025-06-02T09:15:00Z"
},
{
"id": "550e8400-e29b-41d4-a716-446655440211",
"texto": "Tentativa de exclusão não autorizada (Usuário: Ana Pereira)",
"timestamp": "2025-05-30T11:00:00Z"
}
],
"limite": 5,
"link": "/auditoria?nivel=critico"
}
]
}

Tipos de Widgets

Os dashboards podem conter diferentes tipos de widgets para visualizar dados:

  • contador: Exibe um valor numérico único (ex: total de análises).
  • medidor: Exibe um valor em relação a uma meta (ex: tempo médio vs meta).
  • percentual: Exibe um valor percentual (ex: taxa de aprovação).
  • kpi: Exibe um Key Performance Indicator com valor, unidade e comparação com período anterior.
  • lista: Exibe uma lista de itens (ex: análises próximas do SLA).
  • feed: Exibe um fluxo de eventos ou notificações recentes.
  • grafico_barras: Gráfico de barras verticais.
  • grafico_barras_horizontais: Gráfico de barras horizontais.
  • grafico_linhas: Gráfico de linhas para tendências.
  • grafico_pizza: Gráfico de pizza para proporções.
  • tabela: Exibe dados em formato tabular.

Personalização

Embora os endpoints forneçam dashboards pré-configurados, a interface do usuário pode permitir a personalização, como:

  • Adicionar/Remover widgets.
  • Reordenar widgets.
  • Configurar filtros padrão para cada dashboard.
  • Salvar layouts de dashboard personalizados.

Melhores Práticas

  1. Foco no Usuário: Adapte os dashboards aos diferentes perfis e necessidades dos usuários.
  2. Clareza Visual: Utilize gráficos e visualizações claras e fáceis de entender.
  3. Dados Relevantes: Exiba apenas as informações mais importantes e acionáveis.
  4. Performance: Otimize as consultas para garantir que os dashboards carreguem rapidamente.
  5. Atualização: Defina uma frequência de atualização adequada para os dados do dashboard.

Próximos Passos

Agora que você entende como utilizar os dashboards, pode explorar:

  • Métricas - Para entender os dados exibidos nos dashboards de métricas
  • Métricas Avançadas - Para dados comparativos e preditivos nos dashboards
  • Auditoria - Para entender os dados exibidos no dashboard de auditoria
  • Exportação - Para exportar dados visualizados nos dashboards