PageSourceSearch

https://medicina-bio-nqjt3msa.manus.space/assets/AdminOperations-BYE5T985.js

js medicina-bio-nqjt3msa.manus.space collected 2026-10-03 05:03:38 UTC 34,654 bytes, 16 lines download raw bytes

1import{c as O,X as z,r as w,ab as A,j as e,J as T,W as P,a3 as U,a8 as J,a7 as _,a4 as Z,ai as Y,aj as ee}from"./index-CykUsxtg.js";import{A as te,a as se,b as ae,c as ie,d as re,e as ne,f as oe,g as le,h as de,M as R}from"./alert-dialog-CUnXXRhQ.js";import{A as ce}from"./AdminActionNotice-CIz8tbY8.js";import{B as q}from"./badge-CH4loQgM.js";import{C as me,c as xe}from"./card-CoPW_i0L.js";import{S as C}from"./skeleton-DgHKBfja.js";import{R as ue}from"./refresh-cw-LiNZO3VC.js";import{B as pe}from"./bell-ring-BoBCIoWQ.js";import{A as ge}from"./activity-DnbmERdY.js";import{H as he}from"./history-C4zPAsMs.js";/**
2 * @license lucide-react v0.453.0 - ISC
3 *
4 * This source code is licensed under the ISC license.
5 * See the LICENSE file in the root directory of this source tree.
6 */const be=O("CircleDot",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}]]);/**
7 * @license lucide-react v0.453.0 - ISC
8 *
9 * This source code is licensed under the ISC license.
10 * See the LICENSE file in the root directory of this source tree.
11 */const fe=O("CirclePlay",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polygon",{points:"10 8 16 12 10 16 10 8",key:"1cimsy"}]]);/**
12 * @license lucide-react v0.453.0 - ISC
13 *
14 * This source code is licensed under the ISC license.
15 * See the LICENSE file in the root directory of this source tree.
16 */const je=O("DatabaseBackup",[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 12a9 3 0 0 0 5 2.69",key:"1ui2ym"}],["path",{d:"M21 9.3V5",key:"6k6cib"}],["path",{d:"M3 5v14a9 3 0 0 0 6.47 2.88",key:"i62tjy"}],["path",{d:"M12 12v4h4",key:"1bxaet"}],["path",{d:"M13 20a5 5 0 0 0 9-3 4.5 4.5 0 0 0-4.5-4.5c-1.33 0-2.54.54-3.41 1.41L12 16",key:"1f4ei9"}]]),Ne=[{key:"configuration",label:"Configurazione"},{key:"access",label:"Cloudflare Access"},{key:"stripe",label:"Checkout Stripe"},{key:"webhooks",label:"Webhook Stripe"},{key:"registrationConfirmations",label:"Conferme iscrizione"},{key:"paidWorkflowBackfill",label:"Flussi post-pagamento"},{key:"outbox",label:"Coda e-mail"},{key:"deadOutbox",label:"Invii esauriti"},{key:"dailyDigest",label:"Riepilogo giornaliero"}],ve={processing:{label:"In elaborazione",tone:"warning",order:0},pending:{label:"In attesa",tone:"warning",order:1},failed:{label:"Da ritentare",tone:"danger",order:2},dead:{label:"Tentativi esauriti",tone:"danger",order:3},sent:{label:"Inviate",tone:"success",order:4}};function j(t){return t&&typeof t=="object"&&!Array.isArray(t)?t:null}function u(t){if(typeof t=="number"&&Number.isFinite(t))return t;if(typeof t=="string"&&t.trim()){const a=Number(t);return Number.isFinite(a)?a:null}return null}function m(t){return typeof t=="string"&&t.trim()?t.trim():null}function S(t){return t===!0||t===1||t==="1"}function n(t,a){return u(t[a])??0}function v(t){return t.map(([a,i])=>`${i.toLocaleString("it-IT")} ${a}`).join(" · ")}function ye(t){return t==="succeeded"||t==="partial"||t==="failed"||t==="running"||t==="skipped_locked"?t:"unknown"}function we(t){return Array.isArray(t)?t.flatMap((a,i)=>{const s=j(a);if(!s)return[];const r=s.triggerType==="scheduled"||s.triggerType==="manual"?s.triggerType:"unknown";return[{id:String(s.id??s.startedAtMs??i),triggerType:r,status:ye(s.status),initiatedByUserId:u(s.initiatedByUserId),scheduledTimeMs:u(s.scheduledTimeMs),cronExpression:m(s.cronExpression),startedAtMs:u(s.startedAtMs),completedAtMs:u(s.completedAtMs),metrics:j(s.metrics),errorSummary:m(s.errorSummary)}]}):[]}function Ae(t){return Array.isArray(t)?t.flatMap((a,i)=>{const s=j(a);if(!s)return[];const r=s.severity==="critical"||s.severity==="warning"||s.severity==="info"?s.severity:"unknown";return[{id:String(s.id??s.incidentKey??i),incidentKey:m(s.incidentKey)??"incidente-senza-chiave",category:m(s.category)??"workflow_run",severity:r,title:m(s.title)??"Anomalia operativa",details:m(s.details),status:m(s.status)??"unknown",occurrenceCount:u(s.occurrenceCount)??0,firstOccurredAtMs:u(s.firstOccurredAtMs),lastOccurredAtMs:u(s.lastOccurredAtMs),resolvedAtMs:u(s.resolvedAtMs),lastAlertedAtMs:u(s.lastAlertedAtMs)}]}):[]}function H(t){return t==="succeeded"?{label:"Completato",tone:"success"}:t==="partial"?{label:"Completato con anomalie",tone:"warning"}:t==="failed"?{label:"Non completato",tone:"danger"}
16:t==="running"?{label:"In esecuzione",tone:"warning"}:t==="skipped_locked"?{label:"Già in esecuzione",tone:"neutral"}:{label:"Stato non disponibile",tone:"neutral"}}function L(t){return t==="manual"?"Controllo manuale":t==="scheduled"?"Controllo automatico":"Controllo"}function Ce(t,a){const i=m(a.error),s=m(a.status);return i||s==="failed"?{label:"Anomalia",tone:"danger"}:t==="configuration"&&Array.isArray(a.missing)&&a.missing.length>0?{label:"Configurazione incompleta",tone:"danger"}:t==="access"&&s==="skipped"?{label:"Non necessario",tone:"neutral"}:t==="dailyDigest"&&s==="queued"?{label:"Inviato",tone:"success"}:t==="dailyDigest"&&s==="skipped"?{label:"Programmato",tone:"neutral"}:t==="access"&&(s==="synced"||s==="succeeded")?{label:"Allineato",tone:"success"}:t==="stripe"&&S(a.skipped)?{label:"Saltato",tone:"warning"}:n(a,"failed")>0||n(a,"unresolvedFailed")>0||n(a,"dead")>0?{label:"Richiede attenzione",tone:t==="registrationConfirmations"||t==="outbox"?"warning":"danger"}:{label:"Regolare",tone:"success"}}function Se(t,a){if(t==="configuration")return[["SMTP",S(a.smtpReady)],["contabilità",S(a.accountingEmailReady)],["avvisi amministrativi",S(a.administrationEmailReady)]].map(([s,r])=>`${s}: ${r?"pronto":"mancante"}`).join(" · ");if(t==="access")return m(a.status)==="skipped"?m(a.reason)??"Controllo remoto non necessario in questo ciclo":v([["destinatari",n(a,"desiredCount")],["aggiunti",n(a,"addedCount")],["aggiornati",n(a,"updatedCount")],["rimossi",n(a,"removedCount")]]);if(t==="stripe")return v([["controllati",n(a,"checked")],["pagati",n(a,"paid")],["scaduti",n(a,"expired")],["errori",n(a,"failed")]]);if(t==="webhooks")return v([["riparati",n(a,"healed")],["scaduti marcati",n(a,"staleMarkedFailed")],["non risolti",n(a,"unresolvedFailed")]]);if(t==="registrationConfirmations"||t==="paidWorkflowBackfill")return v([["controllati",n(a,"checked")],["riparati",n(a,"repaired")],["non riparati",n(a,"failed")]]);if(t==="outbox")return v([["elaborati",n(a,"processed")],["falliti",n(a,"failed")],["processi ripristinati",n(a,"staleReset")]]);if(t==="deadOutbox")return`${n(a,"dead").toLocaleString("it-IT")} invii con tentativi esauriti`;if(t==="dailyDigest"){const i=m(a.reason);return i==="manual_run"?"Il controllo manuale non genera il riepilogo e-mail":i==="already_recorded"?"Riepilogo del giorno già registrato: nessun duplicato":i==="not_due"?"Prossima valutazione dopo le 20:00 Europe/Rome":i?`Esito coda: ${i}`:"Pianificazione giornaliera verificata"}return"Controllo registrato"}function ke(t){const a=j(t);return a?Ne.flatMap(({key:i,label:s})=>{const r=j(a[i]);if(!r)return[];const d=Ce(i,r);return[{key:i,label:s,stateLabel:d.label,tone:d.tone,detail:Se(i,r),error:m(r.error)}]}):[]}function Ie(t,a,i){if(!i)return{label:"Monitor automatico disattivato",description:"I controlli pianificati non vengono eseguiti finché il monitor resta disattivato.",tone:"warning"};const s=a.filter(d=>d.status==="open");if(s.some(d=>d.severity==="critical"))return{label:"Intervento richiesto",description:`${s.length} ${s.length===1?"incidente aperto":"incidenti aperti"}, almeno uno critico.`,tone:"danger"};const r=t[0];return r?r.status==="failed"?{label:"Ultimo controllo non completato",description:"Consulta i sottocontrolli e gli incidenti per individuare l’origine del blocco.",tone:"danger"}:r.status==="partial"||s.length>0?{label:"Operativo con anomalie",description:`${s.length} ${s.length===1?"incidente aperto":"incidenti aperti"} da verificare.`,tone:"warning"}:r.status==="running"?{label:"Controllo in esecuzione",description:"I risultati si aggiorneranno automaticamente al completamento.",tone:"warning"}:{label:"Operativo",description:"L’ultimo controllo si è concluso senza incidenti aperti.",tone:"success"}:{label:"In attesa del primo controllo",description:"Lo stato operativo comparirà dopo la prima esecuzione del monitor.",tone:"neutral"}}function Me(t){return t.find(a=>a.status==="succeeded")??null}function G(t){return!t?.startedAtMs||!t.completedAtMs||t.completedAtMs<t.startedAtMs?null:t.completedAtMs-t.startedAtMs}function De(t){const a=j(t);return a?Object.entries(a).flatMap(([i,s])=>{const r=u(s);if(r===null)return[];const d=ve[i]??{label:i,tone:"neutral",order:99};return[{status:i,label:d.label,total:r,tone:d.tone,order:d.order}]}).sort((i,s)=>i.order-s.order||i.label.localeCompare(s.label,"it")).map(({order:i,...s})=>s):[]}const g={success:{panel:"border-emerald-300 bg-emerald-50 text-emerald-950",badge:"border-emerald-300 bg-emerald-50 text-emerald-950",dot:"bg-emerald-600",icon:"text-emerald-800"},warning:{panel:"border-amber-300 bg-amber-50 text-amber-950",badge:"border-amber-300 bg-amber-50 text-amber-950",dot:"bg-
16amber-600",icon:"text-amber-800"},danger:{panel:"border-red-300 bg-red-50 text-red-950",badge:"border-red-300 bg-red-50 text-red-950",dot:"bg-red-600",icon:"text-red-800"},neutral:{panel:"border-slate-300 bg-slate-50 text-slate-950",badge:"border-slate-300 bg-slate-100 text-slate-800",dot:"bg-slate-500",icon:"text-slate-700"}};function x(t){return t?new Intl.DateTimeFormat("it-IT",{dateStyle:"medium",timeStyle:"short"}).format(new Date(t)):"—"}function ze(t){return t?new Date(t).toISOString().replace("T"," ").replace(".000Z"," UTC"):"—"}function K(t){return t===null?"—":t<1e3?`${t.toLocaleString("it-IT")} ms`:t<6e4?`${(t/1e3).toLocaleString("it-IT",{maximumFractionDigits:1})} s`:`${Math.floor(t/6e4)} min ${Math.round(t%6e4/1e3)} s`}function Te(t){return!t&&t!==0?"—":t<1024?`${t.toLocaleString("it-IT")} B`:t<1048576?`${(t/1024).toLocaleString("it-IT",{maximumFractionDigits:1})} KB`:`${(t/1048576).toLocaleString("it-IT",{maximumFractionDigits:1})} MB`}function Re(t){return t==="success"?_:t==="danger"?Y:t==="warning"?U:be}function b({tone:t,children:a}){return e.jsxs(q,{variant:"outline",className:`whitespace-nowrap font-semibold ${g[t].badge}`,children:[e.jsx("span",{className:`mr-1.5 h-1.5 w-1.5 rounded-full ${g[t].dot}`,"aria-hidden":"true"}),a]})}function Le({run:t}){const a=ke(t?.metrics);return t?a.length?e.jsx("div",{className:"divide-y divide-slate-200",children:a.map(i=>e.jsx("div",{className:"flex flex-col gap-2 px-5 py-4 sm:flex-row sm:items-start sm:justify-between sm:gap-5",children:e.jsxs("div",{className:"min-w-0",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx("h3",{className:"text-sm font-semibold text-slate-950",children:i.label}),e.jsx(b,{tone:i.tone,children:i.stateLabel})]}),e.jsx("p",{className:"mt-1.5 text-xs leading-5 text-slate-600",children:i.detail}),i.error?e.jsx("p",{className:"mt-1 text-xs font-medium leading-5 text-red-800",children:i.error}):null]})},i.key))}):e.jsx("p",{className:"px-5 py-6 text-sm leading-6 text-slate-600",children:"Questa esecuzione non contiene metriche di dettaglio. Consulta lo stato e l’eventuale riepilogo errore nello storico."}):e.jsx("div",{className:"flex min-h-36 items-center justify-center px-5 py-8 text-center",children:e.jsxs("div",{className:"max-w-md",children:[e.jsx(ge,{className:"mx-auto h-7 w-7 text-slate-400","aria-hidden":"true"}),e.jsx("h3",{className:"mt-3 text-sm font-semibold text-slate-900",children:"Nessun controllo registrato"}),e.jsx("p",{className:"mt-1 text-sm leading-6 text-slate-600",children:"I sottocontrolli compariranno dopo la prima esecuzione automatica o manuale."})]})})}function Oe({incident:t}){const a=t.severity==="critical"?"danger":t.severity==="warning"?"warning":"neutral",i=t.severity==="critical"?"Critico":t.severity==="warning"?"Avviso":"Informativo";return e.jsx("article",{className:"border-t border-slate-200 px-5 py-4 first:border-t-0",children:e.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx(b,{tone:a,children:i}),e.jsx("span",{className:"font-mono text-[11px] font-medium text-slate-500",children:t.incidentKey})]}),e.jsx("h3",{className:"mt-2 text-sm font-semibold text-slate-950",children:t.title}),t.details?e.jsx("p",{className:"mt-1 max-w-3xl text-sm leading-6 text-slate-700",children:t.details}):null]}),e.jsxs("div",{className:"shrink-0 text-xs leading-5 text-slate-600 sm:text-right",children:[e.jsxs("p",{children:[e.jsx("strong",{className:"font-semibold text-slate-900",children:"Ultimo evento:"})," ",x(t.lastOccurredAtMs)]}),e.jsxs("p",{children:[e.jsx("strong",{className:"font-semibold text-slate-900",children:"Ricorrenze:"})," ",t.occurrenceCount.toLocaleString("it-IT")]}),e.jsxs("p",{className:"inline-flex items-center gap-1.5 sm:justify-end",children:[e.jsx(pe,{className:"h-3.5 w-3.5","aria-hidden":"true"}),t.lastAlertedAtMs?`Avviso ${x(t.lastAlertedAtMs)}`:"Avviso non ancora inviato"]})]})]})})}function $e({runs:t}){return e.jsxs("details",{className:"group rounded-xl border border-slate-200 bg-white shadow-sm",children:[e.jsxs("summary",{className:"flex min-h-14 cursor-pointer list-none items-center justify-between gap-4 roun
16ded-xl px-5 py-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-teal-700 focus-visible:ring-offset-2",children:[e.jsxs("span",{className:"inline-flex items-center gap-2 text-sm font-semibold text-slate-950",children:[e.jsx(he,{className:"h-4 w-4 text-teal-700","aria-hidden":"true"}),"Registro esecuzioni"]}),e.jsxs("span",{className:"inline-flex items-center gap-2 text-xs font-medium text-slate-600",children:["ultimi ",t.length,e.jsx(ee,{className:"h-4 w-4 transition-transform duration-200 group-open:rotate-180","aria-hidden":"true"})]})]}),e.jsx("div",{className:"border-t border-slate-200",children:t.length?e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[760px] border-collapse text-left text-sm",children:[e.jsx("thead",{className:"bg-slate-50 text-xs text-slate-600",children:e.jsxs("tr",{children:[e.jsx("th",{scope:"col",className:"px-5 py-3 font-semibold",children:"Esito"}),e.jsx("th",{scope:"col",className:"px-5 py-3 font-semibold",children:"Avvio"}),e.jsx("th",{scope:"col",className:"px-5 py-3 font-semibold",children:"Origine"}),e.jsx("th",{scope:"col",className:"px-5 py-3 font-semibold",children:"Durata"}),e.jsx("th",{scope:"col",className:"px-5 py-3 font-semibold",children:"Riepilogo"})]})}),e.jsx("tbody",{className:"divide-y divide-slate-200",children:t.map(a=>{const i=H(a.status);return e.jsxs("tr",{className:"align-top",children:[e.jsx("td",{className:"px-5 py-4",children:e.jsx(b,{tone:i.tone,children:i.label})}),e.jsx("td",{className:"whitespace-nowrap px-5 py-4 text-xs leading-5 text-slate-700",children:e.jsxs("time",{dateTime:a.startedAtMs?new Date(a.startedAtMs).toISOString():void 0,children:[e.jsx("span",{className:"block font-medium text-slate-900",children:x(a.startedAtMs)}),e.jsx("span",{className:"block",children:ze(a.startedAtMs)})]})}),e.jsxs("td",{className:"px-5 py-4 text-xs leading-5 text-slate-700",children:[e.jsx("span",{className:"block font-medium text-slate-900",children:L(a.triggerType)}),a.cronExpression?e.jsx("span",{className:"block font-mono",children:a.cronExpression}):null]}),e.jsx("td",{className:"whitespace-nowrap px-5 py-4 text-xs font-medium text-slate-700",children:K(G(a))}),e.jsx("td",{className:"max-w-md px-5 py-4 text-xs leading-5 text-slate-700",children:a.errorSummary??"Nessuna anomalia registrata."})]},a.id)})})]})}):e.jsx("p",{className:"px-5 py-6 text-sm leading-6 text-slate-600",children:"Lo storico comparirà dopo la prima esecuzione del monitor."})})]})}function We(){const t=z.useUtils(),[a,i]=w.useState(null),s=z.workflowOperations.overview.useQuery(void 0,{refetchInterval:6e4,refetchIntervalInBackground:!0}),r=z.workflowOperations.runNow.useMutation({onMutate:()=>i({id:Date.now(),tone:"progress",title:"Controllo in esecuzione",message:"Il monitor sta verificando i flussi. La pagina resta disponibile e il riepilogo verrà aggiornato al termine."}),onSuccess:async l=>{await t.workflowOperations.overview.invalidate(),l.status==="succeeded"?(i({id:Date.now(),tone:"success",title:"Controllo completato",message:"Nessuna anomalia rilevata. Il riepilogo operativo sottostante contiene il risultato persistente."}),A.success("Controllo operativo completato senza anomalie.")):l.status==="skipped_locked"?(i({id:Date.now(),tone:"info",title:"Controllo già in esecuzione",message:"Non è stato avviato un secondo ciclo. Attendi l’aggiornamento automatico dello stato persistente."}),A.info("Un controllo era già in esecuzione: nessun secondo ciclo è stato avviato.")):(i({id:Date.now(),tone:"warning",title:"Controllo completato con anomalie",message:"Consulta incidenti e sottocontrolli aggiornati qui sotto prima di avviare altre azioni."}),A.warning("Controllo completato con anomalie. Consulta i dettagli aggiornati."))},onError:l=>{const y=`Controllo non avviato: ${l.message}`;i({id:Date.now(),tone:"error",title:"Comando non eseguito",message:y}),A.error(y)}}),d=w.useMemo(()=>we(s.data?.runs),[s.data?.runs]),$=w.useMemo(()=>Ae(s.data?.incidents),[s.data?.incidents]),k=w.useMemo(()=>De(s.data?.outbox),[s.data?.outbox]),f=$.filter(l=>l.status==="open"),p=d[0]??null,I=Me(d),N=Ie(d,$,s.data?.monitoringEnabled??!1),W=Re(N.tone),E=p?H(p.status):null,B=k.filter(l=>l.status!=="sent").reduce((l,y)=>l+y.total,0),o=s.data?.registrationData.snapshot??null,h=s.data?.registrationData.backup??null,c=s.data?.dailyDigest??null,F=c?.currentDayStatus==="sent"?"Inviato oggi":c?.currentDayStatus==="processing"?"Invio in corso":c?.currentDayStatus==="pending"||c?.currentDayStatus==="failed"?"In coda":c?.currentDayStatus==="dead"?"Invio da verificare":c?.currentDayStatus==="due"?"In attesa del prossimo ciclo":"Programmato",Q=c?.currentDayStatus==="dead"?"danger":c?.currentDayStatus==="failed"||c?.currentDayStatus==="due"?"warning":c?.currentDayStatus==="sent"?"success":"neutral",M=!!(o&&o.status==="healthy"&&o.archivedCount>0),D=o?o.status==="critical"?"danger":o.status==="warning"?"warning":M?"neutral":"success":"warning",V=o?o.status==="critical"?"Anomalia critica":o.status==="warning"?"Da verificare":M?"Registro integro · archivi presenti":"Registro integro":"In attesa del primo controllo",X=o?o.duplicateActiveCount+o.orphanCourseCount+
16o.courseMismatchCount+o.missingRegistrationCount+o.reassignedRegistrationCount:0;return e.jsxs("div",{className:"mx-auto max-w-7xl space-y-6","aria-busy":s.isLoading||r.isPending,children:[e.jsxs("header",{className:"flex flex-col gap-4 border-b border-slate-200 pb-6 lg:flex-row lg:items-end lg:justify-between",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-xs font-semibold uppercase tracking-[0.18em] text-teal-700",children:"Controlli e riconciliazioni"}),e.jsx("h1",{className:"text-2xl font-semibold tracking-tight text-slate-950 sm:text-3xl",children:"Operatività"}),e.jsx("p",{className:"max-w-3xl text-sm leading-6 text-slate-600",children:"Sorveglia registro iscrizioni, backup cifrati, Access, Stripe, webhook, flussi post-pagamento e coda e-mail. Il controllo resta attivo ogni 15 minuti, ma le e-mail immediate partono soltanto per incidenti critici; warning, informazioni e risoluzioni confluiscono nel recap serale, questa vista aggiorna i dati ogni minuto e il comando manuale avvia subito lo stesso ciclo senza generare il digest."})]}),e.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row",children:[e.jsxs(T,{type:"button",variant:"outline",onClick:()=>s.refetch(),disabled:s.isFetching||r.isPending,className:"min-h-11 border-slate-400 bg-white text-slate-950 hover:bg-slate-100",children:[s.isFetching&&!s.isLoading?e.jsx(P,{className:"h-4 w-4 animate-spin","aria-hidden":"true"}):e.jsx(ue,{className:"h-4 w-4","aria-hidden":"true"}),"Aggiorna dati"]}),e.jsxs(te,{children:[e.jsx(se,{asChild:!0,children:e.jsxs(T,{type:"button",disabled:r.isPending||s.isLoading,className:"min-h-11 bg-teal-700 text-white hover:bg-teal-800",children:[r.isPending?e.jsx(P,{className:"h-4 w-4 animate-spin","aria-hidden":"true"}):e.jsx(fe,{className:"h-4 w-4","aria-hidden":"true"}),"Controlla ora"]})}),e.jsxs(ae,{children:[e.jsxs(ie,{children:[e.jsx(re,{children:"Eseguire il controllo operativo completo?"}),e.jsx(ne,{className:"leading-6",children:"Il ciclo verifica anche integrità del registro e backup cifrato, riconcilia Access e Stripe, ripara i flussi incompleti e può elaborare le comunicazioni già presenti nella coda e-mail. Non crea addebiti, ma può inviare messaggi dovuti: avvialo solo dopo aver verificato che la configurazione sia corretta."})]}),e.jsxs(oe,{children:[e.jsx(le,{children:"Annulla"}),e.jsx(de,{onClick:()=>r.mutate(),className:"bg-teal-700 text-white hover:bg-teal-800",children:"Esegui controllo"})]})]})]})]})]}),e.jsx(ce,{notice:a,onDismiss:()=>i(null)}),s.isLoading?e.jsxs("div",{className:"space-y-4","aria-live":"polite",children:[e.jsx("span",{className:"sr-only",children:"Caricamento stato operativo…"}),e.jsx(C,{className:"h-44 w-full"}),e.jsxs("div",{className:"grid gap-4 lg:grid-cols-3",children:[e.jsx(C,{className:"h-72 lg:col-span-2"}),e.jsx(C,{className:"h-72"})]}),e.jsx(C,{className:"h-64 w-full"})]}):s.error?e.jsx(me,{className:"border-red-300 bg-red-50 shadow-none",children:e.jsxs(xe,{className:"flex flex-col gap-4 p-5 sm:flex-row sm:items-start sm:justify-between",children:[e.jsxs("div",{className:"flex items-start gap-3 text-red-950",children:[e.jsx(U,{className:"mt-0.5 h-5 w-5 shrink-0","aria-hidden":"true"}),e.jsxs("div",{children:[e.jsx("h2",{className:"font-semibold",children:"Stato operativo non disponibile"}),e.jsx("p",{className:"mt-1 text-sm leading-6",children:s.error.message})]})]}),e.jsx(T,{type:"button",variant:"outline",onClick:()=>s.refetch(),className:"border-red-400 bg-white text-red-950 hover:bg-red-100",children:"Riprova"})]})}):e.jsxs(e.Fragment,{children:[e.jsxs("section",{className:`overflow-hidden rounded-xl border ${g[N.tone].panel}`,"aria-live":"polite",children:[e.jsxs("div",{className:"flex flex-col gap-4 px-5 py-5 sm:flex-row sm:items-start sm:justify-between",children:[e.jsxs("div",{className:"flex min-w-0 items-start gap-3",children:[e.jsx(W,{className:`mt-0.5 h-6 w-6 shrink-0 ${g[N.tone].icon}`,"aria-hidden":"true"}),e.jsxs("div",{children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx("h2",{className:"text-lg font-semibold",children:N.label}),e.jsxs(q,{variant:"outline",className:s.data?.monitoringEnabled?g.success.badge:g.warning.badge,children:["Monitor ",s.data?.monitoringEnabled?"attivo":"disattivato"]})]}),e.jsx("p",{className:"mt-1 text-sm leading-6",children:N.description})]})]}),e.jsx("p",{className:"shrink-0 text-xs font-medium",children:"Aggiornamento ogni 60 secondi"})]}),e.jsxs("dl",{className:"grid border-t border-current/15 bg-white/55 sm:grid-cols-2 xl:grid-cols-4",children:[e.jsxs("div",{className:"border-b border-current/15 px-5 py-4 sm:border-r xl:border-b-0",children:[e.jsx("dt",{className:"text-xs font-medium opacity-75",children:"Ultimo tentativo"}),e.jsx("dd",{className:"mt-1 text-sm font-semibold",children:x(p?.startedAtMs)}),E?e.jsx("dd",{className:"mt-1 text-xs",children:E.label}):null]}),e.jsxs("div",{className:"border-b border-current/15 px-5 py-4 xl:border-b-0 xl:border-r",children:[e.jsx("dt",{className:"text-xs font-medium opacity-75",children:"Ultimo successo"}),e.jsx("dd",{className:"mt-1 text-sm font-semibold",children:x(I?.completedAtMs)}),e.jsx("dd",{className:"mt-1 text-xs",children:I?L(I.triggerType):"Non ancora registrato"})]}),e.jsxs("div",{className:"border-b border-current/15 px-5 py-4 sm:border-b-0 sm:border-r",children:[e.jsx("dt",{className:"text-xs font-medium opacity-75",children:"Durata ultimo ciclo"}),e.jsx("dd",{className:"mt-1 text-sm font-semibold",children:K(G(p))}),e.jsx("dd",{className:"mt-1 text-xs",children:p?.triggerType?L(p.triggerType):"—"})]}),e.jsxs("div",{className:"px-5 py-4",children:[e.jsx("dt",{className:"text-xs font-medium opacity-75",children:"Incidenti aperti"}),e.jsx("dd",{className:"mt-1 text-sm font-semibold",children:f.length.toLocaleStr
16ing("it-IT")}),e.jsx("dd",{className:"mt-1 text-xs",children:f.some(l=>l.severity==="critical")?"Presenza di criticità":"Nessuna criticità aperta"})]})]})]}),e.jsxs("section",{className:"overflow-hidden rounded-xl border border-teal-200 bg-teal-50/70 text-teal-950","aria-labelledby":"daily-digest-title",children:[e.jsxs("div",{className:"flex flex-col gap-4 px-5 py-5 sm:flex-row sm:items-start sm:justify-between",children:[e.jsxs("div",{className:"flex min-w-0 items-start gap-3",children:[e.jsx(R,{className:"mt-0.5 h-5 w-5 shrink-0 text-teal-800","aria-hidden":"true"}),e.jsxs("div",{children:[e.jsx("h2",{id:"daily-digest-title",className:"text-base font-semibold",children:"Riepilogo operativo giornaliero"}),e.jsx("p",{className:"mt-1 max-w-3xl text-sm leading-6 text-teal-900",children:"Un solo riepilogo operativo al giorno, dopo le 20:00 Europe/Rome. Durante la giornata partono e-mail soltanto per incidenti critici; warning, informazioni e risoluzioni confluiscono nel recap serale, senza dati personali."})]})]}),e.jsx(b,{tone:Q,children:F})]}),e.jsxs("dl",{className:"grid border-t border-teal-200 bg-white/60 sm:grid-cols-3",children:[e.jsxs("div",{className:"border-b border-teal-200 px-5 py-4 sm:border-b-0 sm:border-r",children:[e.jsx("dt",{className:"text-xs font-medium text-teal-800",children:"Ultimo riepilogo"}),e.jsx("dd",{className:"mt-1 text-sm font-semibold",children:x(c?.last?.sentAtMs??c?.last?.createdAtMs)})]}),e.jsxs("div",{className:"border-b border-teal-200 px-5 py-4 sm:border-b-0 sm:border-r",children:[e.jsx("dt",{className:"text-xs font-medium text-teal-800",children:"Stato di oggi"}),e.jsx("dd",{className:"mt-1 text-sm font-semibold",children:F})]}),e.jsxs("div",{className:"px-5 py-4",children:[e.jsx("dt",{className:"text-xs font-medium text-teal-800",children:"Prossima finestra"}),e.jsx("dd",{className:"mt-1 text-sm font-semibold",children:x(c?.nextScheduledAtMs)})]})]})]}),e.jsxs("section",{className:"grid gap-4 lg:grid-cols-2","aria-label":"Protezione del registro iscrizioni",children:[e.jsxs("article",{className:`overflow-hidden rounded-xl border ${g[D].panel}`,children:[e.jsxs("div",{className:"flex items-start justify-between gap-4 px-5 py-5",children:[e.jsxs("div",{className:"flex min-w-0 items-start gap-3",children:[e.jsx(J,{className:`mt-0.5 h-5 w-5 shrink-0 ${g[D].icon}`,"aria-hidden":"true"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-xs font-semibold uppercase tracking-[0.14em] opacity-75",children:"Guardiano iscrizioni"}),e.jsx("h2",{className:"mt-1 text-base font-semibold",children:V}),e.jsx("p",{className:"mt-1 text-xs leading-5 opacity-80",children:"Controlla ogni 15 minuti cali inspiegati, duplicati, corsi orfani o incoerenti e righe mancanti. Le archiviazioni amministrative auditabili restano informative e vengono aggregate nel digest."})]})]}),e.jsx(b,{tone:D,children:M?"informativo":o?.status??"attesa"})]}),e.jsxs("dl",{className:"grid grid-cols-2 border-t border-current/15 bg-white/55 sm:grid-cols-4",children:[e.jsxs("div",{className:"border-b border-r border-current/15 px-4 py-3 sm:border-b-0",children:[e.jsx("dt",{className:"text-[11px] font-medium opacity-70",children:"Totali"}),e.jsx("dd",{className:"mt-1 text-sm font-semibold tabular-nums",children:o?.registrationCount?.toLocaleString("it-IT")??"—"})]}),e.jsxs("div",{className:"border-b border-current/15 px-4 py-3 sm:border-b-0 sm:border-r",children:[e.jsx("dt",{className:"text-[11px] font-medium opacity-70",children:"Attive"}),e.jsx("dd",{className:"mt-1 text-sm font-semibold tabular-nums",children:o?.activeCount?.toLocaleString("it-IT")??"—"})]}),e.jsxs("div",{className:"border-r border-current/15 px-4 py-3",children:[e.jsx("dt",{className:"text-[11px] font-medium opacity-70",children:"Archiviate"}),e.jsx("dd",{className:"mt-1 text-sm font-semibold tabular-nums",children:o?.archivedCount?.toLocaleString("it-IT")??"—"})]}),e.jsxs("div",{className:"px-4 py-3",children:[e.jsx("dt",{className:"text-[11px] font-medium opacity-70",children:"Anomalie tecniche"}),e.jsx("dd",{className:"mt-1 text-sm font-semibold tabular-nums",children:X.toLocaleStr
16ing("it-IT")})]})]}),e.jsxs("p",{className:"border-t border-current/15 px-5 py-3 text-xs font-medium opacity-75",children:["Ultimo controllo: ",x(o?.checkedAtMs)]})]}),e.jsxs("article",{className:"overflow-hidden rounded-xl border border-slate-200 bg-white shadow-sm",children:[e.jsxs("div",{className:"flex items-start justify-between gap-4 px-5 py-5",children:[e.jsxs("div",{className:"flex min-w-0 items-start gap-3",children:[e.jsx(je,{className:"mt-0.5 h-5 w-5 shrink-0 text-teal-700","aria-hidden":"true"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-xs font-semibold uppercase tracking-[0.14em] text-teal-700",children:"Backup privato"}),e.jsx("h2",{className:"mt-1 text-base font-semibold text-slate-950",children:h?"Snapshot cifrato disponibile":"In attesa del primo snapshot"}),e.jsx("p",{className:"mt-1 text-xs leading-5 text-slate-600",children:"R2 non pubblico, AES-256-GCM autenticato, manifest con impronte SHA-256 e retention automatica."})]})]}),e.jsx(b,{tone:h?"success":"warning",children:h?.kind==="incident"?"incidente":h?"giornaliero":"attesa"})]}),e.jsxs("dl",{className:"grid grid-cols-2 border-t border-slate-200 bg-slate-50/70 sm:grid-cols-4",children:[e.jsxs("div",{className:"border-b border-r border-slate-200 px-4 py-3 sm:border-b-0",children:[e.jsx("dt",{className:"text-[11px] font-medium text-slate-500",children:"Creato"}),e.jsx("dd",{className:"mt-1 text-xs font-semibold text-slate-950",children:x(h?.createdAtMs)})]}),e.jsxs("div",{className:"border-b border-slate-200 px-4 py-3 sm:border-b-0 sm:border-r",children:[e.jsx("dt",{className:"text-[11px] font-medium text-slate-500",children:"Record"}),e.jsx("dd",{className:"mt-1 text-sm font-semibold tabular-nums text-slate-950",children:h?.registrationCount?.toLocaleString("it-IT")??"—"})]}),e.jsxs("div",{className:"border-r border-slate-200 px-4 py-3",children:[e.jsx("dt",{className:"text-[11px] font-medium text-slate-500",children:"Dimensione cifrata"}),e.jsx("dd",{className:"mt-1 text-sm font-semibold text-slate-950",children:Te(h?.sizeBytes)})]}),e.jsxs("div",{className:"px-4 py-3",children:[e.jsx("dt",{className:"text-[11px] font-medium text-slate-500",children:"Scadenza"}),e.jsx("dd",{className:"mt-1 text-xs font-semibold text-slate-950",children:x(h?.expiresAtMs)})]})]}),e.jsx("p",{className:"border-t border-slate-200 px-5 py-3 text-xs leading-5 text-slate-600",children:"Il backup non contiene URL pubblici. Il ripristino richiede il runbook e una verifica isolata prima di qualsiasi import live."})]})]}),e.jsxs("div",{className:"grid gap-4 xl:grid-cols-3",children:[e.jsxs("section",{className:"overflow-hidden rounded-xl border border-slate-200 bg-white shadow-sm xl:col-span-2","aria-labelledby":"incidents-title",children:[e.jsxs("div",{className:"flex items-center justify-between gap-4 border-b border-slate-200 px-5 py-4",children:[e.jsxs("div",{children:[e.jsx("h2",{id:"incidents-title",className:"text-base font-semibold text-slate-950",children:"Incidenti aperti"}),e.jsx("p",{className:"mt-0.5 text-xs text-slate-600",children:"Anomalie deduplicate e stato dell’ultimo avviso amministrativo."})]}),e.jsx(b,{tone:f.length?"warning":"success",children:f.length})]}),f.length?f.map(l=>e.jsx(Oe,{incident:l},l.id)):e.jsx("div",{className:"flex min-h-48 items-center justify-center px-5 py-8 text-center",children:e.jsxs("div",{className:"max-w-md",children:[e.jsx(_,{className:"mx-auto h-7 w-7 text-emerald-700","aria-hidden":"true"}),e.jsx("h3",{className:"mt-3 text-sm font-semibold text-slate-950",children:"Nessun incidente aperto"}),e.jsx("p",{className:"mt-1 text-sm leading-6 text-slate-600",children:"Quando un controllo rileva un’anomalia persistente, qui compaiono chiave, ricorrenze e stato dell’avviso."})]})})]}),e.jsxs("section",{className:"overflow-hidden rounded-xl border border-slate-200 bg-white shadow-sm","aria-labelledby":"outbox-title",children:[e.jsxs("div",{className:"border-b border-slate-200 px-5 py-4",children:[e.jsxs("div",{className:"flex items-center justify-between gap-4",children:[e.jsxs("h2",{id:"outbox-title",className:"inline-flex items-center gap-2 text-base font-semibold text-slate-950",children:[e.jsx(R,{className:"h-4 w-4 text-teal-700","aria-hidden":"true"}),"Coda e-mail"]}),e.jsxs(b,{tone:B?"warning":"success",children:[B," attive"]})]}),e.jsxs("p",{className:"mt-1 text-xs leading-5 text-slate-600",children:["Tentativi massimi configurati: ",s.data?.maxAttempts??5,"."]})]}),k.length?e.jsx("dl",{className:"divide-y divide-slate-200",children:k.map(l=>e.jsxs("div",{className:"flex items-center justify-between gap-4 px-5 py-3.5",children:[e.jsxs("dt",{className:"inline-flex items-center gap-2 text-sm text-slate-700",children:[e.jsx("span",{className:`h-2 w-2 rounded-full ${g[l.tone].dot}`,"aria-hidden":"true"}),l.label]}),e.jsx("dd",{className:"text-sm font-semibold tabular-nums text-slate-950",children:l.total.toLocaleStr
16ing("it-IT")})]},l.status))}):e.jsxs("div",{className:"px-5 py-8 text-center",children:[e.jsx(R,{className:"mx-auto h-7 w-7 text-slate-400","aria-hidden":"true"}),e.jsx("p",{className:"mt-3 text-sm font-semibold text-slate-900",children:"Coda vuota"}),e.jsx("p",{className:"mt-1 text-xs leading-5 text-slate-600",children:"Nessun invio è attualmente registrato nella coda."})]})]})]}),e.jsxs("section",{className:"overflow-hidden rounded-xl border border-slate-200 bg-white shadow-sm","aria-labelledby":"checks-title",children:[e.jsxs("div",{className:"flex flex-col gap-2 border-b border-slate-200 px-5 py-4 sm:flex-row sm:items-center sm:justify-between",children:[e.jsxs("div",{children:[e.jsx("h2",{id:"checks-title",className:"text-base font-semibold text-slate-950",children:"Esito dei sottocontrolli"}),e.jsx("p",{className:"mt-0.5 text-xs text-slate-600",children:"Dettaglio dell’esecuzione più recente, con errori già sanitizzati dal backend."})]}),p?e.jsxs("div",{className:"inline-flex items-center gap-2 text-xs font-medium text-slate-600",children:[e.jsx(Z,{className:"h-3.5 w-3.5","aria-hidden":"true"}),x(p.startedAtMs)]}):null]}),e.jsx(Le,{run:p})]}),e.jsx($e,{runs:d})]})]})}export{We as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.