PageSourceSearch

https://boni-fix.de/assets/verify.status-BvSrR3J0.js

js boni-fix.de collected 2026-10-04 11:37:47 UTC 5,983 bytes, 1 lines download raw bytes

1import{c as N,b as v,r as c,j as e,B as w}from"./main-CbjonoNK.js";import{u as y}from"./useServerFn-D5G4DKH_.js";import{C as n,d as l,a as i,b as d}from"./card-CTF8yPTa.js";import{B as k}from"./badge-DbHm8n6h.js";import{C as S}from"./circle-x-DV3np2w7.js";import{T as C}from"./triangle-alert-BbEX50pa.js";import{C as A}from"./circle-check-QYwSju1k.js";import{A as _}from"./activity-DLsvuwXb.js";import{L as j}from"./loader-circle-CeC2bKca.js";import{R as E}from"./refresh-cw-DsfoV7Tl.js";import"./helfer-C3Ymh5zH.js";import"./pruefung-D0tsHnsk.js";const T=N({method:"POST"}).handler(v("832f12209b4f0a47b0b32824e6663a6ec58fafa688948d354c73896754f68160")),t={operational:{label:"Betrieb normal",color:"bg-green-100 text-green-800 border-green-300",icon:A},degraded:{label:"Eingeschränkt",color:"bg-yellow-100 text-yellow-800 border-yellow-300",icon:C},down:{label:"Ausfall",color:"bg-red-100 text-red-800 border-red-300",icon:S}};function O(){const f=y(T),[a,p]=c.useState(null),[b,x]=c.useState(!0),[h,u]=c.useState(!1);async function o(s=!1){s?x(!0):u(!0);try{const r=await f({data:{}});p(r)}catch(r){console.error("getVerifyStatus failed",r)}finally{x(!1),u(!1)}}c.useEffect(()=>{o(!0);const s=setInterval(()=>o(!1),6e4);return()=>clearInterval(s)},[]);const m=a?a.components.some(s=>s.status==="down")?"down":a.components.some(s=>s.status==="degraded")?"degraded":"operational":"operational",g=t[m].icon;return e.jsxs("div",{className:"min-h-screen bg-background",children:[e.jsx("header",{className:"border-b",children:e.jsxs("div",{className:"max-w-4xl mx-auto px-6 py-4 flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(_,{className:"h-5 w-5 text-primary"}),e.jsx("span",{className:"font-semibold",children:"Bonifix Verify · Status"})]}),e.jsx(w,{variant:"ghost",size:"sm",onClick:()=>o(!1),disabled:h,children:h?e.jsx(j,{className:"h-4 w-4 animate-spin"}):e.jsx(E,{className:"h-4 w-4"})})]})}),e.jsx("main",{className:"max-w-4xl mx-auto px-6 py-10 space-y-6",children:b?e.jsx("div",{className:"py-24 flex justify-center",children:e.jsx(j,{className:"h-6 w-6 animate-spin text-muted-foreground"})}):a?e.jsxs(e.Fragment,{children:[e.jsx(n,{className:`border-2 ${t[m].color.replace("bg-","border-").split(" ")[0]}`,children:e.jsxs(l,{className:"p-6 flex items-center gap-4",children:[e.jsx(g,{className:"h-10 w-10"}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-semibold",children:t[m].label}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:["Stand: ",new Date(a.generated_at).toLocaleString("de-DE")]})]})]})}),e.jsxs(n,{children:[e.jsx(i,{children:e.jsx(d,{className:"text-base",children:"Komponenten"})}),e.jsx(l,{className:"divide-y",children:a.components.map(s=>{const r=t[s.status].icon;return e.jsxs("div",{className:"py-3 flex items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("div",{className:"font-medium",children:s.label}),e.jsx("div",{className:"text-xs text-muted-foreground",children:s.metric})]}),e.jsxs(k,{className:t[s.status].color,children:[e.jsx(r,{className:"h-3 w-3 mr-1"}),t[s.status].label]})]},s.key)})})]}),e.jsxs("div",{className:"grid md:grid-cols-2 gap-6",children:[e.jsxs(n,{children:[e.jsx(i,{children:e.jsx(d,{className:"text-base",children:"Auskunfteien (24h)"})}),e.jsx(l,{className:"space-y-2 text-sm",children:a.sources.length===0?e.jsx("p",{className:"text-muted-foreground",children:"Keine Abrufe in den letzten 24 h."}):a.sources.map(s=>e.jsxs("div",{className:"flex justify-between",children:[e.jsx("span",{className:"font-medium",children:s.source}),e.jsxs("span",{className:"text-muted-foreground tabular-nums",children:[s.ok,"/",s.total," · ",(s.ok_rate*100).toFixed(1),"%"]})]},s.source))})]}),e.jsxs(n,{children:[e.jsx(i,{children:e.jsx(d,{className:"text-base",children:"Webhooks (24h)"})}),e.jsxs(l,{className:"space-y-1 text-sm",children:[e.jsxs("div",{className:"flex justify-between",children:[e.jsx("span",{children:"Gesamt"}),e.jsx("span",{className:"tabular-nums",children:a.webhooks.total})]}),e.jsxs("div",{className:"flex justify-between",children:[e.jsx("span",{children:"Erfolgreich"}),e.jsx("span",{className:"tabular-nums",children:a.webhooks.ok})]}),e.jsxs("div",{className:"flex justify-between",children:[e.jsx("span",{children:"In Retry"}),e.jsx("span",{className:"tabular-nums",children:a.webhooks.pending})]}),e.jsxs("div",{className:"flex justify-between",children:[e.jsx("span",{children:"Endgültig fehlgeschlagen"}),e.jsx("span",{className:"tabular-nums text-red-700",children:a.webhooks.dead})]}
1),e.jsxs("div",{className:"border-t mt-2 pt-2 flex justify-between font-medium",children:[e.jsx("span",{children:"Erfolgsquote"}),e.jsxs("span",{className:"tabular-nums",children:[(a.webhooks.ok_rate*100).toFixed(1),"%"]})]})]})]})]}),e.jsxs(n,{children:[e.jsx(i,{children:e.jsx(d,{className:"text-base",children:"Bearbeitung (7 Tage)"})}),e.jsxs(l,{className:"grid grid-cols-3 gap-4 text-center",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-3xl font-semibold tabular-nums",children:a.checks_7d.total}),e.jsx("div",{className:"text-xs text-muted-foreground",children:"Gestartete Prüfungen"})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-3xl font-semibold tabular-nums",children:a.checks_7d.completed}),e.jsx("div",{className:"text-xs text-muted-foreground",children:"Abgeschlossen"})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-3xl font-semibold tabular-nums",children:a.checks_7d.median_hours===null?"—":`${a.checks_7d.median_hours.toFixed(1)} h`}),e.jsx("div",{className:"text-xs text-muted-foreground",children:"Median bis Abschluss"})]})]})]}),e.jsx("p",{className:"text-xs text-muted-foreground text-center",children:"Aktualisiert automatisch jede Minute. Keine personenbezogenen Daten — nur Aggregat-Metriken."})]}):e.jsx("p",{className:"text-muted-foreground",children:"Status konnte nicht geladen werden."})})]})}export{O as component};

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.