1import{d as ke,r as b,c as _,w as ge,o as Ct,z as u,B as e,E as C,k as I,H as z,G as t,u as s,A as H,F as ue,V as pe,D as ie,S as mt,K as Ae,Q as se,W as re,C as l,a0 as ds,q as Zt,$ as Vt,Y as Jt,U as Yt,X as us,Z as cs,a as ps,J as ms}from"./vendor-vue-Dzwqm9Y9.js";import{_ as gs}from"./AppLayout.vue_vue_type_script_setup_true_lang-DU-NXSvm.js";import{b as ns,j as os,aD as ze,_ as Ne,g as Xe,aa as te,D as vs,a as gt}from"./index-BB-1BiLf.js";import{S as ce}from"./Select-unWSiPwC.js";import{C as _s}from"./platforms-BQiEVrJv.js";import{_ as _e}from"./HelpTooltip.vue_vue_type_script_setup_true_lang-gHutfHq8.js";import{f as Xt,_ as xs,s as $t,b as Ht,c as We,p as es,a as fs}from"./OpsErrorLogTable.vue_vue_type_script_setup_true_lang-Brz3-qCT.js";import{u as $e}from"./vendor-i18n-BuoWFzps.js";import{C as Rt,A as ys,p as St,a as Tt,D as bs,e as Bt,c as Qt,L as Lt,P as Wt,b as At,i as Gt,d as Kt,B as hs,f as ks}from"./vendor-chart-BNlN3Otn.js";import{_ as vt}from"./EmptyState.vue_vue_type_script_setup_true_lang-DJjIeSM_.js";import{b as Dt,a as ws,u as $s}from"./vendor-ui-mF4M59HB.js";import{P as ls}from"./Pagination-BuZWDbKf.js";import{b as Cs}from"./apiError-BcAuv_LF.js";import{u as Rs}from"./useClipboard-00CrFCqB.js";import{_ as Ee}from"./Toggle.vue_vue_type_script_setup_true_lang-CwidWQzY.js";import{_ as Ss}from"./ConfirmDialog.vue_vue_type_script_setup_true_lang-G7SCzKKv.js";import"./AppHeader.vue_vue_type_style_index_0_scoped_80f3916c_lang-CWJeTQGo.js";import"./vendor-misc-B-nM3tYW.js";import"./featureFlags-DuhANbyz.js";import"./LocaleSwitcher-DwqRgoPh.js";/* empty css */import"./DataTable-BszWCXiN.js";import"./errorBadges-It0ru3B2.js";import"./usePersistedPageSize-x0WpaIWh.js";const Ts={class:"flex flex-wrap items-center justify-between gap-4 border-b border-gray-100 pb-4 dark:border-dark-700"},Ds={class:"flex items-center gap-2 text-xl font-black text-gray-900 dark:text-white"},Es={key:0,class:"mt-1 flex items-center gap-3 text-xs text-gray-500 dark:text-gray-400"},qs=["title"],Ms={class:"relative flex h-2 w-2"},Vs={class:"flex flex-wrap items-center gap-3"},Ls=["disabled","title"],As={key:3,class:"mx-1 hidden h-4 w-[1px] bg-gray-200 dark:bg-dark-700 sm:block"},Fs=["title"],Os={class:"hidden sm:inline"},Is=["title"],js={class:"hidden sm:inline"},Ps=["title"],Us={key:0,class:"grid grid-cols-1 gap-6 lg:grid-cols-12"},Ns={class:"grid h-full grid-cols-1 gap-6 md:grid-cols-[200px_1fr] md:items-center"},zs={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"},Hs={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"},Bs={class:"rounded-xl bg-white p-4 shadow-xl ring-1 ring-black/5 dark:bg-dark-800 dark:ring-white/10"},Qs={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"},Ws={class:"space-y-3"},Gs={class:"mt-0.5 shrink-0"},Ks={key:0,class:"h-4 w-4 text-red-500",fill:"currentColor",viewBox:"0 0 20 20"},Zs={key:1,class:"h-4 w-4 text-yellow-500",fill:"currentColor",viewBox:"0 0 20 20"},Js={key:2,class:"h-4 w-4 text-blue-500",fill:"currentColor",viewBox:"0 0 20 20"},Ys={class:"flex-1"},Xs={class:"text-xs font-semibold text-gray-900 dark:text-white"},ea={class:"mt-0.5 text-[11px] text-gray-500 dark:text-gray-400"},ta={key:0,class:"mt-1 text-[11px] text-blue-600 dark:text-blue-400 flex items-center gap-1"},sa={class:"mt-3 border-t border-gray-100 pt-2 text-[10px] text-gray-400 dark:border-dark-700"},aa={class:"relative flex items-center justify-center"},na=["width","height"],oa=["cx","cy","r","stroke-width"],la=["cx","cy","r","stroke-width","stroke","stroke-dasharray","stroke-dashoffset"],ra={class:"absolute flex flex-col items-center"},ia={key:0,class:"mt-4 text-center"},da={class:"flex items-center justify-center gap-1 text-xs font-medium text-gray-500"},ua={class:"flex h-full flex-col justify-center py-2"},ca={class:"mb-3 flex flex-wrap items-center justify-between gap-2"},pa={class:"flex items-center gap-2"},ma={class:"text-xs font-bold uppercase tracking-wider text-gray-400"},ga={class:"flex flex-wrap gap-1"},va=["onClick"],_a={class:"mt-1 flex flex-wrap items-baseline gap-x-4 gap-y-2"},xa={class:"flex items-baseline gap-1.5"},fa={class:"flex items-baseline gap-1.5"},ya={class:"grid grid-cols-2 gap-3"},ba={class:"flex items-baseline gap-1.5"},ha={class:"font-black text-gray-900 dark:text-white"},ka={class:"flex items-baseline gap-1.5"},wa={class:"font-black text-gray-900 dark:text-white"},$a={class:"text-xs"},Ca={class:"flex items-baseline gap-1.5"},Ra={class:"font-black text-gray-900 dark:text-white"},Sa={class:"flex items-baseline gap-1.5"},Ta={class:"font-black text-gray-900 dark:text-white"},Da={class:"text-xs"},Ea={class:"grid h-full grid-cols-1 content-center gap-4 sm:grid-cols-2 lg:col-span-7 lg:grid-cols-3"},qa={class:"rounded-2xl bg-gray-50 p-4 dark:bg-dark-900",style:{order:"1"}},Ma={class:"flex items-center justify-between"},Va={class:"flex items-center gap-1"},La={class:"text-[10px] font-bold uppercase text-gray-400"},Aa={class:"mt-2 space-y-2 text-xs"},Fa={class:"flex justify-between"},Oa={class:"text-gray-500"},Ia={class:"font-bold text-gray-900 dark:text-white"},ja={class:"flex justify-between"},Pa={class:"text-gray-500"},Ua={class:"font-bold text-gray-900 dark:text-white"},Na={class:"flex justify-between"},za={class:"text-gray-500"},Ha={class:"font-bold text-gray-900 dark:text-white"},Ba={class:"flex justify-between"},Qa={class:"text-gray-500"},Wa={class:"font-bold text-gray-900 dark:text-white"},Ga={class:"rounded-2xl bg-gray-50 p-4 dark:bg-dark-900",style:{order:"2"}},Ka={class:"flex items-center justify-between"},Za={class:"flex items-center gap-2"},Ja={class:"text-[10px] font-bold uppercase text-gray-400"},Ya={class:"mt-3 h-2 w-full overflow-hidden rounded-full bg-gray-200 dark:bg-dark-700"},Xa={class:"mt-3 text-xs"},en={class:"flex justify-between"},tn={class:"text-gray-500"},sn={class:"font-bold text-gray-900 dark:text-white"},an={class:"rounded-2xl bg-gray-50 p-4 dark:bg-dark-900",style:{order:"4"}},nn={class:"flex items-center justify-between"},on={class:"flex items-center gap-1"},ln={class:"text-[10px] font-bold uppercase text-gray-400"},rn={class:"mt-2 flex items-baseline gap-2"},dn={class:"text-3xl font-black text-gray-900 dark:text-white"},un={class:"mt-3 grid grid-cols-1 gap-x-3 gap-y-1 text-xs 2xl:grid-cols-2"},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:"flex items-baseline gap-1 whitespace-nowrap"},bn={class:"font-bold text-gray-900 dark:text-white"},hn={class:"rounded-2xl bg-gray-50 p-4 dark:bg-dark-900",style:{order:"5"}},kn={class:"flex items-center justify-between"},wn={class:"flex items-center gap-1"},$n={class:"mt-2 flex items-baseline gap-2"},Cn={class:"mt-3 grid grid-cols-1 gap-x-3 gap-y-1 text-xs 2xl:grid-cols-2"},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:"flex items-baseline gap-1 whitespace-nowrap"},En={class:"flex items-baseline gap-1 whitespace-nowrap"},qn={class:"rounded-2xl bg-gray-50 p-4 dark:bg-dark-900",style:{order:"3"}},Mn={class:"flex items-center justify-between"},Vn={class:"flex items-center gap-1"},Ln={class:"text-[10px] font-bold uppercase text-gray-400"},An={class:"mt-3 space-y-1 text-xs"},Fn={class:"flex justify-between"},On={class:"text-gray-500"},In={class:"font-bold text-gray-900 dark:text-white"},jn={class:"flex justify-between"},Pn={class:"text-gray-500"},Un={class:"font-bold text-gray-900 dark:text-white"},Nn={class:"rounded-2xl bg-gray-50 p-4 dark:bg-dark-900",style:{order:"6"}},zn={class:"flex items-center justify-between"},Hn={class:"flex items-center gap-1"},Bn={class:"text-[10px] font-bold uppercase text-gray-400"},Qn={class:"mt-3 space-y-1 text-xs"},Wn={class:"flex justify-between"},Gn={class:"text-gray-500"},Kn={class:"font-bold text-gray-900 dark:text-white"},Zn={class:"flex justify-between"},Jn={class:"font-bold text-gray-900 dark:text-white"},Yn={key:1,class:"mt-2 border-t border-gray-100 pt-4 dark:border-dark-700"},Xn={class:"grid grid-cols-2 gap-3 sm:grid-cols-3 lg:grid-cols-6"},eo={class:"rounded-xl bg-gray-50 p-3 dark:bg-dark-900"},to={class:"flex items-center gap-1"},so={key:0,class:"mt-1 text-[10px] text-gray-500 dark:text-gray-400"},ao={class:"rounded-xl bg-gray-50 p-3 dark:bg-dark-900"},no={class:"flex items-center gap-1"},oo={class:"text-[10px] font-bold uppercase tracking-wider text-gray-400"},lo={key:0,class:"mt-1 text-[10px] text-gray-500 dark:text-gray-400"},ro={class:"rounded-xl bg-gray-50 p-3 dark:bg-dark-900"},io={class:"flex items-center gap-1"},uo={class:"text-[10px] font-bold uppercase tracking-wider text-gray-400"},co={key:0,class:"mt-1 text-[10px] text-gray-500 dark:text-gray-400"},po={key:0},mo={class:"rounded-xl bg-gray-50 p-3 dark:bg-dark-900"},go={class:"flex items-center gap-1"},vo={key:0,class:"mt-1 text-[10px] text-gray-500 dark:text-gray-400"},_o={key:0},xo={key:1},fo={class:"rounded-xl bg-gray-50 p-3 dark:bg-dark-900"},yo={class:"flex items-center gap-1"},bo={class:"text-[10px] font-bold uppercase tracking-wider text-gray-400"},ho={key:0,class:"mt-1 text-[10px] text-gray-500 dark:text-gray-400"},ko={class:"font-mono"},wo={key:0},$o={class:"font-mono"},Co={class:"rounded-xl bg-gray-50 p-3 dark:bg-dark-900"},Ro={class:"flex items-center justify-between gap-2"},So={class:"flex items-center gap-1"},To={class:"text-[10px] font-bold uppercase tracking-wider text-gray-400"},Do={key:0,class:"mt-1 text-[10px] text-gray-500 dark:text-gray-400"},Eo={class:"font-mono"},qo={class:"font-mono"},Mo={key:0,class:"text-sm text-gray-500 dark:text-gray-400"},Vo={key:1,class:"space-y-3"},Lo={class:"flex items-center justify-between gap-3"},Ao={class:"truncate text-sm font-semibold text-gray-900 dark:text-white"},Fo={class:"flex items-center gap-3 text-xs text-gray-500 dark:text-gray-400"},Oo={key:0,class:"font-mono"},Io={class:"mt-2 grid grid-cols-1 gap-2 text-xs text-gray-600 dark:text-gray-300 sm:grid-cols-2"},jo={class:"font-mono"},Po={class:"font-mono"},Uo={class:"font-mono"},No={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"},zo={class:"space-y-4"},Ho={class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"},Bo={class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1"},Qo={class:"flex justify-end gap-3 pt-2"},ts=8e3,ss=15e3,Wo=ke({__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(ne,{emit:d}){const a=ne,T=d,{t:n}=$e(),P=ns(),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 K=b(!1),M=b(""),p=b("");function R(r,o){const W=new Date(r),we=new Date(o),Ue=X=>{const Qe=String(X.getMonth()+1).padStart(2,"0"),Mt=String(X.getDate()).padStart(2,"0"),ct=String(X.getHours()).padStart(2,"0"),pt=String(X.getMinutes()).padStart(2,"0");return`${Qe}-${Mt} ${ct}:${pt}`};return`${Ue(W)} ~ ${Ue(we)}`}const A=b([]),oe=_(()=>[{value:"",label:n("common.all")},..._s]),J=_(()=>[{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(W=>W.id===a.groupId);o&&o.platform!==r&&T("update:group",null)}
1),Ct(async()=>{try{const r=await os.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 G(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 W=new Date,we=new Date(W.getTime()-60*60*1e3);M.value=we.toISOString().slice(0,16),p.value=W.toISOString().slice(0,16),K.value=!0}else T("update:timeRange",o)}function k(){if(!M.value||!p.value)return;const r=new Date(M.value).toISOString(),o=new Date(p.value).toISOString();T("update:customTimeRange",r,o),T("update:timeRange","custom"),K.value=!1}function c(){K.value=!1}function i(r){T("openRequestDetails",r)}function F(r){T("openErrorDetails",r)}function E(r){var we;if(r==null)return"normal";const o=(we=a.thresholds)==null?void 0:we.sla_percent_min;if(o==null)return"normal";const W=.1;return r<o?"critical":r<o+W?"warning":"normal"}function O(r){var W;if(r==null)return"normal";const o=(W=a.thresholds)==null?void 0:W.ttft_p99_ms_max;return o==null?"normal":r>=o?"critical":r>=o*.8?"warning":"normal"}function V(r){var W;if(r==null)return"normal";const o=(W=a.thresholds)==null?void 0:W.request_error_rate_percent_max;return o==null?"normal":r>=o?"critical":r>=o*.8?"warning":"normal"}function B(r){var W;if(r==null)return"normal";const o=(W=a.thresholds)==null?void 0:W.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 ze(((r=q.value)==null?void 0:r.request_count_total)??0)}),xe=_(()=>{var r;return ze(((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,W])=>{r&&(W||o===0&&m())});const w=_(()=>{var o,W;const r=(W=(o=me.value)==null?void 0:o.qps)==null?void 0:W.current;return typeof r=="number"&&Number.isFinite(r)?r:0}),le=_(()=>{var o,W;const r=(W=(o=me.value)==null?void 0:o.tps)==null?void 0:W.current;return typeof r=="number"&&Number.isFinite(r)?r:0}),Ce=_(()=>{var o,W;const r=(W=(o=me.value)==null?void 0:o.qps)==null?void 0:W.peak;return typeof r=="number"&&Number.isFinite(r)?r.toFixed(1):"-"}),Te=_(()=>{var o,W;const r=(W=(o=me.value)==null?void 0:o.tps)==null?void 0:W.peak;return typeof r=="number"&&Number.isFinite(r)?r.toFixed(1):"-"}),De=_(()=>{var o,W;const r=(W=(o=me.value)==null?void 0:o.qps)==null?void 0:W.avg;return typeof r=="number"&&Number.isFinite(r)?r.toFixed(1):"-"}),Fe=_(()=>{var o,W;const r=(W=(o=me.value)==null?void 0:o.tps)==null?void 0:W.avg;return typeof r=="number"&&Number.isFinite(r)?r.toFixed(1):"-"}),N=_(()=>{var o,W;const r=(W=(o=q.value)==null?void 0:o.qps)==null?void 0:W.avg;return typeof r!="number"?"-":r.toFixed(1)}),S=_(()=>{var o,W;const r=(W=(o=q.value)==null?void 0:o.tps)==null?void 0:W.avg;return typeof r!="number"?"-":r.toFixed(1)}),h=_(()=>{var o,W;const r=(o=q.value)==null?void 0:o.sla;return typeof r!="number"||(((W=q.value)==null?void 0:W.request_count_sla)??0)<=0?null:r*100}),Y=_(()=>{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}),be=_(()=>{var r,o;return((o=(r=q.value)==null?void 0:r.duration)==null?void 0:o.p90_ms)??null}),He=_(()=>{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}),Ge=_(()=>{var r,o;return((o=(r=q.value)==null?void 0:r.duration)==null?void 0:o.max_ms)??null}),Oe=_(()=>{var r,o;return((o=(r=q.value)==null?void 0:r.ttft)==null?void 0:o.p99_ms)??null}),Ie=_(()=>{var r,o;return((o=(r=q.value)==null?void 0:r.ttft)==null?void 0:o.p95_ms)??null}),et=_(()=>{var r,o;return((o=(r=q.value)==null?void 0:r.ttft)==null?void 0:o.p90_ms)??null}),Ke=_(()=>{var r,o;return((o=(r=q.value)==null?void 0:r.ttft)==null?void 0:o.p50_ms)??null}),lt=_(()=>{var r,o;return((o=(r=q.value)==null?void 0:r.ttft)==null?void 0:o.avg_ms)??null}),rt=_(()=>{var r,o;return((o=(r=q.value)==null?void 0:r.ttft)==null?void 0:o.max_ms)??null}),Re=_(()=>{var we;const r=q.value;if(!r)return!0;const o=(we=r.qps)==null?void 0:we.current,W=r.error_rate??0;return(o??0)===0&&W===0}),Se=_(()=>{var o;const r=(o=q.value)==null?void 0:o.health_score;return typeof r=="number"&&Number.isFinite(r)?r:null}),je=_(()=>{if(Re.value)return"#9ca3af";const r=Se.value;return r==null?"#9ca3af":r>=90?"#10b981":r>=60?"#f59e0b":"#ef4444"}),tt=_(()=>{if(Re.value)return"text-gray-400";const r=Se.value;return r==null?"text-gray-400":r>=90?"text-green-500":r>=60?"text-yellow-500":"text-red-500"}),Pe=_(()=>a.fullscreen?140:100),it=_(()=>a.fullscreen?10:8),st=_(()=>(Pe.value-it.value)/2),_t=_(()=>2*Math.PI*st.value),Ft=_(()=>{if(Re.value||Se.value==null)return 0;const r=Math.max(0,Math.min(100,Se.value));return _t.value-r/100*_t.value}),Et=_(()=>{var Mt;const r=q.value;if(!r)return[];const o=[];if(Re.value)return o.push({type:"info",message:n("admin.ops.diagnosis.idle"),impact:n("admin.ops.diagnosis.idleImpact")}),o;const W=r.system_metrics;if(W){W.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")}),W.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 ct=W.cpu_usage_percent??0;ct>90?o.push({type:"critical",message:n("admin.ops.diagnosis.cpuCritical",{usage:ct.toFixed(1)}),impact:n("admin.ops.diagnosis.cpuCriticalImpact"),action:n("admin.ops.diagnosis.cpuCriticalAction")}):ct>80&&o.push({type:"warning",message:n("admin.ops.diagnosis.cpuHigh",{usage:ct.toFixed(1)}),impact:n("admin.ops.diagnosis.cpuHighImpact"),action:n("admin.ops.diagnosis.cpuHighAction")});const pt=W.memory_usage_percent??0;pt>90?o.push({type:"critical",message:n("admin.ops.diagnosis.memoryCritical",{usage:pt.toFixed(1)}),impact:n("admin.ops.diagnosis.memoryCriticalImpact"),action:n("admin.ops.diagnosis.memoryCriticalAction")}):pt>85&&o.push({type:"warning",message:n("admin.ops.diagnosis.memoryHigh",{usage:pt.toFixed(1)}),impact:n("admin.ops.diagnosis.memoryHighImpact"),action:n("admin.ops.diagnosis.memoryHighAction")})}const we=((Mt=r.ttft)==null?void 0:Mt.p99_ms)??0;we>500&&o.push({type:"warning",message:n("admin.ops.diagnosis.ttftHigh",{ttft:we.toFixed(0)}),impact:n("admin.ops.diagnosis.ttftHighImpact"),action:n("admin.ops.diagnosis.ttftHighAction")});const Ue=(r.upstream_error_rate??0)*100;Ue>5?o.push({type:"critical",message:n("admin.ops.diagnosis.upstreamCritical",{rate:Ue.toFixed(2)}),impact:n("admin.ops.diagnosis.upstreamCriticalImpact"),action:n("admin.ops.diagnosis.upstreamCriticalAction")}):Ue>2&&o.push({type:"warning",message:n("admin.ops.diagnosis.upstreamHigh",{rate:Ue.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 Qe=(r.sla??0)*100;return Qe<90?o.push({type:"critical",message:n("admin.ops.diagnosis.slaCritical",{sla:Qe.toFixed(2)}),impact:n("admin.ops.diagnosis.slaCriticalImpact"),action:n("admin.ops.diagnosis.slaCriticalAction")}):Qe<98&&o.push({type:"warning",message:n("admin.ops.diagnosis.slaLow",{sla:Qe.toFixed(2)}),impact:n("admin.ops.diagnosis.slaLowImpact"),action:n("admin.ops.diagnosis.slaLowAction")}),Se.value!=null&&(Se.value<60?o.push({type:"critical",message:n("admin.ops.diagnosis.healthCritical",{score:Se.value}),impact:n("admin.ops.diagnosis.healthCriticalImpact"),action:n("admin.ops.diagnosis.healthCriticalAction")}):Se.value<90&&o.push({type:"warning",message:n("admin.ops.diagnosis.healthLow",{score:Se.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 Ze(r){if(!r)return"-";const o=new Date(r);return Number.isNaN(o.getTime())?"-":o.toLocaleTimeString()}const xt=_(()=>{var o;const r=(o=$.value)==null?void 0:o.cpu_usage_percent;return typeof r=="number"&&Number.isFinite(r)?r:null}),Ot=_(()=>{const r=xt.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"}),ft=_(()=>{var o;const r=(o=$.value)==null?void 0:o.memory_usage_percent;return typeof r=="number"&&Number.isFinite(r)?r:null}),It=_(()=>{const r=ft.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"}),yt=_(()=>{var o;const r=(o=$.value)==null?void 0:o.db_conn_active;return typeof r=="number"&&Number.isFinite(r)?r:null}),bt=_(()=>{var o;const r=(o=$.value)==null?void 0:o.db_conn_idle;return typeof r=="number"&&Number.isFinite(r)?r:null}),ht=_(()=>{var o;const r=(o=$.value)==null?void 0:o.db_conn_waiting;return typeof r=="number"&&Number.isFinite(r)?r:null}),kt=_(()=>yt.value==null||bt.value==null?null:yt.value+bt.value),Ve=_(()=>{var o;const r=(o=$.value)==null?void 0:o.db_max_open_conns;return typeof r=="number"&&Number.isFinite(r)?r:null}),at=_(()=>kt.value==null||Ve.value==null||Ve.value<=0?null:Math.min(100,Math.max(0,kt.value/Ve.value*100))),jt=_(()=>{var r,o;return((r=$.value)==null?void 0:r.db_ok)===!1?"FAIL":at.value!=null?`${at.value.toFixed(0)}%`:((o=$.value)==null?void 0:o.db_ok)===!0?n("admin.ops.ok"):n("admin.ops.noData")}),Pt=_(()=>{var r,o;return((r=$.value)==null?void 0:r.db_ok)===!1?"text-rose-600 dar
1k:text-rose-400":at.value!=null?at.value>=90?"text-rose-600 dark:text-rose-400":at.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"}),nt=_(()=>{var o;const r=(o=$.value)==null?void 0:o.redis_conn_total;return typeof r=="number"&&Number.isFinite(r)?r:null}),dt=_(()=>{var o;const r=(o=$.value)==null?void 0:o.redis_conn_idle;return typeof r=="number"&&Number.isFinite(r)?r:null}),qt=_(()=>nt.value==null||dt.value==null?null:Math.max(nt.value-dt.value,0)),ut=_(()=>{var o;const r=(o=$.value)==null?void 0:o.redis_pool_size;return typeof r=="number"&&Number.isFinite(r)?r:null}),ot=_(()=>nt.value==null||ut.value==null||ut.value<=0?null:Math.min(100,Math.max(0,nt.value/ut.value*100))),Ut=_(()=>{var r,o;return((r=$.value)==null?void 0:r.redis_ok)===!1?"FAIL":ot.value!=null?`${ot.value.toFixed(0)}%`:((o=$.value)==null?void 0:o.redis_ok)===!0?n("admin.ops.ok"):n("admin.ops.noData")}),Nt=_(()=>{var r,o;return((r=$.value)==null?void 0:r.redis_ok)===!1?"text-rose-600 dar
1k:text-rose-400":ot.value!=null?ot.value>=90?"text-rose-600 dark:text-rose-400":ot.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"}),Be=_(()=>{var o;const r=(o=$.value)==null?void 0:o.goroutine_count;return typeof r=="number"&&Number.isFinite(r)?r:null}),wt=_(()=>{const r=Be.value;return r==null?"unknown":r>=ss?"critical":r>=ts?"warning":"ok"}),f=_(()=>{switch(wt.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")}}),L=_(()=>{switch(wt.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"}}),U=_(()=>{var r;return((r=q.value)==null?void 0:r.job_heartbeats)??[]}),Le=_(()=>{const r=U.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"}),Je=_(()=>{let r=0;for(const o of U.value)o&&o.last_error_at&&(!o.last_success_at||o.last_error_at>o.last_success_at)&&r++;return r}),Ye=_(()=>{switch(Le.value){case"ok":return n("admin.ops.ok");case"warn":return n("common.warning");default:return n("admin.ops.noData")}}),Me=_(()=>{switch(Le.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"}}),he=b(!1);function rs(){he.value=!0}function is(){m(),T("refresh")}return(r,o)=>{var W,we,Ue;
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",Ts,[e("div",null,[e("h1",Ds,[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",Es,[e("span",{class:"flex items-center gap-1.5",title:a.loading?s(n)("admin.ops.loadingText"):s(n)("admin.ops.ready")},[e("span",Ms,[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,qs),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",Vs,[a.fullscreen?C("",!0):(l(),u(ue,{key:0},[I(ce,{"model-value":ne.platform,options:oe.value,class:"w-full sm:w-[140px]","onUpdate:modelValue":ee},null,8,["model-value","options"]),I(ce,{"model-value":ne.groupId,options:de.value,class:"w-full sm:w-[160px]","onUpdate:modelValue":G},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":ne.timeRange,options:J.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:ne.loading,title:s(n)("common.refresh"),onClick:is},[(l(),u("svg",{class:H(["h-4 w-4",{"animate-spin":ne.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,Ls)),a.fullscreen?C("",!0):(l(),u("div",As)),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",Os,t(s(n)("admin.ops.alertRules.manage")),1)],8,Fs)),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",js,t(s(n)("common.settings")),1)],8,Is)),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,Ps))])]),q.value?(l(),u("div",Us,[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",Ns,[e("div",zs,[e("div",Hs,[e("div",Bs,[e("h4",Qs,[I(Ne,{name:"brain",size:"sm",class:"text-blue-500"}),z(" "+t(s(n)("admin.ops.diagnosis.title")),1)]),e("div",Ws,[(l(!0),u(ue,null,pe(Et.value,(X,Qe)=>(l(),u("div",{key:Qe,class:"flex gap-3"},[e("div",Gs,[X.type==="critical"?(l(),u("svg",Ks,[...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",Zs,[...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",Js,[...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",Ys,[e("div",Xs,t(X.message),1),e("div",ea,t(X.impact),1),X.action?(l(),u("div",ta,[I(Ne,{name:"lightbulb",size:"xs"}),z(" "+t(X.action),1)])):C("",!0)])]))),128))]),e("div",sa,t(s(n)("admin.ops.diagnosis.footer")),1)])]),e("div",aa,[(l(),u("svg",{width:Pe.value,height:Pe.value,class:"-rotate-90 transform"},[e("circle",{cx:Pe.value/2,cy:Pe.value/2,r:st.value,"stroke-width":it.value,fill:"transparent",class:"text-gray-200 dark:text-dark-700",stroke:"currentColor"},null,8,oa),e("circle",{cx:Pe.value/2,cy:Pe.value/2,r:st.value,"stroke-width":it.value,fill:"transparent",stroke:je.value,"stroke-linecap":"round","stroke-dasharray":_t.value,"stroke-dashoffset":Ft.value,class:"transition-all duration-1000 ease-out"},null,8,la)],8,na)),e("div",ra,[e("span",{class:H([a.fullscreen?"text-5xl":"text-3xl","font-black",tt.value])},t(Re.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",ia,[e("div",da,[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",tt.value])},t(Re.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",ua,[e("div",ca,[e("div",pa,[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",ma,t(s(n)("admin.ops.realtime.title")),1),a.fullscreen?C("",!0):(l(),ie(_e,{key:0,content:s(n)("admin.ops.tooltips.qps")},null,8,["content"]))]),e("div",ga,[(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:Qe=>D.value=X},t(X),11,va))),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",_a,[e("div",xa,[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",fa,[e("span",{class:H([a.fullscreen?"text-4xl":"text-xl sm:text-2xl","font-black text-gray-900 dark:text-white"])},t(le.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",ya,[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",ba,[e("span",ha,t(Ce.value),1),o[24]||(o[24]=e("span",{class:"text-xs"},"QPS",-1))]),e("div",ka,[e("span",wa,t(Te.value),1),e("span",$a,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",Ca,[e("span",Ra,t(De.value),1),o[25]||(o[25]=e("span",{class:"text-xs"},"QPS",-1))]),e("div",Sa,[e("span",Ta,t(Fe.value),1),e("span",Da,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",Ea,[e("div",qa,[e("div",Ma,[e("div",Va,[e("span",La,t(s(n)("admin.ops.requestsTitle")),1),a.fullscreen?C("",!0):(l(),ie(_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",Aa,[e("div",Fa,[e("span",Oa,t(s(n)("admin.ops.requests"))+":",1),e("span",Ia,t(ve.value),1)]),e("div",ja,[e("span",Pa,t(s(n)("admin.ops.tokens"))+":",1),e("span",Ua,t(xe.value),1)]),e("div",Na,[e("span",za,t(s(n)("admin.ops.avgQps"))+":",1),e("span",Ha,t(N.value),1)]),e("div",Ba,[e("span",Qa,t(s(n)("admin.ops.avgTps"))+":",1),e("span",Wa,t(S.value),1)])])]),e("div",Ga,[e("div",Ka,[e("div",Za,[e("span",Ja,t(s(n)("admin.ops.sla")),1),a.fullscreen?C("",!0):(l(),ie(_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",E(h.value)==="critical"?"bg-red-500":E(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(E(h.value))])},t(h.value==null?"-":`${h.value.toFixed(3)}%`),3),e("div",Ya,[e("div",{class:H(["h-full transition-all",E(h.value)==="critical"?"bg-red-500":E(h.value)==="warning"?"bg-yellow-500":"bg-green-500"]),style:mt({width:`${Math.max((h.value??0)-90,0)*10}%`})},null,6)]),e("div",Xa,[e("div",en,[e("span",tn,t(s(n)("admin.ops.exceptions"))+":",1),e("span",sn,t(s(ze)((q.value.request_count_sla??0)-(q.value.success_count??0))),1)])])]),e("div",an,[e("div",nn,[e("div",on,[e("span",ln,t(s(n)("admin.ops.latencyDuration")),1),a.fullscreen?C("",!0):(l(),ie(_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",rn,[e("div",dn,t(fe.value??"-"),1),o[27]||(o[27]=e("span",{class:"text-xs font-bold text-gray-400"},"ms (P99)",-1))]),e("div",un,[e("div",cn,[o[28]||(o[28]=e("span",{class:"text-gray-500"},"P95:",-1)),e("span",pn,t(ye.value??"-"),1),o[29]||(o[29]=e("span",{class:"text-gray-400"},"ms",-1))]),e("div",mn,[o[30]||(o[30]=e("span",{class:"text-gray-500"},"P90:",-1)),e("span",gn,t(be.value??"-"),1),o[31]||(o[31]=e("span",{class:"text-gray-400"},"ms",-1))]),e("div",vn,[o[32]||(o[32]=e("span",{class:"text-gray-500"},"P50:",-1)),e("span",_n,t(He.value??"-"),1),o[33]||(o[33]=e("span",{class:"text-gray-400"},"ms",-1))]),e("div",xn,[o[34]||(o[34]=e("span",{class:"text-gray-500"},"Avg:",-1)),e("span",fn,t(qe.value??"-"),1),o[35]||(o[35]=e("span",{class:"text-gray-400"},"ms",-1))]),e("div",yn,[o[36]||(o[36]=e("span",{class:"text-gray-500"},"Max:",-1)),e("span",bn,t(Ge.value??"-"),1),o[37]||(o[37]=e("span",{class:"text-gray-400"},"ms",-1))])])]),e("div",hn,[e("div",kn,[e("div",wn,[o[38]||(o[38]=e("span",{class:"text-[10px] font-bold uppercase text-gray-400"},"TTFT",-1)),a.fullscreen?C("",!0):(l(),ie(_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",$n,[e("div",{class:H(["text-3xl font-black",Z(O(Oe.value))])},t(Oe.value??"-"),3),o[39]||(o[39]=e("span",{class:"text-xs font-bold text-gray-400"},"ms (P99)",-1))]),e("div",Cn,[e("div",Rn,[o[40]||(o[40]=e("span",{class:"text-gray-500"},"P95:",-1)),e("span",{class:H(["font-bold",Z(O(Ie.value))])},t(Ie.value??"-"),3),o[41]||(o[41]=e("span",{class:"text-gray-400"},"ms",-1))]),e("div",Sn,[o[42]||(o[42]=e("span",{class:"text-gray-500"},"P90:",-1)),e("span",{class:H(["font-bold",Z(O(et.value))])},t(et.value??"-"),3),o[43]||(o[43]=e("span",{class:"text-gray-400"},"ms",-1))]),e("div",Tn,[o[44]||(o[44]=e("span",{class:"text-gray-500"},"P50:",-1)),e("span",{class:H(["font-bold",Z(O(Ke.value))])},t(Ke.value??"-"),3),o[45]||(o[45]=e("span",{class:"text-gray-400"},"ms",-1))]),e("div",Dn,[o[46]||(o[46]=e("span",{class:"text-gray-500"},"Avg:",-1)),e("span",{class:H(["font-bold",Z(O(lt.value))])},t(lt.value??"-"),3),o[47]||(o[47]=e("span",{class:"text-gray-400"},"ms",-1))]),e("div",En,[o[48]||(o[48]=e("span",{class:"text-gray-500"},"Max:",-1)),e("span",{class:H(["font-bold",Z(O(rt.value))])},t(rt.value??"-"),3),o[49]||(o[49]=e("span",{class:"text-gray-400"},"ms",-1))])])]),e("div",qn,[e("div",Mn,[e("div",Vn,[e("span",Ln,t(s(n)("admin.ops.requestErrors")),1),a.fullscreen?C("",!0):(l(),ie(_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(V(Y.value))])},t(Y.value==null?"-":`${Y.value.toFixed(2)}%`),3),e("div",An,[e("div",Fn,[e("span",On,t(s(n)("admin.ops.errorCount"))+":",1),e("span",In,t(s(ze)(q.value.error_count_sla??0)),1)]),e("div",jn,[e("span",Pn,t(s(n)("admin.ops.businessLimited"))+":",1),e("span",Un,t(s(ze)(q.value.business_limited_count??0)),1)])])]),e("div",Nn,[e("div",zn,[e("div",Hn,[e("span",Bn,t(s(n)("admin.ops.upstreamErrors")),1),a.fullscreen?C("",!0):(l(),ie(_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",Qn,[e("div",Wn,[e("span",Gn,t(s(n)("admin.ops.errorCountExcl429529"))+":",1),e("span",Kn,t(s(ze)(q.value.upstream_error_count_excl_429_529??0)),1)]),e("div",Zn,[o[50]||(o[50]=e("span",{class:"text-gray-500"},"429/529:",-1)),e("span",Jn,t(s(ze)((q.value.upstream_429_count??0)+(q.value.upstream_529_count??0))),1)])])])])])):C("",!0),q.value?(l(),u("div",Yn,[e("div",Xn,[e("div",eo,[e("div",to,[o[51]||(o[51]=e("div",{class:"text-[10px] font-bold uppercase tracking-wider text-gray-400"},"CPU",-1)),a.fullscreen?C("",!0):(l(),ie(_e,{key:0,content:s(n)("admin.ops.tooltips.cpu")},null,8,["content"]))]),e("div",{class:H(["mt-1 text-lg font-black",Ot.value])},t(xt.value==null?"-":`${xt.value.toFixed(1)}%`),3),a.fullscreen?C("",!0):(l(),u("div",so,t(s(n)("common.warning"))+" 80% · "+t(s(n)("common.critical"))+" 95% ",1))]),e("div",ao,[e("div",no,[e("div",oo,t(s(n)("admin.ops.memory")),1),a.fullscreen?C("",!0):(l(),ie(_e,{key:0,content:s(n)("admin.ops.tooltips.memory")},null,8,["content"]))]),e("div",{class:H(["mt-1 text-lg font-black",It.value])},t(ft.value==null?"-":`${ft.value.toFixed(1)}%`),3),a.fullscreen?C("",!0):(l(),u("div",lo,t(((W=$.value)==null?void 0:W.memory_used_mb)==null||((we=$.value)==null?void 0:we.memory_total_mb)==null?"-":`${s(Xt)($.value.memory_used_mb)} / ${s(Xt)($.value.memory_total_mb)}`),1))]),e("div",ro,[e("div",io,[e("div",uo,t(s(n)("admin.ops.db")),1),a.fullscreen?C("",!0):(l(),ie(_e,{key:0,content:s(n)("admin.ops.tooltips.db")},null,8,["content"]))]),e("div",{class:H(["mt-1 text-lg font-black",Pt.value])},t(jt.value),3),a.fullscreen?C("",!0):(l(),u("div",co,[z(t(s(n)("admin.ops.conns"))+" "+t(kt.value??"-")+" / "+t(Ve.value??"-")+" · "+t(s(n)("admin.ops.active"))+" "+t(yt.value??"-")+" · "+t(s(n)("admin.ops.idle"))+" "+t(bt.value??"-")+" ",1),ht.value!=null?(l(),u("span",po," · "+t(s(n)("admin.ops.waiting"))+" "+t(ht.value),1)):C("",!0)]))]),e("div",mo,[e("div",go,[o[52]||(o[52]=e("div",{class:"text-[10px] font-bold uppercase tracking-wider text-gray-400"},"Redis",-1)),a.fullscreen?C("",!0):(l(),ie(_e,{key:0,content:s(n)("admin.ops.tooltips.redis")},null,8,["content"]))]),e("div",{class:H(["mt-1 text-lg font-black",Nt.value])},t(Ut.value),3),a.fullscreen?C("",!0):(l(),u("div",vo,[z(t(s(n)("admin.ops.conns"))+" "+t(nt.value??"-")+" / "+t(ut.value??"-")+" ",1),qt.value!=null?(l(),u("span",_o," · "+t(s(n)("admin.ops.active"))+" "+t(qt.value),1)):C("",!0),dt.value!=null?(l(),u("span",xo," · "+t(s(n)("admin.ops.idle"))+" "+t(dt.value),1)):C("",!0)]))]),e("div",fo,[e("div",yo,[e("div",bo,t(s(n)("admin.ops.goroutines")),1),a.fullscreen?C("",!0):(l(),ie(_e,{key:0,content:s(n)("admin.ops.tooltips.goroutines")},null,8,["content"]))]),e("div",{class:H(["mt-1 text-lg font-black",L.value])},t(f.value),3),a.fullscreen?C("",!0):(l(),u("div",ho,[z(t(s(n)("admin.ops.current"))+" ",1),e("span",ko,t(Be.value??"-"),1),z(" · "+t(s(n)("common.warning"))+" ",1),e("span",{class:"font-mono"},t(ts)),z(" · "+t(s(n)("common.critical"))+" ",1),e("span",{class:"font-mono"},t(ss)),((Ue=$.value)==null?void 0:Ue.concurrency_queue_depth)!=null?(l(),u("span",wo,[z(" · "+t(s(n)("admin.ops.queue"))+" ",1),e("span",$o,t($.value.concurrency_queue_depth),1)])):C("",!0)]))]),e("div",Co,[e("div",Ro,[e("div",So,[e("div",To,t(s(n)("admin.ops.jobs")),1),a.fullscreen?C("",!0):(l(),ie(_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:rs},t(s(n)("admin.ops.requestDetails.details")),1))]),e("div",{class:H(["mt-1 text-lg font-black",Me.value])},t(Ye.value),3),a.fullscreen?C("",!0):(l(),u("div",Do,[z(t(s(n)("common.total"))+" ",1),e("span",Eo,t(U.value.length),1),z(" · "+t(s(n)("common.warning"))+" ",1),e("span",qo,t(Je.value),1)]))])])])):C("",!0),I(Xe,{show:he.value,title:s(n)("admin.ops.jobs"),width:"wide",onClose:o[9]||(o[9]=X=>he.value=!1)},{default:Ae(()=>[U.value.length?(l(),u("div",Vo,[(l(!0),u(ue,null,pe(U.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",Lo,[e("div",Ao,t(X.job_name),1),e("div",Fo,[X.last_duration_ms!=null?(l(),u("span",Oo,t(X.last_duration_ms)+"ms",1)):C("",!0),e("span",null,t(Ze(X.updated_at)),1)])]),e("div",Io,[e("div",null,[z(t(s(n)("admin.ops.lastSuccess"))+" ",1),e("span",jo,t(Ze(X.last_success_at)),1)]),e("div",null,[z(t(s(n)("admin.ops.lastError"))+" ",1),e("span",Po,t(Ze(X.last_error_at)),1
3)]),e("div",null,[z(t(s(n)("admin.ops.result"))+" ",1),e("span",Uo,t(X.last_result||"-"),1)])]),X.last_error?(l(),u("div",No,t(X.last_error),1)):C("",!0)]))),128))])):(l(),u("div",Mo,t(s(n)("admin.ops.noData")),1))]),_:1},8,["show","title"]),I(Xe,{show:K.value,title:s(n)("admin.ops.timeRange.custom"),width:"narrow",onClose:c},{default:Ae(()=>[e("div",zo,[e("div",null,[e("label",Ho,t(s(n)("admin.ops.customTimeRange.startTime")),1),se(e("input",{"onUpdate:modelValue":o[10]||(o[10]=X=>M.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),[[re,M.value]])]),e("div",null,[e("label",Bo,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),[[re,p.value]])]),e("div",Qo,[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)}}}),Go={class:"space-y-6"},Ko={class:"flex flex-wrap items-center justify-between gap-4 border-b border-gray-100 pb-4 dark:border-dark-700"},Zo={key:0,class:"flex flex-wrap items-center gap-3"},Jo={class:"mt-6 grid grid-cols-1 gap-6 lg:grid-cols-12"},Yo={class:"rounded-2xl bg-gray-50 p-4 dark:bg-dark-900/30 lg:col-span-5"},Xo={class:"grid h-full grid-cols-1 gap-6 md:grid-cols-[200px_1fr] md:items-center"},el={class:"space-y-4"},tl={class:"grid grid-cols-2 gap-3"},sl={class:"lg:col-span-7"},al={class:"grid h-full grid-cols-1 content-center gap-4 sm:grid-cols-2 lg:grid-cols-3"},nl={class:"grid grid-cols-1 gap-6 lg:grid-cols-4"},ol={class:"grid grid-cols-1 gap-6 md:grid-cols-3"},ll={class:"flex flex-wrap items-center justify-between gap-4"},rl={key:0,class:"flex flex-wrap items-center gap-2"},il={class:"mt-6 space-y-3"},dl=ke({__name:"OpsDashboardSkeleton",props:{fullscreen:{type:Boolean,default:!1}},setup(ne){const d=ne;return(a,T)=>(l(),u("div",Go,[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",Ko,[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",Zo,[...T[0]||(T[0]=[ds('<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",Jo,[e("div",Yo,[e("div",Xo,[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",el,[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",tl,[(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",sl,[e("div",al,[(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",nl,[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",ol,[(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",ll,[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",rl,[...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",il,[(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)]))}}),ul={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"},cl={class:"mb-4 flex shrink-0 items-center justify-between gap-3"},pl={class:"flex items-center gap-2 text-sm font-bold text-gray-900 dark:text-white"},ml={class:"flex items-center gap-2"},gl=["title"],vl=["disabled","title"],_l={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"},xl={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"},fl={key:2,class:"flex min-h-0 flex-1 flex-col overflow-hidden rounded-xl border border-gray-200 dark:border-dark-700"},yl={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"},bl={class:"text-[10px] font-bold uppercase tracking-wider text-gray-500 dark:text-gray-400"},hl={class:"text-[10px] text-gray-500 dark:text-gray-400"},kl={key:0,class:"flex flex-1 items-center justify-center text-sm text-gray-500 dark:text-gray-400"},wl={key:1,class:"custom-scrollbar max-h-[360px] flex-1 space-y-2 overflow-y-auto p-3"},$l={class:"mb-1.5 flex items-center justify-between gap-2"},Cl={class:"flex min-w-0 flex-1 items-center gap-1.5"},Rl=["title"],Sl=["title"],Tl={class:"flex shrink-0 items-center gap-2 text-[10px]"},Dl={class:"font-mono font-bold text-gray-900 dark:text-white"},El={class:"h-1.5 w-full overflow-hidden rounded-full bg-gray-200 dark:bg-dark-700"},ql={key:0,class:"mt-1.5 flex justify-end"},Ml={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"},Vl={key:2,class:"custom-scrollbar max-h-[360px] flex-1 space-y-2 overflow-y-auto p-3"},Ll={class:"mb-2 flex items-center justify-between gap-2"},Al={class:"flex items-center gap-2"},Fl=["title"],Ol={key:0,class:"text-[10px] text-gray-400 dark:text-gray-500"},Il={class:"flex shrink-0 items-center gap-2 text-[10px]"},jl={class:"font-mono font-bold text-gray-900 dark:text-white"},Pl={class:"mb-2 h-1.5 w-full overflow-hidden rounded-full bg-gray-200 dark:bg-dark-700"},Ul={class:"flex flex-wrap items-center gap-x-3 gap-y-1 text-[10px]"},Nl={class:"flex items-center gap-1"},zl={class:"text-gray-600 dark:text-gray-300"},Hl={class:"font-bold text-green-600 dark:text-green-400"},Bl={class:"text-gray-400 dark:text-gray-500"},Ql={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"},Wl={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"},Gl={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"},Kl={key:3,class:"custom-scrollbar max-h-[360px] flex-1 space-y-2 overflow-y-auto p-3"},Zl={class:"mb-1.5 flex items-center justify-between gap-2"},Jl={class:"min-w-0 flex-1"},Yl=["title"],Xl={class:"mt-0.5 text-[9px] text-gray-400 dark:text-gray-500"},er={class:"flex shrink-0 items-center gap-2"},tr={class:"font-mono text-[11px] font-bold text-gray-900 dark:text-white"},sr={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"},ar={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"},nr={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"},or={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"},lr={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"},rr={class:"h-1.5 w-full overflow-hidden rounded-full bg-gray-200 dark:bg-dark-700"},ir={key:0,class:"mt-1.5 flex justify-end"},dr={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"},ur=ke({__name:"OpsConcurrencyCard",props:{platformFilter:{default:""},groupIdFilter:{default:null},refreshToken:{}},setup(ne){const d=ne,{t:a}=$e(),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"),K=_(()=>{var F,E;const k=((F=P.value)==null?void 0:F.platform)||{},c=((E=D.value)==null?void 0:E.platform)||{},i=new Set([...Object.keys(k),...Object.keys(c)]);return Array.from(i).map(O=>{const V=k[O]||{},B=c[O]||{},Z=v(B.total_accounts),ve=v(B.available_count),xe=v(V.max_capacity),me=v(V.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(V.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,V)=>V.concurrency_percentage-O.concurrency_percentage)}),M=_(()=>{var E,O;const k=((E=P.value)==null?void 0:E.group)||{},c=((O=D.value)==null?void 0:O.group)||{},i=new Set([...Object.keys(k),...Object.keys(c)]);return Array.from(i).map(V=>{const B=k[V]||{},Z=c[V]||{};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:V,name:String(B.group_name||Z.group_name||`Group ${V}`),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(V=>V!==null).sort((V,B)=>B.concurrency_percentage-V.concurrency_percentage)}),p=_(()=>{var E,O;const k=((E=P.value)==null?void 0:E.account)||{},c=((O=D.value)==null?void 0:O.account)||{},i=new Set([...Object.keys(k),...Object.keys(c)]);return Array.from(i).map(V=>{const B=k[V]||{},Z=c[V]||{};return typeof d.groupIdFilter=="number"&&d.groupIdFilter>0&&B.group_id!==d.groupIdFilter&&Z.group_id!==d.groupIdFilter?null:{key:V,name:String(B.account_name||Z.account_name||`Account ${V}`),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(V=>V!==null).sort((V,B)=>V.has_error!==B.has_error?V.has_error?-1:1:V.is_rate_limited!==B.is_rate_limited?V.is_rate_limited?-1:1:B.load_percentage-V.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"?M.value:K.value),oe=_(()=>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 J(){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&&J()}),ge(()=>$.value,()=>{J()});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 G(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 J()},{immediate:!0}),(k,c)=>(l(),u("div",ul,[e("div",cl,[e("h3",pl,[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",ml,[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,gl),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:J},[(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,vl)])]),n.value?(l(),u("div",_l,t(n.value),1)):C("",!0),x.value?(l(),u("div",fl,[e("div",yl,[e("span",bl,t(oe.value),1),e("span",hl,t(s(a)("admin.ops.concurrency.totalRows",{count:A.value.length})),1)]),A.value.length===0?(l(),u("div",kl,t(s(a)("admin.ops.concurrency.empty")),1)):y.value==="user"?(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",$l,[e("div",Cl,[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,Rl),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,Sl)):C("",!0)]),e("div",Tl,[e("span",Dl,t(i.current_in_use)+"/"+t(i.max_capacity),1),e("span",{class:H(["font-bold",G(i.load_percentage)])},t(Math.round(i.load_percentage))+"% ",3)])]),e("div",El,[e("div",{class:H(["h-full rounded-full transition-all duration-300",de(i.load_percentage)]),style:mt(ee(i.load_percentage))},null,6)]),i.waiting_in_queue>0?(l(),u("div",ql,[e("span",Ml,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",Vl,[(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",Ll,[e("div",Al,[e("div",{class:"truncate text-[11px] font-bold text-gray-900 dark:text-white",title:i.name},t(i.name),9,Fl),y.value==="group"&&i.platform?(l(),u("span",Ol,t(i.platform.toUpperCase()),1)):C("",!0)]),e("div",Il,[e("span",jl,t(i.used_concurrency)+"/"+t(i.total_concurrency),1),e("span",{class:H(["font-bold",G(i.concurrency_percentage)])},t(i.concurrency_percentage)+"% ",3)])]),e("div",Pl,[e("div",{class:H(["h-full rounded-full transition-all duration-300",de(i.concurrency_percentage)]),style:mt(ee(i.concurrency_percentage))},null,6)]),e("div",Ul,[e("div",Nl,[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",zl,[e("span",Hl,t(i.available_accounts),1),z("/"+t(i.total_accounts),1)]),e("span",Bl,t(i.availability_percentage)+"%",1)]),i.rate_limited_accounts>0?(l(),u("span",Ql,t(s(a)("admin.ops.concurrency.rateLimited",{count:i.rate_limited_accounts})),1)):C("",!0),i.error_accounts>0?(l(),u("span",Wl,t(s(a)("admin.ops.concurrency.errorAccounts",{count:i.error_accounts})),1)):C("",!0),i.waiting_in_queue>0?(l(),u("span",Gl,t(s(a)("admin.ops.concurrency.queued",{count:i.waiting_in_queue})),1)):C("",!0)])]))),128))])):(l(),u("div",Kl,[(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",Zl,[e("div",Jl,[e("div",{class:"truncate text-[11px] font-bold text-gray-900 dark:text-white",title:i.name},t(i.name),9,Yl),e("div",Xl,t(i.group_name),1)]),e("div",er,[e("span",tr,t(i.current_in_use)+"/"+t(i.max_capacity),1),i.is_available?(l(),u("span",sr,[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",ar,[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",nr,[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",or,[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",lr,t(s(a)("admin.ops.accountAvailability.unavailable")),1))])]),e("div",rr,[e("div",{class:H(["h-full rounded-full transition-all duration-300",de(i.load_percentage)]),style:mt(ee(i.load_percentage))},null,6)]),i.waiting_in_queue>0?(l(),u("div",ir,[e("span",dr,t(s(a)("admin.ops.concurrency.queued",{count:i.waiting_in_queue})),1)])):C("",!0)]))),128))]))])):(l(),u("div",xl,t(s(a)("admin.ops.concurrency.disabledHint")),1))]))}}),cr=vs(ur,[["__scopeId","data-v-484aa3d3"]]),pr={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"},mr={class:"mb-4 flex items-center justify-between"},gr={class:"flex items-center gap-2 text-sm font-bold text-gray-900 dark:text-white"},vr=["disabled","title"],_r={class:"relative min-h-0 flex-1"},xr={key:0,class:"flex h-full flex-col"},fr={class:"flex-1"},yr={class:"mt-4 flex flex-col items-center gap-2"},br={key:0,class:"text-xs font-bold text-gray-900 dark:text-white"},hr={class:"flex flex-wrap justify-center gap-3"},kr={class:"text-gray-500 dark:text-gray-400"},wr={key:1,class:"flex h-full items-center justify-center"},$r={key:0,class:"animate-pulse text-sm text-gray-400"},Cr=ke({__name:"OpsErrorDistributionChart",props:{data:{},loading:{type:Boolean}},emits:["openDetails"],setup(ne,{emit:d}){Rt.register(ys,St,Tt);const a=ne,T=d,{t:n}=$e(),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,oe=0;for(const de of a.data.items||[]){const ee=Number(de.status_code||0),G=Number(de.sla||0);!Number.isFinite(ee)||!Number.isFinite(G)||([502,503,504].includes(ee)?p+=G:ee>=400&&ee<500?R+=G:ee===500?A+=G:oe+=G)}const J=[];return p>0&&J.push({label:n("admin.ops.upstream"),count:p,color:D.value.orange}),R>0&&J.push({label:n("admin.ops.client"),count:R,color:D.value.blue}),A>0&&J.push({label:n("admin.ops.system"),count:A,color:D.value.red}),oe>0&&J.push({label:n("admin.ops.other"),count:oe,color:D.value.gray}),J}),y=_(()=>v.value.length===0?null:v.value.reduce((p,R)=>R.count>p.count?R:p)),K=_(()=>!$.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}]}),M=_(()=>
3({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",pr,[e("div",mr,[e("h3",gr,[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,vr)]),e("div",_r,[x.value==="ready"&&K.value?(l(),u("div",xr,[e("div",fr,[I(s(bs),{data:K.value,options:{...M.value,cutout:"65%"}},null,8,["data","options"])]),e("div",yr,[y.value?(l(),u("div",br,[z(t(s(n)("admin.ops.top"))+": ",1),e("span",{style:mt({color:y.value.color})},t(y.value.label),5)])):C("",!0),e("div",hr,[(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:mt({backgroundColor:A.color})},null,4),e("span",kr,t(A.label)+" "+t(A.count),1)]))),128))])])])):(l(),u("div",wr,[x.value==="loading"?(l(),u("div",$r,t(s(n)("common.loading")),1)):(l(),ie(vt,{key:1,title:s(n)("common.noData"),description:s(n)("admin.ops.charts.emptyError")},null,8,["title","description"]))]))])]))}});function Rr(ne,d,a){return ne==="custom"&&d&&a?{start_time:d,end_time:a}:{time_range:ne==="custom"?"1h":ne}}const Sr={class:"flex h-full min-h-0 flex-col"},Tr={class:"mb-4 flex-shrink-0 border-b border-gray-200 pb-4 dark:border-dark-700"},Dr={class:"grid grid-cols-2 gap-2 md:grid-cols-8"},Er={class:"col-span-2 compact-select"},qr={class:"relative group"},Mr=["placeholder"],Vr={class:"compact-select"},Lr={class:"compact-select"},Ar={class:"compact-select"},Fr={class:"compact-select"},Or={class:"flex items-center justify-end"},Ir={class:"flex min-h-0 flex-1 flex-col"},jr={class:"mb-2 flex-shrink-0 text-xs text-gray-500 dark:text-gray-400"},Pr=ke({__name:"OpsErrorDetailsModal",props:{show:{type:Boolean},timeRange:{},customStartTime:{},customEndTime:{},platform:{},groupId:{},errorType:{},resumeState:{type:Boolean}},emits:["update:show","openErrorDetail"],setup(ne,{emit:d}){const a=ne,T=d,{t:n}=$e(),P=b(!1),D=b([]),q=b(0),$=b(1),x=b(10),v=b(""),y=b(null),K=b(""),M=b(""),p=b("errors"),R=_(()=>a.errorType==="upstream"?n("admin.ops.errorDetails.upstreamErrors"):n("admin.ops.errorDetails.requestErrors")),A=_(()=>{const E=[400,401,403,404,409,422,429,500,502,503,504,529];return[{value:null,label:n("common.all")},...E.map(O=>({value:O,label:String(O)})),{value:"other",label:n("admin.ops.errorDetails.statusCodeOther")||"Other"}]}),oe=_(()=>[{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"}]),J=_(()=>[{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 G=b("created_at"),Q=b("desc");function k(E,O){G.value=E,Q.value=O,$.value=1,c()}async function c(){if(a.show){P.value=!0;try{const E={page:$.value,page_size:x.value,view:p.value,sort_by:G.value,sort_order:Q.value};Object.assign(E,Rr(a.timeRange,a.customStartTime,a.customEndTime)),a.timeRange==="custom"&&(a.customStartTime&&a.customEndTime?(E.start_time=a.customStartTime,E.end_time=a.customEndTime,delete E.time_range):E.time_range="1h");const O=String(a.platform||"").trim();O&&(E.platform=O),typeof a.groupId=="number"&&a.groupId>0&&(E.group_id=a.groupId),v.value.trim()&&(E.q=v.value.trim()),y.value==="other"?E.status_codes_other="1":typeof y.value=="number"&&(E.status_codes=String(y.value));const V=String(K.value||"").trim();V&&(E.phase=V);const B=String(M.value||"").trim();B&&(E.error_owner=B);const Z=a.errorType==="upstream"?await te.listUpstreamErrors(E):await te.listRequestErrors(E);D.value=Z.items||[],q.value=Z.total||0}catch(E){console.error("[OpsErrorDetailsModal] Failed to fetch error logs",E),D.value=[],q.value=0}finally{P.value=!1}}}function i(){v.value="",y.value=null,K.value=a.errorType==="upstream"?"upstream":"",M.value="",p.value="errors",$.value=1,c()}ge(()=>a.show,E=>{E&&(a.resumeState||($.value=1,x.value=10,i()))}),ge(()=>[a.timeRange,a.customStartTime,a.customEndTime,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,K.value,M.value,p.value],()=>{a.show&&($.value=1,c())}),(E,O)=>(l(),ie(Xe,{show:ne.show,title:R.value,width:"full",onClose:ee},{default:Ae(()=>[e("div",Sr,[e("div",Tr,[e("div",Dr,[e("div",Er,[e("div",qr,[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]=V=>v.value=V),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,Mr),[[re,v.value]])])]),e("div",Vr,[I(ce,{"model-value":y.value,options:A.value,"onUpdate:modelValue":O[1]||(O[1]=V=>y.value=V)}
3,null,8,["model-value","options"])]),e("div",Lr,[I(ce,{"model-value":K.value,options:de.value,"onUpdate:modelValue":O[2]||(O[2]=V=>K.value=String(V??""))},null,8,["model-value","options"])]),e("div",Ar,[I(ce,{"model-value":M.value,options:oe.value,"onUpdate:modelValue":O[3]||(O[3]=V=>M.value=String(V??""))},null,8,["model-value","options"])]),e("div",Fr,[I(ce,{"model-value":p.value,options:J.value,"onUpdate:modelValue":O[4]||(O[4]=V=>p.value=V)},null,8,["model-value","options"])]),e("div",Or,[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",Ir,[e("div",jr,t(s(n)("admin.ops.errorDetails.total"))+" "+t(q.value),1),I(xs,{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]=V=>T("openErrorDetail",V)),onSort:k,"onUpdate:page":O[6]||(O[6]=V=>$.value=V),"onUpdate:pageSize":O[7]||(O[7]=V=>x.value=V)},null,8,["rows","total","loading","page","page-size"])])])]),_:1},8,["show","title"]))}}),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"},Nr={class:"mb-4 flex shrink-0 items-center justify-between"},zr={class:"flex items-center gap-2 text-sm font-bold text-gray-900 dark:text-white"},Hr={class:"flex items-center gap-2"},Br=["disabled"],Qr=["disabled"],Wr={class:"min-h-0 flex-1"},Gr={key:1,class:"flex h-full items-center justify-center"},Kr={key:0,class:"animate-pulse text-sm text-gray-400"},Zr=ke({__name:"OpsErrorTrendChart",props:{points:{},loading:{type:Boolean},timeRange:{}},emits:["openRequestErrors","openUpstreamErrors"],setup(ne,{emit:d}){Rt.register(Bt,St,Tt,Qt,Lt,Wt,At,Gt);const a=ne,T=d,{t:n}=$e(),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=_(()=>$t(a.points.map(R=>R.error_count_sla??0))),$=_(()=>$t(a.points.map(R=>(R.upstream_error_count_excl_429_529??0)+(R.upstream_429_count??0)+(R.upstream_529_count??0)))),x=_(()=>$t(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),K=_(()=>!a.points.length||x.value<=0?null:{labels:a.points.map(R=>Ht(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}]}),M=_(()=>K.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",Ur,[e("div",Nr,[e("h3",zr,[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",Hr,[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]=oe=>T("openRequestErrors"))},t(s(n)("admin.ops.errorDetails.requestErrors")),9,Br),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]=oe=>T("openUpstreamErrors"))},t(s(n)("admin.ops.errorDetails.upstreamErrors")),9,Qr)])]),e("div",Wr,[M.value==="ready"&&K.value?(l(),ie(s(Kt),{key:0,data:K.value,options:p.value},null,8,["data","options"])):(l(),u("div",Gr,[M.value==="loading"?(l(),u("div",Kr,t(s(n)("common.loading")),1)):(l(),ie(vt,{key:1,title:s(n)("common.noData"),description:s(n)("admin.ops.charts.emptyError")},null,8,["title","description"]))]))])]))}}),Jr={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"},Yr={class:"mb-4 flex items-center justify-between"},Xr={class:"flex items-center gap-2 text-sm font-bold text-gray-900 dark:text-white"},ei={class:"min-h-0 flex-1"},ti={key:1,class:"flex h-full items-center justify-center"},si={key:0,class:"animate-pulse text-sm text-gray-400"},ai=ke({__name:"OpsLatencyChart",props:{latencyData:{},loading:{type:Boolean}},setup(ne){Rt.register(hs,At,Lt,St,Tt);const d=ne,{t:a}=$e(),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",Jr,[e("div",Yr,[e("h3",Xr,[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",ei,[D.value==="ready"&&q.value?(l(),ie(s(ks),{key:0,data:q.value,options:$.value},null,8,["data","options"])):(l(),u("div",ti,[D.value==="loading"?(l(),u("div",si,t(s(a)("common.loading")),1)):(l(),ie(vt,{key:1,title:s(a)("common.noData"),description:s(a)("admin.ops.charts.emptyRequest")},null,8,["title","description"]))]))])]))}}),ni={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"},oi={"data-testid":"throughput-chart-header",class:"mb-4 flex shrink-0 flex-col gap-3 sm:flex-row sm:items-center sm:justify-between"},li={class:"flex min-w-0 items-center gap-2 text-sm font-bold text-gray-900 dark:text-white"},ri={"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"},ii={class:"flex shrink-0 items-center gap-1"},di=["disabled","title"],ui=["disabled","title"],ci=["disabled","title"],pi={key:0,class:"mb-3 flex flex-wrap gap-2"},mi=["onClick"],gi={class:"max-w-[180px] truncate"},vi={class:"text-gray-400 dark:text-gray-500"},_i={key:1,class:"mb-3 flex flex-wrap gap-2"},xi=["onClick"],fi={class:"uppercase"},yi={class:"text-gray-400 dark:text-gray-500"},bi={class:"min-h-0 min-w-0 flex-1"},hi={key:1,class:"flex h-full items-center justify-center"},ki={key:0,class:"animate-pulse text-sm text-gray-400"},wi=ke({__name:"OpsThroughputTrendChart",props:{points:{},loading:{type:Boolean},timeRange:{},byPlatform:{},topGroups:{},fullscreen:{type:Boolean}},emits:["selectPlatform","selectGroup","openDetails"],setup(ne,{emit:d}){Rt.register(Bt,St,Tt,Qt,Lt,Wt,At,Gt);const a=ne,{t:T}=$e(),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"})),$=_(()=>$t(a.points.map(p=>p.request_count))),x=_(()=>!a.points.length||$.value<=0?null:{labels:a.points.map(p=>Ht(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 K(){var R;const p=(R=P.value)==null?void 0:R.chart;p&&typeof p.resetZoom=="function"&&p.resetZoom()}function M(){var oe;const p=(oe=P.value)==null?void 0:oe.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,oe;return l(),u("div",ni,[e("div",oi,[e("h3",li,[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(),ie(_e,{key:0,content:s(T)("admin.ops.tooltips.throughputTrend")},null,8,["content"]))]),e("div",ri,[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",ii,[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]=J=>n("openDetails"))},t(s(T)("admin.ops.requestDetails.details")),9,di),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:K},t(s(T)("admin.ops.charts.resetZoom")),9,ui),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:M},t(s(T)("admin.ops.charts.downloadChart")),9,ci)],64))])]),(((A=a.topGroups)==null?void 0:A.length)??0)>0?(l(),u("div",pi,[(l(!0),u(ue,null,pe(a.topGroups,J=>(l(),u("button",{key:J.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",J.group_id)},[e("span",gi,t(J.group_name||`#${J.group_id}`),1),e("span",vi,t(s(ze)(J.request_count)),1)],8,mi))),128))])):(((oe=a.byPlatform)==null?void 0:oe.length)??0)>0?(l(),u("div",_i,[(l(!0),u(ue,null,pe(a.byPlatform,J=>(l(),u("button",{key:J.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",J.platform)},[e("span",fi,t(J.platform),1),e("span",yi,t(s(ze)(J.request_count)),1)],8,xi))),128))])):C("",!0),e("div",bi,[v.value==="ready"&&x.value?(l(),ie(s(Kt),{key:0,ref_key:"throughputChartRef",ref:P,data:x.value,options:y.value},null,8,["data","options"])):(l(),u("div",hi,[v.value==="loading"?(l(),u("div",ki,t(s(T)("common.loading")),1)):(l(),ie(vt,{key:1,title:s(T)("common.noData"),description:s(T)("admin.ops.charts.emptyRequest")},null,8,["title","description"]))]))])])}}}),$i={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"},Ci={class:"mb-4 flex shrink-0 items-center justify-between"},Ri={class:"flex items-center gap-2 text-sm font-bold text-gray-900 dark:text-white"},Si={class:"min-h-0 flex-1"},Ti={key:1,class:"flex h-full items-center justify-center"},Di={key:0,class:"animate-pulse text-sm text-gray-400"},Ei=ke({__name:"OpsSwitchRateTrendChart",props:{points:{},loading:{type:Boolean},timeRange:{},fullscreen:{type:Boolean}},setup(ne){Rt.register(Bt,St,Tt,Qt,Lt,Wt,At,Gt);const d=ne,{t:a}=$e(),T=_(()=>document.documentElement.classList.contains("dark")),n=_(()=>({teal:"#14b8a6",tealAlpha:"#14b8a620",grid:T.value?"#374151":"#f3f4f6",text:T.value?"#9ca3af":"#6b7280"})),P=_(()=>$t(d.points.map(x=>x.request_count))),D=_(()=>!d.points.length||P.value<=0?null:{labels:d.points.map(x=>Ht(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 K;const y=typeof((K=v==null?void 0:v.parsed)==null?void 0:K.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",$i,[e("div",Ci,[e("h3",Ri,[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(),ie(_e,{key:0,content:s(a)("admin.ops.tooltips.switchRateTrend")},null,8,["content"]))])]),e("div",Si,[q.value==="ready"&&D.value?(l(),ie(s(Kt),{key:0,data:D.value,options:$.value},null,8,["data","options"])):(l(),u("div",Ti,[q.value==="loading"?(l(),u("div",Di,t(s(a)("common.loading")),1)):(l(),ie(vt,{key:1,title:s(a)("common.noData"),description:s(a)("admin.ops.charts.emptyRequest")},null,8,["title","description"]))]))])]))}}),qi={class:"rounded-3xl bg-white p-6 shadow-sm ring-1 ring-gray-900/5 dark:bg-dark-800 dark:ring-dark-700"},Mi={class:"mb-4 flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between sm:gap-4"},Vi={class:"text-sm font-bold text-gray-900 dark:text-white"},Li={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},Ai={class:"flex flex-wrap items-center gap-2"},Fi=["disabled"],Oi={key:0,class:"flex items-center gap-2 text-sm text-gray-500 dark:text-gray-400"},Ii={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"},ji={key:2,class:"overflow-hidden rounded-xl border border-gray-200 dark:border-dark-700"},Pi={key:0,class:"divide-y divide-gray-100 dark:divide-dark-800"},Ui=["onClick"],Ni={class:"flex flex-wrap items-center gap-2"},zi={class:"ml-auto text-[11px] text-gray-500 dark:text-gray-400"},Hi={class:"text-xs font-semibold text-gray-900 dark:text-white"},Bi={key:0,class:"line-clamp-2 text-[11px] text-gray-500 dark:text-gray-400"},Qi={class:"flex flex-wrap items-center justify-between gap-2 text-[11px] text-gray-500 dark:text-gray-400"},Wi={class:"font-mono"},Gi={class:"inline-flex items-center gap-1"},Ki={class:"text-[11px] text-gray-400 dark:text-gray-500"},Zi={key:1,class:"min-w-full divide-y divide-gray-200 dark:divide-dark-700"},Ji={class:"sticky top-0 z-10 bg-gray-50 dark:bg-dark-900"},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-left text-[11px] font-bold uppercase tracking-wider text-gray-500 dark:text-gray-400"},ad={class:"px-4 py-3 text-left text-[11px] font-bold uppercase tracking-wider text-gray-500 dark:text-gray-400"},nd={class:"px-4 py-3 text-left text-[11px] font-bold uppercase tracking-wider text-gray-500 dark:text-gray-400"},od={class:"px-4 py-3 text-right text-[11px] font-bold uppercase tracking-wider text-gray-500 dark:text-gray-400"},ld={class:"divide-y divide-gray-200 bg-white dark:divide-dark-700 dark:bg-dark-800"},rd=["onClick","title"],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"},ud={class:"flex items-center gap-2"},cd={class:"whitespace-nowrap px-4 py-3 text-xs text-gray-600 dark:text-gray-300"},pd={class:"whitespace-nowrap px-4 py-3 text-xs text-gray-600 dark:text-gray-300"},md={class:"font-mono"},gd={class:"min-w-[260px] px-4 py-3 text-xs text-gray-700 dark:text-gray-200"},vd={class:"font-semibold truncate max-w-[360px]"},_d={key:0,class:"mt-0.5 line-clamp-2 text-[11px] text-gray-500 dark:text-gray-400"},xd={class:"whitespace-nowrap px-4 py-3 text-xs text-gray-600 dark:text-gray-300"},fd={class:"whitespace-nowrap px-4 py-3 text-[11px] text-gray-500 dark:text-gray-400"},yd={class:"whitespace-nowrap px-4 py-3 text-right text-xs"},bd=["title"],hd={class:"text-[11px] font-bold text-gray-600 dark:text-gray-300"},kd={key:2,class:"flex items-center justify-center gap-2 py-3 text-xs text-gray-500 dark:text-gray-400"},wd={key:3,class:"py-3 text-center text-xs text-gray-400"},$d={key:0,class:"flex items-center justify-center py-10 text-sm text-gray-500 dark:text-gray-400"},Cd={key:1,class:"py-10 text-center text-sm text-gray-500 dark:text-gray-400"},Rd={key:2,class:"space-y-5"},Sd={class:"rounded-xl bg-gray-50 p-4 dark:bg-dark-900"},Td={class:"flex flex-col gap-2 sm:flex-row sm:items-start sm:justify-between"},Dd={class:"flex flex-wrap items-center gap-2"},Ed={class:"mt-2 text-sm font-semibold text-gray-900 dark:text-white"},qd={key:0,class:"mt-1 whitespace-pre-wrap text-xs text-gray-600 dark:text-gray-300"},Md={class:"flex flex-wrap gap-2"},Vd={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"},Ld={class:"text-[11px] font-bold text-gray-600 dark:text-gray-300"},Ad=["disabled"],Fd=["disabled"],Od={class:"grid grid-cols-1 gap-4 sm:grid-cols-2"},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 text-sm font-medium text-gray-900 dark:text-white"},Hd={class:"rounded-xl bg-gray-50 p-4 dark:bg-dark-900"},Bd={class:"text-xs font-bold uppercase tracking-wider text-gray-400"},Qd={class:"mt-1 flex flex-wrap items-center gap-2"},Wd={class:"font-mono text-sm font-bold text-gray-900 dark:text-white"},Gd=["href"],Kd=["href"],Zd={class:"rounded-xl bg-gray-50 p-4 dark:bg-dark-900"},Jd={class:"text-xs font-bold uppercase tracking-wider text-gray-400"},Yd={class:"mt-1 text-sm text-gray-900 dark:text-white"},Xd={key:0},eu={key:1},tu={key:2},su={class:"rounded-xl border border-gray-200 bg-white p-4 dark:border-dark-700 dark:bg-dark-800"},au={class:"mb-3 flex flex-wrap items-center justify-between gap-3"},nu={class:"text-sm font-bold text-gray-900 dark:text-white"},ou={class:"mt-0.5 text-xs text-gray-500 dark:text-gray-400"},lu={key:0,class:"py-6 text-center text-xs text-gray-500 dark:text-gray-400"},ru={key:1,class:"py-6 text-center text-xs text-gray-500 dark:text-gray-400"},iu={key:2,class:"overflow-hidden rounded-lg border border-gray-100 dark:border-dark-700"},du={class:"min-w-full divide-y divide-gray-100 dark:divide-dark-700"},uu={class:"bg-gray-50 dark:bg-dark-900"},cu={class:"px-3 py-2 text-left text-[11px] font-bold uppercase tracking-wider text-gray-500 dark:text-gray-400"},pu={class:"px-3 py-2 text-left text-[11px] font-bold uppercase tracking-wider text-gray-500 dark:text-gray-400"},mu={class:"px-3 py-2 text-left text-[11px] font-bold uppercase tracking-wider text-gray-500 dark:text-gray-400"},gu={class:"divide-y divide-gray-100 dark:divide-dark-700"},vu={class:"px-3 py-2 text-xs text-gray-600 dark:text-gray-300"},_u={class:"px-3 py-2 text-xs"},xu={class:"px-3 py-2 text-xs text-gray-600 dark:text-gray-300"},fu={key:0},yu={key:1}
3,zt=10,bu=ke({__name:"OpsAlertEventsCard",setup(ne){const{t:d}=$e(),a=gt(),T=Dt("(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),K=b(!1),M=b([]),p=b("7d"),R=_(()=>[{value:"7d",label:d("admin.ops.timeRange.7d")},{value:"30d",label:d("admin.ops.timeRange.30d")}]),A=b("1h"),oe=_(()=>[{value:"1h",label:d("admin.ops.timeRange.1h")},{value:"24h",label:d("admin.ops.timeRange.24h")},{value:"7d",label:d("admin.ops.timeRange.7d")}]),J=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(""),G=_(()=>[{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:zt,time_range:J.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 E(){var N,S;n.value=!0;try{const h=await te.listAlertEvents(F());D.value=h,q.value=h.length===zt}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<zt&&(q.value=!1)}catch(S){console.error("[OpsAlertEventsCard] Failed to load more alert events",S),q.value=!1}finally{P.value=!1}}}function V(N){const S=N.target;if(!S)return;S.scrollTop+S.clientHeight>=S.scrollHeight-120&&O()}function B(N,S){var Y;const h=(Y=N==null?void 0:N.dimensions)==null?void 0:Y[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 Y=Math.floor(h/60);if(Y<60)return`${Y}m`;const ae=Math.floor(Y/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,Y=String(N.status||"").trim().toLowerCase();if(h){const ye=new Date(h);if(!Number.isNaN(ye.getTime())){const be=ye.getTime()-S.getTime();return`${d(Y==="manual_resolved"?"admin.ops.alertEvents.status.manualResolved":"admin.ops.alertEvents.status.resolved")} ${Z(be)}`}}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 Y=(fe=N.dimensions)==null?void 0:fe.group_id;Y!=null&&Y!==""&&S.push(`group_id=${String(Y)}`);const ae=B(N,"region");return ae&&S.push(`region=${ae}`),S.length?S.join(" "):"-"}function me(){$.value=!1,x.value=null,M.value=[]}async function j(N){var S,h;$.value=!0,x.value=N,v.value=!0,K.value=!0;try{const Y=await te.getAlertEvent(N.id);x.value=Y}catch(Y){console.error("[OpsAlertEventsCard] Failed to load alert detail",Y),a.showError(((h=(S=Y==null?void 0:Y.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){M.value=[],K.value=!1;return}K.value=!0;try{const h=B(N,"platform"),Y=(S=N.dimensions)==null?void 0:S.group_id,ae=typeof Y=="number"?Y:void 0,fe=await te.listAlertEvents({limit:20,time_range:p.value,platform:h||void 0,group_id:ae,status:""});M.value=fe.filter(ye=>{var Oe,Ie;if(ye.rule_id!==N.rule_id)return!1;const be=B(ye,"platform"),He=B(N,"platform");if((be||"")!==(He||""))return!1;const qe=(Oe=ye.dimensions)==null?void 0:Oe.group_id,Ge=(Ie=N.dimensions)==null?void 0:Ie.group_id;return(qe??null)===(Ge??null)})}catch(h){console.error("[OpsAlertEventsCard] Failed to load alert history",h),M.value=[]}finally{K.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,Y;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,be=B(N,"region")||null;await te.createAlertSilence({rule_id:N.rule_id,platform:ae||"",group_id:ye??void 0,region:be??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(((Y=(h=ae==null?void 0:ae.response)==null?void 0:h.data)==null?void 0:Y.detail)||d("admin.ops.alertEvents.detail.silenceFailed"))}finally{y.value=!1}}}async function le(){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 E(),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}}}Ct(()=>{E()}),ge([J,ee,Q,c],()=>{D.value=[],q.value=!0,E()}),ge(p,()=>{$.value&&g()});function Ce(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 Fe=_(()=>D.value.length===0&&!n.value);return(N,S)=>(l(),u("div",qi,[e("div",Mi,[e("div",null,[e("h3",Vi,t(s(d)("admin.ops.alertEvents.title")),1),e("p",Li,t(s(d)("admin.ops.alertEvents.description")),1)]),e("div",Ai,[I(ce,{"model-value":J.value,options:de.value,class:"w-[120px]",onChange:S[0]||(S[0]=h=>J.value=String(h||"24h"))},null,8,["model-value","options"]),I(ce,{"model-value":ee.value,options:G.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:E},[(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,Fi)])]),n.value?(l(),u("div",Oi,[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)])):Fe.value?(l(),u("div",Ii,t(s(d)("admin.ops.alertEvents.empty")),1)):(l(),u("div",ji,[e("div",{class:"max-h-[600px] overflow-y-auto",onScroll:V},[s(T)?(l(),u("table",Zi,[e("thead",Ji,[e("tr",null,[e("th",Yi,t(s(d)("admin.ops.alertEvents.table.time")),1),e("th",Xi,t(s(d)("admin.ops.alertEvents.table.severity")),1),e("th",ed,t(s(d)("admin.ops.alertEvents.table.platform")),1),e("th",td,t(s(d)("admin.ops.alertEvents.table.ruleId")),1),e("th",sd,t(s(d)("admin.ops.alertEvents.table.title")),1),e("th",ad,t(s(d)("admin.ops.alertEvents.table.duration")),1),e("th",nd,t(s(d)("admin.ops.alertEvents.table.dimensions")),1),e("th",od,t(s(d)("admin.ops.alertEvents.table.email")),1)])]),e("tbody",ld,[(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:Y=>j(h),title:h.title||""},[e("td",id,t(s(We)(h.fired_at||h.created_at)),1),e("td",dd,[e("div",ud,[e("span",{class:H(["rounded-full px-2 py-1 text-[10px] font-bold",Ce(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",cd,t(B(h,"platform")||"-"),1),e("td",pd,[e("span",md,"#"+t(h.rule_id),1)]),e("td",gd,[e("div",vd,t(h.title||"-"),1),h.description?(l(),u("div",_d,t(h.description),1)):C("",!0)]),e("td",xd,t(ve(h)),1),e("td",fd,t(xe(h)),1),e("td",yd,[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(),ie(Ne,{key:0,name:"checkCircle",size:"sm",class:"text-green-600 dark:text-green-400"})):(l(),ie(Ne,{key:1,name:"ban",size:"sm",class:"text-gray-400 dark:text-gray-500"})),e("span",hd,t(h.email_sent?s(d)("admin.ops.alertEvents.table.emailSent"):s(d)("admin.ops.alertEvents.table.emailIgnored")),1)],8,bd)])],8,rd))),128))])])):(l(),u("div",Pi,[(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:Y=>j(h)},[e("div",Ni,[e("span",{class:H(["rounded-full px-2 py-1 text-[10px] font-bold",Ce(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",zi,t(s(We)(h.fired_at||h.created_at)),1)]),e("div",Hi,t(h.title||"-"),1),h.description?(l(),u("div",Bi,t(h.description),1)):C("",!0),e("div",Qi,[e("span",null,[e("span",Wi,"#"+t(h.rule_id),1),z(" · "+t(ve(h)),1)]),e("span",Gi,[h.email_sent?(l(),ie(Ne,{key:0,name:"checkCircle",size:"xs",class:"text-green-600 dark:text-green-400"})):(l(),ie(Ne,{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",Ki,t(xe(h)),1)],8,Ui))),128))])),P.value?(l(),u("div",kd,[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",wd," - ")):C("",!0)],32)])),I(Xe,{show:$.value,title:s(d)("admin.ops.alertEvents.detail.title"),width:"wide","close-on-click-outside":!0,onClose:me},{default:Ae(()=>{var h,Y;return[v.value?(l(),u("div",$d,t(s(d)("admin.ops.alertEvents.detail.loading")),1)):x.value?(l(),u("div",Rd,[e("div",Sd,[e("div",Td,[e("div",null,[e("div",Dd,[e("span",{class:H(["inline-flex items-center rounded-full px-2 py-1 text-[10px] font-bold",Ce(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",Ed,t(x.value.title||"-"),1),x.value.description?(l(),u("div",qd,t(x.value.description),1)):C("",!0)]),e("div",Md,[e("div",Vd,[e("span",Ld,t(s(d)("admin.ops.alertEvents.detail.silence")),1),I(ce,{"model-value":A.value,options:oe.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(Ne,{name:"ban",size:"sm"}),z(" "+t(s(d)("common.apply")),1)],8,Ad)]),e("button",{type:"button",class:"btn btn-secondary btn-sm",disabled:y.value,onClick:le},[I(Ne,{name:"checkCircle",size:"sm"}),z(" "+t(s(d)("admin.ops.alertEvents.detail.manualResolve")),1)],8,Fd)])])]),e("div",Od,[e("div",Id,[e("div",jd,t(s(d)("admin.ops.alertEvents.detail.firedAt")),1),e("div",Pd,t(s(We)(x.value.fired_at||x.value.created_at)),1)]),e("div",Ud,[e("div",Nd,t(s(d)("admin.ops.alertEvents.detail.resolvedAt")),1),e("div",zd,t(x.value.resolved_at?s(We)(x.value.resolved_at):"-"),1)]),e("div",Hd,[e("div",Bd,t(s(d)("admin.ops.alertEvents.detail.ruleId")),1),e("div",Qd,[e("div",Wd,"#"+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(Ne,{name:"externalLink",size:"xs"}),z(" "+t(s(d)("admin.ops.alertEvents.detail.viewRule")),1)],8,Gd),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(Ne,{name:"externalLink",size:"xs"}),z(" "+t(s(d)("admin.ops.alertEvents.detail.viewLogs")),1)],8,Kd)])]),e("div",Zd,[e("div",Jd,t(s(d)("admin.ops.alertEvents.detail.dimensions")),1),e("div",Yd,[B(x.value,"platform")?(l(),u("div",Xd,"platform="+t(B(x.value,"platform")),1)):C("",!0),(Y=x.value.dimensions)!=null&&Y.group_id?(l(),u("div",eu,"group_id="+t(x.value.dimensions.group_id),1)):C("",!0),B(x.value,"region")?(l(),u("div",tu,"region="+t(B(x.value,"region")),1)):C("",!0)])])]),e("div",su,[e("div",au,[e("div",null,[e("div",nu,t(s(d)("admin.ops.alertEvents.detail.historyTitle")),1),e("div",ou,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"])]),K.value?(l(),u("div",lu,t(s(d)("admin.ops.alertEvents.detail.historyLoading")),1)):M.value.length===0?(l(),u("div",ru,t(s(d)("admin.ops.alertEvents.detail.historyEmpty")),1)):(l(),u("div",iu,[e("table",du,[e("thead",uu,[e("tr",null,[e("th",cu,t(s(d)("admin.ops.alertEvents.table.time")),1),e("th",pu,t(s(d)("admin.ops.alertEvents.table.status")),1),e("th",mu,t(s(d)("admin.ops.alertEvents.table.metric")),1
3)])]),e("tbody",gu,[(l(!0),u(ue,null,pe(M.value,ae=>(l(),u("tr",{key:ae.id,class:"hover:bg-gray-50 dark:hover:bg-dark-700/50"},[e("td",vu,t(s(We)(ae.fired_at||ae.created_at)),1),e("td",_u,[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",xu,[typeof ae.metric_value=="number"&&typeof ae.threshold_value=="number"?(l(),u("span",fu,t(ae.metric_value.toFixed(2))+" / "+t(ae.threshold_value.toFixed(2)),1)):(l(),u("span",yu,"-"))])]))),128))])])]))])])):(l(),u("div",Cd,t(s(d)("admin.ops.alertEvents.detail.empty")),1))]}),_:1},8,["show","title"])]))}}),hu={class:"card p-4 md:p-5"},ku={class:"mb-4 flex flex-wrap items-center justify-between gap-3"},wu={class:"text-sm font-bold text-gray-900 dark:text-white"},$u={class:"flex flex-wrap items-center gap-2"},Cu={class:"w-36"},Ru={class:"w-36"},Su={key:0,class:"w-28"},Tu={class:"w-24"},Du=["disabled"],Eu=["disabled"],qu={class:"text-xs text-gray-500 dark:text-gray-400"},Mu={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"},Vu={key:1,class:"py-8 text-center text-sm text-gray-500 dark:text-gray-400"},Lu={key:3,class:"space-y-3"},Au={class:"overflow-hidden rounded-xl border border-gray-200 dark:border-dark-700"},Fu={class:"max-h-[420px] overflow-auto"},Ou={key:0,class:"divide-y divide-gray-100 dark:divide-dark-800"},Iu={class:"break-all text-xs font-medium text-gray-900 dark:text-gray-100"},ju={class:"grid grid-cols-2 gap-x-3 gap-y-1 text-xs"},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={class:"flex items-baseline justify-between gap-2"},sc={class:"text-gray-500 dark:text-gray-400"},ac={class:"text-gray-700 dark:text-gray-200"},nc={key:1,class:"min-w-full text-left text-xs md:text-sm"},oc={class:"sticky top-0 z-10 bg-white dark:bg-dark-800"},lc={class:"border-b border-gray-200 text-gray-500 dark:border-dark-700 dark:text-gray-400"},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-semibold"},pc={class:"px-2 py-2 font-semibold"},mc={class:"px-2 py-2 font-semibold"},gc={class:"px-2 py-2 font-medium"},vc={class:"px-2 py-2"},_c={class:"px-2 py-2"},xc={class:"px-2 py-2"},fc={class:"px-2 py-2"},yc={class:"px-2 py-2"},bc={class:"px-2 py-2"},hc={key:0,class:"mt-3 text-xs text-gray-500 dark:text-gray-400"},kc=ke({__name:"OpsOpenAITokenStatsCard",props:{platformFilter:{default:""},groupIdFilter:{default:null},refreshToken:{}},setup(ne){const d=ne,{t:a}=$e(),T=Dt("(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),K=_(()=>{var i;return((i=D.value)==null?void 0:i.items)??[]}),M=_(()=>{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(M.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")}]),oe=_(()=>[{value:10,label:"Top 10"},{value:20,label:"Top 20"},{value:50,label:"Top 50"},{value:100,label:"Top 100"}]),J=_(()=>[{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)?"-":ze(Math.round(i))}function G(){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(G()),$.value==="pagination"&&v.value>p.value&&(v.value=p.value,D.value=await te.getOpenAITokenStats(G()))}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 E=!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"&&E&&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",hu,[e("div",ku,[e("h3",wu,t(s(a)("admin.ops.openaiTokenStats.title")),1),e("div",$u,[e("div",Cu,[I(ce,{modelValue:q.value,"onUpdate:modelValue":F[0]||(F[0]=E=>q.value=E),options:R.value},null,8,["modelValue","options"])]),e("div",Ru,[I(ce,{modelValue:$.value,"onUpdate:modelValue":F[1]||(F[1]=E=>$.value=E),options:A.value},null,8,["modelValue","options"])]),$.value==="topn"?(l(),u("div",Su,[I(ce,{modelValue:x.value,"onUpdate:modelValue":F[2]||(F[2]=E=>x.value=E),options:oe.value},null,8,["modelValue","options"])])):(l(),u(ue,{key:1},[e("div",Tu,[I(ce,{modelValue:y.value,"onUpdate:modelValue":F[3]||(F[3]=E=>y.value=E),options:J.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,Du),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,Eu),e("span",qu,t(s(a)("admin.ops.openaiTokenStats.pageInfo",{page:v.value,total:p.value})),1)],64))])]),P.value?(l(),u("div",Mu,t(P.value),1)):C("",!0),n.value?(l(),u("div",Vu,t(s(a)("admin.ops.loadingText")),1)):K.value.length===0?(l(),ie(vt,{key:2,title:s(a)("common.noData"),description:s(a)("admin.ops.openaiTokenStats.empty")},null,8,["title","description"])):(l(),u("div",Lu,[e("div",Au,[e("div",Fu,[s(T)?(l(),u("table",nc,[e("thead",oc,[e("tr",lc,[e("th",rc,t(s(a)("admin.ops.openaiTokenStats.table.model")),1),e("th",ic,t(s(a)("admin.ops.openaiTokenStats.table.requestCount")),1),e("th",dc,t(s(a)("admin.ops.openaiTokenStats.table.avgTokensPerSec")),1),e("th",uc,t(s(a)("admin.ops.openaiTokenStats.table.avgFirstTokenMs")),1),e("th",cc,t(s(a)("admin.ops.openaiTokenStats.table.totalOutputTokens")),1),e("th",pc,t(s(a)("admin.ops.openaiTokenStats.table.avgDurationMs")),1),e("th",mc,t(s(a)("admin.ops.openaiTokenStats.table.requestsWithFirstToken")),1)])]),e("tbody",null,[(l(!0),u(ue,null,pe(K.value,E=>(l(),u("tr",{key:E.model,class:"border-b border-gray-100 text-gray-700 last:border-b-0 dark:border-dark-800 dark:text-gray-200"},[e("td",gc,t(E.model),1),e("td",vc,t(ee(E.request_count)),1),e("td",_c,t(de(E.avg_tokens_per_sec)),1),e("td",xc,t(de(E.avg_first_token_ms)),1),e("td",fc,t(ee(E.total_output_tokens)),1),e("td",yc,t(ee(E.avg_duration_ms)),1),e("td",bc,t(ee(E.requests_with_first_token)),1)]))),128))])])):(l(),u("div",Ou,[(l(!0),u(ue,null,pe(K.value,E=>(l(),u("div",{key:E.model,class:"space-y-2 p-3"},[e("div",Iu,t(E.model),1),e("div",ju,[e("div",Pu,[e("span",Uu,t(s(a)("admin.ops.openaiTokenStats.table.requestCount")),1),e("span",Nu,t(ee(E.request_count)),1)]),e("div",zu,[e("span",Hu,t(s(a)("admin.ops.openaiTokenStats.table.avgTokensPerSec")),1),e("span",Bu,t(de(E.avg_tokens_per_sec)),1)]),e("div",Qu,[e("span",Wu,t(s(a)("admin.ops.openaiTokenStats.table.avgFirstTokenMs")),1),e("span",Gu,t(de(E.avg_first_token_ms)),1)]),e("div",Ku,[e("span",Zu,t(s(a)("admin.ops.openaiTokenStats.table.totalOutputTokens")),1),e("span",Ju,t(ee(E.total_output_tokens)),1)]),e("div",Yu,[e("span",Xu,t(s(a)("admin.ops.openaiTokenStats.table.avgDurationMs")),1),e("span",ec,t(ee(E.avg_duration_ms)),1)]),e("div",tc,[e("span",sc,t(s(a)("admin.ops.openaiTokenStats.table.requestsWithFirstToken")),1),e("span",ac,t(ee(E.requests_with_first_token)),1)])])]))),128))]))])]),$.value==="topn"?(l(),u("div",hc,t(s(a)("admin.ops.openaiTokenStats.totalModels",{total:M.value})),1)):C("",!0)]))]))}}),wc={class:"rounded-2xl border border-gray-200 bg-white p-4 shadow-sm dark:border-dark-700 dark:bg-dark-900/60"},$c={class:"mb-4 flex flex-wrap items-center justify-between gap-3"},Cc={class:"text-sm font-bold text-gray-900 dark:text-white"},Rc={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},Sc={class:"flex flex-wrap items-center gap-2 text-xs"},Tc={class:"rounded-md bg-gray-100 px-2 py-1 text-gray-700 dark:bg-dark-700 dark:text-gray-200"},Dc={class:"rounded-md bg-gray-100 px-2 py-1 text-gray-700 dark:bg-dark-700 dark:text-gray-200"},Ec={class:"rounded-md bg-amber-100 px-2 py-1 text-amber-700 dark:bg-amber-900/30 dark:text-amber-300"},qc={class:"rounded-md bg-red-100 px-2 py-1 text-red-700 dark:bg-red-900/30 dark:text-red-300"},Mc={class:"mb-4 rounded-xl border border-gray-200 bg-gray-50 p-3 dark:border-dark-700 dark:bg-dark-800/70"},Vc={class:"mb-2 flex items-center justify-between"},Lc={class:"text-xs font-semibold text-gray-700 dark:text-gray-200"},Ac={key:0,class:"text-xs text-gray-500"},Fc={class:"grid grid-cols-1 gap-3 md:grid-cols-2 xl:grid-cols-6"},Oc={class:"text-xs text-gray-600 dark:text-gray-300"},Ic={class:"text-xs text-gray-600 dark:text-gray-300"},jc={class:"text-xs text-gray-600 dark:text-gray-300"},Pc={class:"text-xs text-gray-600 dark:text-gray-300"},Uc={class:"text-xs text-gray-600 dark:text-gray-300"},Nc={class:"md:col-span-2 xl:col-span-6"},zc={class:"grid gap-3 lg:grid-cols-[minmax(0,1fr)_auto] lg:items-end"},Hc={class:"flex flex-wrap items-center gap-x-4 gap-y-2"},Bc={class:"inline-flex items-center gap-2 text-xs text-gray-600 dark:text-gray-300"},Qc={class:"inline-flex items-center gap-2 text-xs text-gray-600 dark:text-gray-300"},Wc={class:"flex flex-wrap items-center gap-2 lg:justify-end"},Gc=["disabled"],Kc=["disabled"],Zc={key:0,class:"mt-2 text-xs text-red-600 dark:text-red-400"},Jc={class:"mb-4 grid grid-cols-1 gap-3 md:grid-cols-5"},Yc={class:"text-xs text-gray-600 dark:text-gray-300"},Xc={class:"text-xs text-gray-600 dark:text-gray-300"},e0={class:"text-xs text-gray-600 dark:text-gray-300"},t0={class:"text-xs text-gray-600 dark:text-gray-300"},s0={class:"text-xs text-gray-600 dark:text-gray-300"},a0=["placeholder"],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={class:"text-xs text-gray-600 dark:text-gray-300"},c0={class:"text-xs text-gray-600 dark:text-gray-300"},p0={class:"text-xs text-gray-600 dark:text-gray-300"},m0=["placeholder"],g0={class:"mb-3 flex flex-wrap gap-2"},v0={class:"overflow-hidden rounded-xl border border-gray-200 dark:border-dark-700"},_0={key:0,class:"px-4 py-8 text-center text-sm text-gray-500"},x0={key:1,class:"px-4 py-8 text-center text-sm text-gray-500"},f0={key:2,class:"divide-y divide-gray-100 dark:divide-dark-800"},y0={class:"flex items-center justify-between gap-2"},b0={class:"text-xs text-gray-500 dark:text-gray-400"},h0=["title"],k0={class:"whitespace-normal break-all text-xs text-gray-700 dark:text-gray-300"},w0={key:3,class:"overflow-auto"},$0={class:"min-w-full table-fixed divide-y divide-gray-200 dark:divide-dark-700"},C0={class:"bg-gray-50 dark:bg-dark-900"},R0={class:"w-[170px] px-3 py-2 text-left text-[11px] font-semibold text-gray-500"},S0={class:"w-[160px] px-3 py-2 text-left text-[11px] font-semibold text-gray-500"},T0={class:"w-[80px] px-3 py-2 text-left text-[11px] font-semibold text-gray-500"},D0={class:"px-3 py-2 text-left text-[11px] font-semibold text-gray-500"},E0={class:"divide-y divide-gray-100 dark:divide-dark-800"},q0={class:"px-3 py-2 text-xs text-gray-700 dark:text-gray-300"},M0={class:"px-3 py-2 text-xs text-gray-700 dark:text-gray-300"},V0=["title"],L0={class:"px-3 py-2 text-xs"},A0={class:"px-3 py-2 text-xs text-gray-700 dark:text-gray-300 whitespace-normal break-all"},F0=ke({__name:"OpsSystemLogTable",props:{platformFilter:{default:""},refreshToken:{default:0}},setup(ne){const d=gt(),{t:a}=$e(),T=Dt("(min-width: 768px)"),n=ne,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),K=b(!1),M=Zt({level:"info",enable_sampling:!1,sampling_initial:100,sampling_thereafter:100,caller:!0,stacktrace_level:"error",retention_days:30}),p=Zt({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"}],oe=[{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"}],J=_(()=>[{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()},G=(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 le=g.extra||{},Ce=G(le,"status_code"),Te=G(le,"latency_ms"),De=G(le,"method"),Fe=G(le,"path"),N=G(le,"client_ip"),S=G(le,"protocol"),h=[];Ce&&h.push(`status=${Ce}`),Te&&h.push(`latency_ms=${Te}`),De&&h.push(`method=${De}`),Fe&&h.push(`path=${Fe}`),N&&h.push(`ip=${N}`),S&&h.push(`proto=${S}`),h.length>0&&m.push(h.join(" "));const Y=[];g.request_id&&Y.push(`req=${g.request_id}`),g.client_request_id&&Y.push(`client_req=${g.client_request_id}`),g.user_id!=null&&Y.push(`user=${g.user_id}`),g.api_key_id!=null&&Y.push(`key=${g.api_key_id}`),g.account_id!=null&&Y.push(`acc=${g.account_id}`),g.platform&&Y.push(`platform=${g.platform}`),g.model&&Y.push(`model=${g.model}`),Y.length>0&&m.push(Y.join(" "));const ae=G(le,"errors");ae&&m.push(`errors=${ae}`);const fe=G(le,"err")||G(le,"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{}},E=async()=>{y.value=!0;try{const g=await te.getRuntimeLogConfig();M.level=g.level,M.enable_sampling=g.enable_sampling,M.sampling_initial=g.sampling_initial,M.sampling_thereafter=g.sampling_thereafter,M.caller=g.caller,M.stacktrace_level=g.stacktrace_level,M.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;K.value=!0;try{const w=await te.updateRuntimeLogConfig({...M});M.level=w.level,M.enable_sampling=w.enable_sampling,M.sampling_initial=w.sampling_initial,M.sampling_thereafter=w.sampling_thereafter,M.caller=w.caller,M.stacktrace_level=w.stacktrace_level,M.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{K.value=!1}},V=async()=>{var m,w;if(window.confirm(a("admin.ops.systemLogs.resetRuntimeConfigConfirm"))){K.value=!0;try{const le=await te.resetRuntimeLogConfig();M.level=le.level,M.enable_sampling=le.enable_sampling,M.sampling_initial=le.sampling_initial,M.sampling_thereafter=le.sampling_thereafter,M.caller=le.caller,M.stacktrace_level=le.stacktrace_level,M.retention_days=le.retention_days,d.showSuccess(a("admin.ops.systemLogs.runtimeConfigReset")),await F()}catch(le){console.error("[OpsSystemLogTable] Failed to reset runtime log config",le),d.showError(((w=(m=le==null?void 0:le.response)==null?void 0:m.data)==null?void 0:w.detail)||a("admin.ops.systemLogs.runtimeConfigResetFailed"))}finally{K.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(Cs(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 Ct(async()=>{n.platformFilter&&(p.platform=n.platformFilter),await Promise.all([i(),F(),E()])}),(g,m)=>(l(),u("section",wc,[e("div",$c,[e("div",null,[e("h3",Cc,t(s(a)("admin.ops.systemLogs.title")),1),e("p",Rc,t(s(a)("admin.ops.systemLogs.description")),1)]),e("div",Sc,[e("span",Tc,t(s(a)("admin.ops.systemLogs.queue"))+" "+t(v.value.queue_depth)+"/"+t(v.value.queue_capacity),1),e("span",Dc,t(s(a)("admin.ops.systemLogs.written"))+" "+t(v.value.written_count),1),e("span",Ec,t(s(a)("admin.ops.systemLogs.dropped"))+" "+t(v.value.dropped_count),1),e("span",qc,t(s(a)("admin.ops.systemLogs.failed"))+" "+t(v.value.write_failed_count),1)])]),e("div",Mc,[e("div",Vc,[e("div",Lc,t(s(a)("admin.ops.systemLogs.runtimeConfig")),1),y.value?(l(),u("span",Ac,t(s(a)("common.loading")),1)):C("",!0)]),e("div",Fc,[e("label",Oc,[z(t(s(a)("admin.ops.systemLogs.level"))+" ",1),I(ce,{modelValue:M.level,"onUpdate:modelValue":m[0]||(m[0]=w=>M.level=w),class:"mt-1",options:R},null,8,["modelValue"])]),e("label",Ic,[z(t(s(a)("admin.ops.systemLogs.stacktraceThreshold"))+" ",1),I(ce,{modelValue:M.stacktrace_level,"onUpdate:modelValue":m[1]||(m[1]=w=>M.stacktrace_level=w),class:"mt-1",options:A},null,8,["modelValue"])]),e("label",jc,[z(t(s(a)("admin.ops.systemLogs.samplingInitial"))+" ",1),se(e("input",{"onUpdate:modelValue":m[2]||(m[2]=w=>M.sampling_initial=w),type:"number",min:"1",class:"input mt-1"},null,512),[[re,M.sampling_initial,void 0,{number:!0}]])]),e("label",Pc,[z(t(s(a)("admin.ops.systemLogs.samplingThereafter"))+" ",1),se(e("input",{"onUpdate:modelValue":m[3]||(m[3]=w=>M.sampling_thereafter=w),type:"number",min:"1",class:"input mt-1"},null,512),[[re,M.sampling_thereafter,void 0,{number:!0}]])]),e("label",Uc,[z(t(s(a)("admin.ops.systemLogs.retentionDays"))+" ",1),se(e("input",{"onUpdate:modelValue":m[4]||(m[4]=w=>M.retention_days=w),type:"number",min:"1",max:"3650",class:"input mt-1"},null,512),[[re,M.retention_days,void 0,{number:!0}]])]),e("div",Nc,[e("div",zc,[e("div",Hc,[e("label",Bc,[se(e("input",{"onUpdate:modelValue":m[5]||(m[5]=w=>M.caller=w),type:"checkbox"},null,512),[[Vt,M.caller]]),z(" "+t(s(a)("admin.ops.systemLogs.caller")),1)]),e("label",Qc,[se(e("input",{"onUpdate:modelValue":m[6]||(m[6]=w=>M.enable_sampling=w),type:"checkbox"},null,512),[[Vt,M.enable_sampling]]),z(" "+t(s(a)("admin.ops.systemLogs.sampling")),1)])]),e("div",Wc,[e("button",{type:"button",class:"btn btn-primary btn-sm",disabled:K.value,onClick:O},t(K.value?s(a)("common.saving"):s(a)("admin.ops.systemLogs.saveAndApply")),9,Gc),e("button",{type:"button",class:"btn btn-secondary btn-sm",disabled:K.value,onClick:V},t(s(a)("admin.ops.systemLogs.resetDefaults")),9,Kc)])])])]),v.value.last_error?(l(),u("p",Zc,t(s(a)("admin.ops.systemLogs.latestWriteError"))+" "+t(v.value.last_error),1)):C("",!0)]),e("div",Jc,[e("label",Yc,[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:oe},null,8,["modelValue"])]),e("label",Xc,[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"}
3,null,512),[[re,p.start_time]])]),e("label",e0,[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),[[re,p.end_time]])]),e("label",t0,[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:J.value},null,8,["modelValue","options"])]),e("label",s0,[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,a0),[[re,p.component]])]),e("label",n0,[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),[[re,p.host]])]),e("label",o0,[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),[[re,p.request_id]])]),e("label",l0,[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),[[re,p.client_request_id]])]),e("label",r0,[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),[[re,p.user_id]])]),e("label",i0,[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),[[re,p.api_key_id]])]),e("label",d0,[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),[[re,p.account_id]])]),e("label",u0,[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),[[re,p.platform]])]),e("label",c0,[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),[[re,p.model]])]),e("label",p0,[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,m0),[[re,p.q]])])]),e("div",g0,[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",v0,[P.value?(l(),u("div",_0,t(s(a)("common.loading")),1)):j.value?s(T)?(l(),u("div",w0,[e("table",$0,[e("thead",C0,[e("tr",null,[e("th",R0,t(s(a)("admin.ops.systemLogs.time")),1),e("th",S0,t(s(a)("admin.ops.systemLogs.host")),1),e("th",T0,t(s(a)("admin.ops.systemLogs.level")),1),e("th",D0,t(s(a)("admin.ops.systemLogs.logDetails")),1)])]),e("tbody",E0,[(l(!0),u(ue,null,pe(D.value,w=>(l(),u("tr",{key:w.id,class:"align-top"},[e("td",q0,t(ee(w.created_at)),1),e("td",M0,[e("span",{class:"block truncate",title:w.host||"-"},t(w.host||"-"),9,V0)]),e("td",L0,[e("span",{class:H(["inline-flex rounded-full px-2 py-0.5 font-semibold",de(w.level)])},t(w.level),3)]),e("td",A0,t(Q(w)),1)]))),128))])])])):(l(),u("div",f0,[(l(!0),u(ue,null,pe(D.value,w=>(l(),u("div",{key:w.id,class:"space-y-1.5 p-3"},[e("div",y0,[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",b0,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,h0)):C("",!0),e("div",k0,t(Q(w)),1)]))),128))])):(l(),u("div",x0,t(s(a)("admin.ops.systemLogs.empty")),1)),I(ls,{total:q.value,page:$.value,"page-size":x.value,"onUpdate:page":ve,"onUpdate:pageSize":xe},null,8,["total","page","page-size"])])]))}}),O0={class:"flex h-full min-h-0 flex-col"},I0={class:"mb-4 flex flex-shrink-0 items-center justify-between"},j0={class:"text-xs text-gray-500 dark:text-gray-400"},P0={key:0,class:"flex flex-1 items-center justify-center py-16"},U0={class:"flex flex-col items-center gap-3"},N0={class:"text-sm font-medium text-gray-500 dark:text-gray-400"},z0={key:1,class:"flex min-h-0 flex-1 flex-col"},H0={key:0,class:"rounded-xl border border-dashed border-gray-200 p-10 text-center dark:border-dark-700"},B0={class:"text-sm font-medium text-gray-600 dark:text-gray-300"},Q0={class:"mt-1 text-xs text-gray-400"},W0={key:1,class:"flex min-h-0 flex-1 flex-col overflow-hidden rounded-xl border border-gray-200 dark:border-dark-700"},G0={class:"min-h-0 flex-1 overflow-auto"},K0={key:0,class:"divide-y divide-gray-100 dark:divide-dark-800"},Z0={class:"flex flex-wrap items-center gap-2"},J0={class:"text-xs font-medium text-gray-700 dark:text-gray-200"},Y0={class:"ml-auto text-[11px] text-gray-500 dark:text-gray-400"},X0={class:"break-all text-xs text-gray-600 dark:text-gray-300"},ep={class:"flex flex-wrap items-center gap-x-3 gap-y-1 text-xs text-gray-600 dark:text-gray-300"},tp={key:0,class:"flex items-center gap-2"},sp=["title"],ap=["onClick"],np=["onClick"],op={key:1,class:"min-w-full divide-y divide-gray-200 dark:divide-dark-700"},lp={class:"sticky top-0 z-10 bg-gray-50 dark:bg-dark-900"},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-left text-[11px] font-bold uppercase tracking-wider text-gray-500 dark:text-gray-400"},pp={class:"px-4 py-3 text-left text-[11px] font-bold uppercase tracking-wider text-gray-500 dark:text-gray-400"},mp={class:"px-4 py-3 text-left text-[11px] font-bold uppercase tracking-wider text-gray-500 dark:text-gray-400"},gp={class:"px-4 py-3 text-right text-[11px] font-bold uppercase tracking-wider text-gray-500 dark:text-gray-400"},vp={class:"divide-y divide-gray-200 bg-white dark:divide-dark-700 dark:bg-dark-800"},_p={class:"whitespace-nowrap px-4 py-3 text-xs text-gray-600 dark:text-gray-300"},xp={class:"whitespace-nowrap px-4 py-3"},fp={class:"whitespace-nowrap px-4 py-3 text-xs font-medium text-gray-700 dark:text-gray-200"},yp=["title"],bp={class:"whitespace-nowrap px-4 py-3 text-xs text-gray-600 dark:text-gray-300"},hp={class:"whitespace-nowrap px-4 py-3 text-xs text-gray-600 dark:text-gray-300"},kp={class:"px-4 py-3"},wp={key:0,class:"flex items-center gap-2"},$p=["title"],Cp=["onClick"],Rp={key:1,class:"text-xs text-gray-400"},Sp={class:"whitespace-nowrap px-4 py-3 text-right"},Tp=["onClick"],Dp={key:1,class:"text-xs text-gray-400"},Ep=ke({__name:"OpsRequestDetailsModal",props:{modelValue:{type:Boolean},timeRange:{}
3,preset:{},platform:{},groupId:{},resumeState:{type:Boolean}},emits:["update:modelValue","openErrorDetail"],setup(ne,{emit:d}){const a=ne,T=d,{t:n}=$e(),P=gt(),{copyToClipboard:D}=Rs(),q=Dt("(min-width: 768px)"),$=b(!1),x=b([]),v=b(0),y=b(1),K=b(10),M=()=>T("update:modelValue",!1),p=_(()=>{const Q=es(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=es(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:K.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=>{if(Q){if(a.resumeState)return;y.value=1,K.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 oe(Q){y.value=Q,A()}function J(Q){K.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&&T("openErrorDetail",Q)}const G=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(),ie(Xe,{show:ne.modelValue,title:a.preset.title||s(n)("admin.ops.requestDetails.title"),width:"full",onClose:M},{default:Ae(()=>[e("div",O0,[e("div",I0,[e("div",j0,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",P0,[e("div",U0,[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",N0,t(s(n)("common.loading")),1)])])):(l(),u("div",z0,[x.value.length===0?(l(),u("div",H0,[e("div",B0,t(s(n)("admin.ops.requestDetails.empty")),1),e("div",Q0,t(s(n)("admin.ops.requestDetails.emptyHint")),1)])):(l(),u("div",W0,[e("div",G0,[s(q)?(l(),u("table",op,[e("thead",lp,[e("tr",null,[e("th",rp,t(s(n)("admin.ops.requestDetails.table.time")),1),e("th",ip,t(s(n)("admin.ops.requestDetails.table.kind")),1),e("th",dp,t(s(n)("admin.ops.requestDetails.table.platform")),1),e("th",up,t(s(n)("admin.ops.requestDetails.table.model")),1),e("th",cp,t(s(n)("admin.ops.requestDetails.table.duration")),1),e("th",pp,t(s(n)("admin.ops.requestDetails.table.status")),1),e("th",mp,t(s(n)("admin.ops.requestDetails.table.requestId")),1),e("th",gp,t(s(n)("admin.ops.requestDetails.table.actions")),1)])]),e("tbody",vp,[(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",_p,t(s(We)(c.created_at)),1),e("td",xp,[e("span",{class:H(["rounded-full px-2 py-1 text-[10px] font-bold",G(c.kind)])},t(c.kind==="error"?s(n)("admin.ops.requestDetails.kind.error"):s(n)("admin.ops.requestDetails.kind.success")),3)]),e("td",fp,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,yp),e("td",bp,t(typeof c.duration_ms=="number"?`${c.duration_ms} ms`:"-"),1),e("td",hp,t(c.status_code??"-"),1),e("td",kp,[c.request_id?(l(),u("div",wp,[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,$p),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,Cp)])):(l(),u("span",Rp,"-"))]),e("td",Sp,[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,Tp)):(l(),u("span",Dp,"-"))])]))),128))])])):(l(),u("div",K0,[(l(!0),u(ue,null,pe(x.value,(c,i)=>(l(),u("div",{key:i,class:"space-y-2 p-4"},[e("div",Z0,[e("span",{class:H(["rounded-full px-2 py-1 text-[10px] font-bold",G(c.kind)])},t(c.kind==="error"?s(n)("admin.ops.requestDetails.kind.error"):s(n)("admin.ops.requestDetails.kind.success")),3),e("span",J0,t((c.platform||"unknown").toUpperCase()),1),e("span",Y0,t(s(We)(c.created_at)),1)]),e("div",X0,t(c.model||"-"),1),e("div",ep,[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",tp,[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,sp),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,ap)])):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,np)):C("",!0)]))),128))]))]),I(ls,{total:v.value,page:y.value,"page-size":K.value,"onUpdate:page":oe,"onUpdate:pageSize":J},null,8,["total","page","page-size"])]))]))])]),_:1},8,["show","title"]))}}),qp={key:0,class:"py-10 text-center text-sm text-gray-500"},Mp={key:1,class:"space-y-6"},Vp={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"},Lp={class:"font-bold"},Ap={class:"mt-1 list-disc space-y-1 pl-4"},Fp={class:"rounded-2xl bg-gray-50 p-4 dark:bg-dark-700/50"},Op={class:"mb-3 text-sm font-semibold text-gray-900 dark:text-white"},Ip={class:"input-label"},jp={class:"mt-1 text-xs text-gray-500"},Pp={class:"rounded-2xl bg-gray-50 p-4 dark:bg-dark-700/50"},Up={class:"mb-3 text-sm font-semibold text-gray-900 dark:text-white"},Np={class:"space-y-4"},zp={class:"flex items-center justify-between"},Hp={class:"font-medium text-gray-900 dark:text-white"},Bp={key:0},Qp={class:"input-label"},Wp={class:"flex gap-2"},Gp=["placeholder"],Kp={class:"mt-2 flex flex-wrap gap-2"},Zp=["onClick"],Jp={class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},Yp={key:1},Xp={class:"input-label"},em={class:"rounded-2xl bg-gray-50 p-4 dark:bg-dark-700/50"},tm={class:"mb-3 text-sm font-semibold text-gray-900 dark:text-white"},sm={class:"space-y-4"},am={class:"flex items-center justify-between"},nm={class:"font-medium text-gray-900 dark:text-white"},om={key:0},lm={class:"input-label"},rm={class:"flex gap-2"},im=["placeholder"],dm={class:"mt-2 flex flex-wrap gap-2"},um=["onClick"],cm={class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},pm={key:1,class:"grid grid-cols-1 gap-4 md:grid-cols-2"},mm={class:"flex items-center justify-between"},gm={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},vm={key:0},_m={class:"flex items-center justify-between"},xm={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},fm={key:1},ym={class:"rounded-2xl bg-gray-50 p-4 dark:bg-dark-700/50"},bm={class:"mb-3 text-sm font-semibold text-gray-900 dark:text-white"},hm={class:"mb-4 text-xs text-gray-500 dark:text-gray-400"},km={class:"space-y-4"},wm={class:"input-label"},$m={class:"mt-1 text-xs text-gray-500"},Cm={class:"input-label"},Rm={class:"mt-1 text-xs text-gray-500"},Sm={class:"input-label"},Tm={class:"mt-1 text-xs text-gray-500"},Dm={class:"input-label"},Em={class:"mt-1 text-xs text-gray-500"},qm={class:"rounded-2xl bg-gray-50 dark:bg-dark-700/50"},Mm={class:"cursor-pointer p-4 text-sm font-semibold text-gray-900 dark:text-white"},Vm={class:"space-y-4 px-4 pb-4"},Lm={class:"space-y-3"},Am={class:"text-xs font-semibold text-gray-700 dark:text-gray-300"},Fm={class:"flex items-center justify-between"},Om={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},Im={key:0},jm={class:"input-label"},Pm={class:"mt-1 text-xs text-gray-500"},Um={class:"grid grid-cols-1 gap-4 md:grid-cols-3"},Nm={class:"input-label"},zm={class:"input-label"},Hm={class:"input-label"},Bm={class:"text-xs text-gray-500"},Qm={class:"space-y-3"},Wm={class:"text-xs font-semibold text-gray-700 dark:text-gray-300"},Gm={class:"flex items-center justify-between"},Km={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},Zm={class:"mt-1 text-xs text-gray-500"},Jm={class:"space-y-3"},Ym={class:"text-xs font-semibold text-gray-700 dark:text-gray-300"},Xm={class:"text-xs text-gray-500"},eg={class:"grid grid-cols-1 gap-4 md:grid-cols-2"},tg={class:"input-label"},sg={class:"input-label"},ag={class:"text-xs text-gray-500"},ng={class:"space-y-3"},og={class:"text-xs font-semibold text-gray-700 dark:text-gray-300"},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:"flex items-center justify-between"},_g={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},xg={class:"mt-1 text-xs text-gray-500"},fg={class:"space-y-3"},yg={class:"text-xs font-semibold text-gray-700 dark:text-gray-300"},bg={class:"flex items-center justify-between"},hg={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},kg={class:"mt-1 text-xs text-gray-500"},wg={key:0},$g={class:"input-label"},Cg={class:"space-y-3"},Rg={class:"text-xs font-semibold text-gray-700 dark:text-gray-300"},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 items-center justify-between"},qg={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},Mg={class:"mt-1 text-xs text-gray-500"},Vg={class:"flex justify-end gap-2"},Lg=["disabled"],Ag=ke({__name:"OpsSettingsDialog",props:{show:{type:Boolean}},emits:["close","saved"],setup(ne,{emit:d}){const{t:a}=$e(),T=gt(),n=ne,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 K(){var k,c;D.value=!0;try{const[i,F,E,O]=await Promise.all([te.getAlertRuntimeSettings(),te.getEmailNotificationConfig(),te.getAdvancedSettings(),te.getMetricThresholds()]);$.value=i,x.value=F,v.value=E,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&&K()});const M=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 oe(k){if(!x.value)return;const c=(k==="alert"?M.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"?M.value="":p.value=""}function J(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)}}),G=_(()=>{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:E,default_threshold_7d:O}=v.value.openai_account_quota_auto_pause;(E<0||E>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(!G.value.valid){T.showError(G.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(E){console.error("[OpsSettingsDialog] Failed to save settings",E),T.showError(((c=(k=E==null?void 0:E.response)==null?void 0:k.data)==null?void 0:c.message)||((F=(i=E==null?void 0:E.response)==null?void 0:i.data)==null?void 0:F.detail)||a("admin.ops.settings.saveFailed"))}finally{q.value=!1}}return(k,c)=>(l(),ie(Xe,{show:ne.show,title:s(a)("admin.ops.settings.title"),width:"extra-wide",onClose:c[35]||(c[35]=i=>P("close"))},{footer:Ae(()=>[e("div",Vg,[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||!G.value.valid,onClick:Q},t(q.value?s(a)("common.saving"):s(a)("common.save")),9,Lg)])]),default:Ae(()=>[D.value?(l(),u("div",qp,t(s(a)("common.loading")),1)):$.value&&x.value&&v.value?(l(),u("div",Mp,[G.value.valid?C("",!0):(l(),u("div",Vp,[e("div",Lp,t(s(a)("admin.ops.settings.val
3idation.title")),1),e("ul",Ap,[(l(!0),u(ue,null,pe(G.value.errors,i=>(l(),u("li",{key:i},t(i),1))),128))])])),e("div",Fp,[e("h4",Op,t(s(a)("admin.ops.settings.dataCollection")),1),e("div",null,[e("label",Ip,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),[[re,$.value.evaluation_interval_seconds,void 0,{number:!0}]]),e("p",jp,t(s(a)("admin.ops.settings.evaluationIntervalHint")),1)])]),e("div",Pp,[e("h4",Up,t(s(a)("admin.ops.settings.alertConfig")),1),e("div",Np,[e("div",zp,[e("div",null,[e("label",Hp,t(s(a)("admin.ops.settings.enableAlert")),1)]),I(Ee,{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",Bp,[e("label",Qp,t(s(a)("admin.ops.settings.alertRecipients")),1),e("div",Wp,[se(e("input",{"onUpdate:modelValue":c[2]||(c[2]=i=>M.value=i),type:"email",class:"input",placeholder:s(a)("admin.ops.settings.emailPlaceholder"),onKeydown:c[3]||(c[3]=Jt(Yt(i=>oe("alert"),["prevent"]),["enter"]))},null,40,Gp),[[re,M.value]]),e("button",{class:"btn btn-secondary whitespace-nowrap",type:"button",onClick:c[4]||(c[4]=i=>oe("alert"))},t(s(a)("common.add")),1)]),e("div",Kp,[(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=>J("alert",i)},"Ã",8,Zp)]))),128))]),e("p",Jp,t(s(a)("admin.ops.settings.recipientsHint")),1)])):C("",!0),x.value.alert.enabled?(l(),u("div",Yp,[e("label",Xp,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",em,[e("h4",tm,t(s(a)("admin.ops.settings.reportConfig")),1),e("div",sm,[e("div",am,[e("div",null,[e("label",nm,t(s(a)("admin.ops.settings.enableReport")),1)]),I(Ee,{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",om,[e("label",lm,t(s(a)("admin.ops.settings.reportRecipients")),1),e("div",rm,[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]=Jt(Yt(i=>oe("report"),["prevent"]),["enter"]))},null,40,im),[[re,p.value]]),e("button",{class:"btn btn-secondary whitespace-nowrap",type:"button",onClick:c[9]||(c[9]=i=>oe("report"))},t(s(a)("common.add")),1)]),e("div",dm,[(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=>J("report",i)},"Ã",8,um)]))),128))]),e("p",cm,t(s(a)("admin.ops.settings.recipientsHint")),1)])):C("",!0),x.value.report.enabled?(l(),u("div",pm,[e("div",mm,[e("label",gm,t(s(a)("admin.ops.settings.dailySummary")),1),I(Ee,{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",vm,[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),[[re,x.value.report.daily_summary_schedule]])])):C("",!0),e("div",_m,[e("label",xm,t(s(a)("admin.ops.settings.weeklySummary")),1),I(Ee,{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",fm,[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),[[re,x.value.report.weekly_summary_schedule]])])):C("",!0)])):C("",!0)])]),e("div",ym,[e("h4",bm,t(s(a)("admin.ops.settings.metricThresholds")),1
3),e("p",hm,t(s(a)("admin.ops.settings.metricThresholdsHint")),1),e("div",km,[e("div",null,[e("label",wm,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),[[re,y.value.sla_percent_min,void 0,{number:!0}]]),e("p",$m,t(s(a)("admin.ops.settings.slaMinPercentHint")),1)]),e("div",null,[e("label",Cm,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),[[re,y.value.ttft_p99_ms_max,void 0,{number:!0}]]),e("p",Rm,t(s(a)("admin.ops.settings.ttftP99MaxMsHint")),1)]),e("div",null,[e("label",Sm,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),[[re,y.value.request_error_rate_percent_max,void 0,{number:!0}]]),e("p",Tm,t(s(a)("admin.ops.settings.requestErrorRateMaxPercentHint")),1)]),e("div",null,[e("label",Dm,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),[[re,y.value.upstream_error_rate_percent_max,void 0,{number:!0}]]),e("p",Em,t(s(a)("admin.ops.settings.upstreamErrorRateMaxPercentHint")),1)])])]),e("details",qm,[e("summary",Mm,t(s(a)("admin.ops.settings.advancedSettings")),1),e("div",Vm,[e("div",Lm,[e("h5",Am,t(s(a)("admin.ops.settings.dataRetention")),1),e("div",Fm,[e("label",Om,t(s(a)("admin.ops.settings.enableCleanup")),1),I(Ee,{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",Im,[e("label",jm,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),[[re,v.value.data_retention.cleanup_schedule]]),e("p",Pm,t(s(a)("admin.ops.settings.cleanupScheduleHint")),1)])):C("",!0),e("div",Um,[e("div",null,[e("label",Nm,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),[[re,v.value.data_retention.error_log_retention_days,void 0,{number:!0}]])]),e("div",null,[e("label",zm,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),[[re,v.value.data_retention.minute_metrics_retention_days,void 0,{number:!0}]])]),e("div",null,[e("label",Hm,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),[[re,v.value.data_retention.hourly_metrics_retention_days,void 0,{number:!0}]])])]),e("p",Bm,t(s(a)("admin.ops.settings.retentionDaysHint")),1)]),e("div",Qm,[e("h5",Wm,t(s(a)("admin.ops.settings.aggregation")),1),e("div",Gm,[e("div",null,[e("label",Km,t(s(a)("admin.ops.settings.enableAggregation")),1),e("p",Zm,t(s(a)("admin.ops.settings.aggregationHint")),1)]),I(Ee,{modelValue:v.value.aggregation.aggregation_enabled,"onUpdate:modelValue":c[23]||(c[23]=i=>v.value.aggregation.aggregation_enabled=i)},null,8,["modelValue"])])]),e("div",Jm,[e("h5",Ym,t(s(a)("admin.ops.settings.openaiQuotaAutoPause")),1),e("p",Xm,t(s(a)("admin.ops.settings.openaiQuotaAutoPauseHint")),1),e("div",eg,[e("div",null,[e("label",tg,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),[[re,de.value,void 0,{number:!0}]])]),e("div",null,[e("label",sg,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),[[re,ee.value,void 0,{number:!0}]])])]),e("p",ag,t(s(a)("admin.ops.settings.openaiQuotaAutoPauseThresholdHint")),1)]),e("div",ng,[e("h5",og,t(s(a)("admin.ops.settings.errorFiltering")),1),e("div",lg,[e("div",null,[e("label",rg,t(s(a)("admin.ops.settings.ignoreCountTokensErrors")),1),e("p",ig,t(s(a)("admin.ops.settings.ignoreCountTokensErrorsHint")),1)]),I(Ee,{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",dg,[e("div",null,[e("label",ug,t(s(a)("admin.ops.settings.ignoreContextCanceled")),1),e("p",cg,t(s(a)("admin.ops.settings.ignoreContextCanceledHint")),1)]),I(Ee,{modelValue:v.value.ignore_context_canceled,"onUpdate:modelValue":c[27]||(c[27]=i=>v.value.ignore_context_canceled=i)},null,8,["modelValue"])]),e("div",pg,[e("div",null,[e("label",mg,t(s(a)("admin.ops.settings.ignoreNoAvailableAccounts")),1),e("p",gg,t(s(a)("admin.ops.settings.ignoreNoAvailableAccountsHint")),1)]),I(Ee,{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",vg,[e("div",null,[e("label",_g,t(s(a)("admin.ops.settings.ignoreInsufficientBalanceErrors")),1),e("p",xg,t(s(a)("admin.ops.settings.ignoreInsufficientBalanceErrorsHint")),1)]),I(Ee,{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",fg,[e("h5",yg,t(s(a)("admin.ops.settings.autoRefresh")),1),e("div",bg,[e("div",null,[e("label",hg,t(s(a)("admin.ops.settings.enableAutoRefresh")),1),e("p",kg,t(s(a)("admin.ops.settings.enableAutoRefreshHint")),1)]),I(Ee,{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",wg,[e("label",$g,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",Cg,[e("h5",Rg,t(s(a)("admin.ops.settings.dashboardCards")),1),e("div",Sg,[e("div",null,[e("label",Tg,t(s(a)("admin.ops.settings.displayAlertEvents")),1),e("p",Dg,t(s(a)("admin.ops.settings.displayAlertEventsHint")),1)]),I(Ee,{modelValue:v.value.display_alert_events,"onUpdate:modelValue":c[32]||(c[32]=i=>v.value.display_alert_events=i)},null,8,["modelValue"])]),e("div",Eg,[e("div",null,[e("label",qg,t(s(a)("admin.ops.settings.displayOpenAITokenStats")),1),e("p",Mg,t(s(a)("admin.ops.settings.displayOpenAITokenStatsHint")),1)]),I(Ee,{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"]))}}),Fg={class:"rounded-3xl bg-white p-6 shadow-sm ring-1 ring-gray-900/5 dark:bg-dark-800 dark:ring-dark-700"},Og={class:"mb-4 flex flex-wrap items-start justify-between gap-3 sm:gap-4"},Ig={class:"text-sm font-bold text-gray-900 dark:text-white"},jg={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},Pg={class:"flex items-center gap-2"},Ug=["disabled"],Ng=["disabled"],zg={key:0,class:"py-10 text-center text-sm text-gray-500 dark:text-gray-400"},Hg={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"},Bg={key:2,class:"max-h-[520px] overflow-hidden rounded-xl border border-gray-200 dark:border-dark-700"},Qg={class:"max-h-[520px] overflow-y-auto"},Wg={key:0,class:"divide-y divide-gray-100 dark:divide-dark-800"},Gg={class:"flex items-start justify-between gap-2"},Kg={class:"min-w-0"},Zg={class:"text-xs font-bold text-gray-900 dark:text-white"},Jg={key:0,class:"mt-0.5 line-clamp-2 text-[11px] text-gray-500 dark:text-gray-400"},Yg={class:"shrink-0 text-xs font-bold text-gray-700 dark:text-gray-200"},Xg={class:"text-xs text-gray-700 dark:text-gray-200"},ev={class:"font-mono"},tv={class:"mx-1 text-gray-400"},sv={class:"font-mono"},av={class:"flex items-center justify-between gap-2"},nv={class:"text-xs text-gray-700 dark:text-gray-200"},ov={class:"flex items-center gap-2"},lv=["onClick"],rv=["onClick"],iv={key:0,class:"text-[10px] text-gray-400"},dv={key:1,class:"min-w-full divide-y divide-gray-200 dark:divide-dark-700"},uv={class:"sticky top-0 z-10 bg-gray-50 dark:bg-dark-900"},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-left text-[11px] font-bold uppercase tracking-wider text-gray-500 dark:text-gray-400"},mv={class:"px-4 py-3 text-left text-[11px] font-bold uppercase tracking-wider text-gray-500 dark:text-gray-400"},gv={class:"px-4 py-3 text-left text-[11px] font-bold uppercase tracking-wider text-gray-500 dark:text-gray-400"},vv={class:"px-4 py-3 text-right text-[11px] font-bold uppercase tracking-wider text-gray-500 dark:text-gray-400"},_v={class:"divide-y divide-gray-200 bg-white dark:divide-dark-700 dark:bg-dark-800"},xv={class:"px-4 py-3"},fv={class:"text-xs font-bold text-gray-900 dark:text-white"},yv={key:0,class:"mt-0.5 line-clamp-2 text-[11px] text-gray-500 dark:text-gray-400"},bv={key:1,class:"mt-1 text-[10px] text-gray-400"},hv={class:"whitespace-nowrap px-4 py-3 text-xs text-gray-700 dark:text-gray-200"},kv={class:"font-mono"},wv={class:"mx-1 text-gray-400"},$v={class:"font-mono"},Cv={class:"whitespace-nowrap px-4 py-3 text-xs font-bold text-gray-700 dark:text-gray-200"},Rv={class:"whitespace-nowrap px-4 py-3 text-xs text-gray-700 dark:text-gray-200"},Sv={class:"whitespace-nowrap px-4 py-3 text-right text-xs"},Tv=["onClick"],Dv=["onClick"],Ev={class:"space-y-4"},qv={key:0,class:"rounded-xl bg-red-50 p-4 text-xs text-red-700 dark:bg-red-900/30 dark:text-red-300"},Mv={class:"font-bold"},Vv={class:"mt-1 list-disc pl-5"},Lv={class:"grid grid-cols-1 gap-4 md:grid-cols-2"},Av={class:"md:col-span-2"},Fv={class:"input-label"},Ov={class:"md:col-span-2"},Iv={class:"input-label"},jv={class:"input-label"},Pv={key:0,class:"mt-1 space-y-0.5 text-xs text-gray-500 dark:text-gray-400"},Uv={class:"input-label"},Nv={class:"md:col-span-2"},zv={class:"input-label"},Hv={key:0,class:"ml-1 text-red-500"},Bv={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},Qv={class:"input-label"},Wv={class:"input-label"},Gv={class:"input-label"},Kv={class:"input-label"},Zv={class:"input-label"},Jv={class:"flex items-center justify-between rounded-xl bg-gray-50 px-4 py-3 dark:bg-dark-800/50 md:col-span-2"},Yv={class:"text-xs font-bold text-gray-700 dark:text-gray-200"},Xv={class:"flex items-center justify-between rounded-xl bg-gray-50 px-4 py-3 dark:bg-dark-800/50 md:col-span-2"},e_={class:"text-xs font-bold text-gray-700 dark:text-gray-200"},t_={class:"flex items-center justify-end gap-2"},s_=["disabled"],a_=["disabled"],n_=ke({__name:"OpsAlertRulesCard",setup(ne){const{t:d}=$e(),a=gt(),T=Dt("(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}}Ct(()=>{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),K=new Set(["group_available_accounts","group_available_ratio","group_rate_limit_ratio"]);function M(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 os.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?K.has(j):!1}),oe=_({get(){var j,g;return M((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}}}),J=_(()=>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}),G=_(()=>{const j=g=>{const m=de.value.filter(le=>le.group===g);return m.length===0?[]:[{value:`__group__${g}`,label:d(`admin.ops.alertRules.metricGroups.${g}`),disabled:!0,kind:"group"},...m.map(le=>({value:le.type,label:le.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 E(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")),K.has(g.metric_type)&&!M((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 V(){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",Fg,[e("div",Og,[e("div",null,[e("h3",Ig,t(s(d)("admin.ops.alertRules.title")),1),e("p",jg,t(s(d)("admin.ops.alertRules.description")),1)]),e("div",Pg,[e("button",{class:"btn btn-sm btn-primary",disabled:n.value,onClick:F},t(s(d)("admin.ops.alertRules.create")),9,Ug),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,Ng)])]),n.value?(l(),u("div",zg,t(s(d)("admin.ops.alertRules.loading")),1)):q.value.length===0?(l(),u("div",Hg,t(s(d)("admin.ops.alertRules.empty")),1)):(l(),u("div",Bg,[e("div",Qg,[s(T)?(l(),u("table",dv,[e("thead",uv,[e("tr",null,[e("th",cv,t(s(d)("admin.ops.alertRules.table.name")),1),e("th",pv,t(s(d)("admin.ops.alertRules.table.metric")),1
3),e("th",mv,t(s(d)("admin.ops.alertRules.table.severity")),1),e("th",gv,t(s(d)("admin.ops.alertRules.table.enabled")),1),e("th",vv,t(s(d)("admin.ops.alertRules.table.actions")),1)])]),e("tbody",_v,[(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",xv,[e("div",fv,t(m.name),1),m.description?(l(),u("div",yv,t(m.description),1)):C("",!0),m.updated_at?(l(),u("div",bv,t(s(We)(m.updated_at)),1)):C("",!0)]),e("td",hv,[e("span",kv,t(m.metric_type),1),e("span",wv,t(m.operator),1),e("span",$v,t(m.threshold),1)]),e("td",Cv,t(m.severity),1),e("td",Rv,t(m.enabled?s(d)("common.enabled"):s(d)("common.disabled")),1),e("td",Sv,[e("button",{class:"btn btn-sm btn-secondary",onClick:w=>E(m)},t(s(d)("common.edit")),9,Tv),e("button",{class:"ml-2 btn btn-sm btn-danger",onClick:w=>ve(m)},t(s(d)("common.delete")),9,Dv)])]))),128))])])):(l(),u("div",Wg,[(l(!0),u(ue,null,pe(q.value,m=>(l(),u("div",{key:m.id,class:"space-y-2 p-4"},[e("div",Gg,[e("div",Kg,[e("div",Zg,t(m.name),1),m.description?(l(),u("div",Jg,t(m.description),1)):C("",!0)]),e("span",Yg,t(m.severity),1)]),e("div",Xg,[e("span",ev,t(m.metric_type),1),e("span",tv,t(m.operator),1),e("span",sv,t(m.threshold),1)]),e("div",av,[e("span",nv,t(m.enabled?s(d)("common.enabled"):s(d)("common.disabled")),1),e("div",ov,[e("button",{class:"btn btn-sm btn-secondary",onClick:w=>E(m)},t(s(d)("common.edit")),9,lv),e("button",{class:"btn btn-sm btn-danger",onClick:w=>ve(m)},t(s(d)("common.delete")),9,rv)])]),m.updated_at?(l(),u("div",iv,t(s(We)(m.updated_at)),1)):C("",!0)]))),128))]))])])),I(Xe,{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:Ae(()=>[e("div",t_,[e("button",{class:"btn btn-secondary",disabled:x.value,onClick:g[12]||(g[12]=m=>$.value=!1)},t(s(d)("common.cancel")),9,s_),e("button",{class:"btn btn-primary",disabled:x.value,onClick:V},t(x.value?s(d)("common.saving"):s(d)("common.save")),9,a_)])]),default:Ae(()=>[e("div",Ev,[O.value.valid?C("",!0):(l(),u("div",qv,[e("div",Mv,t(s(d)("admin.ops.alertRules.validation.title")),1),e("ul",Vv,[(l(!0),u(ue,null,pe(O.value.errors,m=>(l(),u("li",{key:m},t(m),1))),128))])])),e("div",Lv,[e("div",Av,[e("label",Fv,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),[[re,y.value.name]])]),e("div",Ov,[e("label",Iv,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),[[re,y.value.description]])]),e("div",null,[e("label",jv,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:G.value},null,8,["modelValue","options"]),ee.value?(l(),u("div",Pv,[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",Uv,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",Nv,[e("label",zv,[z(t(s(d)("admin.ops.alertRules.form.groupId"))+" ",1),A.value?(l(),u("span",Hv,"*")):C("",!0)]),I(ce,{modelValue:oe.value,"onUpdate:modelValue":g[4]||(g[4]=m=>oe.value=m),options:J.value,searchable:"",placeholder:s(d)("admin.ops.alertRules.form.groupPlaceholder"),error:A.value&&!oe.value},null,8,["modelValue","options","placeholder","error"]),e("p",Bv,t(A.value?s(d)("admin.ops.alertRules.hints.groupRequired"):s(d)("admin.ops.alertRules.hints.groupOptional")),1)]),e("div",null,[e("label",Qv,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),[[re,y.value.threshold,void 0,{number:!0}]])]),e("div",null,[e("label",Wv,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",Gv,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",Kv,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),[[re,y.value.sustained_minutes,void 0,{number:!0}]])]),e("div",null,[e("label",Zv,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),[[re,y.value.cooldown_minutes,void 0,{number:!0}]])]),e("div",Jv,[e("span",Yv,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),[[Vt,y.value.enabled]])]),e("div",Xv,[e("span",e_,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),[[Vt,y.value.notify_email]])])])])]),_:1},8,["show","title"]),I(Ss,{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"])]))}}),o_={key:0,class:"rounded-2xl bg-red-50 p-4 text-sm text-red-600 dark:bg-red-900/20 dark:text-red-400"},l_={key:3,class:"grid grid-cols-1 gap-6 lg:grid-cols-4"},r_={class:"lg:col-span-1 min-h-[360px]"},i_={class:"lg:col-span-1 h-[360px]"},d_={class:"lg:col-span-2 h-[360px]"},u_={key:4,class:"grid grid-cols-1 gap-6 md:grid-cols-3"},c_={key:5,class:"grid grid-cols-1 gap-6"},as=5,F_=ke({__name:"OpsDashboard",setup(ne){const d=us(),a=cs(),T=gt(),n=ns(),{t:P}=$e(),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(""),K=b(new Date),M=b("1h"),p=b(""),R=b(null),A=b("auto"),oe=b(null),J=b(null),de=`${as}h`,ee=as*60*60*1e3,G={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[G.fullscreen];return f==="1"||f==="true"});function i(){const f={...d.query};delete f[G.fullscreen],a.replace({query:f})}function F(){const f={...d.query,[G.fullscreen]:"1"};a.replace({query:f})}function E(f){f.key==="Escape"&&c.value&&i()}let O=null,V=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 L=d.query[f];return typeof L=="string"?L:Array.isArray(L)&&typeof L[0]=="string"?L[0]:""},xe=f=>{const L=ve(f);if(!L)return null;const U=Number.parseInt(L,10);return Number.isFinite(U)?U:null},me=()=>{const f=ve(G.timeRange);f&&q.has(f)&&(M.value=f),p.value=ve(G.platform)||"";const L=xe(G.groupId);R.value=typeof L=="number"&&L>0?L:null;const U=ve(G.queryMode);
3if(U&&$.has(U))A.value=U;else{const Me=n.opsQueryModeDefault||"auto";A.value=$.has(Me)?Me:"auto"}const Le=ve(G.openAlertRules);(Le==="1"||Le==="true")&&(Ke.value=!0);const Je=xe(G.alertRuleId);typeof Je=="number"&&Je>0&&(Ke.value=!0);const Ye=ve(G.openErrorDetails);if(Ye==="1"||Ye==="true"){const Me=ve(G.errorType);He.value=Me==="upstream"?"upstream":"request",be.value=!0}},j=()=>{const f={...d.query};return Object.values(G).forEach(L=>{delete f[L]}),M.value!=="1h"&&(f[G.timeRange]=M.value),p.value&&(f[G.platform]=p.value),typeof R.value=="number"&&R.value>0&&(f[G.groupId]=String(R.value)),A.value!=="auto"&&(f[G.queryMode]=A.value),f},g=$s(async()=>{if(Q.value)return;const f=j(),L=d.query,U=Object.keys(f),Le=Object.keys(L);if(!(U.length===Le.length&&U.every(Me=>String(L[Me]??"")===String(f[Me]??""))))try{k.value=!0,await a.replace({query:f})}finally{k.value=!1}},250),m=b(null),w=b(null),le=b(null),Ce=b(!1),Te=b(null),De=b(!1),Fe=b(null),N=b(!1),S=b(null),h=b(!1),Y=b(null),ae=b(!1),fe=b(null),ye=b(!1),be=b(!1),He=b("request"),qe=b(!1),Ge=b({title:"",kind:"all",sort:"created_at_desc"}),Oe=b(null),Ie=b(!1),et=b(!1),Ke=b(!1);me();const lt=b(!0),rt=b(!1),Re=b(!1),Se=b(3e4),je=b(0),tt=b(0),{pause:Pe,resume:it}=ws(()=>
3{if(Re.value&&D.value&&!x.value){if(je.value<=0){Be();return}je.value-=1}},1e3,{immediate:!1});async function st(){try{const f=await te.getAdvancedSettings();lt.value=f.display_alert_events,rt.value=f.display_openai_token_stats,Re.value=f.auto_refresh_enabled,Se.value=f.auto_refresh_interval_seconds*1e3,je.value=f.auto_refresh_interval_seconds}catch(f){console.error("[OpsDashboard] Failed to load dashboard advanced settings",f),lt.value=!0,rt.value=!1,Re.value=!1,Se.value=3e4,je.value=0}}function _t(f){p.value=f||"",R.value=null}function Ft(f){const L=Number.isFinite(f)&&f>0?f:null;R.value=L}function Et(f){const L={title:P("admin.ops.requestDetails.title"),kind:"all",sort:"created_at_desc"};Ge.value={...L,...f??{}},Ge.value.title||(Ge.value.title=L.title),be.value=!1,ye.value=!1,qe.value=!0}function Ze(f){He.value=f,qe.value=!1,ye.value=!1,be.value=!0}function xt(f){typeof f=="string"&&q.has(f)&&(M.value=f)}function Ot(f,L){oe.value=f,J.value=L}async function ft(){await st(),wt(),Be()}function It(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 L=Number.parseInt(f,10);R.value=Number.isFinite(L)&&L>0?L:null}}function bt(f){typeof f=="string"&&$.has(f)&&(A.value=f)}function ht(f){fe.value=f,Oe.value=qe.value?"requestList":be.value?"errorList":null,be.value=!1,qe.value=!1,ye.value=!0}function kt(){const f=Oe.value;Ie.value=!0,f==="requestList"?(ye.value=!1,be.value=!1,qe.value=!0):f==="errorList"&&(ye.value=!1,qe.value=!1,be.value=!0),Oe.value=null,window.setTimeout(()=>{Ie.value=!1},0)}function Ve(){const f={platform:p.value||void 0,group_id:R.value??void 0,mode:A.value};return M.value==="custom"?oe.value&&J.value?(f.start_time=oe.value,f.end_time=J.value):f.time_range="1h":f.time_range=M.value,f}function at(){const f={platform:p.value||void 0,group_id:R.value??void 0,mode:A.value},L=new Date,U=new Date(L.getTime()-ee);return f.start_time=U.toISOString(),f.end_time=L.toISOString(),f}async function jt(f,L){if(D.value)try{const U=await te.getDashboardOverview(Ve(),{signal:L});if(f!==V)return;m.value=U}catch(U){if(f!==V||B(U))return;m.value=null,T.showError((U==null?void 0:U.message)||P("admin.ops.failedToLoadOverview"))}}async function Pt(f,L){if(D.value){De.value=!0;try{const U=await te.getThroughputTrend(at(),{signal:L});if(f!==V)return;Te.value=U}catch(U){if(f!==V||B(U))return;Te.value=null,T.showError((U==null?void 0:U.message)||P("admin.ops.failedToLoadSwitchTrend"))}finally{f===V&&(De.value=!1)}}}async function nt(f,L){if(D.value){Ce.value=!0;try{const U=await te.getThroughputTrend(Ve(),{signal:L});if(f!==V)return;le.value=U}catch(U){if(f!==V||B(U))return;le.value=null,T.showError((U==null?void 0:U.message)||P("admin.ops.failedToLoadThroughputTrend"))}finally{f===V&&(Ce.value=!1)}}}async function dt(f,L){if(D.value){Ce.value=!0,h.value=!0;try{const U=await te.getDashboardSnapshotV2(Ve(),{signal:L});if(f!==V)return;m.value=U.overview,le.value=U.throughput_trend,S.value=U.error_trend}catch(U){if(f!==V||B(U))return;await Promise.all([jt(f,L),nt(f,L),ut(f,L)])}finally{f===V&&(Ce.value=!1,h.value=!1)}}}async function qt(f,L){if(D.value){N.value=!0;try{const U=await te.getLatencyHistogram(Ve(),{signal:L});if(f!==V)return;Fe.value=U}catch(U){if(f!==V||B(U))return;Fe.value=null,T.showError((U==null?void 0:U.message)||P("admin.ops.failedToLoadLatencyHistogram"))}finally{f===V&&(N.value=!1)}}}async function ut(f,L){if(D.value){h.value=!0;try{const U=await te.getErrorTrend(Ve(),{signal:L});if(f!==V)return;S.value=U}catch(U){if(f!==V||B(U))return;S.value=null,T.showError((U==null?void 0:U.message)||P("admin.ops.failedToLoadErrorTrend"))}finally{f===V&&(h.value=!1)}}}async function ot(f,L){if(D.value){ae.value=!0;try{const U=await te.getErrorDistribution(Ve(),{signal:L});if(f!==V)return;Y.value=U}catch(U){if(f!==V||B(U))return;Y.value=null,T.showError((U==null?void 0:U.message)||P("admin.ops.failedToLoadErrorDistribution"))}finally{f===V&&(ae.value=!1)}}}async function Ut(f,L){D.value&&await Promise.all([qt(f,L),ot(f,L)])}function Nt(f){return!!f&&typeof f=="object"&&"code"in f&&typeof f.code=="string"&&f.code==="OPS_DISABLED"}async function Be(){if(!D.value)return;Z(),V+=1;const f=V;O=new AbortController,x.value=!0,y.value="";try{if(await Promise.all([dt(f,O.signal),Pt(f,O.signal)]),f!==V)return;K.value=new Date,tt.value+=1,Re.value&&(je.value=Math.floor(Se.value/1e3)),Ut(f,O.signal)}catch(L){Nt(L)||(console.error("[ops] failed to fetch dashboard data",L),y.value=P("admin.ops.failedToLoadData"))}finally{f===V&&(x.value=!1,v.value=!0)}}ge(()=>[M.value,p.value,R.value,A.value],()=>{Q.value||(D.value&&Be(),g())}),ge(()=>d.query,()=>{if(k.value)return;const f=M.value,L=p.value,U=R.value;Q.value=!0,me(),Q.value=!1,(f!==M.value||L!==p.value||U!==R.value)&&D.value&&Be()}),Ct(async()=>
3{if(window.addEventListener("keydown",E),await n.fetch(),!n.opsMonitoringEnabled){await a.replace("/admin/settings");return}wt(),await st(),D.value&&await Be(),Re.value&&it()});async function wt(){try{const f=await te.getMetricThresholds();w.value=f||null}catch(f){console.warn("[OpsDashboard] Failed to load thresholds",f),w.value=null}}return ps(()=>{window.removeEventListener("keydown",E),Z(),Pe()}),ge(Re,f=>{f?(je.value=Math.floor(Se.value/1e3),it()):(Pe(),je.value=0)}),ge(et,async f=>{f||await st()}),(f,L)=>(l(),ie(ms(c.value?"div":gs),{class:H(c.value?"flex min-h-screen flex-col justify-center bg-gray-50 dark:bg-dark-950":"")},{default:Ae(()=>{var U,Le,Je,Ye,Me;return[e("div",{class:H([c.value?"p-4 md:p-6":"","space-y-6 pb-12"])},[y.value?(l(),u("div",o_,t(y.value),1)):C("",!0),x.value&&!v.value?(l(),ie(dl,{key:1,fullscreen:c.value},null,8,["fullscreen"])):D.value?(l(),ie(Wo,{key:2,overview:m.value,platform:p.value,"group-id":R.value,"time-range":M.value,"query-mode":A.value,loading:x.value,"last-updated":K.value,thresholds:w.value,"auto-refresh-enabled":Re.value,"auto-refresh-countdown":je.value,fullscreen:c.value,"custom-start-time":oe.value,"custom-end-time":J.value,"onUpdate:timeRange":xt,"onUpdate:platform":It,"onUpdate:group":yt,"onUpdate:queryMode":bt,"onUpdate:customTimeRange":Ot,onRefresh:Be,onOpenRequestDetails:Et,onOpenErrorDetails:Ze,onOpenSettings:L[0]||(L[0]=he=>et.value=!0),onOpenAlertRules:L[1]||(L[1]=he=>Ke.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",l_,[e("div",r_,[I(cr,{"platform-filter":p.value,"group-id-filter":R.value,"refresh-token":tt.value},null,8,["platform-filter","group-id-filter","refresh-token"])]),e("div",i_,[I(Ei,{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",d_,[I(wi,{points:((Le=le.value)==null?void 0:Le.points)??[],"by-platform":((Je=le.value)==null?void 0:Je.by_platform)??[],"top-groups":((Ye=le.value)==null?void 0:Ye.top_groups)??[],loading:Ce.value,"time-range":M.value,fullscreen:c.value,onSelectPlatform:_t,onSelectGroup:Ft,onOpenDetails:Et},null,8,["points","by-platform","top-groups","loading","time-range","fullscreen"])])])):C("",!0),D.value&&!(x.value&&!v.value)?(l(),u("div",u_,[I(ai,{"latency-data":Fe.value,loading:N.value},null,8,["latency-data","loading"]),I(Cr,{data:Y.value,loading:ae.value,onOpenDetails:L[2]||(L[2]=he=>Ze("request"))},null,8,["data","loading"]),I(Zr,{points:((Me=S.value)==null?void 0:Me.points)??[],loading:h.value,"time-range":M.value,onOpenRequestErrors:L[3]||(L[3]=he=>Ze("request")),onOpenUpstreamErrors:L[4]||(L[4]=he=>Ze("upstream"))},null,8,["points","loading","time-range"])])):C("",!0),D.value&&rt.value&&!(x.value&&!v.value)?(l(),u("div",c_,[I(kc,{"platform-filter":p.value,"group-id-filter":R.value,"refresh-token":tt.value},null,8,["platform-filter","group-id-filter","refresh-token"])])):C("",!0),D.value&<.value&&!(x.value&&!v.value)?(l(),ie(bu,{key:6})):C("",!0),D.value&&!(x.value&&!v.value)?(l(),ie(F0,{key:7,"platform-filter":p.value,"refresh-token":tt.value},null,8,["platform-filter","refresh-token"])):C("",!0),c.value?C("",!0):(l(),u(ue,{key:8},[I(Ag,{show:et.value,onClose:L[5]||(L[5]=he=>et.value=!1),onSaved:ft},null,8,["show"]),I(Xe,{show:Ke.value,title:s(P)("admin.ops.alertRules.title"),width:"extra-wide",onClose:L[6]||(L[6]=he=>Ke.value=!1)},{default:Ae(()=>[I(n_)]),_:1},8,["show","title"]),I(Pr,{show:be.value,"time-range":M.value,"custom-start-time":oe.value,"custom-end-time":J.value,platform:p.value,"group-id":R.value,"error-type":He.value,"resume-state":Ie.value,"onUpdate:show":L[7]||(L[7]=he=>be.value=he),onOpenErrorDetail:ht},null,8,["show","time-range","custom-start-time","custom-end-time","platform","group-id","error-type","resume-state"]),I(fs,{show:ye.value,"onUpdate:show":L[8]||(L[8]=he=>ye.value=he),"error-id":fe.value,"error-type":He.value,"back-to-list":Oe.value!==null,onBack:kt},null,8,["show","error-id","error-type","back-to-list"]),I(Ep,{modelValue:qe.value,"onUpdate:modelValue":L[9]||(L[9]=he=>qe.value=he),"time-range":M.value,preset:Ge.value,platform:p.value,"group-id":R.value,"resume-state":Ie.value,onOpenErrorDetail:ht},null,8,["modelValue","time-range","preset","platform","group-id","resume-state"])],64))],2)]}),_:1},8,["class"]))}});
3export{F_ 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.