refactor: improve layout and backend monitoring functionality

- Streamlined the layout component in Svelte for better readability and consistency.
- Enhanced the backend monitoring functions by updating argument structures and improving code clarity.
- Added new query functions for system status and database activity, providing better insights into system performance.
- Cleaned up existing code to ensure maintainability and improved error handling across various functions.
This commit is contained in:
2025-11-08 18:30:27 -03:00
parent 5d76c375c2
commit 4ed90d380d
5 changed files with 2737 additions and 2600 deletions

View File

@@ -1,69 +1,60 @@
<script lang="ts">
import { page } from "$app/state";
import ActionGuard from "$lib/components/ActionGuard.svelte";
import { Toaster } from "svelte-sonner";
import PushNotificationManager from "$lib/components/PushNotificationManager.svelte";
const { children } = $props();
import { page } from '$app/state';
import ActionGuard from '$lib/components/ActionGuard.svelte';
import { Toaster } from 'svelte-sonner';
import PushNotificationManager from '$lib/components/PushNotificationManager.svelte';
const { children } = $props();
// Resolver recurso/ação a partir da rota
const routeAction = $derived.by(() => {
const p = page.url.pathname;
if (p === "/" || p === "/solicitar-acesso") return null;
// Resolver recurso/ação a partir da rota
const routeAction = $derived.by(() => {
const p = page.url.pathname;
if (p === '/' || p === '/solicitar-acesso') return null;
// Funcionários
if (p.startsWith("/recursos-humanos/funcionarios")) {
if (p.includes("/cadastro"))
return { recurso: "funcionarios", acao: "criar" };
if (p.includes("/excluir"))
return { recurso: "funcionarios", acao: "excluir" };
if (p.includes("/editar") || p.includes("/funcionarioId"))
return { recurso: "funcionarios", acao: "editar" };
return { recurso: "funcionarios", acao: "listar" };
}
// Funcionários
if (p.startsWith('/recursos-humanos/funcionarios')) {
if (p.includes('/cadastro')) return { recurso: 'funcionarios', acao: 'criar' };
if (p.includes('/excluir')) return { recurso: 'funcionarios', acao: 'excluir' };
if (p.includes('/editar') || p.includes('/funcionarioId'))
return { recurso: 'funcionarios', acao: 'editar' };
return { recurso: 'funcionarios', acao: 'listar' };
}
// Símbolos
if (p.startsWith("/recursos-humanos/simbolos")) {
if (p.includes("/cadastro"))
return { recurso: "simbolos", acao: "criar" };
if (p.includes("/excluir"))
return { recurso: "simbolos", acao: "excluir" };
if (p.includes("/editar") || p.includes("/simboloId"))
return { recurso: "simbolos", acao: "editar" };
return { recurso: "simbolos", acao: "listar" };
}
// Símbolos
if (p.startsWith('/recursos-humanos/simbolos')) {
if (p.includes('/cadastro')) return { recurso: 'simbolos', acao: 'criar' };
if (p.includes('/excluir')) return { recurso: 'simbolos', acao: 'excluir' };
if (p.includes('/editar') || p.includes('/simboloId'))
return { recurso: 'simbolos', acao: 'editar' };
return { recurso: 'simbolos', acao: 'listar' };
}
// Outras áreas (uso genérico: ver)
if (p.startsWith("/financeiro"))
return { recurso: "financeiro", acao: "ver" };
if (p.startsWith("/controladoria"))
return { recurso: "controladoria", acao: "ver" };
if (p.startsWith("/licitacoes"))
return { recurso: "licitacoes", acao: "ver" };
if (p.startsWith("/compras")) return { recurso: "compras", acao: "ver" };
if (p.startsWith("/juridico")) return { recurso: "juridico", acao: "ver" };
if (p.startsWith("/comunicacao"))
return { recurso: "comunicacao", acao: "ver" };
if (p.startsWith("/programas-esportivos"))
return { recurso: "programas_esportivos", acao: "ver" };
if (p.startsWith("/secretaria-executiva"))
return { recurso: "secretaria_executiva", acao: "ver" };
if (p.startsWith("/gestao-pessoas"))
return { recurso: "gestao_pessoas", acao: "ver" };
// Outras áreas (uso genérico: ver)
if (p.startsWith('/financeiro')) return { recurso: 'financeiro', acao: 'ver' };
if (p.startsWith('/controladoria')) return { recurso: 'controladoria', acao: 'ver' };
if (p.startsWith('/licitacoes')) return { recurso: 'licitacoes', acao: 'ver' };
if (p.startsWith('/compras')) return { recurso: 'compras', acao: 'ver' };
if (p.startsWith('/juridico')) return { recurso: 'juridico', acao: 'ver' };
if (p.startsWith('/comunicacao')) return { recurso: 'comunicacao', acao: 'ver' };
if (p.startsWith('/programas-esportivos'))
return { recurso: 'programas_esportivos', acao: 'ver' };
if (p.startsWith('/secretaria-executiva'))
return { recurso: 'secretaria_executiva', acao: 'ver' };
if (p.startsWith('/gestao-pessoas')) return { recurso: 'gestao_pessoas', acao: 'ver' };
return null;
});
return null;
});
</script>
{#if routeAction}
<ActionGuard recurso={routeAction.recurso} acao={routeAction.acao}>
<main id="container-central" class="w-full max-w-none px-3 lg:px-4 py-4">
{@render children()}
</main>
</ActionGuard>
<ActionGuard recurso={routeAction.recurso} acao={routeAction.acao}>
<main id="container-central" class="w-full max-w-none px-3 py-4 lg:px-4">
{@render children()}
</main>
</ActionGuard>
{:else}
<main id="container-central" class="w-full max-w-none px-3 lg:px-4 py-4">
{@render children()}
</main>
<main id="container-central" class="w-full max-w-none px-3 py-4 lg:px-4">
{@render children()}
</main>
{/if}
<!-- Toast Notifications (Sonner) -->