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

{alertData.title}

{alertData.message}

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

{getSaudacao()}! 👋

Bem-vindo ao SGSE - Sistema de Gerenciamento de Secretaria

{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

4

de 5 total

Símbolos Cadastrados

{formatNumber(statsQuery.data.totalSimbolos)}

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

{#if activityQuery.data}

Atividade (24h)

{activityQuery.data.funcionariosCadastrados24h} cadastros

{/if}
{#if statusSistemaQuery?.data} {@const status = statusSistemaQuery.data} {@const atividade = atividadeBDQuery?.data || { historico: Array.from({ length: 30 }, () => ({ entradas: 0, saidas: 0 })) }} {@const distribuicao = distribuicaoQuery?.data || { queries: 0, mutations: 0, leituras: 0, escritas: 0 }} {@const maxAtividade = atividade.historico && atividade.historico.length > 0 ? Math.max( 1, ...atividade.historico.map((p) => Math.max(p.entradas || 0, p.saidas || 0)) ) : 1}

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)} {val} {/each}
{#each [0, 1, 2, 3, 4, 5] as i (i)}
{/each}
{#each atividade.historico || [] as ponto, idx (idx)} {@const entradas = ponto?.entradas || 0} {@const saidas = ponto?.saidas || 0}
↑ {entradas} entradas
↓ {saidas} saídas
{/each}
-60s -30s agora
Entradas no BD
Saídas do BD

Tipos de Operações

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

Operações no Banco

Leituras {distribuicao?.leituras ?? 0}
Escritas {distribuicao?.escritas ?? 0}
{/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

{:else}
Não foi possível carregar os dados do dashboard.
{/if}