veza/apps/web/dist_verification/assets/AdminDashboardPage-DO0rPMOR.js

2 lines
20 KiB
JavaScript
Raw Normal View History

import{a as o,j as e}from"./vendor-react-BHG7lGYR.js";import{a as h,B as y,C as n,b as l,c,e as d,v as m,i as P,N as ue,l as p,g as he,p as g,L as je}from"./index-BWcMVITa.js";import{I as fe}from"./input-BGBI2Wze.js";import{B as u}from"./badge-CPAgRIoX.js";import{T as pe,a as ge,b as v,c as N}from"./tabs-DP-eavm_.js";import{q as M}from"./vendor-IYr-MHu4.js";import{P as ve}from"./Pagination-i598iEQZ.js";import{a9 as O,aa as R,f as I,b1 as U,af as J,a as V,b0 as Ne,g as K,_ as ye,F as be,b2 as G,n as we}from"./vendor-icons-DaGlTw4_.js";import{u as Se}from"./vendor-router-D-s5vIeO.js";import{f as H,d as Q}from"./vendor-utils-CgOSfOkx.js";import"./vendor-tanstack-BzWBL1hV.js";async function Te(t){try{return(await h.get("/audit/logs",{params:t})).data}catch(i){throw i instanceof M&&i.response?.status===403?new Error("Forbidden: You do not have admin permissions to access audit logs"):i}}async function Re(t){try{return(await h.get("/audit/stats",{params:t})).data}catch(i){throw i instanceof M&&i.response?.status===403?new Error("Forbidden: You do not have admin permissions to access audit stats"):i}}async function Ae(t){try{return(await h.get("/audit/suspicious",{params:t})).data}catch(i){throw i instanceof M&&i.response?.status===403?new Error("Forbidden: You do not have admin permissions to detect suspicious activity"):i}}function Ce(){const[t,i]=o.useState(null),[j,b]=o.useState(new Date),x=()=>{try{const a=ue.getMetrics();i({validation:{total:a.totalValidations,successful:a.successfulValidations,failed:a.failedValidations,failureRate:a.failureRate,lastFailureTime:a.lastFailureTime,lastSuccessTime:a.lastSuccessTime,failuresByEndpoint:a.failuresByEndpoint},sentry:{enabled:!!P.SENTRY_DSN&&!0,dsnConfigured:!!P.SENTRY_DSN}}),b(new Date)}catch(a){p.error("[MonitoringDashboard] Failed to load metrics",{error:a instanceof Error?a.message:String(a)})}};if(o.useEffect(()=>{x();const a=setInterval(x,3e4);return()=>clearInterval(a)},[]),!t)return e.jsx("div",{className:"flex items-center justify-center h-[400px]",children:e.jsxs("div",{className:"text-center",children:[e.jsx(O,{className:"h-8 w-8 animate-spin mx-auto mb-4 text-muted-foreground"}),e.jsx("p",{className:"text-muted-foreground",children:"Chargement des métriques..."})]})});const A=a=>a===0?"text-green-600":a<1?"text-yellow-600":a<5?"text-orange-600":"text-red-600",w=a=>a===0?"success":a<1?"default":a<5?"warning":"error",S=Object.entries(t.validation.failuresByEndpoint).sort(([,a],[,f])=>f-a).slice(0,5);return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsxs("h2",{className:"text-2xl font-bold flex items-center gap-2",children:[e.jsx(R,{className:"h-6 w-6"}),"Monitoring du Système"]}),e.jsx("p",{className:"text-muted-foreground text-sm mt-1",children:"Métriques de validation, performance API et suivi des erreurs"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("p",{className:"text-xs text-muted-foreground",children:["Dernière mise à jour: ",j.toLocaleTimeString("fr-FR")]}),e.jsxs(y,{variant:"outline",size:"sm",onClick:x,className:"gap-2",children:[e.jsx(O,{className:"h-4 w-4"}),"Actualiser"]})]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4",children:[e.jsxs(n,{children:[e.jsx(l,{className:"pb-3",children:e.jsxs(c,{className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(R,{className:"h-4 w-4"}),"Total Validations"]})}),e.jsxs(d,{children:[e.jsx("div",{className:"text-2xl font-bold",children:t.validation.total.toLocaleString()}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"Validations depuis le démarrage"})]})]}),e.jsxs(n,{children:[e.jsx(l,{className:"pb-3",children:e.jsxs(c,{className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(I,{className:"h-4 w-4 text-green-600"}),"Validations Réussies"]})}),e.jsxs(d,{children:[e.jsx("div",{className:"text-2xl font-bold text-green-600",children:t.validation.successful.toLocaleString()}),e.jsxs("p",{className:"text-xs