1import{d as be,r as b,c as _,w as ge,o as kt,z as u,B as e,D as C,k as I,K as z,G as t,u as s,A as H,F as ue,L as pe,H as re,U as ct,J as Oe,R as se,W as le,C as l,a0 as is,q as Gt,$ as Mt,Y as Kt,V as Zt,X as ds,Z as us,a as cs,I as ps}from"./vendor-vue-CNokyTVe.js";import{_ as ms}from"./AppLayout.vue_vue_type_script_setup_true_lang-DA3QqGQe.js";import{b as ts,k as ss,at as Le,_ as He,g as Je,a4 as te,D as gs,a as pt}from"./index-DP2Z749b.js";import{S as ce}from"./Select-S_YpYAoi.js";import{_ as _e}from"./HelpTooltip.vue_vue_type_script_setup_true_lang-Bt5WJPlp.js";import{u as we}from"./vendor-i18n-CJe1LeE7.js";import{_ as vs,s as ht,f as Nt,b as Ge,p as Jt,a as _s}from"./OpsErrorLogTable.vue_vue_type_script_setup_true_lang-BA2gNOf5.js";import{C as wt,A as xs,p as $t,a as Ct,D as fs,e as zt,c as Ht,L as Vt,P as Bt,b as Lt,i as Qt,d as Wt,B as ys,f as bs}from"./vendor-chart-CN2sanci.js";import{_ as mt}from"./EmptyState.vue_vue_type_script_setup_true_lang-qrSDwWZV.js";import{a as Rt,b as hs,u as ks}from"./vendor-ui-cXGMPlE0.js";import{P as as}from"./Pagination-BppI-mJq.js";import{b as ws}from"./apiError-BcAuv_LF.js";import{u as $s}from"./useClipboard-CR8lmECi.js";import{_ as qe}from"./Toggle.vue_vue_type_script_setup_true_lang-OVibfImV.js";import{_ as Cs}from"./ConfirmDialog.vue_vue_type_script_setup_true_lang-CmtphKkd.js";import"./AppHeader.vue_vue_type_style_index_0_scoped_e9be4349_lang-xG_yv2rf.js";import"./vendor-misc-CSmvsGIg.js";import"./LocaleSwitcher-pcuQ_98X.js";/* empty css */import"./DataTable-CSNQ-xLu.js";import"./errorBadges-dEAkHb3m.js";import"./usePersistedPageSize-x0WpaIWh.js";const Rs={class:"flex flex-wrap items-center justify-between gap-4 border-b border-gray-100 pb-4 dark:border-dark-700"},Ss={class:"flex items-center gap-2 text-xl font-black text-gray-900 dark:text-white"},Ts={key:0,class:"mt-1 flex items-center gap-3 text-xs text-gray-500 dark:text-gray-400"},Ds=["title"],Es={class:"relative flex h-2 w-2"},qs={class:"flex flex-wrap items-center gap-3"},Ms=["disabled","title"],Vs={key:3,class:"mx-1 hidden h-4 w-[1px] bg-gray-200 dark:bg-dark-700 sm:block"},Ls=["title"],As={class:"hidden sm:inline"},Fs=["title"],Os={class:"hidden sm:inline"},Is=["title"],js={key:0,class:"grid grid-cols-1 gap-6 lg:grid-cols-12"},Ps={class:"grid h-full grid-cols-1 gap-6 md:grid-cols-[200px_1fr] md:items-center"},Us={class:"group relative flex cursor-pointer flex-col items-center justify-center rounded-xl py-2 transition-all hover:bg-white/60 dark:hover:bg-dark-800/60 md:border-r md:border-gray-200 md:pr-6 dark:md:border-dark-700"},Ns={class:"pointer-events-none absolute left-1/2 top-full z-50 mt-2 w-72 -translate-x-1/2 opacity-0 transition-opacity duration-200 group-hover:pointer-events-auto group-hover:opacity-100 md:left-full md:top-0 md:ml-2 md:mt-0 md:translate-x-0"},zs={class:"rounded-xl bg-white p-4 shadow-xl ring-1 ring-black/5 dark:bg-dark-800 dark:ring-white/10"},Hs={class:"mb-3 border-b border-gray-100 pb-2 text-sm font-bold text-gray-900 dark:border-dark-700 dark:text-white flex items-center gap-2"},Bs={class:"space-y-3"},Qs={class:"mt-0.5 shrink-0"},Ws={key:0,class:"h-4 w-4 text-red-500",fill:"currentColor",viewBox:"0 0 20 20"},Gs={key:1,class:"h-4 w-4 text-yellow-500",fill:"currentColor",viewBox:"0 0 20 20"},Ks={key:2,class:"h-4 w-4 text-blue-500",fill:"currentColor",viewBox:"0 0 20 20"},Zs={class:"flex-1"},Js={class:"text-xs font-semibold text-gray-900 dark:text-white"},Ys={class:"mt-0.5 text-[11px] text-gray-500 dark:text-gray-400"},Xs={key:0,class:"mt-1 text-[11px] text-blue-600 dark:text-blue-400 flex items-center gap-1"},ea={class:"mt-3 border-t border-gray-100 pt-2 text-[10px] text-gray-400 dark:border-dark-700"},ta={class:"relative flex items-center justify-center"},sa=["width","height"],aa=["cx","cy","r","stroke-width"],na=["cx","cy","r","stroke-width","stroke","stroke-dasharray","stroke-dashoffset"],oa={class:"absolute flex flex-col items-center"},la={key:0,class:"mt-4 text-center"},ra={class:"flex items-center justify-center gap-1 text-xs font-medium text-gray-500"},ia={class:"flex h-full flex-col justify-center py-2"},da={class:"mb-3 flex flex-wrap items-center justify-between gap-2"},ua={class:"flex items-center gap-2"},ca={class:"text-xs font-bold uppercase tracking-wider text-gray-400"},pa={class:"flex flex-wrap gap-1"},ma=["onClick"],ga={class:"mt-1 flex flex-wrap items-baseline gap-x-4 gap-y-2"},va={class:"flex items-baseline gap-1.5"},_a={class:"flex items-baseline gap-1.5"},xa={class:"grid grid-cols-2 gap-3"},fa={class:"flex items-baseline gap-1.5"},ya={class:"font-black text-gray-900 dark:text-white"},ba={class:"flex items-baseline gap-1.5"},ha={class:"font-black text-gray-900 dark:text-white"},ka={class:"text-xs"},wa={class:"flex items-baseline gap-1.5"},$a={class:"font-black text-gray-900 dark:text-white"},Ca={class:"flex items-baseline gap-1.5"},Ra={class:"font-black text-gray-900 dark:text-white"},Sa={class:"text-xs"},Ta={class:"grid h-full grid-cols-1 content-center gap-4 sm:grid-cols-2 lg:col-span-7 lg:grid-cols-3"},Da={class:"rounded-2xl bg-gray-50 p-4 dark:bg-dark-900",style:{order:"1"}},Ea={class:"flex items-center justify-between"},qa={class:"flex items-center gap-1"},Ma={class:"text-[10px] font-bold uppercase text-gray-400"},Va={class:"mt-2 space-y-2 text-xs"},La={class:"flex justify-between"},Aa={class:"text-gray-500"},Fa={class:"font-bold text-gray-900 dark:text-white"},Oa={class:"flex justify-between"},Ia={class:"text-gray-500"},ja={class:"font-bold text-gray-900 dark:text-white"},Pa={class:"flex justify-between"},Ua={class:"text-gray-500"},Na={class:"font-bold text-gray-900 dark:text-white"},za={class:"flex justify-between"},Ha={class:"text-gray-500"},Ba={class:"font-bold text-gray-900 dark:text-white"},Qa={class:"rounded-2xl bg-gray-50 p-4 dark:bg-dark-900",style:{order:"2"}},Wa={class:"flex items-center justify-between"},Ga={class:"flex items-center gap-2"},Ka={class:"text-[10px] font-bold uppercase text-gray-400"},Za={class:"mt-3 h-2 w-full overflow-hidden rounded-full bg-gray-200 dark:bg-dark-700"},Ja={class:"mt-3 text-xs"},Ya={class:"flex justify-between"},Xa={class:"text-gray-500"},en={class:"font-bold text-red-600 dark:text-red-400"},tn={class:"rounded-2xl bg-gray-50 p-4 dark:bg-dark-900",style:{order:"4"}},sn={class:"flex items-center justify-between"},an={class:"flex items-center gap-1"},nn={class:"text-[10px] font-bold uppercase text-gray-400"},on={class:"mt-2 flex items-baseline gap-2"},ln={class:"text-3xl font-black text-gray-900 dark:text-white"},rn={class:"mt-3 grid grid-cols-1 gap-x-3 gap-y-1 text-xs 2xl:grid-cols-2"},dn={class:"flex items-baseline gap-1 whitespace-nowrap"},un={class:"font-bold text-gray-900 dark:text-white"},cn={class:"flex items-baseline gap-1 whitespace-nowrap"},pn={class:"font-bold text-gray-900 dark:text-white"},mn={class:"flex items-baseline gap-1 whitespace-nowrap"},gn={class:"font-bold text-gray-900 dark:text-white"},vn={class:"flex items-baseline gap-1 whitespace-nowrap"},_n={class:"font-bold text-gray-900 dark:text-white"},xn={class:"flex items-baseline gap-1 whitespace-nowrap"},fn={class:"font-bold text-gray-900 dark:text-white"},yn={class:"rounded-2xl bg-gray-50 p-4 dark:bg-dark-900",style:{order:"5"}},bn={class:"flex items-center justify-between"},hn={class:"flex items-center gap-1"},kn={class:"mt-2 flex items-baseline gap-2"},wn={class:"mt-3 grid grid-cols-1 gap-x-3 gap-y-1 text-xs 2xl:grid-cols-2"},$n={class:"flex items-baseline gap-1 whitespace-nowrap"},Cn={class:"flex items-baseline gap-1 whitespace-nowrap"},Rn={class:"flex items-baseline gap-1 whitespace-nowrap"},Sn={class:"flex items-baseline gap-1 whitespace-nowrap"},Tn={class:"flex items-baseline gap-1 whitespace-nowrap"},Dn={class:"rounded-2xl bg-gray-50 p-4 dark:bg-dark-900",style:{order:"3"}},En={class:"flex items-center justify-between"},qn={class:"flex items-center gap-1"},Mn={class:"text-[10px] font-bold uppercase text-gray-400"},Vn={class:"mt-3 space-y-1 text-xs"},Ln={class:"flex justify-between"},An={class:"text-gray-500"},Fn={class:"font-bold text-gray-900 dark:text-white"},On={class:"flex justify-between"},In={class:"text-gray-500"},jn={class:"font-bold text-gray-900 dark:text-white"},Pn={class:"rounded-2xl bg-gray-50 p-4 dark:bg-dark-900",style:{order:"6"}},Un={class:"flex items-center justify-between"},Nn={class:"flex items-center gap-1"},zn={class:"text-[10px] font-bold uppercase text-gray-400"},Hn={class:"mt-3 space-y-1 text-xs"},Bn={class:"flex justify-between"},Qn={class:"text-gray-500"},Wn={class:"font-bold text-gray-900 dark:text-white"},Gn={class:"flex justify-between"},Kn={class:"font-bold text-gray-900 dark:text-white"}
1,Zn={key:1,class:"mt-2 border-t border-gray-100 pt-4 dark:border-dark-700"},Jn={class:"grid grid-cols-2 gap-3 sm:grid-cols-3 lg:grid-cols-6"},Yn={class:"rounded-xl bg-gray-50 p-3 dark:bg-dark-900"},Xn={class:"flex items-center gap-1"},eo={key:0,class:"mt-1 text-[10px] text-gray-500 dark:text-gray-400"},to={class:"rounded-xl bg-gray-50 p-3 dark:bg-dark-900"},so={class:"flex items-center gap-1"},ao={class:"text-[10px] font-bold uppercase tracking-wider text-gray-400"},no={key:0,class:"mt-1 text-[10px] text-gray-500 dark:text-gray-400"},oo={class:"rounded-xl bg-gray-50 p-3 dark:bg-dark-900"},lo={class:"flex items-center gap-1"},ro={class:"text-[10px] font-bold uppercase tracking-wider text-gray-400"},io={key:0,class:"mt-1 text-[10px] text-gray-500 dark:text-gray-400"},uo={key:0},co={class:"rounded-xl bg-gray-50 p-3 dark:bg-dark-900"},po={class:"flex items-center gap-1"},mo={key:0,class:"mt-1 text-[10px] text-gray-500 dark:text-gray-400"},go={key:0},vo={key:1},_o={class:"rounded-xl bg-gray-50 p-3 dark:bg-dark-900"},xo={class:"flex items-center gap-1"},fo={class:"text-[10px] font-bold uppercase tracking-wider text-gray-400"},yo={key:0,class:"mt-1 text-[10px] text-gray-500 dark:text-gray-400"},bo={class:"font-mono"},ho={key:0},ko={class:"font-mono"},wo={class:"rounded-xl bg-gray-50 p-3 dark:bg-dark-900"},$o={class:"flex items-center justify-between gap-2"},Co={class:"flex items-center gap-1"},Ro={class:"text-[10px] font-bold uppercase tracking-wider text-gray-400"},So={key:0,class:"mt-1 text-[10px] text-gray-500 dark:text-gray-400"},To={class:"font-mono"},Do={class:"font-mono"},Eo={key:0,class:"text-sm text-gray-500 dark:text-gray-400"},qo={key:1,class:"space-y-3"},Mo={class:"flex items-center justify-between gap-3"},Vo={class:"truncate text-sm font-semibold text-gray-900 dark:text-white"},Lo={class:"flex items-center gap-3 text-xs text-gray-500 dark:text-gray-400"},Ao={key:0,class:"font-mono"},Fo={class:"mt-2 grid grid-cols-1 gap-2 text-xs text-gray-600 dark:text-gray-300 sm:grid-cols-2"},Oo={class:"font-mono"},Io={class:"font-mono"},jo={class:"font-mono"},Po={key:0,class:"mt-3 rounded-lg bg-rose-50 p-2 text-xs text-rose-700 dark:bg-rose-900/20 dark:text-rose-300"},Uo={class:"space-y-4"},No={class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"},zo={class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"},Ho={class:"flex justify-end gap-3 pt-2"},Yt=8e3,Xt=15e3,Bo=be({__name:"OpsDashboardHeader",props:{overview:{},platform:{},groupId:{},timeRange:{},queryMode:{},loading:{type:Boolean},lastUpdated:{},thresholds:{},autoRefreshEnabled:{type:Boolean},autoRefreshCountdown:{},fullscreen:{type:Boolean},customStartTime:{},customEndTime:{}},emits:["update:platform","update:group","update:timeRange","update:queryMode","update:customTimeRange","refresh","openRequestDetails","openErrorDetails","openSettings","openAlertRules","enterFullscreen","exitFullscreen"],setup(ie,{emit:d}){const a=ie,T=d,{t:n}=we(),P=ts(),D=b("1min"),q=_(()=>a.overview??null),$=_(()=>{var r;return((r=q.value)==null?void 0:r.system_metrics)??null}),x={"1min":1,"5min":5,"30min":30,"1h":60},v={"5m":5,"30m":30,"1h":60,"6h":6*60,"24h":24*60},y=_(()=>{const r=v[a.timeRange]??60;return["1min","5min","30min","1h"].filter(o=>x[o]<=r)});ge(()=>a.timeRange,()=>{D.value="1min",m()});const G=b(!1),E=b(""),p=b("");function R(r,o){const K=new Date(r),ke=new Date(o),ze=X=>{const We=String(X.getMonth()+1).padStart(2,"0"),qt=String(X.getDate()).padStart(2,"0"),dt=String(X.getHours()).padStart(2,"0"),ut=String(X.getMinutes()).padStart(2,"0");return`${We}-${qt} ${dt}:${ut}`};return`${ze(K)} ~ ${ze(ke)}`}const A=b([]),ne=_(()=>[{value:"",label:n("common.all")},{value:"openai",label:"OpenAI"},{value:"anthropic",label:"Anthropic"},{value:"gemini",label:"Gemini"},{value:"antigravity",label:"Antigravity"},{value:"grok",label:"Grok"}]),Y=_(()=>[{value:"5m",label:n("admin.ops.timeRange.5m")},{value:"30m",label:n("admin.ops.timeRange.30m")},{value:"1h",label:n("admin.ops.timeRange.1h")},{value:"6h",label:n("admin.ops.timeRange.6h")},{value:"24h",label:n("admin.ops.timeRange.24h")},{value:"custom",label:a.timeRange==="custom"&&a.customStartTime&&a.customEndTime?`${n("admin.ops.timeRange.custom")} (${R(a.customStartTime,a.customEndTime)})`:n("admin.ops.timeRange.custom")}]);_(()=>[{value:"auto",label:n("admin.ops.queryMode.auto")},{value:"raw",label:n("admin.ops.queryMode.raw")},{value:"preagg",label:n("admin.ops.queryMode.preagg")}]);const de=_(()=>{const r=a.platform?A.value.filter(o=>o.platform===a.platform):A.value;return[{value:null,label:n("common.all")},...r.map(o=>({value:o.id,label:o.name}))]});ge(()=>a.platform,r=>{if(!r)return;const o=A.value.find(K=>K.id===a.groupId);o&&o.platform!==r&&T("update:group",null)}),kt(async()=>{try{const r=await ss.groups.getAll();A.value=r.map(o=>({id:o.id,name:o.name,platform:o.platform}))}catch(r){console.error("[OpsDashboardHeader] Failed to load groups",r),A.value=[]}});function ee(r){T("update:platform",String(r||""))}function W(r){if(r===null||r===""||typeof r=="boolean"){T("update:group",null);return}const o=typeof r=="number"?r:Number.parseInt(String(r),10);T("update:group",Number.isFinite(o)&&o>0?o:null)}function Q(r){const o=String(r||"1h");if(o==="custom"){const K=new Date,ke=new Date(K.getTime()-60*60*1e3);E.value=ke.toISOString().slice(0,16),p.value=K.toISOString().slice(0,16),G.value=!0}else T("update:timeRange",o)}function k(){if(!E.value||!p.value)return;const r=new Date(E.value).toISOString(),o=new Date(p.value).toISOString();T("update:customTimeRange",r,o),T("update:timeRange","custom"),G.value=!1}function c(){G.value=!1}function i(r){T("openRequestDetails",r)}function F(r){T("openErrorDetails",r)}function M(r){var ke;if(r==null)return"normal";const o=(ke=a.thresholds)==null?void 0:ke.sla_percent_min;if(o==null)return"normal";const K=.1;return r<o?"critical":r<o+K?"warning":"normal"}function O(r){var K;if(r==null)return"normal";const o=(K=a.thresholds)==null?void 0:K.ttft_p99_ms_max;return o==null?"normal":r>=o?"critical":r>=o*.8?"warning":"normal"}function L(r){var K;if(r==null)return"normal";const o=(K=a.thresholds)==null?void 0:K.request_error_rate_percent_max;return o==null?"normal":r>=o?"critical":r>=o*.8?"warning":"normal"}function B(r){var K;if(r==null)return"normal";const o=(K=a.thresholds)==null?void 0:K.upstream_error_rate_percent_max;return o==null?"normal":r>=o?"critical":r>=o*.8?"warning":"normal"}function Z(r){switch(r){case"critical":return"text-red-600 dark:text-red-400";case"warning":return"text-yellow-600 dark:text-yellow-400";default:return"text-green-600 dark:text-green-400"}}const ve=_(()=>{var r;return Le(((r=q.value)==null?void 0:r.request_count_total)??0)}),xe=_(()=>{var r;return Le(((r=q.value)==null?void 0:r.token_consumed)??0)}),me=b(null),j=b(!1);function g(){const r=new Date().toISOString();return{window:D.value,start_time:r,end_time:r,platform:a.platform,group_id:a.groupId,qps:{current:0,peak:0,avg:0},tps:{current:0,peak:0,avg:0}}}async function m(){if(!j.value){if(!P.opsRealtimeMonitoringEnabled){me.value=g();return}j.value=!0;try{const r=await te.getRealtimeTrafficSummary(D.value,a.platform,a.groupId);r&&r.enabled===!1&&P.setOpsRealtimeMonitoringEnabledLocal(!1),me.value=(r==null?void 0:r.summary)??null}catch(r){console.error("[OpsDashboardHeader] Failed to load realtime traffic summary",r),me.value=null}finally{j.value=!1}}}ge(()=>[D.value,a.platform,a.groupId],()=>{m()},{immediate:!0}),ge(()=>P.opsRealtimeMonitoringEnabled,r=>{r?m():me.value=g()},{immediate:!0}),ge(()=>[a.autoRefreshEnabled,a.autoRefreshCountdown,a.loading],([r,o,K])=>{r&&(K||o===0&&m())});const w=_(()=>{var o,K;const r=(K=(o=me.value)==null?void 0:o.qps)==null?void 0:K.current;return typeof r=="number"&&Number.isFinite(r)?r:0}),oe=_(()=>{var o,K;const r=(K=(o=me.value)==null?void 0:o.tps)==null?void 0:K.current;return typeof r=="number"&&Number.isFinite(r)?r:0}),$e=_(()=>{var o,K;const r=(K=(o=me.value)==null?void 0:o.qps)==null?void 0:K.peak;return typeof r=="number"&&Number.isFinite(r)?r.toFixed(1):"-"}),Te=_(()=>{var o,K;const r=(K=(o=me.value)==null?void 0:o.tps)==null?void 0:K.peak;return typeof r=="number"&&Number.isFinite(r)?r.toFixed(1):"-"}),De=_(()=>{var o,K;const r=(K=(o=me.value)==null?void 0:o.qps)==null?void 0:K.avg;return typeof r=="number"&&Number.isFinite(r)?r.toFixed(1):"-"}),Ie=_(()=>{var o,K;const r=(K=(o=me.value)==null?void 0:o.tps)==null?void 0:K.avg;return typeof r=="number"&&Number.isFinite(r)?r.toFixed(1):"-"}),N=_(()=>{var o,K;const r=(K=(o=q.value)==null?void 0:o.qps)==null?void 0:K.avg;return typeof r!="number"?"-":r.toFixed(1)}),S=_(()=>{var o,K;const r=(K=(o=q.value)==null?void 0:o.tps)==null?void 0:K.avg;return typeof r!="number"?"-":r.toFixed(1)}),h=_(()=>{var o;const r=(o=q.value)==null?void 0:o.sla;return typeof r!="number"?null:r*100}),J=_(()=>{var o;const r=(o=q.value)==null?void 0:o.error_rate;return typeof r!="number"?null:r*100}),ae=_(()=>{var o;const r=(o=q.value)==null?void 0:o.upstream_error_rate;return typeof r!="number"?null:r*100}),fe=_(()=>{var r,o;return((o=(r=q.value)==null?void 0:r.duration)==null?void 0:o.p99_ms)??null}),ye=_(()=>{var r,o;return((o=(r=q.value)==null?void 0:r.duration)==null?void 0:o.p95_ms)??null}),Ce=_(()=>{var r,o;return((o=(r=q.value)==null?void 0:r.duration)==null?void 0:o.p90_ms)??null}),Be=_(()=>{var r,o;return((o=(r=q.value)==null?void 0:r.duration)==null?void 0:o.p50_ms)??null}),Qe=_(()=>{var r,o;return((o=(r=q.value)==null?void 0:r.duration)==null?void 0:o.avg_ms)??null}),Ke=_(()=>{var r,o;return((o=(r=q.value)==null?void 0:r.duration)==null?void 0:o.max_ms)??null}),je=_(()=>{var r,o;return((o=(r=q.value)==null?void 0:r.ttft)==null?void 0:o.p99_ms)??null}),Ae=_(()=>{var r,o;return((o=(r=q.value)==null?void 0:r.ttft)==null?void 0:o.p95_ms)??null}),tt=_(()=>{var r,o;return((o=(r=q.value)==null?void 0:r.ttft)==null?void 0:o.p90_ms)??null}),st=_(()=>{var r,o;return((o=(r=q.value)==null?void 0:r.ttft)==null?void 0:o.p50_ms)??null}),Pe=_(()=>{var r,o;return((o=(r=q.value)==null?void 0:r.ttft)==null?void 0:o.avg_ms)??null}),Ye=_(()=>{var r,o;return((o=(r=q.value)==null?void 0:r.ttft)==null?void 0:o.max_ms)??null}),he=_(()=>{var ke;const r=q.value;if(!r)return!0;const o=(ke=r.qps)==null?void 0:ke.current,K=r.error_rate??0;return(o??0)===0&&K===0}),Re=_(()=>{var o;const r=(o=q.value)==null?void 0:o.health_score;return typeof r=="number"&&Number.isFinite(r)?r:null}),St=_(()=>{if(he.value)return"#9ca3af";const r=Re.value;return r==null?"#9ca3af":r>=90?"#10b981":r>=60?"#f59e0b":"#ef4444"}),gt=_(()=>{if(he.value)return"text-gray-400";const r=Re.value;return r==null?"text-gray-400":r>=90?"text-green-500":r>=60?"text-yellow-500":"text-red-500"}),Fe=_(()=>a.fullscreen?140:100),vt=_(()=>a.fullscreen?10:8),_t=_(()=>(Fe.value-vt.value)/2),at=_(()=>2*Math.PI*_t.value),nt=_(()=>{if(he.value||Re.value==null)return 0;const r=Math.max(0,Math.min(100,Re.value));return at.value-r/100*at.value}),At=_(()=>{var qt;const r=q.value;if(!r)return[];const o=[];if(he.value)return o.push({type:"info",message:n("admin.ops.diagnosis.idle"),impact:n("admin.ops.diagnosis.idleImpact")}),o;const K=r.system_metrics;if(K){K.db_ok===!1&&o.push({type:"critical",message:n("admin.ops.diagnosis.dbDown"),impact:n("admin.ops.diagnosis.dbDownImpact"),action:n("admin.ops.diagnosis.dbDownAction")}),K.redis_ok===!1&&o.push({type:"warning",message:n("admin.ops.diagnosis.redisDown"),impact:n("admin.ops.diagnosis.redisDownImpact"),action:n("admin.ops.diagnosis.redisDownAction")});const dt=K.cpu_usage_percent??0;dt>90?o.push({type:"critical",message:n("admin.ops.diagnosis.cpuCritical",{usage:dt.toFixed(1)}),impact:n("admin.ops.diagnosis.cpuCriticalImpact"),action:n("admin.ops.diagnosis.cpuCriticalAction")}):dt>80&&o.push({type:"warning",message:n("admin.ops.diagnosis.cpuHigh",{usage:dt.toFixed(1)}),impact:n("admin.ops.diagnosis.cpuHighImpact"),action:n("admin.ops.diagnosis.cpuHighAction")});const ut=K.memory_usage_percent??0;ut>90?o.push({type:"critical",message:n("admin.ops.diagnosis.memoryCritical",{usage:ut.toFixed(1)}),impact:n("admin.ops.diagnosis.memoryCriticalImpact"),action:n("admin.ops.diagnosis.memoryCriticalAction")}):ut>85&&o.push({type:"warning",message:n("admin.ops.diagnosis.memoryHigh",{usage:ut.toFixed(1)}),impact:n("admin.ops.diagnosis.memoryHighImpact"),action:n("admin.ops.diagnosis.memoryHighAction")})}const ke=((qt=r.ttft)==null?void 0:qt.p99_ms)??0;ke>500&&o.push({type:"warning",message:n("admin.ops.diagnosis.ttftHigh",{ttft:ke.toFixed(0)}),impact:n("admin.ops.diagnosis.ttftHighImpact"),action:n("admin.ops.diagnosis.ttftHighAction")});const ze=(r.upstream_error_rate??0)*100;ze>5?o.push({type:"critical",message:n("admin.ops.diagnosis.upstreamCritical",{rate:ze.toFixed(2)}),impact:n("admin.ops.diagnosis.upstreamCriticalImpact"),action:n("admin.ops.diagnosis.upstreamCriticalAction")}):ze>2&&o.push({type:"warning",message:n("admin.ops.diagnosis.upstreamHigh",{rate:ze.toFixed(2)}),impact:n("admin.ops.diagnosis.upstreamHighImpact"),action:n("admin.ops.diagnosis.upstreamHighAction")});const X=(r.error_rate??0)*100;X>3?o.push({type:"critical",message:n("admin.ops.diagnosis.errorHigh",{rate:X.toFixed(2)}),impact:n("admin.ops.diagnosis.errorHighImpact"),action:n("admin.ops.diagnosis.errorHighAction")}):X>.5&&o.push({type:"warning",message:n("admin.ops.diagnosis.errorElevated",{rate:X.toFixed(2)}),impact:n("admin.ops.diagnosis.errorElevatedImpact"),action:n("admin.ops.diagnosis.errorElevatedAction")});const We=(r.sla??0)*100;return We<90?o.push({type:"critical",message:n("admin.ops.diagnosis.slaCritical",{sla:We.toFixed(2)}),impact:n("admin.ops.diagnosis.slaCriticalImpact"),action:n("admin.ops.diagnosis.slaCriticalAction")}):We<98&&o.push({type:"warning",message:n("admin.ops.diagnosis.slaLow",{sla:We.toFixed(2)}),impact:n("admin.ops.diagnosis.slaLowImpact"),action:n("admin.ops.diagnosis.slaLowAction")}),Re.value!=null&&(Re.value<60?o.push({type:"critical",message:n("admin.ops.diagnosis.healthCritical",{score:Re.value}),impact:n("admin.ops.diagnosis.healthCriticalImpact"),action:n("admin.ops.diagnosis.healthCriticalAction")}):Re.value<90&&o.push({type:"warning",message:n("admin.ops.diagnosis.healthLow",{score:Re.value}),impact:n("admin.ops.diagnosis.healthLowImpact"),action:n("admin.ops.diagnosis.healthLowAction")})),o.length===0&&o.push({type:"info",message:n("admin.ops.diagnosis.healthy"),impact:n("admin.ops.diagnosis.healthyImpact")}),o});function xt(r){if(!r)return"-";const o=new Date(r);return Number.isNaN(o.getTime())?"-":o.toLocaleTimeString()}const ft=_(()=>{var o;const r=(o=$.value)==null?void 0:o.cpu_usage_percent;return typeof r=="number"&&Number.isFinite(r)?r:null}),Ft=_(()=>{const r=ft.value;return r==null?"text-gray-900 dark:text-white":r>
1=95?"text-rose-600 dark:text-rose-400":r>=80?"text-yellow-600 dark:text-yellow-400":"text-emerald-600 dark:text-emerald-400"}),yt=_(()=>{var o;const r=(o=$.value)==null?void 0:o.memory_usage_percent;return typeof r=="number"&&Number.isFinite(r)?r:null}),Ot=_(()=>{const r=yt.value;return r==null?"text-gray-900 dark:text-white":r>=95?"text-rose-600 dark:text-rose-400":r>=85?"text-yellow-600 dark:text-yellow-400":"text-emerald-600 dark:text-emerald-400"}),ot=_(()=>{var o;const r=(o=$.value)==null?void 0:o.db_conn_active;return typeof r=="number"&&Number.isFinite(r)?r:null}),Ue=_(()=>{var o;const r=(o=$.value)==null?void 0:o.db_conn_idle;return typeof r=="number"&&Number.isFinite(r)?r:null}),Tt=_(()=>{var o;const r=(o=$.value)==null?void 0:o.db_conn_waiting;return typeof r=="number"&&Number.isFinite(r)?r:null}),bt=_(()=>ot.value==null||Ue.value==null?null:ot.value+Ue.value),lt=_(()=>{var o;const r=(o=$.value)==null?void 0:o.db_max_open_conns;return typeof r=="number"&&Number.isFinite(r)?r:null}),Xe=_(()=>bt.value==null||lt.value==null||lt.value<=0?null:Math.min(100,Math.max(0,bt.value/lt.value*100))),It=_(()=>{var r,o;return((r=$.value)==null?void 0:r.db_ok)===!1?"FAIL":Xe.value!=null?`${Xe.value.toFixed(0)}%`:((o=$.value)==null?void 0:o.db_ok)===!0?n("admin.ops.ok"):n("admin.ops.noData")}),jt=_(()=>{var r,o;return((r=$.value)==null?void 0:r.db_ok)===!1?"text-rose-600 dar
1k:text-rose-400":Xe.value!=null?Xe.value>=90?"text-rose-600 dark:text-rose-400":Xe.value>=70?"text-yellow-600 dark:text-yellow-400":"text-emerald-600 dark:text-emerald-400":((o=$.value)==null?void 0:o.db_ok)===!0?"text-emerald-600 dark:text-emerald-400":"text-gray-900 dark:text-white"}),et=_(()=>{var o;const r=(o=$.value)==null?void 0:o.redis_conn_total;return typeof r=="number"&&Number.isFinite(r)?r:null}),rt=_(()=>{var o;const r=(o=$.value)==null?void 0:o.redis_conn_idle;return typeof r=="number"&&Number.isFinite(r)?r:null}),Dt=_(()=>et.value==null||rt.value==null?null:Math.max(et.value-rt.value,0)),it=_(()=>{var o;const r=(o=$.value)==null?void 0:o.redis_pool_size;return typeof r=="number"&&Number.isFinite(r)?r:null}),Me=_(()=>et.value==null||it.value==null||it.value<=0?null:Math.min(100,Math.max(0,et.value/it.value*100))),Et=_(()=>{var r,o;return((r=$.value)==null?void 0:r.redis_ok)===!1?"FAIL":Me.value!=null?`${Me.value.toFixed(0)}%`:((o=$.value)==null?void 0:o.redis_ok)===!0?n("admin.ops.ok"):n("admin.ops.noData")}),f=_(()=>{var r,o;return((r=$.value)==null?void 0:r.redis_ok)===!1?"text-rose-600 dar
1k:text-rose-400":Me.value!=null?Me.value>=90?"text-rose-600 dark:text-rose-400":Me.value>=70?"text-yellow-600 dark:text-yellow-400":"text-emerald-600 dark:text-emerald-400":((o=$.value)==null?void 0:o.redis_ok)===!0?"text-emerald-600 dark:text-emerald-400":"text-gray-900 dark:text-white"}),V=_(()=>{var o;const r=(o=$.value)==null?void 0:o.goroutine_count;return typeof r=="number"&&Number.isFinite(r)?r:null}),U=_(()=>{const r=V.value;return r==null?"unknown":r>=Xt?"critical":r>=Yt?"warning":"ok"}),Ne=_(()=>{switch(U.value){case"ok":return n("admin.ops.ok");case"warning":return n("common.warning");case"critical":return n("common.critical");default:return n("admin.ops.noData")}}),Ze=_(()=>{switch(U.value){case"ok":return"text-emerald-600 dark:text-emerald-400";case"warning":return"text-yellow-600 dark:text-yellow-400";case"critical":return"text-rose-600 dark:text-rose-400";default:return"text-gray-900 dark:text-white"}}),Ve=_(()=>{var r;return((r=q.value)==null?void 0:r.job_heartbeats)??[]}),Ee=_(()=>{const r=Ve.value;if(!r.length)return"unknown";for(const o of r)if(o&&o.last_error_at&&(!o.last_success_at||o.last_error_at>o.last_success_at))return"warn";return"ok"}),Se=_(()=>{let r=0;for(const o of Ve.value)o&&o.last_error_at&&(!o.last_success_at||o.last_error_at>o.last_success_at)&&r++;return r}),ns=_(()=>{switch(Ee.value){case"ok":return n("admin.ops.ok");case"warn":return n("common.warning");default:return n("admin.ops.noData")}}),os=_(()=>{switch(Ee.value){case"ok":return"text-emerald-600 dark:text-emerald-400";case"warn":return"text-yellow-600 dark:text-yellow-400";default:return"text-gray-900 dark:text-white"}}),Pt=b(!1);function ls(){Pt.value=!0}function rs(){m(),T("refresh")}return(r,o)=>{var K,ke,ze;
1return l(),u("div",{class:H(["flex flex-col gap-4 rounded-3xl bg-white shadow-sm ring-1 ring-gray-900/5 dark:bg-dark-800 dark:ring-dark-700",a.fullscreen?"p-8":"p-6"])},[e("div",Rs,[e("div",null,[e("h1",Ss,[o[12]||(o[12]=e("svg",{class:"h-6 w-6 text-blue-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 01-2 2h-2a2 2 0 01-2-2z"})],-1)),z(" "+t(s(n)("admin.ops.title")),1)]),a.fullscreen?C("",!0):(l(),u("div",Ts,[e("span",{class:"flex items-center gap-1.5",title:a.loading?s(n)("admin.ops.loadingText"):s(n)("admin.ops.ready")},[e("span",Es,[e("span",{class:H(["relative inline-flex h-2 w-2 rounded-full",a.loading?"bg-gray-400":"bg-green-500"])},null,2)]),z(" "+t(a.loading?s(n)("admin.ops.loadingText"):s(n)("admin.ops.ready")),1)],8,Ds),o[14]||(o[14]=e("span",null,"·",-1)),e("span",null,t(s(n)("common.refresh"))+": "+t(a.lastUpdated?a.lastUpdated.toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}).replace(/\//g,"-"):s(n)("common.unknown")),1),a.autoRefreshEnabled&&a.autoRefreshCountdown!==void 0?(l(),u(ue,{key:0},[o[13]||(o[13]=e("span",null,"·",-1)),e("span",null,t(s(n)("admin.ops.autoRefreshRemaining",{seconds:a.autoRefreshCountdown})),1)],64)):C("",!0)]))]),e("div",qs,[a.fullscreen?C("",!0):(l(),u(ue,{key:0},[I(ce,{"model-value":ie.platform,options:ne.value,class:"w-full sm:w-[140px]","onUpdate:modelValue":ee},null,8,["model-value","options"]),I(ce,{"model-value":ie.groupId,options:de.value,class:"w-full sm:w-[160px]","onUpdate:modelValue":W},null,8,["model-value","options"]),o[15]||(o[15]=e("div",{class:"mx-1 hidden h-4 w-[1px] bg-gray-200 dark:bg-dark-700 sm:block"},null,-1)),I(ce,{"model-value":ie.timeRange,options:Y.value,class:"relative w-full sm:w-[150px]","onUpdate:modelValue":Q},null,8,["model-value","options"])],64)),C("",!0),a.fullscreen?C("",!0):(l(),u("button",{key:2,type:"button",class:"flex h-8 w-8 items-center justify-center rounded-lg bg-gray-100 text-gray-500 transition-colors hover:bg-gray-200 dark:bg-dark-700 dark:text-gray-400 dark:hover:bg-dark-600",disabled:ie.loading,title:s(n)("common.refresh"),onClick:rs},[(l(),u("svg",{class:H(["h-4 w-4",{"animate-spin":ie.loading}]),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[...o[16]||(o[16]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"},null,-1)])],2))],8,Ms)),a.fullscreen?C("",!0):(l(),u("div",Vs)),a.fullscreen?C("",!0):(l(),u("button",{key:4,type:"button",class:"flex h-8 items-center gap-1.5 rounded-lg bg-blue-100 px-3 text-xs font-bold text-blue-700 transition-colors hover:bg-blue-200 dark:bg-blue-900/30 dark:text-blue-400 dark:hover:bg-blue-900/50",title:s(n)("admin.ops.alertRules.title"),onClick:o[0]||(o[0]=X=>T("openAlertRules"))},[o[17]||(o[17]=e("svg",{class:"h-4 w-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"})],-1)),e("span",As,t(s(n)("admin.ops.alertRules.manage")),1)],8,Ls)),a.fullscreen?C("",!0):(l(),u("button",{key:5,type:"button",class:"flex h-8 items-center gap-1.5 rounded-lg bg-gray-100 px-3 text-xs font-bold text-gray-700 transition-colors hover:bg-gray-200 dark:bg-dark-700 dark:text-gray-300 dark:hover:bg-dark-600",title:s(n)("admin.ops.settings.title"),onClick:o[1]||(o[1]=X=>T("openSettings"))},[o[18]||(o[18]=e("svg",{class:"h-4 w-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"}),e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"})],-1)),e("span",Os,t(s(n)("common.settings")),1)],8,Fs)),a.fullscreen?C("",!0):(l(),u("button",{key:6,type:"button",class:"flex h-8 w-8 items-center justify-center rounded-lg bg-gray-100 text-gray-700 transition-colors hover:bg-gray-200 dark:bg-dark-700 dark:text-gray-300 dark:hover:bg-dark-600",title:s(n)("admin.ops.fullscreen.enter"),onClick:o[2]||(o[2]=X=>T("enterFullscreen"))},[...o[19]||(o[19]=[e("svg",{class:"h-4 w-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 8V4m0 0h4M4 4l5 5m11-1V4m0 0h-4m4 0l-5 5M4 16v4m0 0h4m-4 0l5-5m11 5l-5-5m5 5v-4m0 4h-4"})],-1)])],8,Is))])]),q.value?(l(),u("div",js,[e("div",{class:H(["rounded-2xl bg-gray-50 dark:bg-dark-900 lg:col-span-5",a.fullscreen?"p-6":"p-4"])},[e("div",Ps,[e("div",Us,[e("div",Ns,[e("div",zs,[e("h4",Hs,[I(He,{name:"brain",size:"sm",class:"text-blue-500"}),z(" "+t(s(n)("admin.ops.diagnosis.title")),1)]),e("div",Bs,[(l(!0),u(ue,null,pe(At.value,(X,We)=>(l(),u("div",{key:We,class:"flex gap-3"},[e("div",Qs,[X.type==="critical"?(l(),u("svg",Ws,[...o[20]||(o[20]=[e("path",{"fill-rule":"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z","clip-rule":"evenodd"},null,-1)])])):X.type==="warning"?(l(),u("svg",Gs,[...o[21]||(o[21]=[e("path",{"fill-rule":"evenodd",d:"M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z","clip-rule":"evenodd"},null,-1)])])):(l(),u("svg",Ks,[...o[22]||(o[22]=[e("path",{"fill-rule":"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-3a1 1 0 100 2 1 1 0 000-2zm-1 3a1 1 0 012 0v4a1 1 0 11-2 0v-4z","clip-rule":"evenodd"},null,-1)])]))]),e("div",Zs,[e("div",Js,t(X.message),1),e("div",Ys,t(X.impact),1),X.action?(l(),u("div",Xs,[I(He,{name:"lightbulb",size:"xs"}),z(" "+t(X.action),1)])):C("",!0)])]))),128))]),e("div",ea,t(s(n)("admin.ops.diagnosis.footer")),1)])]),e("div",ta,[(l(),u("svg",{width:Fe.value,height:Fe.value,class:"-rotate-90 transform"},[e("circle",{cx:Fe.value/2,cy:Fe.value/2,r:_t.value,"stroke-width":vt.value,fill:"transparent",class:"text-gray-200 dark:text-dark-700",stroke:"currentColor"},null,8,aa),e("circle",{cx:Fe.value/2,cy:Fe.value/2,r:_t.value,"stroke-width":vt.value,fill:"transparent",stroke:St.value,"stroke-linecap":"round","stroke-dasharray":at.value,"stroke-dashoffset":nt.value,class:"transition-all duration-1000 ease-out"},null,8,na)],8,sa)),e("div",oa,[e("span",{class:H([a.fullscreen?"text-5xl":"text-3xl","font-black",gt.value])},t(he.value?s(n)("admin.ops.idleStatus"):q.value.health_score??"--"),3),e("span",{class:H([a.fullscreen?"text-xs":"text-[10px]","font-bold uppercase tracking-wider text-gray-400"])},t(s(n)("admin.ops.health")),3)])]),a.fullscreen?C("",!0):(l(),u("div",la,[e("div",ra,[z(t(s(n)("admin.ops.healthCondition"))+" ",1),I(_e,{content:s(n)("admin.ops.healthHelp")},null,8,["content"])]),e("div",{class:H(["mt-1 text-xs font-bold",gt.value])},t(he.value?s(n)("admin.ops.idleStatus"):typeof q.value.health_score=="number"&&q.value.health_score>=90?s(n)("admin.ops.healthyStatus"):s(n)("admin.ops.riskyStatus")),3)]
1))]),e("div",ia,[e("div",da,[e("div",ua,[o[23]||(o[23]=e("div",{class:"relative flex h-3 w-3 shrink-0"},[e("span",{class:"absolute inline-flex h-full w-full animate-ping rounded-full bg-blue-400 opacity-75"}),e("span",{class:"relative inline-flex h-3 w-3 rounded-full bg-blue-500"})],-1)),e("h3",ca,t(s(n)("admin.ops.realtime.title")),1),a.fullscreen?C("",!0):(l(),re(_e,{key:0,content:s(n)("admin.ops.tooltips.qps")},null,8,["content"]))]),e("div",pa,[(l(!0),u(ue,null,pe(y.value,X=>(l(),u("button",{key:X,type:"button",class:H(["rounded px-1.5 py-0.5 text-[9px] font-bold transition-colors sm:px-2 sm:text-[10px]",D.value===X?"bg-blue-500 text-white":"bg-gray-200 text-gray-600 hover:bg-gray-300 dark:bg-dark-700 dark:text-gray-400 dark:hover:bg-dark-600"]),onClick:We=>D.value=X},t(X),11,ma))),128))])]),e("div",{class:H(a.fullscreen?"space-y-4":"space-y-3")},[e("div",null,[e("div",{class:H([a.fullscreen?"text-xs":"text-[10px]","font-bold uppercase text-gray-400"])},t(s(n)("admin.ops.current")),3),e("div",ga,[e("div",va,[e("span",{class:H([a.fullscreen?"text-4xl":"text-xl sm:text-2xl","font-black text-gray-900 dark:text-white"])},t(w.value.toFixed(1)),3),e("span",{class:H([a.fullscreen?"text-sm":"text-xs","font-bold text-gray-500"])},"QPS",2)]),e("div",_a,[e("span",{class:H([a.fullscreen?"text-4xl":"text-xl sm:text-2xl","font-black text-gray-900 dark:text-white"])},t(oe.value.toFixed(1)),3),e("span",{class:H([a.fullscreen?"text-sm":"text-xs","font-bold text-gray-500"])},t(s(n)("admin.ops.tps")),3)])])]),e("div",xa,[e("div",null,[e("div",{class:H([a.fullscreen?"text-xs":"text-[10px]","font-bold uppercase text-gray-400"])},t(s(n)("admin.ops.peak")),3),e("div",{class:H([a.fullscreen?"text-base":"text-sm","mt-1 space-y-0.5 font-medium text-gray-600 dark:text-gray-400"])},[e("div",fa,[e("span",ya,t($e.value),1),o[24]||(o[24]=e("span",{class:"text-xs"},"QPS",-1))]),e("div",ba,[e("span",ha,t(Te.value),1),e("span",ka,t(s(n)("admin.ops.tps")),1)])],2)]),e("div",null,[e("div",{class:H([a.fullscreen?"text-xs":"text-[10px]","font-bold uppercase text-gray-400"])},t(s(n)("admin.ops.average")),3),e("div",{class:H([a.fullscreen?"text-base":"text-sm","mt-1 space-y-0.5 font-medium text-gray-600 dark:text-gray-400"])},[e("div",wa,[e("span",$a,t(De.value),1),o[25]||(o[25]=e("span",{class:"text-xs"},"QPS",-1))]),e("div",Ca,[e("span",Ra,t(Ie.value),1),e("span",Sa,t(s(n)("admin.ops.tps")),1)])],2)])]),o[26]||(o[26]=e("div",{class:"h-8 w-full overflow-hidden opacity-50"},[e("svg",{class:"h-full w-full",viewBox:"0 0 280 32",preserveAspectRatio:"none"},[e("path",{d:"M0 16 Q 20 16, 40 16 T 80 16 T 120 10 T 160 22 T 200 16 T 240 16 T 280 16",fill:"none",stroke:"#3b82f6","stroke-width":"2","vector-effect":"non-scaling-stroke"},[e("animate",{attributeName:"d",dur:"2s",repeatCount:"indefinite",values:`M0 16 Q 20 16, 40 16 T 80 16 T 120 10 T 160 22 T 200 16 T 240 16 T 280 16; 2 M0 16 Q 20 16, 40 16 T 80 16 T 120 16 T 160 16 T 200 10 T 240 22 T 280 16; 3 M0 16 Q 20 16, 40 16 T 80 16 T 120 16 T 160 16 T 200 16 T 240 16 T 280 16`,keyTimes:"0;0.5;1"})])])],-1))],2)])])],2),e("div",Ta,[e("div",Da,[e("div",Ea,[e("div",qa,[e("span",Ma,t(s(n)("admin.ops.requestsTitle")),1),a.fullscreen?C("",!0):(l(),re(_e,{key:0,content:s(n)("admin.ops.tooltips.totalRequests")},null,8,["content"]))]),a.fullscreen?C("",!0):(l(),u("button",{key:0,class:"text-[10px] font-bold text-blue-500 hover:underline",type:"button",onClick:o[3]||(o[3]=X=>i({title:s(n)("admin.ops.requestDetails.title")}))},t(s(n)("admin.ops.requestDetails.details")),1))]),e("div",Va,[e("div",La,[e("span",Aa,t(s(n)("admin.ops.requests"))+":",1),e("span",Fa,t(ve.value),1)]),e("div",Oa,[e("span",Ia,t(s(n)("admin.ops.tokens"))+":",1),e("span",ja,t(xe.value),1)]),e("div",Pa,[e("span",Ua,t(s(n)("admin.ops.avgQps"))+":",1),e("span",Na,t(N.value),1)]),e("div",za,[e("span",Ha,t(s(n)("admin.ops.avgTps"))+":",1),e("span",Ba,t(S.value),1)])])]),e("div",Qa,[e("div",Wa,[e("div",Ga,[e("span",Ka,t(s(n)("admin.ops.sla")),1),a.fullscreen?C("",!0):(l(),re(_e,{key:0,content:s(n)("admin.ops.tooltips.sla")},null,8,["content"])),e("span",{class:H(["h-1.5 w-1.5 rounded-full",M(h.value)==="critical"?"bg-red-500":M(h.value)==="warning"?"bg-yellow-500":"bg-green-500"])},null,2)]),a.fullscreen?C("",!0):(l(),u("button",{key:0,class:"text-[10px] font-bold text-blue-500 hover:underline",type:"button",onClick:o[4]||(o[4]=X=>i({title:s(n)("admin.ops.requestDetails.title"),kind:"error"}))},t(s(n)("admin.ops.requestDetails.details")),1))]),e("div",{class:H(["mt-2 text-3xl font-black",Z(M(h.value))])},t(h.value==null?"-":`${h.value.toFixed(3)}%`),3),e("div",Za,[e("div",{class:H(["h-full transition-all",M(h.value)==="critical"?"bg-red-500":M(h.value)==="warning"?"bg-yellow-500":"bg-green-500"]),style:ct({width:`${Math.max((h.value??0)-90,0)*10}%`})},null,6)]),e("div",Ja,[e("div",Ya,[e("span",Xa,t(s(n)("admin.ops.exceptions"))+":",1),e("span",en,t(s(Le)((q.value.request_count_sla??0)-(q.value.success_count??0))),1)])])]),e("div",tn,[e("div",sn,[e("div",an,[e("span",nn,t(s(n)("admin.ops.latencyDuration")),1),a.fullscreen?C("",!0):(l(),re(_e,{key:0,content:s(n)("admin.ops.tooltips.latency")},null,8,["content"]))]),a.fullscreen?C("",!0):(l(),u("button",{key:0,class:"text-[10px] font-bold text-blue-500 hover:underline",type:"button",onClick:o[5]||(o[5]=X=>i({title:s(n)("admin.ops.latencyDuration"),sort:"duration_desc"}))},t(s(n)("admin.ops.requestDetails.details")),1))]),e("div",on,[e("div",ln,t(fe.value??"-"),1),o[27]||(o[27]=e("span",{class:"text-xs font-bold text-gray-400"},"ms (P99)",-1))]),e("div",rn,[e("div",dn,[o[28]||(o[28]=e("span",{class:"text-gray-500"},"P95:",-1)),e("span",un,t(ye.value??"-"),1),o[29]||(o[29]=e("span",{class:"text-gray-400"},"ms",-1))]),e("div",cn,[o[30]||(o[30]=e("span",{class:"text-gray-500"},"P90:",-1)),e("span",pn,t(Ce.value??"-"),1),o[31]||(o[31]=e("span",{class:"text-gray-400"},"ms",-1))]),e("div",mn,[o[32]||(o[32]=e("span",{class:"text-gray-500"},"P50:",-1)),e("span",gn,t(Be.value??"-"),1),o[33]||(o[33]=e("span",{class:"text-gray-400"},"ms",-1))]),e("div",vn,[o[34]||(o[34]=e("span",{class:"text-gray-500"},"Avg:",-1)),e("span",_n,t(Qe.value??"-"),1),o[35]||(o[35]=e("span",{class:"text-gray-400"},"ms",-1))]),e("div",xn,[o[36]||(o[36]=e("span",{class:"text-gray-500"},"Max:",-1)),e("span",fn,t(Ke.value??"-"),1),o[37]||(o[37]=e("span",{class:"text-gray-400"},"ms",-1))])])]),e("div",yn,[e("div",bn,[e("div",hn,[o[38]||(o[38]=e("span",{class:"text-[10px] font-bold uppercase text-gray-400"},"TTFT",-1)),a.fullscreen?C("",!0):(l(),re(_e,{key:0,content:s(n)("admin.ops.tooltips.ttft")},null,8,["content"]))]),a.fullscreen?C("",!0):(l(),u("button",{key:0,class:"text-[10px] font-bold text-blue-500 hover:underline",type:"button",onClick:o[6]||(o[6]=X=>i({title:s(n)("admin.ops.ttftLabel"),sort:"duration_desc"}))},t(s(n)("admin.ops.requestDetails.details")),1))]),e("div",kn,[e("div",{class:H(["text-3xl font-black",Z(O(je.value))])},t(je.value??"-"),3),o[39]||(o[39]=e("span",{class:"text-xs font-bold text-gray-400"},"ms (P99)",-1))]),e("div",wn,[e("div",$n,[o[40]||(o[40]=e("span",{class:"text-gray-500"},"P95:",-1)),e("span",{class:H(["font-bold",Z(O(Ae.value))])},t(Ae.value??"-"),3),o[41]||(o[41]=e("span",{class:"text-gray-400"},"ms",-1))]),e("div",Cn,[o[42]||(o[42]=e("span",{class:"text-gray-500"},"P90:",-1)),e("span",{class:H(["font-bold",Z(O(tt.value))])},t(tt.value??"-"),3),o[43]||(o[43]=e("span",{class:"text-gray-400"},"ms",-1))]),e("div",Rn,[o[44]||(o[44]=e("span",{class:"text-gray-500"},"P50:",-1)),e("span",{class:H(["font-bold",Z(O(st.value))])},t(st.value??"-"),3),o[45]||(o[45]=e("span",{class:"text-gray-400"},"ms",-1))]),e("div",Sn,[o[46]||(o[46]=e("span",{class:"text-gray-500"},"Avg:",-1)),e("span",{class:H(["font-bold",Z(O(Pe.value))])},t(Pe.value??"-"),3),o[47]||(o[47]=e("span",{class:"text-gray-400"},"ms",-1))]),e("div",Tn,[o[48]||(o[48]=e("span",{class:"text-gray-500"},"Max:",-1)),e("span",{class:H(["font-bold",Z(O(Ye.value))])},t(Ye.value??"-"),3),o[49]||(o[49]=e("span",{class:"text-gray-400"},"ms",-1))])])]),e("div",Dn,[e("div",En,[e("div",qn,[e("span",Mn,t(s(n)("admin.ops.requestErrors")),1),a.fullscreen?C("",!0):(l(),re(_e,{key:0,content:s(n)("admin.ops.tooltips.errors")},null,8,["content"]))]),a.fullscreen?C("",!0):(l(),u("button",{key:0,class:"text-[10px] font-bold text-blue-500 hover:underline",type:"button",onClick:o[7]||(o[7]=X=>F("request"))},t(s(n)("admin.ops.requestDetails.details")),1))]),e("div",{class:H(["mt-2 text-3xl font-black",Z(L(J.value))])},t(J.value==null?"-":`${J.value.toFixed(2)}%`),3),e("div",Vn,[e("div",Ln,[e("span",An,t(s(n)("admin.ops.errorCount"))+":",1),e("span",Fn,t(s(Le)(q.value.error_count_sla??0)),1)]),e("div",On,[e("span",In,t(s(n)("admin.ops.businessLimited"))+":",1),e("span",jn,t(s(Le)(q.value.business_limited_count??0)),1)])])]),e("div",Pn,[e("div",Un,[e("div",Nn,[e("span",zn,t(s(n)("admin.ops.upstreamErrors")),1),a.fullscreen?C("",!0):(l(),re(_e,{key:0,content:s(n)("admin.ops.tooltips.upstreamErrors")},null,8,["content"]))]),a.fullscreen?C("",!0):(l(),u("button",{key:0,class:"text-[10px] font-bold text-blue-500 hover:underline",type:"button",onClick:o[8]||(o[8]=X=>F("upstream"))},t(s(n)("admin.ops.requestDetails.details")),1))]),e("div",{class:H(["mt-2 text-3xl font-black",Z(B(ae.value))])},t(ae.value==null?"-":`${ae.value.toFixed(2)}%`),3),e("div",Hn,[e("div",Bn,[e("span",Qn,t(s(n)("admin.ops.errorCountExcl429529"))+":",1),e("span",Wn,t(s(Le)(q.value.upstream_error_count_excl_429_529??0)),1)]),e("div",Gn,[o[50]||(o[50]=e("span",{class:"text-gray-500"},"429/529:",-1)),e("span",Kn,t(s(Le)((q.value.upstream_429_count??0)+(q.value.upstream_529_count??0))),1)])])])])])):C("",!0),q.value?(l(),u("div",Zn,[e("div",Jn,[e("div",Yn,[e("div",Xn,[o[51]||(o[51]=e("div",{class:"text-[10px] font-bold uppercase tracking-wider text-gray-400"},"CPU",-1)),a.fullscreen?C("",!0):(l(),re(_e,{key:0,content:s(n)("admin.ops.tooltips.cpu")},null,8,["content"]))]),e("div",{class:H(["mt-1 text-lg font-black",Ft.value])},t(ft.value==null?"-":`${ft.value.toFixed(1)}%`),3),a.fullscreen?C("",!0):(l(),u("div",eo,t(s(n)("common.warning"))+" 80% · "+t(s(n)("common.critical"))+" 95% ",1))]),e("div",to,[e("div",so,[e("div",ao,t(s(n)("admin.ops.memory")),1),a.fullscreen?C("",!0):(l(),re(_e,{key:0,content:s(n)("admin.ops.tooltips.memory")},null,8,["content"]))]),e("div",{class:H(["mt-1 text-lg font-black",Ot.value])},t(yt.value==null?"-":`${yt.value.toFixed(1)}%`),3),a.fullscreen?C("",!0):(l(),u("div",no,t(((K=$.value)==null?void 0:K.memory_used_mb)==null||((ke=$.value)==null?void 0:ke.memory_total_mb)==null?"-":`${s(Le)($.value.memory_used_mb)} / ${s(Le)($.value.memory_total_mb)} MB`),1))]),e("div",oo,[e("div",lo,[e("div",ro,t(s(n)("admin.ops.db")),1),a.fullscreen?C("",!0):(l(),re(_e,{key:0,content:s(n)("admin.ops.tooltips.db")},null,8,["content"]))]),e("div",{class:H(["mt-1 text-lg font-black",jt.value])},t(It.value),3),a.fullscreen?C("",!0):(l(),u("div",io,[z(t(s(n)("admin.ops.conns"))+" "+t(bt.value??"-")+" / "+t(lt.value??"-")+" · "+t(s(n)("admin.ops.active"))+" "+t(ot.value??"-")+" · "+t(s(n)("admin.ops.idle"))+" "+t(Ue.value??"-")+" ",1),Tt.value!=null?(l(),u("span",uo," · "+t(s(n)("admin.ops.waiting"))+" "+t(Tt.value),1)):C("",!0)]))]),e("div",co,[e("div",po,[o[52]||(o[52]=e("div",{class:"text-[10px] font-bold uppercase tracking-wider text-gray-400"},"Redis",-1)),a.fullscreen?C("",!0):(l(),re(_e,{key:0,content:s(n)("admin.ops.tooltips.redis")},null,8,["content"]))]),e("div",{class:H(["mt-1 text-lg font-black",f.value])},t(Et.value),3),a.fullscreen?C("",!0):(l(),u("div",mo,[z(t(s(n)("admin.ops.conns"))+" "+t(et.value??"-")+" / "+t(it.value??"-")+" ",1),Dt.value!=null?(l(),u("span",go," · "+t(s(n)("admin.ops.active"))+" "+t(Dt.value),1)):C("",!0),rt.value!=null?(l(),u("span",vo," · "+t(s(n)("admin.ops.idle"))+" "+t(rt.value),1)):C("",!0)]))]),e("div",_o,[e("div",xo,[e("div",fo,t(s(n)("admin.ops.goroutines")),1),a.fullscreen?C("",!0):(l(),re(_e,{key:0,content:s(n)("admin.ops.tooltips.goroutines")},null,8,["content"]))]),e("div",{class:H(["mt-1 text-lg font-black",Ze.value])},t(Ne.value),3),a.fullscreen?C("",!0):(l(),u("div",yo,[z(t(s(n)("admin.ops.current"))+" ",1),e("span",bo,t(V.value??"-"),1),z(" · "+t(s(n)("common.warning"))+" ",1),e("span",{class:"font-mono"},t(Yt)),z(" · "+t(s(n)("common.critical"))+" ",1),e("span",{class:"font-mono"},t(Xt)),((ze=$.value)==null?void 0:ze.concurrency_queue_depth)!=null?(l(),u("span",ho,[z(" · "+t(s(n)("admin.ops.queue"))+" ",1),e("span",ko,t($.value.concurrency_queue_depth),1)])):C("",!0)]))]),e("div",w
3o,[e("div",$o,[e("div",Co,[e("div",Ro,t(s(n)("admin.ops.jobs")),1),a.fullscreen?C("",!0):(l(),re(_e,{key:0,content:s(n)("admin.ops.tooltips.jobs")},null,8,["content"]))]),a.fullscreen?C("",!0):(l(),u("button",{key:0,class:"text-[10px] font-bold text-blue-500 hover:underline",type:"button",onClick:ls},t(s(n)("admin.ops.requestDetails.details")),1))]),e("div",{class:H(["mt-1 text-lg font-black",os.value])},t(ns.value),3),a.fullscreen?C("",!0):(l(),u("div",So,[z(t(s(n)("common.total"))+" ",1),e("span",To,t(Ve.value.length),1),z(" · "+t(s(n)("common.warning"))+" ",1),e("span",Do,t(Se.value),1)]))])])])):C("",!0),I(Je,{show:Pt.value,title:s(n)("admin.ops.jobs"),width:"wide",onClose:o[9]||(o[9]=X=>Pt.value=!1)},{default:Oe(()=>[Ve.value.length?(l(),u("div",qo,[(l(!0),u(ue,null,pe(Ve.value,X=>(l(),u("div",{key:X.job_name,class:"rounded-xl border border-gray-100 bg-white p-4 dark:border-dark-700 dark:bg-dark-900"},[e("div",Mo,[e("div",Vo,t(X.job_name),1),e("div",Lo,[X.last_duration_ms!=null?(l(),u("span",Ao,t(X.last_duration_ms)+"ms",1)):C("",!0),e("span",null,t(xt(X.updated_at)),1)])]),e("div",Fo,[e("div",null,[z(t(s(n)("admin.ops.lastSuccess"))+" ",1),e("span",Oo,t(xt(X.last_success_at)),1)]),e("div",null,[z(t(s(n)("admin.ops.lastError"))+" ",1),e("span",Io,t(xt(X.last_error_at)),1)]),e("div",null,[z(t(s(n)("admin.ops.result"))+" ",1),e("span",jo,t(X.last_result||"-"),1)])]),X.last_error?(l(),u("div",Po,t(X.last_error),1)):C("",!0)]))),128))])):(l(),u("div",Eo,t(s(n)("admin.ops.noData")),1))]),_:1},8,["show","title"]),I(Je,{show:G.value,title:s(n)("admin.ops.timeRange.custom"),width:"narrow",onClose:c},{default:Oe(()=>[e("div",Uo,[e("div",null,[e("label",No,t(s(n)("admin.ops.customTimeRange.startTime")),1),se(e("input",{"onUpdate:modelValue":o[10]||(o[10]=X=>E.value=X),type:"datetime-local",class:"w-full rounded-lg border border-gray-300 bg-white px-3 py-2 text-sm text-gray-900 focus:border-blue-500 focus:outline-none focus:ring-1 focus:ring-blue-500 dark:border-dark-600 dark:bg-dark-800 dark:text-white"},null,512),[[le,E.value]])]),e("div",null,[e("label",zo,t(s(n)("admin.ops.customTimeRange.endTime")),1),se(e("input",{"onUpdate:modelValue":o[11]||(o[11]=X=>p.value=X),type:"datetime-local",class:"w-full rounded-lg border border-gray-300 bg-white px-3 py-2 text-sm text-gray-900 focus:border-blue-500 focus:outline-none focus:ring-1 focus:ring-blue-500 dark:border-dark-600 dark:bg-dark-800 dark:text-white"},null,512),[[le,p.value]])]),e("div",Ho,[e("button",{type:"button",class:"rounded-lg bg-gray-100 px-4 py-2 text-sm font-medium text-gray-700 hover:bg-gray-200 dark:bg-dark-700 dark:text-gray-300 dark:hover:bg-dark-600",onClick:c},t(s(n)("common.cancel")),1),e("button",{type:"button",class:"rounded-lg bg-blue-500 px-4 py-2 text-sm font-medium text-white hover:bg-blue-600",onClick:k},t(s(n)("common.confirm")),1)])])]),_:1},8,["show","title"])],2)}}}),Qo={class:"space-y-6"},Wo={class:"flex flex-wrap items-center justify-between gap-4 border-b border-gray-100 pb-4 dark:border-dark-700"},Go={key:0,class:"flex flex-wrap items-center gap-3"},Ko={class:"mt-6 grid grid-cols-1 gap-6 lg:grid-cols-12"},Zo={class:"rounded-2xl bg-gray-50 p-4 dark:bg-dark-900/30 lg:col-span-5"},Jo={class:"grid h-full grid-cols-1 gap-6 md:grid-cols-[200px_1fr] md:items-center"},Yo={class:"space-y-4"},Xo={class:"grid grid-cols-2 gap-3"},el={class:"lg:col-span-7"},tl={class:"grid h-full grid-cols-1 content-center gap-4 sm:grid-cols-2 lg:grid-cols-3"},sl={class:"grid grid-cols-1 gap-6 lg:grid-cols-4"},al={class:"grid grid-cols-1 gap-6 md:grid-cols-3"},nl={class:"flex flex-wrap items-center justify-between gap-4"},ol={key:0,class:"flex flex-wrap items-center gap-2"},ll={class:"mt-6 space-y-3"},rl=be({__name:"OpsDashboardSkeleton",props:{fullscreen:{type:Boolean,default:!1}},setup(ie){const d=ie;return(a,T)=>(l(),u("div",Qo,[e("div",{class:H(["rounded-3xl bg-white shadow-sm ring-1 ring-gray-900/5 dark:bg-dark-800 dark:ring-dark-700",d.fullscreen?"p-8":"p-6"])},[e("div",Wo,[T[1]||(T[1]=e("div",{class:"space-y-2"},[e("div",{class:"h-6 w-44 animate-pulse rounded bg-gray-200 dark:bg-dark-700"}),e("div",{class:"h-3 w-80 max-w-full animate-pulse rounded bg-gray-100 dark:bg-dark-700/70"})],-1)),d.fullscreen?C("",!0):(l(),u("div",Go,[...T[0]||(T[0]=[is('<div class="h-9 w-[140px] animate-pulse rounded-xl bg-gray-200 dark:bg-dark-700"></div><div class="h-9 w-[160px] animate-pulse rounded-xl bg-gray-200 dark:bg-dark-700"></div><div class="h-9 w-[150px] animate-pulse rounded-xl bg-gray-200 dark:bg-dark-700"></div><div class="h-9 w-9 animate-pulse rounded-xl bg-gray-200 dark:bg-dark-700"></div><div class="h-9 w-28 animate-pulse rounded-xl bg-gray-200 dark:bg-dark-700"></div><div class="h-9 w-28 animate-pulse rounded-xl bg-gray-200 dark:bg-dark-700"></div><div class="h-9 w-9 animate-pulse rounded-xl bg-gray-200 dark:bg-dark-700"></div>',7)])]))]),e("div",Ko,[e("div",Zo,[e("div",Jo,[T[3]||(T[3]=e("div",{class:"h-28 animate-pulse rounded-xl bg-gray-100 dark:bg-dark-700/70"},null,-1)),e("div",Yo,[T[2]||(T[2]=e("div",{class:"h-4 w-32 animate-pulse rounded bg-gray-200 dark:bg-dark-700"},null,-1)),e("div",Xo,[(l(),u(ue,null,pe(4,n=>e("div",{key:n,class:"h-14 animate-pulse rounded-xl bg-gray-100 dark:bg-dark-700/70"})),64))])])])]),e("div",el,[e("div",tl,[(l(),u(ue,null,pe(6,n=>e("div",{key:n,class:"h-20 animate-pulse rounded-2xl bg-gray-50 dark:bg-dark-900/30"})),64))])])])],2),e("div",sl,[e("div",{class:H(["min-h-[360px] rounded-3xl bg-white shadow-sm ring-1 ring-gray-900/5 dark:bg-dark-800 dark:ring-dark-700 lg:col-span-1",d.fullscreen?"p-8":"p-6"])},[...T[4]||(T[4]=[e("div",{class:"h-4 w-44 animate-pulse rounded bg-gray-200 dark:bg-dark-700"},null,-1),e("div",{class:"mt-6 h-72 animate-pulse rounded-2xl bg-gray-100 dark:bg-dark-700/70"},null,-1)])],2),e("div",{class:H(["min-h-[360px] rounded-3xl bg-white shadow-sm ring-1 ring-gray-900/5 dark:bg-dark-800 dark:ring-dark-700 lg:col-span-1",d.fullscreen?"p-8":"p-6"])}
3,[...T[5]||(T[5]=[e("div",{class:"h-4 w-44 animate-pulse rounded bg-gray-200 dark:bg-dark-700"},null,-1),e("div",{class:"mt-6 h-72 animate-pulse rounded-2xl bg-gray-100 dark:bg-dark-700/70"},null,-1)])],2),e("div",{class:H(["min-h-[360px] rounded-3xl bg-white shadow-sm ring-1 ring-gray-900/5 dark:bg-dark-800 dark:ring-dark-700 lg:col-span-2",d.fullscreen?"p-8":"p-6"])},[...T[6]||(T[6]=[e("div",{class:"h-4 w-56 animate-pulse rounded bg-gray-200 dark:bg-dark-700"},null,-1),e("div",{class:"mt-6 h-72 animate-pulse rounded-2xl bg-gray-100 dark:bg-dark-700/70"},null,-1)])],2)]),e("div",al,[(l(),u(ue,null,pe(3,n=>e("div",{key:n,class:H(["rounded-3xl bg-white shadow-sm ring-1 ring-gray-900/5 dark:bg-dark-800 dark:ring-dark-700",d.fullscreen?"p-8":"p-6"])},[...T[7]||(T[7]=[e("div",{class:"h-4 w-44 animate-pulse rounded bg-gray-200 dark:bg-dark-700"},null,-1),e("div",{class:"mt-6 h-56 animate-pulse rounded-2xl bg-gray-100 dark:bg-dark-700/70"},null,-1)])],2)),64))]),e("div",{class:H(["rounded-3xl bg-white shadow-sm ring-1 ring-gray-900/5 dark:bg-dark-800 dark:ring-dark-700",d.fullscreen?"p-8":"p-6"])},[e("div",nl,[T[9]||(T[9]=e("div",{class:"h-4 w-48 animate-pulse rounded bg-gray-200 dark:bg-dark-700"},null,-1)),d.fullscreen?C("",!0):(l(),u("div",ol,[...T[8]||(T[8]=[e("div",{class:"h-9 w-[140px] animate-pulse rounded-xl bg-gray-200 dark:bg-dark-700"},null,-1),e("div",{class:"h-9 w-[120px] animate-pulse rounded-xl bg-gray-200 dark:bg-dark-700"},null,-1),e("div",{class:"h-9 w-[120px] animate-pulse rounded-xl bg-gray-200 dark:bg-dark-700"},null,-1)])]))]),e("div",ll,[(l(),u(ue,null,pe(6,n=>e("div",{key:n,class:"flex items-center justify-between gap-4 rounded-2xl bg-gray-50 p-4 dark:bg-dark-900/30"},[...T[10]||(T[10]=[e("div",{class:"flex-1 space-y-2"},[e("div",{class:"h-3 w-56 animate-pulse rounded bg-gray-200 dark:bg-dark-700"}),e("div",{class:"h-3 w-80 max-w-full animate-pulse rounded bg-gray-100 dark:bg-dark-700/70"})],-1),e("div",{class:"h-7 w-20 animate-pulse rounded-xl bg-gray-200 dark:bg-dark-700"},null,-1)])])),64))])],2)]))}}),il={class:"flex h-full flex-col rounded-3xl bg-white p-6 shadow-sm ring-1 ring-gray-900/5 dark:bg-dark-800 dark:ring-dark-700"},dl={class:"mb-4 flex shrink-0 items-center justify-between gap-3"},ul={class:"flex items-center gap-2 text-sm font-bold text-gray-900 dark:text-white"},cl={class:"flex items-center gap-2"},pl=["title"],ml=["disabled","title"],gl={key:0,class:"mb-3 shrink-0 rounded-xl bg-red-50 p-2.5 text-xs text-red-600 dark:bg-red-900/20 dark:text-red-400"},vl={key:1,class:"flex flex-1 items-center justify-center rounded-xl border border-dashed border-gray-200 text-sm text-gray-500 dark:border-dark-700 dark:text-gray-400"},_l={key:2,class:"flex min-h-0 flex-1 flex-col overflow-hidden rounded-xl border border-gray-200 dark:border-dark-700"},xl={class:"flex shrink-0 items-center justify-between border-b border-gray-200 bg-gray-50 px-3 py-2 dark:border-dark-700 dark:bg-dark-900"},fl={class:"text-[10px] font-bold uppercase tracking-wider text-gray-500 dark:text-gray-400"},yl={class:"text-[10px] text-gray-500 dark:text-gray-400"},bl={key:0,class:"flex flex-1 items-center justify-center text-sm text-gray-500 dark:text-gray-400"},hl={key:1,class:"custom-scrollbar max-h-[360px] flex-1 space-y-2 overflow-y-auto p-3"},kl={class:"mb-1.5 flex items-center justify-between gap-2"},wl={class:"flex min-w-0 flex-1 items-center gap-1.5"},$l=["title"],Cl=["title"],Rl={class:"flex shrink-0 items-center gap-2 text-[10px]"},Sl={class:"font-mono font-bold text-gray-900 dark:text-white"},Tl={class:"h-1.5 w-full overflow-hidden rounded-full bg-gray-200 dark:bg-dark-700"},Dl={key:0,class:"mt-1.5 flex justify-end"},El={class:"rounded-full bg-purple-100 px-1.5 py-0.5 text-[10px] font-semibold text-purple-700 dark:bg-purple-900/30 dark:text-purple-400"},ql={key:2,class:"custom-scrollbar max-h-[360px] flex-1 space-y-2 overflow-y-auto p-3"},Ml={class:"mb-2 flex items-center justify-between gap-2"},Vl={class:"flex items-center gap-2"},Ll=["title"],Al={key:0,class:"text-[10px] text-gray-400 dark:text-gray-500"},Fl={class:"flex shrink-0 items-center gap-2 text-[10px]"},Ol={class:"font-mono font-bold text-gray-900 dark:text-white"},Il={class:"mb-2 h-1.5 w-full overflow-hidden rounded-full bg-gray-200 dark:bg-dark-700"},jl={class:"flex flex-wrap items-center gap-x-3 gap-y-1 text-[10px]"},Pl={class:"flex items-center gap-1"},Ul={class:"text-gray-600 dark:text-gray-300"},Nl={class:"font-bold text-green-600 dark:text-green-400"},zl={class:"text-gray-400 dark:text-gray-500"},Hl={key:0,class:"rounded-full bg-amber-100 px-1.5 py-0.5 font-semibold text-amber-700 dark:bg-amber-900/30 dark:text-amber-400"},Bl={key:1,class:"rounded-full bg-red-100 px-1.5 py-0.5 font-semibold text-red-700 dark:bg-red-900/30 dark:text-red-400"},Ql={key:2,class:"rounded-full bg-purple-100 px-1.5 py-0.5 font-semibold text-purple-700 dark:bg-purple-900/30 dark:text-purple-400"},Wl={key:3,class:"custom-scrollbar max-h-[360px] flex-1 space-y-2 overflow-y-auto p-3"},Gl={class:"mb-1.5 flex items-center justify-between gap-2"},Kl={class:"min-w-0 flex-1"},Zl=["title"],Jl={class:"mt-0.5 text-[9px] text-gray-400 dark:text-gray-500"},Yl={class:"flex shrink-0 items-center gap-2"},Xl={class:"font-mono text-[11px] font-bold text-gray-900 dark:text-white"},er={key:0,class:"inline-flex items-center gap-1 rounded bg-green-100 px-1.5 py-0.5 text-[10px] font-medium text-green-700 dark:bg-green-900/30 dark:text-green-400"},tr={key:1,class:"inline-flex items-center gap-1 rounded bg-amber-100 px-1.5 py-0.5 text-[10px] font-medium text-amber-700 dark:bg-amber-900/30 dark:text-amber-400"},sr={key:2,class:"inline-flex items-center gap-1 rounded bg-red-100 px-1.5 py-0.5 text-[10px] font-medium text-red-700 dark:bg-red-900/30 dark:text-red-400"},ar={key:3,class:"inline-flex items-center gap-1 rounded bg-red-100 px-1.5 py-0.5 text-[10px] font-medium text-red-700 dark:bg-red-900/30 dark:text-red-400"},nr={key:4,class:"inline-flex items-center gap-1 rounded bg-gray-100 px-1.5 py-0.5 text-[10px] font-medium text-gray-700 dark:bg-gray-800 dark:text-gray-400"},or={class:"h-1.5 w-full overflow-hidden rounded-full bg-gray-200 dark:bg-dark-700"},lr={key:0,class:"mt-1.5 flex justify-end"},rr={class:"rounded-full bg-purple-100 px-1.5 py-0.5 text-[10px] font-semibold text-purple-700 dark:bg-purple-900/30 dark:text-purple-400"},ir=be({__name:"OpsConcurrencyCard",props:{platformFilter:{default:""},groupIdFilter:{default:null},refreshToken:{}},setup(ie){const d=ie,{t:a}=we(),T=b(!1),n=b(""),P=b(null),D=b(null),q=b(null),$=b(!1),x=_(()=>{var k,c;return(((k=P.value)==null?void 0:k.enabled)??!0)&&(((c=D.value)==null?void 0:c.enabled)??!0)});function v(k){return typeof k=="number"&&Number.isFinite(k)?k:0}const y=_(()=>$.value?"user":typeof d.groupIdFilter=="number"&&d.groupIdFilter>0?"account":d.platformFilter?"group":"platform"),G=_(()=>{var F,M;const k=((F=P.value)==null?void 0:F.platform)||{},c=((M=D.value)==null?void 0:M.platform)||{},i=new Set([...Object.keys(k),...Object.keys(c)]);return Array.from(i).map(O=>{const L=k[O]||{},B=c[O]||{},Z=v(B.total_accounts),ve=v(B.available_count),xe=v(L.max_capacity),me=v(L.current_in_use);return{key:O,name:O.toUpperCase(),total_accounts:Z,available_accounts:ve,rate_limited_accounts:v(
3B.rate_limit_count),error_accounts:v(B.error_count),total_concurrency:xe,used_concurrency:me,waiting_in_queue:v(L.waiting_in_queue),availability_percentage:Z>0?Math.round(ve/Z*100):0,concurrency_percentage:xe>0?Math.round(me/xe*100):0}}).sort((O,L)=>L.concurrency_percentage-O.concurrency_percentage)}),E=_(()=>{var M,O;const k=((M=P.value)==null?void 0:M.group)||{},c=((O=D.value)==null?void 0:O.group)||{},i=new Set([...Object.keys(k),...Object.keys(c)]);return Array.from(i).map(L=>{const B=k[L]||{},Z=c[L]||{};if(d.platformFilter&&B.platform!==d.platformFilter&&Z.platform!==d.platformFilter)return null;const ve=v(Z.total_accounts),xe=v(Z.available_count),me=v(B.max_capacity),j=v(B.current_in_use);return{key:L,name:String(B.group_name||Z.group_name||`Group ${L}`),platform:String(B.platform||Z.platform||""),total_accounts:ve,available_accounts:xe,rate_limited_accounts:v(Z.rate_limit_count),error_accounts:v(Z.error_count),total_concurrency:me,used_concurrency:j,waiting_in_queue:v(B.waiting_in_queue),availability_percentage:ve>0?Math.round(xe/ve*100):0,concurrency_percentage:me>0?Math.round(j/me*100):0}}).filter(L=>L!==null).sort((L,B)=>B.concurrency_percentage-L.concurrency_percentage)}),p=_(()=>{var M,O;const k=((M=P.value)==null?void 0:M.account)||{},c=((O=D.value)==null?void 0:O.account)||{},i=new Set([...Object.keys(k),...Object.keys(c)]);return Array.from(i).map(L=>{const B=k[L]||{},Z=c[L]||{};return typeof d.groupIdFilter=="number"&&d.groupIdFilter>0&&B.group_id!==d.groupIdFilter&&Z.group_id!==d.groupIdFilter?null:{key:L,name:String(B.account_name||Z.account_name||`Account ${L}`),platform:String(B.platform||Z.platform||""),group_name:String(B.group_name||Z.group_name||""),current_in_use:v(B.current_in_use),max_capacity:v(B.max_capacity),waiting_in_queue:v(B.waiting_in_queue),load_percentage:v(B.load_percentage),is_available:Z.is_available||!1,is_rate_limited:Z.is_rate_limited||!1,rate_limit_remaining_sec:Z.rate_limit_remaining_sec,is_overloaded:Z.is_overloaded||!1,overload_remaining_sec:Z.overload_remaining_sec,has_error:Z.has_error||!1,error_message:Z.error_message||""}}).filter(L=>L!==null).sort((L,B)=>L.has_error!==B.has_error?L.has_error?-1:1:L.is_rate_limited!==B.is_rate_limited?L.is_rate_limited?-1:1:B.load_percentage-L.load_percentage)}),R=_(()=>{var c;const k=((c=q.value)==null?void 0:c.user)||{};return Object.keys(k).map(i=>{const F=k[i]||{};return{key:i,user_id:v(F.user_id),user_email:F.user_email||`User ${i}`,username:F.username||"",current_in_use:v(F.current_in_use),max_capacity:v(F.max_capacity),waiting_in_queue:v(F.waiting_in_queue),load_percentage:v(F.load_percentage)}}).sort((i,F)=>F.current_in_use-i.current_in_use||F.load_percentage-i.load_percentage)}),A=_(()=>y.value==="user"?R.value:y.value==="account"?p.value:y.value==="group"?E.value:G.value),ne=_(()=>y.value==="user"?a("admin.ops.concurrency.byUser"):y.value==="account"?a("admin.ops.concurrency.byAccount"):y.value==="group"?a("admin.ops.concurrency.byGroup"):a("admin.ops.concurrency.byPlatform"));async function Y(){var k,c;T.value=!0,n.value="";try{if($.value){const i=await te.getUserConcurrencyStats();q.value=i}else{const[i,F]=await Promise.all([te.getConcurrencyStats(d.platformFilter,d.groupIdFilter),te.getAccountAvailabilityStats(d.platformFilter,d.groupIdFilter)]);P.value=i,D.value=F}}catch(i){console.error("[OpsConcurrencyCard] Failed to load data",i),n.value=((c=(k=i==null?void 0:i.response)==null?void 0:k.data)==null?void 0:c.detail)||a("admin.ops.concurrency.loadFailed")}finally{T.value=!1}}ge(()=>d.refreshToken,()=>{x.value&&Y()}),ge(()=>$.value,()=>{Y()});function de(k){return k>=90?"bg-red-500 dark:bg-red-600":k>=70?"bg-orange-500 dark:bg-orange-600":k>=50?"bg-yellow-500 dark:bg-yellow-600":"bg-green-500 dark:bg-green-600"}function ee(k){return`width: ${Math.min(100,Math.max(0,k))}%`}function W(k){return k>=90?"text-red-600 dark:text-red-400":k>=70?"text-orange-600 dark:text-orange-400":k>=50?"text-yellow-600 dark:text-yellow-400":"text-green-600 dark:text-green-400"}function Q(k){if(k<=0)return"0s";if(k<60)return`${Math.round(k)}s`;const c=Math.floor(k/60);return c<60?`${c}m`:`${Math.floor(c/60)}h`}return ge(()=>x.value,async k=>{k&&await Y()},{immediate:!0}),(k,c)=>(l(),u("div",il,[e("div",dl,[e("h3",ul,[c[1]||(c[1]=e("svg",{class:"h-4 w-4 text-blue-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M13 10V3L4 14h7v7l9-11h-7z"})],-1)),z(" "+t(s(a)("admin.ops.concurrency.title")),1)]),e("div",cl,[e("button",{class:H(["flex items-center justify-center rounded-lg px-2 py-1 transition-colors",$.value?"bg-blue-100 text-blue-600 dar
3k:bg-blue-900/30 dark:text-blue-400":"bg-gray-100 text-gray-500 hover:bg-gray-200 hover:text-gray-700 dark:bg-dark-700 dark:text-gray-400 dark:hover:bg-dark-600 dark:hover:text-gray-300"]),title:$.value?s(a)("admin.ops.concurrency.switchToPlatform"):s(a)("admin.ops.concurrency.switchToUser"),onClick:c[0]||(c[0]=i=>$.value=!$.value)},[...c[2]||(c[2]=[e("svg",{class:"h-3.5 w-3.5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z"})],-1)])],10,pl),e("button",{class:"flex items-center gap-1 rounded-lg bg-gray-100 px-2 py-1 text-[11px] font-semibold text-gray-700 transition-colors hover:bg-gray-200 disabled:cursor-not-allowed disabled:opacity-50 dark:bg-dark-700 dark:text-gray-300 dark:hover:bg-dark-600",disabled:T.value,title:s(a)("common.refresh"),onClick:Y},[(l(),u("svg",{class:H(["h-3 w-3",{"animate-spin":T.value}]),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[...c[3]||(c[3]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"},null,-1)])],2))],8,ml)])]),n.value?(l(),u("div",gl,t(n.value),1)):C("",!0),x.value?(l(),u("div",_l,[e("div",xl,[e
3("span",fl,t(ne.value),1),e("span",yl,t(s(a)("admin.ops.concurrency.totalRows",{count:A.value.length})),1)]),A.value.length===0?(l(),u("div",bl,t(s(a)("admin.ops.concurrency.empty")),1)):y.value==="user"?(l(),u("div",hl,[(l(!0),u(ue,null,pe(A.value,i=>(l(),u("div",{key:i.key,class:"rounded-lg bg-gray-50 p-2.5 dark:bg-dark-900"},[e("div",kl,[e("div",wl,[e("span",{class:"truncate text-[11px] font-bold text-gray-900 dark:text-white",title:i.username||i.user_email},t(i.username||i.user_email),9,$l),i.username?(l(),u("span",{key:0,class:"shrink-0 truncate text-[10px] text-gray-400 dark:text-gray-500",title:i.user_email},t(i.user_email),9,Cl)):C("",!0)]),e("div",Rl,[e("span",Sl,t(i.current_in_use)+"/"+t(i.max_capacity),1),e("span",{class:H(["font-bold",W(i.load_percentage)])},t(Math.round(i.load_percentage))+"% ",3)])]),e("div",Tl,[e("div",{class:H(["h-full rounded-full transition-all duration-300",de(i.load_percentage)]),style:ct(ee(i.load_percentage))},null,6)]),i.waiting_in_queue>0?(l(),u("div",Dl,[e("span",El,t(s(a)("admin.ops.concurrency.queued",{count:i.waiting_in_queue})),1)])):C("",!0)]))),128))])):y.value==="platform"||y.value==="group"?(l(),u("div",ql,[(l(!0),u(ue,null,pe(A.value,i=>(l(),u("div",{key:i.key,class:"rounded-lg bg-gray-50 p-3 dark:bg-dark-900"},[e("div",Ml,[e("div",Vl,[e("div",{class:"truncate text-[11px] font-bold text-gray-900 dark:text-white",title:i.name},t(i.name),9,Ll),y.value==="group"&&i.platform?(l(),u("span",Al,t(i.platform.toUpperCase()),1)):C("",!0)]),e("div",Fl,[e("span",Ol,t(i.used_concurrency)+"/"+t(i.total_concurrency),1),e("span",{class:H(["font-bold",W(i.concurrency_percentage)])},t(i.concurrency_percentage)+"% ",3)])]),e("div",Il,[e("div",{class:H(["h-full rounded-full transition-all duration-300",de(i.concurrency_percentage)]),style:ct(ee(i.concurrency_percentage))},null,6)]),e("div",jl,[e("div",Pl,[c[4]||(c[4]=e("svg",{class:"h-3 w-3 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z"})],-1)),e("span",Ul,[e("span",Nl,t(i.available_accounts),1),z("/"+t(i.total_accounts),1)]),e("span",zl,t(i.availability_percentage)+"%",1)]),i.rate_limited_accounts>0?(l(),u("span",Hl,t(s(a)("admin.ops.concurrency.rateLimited",{count:i.rate_limited_accounts})),1)):C("",!0),i.error_accounts>0?(l(),u("span",Bl,t(s(a)("admin.ops.concurrency.errorAccounts",{count:i.error_accounts})),1)):C("",!0),i.waiting_in_queue>0?(l(),u("span",Ql,t(s(a)("admin.ops.concurrency.queued",{count:i.waiting_in_queue})),1)):C("",!0)])]))),128))])):(l(),u("div",Wl,[(l(!0),u(ue,null,pe(A.value,i=>(l(),u("div",{key:i.key,class:"rounded-lg bg-gray-50 p-2.5 dark:bg-dark-900"},[e("div",Gl,[e("div",Kl,[e("div",{class:"truncate text-[11px] font-bold text-gray-900 dark:text-white",title:i.name},t(i.name),9,Zl),e("div",Jl,t(i.group_name),1)]),e("div",Yl,[e("span",Xl,t(i.current_in_use)+"/"+t(i.max_capacity),1),i.is_available?(l(),u("span",er,[c[5]||(c[5]=e("svg",{class:"h-3 w-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M5 13l4 4L19 7"})],-1)),z(" "+t(s(a)("admin.ops.accountAvailability.available")),1)])):i.is_rate_limited?(l(),u("span",tr,[c[6]||(c[6]=e("svg",{class:"h-3 w-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),z(" "+t(Q(i.rate_limit_remaining_sec||0)),1)])):i.is_overloaded?(l(),u("span",sr,[c[7]||(c[7]=e("svg",{class:"h-3 w-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"})],-1)),z(" "+t(Q(i.overload_remaining_sec||0)),1)])):i.has_error?(l(),u("span",ar,[c[8]||(c[8]=e("svg",{class:"h-3 w-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M6 18L18 6M6 6l12 12"})],-1)),z(" "+t(s(a)("admin.ops.accountAvailability.accountError")),1)])):(l(),u("span",nr,t(s(a)("admin.ops.accountAvailability.unavailable")),1))])]),e("div",or,[e("div",{class:H(["h-full rounded-full transition-all duration-300",de(i.load_percentage)]),style:ct(ee(i.load_percentage))},null,6)]),i.waiting_in_queue>0?(l(),u("div",lr,[e("span",rr,t(s(a)("admin.ops.concurrency.queued",{count:i.waiting_in_queue})),1)])):C("",!0)]))),128))]))])):(l(),u("div",vl,t(s(a)("admin.ops.concurrency.disabledHint")),1))]))}}),dr=gs(ir,[["__scopeId","data-v-484aa3d3"]]),ur={class:"flex h-full flex-col rounded-3xl bg-white p-6 shadow-sm ring-1 ring-gray-900/5 dark:bg-dark-800 dark:ring-dark-700"},cr={class:"mb-4 flex items-center justify-between"},pr={class:"flex items-center gap-2 text-sm font-bold text-gray-900 dark:text-white"},mr=["disabled","title"],gr={class:"relative min-h-0 flex-1"}
3,vr={key:0,class:"flex h-full flex-col"},_r={class:"flex-1"},xr={class:"mt-4 flex flex-col items-center gap-2"},fr={key:0,class:"text-xs font-bold text-gray-900 dark:text-white"},yr={class:"flex flex-wrap justify-center gap-3"},br={class:"text-gray-500 dark:text-gray-400"},hr={key:1,class:"flex h-full items-center justify-center"},kr={key:0,class:"animate-pulse text-sm text-gray-400"},wr=be({__name:"OpsErrorDistributionChart",props:{data:{},loading:{type:Boolean}},emits:["openDetails"],setup(ie,{emit:d}){wt.register(xs,$t,Ct);const a=ie,T=d,{t:n}=we(),P=_(()=>document.documentElement.classList.contains("dark")),D=_(()=>({blue:"#3b82f6",red:"#ef4444",orange:"#f59e0b",gray:"#9ca3af",text:P.value?"#9ca3af":"#6b7280"})),q=_(()=>{var p;return(((p=a.data)==null?void 0:p.items)??[]).reduce((R,A)=>R+Number(A.sla||0),0)}),$=_(()=>q.value>0),x=_(()=>$.value?"ready":a.loading?"loading":"empty"),v=_(()=>{if(!a.data)return[];let p=0,R=0,A=0,ne=0;for(const de of a.data.items||[]){const ee=Number(de.status_code||0),W=Number(de.sla||0);!Number.isFinite(ee)||!Number.isFinite(W)||([502,503,504].includes(ee)?p+=W:ee>=400&&ee<500?R+=W:ee===500?A+=W:ne+=W)}const Y=[];return p>0&&Y.push({label:n("admin.ops.upstream"),count:p,color:D.value.orange}),R>0&&Y.push({label:n("admin.ops.client"),count:R,color:D.value.blue}),A>0&&Y.push({label:n("admin.ops.system"),count:A,color:D.value.red}),ne>0&&Y.push({label:n("admin.ops.other"),count:ne,color:D.value.gray}),Y}),y=_(()=>v.value.length===0?null:v.value.reduce((p,R)=>R.count>p.count?R:p)),G=_(()=>!$.value||v.value.length===0?null:{labels:v.value.map(p=>p.label),datasets:[{data:v.value.map(p=>p.count),backgroundColor:v.value.map(p=>p.color),borderWidth:0}]}),E=_(()=>({responsive:!0,maintainAspectRatio:!1,plugins:{legend:{display:!1},tooltip:{backgroundColor:P.value?"#1f2937":"#ffffff",titleColor:P.value?"#f3f4f6":"#111827",bodyColor:P.value?"#d1d5db":"#4b5563"}}}));return(p,R)=>(l(),u("div",ur,[e("div",cr,[e("h3",pr,[R[1]||(R[1]=e("svg",{class:"h-4 w-4 text-red-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"})],-1)),z(" "+t(s(n)("admin.ops.errorDistribution"))+" ",1),I(_e,{content:s(n)("admin.ops.tooltips.errorDistribution")},null,8,["content"])]),e("button",{type:"button",class:"inline-flex items-center rounded-lg border border-gray-200 bg-white px-2 py-1 text-[11px] font-semibold text-gray-600 hover:bg-gray-50 disabled:opacity-50 dark:border-dark-700 dark:bg-dark-900 dark:text-gray-300 dark:hover:bg-dark-800",disabled:x.value!=="ready",title:s(n)("admin.ops.errorTrend"),onClick:R[0]||(R[0]=A=>T("openDetails"))},t(s(n)("admin.ops.requestDetails.details")),9,mr)]),e("div",gr,[x.value==="ready"&&G.value?(l(),u("div",vr,[e("div",_r,[I(s(fs),{data:G.value,options:{...E.value,cutout:"65%"}},null,8,["data","options"])]),e("div",xr,[y.value?(l(),u("div",fr,[z(t(s(n)("admin.ops.top"))+": ",1),e("span",{style:ct({color:y.value.color})},t(y.value.label),5)])):C("",!0),e("div",yr,[(l(!0),u(ue,null,pe(v.value,A=>(l(),u("div",{key:A.label,class:"flex items-center gap-1.5 text-xs"},[e("span",{class:"h-2 w-2 rounded-full",style:ct({backgroundColor:A.color})},null,4),e("span",br,t(A.count),1)]))),128))])])])):(l(),u("div",hr,[x.value==="loading"?(l(),u("div",kr,t(s(n)("common.loading")),1)):(l(),re(mt,{key:1,title:s(n)("common.noData"),description:s(n)("admin.ops.charts.emptyError")},null,8,["title","description"]))]))])]))}}),$r={class:"flex h-full min-h-0 flex-col"},Cr={class:"mb-4 flex-shrink-0 border-b border-gray-200 pb-4 dark:border-dark-700"},Rr={class:"grid grid-cols-2 gap-2 md:grid-cols-8"},Sr={class:"col-span-2 compact-select"},Tr={class:"relative group"},Dr=["placeholder"],Er={class:"compact-select"},qr={class:"compact-select"},Mr={class:"compact-select"},Vr={class:"compact-select"},Lr={class:"flex items-center justify-end"},Ar={class:"flex min-h-0 flex-1 flex-col"},Fr={class:"mb-2 flex-shrink-0 text-xs text-gray-500 dark:text-gray-400"},Or=be({__name:"OpsErrorDetailsModal",props:{show:{type:Boolean},timeRange:{},platform:{},groupId:{},errorType:{}},emits:["update:show","openErrorDetail"],setup(ie,{emit:d}){const a=ie,T=d,{t:n}=we(),P=b(!1),D=b([]),q=b(0),$=b(1),x=b(10),v=b(""),y=b(null),G=b(""),E=b(""),p=b("errors"),R=_(()=>a.errorType==="upstream"?n("admin.ops.errorDetails.upstreamErrors"):n("admin.ops.errorDetails.requestErrors")),A=_(()=>{const M=[400,401,403,404,409,422,429,500,502,503,504,529];return[{value:null,label:n("common.all")},...M.map(O=>({value:O,label:String(O)})),{value:"other",label:n("admin.ops.errorDetails.statusCodeOther")||"Other"}]}),ne=_(()=>[{value:"",label:n("common.all")},{value:"provider",label:n("admin.ops.errorDetails.owner.provider")||"provider"},{value:"client",label:n("admin.ops.errorDetails.owner.client")||"client"},{value:"platform",label:n("admin.ops.errorDetails.owner.platform")||"platform"}]),Y=_(()=>[{value:"errors",label:n("admin.ops.errorDetails.viewErrors")||"errors"},{value:"excluded",label:n("admin.ops.errorDetails.viewExcluded")||"excluded"},{value:"all",label:n("common.all")}]),de=_(()=>[{value:"",label:n("common.all")},{value:"request",label:n("admin.ops.errorDetails.phase.request")||"request"},{value:"auth",label:n("admin.ops.errorDetails.phase.auth")||"auth"},{value:"account_auth",label:n("admin.ops.errorDetails.phase.account_auth")||"account_auth"},{value:"routing",label:n("admin.ops.errorDetails.phase.routing")||"routing"},{value:"upstream",label:n("admin.ops.errorDetails.phase.upstream")||"upstream"},{value:"network",label:n("admin.ops.errorDetails.phase.network")||"network"},{value:"internal",label:n("admin.ops.errorDetails.phase.internal")||"internal"}]);function ee(){T("update:show",!1)}const W=b("created_at"),Q=b("desc");function k(M,O){W.value=M,Q.value=O,$.value=1,c()}async function c(){if(a.show){P.value=!0;try{const M={page:$.value,page_size:x.value,time_range:a.timeRange,view:p.value,sort_by:W.value,sort_order:Q.value},O=String(a.platform||"").trim();O&&(M.platform=O),typeof a.groupId=="number"&&a.groupId>0&&(M.group_id=a.groupId),v.value.trim()&&(M.q=v.value.trim()),y.value==="other"?M.status_codes_other="1":typeof y.value=="number"&&(M.status_codes=String(y.value));const L=String(G.value||"").trim();L&&(M.phase=L);const B=String(E.value||"").trim();B&&(M.error_owner=B);const Z=a.errorType==="upstream"?await te.listUpstreamErrors(M):await te.listRequestErrors(M);D.value=Z.items||[],q.value=Z.total||0}catch(M){console.error("[OpsErrorDetailsModal] Failed to fetch error logs",M),D.value=[],q.value=0}finally{P.value=!1}}}function i(){v.value="",y.value=null,G.value=a.errorType==="upstream"?"upstream":"",E.value="",p.value="errors",$.value=1,c()}ge(()=>a.show,M=>{M&&($.value=1,x.value=10,i())}),ge(()=>[a.timeRange,a.platform,a.groupId],()=>{a.show&&($.value=1,c())}),ge(()=>[$.value,x.value],()=>{a.show&&c()});let F=null;return ge(()=>v.value,()=>{a.show&&(F&&window.clearTimeout(F),F=window.setTimeout(()=>{$.value=1,c()},350))}),ge(()=>[y.value,G.value,E.value,p.value],()=>{a.show&&($.value=1,c())}),(M,O)=>(l(),re(Je,{show:ie.show,title:R.value,width:"full",onClose:ee},{default:Oe(()=>[e("div",$r,[e("div",Cr,[e("div",Rr,[e("div",Sr,[e("div",Tr,[O[8]||(O[8]=e("div",{class:"pointer-events-none absolute inset-y-0 left-0 flex items-center pl-3"},[e("svg",{class:"h-3.5 w-3.5 text-gray-400 transition-colors group-focus-within:text-blue-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2.5",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})])],-1)),se(e("input",{"onUpdate:modelValue":O[0]||(O[0]=L=>v.value=L),type:"text",class:"w-full rounded-lg border-gray-200 bg-gray-50/50 py-1.5 pl-9 pr-3 text-xs font-medium text-gray-700 transition-all focus:border-blue-500 focus:bg-white focus:ring-2 focus:ring-blue-500/10 dark:border-dark-700 dark:bg-dark-900 dark:text-gray-300 dark:focus:bg-dark-800",placeholder:s(n)("admin.ops.errorDetails.searchPlaceholder")},null,8,Dr),[[le,v.value]])])]),e("div",Er,[I(ce,{"model-value":y.value,options:A.value,"onUpdate:modelValue":O[1]||(O[1]=L=>y.value=L)}
3,null,8,["model-value","options"])]),e("div",qr,[I(ce,{"model-value":G.value,options:de.value,"onUpdate:modelValue":O[2]||(O[2]=L=>G.value=String(L??""))},null,8,["model-value","options"])]),e("div",Mr,[I(ce,{"model-value":E.value,options:ne.value,"onUpdate:modelValue":O[3]||(O[3]=L=>E.value=String(L??""))},null,8,["model-value","options"])]),e("div",Vr,[I(ce,{"model-value":p.value,options:Y.value,"onUpdate:modelValue":O[4]||(O[4]=L=>p.value=L)},null,8,["model-value","options"])]),e("div",Lr,[e("button",{type:"button",class:"rounded-lg bg-gray-100 px-3 py-1.5 text-xs font-semibold text-gray-700 transition-colors hover:bg-gray-200 dark:bg-dark-700 dark:text-gray-300 dark:hover:bg-dark-600",onClick:i},t(s(n)("common.reset")),1)])])]),e("div",Ar,[e("div",Fr,t(s(n)("admin.ops.errorDetails.total"))+" "+t(q.value),1),I(vs,{class:"min-h-0 flex-1",rows:D.value,total:q.value,loading:P.value,page:$.value,"page-size":x.value,onOpenErrorDetail:O[5]||(O[5]=L=>T("openErrorDetail",L)),onSort:k,"onUpdate:page":O[6]||(O[6]=L=>$.value=L),"onUpdate:pageSize":O[7]||(O[7]=L=>x.value=L)},null,8,["rows","total","loading","page","page-size"])])])]),_:1},8,["show","title"]))}}),Ir={class:"flex h-full flex-col rounded-3xl bg-white p-6 shadow-sm ring-1 ring-gray-900/5 dark:bg-dark-800 dark:ring-dark-700"},jr={class:"mb-4 flex shrink-0 items-center justify-between"},Pr={class:"flex items-center gap-2 text-sm font-bold text-gray-900 dark:text-white"},Ur={class:"flex items-center gap-2"},Nr=["disabled"],zr=["disabled"],Hr={class:"min-h-0 flex-1"},Br={key:1,class:"flex h-full items-center justify-center"},Qr={key:0,class:"animate-pulse text-sm text-gray-400"},Wr=be({__name:"OpsErrorTrendChart",props:{points:{},loading:{type:Boolean},timeRange:{}},emits:["openRequestErrors","openUpstreamErrors"],setup(ie,{emit:d}){wt.register(zt,$t,Ct,Ht,Vt,Bt,Lt,Qt);const a=ie,T=d,{t:n}=we(),P=_(()=>document.documentElement.classList.contains("dark")),D=_(()=>({red:"#ef4444",redAlpha:"#ef444420",purple:"#8b5cf6",purpleAlpha:"#8b5cf620",gray:"#9ca3af",grid:P.value?"#374151":"#f3f4f6",text:P.value?"#9ca3af":"#6b7280"})),q=_(()=>ht(a.points.map(R=>R.error_count_sla??0))),$=_(()=>ht(a.points.map(R=>(R.upstream_error_count_excl_429_529??0)+(R.upstream_429_count??0)+(R.upstream_529_count??0)))),x=_(()=>ht(a.points.map(R=>(R.error_count_sla??0)+(R.upstream_error_count_excl_429_529??0)+(R.business_limited_count??0)))),v=_(()=>q.value>0),y=_(()=>$.value>0),G=_(()=>!a.points.length||x.value<=0?null:{labels:a.points.map(R=>Nt(R.bucket_start,a.timeRange)),datasets:[{label:n("admin.ops.errorsSla"),data:a.points.map(R=>R.error_count_sla??0),borderColor:D.value.red,backgroundColor:D.value.redAlpha,fill:!0,tension:.35,pointRadius:0,pointHitRadius:10},{label:n("admin.ops.upstreamExcl429529"),data:a.points.map(R=>R.upstream_error_count_excl_429_529??0),borderColor:D.value.purple,backgroundColor:D.value.purpleAlpha,fill:!0,tension:.35,pointRadius:0,pointHitRadius:10},{label:n("admin.ops.businessLimited"),data:a.points.map(R=>R.business_limited_count??0),borderColor:D.value.gray,backgroundColor:"transparent",borderDash:[6,6],fill:!1,tension:.35,pointRadius:0,pointHitRadius:10}]}),E=_(()=>G.value?"ready":a.loading?"loading":"empty"),p=_(()=>{const R=D.value;return{responsive:!0,maintainAspectRatio:!1,interaction:{intersect:!1,mode:"index"},plugins:{legend:{position:"top",align:"end",labels:{color:R.text,usePointStyle:!0,boxWidth:6,font:{size:10}}},tooltip:{backgroundColor:P.value?"#1f2937":"#ffffff",titleColor:P.value?"#f3f4f6":"#111827",bodyColor:P.value?"#d1d5db":"#4b5563",borderColor:R.grid,borderWidth:1,padding:10,displayColors:!0}},scales:{x:{type:"category",grid:{display:!1},ticks:{color:R.text,font:{size:10},maxTicksLimit:8,autoSkip:!0,autoSkipPadding:10}},y:{type:"linear",display:!0,position:"left",grid:{color:R.grid,borderDash:[4,4]},ticks:{color:R.text,font:{size:10},precision:0}}}}});return(R,A)=>(l(),u("div",Ir,[e("div",jr,[e("h3",Pr,[A[2]||(A[2]=e("svg",{class:"h-4 w-4 text-rose-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M13 17h8m0 0V9m0 8l-8-8-4 4-6-6"})],-1)),z(" "+t(s(n)("admin.ops.errorTrend"))+" ",1),I(_e,{content:s(n)("admin.ops.tooltips.errorTrend")},null,8,["content"])]),e("div",Ur,[e("button",{type:"button",class:"inline-flex items-center rounded-lg border border-gray-200 bg-white px-2 py-1 text-[11px] font-semibold text-gray-600 hover:bg-gray-50 disabled:opacity-50 dark:border-dark-700 dark:bg-dark-900 dark:text-gray-300 dark:hover:bg-dark-800",disabled:!v.value,onClick:A[0]||(A[0]=ne=>T("openRequestErrors"))},t(s(n)("admin.ops.errorDetails.requestErrors")),9,Nr),e("button",{type:"button",class:"inline-flex items-center rounded-lg border border-gray-200 bg-white px-2 py-1 text-[11px] font-semibold text-gray-600 hover:bg-gray-50 disabled:opacity-50 dark:border-dark-700 dark:bg-dark-900 dark:text-gray-300 dark:hover:bg-dark-800",disabled:!y.value,onClick:A[1]||(A[1]=ne=>T("openUpstreamErrors"))},t(s(n)("admin.ops.errorDetails.upstreamErrors")),9,zr)])]),e("div",Hr,[E.value==="ready"&&G.value?(l(),re(s(Wt),{key:0,data:G.value,options:p.value},null,8,["data","options"])):(l(),u("div",Br,[E.value==="loading"?(l(),u("div",Qr,t(s(n)("common.loading")),1)):(l(),re(mt,{key:1,title:s(n)("common.noData"),description:s(n)("admin.ops.charts.emptyError")},null,8,["title","description"]))]))])]))}}),Gr={class:"flex h-full flex-col rounded-3xl bg-white p-6 shadow-sm ring-1 ring-gray-900/5 dark:bg-dark-800 dark:ring-dark-700"},Kr={class:"mb-4 flex items-center justify-between"},Zr={class:"flex items-center gap-2 text-sm font-bold text-gray-900 dark:text-white"},Jr={class:"min-h-0 flex-1"},Yr={key:1,class:"flex h-full items-center justify-center"},Xr={key:0,class:"animate-pulse text-sm text-gray-400"},ei=be({__name:"OpsLatencyChart",props:{latencyData:{},loading:{type:Boolean}},setup(ie){wt.register(ys,Lt,Vt,$t,Ct);const d=ie,{t:a}=we(),T=_(()=>document.documentElement.classList.contains("dark")),n=_(()=>({blue:"#3b82f6",grid:T.value?"#374151":"#f3f4f6",text:T.value?"#9ca3af":"#6b7280"})),P=_(()=>{var x;return(((x=d.latencyData)==null?void 0:x.total_requests)??0)>0}
3),D=_(()=>P.value?"ready":d.loading?"loading":"empty"),q=_(()=>{if(!d.latencyData||!P.value)return null;const x=n.value;return{labels:d.latencyData.buckets.map(v=>v.range),datasets:[{label:a("admin.ops.requests"),data:d.latencyData.buckets.map(v=>v.count),backgroundColor:x.blue,borderRadius:4,barPercentage:.6}]}}),$=_(()=>{const x=n.value;return{responsive:!0,maintainAspectRatio:!1,plugins:{legend:{display:!1}},scales:{x:{grid:{display:!1},ticks:{color:x.text,font:{size:10}}},y:{beginAtZero:!0,grid:{color:x.grid,borderDash:[4,4]},ticks:{color:x.text,font:{size:10}}}}}});return(x,v)=>(l(),u("div",Gr,[e("div",Kr,[e("h3",Zr,[v[0]||(v[0]=e("svg",{class:"h-4 w-4 text-purple-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),z(" "+t(s(a)("admin.ops.latencyHistogram"))+" ",1),I(_e,{content:s(a)("admin.ops.tooltips.latencyHistogram")},null,8,["content"])])]),e("div",Jr,[D.value==="ready"&&q.value?(l(),re(s(bs),{key:0,data:q.value,options:$.value},null,8,["data","options"])):(l(),u("div",Yr,[D.value==="loading"?(l(),u("div",Xr,t(s(a)("common.loading")),1)):(l(),re(mt,{key:1,title:s(a)("common.noData"),description:s(a)("admin.ops.charts.emptyRequest")},null,8,["title","description"]))]))])]))}}),ti={class:"flex h-full min-w-0 flex-col rounded-3xl bg-white p-6 shadow-sm ring-1 ring-gray-900/5 dark:bg-dark-800 dark:ring-dark-700"},si={"data-testid":"throughput-chart-header",class:"mb-4 flex shrink-0 flex-col gap-3 sm:flex-row sm:items-center sm:justify-between"},ai={class:"flex min-w-0 items-center gap-2 text-sm font-bold text-gray-900 dark:text-white"},ni={"data-testid":"throughput-chart-toolbar",class:"flex w-full min-w-0 flex-wrap items-center gap-2 text-xs text-gray-500 dark:text-gray-400 sm:w-auto sm:justify-end"},oi={class:"flex shrink-0 items-center gap-1"},li=["disabled","title"],ri=["disabled","title"],ii=["disabled","title"],di={key:0,class:"mb-3 flex flex-wrap gap-2"},ui=["onClick"],ci={class:"max-w-[180px] truncate"},pi={class:"text-gray-400 dark:text-gray-500"},mi={key:1,class:"mb-3 flex flex-wrap gap-2"},gi=["onClick"],vi={class:"uppercase"},_i={class:"text-gray-400 dark:text-gray-500"},xi={class:"min-h-0 min-w-0 flex-1"},fi={key:1,class:"flex h-full items-center justify-center"},yi={key:0,class:"animate-pulse text-sm text-gray-400"},bi=be({__name:"OpsThroughputTrendChart",props:{points:{},loading:{type:Boolean},timeRange:{},byPlatform:{},topGroups:{},fullscreen:{type:Boolean}},emits:["selectPlatform","selectGroup","openDetails"],setup(ie,{emit:d}){wt.register(zt,$t,Ct,Ht,Vt,Bt,Lt,Qt);const a=ie,{t:T}=we(),n=d,P=b(null);ge(()=>a.timeRange,()=>{setTimeout(()=>{var R;const p=(R=P.value)==null?void 0:R.chart;p&&typeof p.resetZoom=="function"&&p.resetZoom()},100)});const D=_(()=>document.documentElement.classList.contains("dark")),q=_(()=>({blue:"#3b82f6",blueAlpha:"#3b82f620",green:"#10b981",greenAlpha:"#10b98120",grid:D.value?"#374151":"#f3f4f6",text:D.value?"#9ca3af":"#6b7280"})),$=_(()=>ht(a.points.map(p=>p.request_count))),x=_(()=>!a.points.length||$.value<=0?null:{labels:a.points.map(p=>Nt(p.bucket_start,a.timeRange)),datasets:[{label:"QPS",data:a.points.map(p=>p.qps??0),borderColor:q.value.blue,backgroundColor:q.value.blueAlpha,fill:!0,tension:.4,pointRadius:0,pointHitRadius:10},{label:T("admin.ops.tpsK"),data:a.points.map(p=>(p.tps??0)/1e3),borderColor:q.value.green,backgroundColor:q.value.greenAlpha,fill:!0,tension:.4,pointRadius:0,pointHitRadius:10,yAxisID:"y1"}]}),v=_(()=>x.value?"ready":a.loading?"loading":"empty"),y=_(()=>{const p=q.value;return{responsive:!0,maintainAspectRatio:!1,interaction:{intersect:!1,mode:"index"},plugins:{legend:{position:"top",align:"end",labels:{color:p.text,usePointStyle:!0,boxWidth:6,font:{size:10}}},tooltip:{backgroundColor:D.value?"#1f2937":"#ffffff",titleColor:D.value?"#f3f4f6":"#111827",bodyColor:D.value?"#d1d5db":"#4b5563",borderColor:p.grid,borderWidth:1,padding:10,displayColors:!0,callbacks:{label:R=>{let A=R.dataset.label||"";return A&&(A+=": "),R.raw!==null&&(A+=R.parsed.y.toFixed(1)),A}}},zoom:{pan:{enabled:!0,mode:"x",modifierKey:"ctrl"},zoom:{wheel:{enabled:!0},pinch:{enabled:!0},mode:"x"}}},scales:{x:{type:"category",grid:{display:!1},ticks:{color:p.text,font:{size:10},maxTicksLimit:8,autoSkip:!0,autoSkipPadding:10}},y:{type:"linear",display:!0,position:"left",grid:{color:p.grid,borderDash:[4,4]},ticks:{color:p.text,font:{size:10}}},y1:{type:"linear",display:!0,position:"right",grid:{display:!1},ticks:{color:p.green,font:{size:10}}}}}});function G(){var R;const p=(R=P.value)==null?void 0:R.chart;p&&typeof p.resetZoom=="function"&&p.resetZoom()}function E(){var ne;const p=(ne=P.value)==null?void 0:ne.chart;if(!p||typeof p.toBase64Image!="function")return;const R=p.toBase64Image("image/png",1),A=document.createElement("a");A.href=R,A.download=`ops-throughput-${new Date().toISOString().slice(0,19).replace(/[:T]/g,"-")}.png`,A.click()}return(p,R)=>{var A,ne;return l(),u("div",ti,[e("div",si,[e("h3",ai,[R[1]||(R[1]=e("svg",{class:"h-4 w-4 text-blue-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M13 7h8m0 0v8m0-8l-8 8-4-4-6 6"})],-1)),z(" "+t(s(T)("admin.ops.throughputTrend"))+" ",1),a.fullscreen?C("",!0):(l(),re(_e,{key:0,content:s(T)("admin.ops.tooltips.throughputTrend")},null,8,["content"]))]),e("div",ni,[R[3]||(R[3]=e("span",{class:"flex shrink-0 items-center gap-1"},[e("span",{class:"h-2 w-2 rounded-full bg-blue-500"}),z("QPS")],-1)),e("span",oi,[R[2]||(R[2]=e("span",{class:"h-2 w-2 rounded-full bg-green-500"},null,-1)),z(t(s(T)("admin.ops.tpsK")),1)]),a.fullscreen?C("",!0):(l(),u(ue,{key:0},[e("button",{type:"button",class:"inline-flex shrink-0 items-center rounded-lg border border-gray-200 bg-white px-2 py-1 text-[11px] font-semibold text-gray-600 hover:bg-gray-50 disabled:opacity-50 dark:border-dark-700 dark:bg-dark-900 dark:text-gray-300 dark:hover:bg-dark-800",disabled:v.value!=="ready",title:s(T)("admin.ops.requestDetails.title"),onClick:R[0]||(R[0]=Y=>n("openDetails"))},t(s(T)("admin.ops.requestDetails.details")),9,li),e("button",{type:"button",class:"inline-flex shrink-0 items-center rounded-lg border border-gray-200 bg-white px-2 py-1 text-[11px] font-semibold text-gray-600 hover:bg-gray-50 disabled:opacity-50 dark:border-dark-700 dark:bg-dark-900 dark:text-gray-300 dark:hover:bg-dark-800",disabled:v.value!=="ready",title:s(T)("admin.ops.charts.resetZoomHint"),onClick:G},t(s(T)("admin.ops.charts.resetZoom")),9,ri),e("button",{type:"button",class:"inline-flex shrink-0 items-center rounded-lg border border-gray-200 bg-white px-2 py-1 text-[11px] font-semibold text-gray-600 hover:bg-gray-50 disabled:opacity-50 dark:border-dark-700 dark:bg-dark-900 dark:text-gray-300 dark:hover:bg-dark-800",disabled:v.value!=="ready",title:s(T)("admin.ops.charts.downloadChartHint"),onClick:E},t(s(T)("admin.ops.charts.downloadChart")),9,ii)],64))])]),(((A=a.topGroups)==null?void 0:A.length)??0)>0?(l(),u("div",di,[(l(!0),u(ue,null,pe(a.topGroups,Y=>(l(),u("button",{key:Y.group_id,type:"button",class:"inline-flex items-center gap-2 rounded-full border border-gray-200 bg-white px-3 py-1 text-[11px] font-semibold text-gray-700 hover:bg-gray-50 dark:border-dark-700 dark:bg-dark-900 dark:text-gray-200 dark:hover:bg-dark-800",onClick:de=>n("selectGroup",Y.group_id)},[e("span",ci,t(Y.group_name||`#${Y.group_id}`),1),e("span",pi,t(s(Le)(Y.request_count)),1)],8,ui))),128))])):(((ne=a.byPlatform)==null?void 0:ne.length)??0)>0?(l(),u("div",mi,[(l(!0),u(ue,null,pe(a.byPlatform,Y=>(l(),u("button",{key:Y.platform,type:"button",class:"inline-flex items-center gap-2 rounded-full border border-gray-200 bg-white px-3 py-1 text-[11px] font-semibold text-gray-700 hover:bg-gray-50 dark:border-dark-700 dark:bg-dark-900 dark:text-gray-200 dark:hover:bg-dark-800",onClick:de=>n("selectPlatform",Y.platform)},[e("span",vi,t(Y.platform),1),e("span",_i,t(s(Le)(Y.request_count)),1)],8,gi))),128))])):C("",!0),e("div",xi,[v.value==="ready"&&x.value?(l(),re(s(Wt),{key:0,ref_key:"throughputChartRef",ref:P,data:x.value,options:y.value},null,8,["data","options"])):(l(),u("div",fi,[v.value==="loading"?(l(),u("div",yi,t(s(T)("common.loading")),1)):(l(),re(mt,{key:1,title:s(T)("common.noData"),description:s(T)("admin.ops.charts.emptyRequest")},null,8,["title","description"]))]))])])}}}),hi={class:"flex h-full flex-col rounded-3xl bg-white p-6 shadow-sm ring-1 ring-gray-900/5 dark:bg-dark-800 dark:ring-dark-700"},ki={class:"mb-4 flex shrink-0 items-center justify-between"},wi={class:"flex items-center gap-2 text-sm font-bold text-gray-900 dark:text-white"},$i={class:"min-h-0 flex-1"},Ci={key:1,class:"flex h-full items-center justify-center"},Ri={key:0,class:"animate-pulse text-sm text-gray-400"},Si=be({__name:"OpsSwitchRateTrendChart",props:{points:{},loading:{type:Boolean},timeRange:{},fullscreen:{type:Boolean}},setup(ie){wt.register(zt,$t,Ct,Ht,Vt,Bt,Lt,Qt);const d=ie,{t:a}=we(),T=_(()=>document.documentElement.classList.contains("dark")),n=_(()=>({teal:"#14b8a6",tealAlpha:"#14b8a620",grid:T.value?"#374151":"#f3f4f6",text:T.value?"#9ca3af":"#6b7280"})),P=_(()=>ht(d.points.map(x=>x.request_count))),D=_(()=>!d.points.length||P.value<=0?null:{labels:d.points.map(x=>Nt(x.bucket_start,d.timeRange)),datasets:[{label:a("admin.ops.switchRate"),data:d.points.map(x=>
3{const v=x.request_count??0,y=x.switch_count??0;return v<=0?0:y/v}),borderColor:n.value.teal,backgroundColor:n.value.tealAlpha,fill:!0,tension:.35,pointRadius:0,pointHitRadius:10}]}),q=_(()=>D.value?"ready":d.loading?"loading":"empty"),$=_(()=>{const x=n.value;return{responsive:!0,maintainAspectRatio:!1,interaction:{intersect:!1,mode:"index"},plugins:{legend:{position:"top",align:"end",labels:{color:x.text,usePointStyle:!0,boxWidth:6,font:{size:10}}},tooltip:{backgroundColor:T.value?"#1f2937":"#ffffff",titleColor:T.value?"#f3f4f6":"#111827",bodyColor:T.value?"#d1d5db":"#4b5563",borderColor:x.grid,borderWidth:1,padding:10,displayColors:!0,callbacks:{label:v=>{var G;const y=typeof((G=v==null?void 0:v.parsed)==null?void 0:G.y)=="number"?v.parsed.y:0;return`${a("admin.ops.switchRate")}: ${y.toFixed(3)}`}}}},scales:{x:{type:"category",grid:{display:!1},ticks:{color:x.text,font:{size:10},maxTicksLimit:8,autoSkip:!0,autoSkipPadding:10}},y:{type:"linear",display:!0,position:"left",grid:{color:x.grid,borderDash:[4,4]},ticks:{color:x.text,font:{size:10},callback:v=>Number(v).toFixed(3)}}}}});return(x,v)=>(l(),u("div",hi,[e("div",ki,[e("h3",wi,[v[0]||(v[0]=e("svg",{class:"h-4 w-4 text-teal-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M7 7h10M7 12h6m-6 5h3"})],-1)),z(" "+t(s(a)("admin.ops.switchRateTrend"))+" ",1),d.fullscreen?C("",!0):(l(),re(_e,{key:0,content:s(a)("admin.ops.tooltips.switchRateTrend")},null,8,["content"]))])]),e("div",$i,[q.value==="ready"&&D.value?(l(),re(s(Wt),{key:0,data:D.value,options:$.value},null,8,["data","options"])):(l(),u("div",Ci,[q.value==="loading"?(l(),u("div",Ri,t(s(a)("common.loading")),1)):(l(),re(mt,{key:1,title:s(a)("common.noData"),description:s(a)("admin.ops.charts.emptyRequest")},null,8,["title","description"]))]))])]))}}),Ti={class:"rounded-3xl bg-white p-6 shadow-sm ring-1 ring-gray-900/5 dark:bg-dark-800 dark:ring-dark-700"},Di={class:"mb-4 flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between sm:gap-4"},Ei={class:"text-sm font-bold text-gray-900 dark:text-white"},qi={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},Mi={class:"flex flex-wrap items-center gap-2"},Vi=["disabled"],Li={key:0,class:"flex items-center gap-2 text-sm text-gray-500 dark:text-gray-400"},Ai={key:1,class:"rounded-xl border border-dashed border-gray-200 p-8 text-center text-sm text-gray-500 dark:border-dark-700 dark:text-gray-400"},Fi={key:2,class:"overflow-hidden rounded-xl border border-gray-200 dark:border-dark-700"},Oi={key:0,class:"divide-y divide-gray-100 dark:divide-dark-800"},Ii=["onClick"],ji={class:"flex flex-wrap items-center gap-2"},Pi={class:"ml-auto text-[11px] text-gray-500 dark:text-gray-400"},Ui={class:"text-xs font-semibold text-gray-900 dark:text-white"},Ni={key:0,class:"line-clamp-2 text-[11px] text-gray-500 dark:text-gray-400"},zi={class:"flex flex-wrap items-center justify-between gap-2 text-[11px] text-gray-500 dark:text-gray-400"},Hi={class:"font-mono"},Bi={class:"inline-flex items-center gap-1"},Qi={class:"text-[11px] text-gray-400 dark:text-gray-500"},Wi={key:1,class:"min-w-full divide-y divide-gray-200 dark:divide-dark-700"},Gi={class:"sticky top-0 z-10 bg-gray-50 dark:bg-dark-900"},Ki={class:"px-4 py-3 text-left text-[11px] font-bold uppercase tracking-wider text-gray-500 dark:text-gray-400"},Zi={class:"px-4 py-3 text-left text-[11px] font-bold uppercase tracking-wider text-gray-500 dark:text-gray-400"},Ji={class:"px-4 py-3 text-left text-[11px] font-bold uppercase tracking-wider text-gray-500 dark:text-gray-400"},Yi={class:"px-4 py-3 text-left text-[11px] font-bold uppercase tracking-wider text-gray-500 dark:text-gray-400"},Xi={class:"px-4 py-3 text-left text-[11px] font-bold uppercase tracking-wider text-gray-500 dark:text-gray-400"},ed={class:"px-4 py-3 text-left text-[11px] font-bold uppercase tracking-wider text-gray-500 dark:text-gray-400"},td={class:"px-4 py-3 text-left text-[11px] font-bold uppercase tracking-wider text-gray-500 dark:text-gray-400"},sd={class:"px-4 py-3 text-right text-[11px] font-bold uppercase tracking-wider text-gray-500 dark:text-gray-400"},ad={class:"divide-y divide-gray-200 bg-white dark:divide-dark-700 dark:bg-dark-800"},nd=["onClick","title"],od={class:"whitespace-nowrap px-4 py-3 text-xs text-gray-600 dark:text-gray-300"},ld={class:"whitespace-nowrap px-4 py-3"},rd={class:"flex items-center gap-2"},id={class:"whitespace-nowrap px-4 py-3 text-xs text-gray-600 dark:text-gray-300"},dd={class:"whitespace-nowrap px-4 py-3 text-xs text-gray-600 dark:text-gray-300"},ud={class:"font-mono"},cd={class:"min-w-[260px] px-4 py-3 text-xs text-gray-700 dark:text-gray-200"},pd={class:"font-semibold truncate max-w-[360px]"},md={key:0,class:"mt-0.5 line-clamp-2 text-[11px] text-gray-500 dark:text-gray-400"},gd={class:"whitespace-nowrap px-4 py-3 text-xs text-gray-600 dark:text-gray-300"},vd={class:"whitespace-nowrap px-4 py-3 text-[11px] text-gray-500 dark:text-gray-400"},_d={class:"whitespace-nowrap px-4 py-3 text-right text-xs"},xd=["title"],fd={class:"text-[11px] font-bold text-gray-600 dark:text-gray-300"},yd={key:2,class:"flex items-center justify-center gap-2 py-3 text-xs text-gray-500 dark:text-gray-400"},bd={key:3,class:"py-3 text-center text-xs text-gray-400"},hd={key:0,class:"flex items-center justify-center py-10 text-sm text-gray-500 dark:text-gray-400"},kd={key:1,class:"py-10 text-center text-sm text-gray-500 dark:text-gray-400"},wd={key:2,class:"space-y-5"},$d={class:"rounded-xl bg-gray-50 p-4 dark:bg-dark-900"},Cd={class:"flex flex-col gap-2 sm:flex-row sm:items-start sm:justify-between"},Rd={class:"flex flex-wrap items-center gap-2"},Sd={class:"mt-2 text-sm font-semibold text-gray-900 dark:text-white"},Td={key:0,class:"mt-1 whitespace-pre-wrap text-xs text-gray-600 dark:text-gray-300"},Dd={class:"flex flex-wrap gap-2"},Ed={class:"flex items-center gap-2 rounded-lg bg-white px-2 py-1 ring-1 ring-gray-200 dark:bg-dark-800 dark:ring-dark-700"},qd={class:"text-[11px] font-bold text-gray-600 dark:text-gray-300"},Md=["disabled"],Vd=["disabled"],Ld={class:"grid grid-cols-1 gap-4 sm:grid-cols-2"},Ad={class:"rounded-xl bg-gray-50 p-4 dark:bg-dark-900"},Fd={class:"text-xs font-bold uppercase tracking-wider text-gray-400"},Od={class:"mt-1 text-sm font-medium text-gray-900 dark:text-white"},Id={class:"rounded-xl bg-gray-50 p-4 dark:bg-dark-900"},jd={class:"text-xs font-bold uppercase tracking-wider text-gray-400"},Pd={class:"mt-1 text-sm font-medium text-gray-900 dark:text-white"},Ud={class:"rounded-xl bg-gray-50 p-4 dark:bg-dark-900"},Nd={class:"text-xs font-bold uppercase tracking-wider text-gray-400"},zd={class:"mt-1 flex flex-wrap items-center gap-2"},Hd={class:"font-mono text-sm font-bold text-gray-900 dark:text-white"},Bd=["href"],Qd=["href"],Wd={class:"rounded-xl bg-gray-50 p-4 dark:bg-dark-900"},Gd={class:"text-xs font-bold uppercase tracking-wider text-gray-400"},Kd={class:"mt-1 text-sm text-gray-900 dark:text-white"},Zd={key:0},Jd={key:1},Yd={key:2},Xd={class:"rounded-xl border border-gray-200 bg-white p-4 dark:border-dark-700 dark:bg-dark-800"},eu={class:"mb-3 flex flex-wrap items-center justify-between gap-3"},tu={class:"text-sm font-bold text-gray-900 dark:text-white"},su={class:"mt-0.5 text-xs text-gray-500 dark:text-gray-400"},au={key:0,class:"py-6 text-center text-xs text-gray-500 dark:text-gray-400"},nu={key:1,class:"py-6 text-center text-xs text-gray-500 dark:text-gray-400"},ou={key:2,class:"overflow-hidden rounded-lg border border-gray-100 dark:border-dark-700"},lu={class:"min-w-full divide-y divide-gray-100 dark:divide-dark-700"},ru={class:"bg-gray-50 dark:bg-dark-900"},iu={class:"px-3 py-2 text-left text-[11px] font-bold uppercase tracking-wider text-gray-500 dark:text-gray-400"},du={class:"px-3 py-2 text-left text-[11px] font-bold uppercase tracking-wider text-gray-500 dark:text-gray-400"},uu={class:"px-3 py-2 text-left text-[11px] font-bold uppercase tracking-wider text-gray-500 dark:text-gray-400"},cu={class:"divide-y divide-gray-100 dark:divide-dark-700"},pu={class:"px-3 py-2 text-xs text-gray-600 dark:text-gray-300"},mu={class:"px-3 py-2 text-xs"},gu={class:"px-3 py-2 text-xs text-gray-600 dark:text-gray-300"},vu={key:0},_u={key:1}
3,Ut=10,xu=be({__name:"OpsAlertEventsCard",setup(ie){const{t:d}=we(),a=pt(),T=Rt("(min-width: 768px)"),n=b(!1),P=b(!1),D=b([]),q=b(!0),$=b(!1),x=b(null),v=b(!1),y=b(!1),G=b(!1),E=b([]),p=b("7d"),R=_(()=>[{value:"7d",label:d("admin.ops.timeRange.7d")},{value:"30d",label:d("admin.ops.timeRange.30d")}]),A=b("1h"),ne=_(()=>[{value:"1h",label:d("admin.ops.timeRange.1h")},{value:"24h",label:d("admin.ops.timeRange.24h")},{value:"7d",label:d("admin.ops.timeRange.7d")}]),Y=b("24h"),de=_(()=>[{value:"5m",label:d("admin.ops.timeRange.5m")},{value:"30m",label:d("admin.ops.timeRange.30m")},{value:"1h",label:d("admin.ops.timeRange.1h")},{value:"6h",label:d("admin.ops.timeRange.6h")},{value:"24h",label:d("admin.ops.timeRange.24h")},{value:"7d",label:d("admin.ops.timeRange.7d")},{value:"30d",label:d("admin.ops.timeRange.30d")}]),ee=b(""),W=_(()=>[{value:"",label:d("common.all")},{value:"P0",label:"P0"},{value:"P1",label:"P1"},{value:"P2",label:"P2"},{value:"P3",label:"P3"}]),Q=b(""),k=_(()=>[{value:"",label:d("common.all")},{value:"firing",label:d("admin.ops.alertEvents.status.firing")},{value:"resolved",label:d("admin.ops.alertEvents.status.resolved")},{value:"manual_resolved",label:d("admin.ops.alertEvents.status.manualResolved")}]),c=b(""),i=_(()=>[{value:"",label:d("common.all")},{value:"true",label:d("admin.ops.alertEvents.table.emailSent")},{value:"false",label:d("admin.ops.alertEvents.table.emailIgnored")}]);function F(N={}){const S={limit:Ut,time_range:Y.value};return ee.value&&(S.severity=ee.value),Q.value&&(S.status=Q.value),
3c.value==="true"&&(S.email_sent=!0),c.value==="false"&&(S.email_sent=!1),{...S,...N}}async function M(){var N,S;n.value=!0;try{const h=await te.listAlertEvents(F());D.value=h,q.value=h.length===Ut}catch(h){console.error("[OpsAlertEventsCard] Failed to load alert events",h),a.showError(((S=(N=h==null?void 0:h.response)==null?void 0:N.data)==null?void 0:S.detail)||d("admin.ops.alertEvents.loadFailed")),D.value=[],q.value=!1}finally{n.value=!1}}async function O(){if(P.value||n.value||!q.value)return;const N=D.value[D.value.length-1];if(N){P.value=!0;try{const S=await te.listAlertEvents(F({before_fired_at:N.fired_at||N.created_at,before_id:N.id}));if(!S.length){q.value=!1;return}D.value=[...D.value,...S],S.length<Ut&&(q.value=!1)}catch(S){console.error("[OpsAlertEventsCard] Failed to load more alert events",S),q.value=!1}finally{P.value=!1}}}function L(N){const S=N.target;if(!S)return;S.scrollTop+S.clientHeight>=S.scrollHeight-120&&O()}function B(N,S){var J;const h=(J=N==null?void 0:N.dimensions)==null?void 0:J[S];return h==null?"":typeof h=="string"?h:typeof h=="number"||typeof h=="boolean"?String(h):""}function Z(N){const S=Math.max(0,Math.floor(N)),h=Math.floor(S/1e3);if(h<60)return`${h}s`;const J=Math.floor(h/60);if(J<60)return`${J}m`;const ae=Math.floor(J/60);return ae<24?`${ae}h`:`${Math.floor(ae/24)}d`}function ve(N){const S=new Date(N.fired_at||N.created_at);if(Number.isNaN(S.getTime()))return"-";const h=N.resolved_at||null,J=String(N.status||"").trim().toLowerCase();if(h){const ye=new Date(h);if(!Number.isNaN(ye.getTime())){const Ce=ye.getTime()-S.getTime();return`${d(J==="manual_resolved"?"admin.ops.alertEvents.status.manualResolved":"admin.ops.alertEvents.status.resolved")} ${Z(Ce)}`}}const fe=Date.now()-S.getTime();return`${d("admin.ops.alertEvents.status.firing")} ${Z(fe)}`}function xe(N){var fe;const S=[],h=B(N,"platform");h&&S.push(`platform=${h}`);const J=(fe=N.dimensions)==null?void 0:fe.group_id;J!=null&&J!==""&&S.push(`group_id=${String(J)}`);const ae=B(N,"region");return ae&&S.push(`region=${ae}`),S.length?S.join(" "):"-"}function me(){$.value=!1,x.value=null,E.value=[]}async function j(N){var S,h;$.value=!0,x.value=N,v.value=!0,G.value=!0;try{const J=await te.getAlertEvent(N.id);x.value=J}catch(J){console.error("[OpsAlertEventsCard] Failed to load alert detail",J),a.showError(((h=(S=J==null?void 0:J.response)==null?void 0:S.data)==null?void 0:h.detail)||d("admin.ops.alertEvents.detail.loadFailed"))}finally{v.value=!1}await g()}async function g(){var S;const N=x.value;if(!N){E.value=[],G.value=!1;return}G.value=!0;try{const h=B(N,"platform"),J=(S=N.dimensions)==null?void 0:S.group_id,ae=typeof J=="number"?J:void 0,fe=await te.listAlertEvents({limit:20,time_range:p.value,platform:h||void 0,group_id:ae,status:""});E.value=fe.filter(ye=>{var je,Ae;if(ye.rule_id!==N.rule_id)return!1;const Ce=B(ye,"platform"),Be=B(N,"platform");if((Ce||"")!==(Be||""))return!1;const Qe=(je=ye.dimensions)==null?void 0:je.group_id,Ke=(Ae=N.dimensions)==null?void 0:Ae.group_id;return(Qe??null)===(Ke??null)})}catch(h){console.error("[OpsAlertEventsCard] Failed to load alert history",h),E.value=[]}finally{G.value=!1}}function m(N){const S=Date.now();return N==="1h"?new Date(S+60*60*1e3).toISOString():N==="24h"?new Date(S+24*60*60*1e3).toISOString():N==="7d"?new Date(S+7*24*60*60*1e3).toISOString():new Date(S+60*60*1e3).toISOString()}async function w(){var S,h,J;const N=x.value;if(N&&!y.value){y.value=!0;try{const ae=B(N,"platform"),fe=(S=N.dimensions)==null?void 0:S.group_id,ye=typeof fe=="number"?fe:null,Ce=B(N,"region")||null;await te.createAlertSilence({rule_id:N.rule_id,platform:ae||"",group_id:ye??void 0,region:Ce??void 0,until:m(A.value),reason:`silence from UI (${A.value})`}),a.showSuccess(d("admin.ops.alertEvents.detail.silenceSuccess"))}catch(ae){console.error("[OpsAlertEventsCard] Failed to silence alert",ae),a.showError(((J=(h=ae==null?void 0:ae.response)==null?void 0:h.data)==null?void 0:J.detail)||d("admin.ops.alertEvents.detail.silenceFailed"))}finally{y.value=!1}}}async function oe(){var N,S;if(x.value&&!y.value){y.value=!0;try{await te.updateAlertEventStatus(x.value.id,"manual_resolved"),a.showSuccess(d("admin.ops.alertEvents.detail.manualResolvedSuccess"));const h=await te.getAlertEvent(x.value.id);x.value=h,await M(),await g()}
3catch(h){console.error("[OpsAlertEventsCard] Failed to resolve alert",h),a.showError(((S=(N=h==null?void 0:h.response)==null?void 0:N.data)==null?void 0:S.detail)||d("admin.ops.alertEvents.detail.manualResolvedFailed"))}finally{y.value=!1}}}kt(()=>{M()}),ge([Y,ee,Q,c],()=>{D.value=[],q.value=!0,M()}),ge(p,()=>{$.value&&g()});function $e(N){const S=String(N||"").trim().toLowerCase();return S==="p0"||S==="critical"?"bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-300":S==="p1"||S==="warning"?"bg-amber-100 text-amber-700 dark:bg-amber-900/30 dark:text-amber-300":S==="p2"||S==="info"?"bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-300":"bg-gray-100 text-gray-700 dark:bg-dark-700 dark:text-gray-300"}function Te(N){const S=String(N||"").trim().toLowerCase();return S==="firing"?"bg-red-50 text-red-700 ring-red-600/20 dark:bg-red-900/30 dark:text-red-300 dark:ring-red-500/30":S==="resolved"?"bg-green-50 text-green-700 ring-green-600/20 dark:bg-green-900/30 dark:text-green-300 dark:ring-green-500/30":S==="manual_resolved"?"bg-slate-50 text-slate-700 ring-slate-600/20 dark:bg-slate-900/30 dark:text-slate-300 dark:ring-slate-500/30":"bg-gray-50 text-gray-700 ring-gray-600/20 dark:bg-gray-900/30 dark:text-gray-300 dark:ring-gray-500/30"}function De(N){const S=String(N||"").trim().toLowerCase();return S?S==="firing"?d("admin.ops.alertEvents.status.firing"):S==="resolved"?d("admin.ops.alertEvents.status.resolved"):S==="manual_resolved"?d("admin.ops.alertEvents.status.manualResolved"):S.toUpperCase():"-"}const Ie=_(()=>D.value.length===0&&!n.value);return(N,S)=>(l(),u("div",Ti,[e("div",Di,[e("div",null,[e("h3",Ei,t(s(d)("admin.ops.alertEvents.title")),1),e("p",qi,t(s(d)("admin.ops.alertEvents.description")),1)]),e("div",Mi,[I(ce,{"model-value":Y.value,options:de.value,class:"w-[120px]",onChange:S[0]||(S[0]=h=>Y.value=String(h||"24h"))},null,8,["model-value","options"]),I(ce,{"model-value":ee.value,options:W.value,class:"w-[88px]",onChange:S[1]||(S[1]=h=>ee.value=String(h||""))},null,8,["model-value","options"]),I(ce,{"model-value":Q.value,options:k.value,class:"w-[110px]",onChange:S[2]||(S[2]=h=>Q.value=String(h||""))},null,8,["model-value","options"]),I(ce,{"model-value":c.value,options:i.value,class:"w-[110px]",onChange:S[3]||(S[3]=h=>c.value=String(h||""))},null,8,["model-value","options"]),e("button",{class:"flex items-center gap-1.5 rounded-lg bg-gray-100 px-3 py-1.5 text-xs font-bold text-gray-700 transition-colors hover:bg-gray-200 disabled:cursor-not-allowed disabled:opacity-50 dark:bg-dark-700 dark:text-gray-300 dark:hover:bg-dark-600",disabled:n.value,onClick:M},[(l(),u("svg",{class:H(["h-3.5 w-3.5",{"animate-spin":n.value}]),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[...S[6]||(S[6]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"},null,-1)])],2)),z(" "+t(s(d)("common.refresh")),1)],8,Vi)])]),n.value?(l(),u("div",Li,[S[7]||(S[7]=e("svg",{class:"h-4 w-4 animate-spin",fill:"none",viewBox:"0 0 24 24"},[e("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"}),e("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})],-1)),z(" "+t(s(d)("admin.ops.alertEvents.loading")),1)])):Ie.value?(l(),u("div",Ai,t(s(d)("admin.ops.alertEvents.empty")),1)):(l(),u("div",Fi,[e("div",{class:"max-h-[600px] overflow-y-auto",onScroll:L},[s(T)?(l(),u("table",Wi,[e("thead",Gi,[e("tr",null,[e("th",Ki,t(s(d)("admin.ops.alertEvents.table.time")),1),e("th",Zi,t(s(d)("admin.ops.alertEvents.table.severity")),1),e("th",Ji,t(s(d)("admin.ops.alertEvents.table.platform")),1),e("th",Yi,t(s(d)("admin.ops.alertEvents.table.ruleId")),1),e("th",Xi,t(s(d)("admin.ops.alertEvents.table.title")),1),e("th",ed,t(s(d)("admin.ops.alertEvents.table.duration")),1),e("th",td,t(s(d)("admin.ops.alertEvents.table.dimensions")),1),e("th",sd,t(s(d)("admin.ops.alertEvents.table.email")),1)])]),e("tbody",ad,[(l(!0),u(ue,null,pe(D.value,h=>(l(),u("tr",{key:h.id,class:"cursor-pointer hover:bg-gray-50 dark:hover:bg-dark-700/50",onClick:J=>j(h),title:h.title||""},[e("td",od,t(s(Ge)(h.fired_at||h.created_at)),1),e("td",ld,[e("div",rd,[e("span",{class:H(["rounded-full px-2 py-1 text-[10px] font-bold",$e(String(h.severity||""))])},t(h.severity||"-"),3),e("span",{class:H(["inline-flex items-center rounded-full px-2 py-1 text-[10px] font-bold ring-1 ring-inset",Te(h.status)])},t(De(h.status)),3)])]),e("td",id,t(B(h,"platform")||"-"),1),e("td",dd,[e("span",ud,"#"+t(h.rule_id),1)]),e("td",cd,[e("div",pd,t(h.title||"-"),1),h.description?(l(),u("div",md,t(h.description),1)):C("",!0)]),e("td",gd,t(ve(h)),1),e("td",vd,t(xe(h)),1),e("td",_d,[e("span",{class:"inline-flex items-center justify-end gap-1.5",title:h.email_sent?s(d)("admin.ops.alertEvents.table.emailSent"):s(d)("admin.ops.alertEvents.table.emailIgnored")},[h.email_sent?(l(),re(He,{key:0,name:"checkCircle",size:"sm",class:"text-green-600 dark:text-green-400"})):(l(),re(He,{key:1,name:"ban",size:"sm",class:"text-gray-400 dark:text-gray-500"})),e("span",fd,t(h.email_sent?s(d)("admin.ops.alertEvents.table.emailSent"):s(d)("admin.ops.alertEvents.table.emailIgnored")),1)],8,xd)])],8,nd))),128))])])):(l(),u("div",Oi,[(l(!0),u(ue,null,pe(D.value,h=>(l(),u("div",{key:h.id,class:"cursor-pointer space-y-2 p-4 hover:bg-gray-50 dark:hover:bg-dark-700/50",onClick:J=>j(h)},[e("div",ji,[e("span",{class:H(["rounded-full px-2 py-1 text-[10px] font-bold",$e(String(h.severity||""))])},t(h.severity||"-"),3),e("span",{class:H(["inline-flex items-center rounded-full px-2 py-1 text-[10px] font-bold ring-1 ring-inset",Te(h.status)])},t(De(h.status)),3),e("span",Pi,t(s(Ge)(h.fired_at||h.created_at)),1)]),e("div",Ui,t(h.title||"-"),1),h.description?(l(),u("div",Ni,t(h.description),1)):C("",!0),e("div",zi,[e("span",null,[e("span",Hi,"#"+t(h.rule_id),1),z(" · "+t(ve(h)),1)]),e("span",Bi,[h.email_sent?(l(),re(He,{key:0,name:"checkCircle",size:"xs",class:"text-green-600 dark:text-green-400"})):(l(),re(He,{key:1,name:"ban",size:"xs",class:"text-gray-400 dark:text-gray-500"})),z(" "+t(h.email_sent?s(d)("admin.ops.alertEvents.table.emailSent"):s(d)("admin.ops.alertEvents.table.emailIgnored")),1)])]),e("div",Qi,t(xe(h)),1)],8,Ii))),128))])),P.value?(l(),u("div",yd,[S[8]||(S[8]=e("svg",{class:"h-4 w-4 animate-spin",fill:"none",viewBox:"0 0 24 24"},[e("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"}),e("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})],-1)),z(" "+t(s(d)("admin.ops.alertEvents.loading")),1)])):!q.value&&D.value.length>0?(l(),u("div",bd," - ")):C("",!0)],32)])),I(Je,{show:$.value,title:s(d)("admin.ops.alertEvents.detail.title"),width:"wide","close-on-click-outside":!0,onClose:me},{default:Oe(()=>{var h,J;return[v.value?(l(),u("div",hd,t(s(d)("admin.ops.alertEvents.detail.loading")),1)):x.value?(l(),u("div",wd,[e("div",$d,[e("div",Cd,[e("div",null,[e("div",Rd,[e("span",{class:H(["inline-flex items-center rounded-full px-2 py-1 text-[10px] font-bold",$e(String(x.value.severity||""))])},t(x.value.severity||"-"),3),e("span",{class:H(["inline-flex items-center rounded-full px-2 py-1 text-[10px] font-bold ring-1 ring-inset",Te(x.value.status)])},t(De(x.value.status)),3)]),e("div",Sd,t(x.value.title||"-"),1),x.value.description?(l(),u("div",Td,t(x.value.description),1)):C("",!0)]),e("div",Dd,[e("div",Ed,[e("span",qd,t(s(d)("admin.ops.alertEvents.detail.silence")),1),I(ce,{"model-value":A.value,options:ne.value,class:"w-[110px]",onChange:S[4]||(S[4]=ae=>A.value=String(ae||"1h"))}
3,null,8,["model-value","options"]),e("button",{type:"button",class:"btn btn-secondary btn-sm",disabled:y.value,onClick:w},[I(He,{name:"ban",size:"sm"}),z(" "+t(s(d)("common.apply")),1)],8,Md)]),e("button",{type:"button",class:"btn btn-secondary btn-sm",disabled:y.value,onClick:oe},[I(He,{name:"checkCircle",size:"sm"}),z(" "+t(s(d)("admin.ops.alertEvents.detail.manualResolve")),1)],8,Vd)])])]),e("div",Ld,[e("div",Ad,[e("div",Fd,t(s(d)("admin.ops.alertEvents.detail.firedAt")),1),e("div",Od,t(s(Ge)(x.value.fired_at||x.value.created_at)),1)]),e("div",Id,[e("div",jd,t(s(d)("admin.ops.alertEvents.detail.resolvedAt")),1),e("div",Pd,t(x.value.resolved_at?s(Ge)(x.value.resolved_at):"-"),1)]),e("div",Ud,[e("div",Nd,t(s(d)("admin.ops.alertEvents.detail.ruleId")),1),e("div",zd,[e("div",Hd,"#"+t(x.value.rule_id),1),e("a",{class:"inline-flex items-center gap-1 rounded-md bg-white px-2 py-1 text-[11px] font-bold text-gray-700 ring-1 ring-gray-200 hover:bg-gray-50 dark:bg-dark-800 dark:text-gray-200 dark:ring-dark-700 dark:hover:bg-dark-700",href:`/admin/ops?open_alert_rules=1&alert_rule_id=${x.value.rule_id}`},[I(He,{name:"externalLink",size:"xs"}),z(" "+t(s(d)("admin.ops.alertEvents.detail.viewRule")),1)],8,Bd),e("a",{class:"inline-flex items-center gap-1 rounded-md bg-white px-2 py-1 text-[11px] font-bold text-gray-700 ring-1 ring-gray-200 hover:bg-gray-50 dark:bg-dark-800 dark:text-gray-200 dark:ring-dark-700 dark:hover:bg-dark-700",href:`/admin/ops?platform=${encodeURIComponent(B(x.value,"platform")||"")}&group_id=${((h=x.value.dimensions)==null?void 0:h.group_id)||""}&error_type=request&open_error_details=1`},[I(He,{name:"externalLink",size:"xs"}),z(" "+t(s(d)("admin.ops.alertEvents.detail.viewLogs")),1)],8,Qd)])]),e("div",Wd,[e("div",Gd,t(s(d)("admin.ops.alertEvents.detail.dimensions")),1),e("div",Kd,[B(x.value,"platform")?(l(),u("div",Zd,"platform="+t(B(x.value,"platform")),1)):C("",!0),(J=x.value.dimensions)!=null&&J.group_id?(l(),u("div",Jd,"group_id="+t(x.value.dimensions.group_id),1)):C("",!0),B(x.value,"region")?(l(),u("div",Yd,"region="+t(B(x.value,"region")),1)):C("",!0)])])]),e("div",Xd,[e("div",eu,[e("div",null,[e("div",tu,t(s(d)("admin.ops.alertEvents.detail.historyTitle")),1),e("div",su,t(s(d)("admin.ops.alertEvents.detail.historyHint")),1)]),I(ce,{"model-value":p.value,options:R.value,class:"w-[140px]",onChange:S[5]||(S[5]=ae=>p.value=String(ae||"7d"))},null,8,["model-value","options"])]),G.value?(l(),u("div",au,t(s(d)("admin.ops.alertEvents.detail.historyLoading")),1)):E.value.length===0?(l(),u("div",nu,t(s(d)("admin.ops.alertEvents.detail.historyEmpty")),1)):(l(),u("div",ou,[e("table",lu,[e("thead",ru,[e("tr",null,[e("th",iu,t(s(d)("admin.ops.alertEvents.table.time")),1),e("th",du,t(s(d)("admin.ops.alertEvents.table.status")),1),e("th",uu,t(s(d)("admin.ops.alertEvents.table.metric")),1
3)])]),e("tbody",cu,[(l(!0),u(ue,null,pe(E.value,ae=>(l(),u("tr",{key:ae.id,class:"hover:bg-gray-50 dark:hover:bg-dark-700/50"},[e("td",pu,t(s(Ge)(ae.fired_at||ae.created_at)),1),e("td",mu,[e("span",{class:H(["inline-flex items-center rounded-full px-2 py-1 text-[10px] font-bold ring-1 ring-inset",Te(ae.status)])},t(De(ae.status)),3)]),e("td",gu,[typeof ae.metric_value=="number"&&typeof ae.threshold_value=="number"?(l(),u("span",vu,t(ae.metric_value.toFixed(2))+" / "+t(ae.threshold_value.toFixed(2)),1)):(l(),u("span",_u,"-"))])]))),128))])])]))])])):(l(),u("div",kd,t(s(d)("admin.ops.alertEvents.detail.empty")),1))]}),_:1},8,["show","title"])]))}}),fu={class:"card p-4 md:p-5"},yu={class:"mb-4 flex flex-wrap items-center justify-between gap-3"},bu={class:"text-sm font-bold text-gray-900 dark:text-white"},hu={class:"flex flex-wrap items-center gap-2"},ku={class:"w-36"},wu={class:"w-36"},$u={key:0,class:"w-28"},Cu={class:"w-24"},Ru=["disabled"],Su=["disabled"],Tu={class:"text-xs text-gray-500 dark:text-gray-400"},Du={key:0,class:"mb-4 rounded-lg bg-red-50 px-3 py-2 text-xs text-red-600 dark:bg-red-900/20 dark:text-red-400"},Eu={key:1,class:"py-8 text-center text-sm text-gray-500 dark:text-gray-400"},qu={key:3,class:"space-y-3"},Mu={class:"overflow-hidden rounded-xl border border-gray-200 dark:border-dark-700"},Vu={class:"max-h-[420px] overflow-auto"},Lu={key:0,class:"divide-y divide-gray-100 dark:divide-dark-800"},Au={class:"break-all text-xs font-medium text-gray-900 dark:text-gray-100"},Fu={class:"grid grid-cols-2 gap-x-3 gap-y-1 text-xs"},Ou={class:"flex items-baseline justify-between gap-2"},Iu={class:"text-gray-500 dark:text-gray-400"},ju={class:"text-gray-700 dark:text-gray-200"},Pu={class:"flex items-baseline justify-between gap-2"},Uu={class:"text-gray-500 dark:text-gray-400"},Nu={class:"text-gray-700 dark:text-gray-200"},zu={class:"flex items-baseline justify-between gap-2"},Hu={class:"text-gray-500 dark:text-gray-400"},Bu={class:"text-gray-700 dark:text-gray-200"},Qu={class:"flex items-baseline justify-between gap-2"},Wu={class:"text-gray-500 dark:text-gray-400"},Gu={class:"text-gray-700 dark:text-gray-200"},Ku={class:"flex items-baseline justify-between gap-2"},Zu={class:"text-gray-500 dark:text-gray-400"},Ju={class:"text-gray-700 dark:text-gray-200"},Yu={class:"flex items-baseline justify-between gap-2"},Xu={class:"text-gray-500 dark:text-gray-400"},ec={class:"text-gray-700 dark:text-gray-200"},tc={key:1,class:"min-w-full text-left text-xs md:text-sm"},sc={class:"sticky top-0 z-10 bg-white dark:bg-dark-800"},ac={class:"border-b border-gray-200 text-gray-500 dark:border-dark-700 dark:text-gray-400"},nc={class:"px-2 py-2 font-semibold"},oc={class:"px-2 py-2 font-semibold"},lc={class:"px-2 py-2 font-semibold"},rc={class:"px-2 py-2 font-semibold"},ic={class:"px-2 py-2 font-semibold"},dc={class:"px-2 py-2 font-semibold"},uc={class:"px-2 py-2 font-semibold"},cc={class:"px-2 py-2 font-medium"},pc={class:"px-2 py-2"},mc={class:"px-2 py-2"},gc={class:"px-2 py-2"},vc={class:"px-2 py-2"},_c={class:"px-2 py-2"},xc={class:"px-2 py-2"},fc={key:0,class:"mt-3 text-xs text-gray-500 dark:text-gray-400"},yc=be({__name:"OpsOpenAITokenStatsCard",props:{platformFilter:{default:""},groupIdFilter:{default:null},refreshToken:{}},setup(ie){const d=ie,{t:a}=we(),T=Rt("(min-width: 768px)"),n=b(!1),P=b(""),D=b(null),q=b("30d"),$=b("topn"),x=b(20),v=b(1),y=b(20),G=_(()=>{var i;return((i=D.value)==null?void 0:i.items)??[]}),E=_(()=>{var i;return((i=D.value)==null?void 0:i.total)??0}),p=_(()=>{if($.value!=="pagination")return 1;const i=y.value>0?y.value:20;return Math.max(1,Math.ceil(E.value/i))}),R=_(()=>[{value:"30m",label:a("admin.ops.timeRange.30m")},{value:"1h",label:a("admin.ops.timeRange.1h")},{value:"1d",label:a("admin.ops.timeRange.1d")},{value:"15d",label:a("admin.ops.timeRange.15d")},{value:"30d",label:a("admin.ops.timeRange.30d")}]),A=_(()=>[{value:"topn",label:a("admin.ops.openaiTokenStats.viewModeTopN")},{value:"pagination",label:a("admin.ops.openaiTokenStats.viewModePagination")}]),ne=_(()=>[{value:10,label:"Top 10"},{value:20,label:"Top 20"},{value:50,label:"Top 50"},{value:100,label:"Top 100"}]),Y=_(()=>[{value:10,label:"10"},{value:20,label:"20"},{value:50,label:"50"},{value:100,label:"100"}]);function de(i){return typeof i!="number"||!Number.isFinite(i)?"-":i.toFixed(2)}function ee(i){return typeof i!="number"||!Number.isFinite(i)?"-":Le(Math.round(i))}function W(){const i={time_range:q.value,platform:d.platformFilter||void 0,group_id:typeof d.groupIdFilter=="number"&&d.groupIdFilter>0?d.groupIdFilter:void 0};return $.value==="topn"?i.top_n=x.value:(i.page=v.value,i.page_size=y.value),i}async function Q(){n.value=!0,P.value="";try{D.value=await te.getOpenAITokenStats(W()),$.value==="pagination"&&v.value>p.value&&(v.value=p.value,D.value=await te.getOpenAITokenStats(W()))}catch(i){console.error("[OpsOpenAITokenStatsCard] Failed to load data",i),D.value=null,P.value=(i==null?void 0:i.message)||a("admin.ops.openaiTokenStats.failedToLoad")}finally{n.value=!1}}ge(()=>({timeRange:q.value,viewMode:$.value,topN:x.value,page:v.value,pageSize:y.value,platform:d.platformFilter,groupId:d.groupIdFilter,refreshToken:d.refreshToken}),(i,F)=>{const M=!F||i.timeRange!==F.timeRange||i.viewMode!==F.viewMode||i.pageSize!==F.pageSize||i.platform!==F.platform||i.groupId!==F.groupId;if(i.viewMode==="pagination"&&M&&i.page!==1){v.value=1;return}Q()},{immediate:!0});function k(){$.value==="pagination"&&v.value>1&&(v.value-=1)}function c(){$.value==="pagination"&&v.value<p.value&&(v.value+=1)}return(i,F)=>(l(),u("section",fu,[e("div",yu,[e("h3",bu,t(s(a)("admin.ops.openaiTokenStats.title")),1),e("div",hu,[e
3("div",ku,[I(ce,{modelValue:q.value,"onUpdate:modelValue":F[0]||(F[0]=M=>q.value=M),options:R.value},null,8,["modelValue","options"])]),e("div",wu,[I(ce,{modelValue:$.value,"onUpdate:modelValue":F[1]||(F[1]=M=>$.value=M),options:A.value},null,8,["modelValue","options"])]),$.value==="topn"?(l(),u("div",$u,[I(ce,{modelValue:x.value,"onUpdate:modelValue":F[2]||(F[2]=M=>x.value=M),options:ne.value},null,8,["modelValue","options"])])):(l(),u(ue,{key:1},[e("div",Cu,[I(ce,{modelValue:y.value,"onUpdate:modelValue":F[3]||(F[3]=M=>y.value=M),options:Y.value},null,8,["modelValue","options"])]),e("button",{class:"btn btn-secondary btn-sm",disabled:n.value||v.value<=1,onClick:k},t(s(a)("admin.ops.openaiTokenStats.prevPage")),9,Ru),e("button",{class:"btn btn-secondary btn-sm",disabled:n.value||v.value>=p.value,onClick:c},t(s(a)("admin.ops.openaiTokenStats.nextPage")),9,Su),e("span",Tu,t(s(a)("admin.ops.openaiTokenStats.pageInfo",{page:v.value,total:p.value})),1)],64))])]),P.value?(l(),u("div",Du,t(P.value),1)):C("",!0),n.value?(l(),u("div",Eu,t(s(a)("admin.ops.loadingText")),1)):G.value.length===0?(l(),re(mt,{key:2,title:s(a)("common.noData"),description:s(a)("admin.ops.openaiTokenStats.empty")},null,8,["title","description"])):(l(),u("div",qu,[e("div",Mu,[e("div",Vu,[s(T)?(l(),u("table",tc,[e("thead",sc,[e("tr",ac,[e("th",nc,t(s(a)("admin.ops.openaiTokenStats.table.model")),1),e("th",oc,t(s(a)("admin.ops.openaiTokenStats.table.requestCount")),1),e("th",lc,t(s(a)("admin.ops.openaiTokenStats.table.avgTokensPerSec")),1),e("th",rc,t(s(a)("admin.ops.openaiTokenStats.table.avgFirstTokenMs")),1),e("th",ic,t(s(a)("admin.ops.openaiTokenStats.table.totalOutputTokens")),1),e("th",dc,t(s(a)("admin.ops.openaiTokenStats.table.avgDurationMs")),1),e("th",uc,t(s(a)("admin.ops.openaiTokenStats.table.requestsWithFirstToken")),1)])]),e("tbody",null,[(l(!0),u(ue,null,pe(G.value,M=>(l(),u("tr",{key:M.model,class:"border-b border-gray-100 text-gray-700 last:border-b-0 dark:border-dark-800 dark:text-gray-200"},[e("td",cc,t(M.model),1),e("td",pc,t(ee(M.request_count)),1),e("td",mc,t(de(M.avg_tokens_per_sec)),1),e("td",gc,t(de(M.avg_first_token_ms)),1),e("td",vc,t(ee(M.total_output_tokens)),1),e("td",_c,t(ee(M.avg_duration_ms)),1),e("td",xc,t(ee(M.requests_with_first_token)),1)]))),128))])])):(l(),u("div",Lu,[(l(!0),u(ue,null,pe(G.value,M=>(l(),u("div",{key:M.model,class:"space-y-2 p-3"},[e("div",Au,t(M.model),1),e("div",Fu,[e("div",Ou,[e("span",Iu,t(s(a)("admin.ops.openaiTokenStats.table.requestCount")),1),e("span",ju,t(ee(M.request_count)),1)]),e("div",Pu,[e("span",Uu,t(s(a)("admin.ops.openaiTokenStats.table.avgTokensPerSec")),1),e("span",Nu,t(de(M.avg_tokens_per_sec)),1)]),e("div",zu,[e("span",Hu,t(s(a)("admin.ops.openaiTokenStats.table.avgFirstTokenMs")),1),e("span",Bu,t(de(M.avg_first_token_ms)),1)]),e("div",Qu,[e("span",Wu,t(s(a)("admin.ops.openaiTokenStats.table.totalOutputTokens")),1),e("span",Gu,t(ee(M.total_output_tokens)),1)]),e("div",Ku,[e("span",Zu,t(s(a)("admin.ops.openaiTokenStats.table.avgDurationMs")),1),e("span",Ju,t(ee(M.avg_duration_ms)),1)]),e("div",Yu,[e("span",Xu,t(s(a)("admin.ops.openaiTokenStats.table.requestsWithFirstToken")),1),e("span",ec,t(ee(M.requests_with_first_token)),1)])])]))),128))]))])]),$.value==="topn"?(l(),u("div",fc,t(s(a)("admin.ops.openaiTokenStats.totalModels",{total:E.value})),1)):C("",!0)]))]))}}),bc={class:"rounded-2xl border border-gray-200 bg-white p-4 shadow-sm dark:border-dark-700 dark:bg-dark-900/60"},hc={class:"mb-4 flex flex-wrap items-center justify-between gap-3"},kc={class:"text-sm font-bold text-gray-900 dark:text-white"},wc={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},$c={class:"flex flex-wrap items-center gap-2 text-xs"},Cc={class:"rounded-md bg-gray-100 px-2 py-1 text-gray-700 dark:bg-dark-700 dark:text-gray-200"},Rc={class:"rounded-md bg-gray-100 px-2 py-1 text-gray-700 dark:bg-dark-700 dark:text-gray-200"},Sc={class:"rounded-md bg-amber-100 px-2 py-1 text-amber-700 dark:bg-amber-900/30 dark:text-amber-300"},Tc={class:"rounded-md bg-red-100 px-2 py-1 text-red-700 dark:bg-red-900/30 dark:text-red-300"},Dc={class:"mb-4 rounded-xl border border-gray-200 bg-gray-50 p-3 dark:border-dark-700 dark:bg-dark-800/70"},Ec={class:"mb-2 flex items-center justify-between"},qc={class:"text-xs font-semibold text-gray-700 dark:text-gray-200"},Mc={key:0,class:"text-xs text-gray-500"},Vc={class:"grid grid-cols-1 gap-3 md:grid-cols-2 xl:grid-cols-6"},Lc={class:"text-xs text-gray-600 dark:text-gray-300"},Ac={class:"text-xs text-gray-600 dark:text-gray-300"},Fc={class:"text-xs text-gray-600 dark:text-gray-300"},Oc={class:"text-xs text-gray-600 dark:text-gray-300"},Ic={class:"text-xs text-gray-600 dark:text-gray-300"},jc={class:"md:col-span-2 xl:col-span-6"},Pc={class:"grid gap-3 lg:grid-cols-[minmax(0,1fr)_auto] lg:items-end"},Uc={class:"flex flex-wrap items-center gap-x-4 gap-y-2"},Nc={class:"inline-flex items-center gap-2 text-xs text-gray-600 dark:text-gray-300"},zc={class:"inline-flex items-center gap-2 text-xs text-gray-600 dark:text-gray-300"},Hc={class:"flex flex-wrap items-center gap-2 lg:justify-end"},Bc=["disabled"],Qc=["disabled"],Wc={key:0,class:"mt-2 text-xs text-red-600 dark:text-red-400"},Gc={class:"mb-4 grid grid-cols-1 gap-3 md:grid-cols-5"},Kc={class:"text-xs text-gray-600 dark:text-gray-300"},Zc={class:"text-xs text-gray-600 dark:text-gray-300"},Jc={class:"text-xs text-gray-600 dark:text-gray-300"},Yc={class:"text-xs text-gray-600 dark:text-gray-300"},Xc={class:"text-xs text-gray-600 dark:text-gray-300"},e0=["placeholder"],t0={class:"text-xs text-gray-600 dark:text-gray-300"},s0={class:"text-xs text-gray-600 dark:text-gray-300"},a0={class:"text-xs text-gray-600 dark:text-gray-300"},n0={class:"text-xs text-gray-600 dark:text-gray-300"},o0={class:"text-xs text-gray-600 dark:text-gray-300"},l0={class:"text-xs text-gray-600 dark:text-gray-300"},r0={class:"text-xs text-gray-600 dark:text-gray-300"},i0={class:"text-xs text-gray-600 dark:text-gray-300"},d0={class:"text-xs text-gray-600 dark:text-gray-300"},u0=["placeholder"],c0={class:"mb-3 flex flex-wrap gap-2"},p0={class:"overflow-hidden rounded-xl border border-gray-200 dark:border-dark-700"},m0={key:0,class:"px-4 py-8 text-center text-sm text-gray-500"},g0={key:1,class:"px-4 py-8 text-center text-sm text-gray-500"},v0={key:2,class:"divide-y divide-gray-100 dark:divide-dark-800"},_0={class:"flex items-center justify-between gap-2"},x0={class:"text-xs text-gray-500 dark:text-gray-400"},f0=["title"],y0={class:"whitespace-normal break-all text-xs text-gray-700 dark:text-gray-300"},b0={key:3,class:"overflow-auto"},h0={class:"min-w-full table-fixed divide-y divide-gray-200 dark:divide-dark-700"},k0={class:"bg-gray-50 dark:bg-dark-900"},w0={class:"w-[170px] px-3 py-2 text-left text-[11px] font-semibold text-gray-500"},$0={class:"w-[160px] px-3 py-2 text-left text-[11px] font-semibold text-gray-500"},C0={class:"w-[80px] px-3 py-2 text-left text-[11px] font-semibold text-gray-500"},R0={class:"px-3 py-2 text-left text-[11px] font-semibold text-gray-500"},S0={class:"divide-y divide-gray-100 dark:divide-dark-800"},T0={class:"px-3 py-2 text-xs text-gray-700 dark:text-gray-300"},D0={class:"px-3 py-2 text-xs text-gray-700 dark:text-gray-300"},E0=["title"],q0={class:"px-3 py-2 text-xs"},M0={class:"px-3 py-2 text-xs text-gray-700 dark:text-gray-300 whitespace-normal break-all"},V0=be({__name:"OpsSystemLogTable",props:{platformFilter:{default:""},refreshToken:{default:0}},setup(ie){const d=pt(),{t:a}=we(),T=Rt("(min-width: 768px)"),n=ie,P=b(!1),D=b([]),q=b(0),$=b(1),x=b(20),v=b({queue_depth:0,queue_capacity:0,dropped_count:0,write_failed_count:0,written_count:0,avg_write_delay_ms:0}),y=b(!1),G=b(!1),E=Gt({level:"info",enable_sampling:!1,sampling_initial:100,sampling_thereafter:100,caller:!0,stacktrace_level:"error",retention_days:30}),p=Gt({time_range:"1h",start_time:"",end_time:"",host:"",level:"",component:"",request_id:"",client_request_id:"",user_id:"",api_key_id:"",account_id:"",platform:"",model:"",q:""}),R=[{value:"debug",label:"debug"},{value:"info",label:"info"},{value:"warn",label:"warn"},{value:"error",label:"error"}],A=[{value:"none",label:"none"},{value:"error",label:"error"},{value:"fatal",label:"fatal"}],ne=[{value:"5m",label:"5m"},{value:"30m",label:"30m"},{value:"1h",label:"1h"},{value:"6h",label:"6h"},{value:"24h",label:"24h"},{value:"7d",label:"7d"},{value:"30d",label:"30d"}],Y=_(()=>[{value:"",label:a("admin.ops.systemLogs.all")},{value:"debug",label:"debug"},{value:"info",label:"info"},{value:"warn",label:"warn"},{value:"error",label:"error"}]),de=g=>{const m=String(g||"").toLowerCase();return m==="error"||m==="fatal"?"bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-300":m==="warn"||m==="warning"?"bg-amber-100 text-amber-700 dark:bg-amber-900/30 dark:text-amber-300":m==="debug"?"bg-slate-100 text-slate-700 dark:bg-slate-800 dark:text-slate-300":"bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-300"},ee=g=>{if(!g)return"-";const m=new Date(g);
3return Number.isNaN(m.getTime())?g:m.toLocaleString()},W=(g,m)=>{if(!g)return"";const w=g[m];return w==null?"":typeof w=="string"?w.trim():typeof w=="number"||typeof w=="boolean"?String(w):""},Q=g=>{const m=[],w=String(g.message||"").trim();w&&m.push(w);const oe=g.extra||{},$e=W(oe,"status_code"),Te=W(oe,"latency_ms"),De=W(oe,"method"),Ie=W(oe,"path"),N=W(oe,"client_ip"),S=W(oe,"protocol"),h=[];$e&&h.push(`status=${$e}`),Te&&h.push(`latency_ms=${Te}`),De&&h.push(`method=${De}`),Ie&&h.push(`path=${Ie}`),N&&h.push(`ip=${N}`),S&&h.push(`proto=${S}`),h.length>0&&m.push(h.join(" "));const J=[];g.request_id&&J.push(`req=${g.request_id}`),g.client_request_id&&J.push(`client_req=${g.client_request_id}`),g.user_id!=null&&J.push(`user=${g.user_id}`),g.api_key_id!=null&&J.push(`key=${g.api_key_id}`),g.account_id!=null&&J.push(`acc=${g.account_id}`),g.platform&&J.push(`platform=${g.platform}`),g.model&&J.push(`model=${g.model}`),J.length>0&&m.push(J.join(" "));const ae=W(oe,"errors");ae&&m.push(`errors=${ae}`);const fe=W(oe,"err")||W(oe,"error");return fe&&m.push(`error=${fe}`),m.join(" ")},k=g=>{if(!g)return;const m=new Date(g);if(!Number.isNaN(m.getTime()))return m.toISOString()},c=()=>{const g={page:$.value,page_size:x.value,time_range:p.time_range};if(p.time_range==="30d"&&(g.time_range="30d"),p.start_time&&(g.start_time=k(p.start_time)),p.end_time&&(g.end_time=k(p.end_time)),p.host.trim()&&(g.host=p.host.trim()),p.level.trim()&&(g.level=p.level.trim()),p.component.trim()&&(g.component=p.component.trim()),p.request_id.trim()&&(g.request_id=p.request_id.trim()),p.client_request_id.trim()&&(g.client_request_id=p.client_request_id.trim()),p.user_id.trim()){const m=Number.parseInt(p.user_id.trim(),10);Number.isFinite(m)&&m>0&&(g.user_id=m)}if(p.api_key_id.trim()){const m=Number.parseInt(p.api_key_id.trim(),10);Number.isFinite(m)&&m>0&&(g.api_key_id=m)}if(p.account_id.trim()){const m=Number.parseInt(p.account_id.trim(),10);Number.isFinite(m)&&m>0&&(g.account_id=m)}return p.platform.trim()&&(g.platform=p.platform.trim()),p.model.trim()&&(g.model=p.model.trim()),p.q.trim()&&(g.q=p.q.trim()),g},i=async()=>{var g,m;P.value=!0;try{const w=await te.listSystemLogs(c());D.value=w.items||[],q.value=w.total||0}catch(w){console.error("[OpsSystemLogTable] Failed to fetch logs",w),d.showError(((m=(g=w==null?void 0:w.response)==null?void 0:g.data)==null?void 0:m.detail)||a("admin.ops.systemLogs.loadFailed"))}finally{P.value=!1}},F=async()=>{try{v.value=await te.getSystemLogSinkHealth()}catch{}},M=async()=>{y.value=!0;try{const g=await te.getRuntimeLogConfig();E.level=g.level,E.enable_sampling=g.enable_sampling,E.sampling_initial=g.sampling_initial,E.sampling_thereafter=g.sampling_thereafter,E.caller=g.caller,E.stacktrace_level=g.stacktrace_level,E.retention_days=g.retention_days}catch(g){console.error("[OpsSystemLogTable] Failed to load runtime log config",g)}finally{y.value=!1}},O=async()=>{var g,m;G.value=!0;try{const w=await te.updateRuntimeLogConfig({...E});E.level=w.level,E.enable_sampling=w.enable_sampling,E.sampling_initial=w.sampling_initial,E.sampling_thereafter=w.sampling_thereafter,E.caller=w.caller,E.stacktrace_level=w.stacktrace_level,E.retention_days=w.retention_days,d.showSuccess(a("admin.ops.systemLogs.runtimeConfigActive"))}catch(w){console.error("[OpsSystemLogTable] Failed to save runtime log config",w),d.showError(((m=(g=w==null?void 0:w.response)==null?void 0:g.data)==null?void 0:m.detail)||a("admin.ops.systemLogs.runtimeConfigSaveFailed"))}finally{G.value=!1}},L=async()=>{var m,w;if(window.confirm(a("admin.ops.systemLogs.resetRuntimeConfigConfirm"))){G.value=!0;try{const oe=await te.resetRuntimeLogConfig();E.level=oe.level,E.enable_sampling=oe.enable_sampling,E.sampling_initial=oe.sampling_initial,E.sampling_thereafter=oe.sampling_thereafter,E.caller=oe.caller,E.stacktrace_level=oe.stacktrace_level,E.retention_days=oe.retention_days,d.showSuccess(a("admin.ops.systemLogs.runtimeConfigReset")),await F()}catch(oe){console.error("[OpsSystemLogTable] Failed to reset runtime log config",oe),d.showError(((w=(m=oe==null?void 0:oe.response)==null?void 0:m.data)==null?void 0:w.detail)||a("admin.ops.systemLogs.runtimeConfigResetFailed"))}finally{G.value=!1}}},B=async()=>
3{if(window.confirm(a("admin.ops.systemLogs.cleanupConfirm")))try{const m={start_time:k(p.start_time),end_time:k(p.end_time),host:p.host.trim()||void 0,level:p.level.trim()||void 0,component:p.component.trim()||void 0,request_id:p.request_id.trim()||void 0,client_request_id:p.client_request_id.trim()||void 0,user_id:p.user_id.trim()?Number.parseInt(p.user_id.trim(),10):void 0,api_key_id:p.api_key_id.trim()?Number.parseInt(p.api_key_id.trim(),10):void 0,account_id:p.account_id.trim()?Number.parseInt(p.account_id.trim(),10):void 0,platform:p.platform.trim()||void 0,model:p.model.trim()||void 0,q:p.q.trim()||void 0},w=await te.cleanupSystemLogs(m);d.showSuccess(a("admin.ops.systemLogs.cleanupSuccess",{count:w.deleted||0})),$.value=1,await Promise.all([i(),F()])}catch(m){console.error("[OpsSystemLogTable] Failed to cleanup logs",m),d.showError(ws(m,a("admin.ops.systemLogs.cleanupFailed"),{OPS_SYSTEM_LOG_CLEANUP_FILTER_REQUIRED:a("admin.ops.systemLogs.cleanupFilterRequired")}))}},Z=()=>{p.time_range="1h",p.start_time="",p.end_time="",p.host="",p.level="",p.component="",p.request_id="",p.client_request_id="",p.user_id="",p.api_key_id="",p.account_id="",p.platform=n.platformFilter||"",p.model="",p.q="",$.value=1,i()};ge(()=>n.platformFilter,g=>{g&&!p.platform&&(p.platform=g,$.value=1,i())}),ge(()=>n.refreshToken,()=>{i(),F()});const ve=g=>{$.value=g,i()},xe=g=>{x.value=g,$.value=1,i()},me=()=>{$.value=1,i()},j=_(()=>D.value.length>0);return kt(async()=>{n.platformFilter&&(p.platform=n.platformFilter),await Promise.all([i(),F(),M()])}),(g,m)=>(l(),u("section",bc,[e("div",hc,[e("div",null,[e("h3",kc,t(s(a)("admin.ops.systemLogs.title")),1),e("p",wc,t(s(a)("admin.ops.systemLogs.description")),1)]),e("div",$c,[e("span",Cc,t(s(a)("admin.ops.systemLogs.queue"))+" "+t(v.value.queue_depth)+"/"+t(v.value.queue_capacity),1),e("span",Rc,t(s(a)("admin.ops.systemLogs.written"))+" "+t(v.value.written_count),1),e("span",Sc,t(s(a)("admin.ops.systemLogs.dropped"))+" "+t(v.value.dropped_count),1),e("span",Tc,t(s(a)("admin.ops.systemLogs.failed"))+" "+t(v.value.write_failed_count),1)])]),e("div",Dc,[e("div",Ec,[e("div",qc,t(s(a)("admin.ops.systemLogs.runtimeConfig")),1),y.value?(l(),u("span",Mc,t(s(a)("common.loading")),1)):C("",!0)]),e("div",Vc,[e("label",Lc,[z(t(s(a)("admin.ops.systemLogs.level"))+" ",1),I(ce,{modelValue:E.level,"onUpdate:modelValue":m[0]||(m[0]=w=>E.level=w),class:"mt-1",options:R},null,8,["modelValue"])]),e("label",Ac,[z(t(s(a)("admin.ops.systemLogs.stacktraceThreshold"))+" ",1),I(ce,{modelValue:E.stacktrace_level,"onUpdate:modelValue":m[1]||(m[1]=w=>E.stacktrace_level=w),class:"mt-1",options:A},null,8,["modelValue"])]),e("label",Fc,[z(t(s(a)("admin.ops.systemLogs.samplingInitial"))+" ",1),se(e("input",{"onUpdate:modelValue":m[2]||(m[2]=w=>E.sampling_initial=w),type:"number",min:"1",class:"input mt-1"},null,512),[[le,E.sampling_initial,void 0,{number:!0}]])]),e("label",Oc,[z(t(s(a)("admin.ops.systemLogs.samplingThereafter"))+" ",1),se(e("input",{"onUpdate:modelValue":m[3]||(m[3]=w=>E.sampling_thereafter=w),type:"number",min:"1",class:"input mt-1"},null,512),[[le,E.sampling_thereafter,void 0,{number:!0}]])]),e("label",Ic,[z(t(s(a)("admin.ops.systemLogs.retentionDays"))+" ",1),se(e("input",{"onUpdate:modelValue":m[4]||(m[4]=w=>E.retention_days=w),type:"number",min:"1",max:"3650",class:"input mt-1"},null,512),[[le,E.retention_days,void 0,{number:!0}]])]),e("div",jc,[e("div",Pc,[e("div",Uc,[e("label",Nc,[se(e("input",{"onUpdate:modelValue":m[5]||(m[5]=w=>E.caller=w),type:"checkbox"},null,512),[[Mt,E.caller]]),z(" "+t(s(a)("admin.ops.systemLogs.caller")),1)]),e("label",zc,[se(e("input",{"onUpdate:modelValue":m[6]||(m[6]=w=>E.enable_sampling=w),type:"checkbox"},null,512),[[Mt,E.enable_sampling]]),z(" "+t(s(a)("admin.ops.systemLogs.sampling")),1)])]),e("div",Hc,[e("button",{type:"button",class:"btn btn-primary btn-sm",disabled:G.value,onClick:O},t(G.value?s(a)("common.saving"):s(a)("admin.ops.systemLogs.saveAndApply")),9,Bc),e("button",{type:"button",class:"btn btn-secondary btn-sm",disabled:G.value,onClick:L},t(s(a)("admin.ops.systemLogs.resetDefaults")),9,Qc)])])])]),v.value.last_error?(l(),u("p",Wc,t(s(a)("admin.ops.systemLogs.latestWriteError"))+" "+t(v.value.last_error),1)):C("",!0)]),e("div",Gc,[e("label",Kc,[z(t(s(a)("admin.ops.systemLogs.timeRange"))+" ",1),I(ce,{modelValue:p.time_range,"onUpdate:modelValue":m[7]||(m[7]=w=>p.time_range=w),class:"mt-1",options:ne},null,8,["modelValue"])]),e("label",Zc,[z(t(s(a)("admin.ops.systemLogs.startTime"))+" ",1),se(e("input",{"onUpdate:modelValue":m[8]||(m[8]=w=>p.start_time=w),type:"datetime-local",class:"input mt-1"},null,512),[[le,p.start_time]])]),e("label",Jc,[z(t(s(a)("admin.ops.systemLogs.endTime"))+" ",1),se(e("input",{"onUpdate:modelValue":m[9]||(m[9]=w=>p.end_time=w),type:"datetime-local",class:"input mt-1"},null,512),[[le,p.end_time]])]),e("label",Yc,[z(t(s(a)("admin.ops.systemLogs.level"))+" ",1),I(ce,{modelValue:p.level,"onUpdate:modelValue":m[10]||(m[10]=w=>p.level=w),class:"mt-1",options:Y.value},null,8,["modelValue","options"])]),e("label",Xc,[z(t(s(a)("admin.ops.systemLogs.component"))+" ",1),se(e("input",{"onUpdate:modelValue":m[11]||(m[11]=w=>p.component=w),type:"text",class:"input mt-1",placeholder:s(a)("admin.ops.systemLogs.componentPlaceholder")},null,8,e0),[[le,p.component]])]),e("label",t0,[z(t(s(a)("admin.ops.systemLogs.host"))+" ",1),se(e("input",{"onUpdate:modelValue":m[12]||(m[12]=w=>p.host=w),type:"text",class:"input mt-1"},null,512),[[le,p.host]])]),e("label",s0,[m[21]||(m[21]=z(" request_id ",-1)),se(e("input",{"onUpdate:modelValue":m[13]||(m[13]=w=>p.request_id=w),type:"text",class:"input mt-1"},null,512),[[le,p.request_id]])]),e("label",a0,[m[22]||(m[22]=z(" client_request_id ",-1)),se(e("input",{"onUpdate:modelValue":m[14]||(m[14]=w=>p.client_request_id=w),type:"text",class:"input mt-1"},null,512),[[le,p.client_request_id]])]),e("label",n0,[m[23]||(m[23]=z(" user_id ",-1)),se(e("input",{"onUpdate:modelValue":m[15]||(m[15]=w=>p.user_id=w),type:"text",class:"input mt-1"},null,512),[[le,p.user_id]])]),e("label",o0,[z(t(s(a)("admin.ops.systemLogs.keyId"))+" ",1),se(e("input",{"onUpdate:modelValue":m[16]||(m[16]=w=>p.api_key_id=w),type:"text",class:"input mt-1"},null,512),[[le,p.api_key_id]])]),e("label",l0,[m[24]||(m[24]=z(" account_id ",-1)),se(e("input",{"onUpdate:modelValue":m[17]||(m[17]=w=>p.account_id=w),type:"text",class:"input mt-1"},null,512),[[le,p.account_id]])]),e("label",r0,[z(t(s(a)("admin.ops.systemLogs.platform"))+" ",1),se(e("input",{"onUpdate:modelValue":m[18]||(m[18]=w=>p.platform=w),type:"text",class:"input mt-1"},null,512),[[le,p.platform]])]),e("label",i0,[z(t(s(a)("admin.ops.systemLogs.model"))+" ",1),se(e("input",{"onUpdate:modelValue":m[19]||(m[19]=w=>p.model=w),type:"text",class:"input mt-1"},null,512),[[le,p.model]])]),e("label",d0,[z(t(s(a)("admin.ops.systemLogs.keyword"))+" ",1),se(e("input",{"onUpdate:modelValue":m[20]||(m[20]=w=>p.q=w),type:"text",class:"input mt-1",placeholder:s(a)("admin.ops.systemLogs.keywordPlaceholder")},null,8,u0),[[le,p.q]])])]),e("div",c0,[e("button",{type:"button",class:"btn btn-primary btn-sm",onClick:me},t(s(a)("admin.ops.systemLogs.search")),1),e("button",{type:"button",class:"btn btn-secondary btn-sm",onClick:Z},t(s(a)("common.reset")),1),e("button",{type:"button",class:"btn btn-danger btn-sm",onClick:B},t(s(a)("admin.ops.systemLogs.cleanCurrentFilters")),1),e("button",{type:"button",class:"btn btn-secondary btn-sm",onClick:F},t(s(a)("admin.ops.systemLogs.refreshHealth")),1)]),e("div",p0,[P.value?(l(),u("div",m0,t(s(a)("common.loading")),1)):j.value?s(T)?(l(),u("div",b0,[e("table",h0,[e("thead",k0,[e("tr",null,[e("th",w0,t(s(a)("admin.ops.systemLogs.time")),1),e("th",$0,t(s(a)("admin.ops.systemLogs.host")),1),e("th",C0,t(s(a)("admin.ops.systemLogs.level")),1),e("th",R0,t(s(a)("admin.ops.systemLogs.logDetails")),1)])]),e("tbody",S0,[(l(!0),u(ue,null,pe(D.value,w=>(l(),u("tr",{key:w.id,class:"align-top"},[e("td",T0,t(ee(w.created_at)),1),e("td",D0,[e("span",{class:"block truncate",title:w.host||"-"},t(w.host||"-"),9,E0)]),e("td",q0,[e("span",{class:H(["inline-flex rounded-full px-2 py-0.5 font-semibold",de(w.level)])},t(w.level),3)]),e("td",M0,t(Q(w)),1)]))),128))])])])):(l(),u("div",v0,[(l(!0),u(ue,null,pe(D.value,w=>(l(),u("div",{key:w.id,class:"space-y-1.5 p-3"},[e("div",_0,[e("span",{class:H(["inline-flex rounded-full px-2 py-0.5 text-xs font-semibold",de(w.level)])},t(w.level),3),e("span",x0,t(ee(w.created_at)),1)]),w.host?(l(),u("div",{key:0,class:"truncate text-xs text-gray-500 dark:text-gray-400",title:w.host},t(w.host),9,f0)):C("",!0),e("div",y0,t(Q(w)),1)]))),128))])):(l(),u("div",g0,t(s(a)("admin.ops.systemLogs.empty")),1)),I(as,{total:q.value,page:$.value,"page-size":x.value,"onUpdate:page":ve,"onUpdate:pageSize":xe},null,8,["total","page","page-size"])])]))}}),L0={class:"flex h-full min-h-0 flex-col"},A0={class:"mb-4 flex flex-shrink-0 items-center justify-between"},F0={class:"text-xs text-gray-500 dark:text-gray-400"},O0={key:0,class:"flex flex-1 items-center justify-center py-16"},I0={class:"flex flex-col items-center gap-3"},j0={class:"text-sm font-medium text-gray-500 dark:text-gray-400"},P0={key:1,class:"flex min-h-0 flex-1 flex-col"},U0={key:0,class:"rounded-xl border border-dashed border-gray-200 p-10 text-center dark:border-dark-700"},N0={class:"text-sm font-medium text-gray-600 dark:text-gray-300"},z0={class:"mt-1 text-xs text-gray-400"},H0={key:1,class:"flex min-h-0 flex-1 flex-col overflow-hidden rounded-xl border border-gray-200 dark:border-dark-700"},B0={class:"min-h-0 flex-1 overflow-auto"},Q0={key:0,class:"divide-y divide-gray-100 dark:divide-dark-800"},W0={class:"flex flex-wrap items-center gap-2"},G0={class:"text-xs font-medium text-gray-700 dark:text-gray-200"},K0={class:"ml-auto text-[11px] text-gray-500 dark:text-gray-400"},Z0={class:"break-all text-xs text-gray-600 dark:text-gray-300"},J0={class:"flex flex-wrap items-center gap-x-3 gap-y-1 text-xs text-gray-600 dark:text-gray-300"},Y0={key:0,class:"flex items-center gap-2"},X0=["title"],ep=["onClick"],tp=["onClick"],sp={key:1,class:"min-w-full divide-y divide-gray-200 dark:divide-dark-700"},ap={class:"sticky top-0 z-10 bg-gray-50 dark:bg-dark-900"},np={class:"px-4 py-3 text-left text-[11px] font-bold uppercase tracking-wider text-gray-500 dark:text-gray-400"},op={class:"px-4 py-3 text-left text-[11px] font-bold uppercase tracking-wider text-gray-500 dark:text-gray-400"},lp={class:"px-4 py-3 text-left text-[11px] font-bold uppercase tracking-wider text-gray-500 dark:text-gray-400"},rp={class:"px-4 py-3 text-left text-[11px] font-bold uppercase tracking-wider text-gray-500 dark:text-gray-400"},ip={class:"px-4 py-3 text-left text-[11px] font-bold uppercase tracking-wider text-gray-500 dark:text-gray-400"},dp={class:"px-4 py-3 text-left text-[11px] font-bold uppercase tracking-wider text-gray-500 dark:text-gray-400"},up={class:"px-4 py-3 text-left text-[11px] font-bold uppercase tracking-wider text-gray-500 dark:text-gray-400"},cp={class:"px-4 py-3 text-right text-[11px] font-bold uppercase tracking-wider text-gray-500 dark:text-gray-400"},pp={class:"divide-y divide-gray-200 bg-white dark:divide-dark-700 dark:bg-dark-800"},mp={class:"whitespace-nowrap px-4 py-3 text-xs text-gray-600 dark:text-gray-300"},gp={class:"whitespace-nowrap px-4 py-3"},vp={class:"whitespace-nowrap px-4 py-3 text-xs font-medium text-gray-700 dark:text-gray-200"},_p=["title"],xp={class:"whitespace-nowrap px-4 py-3 text-xs text-gray-600 dark:text-gray-300"},fp={class:"whitespace-nowrap px-4 py-3 text-xs text-gray-600 dark:text-gray-300"},yp={class:"px-4 py-3"},bp={key:0,class:"flex items-center gap-2"},hp=["title"],kp=["onClick"],wp={key:1,class:"text-xs text-gray-400"},$p={class:"whitespace-nowrap px-4 py-3 text-right"},Cp=["onClick"],Rp={key:1,class:"text-xs text-gray-400"},Sp=be({__name:"OpsRequestDetailsModal",props:{modelValue:{type:Boolean},timeRange:{}
3,preset:{},platform:{},groupId:{}},emits:["update:modelValue","openErrorDetail"],setup(ie,{emit:d}){const a=ie,T=d,{t:n}=we(),P=pt(),{copyToClipboard:D}=$s(),q=Rt("(min-width: 768px)"),$=b(!1),x=b([]),v=b(0),y=b(1),G=b(10),E=()=>T("update:modelValue",!1),p=_(()=>{const Q=Jt(a.timeRange);return Q>=60?n("admin.ops.requestDetails.rangeHours",{n:Math.round(Q/60)}):n("admin.ops.requestDetails.rangeMinutes",{n:Q})});function R(){const Q=Jt(a.timeRange),k=new Date;return{start_time:new Date(k.getTime()-Q*60*1e3).toISOString(),end_time:k.toISOString()}}const A=async()=>{if(a.modelValue){$.value=!0;try{const Q={...R(),page:y.value,page_size:G.value,kind:a.preset.kind??"all",sort:a.preset.sort??"created_at_desc"},k=(a.platform||"").trim();k&&(Q.platform=k),typeof a.groupId=="number"&&a.groupId>0&&(Q.group_id=a.groupId),typeof a.preset.min_duration_ms=="number"&&(Q.min_duration_ms=a.preset.min_duration_ms),typeof a.preset.max_duration_ms=="number"&&(Q.max_duration_ms=a.preset.max_duration_ms);const c=await te.listRequestDetails(Q);x.value=c.items||[],v.value=c.total||0}catch(Q){console.error("[OpsRequestDetailsModal] Failed to fetch request details",Q),P.showError((Q==null?void 0:Q.message)||n("admin.ops.requestDetails.failedToLoad")),x.value=[],v.value=0}finally{$.value=!1}}};ge(()=>a.modelValue,Q=>{Q&&(y.value=1,G.value=10,A())}),ge(()=>[a.timeRange,a.platform,a.groupId,a.preset.kind,a.preset.sort,a.preset.min_duration_ms,a.preset.max_duration_ms],()=>{a.modelValue&&(y.value=1,A())});function ne(Q){y.value=Q,A()}function Y(Q){G.value=Q,y.value=1,A()}async function de(Q){await D(Q,n("admin.ops.requestDetails.requestIdCopied"))||P.showWarning(n("admin.ops.requestDetails.copyFailed"))}function ee(Q){Q&&(E(),T("openErrorDetail",Q))}const W=Q=>Q==="error"?"bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-300":"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-300";return(Q,k)=>(l(),re(Je,{show:ie.modelValue,title:a.preset.title||s(n)("admin.ops.requestDetails.title"),width:"full",onClose:E},{default:Oe(()=>[e("div",L0,[e("div",A0,[e("div",F0,t(s(n)("admin.ops.requestDetails.rangeLabel",{range:p.value})),1),e("button",{type:"button",class:"btn btn-secondary btn-sm",onClick:A},t(s(n)("common.refresh")),1)]),$.value?(l(),u("div",O0,[e("div",I0,[k[0]||(k[0]=e("svg",{class:"h-8 w-8 animate-spin text-blue-500",fill:"none",viewBox:"0 0 24 24"},[e("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"}),e("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})],-1)),e("span",j0,t(s(n)("common.loading")),1)])])):(l(),u("div",P0,[x.value.length===0?(l(),u("div",U0,[e("div",N0,t(s(n)("admin.ops.requestDetails.empty")),1),e("div",z0,t(s(n)("admin.ops.requestDetails.emptyHint")),1)])):(l(),u("div",H0,[e("div",B0,[s(q)?(l(),u("table",sp,[e("thead",ap,[e("tr",null,[e("th",np,t(s(n)("admin.ops.requestDetails.table.time")),1),e("th",op,t(s(n)("admin.ops.requestDetails.table.kind")),1),e("th",lp,t(s(n)("admin.ops.requestDetails.table.platform")),1),e("th",rp,t(s(n)("admin.ops.requestDetails.table.model")),1),e("th",ip,t(s(n)("admin.ops.requestDetails.table.duration")),1),e("th",dp,t(s(n)("admin.ops.requestDetails.table.status")),1),e("th",up,t(s(n)("admin.ops.requestDetails.table.requestId")),1),e("th",cp,t(s(n)("admin.ops.requestDetails.table.actions")),1)])]),e("tbody",pp,[(l(!0),u(ue,null,pe(x.value,(c,i)=>(l(),u("tr",{key:i,class:"hover:bg-gray-50 dark:hover:bg-dark-700/50"},[e("td",mp,t(s(Ge)(c.created_at)),1),e("td",gp,[e("span",{class:H(["rounded-full px-2 py-1 text-[10px] font-bold",W(c.kind)])},t(c.kind==="error"?s(n)("admin.ops.requestDetails.kind.error"):s(n)("admin.ops.requestDetails.kind.success")),3)]),e("td",vp,t((c.platform||"unknown").toUpperCase()),1),e("td",{class:"max-w-[240px] truncate px-4 py-3 text-xs text-gray-600 dark:text-gray-300",title:c.model||""},t(c.model||"-"),9,_p),e("td",xp,t(typeof c.duration_ms=="number"?`${c.duration_ms} ms`:"-"),1),e("td",fp,t(c.status_code??"-"),1),e("td",yp,[c.request_id?(l(),u("div",bp,[e("span",{class:"max-w-[220px] truncate font-mono text-[11px] text-gray-700 dark:text-gray-200",title:c.request_id},t(c.request_id),9,hp),e("button",{class:"rounded-md bg-gray-100 px-2 py-1 text-[10px] font-bold text-gray-600 hover:bg-gray-200 dark:bg-dark-700 dark:text-gray-300 dark:hover:bg-dark-600",onClick:F=>de(c.request_id)},t(s(n)("admin.ops.requestDetails.copy")),9,kp)])):(l(),u("span",wp,"-"))]),e("td",$p,[c.kind==="error"&&c.error_id?(l(),u("button",{key:0,class:"rounded-lg bg-red-50 px-3 py-1.5 text-xs font-bold text-red-600 hover:bg-red-100 dark:bg-red-900/20 dark:text-red-300 dark:hover:bg-red-900/30",onClick:F=>ee(c.error_id)},t(s(n)("admin.ops.requestDetails.viewError")),9,Cp)):(l(),u("span",Rp,"-"))])]))),128))])])):(l(),u("div",Q0,[(l(!0),u(ue,null,pe(x.value,(c,i)=>(l(),u("div",{key:i,class:"space-y-2 p-4"},[e("div",W0,[e("span",{class:H(["rounded-full px-2 py-1 text-[10px] font-bold",W(c.kind)])},t(c.kind==="error"?s(n)("admin.ops.requestDetails.kind.error"):s(n)("admin.ops.requestDetails.kind.success")),3),e("span",G0,t((c.platform||"unknown").toUpperCase()),1),e("span",K0,t(s(Ge)(c.created_at)),1)]),e("div",Z0,t(c.model||"-"),1),e("div",J0,[e("span",null,t(typeof c.duration_ms=="number"?`${c.duration_ms} ms`:"-"),1),e("span",null,t(c.status_code??"-"),1)]),c.request_id?(l(),u("div",Y0,[e("span",{class:"min-w-0 flex-1 truncate font-mono text-[11px] text-gray-700 dark:text-gray-200",title:c.request_id},t(c.request_id),9,X0),e("button",{class:"shrink-0 rounded-md bg-gray-100 px-2 py-1 text-[10px] font-bold text-gray-600 hover:bg-gray-200 dark:bg-dark-700 dark:text-gray-300 dark:hover:bg-dark-600",onClick:F=>de(c.request_id)},t(s(n)("admin.ops.requestDetails.copy")),9,ep)])):C("",!0),c.kind==="error"&&c.error_id?(l(),u("button",{key:1,class:"w-full rounded-lg bg-red-50 px-3 py-1.5 text-xs font-bold text-red-600 hover:bg-red-100 dark:bg-red-900/20 dark:text-red-300 dark:hover:bg-red-900/30",onClick:F=>ee(c.error_id)},t(s(n)("admin.ops.requestDetails.viewError")),9,tp)):C("",!0)]))),128))]))]),I(as,{total:v.value,page:y.value,"page-size":G.value,"onUpdate:page":ne,"onUpdate:pageSize":Y},null,8,["total","page","page-size"])]))]))])]),_:1},8,["show","title"]))}}
3),Tp={key:0,class:"py-10 text-center text-sm text-gray-500"},Dp={key:1,class:"space-y-6"},Ep={key:0,class:"rounded-lg border border-amber-200 bg-amber-50 p-3 text-xs text-amber-800 dark:border-amber-900/50 dark:bg-amber-900/20 dark:text-amber-200"},qp={class:"font-bold"},Mp={class:"mt-1 list-disc space-y-1 pl-4"},Vp={class:"rounded-2xl bg-gray-50 p-4 dark:bg-dark-700/50"},Lp={class:"mb-3 text-sm font-semibold text-gray-900 dark:text-white"},Ap={class:"input-label"},Fp={class:"mt-1 text-xs text-gray-500"},Op={class:"rounded-2xl bg-gray-50 p-4 dark:bg-dark-700/50"},Ip={class:"mb-3 text-sm font-semibold text-gray-900 dark:text-white"},jp={class:"space-y-4"},Pp={class:"flex items-center justify-between"},Up={class:"font-medium text-gray-900 dark:text-white"},Np={key:0},zp={class:"input-label"},Hp={class:"flex gap-2"},Bp=["placeholder"],Qp={class:"mt-2 flex flex-wrap gap-2"},Wp=["onClick"],Gp={class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},Kp={key:1},Zp={class:"input-label"},Jp={class:"rounded-2xl bg-gray-50 p-4 dark:bg-dark-700/50"},Yp={class:"mb-3 text-sm font-semibold text-gray-900 dark:text-white"},Xp={class:"space-y-4"},em={class:"flex items-center justify-between"},tm={class:"font-medium text-gray-900 dark:text-white"},sm={key:0},am={class:"input-label"},nm={class:"flex gap-2"},om=["placeholder"],lm={class:"mt-2 flex flex-wrap gap-2"},rm=["onClick"],im={class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},dm={key:1,class:"grid grid-cols-1 gap-4 md:grid-cols-2"},um={class:"flex items-center justify-between"},cm={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},pm={key:0},mm={class:"flex items-center justify-between"},gm={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},vm={key:1},_m={class:"rounded-2xl bg-gray-50 p-4 dark:bg-dark-700/50"},xm={class:"mb-3 text-sm font-semibold text-gray-900 dark:text-white"},fm={class:"mb-4 text-xs text-gray-500 dark:text-gray-400"},ym={class:"space-y-4"},bm={class:"input-label"},hm={class:"mt-1 text-xs text-gray-500"},km={class:"input-label"},wm={class:"mt-1 text-xs text-gray-500"},$m={class:"input-label"},Cm={class:"mt-1 text-xs text-gray-500"},Rm={class:"input-label"},Sm={class:"mt-1 text-xs text-gray-500"},Tm={class:"rounded-2xl bg-gray-50 dark:bg-dark-700/50"},Dm={class:"cursor-pointer p-4 text-sm font-semibold text-gray-900 dark:text-white"},Em={class:"space-y-4 px-4 pb-4"},qm={class:"space-y-3"},Mm={class:"text-xs font-semibold text-gray-700 dark:text-gray-300"},Vm={class:"flex items-center justify-between"},Lm={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},Am={key:0},Fm={class:"input-label"},Om={class:"mt-1 text-xs text-gray-500"},Im={class:"grid grid-cols-1 gap-4 md:grid-cols-3"},jm={class:"input-label"},Pm={class:"input-label"},Um={class:"input-label"},Nm={class:"text-xs text-gray-500"},zm={class:"space-y-3"},Hm={class:"text-xs font-semibold text-gray-700 dark:text-gray-300"},Bm={class:"flex items-center justify-between"},Qm={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},Wm={class:"mt-1 text-xs text-gray-500"},Gm={class:"space-y-3"},Km={class:"text-xs font-semibold text-gray-700 dark:text-gray-300"},Zm={class:"text-xs text-gray-500"},Jm={class:"grid grid-cols-1 gap-4 md:grid-cols-2"},Ym={class:"input-label"},Xm={class:"input-label"},eg={class:"text-xs text-gray-500"},tg={class:"space-y-3"},sg={class:"text-xs font-semibold text-gray-700 dark:text-gray-300"},ag={class:"flex items-center justify-between"},ng={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},og={class:"mt-1 text-xs text-gray-500"},lg={class:"flex items-center justify-between"},rg={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},ig={class:"mt-1 text-xs text-gray-500"},dg={class:"flex items-center justify-between"},ug={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},cg={class:"mt-1 text-xs text-gray-500"},pg={class:"flex items-center justify-between"},mg={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},gg={class:"mt-1 text-xs text-gray-500"},vg={class:"space-y-3"},_g={class:"text-xs font-semibold text-gray-700 dark:text-gray-300"},xg={class:"flex items-center justify-between"},fg={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},yg={class:"mt-1 text-xs text-gray-500"},bg={key:0},hg={class:"input-label"},kg={class:"space-y-3"},wg={class:"text-xs font-semibold text-gray-700 dark:text-gray-300"},$g={class:"flex items-center justify-between"},Cg={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},Rg={class:"mt-1 text-xs text-gray-500"},Sg={class:"flex items-center justify-between"},Tg={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},Dg={class:"mt-1 text-xs text-gray-500"},Eg={class:"flex justify-end gap-2"},qg=["disabled"],Mg=be({__name:"OpsSettingsDialog",props:{show:{type:Boolean}},emits:["close","saved"],setup(ie,{emit:d}){const{t:a}=we(),T=pt(),n=ie,P=d,D=b(!1),q=b(!1),$=b(null),x=b(null),v=b(null),y=b({sla_percent_min:99.5,ttft_p99_ms_max:500,request_error_rate_percent_max:5,upstream_error_rate_percent_max:5});async function G(){var k,c;D.value=!0;try{const[i,F,M,O]=await Promise.all([te.getAlertRuntimeSettings(),te.getEmailNotificationConfig(),te.getAdvancedSettings(),te.getMetricThresholds()]);$.value=i,x.value=F,v.value=M,v.value&&!v.value.openai_account_quota_auto_pause&&(v.value.openai_account_quota_auto_pause={default_threshold_5h:0,default_threshold_7d:0}),O&&Object.keys(O).length>
30&&(y.value={sla_percent_min:O.sla_percent_min??99.5,ttft_p99_ms_max:O.ttft_p99_ms_max??500,request_error_rate_percent_max:O.request_error_rate_percent_max??5,upstream_error_rate_percent_max:O.upstream_error_rate_percent_max??5})}catch(i){console.error("[OpsSettingsDialog] Failed to load settings",i),T.showError(((c=(k=i==null?void 0:i.response)==null?void 0:k.data)==null?void 0:c.detail)||a("admin.ops.settings.loadFailed"))}finally{D.value=!1}}ge(()=>n.show,k=>{k&&G()});const E=b(""),p=b(""),R=[{value:"",label:a("admin.ops.email.minSeverityAll")},{value:"critical",label:a("common.critical")},{value:"warning",label:a("common.warning")},{value:"info",label:a("common.info")}];function A(k){return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(k)}function ne(k){if(!x.value)return;const c=(k==="alert"?E.value:p.value).trim();if(!c)return;if(!A(c)){T.showError(a("common.invalidEmail"));return}const i=c.toLowerCase(),F=k==="alert"?x.value.alert.recipients:x.value.report.recipients;F.includes(i)||F.push(i),k==="alert"?E.value="":p.value=""}function Y(k,c){if(!x.value)return;const i=k==="alert"?x.value.alert.recipients:x.value.report.recipients,F=i.indexOf(c);F>=0&&i.splice(F,1)}const de=_({get(){var c,i;const k=(i=(c=v.value)==null?void 0:c.openai_account_quota_auto_pause)==null?void 0:i.default_threshold_5h;return k&&k>0?Math.round(k*1e3)/10:null},set(k){var c;(c=v.value)!=null&&c.openai_account_quota_auto_pause&&(v.value.openai_account_quota_auto_pause.default_threshold_5h=k!=null&&k>0?k/100:0)}}),ee=_({get(){var c,i;const k=(i=(c=v.value)==null?void 0:c.openai_account_quota_auto_pause)==null?void 0:i.default_threshold_7d;return k&&k>0?Math.round(k*1e3)/10:null},set(k){var c;(c=v.value)!=null&&c.openai_account_quota_auto_pause&&(v.value.openai_account_quota_auto_pause.default_threshold_7d=k!=null&&k>0?k/100:0)}}),W=_(()=>{const k=[];if($.value){const c=$.value.evaluation_interval_seconds;(!Number.isFinite(c)||c<1||c>86400)&&k.push(a("admin.ops.runtime.validation.evalIntervalRange"))}if(v.value){const{error_log_retention_days:c,minute_metrics_retention_days:i,hourly_metrics_retention_days:F}=v.value.data_retention;(c<0||c>365)&&k.push(a("admin.ops.settings.validation.retentionDaysRange")),(i<0||i>365)&&k.push(a("admin.ops.settings.validation.retentionDaysRange")),(F<0||F>365)&&k.push(a("admin.ops.settings.validation.retentionDaysRange"));const{default_threshold_5h:M,default_threshold_7d:O}=v.value.openai_account_quota_auto_pause;(M<0||M>1||O<0||O>1)&&k.push(a("admin.ops.settings.validation.openaiQuotaAutoPauseRange"))}return y.value.sla_percent_min!=null&&(y.value.sla_percent_min<0||y.value.sla_percent_min>100)&&k.push(a("admin.ops.settings.validation.slaMinPercentRange")),y.value.ttft_p99_ms_max!=null&&y.value.ttft_p99_ms_max<0&&k.push(a("admin.ops.settings.validation.ttftP99MaxRange")),y.value.request_error_rate_percent_max!=null&&(y.value.request_error_rate_percent_max<0||y.value.request_error_rate_percent_max>100)&&k.push(a("admin.ops.settings.validation.requestErrorRateMaxRange")),y.value.upstream_error_rate_percent_max!=null&&(y.value.upstream_error_rate_percent_max<0||y.value.upstream_error_rate_percent_max>100)&&k.push(a("admin.ops.settings.validation.upstreamErrorRateMaxRange")),{valid:k.length===0,errors:k}});async function Q(){var k,c,i,F;if(!W.value.valid){T.showError(W.value.errors[0]);return}q.value=!0;try{x.value&&(x.value.alert.enabled&&x.value.alert.recipients.length===0&&(x.value.alert.enabled=!1),x.value.report.enabled&&x.value.report.recipients.length===0&&(x.value.report.enabled=!1)),await Promise.all([$.value?te.updateAlertRuntimeSettings($.value):Promise.resolve(),x.value?te.updateEmailNotificationConfig(x.value):Promise.resolve(),v.value?te.updateAdvancedSettings(v.value):Promise.resolve(),te.updateMetricThresholds(y.value)]),T.showSuccess(a("admin.ops.settings.saveSuccess")),P("saved"),P("close")}catch(M){console.error("[OpsSettingsDialog] Failed to save settings",M),T.showError(((c=(k=M==null?void 0:M.response)==null?void 0:k.data)==null?void 0:c.message)||((F=(i=M==null?void 0:M.response)==null?void 0:i.data)==null?void 0:F.detail)||a("admin.ops.settings.saveFailed"))}finally{q.value=!1}}return(k,c)=>(l(),re(Je,{show:ie.show,title:s(a)("admin.ops.settings.title"),width:"extra-wide",onClose:c[35]||(c[35]=i=>P("close"))},{footer:Oe(()=>[e("div",Eg,[e("button",{class:"btn btn-secondary",onClick:c[34]||(c[34]=i=>P("close"))},t(s(a)("common.cancel")),1),e("button",{class:"btn btn-primary",disabled:q.value||!W.value.valid,onClick:Q},t(q.value?s(a)("common.saving"):s(a)("common.save")),9,qg)])]),default:Oe(()=>[D.value?(l(),u("div",Tp,t(s(a)("common.loading")),1)):$.value&&x.value&&v.value?(l(),u("div",Dp,[W.value.valid?C("",!0):(l(),u("div",Ep,[e("div",qp,t(s(a)("admin.ops.settings.val
3idation.title")),1),e("ul",Mp,[(l(!0),u(ue,null,pe(W.value.errors,i=>(l(),u("li",{key:i},t(i),1))),128))])])),e("div",Vp,[e("h4",Lp,t(s(a)("admin.ops.settings.dataCollection")),1),e("div",null,[e("label",Ap,t(s(a)("admin.ops.settings.evaluationInterval")),1),se(e("input",{"onUpdate:modelValue":c[0]||(c[0]=i=>$.value.evaluation_interval_seconds=i),type:"number",min:"1",max:"86400",class:"input"},null,512),[[le,$.value.evaluation_interval_seconds,void 0,{number:!0}]]),e("p",Fp,t(s(a)("admin.ops.settings.evaluationIntervalHint")),1)])]),e("div",Op,[e("h4",Ip,t(s(a)("admin.ops.settings.alertConfig")),1),e("div",jp,[e("div",Pp,[e("div",null,[e("label",Up,t(s(a)("admin.ops.settings.enableAlert")),1)]),I(qe,{modelValue:x.value.alert.enabled,"onUpdate:modelValue":c[1]||(c[1]=i=>x.value.alert.enabled=i)},null,8,["modelValue"])]),x.value.alert.enabled?(l(),u("div",Np,[e("label",zp,t(s(a)("admin.ops.settings.alertRecipients")),1),e("div",Hp,[se(e("input",{"onUpdate:modelValue":c[2]||(c[2]=i=>E.value=i),type:"email",class:"input",placeholder:s(a)("admin.ops.settings.emailPlaceholder"),onKeydown:c[3]||(c[3]=Kt(Zt(i=>ne("alert"),["prevent"]),["enter"]))},null,40,Bp),[[le,E.value]]),e("button",{class:"btn btn-secondary whitespace-nowrap",type:"button",onClick:c[4]||(c[4]=i=>ne("alert"))},t(s(a)("common.add")),1)]),e("div",Qp,[(l(!0),u(ue,null,pe(x.value.alert.recipients,i=>(l(),u("span",{key:i,class:"inline-flex items-center gap-2 rounded-full bg-blue-100 px-3 py-1 text-xs font-medium text-blue-700 dark:bg-blue-900/30 dark:text-blue-400"},[z(t(i)+" ",1),e("button",{type:"button",class:"text-blue-700/80 hover:text-blue-900",onClick:F=>Y("alert",i)},"Ã",8,Wp)]))),128))]),e("p",Gp,t(s(a)("admin.ops.settings.recipientsHint")),1)])):C("",!0),x.value.alert.enabled?(l(),u("div",Kp,[e("label",Zp,t(s(a)("admin.ops.settings.minSeverity")),1),I(ce,{modelValue:x.value.alert.min_severity,"onUpdate:modelValue":c[5]||(c[5]=i=>x.value.alert.min_severity=i),options:R},null,8,["modelValue"])])):C("",!0)])]),e("div",Jp,[e("h4",Yp,t(s(a)("admin.ops.settings.reportConfig")),1),e("div",Xp,[e("div",em,[e("div",null,[e("label",tm,t(s(a)("admin.ops.settings.enableReport")),1)]),I(qe,{modelValue:x.value.report.enabled,"onUpdate:modelValue":c[6]||(c[6]=i=>x.value.report.enabled=i)},null,8,["modelValue"])]),x.value.report.enabled?(l(),u("div",sm,[e("label",am,t(s(a)("admin.ops.settings.reportRecipients")),1),e("div",nm,[se(e("input",{"onUpdate:modelValue":c[7]||(c[7]=i=>p.value=i),type:"email",class:"input",placeholder:s(a)("admin.ops.settings.emailPlaceholder"),onKeydown:c[8]||(c[8]=Kt(Zt(i=>ne("report"),["prevent"]),["enter"]))},null,40,om),[[le,p.value]]),e("button",{class:"btn btn-secondary whitespace-nowrap",type:"button",onClick:c[9]||(c[9]=i=>ne("report"))},t(s(a)("common.add")),1)]),e("div",lm,[(l(!0),u(ue,null,pe(x.value.report.recipients,i=>(l(),u("span",{key:i,class:"inline-flex items-center gap-2 rounded-full bg-blue-100 px-3 py-1 text-xs font-medium text-blue-700 dark:bg-blue-900/30 dark:text-blue-400"},[z(t(i)+" ",1),e("button",{type:"button",class:"text-blue-700/80 hover:text-blue-900",onClick:F=>Y("report",i)},"Ã",8,rm)]))),128))]),e("p",im,t(s(a)("admin.ops.settings.recipientsHint")),1)])):C("",!0),x.value.report.enabled?(l(),u("div",dm,[e("div",um,[e("label",cm,t(s(a)("admin.ops.settings.dailySummary")),1),I(qe,{modelValue:x.value.report.daily_summary_enabled,"onUpdate:modelValue":c[10]||(c[10]=i=>x.value.report.daily_summary_enabled=i)},null,8,["modelValue"])]),x.value.report.daily_summary_enabled?(l(),u("div",pm,[se(e("input",{"onUpdate:modelValue":c[11]||(c[11]=i=>x.value.report.daily_summary_schedule=i),type:"text",class:"input",placeholder:"0 9 * * *"},null,512),[[le,x.value.report.daily_summary_schedule]])])):C("",!0),e("div",mm,[e("label",gm,t(s(a)("admin.ops.settings.weeklySummary")),1),I(qe,{modelValue:x.value.report.weekly_summary_enabled,"onUpdate:modelValue":c[12]||(c[12]=i=>x.value.report.weekly_summary_enabled=i)},null,8,["modelValue"])]),x.value.report.weekly_summary_enabled?(l(),u("div",vm,[se(e("input",{"onUpdate:modelValue":c[13]||(c[13]=i=>x.value.report.weekly_summary_schedule=i),type:"text",class:"input",placeholder:"0 9 * * 1"},null,512),[[le,x.value.report.weekly_summary_schedule]])])):C("",!0)])):C("",!0)])]),e("div",_m,[e("h4",xm,t(s(a)("admin.ops.settings.metricThresholds")),1
3),e("p",fm,t(s(a)("admin.ops.settings.metricThresholdsHint")),1),e("div",ym,[e("div",null,[e("label",bm,t(s(a)("admin.ops.settings.slaMinPercent")),1),se(e("input",{"onUpdate:modelValue":c[14]||(c[14]=i=>y.value.sla_percent_min=i),type:"number",min:"0",max:"100",step:"0.1",class:"input"},null,512),[[le,y.value.sla_percent_min,void 0,{number:!0}]]),e("p",hm,t(s(a)("admin.ops.settings.slaMinPercentHint")),1)]),e("div",null,[e("label",km,t(s(a)("admin.ops.settings.ttftP99MaxMs")),1),se(e("input",{"onUpdate:modelValue":c[15]||(c[15]=i=>y.value.ttft_p99_ms_max=i),type:"number",min:"0",step:"50",class:"input"},null,512),[[le,y.value.ttft_p99_ms_max,void 0,{number:!0}]]),e("p",wm,t(s(a)("admin.ops.settings.ttftP99MaxMsHint")),1)]),e("div",null,[e("label",$m,t(s(a)("admin.ops.settings.requestErrorRateMaxPercent")),1),se(e("input",{"onUpdate:modelValue":c[16]||(c[16]=i=>y.value.request_error_rate_percent_max=i),type:"number",min:"0",max:"100",step:"0.1",class:"input"},null,512),[[le,y.value.request_error_rate_percent_max,void 0,{number:!0}]]),e("p",Cm,t(s(a)("admin.ops.settings.requestErrorRateMaxPercentHint")),1)]),e("div",null,[e("label",Rm,t(s(a)("admin.ops.settings.upstreamErrorRateMaxPercent")),1),se(e("input",{"onUpdate:modelValue":c[17]||(c[17]=i=>y.value.upstream_error_rate_percent_max=i),type:"number",min:"0",max:"100",step:"0.1",class:"input"},null,512),[[le,y.value.upstream_error_rate_percent_max,void 0,{number:!0}]]),e("p",Sm,t(s(a)("admin.ops.settings.upstreamErrorRateMaxPercentHint")),1)])])]),e("details",Tm,[e("summary",Dm,t(s(a)("admin.ops.settings.advancedSettings")),1),e("div",Em,[e("div",qm,[e("h5",Mm,t(s(a)("admin.ops.settings.dataRetention")),1),e("div",Vm,[e("label",Lm,t(s(a)("admin.ops.settings.enableCleanup")),1),I(qe,{modelValue:v.value.data_retention.cleanup_enabled,"onUpdate:modelValue":c[18]||(c[18]=i=>v.value.data_retention.cleanup_enabled=i)},null,8,["modelValue"])]),v.value.data_retention.cleanup_enabled?(l(),u("div",Am,[e("label",Fm,t(s(a)("admin.ops.settings.cleanupSchedule")),1),se(e("input",{"onUpdate:modelValue":c[19]||(c[19]=i=>v.value.data_retention.cleanup_schedule=i),type:"text",class:"input",placeholder:"0 2 * * *"},null,512),[[le,v.value.data_retention.cleanup_schedule]]),e("p",Om,t(s(a)("admin.ops.settings.cleanupScheduleHint")),1)])):C("",!0),e("div",Im,[e("div",null,[e("label",jm,t(s(a)("admin.ops.settings.errorLogRetentionDays")),1),se(e("input",{"onUpdate:modelValue":c[20]||(c[20]=i=>v.value.data_retention.error_log_retention_days=i),type:"number",min:"0",max:"365",class:"input"},null,512),[[le,v.value.data_retention.error_log_retention_days,void 0,{number:!0}]])]),e("div",null,[e("label",Pm,t(s(a)("admin.ops.settings.minuteMetricsRetentionDays")),1),se(e("input",{"onUpdate:modelValue":c[21]||(c[21]=i=>v.value.data_retention.minute_metrics_retention_days=i),type:"number",min:"0",max:"365",class:"input"},null,512),[[le,v.value.data_retention.minute_metrics_retention_days,void 0,{number:!0}]])]),e("div",null,[e("label",Um,t(s(a)("admin.ops.settings.hourlyMetricsRetentionDays")),1),se(e("input",{"onUpdate:modelValue":c[22]||(c[22]=i=>v.value.data_retention.hourly_metrics_retention_days=i),type:"number",min:"0",max:"365",class:"input"},null,512),[[le,v.value.data_retention.hourly_metrics_retention_days,void 0,{number:!0}]])])]),e("p",Nm,t(s(a)("admin.ops.settings.retentionDaysHint")),1)]),e("div",zm,[e("h5",Hm,t(s(a)("admin.ops.settings.aggregation")),1),e("div",Bm,[e("div",null,[e("label",Qm,t(s(a)("admin.ops.settings.enableAggregation")),1),e("p",Wm,t(s(a)("admin.ops.settings.aggregationHint")),1)]),I(qe,{modelValue:v.value.aggregation.aggregation_enabled,"onUpdate:modelValue":c[23]||(c[23]=i=>v.value.aggregation.aggregation_enabled=i)},null,8,["modelValue"])])]),e("div",Gm,[e("h5",Km,t(s(a)("admin.ops.settings.openaiQuotaAutoPause")),1),e("p",Zm,t(s(a)("admin.ops.settings.openaiQuotaAutoPauseHint")),1),e("div",Jm,[e("div",null,[e("label",Ym,t(s(a)("admin.ops.settings.openaiQuotaAutoPauseDefault5h")),1),se(e("input",{"onUpdate:modelValue":c[24]||(c[24]=i=>de.value=i),type:"number",min:"0",max:"100",step:"0.1",class:"input","data-testid":"ops-quota-auto-pause-5h"},null,512),[[le,de.value,void 0,{number:!0}]])]),e("div",null,[e("label",Xm,t(s(a)("admin.ops.settings.open
3aiQuotaAutoPauseDefault7d")),1),se(e("input",{"onUpdate:modelValue":c[25]||(c[25]=i=>ee.value=i),type:"number",min:"0",max:"100",step:"0.1",class:"input","data-testid":"ops-quota-auto-pause-7d"},null,512),[[le,ee.value,void 0,{number:!0}]])])]),e("p",eg,t(s(a)("admin.ops.settings.openaiQuotaAutoPauseThresholdHint")),1)]),e("div",tg,[e("h5",sg,t(s(a)("admin.ops.settings.errorFiltering")),1),e("div",ag,[e("div",null,[e("label",ng,t(s(a)("admin.ops.settings.ignoreCountTokensErrors")),1),e("p",og,t(s(a)("admin.ops.settings.ignoreCountTokensErrorsHint")),1)]),I(qe,{modelValue:v.value.ignore_count_tokens_errors,"onUpdate:modelValue":c[26]||(c[26]=i=>v.value.ignore_count_tokens_errors=i)},null,8,["modelValue"])]),e("div",lg,[e("div",null,[e("label",rg,t(s(a)("admin.ops.settings.ignoreContextCanceled")),1),e("p",ig,t(s(a)("admin.ops.settings.ignoreContextCanceledHint")),1)]),I(qe,{modelValue:v.value.ignore_context_canceled,"onUpdate:modelValue":c[27]||(c[27]=i=>v.value.ignore_context_canceled=i)},null,8,["modelValue"])]),e("div",dg,[e("div",null,[e("label",ug,t(s(a)("admin.ops.settings.ignoreNoAvailableAccounts")),1),e("p",cg,t(s(a)("admin.ops.settings.ignoreNoAvailableAccountsHint")),1)]),I(qe,{modelValue:v.value.ignore_no_available_accounts,"onUpdate:modelValue":c[28]||(c[28]=i=>v.value.ignore_no_available_accounts=i)},null,8,["modelValue"])]),e("div",pg,[e("div",null,[e("label",mg,t(s(a)("admin.ops.settings.ignoreInsufficientBalanceErrors")),1),e("p",gg,t(s(a)("admin.ops.settings.ignoreInsufficientBalanceErrorsHint")),1)]),I(qe,{modelValue:v.value.ignore_insufficient_balance_errors,"onUpdate:modelValue":c[29]||(c[29]=i=>v.value.ignore_insufficient_balance_errors=i)},null,8,["modelValue"])])]),e("div",vg,[e("h5",_g,t(s(a)("admin.ops.settings.autoRefresh")),1),e("div",xg,[e("div",null,[e("label",fg,t(s(a)("admin.ops.settings.enableAutoRefresh")),1),e("p",yg,t(s(a)("admin.ops.settings.enableAutoRefreshHint")),1)]),I(qe,{modelValue:v.value.auto_refresh_enabled,"onUpdate:modelValue":c[30]||(c[30]=i=>v.value.auto_refresh_enabled=i)},null,8,["modelValue"])]),v.value.auto_refresh_enabled?(l(),u("div",bg,[e("label",hg,t(s(a)("admin.ops.settings.refreshInterval")),1),I(ce,{modelValue:v.value.auto_refresh_interval_seconds,"onUpdate:modelValue":c[31]||(c[31]=i=>v.value.auto_refresh_interval_seconds=i),options:[{value:15,label:s(a)("admin.ops.settings.refreshInterval15s")},{value:30,label:s(a)("admin.ops.settings.refreshInterval30s")},{value:60,label:s(a)("admin.ops.settings.refreshInterval60s")}]},null,8,["modelValue","options"])])):C("",!0)]),e("div",kg,[e("h5",wg,t(s(a)("admin.ops.settings.dashboardCards")),1),e("div",$g,[e("div",null,[e("label",Cg,t(s(a)("admin.ops.settings.displayAlertEvents")),1),e("p",Rg,t(s(a)("admin.ops.settings.displayAlertEventsHint")),1)]),I(qe,{modelValue:v.value.display_alert_events,"onUpdate:modelValue":c[32]||(c[32]=i=>v.value.display_alert_events=i)},null,8,["modelValue"])]),e("div",Sg,[e("div",null,[e("label",Tg,t(s(a)("admin.ops.settings.displayOpenAITokenStats")),1),e("p",Dg,t(s(a)("admin.ops.settings.displayOpenAITokenStatsHint")),1)]),I(qe,{modelValue:v.value.display_openai_token_stats,"onUpdate:modelValue":c[33]||(c[33]=i=>v.value.display_openai_token_stats=i)},null,8,["modelValue"])])])])])])):C("",!0)]),_:1},8,["show","title"]))}}),Vg={class:"rounded-3xl bg-white p-6 shadow-sm ring-1 ring-gray-900/5 dark:bg-dark-800 dark:ring-dark-700"},Lg={class:"mb-4 flex flex-wrap items-start justify-between gap-3 sm:gap-4"},Ag={class:"text-sm font-bold text-gray-900 dark:text-white"},Fg={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},Og={class:"flex items-center gap-2"},Ig=["disabled"],jg=["disabled"],Pg={key:0,class:"py-10 text-center text-sm text-gray-500 dark:text-gray-400"},Ug={key:1,class:"rounded-xl border border-dashed border-gray-200 p-8 text-center text-sm text-gray-500 dark:border-dark-700 dark:text-gray-400"},Ng={key:2,class:"max-h-[520px] overflow-hidden rounded-xl border border-gray-200 dark:border-dark-700"},zg={class:"max-h-[520px] overflow-y-auto"},Hg={key:0,class:"divide-y divide-gray-100 dark:divide-dark-800"},Bg={class:"flex items-start justify-between gap-2"},Qg={class:"min-w-0"},Wg={class:"text-xs font-bold text-gray-900 dark:text-white"},Gg={key:0,class:"mt-0.5 line-clamp-2 text-[11px] text-gray-500 dark:text-gray-400"},Kg={class:"shrink-0 text-xs font-bold text-gray-700 dark:text-gray-200"},Zg={class:"text-xs text-gray-700 dark:text-gray-200"},Jg={class:"font-mono"},Yg={class:"mx-1 text-gray-400"},Xg={class:"font-mono"},ev={class:"flex items-center justify-between gap-2"},tv={class:"text-xs text-gray-700 dark:text-gray-200"},sv={class:"flex items-center gap-2"},av=["onClick"],nv=["onClick"],ov={key:0,class:"text-[10px] text-gray-400"},lv={key:1,class:"min-w-full divide-y divide-gray-200 dark:divide-dark-700"},rv={class:"sticky top-0 z-10 bg-gray-50 dark:bg-dark-900"},iv={class:"px-4 py-3 text-left text-[11px] font-bold uppercase tracking-wider text-gray-500 dark:text-gray-400"},dv={class:"px-4 py-3 text-left text-[11px] font-bold uppercase tracking-wider text-gray-500 dark:text-gray-400"},uv={class:"px-4 py-3 text-left text-[11px] font-bold uppercase tracking-wider text-gray-500 dark:text-gray-400"},cv={class:"px-4 py-3 text-left text-[11px] font-bold uppercase tracking-wider text-gray-500 dark:text-gray-400"},pv={class:"px-4 py-3 text-right text-[11px] font-bold uppercase tracking-wider text-gray-500 dark:text-gray-400"},mv={class:"divide-y divide-gray-200 bg-white dark:divide-dark-700 dark:bg-dark-800"},gv={class:"px-4 py-3"},vv={class:"text-xs font-bold text-gray-900 dark:text-white"},_v={key:0,class:"mt-0.5 line-clamp-2 text-[11px] text-gray-500 dark:text-gray-400"},xv={key:1,class:"mt-1 text-[10px] text-gray-400"},fv={class:"whitespace-nowrap px-4 py-3 text-xs text-gray-700 dark:text-gray-200"},yv={class:"font-mono"},bv={class:"mx-1 text-gray-400"},hv={class:"font-mono"},kv={class:"whitespace-nowrap px-4 py-3 text-xs font-bold text-gray-700 dark:text-gray-200"},wv={class:"whitespace-nowrap px-4 py-3 text-xs text-gray-700 dark:text-gray-200"},$v={class:"whitespace-nowrap px-4 py-3 text-right text-xs"},Cv=["onClick"],Rv=["onClick"],Sv={class:"space-y-4"},Tv={key:0,class:"rounded-xl bg-red-50 p-4 text-xs text-red-700 dark:bg-red-900/30 dark:text-red-300"},Dv={class:"font-bold"},Ev={class:"mt-1 list-disc pl-5"},qv={class:"grid grid-cols-1 gap-4 md:grid-cols-2"},Mv={class:"md:col-span-2"},Vv={class:"input-label"},Lv={class:"md:col-span-2"},Av={class:"input-label"},Fv={class:"input-label"},Ov={key:0,class:"mt-1 space-y-0.5 text-xs text-gray-500 dark:text-gray-400"},Iv={class:"input-label"},jv={class:"md:col-span-2"},Pv={class:"input-label"},Uv={key:0,class:"ml-1 text-red-500"},Nv={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},zv={class:"input-label"},Hv={class:"input-label"},Bv={class:"input-label"},Qv={class:"input-label"},Wv={class:"input-label"},Gv={class:"flex items-center justify-between rounded-xl bg-gray-50 px-4 py-3 dark:bg-dark-800/50 md:col-span-2"},Kv={class:"text-xs font-bold text-gray-700 dark:text-gray-200"},Zv={class:"flex items-center justify-between rounded-xl bg-gray-50 px-4 py-3 dark:bg-dark-800/50 md:col-span-2"},Jv={class:"text-xs font-bold text-gray-700 dark:text-gray-200"},Yv={class:"flex items-center justify-end gap-2"},Xv=["disabled"],e_=["disabled"],t_=be({__name:"OpsAlertRulesCard",setup(ie){const{t:d}=we(),a=pt(),T=Rt("(min-width: 768px)"),n=b(!1),P=b([]);async function D(){var j,g;n.value=!0;try{P.value=await te.listAlertRules()}catch(m){console.error("[OpsAlertRulesCard] Failed to load rules",m),a.showError(((g=(j=m==null?void 0:m.response)==null?void 0:j.data)==null?void 0:g.detail)||d("admin.ops.alertRules.loadFailed")),P.value=[]}finally{n.value=!1}}kt(()=>{D(),R()});const q=_(()=>[...P.value].sort((j,g)=>(g.id||0)-(j.id||0))),$=b(!1),x=b(!1),v=b(null),y=b(null),G=new Set(["group_available_accounts","group_available_ratio","group_rate_limit_ratio"]);function E(j){if(j==null||typeof j=="boolean")return null;const g=typeof j=="number"?j:Number.parseInt(String(j),10);return Number.isFinite(g)&&g>0?g:null}const p=b([]);async function R(){try{const j=await ss.groups.getAll();p.value=j.map(g=>({value:g.id,label:g.name}))}catch(j){console.error("[OpsAlertRulesCard] Failed to load groups",j),p.value=[]}}const A=_(()=>{var g;const j=(g=y.value)==null?void 0:g.metric_type;return j?G.has(j):!1}),ne=_({get(){var j,g;return E((g=(j=y.value)==null?void 0:j.filters)==null?void 0:g.group_id)},set(j){if(y.value){if(j==null){if(!y.value.filters)return;delete y.value.filters.group_id,Object.keys(y.value.filters).length===0&&delete y.value.filters;return}y.value.filters||(y.value.filters={}),y.value.filters.group_id=j}}}),Y=_(()=>A.value?p.value:[{value:null,label:d("admin.ops.alertRules.form.allGroups")},...p.value]),de=_(()=>[{type:"success_rate",group:"system",label:d("admin.ops.alertRules.metrics.successRate"),description:d("admin.ops.alertRules.metricDescriptions.successRate"),recommendedOperator:"<",recommendedThreshold:99,unit:"%"},{type:"error_rate",group:"system",label:d("admin.ops.alertRules.metrics.errorRate"),description:d("admin.ops.alertRules.metricDescriptions.errorRate"),recommendedOperator:">
3",recommendedThreshold:1,unit:"%"},{type:"upstream_error_rate",group:"system",label:d("admin.ops.alertRules.metrics.upstreamErrorRate"),description:d("admin.ops.alertRules.metricDescriptions.upstreamErrorRate"),recommendedOperator:">",recommendedThreshold:1,unit:"%"},{type:"cpu_usage_percent",group:"system",label:d("admin.ops.alertRules.metrics.cpu"),description:d("admin.ops.alertRules.metricDescriptions.cpu"),recommendedOperator:">",recommendedThreshold:80,unit:"%"},{type:"memory_usage_percent",group:"system",label:d("admin.ops.alertRules.metrics.memory"),description:d("admin.ops.alertRules.metricDescriptions.memory"),recommendedOperator:">",recommendedThreshold:80,unit:"%"},{type:"concurrency_queue_depth",group:"system",label:d("admin.ops.alertRules.metrics.queueDepth"),description:d("admin.ops.alertRules.metricDescriptions.queueDepth"),recommendedOperator:">",recommendedThreshold:10},{type:"group_available_accounts",group:"group",label:d("admin.ops.alertRules.metrics.groupAvailableAccounts"),description:d("admin.ops.alertRules.metricDescriptions.groupAvailableAccounts"),recommendedOperator:"<",recommendedThreshold:1},{type:"group_available_ratio",group:"group",label:d("admin.ops.alertRules.metrics.groupAvailableRatio"),description:d("admin.ops.alertRules.metricDescriptions.groupAvailableRatio"),recommendedOperator:"<",recommendedThreshold:50,unit:"%"},{type:"group_rate_limit_ratio",group:"group",label:d("admin.ops.alertRules.metrics.groupRateLimitRatio"),description:d("admin.ops.alertRules.metricDescriptions.groupRateLimitRatio"),recommendedOperator:">",recommendedThreshold:10,unit:"%"},{type:"account_rate_limited_count",group:"account",label:d("admin.ops.alertRules.metrics.accountRateLimitedCount"),description:d("admin.ops.alertRules.metricDescriptions.accountRateLimitedCount"),recommendedOperator:">",recommendedThreshold:0},{type:"account_error_count",group:"account",label:d("admin.ops.alertRules.metrics.accountErrorCount"),description:d("admin.ops.alertRules.metricDescriptions.accountErrorCount"),recommendedOperator:">",recommendedThreshold:0},{type:"account_error_ratio",group:"account",label:d("admin.ops.alertRules.metrics.accountErrorRatio"),description:d("admin.ops.alertRules.metricDescriptions.accountErrorRatio"),recommendedOperator:">",recommendedThreshold:5,unit:"%"},{type:"account_temp_unscheduled_count",group:"account",label:d("admin.ops.alertRules.metrics.accountTempUnscheduledCount"),description:d("admin.ops.alertRules.metricDescriptions.accountTempUnscheduledCount"),recommendedOperator:">",recommendedThreshold:0},{type:"overload_account_count",group:"account",label:d("admin.ops.alertRules.metrics.overloadAccountCount"),description:d("admin.ops.alertRules.metricDescriptions.overloadAccountCount"),recommendedOperator:">",recommendedThreshold:0}]),ee=_(()=>{var g;const j=(g=y.value)==null?void 0:g.metric_type;return j?de.value.find(m=>m.type===j)??null:null}),W=_(()=>{const j=g=>{const m=de.value.filter(oe=>oe.group===g);return m.length===0?[]:[{value:`__group__${g}`,label:d(`admin.ops.alertRules.metricGroups.${g}`),disabled:!0,kind:"group"},...m.map(oe=>({value:oe.type,label:oe.label}))]};return[...j("system"),...j("group"),...j("account")]}),Q=_(()=>[">",">=","<","<=","==","!="].map(g=>({value:g,label:g}))),k=_(()=>["P0","P1","P2","P3"].map(g=>({value:g,label:g}))),c=_(()=>[1,5,60].map(g=>({value:g,label:`${g}m`})));function i(){return{name:"",description:"",enabled:!0,metric_type:"error_rate",operator:">",threshold:1,window_minutes:1,sustained_minutes:2,severity:"P1",cooldown_minutes:10,notify_email:!0}}function F(){v.value=null,y.value=i(),$.value=!0}function M(j){v.value=j.id??null,y.value=JSON.parse(JSON.stringify(j)),$.value=!0}const O=_(()=>{var m;const j=[],g=y.value;return g?((!g.name||!g.name.trim())&&j.push(d("admin.ops.alertRules.validation.nameRequired")),g.metric_type||j.push(d("admin.ops.alertRules.validation.metricRequired")),G.has(g.metric_type)&&!E((m=g.filters)==null?void 0:m.group_id)&&j.push(d("admin.ops.alertRules.validation.groupIdRequired")),g.operator||j.push(d("admin.ops.alertRules.val
3idation.operatorRequired")),typeof g.threshold=="number"&&Number.isFinite(g.threshold)||j.push(d("admin.ops.alertRules.validation.thresholdRequired")),typeof g.window_minutes=="number"&&Number.isFinite(g.window_minutes)&&[1,5,60].includes(g.window_minutes)||j.push(d("admin.ops.alertRules.validation.windowRange")),typeof g.sustained_minutes=="number"&&Number.isFinite(g.sustained_minutes)&&g.sustained_minutes>=1&&g.sustained_minutes<=1440||j.push(d("admin.ops.alertRules.validation.sustainedRange")),typeof g.cooldown_minutes=="number"&&Number.isFinite(g.cooldown_minutes)&&g.cooldown_minutes>=0&&g.cooldown_minutes<=1440||j.push(d("admin.ops.alertRules.validation.cooldownRange")),{valid:j.length===0,errors:j}):{valid:!0,errors:j}});async function L(){var j,g;if(y.value){if(!O.value.valid){a.showError(O.value.errors[0]||d("admin.ops.alertRules.validation.invalid"));return}x.value=!0;try{v.value?await te.updateAlertRule(v.value,y.value):await te.createAlertRule(y.value),$.value=!1,y.value=null,v.value=null,await D(),a.showSuccess(d("admin.ops.alertRules.saveSuccess"))}catch(m){console.error("[OpsAlertRulesCard] Failed to save rule",m),a.showError(((g=(j=m==null?void 0:m.response)==null?void 0:j.data)==null?void 0:g.detail)||d("admin.ops.alertRules.saveFailed"))}finally{x.value=!1}}}const B=b(!1),Z=b(null);function ve(j){Z.value=j,B.value=!0}async function xe(){var j,g,m;if((j=Z.value)!=null&&j.id)try{await te.deleteAlertRule(Z.value.id),B.value=!1,Z.value=null,await D(),a.showSuccess(d("admin.ops.alertRules.deleteSuccess"))}catch(w){console.error("[OpsAlertRulesCard] Failed to delete rule",w),a.showError(((m=(g=w==null?void 0:w.response)==null?void 0:g.data)==null?void 0:m.detail)||d("admin.ops.alertRules.deleteFailed"))}}function me(){B.value=!1,Z.value=null}return(j,g)=>(l(),u("div",Vg,[e("div",Lg,[e("div",null,[e("h3",Ag,t(s(d)("admin.ops.alertRules.title")),1),e("p",Fg,t(s(d)("admin.ops.alertRules.description")),1)]),e("div",Og,[e("button",{class:"btn btn-sm btn-primary",disabled:n.value,onClick:F},t(s(d)("admin.ops.alertRules.create")),9,Ig),e("button",{class:"flex items-center gap-1.5 rounded-lg bg-gray-100 px-3 py-1.5 text-xs font-bold text-gray-700 transition-colors hover:bg-gray-200 disabled:cursor-not-allowed disabled:opacity-50 dark:bg-dark-700 dark:text-gray-300 dark:hover:bg-dark-600",disabled:n.value,onClick:D},[(l(),u("svg",{class:H(["h-3.5 w-3.5",{"animate-spin":n.value}]),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[...g[14]||(g[14]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"},null,-1)])],2)),z(" "+t(s(d)("common.refresh")),1)],8,jg)])]),n.value?(l(),u("div",Pg,t(s(d)("admin.ops.alertRules.loading")),1)):q.value.length===0?(l(),u("div",Ug,t(s(d)("admin.ops.alertRules.empty")),1)):(l(),u("div",Ng,[e("div",zg,[s(T)?(l(),u("table",lv,[e("thead",rv,[e("tr",null,[e("th",iv,t(s(d)("admin.ops.alertRules.table.name")),1),e("th",dv,t(s(d)("admin.ops.alertRules.table.metric")),1
3),e("th",uv,t(s(d)("admin.ops.alertRules.table.severity")),1),e("th",cv,t(s(d)("admin.ops.alertRules.table.enabled")),1),e("th",pv,t(s(d)("admin.ops.alertRules.table.actions")),1)])]),e("tbody",mv,[(l(!0),u(ue,null,pe(q.value,m=>(l(),u("tr",{key:m.id,class:"hover:bg-gray-50 dark:hover:bg-dark-700/50"},[e("td",gv,[e("div",vv,t(m.name),1),m.description?(l(),u("div",_v,t(m.description),1)):C("",!0),m.updated_at?(l(),u("div",xv,t(s(Ge)(m.updated_at)),1)):C("",!0)]),e("td",fv,[e("span",yv,t(m.metric_type),1),e("span",bv,t(m.operator),1),e("span",hv,t(m.threshold),1)]),e("td",kv,t(m.severity),1),e("td",wv,t(m.enabled?s(d)("common.enabled"):s(d)("common.disabled")),1),e("td",$v,[e("button",{class:"btn btn-sm btn-secondary",onClick:w=>M(m)},t(s(d)("common.edit")),9,Cv),e("button",{class:"ml-2 btn btn-sm btn-danger",onClick:w=>ve(m)},t(s(d)("common.delete")),9,Rv)])]))),128))])])):(l(),u("div",Hg,[(l(!0),u(ue,null,pe(q.value,m=>(l(),u("div",{key:m.id,class:"space-y-2 p-4"},[e("div",Bg,[e("div",Qg,[e("div",Wg,t(m.name),1),m.description?(l(),u("div",Gg,t(m.description),1)):C("",!0)]),e("span",Kg,t(m.severity),1)]),e("div",Zg,[e("span",Jg,t(m.metric_type),1),e("span",Yg,t(m.operator),1),e("span",Xg,t(m.threshold),1)]),e("div",ev,[e("span",tv,t(m.enabled?s(d)("common.enabled"):s(d)("common.disabled")),1),e("div",sv,[e("button",{class:"btn btn-sm btn-secondary",onClick:w=>M(m)},t(s(d)("common.edit")),9,av),e("button",{class:"btn btn-sm btn-danger",onClick:w=>ve(m)},t(s(d)("common.delete")),9,nv)])]),m.updated_at?(l(),u("div",ov,t(s(Ge)(m.updated_at)),1)):C("",!0)]))),128))]))])])),I(Je,{show:$.value,title:v.value?s(d)("admin.ops.alertRules.editTitle"):s(d)("admin.ops.alertRules.createTitle"),width:"wide",onClose:g[13]||(g[13]=m=>$.value=!1)},{footer:Oe(()=>[e("div",Yv,[e("button",{class:"btn btn-secondary",disabled:x.value,onClick:g[12]||(g[12]=m=>$.value=!1)},t(s(d)("common.cancel")),9,Xv),e("button",{class:"btn btn-primary",disabled:x.value,onClick:L},t(x.value?s(d)("common.saving"):s(d)("common.save")),9,e_)])]),default:Oe(()=>[e("div",Sv,[O.value.valid?C("",!0):(l(),u("div",Tv,[e("div",Dv,t(s(d)("admin.ops.alertRules.validation.title")),1),e("ul",Ev,[(l(!0),u(ue,null,pe(O.value.errors,m=>(l(),u("li",{key:m},t(m),1))),128))])])),e("div",qv,[e("div",Mv,[e("label",Vv,t(s(d)("admin.ops.alertRules.form.name")),1),se(e("input",{"onUpdate:modelValue":g[0]||(g[0]=m=>y.value.name=m),class:"input",type:"text"},null,512),[[le,y.value.name]])]),e("div",Lv,[e("label",Av,t(s(d)("admin.ops.alertRules.form.description")),1),se(e("input",{"onUpdate:modelValue":g[1]||(g[1]=m=>y.value.description=m),class:"input",type:"text"},null,512),[[le,y.value.description]])]),e("div",null,[e("label",Fv,t(s(d)("admin.ops.alertRules.form.metric")),1
3),I(ce,{modelValue:y.value.metric_type,"onUpdate:modelValue":g[2]||(g[2]=m=>y.value.metric_type=m),options:W.value},null,8,["modelValue","options"]),ee.value?(l(),u("div",Ov,[e("p",null,t(ee.value.description),1),e("p",null,t(s(d)("admin.ops.alertRules.hints.recommended",{operator:ee.value.recommendedOperator,threshold:ee.value.recommendedThreshold,unit:ee.value.unit||""})),1)])):C("",!0)]),e("div",null,[e("label",Iv,t(s(d)("admin.ops.alertRules.form.operator")),1),I(ce,{modelValue:y.value.operator,"onUpdate:modelValue":g[3]||(g[3]=m=>y.value.operator=m),options:Q.value},null,8,["modelValue","options"])]),e("div",jv,[e("label",Pv,[z(t(s(d)("admin.ops.alertRules.form.groupId"))+" ",1),A.value?(l(),u("span",Uv,"*")):C("",!0)]),I(ce,{modelValue:ne.value,"onUpdate:modelValue":g[4]||(g[4]=m=>ne.value=m),options:Y.value,searchable:"",placeholder:s(d)("admin.ops.alertRules.form.groupPlaceholder"),error:A.value&&!ne.value},null,8,["modelValue","options","placeholder","error"]),e("p",Nv,t(A.value?s(d)("admin.ops.alertRules.hints.groupRequired"):s(d)("admin.ops.alertRules.hints.groupOptional")),1)]),e("div",null,[e("label",zv,t(s(d)("admin.ops.alertRules.form.threshold")),1),se(e("input",{"onUpdate:modelValue":g[5]||(g[5]=m=>y.value.threshold=m),class:"input",type:"number"},null,512),[[le,y.value.threshold,void 0,{number:!0}]])]),e("div",null,[e("label",Hv,t(s(d)("admin.ops.alertRules.form.severity")),1),I(ce,{modelValue:y.value.severity,"onUpdate:modelValue":g[6]||(g[6]=m=>y.value.severity=m),options:k.value},null,8,["modelValue","options"])]),e("div",null,[e("label",Bv,t(s(d)("admin.ops.alertRules.form.window")),1),I(ce,{modelValue:y.value.window_minutes,"onUpdate:modelValue":g[7]||(g[7]=m=>y.value.window_minutes=m),options:c.value},null,8,["modelValue","options"])]),e("div",null,[e("label",Qv,t(s(d)("admin.ops.alertRules.form.sustained")),1),se(e("input",{"onUpdate:modelValue":g[8]||(g[8]=m=>y.value.sustained_minutes=m),class:"input",type:"number",min:"1",max:"1440"},null,512),[[le,y.value.sustained_minutes,void 0,{number:!0}]])]),e("div",null,[e("label",Wv,t(s(d)("admin.ops.alertRules.form.cooldown")),1),se(e("input",{"onUpdate:modelValue":g[9]||(g[9]=m=>y.value.cooldown_minutes=m),class:"input",type:"number",min:"0",max:"1440"},null,512),[[le,y.value.cooldown_minutes,void 0,{number:!0}]])]),e("div",Gv,[e("span",Kv,t(s(d)("admin.ops.alertRules.form.enabled")),1),se(e("input",{"onUpdate:modelValue":g[10]||(g[10]=m=>y.value.enabled=m),type:"checkbox",class:"h-4 w-4 rounded border-gray-300 text-primary-600 focus:ring-primary-500"},null,512),[[Mt,y.value.enabled]])]),e("div",Zv,[e("span",Jv,t(s(d)("admin.ops.alertRules.form.notifyEmail")),1),se(e("input",{"onUpdate:modelValue":g[11]||(g[11]=m=>y.value.notify_email=m),type:"checkbox",class:"h-4 w-4 rounded border-gray-300 text-primary-600 focus:ring-primary-500"},null,512),[[Mt,y.value.notify_email]])])])])]),_:1},8,["show","title"]),I(Cs,{show:B.value,title:s(d)("admin.ops.alertRules.deleteConfirmTitle"),message:s(d)("admin.ops.alertRules.deleteConfirmMessage"),confirmText:s(d)("common.delete"),cancelText:s(d)("common.cancel"),onConfirm:xe,onCancel:me},null,8,["show","title","message","confirmText","cancelText"])]))}}),s_={key:0,class:"rounded-2xl bg-red-50 p-4 text-sm text-red-600 dark:bg-red-900/20 dark:text-red-400"},a_={key:3,class:"grid grid-cols-1 gap-6 lg:grid-cols-4"},n_={class:"lg:col-span-1 min-h-[360px]"},o_={class:"lg:col-span-1 h-[360px]"},l_={class:"lg:col-span-2 h-[360px]"},r_={key:4,class:"grid grid-cols-1 gap-6 md:grid-cols-3"},i_={key:5,class:"grid grid-cols-1 gap-6"},es=5,q_=be({__name:"OpsDashboard",setup(ie){const d=ds(),a=us(),T=pt(),n=ts(),{t:P}=we(),D=_(()=>n.opsMonitoringEnabled),q=new Set(["5m","30m","1h","6h","24h","custom"]),$=new Set(["auto","raw","preagg"]),x=b(!0),v=b(!1),y=b(""),G=b(new Date),E=b("1h"),p=b(""),R=b(null),A=b("auto"),ne=b(null),Y=b(null),de=`${es}h`,ee=es*60*60*1e3,W={timeRange:"tr",platform:"platform",groupId:"group_id",queryMode:"mode",fullscreen:"fullscreen",openErrorDetails:"open_error_details",errorType:"error_type",alertRuleId:"alert_rule_id",openAlertRules:"open_alert_rules"},Q=b(!1),k=b(!1),c=_(()=>{const f=d.query[W.fullscreen];return f==="1"||f==="true"});function i(){const f={...d.query};delete f[W.fullscreen],a.replace({query:f})}function F(){const f={...d.query,[W.fullscreen]:"1"};a.replace({query:f})}function M(f){f.key==="Escape"&&c.value&&i()}let O=null,L=0;function B(f){return!!f&&typeof f=="object"&&"code"in f&&f.code==="ERR_CANCELED"}function Z(){O&&(O.abort(),O=null)}const ve=f=>{const V=d.query[f];return typeof V=="string"?V:Array.isArray(V)&&typeof V[0]=="string"?V[0]:""},xe=f=>{const V=ve(f);if(!V)return null;const U=Number.parseInt(V,10);return Number.isFinite(U)?U:null},me=()=>{const f=ve(W.timeRange);f&&q.has(f)&&(E.value=f),p.value=ve(W.platform)||"";const V=xe(W.groupId);R.value=typeof V=="number"&&V>0?V:null;const U=ve(W.queryMode);
3if(U&&$.has(U))A.value=U;else{const Ee=n.opsQueryModeDefault||"auto";A.value=$.has(Ee)?Ee:"auto"}const Ne=ve(W.openAlertRules);(Ne==="1"||Ne==="true")&&(Ae.value=!0);const Ze=xe(W.alertRuleId);typeof Ze=="number"&&Ze>0&&(Ae.value=!0);const Ve=ve(W.openErrorDetails);if(Ve==="1"||Ve==="true"){const Ee=ve(W.errorType);Be.value=Ee==="upstream"?"upstream":"request",Ce.value=!0}},j=()=>{const f={...d.query};return Object.values(W).forEach(V=>{delete f[V]}),E.value!=="1h"&&(f[W.timeRange]=E.value),p.value&&(f[W.platform]=p.value),typeof R.value=="number"&&R.value>0&&(f[W.groupId]=String(R.value)),A.value!=="auto"&&(f[W.queryMode]=A.value),f},g=ks(async()=>{if(Q.value)return;const f=j(),V=d.query,U=Object.keys(f),Ne=Object.keys(V);if(!(U.length===Ne.length&&U.every(Ee=>String(V[Ee]??"")===String(f[Ee]??""))))try{k.value=!0,await a.replace({query:f})}finally{k.value=!1}},250),m=b(null),w=b(null),oe=b(null),$e=b(!1),Te=b(null),De=b(!1),Ie=b(null),N=b(!1),S=b(null),h=b(!1),J=b(null),ae=b(!1),fe=b(null),ye=b(!1),Ce=b(!1),Be=b("request"),Qe=b(!1),Ke=b({title:"",kind:"all",sort:"created_at_desc"}),je=b(!1),Ae=b(!1);me();const tt=b(!0),st=b(!1),Pe=b(!1),Ye=b(3e4),he=b(0),Re=b(0),{pause:St,resume:gt}=hs(()=>{if(Pe.value&&D.value&&!x.value){if(he.value<=0){Me();return}he.value-=1}},1e3,{immediate:!1});async function Fe(){try{const f=await te.getAdvancedSettings();tt.value=f.display_alert_events,st.value=f.display_openai_token_stats,Pe.value=f.auto_refresh_enabled,Ye.value=f.auto_refresh_interval_seconds*1e3,he.value=f.auto_refresh_interval_seconds}catch(f){console.error("[OpsDashboard] Failed to load dashboard advanced settings",f),tt.value=!0,st.value=!1,Pe.value=!1,Ye.value=3e4,he.value=0}}function vt(f){p.value=f||"",R.value=null}function _t(f){const V=Number.isFinite(f)&&f>0?f:null;R.value=V}function at(f){const V={title:P("admin.ops.requestDetails.title"),kind:"all",sort:"created_at_desc"};Ke.value={...V,...f??{}},Ke.value.title||(Ke.value.title=V.title),Ce.value=!1,ye.value=!1,Qe.value=!0}function nt(f){Be.value=f,Qe.value=!1,ye.value=!1,Ce.value=!0}function At(f){typeof f=="string"&&q.has(f)&&(E.value=f)}function xt(f,V){ne.value=f,Y.value=V}async function ft(){await Fe(),Et(),Me()}function Ft(f){p.value=typeof f=="string"?f:""}function yt(f){if(f===null){R.value=null;return}if(typeof f=="number"){R.value=f>0?f:null;return}if(typeof f=="string"){const V=Number.parseInt(f,10);R.value=Number.isFinite(V)&&V>0?V:null}}function Ot(f){typeof f=="string"&&$.has(f)&&(A.value=f)}function ot(f){fe.value=f,Ce.value=!1,Qe.value=!1,ye.value=!0}function Ue(){const f={platform:p.value||void 0,group_id:R.value??void 0,mode:A.value};return E.value==="custom"?ne.value&&Y.value?(f.start_time=ne.value,f.end_time=Y.value):f.time_range="1h":f.time_range=E.value,f}function Tt(){const f={platform:p.value||void 0,group_id:R.value??void 0,mode:A.value},V=new Date,U=new Date(V.getTime()-ee);return f.start_time=U.toISOString(),f.end_time=V.toISOString(),f}async function bt(f,V){if(D.value)try{const U=await te.getDashboardOverview(Ue(),{signal:V});if(f!==L)return;m.value=U}catch(U){if(f!==L||B(U))return;m.value=null,T.showError((U==null?void 0:U.message)||P("admin.ops.failedToLoadOverview"))}}async function lt(f,V){if(D.value){De.value=!0;try{const U=await te.getThroughputTrend(Tt(),{signal:V});if(f!==L)return;Te.value=U}catch(U){if(f!==L||B(U))return;Te.value=null,T.showError((U==null?void 0:U.message)||P("admin.ops.failedToLoadSwitchTrend"))}finally{f===L&&(De.value=!1)}}}async function Xe(f,V){if(D.value){$e.value=!0;try{const U=await te.getThroughputTrend(Ue(),{signal:V});if(f!==L)return;oe.value=U}catch(U){if(f!==L||B(U))return;oe.value=null,T.showError((U==null?void 0:U.message)||P("admin.ops.failedToLoadThroughputTrend"))}finally{f===L&&($e.value=!1)}}}async function It(f,V){if(D.value){$e.value=!0,h.value=!0;try{const U=await te.getDashboardSnapshotV2(Ue(),{signal:V});if(f!==L)return;m.value=U.overview,oe.value=U.throughput_trend,S.value=U.error_trend}catch(U){if(f!==L||B(U))return;await Promise.all([bt(f,V),Xe(f,V),et(f,V)])}finally{f===L&&($e.value=!1,h.value=!1)}}}async function jt(f,V){if(D.value){N.value=!0;try{const U=await te.getLatencyHistogram(Ue(),{signal:V});if(f!==L)return;Ie.value=U}catch(U){if(f!==L||B(U))return;Ie.value=null,T.showError((U==null?void 0:U.message)||P("admin.ops.failedToLoadLatencyHistogram"))}finally{f===L&&(N.value=!1)}}}async function et(f,V){if(D.value){h.value=!0;try{const U=await te.getErrorTrend(Ue(),{signal:V});if(f!==L)return;S.value=U}catch(U){if(f!==L||B(U))return;S.value=null,T.showError((U==null?void 0:U.message)||P("admin.ops.failedToLoadErrorTrend"))}finally{f===L&&(h.value=!1)}}}async function rt(f,V){if(D.value){ae.value=!0;try{const U=await te.getErrorDistribution(Ue(),{signal:V});if(f!==L)return;J.value=U}catch(U){if(f!==L||B(U))return;J.value=null,T.showError((U==null?void 0:U.message)||P("admin.ops.failedToLoadErrorDistribution"))}finally{f===L&&(ae.value=!1)}}}async function Dt(f,V){D.value&&await Promise.all([jt(f,V),rt(f,V)])}function it(f){return!!f&&typeof f=="object"&&"code"in f&&typeof f.code=="string"&&f.code==="OPS_DISABLED"}async function Me(){if(!D.value)return;Z(),L+=1;const f=L;O=new AbortController,x.value=!0,y.value="";try{if(await Promise.all([It(f,O.signal),lt(f,O.signal)]),f!==L)return;G.value=new Date,Re.value+=1,Pe.value&&(he.value=Math.floor(Ye.value/1e3)),Dt(f,O.signal)}catch(V){it(V)||(console.error("[ops] failed to fetch dashboard data",V),y.value=P("admin.ops.failedToLoadData"))}finally{f===L&&(x.value=!1,v.value=!0)}}ge(()=>[E.value,p.value,R.value,A.value],()=>{Q.value||(D.value&&Me(),g())}),ge(()=>d.query,()=>{if(k.value)return;const f=E.value,V=p.value,U=R.value;
3Q.value=!0,me(),Q.value=!1,(f!==E.value||V!==p.value||U!==R.value)&&D.value&&Me()}),kt(async()=>{if(window.addEventListener("keydown",M),await n.fetch(),!n.opsMonitoringEnabled){await a.replace("/admin/settings");return}Et(),await Fe(),D.value&&await Me(),Pe.value&>()});async function Et(){try{const f=await te.getMetricThresholds();w.value=f||null}catch(f){console.warn("[OpsDashboard] Failed to load thresholds",f),w.value=null}}return cs(()=>{window.removeEventListener("keydown",M),Z(),St()}),ge(Pe,f=>{f?(he.value=Math.floor(Ye.value/1e3),gt()):(St(),he.value=0)}),ge(je,async f=>{f||await Fe()}),(f,V)=>(l(),re(ps(c.value?"div":ms),{class:H(c.value?"flex min-h-screen flex-col justify-center bg-gray-50 dark:bg-dark-950":"")},{default:Oe(()=>{var U,Ne,Ze,Ve,Ee;return[e("div",{class:H([c.value?"p-4 md:p-6":"","space-y-6 pb-12"])},[y.value?(l(),u("div",s_,t(y.value),1)):C("",!0),x.value&&!v.value?(l(),re(rl,{key:1,fullscreen:c.value},null,8,["fullscreen"])):D.value?(l(),re(Bo,{key:2,overview:m.value,platform:p.value,"group-id":R.value,"time-range":E.value,"query-mode":A.value,loading:x.value,"last-updated":G.value,thresholds:w.value,"auto-refresh-enabled":Pe.value,"auto-refresh-countdown":he.value,fullscreen:c.value,"custom-start-time":ne.value,"custom-end-time":Y.value,"onUpdate:timeRange":At,"onUpdate:platform":Ft,"onUpdate:group":yt,"onUpdate:queryMode":Ot,"onUpdate:customTimeRange":xt,onRefresh:Me,onOpenRequestDetails:at,onOpenErrorDetails:nt,onOpenSettings:V[0]||(V[0]=Se=>je.value=!0),onOpenAlertRules:V[1]||(V[1]=Se=>Ae.value=!0),onEnterFullscreen:F,onExitFullscreen:i},null,8,["overview","platform","group-id","time-range","query-mode","loading","last-updated","thresholds","auto-refresh-enabled","auto-refresh-countdown","fullscreen","custom-start-time","custom-end-time"])):C("",!0),D.value&&!(x.value&&!v.value)?(l(),u("div",a_,[e("div",n_,[I(dr,{"platform-filter":p.value,"group-id-filter":R.value,"refresh-token":Re.value},null,8,["platform-filter","group-id-filter","refresh-token"])]),e("div",o_,[I(Si,{points:((U=Te.value)==null?void 0:U.points)??[],loading:De.value,"time-range":de,fullscreen:c.value},null,8,["points","loading","fullscreen"])]),e("div",l_,[I(bi,{points:((Ne=oe.value)==null?void 0:Ne.points)??[],"by-platform":((Ze=oe.value)==null?void 0:Ze.by_platform)??[],"top-groups":((Ve=oe.value)==null?void 0:Ve.top_groups)??[],loading:$e.value,"time-range":E.value,fullscreen:c.value,onSelectPlatform:vt,onSelectGroup:_t,onOpenDetails:at},null,8,["points","by-platform","top-groups","loading","time-range","fullscreen"])])])):C("",!0),D.value&&!(x.value&&!v.value)?(l(),u("div",r_,[I(ei,{"latency-data":Ie.value,loading:N.value},null,8,["latency-data","loading"]),I(wr,{data:J.value,loading:ae.value,onOpenDetails:V[2]||(V[2]=Se=>nt("request"))},null,8,["data","loading"]),I(Wr,{points:((Ee=S.value)==null?void 0:Ee.points)??[],loading:h.value,"time-range":E.value,onOpenRequestErrors:V[3]||(V[3]=Se=>nt("request")),onOpenUpstreamErrors:V[4]||(V[4]=Se=>nt("upstream"))},null,8,["points","loading","time-range"])])):C("",!0),D.value&&st.value&&!(x.value&&!v.value)?(l(),u("div",i_,[I(yc,{"platform-filter":p.value,"group-id-filter":R.value,"refresh-token":Re.value},null,8,["platform-filter","group-id-filter","refresh-token"])])):C("",!0),D.value&&tt.value&&!(x.value&&!v.value)?(l(),re(xu,{key:6})):C("",!0),D.value&&!(x.value&&!v.value)?(l(),re(V0,{key:7,"platform-filter":p.value,"refresh-token":Re.value},null,8,["platform-filter","refresh-token"])):C("",!0),c.value?C("",!0):(l(),u(ue,{key:8},[I(Mg,{show:je.value,onClose:V[5]||(V[5]=Se=>je.value=!1),onSaved:ft},null,8,["show"]),I(Je,{show:Ae.value,title:s(P)("admin.ops.alertRules.title"),width:"extra-wide",onClose:V[6]||(V[6]=Se=>Ae.value=!1)},{default:Oe(()=>[I(t_)]),_:1},8,["show","title"]),I(Or,{show:Ce.value,"time-range":E.value,platform:p.value,"group-id":R.value,"error-type":Be.value,"onUpdate:show":V[7]||(V[7]=Se=>Ce.value=Se),onOpenErrorDetail:ot},null,8,["show","time-range","platform","group-id","error-type"]),I(_s,{show:ye.value,"onUpdate:show":V[8]||(V[8]=Se=>ye.value=Se),"error-id":fe.value,"error-type":Be.value},null,8,["show","error-id","error-type"]),I(Sp,{modelValue:Qe.value,"onUpdate:modelValue":V[9]||(V[9]=Se=>Qe.value=Se),"time-range":E.value,preset:Ke.value,platform:p.value,"group-id":R.value,onOpenErrorDetail:ot},null,8,["modelValue","time-range","preset","platform","group-id"])],64))],2)]}),_:1},8,["class"]))}});
3export{q_ 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.