{#if showAlert} {@const alertData = getAlertMessage()}
{alertData.icon}

{alertData.title}

{alertData.message}

{#if alertType === "access_denied"} {/if}
{/if}

{getSaudacao()}! 👋

Bem-vindo ao Sistema de Gerenciamento da Secretaria de Esportes

{currentTime.toLocaleDateString("pt-BR", { weekday: "long", year: "numeric", month: "long", day: "numeric", })} {" - "} {currentTime.toLocaleTimeString("pt-BR")}

Sistema Online
Atualizado
{#if statsQuery.isLoading}
{:else if statsQuery.data}

Total de Funcionários

{formatNumber(statsQuery.data.totalFuncionarios)}

{statsQuery.data.funcionariosAtivos} ativos

{calcPercentage(statsQuery.data.funcionariosAtivos, statsQuery.data.totalFuncionarios)}%

Solicitações Pendentes

{formatNumber(statsQuery.data.solicitacoesPendentes)}

de {statsQuery.data.totalSolicitacoesAcesso} total

Símbolos Cadastrados

{formatNumber(statsQuery.data.totalSimbolos)}

{statsQuery.data.cargoComissionado} CC / {statsQuery.data.funcaoGratificada} FG

{#if activityQuery.data}

Atividade (24h)

{formatNumber(activityQuery.data.funcionariosCadastrados24h + activityQuery.data.solicitacoesAcesso24h)}

{activityQuery.data.funcionariosCadastrados24h} cadastros

{/if}
{#if statusSistemaQuery.data && atividadeBDQuery.data && distribuicaoQuery.data} {@const status = statusSistemaQuery.data} {@const atividade = atividadeBDQuery.data} {@const distribuicao = distribuicaoQuery.data}

Monitoramento em Tempo Real

Atualizado a cada segundo • {new Date(status.ultimaAtualizacao).toLocaleTimeString('pt-BR')}

LIVE

Usuários Online

{status.usuariosOnline}

sessões ativas

Total Registros

{status.totalRegistros.toLocaleString('pt-BR')}

no banco de dados

Tempo Resposta

{status.tempoMedioResposta}ms

média atual

Uso do Sistema

CPU {status.cpuUsada}%
Memória {status.memoriaUsada}%

Atividade do Banco de Dados

Entradas e saídas em tempo real (último minuto)

Atualizando
{#each [10, 8, 6, 4, 2, 0] as val} {val} {/each}
{#each Array.from({length: 6}) as _, i}
{/each}
{#each atividade.historico as ponto, idx} {@const maxAtividade = Math.max(...atividade.historico.map(p => Math.max(p.entradas, p.saidas)))}
↑ {ponto.entradas} entradas
↓ {ponto.saidas} saídas
{/each}
-60s -30s agora
Entradas no BD
Saídas do BD

Tipos de Operações

Queries (Leituras) {distribuicao.queries}
Mutations (Escritas) {distribuicao.mutations}

Operações no Banco

Leituras {distribuicao.leituras}
Escritas {distribuicao.escritas}
{/if}

Status do Sistema

Banco de Dados Online
API Operacional
Backup Atualizado

Informações

Versão: 1.0.0

Última Atualização: {new Date().toLocaleDateString("pt-BR")}

Suporte: TI SGSE

{/if}