1import{a9 as $,r as c,s as l,k as n,j as e,aa as O,V as T,bs as F,e as d,bO as R,C as j,a3 as b,a4 as N,bg as k,W as w,bc as L,B as W}from"./index-DtAltElw.js";import{R as H}from"./refresh-cw-CT3THqoX.js";const Q={pending:"bg-slate-100 text-slate-800 dark:bg-slate-800 dark:text-slate-200",sent:"bg-emerald-100 text-emerald-800 dark:bg-emerald-900/40 dark:text-emerald-200",skipped:"bg-amber-100 text-amber-900 dark:bg-amber-900/40 dark:text-amber-200",failed:"bg-red-100 text-red-800 dark:bg-red-900/40 dark:text-red-200"},M=()=>{var p,g;const{isAdmin:v,isHeadOfSales:y,isSeniorManager:_,loading:S}=$(),[r,C]=c.useState(null),[o,x]=c.useState(!1),[m,u]=c.useState(!1),i=c.useCallback(async()=>{x(!0);const{data:s,error:a}=await l.rpc("owner_notif_stats");if(x(!1),a){n.error("Statistik konnte nicht geladen werden: "+a.message);return}C(s)},[]);c.useEffect(()=>{i()},[i]);const z=async s=>{const{data:a,error:t}=await l.rpc("owner_notif_retry",{p_ids:[s]});if(t)return n.error(t.message);n.success(`${a??0} Eintrag zurückgesetzt`),i()},B=async()=>{var f;if(!((f=r==null?void 0:r.recent_errors)!=null&&f.length))return;const s=r.recent_errors.map(D=>D.id),{data:a,error:t}=await l.rpc("owner_notif_retry",{p_ids:s});if(t)return n.error(t.message);n.success(`${a??0} Einträge zurückgesetzt`),i()},E=async()=>{u(!0);const{data:s,error:a}=await l.functions.invoke("dispatch-owner-notifications");if(u(!1),a)return n.error("Dispatch fehlgeschlagen: "+a.message);const t=s;n.success(`Dispatch: ${(t==null?void 0:t.processed)??0} verarbeitet, ${(t==null?void 0:t.sent)??0} versendet, ${(t==null?void 0:t.failed)??0} Fehler`),i()};if(S)return null;if(!v&&!y&&!_)return e.jsx(O,{to:"/dashboard",replace:!0});const h=(r==null?void 0:r.counts)??{},A=Object.values(h).reduce((s,a)=>s+a,0);return e.jsxs("div",{className:"space-y-6 p-4 md:p-6 max-w-5xl mx-auto",children:[e.jsx(T,{}),e.jsxs("header",{className:"space-y-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(F,{className:"h-5 w-5 text-primary"}),e.jsx("h1",{className:"text-xl font-semibold",children:"Notification-Queue"})]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Beobachtbarkeit der Owner-Benachrichtigungs-Warteschlange. Werte für die letzten 24 Stunden."})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs(d,{variant:"outline",size:"sm",onClick:i,disabled:o,children:[e.jsx(H,{className:`h-4 w-4 mr-1 ${o?"animate-spin":""}`}),"Aktualisieren"]}),e.jsxs(d,{variant:"outline",size:"sm",onClick:E,disabled:m,children:[e.jsx(R,{className:`h-4 w-4 mr-1 ${m?"animate-pulse":""}`}),"Dispatch jetzt starten"]})]}),e.jsxs(j,{children:[e.jsxs(b,{children:[e.jsx(N,{className:"text-base",children:"Status letzte 24 h"}),e.jsxs(k,{children:[A," Einträge insgesamt"]})]}),e.jsx(w,{children:e.jsx("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-3",children:["pending","sent","skipped","failed"].map(s=>e.jsxs("div",{className:"rounded-lg border p-3",children:[e.jsx("div",{className:"text-xs text-muted-foreground uppercase tracking-wide",children:s}),e.jsx("div",{className:"mt-1 text-2xl font-semibold tabular-nums",children:h[s]??0})]},s))})})]}),e.jsxs(j,{children:[e.jsxs(b,{className:"flex flex-row items-center justify-between space-y-0",children:[e.jsxs("div",{children:[e.jsxs(N,{className:"text-base flex items-center gap-2",children:[e.jsx(L,{className:"h-4 w-4 text-amber-600"})," Letzte 5 Fehler / Skips"]}),e.jsx(k,{children:"Nur nicht erfolgreiche Einträge"})]}),(p=r==null?void 0:r.recent_errors)!=null&&p.length?e.jsx(d,{size:"sm",variant:"outline",onClick:B,children:"Alle erneut versuchen"}):null]}),e.jsx(w,{children:(g=r==null?void 0:r.recent_errors)!=null&&g.length?e.jsx("div",{className:"space-y-2",children:r.recent_errors.map(s=>e.jsxs("div",{className:"rounded-lg border p-3 text-sm",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2 mb-1",children:[e.jsx(W,{className:Q[s.attempts>=5?"failed":"skipped"],children:s.event_type}),e.jsx("span",{className:"font-medium",children:s.entity_name||"â"}),e.jsx("span",{className:"text-xs text-muted-foreground",children:new Date(s.updated_at).toLocaleStr
1ing("de-DE")}),e.jsxs("span",{className:"text-xs text-muted-foreground ml-auto",children:["Versuche: ",s.attempts]}),e.jsx(d,{size:"sm",variant:"ghost",onClick:()=>z(s.id),children:"Retry"})]}),e.jsx("div",{className:"text-xs text-muted-foreground font-mono whitespace-pre-wrap",children:s.last_error||"(kein Fehlertext)"})]},s.id))}):e.jsx("div",{className:"text-sm text-muted-foreground",children:"Keine Fehler â sauber."})})]})]})};export{M 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.