diff --git a/backend/static/assets/AIAlertAnalyzer-B9ptAIV7.js b/backend/static/assets/AIAlertAnalyzer-YhqNUJX6.js similarity index 92% rename from backend/static/assets/AIAlertAnalyzer-B9ptAIV7.js rename to backend/static/assets/AIAlertAnalyzer-YhqNUJX6.js index 0a9eac3..25a64f9 100644 --- a/backend/static/assets/AIAlertAnalyzer-B9ptAIV7.js +++ b/backend/static/assets/AIAlertAnalyzer-YhqNUJX6.js @@ -1,4 +1,4 @@ -import{j as s,a2 as b,aJ as f,L as v,$ as w,a3 as g,H as C,B as A,r as l,D as O,b as U,c as J,d as B,e as E,a9 as L,T as R,q as G,x as H}from"./index-DfyorCky.js";import{C as z,b as $,c as D,a as F}from"./card-C55cvSHg.js";import{B as y}from"./badge-xNW8x0G1.js";import{a as K}from"./monitor-BAaBXIsC.js";import{a as q}from"./ai-BTgmlP5Q.js";import{S}from"./sparkles-Bld4NX5y.js";import{T as P}from"./trending-up-CdusV6gc.js";import{F as X}from"./file-text-C9G5abwR.js";import{P as _}from"./play-cdPayOtJ.js";import{C as Q}from"./copy-DXW4LnkN.js";import{C as W}from"./circle-x-DK79Dhg2.js";function Y(e){const c=(e.metric||"").toLowerCase(),t=e.source||"目标主机",a=e.severity==="critical";return c.includes("cpu")?{rootCause:`检测到 ${t} 上 CPU 使用率达到 ${e.currentValue},持续超过阈值 ${e.threshold}。可能原因:1) 某进程存在死循环或高计算负载;2) GC 频繁触发(Java/Go 应用);3) 业务流量突增导致处理能力不足。`,impact:a?"CPU 持续高负载将导致服务响应延迟显著增加,严重时可能触发雪崩效应,影响全部依赖该节点的业务。":"CPU 使用率偏高,可能导致部分请求处理变慢,建议及时排查避免进一步恶化。",recommendations:[`登录 ${t} 执行 top/htop 定位高 CPU 进程`,"检查是否有异常定时任务或批处理任务在运行","考虑临时扩容或将部分流量调度到其他节点","优化应用代码,排查是否存在低效算法或资源泄漏"],autoFixScript:`#!/bin/bash +import{j as s,a5 as b,aI as f,L as v,a6 as w,P as g,E as C,B as A,r as l,D as O,a as U,b as B,c as E,d as J,K as L,T as R,S as G,C as K}from"./index-Dmami9WE.js";import{C as z,b as $,c as D,a as F}from"./card-CIfC-8Rh.js";import{B as y}from"./badge-3UzCvU7L.js";import{a as H}from"./monitor-CicbJUrQ.js";import{a as X}from"./ai-2t1T1OeI.js";import{S}from"./sparkles-rPZivnlW.js";import{T as P}from"./trending-up-d1DKmRom.js";import{F as q}from"./file-text-CebshSV-.js";import{P as _}from"./play-0EwQQJX_.js";import{C as Q}from"./copy-CE_T92Lk.js";import{C as W}from"./circle-x-BBQeW1R3.js";function Y(e){const c=(e.metric||"").toLowerCase(),t=e.source||"目标主机",a=e.severity==="critical";return c.includes("cpu")?{rootCause:`检测到 ${t} 上 CPU 使用率达到 ${e.currentValue},持续超过阈值 ${e.threshold}。可能原因:1) 某进程存在死循环或高计算负载;2) GC 频繁触发(Java/Go 应用);3) 业务流量突增导致处理能力不足。`,impact:a?"CPU 持续高负载将导致服务响应延迟显著增加,严重时可能触发雪崩效应,影响全部依赖该节点的业务。":"CPU 使用率偏高,可能导致部分请求处理变慢,建议及时排查避免进一步恶化。",recommendations:[`登录 ${t} 执行 top/htop 定位高 CPU 进程`,"检查是否有异常定时任务或批处理任务在运行","考虑临时扩容或将部分流量调度到其他节点","优化应用代码,排查是否存在低效算法或资源泄漏"],autoFixScript:`#!/bin/bash # CPU 高负载诊断脚本 - ${t} echo "===== CPU TOP 10 进程 =====" ps aux --sort=-%cpu | head -11 @@ -37,7 +37,7 @@ ss -tlnp | grep -E ':(80|443|8080|3306|6379|9090)' echo "" echo "===== 重启失败服务 =====" systemctl reset-failed -`,similarCases:0,confidence:0}:{rootCause:`检测到 ${t} 触发告警「${e.name}」,当前指标值 ${e.currentValue} 超过阈值 ${e.threshold}。建议进一步排查具体指标数据和相关日志以确定根因。`,impact:a?"该告警级别为严重,可能影响业务正常运行,建议优先处理。":"该告警需要关注,持续恶化可能影响系统稳定性。",recommendations:[`查看 ${t} 的监控仪表盘,确认指标趋势`,"检查对应时间段的系统日志和应用日志","关联同时间段的其他告警,排查是否有连锁反应","若确认误报,调整告警规则阈值或持续时间"],similarCases:0,confidence:0}}function Z(e){const c=e.rule?.expression||"",t=c.match(/([\w_]+)\s*[><=!]+\s*([\d.]+)/),a=t?t[1]:c||"unknown",n=t?t[2]+"%":"-",r=e.value??0,d=a.includes("usage")||a.includes("cpu")||a.includes("disk")||a.includes("mem")?r.toFixed(1)+"%":r.toFixed(2),x=e.resolved_at?new Date(e.resolved_at):new Date,i=new Date(e.started_at),p=Math.max(1,Math.round((x.getTime()-i.getTime())/6e4)),h=p>=60?`${Math.floor(p/60)}小时${p%60}分钟`:`${p}分钟`,u=i.toLocaleString("zh-CN",{hour12:!1});return{id:String(e.id),name:e.rule_name||e.rule?.name||"未知告警",severity:e.severity==="critical"?"critical":e.severity==="warning"?"warning":"info",status:e.status==="firing"?"active":"resolved",source:e.target||"未知目标",metric:a,threshold:n,currentValue:d,duration:h,startedAt:u,description:e.message&&e.message!==`告警事件 ${e.id}`?e.message:e.rule?.description||`${e.rule_name||"告警"}: ${e.target} 当前值 ${d}`}}function ss(e){switch(e){case"critical":return"bg-red-500/10 text-red-400 border-red-500/30";case"warning":return"bg-amber-500/10 text-amber-400 border-amber-500/30";default:return"bg-blue-500/10 text-blue-400 border-blue-500/30"}}function es({selectedAlert:e,isAnalyzing:c,analysis:t,onAutoFix:a}){return s.jsxs(z,{"code-path":"src/components/aiops/AIAnalysisResult.tsx:18:5",className:"bg-slate-800 border-slate-700 flex flex-col",children:[s.jsx($,{"code-path":"src/components/aiops/AIAnalysisResult.tsx:19:7",className:"border-b border-slate-700 pb-3",children:s.jsxs(D,{"code-path":"src/components/aiops/AIAnalysisResult.tsx:20:9",className:"text-slate-100 flex items-center gap-2",children:[s.jsx(S,{"code-path":"src/components/aiops/AIAnalysisResult.tsx:21:11",className:"h-5 w-5 text-purple-400"}),"AI 分析结果"]})}),s.jsx(b,{"code-path":"src/components/aiops/AIAnalysisResult.tsx:25:7",className:"flex-1",children:s.jsx(F,{"code-path":"src/components/aiops/AIAnalysisResult.tsx:26:9",className:"p-4",children:e?c?s.jsxs("div",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:33:13",className:"flex flex-col items-center justify-center h-64",children:[s.jsx(v,{"code-path":"src/components/aiops/AIAnalysisResult.tsx:34:15",className:"h-8 w-8 animate-spin text-purple-400 mb-4"}),s.jsx("p",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:35:15",className:"text-slate-400",children:"AI正在分析告警根因..."}),s.jsx("p",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:36:15",className:"text-xs text-slate-500 mt-2",children:"正在关联日志、指标和历史案例"})]}):t?s.jsxs("div",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:39:13",className:"space-y-4",children:[s.jsxs("div",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:41:15",className:"flex items-center justify-between p-3 bg-purple-500/10 rounded-lg border border-purple-500/30",children:[s.jsxs("div",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:42:17",className:"flex items-center gap-2",children:[s.jsx(f,{"code-path":"src/components/aiops/AIAnalysisResult.tsx:43:19",className:"h-5 w-5 text-purple-400"}),s.jsx("span",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:44:19",className:"text-slate-300",children:"分析置信度"})]}),s.jsxs("div",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:46:17",className:"flex items-center gap-2",children:[s.jsx("div",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:47:19",className:"w-32 h-2 bg-slate-700 rounded-full overflow-hidden",children:s.jsx("div",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:48:21",className:"h-full bg-gradient-to-r from-purple-500 to-pink-500",style:{width:`${t.confidence}%`}})}),s.jsxs("span",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:53:19",className:"text-purple-400 font-bold",children:[t.confidence,"%"]})]})]}),s.jsxs("div",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:58:15",className:"space-y-2",children:[s.jsxs("h4",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:59:17",className:"text-sm font-medium text-slate-300 flex items-center gap-2",children:[s.jsx(w,{"code-path":"src/components/aiops/AIAnalysisResult.tsx:60:19",className:"h-4 w-4 text-red-400"}),"根因分析"]}),s.jsx("div",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:63:17",className:"p-3 bg-slate-900 rounded-lg border border-slate-700",children:s.jsx("p",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:64:19",className:"text-sm text-slate-300 leading-relaxed",children:t.rootCause})})]}),s.jsxs("div",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:69:15",className:"space-y-2",children:[s.jsxs("h4",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:70:17",className:"text-sm font-medium text-slate-300 flex items-center gap-2",children:[s.jsx(P,{"code-path":"src/components/aiops/AIAnalysisResult.tsx:71:19",className:"h-4 w-4 text-amber-400"}),"影响范围"]}),s.jsx("div",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:74:17",className:"p-3 bg-slate-900 rounded-lg border border-slate-700",children:s.jsx("p",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:75:19",className:"text-sm text-slate-300 leading-relaxed",children:t.impact})})]}),s.jsxs("div",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:80:15",className:"space-y-2",children:[s.jsxs("h4",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:81:17",className:"text-sm font-medium text-slate-300 flex items-center gap-2",children:[s.jsx(g,{"code-path":"src/components/aiops/AIAnalysisResult.tsx:82:19",className:"h-4 w-4 text-emerald-400"}),"修复建议"]}),s.jsx("div",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:85:17",className:"space-y-2",children:t.recommendations.map((n,r)=>s.jsxs("div",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:87:21",className:"flex items-start gap-2 p-2 bg-slate-900 rounded-lg border border-slate-700",children:[s.jsx("span",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:91:23",className:"flex-shrink-0 w-5 h-5 rounded-full bg-emerald-500/20 text-emerald-400 flex items-center justify-center text-xs",children:r+1}),s.jsx("span",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:94:23",className:"text-sm text-slate-300",children:n})]},r))})]}),s.jsxs("div",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:101:15",className:"flex items-center gap-2 p-3 bg-slate-900 rounded-lg border border-slate-700",children:[s.jsx(X,{"code-path":"src/components/aiops/AIAnalysisResult.tsx:102:17",className:"h-4 w-4 text-blue-400"}),s.jsxs("span",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:103:17",className:"text-sm text-slate-400",children:["发现 ",s.jsx("span",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:104:22",className:"text-blue-400 font-medium",children:t.similarCases})," 个相似历史案例"]})]}),t.autoFixScript&&s.jsxs("div",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:110:17",className:"space-y-2",children:[s.jsxs("h4",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:111:19",className:"text-sm font-medium text-slate-300 flex items-center gap-2",children:[s.jsx(C,{"code-path":"src/components/aiops/AIAnalysisResult.tsx:112:21",className:"h-4 w-4 text-purple-400"}),"自动修复脚本"]}),s.jsx("div",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:115:19",className:"p-3 bg-slate-950 rounded-lg border border-slate-700",children:s.jsx("pre",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:116:21",className:"text-xs text-slate-400 overflow-x-auto",children:t.autoFixScript})}),s.jsxs(A,{"code-path":"src/components/aiops/AIAnalysisResult.tsx:118:19",className:"w-full bg-purple-600 hover:bg-purple-700",onClick:a,children:[s.jsx(_,{"code-path":"src/components/aiops/AIAnalysisResult.tsx:122:21",className:"h-4 w-4 mr-2"}),"执行自动修复"]})]})]}):null:s.jsxs("div",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:28:13",className:"flex flex-col items-center justify-center h-64 text-slate-500",children:[s.jsx(f,{"code-path":"src/components/aiops/AIAnalysisResult.tsx:29:15",className:"h-16 w-16 mb-4 opacity-30"}),s.jsx("p",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:30:15",children:"选择左侧告警进行AI智能分析"})]})})})]})}function ts({open:e,onOpenChange:c,script:t}){const[a,n]=l.useState(!1),r=()=>{t&&(navigator.clipboard.writeText(t),n(!0),setTimeout(()=>n(!1),2e3))};return s.jsx(O,{"code-path":"src/components/aiops/AutoFixDialog.tsx:31:5",open:e,onOpenChange:c,children:s.jsxs(U,{"code-path":"src/components/aiops/AutoFixDialog.tsx:32:7",className:"max-w-2xl bg-slate-900 border-slate-700 text-slate-100",children:[s.jsxs(J,{"code-path":"src/components/aiops/AutoFixDialog.tsx:33:9",children:[s.jsxs(B,{"code-path":"src/components/aiops/AutoFixDialog.tsx:34:11",className:"flex items-center gap-2",children:[s.jsx(C,{"code-path":"src/components/aiops/AutoFixDialog.tsx:35:13",className:"h-5 w-5 text-purple-400"}),"自动修复脚本"]}),s.jsx(E,{"code-path":"src/components/aiops/AutoFixDialog.tsx:38:11",className:"text-slate-500",children:"AI生成的自动修复脚本,请确认后执行"})]}),s.jsxs("div",{"code-path":"src/components/aiops/AutoFixDialog.tsx:42:9",className:"space-y-4 py-4",children:[s.jsxs("div",{"code-path":"src/components/aiops/AutoFixDialog.tsx:43:11",className:"p-4 bg-slate-950 rounded-lg border border-slate-700",children:[s.jsxs("div",{"code-path":"src/components/aiops/AutoFixDialog.tsx:44:13",className:"flex items-center justify-between mb-2",children:[s.jsx("span",{"code-path":"src/components/aiops/AutoFixDialog.tsx:45:15",className:"text-sm text-slate-400",children:"修复脚本"}),s.jsx(A,{"code-path":"src/components/aiops/AutoFixDialog.tsx:46:15",variant:"ghost",size:"sm",onClick:r,className:"text-slate-400",children:a?s.jsx(L,{"code-path":"src/components/aiops/AutoFixDialog.tsx:47:27",className:"h-4 w-4"}):s.jsx(Q,{"code-path":"src/components/aiops/AutoFixDialog.tsx:47:59",className:"h-4 w-4"})})]}),s.jsx("pre",{"code-path":"src/components/aiops/AutoFixDialog.tsx:50:13",className:"text-sm text-slate-300 overflow-x-auto whitespace-pre-wrap",children:t})]}),s.jsxs("div",{"code-path":"src/components/aiops/AutoFixDialog.tsx:54:11",className:"flex items-center gap-2 p-3 bg-amber-500/10 rounded-lg border border-amber-500/30",children:[s.jsx(R,{"code-path":"src/components/aiops/AutoFixDialog.tsx:55:13",className:"h-4 w-4 text-amber-400"}),s.jsx("span",{"code-path":"src/components/aiops/AutoFixDialog.tsx:56:13",className:"text-sm text-amber-400",children:"警告:执行脚本前请确保已备份重要数据"})]})]}),s.jsxs("div",{"code-path":"src/components/aiops/AutoFixDialog.tsx:61:9",className:"flex gap-2",children:[s.jsx(A,{"code-path":"src/components/aiops/AutoFixDialog.tsx:62:11",variant:"outline",className:"flex-1 border-slate-700 text-slate-300",onClick:()=>c(!1),children:"取消"}),s.jsxs(A,{"code-path":"src/components/aiops/AutoFixDialog.tsx:65:11",className:"flex-1 bg-purple-600 hover:bg-purple-700",onClick:()=>c(!1),children:[s.jsx(_,{"code-path":"src/components/aiops/AutoFixDialog.tsx:66:13",className:"h-4 w-4 mr-2"}),"确认执行"]})]})]})})}function as(e,c){try{let t=e.replace(/```(?:json)?\s*\n?/g,"").replace(/```$/,"").trim();const a=JSON.parse(t);return{rootCause:a.root_cause||a.rootCause||c.rootCause,impact:a.impact||c.impact,recommendations:Array.isArray(a.recommendations)?a.recommendations:c.recommendations,autoFixScript:a.auto_fix_script||a.autoFixScript||c.autoFixScript,similarCases:typeof a.similar_cases=="number"?a.similar_cases:a.similarCases??c.similarCases,confidence:typeof a.confidence=="number"?a.confidence:c.confidence}}catch{return{...c,rootCause:e}}}function As(){const[e,c]=l.useState([]),[t,a]=l.useState(!0),[n,r]=l.useState(null),[j,d]=l.useState(!1),[x,i]=l.useState(null),[p,h]=l.useState(!1);l.useEffect(()=>{u()},[]);const u=async()=>{a(!0);try{const o=await K.getAlerts({page:1,page_size:50}),m=o?.list||o||[];c(m.map(Z))}catch(o){console.error("加载告警失败:",o),c([])}finally{a(!1)}},T=async o=>{r(o),d(!0),i(null);const m=Y(o);try{const M=`你是运维专家。请分析以下告警并以 JSON 格式回复(不要 markdown 代码块)。 +`,similarCases:0,confidence:0}:{rootCause:`检测到 ${t} 触发告警「${e.name}」,当前指标值 ${e.currentValue} 超过阈值 ${e.threshold}。建议进一步排查具体指标数据和相关日志以确定根因。`,impact:a?"该告警级别为严重,可能影响业务正常运行,建议优先处理。":"该告警需要关注,持续恶化可能影响系统稳定性。",recommendations:[`查看 ${t} 的监控仪表盘,确认指标趋势`,"检查对应时间段的系统日志和应用日志","关联同时间段的其他告警,排查是否有连锁反应","若确认误报,调整告警规则阈值或持续时间"],similarCases:0,confidence:0}}function Z(e){const c=e.rule?.expression||"",t=c.match(/([\w_]+)\s*[><=!]+\s*([\d.]+)/),a=t?t[1]:c||"unknown",n=t?t[2]+"%":"-",r=e.value??0,d=a.includes("usage")||a.includes("cpu")||a.includes("disk")||a.includes("mem")?r.toFixed(1)+"%":r.toFixed(2),x=e.resolved_at?new Date(e.resolved_at):new Date,i=new Date(e.started_at),p=Math.max(1,Math.round((x.getTime()-i.getTime())/6e4)),h=p>=60?`${Math.floor(p/60)}小时${p%60}分钟`:`${p}分钟`,u=i.toLocaleString("zh-CN",{hour12:!1});return{id:String(e.id),name:e.rule_name||e.rule?.name||"未知告警",severity:e.severity==="critical"?"critical":e.severity==="warning"?"warning":"info",status:e.status==="firing"?"active":"resolved",source:e.target||"未知目标",metric:a,threshold:n,currentValue:d,duration:h,startedAt:u,description:e.message&&e.message!==`告警事件 ${e.id}`?e.message:e.rule?.description||`${e.rule_name||"告警"}: ${e.target} 当前值 ${d}`}}function ss(e){switch(e){case"critical":return"bg-red-500/10 text-red-400 border-red-500/30";case"warning":return"bg-amber-500/10 text-amber-400 border-amber-500/30";default:return"bg-blue-500/10 text-blue-400 border-blue-500/30"}}function es({selectedAlert:e,isAnalyzing:c,analysis:t,onAutoFix:a}){return s.jsxs(z,{"code-path":"src/components/aiops/AIAnalysisResult.tsx:18:5",className:"bg-slate-800 border-slate-700 flex flex-col",children:[s.jsx($,{"code-path":"src/components/aiops/AIAnalysisResult.tsx:19:7",className:"border-b border-slate-700 pb-3",children:s.jsxs(D,{"code-path":"src/components/aiops/AIAnalysisResult.tsx:20:9",className:"text-slate-100 flex items-center gap-2",children:[s.jsx(S,{"code-path":"src/components/aiops/AIAnalysisResult.tsx:21:11",className:"h-5 w-5 text-purple-400"}),"AI 分析结果"]})}),s.jsx(b,{"code-path":"src/components/aiops/AIAnalysisResult.tsx:25:7",className:"flex-1",children:s.jsx(F,{"code-path":"src/components/aiops/AIAnalysisResult.tsx:26:9",className:"p-4",children:e?c?s.jsxs("div",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:33:13",className:"flex flex-col items-center justify-center h-64",children:[s.jsx(v,{"code-path":"src/components/aiops/AIAnalysisResult.tsx:34:15",className:"h-8 w-8 animate-spin text-purple-400 mb-4"}),s.jsx("p",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:35:15",className:"text-slate-400",children:"AI正在分析告警根因..."}),s.jsx("p",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:36:15",className:"text-xs text-slate-500 mt-2",children:"正在关联日志、指标和历史案例"})]}):t?s.jsxs("div",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:39:13",className:"space-y-4",children:[s.jsxs("div",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:41:15",className:"flex items-center justify-between p-3 bg-purple-500/10 rounded-lg border border-purple-500/30",children:[s.jsxs("div",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:42:17",className:"flex items-center gap-2",children:[s.jsx(f,{"code-path":"src/components/aiops/AIAnalysisResult.tsx:43:19",className:"h-5 w-5 text-purple-400"}),s.jsx("span",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:44:19",className:"text-slate-300",children:"分析置信度"})]}),s.jsxs("div",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:46:17",className:"flex items-center gap-2",children:[s.jsx("div",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:47:19",className:"w-32 h-2 bg-slate-700 rounded-full overflow-hidden",children:s.jsx("div",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:48:21",className:"h-full bg-gradient-to-r from-purple-500 to-pink-500",style:{width:`${t.confidence}%`}})}),s.jsxs("span",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:53:19",className:"text-purple-400 font-bold",children:[t.confidence,"%"]})]})]}),s.jsxs("div",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:58:15",className:"space-y-2",children:[s.jsxs("h4",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:59:17",className:"text-sm font-medium text-slate-300 flex items-center gap-2",children:[s.jsx(w,{"code-path":"src/components/aiops/AIAnalysisResult.tsx:60:19",className:"h-4 w-4 text-red-400"}),"根因分析"]}),s.jsx("div",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:63:17",className:"p-3 bg-slate-900 rounded-lg border border-slate-700",children:s.jsx("p",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:64:19",className:"text-sm text-slate-300 leading-relaxed",children:t.rootCause})})]}),s.jsxs("div",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:69:15",className:"space-y-2",children:[s.jsxs("h4",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:70:17",className:"text-sm font-medium text-slate-300 flex items-center gap-2",children:[s.jsx(P,{"code-path":"src/components/aiops/AIAnalysisResult.tsx:71:19",className:"h-4 w-4 text-amber-400"}),"影响范围"]}),s.jsx("div",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:74:17",className:"p-3 bg-slate-900 rounded-lg border border-slate-700",children:s.jsx("p",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:75:19",className:"text-sm text-slate-300 leading-relaxed",children:t.impact})})]}),s.jsxs("div",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:80:15",className:"space-y-2",children:[s.jsxs("h4",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:81:17",className:"text-sm font-medium text-slate-300 flex items-center gap-2",children:[s.jsx(g,{"code-path":"src/components/aiops/AIAnalysisResult.tsx:82:19",className:"h-4 w-4 text-emerald-400"}),"修复建议"]}),s.jsx("div",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:85:17",className:"space-y-2",children:t.recommendations.map((n,r)=>s.jsxs("div",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:87:21",className:"flex items-start gap-2 p-2 bg-slate-900 rounded-lg border border-slate-700",children:[s.jsx("span",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:91:23",className:"flex-shrink-0 w-5 h-5 rounded-full bg-emerald-500/20 text-emerald-400 flex items-center justify-center text-xs",children:r+1}),s.jsx("span",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:94:23",className:"text-sm text-slate-300",children:n})]},r))})]}),s.jsxs("div",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:101:15",className:"flex items-center gap-2 p-3 bg-slate-900 rounded-lg border border-slate-700",children:[s.jsx(q,{"code-path":"src/components/aiops/AIAnalysisResult.tsx:102:17",className:"h-4 w-4 text-blue-400"}),s.jsxs("span",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:103:17",className:"text-sm text-slate-400",children:["发现 ",s.jsx("span",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:104:22",className:"text-blue-400 font-medium",children:t.similarCases})," 个相似历史案例"]})]}),t.autoFixScript&&s.jsxs("div",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:110:17",className:"space-y-2",children:[s.jsxs("h4",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:111:19",className:"text-sm font-medium text-slate-300 flex items-center gap-2",children:[s.jsx(C,{"code-path":"src/components/aiops/AIAnalysisResult.tsx:112:21",className:"h-4 w-4 text-purple-400"}),"自动修复脚本"]}),s.jsx("div",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:115:19",className:"p-3 bg-slate-950 rounded-lg border border-slate-700",children:s.jsx("pre",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:116:21",className:"text-xs text-slate-400 overflow-x-auto",children:t.autoFixScript})}),s.jsxs(A,{"code-path":"src/components/aiops/AIAnalysisResult.tsx:118:19",className:"w-full bg-purple-600 hover:bg-purple-700",onClick:a,children:[s.jsx(_,{"code-path":"src/components/aiops/AIAnalysisResult.tsx:122:21",className:"h-4 w-4 mr-2"}),"执行自动修复"]})]})]}):null:s.jsxs("div",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:28:13",className:"flex flex-col items-center justify-center h-64 text-slate-500",children:[s.jsx(f,{"code-path":"src/components/aiops/AIAnalysisResult.tsx:29:15",className:"h-16 w-16 mb-4 opacity-30"}),s.jsx("p",{"code-path":"src/components/aiops/AIAnalysisResult.tsx:30:15",children:"选择左侧告警进行AI智能分析"})]})})})]})}function ts({open:e,onOpenChange:c,script:t}){const[a,n]=l.useState(!1),r=()=>{t&&(navigator.clipboard.writeText(t),n(!0),setTimeout(()=>n(!1),2e3))};return s.jsx(O,{"code-path":"src/components/aiops/AutoFixDialog.tsx:31:5",open:e,onOpenChange:c,children:s.jsxs(U,{"code-path":"src/components/aiops/AutoFixDialog.tsx:32:7",className:"max-w-2xl bg-slate-900 border-slate-700 text-slate-100",children:[s.jsxs(B,{"code-path":"src/components/aiops/AutoFixDialog.tsx:33:9",children:[s.jsxs(E,{"code-path":"src/components/aiops/AutoFixDialog.tsx:34:11",className:"flex items-center gap-2",children:[s.jsx(C,{"code-path":"src/components/aiops/AutoFixDialog.tsx:35:13",className:"h-5 w-5 text-purple-400"}),"自动修复脚本"]}),s.jsx(J,{"code-path":"src/components/aiops/AutoFixDialog.tsx:38:11",className:"text-slate-500",children:"AI生成的自动修复脚本,请确认后执行"})]}),s.jsxs("div",{"code-path":"src/components/aiops/AutoFixDialog.tsx:42:9",className:"space-y-4 py-4",children:[s.jsxs("div",{"code-path":"src/components/aiops/AutoFixDialog.tsx:43:11",className:"p-4 bg-slate-950 rounded-lg border border-slate-700",children:[s.jsxs("div",{"code-path":"src/components/aiops/AutoFixDialog.tsx:44:13",className:"flex items-center justify-between mb-2",children:[s.jsx("span",{"code-path":"src/components/aiops/AutoFixDialog.tsx:45:15",className:"text-sm text-slate-400",children:"修复脚本"}),s.jsx(A,{"code-path":"src/components/aiops/AutoFixDialog.tsx:46:15",variant:"ghost",size:"sm",onClick:r,className:"text-slate-400",children:a?s.jsx(L,{"code-path":"src/components/aiops/AutoFixDialog.tsx:47:27",className:"h-4 w-4"}):s.jsx(Q,{"code-path":"src/components/aiops/AutoFixDialog.tsx:47:59",className:"h-4 w-4"})})]}),s.jsx("pre",{"code-path":"src/components/aiops/AutoFixDialog.tsx:50:13",className:"text-sm text-slate-300 overflow-x-auto whitespace-pre-wrap",children:t})]}),s.jsxs("div",{"code-path":"src/components/aiops/AutoFixDialog.tsx:54:11",className:"flex items-center gap-2 p-3 bg-amber-500/10 rounded-lg border border-amber-500/30",children:[s.jsx(R,{"code-path":"src/components/aiops/AutoFixDialog.tsx:55:13",className:"h-4 w-4 text-amber-400"}),s.jsx("span",{"code-path":"src/components/aiops/AutoFixDialog.tsx:56:13",className:"text-sm text-amber-400",children:"警告:执行脚本前请确保已备份重要数据"})]})]}),s.jsxs("div",{"code-path":"src/components/aiops/AutoFixDialog.tsx:61:9",className:"flex gap-2",children:[s.jsx(A,{"code-path":"src/components/aiops/AutoFixDialog.tsx:62:11",variant:"outline",className:"flex-1 border-slate-700 text-slate-300",onClick:()=>c(!1),children:"取消"}),s.jsxs(A,{"code-path":"src/components/aiops/AutoFixDialog.tsx:65:11",className:"flex-1 bg-purple-600 hover:bg-purple-700",onClick:()=>c(!1),children:[s.jsx(_,{"code-path":"src/components/aiops/AutoFixDialog.tsx:66:13",className:"h-4 w-4 mr-2"}),"确认执行"]})]})]})})}function as(e,c){try{let t=e.replace(/```(?:json)?\s*\n?/g,"").replace(/```$/,"").trim();const a=JSON.parse(t);return{rootCause:a.root_cause||a.rootCause||c.rootCause,impact:a.impact||c.impact,recommendations:Array.isArray(a.recommendations)?a.recommendations:c.recommendations,autoFixScript:a.auto_fix_script||a.autoFixScript||c.autoFixScript,similarCases:typeof a.similar_cases=="number"?a.similar_cases:a.similarCases??c.similarCases,confidence:typeof a.confidence=="number"?a.confidence:c.confidence}}catch{return{...c,rootCause:e}}}function As(){const[e,c]=l.useState([]),[t,a]=l.useState(!0),[n,r]=l.useState(null),[j,d]=l.useState(!1),[x,i]=l.useState(null),[p,h]=l.useState(!1);l.useEffect(()=>{u()},[]);const u=async()=>{a(!0);try{const o=await H.getAlerts({page:1,page_size:50}),m=o?.list||o||[];c(m.map(Z))}catch(o){console.error("加载告警失败:",o),c([])}finally{a(!1)}},T=async o=>{r(o),d(!0),i(null);const m=Y(o);try{const M=`你是运维专家。请分析以下告警并以 JSON 格式回复(不要 markdown 代码块)。 告警名称:${o.name} 严重程度:${o.severity} @@ -54,4 +54,4 @@ systemctl reset-failed "auto_fix_script": "#!/bin/bash\\n...\\n(可选的自动修复脚本,无则 null)", "similar_cases": 数字(类似案例数预估), "confidence": 数字(0-100 置信度) -}`,N=await q.chat([{role:"user",content:M}]),I=N?.content||N?.message?.content||"";i(I?as(I,m):m)}catch{i(m)}finally{d(!1)}},k=()=>{h(!0)},V=o=>{switch(o){case"critical":return s.jsx(W,{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:127:16",className:"h-4 w-4 text-red-400"});case"warning":return s.jsx(w,{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:129:16",className:"h-4 w-4 text-amber-400"});default:return s.jsx(g,{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:131:16",className:"h-4 w-4 text-blue-400"})}};return s.jsxs("div",{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:136:5",className:"space-y-6",children:[s.jsxs("div",{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:138:7",className:"flex items-center justify-between",children:[s.jsxs("div",{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:139:9",className:"flex items-center gap-3",children:[s.jsx("div",{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:140:11",className:"w-10 h-10 rounded-lg bg-gradient-to-br from-amber-500 to-orange-500 flex items-center justify-center",children:s.jsx(f,{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:141:13",className:"h-5 w-5 text-white"})}),s.jsxs("div",{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:143:11",children:[s.jsx("h1",{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:144:13",className:"text-2xl font-bold text-slate-100",children:"AI 告警智能分析"}),s.jsx("p",{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:145:13",className:"text-sm text-slate-500",children:"基于大模型的告警根因分析和自动修复建议"})]})]}),s.jsx("div",{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:148:9",className:"flex items-center gap-2",children:s.jsxs(y,{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:149:11",variant:"outline",className:"border-emerald-500/30 text-emerald-400 bg-emerald-500/10",children:[s.jsx(S,{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:150:13",className:"h-3 w-3 mr-1"}),"AI 引擎运行中"]})})]}),s.jsxs("div",{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:156:7",className:"grid grid-cols-2 gap-6 h-[calc(100vh-200px)]",children:[s.jsxs(z,{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:158:9",className:"bg-slate-800 border-slate-700 flex flex-col",children:[s.jsx($,{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:159:11",className:"border-b border-slate-700 pb-3",children:s.jsxs("div",{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:160:13",className:"flex items-center justify-between",children:[s.jsxs(D,{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:161:15",className:"text-slate-100 flex items-center gap-2",children:[s.jsx(R,{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:162:17",className:"h-5 w-5 text-amber-400"}),"活跃告警"]}),s.jsxs(y,{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:165:15",className:"bg-red-500/10 text-red-400 border-red-500/30",children:[e.filter(o=>o.status==="active").length," 个活跃"]})]})}),s.jsx(b,{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:170:11",className:"flex-1",children:s.jsx(F,{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:171:13",className:"p-4 space-y-3",children:t?s.jsxs("div",{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:173:17",className:"flex flex-col items-center justify-center h-32",children:[s.jsx(v,{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:174:19",className:"h-6 w-6 animate-spin text-slate-500 mb-2"}),s.jsx("p",{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:175:19",className:"text-sm text-slate-500",children:"加载告警数据..."})]}):e.length===0?s.jsxs("div",{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:178:17",className:"flex flex-col items-center justify-center h-32 text-slate-500",children:[s.jsx(g,{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:179:19",className:"h-8 w-8 mb-2 opacity-50"}),s.jsx("p",{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:180:19",className:"text-sm",children:"暂无告警事件"})]}):e.map(o=>s.jsxs("div",{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:184:17",className:`p-4 rounded-lg border cursor-pointer transition-all ${n?.id===o.id?"border-purple-500 bg-purple-500/10":"border-slate-700 bg-slate-800/50 hover:border-slate-600"}`,onClick:()=>T(o),children:[s.jsxs("div",{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:193:19",className:"flex items-start justify-between mb-2",children:[s.jsxs("div",{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:194:21",className:"flex items-center gap-2",children:[V(o.severity),s.jsx("span",{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:196:23",className:"font-medium text-slate-100",children:o.name})]}),s.jsx(y,{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:198:21",variant:"outline",className:ss(o.severity),children:o.severity==="critical"?"严重":o.severity==="warning"?"警告":"提示"})]}),s.jsx("div",{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:202:19",className:"text-sm text-slate-400 mb-2",children:o.description}),s.jsxs("div",{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:203:19",className:"flex items-center gap-4 text-xs text-slate-500",children:[s.jsxs("span",{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:204:21",className:"flex items-center gap-1",children:[s.jsx(G,{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:205:23",className:"h-3 w-3"}),o.source]}),s.jsxs("span",{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:208:21",className:"flex items-center gap-1",children:[s.jsx(H,{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:209:23",className:"h-3 w-3"}),o.duration]}),s.jsxs("span",{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:212:21",className:"flex items-center gap-1",children:[s.jsx(P,{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:213:23",className:"h-3 w-3"}),o.currentValue]})]})]},o.id))})})]}),s.jsx(es,{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:225:9",selectedAlert:n,isAnalyzing:j,analysis:x,onAutoFix:k})]}),s.jsx(ts,{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:234:7",open:p,onOpenChange:h,script:x?.autoFixScript})]})}export{As as AIAlertAnalyzer}; +}`,N=await X.chat([{role:"user",content:M}]),I=N?.content||N?.message?.content||"";i(I?as(I,m):m)}catch{i(m)}finally{d(!1)}},k=()=>{h(!0)},V=o=>{switch(o){case"critical":return s.jsx(W,{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:127:16",className:"h-4 w-4 text-red-400"});case"warning":return s.jsx(w,{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:129:16",className:"h-4 w-4 text-amber-400"});default:return s.jsx(g,{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:131:16",className:"h-4 w-4 text-blue-400"})}};return s.jsxs("div",{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:136:5",className:"space-y-6",children:[s.jsxs("div",{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:138:7",className:"flex items-center justify-between",children:[s.jsxs("div",{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:139:9",className:"flex items-center gap-3",children:[s.jsx("div",{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:140:11",className:"w-10 h-10 rounded-lg bg-gradient-to-br from-amber-500 to-orange-500 flex items-center justify-center",children:s.jsx(f,{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:141:13",className:"h-5 w-5 text-white"})}),s.jsxs("div",{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:143:11",children:[s.jsx("h1",{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:144:13",className:"text-2xl font-bold text-slate-100",children:"AI 告警智能分析"}),s.jsx("p",{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:145:13",className:"text-sm text-slate-500",children:"基于大模型的告警根因分析和自动修复建议"})]})]}),s.jsx("div",{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:148:9",className:"flex items-center gap-2",children:s.jsxs(y,{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:149:11",variant:"outline",className:"border-emerald-500/30 text-emerald-400 bg-emerald-500/10",children:[s.jsx(S,{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:150:13",className:"h-3 w-3 mr-1"}),"AI 引擎运行中"]})})]}),s.jsxs("div",{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:156:7",className:"grid grid-cols-2 gap-6 h-[calc(100vh-200px)]",children:[s.jsxs(z,{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:158:9",className:"bg-slate-800 border-slate-700 flex flex-col",children:[s.jsx($,{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:159:11",className:"border-b border-slate-700 pb-3",children:s.jsxs("div",{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:160:13",className:"flex items-center justify-between",children:[s.jsxs(D,{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:161:15",className:"text-slate-100 flex items-center gap-2",children:[s.jsx(R,{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:162:17",className:"h-5 w-5 text-amber-400"}),"活跃告警"]}),s.jsxs(y,{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:165:15",className:"bg-red-500/10 text-red-400 border-red-500/30",children:[e.filter(o=>o.status==="active").length," 个活跃"]})]})}),s.jsx(b,{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:170:11",className:"flex-1",children:s.jsx(F,{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:171:13",className:"p-4 space-y-3",children:t?s.jsxs("div",{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:173:17",className:"flex flex-col items-center justify-center h-32",children:[s.jsx(v,{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:174:19",className:"h-6 w-6 animate-spin text-slate-500 mb-2"}),s.jsx("p",{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:175:19",className:"text-sm text-slate-500",children:"加载告警数据..."})]}):e.length===0?s.jsxs("div",{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:178:17",className:"flex flex-col items-center justify-center h-32 text-slate-500",children:[s.jsx(g,{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:179:19",className:"h-8 w-8 mb-2 opacity-50"}),s.jsx("p",{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:180:19",className:"text-sm",children:"暂无告警事件"})]}):e.map(o=>s.jsxs("div",{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:184:17",className:`p-4 rounded-lg border cursor-pointer transition-all ${n?.id===o.id?"border-purple-500 bg-purple-500/10":"border-slate-700 bg-slate-800/50 hover:border-slate-600"}`,onClick:()=>T(o),children:[s.jsxs("div",{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:193:19",className:"flex items-start justify-between mb-2",children:[s.jsxs("div",{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:194:21",className:"flex items-center gap-2",children:[V(o.severity),s.jsx("span",{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:196:23",className:"font-medium text-slate-100",children:o.name})]}),s.jsx(y,{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:198:21",variant:"outline",className:ss(o.severity),children:o.severity==="critical"?"严重":o.severity==="warning"?"警告":"提示"})]}),s.jsx("div",{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:202:19",className:"text-sm text-slate-400 mb-2",children:o.description}),s.jsxs("div",{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:203:19",className:"flex items-center gap-4 text-xs text-slate-500",children:[s.jsxs("span",{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:204:21",className:"flex items-center gap-1",children:[s.jsx(G,{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:205:23",className:"h-3 w-3"}),o.source]}),s.jsxs("span",{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:208:21",className:"flex items-center gap-1",children:[s.jsx(K,{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:209:23",className:"h-3 w-3"}),o.duration]}),s.jsxs("span",{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:212:21",className:"flex items-center gap-1",children:[s.jsx(P,{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:213:23",className:"h-3 w-3"}),o.currentValue]})]})]},o.id))})})]}),s.jsx(es,{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:225:9",selectedAlert:n,isAnalyzing:j,analysis:x,onAutoFix:k})]}),s.jsx(ts,{"code-path":"src/components/aiops/AIAlertAnalyzer.tsx:234:7",open:p,onOpenChange:h,script:x?.autoFixScript})]})}export{As as AIAlertAnalyzer}; diff --git a/backend/static/assets/AIOpsAssistant-DFQDT-tz.js b/backend/static/assets/AIOpsAssistant-B1D-CEib.js similarity index 74% rename from backend/static/assets/AIOpsAssistant-DFQDT-tz.js rename to backend/static/assets/AIOpsAssistant-B1D-CEib.js index 296ac85..0d4315c 100644 --- a/backend/static/assets/AIOpsAssistant-DFQDT-tz.js +++ b/backend/static/assets/AIOpsAssistant-B1D-CEib.js @@ -1,4 +1,4 @@ -import{g as _s,r as x,j as s,ao as ks,aR as Es,aA as Ls,aw as H,X as ds,aJ as Rs,B as N,E as Z,T as ms,A as xs,L as k,H as Ms,aS as ss,a2 as Ps,a8 as Ds,I as w,D as Ts,b as qs,c as Us,d as Bs,e as zs,f as Fs}from"./index-DfyorCky.js";import{C as D,b as T,c as ts,a as q}from"./card-C55cvSHg.js";import{B as E}from"./badge-xNW8x0G1.js";import{L as y}from"./label-BK0h2apY.js";import{S as es,a as as,b as ns,c as os,d as cs}from"./select-D5qUzdAs.js";import{S as Hs}from"./switch-CGiGgOnh.js";import{t as C}from"./index-a3ybMjbR.js";import{d as U}from"./dashboard-BjQPIG2G.js";import{a as Vs}from"./monitor-BAaBXIsC.js";import{a as Ks}from"./agent-DqqIRCQX.js";import{a as $}from"./ai-BTgmlP5Q.js";import{C as Gs}from"./circle-check-DWcXrx2k.js";import{F as hs}from"./file-text-C9G5abwR.js";import{T as Ws}from"./trending-up-CdusV6gc.js";import{R as Js}from"./rotate-cw-5qcj_h_q.js";import{M as Qs}from"./message-square-DyxabBvb.js";import{S as Xs}from"./square-9TIYDO_t.js";import{W as Ys}from"./wifi-FqsslTyA.js";import"./index-CWVNW_qu.js";const Zs=[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]],st=_s("send",Zs);function tt(e,n=[]){let i=[];function r(a,d){const m=x.createContext(d);m.displayName=a+"Context";const l=i.length;i=[...i,d];const g=h=>{const{scope:u,children:c,...p}=h,A=u?.[e]?.[l]||m,j=x.useMemo(()=>p,Object.values(p));return s.jsx(A.Provider,{value:j,children:c})};g.displayName=a+"Provider";function v(h,u){const c=u?.[e]?.[l]||m,p=x.useContext(c);if(p)return p;if(d!==void 0)return d;throw new Error(`\`${h}\` must be used within \`${a}\``)}return[g,v]}const o=()=>{const a=i.map(d=>x.createContext(d));return function(m){const l=m?.[e]||a;return x.useMemo(()=>({[`__scope${e}`]:{...m,[e]:l}}),[m,l])}};return o.scopeName=e,[r,et(o,...n)]}function et(...e){const n=e[0];if(e.length===1)return n;const i=()=>{const r=e.map(o=>({useScope:o(),scopeName:o.scopeName}));return function(a){const d=r.reduce((m,{useScope:l,scopeName:g})=>{const h=l(a)[`__scope${g}`];return{...m,...h}},{});return x.useMemo(()=>({[`__scope${n.scopeName}`]:d}),[d])}};return i.scopeName=n.scopeName,i}var at=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],V=at.reduce((e,n)=>{const i=ks(`Primitive.${n}`),r=x.forwardRef((o,a)=>{const{asChild:d,...m}=o,l=d?i:n;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),s.jsx(l,{...m,ref:a})});return r.displayName=`Primitive.${n}`,{...e,[n]:r}},{}),B={exports:{}},z={};var rs;function nt(){if(rs)return z;rs=1;var e=Es();function n(h,u){return h===u&&(h!==0||1/h===1/u)||h!==h&&u!==u}var i=typeof Object.is=="function"?Object.is:n,r=e.useState,o=e.useEffect,a=e.useLayoutEffect,d=e.useDebugValue;function m(h,u){var c=u(),p=r({inst:{value:c,getSnapshot:u}}),A=p[0].inst,j=p[1];return a(function(){A.value=c,A.getSnapshot=u,l(A)&&j({inst:A})},[h,c,u]),o(function(){return l(A)&&j({inst:A}),h(function(){l(A)&&j({inst:A})})},[h]),d(c),c}function l(h){var u=h.getSnapshot;h=h.value;try{var c=u();return!i(h,c)}catch{return!0}}function g(h,u){return u()}var v=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?g:m;return z.useSyncExternalStore=e.useSyncExternalStore!==void 0?e.useSyncExternalStore:v,z}var is;function ot(){return is||(is=1,B.exports=nt()),B.exports}var ct=ot();function rt(){return ct.useSyncExternalStore(it,()=>!0,()=>!1)}function it(){return()=>{}}var K="Avatar",[pt]=tt(K),[lt,us]=pt(K),As=x.forwardRef((e,n)=>{const{__scopeAvatar:i,...r}=e,[o,a]=x.useState("idle");return s.jsx(lt,{scope:i,imageLoadingStatus:o,onImageLoadingStatusChange:a,children:s.jsx(V.span,{...r,ref:n})})});As.displayName=K;var fs="AvatarImage",dt=x.forwardRef((e,n)=>{const{__scopeAvatar:i,src:r,onLoadingStatusChange:o=()=>{},...a}=e,d=us(fs,i),m=mt(r,a),l=Ls(g=>{o(g),d.onImageLoadingStatusChange(g)});return H(()=>{m!=="idle"&&l(m)},[m,l]),m==="loaded"?s.jsx(V.img,{...a,ref:n,src:r}):null});dt.displayName=fs;var gs="AvatarFallback",Is=x.forwardRef((e,n)=>{const{__scopeAvatar:i,delayMs:r,...o}=e,a=us(gs,i),[d,m]=x.useState(r===void 0);return x.useEffect(()=>{if(r!==void 0){const l=window.setTimeout(()=>m(!0),r);return()=>window.clearTimeout(l)}},[r]),d&&a.imageLoadingStatus!=="loaded"?s.jsx(V.span,{...o,ref:n}):null});Is.displayName=gs;function ps(e,n){return e?n?(e.src!==n&&(e.src=n),e.complete&&e.naturalWidth>0?"loaded":"loading"):"error":"idle"}function mt(e,{referrerPolicy:n,crossOrigin:i}){const r=rt(),o=x.useRef(null),a=r?(o.current||(o.current=new window.Image),o.current):null,[d,m]=x.useState(()=>ps(a,e));return H(()=>{m(ps(a,e))},[a,e]),H(()=>{const l=h=>()=>{m(h)};if(!a)return;const g=l("loaded"),v=l("error");return a.addEventListener("load",g),a.addEventListener("error",v),n&&(a.referrerPolicy=n),typeof i=="string"&&(a.crossOrigin=i),()=>{a.removeEventListener("load",g),a.removeEventListener("error",v)}},[a,i,n]),d}var xt=As,ht=Is;function ut({className:e,...n}){return s.jsx(xt,{"code-path":"src/components/ui/avatar.tsx:11:5","data-slot":"avatar",className:ds("relative flex size-8 shrink-0 overflow-hidden rounded-full",e),...n})}function At({className:e,...n}){return s.jsx(ht,{"code-path":"src/components/ui/avatar.tsx:40:5","data-slot":"avatar-fallback",className:ds("bg-muted flex size-full items-center justify-center rounded-full",e),...n})}const F=[{id:"openai",name:"OpenAI",defaultEndpoint:"https://api.openai.com/v1",models:["gpt-4o-mini","gpt-4o","gpt-4-turbo"]},{id:"deepseek",name:"DeepSeek",defaultEndpoint:"https://api.deepseek.com/v1",models:["deepseek-chat","deepseek-reasoner"]},{id:"qwen",name:"通义千问 (DashScope)",defaultEndpoint:"https://dashscope.aliyuncs.com/compatible-mode/v1",models:["qwen-plus","qwen-turbo","qwen-max"]},{id:"moonshot",name:"Moonshot 月之暗面",defaultEndpoint:"https://api.moonshot.cn/v1",models:["moonshot-v1-8k","moonshot-v1-32k"]},{id:"ollama",name:"Ollama 本地",defaultEndpoint:"http://localhost:11434/v1",models:["qwen2.5:7b","llama3.2","deepseek-r1:7b"]},{id:"custom",name:"自定义 (OpenAI 兼容)",defaultEndpoint:"",models:[]}],ft={provider:"openai",model:"gpt-4o-mini",api_key:"",endpoint:"https://api.openai.com/v1",temperature:.7,max_tokens:2e3,system_prompt:"",enabled:!1};async function gt(){const n=(await Vs.getAlerts({page:1,page_size:20}))?.list||[];if(!n.length)return"(当前无告警事件)";const i=n.slice(0,15).map((o,a)=>`${a+1}. [${o.severity||"未知"}|${o.status||"-"}] ${o.rule_name||"告警"} → 目标:${o.target||"-"} 值:${o.value??"-"} 时间:${(o.started_at||"").slice(0,16)}`),r=n.filter(o=>o.status==="firing").length;return`共 ${n.length} 条告警(firing ${r} 条),前 ${Math.min(15,n.length)} 条: +import{i as _s,r as x,j as s,aF as ks,aR as Es,aw as Ls,as as H,a0 as ds,aI as Rs,B as N,y as Z,T as ms,A as xs,L as k,E as Ms,aS as ss,a5 as Ps,U as Ds,D as Ts,a as qs,b as Us,c as Bs,d as Fs,e as zs}from"./index-Dmami9WE.js";import{C as D,b as T,c as ts,a as q}from"./card-CIfC-8Rh.js";import{I as w}from"./input-NsU9nXZF.js";import{B as E}from"./badge-3UzCvU7L.js";import{L as y}from"./label-Ap_-SPYI.js";import{S as es,a as as,b as ns,c as os,d as cs}from"./select-DUbxjT0z.js";import{S as Hs}from"./switch-TqjD2x0W.js";import{t as C}from"./index-BuEnLCjT.js";import{d as U}from"./dashboard-BHNKEvkq.js";import{a as Vs}from"./monitor-CicbJUrQ.js";import{a as Ks}from"./agent-B3ElXCx8.js";import{a as $}from"./ai-2t1T1OeI.js";import{C as Gs}from"./circle-check-CVbTTFQ0.js";import{F as hs}from"./file-text-CebshSV-.js";import{T as Ws}from"./trending-up-d1DKmRom.js";import{R as Qs}from"./rotate-cw-CKCO6IKE.js";import{M as Js}from"./message-square-BNbub2_o.js";import{S as Xs}from"./square-NjJOra_E.js";import{W as Ys}from"./wifi-CtC3YBV7.js";import"./index-CtCQcvyh.js";import"./chevron-up-Cq4GPopa.js";const Zs=[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]],st=_s("send",Zs);function tt(e,n=[]){let i=[];function r(a,d){const m=x.createContext(d);m.displayName=a+"Context";const l=i.length;i=[...i,d];const g=h=>{const{scope:u,children:c,...p}=h,A=u?.[e]?.[l]||m,j=x.useMemo(()=>p,Object.values(p));return s.jsx(A.Provider,{value:j,children:c})};g.displayName=a+"Provider";function v(h,u){const c=u?.[e]?.[l]||m,p=x.useContext(c);if(p)return p;if(d!==void 0)return d;throw new Error(`\`${h}\` must be used within \`${a}\``)}return[g,v]}const o=()=>{const a=i.map(d=>x.createContext(d));return function(m){const l=m?.[e]||a;return x.useMemo(()=>({[`__scope${e}`]:{...m,[e]:l}}),[m,l])}};return o.scopeName=e,[r,et(o,...n)]}function et(...e){const n=e[0];if(e.length===1)return n;const i=()=>{const r=e.map(o=>({useScope:o(),scopeName:o.scopeName}));return function(a){const d=r.reduce((m,{useScope:l,scopeName:g})=>{const h=l(a)[`__scope${g}`];return{...m,...h}},{});return x.useMemo(()=>({[`__scope${n.scopeName}`]:d}),[d])}};return i.scopeName=n.scopeName,i}var at=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],V=at.reduce((e,n)=>{const i=ks(`Primitive.${n}`),r=x.forwardRef((o,a)=>{const{asChild:d,...m}=o,l=d?i:n;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),s.jsx(l,{...m,ref:a})});return r.displayName=`Primitive.${n}`,{...e,[n]:r}},{}),B={exports:{}},F={};var rs;function nt(){if(rs)return F;rs=1;var e=Es();function n(h,u){return h===u&&(h!==0||1/h===1/u)||h!==h&&u!==u}var i=typeof Object.is=="function"?Object.is:n,r=e.useState,o=e.useEffect,a=e.useLayoutEffect,d=e.useDebugValue;function m(h,u){var c=u(),p=r({inst:{value:c,getSnapshot:u}}),A=p[0].inst,j=p[1];return a(function(){A.value=c,A.getSnapshot=u,l(A)&&j({inst:A})},[h,c,u]),o(function(){return l(A)&&j({inst:A}),h(function(){l(A)&&j({inst:A})})},[h]),d(c),c}function l(h){var u=h.getSnapshot;h=h.value;try{var c=u();return!i(h,c)}catch{return!0}}function g(h,u){return u()}var v=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?g:m;return F.useSyncExternalStore=e.useSyncExternalStore!==void 0?e.useSyncExternalStore:v,F}var is;function ot(){return is||(is=1,B.exports=nt()),B.exports}var ct=ot();function rt(){return ct.useSyncExternalStore(it,()=>!0,()=>!1)}function it(){return()=>{}}var K="Avatar",[pt]=tt(K),[lt,us]=pt(K),As=x.forwardRef((e,n)=>{const{__scopeAvatar:i,...r}=e,[o,a]=x.useState("idle");return s.jsx(lt,{scope:i,imageLoadingStatus:o,onImageLoadingStatusChange:a,children:s.jsx(V.span,{...r,ref:n})})});As.displayName=K;var fs="AvatarImage",dt=x.forwardRef((e,n)=>{const{__scopeAvatar:i,src:r,onLoadingStatusChange:o=()=>{},...a}=e,d=us(fs,i),m=mt(r,a),l=Ls(g=>{o(g),d.onImageLoadingStatusChange(g)});return H(()=>{m!=="idle"&&l(m)},[m,l]),m==="loaded"?s.jsx(V.img,{...a,ref:n,src:r}):null});dt.displayName=fs;var gs="AvatarFallback",Is=x.forwardRef((e,n)=>{const{__scopeAvatar:i,delayMs:r,...o}=e,a=us(gs,i),[d,m]=x.useState(r===void 0);return x.useEffect(()=>{if(r!==void 0){const l=window.setTimeout(()=>m(!0),r);return()=>window.clearTimeout(l)}},[r]),d&&a.imageLoadingStatus!=="loaded"?s.jsx(V.span,{...o,ref:n}):null});Is.displayName=gs;function ps(e,n){return e?n?(e.src!==n&&(e.src=n),e.complete&&e.naturalWidth>0?"loaded":"loading"):"error":"idle"}function mt(e,{referrerPolicy:n,crossOrigin:i}){const r=rt(),o=x.useRef(null),a=r?(o.current||(o.current=new window.Image),o.current):null,[d,m]=x.useState(()=>ps(a,e));return H(()=>{m(ps(a,e))},[a,e]),H(()=>{const l=h=>()=>{m(h)};if(!a)return;const g=l("loaded"),v=l("error");return a.addEventListener("load",g),a.addEventListener("error",v),n&&(a.referrerPolicy=n),typeof i=="string"&&(a.crossOrigin=i),()=>{a.removeEventListener("load",g),a.removeEventListener("error",v)}},[a,i,n]),d}var xt=As,ht=Is;function ut({className:e,...n}){return s.jsx(xt,{"code-path":"src/components/ui/avatar.tsx:11:5","data-slot":"avatar",className:ds("relative flex size-8 shrink-0 overflow-hidden rounded-full",e),...n})}function At({className:e,...n}){return s.jsx(ht,{"code-path":"src/components/ui/avatar.tsx:40:5","data-slot":"avatar-fallback",className:ds("bg-muted flex size-full items-center justify-center rounded-full",e),...n})}const z=[{id:"openai",name:"OpenAI",defaultEndpoint:"https://api.openai.com/v1",models:["gpt-4o-mini","gpt-4o","gpt-4-turbo"]},{id:"deepseek",name:"DeepSeek",defaultEndpoint:"https://api.deepseek.com/v1",models:["deepseek-chat","deepseek-reasoner"]},{id:"qwen",name:"通义千问 (DashScope)",defaultEndpoint:"https://dashscope.aliyuncs.com/compatible-mode/v1",models:["qwen-plus","qwen-turbo","qwen-max"]},{id:"moonshot",name:"Moonshot 月之暗面",defaultEndpoint:"https://api.moonshot.cn/v1",models:["moonshot-v1-8k","moonshot-v1-32k"]},{id:"ollama",name:"Ollama 本地",defaultEndpoint:"http://localhost:11434/v1",models:["qwen2.5:7b","llama3.2","deepseek-r1:7b"]},{id:"custom",name:"自定义 (OpenAI 兼容)",defaultEndpoint:"",models:[]}],ft={provider:"openai",model:"gpt-4o-mini",api_key:"",endpoint:"https://api.openai.com/v1",temperature:.7,max_tokens:2e3,system_prompt:"",enabled:!1};async function gt(){const n=(await Vs.getAlerts({page:1,page_size:20}))?.list||[];if(!n.length)return"(当前无告警事件)";const i=n.slice(0,15).map((o,a)=>`${a+1}. [${o.severity||"未知"}|${o.status||"-"}] ${o.rule_name||"告警"} → 目标:${o.target||"-"} 值:${o.value??"-"} 时间:${(o.started_at||"").slice(0,16)}`),r=n.filter(o=>o.status==="firing").length;return`共 ${n.length} 条告警(firing ${r} 条),前 ${Math.min(15,n.length)} 条: ${i.join(` `)}`}async function ls(){const e=await Ks.getLatest(),n=Array.isArray(e)?e:e?.list||[];if(!n.length)return"(当前无 Agent 上报数据,可能未部署监控 Agent)";const i=n.slice(0,20).map((a,d)=>{const m=a.cpu_usage??"-",l=a.mem_usage??"-";return`${d+1}. ${a.hostname||"-"} | CPU:${m}% | 内存:${l}% (${a.mem_used??"-"}/${a.mem_total??"-"}GB) | 核数:${a.cpu_cores??"-"} | 上报:${(a.report_time||"").slice(0,16)}`}),r=n.filter(a=>(a.cpu_usage??0)>=80||(a.mem_usage??0)>=80),o=r.length?` ⚠️ 高负载主机 ${r.length} 台:${r.map(a=>`${a.hostname}(CPU${a.cpu_usage}%/MEM${a.mem_usage}%)`).join("、")}`:"";return`Agent 监控的 ${n.length} 台主机实时指标: @@ -11,9 +11,9 @@ ${u.join(` 最近发布: ${c.join(` -`)||"(无)"}`}const vt=[{id:"alerts",name:"分析今日告警",icon:ms,prompt:"帮我分析以下最近的告警事件,给出根因分析和处置建议(按严重程度排序,给出具体处置步骤)",contextLoader:gt},{id:"performance",name:"性能瓶颈分析",icon:xs,prompt:"分析以下主机实时指标,找出 CPU/内存使用率最高的主机并给出性能优化建议",contextLoader:ls},{id:"report",name:"生成运维报告",icon:hs,prompt:"基于以下平台实时数据,生成一份简洁的今日运维报告,包括资源概览、告警情况和发布状态,用 Markdown 格式输出",contextLoader:It},{id:"optimize",name:"资源优化建议",icon:Ws,prompt:"根据以下主机资源使用数据,提供成本优化和容量规划建议(识别闲置/过载主机,给出缩容/扩容建议)",contextLoader:ls}];function jt(e){return new Date(e).toLocaleTimeString("zh-CN",{hour:"2-digit",minute:"2-digit"})}function Bt(){const[e,n]=x.useState([]),[i,r]=x.useState(""),[o,a]=x.useState(!1),d=x.useRef(null);x.useEffect(()=>()=>d.current?.abort(),[]);const[m,l]=x.useState(!1),[g,v]=x.useState(!1),[h,u]=x.useState(!1),[c,p]=x.useState(ft),[A,j]=x.useState(!1),[L,G]=x.useState(null),W=()=>{try{return crypto.randomUUID()}catch{}return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,t=>{const I=Math.random()*16|0;return(t==="x"?I:I&3|8).toString(16)})},[J,vs]=x.useState(()=>W()),Q=x.useRef(null),js=()=>Q.current?.scrollIntoView({behavior:"smooth"});x.useEffect(()=>{js()},[e]);const Os=async()=>{try{const t=await $.getConfig();p(t),j(!!(t.enabled&&t.configured))}catch{j(!1)}},bs=async()=>{try{const I=(await $.getHistory(J))?.list||[];n(I.map(f=>({id:String(f.id),role:f.role,content:f.content,timestamp:f.created_at})))}catch{}};x.useEffect(()=>{Os(),bs()},[]);const Ns=t=>{const I=F.find(f=>f.id===t);p(f=>({...f,provider:t,endpoint:I?.defaultEndpoint||f.endpoint,model:I?.models[0]||f.model}))},Ss=async()=>{if(c.enabled&&!c.api_key&&c.provider!=="ollama"){C.error("请填写 API Key");return}v(!0);try{const t=await $.saveConfig(c);p(t),j(!!(t.enabled&&t.configured)),C.success("配置已保存"),l(!1)}catch(t){C.error(t instanceof Error?t.message:"保存失败")}finally{v(!1)}},ys=async()=>{u(!0);try{await $.testConnection(),C.success("LLM 服务连接成功")}catch(t){C.error(t instanceof Error?t.message:"连接失败")}finally{u(!1)}},X=async t=>{const I={id:Date.now().toString(),role:"user",content:t,timestamp:new Date().toISOString()},f=(Date.now()+1).toString(),$s=[...e,I,{id:f,role:"assistant",content:"",timestamp:new Date().toISOString()}];n($s),a(!0);const M=new AbortController;d.current=M;let P=!1;try{const _=[...e,I].slice(-10).map(O=>({role:O.role,content:O.content}));await $.chatStream(_,O=>{P=!0,n(S=>S.map(b=>b.id===f?{...b,content:b.content+O}:b))},M.signal,J)}catch(_){if(M.signal.aborted)n(O=>O.map(S=>S.id===f?{...S,content:S.content||"(已停止生成)",isStopped:!0}:S));else{const O=_ instanceof Error?_.message:"对话失败";n(S=>S.map(b=>b.id===f?{...b,content:P?b.content+` +`)||"(无)"}`}const vt=[{id:"alerts",name:"分析今日告警",icon:ms,prompt:"帮我分析以下最近的告警事件,给出根因分析和处置建议(按严重程度排序,给出具体处置步骤)",contextLoader:gt},{id:"performance",name:"性能瓶颈分析",icon:xs,prompt:"分析以下主机实时指标,找出 CPU/内存使用率最高的主机并给出性能优化建议",contextLoader:ls},{id:"report",name:"生成运维报告",icon:hs,prompt:"基于以下平台实时数据,生成一份简洁的今日运维报告,包括资源概览、告警情况和发布状态,用 Markdown 格式输出",contextLoader:It},{id:"optimize",name:"资源优化建议",icon:Ws,prompt:"根据以下主机资源使用数据,提供成本优化和容量规划建议(识别闲置/过载主机,给出缩容/扩容建议)",contextLoader:ls}];function jt(e){return new Date(e).toLocaleTimeString("zh-CN",{hour:"2-digit",minute:"2-digit"})}function zt(){const[e,n]=x.useState([]),[i,r]=x.useState(""),[o,a]=x.useState(!1),d=x.useRef(null);x.useEffect(()=>()=>d.current?.abort(),[]);const[m,l]=x.useState(!1),[g,v]=x.useState(!1),[h,u]=x.useState(!1),[c,p]=x.useState(ft),[A,j]=x.useState(!1),[L,G]=x.useState(null),W=()=>{try{return crypto.randomUUID()}catch{}return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,t=>{const I=Math.random()*16|0;return(t==="x"?I:I&3|8).toString(16)})},[Q,vs]=x.useState(()=>W()),J=x.useRef(null),js=()=>J.current?.scrollIntoView({behavior:"smooth"});x.useEffect(()=>{js()},[e]);const Os=async()=>{try{const t=await $.getConfig();p(t),j(!!(t.enabled&&t.configured))}catch{j(!1)}},bs=async()=>{try{const I=(await $.getHistory(Q))?.list||[];n(I.map(f=>({id:String(f.id),role:f.role,content:f.content,timestamp:f.created_at})))}catch{}};x.useEffect(()=>{Os(),bs()},[]);const Ns=t=>{const I=z.find(f=>f.id===t);p(f=>({...f,provider:t,endpoint:I?.defaultEndpoint||f.endpoint,model:I?.models[0]||f.model}))},Ss=async()=>{if(c.enabled&&!c.api_key&&c.provider!=="ollama"){C.error("请填写 API Key");return}v(!0);try{const t=await $.saveConfig(c);p(t),j(!!(t.enabled&&t.configured)),C.success("配置已保存"),l(!1)}catch(t){C.error(t instanceof Error?t.message:"保存失败")}finally{v(!1)}},ys=async()=>{u(!0);try{await $.testConnection(),C.success("LLM 服务连接成功")}catch(t){C.error(t instanceof Error?t.message:"连接失败")}finally{u(!1)}},X=async t=>{const I={id:Date.now().toString(),role:"user",content:t,timestamp:new Date().toISOString()},f=(Date.now()+1).toString(),$s=[...e,I,{id:f,role:"assistant",content:"",timestamp:new Date().toISOString()}];n($s),a(!0);const M=new AbortController;d.current=M;let P=!1;try{const _=[...e,I].slice(-10).map(O=>({role:O.role,content:O.content}));await $.chatStream(_,O=>{P=!0,n(S=>S.map(b=>b.id===f?{...b,content:b.content+O}:b))},M.signal,Q)}catch(_){if(M.signal.aborted)n(O=>O.map(S=>S.id===f?{...S,content:S.content||"(已停止生成)",isStopped:!0}:S));else{const O=_ instanceof Error?_.message:"对话失败";n(S=>S.map(b=>b.id===f?{...b,content:P?b.content+` ⚠️ ${O}`:`⚠️ ${O}`,isError:!P}:b))}}finally{a(!1),d.current=null}},Y=async()=>{const t=i.trim();!t||o||(r(""),await X(t))},ws=async t=>{if(o||L)return;if(!A||!t.contextLoader){r(t.prompt);return}G(t.id);let I="";try{I=await t.contextLoader()}catch{I="(平台数据加载失败,请稍后重试或检查后端服务)"}finally{G(null)}const f=`${t.prompt} 【平台实时数据】 -${I}`;await X(f)},Cs=async()=>{try{await $.clearHistory()}catch{}const t=W();vs(t),n([]),r(""),C.success("已开始新对话")},R=F.find(t=>t.id===c.provider);return s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:370:5",className:"space-y-6",children:[s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:372:7",className:"flex items-center justify-between",children:[s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:373:9",className:"flex items-center gap-3",children:[s.jsx("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:374:11",className:"w-10 h-10 rounded-lg bg-gradient-to-br from-purple-500 to-pink-500 flex items-center justify-center",children:s.jsx(Rs,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:375:13",className:"h-5 w-5 text-white"})}),s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:377:11",children:[s.jsx("h1",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:378:13",className:"text-2xl font-bold text-slate-100",children:"AIOps 智能助手"}),s.jsx("p",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:379:13",className:"text-sm text-slate-500",children:"AI 驱动的智能运维助手"})]})]}),s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:382:9",className:"flex items-center gap-3",children:[A?s.jsxs(E,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:384:13",variant:"outline",className:"border-emerald-500/30 text-emerald-400 bg-emerald-500/10",children:[s.jsx(Gs,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:385:15",className:"h-3 w-3 mr-1"}),c.model]}):s.jsx(E,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:389:13",variant:"outline",className:"border-amber-500/30 text-amber-400 bg-amber-500/10",children:"未配置"}),s.jsxs(N,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:393:11",variant:"outline",className:"border-slate-700 text-slate-300",onClick:()=>l(!0),children:[s.jsx(Z,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:394:13",className:"h-4 w-4 mr-2"}),"模型配置"]})]})]}),s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:400:7",className:"grid grid-cols-4 gap-6 h-[calc(100vh-200px)]",children:[s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:402:9",className:"col-span-1 space-y-4",children:[s.jsxs(D,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:403:11",className:"bg-slate-800 border-slate-700",children:[s.jsx(T,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:404:13",className:"pb-3",children:s.jsx(ts,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:405:15",className:"text-sm text-slate-300",children:"快速操作"})}),s.jsx(q,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:407:13",className:"space-y-2",children:vt.map(t=>s.jsxs(N,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:409:17",variant:"ghost",className:"w-full justify-start text-slate-300 hover:text-slate-100 hover:bg-slate-700",disabled:o||L!==null,onClick:()=>ws(t),children:[L===t.id?s.jsx(k,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:417:21",className:"h-4 w-4 mr-2 shrink-0 animate-spin"}):s.jsx(t.icon,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:419:21",className:"h-4 w-4 mr-2 shrink-0"}),s.jsx("span",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:421:19",className:"text-sm",children:t.name}),A&&t.contextLoader&&s.jsx("span",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:423:21",className:"ml-auto text-[10px] text-emerald-400/60 shrink-0",children:"实时"})]},t.id))})]}),s.jsxs(D,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:430:11",className:"bg-slate-800 border-slate-700",children:[s.jsx(T,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:431:13",className:"pb-3",children:s.jsx(ts,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:432:15",className:"text-sm text-slate-300",children:"能力展示"})}),s.jsxs(q,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:434:13",className:"space-y-3",children:[s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:435:15",className:"flex items-center gap-2 text-sm text-slate-400",children:[s.jsx(ms,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:436:17",className:"h-4 w-4 text-amber-400"}),s.jsx("span",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:437:17",children:"智能告警分析"})]}),s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:439:15",className:"flex items-center gap-2 text-sm text-slate-400",children:[s.jsx(xs,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:440:17",className:"h-4 w-4 text-blue-400"}),s.jsx("span",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:441:17",children:"性能瓶颈识别"})]}),s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:443:15",className:"flex items-center gap-2 text-sm text-slate-400",children:[s.jsx(hs,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:444:17",className:"h-4 w-4 text-emerald-400"}),s.jsx("span",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:445:17",children:"自动报告生成"})]}),s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:447:15",className:"flex items-center gap-2 text-sm text-slate-400",children:[s.jsx(Ms,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:448:17",className:"h-4 w-4 text-purple-400"}),s.jsx("span",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:449:17",children:"脚本自动生成"})]})]})]})]}),s.jsxs(D,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:456:9",className:"col-span-3 bg-slate-800 border-slate-700 flex flex-col",children:[s.jsx(T,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:457:11",className:"border-b border-slate-700 pb-3",children:s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:458:13",className:"flex items-center justify-between",children:[s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:459:15",className:"flex items-center gap-2",children:[s.jsx(ss,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:460:17",className:"h-5 w-5 text-purple-400"}),s.jsx("span",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:461:17",className:"font-medium text-slate-100",children:"AI 助手"}),A?s.jsxs(E,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:463:19",variant:"outline",className:"border-emerald-500/30 text-emerald-400 bg-emerald-500/10 text-xs",children:[s.jsx("span",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:464:21",className:"w-2 h-2 rounded-full bg-emerald-400 mr-1 animate-pulse"}),"在线"]}):s.jsx(E,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:468:19",variant:"outline",className:"border-slate-600 text-slate-400 text-xs",children:"离线"})]}),s.jsxs(N,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:471:15",variant:"ghost",size:"sm",className:"text-slate-400",onClick:Cs,disabled:e.length===0,children:[s.jsx(Js,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:472:17",className:"h-4 w-4 mr-1"}),"新对话"]})]})}),s.jsx(Ps,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:478:11",className:"flex-1 p-4",children:s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:479:13",className:"space-y-4",children:[e.length===0&&!o&&s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:481:17",className:"flex flex-col items-center justify-center py-16 text-slate-500",children:[s.jsx(Qs,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:482:19",className:"h-10 w-10 mb-3 opacity-30"}),s.jsx("p",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:483:19",children:A?"暂无对话记录,输入问题开始与 AI 助手对话":"AI 助手尚未配置大模型"}),!A&&s.jsxs(N,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:485:21",variant:"outline",size:"sm",className:"mt-4 border-slate-600 text-slate-300",onClick:()=>l(!0),children:[s.jsx(Z,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:486:23",className:"h-4 w-4 mr-1"}),"前往配置"]})]}),e.map(t=>{const I=o&&t.role==="assistant"&&t.content==="";return s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:496:17",className:`flex gap-3 ${t.role==="user"?"flex-row-reverse":""}`,children:[s.jsx(ut,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:497:19",className:t.role==="assistant"?"bg-purple-500":"bg-blue-500",children:s.jsx(At,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:498:21",children:t.role==="assistant"?s.jsx(ss,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:499:55",className:"h-4 w-4"}):s.jsx(Ds,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:499:85",className:"h-4 w-4"})})}),s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:502:19",className:`max-w-[80%] ${t.role==="user"?"text-right":""}`,children:[s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:503:21",className:`inline-block rounded-lg p-3 text-left whitespace-pre-wrap break-words ${t.isError?"bg-red-900/30 border border-red-500/30 text-red-300":t.role==="assistant"?"bg-slate-700 text-slate-100":"bg-blue-600 text-white"}`,children:[I?s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:513:25",className:"flex items-center gap-2 text-slate-400",children:[s.jsx(k,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:514:27",className:"h-4 w-4 animate-spin"}),s.jsx("span",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:515:27",className:"text-sm",children:"思考中..."})]}):t.content,o&&t.role==="assistant"&&!I&&t.content&&s.jsx("span",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:522:25",className:"inline-block w-2 h-4 ml-0.5 bg-purple-400 animate-pulse align-middle"})]}),s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:525:21",className:"text-xs text-slate-500 mt-1",children:[jt(t.timestamp),t.isStopped&&s.jsx("span",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:527:45",className:"ml-2 text-slate-600",children:"(已停止)"})]})]})]},t.id)}),s.jsx("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:534:15",ref:Q})]})}),s.jsx(q,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:538:11",className:"border-t border-slate-700 pt-4",children:s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:539:13",className:"flex gap-2",children:[s.jsx(w,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:540:15",value:i,onChange:t=>r(t.target.value),onKeyDown:t=>t.key==="Enter"&&Y(),placeholder:A?"输入运维问题,或选择左侧快速操作...":"请先配置大模型...",className:"flex-1 bg-slate-900 border-slate-700 text-slate-100",disabled:o}),s.jsx(N,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:548:15",className:"bg-purple-600 hover:bg-purple-700",onClick:Y,disabled:o||!i.trim(),children:s.jsx(st,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:549:17",className:"h-4 w-4"})}),o&&s.jsx(N,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:553:17",variant:"outline",className:"border-red-500/40 text-red-400 hover:bg-red-500/10",onClick:()=>d.current?.abort(),title:"停止生成",children:s.jsx(Xs,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:559:19",className:"h-4 w-4"})})]})})]})]}),s.jsx(Ts,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:568:7",open:m,onOpenChange:l,children:s.jsxs(qs,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:569:9",className:"max-w-2xl bg-slate-900 border-slate-700 text-slate-100",children:[s.jsxs(Us,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:570:11",children:[s.jsx(Bs,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:571:13",children:"大模型配置"}),s.jsx(zs,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:572:13",className:"text-slate-500",children:"配置 AI 助手使用的大语言模型(支持 OpenAI 兼容接口)"})]}),s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:576:11",className:"space-y-4 py-4 max-h-[60vh] overflow-y-auto pr-1",children:[s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:578:13",className:"flex items-center justify-between rounded-lg border border-slate-700 p-3",children:[s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:579:15",children:[s.jsx("p",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:580:17",className:"text-sm font-medium text-slate-200",children:"启用 AI 助手"}),s.jsx("p",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:581:17",className:"text-xs text-slate-500",children:"关闭后将无法进行对话"})]}),s.jsx(Hs,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:583:15",checked:c.enabled,onCheckedChange:t=>p({...c,enabled:t})})]}),s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:586:13",className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:587:15",children:[s.jsx(y,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:588:17",className:"text-slate-300",children:"提供商"}),s.jsxs(es,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:589:17",value:c.provider,onValueChange:Ns,children:[s.jsx(as,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:590:19",className:"bg-slate-800 border-slate-700 text-slate-100 mt-1",children:s.jsx(ns,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:591:21"})}),s.jsx(os,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:593:19",className:"bg-slate-800 border-slate-700",children:F.map(t=>s.jsx(cs,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:595:23",value:t.id,className:"text-slate-100",children:t.name},t.id))})]})]}),s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:600:15",children:[s.jsx(y,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:601:17",className:"text-slate-300",children:"模型"}),R&&R.models.length>0?s.jsxs(es,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:603:19",value:c.model,onValueChange:t=>p({...c,model:t}),children:[s.jsx(as,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:604:21",className:"bg-slate-800 border-slate-700 text-slate-100 mt-1",children:s.jsx(ns,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:605:23"})}),s.jsx(os,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:607:21",className:"bg-slate-800 border-slate-700",children:R.models.map(t=>s.jsx(cs,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:609:25",value:t,className:"text-slate-100",children:t},t))})]}):s.jsx(w,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:614:19",value:c.model,onChange:t=>p({...c,model:t.target.value}),placeholder:"输入模型名称",className:"bg-slate-800 border-slate-700 text-slate-100 mt-1"})]})]}),s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:623:13",children:[s.jsxs(y,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:624:15",className:"text-slate-300",children:["API Key ",c.provider==="ollama"&&s.jsx("span",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:624:90",className:"text-xs text-slate-500",children:"(本地 Ollama 通常无需)"})]}),s.jsx(w,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:625:15",type:"password",value:c.api_key,onChange:t=>p({...c,api_key:t.target.value}),placeholder:"sk-...",className:"bg-slate-800 border-slate-700 text-slate-100 mt-1"})]}),s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:633:13",children:[s.jsx(y,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:634:15",className:"text-slate-300",children:"API Endpoint"}),s.jsx(w,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:635:15",value:c.endpoint,onChange:t=>p({...c,endpoint:t.target.value}),placeholder:"https://api.openai.com/v1",className:"bg-slate-800 border-slate-700 text-slate-100 mt-1 font-mono text-sm"}),s.jsx("p",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:641:15",className:"text-xs text-slate-500 mt-1",children:"基础地址(不含 /chat/completions),OpenAI 兼容格式"})]}),s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:643:13",children:[s.jsx(y,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:644:15",className:"text-slate-300",children:"系统提示词(可选)"}),s.jsx("textarea",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:645:15",value:c.system_prompt,onChange:t=>p({...c,system_prompt:t.target.value}),placeholder:"留空则使用内置 AIOps 运维助手角色提示词",className:"w-full bg-slate-800 border border-slate-700 text-slate-100 mt-1 rounded-md p-2 text-sm min-h-[70px] resize-y"})]}),s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:652:13",className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:653:15",children:[s.jsx(y,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:654:17",className:"text-slate-300",children:"Temperature"}),s.jsx(w,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:655:17",type:"number",min:0,max:2,step:.1,value:Math.round(c.temperature*10)/10,onChange:t=>p({...c,temperature:parseFloat(t.target.value)||0}),className:"bg-slate-800 border-slate-700 text-slate-100 mt-1"}),s.jsx("p",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:664:17",className:"text-xs text-slate-500 mt-1",children:"值越高回答越创造性"})]}),s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:666:15",children:[s.jsx(y,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:667:17",className:"text-slate-300",children:"Max Tokens"}),s.jsx(w,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:668:17",type:"number",value:c.max_tokens,onChange:t=>p({...c,max_tokens:parseInt(t.target.value)||2e3}),className:"bg-slate-800 border-slate-700 text-slate-100 mt-1"})]})]})]}),s.jsxs(Fs,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:677:11",className:"gap-2",children:[s.jsxs(N,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:678:13",variant:"outline",onClick:ys,disabled:h,className:"border-slate-700 text-slate-300",children:[h?s.jsx(k,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:679:26",className:"h-4 w-4 mr-2 animate-spin"}):s.jsx(Ys,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:679:78",className:"h-4 w-4 mr-2"}),"测试连接"]}),s.jsx(N,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:682:13",variant:"outline",onClick:()=>l(!1),className:"border-slate-700 text-slate-300",children:"取消"}),s.jsxs(N,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:685:13",className:"bg-purple-600 hover:bg-purple-700",onClick:Ss,disabled:g,children:[g?s.jsx(k,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:686:25",className:"h-4 w-4 mr-2 animate-spin"}):null,"保存配置"]})]})]})})]})}export{Bt as AIOpsAssistant}; +${I}`;await X(f)},Cs=async()=>{try{await $.clearHistory()}catch{}const t=W();vs(t),n([]),r(""),C.success("已开始新对话")},R=z.find(t=>t.id===c.provider);return s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:370:5",className:"space-y-6",children:[s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:372:7",className:"flex items-center justify-between",children:[s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:373:9",className:"flex items-center gap-3",children:[s.jsx("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:374:11",className:"w-10 h-10 rounded-lg bg-gradient-to-br from-purple-500 to-pink-500 flex items-center justify-center",children:s.jsx(Rs,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:375:13",className:"h-5 w-5 text-white"})}),s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:377:11",children:[s.jsx("h1",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:378:13",className:"text-2xl font-bold text-slate-100",children:"AIOps 智能助手"}),s.jsx("p",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:379:13",className:"text-sm text-slate-500",children:"AI 驱动的智能运维助手"})]})]}),s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:382:9",className:"flex items-center gap-3",children:[A?s.jsxs(E,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:384:13",variant:"outline",className:"border-emerald-500/30 text-emerald-400 bg-emerald-500/10",children:[s.jsx(Gs,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:385:15",className:"h-3 w-3 mr-1"}),c.model]}):s.jsx(E,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:389:13",variant:"outline",className:"border-amber-500/30 text-amber-400 bg-amber-500/10",children:"未配置"}),s.jsxs(N,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:393:11",variant:"outline",className:"border-slate-700 text-slate-300",onClick:()=>l(!0),children:[s.jsx(Z,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:394:13",className:"h-4 w-4 mr-2"}),"模型配置"]})]})]}),s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:400:7",className:"grid grid-cols-4 gap-6 h-[calc(100vh-200px)]",children:[s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:402:9",className:"col-span-1 space-y-4",children:[s.jsxs(D,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:403:11",className:"bg-slate-800 border-slate-700",children:[s.jsx(T,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:404:13",className:"pb-3",children:s.jsx(ts,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:405:15",className:"text-sm text-slate-300",children:"快速操作"})}),s.jsx(q,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:407:13",className:"space-y-2",children:vt.map(t=>s.jsxs(N,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:409:17",variant:"ghost",className:"w-full justify-start text-slate-300 hover:text-slate-100 hover:bg-slate-700",disabled:o||L!==null,onClick:()=>ws(t),children:[L===t.id?s.jsx(k,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:417:21",className:"h-4 w-4 mr-2 shrink-0 animate-spin"}):s.jsx(t.icon,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:419:21",className:"h-4 w-4 mr-2 shrink-0"}),s.jsx("span",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:421:19",className:"text-sm",children:t.name}),A&&t.contextLoader&&s.jsx("span",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:423:21",className:"ml-auto text-[10px] text-emerald-400/60 shrink-0",children:"实时"})]},t.id))})]}),s.jsxs(D,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:430:11",className:"bg-slate-800 border-slate-700",children:[s.jsx(T,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:431:13",className:"pb-3",children:s.jsx(ts,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:432:15",className:"text-sm text-slate-300",children:"能力展示"})}),s.jsxs(q,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:434:13",className:"space-y-3",children:[s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:435:15",className:"flex items-center gap-2 text-sm text-slate-400",children:[s.jsx(ms,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:436:17",className:"h-4 w-4 text-amber-400"}),s.jsx("span",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:437:17",children:"智能告警分析"})]}),s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:439:15",className:"flex items-center gap-2 text-sm text-slate-400",children:[s.jsx(xs,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:440:17",className:"h-4 w-4 text-blue-400"}),s.jsx("span",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:441:17",children:"性能瓶颈识别"})]}),s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:443:15",className:"flex items-center gap-2 text-sm text-slate-400",children:[s.jsx(hs,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:444:17",className:"h-4 w-4 text-emerald-400"}),s.jsx("span",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:445:17",children:"自动报告生成"})]}),s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:447:15",className:"flex items-center gap-2 text-sm text-slate-400",children:[s.jsx(Ms,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:448:17",className:"h-4 w-4 text-purple-400"}),s.jsx("span",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:449:17",children:"脚本自动生成"})]})]})]})]}),s.jsxs(D,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:456:9",className:"col-span-3 bg-slate-800 border-slate-700 flex flex-col",children:[s.jsx(T,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:457:11",className:"border-b border-slate-700 pb-3",children:s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:458:13",className:"flex items-center justify-between",children:[s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:459:15",className:"flex items-center gap-2",children:[s.jsx(ss,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:460:17",className:"h-5 w-5 text-purple-400"}),s.jsx("span",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:461:17",className:"font-medium text-slate-100",children:"AI 助手"}),A?s.jsxs(E,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:463:19",variant:"outline",className:"border-emerald-500/30 text-emerald-400 bg-emerald-500/10 text-xs",children:[s.jsx("span",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:464:21",className:"w-2 h-2 rounded-full bg-emerald-400 mr-1 animate-pulse"}),"在线"]}):s.jsx(E,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:468:19",variant:"outline",className:"border-slate-600 text-slate-400 text-xs",children:"离线"})]}),s.jsxs(N,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:471:15",variant:"ghost",size:"sm",className:"text-slate-400",onClick:Cs,disabled:e.length===0,children:[s.jsx(Qs,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:472:17",className:"h-4 w-4 mr-1"}),"新对话"]})]})}),s.jsx(Ps,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:478:11",className:"flex-1 p-4",children:s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:479:13",className:"space-y-4",children:[e.length===0&&!o&&s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:481:17",className:"flex flex-col items-center justify-center py-16 text-slate-500",children:[s.jsx(Js,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:482:19",className:"h-10 w-10 mb-3 opacity-30"}),s.jsx("p",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:483:19",children:A?"暂无对话记录,输入问题开始与 AI 助手对话":"AI 助手尚未配置大模型"}),!A&&s.jsxs(N,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:485:21",variant:"outline",size:"sm",className:"mt-4 border-slate-600 text-slate-300",onClick:()=>l(!0),children:[s.jsx(Z,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:486:23",className:"h-4 w-4 mr-1"}),"前往配置"]})]}),e.map(t=>{const I=o&&t.role==="assistant"&&t.content==="";return s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:496:17",className:`flex gap-3 ${t.role==="user"?"flex-row-reverse":""}`,children:[s.jsx(ut,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:497:19",className:t.role==="assistant"?"bg-purple-500":"bg-blue-500",children:s.jsx(At,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:498:21",children:t.role==="assistant"?s.jsx(ss,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:499:55",className:"h-4 w-4"}):s.jsx(Ds,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:499:85",className:"h-4 w-4"})})}),s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:502:19",className:`max-w-[80%] ${t.role==="user"?"text-right":""}`,children:[s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:503:21",className:`inline-block rounded-lg p-3 text-left whitespace-pre-wrap break-words ${t.isError?"bg-red-900/30 border border-red-500/30 text-red-300":t.role==="assistant"?"bg-slate-700 text-slate-100":"bg-blue-600 text-white"}`,children:[I?s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:513:25",className:"flex items-center gap-2 text-slate-400",children:[s.jsx(k,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:514:27",className:"h-4 w-4 animate-spin"}),s.jsx("span",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:515:27",className:"text-sm",children:"思考中..."})]}):t.content,o&&t.role==="assistant"&&!I&&t.content&&s.jsx("span",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:522:25",className:"inline-block w-2 h-4 ml-0.5 bg-purple-400 animate-pulse align-middle"})]}),s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:525:21",className:"text-xs text-slate-500 mt-1",children:[jt(t.timestamp),t.isStopped&&s.jsx("span",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:527:45",className:"ml-2 text-slate-600",children:"(已停止)"})]})]})]},t.id)}),s.jsx("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:534:15",ref:J})]})}),s.jsx(q,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:538:11",className:"border-t border-slate-700 pt-4",children:s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:539:13",className:"flex gap-2",children:[s.jsx(w,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:540:15",value:i,onChange:t=>r(t.target.value),onKeyDown:t=>t.key==="Enter"&&Y(),placeholder:A?"输入运维问题,或选择左侧快速操作...":"请先配置大模型...",className:"flex-1 bg-slate-900 border-slate-700 text-slate-100",disabled:o}),s.jsx(N,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:548:15",className:"bg-purple-600 hover:bg-purple-700",onClick:Y,disabled:o||!i.trim(),children:s.jsx(st,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:549:17",className:"h-4 w-4"})}),o&&s.jsx(N,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:553:17",variant:"outline",className:"border-red-500/40 text-red-400 hover:bg-red-500/10",onClick:()=>d.current?.abort(),title:"停止生成",children:s.jsx(Xs,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:559:19",className:"h-4 w-4"})})]})})]})]}),s.jsx(Ts,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:568:7",open:m,onOpenChange:l,children:s.jsxs(qs,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:569:9",className:"max-w-2xl bg-slate-900 border-slate-700 text-slate-100",children:[s.jsxs(Us,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:570:11",children:[s.jsx(Bs,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:571:13",children:"大模型配置"}),s.jsx(Fs,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:572:13",className:"text-slate-500",children:"配置 AI 助手使用的大语言模型(支持 OpenAI 兼容接口)"})]}),s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:576:11",className:"space-y-4 py-4 max-h-[60vh] overflow-y-auto pr-1",children:[s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:578:13",className:"flex items-center justify-between rounded-lg border border-slate-700 p-3",children:[s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:579:15",children:[s.jsx("p",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:580:17",className:"text-sm font-medium text-slate-200",children:"启用 AI 助手"}),s.jsx("p",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:581:17",className:"text-xs text-slate-500",children:"关闭后将无法进行对话"})]}),s.jsx(Hs,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:583:15",checked:c.enabled,onCheckedChange:t=>p({...c,enabled:t})})]}),s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:586:13",className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:587:15",children:[s.jsx(y,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:588:17",className:"text-slate-300",children:"提供商"}),s.jsxs(es,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:589:17",value:c.provider,onValueChange:Ns,children:[s.jsx(as,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:590:19",className:"bg-slate-800 border-slate-700 text-slate-100 mt-1",children:s.jsx(ns,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:591:21"})}),s.jsx(os,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:593:19",className:"bg-slate-800 border-slate-700",children:z.map(t=>s.jsx(cs,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:595:23",value:t.id,className:"text-slate-100",children:t.name},t.id))})]})]}),s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:600:15",children:[s.jsx(y,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:601:17",className:"text-slate-300",children:"模型"}),R&&R.models.length>0?s.jsxs(es,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:603:19",value:c.model,onValueChange:t=>p({...c,model:t}),children:[s.jsx(as,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:604:21",className:"bg-slate-800 border-slate-700 text-slate-100 mt-1",children:s.jsx(ns,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:605:23"})}),s.jsx(os,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:607:21",className:"bg-slate-800 border-slate-700",children:R.models.map(t=>s.jsx(cs,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:609:25",value:t,className:"text-slate-100",children:t},t))})]}):s.jsx(w,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:614:19",value:c.model,onChange:t=>p({...c,model:t.target.value}),placeholder:"输入模型名称",className:"bg-slate-800 border-slate-700 text-slate-100 mt-1"})]})]}),s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:623:13",children:[s.jsxs(y,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:624:15",className:"text-slate-300",children:["API Key ",c.provider==="ollama"&&s.jsx("span",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:624:90",className:"text-xs text-slate-500",children:"(本地 Ollama 通常无需)"})]}),s.jsx(w,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:625:15",type:"password",value:c.api_key,onChange:t=>p({...c,api_key:t.target.value}),placeholder:"sk-...",className:"bg-slate-800 border-slate-700 text-slate-100 mt-1"})]}),s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:633:13",children:[s.jsx(y,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:634:15",className:"text-slate-300",children:"API Endpoint"}),s.jsx(w,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:635:15",value:c.endpoint,onChange:t=>p({...c,endpoint:t.target.value}),placeholder:"https://api.openai.com/v1",className:"bg-slate-800 border-slate-700 text-slate-100 mt-1 font-mono text-sm"}),s.jsx("p",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:641:15",className:"text-xs text-slate-500 mt-1",children:"基础地址(不含 /chat/completions),OpenAI 兼容格式"})]}),s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:643:13",children:[s.jsx(y,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:644:15",className:"text-slate-300",children:"系统提示词(可选)"}),s.jsx("textarea",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:645:15",value:c.system_prompt,onChange:t=>p({...c,system_prompt:t.target.value}),placeholder:"留空则使用内置 AIOps 运维助手角色提示词",className:"w-full bg-slate-800 border border-slate-700 text-slate-100 mt-1 rounded-md p-2 text-sm min-h-[70px] resize-y"})]}),s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:652:13",className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:653:15",children:[s.jsx(y,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:654:17",className:"text-slate-300",children:"Temperature"}),s.jsx(w,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:655:17",type:"number",min:0,max:2,step:.1,value:Math.round(c.temperature*10)/10,onChange:t=>p({...c,temperature:parseFloat(t.target.value)||0}),className:"bg-slate-800 border-slate-700 text-slate-100 mt-1"}),s.jsx("p",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:664:17",className:"text-xs text-slate-500 mt-1",children:"值越高回答越创造性"})]}),s.jsxs("div",{"code-path":"src/components/aiops/AIOpsAssistant.tsx:666:15",children:[s.jsx(y,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:667:17",className:"text-slate-300",children:"Max Tokens"}),s.jsx(w,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:668:17",type:"number",value:c.max_tokens,onChange:t=>p({...c,max_tokens:parseInt(t.target.value)||2e3}),className:"bg-slate-800 border-slate-700 text-slate-100 mt-1"})]})]})]}),s.jsxs(zs,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:677:11",className:"gap-2",children:[s.jsxs(N,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:678:13",variant:"outline",onClick:ys,disabled:h,className:"border-slate-700 text-slate-300",children:[h?s.jsx(k,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:679:26",className:"h-4 w-4 mr-2 animate-spin"}):s.jsx(Ys,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:679:78",className:"h-4 w-4 mr-2"}),"测试连接"]}),s.jsx(N,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:682:13",variant:"outline",onClick:()=>l(!1),className:"border-slate-700 text-slate-300",children:"取消"}),s.jsxs(N,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:685:13",className:"bg-purple-600 hover:bg-purple-700",onClick:Ss,disabled:g,children:[g?s.jsx(k,{"code-path":"src/components/aiops/AIOpsAssistant.tsx:686:25",className:"h-4 w-4 mr-2 animate-spin"}):null,"保存配置"]})]})]})})]})}export{zt as AIOpsAssistant}; diff --git a/backend/static/assets/AIPredictiveAnalytics-Dr8sfqna.js b/backend/static/assets/AIPredictiveAnalytics-Dr8sfqna.js deleted file mode 100644 index bea5f35..0000000 --- a/backend/static/assets/AIPredictiveAnalytics-Dr8sfqna.js +++ /dev/null @@ -1 +0,0 @@ -import{g as J,j as e,L as D,G as q,r as g,aJ as Q,B as ee,A as se,a3 as te,T as _,K as ce,o as ae,N as ie}from"./index-DfyorCky.js";import{C as w,b as K,c as H,a as C}from"./card-C55cvSHg.js";import{B as X}from"./badge-xNW8x0G1.js";import{T as ne,a as oe,b as F,c as B}from"./tabs-CIh_yD4s.js";import{S as re,a as le,b as de,c as pe,d as U}from"./select-D5qUzdAs.js";import{d as me}from"./dashboard-BjQPIG2G.js";import{s as xe}from"./server-CjDPBaTN.js";import{a as W}from"./monitor-BAaBXIsC.js";import{H as z}from"./hard-drive-BbPmnARR.js";import{Z as Y}from"./zap-D2uWSK32.js";import{S as G}from"./sparkles-Bld4NX5y.js";import{T as O}from"./trending-up-CdusV6gc.js";import{M as he}from"./memory-stick-QMV-0CnU.js";import{M as Ae}from"./minus-UVrx3jLc.js";import{T as ye}from"./trending-down-BGTWG_dA.js";import"./index-CWVNW_qu.js";const ve=[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]],ue=J("calendar",ve);const je=[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"m19 9-5 5-4-4-3 3",key:"2osh9i"}]],be=J("chart-line",je);function Pe({forecasts:a,loading:i}){return e.jsxs(w,{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:14:5",className:"bg-slate-800 border-slate-700",children:[e.jsx(K,{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:15:7",className:"pb-3",children:e.jsxs("div",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:16:9",className:"flex items-center justify-between",children:[e.jsxs(H,{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:17:11",className:"text-slate-100 flex items-center gap-2",children:[e.jsx(z,{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:18:13",className:"h-5 w-5 text-amber-400"}),"容量规划预警"]}),e.jsx("span",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:21:11",className:"text-xs text-slate-500",children:"基于日均增长率推算阈值触及时间"})]})}),e.jsx(C,{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:24:7",children:i?e.jsxs("div",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:26:11",className:"flex items-center justify-center py-12 text-slate-500",children:[e.jsx(D,{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:27:13",className:"h-5 w-5 animate-spin mr-2"})," 加载容量数据..."]}):a.length===0?e.jsx("div",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:30:11",className:"text-center py-12 text-slate-500",children:"暂无容量数据"}):e.jsx("div",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:32:11",className:"space-y-4",children:a.map((c,p)=>e.jsxs("div",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:34:15",className:"p-4 rounded-lg border border-slate-700 bg-slate-800/50",children:[e.jsxs("div",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:35:17",className:"flex items-center justify-between mb-3",children:[e.jsxs("div",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:36:19",className:"flex items-center gap-2",children:[e.jsx(q,{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:37:21",className:"h-5 w-5 text-blue-400"}),e.jsx("span",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:38:21",className:"font-medium text-slate-200",children:c.resource})]}),e.jsx(X,{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:40:19",variant:"outline",className:c.daysUntilThreshold<=7?"border-red-500/30 text-red-400 bg-red-500/10":c.daysUntilThreshold<=14?"border-amber-500/30 text-amber-400 bg-amber-500/10":"border-emerald-500/30 text-emerald-400 bg-emerald-500/10",children:c.daysUntilThreshold<=7?"紧急":c.daysUntilThreshold<=14?"警告":"正常"})]}),e.jsxs("div",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:58:17",className:"mb-4",children:[e.jsxs("div",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:59:19",className:"flex items-center justify-between text-sm mb-1",children:[e.jsx("span",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:60:21",className:"text-slate-400",children:"7天使用率预测"}),e.jsx("span",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:61:21",className:"text-slate-400",children:c.daysUntilThreshold>=999?"增长平缓,暂无触顶风险":e.jsxs(e.Fragment,{children:["预计"," ",e.jsxs("span",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:67:27",className:"text-amber-400 font-medium",children:[c.daysUntilThreshold,"天"]})," ","后达到阈值"]})})]}),e.jsx("div",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:73:19",className:"h-3 bg-slate-700 rounded-full overflow-hidden",children:e.jsxs("div",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:74:21",className:"flex h-full",children:[e.jsx("div",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:75:23",className:"bg-blue-500",style:{width:`${c.currentUsage}%`}}),e.jsx("div",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:76:23",className:"bg-gradient-to-r from-blue-500/50 to-amber-500",style:{width:`${Math.max(0,c.predictedUsage-c.currentUsage)}%`}})]})}),e.jsxs("div",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:84:19",className:"flex items-center justify-between text-xs mt-1",children:[e.jsxs("span",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:85:21",className:"text-slate-500",children:["当前 ",c.currentUsage,"%"]}),e.jsxs("span",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:86:21",className:"text-amber-400",children:["预测 ",c.predictedUsage,"%"]}),e.jsxs("span",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:87:21",className:"text-red-400",children:["阈值 ",c.threshold,"%"]})]})]}),e.jsx("div",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:91:17",className:"p-3 bg-slate-900 rounded-lg border border-slate-700",children:e.jsxs("div",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:92:19",className:"flex items-start gap-2",children:[e.jsx(Y,{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:93:21",className:"h-4 w-4 text-emerald-400 mt-0.5"}),e.jsxs("div",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:94:21",children:[e.jsx("span",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:95:23",className:"text-sm text-slate-400",children:"AI建议:"}),e.jsx("p",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:96:23",className:"text-sm text-slate-300 mt-1",children:c.recommendation})]})]})})]},p))})})]})}const M=[{key:"cpu",label:"CPU使用率",exprKey:"cpu_usage",threshold:85},{key:"memory",label:"内存使用率",exprKey:"memory_usage",threshold:85},{key:"disk",label:"磁盘使用率",exprKey:"disk_usage",threshold:90}],Ne={"1h":"1小时后","24h":"24小时后","7d":"7天后","30d":"30天后"},ge={"1h":1,"24h":24,"7d":168,"30d":720};function E(a){const i=a.length;if(i<2)return{slope:0,r2:0};const c=a.map((o,h)=>h),p=c.reduce((o,h)=>o+h,0)/i,A=a.reduce((o,h)=>o+h,0)/i;let j=0,b=0,I=0,T=0;for(let o=0;oc.name===i).sort((c,p)=>new Date(c.timestamp).getTime()-new Date(p.timestamp).getTime()).map(c=>Number(c.value)||0)}function Ie(a){const i=a.match(/[><=]\s*([\d.]+)/);return i?parseFloat(i[1]):null}function fe(a,i){const c=i<=7?"urgent":i<=14?"warning":"normal";return{urgent:{cpu:"CPU增长趋势明显,建议尽快扩容计算资源或优化高负载进程",memory:"内存增长趋势明显,建议增加内存或排查内存泄漏",disk:"磁盘空间即将耗尽,建议立即扩容或清理历史数据与日志"},warning:{cpu:"CPU使用率呈上升趋势,建议持续监控并准备扩容计划",memory:"内存使用率呈上升趋势,建议优化应用内存使用",disk:"磁盘使用率持续增长,建议规划数据归档和清理策略"},normal:{cpu:"CPU使用正常,建议持续监控",memory:"内存使用正常,建议持续监控",disk:"磁盘空间充足,建议持续监控"}}[c]?.[a]||"建议持续监控资源使用趋势"}function V(a){return{cpu:"检查高负载进程,优化CPU密集型任务,考虑横向扩容",memory:"排查内存泄漏,优化进程内存配置,考虑增加节点",disk:"清理历史数据和日志,实施数据归档策略,扩容磁盘",service:"检查服务健康状态与依赖组件,查看服务日志",pod:"检查Pod重启原因,查看容器日志,排查OOM或健康检查失败"}[a]||"建议检查相关服务状态并持续监控"}function we(a){const{rawMetrics:i,serverStats:c,alertEvents:p,alertRules:A,selectedTimeRange:j}=a,b=ge[j]||24,I=Ne[j]||"24小时后",T=M.map(t=>{const n=$(i,t.key),{slope:m,r2:x}=E(n),r=t.key==="cpu"?c.avg_cpu:t.key==="memory"?c.avg_memory:c.avg_disk,l=n.length>0?n[n.length-1]:r||0;let v=l+m*b;v=Math.max(0,Math.min(100,v));const s=m>.05?"up":m<-.05?"down":"stable",d=Math.round(60+x*35);return{name:t.label,current:Math.round(l),predicted:Math.round(v),unit:"%",trend:s,confidence:d,timeRange:I}}),P=M.map(t=>{const n=$(i,t.key),{slope:m}=E(n),x=t.key==="cpu"?c.avg_cpu:t.key==="memory"?c.avg_memory:c.avg_disk,r=Math.round(n.length>0?n[n.length-1]:x||0),l=m*24,v=Math.round(Math.min(100,r+l*7)),s=t.threshold;let d=999;return l>.01&&(d=Math.round((s-r)/l),d=d<1?1:d),{resource:{cpu:"服务器CPU算力",memory:"服务器内存",disk:"存储磁盘空间"}[t.key]||t.label,metricKey:t.key,currentUsage:r,predictedUsage:v,threshold:s,daysUntilThreshold:d,recommendation:fe(t.key,d)}}).filter(t=>t.currentUsage>0),f=[];for(const t of A){if(!t.enabled)continue;const n=Ie(t.expression||""),m=(t.expression||"").toLowerCase(),x=M.find(r=>m.includes(r.exprKey));if(x&&n){const r=$(i,x.key),{slope:l}=E(r),v=x.key==="cpu"?c.avg_cpu:x.key==="memory"?c.avg_memory:c.avg_disk,s=r.length>0?r[r.length-1]:v||0,d=n>0?s/n:0;let u=Math.round(d*55);l>.05&&(u+=15);const R=p.filter(y=>y.rule_id===t.id||y.rule_name===t.name).length;u+=Math.min(20,R*3),u=Math.max(5,Math.min(90,u));let N="未来24小时";if(l>.01&&n>s){const y=(n-s)/l;y<4?N="未来4小时":y<12?N="未来12小时":y<24?N="未来24小时":N=`未来${Math.ceil(y/24)}天`}f.push({metric:t.name,predictedAnomaly:t.description||`${t.name}可能触发`,probability:u,timeframe:N,suggestedAction:V(x.key)})}else{const r=p.filter(l=>l.rule_id===t.id||l.rule_name===t.name).length;if(r>0){const l=m.includes("service")?"service":m.includes("pod")?"pod":"service";f.push({metric:t.name,predictedAnomaly:t.description||`${t.name}可能再次发生`,probability:Math.min(60,20+r*5),timeframe:"未来24小时",suggestedAction:V(l)})}}}const k=f.sort((t,n)=>n.probability-t.probability).filter((t,n,m)=>m.findIndex(x=>x.metric===t.metric)===n),o=M.length>0?M.reduce((t,n)=>t+E($(i,n.key)).r2,0)/M.length:0,h=Math.round(78+o*17),S=k.filter(t=>t.probability>=50).length,L=P.filter(t=>t.daysUntilThreshold<=14).length;return{predictions:T,capacityForecasts:P,dedupedAnomalies:k,accuracy:h,predictedAlertCount:S,capacityWarningCount:L}}function Z(a){switch(a){case"up":return"text-red-400";case"down":return"text-emerald-400";default:return"text-slate-400"}}function ze(){const[a,i]=g.useState("24h"),[c,p]=g.useState(!1),[A,j]=g.useState(!0),[b,I]=g.useState([]),[T,P]=g.useState({}),[f,k]=g.useState([]),[o,h]=g.useState([]);g.useEffect(()=>{S()},[]);const S=async()=>{j(!0);try{const[s,d,u,R]=await Promise.all([me.getMetrics(72),xe.getServerStats(),W.getAlerts({page:1,page_size:100}),W.getRules()]);I(Array.isArray(s)?s:[]),P(d||{});const N=u?.list||u||[];k(Array.isArray(N)?N:[]);const y=R?.list||R||[];h(Array.isArray(y)?y:[])}catch{}finally{j(!1)}},L=async()=>{p(!0),await S(),p(!1)},{predictions:t,capacityForecasts:n,dedupedAnomalies:m,accuracy:x,predictedAlertCount:r,capacityWarningCount:l}=we({rawMetrics:b,serverStats:T,alertEvents:f,alertRules:o,selectedTimeRange:a}),v=s=>{switch(s){case"up":return e.jsx(O,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:99:16",className:"h-4 w-4 text-red-400"});case"down":return e.jsx(ye,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:101:16",className:"h-4 w-4 text-emerald-400"});default:return e.jsx(Ae,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:103:16",className:"h-4 w-4 text-slate-400"})}};return e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:108:5",className:"space-y-6",children:[e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:110:7",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:111:9",className:"flex items-center gap-3",children:[e.jsx("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:112:11",className:"w-10 h-10 rounded-lg bg-gradient-to-br from-indigo-500 to-purple-500 flex items-center justify-center",children:e.jsx(Q,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:113:13",className:"h-5 w-5 text-white"})}),e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:115:11",children:[e.jsx("h1",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:116:13",className:"text-2xl font-bold text-slate-100",children:"AI 预测分析"}),e.jsx("p",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:117:13",className:"text-sm text-slate-500",children:"基于实时指标时序数据的线性回归预测与容量规划"})]})]}),e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:120:9",className:"flex items-center gap-2",children:[e.jsxs(re,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:121:11",value:a,onValueChange:i,children:[e.jsxs(le,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:122:13",className:"w-32 bg-slate-800 border-slate-700 text-slate-100",children:[e.jsx(ue,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:123:15",className:"h-4 w-4 mr-2"}),e.jsx(de,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:124:15"})]}),e.jsxs(pe,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:126:13",className:"bg-slate-800 border-slate-700",children:[e.jsx(U,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:127:15",value:"1h",children:"1小时"}),e.jsx(U,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:128:15",value:"24h",children:"24小时"}),e.jsx(U,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:129:15",value:"7d",children:"7天"}),e.jsx(U,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:130:15",value:"30d",children:"30天"})]})]}),e.jsx(ee,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:133:11",variant:"outline",className:"border-slate-700 text-slate-300",onClick:L,children:c||A?e.jsx(D,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:134:39",className:"h-4 w-4 animate-spin"}):e.jsx(se,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:134:86",className:"h-4 w-4"})})]})]}),e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:140:7",className:"grid grid-cols-4 gap-4",children:[e.jsx(w,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:141:9",className:"bg-slate-800 border-slate-700",children:e.jsxs(C,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:142:11",className:"p-4",children:[e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:143:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:144:15",children:[e.jsx("p",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:145:17",className:"text-sm text-slate-400",children:"预测置信度"}),e.jsxs("p",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:146:17",className:"text-2xl font-bold text-slate-100",children:[x,"%"]})]}),e.jsx("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:148:15",className:"w-10 h-10 rounded-lg bg-emerald-500/20 flex items-center justify-center",children:e.jsx(te,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:149:17",className:"h-5 w-5 text-emerald-400"})})]}),e.jsx("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:152:13",className:"flex items-center gap-1 mt-2 text-xs text-slate-500",children:e.jsxs("span",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:153:15",children:["基于 ",b.length," 个时序数据点回归拟合 R²"]})})]})}),e.jsx(w,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:158:9",className:"bg-slate-800 border-slate-700",children:e.jsxs(C,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:159:11",className:"p-4",children:[e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:160:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:161:15",children:[e.jsx("p",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:162:17",className:"text-sm text-slate-400",children:"高风险预测"}),e.jsx("p",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:163:17",className:"text-2xl font-bold text-slate-100",children:r})]}),e.jsx("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:165:15",className:"w-10 h-10 rounded-lg bg-amber-500/20 flex items-center justify-center",children:e.jsx(_,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:166:17",className:"h-5 w-5 text-amber-400"})})]}),e.jsx("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:169:13",className:"flex items-center gap-1 mt-2 text-xs text-amber-400",children:e.jsx("span",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:170:15",children:"概率 ≥50% 的异常预测"})})]})}),e.jsx(w,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:175:9",className:"bg-slate-800 border-slate-700",children:e.jsxs(C,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:176:11",className:"p-4",children:[e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:177:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:178:15",children:[e.jsx("p",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:179:17",className:"text-sm text-slate-400",children:"容量预警"}),e.jsx("p",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:180:17",className:"text-2xl font-bold text-slate-100",children:l})]}),e.jsx("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:182:15",className:"w-10 h-10 rounded-lg bg-red-500/20 flex items-center justify-center",children:e.jsx(z,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:183:17",className:"h-5 w-5 text-red-400"})})]}),e.jsx("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:186:13",className:"flex items-center gap-1 mt-2 text-xs text-slate-500",children:e.jsx("span",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:187:15",children:"14天内触及阈值"})})]})}),e.jsx(w,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:192:9",className:"bg-slate-800 border-slate-700",children:e.jsxs(C,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:193:11",className:"p-4",children:[e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:194:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:195:15",children:[e.jsx("p",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:196:17",className:"text-sm text-slate-400",children:"监控指标数"}),e.jsx("p",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:197:17",className:"text-2xl font-bold text-slate-100",children:t.length})]}),e.jsx("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:199:15",className:"w-10 h-10 rounded-lg bg-purple-500/20 flex items-center justify-center",children:e.jsx(G,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:200:17",className:"h-5 w-5 text-purple-400"})})]}),e.jsx("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:203:13",className:"flex items-center gap-1 mt-2 text-xs text-slate-500",children:e.jsx("span",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:204:15",children:"CPU / 内存 / 磁盘"})})]})})]}),e.jsxs(ne,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:210:7",defaultValue:"metrics",className:"space-y-4",children:[e.jsxs(oe,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:211:9",className:"bg-slate-800 border border-slate-700",children:[e.jsxs(F,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:212:11",value:"metrics",className:"data-[state=active]:bg-slate-700",children:[e.jsx(be,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:213:13",className:"h-4 w-4 mr-2"}),"指标预测"]}),e.jsxs(F,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:216:11",value:"capacity",className:"data-[state=active]:bg-slate-700",children:[e.jsx(ce,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:217:13",className:"h-4 w-4 mr-2"}),"容量规划"]}),e.jsxs(F,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:220:11",value:"anomaly",className:"data-[state=active]:bg-slate-700",children:[e.jsx(_,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:221:13",className:"h-4 w-4 mr-2"}),"异常预测"]})]}),e.jsx(B,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:226:9",value:"metrics",className:"space-y-4",children:e.jsxs(w,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:227:11",className:"bg-slate-800 border-slate-700",children:[e.jsx(K,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:228:13",className:"pb-3",children:e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:229:15",className:"flex items-center justify-between",children:[e.jsxs(H,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:230:17",className:"text-slate-100 flex items-center gap-2",children:[e.jsx(O,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:231:19",className:"h-5 w-5 text-blue-400"}),"关键指标预测"]}),e.jsxs(X,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:234:17",variant:"outline",className:"border-purple-500/30 text-purple-400 bg-purple-500/10",children:[e.jsx(G,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:235:19",className:"h-3 w-3 mr-1"}),"线性回归预测"]})]})}),e.jsx(C,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:240:13",children:A?e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:242:17",className:"flex items-center justify-center py-12 text-slate-500",children:[e.jsx(D,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:243:19",className:"h-5 w-5 animate-spin mr-2"})," 加载指标数据..."]}):t.length===0?e.jsx("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:246:17",className:"text-center py-12 text-slate-500",children:"暂无指标数据"}):e.jsx("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:248:17",className:"grid grid-cols-2 gap-4",children:t.map((s,d)=>e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:250:21",className:"p-4 rounded-lg border border-slate-700 bg-slate-800/50",children:[e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:251:23",className:"flex items-center justify-between mb-3",children:[e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:252:25",className:"flex items-center gap-2",children:[s.name.includes("CPU")&&e.jsx(ae,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:253:63",className:"h-4 w-4 text-blue-400"}),s.name.includes("内存")&&e.jsx(he,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:254:62",className:"h-4 w-4 text-emerald-400"}),s.name.includes("磁盘")&&e.jsx(z,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:255:62",className:"h-4 w-4 text-amber-400"}),s.name.includes("网络")&&e.jsx(ie,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:256:62",className:"h-4 w-4 text-purple-400"}),e.jsx("span",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:257:27",className:"font-medium text-slate-200",children:s.name})]}),e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:259:25",className:"flex items-center gap-1",children:[v(s.trend),e.jsx("span",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:261:27",className:`text-sm ${Z(s.trend)}`,children:s.trend==="up"?"上升":s.trend==="down"?"下降":"平稳"})]})]}),e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:267:23",className:"grid grid-cols-2 gap-4 mb-3",children:[e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:268:25",children:[e.jsx("p",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:269:27",className:"text-xs text-slate-500 mb-1",children:"当前值"}),e.jsxs("p",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:270:27",className:"text-lg font-bold text-slate-100",children:[s.current,s.unit]})]}),e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:275:25",children:[e.jsxs("p",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:276:27",className:"text-xs text-slate-500 mb-1",children:["预测值 (",s.timeRange,")"]}),e.jsxs("p",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:277:27",className:`text-lg font-bold ${Z(s.trend)}`,children:[s.predicted,s.unit]})]})]}),e.jsx("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:284:23",className:"flex items-center justify-between",children:e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:285:25",className:"flex items-center gap-2",children:[e.jsx("span",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:286:27",className:"text-xs text-slate-400",children:"置信度"}),e.jsx("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:287:27",className:"w-16 h-1.5 bg-slate-700 rounded-full overflow-hidden",children:e.jsx("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:288:29",className:"h-full bg-gradient-to-r from-blue-500 to-purple-500",style:{width:`${s.confidence}%`}})}),e.jsxs("span",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:293:27",className:"text-xs text-purple-400",children:[s.confidence,"%"]})]})})]},d))})})]})}),e.jsx(B,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:304:9",value:"capacity",className:"space-y-4",children:e.jsx(Pe,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:305:11",forecasts:n,loading:A})}),e.jsx(B,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:308:9",value:"anomaly",className:"space-y-4",children:e.jsxs(w,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:309:11",className:"bg-slate-800 border-slate-700",children:[e.jsx(K,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:310:13",className:"pb-3",children:e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:311:15",className:"flex items-center justify-between",children:[e.jsxs(H,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:312:17",className:"text-slate-100 flex items-center gap-2",children:[e.jsx(_,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:313:19",className:"h-5 w-5 text-red-400"}),"异常事件预测"]}),e.jsx("span",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:316:17",className:"text-xs text-slate-500",children:"基于告警规则阈值与实时趋势概率推算"})]})}),e.jsx(C,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:319:13",children:A?e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:321:17",className:"flex items-center justify-center py-12 text-slate-500",children:[e.jsx(D,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:322:19",className:"h-5 w-5 animate-spin mr-2"})," 加载异常预测..."]}):m.length===0?e.jsx("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:325:17",className:"text-center py-12 text-slate-500",children:"暂无异常预测数据"}):e.jsx("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:327:17",className:"space-y-3",children:m.map((s,d)=>e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:329:21",className:"p-4 rounded-lg border border-slate-700 bg-slate-800/50",children:[e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:330:23",className:"flex items-start justify-between",children:[e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:331:25",className:"flex items-start gap-3",children:[e.jsx("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:332:27",className:`w-10 h-10 rounded-lg flex items-center justify-center ${s.probability>=70?"bg-red-500/20":s.probability>=50?"bg-amber-500/20":"bg-blue-500/20"}`,children:e.jsx(_,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:341:29",className:`h-5 w-5 ${s.probability>=70?"text-red-400":s.probability>=50?"text-amber-400":"text-blue-400"}`})}),e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:351:27",children:[e.jsx("h4",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:352:29",className:"font-medium text-slate-200",children:s.metric}),e.jsx("p",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:353:29",className:"text-sm text-slate-400 mt-1",children:s.predictedAnomaly}),e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:354:29",className:"flex items-center gap-4 mt-2",children:[e.jsx("span",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:355:31",className:"text-xs text-slate-500",children:s.timeframe}),e.jsxs("span",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:356:31",className:"text-xs text-slate-500",children:["概率:"," ",e.jsxs("span",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:358:33",className:s.probability>=70?"text-red-400":"text-amber-400",children:[s.probability,"%"]})]})]})]})]}),e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:365:25",className:"w-16 h-16 relative shrink-0",children:[e.jsxs("svg",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:366:27",className:"w-full h-full transform -rotate-90",children:[e.jsx("circle",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:367:29",cx:"32",cy:"32",r:"28",stroke:"currentColor",strokeWidth:"4",fill:"transparent",className:"text-slate-700"}),e.jsx("circle",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:376:29",cx:"32",cy:"32",r:"28",stroke:"currentColor",strokeWidth:"4",fill:"transparent",strokeDasharray:`${s.probability*1.76} 176`,className:s.probability>=70?"text-red-400":s.probability>=50?"text-amber-400":"text-blue-400"})]}),e.jsx("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:393:27",className:"absolute inset-0 flex items-center justify-center",children:e.jsxs("span",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:394:29",className:"text-sm font-bold text-slate-200",children:[s.probability,"%"]})})]})]}),e.jsx("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:398:23",className:"mt-3 p-3 bg-slate-900 rounded-lg border border-slate-700",children:e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:399:25",className:"flex items-start gap-2",children:[e.jsx(Y,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:400:27",className:"h-4 w-4 text-emerald-400 mt-0.5"}),e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:401:27",children:[e.jsx("span",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:402:29",className:"text-sm text-slate-400",children:"建议操作:"}),e.jsx("p",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:403:29",className:"text-sm text-slate-300 mt-1",children:s.suggestedAction})]})]})})]},d))})})]})})]})]})}export{ze as AIPredictiveAnalytics}; diff --git a/backend/static/assets/AIPredictiveAnalytics-nYsWL-Qi.js b/backend/static/assets/AIPredictiveAnalytics-nYsWL-Qi.js new file mode 100644 index 0000000..48758f8 --- /dev/null +++ b/backend/static/assets/AIPredictiveAnalytics-nYsWL-Qi.js @@ -0,0 +1 @@ +import{i as G,j as e,L as U,z as Y,r as g,aI as q,B as Q,A as ee,J as se,T as $,p as te,N as ce}from"./index-Dmami9WE.js";import{C as F,b as B,c as K,a as z}from"./card-CIfC-8Rh.js";import{S as ae}from"./stat-strip-BteRU1Iu.js";import{B as Z}from"./badge-3UzCvU7L.js";import{T as ie,a as ne,b as L,c as D}from"./tabs-lV44z_UR.js";import{S as re,a as oe,b as le,c as de,d as S}from"./select-DUbxjT0z.js";import{d as pe}from"./dashboard-BHNKEvkq.js";import{s as me}from"./server-3HmnhxQB.js";import{a as H}from"./monitor-CicbJUrQ.js";import{H as J}from"./hard-drive-DmC04Y5r.js";import{Z as X}from"./zap-CocSkPPl.js";import{C as xe}from"./calendar-CxZxrJ2o.js";import{T as W}from"./trending-up-d1DKmRom.js";import{S as he}from"./sparkles-rPZivnlW.js";import{M as ye}from"./memory-stick-DvAvWvue.js";import{M as ve}from"./minus-DRP_TSA-.js";import"./index-CtCQcvyh.js";import"./chevron-up-Cq4GPopa.js";const Ae=[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"m19 9-5 5-4-4-3 3",key:"2osh9i"}]],ue=G("chart-line",Ae);const be=[["path",{d:"M16 17h6v-6",key:"t6n2it"}],["path",{d:"m22 17-8.5-8.5-5 5L2 7",key:"x473p"}]],je=G("trending-down",be);function Pe({forecasts:a,loading:i}){return e.jsxs(F,{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:14:5",className:"bg-slate-800 border-slate-700",children:[e.jsx(B,{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:15:7",className:"pb-3",children:e.jsxs("div",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:16:9",className:"flex items-center justify-between",children:[e.jsxs(K,{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:17:11",className:"text-slate-100 flex items-center gap-2",children:[e.jsx(J,{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:18:13",className:"h-5 w-5 text-amber-400"}),"容量规划预警"]}),e.jsx("span",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:21:11",className:"text-xs text-slate-500",children:"基于日均增长率推算阈值触及时间"})]})}),e.jsx(z,{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:24:7",children:i?e.jsxs("div",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:26:11",className:"flex items-center justify-center py-12 text-slate-500",children:[e.jsx(U,{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:27:13",className:"h-5 w-5 animate-spin mr-2"})," 加载容量数据..."]}):a.length===0?e.jsx("div",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:30:11",className:"text-center py-12 text-slate-500",children:"暂无容量数据"}):e.jsx("div",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:32:11",className:"space-y-4",children:a.map((c,p)=>e.jsxs("div",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:34:15",className:"p-4 rounded-lg border border-slate-700 bg-slate-800/50",children:[e.jsxs("div",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:35:17",className:"flex items-center justify-between mb-3",children:[e.jsxs("div",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:36:19",className:"flex items-center gap-2",children:[e.jsx(Y,{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:37:21",className:"h-5 w-5 text-blue-400"}),e.jsx("span",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:38:21",className:"font-medium text-slate-200",children:c.resource})]}),e.jsx(Z,{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:40:19",variant:"outline",className:c.daysUntilThreshold<=7?"border-red-500/30 text-red-400 bg-red-500/10":c.daysUntilThreshold<=14?"border-amber-500/30 text-amber-400 bg-amber-500/10":"border-emerald-500/30 text-emerald-400 bg-emerald-500/10",children:c.daysUntilThreshold<=7?"紧急":c.daysUntilThreshold<=14?"警告":"正常"})]}),e.jsxs("div",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:58:17",className:"mb-4",children:[e.jsxs("div",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:59:19",className:"flex items-center justify-between text-sm mb-1",children:[e.jsx("span",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:60:21",className:"text-slate-400",children:"7天使用率预测"}),e.jsx("span",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:61:21",className:"text-slate-400",children:c.daysUntilThreshold>=999?"增长平缓,暂无触顶风险":e.jsxs(e.Fragment,{children:["预计"," ",e.jsxs("span",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:67:27",className:"text-amber-400 font-medium",children:[c.daysUntilThreshold,"天"]})," ","后达到阈值"]})})]}),e.jsx("div",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:73:19",className:"h-3 bg-slate-700 rounded-full overflow-hidden",children:e.jsxs("div",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:74:21",className:"flex h-full",children:[e.jsx("div",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:75:23",className:"bg-blue-500",style:{width:`${c.currentUsage}%`}}),e.jsx("div",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:76:23",className:"bg-gradient-to-r from-blue-500/50 to-amber-500",style:{width:`${Math.max(0,c.predictedUsage-c.currentUsage)}%`}})]})}),e.jsxs("div",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:84:19",className:"flex items-center justify-between text-xs mt-1",children:[e.jsxs("span",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:85:21",className:"text-slate-500",children:["当前 ",c.currentUsage,"%"]}),e.jsxs("span",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:86:21",className:"text-amber-400",children:["预测 ",c.predictedUsage,"%"]}),e.jsxs("span",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:87:21",className:"text-red-400",children:["阈值 ",c.threshold,"%"]})]})]}),e.jsx("div",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:91:17",className:"p-3 bg-slate-900 rounded-lg border border-slate-700",children:e.jsxs("div",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:92:19",className:"flex items-start gap-2",children:[e.jsx(X,{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:93:21",className:"h-4 w-4 text-emerald-400 mt-0.5"}),e.jsxs("div",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:94:21",children:[e.jsx("span",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:95:23",className:"text-sm text-slate-400",children:"AI建议:"}),e.jsx("p",{"code-path":"src/components/aiops/PredictiveCapacityTab.tsx:96:23",className:"text-sm text-slate-300 mt-1",children:c.recommendation})]})]})})]},p))})})]})}const T=[{key:"cpu",label:"CPU使用率",exprKey:"cpu_usage",threshold:85},{key:"memory",label:"内存使用率",exprKey:"memory_usage",threshold:85},{key:"disk",label:"磁盘使用率",exprKey:"disk_usage",threshold:90}],ge={"1h":"1小时后","24h":"24小时后","7d":"7天后","30d":"30天后"},Ne={"1h":1,"24h":24,"7d":168,"30d":720};function _(a){const i=a.length;if(i<2)return{slope:0,r2:0};const c=a.map((r,h)=>h),p=c.reduce((r,h)=>r+h,0)/i,y=a.reduce((r,h)=>r+h,0)/i;let b=0,N=0,I=0,C=0;for(let r=0;rc.name===i).sort((c,p)=>new Date(c.timestamp).getTime()-new Date(p.timestamp).getTime()).map(c=>Number(c.value)||0)}function Ie(a){const i=a.match(/[><=]\s*([\d.]+)/);return i?parseFloat(i[1]):null}function fe(a,i){const c=i<=7?"urgent":i<=14?"warning":"normal";return{urgent:{cpu:"CPU增长趋势明显,建议尽快扩容计算资源或优化高负载进程",memory:"内存增长趋势明显,建议增加内存或排查内存泄漏",disk:"磁盘空间即将耗尽,建议立即扩容或清理历史数据与日志"},warning:{cpu:"CPU使用率呈上升趋势,建议持续监控并准备扩容计划",memory:"内存使用率呈上升趋势,建议优化应用内存使用",disk:"磁盘使用率持续增长,建议规划数据归档和清理策略"},normal:{cpu:"CPU使用正常,建议持续监控",memory:"内存使用正常,建议持续监控",disk:"磁盘空间充足,建议持续监控"}}[c]?.[a]||"建议持续监控资源使用趋势"}function O(a){return{cpu:"检查高负载进程,优化CPU密集型任务,考虑横向扩容",memory:"排查内存泄漏,优化进程内存配置,考虑增加节点",disk:"清理历史数据和日志,实施数据归档策略,扩容磁盘",service:"检查服务健康状态与依赖组件,查看服务日志",pod:"检查Pod重启原因,查看容器日志,排查OOM或健康检查失败"}[a]||"建议检查相关服务状态并持续监控"}function Ce(a){const{rawMetrics:i,serverStats:c,alertEvents:p,alertRules:y,selectedTimeRange:b}=a,N=Ne[b]||24,I=ge[b]||"24小时后",C=T.map(t=>{const n=R(i,t.key),{slope:m,r2:x}=_(n),o=t.key==="cpu"?c.avg_cpu:t.key==="memory"?c.avg_memory:c.avg_disk,l=n.length>0?n[n.length-1]:o||0;let A=l+m*N;A=Math.max(0,Math.min(100,A));const s=m>.05?"up":m<-.05?"down":"stable",d=Math.round(60+x*35);return{name:t.label,current:Math.round(l),predicted:Math.round(A),unit:"%",trend:s,confidence:d,timeRange:I}}),j=T.map(t=>{const n=R(i,t.key),{slope:m}=_(n),x=t.key==="cpu"?c.avg_cpu:t.key==="memory"?c.avg_memory:c.avg_disk,o=Math.round(n.length>0?n[n.length-1]:x||0),l=m*24,A=Math.round(Math.min(100,o+l*7)),s=t.threshold;let d=999;return l>.01&&(d=Math.round((s-o)/l),d=d<1?1:d),{resource:{cpu:"服务器CPU算力",memory:"服务器内存",disk:"存储磁盘空间"}[t.key]||t.label,metricKey:t.key,currentUsage:o,predictedUsage:A,threshold:s,daysUntilThreshold:d,recommendation:fe(t.key,d)}}).filter(t=>t.currentUsage>0),f=[];for(const t of y){if(!t.enabled)continue;const n=Ie(t.expression||""),m=(t.expression||"").toLowerCase(),x=T.find(o=>m.includes(o.exprKey));if(x&&n){const o=R(i,x.key),{slope:l}=_(o),A=x.key==="cpu"?c.avg_cpu:x.key==="memory"?c.avg_memory:c.avg_disk,s=o.length>0?o[o.length-1]:A||0,d=n>0?s/n:0;let u=Math.round(d*55);l>.05&&(u+=15);const M=p.filter(v=>v.rule_id===t.id||v.rule_name===t.name).length;u+=Math.min(20,M*3),u=Math.max(5,Math.min(90,u));let P="未来24小时";if(l>.01&&n>s){const v=(n-s)/l;v<4?P="未来4小时":v<12?P="未来12小时":v<24?P="未来24小时":P=`未来${Math.ceil(v/24)}天`}f.push({metric:t.name,predictedAnomaly:t.description||`${t.name}可能触发`,probability:u,timeframe:P,suggestedAction:O(x.key)})}else{const o=p.filter(l=>l.rule_id===t.id||l.rule_name===t.name).length;if(o>0){const l=m.includes("service")?"service":m.includes("pod")?"pod":"service";f.push({metric:t.name,predictedAnomaly:t.description||`${t.name}可能再次发生`,probability:Math.min(60,20+o*5),timeframe:"未来24小时",suggestedAction:O(l)})}}}const w=f.sort((t,n)=>n.probability-t.probability).filter((t,n,m)=>m.findIndex(x=>x.metric===t.metric)===n),r=T.length>0?T.reduce((t,n)=>t+_(R(i,n.key)).r2,0)/T.length:0,h=Math.round(78+r*17),k=w.filter(t=>t.probability>=50).length,E=j.filter(t=>t.daysUntilThreshold<=14).length;return{predictions:C,capacityForecasts:j,dedupedAnomalies:w,accuracy:h,predictedAlertCount:k,capacityWarningCount:E}}function V(a){switch(a){case"up":return"text-red-400";case"down":return"text-emerald-400";default:return"text-slate-400"}}function Oe(){const[a,i]=g.useState("24h"),[c,p]=g.useState(!1),[y,b]=g.useState(!0),[N,I]=g.useState([]),[C,j]=g.useState({}),[f,w]=g.useState([]),[r,h]=g.useState([]);g.useEffect(()=>{k()},[]);const k=async()=>{b(!0);try{const[s,d,u,M]=await Promise.all([pe.getMetrics(72),me.getServerStats(),H.getAlerts({page:1,page_size:100}),H.getRules()]);I(Array.isArray(s)?s:[]),j(d||{});const P=u?.list||u||[];w(Array.isArray(P)?P:[]);const v=M?.list||M||[];h(Array.isArray(v)?v:[])}catch{}finally{b(!1)}},E=async()=>{p(!0),await k(),p(!1)},{predictions:t,capacityForecasts:n,dedupedAnomalies:m,accuracy:x,predictedAlertCount:o,capacityWarningCount:l}=Ce({rawMetrics:N,serverStats:C,alertEvents:f,alertRules:r,selectedTimeRange:a}),A=s=>{switch(s){case"up":return e.jsx(W,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:100:16",className:"h-4 w-4 text-red-400"});case"down":return e.jsx(je,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:102:16",className:"h-4 w-4 text-emerald-400"});default:return e.jsx(ve,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:104:16",className:"h-4 w-4 text-slate-400"})}};return e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:109:5",className:"space-y-6",children:[e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:111:7",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:112:9",className:"flex items-center gap-3",children:[e.jsx("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:113:11",className:"w-10 h-10 rounded-lg bg-gradient-to-br from-indigo-500 to-purple-500 flex items-center justify-center",children:e.jsx(q,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:114:13",className:"h-5 w-5 text-white"})}),e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:116:11",children:[e.jsx("h1",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:117:13",className:"text-2xl font-bold text-slate-100",children:"AI 预测分析"}),e.jsx("p",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:118:13",className:"text-sm text-slate-500",children:"基于实时指标时序数据的线性回归预测与容量规划"})]})]}),e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:121:9",className:"flex items-center gap-2",children:[e.jsxs(re,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:122:11",value:a,onValueChange:i,children:[e.jsxs(oe,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:123:13",className:"w-32 bg-slate-800 border-slate-700 text-slate-100",children:[e.jsx(xe,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:124:15",className:"h-4 w-4 mr-2"}),e.jsx(le,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:125:15"})]}),e.jsxs(de,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:127:13",className:"bg-slate-800 border-slate-700",children:[e.jsx(S,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:128:15",value:"1h",children:"1小时"}),e.jsx(S,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:129:15",value:"24h",children:"24小时"}),e.jsx(S,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:130:15",value:"7d",children:"7天"}),e.jsx(S,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:131:15",value:"30d",children:"30天"})]})]}),e.jsx(Q,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:134:11",variant:"outline",className:"border-slate-700 text-slate-300",onClick:E,children:c||y?e.jsx(U,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:135:39",className:"h-4 w-4 animate-spin"}):e.jsx(ee,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:135:86",className:"h-4 w-4"})})]})]}),e.jsx(ae,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:141:7",items:[{label:"置信度",value:`${x}%`,color:"emerald"},{label:"高风险",value:o,color:"amber"},{label:"容量预警",value:l,color:"red"},{label:"指标",value:t.length,color:"purple"}]}),e.jsxs(ie,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:150:7",defaultValue:"metrics",className:"space-y-4",children:[e.jsxs(ne,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:151:9",className:"bg-slate-800 border border-slate-700",children:[e.jsxs(L,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:152:11",value:"metrics",className:"data-[state=active]:bg-slate-700",children:[e.jsx(ue,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:153:13",className:"h-4 w-4 mr-2"}),"指标预测"]}),e.jsxs(L,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:156:11",value:"capacity",className:"data-[state=active]:bg-slate-700",children:[e.jsx(se,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:157:13",className:"h-4 w-4 mr-2"}),"容量规划"]}),e.jsxs(L,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:160:11",value:"anomaly",className:"data-[state=active]:bg-slate-700",children:[e.jsx($,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:161:13",className:"h-4 w-4 mr-2"}),"异常预测"]})]}),e.jsx(D,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:166:9",value:"metrics",className:"space-y-4",children:e.jsxs(F,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:167:11",className:"bg-slate-800 border-slate-700",children:[e.jsx(B,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:168:13",className:"pb-3",children:e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:169:15",className:"flex items-center justify-between",children:[e.jsxs(K,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:170:17",className:"text-slate-100 flex items-center gap-2",children:[e.jsx(W,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:171:19",className:"h-5 w-5 text-blue-400"}),"关键指标预测"]}),e.jsxs(Z,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:174:17",variant:"outline",className:"border-purple-500/30 text-purple-400 bg-purple-500/10",children:[e.jsx(he,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:175:19",className:"h-3 w-3 mr-1"}),"线性回归预测"]})]})}),e.jsx(z,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:180:13",children:y?e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:182:17",className:"flex items-center justify-center py-12 text-slate-500",children:[e.jsx(U,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:183:19",className:"h-5 w-5 animate-spin mr-2"})," 加载指标数据..."]}):t.length===0?e.jsx("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:186:17",className:"text-center py-12 text-slate-500",children:"暂无指标数据"}):e.jsx("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:188:17",className:"grid grid-cols-2 gap-4",children:t.map((s,d)=>e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:190:21",className:"p-4 rounded-lg border border-slate-700 bg-slate-800/50",children:[e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:191:23",className:"flex items-center justify-between mb-3",children:[e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:192:25",className:"flex items-center gap-2",children:[s.name.includes("CPU")&&e.jsx(te,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:193:63",className:"h-4 w-4 text-blue-400"}),s.name.includes("内存")&&e.jsx(ye,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:194:62",className:"h-4 w-4 text-emerald-400"}),s.name.includes("磁盘")&&e.jsx(J,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:195:62",className:"h-4 w-4 text-amber-400"}),s.name.includes("网络")&&e.jsx(ce,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:196:62",className:"h-4 w-4 text-purple-400"}),e.jsx("span",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:197:27",className:"font-medium text-slate-200",children:s.name})]}),e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:199:25",className:"flex items-center gap-1",children:[A(s.trend),e.jsx("span",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:201:27",className:`text-sm ${V(s.trend)}`,children:s.trend==="up"?"上升":s.trend==="down"?"下降":"平稳"})]})]}),e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:207:23",className:"grid grid-cols-2 gap-4 mb-3",children:[e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:208:25",children:[e.jsx("p",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:209:27",className:"text-xs text-slate-500 mb-1",children:"当前值"}),e.jsxs("p",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:210:27",className:"text-lg font-bold text-slate-100",children:[s.current,s.unit]})]}),e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:215:25",children:[e.jsxs("p",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:216:27",className:"text-xs text-slate-500 mb-1",children:["预测值 (",s.timeRange,")"]}),e.jsxs("p",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:217:27",className:`text-lg font-bold ${V(s.trend)}`,children:[s.predicted,s.unit]})]})]}),e.jsx("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:224:23",className:"flex items-center justify-between",children:e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:225:25",className:"flex items-center gap-2",children:[e.jsx("span",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:226:27",className:"text-xs text-slate-400",children:"置信度"}),e.jsx("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:227:27",className:"w-16 h-1.5 bg-slate-700 rounded-full overflow-hidden",children:e.jsx("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:228:29",className:"h-full bg-gradient-to-r from-blue-500 to-purple-500",style:{width:`${s.confidence}%`}})}),e.jsxs("span",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:233:27",className:"text-xs text-purple-400",children:[s.confidence,"%"]})]})})]},d))})})]})}),e.jsx(D,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:244:9",value:"capacity",className:"space-y-4",children:e.jsx(Pe,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:245:11",forecasts:n,loading:y})}),e.jsx(D,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:248:9",value:"anomaly",className:"space-y-4",children:e.jsxs(F,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:249:11",className:"bg-slate-800 border-slate-700",children:[e.jsx(B,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:250:13",className:"pb-3",children:e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:251:15",className:"flex items-center justify-between",children:[e.jsxs(K,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:252:17",className:"text-slate-100 flex items-center gap-2",children:[e.jsx($,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:253:19",className:"h-5 w-5 text-red-400"}),"异常事件预测"]}),e.jsx("span",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:256:17",className:"text-xs text-slate-500",children:"基于告警规则阈值与实时趋势概率推算"})]})}),e.jsx(z,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:259:13",children:y?e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:261:17",className:"flex items-center justify-center py-12 text-slate-500",children:[e.jsx(U,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:262:19",className:"h-5 w-5 animate-spin mr-2"})," 加载异常预测..."]}):m.length===0?e.jsx("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:265:17",className:"text-center py-12 text-slate-500",children:"暂无异常预测数据"}):e.jsx("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:267:17",className:"space-y-3",children:m.map((s,d)=>e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:269:21",className:"p-4 rounded-lg border border-slate-700 bg-slate-800/50",children:[e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:270:23",className:"flex items-start justify-between",children:[e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:271:25",className:"flex items-start gap-3",children:[e.jsx("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:272:27",className:`w-10 h-10 rounded-lg flex items-center justify-center ${s.probability>=70?"bg-red-500/20":s.probability>=50?"bg-amber-500/20":"bg-blue-500/20"}`,children:e.jsx($,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:281:29",className:`h-5 w-5 ${s.probability>=70?"text-red-400":s.probability>=50?"text-amber-400":"text-blue-400"}`})}),e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:291:27",children:[e.jsx("h4",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:292:29",className:"font-medium text-slate-200",children:s.metric}),e.jsx("p",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:293:29",className:"text-sm text-slate-400 mt-1",children:s.predictedAnomaly}),e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:294:29",className:"flex items-center gap-4 mt-2",children:[e.jsx("span",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:295:31",className:"text-xs text-slate-500",children:s.timeframe}),e.jsxs("span",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:296:31",className:"text-xs text-slate-500",children:["概率:"," ",e.jsxs("span",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:298:33",className:s.probability>=70?"text-red-400":"text-amber-400",children:[s.probability,"%"]})]})]})]})]}),e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:305:25",className:"w-16 h-16 relative shrink-0",children:[e.jsxs("svg",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:306:27",className:"w-full h-full transform -rotate-90",children:[e.jsx("circle",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:307:29",cx:"32",cy:"32",r:"28",stroke:"currentColor",strokeWidth:"4",fill:"transparent",className:"text-slate-700"}),e.jsx("circle",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:316:29",cx:"32",cy:"32",r:"28",stroke:"currentColor",strokeWidth:"4",fill:"transparent",strokeDasharray:`${s.probability*1.76} 176`,className:s.probability>=70?"text-red-400":s.probability>=50?"text-amber-400":"text-blue-400"})]}),e.jsx("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:333:27",className:"absolute inset-0 flex items-center justify-center",children:e.jsxs("span",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:334:29",className:"text-sm font-bold text-slate-200",children:[s.probability,"%"]})})]})]}),e.jsx("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:338:23",className:"mt-3 p-3 bg-slate-900 rounded-lg border border-slate-700",children:e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:339:25",className:"flex items-start gap-2",children:[e.jsx(X,{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:340:27",className:"h-4 w-4 text-emerald-400 mt-0.5"}),e.jsxs("div",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:341:27",children:[e.jsx("span",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:342:29",className:"text-sm text-slate-400",children:"建议操作:"}),e.jsx("p",{"code-path":"src/components/aiops/AIPredictiveAnalytics.tsx:343:29",className:"text-sm text-slate-300 mt-1",children:s.suggestedAction})]})]})})]},d))})})]})})]})]})}export{Oe as AIPredictiveAnalytics}; diff --git a/backend/static/assets/AlertCenter-C3WMw6jA.js b/backend/static/assets/AlertCenter-C3WMw6jA.js deleted file mode 100644 index 068f131..0000000 --- a/backend/static/assets/AlertCenter-C3WMw6jA.js +++ /dev/null @@ -1 +0,0 @@ -import{g as Qe,j as e,w as Ze,T as te,$ as De,a3 as re,a8 as Xe,D as q,b as B,c as P,d as U,e as V,f as le,B as a,a9 as be,n as Ke,r as o,I as T,a as Ye,S as et,U as tt,a7 as rt}from"./index-DfyorCky.js";import{B as u}from"./badge-xNW8x0G1.js";import{C as y,a as w,b as Ne,c as ye}from"./card-C55cvSHg.js";import{S as ne,a as se,b as oe,c as ce,d as v}from"./select-D5qUzdAs.js";import{T as nt,a as st,b as M,c as F}from"./tabs-CIh_yD4s.js";import{S as ot}from"./switch-CGiGgOnh.js";import{t as m}from"./index-a3ybMjbR.js";import{a as D,b as z}from"./monitor-BAaBXIsC.js";import{a as K}from"./agent-DqqIRCQX.js";import{Z as ke}from"./zap-D2uWSK32.js";import{L as h}from"./label-BK0h2apY.js";import{A as ct}from"./AlertRuleDialog-DnF-_Zoj.js";import{T as at}from"./textarea-NXY8u32k.js";import{R as Y}from"./refresh-cw-DUB_tAG-.js";import{P as ee}from"./plus-CUG-9kpu.js";import"./index-CWVNW_qu.js";import"./message-square-DyxabBvb.js";import"./phone-DgvWDdJl.js";const lt=[["path",{d:"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z",key:"uqj9uw"}],["line",{x1:"22",x2:"16",y1:"9",y2:"15",key:"1ewh16"}],["line",{x1:"16",x2:"22",y1:"9",y2:"15",key:"5ykzw1"}]],Se=Qe("volume-x",lt);function it(r){return{id:String(r.id),title:r.rule_name||r.title||`告警 #${r.id}`,description:r.message||r.description||"",severity:r.severity||"info",status:r.status||"firing",source:r.target||r.source||"",service:r.service||"",metric:r.metric||"",value:r.value||0,threshold:r.threshold||0,startedAt:r.started_at||r.startedAt||r.created_at||new Date().toISOString(),resolvedAt:r.resolved_at||r.resolvedAt,labels:typeof r.labels=="string"?(()=>{try{return JSON.parse(r.labels||"{}")}catch{return{}}})():r.labels||{},annotations:typeof r.annotations=="string"?(()=>{try{return JSON.parse(r.annotations||"{}")}catch{return{}}})():r.annotations||{}}}function ae(r){switch(r){case"critical":return e.jsxs(u,{"code-path":"src/components/monitor/alert-center/alert-center-helpers.tsx:106:14",variant:"destructive",className:"gap-1",children:[e.jsx(De,{"code-path":"src/components/monitor/alert-center/alert-center-helpers.tsx:106:61",className:"w-3 h-3"}),"严重"]});case"warning":return e.jsxs(u,{"code-path":"src/components/monitor/alert-center/alert-center-helpers.tsx:108:14",variant:"default",className:"bg-orange-500 gap-1",children:[e.jsx(te,{"code-path":"src/components/monitor/alert-center/alert-center-helpers.tsx:108:71",className:"w-3 h-3"}),"警告"]});case"info":return e.jsxs(u,{"code-path":"src/components/monitor/alert-center/alert-center-helpers.tsx:110:14",variant:"default",className:"bg-blue-500 gap-1",children:[e.jsx(Ze,{"code-path":"src/components/monitor/alert-center/alert-center-helpers.tsx:110:69",className:"w-3 h-3"}),"信息"]});default:return e.jsx(u,{"code-path":"src/components/monitor/alert-center/alert-center-helpers.tsx:112:14",variant:"secondary",children:"未知"})}}function mt(r){switch(r){case"firing":return e.jsxs(u,{"code-path":"src/components/monitor/alert-center/alert-center-helpers.tsx:120:14",variant:"destructive",className:"gap-1 animate-pulse",children:[e.jsx(ke,{"code-path":"src/components/monitor/alert-center/alert-center-helpers.tsx:120:75",className:"w-3 h-3"}),"触发中"]});case"acknowledged":return e.jsxs(u,{"code-path":"src/components/monitor/alert-center/alert-center-helpers.tsx:122:14",variant:"default",className:"bg-yellow-500 gap-1",children:[e.jsx(Xe,{"code-path":"src/components/monitor/alert-center/alert-center-helpers.tsx:122:71",className:"w-3 h-3"}),"已确认"]});case"resolved":return e.jsxs(u,{"code-path":"src/components/monitor/alert-center/alert-center-helpers.tsx:124:14",variant:"default",className:"bg-green-500 gap-1",children:[e.jsx(re,{"code-path":"src/components/monitor/alert-center/alert-center-helpers.tsx:124:70",className:"w-3 h-3"}),"已解决"]});case"suppressed":return e.jsxs(u,{"code-path":"src/components/monitor/alert-center/alert-center-helpers.tsx:126:14",variant:"secondary",className:"gap-1",children:[e.jsx(Se,{"code-path":"src/components/monitor/alert-center/alert-center-helpers.tsx:126:59",className:"w-3 h-3"}),"已静默"]});default:return e.jsx(u,{"code-path":"src/components/monitor/alert-center/alert-center-helpers.tsx:128:14",variant:"secondary",children:"未知"})}}function dt(r){return{dingtalk:"钉钉",wechat:"企业微信",feishu:"飞书",email:"邮件",sms:"短信",webhook:"Webhook"}[r]||r}function pt({alert:r,open:C,onOpenChange:c,onAcknowledge:A}){return e.jsx(q,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:22:5",open:C,onOpenChange:c,children:e.jsxs(B,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:23:7",className:"max-w-3xl",children:[e.jsxs(P,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:24:9",children:[e.jsxs(U,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:25:11",className:"flex items-center gap-2",children:[r?.title,r&&ae(r.severity)]}),e.jsx(V,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:29:11",className:"sr-only",children:"查看告警详情"})]}),r&&e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:32:11",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:33:13",children:[e.jsx(h,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:34:15",className:"text-muted-foreground",children:"描述"}),e.jsx("p",{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:35:15",className:"mt-1",children:r.description})]}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:37:13",className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:38:15",children:[e.jsx(h,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:39:17",className:"text-muted-foreground",children:"来源"}),e.jsx("p",{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:40:17",className:"font-medium",children:r.source})]}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:42:15",children:[e.jsx(h,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:43:17",className:"text-muted-foreground",children:"服务"}),e.jsx("p",{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:44:17",className:"font-medium",children:r.service})]}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:46:15",children:[e.jsx(h,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:47:17",className:"text-muted-foreground",children:"指标"}),e.jsx("p",{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:48:17",className:"font-medium",children:r.metric})]}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:50:15",children:[e.jsx(h,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:51:17",className:"text-muted-foreground",children:"当前值 / 阈值"}),e.jsxs("p",{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:52:17",className:"font-medium",children:[r.value," / ",r.threshold]})]}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:54:15",children:[e.jsx(h,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:55:17",className:"text-muted-foreground",children:"开始时间"}),e.jsx("p",{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:56:17",className:"font-medium",children:r.startedAt})]}),r.resolvedAt&&e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:59:17",children:[e.jsx(h,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:60:19",className:"text-muted-foreground",children:"解决时间"}),e.jsx("p",{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:61:19",className:"font-medium",children:r.resolvedAt})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:65:13",children:[e.jsx(h,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:66:15",className:"text-muted-foreground",children:"标签"}),e.jsx("div",{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:67:15",className:"flex flex-wrap gap-2 mt-1",children:Object.entries(r.labels).map(([j,x])=>e.jsxs(u,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:69:19",variant:"outline",children:[j,"=",x]},j))})]}),r.runbookUrl&&e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:74:15",children:[e.jsx(h,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:75:17",className:"text-muted-foreground",children:"处理手册"}),e.jsx("a",{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:76:17",href:r.runbookUrl,target:"_blank",rel:"noopener noreferrer",className:"text-blue-500 hover:underline block mt-1",children:"查看处理手册 →"})]})]}),e.jsxs(le,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:83:9",children:[e.jsx(a,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:84:11",variant:"outline",onClick:()=>c(!1),children:"关闭"}),r?.status==="firing"&&e.jsxs(a,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:86:13",onClick:()=>{A(r.id),c(!1)},children:[e.jsx(be,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:87:15",className:"w-4 h-4 mr-2"}),"确认告警"]})]})]})})}function xt({alert:r,open:C,onOpenChange:c,onSilence:A}){return e.jsx(q,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:109:5",open:C,onOpenChange:c,children:e.jsxs(B,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:110:7",children:[e.jsxs(P,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:111:9",children:[e.jsx(U,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:112:11",children:"静默告警"}),e.jsx(V,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:113:11",children:"选择静默持续时间"})]}),e.jsx("div",{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:115:9",className:"space-y-2",children:["1h","4h","8h","24h","7d"].map(j=>e.jsxs(a,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:117:13",variant:"outline",className:"w-full justify-between",onClick:()=>r&&A(r.id,j),children:[e.jsxs("span",{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:123:15",children:["静默 ",j]}),e.jsx(Ke,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:124:15",className:"w-4 h-4"})]},j))})]})})}const we=[{value:"feishu",label:"飞书",placeholder:"https://open.feishu.cn/open-apis/bot/v2/hook/..."},{value:"dingtalk",label:"钉钉",placeholder:"https://oapi.dingtalk.com/robot/send?access_token=..."},{value:"wechat",label:"企业微信",placeholder:"https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=..."},{value:"webhook",label:"自定义Webhook",placeholder:"https://your-webhook-url..."}];function ht({open:r,onOpenChange:C,editingContact:c,onSaved:A}){const[j,x]=o.useState("feishu"),[i,g]=o.useState({name:"",phone:"",email:"",webhook_url:""}),[b,f]=o.useState(!1);o.useEffect(()=>{r&&(c?(x(c.channel_type||"feishu"),g({name:c.name||"",phone:c.phone||"",email:c.email||"",webhook_url:c.webhook_url||""})):(x("feishu"),g({name:"",phone:"",email:"",webhook_url:""})))},[r,c]);const G=async()=>{if(!(!i.name.trim()||!i.webhook_url.trim())){f(!0);try{const d={name:i.name.trim(),phone:i.phone.trim()||void 0,email:i.email.trim()||void 0,channel_type:j,webhook_url:i.webhook_url.trim()};c?(await D.updateContact(c.id,d),m.success("联系人已更新")):(await D.createContact(d),m.success("联系人已添加")),C(!1),A()}catch{m.error("保存失败")}finally{f(!1)}}},l=we.find(d=>d.value===j);return e.jsx(q,{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:85:5",open:r,onOpenChange:C,children:e.jsxs(B,{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:86:7",children:[e.jsxs(P,{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:87:9",children:[e.jsx(U,{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:88:11",children:c?"编辑报警联系人":"添加报警联系人"}),e.jsx(V,{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:89:11",children:"选择通知渠道并填入 Webhook 地址"})]}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:91:9",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:92:11",className:"space-y-2",children:[e.jsx(h,{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:93:13",children:"姓名 *"}),e.jsx(T,{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:94:13",value:i.name,onChange:d=>g({...i,name:d.target.value}),placeholder:"如:张三"})]}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:100:11",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:101:13",className:"space-y-2",children:[e.jsx(h,{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:102:15",children:"手机号"}),e.jsx(T,{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:103:15",value:i.phone,onChange:d=>g({...i,phone:d.target.value}),placeholder:"13800138000"})]}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:109:13",className:"space-y-2",children:[e.jsx(h,{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:110:15",children:"邮箱"}),e.jsx(T,{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:111:15",value:i.email,onChange:d=>g({...i,email:d.target.value}),placeholder:"zhangsan@example.com"})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:118:11",className:"space-y-2",children:[e.jsx(h,{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:119:13",children:"渠道类型 *"}),e.jsxs(ne,{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:120:13",value:j,onValueChange:x,children:[e.jsx(se,{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:121:15",children:e.jsx(oe,{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:122:17",placeholder:"选择渠道类型"})}),e.jsx(ce,{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:124:15",children:we.map(d=>e.jsx(v,{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:126:19",value:d.value,children:d.label},d.value))})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:131:11",className:"space-y-2",children:[e.jsx(h,{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:132:13",children:"Webhook URL *"}),e.jsx(T,{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:133:13",value:i.webhook_url,onChange:d=>g({...i,webhook_url:d.target.value}),placeholder:l?.placeholder||"https://...",className:"font-mono text-xs"})]})]}),e.jsxs(le,{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:141:9",children:[e.jsx(a,{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:142:11",variant:"outline",onClick:()=>C(!1),children:"取消"}),e.jsx(a,{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:143:11",onClick:G,disabled:!i.name.trim()||!i.webhook_url.trim()||b,children:b?"保存中...":c?"保存修改":"添加联系人"})]})]})})}function ut({open:r,onOpenChange:C,editingGroup:c,contacts:A,onSaved:j}){const[x,i]=o.useState({group_name:"",notes:"",contact_ids:[]}),[g,b]=o.useState(!1);o.useEffect(()=>{if(r)if(c){let l=[];try{l=JSON.parse(c.contact_ids||"[]")}catch{}i({group_name:c.group_name||"",notes:c.notes||"",contact_ids:l})}else i({group_name:"",notes:"",contact_ids:[]})},[r,c]);const f=l=>{i(d=>({...d,contact_ids:d.contact_ids.includes(l)?d.contact_ids.filter(S=>S!==l):[...d.contact_ids,l]}))},G=async()=>{if(x.group_name.trim()){b(!0);try{const l={group_name:x.group_name.trim(),notes:x.notes.trim()||void 0,contact_ids:x.contact_ids};c?(await D.updateContactGroup(c.id,l),m.success("联系组已更新")):(await D.createContactGroup(l),m.success("联系组已添加")),C(!1),j()}catch{m.error("保存失败")}finally{b(!1)}}};return e.jsx(q,{"code-path":"src/components/monitor/alert-center/ContactGroupDialog.tsx:84:5",open:r,onOpenChange:C,children:e.jsxs(B,{"code-path":"src/components/monitor/alert-center/ContactGroupDialog.tsx:85:7",children:[e.jsxs(P,{"code-path":"src/components/monitor/alert-center/ContactGroupDialog.tsx:86:9",children:[e.jsx(U,{"code-path":"src/components/monitor/alert-center/ContactGroupDialog.tsx:87:11",children:c?"编辑报警联系组":"添加报警联系组"}),e.jsx(V,{"code-path":"src/components/monitor/alert-center/ContactGroupDialog.tsx:88:11",children:"配置报警联系组,选择组内成员"})]}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/ContactGroupDialog.tsx:90:9",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/monitor/alert-center/ContactGroupDialog.tsx:91:11",className:"space-y-2",children:[e.jsx(h,{"code-path":"src/components/monitor/alert-center/ContactGroupDialog.tsx:92:13",children:"组名称 *"}),e.jsx(T,{"code-path":"src/components/monitor/alert-center/ContactGroupDialog.tsx:93:13",value:x.group_name,onChange:l=>i({...x,group_name:l.target.value}),placeholder:"如:运维值班组"})]}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/ContactGroupDialog.tsx:99:11",className:"space-y-2",children:[e.jsx(h,{"code-path":"src/components/monitor/alert-center/ContactGroupDialog.tsx:100:13",children:"备注"}),e.jsx(at,{"code-path":"src/components/monitor/alert-center/ContactGroupDialog.tsx:101:13",value:x.notes,onChange:l=>i({...x,notes:l.target.value}),placeholder:"如:周一至周五 9:00-21:00",rows:2})]}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/ContactGroupDialog.tsx:108:11",className:"space-y-2",children:[e.jsx(h,{"code-path":"src/components/monitor/alert-center/ContactGroupDialog.tsx:109:13",children:"选择联系人"}),A.length===0?e.jsx("p",{"code-path":"src/components/monitor/alert-center/ContactGroupDialog.tsx:111:15",className:"text-xs text-muted-foreground",children:"暂无联系人,请先在「报警联系人」标签页添加"}):e.jsx("div",{"code-path":"src/components/monitor/alert-center/ContactGroupDialog.tsx:113:15",className:"flex flex-wrap gap-1.5 max-h-[180px] overflow-y-auto border rounded-md p-2",children:A.map(l=>e.jsxs(u,{"code-path":"src/components/monitor/alert-center/ContactGroupDialog.tsx:115:19",variant:x.contact_ids.includes(l.id)?"default":"outline",className:"cursor-pointer text-xs",onClick:()=>f(l.id),children:[l.name,x.contact_ids.includes(l.id)&&" ✓"]},l.id))}),x.contact_ids.length>0&&e.jsxs("p",{"code-path":"src/components/monitor/alert-center/ContactGroupDialog.tsx:128:15",className:"text-xs text-muted-foreground",children:["已选择 ",x.contact_ids.length," 位联系人"]})]})]}),e.jsxs(le,{"code-path":"src/components/monitor/alert-center/ContactGroupDialog.tsx:132:9",children:[e.jsx(a,{"code-path":"src/components/monitor/alert-center/ContactGroupDialog.tsx:133:11",variant:"outline",onClick:()=>C(!1),children:"取消"}),e.jsx(a,{"code-path":"src/components/monitor/alert-center/ContactGroupDialog.tsx:134:11",onClick:G,disabled:!x.group_name.trim()||g,children:g?"保存中...":c?"保存修改":"添加联系组"})]})]})})}const zt=()=>{const r=Ye(),[C,c]=o.useState([]),[A,j]=o.useState([]),[x,i]=o.useState(!1),[g,b]=o.useState(""),[f,G]=o.useState("all"),[l,d]=o.useState("all"),[S,_e]=o.useState("alerts"),[ie,me]=o.useState(null),[Te,de]=o.useState(!1),[Ge,W]=o.useState(!1),[N,Oe]=o.useState({firing:0,critical:0,warning:0,resolved:0}),[Re,J]=o.useState(!1),[ze,H]=o.useState(null),[pe,xe]=o.useState(!1),[L,Le]=o.useState([]),[he,Ee]=o.useState([]),[$e,Q]=o.useState(!1),[Ie,ue]=o.useState(null),[Me,Z]=o.useState(!1),[Fe,Ce]=o.useState(null),[k,E]=o.useState(1),[je]=o.useState(10),[X,qe]=o.useState(0),_=Math.max(1,Math.ceil(X/je));o.useEffect(()=>{ge(),S==="contacts"&&$(),S==="groups"&&($(),I());const t=setInterval(ge,3e4);return()=>clearInterval(t)},[k,f,l,S]);const ge=async()=>{await Promise.all([O(),R()])},O=async()=>{i(!0);try{const t=await z.getAlerts({page:k,page_size:je,severity:f!=="all"?f:void 0,status:l!=="all"?l:void 0}),s=(t.list||t.data?.list||[]).map(it);c(s),qe(t.total||t.data?.total||s.length),Oe({firing:s.filter(p=>p.status==="firing").length,critical:s.filter(p=>p.severity==="critical"&&p.status==="firing").length,warning:s.filter(p=>p.severity==="warning"&&p.status==="firing").length,resolved:s.filter(p=>p.status==="resolved").length})}catch{m.error("获取告警失败")}finally{i(!1)}},R=async()=>{try{const t=await K.listRules(),n=Array.isArray(t)?t:t.list||[];j(n.map(s=>({id:s.id,name:s.name,description:`${s.metric} ${s.operator} ${s.threshold}%`,enabled:s.enabled,severity:"warning",type:s.metric,hostname:s.hostname||"全部主机",threshold:s.threshold})))}catch{m.error("获取告警规则失败")}},$=async()=>{try{const t=await D.getContacts();Le(t?.data?.list||t?.list||[])}catch{}},I=async()=>{try{const t=await D.getContactGroups();Ee(t?.data?.list||t?.list||[])}catch{}},Ae=async t=>{try{await z.acknowledge(t),m.success("告警已确认"),O()}catch{m.error("操作失败")}},Be=async t=>{try{await z.resolve(t),m.success("告警已解决"),O()}catch{m.error("操作失败")}},Pe=async(t,n)=>{try{await z.silence(t,n),m.success("告警已静默"),W(!1),O()}catch{m.error("操作失败")}},Ue=async(t,n)=>{try{await K.updateRule(Number(t),{enabled:n}),j(A.map(s=>String(s.id)===t?{...s,enabled:n}:s)),m.success("规则状态已更新")}catch{m.error("更新失败")}},Ve=()=>{H(null),J(!0)},We=t=>{H(t),J(!0)},fe=()=>{J(!1),H(null)},Je=async()=>{if(await r({title:"一键报警",description:"为 Agent 在线主机创建 CPU(>80%)/内存(>80%)/磁盘(>90%)/TIME_WAIT(>15000)/CLOSE_WAIT(>200)/进程检测 6 条告警规则。",confirmText:"确认创建"})){xe(!0);try{const n=await z.quickSetup("ecs");m.success(typeof n=="string"?n:n?.message||"默认告警规则创建成功"),R()}catch{m.error("创建失败,请检查 Agent 主机是否在线")}finally{xe(!1)}}},He=async t=>{if(await r({title:"删除规则",description:`确定删除规则「${t.name}」?`,confirmText:"删除",variant:"destructive"}))try{await K.deleteRule(Number(t.id)),m.success("已删除"),R()}catch{m.error("删除失败")}},ve=(t,n)=>{t==="severity"?G(n):d(n),E(1)};return e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:207:5",className:"space-y-3",children:[e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:209:7",className:"grid grid-cols-4 gap-3",children:[e.jsx(y,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:210:9",className:N.firing>0?"border-red-500 border-2":"",children:e.jsx(w,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:211:11",className:"p-3",children:e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:212:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:213:15",children:[e.jsx("p",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:214:17",className:"text-xs text-muted-foreground",children:"触发中"}),e.jsx("p",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:215:17",className:`text-xl font-bold ${N.firing>0?"text-red-600":""}`,children:N.firing})]}),e.jsx("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:217:15",className:`p-2 rounded-md ${N.firing>0?"bg-red-100":"bg-gray-100"}`,children:e.jsx(ke,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:218:17",className:`w-4 h-4 ${N.firing>0?"text-red-600":"text-gray-600"}`})})]})})}),e.jsx(y,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:223:9",children:e.jsx(w,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:224:11",className:"p-3",children:e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:225:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:226:15",children:[e.jsx("p",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:227:17",className:"text-xs text-muted-foreground",children:"严重告警"}),e.jsx("p",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:228:17",className:"text-xl font-bold text-red-600",children:N.critical})]}),e.jsx("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:230:15",className:"p-2 bg-red-100 rounded-md",children:e.jsx(De,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:231:17",className:"w-4 h-4 text-red-600"})})]})})}),e.jsx(y,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:236:9",children:e.jsx(w,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:237:11",className:"p-3",children:e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:238:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:239:15",children:[e.jsx("p",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:240:17",className:"text-xs text-muted-foreground",children:"警告告警"}),e.jsx("p",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:241:17",className:"text-xl font-bold text-orange-600",children:N.warning})]}),e.jsx("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:243:15",className:"p-2 bg-orange-100 rounded-md",children:e.jsx(te,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:244:17",className:"w-4 h-4 text-orange-600"})})]})})}),e.jsx(y,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:249:9",children:e.jsx(w,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:250:11",className:"p-3",children:e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:251:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:252:15",children:[e.jsx("p",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:253:17",className:"text-xs text-muted-foreground",children:"今日已解决"}),e.jsx("p",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:254:17",className:"text-xl font-bold text-green-600",children:N.resolved})]}),e.jsx("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:256:15",className:"p-2 bg-green-100 rounded-md",children:e.jsx(re,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:257:17",className:"w-4 h-4 text-green-600"})})]})})})]}),e.jsxs(nt,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:264:7",value:S,onValueChange:_e,children:[e.jsxs(st,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:265:9",className:"grid w-full grid-cols-4 lg:w-[480px] h-9",children:[e.jsx(M,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:266:11",value:"alerts",className:"text-xs",children:"告警列表"}),e.jsx(M,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:267:11",value:"rules",className:"text-xs",children:"告警规则"}),e.jsx(M,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:268:11",value:"contacts",className:"text-xs",children:"报警联系人"}),e.jsx(M,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:269:11",value:"groups",className:"text-xs",children:"报警联系组"})]}),e.jsxs(F,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:273:9",value:"alerts",className:"space-y-3",children:[e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:274:11",className:"flex flex-wrap items-center justify-between gap-2",children:[e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:275:13",className:"flex items-center gap-2 flex-1 min-w-[280px]",children:[e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:276:15",className:"relative flex-1",children:[e.jsx(et,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:277:17",className:"absolute left-2.5 top-1/2 -translate-y-1/2 w-3.5 h-3.5 text-muted-foreground"}),e.jsx(T,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:278:17",placeholder:"搜索告警...",value:g,onChange:t=>b(t.target.value),className:"pl-8 h-8 text-xs"})]}),e.jsxs(ne,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:285:15",value:f,onValueChange:t=>ve("severity",t),children:[e.jsx(se,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:286:17",className:"w-[100px] h-8 text-xs",children:e.jsx(oe,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:287:19",placeholder:"级别"})}),e.jsxs(ce,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:289:17",children:[e.jsx(v,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:290:19",value:"all",children:"全部级别"}),e.jsx(v,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:291:19",value:"critical",children:"严重"}),e.jsx(v,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:292:19",value:"warning",children:"警告"}),e.jsx(v,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:293:19",value:"info",children:"信息"})]})]}),e.jsxs(ne,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:296:15",value:l,onValueChange:t=>ve("status",t),children:[e.jsx(se,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:297:17",className:"w-[100px] h-8 text-xs",children:e.jsx(oe,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:298:19",placeholder:"状态"})}),e.jsxs(ce,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:300:17",children:[e.jsx(v,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:301:19",value:"all",children:"全部状态"}),e.jsx(v,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:302:19",value:"firing",children:"触发中"}),e.jsx(v,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:303:19",value:"acknowledged",children:"已确认"}),e.jsx(v,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:304:19",value:"resolved",children:"已解决"})]})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:308:13",className:"flex items-center gap-1 text-xs text-muted-foreground",children:[e.jsxs("span",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:309:15",children:["共 ",X," 条"]}),e.jsxs(a,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:310:15",variant:"outline",size:"sm",onClick:O,className:"h-7 text-xs px-2",children:[e.jsx(Y,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:311:17",className:"w-3 h-3 mr-1"}),"刷新"]})]})]}),e.jsx(y,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:317:11",children:e.jsxs(w,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:318:13",className:"p-0",children:[e.jsx("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:319:15",className:"overflow-x-auto",children:e.jsxs("table",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:320:17",className:"w-full text-sm",children:[e.jsx("thead",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:321:19",className:"bg-muted/50",children:e.jsxs("tr",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:322:21",children:[e.jsx("th",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:323:23",className:"px-3 py-2 text-left text-xs font-medium",children:"告警信息"}),e.jsx("th",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:324:23",className:"px-3 py-2 text-left text-xs font-medium w-16",children:"级别"}),e.jsx("th",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:325:23",className:"px-3 py-2 text-left text-xs font-medium w-16",children:"状态"}),e.jsx("th",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:326:23",className:"px-3 py-2 text-left text-xs font-medium w-24",children:"来源"}),e.jsx("th",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:327:23",className:"px-3 py-2 text-left text-xs font-medium w-20",children:"持续"}),e.jsx("th",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:328:23",className:"px-3 py-2 text-left text-xs font-medium w-28",children:"操作"})]})}),e.jsx("tbody",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:331:19",className:"divide-y",children:x?e.jsx("tr",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:333:23",children:e.jsx("td",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:333:27",colSpan:6,className:"px-3 py-6 text-center text-xs text-muted-foreground",children:"加载中..."})}):C.length===0?e.jsx("tr",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:335:23",children:e.jsx("td",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:335:27",colSpan:6,className:"px-3 py-6 text-center text-xs text-muted-foreground",children:"暂无告警"})}):C.filter(t=>{if(!g)return!0;const n=g.toLowerCase();return t.title.toLowerCase().includes(n)||t.description.toLowerCase().includes(n)||t.source.toLowerCase().includes(n)}).map(t=>e.jsxs("tr",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:345:25",className:"hover:bg-muted/50",children:[e.jsxs("td",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:346:27",className:"px-3 py-2",children:[e.jsx("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:347:29",className:"font-medium text-xs",children:t.title}),e.jsx("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:348:29",className:"text-xs text-muted-foreground line-clamp-1",children:t.description}),e.jsx("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:349:29",className:"flex gap-1 mt-0.5",children:Object.entries(t.labels).slice(0,2).map(([n,s])=>e.jsxs(u,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:351:33",variant:"outline",className:"text-[10px] px-1 py-0",children:[n,"=",s]},n))})]}),e.jsx("td",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:355:27",className:"px-3 py-2",children:ae(t.severity)}),e.jsx("td",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:356:27",className:"px-3 py-2",children:mt(t.status)}),e.jsxs("td",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:357:27",className:"px-3 py-2 text-xs",children:[e.jsx("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:358:29",children:t.source}),e.jsx("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:359:29",className:"text-muted-foreground text-[10px]",children:t.service})]}),e.jsx("td",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:361:27",className:"px-3 py-2 text-xs text-muted-foreground",children:t.status==="resolved"&&t.resolvedAt?`${Math.floor((new Date(t.resolvedAt).getTime()-new Date(t.startedAt).getTime())/6e4)}分`:`${Math.floor((Date.now()-new Date(t.startedAt).getTime())/6e4)}分`}),e.jsx("td",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:366:27",className:"px-3 py-2",children:e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:367:29",className:"flex items-center gap-0.5",children:[e.jsx(a,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:368:31",variant:"ghost",size:"sm",className:"h-7 w-7 p-0",onClick:()=>{me(t),de(!0)},children:e.jsx(tt,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:370:33",className:"w-3.5 h-3.5"})}),t.status==="firing"&&e.jsx(a,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:373:33",variant:"ghost",size:"sm",className:"h-7 w-7 p-0",onClick:()=>Ae(t.id),children:e.jsx(be,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:375:35",className:"w-3.5 h-3.5 text-blue-600"})}),(t.status==="firing"||t.status==="acknowledged")&&e.jsx(a,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:379:33",variant:"ghost",size:"sm",className:"h-7 w-7 p-0",onClick:()=>Be(t.id),children:e.jsx(re,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:381:35",className:"w-3.5 h-3.5 text-green-600"})}),e.jsx(a,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:384:31",variant:"ghost",size:"sm",className:"h-7 w-7 p-0",onClick:()=>{me(t),W(!0)},children:e.jsx(Se,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:386:33",className:"w-3.5 h-3.5 text-orange-600"})})]})})]},t.id))})]})}),_>1&&e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:398:17",className:"flex items-center justify-between px-3 py-2 border-t text-xs",children:[e.jsxs("span",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:399:19",className:"text-muted-foreground",children:["第 ",k,"/",_," 页,共 ",X," 条"]}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:400:19",className:"flex items-center gap-1",children:[e.jsx(a,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:401:21",variant:"outline",size:"sm",className:"h-7 text-xs px-2",disabled:k<=1,onClick:()=>E(t=>t-1),children:"上一页"}),Array.from({length:Math.min(_,5)},(t,n)=>{const p=Math.max(1,Math.min(k-2,_-4))+n;return p>_?null:e.jsx(a,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:410:25",variant:p===k?"default":"outline",size:"sm",className:"h-7 min-w-[28px] text-xs px-1",onClick:()=>E(p),children:p},p)}),e.jsx(a,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:417:21",variant:"outline",size:"sm",className:"h-7 text-xs px-2",disabled:k>=_,onClick:()=>E(t=>t+1),children:"下一页"})]})]})]})})]}),e.jsxs(F,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:429:9",value:"rules",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:430:11",className:"flex justify-between items-center",children:[e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:431:13",className:"flex items-center gap-2",children:[e.jsxs(a,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:432:15",onClick:Ve,children:[e.jsx(ee,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:433:17",className:"w-4 h-4 mr-1"}),"添加规则"]}),e.jsxs(a,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:435:15",variant:"secondary",onClick:Je,disabled:pe,children:[e.jsx(rt,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:436:17",className:"w-4 h-4 mr-1"}),pe?"创建中…":"一键报警"]})]}),e.jsxs(a,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:440:13",variant:"outline",onClick:R,children:[e.jsx(Y,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:441:15",className:"w-4 h-4 mr-2"}),"刷新"]})]}),A.length===0?e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:446:13",className:"text-center py-12 text-muted-foreground",children:[e.jsx(te,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:447:15",className:"w-10 h-10 mx-auto mb-2 opacity-50"}),e.jsx("p",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:448:15",className:"text-sm",children:"暂无告警规则"}),e.jsx("p",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:449:15",className:"text-xs mt-1",children:"点击「添加规则」或「一键报警」快速创建"})]}):e.jsx("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:452:11",className:"grid grid-cols-1 gap-4",children:A.map(t=>e.jsx(y,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:454:15",children:e.jsx(w,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:455:17",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:456:19",className:"flex items-start justify-between",children:[e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:457:21",className:"flex-1",children:[e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:458:23",className:"flex items-center gap-2 mb-2",children:[e.jsx("span",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:459:25",className:"font-medium",children:t.name}),ae(t.severity),e.jsx(u,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:461:25",variant:t.enabled?"default":"secondary",children:t.enabled?"已启用":"已禁用"})]}),e.jsx("p",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:465:23",className:"text-sm text-muted-foreground mb-2",children:t.description}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:466:23",className:"flex items-center gap-4 text-xs text-muted-foreground",children:[t.expression&&e.jsx("span",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:468:27",className:"font-mono bg-muted px-2 py-1 rounded",children:t.expression}),t.duration?e.jsxs("span",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:470:42",children:["持续 ",t.duration,"秒"]}):null]}),(()=>{let n=[];try{const s=t.notify_channels;s&&(n=Array.isArray(s)?s:JSON.parse(s))}catch{}return n.length?e.jsx("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:480:27",className:"flex gap-1 mt-2",children:n.map(s=>e.jsx(u,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:482:31",variant:"outline",className:"text-xs",children:s},s))}):null})()]}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:488:21",className:"flex items-center gap-2",children:[e.jsx(a,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:489:23",variant:"ghost",size:"sm",onClick:()=>We(t),children:"编辑"}),e.jsx(a,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:490:23",variant:"ghost",size:"sm",className:"text-red-400",onClick:()=>He(t),children:"删除"}),e.jsx(ot,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:491:23",checked:t.enabled,onCheckedChange:n=>Ue(String(t.id),n)})]})]})})},t.id))})]}),e.jsxs(F,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:505:9",value:"contacts",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:506:13",className:"flex justify-between items-center",children:[e.jsx("h3",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:507:15",className:"text-sm font-medium",children:"报警联系人"}),e.jsxs(a,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:508:15",size:"sm",onClick:()=>{ue(null),Q(!0)},children:[e.jsx(ee,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:509:17",className:"w-4 h-4 mr-1"}),"添加联系人"]})]}),L.length===0?e.jsx("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:514:15",className:"text-center py-8 text-muted-foreground border border-dashed rounded-lg text-xs",children:"暂无报警联系人,点击「添加联系人」创建"}):e.jsx("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:518:15",className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-3",children:L.map(t=>e.jsxs(y,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:520:19",className:"hover:border-primary/50 transition-colors",children:[e.jsx(Ne,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:521:21",className:"pb-2",children:e.jsx("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:522:23",className:"flex items-start justify-between",children:e.jsx(ye,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:523:25",className:"text-sm",children:t.name})})}),e.jsxs(w,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:526:21",className:"pt-0 space-y-1 text-xs text-muted-foreground",children:[t.phone&&e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:527:35",children:["📱 ",t.phone]}),t.email&&e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:528:35",children:["📧 ",t.email]}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:529:23",className:"flex gap-1 flex-wrap",children:[t.channel_type&&e.jsx(u,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:531:27",variant:"outline",className:"text-[10px]",children:dt(t.channel_type)}),t.webhook_url&&e.jsx("span",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:536:27",className:"text-[10px] text-muted-foreground truncate max-w-[200px]",title:t.webhook_url,children:t.webhook_url})]}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:541:23",className:"flex gap-1.5 pt-1.5",children:[e.jsx(a,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:542:25",variant:"outline",size:"sm",className:"h-7 text-xs flex-1",onClick:()=>{ue(t),Q(!0)},children:"编辑"}),e.jsx(a,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:546:25",variant:"outline",size:"sm",className:"h-7 text-xs",onClick:async()=>{if(await r({title:"删除联系人",description:`确定删除「${t.name}」?`,confirmText:"删除",variant:"destructive"}))try{await D.deleteContact(t.id),m.success("已删除"),$()}catch{m.error("删除失败")}},children:"删除"})]})]})]},t.id))})]}),e.jsxs(F,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:564:9",value:"groups",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:565:11",className:"flex justify-between items-center",children:[e.jsxs(a,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:566:13",variant:"outline",onClick:I,children:[e.jsx(Y,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:567:15",className:"w-4 h-4 mr-2"}),"刷新"]}),e.jsxs(a,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:570:13",onClick:()=>{Ce(null),Z(!0)},children:[e.jsx(ee,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:571:15",className:"w-4 h-4 mr-2"}),"添加联系组"]})]}),he.length===0?e.jsx("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:576:13",className:"text-center py-16 text-muted-foreground border border-dashed rounded-lg",children:"暂无报警联系组,点击「添加联系组」创建"}):e.jsx("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:580:13",className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",children:he.map(t=>{let n=[];try{n=JSON.parse(t.contact_ids||"[]")}catch{}const s=L.filter(p=>n.includes(p.id)).map(p=>p.name);return e.jsxs(y,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:588:19",className:"hover:border-primary/50 transition-colors",children:[e.jsx(Ne,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:589:21",children:e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:590:23",className:"flex items-start justify-between",children:[e.jsx(ye,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:591:25",className:"text-base",children:t.group_name}),e.jsxs(u,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:592:25",variant:"secondary",children:[n.length," 人"]})]})}),e.jsxs(w,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:595:21",className:"pt-0 space-y-2",children:[t.notes&&e.jsx("p",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:596:35",className:"text-sm text-muted-foreground",children:t.notes}),e.jsx("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:597:23",className:"flex flex-wrap gap-1",children:s.map(p=>e.jsx(u,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:599:27",variant:"outline",className:"text-xs",children:p},p))}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:602:23",className:"flex gap-2 pt-2",children:[e.jsx(a,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:603:25",variant:"outline",size:"sm",className:"flex-1",onClick:()=>{Ce(t),Z(!0)},children:"编辑"}),e.jsx(a,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:607:25",variant:"outline",size:"sm",onClick:async()=>{if(await r({title:"删除联系组",description:`确定删除联系组「${t.group_name}」?`,confirmText:"删除",variant:"destructive"}))try{await D.deleteContactGroup(t.id),m.success("已删除"),I()}catch{m.error("删除失败")}},children:"删除"})]})]})]},t.id)})})]})]}),e.jsx(pt,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:626:7",alert:ie,open:Te,onOpenChange:de,onAcknowledge:Ae}),e.jsx(xt,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:632:7",alert:ie,open:Ge,onOpenChange:W,onSilence:Pe}),e.jsx(ct,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:638:7",open:Re,onOpenChange:fe,editingRule:ze,notifyChannels:[],onSaved:()=>{fe(),R()}}),e.jsx(ht,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:645:7",open:$e,onOpenChange:Q,editingContact:Ie,onSaved:$}),e.jsx(ut,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:651:7",open:Me,onOpenChange:Z,editingGroup:Fe,contacts:L,onSaved:()=>{I()}})]})};export{zt as default}; diff --git a/backend/static/assets/AlertCenter-yzRMJZ3c.js b/backend/static/assets/AlertCenter-yzRMJZ3c.js new file mode 100644 index 0000000..e7d1e52 --- /dev/null +++ b/backend/static/assets/AlertCenter-yzRMJZ3c.js @@ -0,0 +1 @@ +import{i as Oe,j as e,I as st,T as Le,a6 as ot,P as ze,U as ct,D as V,a as H,b as U,c as Q,d as Y,e as ie,B as d,K as Ge,o as at,r as s,f as $e,C as lt,O as it,al as mt}from"./index-Dmami9WE.js";import{I as E}from"./input-NsU9nXZF.js";import{B as v}from"./badge-3UzCvU7L.js";import{C as F,a as J,b as Te,c as _e}from"./card-CIfC-8Rh.js";import{S as dt}from"./stat-strip-BteRU1Iu.js";import{S as se,a as oe,b as ce,c as ae,d as _}from"./select-DUbxjT0z.js";import{T as pt,a as xt,b as P,c as W}from"./tabs-lV44z_UR.js";import{S as Ie}from"./switch-TqjD2x0W.js";import{t as l}from"./index-BuEnLCjT.js";import{a as O,b as R}from"./monitor-CicbJUrQ.js";import{a as ge}from"./agent-B3ElXCx8.js";import{Z as ht}from"./zap-CocSkPPl.js";import{L as j}from"./label-Ap_-SPYI.js";import{A as ut}from"./AlertRuleDialog-CpPLZsky.js";import{T as gt}from"./textarea-DHUZ6N85.js";import{R as re}from"./refresh-cw-CTBERyFc.js";import{P as ne}from"./plus-O65gX7Qz.js";import{C as jt}from"./calendar-CxZxrJ2o.js";import{S as Ct}from"./square-pen-B3dPIBrm.js";import{T as ft}from"./trash-2-DWVnIU6o.js";import{S as vt}from"./search-Dd-PeBfg.js";import"./index-CtCQcvyh.js";import"./chevron-up-Cq4GPopa.js";import"./message-square-BNbub2_o.js";import"./phone-Cn_wSobp.js";const At=[["path",{d:"m17 2 4 4-4 4",key:"nntrym"}],["path",{d:"M3 11v-1a4 4 0 0 1 4-4h14",key:"84bu3i"}],["path",{d:"m7 22-4-4 4-4",key:"1wqhfi"}],["path",{d:"M21 13v1a4 4 0 0 1-4 4H3",key:"1rx37r"}]],Nt=Oe("repeat",At);const yt=[["path",{d:"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z",key:"uqj9uw"}],["line",{x1:"22",x2:"16",y1:"9",y2:"15",key:"1ewh16"}],["line",{x1:"16",x2:"22",y1:"9",y2:"15",key:"5ykzw1"}]],le=Oe("volume-x",yt);function wt(r){return{id:String(r.id),title:r.rule_name||r.title||`告警 #${r.id}`,description:r.message||r.description||"",severity:r.severity||"info",status:r.status||"firing",source:r.target||r.source||"",service:r.service||"",metric:r.metric||"",value:r.value||0,threshold:r.threshold||0,startedAt:r.started_at||r.startedAt||r.created_at||new Date().toISOString(),resolvedAt:r.resolved_at||r.resolvedAt,labels:typeof r.labels=="string"?(()=>{try{return JSON.parse(r.labels||"{}")}catch{return{}}})():r.labels||{},annotations:typeof r.annotations=="string"?(()=>{try{return JSON.parse(r.annotations||"{}")}catch{return{}}})():r.annotations||{}}}function je(r){switch(r){case"critical":return e.jsxs(v,{"code-path":"src/components/monitor/alert-center/alert-center-helpers.tsx:106:14",variant:"destructive",className:"gap-1",children:[e.jsx(ot,{"code-path":"src/components/monitor/alert-center/alert-center-helpers.tsx:106:61",className:"w-3 h-3"}),"严重"]});case"warning":return e.jsxs(v,{"code-path":"src/components/monitor/alert-center/alert-center-helpers.tsx:108:14",variant:"default",className:"bg-orange-500 gap-1",children:[e.jsx(Le,{"code-path":"src/components/monitor/alert-center/alert-center-helpers.tsx:108:71",className:"w-3 h-3"}),"警告"]});case"info":return e.jsxs(v,{"code-path":"src/components/monitor/alert-center/alert-center-helpers.tsx:110:14",variant:"default",className:"bg-blue-500 gap-1",children:[e.jsx(st,{"code-path":"src/components/monitor/alert-center/alert-center-helpers.tsx:110:69",className:"w-3 h-3"}),"信息"]});default:return e.jsx(v,{"code-path":"src/components/monitor/alert-center/alert-center-helpers.tsx:112:14",variant:"secondary",children:"未知"})}}function bt(r){switch(r){case"firing":return e.jsxs(v,{"code-path":"src/components/monitor/alert-center/alert-center-helpers.tsx:120:14",variant:"destructive",className:"gap-1 animate-pulse",children:[e.jsx(ht,{"code-path":"src/components/monitor/alert-center/alert-center-helpers.tsx:120:75",className:"w-3 h-3"}),"触发中"]});case"acknowledged":return e.jsxs(v,{"code-path":"src/components/monitor/alert-center/alert-center-helpers.tsx:122:14",variant:"default",className:"bg-yellow-500 gap-1",children:[e.jsx(ct,{"code-path":"src/components/monitor/alert-center/alert-center-helpers.tsx:122:71",className:"w-3 h-3"}),"已确认"]});case"resolved":return e.jsxs(v,{"code-path":"src/components/monitor/alert-center/alert-center-helpers.tsx:124:14",variant:"default",className:"bg-green-500 gap-1",children:[e.jsx(ze,{"code-path":"src/components/monitor/alert-center/alert-center-helpers.tsx:124:70",className:"w-3 h-3"}),"已解决"]});case"suppressed":return e.jsxs(v,{"code-path":"src/components/monitor/alert-center/alert-center-helpers.tsx:126:14",variant:"secondary",className:"gap-1",children:[e.jsx(le,{"code-path":"src/components/monitor/alert-center/alert-center-helpers.tsx:126:59",className:"w-3 h-3"}),"已静默"]});default:return e.jsx(v,{"code-path":"src/components/monitor/alert-center/alert-center-helpers.tsx:128:14",variant:"secondary",children:"未知"})}}function St(r){return{dingtalk:"钉钉",wechat:"企业微信",feishu:"飞书",email:"邮件",sms:"短信",webhook:"Webhook"}[r]||r}function Dt({alert:r,open:p,onOpenChange:n,onAcknowledge:w}){return e.jsx(V,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:22:5",open:p,onOpenChange:n,children:e.jsxs(H,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:23:7",className:"max-w-3xl",children:[e.jsxs(U,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:24:9",children:[e.jsxs(Q,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:25:11",className:"flex items-center gap-2",children:[r?.title,r&&je(r.severity)]}),e.jsx(Y,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:29:11",className:"sr-only",children:"查看告警详情"})]}),r&&e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:32:11",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:33:13",children:[e.jsx(j,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:34:15",className:"text-muted-foreground",children:"描述"}),e.jsx("p",{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:35:15",className:"mt-1",children:r.description})]}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:37:13",className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:38:15",children:[e.jsx(j,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:39:17",className:"text-muted-foreground",children:"来源"}),e.jsx("p",{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:40:17",className:"font-medium",children:r.source})]}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:42:15",children:[e.jsx(j,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:43:17",className:"text-muted-foreground",children:"服务"}),e.jsx("p",{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:44:17",className:"font-medium",children:r.service})]}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:46:15",children:[e.jsx(j,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:47:17",className:"text-muted-foreground",children:"指标"}),e.jsx("p",{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:48:17",className:"font-medium",children:r.metric})]}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:50:15",children:[e.jsx(j,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:51:17",className:"text-muted-foreground",children:"当前值 / 阈值"}),e.jsxs("p",{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:52:17",className:"font-medium",children:[r.value," / ",r.threshold]})]}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:54:15",children:[e.jsx(j,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:55:17",className:"text-muted-foreground",children:"开始时间"}),e.jsx("p",{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:56:17",className:"font-medium",children:r.startedAt})]}),r.resolvedAt&&e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:59:17",children:[e.jsx(j,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:60:19",className:"text-muted-foreground",children:"解决时间"}),e.jsx("p",{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:61:19",className:"font-medium",children:r.resolvedAt})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:65:13",children:[e.jsx(j,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:66:15",className:"text-muted-foreground",children:"标签"}),e.jsx("div",{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:67:15",className:"flex flex-wrap gap-2 mt-1",children:Object.entries(r.labels).map(([C,u])=>e.jsxs(v,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:69:19",variant:"outline",children:[C,"=",u]},C))})]}),r.runbookUrl&&e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:74:15",children:[e.jsx(j,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:75:17",className:"text-muted-foreground",children:"处理手册"}),e.jsx("a",{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:76:17",href:r.runbookUrl,target:"_blank",rel:"noopener noreferrer",className:"text-blue-500 hover:underline block mt-1",children:"查看处理手册 →"})]})]}),e.jsxs(ie,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:83:9",children:[e.jsx(d,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:84:11",variant:"outline",onClick:()=>n(!1),children:"关闭"}),r?.status==="firing"&&e.jsxs(d,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:86:13",onClick:()=>{w(r.id),n(!1)},children:[e.jsx(Ge,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:87:15",className:"w-4 h-4 mr-2"}),"确认告警"]})]})]})})}function kt({alert:r,open:p,onOpenChange:n,onSilence:w}){return e.jsx(V,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:109:5",open:p,onOpenChange:n,children:e.jsxs(H,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:110:7",children:[e.jsxs(U,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:111:9",children:[e.jsx(Q,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:112:11",children:"静默告警"}),e.jsx(Y,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:113:11",children:"选择静默持续时间"})]}),e.jsx("div",{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:115:9",className:"space-y-2",children:["1h","4h","8h","24h","7d"].map(C=>e.jsxs(d,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:117:13",variant:"outline",className:"w-full justify-between",onClick:()=>r&&w(r.id,C),children:[e.jsxs("span",{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:123:15",children:["静默 ",C]}),e.jsx(at,{"code-path":"src/components/monitor/alert-center/AlertCenterDetail.tsx:124:15",className:"w-4 h-4"})]},C))})]})})}const Re=[{value:"feishu",label:"飞书",placeholder:"https://open.feishu.cn/open-apis/bot/v2/hook/..."},{value:"dingtalk",label:"钉钉",placeholder:"https://oapi.dingtalk.com/robot/send?access_token=..."},{value:"wechat",label:"企业微信",placeholder:"https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=..."},{value:"webhook",label:"自定义Webhook",placeholder:"https://your-webhook-url..."}];function Tt({open:r,onOpenChange:p,editingContact:n,onSaved:w}){const[C,u]=s.useState("feishu"),[i,A]=s.useState({name:"",phone:"",email:"",webhook_url:""}),[D,f]=s.useState(!1);s.useEffect(()=>{r&&(n?(u(n.channel_type||"feishu"),A({name:n.name||"",phone:n.phone||"",email:n.email||"",webhook_url:n.webhook_url||""})):(u("feishu"),A({name:"",phone:"",email:"",webhook_url:""})))},[r,n]);const y=async()=>{if(!(!i.name.trim()||!i.webhook_url.trim())){f(!0);try{const h={name:i.name.trim(),phone:i.phone.trim()||void 0,email:i.email.trim()||void 0,channel_type:C,webhook_url:i.webhook_url.trim()};n?(await O.updateContact(n.id,h),l.success("联系人已更新")):(await O.createContact(h),l.success("联系人已添加")),p(!1),w()}catch{l.error("保存失败")}finally{f(!1)}}},x=Re.find(h=>h.value===C);return e.jsx(V,{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:85:5",open:r,onOpenChange:p,children:e.jsxs(H,{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:86:7",children:[e.jsxs(U,{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:87:9",children:[e.jsx(Q,{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:88:11",children:n?"编辑报警联系人":"添加报警联系人"}),e.jsx(Y,{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:89:11",children:"选择通知渠道并填入 Webhook 地址"})]}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:91:9",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:92:11",className:"space-y-2",children:[e.jsx(j,{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:93:13",children:"姓名 *"}),e.jsx(E,{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:94:13",value:i.name,onChange:h=>A({...i,name:h.target.value}),placeholder:"如:张三"})]}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:100:11",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:101:13",className:"space-y-2",children:[e.jsx(j,{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:102:15",children:"手机号"}),e.jsx(E,{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:103:15",value:i.phone,onChange:h=>A({...i,phone:h.target.value}),placeholder:"13800138000"})]}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:109:13",className:"space-y-2",children:[e.jsx(j,{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:110:15",children:"邮箱"}),e.jsx(E,{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:111:15",value:i.email,onChange:h=>A({...i,email:h.target.value}),placeholder:"zhangsan@example.com"})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:118:11",className:"space-y-2",children:[e.jsx(j,{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:119:13",children:"渠道类型 *"}),e.jsxs(se,{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:120:13",value:C,onValueChange:u,children:[e.jsx(oe,{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:121:15",children:e.jsx(ce,{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:122:17",placeholder:"选择渠道类型"})}),e.jsx(ae,{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:124:15",children:Re.map(h=>e.jsx(_,{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:126:19",value:h.value,children:h.label},h.value))})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:131:11",className:"space-y-2",children:[e.jsx(j,{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:132:13",children:"Webhook URL *"}),e.jsx(E,{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:133:13",value:i.webhook_url,onChange:h=>A({...i,webhook_url:h.target.value}),placeholder:x?.placeholder||"https://...",className:"font-mono text-xs"})]})]}),e.jsxs(ie,{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:141:9",children:[e.jsx(d,{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:142:11",variant:"outline",onClick:()=>p(!1),children:"取消"}),e.jsx(d,{"code-path":"src/components/monitor/alert-center/ContactDialog.tsx:143:11",onClick:y,disabled:!i.name.trim()||!i.webhook_url.trim()||D,children:D?"保存中...":n?"保存修改":"添加联系人"})]})]})})}function _t({open:r,onOpenChange:p,editingGroup:n,contacts:w,onSaved:C}){const[u,i]=s.useState({group_name:"",notes:"",contact_ids:[]}),[A,D]=s.useState(!1);s.useEffect(()=>{if(r)if(n){let x=[];try{x=JSON.parse(n.contact_ids||"[]")}catch{}i({group_name:n.group_name||"",notes:n.notes||"",contact_ids:x})}else i({group_name:"",notes:"",contact_ids:[]})},[r,n]);const f=x=>{i(h=>({...h,contact_ids:h.contact_ids.includes(x)?h.contact_ids.filter(k=>k!==x):[...h.contact_ids,x]}))},y=async()=>{if(u.group_name.trim()){D(!0);try{const x={group_name:u.group_name.trim(),notes:u.notes.trim()||void 0,contact_ids:u.contact_ids};n?(await O.updateContactGroup(n.id,x),l.success("联系组已更新")):(await O.createContactGroup(x),l.success("联系组已添加")),p(!1),C()}catch{l.error("保存失败")}finally{D(!1)}}};return e.jsx(V,{"code-path":"src/components/monitor/alert-center/ContactGroupDialog.tsx:84:5",open:r,onOpenChange:p,children:e.jsxs(H,{"code-path":"src/components/monitor/alert-center/ContactGroupDialog.tsx:85:7",children:[e.jsxs(U,{"code-path":"src/components/monitor/alert-center/ContactGroupDialog.tsx:86:9",children:[e.jsx(Q,{"code-path":"src/components/monitor/alert-center/ContactGroupDialog.tsx:87:11",children:n?"编辑报警联系组":"添加报警联系组"}),e.jsx(Y,{"code-path":"src/components/monitor/alert-center/ContactGroupDialog.tsx:88:11",children:"配置报警联系组,选择组内成员"})]}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/ContactGroupDialog.tsx:90:9",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/monitor/alert-center/ContactGroupDialog.tsx:91:11",className:"space-y-2",children:[e.jsx(j,{"code-path":"src/components/monitor/alert-center/ContactGroupDialog.tsx:92:13",children:"组名称 *"}),e.jsx(E,{"code-path":"src/components/monitor/alert-center/ContactGroupDialog.tsx:93:13",value:u.group_name,onChange:x=>i({...u,group_name:x.target.value}),placeholder:"如:运维值班组"})]}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/ContactGroupDialog.tsx:99:11",className:"space-y-2",children:[e.jsx(j,{"code-path":"src/components/monitor/alert-center/ContactGroupDialog.tsx:100:13",children:"备注"}),e.jsx(gt,{"code-path":"src/components/monitor/alert-center/ContactGroupDialog.tsx:101:13",value:u.notes,onChange:x=>i({...u,notes:x.target.value}),placeholder:"如:周一至周五 9:00-21:00",rows:2})]}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/ContactGroupDialog.tsx:108:11",className:"space-y-2",children:[e.jsx(j,{"code-path":"src/components/monitor/alert-center/ContactGroupDialog.tsx:109:13",children:"选择联系人"}),w.length===0?e.jsx("p",{"code-path":"src/components/monitor/alert-center/ContactGroupDialog.tsx:111:15",className:"text-xs text-muted-foreground",children:"暂无联系人,请先在「报警联系人」标签页添加"}):e.jsx("div",{"code-path":"src/components/monitor/alert-center/ContactGroupDialog.tsx:113:15",className:"flex flex-wrap gap-1.5 max-h-[180px] overflow-y-auto border rounded-md p-2",children:w.map(x=>e.jsxs(v,{"code-path":"src/components/monitor/alert-center/ContactGroupDialog.tsx:115:19",variant:u.contact_ids.includes(x.id)?"default":"outline",className:"cursor-pointer text-xs",onClick:()=>f(x.id),children:[x.name,u.contact_ids.includes(x.id)&&" ✓"]},x.id))}),u.contact_ids.length>0&&e.jsxs("p",{"code-path":"src/components/monitor/alert-center/ContactGroupDialog.tsx:128:15",className:"text-xs text-muted-foreground",children:["已选择 ",u.contact_ids.length," 位联系人"]})]})]}),e.jsxs(ie,{"code-path":"src/components/monitor/alert-center/ContactGroupDialog.tsx:132:9",children:[e.jsx(d,{"code-path":"src/components/monitor/alert-center/ContactGroupDialog.tsx:133:11",variant:"outline",onClick:()=>p(!1),children:"取消"}),e.jsx(d,{"code-path":"src/components/monitor/alert-center/ContactGroupDialog.tsx:134:11",onClick:y,disabled:!u.group_name.trim()||A,children:A?"保存中...":n?"保存修改":"添加联系组"})]})]})})}const Rt={onetime:"一次性",daily:"每天循环",weekly:"每周循环"},Et=["周日","周一","周二","周三","周四","周五","周六"];function te(r){const p=r.getTimezoneOffset();return new Date(r.getTime()-p*6e4).toISOString().slice(0,16)}function Ee(r,p){return new Date(r.getTime()+p*36e5)}function Ot({open:r,onOpenChange:p,editingSilence:n,onSaved:w}){const[C,u]=s.useState(!1),[i,A]=s.useState(""),[D,f]=s.useState(""),[y,x]=s.useState("onetime"),[h,k]=s.useState(""),[L,o]=s.useState(""),[b,T]=s.useState([]);s.useEffect(()=>{if(n){A(n.name||""),f(n.description||""),x(n.silence_type||"onetime");const m=n.start_time?new Date(n.start_time):new Date,N=n.end_time?new Date(n.end_time):Ee(new Date,1);k(te(m)),o(te(N));let z=[];if(n.weekday_list)z=n.weekday_list;else if(n.weekdays)try{z=JSON.parse(n.weekdays)}catch{}T(z)}else{A(""),f(""),x("onetime");const m=new Date;k(te(m)),o(te(Ee(m,2))),T([])}},[n,r]);const S=m=>{T(N=>N.includes(m)?N.filter(z=>z!==m):[...N,m])},$=async()=>{if(!i.trim()){l.error("请填写规则名称");return}if(!L){l.error("请设置结束时间");return}if(y==="weekly"&&b.length===0){l.error("每周静默需要选择至少一个星期");return}const m={name:i.trim(),description:D.trim(),silence_type:y,start_time:h,end_time:L,weekdays:y==="weekly"?b:[]};u(!0);try{n?(await R.updateSilence(n.id,m),l.success("静默规则已更新")):(await R.createSilence(m),l.success("静默规则已创建")),p(!1),w()}catch{l.error("保存失败")}finally{u(!1)}};return e.jsx(V,{"code-path":"src/components/monitor/alert-center/SilenceDialog.tsx:142:5",open:r,onOpenChange:p,children:e.jsxs(H,{"code-path":"src/components/monitor/alert-center/SilenceDialog.tsx:143:7",showOverlay:!1,className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] max-w-lg",children:[e.jsxs(U,{"code-path":"src/components/monitor/alert-center/SilenceDialog.tsx:144:9",children:[e.jsx(Q,{"code-path":"src/components/monitor/alert-center/SilenceDialog.tsx:145:11",className:"text-[var(--dg-text-primary)]",children:n?"编辑静默规则":"创建静默规则"}),e.jsx(Y,{"code-path":"src/components/monitor/alert-center/SilenceDialog.tsx:148:11",className:"text-[var(--dg-text-secondary)]",children:"静默期间匹配的告警将不会触发通知"})]}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/SilenceDialog.tsx:152:9",className:"space-y-4 max-h-[60vh] overflow-y-auto pr-1",children:[e.jsxs("div",{"code-path":"src/components/monitor/alert-center/SilenceDialog.tsx:154:11",className:"space-y-1.5",children:[e.jsx(j,{"code-path":"src/components/monitor/alert-center/SilenceDialog.tsx:155:13",className:"text-[var(--dg-text-primary)]",children:"规则名称 *"}),e.jsx(E,{"code-path":"src/components/monitor/alert-center/SilenceDialog.tsx:156:13",value:i,onChange:m=>A(m.target.value),placeholder:"如:维护窗口静默",className:"bg-[var(--dg-bg-primary)]"})]}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/SilenceDialog.tsx:165:11",className:"space-y-1.5",children:[e.jsx(j,{"code-path":"src/components/monitor/alert-center/SilenceDialog.tsx:166:13",className:"text-[var(--dg-text-primary)]",children:"描述"}),e.jsx(E,{"code-path":"src/components/monitor/alert-center/SilenceDialog.tsx:167:13",value:D,onChange:m=>f(m.target.value),placeholder:"可选备注",className:"bg-[var(--dg-bg-primary)]"})]}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/SilenceDialog.tsx:176:11",className:"space-y-1.5",children:[e.jsx(j,{"code-path":"src/components/monitor/alert-center/SilenceDialog.tsx:177:13",className:"text-[var(--dg-text-primary)]",children:"静默类型"}),e.jsxs(se,{"code-path":"src/components/monitor/alert-center/SilenceDialog.tsx:178:13",value:y,onValueChange:x,children:[e.jsx(oe,{"code-path":"src/components/monitor/alert-center/SilenceDialog.tsx:179:15",className:"bg-[var(--dg-bg-primary)]",children:e.jsx(ce,{"code-path":"src/components/monitor/alert-center/SilenceDialog.tsx:180:17"})}),e.jsx(ae,{"code-path":"src/components/monitor/alert-center/SilenceDialog.tsx:182:15",children:Object.entries(Rt).map(([m,N])=>e.jsx(_,{"code-path":"src/components/monitor/alert-center/SilenceDialog.tsx:184:19",value:m,children:N},m))})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/SilenceDialog.tsx:191:11",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/monitor/alert-center/SilenceDialog.tsx:192:13",className:"space-y-1.5",children:[e.jsx(j,{"code-path":"src/components/monitor/alert-center/SilenceDialog.tsx:193:15",className:"text-[var(--dg-text-primary)]",children:y==="onetime"?"开始时间":"每日开始"}),e.jsx(E,{"code-path":"src/components/monitor/alert-center/SilenceDialog.tsx:196:15",type:"datetime-local",value:h,onChange:m=>k(m.target.value),className:"bg-[var(--dg-bg-primary)]"})]}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/SilenceDialog.tsx:203:13",className:"space-y-1.5",children:[e.jsx(j,{"code-path":"src/components/monitor/alert-center/SilenceDialog.tsx:204:15",className:"text-[var(--dg-text-primary)]",children:y==="onetime"?"结束时间":"每日结束"}),e.jsx(E,{"code-path":"src/components/monitor/alert-center/SilenceDialog.tsx:207:15",type:"datetime-local",value:L,onChange:m=>o(m.target.value),className:"bg-[var(--dg-bg-primary)]"})]})]}),y==="weekly"&&e.jsxs("div",{"code-path":"src/components/monitor/alert-center/SilenceDialog.tsx:218:13",className:"space-y-1.5",children:[e.jsx(j,{"code-path":"src/components/monitor/alert-center/SilenceDialog.tsx:219:15",className:"text-[var(--dg-text-primary)]",children:"生效星期"}),e.jsx("div",{"code-path":"src/components/monitor/alert-center/SilenceDialog.tsx:220:15",className:"flex flex-wrap gap-2",children:Et.map((m,N)=>e.jsx("button",{"code-path":"src/components/monitor/alert-center/SilenceDialog.tsx:222:19",type:"button",onClick:()=>S(N),className:`px-3 py-1.5 rounded-md text-xs transition-colors ${b.includes(N)?"bg-primary text-primary-foreground":"bg-[var(--dg-bg-primary)] border border-[var(--dg-border)] text-[var(--dg-text-secondary)]"}`,children:m},N))})]}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/SilenceDialog.tsx:240:11",className:"text-xs text-muted-foreground bg-muted/50 rounded-md p-2",children:[y==="onetime"&&"在指定时间窗口内,所有匹配条件的告警将被静默。窗口结束后自动恢复正常。",y==="daily"&&"每天在指定时段内静默告警,适合非工作时间免打扰。",y==="weekly"&&"仅在选定星期的指定时段内静默,适合周末维护窗口。"]})]}),e.jsxs(ie,{"code-path":"src/components/monitor/alert-center/SilenceDialog.tsx:246:9",children:[e.jsx(d,{"code-path":"src/components/monitor/alert-center/SilenceDialog.tsx:247:11",variant:"outline",onClick:()=>p(!1),children:"取消"}),e.jsx(d,{"code-path":"src/components/monitor/alert-center/SilenceDialog.tsx:248:11",onClick:$,disabled:C,children:C?"保存中…":"保存"})]})]})})}const Lt={onetime:"一次性",daily:"每天",weekly:"每周"},zt=["日","一","二","三","四","五","六"];function q(r){if(!r)return"—";const p=typeof r=="string"?new Date(r):r;return isNaN(p.getTime())?"—":p.toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"})}const Gt=()=>{const r=$e(),[p,n]=s.useState([]),[w,C]=s.useState(!1),[u,i]=s.useState(!1),[A,D]=s.useState(null),f=s.useCallback(async()=>{C(!0);try{const o=await R.getSilences(),b=o?.list||o?.data?.list||[];n(b)}catch{l.error("获取静默规则失败")}finally{C(!1)}},[]);s.useEffect(()=>{f()},[f]);const y=()=>{D(null),i(!0)},x=o=>{D(o),i(!0)},h=async o=>{if(await r({title:"删除静默规则",description:`确定删除「${o.name}」?删除后该规则匹配的告警将恢复通知。`,confirmText:"删除",variant:"destructive"}))try{await R.deleteSilence(o.id),l.success("已删除"),f()}catch{l.error("删除失败")}},k=async o=>{try{await R.toggleSilence(o.id),l.success(o.status===1?"已禁用":"已启用"),f()}catch{l.error("操作失败")}},L=o=>{if(o.is_active!==void 0)return o.is_active;if(o.status!==1)return!1;const b=new Date,T=new Date(o.start_time),S=new Date(o.end_time);return b>=T&&b<=S};return e.jsxs("div",{"code-path":"src/components/monitor/alert-center/SilenceRuleTab.tsx:102:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/monitor/alert-center/SilenceRuleTab.tsx:104:7",className:"flex justify-between items-center",children:[e.jsxs("div",{"code-path":"src/components/monitor/alert-center/SilenceRuleTab.tsx:105:9",className:"flex items-center gap-2 text-xs text-muted-foreground",children:[e.jsx(le,{"code-path":"src/components/monitor/alert-center/SilenceRuleTab.tsx:106:11",className:"w-4 h-4"}),e.jsxs("span",{"code-path":"src/components/monitor/alert-center/SilenceRuleTab.tsx:107:11",children:["共 ",p.length," 条规则"]})]}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/SilenceRuleTab.tsx:109:9",className:"flex items-center gap-2",children:[e.jsxs(d,{"code-path":"src/components/monitor/alert-center/SilenceRuleTab.tsx:110:11",variant:"outline",size:"sm",onClick:f,disabled:w,children:[e.jsx(re,{"code-path":"src/components/monitor/alert-center/SilenceRuleTab.tsx:111:13",className:"w-3.5 h-3.5 mr-1"}),"刷新"]}),e.jsxs(d,{"code-path":"src/components/monitor/alert-center/SilenceRuleTab.tsx:114:11",size:"sm",onClick:y,children:[e.jsx(ne,{"code-path":"src/components/monitor/alert-center/SilenceRuleTab.tsx:115:13",className:"w-3.5 h-3.5 mr-1"}),"添加静默规则"]})]})]}),w&&p.length===0?e.jsx("div",{"code-path":"src/components/monitor/alert-center/SilenceRuleTab.tsx:123:9",className:"text-center py-12 text-muted-foreground",children:e.jsx("p",{"code-path":"src/components/monitor/alert-center/SilenceRuleTab.tsx:124:11",className:"text-sm",children:"加载中..."})}):p.length===0?e.jsxs("div",{"code-path":"src/components/monitor/alert-center/SilenceRuleTab.tsx:127:9",className:"text-center py-12 text-muted-foreground border border-dashed rounded-lg",children:[e.jsx(le,{"code-path":"src/components/monitor/alert-center/SilenceRuleTab.tsx:128:11",className:"w-10 h-10 mx-auto mb-2 opacity-50"}),e.jsx("p",{"code-path":"src/components/monitor/alert-center/SilenceRuleTab.tsx:129:11",className:"text-sm",children:"暂无静默规则"}),e.jsx("p",{"code-path":"src/components/monitor/alert-center/SilenceRuleTab.tsx:130:11",className:"text-xs mt-1",children:"点击「添加静默规则」创建维护窗口或免打扰时段"})]}):e.jsx("div",{"code-path":"src/components/monitor/alert-center/SilenceRuleTab.tsx:133:9",className:"grid grid-cols-1 gap-3",children:p.map(o=>{const b=L(o),T=o.status===1,S=o.silence_type||"onetime",$=o.weekday_list||(()=>{try{return JSON.parse(o.weekdays||"[]")}catch{return[]}})();return e.jsx(F,{"code-path":"src/components/monitor/alert-center/SilenceRuleTab.tsx:142:15",className:b?"border-primary/50":"",children:e.jsx(J,{"code-path":"src/components/monitor/alert-center/SilenceRuleTab.tsx:143:17",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/monitor/alert-center/SilenceRuleTab.tsx:144:19",className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{"code-path":"src/components/monitor/alert-center/SilenceRuleTab.tsx:146:21",className:"flex-1 min-w-0",children:[e.jsxs("div",{"code-path":"src/components/monitor/alert-center/SilenceRuleTab.tsx:147:23",className:"flex items-center gap-2 mb-1.5 flex-wrap",children:[e.jsx("span",{"code-path":"src/components/monitor/alert-center/SilenceRuleTab.tsx:148:25",className:"font-medium text-sm",children:o.name}),e.jsxs(v,{"code-path":"src/components/monitor/alert-center/SilenceRuleTab.tsx:150:25",variant:"outline",className:"text-xs",children:[S==="onetime"&&e.jsx(lt,{"code-path":"src/components/monitor/alert-center/SilenceRuleTab.tsx:151:51",className:"w-3 h-3 mr-1"}),S==="daily"&&e.jsx(Nt,{"code-path":"src/components/monitor/alert-center/SilenceRuleTab.tsx:152:49",className:"w-3 h-3 mr-1"}),S==="weekly"&&e.jsx(jt,{"code-path":"src/components/monitor/alert-center/SilenceRuleTab.tsx:153:50",className:"w-3 h-3 mr-1"}),Lt[S]||S]}),b&&e.jsx(v,{"code-path":"src/components/monitor/alert-center/SilenceRuleTab.tsx:158:27",className:"bg-green-500 text-xs",children:"生效中"}),!T&&e.jsx(v,{"code-path":"src/components/monitor/alert-center/SilenceRuleTab.tsx:161:27",variant:"secondary",className:"text-xs",children:"已禁用"})]}),o.description&&e.jsx("p",{"code-path":"src/components/monitor/alert-center/SilenceRuleTab.tsx:166:25",className:"text-xs text-muted-foreground mb-1.5",children:o.description}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/SilenceRuleTab.tsx:170:23",className:"flex flex-wrap items-center gap-x-4 gap-y-1 text-xs text-muted-foreground",children:[e.jsx("span",{"code-path":"src/components/monitor/alert-center/SilenceRuleTab.tsx:171:25",children:S==="onetime"?`${q(o.start_time)} — ${q(o.end_time)}`:`每日 ${q(o.start_time)} — ${q(o.end_time)}`}),S==="weekly"&&$.length>0&&e.jsx("span",{"code-path":"src/components/monitor/alert-center/SilenceRuleTab.tsx:178:27",className:"flex items-center gap-1",children:$.sort((m,N)=>m-N).map(m=>e.jsx("span",{"code-path":"src/components/monitor/alert-center/SilenceRuleTab.tsx:180:31",className:"inline-flex items-center justify-center w-5 h-5 rounded-full bg-primary/10 text-primary text-[10px]",children:zt[m]},m))})]}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/SilenceRuleTab.tsx:189:23",className:"text-[10px] text-muted-foreground/60 mt-1",children:["创建于 ",q(o.created_at)]})]}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/SilenceRuleTab.tsx:195:21",className:"flex items-center gap-2 shrink-0",children:[e.jsx(Ie,{"code-path":"src/components/monitor/alert-center/SilenceRuleTab.tsx:196:23",checked:T,onCheckedChange:()=>k(o)}),e.jsxs(d,{"code-path":"src/components/monitor/alert-center/SilenceRuleTab.tsx:200:23",variant:"ghost",size:"sm",className:"h-7 text-xs",onClick:()=>x(o),children:[e.jsx(Ct,{"code-path":"src/components/monitor/alert-center/SilenceRuleTab.tsx:201:25",className:"w-3 h-3 mr-1"}),"编辑"]}),e.jsxs(d,{"code-path":"src/components/monitor/alert-center/SilenceRuleTab.tsx:203:23",variant:"ghost",size:"sm",className:"h-7 text-xs text-red-400",onClick:()=>h(o),children:[e.jsx(ft,{"code-path":"src/components/monitor/alert-center/SilenceRuleTab.tsx:204:25",className:"w-3 h-3 mr-1"}),"删除"]})]})]})})},o.id)})}),e.jsx(Ot,{"code-path":"src/components/monitor/alert-center/SilenceRuleTab.tsx:216:7",open:u,onOpenChange:i,editingSilence:A,onSaved:f})]})},ir=()=>{const r=$e(),[p,n]=s.useState([]),[w,C]=s.useState([]),[u,i]=s.useState(!1),[A,D]=s.useState(""),[f,y]=s.useState("all"),[x,h]=s.useState("all"),[k,L]=s.useState("alerts"),[o,b]=s.useState(null),[T,S]=s.useState(!1),[$,m]=s.useState(!1),[N,z]=s.useState({firing:0,critical:0,warning:0,resolved:0}),[Be,me]=s.useState(!1),[Me,de]=s.useState(null),[Ce,fe]=s.useState(!1),[K,Pe]=s.useState([]),[ve,We]=s.useState([]),[qe,pe]=s.useState(!1),[Fe,Ae]=s.useState(null),[Je,xe]=s.useState(!1),[Ve,Ne]=s.useState(null),[G,Z]=s.useState(1),[ye]=s.useState(10),[he,He]=s.useState(0),I=Math.max(1,Math.ceil(he/ye));s.useEffect(()=>{we(),k==="contacts"&&X(),k==="groups"&&(X(),ee());const t=setInterval(we,3e4);return()=>clearInterval(t)},[G,f,x,k]);const we=async()=>{await Promise.all([B(),M()])},B=async()=>{i(!0);try{const t=await R.getAlerts({page:G,page_size:ye,severity:f!=="all"?f:void 0,status:x!=="all"?x:void 0}),a=(t.list||t.data?.list||[]).map(wt);n(a),He(t.total||t.data?.total||a.length),z({firing:a.filter(g=>g.status==="firing").length,critical:a.filter(g=>g.severity==="critical"&&g.status==="firing").length,warning:a.filter(g=>g.severity==="warning"&&g.status==="firing").length,resolved:a.filter(g=>g.status==="resolved").length})}catch{l.error("获取告警失败")}finally{i(!1)}},M=async()=>{try{const t=await ge.listRules(),c=Array.isArray(t)?t:t.list||[];C(c.map(a=>({id:a.id,name:a.name,description:`${a.metric} ${a.operator} ${a.threshold}%`,enabled:a.enabled,severity:"warning",type:a.metric,hostname:a.hostname||"全部主机",threshold:a.threshold})))}catch{l.error("获取告警规则失败")}},X=async()=>{try{const t=await O.getContacts();Pe(t?.data?.list||t?.list||[])}catch{}},ee=async()=>{try{const t=await O.getContactGroups();We(t?.data?.list||t?.list||[])}catch{}},be=async t=>{try{await R.acknowledge(t),l.success("告警已确认"),B()}catch{l.error("操作失败")}},Ue=async t=>{try{await R.resolve(t),l.success("告警已解决"),B()}catch{l.error("操作失败")}},Qe=async(t,c)=>{try{const a=p.find(nt=>nt.id===t),g=new Date,ue=c.match(/^(\d+)([hd])$/),ke=ue?parseInt(ue[1]):1,tt=(ue?.[2]||"h")==="d"?ke*24:ke,rt=new Date(g.getTime()+tt*36e5);await R.createSilence({name:`静默: ${a?.title||t} (${c})`,description:`从告警列表快速静默 — ${a?.source||""}`,silence_type:"onetime",start_time:g.toISOString(),end_time:rt.toISOString()}),l.success(`告警已静默 ${c}`),m(!1),B()}catch{l.error("操作失败")}},Ye=async(t,c)=>{try{await ge.updateRule(Number(t),{enabled:c}),C(w.map(a=>String(a.id)===t?{...a,enabled:c}:a)),l.success("规则状态已更新")}catch{l.error("更新失败")}},Ke=()=>{de(null),me(!0)},Ze=t=>{de(t),me(!0)},Se=()=>{me(!1),de(null)},Xe=async()=>{if(await r({title:"一键报警",description:"为 Agent 在线主机创建 CPU(>80%)/内存(>80%)/磁盘(>90%)/TIME_WAIT(>15000)/CLOSE_WAIT(>200)/进程检测 6 条告警规则。",confirmText:"确认创建"})){fe(!0);try{const c=await R.quickSetup("ecs");l.success(typeof c=="string"?c:c?.message||"默认告警规则创建成功"),M()}catch{l.error("创建失败,请检查 Agent 主机是否在线")}finally{fe(!1)}}},et=async t=>{if(await r({title:"删除规则",description:`确定删除规则「${t.name}」?`,confirmText:"删除",variant:"destructive"}))try{await ge.deleteRule(Number(t.id)),l.success("已删除"),M()}catch{l.error("删除失败")}},De=(t,c)=>{t==="severity"?y(c):h(c),Z(1)};return e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:222:5",className:"space-y-3",children:[e.jsx(dt,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:224:7",items:[{label:"触发中",value:N.firing,color:N.firing>0?"red":"muted"},{label:"严重",value:N.critical,color:"red"},{label:"警告",value:N.warning,color:"amber"},{label:"已解决",value:N.resolved,color:"emerald"}]}),e.jsxs(pt,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:233:7",value:k,onValueChange:L,children:[e.jsxs(xt,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:234:9",className:"grid w-full grid-cols-5 lg:w-[600px] h-9",children:[e.jsx(P,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:235:11",value:"alerts",className:"text-xs",children:"告警列表"}),e.jsx(P,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:236:11",value:"rules",className:"text-xs",children:"告警规则"}),e.jsx(P,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:237:11",value:"silences",className:"text-xs",children:"静默规则"}),e.jsx(P,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:238:11",value:"contacts",className:"text-xs",children:"报警联系人"}),e.jsx(P,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:239:11",value:"groups",className:"text-xs",children:"报警联系组"})]}),e.jsxs(W,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:243:9",value:"alerts",className:"space-y-3",children:[e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:244:11",className:"flex flex-wrap items-center justify-between gap-2",children:[e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:245:13",className:"flex items-center gap-2 flex-1 min-w-[280px]",children:[e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:246:15",className:"relative flex-1",children:[e.jsx(vt,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:247:17",className:"absolute left-2.5 top-1/2 -translate-y-1/2 w-3.5 h-3.5 text-muted-foreground"}),e.jsx(E,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:248:17",placeholder:"搜索告警...",value:A,onChange:t=>D(t.target.value),className:"pl-8 h-8 text-xs"})]}),e.jsxs(se,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:255:15",value:f,onValueChange:t=>De("severity",t),children:[e.jsx(oe,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:256:17",className:"w-[100px] h-8 text-xs",children:e.jsx(ce,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:257:19",placeholder:"级别"})}),e.jsxs(ae,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:259:17",children:[e.jsx(_,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:260:19",value:"all",children:"全部级别"}),e.jsx(_,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:261:19",value:"critical",children:"严重"}),e.jsx(_,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:262:19",value:"warning",children:"警告"}),e.jsx(_,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:263:19",value:"info",children:"信息"})]})]}),e.jsxs(se,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:266:15",value:x,onValueChange:t=>De("status",t),children:[e.jsx(oe,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:267:17",className:"w-[100px] h-8 text-xs",children:e.jsx(ce,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:268:19",placeholder:"状态"})}),e.jsxs(ae,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:270:17",children:[e.jsx(_,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:271:19",value:"all",children:"全部状态"}),e.jsx(_,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:272:19",value:"firing",children:"触发中"}),e.jsx(_,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:273:19",value:"acknowledged",children:"已确认"}),e.jsx(_,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:274:19",value:"resolved",children:"已解决"})]})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:278:13",className:"flex items-center gap-1 text-xs text-muted-foreground",children:[e.jsxs("span",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:279:15",children:["共 ",he," 条"]}),e.jsxs(d,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:280:15",variant:"outline",size:"sm",onClick:B,className:"h-7 text-xs px-2",children:[e.jsx(re,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:281:17",className:"w-3 h-3 mr-1"}),"刷新"]})]})]}),e.jsx(F,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:287:11",children:e.jsxs(J,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:288:13",className:"p-0",children:[e.jsx("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:289:15",className:"overflow-x-auto",children:e.jsxs("table",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:290:17",className:"w-full text-sm",children:[e.jsx("thead",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:291:19",className:"bg-muted/50",children:e.jsxs("tr",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:292:21",children:[e.jsx("th",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:293:23",className:"px-3 py-2 text-left text-xs font-medium",children:"告警信息"}),e.jsx("th",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:294:23",className:"px-3 py-2 text-left text-xs font-medium w-16",children:"级别"}),e.jsx("th",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:295:23",className:"px-3 py-2 text-left text-xs font-medium w-16",children:"状态"}),e.jsx("th",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:296:23",className:"px-3 py-2 text-left text-xs font-medium w-24",children:"来源"}),e.jsx("th",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:297:23",className:"px-3 py-2 text-left text-xs font-medium w-20",children:"持续"}),e.jsx("th",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:298:23",className:"px-3 py-2 text-left text-xs font-medium w-28",children:"操作"})]})}),e.jsx("tbody",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:301:19",className:"divide-y",children:u?e.jsx("tr",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:303:23",children:e.jsx("td",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:303:27",colSpan:6,className:"px-3 py-6 text-center text-xs text-muted-foreground",children:"加载中..."})}):p.length===0?e.jsx("tr",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:305:23",children:e.jsx("td",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:305:27",colSpan:6,className:"px-3 py-6 text-center text-xs text-muted-foreground",children:"暂无告警"})}):p.filter(t=>{if(!A)return!0;const c=A.toLowerCase();return t.title.toLowerCase().includes(c)||t.description.toLowerCase().includes(c)||t.source.toLowerCase().includes(c)}).map(t=>e.jsxs("tr",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:315:25",className:"hover:bg-muted/50",children:[e.jsxs("td",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:316:27",className:"px-3 py-2",children:[e.jsx("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:317:29",className:"font-medium text-xs",children:t.title}),e.jsx("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:318:29",className:"text-xs text-muted-foreground line-clamp-1",children:t.description}),e.jsx("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:319:29",className:"flex gap-1 mt-0.5",children:Object.entries(t.labels).slice(0,2).map(([c,a])=>e.jsxs(v,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:321:33",variant:"outline",className:"text-[10px] px-1 py-0",children:[c,"=",a]},c))})]}),e.jsx("td",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:325:27",className:"px-3 py-2",children:je(t.severity)}),e.jsx("td",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:326:27",className:"px-3 py-2",children:bt(t.status)}),e.jsxs("td",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:327:27",className:"px-3 py-2 text-xs",children:[e.jsx("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:328:29",children:t.source}),e.jsx("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:329:29",className:"text-muted-foreground text-[10px]",children:t.service})]}),e.jsx("td",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:331:27",className:"px-3 py-2 text-xs text-muted-foreground",children:t.status==="resolved"&&t.resolvedAt?`${Math.floor((new Date(t.resolvedAt).getTime()-new Date(t.startedAt).getTime())/6e4)}分`:`${Math.floor((Date.now()-new Date(t.startedAt).getTime())/6e4)}分`}),e.jsx("td",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:336:27",className:"px-3 py-2",children:e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:337:29",className:"flex items-center gap-0.5",children:[e.jsx(d,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:338:31",variant:"ghost",size:"sm",className:"h-7 w-7 p-0",onClick:()=>{b(t),S(!0)},children:e.jsx(it,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:340:33",className:"w-3.5 h-3.5"})}),t.status==="firing"&&e.jsx(d,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:343:33",variant:"ghost",size:"sm",className:"h-7 w-7 p-0",onClick:()=>be(t.id),children:e.jsx(Ge,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:345:35",className:"w-3.5 h-3.5 text-blue-600"})}),(t.status==="firing"||t.status==="acknowledged")&&e.jsx(d,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:349:33",variant:"ghost",size:"sm",className:"h-7 w-7 p-0",onClick:()=>Ue(t.id),children:e.jsx(ze,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:351:35",className:"w-3.5 h-3.5 text-green-600"})}),e.jsx(d,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:354:31",variant:"ghost",size:"sm",className:"h-7 w-7 p-0",onClick:()=>{b(t),m(!0)},children:e.jsx(le,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:356:33",className:"w-3.5 h-3.5 text-orange-600"})})]})})]},t.id))})]})}),I>1&&e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:368:17",className:"flex items-center justify-between px-3 py-2 border-t text-xs",children:[e.jsxs("span",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:369:19",className:"text-muted-foreground",children:["第 ",G,"/",I," 页,共 ",he," 条"]}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:370:19",className:"flex items-center gap-1",children:[e.jsx(d,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:371:21",variant:"outline",size:"sm",className:"h-7 text-xs px-2",disabled:G<=1,onClick:()=>Z(t=>t-1),children:"上一页"}),Array.from({length:Math.min(I,5)},(t,c)=>{const g=Math.max(1,Math.min(G-2,I-4))+c;return g>I?null:e.jsx(d,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:380:25",variant:g===G?"default":"outline",size:"sm",className:"h-7 min-w-[28px] text-xs px-1",onClick:()=>Z(g),children:g},g)}),e.jsx(d,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:387:21",variant:"outline",size:"sm",className:"h-7 text-xs px-2",disabled:G>=I,onClick:()=>Z(t=>t+1),children:"下一页"})]})]})]})})]}),e.jsxs(W,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:399:9",value:"rules",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:400:11",className:"flex justify-between items-center",children:[e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:401:13",className:"flex items-center gap-2",children:[e.jsxs(d,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:402:15",onClick:Ke,children:[e.jsx(ne,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:403:17",className:"w-4 h-4 mr-1"}),"添加规则"]}),e.jsxs(d,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:405:15",variant:"secondary",onClick:Xe,disabled:Ce,children:[e.jsx(mt,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:406:17",className:"w-4 h-4 mr-1"}),Ce?"创建中…":"一键报警"]})]}),e.jsxs(d,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:410:13",variant:"outline",onClick:M,children:[e.jsx(re,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:411:15",className:"w-4 h-4 mr-2"}),"刷新"]})]}),w.length===0?e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:416:13",className:"text-center py-12 text-muted-foreground",children:[e.jsx(Le,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:417:15",className:"w-10 h-10 mx-auto mb-2 opacity-50"}),e.jsx("p",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:418:15",className:"text-sm",children:"暂无告警规则"}),e.jsx("p",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:419:15",className:"text-xs mt-1",children:"点击「添加规则」或「一键报警」快速创建"})]}):e.jsx("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:422:11",className:"grid grid-cols-1 gap-4",children:w.map(t=>e.jsx(F,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:424:15",children:e.jsx(J,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:425:17",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:426:19",className:"flex items-start justify-between",children:[e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:427:21",className:"flex-1",children:[e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:428:23",className:"flex items-center gap-2 mb-2",children:[e.jsx("span",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:429:25",className:"font-medium",children:t.name}),je(t.severity),e.jsx(v,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:431:25",variant:t.enabled?"default":"secondary",children:t.enabled?"已启用":"已禁用"})]}),e.jsx("p",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:435:23",className:"text-sm text-muted-foreground mb-2",children:t.description}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:436:23",className:"flex items-center gap-4 text-xs text-muted-foreground",children:[t.expression&&e.jsx("span",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:438:27",className:"font-mono bg-muted px-2 py-1 rounded",children:t.expression}),t.duration?e.jsxs("span",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:440:42",children:["持续 ",t.duration,"秒"]}):null]}),(()=>{let c=[];try{const a=t.notify_channels;a&&(c=Array.isArray(a)?a:JSON.parse(a))}catch{}return c.length?e.jsx("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:450:27",className:"flex gap-1 mt-2",children:c.map(a=>e.jsx(v,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:452:31",variant:"outline",className:"text-xs",children:a},a))}):null})()]}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:458:21",className:"flex items-center gap-2",children:[e.jsx(d,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:459:23",variant:"ghost",size:"sm",onClick:()=>Ze(t),children:"编辑"}),e.jsx(d,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:460:23",variant:"ghost",size:"sm",className:"text-red-400",onClick:()=>et(t),children:"删除"}),e.jsx(Ie,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:461:23",checked:t.enabled,onCheckedChange:c=>Ye(String(t.id),c)})]})]})})},t.id))})]}),e.jsx(W,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:475:9",value:"silences",children:e.jsx(Gt,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:476:11"})}),e.jsxs(W,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:480:9",value:"contacts",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:481:13",className:"flex justify-between items-center",children:[e.jsx("h3",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:482:15",className:"text-sm font-medium",children:"报警联系人"}),e.jsxs(d,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:483:15",size:"sm",onClick:()=>{Ae(null),pe(!0)},children:[e.jsx(ne,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:484:17",className:"w-4 h-4 mr-1"}),"添加联系人"]})]}),K.length===0?e.jsx("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:489:15",className:"text-center py-8 text-muted-foreground border border-dashed rounded-lg text-xs",children:"暂无报警联系人,点击「添加联系人」创建"}):e.jsx("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:493:15",className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-3",children:K.map(t=>e.jsxs(F,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:495:19",className:"hover:border-primary/50 transition-colors",children:[e.jsx(Te,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:496:21",className:"pb-2",children:e.jsx("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:497:23",className:"flex items-start justify-between",children:e.jsx(_e,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:498:25",className:"text-sm",children:t.name})})}),e.jsxs(J,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:501:21",className:"pt-0 space-y-1 text-xs text-muted-foreground",children:[t.phone&&e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:502:35",children:["📱 ",t.phone]}),t.email&&e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:503:35",children:["📧 ",t.email]}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:504:23",className:"flex gap-1 flex-wrap",children:[t.channel_type&&e.jsx(v,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:506:27",variant:"outline",className:"text-[10px]",children:St(t.channel_type)}),t.webhook_url&&e.jsx("span",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:511:27",className:"text-[10px] text-muted-foreground truncate max-w-[200px]",title:t.webhook_url,children:t.webhook_url})]}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:516:23",className:"flex gap-1.5 pt-1.5",children:[e.jsx(d,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:517:25",variant:"outline",size:"sm",className:"h-7 text-xs flex-1",onClick:()=>{Ae(t),pe(!0)},children:"编辑"}),e.jsx(d,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:521:25",variant:"outline",size:"sm",className:"h-7 text-xs",onClick:async()=>{if(await r({title:"删除联系人",description:`确定删除「${t.name}」?`,confirmText:"删除",variant:"destructive"}))try{await O.deleteContact(t.id),l.success("已删除"),X()}catch{l.error("删除失败")}},children:"删除"})]})]})]},t.id))})]}),e.jsxs(W,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:539:9",value:"groups",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:540:11",className:"flex justify-between items-center",children:[e.jsxs(d,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:541:13",variant:"outline",onClick:ee,children:[e.jsx(re,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:542:15",className:"w-4 h-4 mr-2"}),"刷新"]}),e.jsxs(d,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:545:13",onClick:()=>{Ne(null),xe(!0)},children:[e.jsx(ne,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:546:15",className:"w-4 h-4 mr-2"}),"添加联系组"]})]}),ve.length===0?e.jsx("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:551:13",className:"text-center py-16 text-muted-foreground border border-dashed rounded-lg",children:"暂无报警联系组,点击「添加联系组」创建"}):e.jsx("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:555:13",className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",children:ve.map(t=>{let c=[];try{c=JSON.parse(t.contact_ids||"[]")}catch{}const a=K.filter(g=>c.includes(g.id)).map(g=>g.name);return e.jsxs(F,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:563:19",className:"hover:border-primary/50 transition-colors",children:[e.jsx(Te,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:564:21",children:e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:565:23",className:"flex items-start justify-between",children:[e.jsx(_e,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:566:25",className:"text-base",children:t.group_name}),e.jsxs(v,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:567:25",variant:"secondary",children:[c.length," 人"]})]})}),e.jsxs(J,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:570:21",className:"pt-0 space-y-2",children:[t.notes&&e.jsx("p",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:571:35",className:"text-sm text-muted-foreground",children:t.notes}),e.jsx("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:572:23",className:"flex flex-wrap gap-1",children:a.map(g=>e.jsx(v,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:574:27",variant:"outline",className:"text-xs",children:g},g))}),e.jsxs("div",{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:577:23",className:"flex gap-2 pt-2",children:[e.jsx(d,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:578:25",variant:"outline",size:"sm",className:"flex-1",onClick:()=>{Ne(t),xe(!0)},children:"编辑"}),e.jsx(d,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:582:25",variant:"outline",size:"sm",onClick:async()=>{if(await r({title:"删除联系组",description:`确定删除联系组「${t.group_name}」?`,confirmText:"删除",variant:"destructive"}))try{await O.deleteContactGroup(t.id),l.success("已删除"),ee()}catch{l.error("删除失败")}},children:"删除"})]})]})]},t.id)})})]})]}),e.jsx(Dt,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:601:7",alert:o,open:T,onOpenChange:S,onAcknowledge:be}),e.jsx(kt,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:607:7",alert:o,open:$,onOpenChange:m,onSilence:Qe}),e.jsx(ut,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:613:7",open:Be,onOpenChange:Se,editingRule:Me,notifyChannels:[],onSaved:()=>{Se(),M()}}),e.jsx(Tt,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:620:7",open:qe,onOpenChange:pe,editingContact:Fe,onSaved:X}),e.jsx(_t,{"code-path":"src/components/monitor/alert-center/AlertCenter.tsx:626:7",open:Je,onOpenChange:xe,editingGroup:Ve,contacts:K,onSaved:()=>{ee()}})]})};export{ir as default}; diff --git a/backend/static/assets/AlertManager-BaUrn6Bk.js b/backend/static/assets/AlertManager-BaUrn6Bk.js deleted file mode 100644 index 94ca5a5..0000000 --- a/backend/static/assets/AlertManager-BaUrn6Bk.js +++ /dev/null @@ -1 +0,0 @@ -import{a as _,r as l,j as e,S as ee,I as Y,L as O,B as A,a3 as $,J,T as z,E as Q,D as te,b as se,c as oe,d as ae,e as ne,f as re,x as ce}from"./index-DfyorCky.js";import{C as w,a as M,b as le,c as ie,d as me}from"./card-C55cvSHg.js";import{T as de,a as xe,b as H,c as I}from"./tabs-CIh_yD4s.js";import{a as g}from"./monitor-BAaBXIsC.js";import{B as f}from"./badge-xNW8x0G1.js";import{T as X,a as V,b as E,c as i,d as q,e as c}from"./table-5sHV4Akp.js";import{S as B}from"./switch-CGiGgOnh.js";import{C as G}from"./checkbox-CH0bpj6b.js";import{t as R}from"./index-a3ybMjbR.js";import{r as pe,g as he,C as K,A as ge}from"./AlertRuleDialog-DnF-_Zoj.js";import{T as P}from"./trash-2-Dx32pOzT.js";import{L as D}from"./label-BK0h2apY.js";import{T as be}from"./textarea-NXY8u32k.js";import{P as U}from"./plus-CUG-9kpu.js";import{R as Ae,C as je,X as ue,Y as Ne,T as ve}from"./generateCategoricalChart-6v9BPbG2.js";import{A as fe,a as W}from"./AreaChart-B2zlWfdX.js";import"./index-CWVNW_qu.js";import"./message-square-DyxabBvb.js";import"./phone-DgvWDdJl.js";function Te({alerts:m,loading:T,onReload:d}){_();const[p,u]=l.useState(""),[o,h]=l.useState("all"),[b,C]=l.useState("all"),j=m.filter(t=>{const r=(t.rule&&t.rule.name||t.message||"").toLowerCase().includes(p.toLowerCase())||(t.target||"").toLowerCase().includes(p.toLowerCase()),N=o==="all"||t.severity===o,v=b==="all"||t.status===b;return r&&N&&v}),y=t=>{switch(t){case"critical":return e.jsxs(f,{"code-path":"src/components/monitor/AlertEventsTab.tsx:45:11",variant:"outline",className:"border-red-500/30 text-red-400 bg-red-500/10",children:[e.jsx(z,{"code-path":"src/components/monitor/AlertEventsTab.tsx:46:13",className:"h-3 w-3 mr-1"}),"严重"]});case"warning":return e.jsxs(f,{"code-path":"src/components/monitor/AlertEventsTab.tsx:52:11",variant:"outline",className:"border-amber-500/30 text-amber-400 bg-amber-500/10",children:[e.jsx(z,{"code-path":"src/components/monitor/AlertEventsTab.tsx:53:13",className:"h-3 w-3 mr-1"}),"警告"]});case"info":return e.jsxs(f,{"code-path":"src/components/monitor/AlertEventsTab.tsx:59:11",variant:"outline",className:"border-blue-500/30 text-blue-400 bg-blue-500/10",children:[e.jsx(J,{"code-path":"src/components/monitor/AlertEventsTab.tsx:60:13",className:"h-3 w-3 mr-1"}),"提示"]});default:return null}},a=t=>{switch(t){case"firing":return e.jsx(f,{"code-path":"src/components/monitor/AlertEventsTab.tsx:73:11",variant:"outline",className:"border-red-500/30 text-red-400 bg-red-500/10 animate-pulse",children:"触发中"});case"resolved":return e.jsx(f,{"code-path":"src/components/monitor/AlertEventsTab.tsx:79:11",variant:"outline",className:"border-emerald-500/30 text-emerald-400 bg-emerald-500/10",children:"已恢复"});default:return null}},x=async t=>{try{await g.acknowledge(t),d()}catch(r){console.error("Failed to acknowledge alert:",r)}};return e.jsxs("div",{"code-path":"src/components/monitor/AlertEventsTab.tsx:98:5",className:"mt-4 space-y-4",children:[e.jsxs("div",{"code-path":"src/components/monitor/AlertEventsTab.tsx:100:7",className:"flex items-center gap-3 flex-wrap",children:[e.jsxs("div",{"code-path":"src/components/monitor/AlertEventsTab.tsx:101:9",className:"relative w-64",children:[e.jsx(ee,{"code-path":"src/components/monitor/AlertEventsTab.tsx:102:11",className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-slate-500"}),e.jsx(Y,{"code-path":"src/components/monitor/AlertEventsTab.tsx:103:11",placeholder:"搜索告警名称或目标...",value:p,onChange:t=>u(t.target.value),className:"pl-9 h-9 bg-slate-800/50 border-slate-700 text-slate-200 placeholder:text-slate-500"})]}),e.jsxs("select",{"code-path":"src/components/monitor/AlertEventsTab.tsx:110:9",value:o,onChange:t=>h(t.target.value),className:"h-9 px-3 rounded-md bg-slate-800/50 border border-slate-700 text-slate-200 text-sm",children:[e.jsx("option",{"code-path":"src/components/monitor/AlertEventsTab.tsx:115:11",value:"all",children:"全部级别"}),e.jsx("option",{"code-path":"src/components/monitor/AlertEventsTab.tsx:116:11",value:"critical",children:"严重"}),e.jsx("option",{"code-path":"src/components/monitor/AlertEventsTab.tsx:117:11",value:"warning",children:"警告"}),e.jsx("option",{"code-path":"src/components/monitor/AlertEventsTab.tsx:118:11",value:"info",children:"提示"})]}),e.jsxs("select",{"code-path":"src/components/monitor/AlertEventsTab.tsx:120:9",value:b,onChange:t=>C(t.target.value),className:"h-9 px-3 rounded-md bg-slate-800/50 border border-slate-700 text-slate-200 text-sm",children:[e.jsx("option",{"code-path":"src/components/monitor/AlertEventsTab.tsx:125:11",value:"all",children:"全部状态"}),e.jsx("option",{"code-path":"src/components/monitor/AlertEventsTab.tsx:126:11",value:"firing",children:"触发中"}),e.jsx("option",{"code-path":"src/components/monitor/AlertEventsTab.tsx:127:11",value:"resolved",children:"已恢复"})]})]}),e.jsx(w,{"code-path":"src/components/monitor/AlertEventsTab.tsx:132:7",className:"bg-slate-900 border-slate-800",children:e.jsx(M,{"code-path":"src/components/monitor/AlertEventsTab.tsx:133:9",className:"p-0",children:e.jsx("div",{"code-path":"src/components/monitor/AlertEventsTab.tsx:134:11",className:"border-t border-slate-800",children:e.jsxs(X,{"code-path":"src/components/monitor/AlertEventsTab.tsx:135:13",children:[e.jsx(V,{"code-path":"src/components/monitor/AlertEventsTab.tsx:136:15",children:e.jsxs(E,{"code-path":"src/components/monitor/AlertEventsTab.tsx:137:17",className:"border-slate-800 hover:bg-transparent",children:[e.jsx(i,{"code-path":"src/components/monitor/AlertEventsTab.tsx:138:19",className:"text-slate-400",children:"级别"}),e.jsx(i,{"code-path":"src/components/monitor/AlertEventsTab.tsx:139:19",className:"text-slate-400",children:"告警名称"}),e.jsx(i,{"code-path":"src/components/monitor/AlertEventsTab.tsx:140:19",className:"text-slate-400",children:"状态"}),e.jsx(i,{"code-path":"src/components/monitor/AlertEventsTab.tsx:141:19",className:"text-slate-400",children:"目标"}),e.jsx(i,{"code-path":"src/components/monitor/AlertEventsTab.tsx:142:19",className:"text-slate-400",children:"当前值"}),e.jsx(i,{"code-path":"src/components/monitor/AlertEventsTab.tsx:143:19",className:"text-slate-400",children:"阈值"}),e.jsx(i,{"code-path":"src/components/monitor/AlertEventsTab.tsx:144:19",className:"text-slate-400",children:"开始时间"}),e.jsx(i,{"code-path":"src/components/monitor/AlertEventsTab.tsx:145:19",className:"text-slate-400 text-right",children:"操作"})]})}),e.jsx(q,{"code-path":"src/components/monitor/AlertEventsTab.tsx:148:15",children:T?e.jsx(E,{"code-path":"src/components/monitor/AlertEventsTab.tsx:150:19",className:"border-slate-800",children:e.jsxs(c,{"code-path":"src/components/monitor/AlertEventsTab.tsx:151:21",colSpan:8,className:"text-center text-slate-500 py-8",children:[e.jsx(O,{"code-path":"src/components/monitor/AlertEventsTab.tsx:152:23",className:"h-5 w-5 animate-spin inline mr-2"}),"加载中..."]})}):j.map(t=>e.jsxs(E,{"code-path":"src/components/monitor/AlertEventsTab.tsx:157:19",className:"border-slate-800 hover:bg-slate-800/50",children:[e.jsx(c,{"code-path":"src/components/monitor/AlertEventsTab.tsx:158:21",children:y(t.severity)}),e.jsx(c,{"code-path":"src/components/monitor/AlertEventsTab.tsx:159:21",children:e.jsx("span",{"code-path":"src/components/monitor/AlertEventsTab.tsx:160:23",className:"text-sm font-medium text-slate-200",children:t.rule&&t.rule.name||t.message})}),e.jsx(c,{"code-path":"src/components/monitor/AlertEventsTab.tsx:164:21",children:a(t.status)}),e.jsx(c,{"code-path":"src/components/monitor/AlertEventsTab.tsx:165:21",className:"max-w-[160px]",children:e.jsx("span",{"code-path":"src/components/monitor/AlertEventsTab.tsx:166:23",className:"text-sm text-slate-300 block truncate",title:t.target,children:t.target})}),e.jsx(c,{"code-path":"src/components/monitor/AlertEventsTab.tsx:168:21",children:e.jsx("span",{"code-path":"src/components/monitor/AlertEventsTab.tsx:169:23",className:"text-sm text-slate-300",children:typeof t.value=="number"?t.value.toFixed(1):t.value})}),e.jsx(c,{"code-path":"src/components/monitor/AlertEventsTab.tsx:171:21",children:e.jsx("span",{"code-path":"src/components/monitor/AlertEventsTab.tsx:172:23",className:"text-sm text-slate-500",children:t.threshold})}),e.jsx(c,{"code-path":"src/components/monitor/AlertEventsTab.tsx:174:21",children:e.jsx("span",{"code-path":"src/components/monitor/AlertEventsTab.tsx:175:23",className:"text-sm text-slate-400",children:t.created_at?new Date(t.created_at).toLocaleString():"--"})}),e.jsx(c,{"code-path":"src/components/monitor/AlertEventsTab.tsx:179:21",className:"text-right",children:e.jsx("div",{"code-path":"src/components/monitor/AlertEventsTab.tsx:180:23",className:"flex items-center justify-end gap-1",children:t.status==="firing"&&e.jsxs(A,{"code-path":"src/components/monitor/AlertEventsTab.tsx:182:27",variant:"ghost",size:"sm",className:"h-8 text-slate-400 hover:text-emerald-400",onClick:()=>x(t.id),children:[e.jsx($,{"code-path":"src/components/monitor/AlertEventsTab.tsx:188:29",className:"h-4 w-4 mr-1"}),"确认"]})})})]},t.id))})]})})})})]})}const Ce=9;function ye({rules:m,notifyChannels:T,onReload:d,onEditRule:p}){const u=_(),[o,h]=l.useState([]),b=()=>{m.length>0&&o.length===m.length?h([]):h(m.map(t=>t.id))},C=t=>{h(r=>r.includes(t)?r.filter(N=>N!==t):[...r,t])},j=async t=>{if(await u({title:"删除告警规则",description:"确定删除此告警规则?",confirmText:"删除",variant:"destructive"}))try{await g.deleteRule(t),R.success("告警规则已删除"),d()}catch(N){console.error("Failed to delete rule:",N),R.error("删除失败")}},y=async()=>{if(!(o.length===0||!await u({title:"批量删除告警规则",description:`确定删除选中的 ${o.length} 条告警规则吗?此操作不可撤销。`,confirmText:"批量删除",variant:"destructive"})))try{await g.batchDeleteRules(o),R.success(`已删除 ${o.length} 条告警规则`),h([]),d()}catch(r){console.error("Failed to batch delete rules:",r),R.error("批量删除失败")}},a=async t=>{try{await g.toggleRule(t),d()}catch(r){console.error("Failed to toggle rule:",r)}},x=m.length>0&&o.length===m.length;return e.jsxs("div",{"code-path":"src/components/monitor/AlertRulesTab.tsx:104:5",className:"mt-4",children:[o.length>0&&e.jsxs("div",{"code-path":"src/components/monitor/AlertRulesTab.tsx:107:9",className:"flex items-center gap-2 mb-3",children:[e.jsxs("span",{"code-path":"src/components/monitor/AlertRulesTab.tsx:108:11",className:"text-sm text-slate-400",children:["已选择 ",o.length," 项"]}),e.jsxs(A,{"code-path":"src/components/monitor/AlertRulesTab.tsx:109:11",variant:"outline",size:"sm",className:"border-red-500/30 text-red-400 hover:bg-red-500/10",onClick:y,children:[e.jsx(P,{"code-path":"src/components/monitor/AlertRulesTab.tsx:115:13",className:"h-4 w-4 mr-2"}),"批量删除"]})]}),e.jsx(w,{"code-path":"src/components/monitor/AlertRulesTab.tsx:121:7",className:"bg-slate-900 border-slate-800",children:e.jsx(M,{"code-path":"src/components/monitor/AlertRulesTab.tsx:122:9",className:"p-0",children:e.jsx("div",{"code-path":"src/components/monitor/AlertRulesTab.tsx:123:11",className:"border-t border-slate-800",children:e.jsxs(X,{"code-path":"src/components/monitor/AlertRulesTab.tsx:124:13",children:[e.jsx(V,{"code-path":"src/components/monitor/AlertRulesTab.tsx:125:15",children:e.jsxs(E,{"code-path":"src/components/monitor/AlertRulesTab.tsx:126:17",className:"border-slate-800 hover:bg-transparent",children:[e.jsx(i,{"code-path":"src/components/monitor/AlertRulesTab.tsx:127:19",className:"w-12",children:e.jsx(G,{"code-path":"src/components/monitor/AlertRulesTab.tsx:128:21",checked:x,onCheckedChange:b,className:"border-slate-600"})}),e.jsx(i,{"code-path":"src/components/monitor/AlertRulesTab.tsx:134:19",className:"text-slate-400",children:"规则名称"}),e.jsx(i,{"code-path":"src/components/monitor/AlertRulesTab.tsx:135:19",className:"text-slate-400",children:"数据源"}),e.jsx(i,{"code-path":"src/components/monitor/AlertRulesTab.tsx:136:19",className:"text-slate-400",children:"触发条件"}),e.jsx(i,{"code-path":"src/components/monitor/AlertRulesTab.tsx:137:19",className:"text-slate-400",children:"级别"}),e.jsx(i,{"code-path":"src/components/monitor/AlertRulesTab.tsx:138:19",className:"text-slate-400",children:"持续时间"}),e.jsx(i,{"code-path":"src/components/monitor/AlertRulesTab.tsx:139:19",className:"text-slate-400",children:"通知渠道"}),e.jsx(i,{"code-path":"src/components/monitor/AlertRulesTab.tsx:140:19",className:"text-slate-400",children:"状态"}),e.jsx(i,{"code-path":"src/components/monitor/AlertRulesTab.tsx:141:19",className:"text-slate-400 text-right",children:"操作"})]})}),e.jsx(q,{"code-path":"src/components/monitor/AlertRulesTab.tsx:144:15",children:m.length===0?e.jsx(E,{"code-path":"src/components/monitor/AlertRulesTab.tsx:146:19",className:"border-slate-800",children:e.jsx(c,{"code-path":"src/components/monitor/AlertRulesTab.tsx:147:21",colSpan:Ce,className:"text-center text-slate-500 py-12",children:"暂无告警规则"})}):m.map(t=>e.jsxs(E,{"code-path":"src/components/monitor/AlertRulesTab.tsx:153:21",className:"border-slate-800 hover:bg-slate-800/50",children:[e.jsx(c,{"code-path":"src/components/monitor/AlertRulesTab.tsx:154:23",children:e.jsx(G,{"code-path":"src/components/monitor/AlertRulesTab.tsx:155:25",checked:o.includes(t.id),onCheckedChange:()=>C(t.id),className:"border-slate-600"})}),e.jsx(c,{"code-path":"src/components/monitor/AlertRulesTab.tsx:161:23",children:e.jsxs("div",{"code-path":"src/components/monitor/AlertRulesTab.tsx:162:25",children:[e.jsx("span",{"code-path":"src/components/monitor/AlertRulesTab.tsx:163:27",className:"text-sm font-medium text-slate-200",children:t.name}),t.description&&e.jsx("p",{"code-path":"src/components/monitor/AlertRulesTab.tsx:165:29",className:"text-xs text-slate-500",children:t.description})]})}),e.jsx(c,{"code-path":"src/components/monitor/AlertRulesTab.tsx:169:23",children:e.jsx("code",{"code-path":"src/components/monitor/AlertRulesTab.tsx:170:25",className:"text-xs text-slate-300 bg-slate-800 px-2 py-0.5 rounded",children:t.source||"--"})}),e.jsx(c,{"code-path":"src/components/monitor/AlertRulesTab.tsx:174:23",className:"max-w-[180px]",children:e.jsx("code",{"code-path":"src/components/monitor/AlertRulesTab.tsx:175:25",className:"text-xs text-blue-300 block truncate",title:t.expression,children:t.expression||"--"})}),e.jsx(c,{"code-path":"src/components/monitor/AlertRulesTab.tsx:179:23",children:t.severity==="critical"?e.jsx(f,{"code-path":"src/components/monitor/AlertRulesTab.tsx:181:27",variant:"outline",className:"border-red-500/30 text-red-400 bg-red-500/10",children:"严重"}):t.severity==="warning"?e.jsx(f,{"code-path":"src/components/monitor/AlertRulesTab.tsx:185:27",variant:"outline",className:"border-amber-500/30 text-amber-400 bg-amber-500/10",children:"警告"}):e.jsx(f,{"code-path":"src/components/monitor/AlertRulesTab.tsx:189:27",variant:"outline",className:"border-blue-500/30 text-blue-400 bg-blue-500/10",children:"提示"})}),e.jsx(c,{"code-path":"src/components/monitor/AlertRulesTab.tsx:194:23",children:e.jsxs("span",{"code-path":"src/components/monitor/AlertRulesTab.tsx:195:25",className:"text-sm text-slate-300",children:[(t.duration||0)/60,"分钟"]})}),e.jsx(c,{"code-path":"src/components/monitor/AlertRulesTab.tsx:197:23",children:pe(t,T)}),e.jsx(c,{"code-path":"src/components/monitor/AlertRulesTab.tsx:200:23",children:e.jsx(B,{"code-path":"src/components/monitor/AlertRulesTab.tsx:201:25",checked:!!t.enabled,className:"data-[state=checked]:bg-blue-600",onCheckedChange:()=>a(t.id)})}),e.jsx(c,{"code-path":"src/components/monitor/AlertRulesTab.tsx:207:23",className:"text-right",children:e.jsxs("div",{"code-path":"src/components/monitor/AlertRulesTab.tsx:208:25",className:"flex items-center justify-end gap-1",children:[e.jsx(A,{"code-path":"src/components/monitor/AlertRulesTab.tsx:209:27",variant:"ghost",size:"icon",className:"h-8 w-8 text-slate-400 hover:text-slate-100",onClick:()=>p(t),children:e.jsx(Q,{"code-path":"src/components/monitor/AlertRulesTab.tsx:215:29",className:"h-4 w-4"})}),e.jsx(A,{"code-path":"src/components/monitor/AlertRulesTab.tsx:217:27",variant:"ghost",size:"icon",className:"h-8 w-8 text-slate-400 hover:text-red-400",onClick:()=>j(t.id),children:e.jsx(P,{"code-path":"src/components/monitor/AlertRulesTab.tsx:223:29",className:"h-4 w-4"})})]})})]},t.id))})]})})})})]})}const L={name:"",type:"dingtalk",config:"",enabled:!0};function we({open:m,onOpenChange:T,notifyChannels:d,onChannelsChanged:p}){const u=_(),[o,h]=l.useState(null),[b,C]=l.useState(!1),[j,y]=l.useState(null),[a,x]=l.useState({...L});l.useEffect(()=>{m&&(h(null),x({...L}))},[m]);const t=s=>{h(s),x({name:s.name||"",type:s.type||"dingtalk",config:s.config||"",enabled:s.enabled!==!1})},r=()=>{h(null),x({...L})},N=async()=>{if(a.name.trim()){C(!0);try{const s={name:a.name.trim(),type:a.type,config:a.config.trim()};o?await g.updateNotifyChannel(o.id,{...s,enabled:a.enabled}):await g.createNotifyChannel(s),r(),p()}catch(s){console.error("Failed to save notify channel:",s)}finally{C(!1)}}},v=async s=>{if(await u({title:"删除通知渠道",description:"确定删除此通知渠道?",confirmText:"删除",variant:"destructive"}))try{await g.deleteNotifyChannel(s),o&&o.id===s&&r(),p()}catch(n){console.error("Failed to delete notify channel:",n)}},k=async s=>{try{await g.updateNotifyChannel(s.id,{enabled:!s.enabled}),p()}catch(n){console.error("Failed to toggle notify channel:",n)}},S=async s=>{y(s);try{await g.testNotifyChannel(s),p()}catch(n){console.error("Failed to test notify channel:",n)}finally{y(null)}};return e.jsx(te,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:119:5",open:m,onOpenChange:T,children:e.jsxs(se,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:120:7",className:"bg-slate-900 border-slate-700 text-slate-100 max-w-2xl",children:[e.jsxs(oe,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:121:9",children:[e.jsx(ae,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:122:11",className:"text-slate-100",children:"通知渠道配置"}),e.jsx(ne,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:123:11",className:"text-slate-500",children:"管理告警通知渠道(钉钉/企业微信/邮件/短信/Webhook),配置后可在告警规则中引用"})]}),e.jsxs("div",{"code-path":"src/components/monitor/AlertChannelDialog.tsx:128:9",className:"grid grid-cols-1 lg:grid-cols-2 gap-4 max-h-[65vh] overflow-y-auto pr-1",children:[e.jsxs("div",{"code-path":"src/components/monitor/AlertChannelDialog.tsx:130:11",className:"space-y-2",children:[e.jsxs("div",{"code-path":"src/components/monitor/AlertChannelDialog.tsx:131:13",className:"flex items-center justify-between",children:[e.jsx(D,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:132:15",className:"text-slate-300 text-sm",children:"已配置渠道"}),e.jsxs(A,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:133:15",size:"sm",variant:"outline",className:"h-7 border-slate-700 text-slate-300 hover:bg-slate-800 text-xs",onClick:r,children:[e.jsx(U,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:139:17",className:"h-3 w-3 mr-1"}),"新建"]})]}),d.length===0?e.jsx("div",{"code-path":"src/components/monitor/AlertChannelDialog.tsx:144:15",className:"text-center py-8 text-sm text-slate-600 border border-dashed border-slate-800 rounded-lg",children:"暂无通知渠道,请在右侧添加"}):e.jsx("div",{"code-path":"src/components/monitor/AlertChannelDialog.tsx:148:15",className:"space-y-2",children:d.map(s=>e.jsxs("div",{"code-path":"src/components/monitor/AlertChannelDialog.tsx:150:19",className:`p-3 rounded-lg border cursor-pointer transition-colors ${o&&o.id===s.id?"border-blue-500/50 bg-blue-500/5":"border-slate-800 bg-slate-800/30 hover:border-slate-700"}`,onClick:()=>t(s),children:[e.jsxs("div",{"code-path":"src/components/monitor/AlertChannelDialog.tsx:159:21",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/monitor/AlertChannelDialog.tsx:160:23",className:"flex items-center gap-2 min-w-0",children:[e.jsx("span",{"code-path":"src/components/monitor/AlertChannelDialog.tsx:161:25",className:"text-sm text-slate-200 truncate",children:s.name}),e.jsx(f,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:162:25",variant:"outline",className:"border-slate-600 text-slate-400 text-[10px] py-0",children:he(s.type)})]}),e.jsx(B,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:166:23",checked:s.enabled!==!1,onCheckedChange:()=>k(s),onClick:n=>n.stopPropagation(),className:"data-[state=checked]:bg-emerald-600 scale-90"})]}),e.jsxs("div",{"code-path":"src/components/monitor/AlertChannelDialog.tsx:173:21",className:"flex items-center justify-between mt-2",children:[s.test_status==="success"?e.jsx("span",{"code-path":"src/components/monitor/AlertChannelDialog.tsx:175:25",className:"text-[11px] text-emerald-400",children:"测试通过"}):e.jsx("span",{"code-path":"src/components/monitor/AlertChannelDialog.tsx:177:25",className:"text-[11px] text-slate-600",children:"未测试"}),e.jsxs("div",{"code-path":"src/components/monitor/AlertChannelDialog.tsx:179:23",className:"flex items-center gap-1",onClick:n=>n.stopPropagation(),children:[e.jsx(A,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:180:25",size:"sm",variant:"ghost",className:"h-6 px-2 text-slate-400 hover:text-slate-200 hover:bg-slate-700 text-xs",disabled:j===s.id,onClick:()=>S(s.id),children:j===s.id?e.jsx(O,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:187:55",className:"h-3 w-3 animate-spin"}):"测试"}),e.jsx(A,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:189:25",size:"sm",variant:"ghost",className:"h-6 px-2 text-red-400/70 hover:text-red-400 hover:bg-red-500/10 text-xs",onClick:()=>v(s.id),children:e.jsx(P,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:195:27",className:"h-3 w-3"})})]})]})]},s.id))})]}),e.jsxs("div",{"code-path":"src/components/monitor/AlertChannelDialog.tsx:206:11",className:"space-y-4",children:[e.jsx(D,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:207:13",className:"text-slate-300 text-sm",children:o?"编辑渠道":"新建渠道"}),e.jsxs("div",{"code-path":"src/components/monitor/AlertChannelDialog.tsx:210:13",className:"space-y-1.5",children:[e.jsxs(D,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:211:15",className:"text-slate-400 text-xs",children:["渠道名称 ",e.jsx("span",{"code-path":"src/components/monitor/AlertChannelDialog.tsx:211:62",className:"text-red-400",children:"*"})]}),e.jsx(Y,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:212:15",value:a.name,onChange:s=>x({...a,name:s.target.value}),placeholder:"如:运维告警群",className:"bg-slate-800/50 border-slate-700 text-slate-200 placeholder:text-slate-600 h-9"})]}),e.jsxs("div",{"code-path":"src/components/monitor/AlertChannelDialog.tsx:219:13",className:"space-y-1.5",children:[e.jsx(D,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:220:15",className:"text-slate-400 text-xs",children:"渠道类型"}),e.jsx("select",{"code-path":"src/components/monitor/AlertChannelDialog.tsx:221:15",value:a.type,onChange:s=>x({...a,type:s.target.value}),className:"w-full h-9 px-3 rounded-md bg-slate-800/50 border border-slate-700 text-slate-200 text-sm",children:K.map(({key:s,label:n})=>e.jsx("option",{"code-path":"src/components/monitor/AlertChannelDialog.tsx:227:19",value:s,children:n},s))})]}),e.jsxs("div",{"code-path":"src/components/monitor/AlertChannelDialog.tsx:231:13",className:"space-y-1.5",children:[e.jsx(D,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:232:15",className:"text-slate-400 text-xs",children:"配置(JSON)"}),e.jsx(be,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:233:15",value:a.config,onChange:s=>x({...a,config:s.target.value}),placeholder:K.find(s=>s.key===a.type)?.placeholder||"",rows:5,className:"bg-slate-800/50 border-slate-700 text-slate-200 placeholder:text-slate-600 font-mono text-xs resize-none"})]}),o&&e.jsxs("div",{"code-path":"src/components/monitor/AlertChannelDialog.tsx:242:15",className:"flex items-center gap-2",children:[e.jsx(B,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:243:17",checked:a.enabled,onCheckedChange:s=>x({...a,enabled:s}),className:"data-[state=checked]:bg-emerald-600"}),e.jsx(D,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:248:17",className:"text-slate-400 text-xs",children:"启用此渠道"})]})]})]}),e.jsxs(re,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:254:9",children:[e.jsx(A,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:255:11",variant:"outline",className:"border-slate-700 text-slate-300 hover:bg-slate-800",onClick:()=>T(!1),children:"关闭"}),e.jsxs(A,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:262:11",className:"bg-blue-600 hover:bg-blue-700 text-white",disabled:!a.name.trim()||b,onClick:N,children:[b&&e.jsx(O,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:267:31",className:"h-4 w-4 mr-2 animate-spin"}),o?"保存修改":"添加渠道"]})]})]})})}function $e(){const[m,T]=l.useState("events"),[d,p]=l.useState([]),[u,o]=l.useState([]),[h,b]=l.useState(!0),[C,j]=l.useState(!1),[y,a]=l.useState(null),[x,t]=l.useState(!1),[r,N]=l.useState([]),v=async()=>{try{b(!0);const[n,F,Z]=await Promise.all([g.getAlerts(),g.getRules(),g.getNotifyChannels()]);p(n?.list||[]),o(F?.list||(Array.isArray(F)?F:[])),N(Z?.list||[])}catch(n){console.error("Failed to load alert data:",n)}finally{b(!1)}};l.useEffect(()=>{v()},[]);const k=()=>{a(null),j(!0)},S=n=>{a(n),j(!0)},s=[{time:"00:00",critical:2,warning:5,info:8},{time:"04:00",critical:1,warning:3,info:6},{time:"08:00",critical:3,warning:7,info:12},{time:"12:00",critical:5,warning:10,info:15},{time:"16:00",critical:4,warning:8,info:10},{time:"20:00",critical:3,warning:6,info:9},{time:"24:00",critical:2,warning:4,info:7}];return e.jsxs("div",{"code-path":"src/components/monitor/AlertManager.tsx:75:5",className:"space-y-6",children:[e.jsxs("div",{"code-path":"src/components/monitor/AlertManager.tsx:77:7",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/monitor/AlertManager.tsx:78:9",children:[e.jsx("h1",{"code-path":"src/components/monitor/AlertManager.tsx:79:11",className:"text-2xl font-bold text-slate-100",children:"监控告警"}),e.jsx("p",{"code-path":"src/components/monitor/AlertManager.tsx:80:11",className:"text-sm text-slate-500 mt-1",children:"告警规则管理与告警事件处理"})]}),e.jsxs("div",{"code-path":"src/components/monitor/AlertManager.tsx:82:9",className:"flex items-center gap-2",children:[e.jsxs(A,{"code-path":"src/components/monitor/AlertManager.tsx:83:11",variant:"outline",className:"border-slate-700 text-slate-300 hover:text-slate-100 hover:bg-slate-800",onClick:()=>t(!0),children:[e.jsx(Q,{"code-path":"src/components/monitor/AlertManager.tsx:88:13",className:"h-4 w-4 mr-2"}),"通知配置"]}),e.jsxs(A,{"code-path":"src/components/monitor/AlertManager.tsx:91:11",className:"bg-blue-600 hover:bg-blue-700 text-white",onClick:k,children:[e.jsx(U,{"code-path":"src/components/monitor/AlertManager.tsx:92:13",className:"h-4 w-4 mr-2"}),"新建规则"]})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/AlertManager.tsx:99:7",className:"grid grid-cols-1 md:grid-cols-4 gap-4",children:[e.jsx(w,{"code-path":"src/components/monitor/AlertManager.tsx:100:9",className:"bg-slate-900 border-slate-800",children:e.jsx(M,{"code-path":"src/components/monitor/AlertManager.tsx:101:11",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/monitor/AlertManager.tsx:102:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/monitor/AlertManager.tsx:103:15",children:[e.jsx("p",{"code-path":"src/components/monitor/AlertManager.tsx:104:17",className:"text-sm text-slate-500",children:"告警规则"}),e.jsx("p",{"code-path":"src/components/monitor/AlertManager.tsx:105:17",className:"text-2xl font-bold text-slate-100",children:u.length})]}),e.jsx("div",{"code-path":"src/components/monitor/AlertManager.tsx:107:15",className:"p-3 rounded-lg bg-blue-500/10 text-blue-400",children:e.jsx(J,{"code-path":"src/components/monitor/AlertManager.tsx:108:17",className:"h-5 w-5"})})]})})}),e.jsx(w,{"code-path":"src/components/monitor/AlertManager.tsx:113:9",className:"bg-slate-900 border-slate-800",children:e.jsx(M,{"code-path":"src/components/monitor/AlertManager.tsx:114:11",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/monitor/AlertManager.tsx:115:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/monitor/AlertManager.tsx:116:15",children:[e.jsx("p",{"code-path":"src/components/monitor/AlertManager.tsx:117:17",className:"text-sm text-slate-500",children:"触发中"}),e.jsx("p",{"code-path":"src/components/monitor/AlertManager.tsx:118:17",className:"text-2xl font-bold text-red-400",children:d.filter(n=>n.status==="firing").length})]}),e.jsx("div",{"code-path":"src/components/monitor/AlertManager.tsx:122:15",className:"p-3 rounded-lg bg-red-500/10 text-red-400",children:e.jsx(z,{"code-path":"src/components/monitor/AlertManager.tsx:123:17",className:"h-5 w-5"})})]})})}),e.jsx(w,{"code-path":"src/components/monitor/AlertManager.tsx:128:9",className:"bg-slate-900 border-slate-800",children:e.jsx(M,{"code-path":"src/components/monitor/AlertManager.tsx:129:11",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/monitor/AlertManager.tsx:130:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/monitor/AlertManager.tsx:131:15",children:[e.jsx("p",{"code-path":"src/components/monitor/AlertManager.tsx:132:17",className:"text-sm text-slate-500",children:"今日告警"}),e.jsx("p",{"code-path":"src/components/monitor/AlertManager.tsx:133:17",className:"text-2xl font-bold text-amber-400",children:d.length})]}),e.jsx("div",{"code-path":"src/components/monitor/AlertManager.tsx:135:15",className:"p-3 rounded-lg bg-amber-500/10 text-amber-400",children:e.jsx(ce,{"code-path":"src/components/monitor/AlertManager.tsx:136:17",className:"h-5 w-5"})})]})})}),e.jsx(w,{"code-path":"src/components/monitor/AlertManager.tsx:141:9",className:"bg-slate-900 border-slate-800",children:e.jsx(M,{"code-path":"src/components/monitor/AlertManager.tsx:142:11",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/monitor/AlertManager.tsx:143:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/monitor/AlertManager.tsx:144:15",children:[e.jsx("p",{"code-path":"src/components/monitor/AlertManager.tsx:145:17",className:"text-sm text-slate-500",children:"已恢复"}),e.jsx("p",{"code-path":"src/components/monitor/AlertManager.tsx:146:17",className:"text-2xl font-bold text-emerald-400",children:d.filter(n=>n.status==="resolved").length})]}),e.jsx("div",{"code-path":"src/components/monitor/AlertManager.tsx:150:15",className:"p-3 rounded-lg bg-emerald-500/10 text-emerald-400",children:e.jsx($,{"code-path":"src/components/monitor/AlertManager.tsx:151:17",className:"h-5 w-5"})})]})})})]}),e.jsxs(w,{"code-path":"src/components/monitor/AlertManager.tsx:159:7",className:"bg-slate-900 border-slate-800",children:[e.jsxs(le,{"code-path":"src/components/monitor/AlertManager.tsx:160:9",className:"pb-2",children:[e.jsx(ie,{"code-path":"src/components/monitor/AlertManager.tsx:161:11",className:"text-slate-100",children:"告警趋势"}),e.jsx(me,{"code-path":"src/components/monitor/AlertManager.tsx:162:11",className:"text-slate-500",children:"过去24小时告警统计"})]}),e.jsx(M,{"code-path":"src/components/monitor/AlertManager.tsx:164:9",children:e.jsx("div",{"code-path":"src/components/monitor/AlertManager.tsx:165:11",className:"h-[200px]",children:e.jsx(Ae,{"code-path":"src/components/monitor/AlertManager.tsx:166:13",width:"100%",height:"100%",children:e.jsxs(fe,{"code-path":"src/components/monitor/AlertManager.tsx:167:15",data:s,children:[e.jsxs("defs",{"code-path":"src/components/monitor/AlertManager.tsx:168:17",children:[e.jsxs("linearGradient",{"code-path":"src/components/monitor/AlertManager.tsx:169:19",id:"colorCritical",x1:"0",y1:"0",x2:"0",y2:"1",children:[e.jsx("stop",{"code-path":"src/components/monitor/AlertManager.tsx:170:21",offset:"5%",stopColor:"#ef4444",stopOpacity:.3}),e.jsx("stop",{"code-path":"src/components/monitor/AlertManager.tsx:171:21",offset:"95%",stopColor:"#ef4444",stopOpacity:0})]}),e.jsxs("linearGradient",{"code-path":"src/components/monitor/AlertManager.tsx:173:19",id:"colorWarning",x1:"0",y1:"0",x2:"0",y2:"1",children:[e.jsx("stop",{"code-path":"src/components/monitor/AlertManager.tsx:174:21",offset:"5%",stopColor:"#f59e0b",stopOpacity:.3}),e.jsx("stop",{"code-path":"src/components/monitor/AlertManager.tsx:175:21",offset:"95%",stopColor:"#f59e0b",stopOpacity:0})]})]}),e.jsx(je,{"code-path":"src/components/monitor/AlertManager.tsx:178:17",strokeDasharray:"3 3",stroke:"#1e293b"}),e.jsx(ue,{"code-path":"src/components/monitor/AlertManager.tsx:179:17",dataKey:"time",stroke:"#475569",fontSize:12}),e.jsx(Ne,{"code-path":"src/components/monitor/AlertManager.tsx:180:17",stroke:"#475569",fontSize:12}),e.jsx(ve,{"code-path":"src/components/monitor/AlertManager.tsx:181:17",contentStyle:{backgroundColor:"#0f172a",border:"1px solid #1e293b",borderRadius:"6px",color:"#f8fafc"}}),e.jsx(W,{"code-path":"src/components/monitor/AlertManager.tsx:189:17",type:"monotone",dataKey:"critical",stroke:"#ef4444",fillOpacity:1,fill:"url(#colorCritical)",name:"严重"}),e.jsx(W,{"code-path":"src/components/monitor/AlertManager.tsx:197:17",type:"monotone",dataKey:"warning",stroke:"#f59e0b",fillOpacity:1,fill:"url(#colorWarning)",name:"警告"})]})})})})]}),e.jsxs(de,{"code-path":"src/components/monitor/AlertManager.tsx:212:7",value:m,onValueChange:T,className:"w-full",children:[e.jsxs(xe,{"code-path":"src/components/monitor/AlertManager.tsx:213:9",className:"bg-slate-800 border border-slate-700",children:[e.jsx(H,{"code-path":"src/components/monitor/AlertManager.tsx:214:11",value:"events",className:"data-[state=active]:bg-slate-700",children:"告警事件"}),e.jsx(H,{"code-path":"src/components/monitor/AlertManager.tsx:217:11",value:"rules",className:"data-[state=active]:bg-slate-700",children:"告警规则"})]}),e.jsx(I,{"code-path":"src/components/monitor/AlertManager.tsx:223:9",value:"events",children:e.jsx(Te,{"code-path":"src/components/monitor/AlertManager.tsx:224:11",alerts:d,loading:h,onReload:v})}),e.jsx(I,{"code-path":"src/components/monitor/AlertManager.tsx:227:9",value:"rules",children:e.jsx(ye,{"code-path":"src/components/monitor/AlertManager.tsx:228:11",rules:u,notifyChannels:r,onReload:v,onEditRule:S})})]}),e.jsx(ge,{"code-path":"src/components/monitor/AlertManager.tsx:239:7",open:C,onOpenChange:j,editingRule:y,notifyChannels:r,onSaved:v}),e.jsx(we,{"code-path":"src/components/monitor/AlertManager.tsx:246:7",open:x,onOpenChange:t,notifyChannels:r,onChannelsChanged:v})]})}export{$e as AlertManager}; diff --git a/backend/static/assets/AlertManager-Bb_YahLb.js b/backend/static/assets/AlertManager-Bb_YahLb.js new file mode 100644 index 0000000..b017bc2 --- /dev/null +++ b/backend/static/assets/AlertManager-Bb_YahLb.js @@ -0,0 +1 @@ +import{f as H,r as l,j as e,L as O,B as A,P as Y,H as $,T as z,y as Q,D as ee,a as te,b as se,c as oe,d as ae,e as ne,C as re}from"./index-Dmami9WE.js";import{C as w,a as M,b as ce,c as le,d as ie}from"./card-CIfC-8Rh.js";import{T as me,a as de,b as _,c as I}from"./tabs-lV44z_UR.js";import{a as g}from"./monitor-CicbJUrQ.js";import{I as X}from"./input-NsU9nXZF.js";import{B as f}from"./badge-3UzCvU7L.js";import{T as J,a as V,b as R,c as i,d as q,e as c}from"./table-CG4mjNfb.js";import{S as xe}from"./search-Dd-PeBfg.js";import{S as B}from"./switch-TqjD2x0W.js";import{C as G}from"./checkbox-DoAtRzQj.js";import{t as E}from"./index-BuEnLCjT.js";import{r as pe,g as he,C as K,A as ge}from"./AlertRuleDialog-CpPLZsky.js";import{T as P}from"./trash-2-DWVnIU6o.js";import{L as D}from"./label-Ap_-SPYI.js";import{T as be}from"./textarea-DHUZ6N85.js";import{P as U}from"./plus-O65gX7Qz.js";import{R as Ae,C as je,X as ue,Y as Ne,T as ve}from"./generateCategoricalChart-ZqCvxO-S.js";import{A as fe,a as W}from"./AreaChart-CrvX3B0s.js";import"./index-CtCQcvyh.js";import"./message-square-BNbub2_o.js";import"./phone-Cn_wSobp.js";function Te({alerts:m,loading:T,onReload:d}){H();const[p,u]=l.useState(""),[o,h]=l.useState("all"),[b,C]=l.useState("all"),j=m.filter(t=>{const r=(t.rule&&t.rule.name||t.message||"").toLowerCase().includes(p.toLowerCase())||(t.target||"").toLowerCase().includes(p.toLowerCase()),N=o==="all"||t.severity===o,v=b==="all"||t.status===b;return r&&N&&v}),y=t=>{switch(t){case"critical":return e.jsxs(f,{"code-path":"src/components/monitor/AlertEventsTab.tsx:45:11",variant:"outline",className:"border-red-500/30 text-red-400 bg-red-500/10",children:[e.jsx(z,{"code-path":"src/components/monitor/AlertEventsTab.tsx:46:13",className:"h-3 w-3 mr-1"}),"严重"]});case"warning":return e.jsxs(f,{"code-path":"src/components/monitor/AlertEventsTab.tsx:52:11",variant:"outline",className:"border-amber-500/30 text-amber-400 bg-amber-500/10",children:[e.jsx(z,{"code-path":"src/components/monitor/AlertEventsTab.tsx:53:13",className:"h-3 w-3 mr-1"}),"警告"]});case"info":return e.jsxs(f,{"code-path":"src/components/monitor/AlertEventsTab.tsx:59:11",variant:"outline",className:"border-blue-500/30 text-blue-400 bg-blue-500/10",children:[e.jsx($,{"code-path":"src/components/monitor/AlertEventsTab.tsx:60:13",className:"h-3 w-3 mr-1"}),"提示"]});default:return null}},a=t=>{switch(t){case"firing":return e.jsx(f,{"code-path":"src/components/monitor/AlertEventsTab.tsx:73:11",variant:"outline",className:"border-red-500/30 text-red-400 bg-red-500/10 animate-pulse",children:"触发中"});case"resolved":return e.jsx(f,{"code-path":"src/components/monitor/AlertEventsTab.tsx:79:11",variant:"outline",className:"border-emerald-500/30 text-emerald-400 bg-emerald-500/10",children:"已恢复"});default:return null}},x=async t=>{try{await g.acknowledge(t),d()}catch(r){console.error("Failed to acknowledge alert:",r)}};return e.jsxs("div",{"code-path":"src/components/monitor/AlertEventsTab.tsx:98:5",className:"mt-4 space-y-4",children:[e.jsxs("div",{"code-path":"src/components/monitor/AlertEventsTab.tsx:100:7",className:"flex items-center gap-3 flex-wrap",children:[e.jsxs("div",{"code-path":"src/components/monitor/AlertEventsTab.tsx:101:9",className:"relative w-64",children:[e.jsx(xe,{"code-path":"src/components/monitor/AlertEventsTab.tsx:102:11",className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-slate-500"}),e.jsx(X,{"code-path":"src/components/monitor/AlertEventsTab.tsx:103:11",placeholder:"搜索告警名称或目标...",value:p,onChange:t=>u(t.target.value),className:"pl-9 h-9 bg-slate-800/50 border-slate-700 text-slate-200 placeholder:text-slate-500"})]}),e.jsxs("select",{"code-path":"src/components/monitor/AlertEventsTab.tsx:110:9",value:o,onChange:t=>h(t.target.value),className:"h-9 px-3 rounded-md bg-slate-800/50 border border-slate-700 text-slate-200 text-sm",children:[e.jsx("option",{"code-path":"src/components/monitor/AlertEventsTab.tsx:115:11",value:"all",children:"全部级别"}),e.jsx("option",{"code-path":"src/components/monitor/AlertEventsTab.tsx:116:11",value:"critical",children:"严重"}),e.jsx("option",{"code-path":"src/components/monitor/AlertEventsTab.tsx:117:11",value:"warning",children:"警告"}),e.jsx("option",{"code-path":"src/components/monitor/AlertEventsTab.tsx:118:11",value:"info",children:"提示"})]}),e.jsxs("select",{"code-path":"src/components/monitor/AlertEventsTab.tsx:120:9",value:b,onChange:t=>C(t.target.value),className:"h-9 px-3 rounded-md bg-slate-800/50 border border-slate-700 text-slate-200 text-sm",children:[e.jsx("option",{"code-path":"src/components/monitor/AlertEventsTab.tsx:125:11",value:"all",children:"全部状态"}),e.jsx("option",{"code-path":"src/components/monitor/AlertEventsTab.tsx:126:11",value:"firing",children:"触发中"}),e.jsx("option",{"code-path":"src/components/monitor/AlertEventsTab.tsx:127:11",value:"resolved",children:"已恢复"})]})]}),e.jsx(w,{"code-path":"src/components/monitor/AlertEventsTab.tsx:132:7",className:"bg-slate-900 border-slate-800",children:e.jsx(M,{"code-path":"src/components/monitor/AlertEventsTab.tsx:133:9",className:"p-0",children:e.jsx("div",{"code-path":"src/components/monitor/AlertEventsTab.tsx:134:11",className:"border-t border-slate-800",children:e.jsxs(J,{"code-path":"src/components/monitor/AlertEventsTab.tsx:135:13",children:[e.jsx(V,{"code-path":"src/components/monitor/AlertEventsTab.tsx:136:15",children:e.jsxs(R,{"code-path":"src/components/monitor/AlertEventsTab.tsx:137:17",className:"border-slate-800 hover:bg-transparent",children:[e.jsx(i,{"code-path":"src/components/monitor/AlertEventsTab.tsx:138:19",className:"text-slate-400",children:"级别"}),e.jsx(i,{"code-path":"src/components/monitor/AlertEventsTab.tsx:139:19",className:"text-slate-400",children:"告警名称"}),e.jsx(i,{"code-path":"src/components/monitor/AlertEventsTab.tsx:140:19",className:"text-slate-400",children:"状态"}),e.jsx(i,{"code-path":"src/components/monitor/AlertEventsTab.tsx:141:19",className:"text-slate-400",children:"目标"}),e.jsx(i,{"code-path":"src/components/monitor/AlertEventsTab.tsx:142:19",className:"text-slate-400",children:"当前值"}),e.jsx(i,{"code-path":"src/components/monitor/AlertEventsTab.tsx:143:19",className:"text-slate-400",children:"阈值"}),e.jsx(i,{"code-path":"src/components/monitor/AlertEventsTab.tsx:144:19",className:"text-slate-400",children:"开始时间"}),e.jsx(i,{"code-path":"src/components/monitor/AlertEventsTab.tsx:145:19",className:"text-slate-400 text-right",children:"操作"})]})}),e.jsx(q,{"code-path":"src/components/monitor/AlertEventsTab.tsx:148:15",children:T?e.jsx(R,{"code-path":"src/components/monitor/AlertEventsTab.tsx:150:19",className:"border-slate-800",children:e.jsxs(c,{"code-path":"src/components/monitor/AlertEventsTab.tsx:151:21",colSpan:8,className:"text-center text-slate-500 py-8",children:[e.jsx(O,{"code-path":"src/components/monitor/AlertEventsTab.tsx:152:23",className:"h-5 w-5 animate-spin inline mr-2"}),"加载中..."]})}):j.map(t=>e.jsxs(R,{"code-path":"src/components/monitor/AlertEventsTab.tsx:157:19",className:"border-slate-800 hover:bg-slate-800/50",children:[e.jsx(c,{"code-path":"src/components/monitor/AlertEventsTab.tsx:158:21",children:y(t.severity)}),e.jsx(c,{"code-path":"src/components/monitor/AlertEventsTab.tsx:159:21",children:e.jsx("span",{"code-path":"src/components/monitor/AlertEventsTab.tsx:160:23",className:"text-sm font-medium text-slate-200",children:t.rule&&t.rule.name||t.message})}),e.jsx(c,{"code-path":"src/components/monitor/AlertEventsTab.tsx:164:21",children:a(t.status)}),e.jsx(c,{"code-path":"src/components/monitor/AlertEventsTab.tsx:165:21",className:"max-w-[160px]",children:e.jsx("span",{"code-path":"src/components/monitor/AlertEventsTab.tsx:166:23",className:"text-sm text-slate-300 block truncate",title:t.target,children:t.target})}),e.jsx(c,{"code-path":"src/components/monitor/AlertEventsTab.tsx:168:21",children:e.jsx("span",{"code-path":"src/components/monitor/AlertEventsTab.tsx:169:23",className:"text-sm text-slate-300",children:typeof t.value=="number"?t.value.toFixed(1):t.value})}),e.jsx(c,{"code-path":"src/components/monitor/AlertEventsTab.tsx:171:21",children:e.jsx("span",{"code-path":"src/components/monitor/AlertEventsTab.tsx:172:23",className:"text-sm text-slate-500",children:t.threshold})}),e.jsx(c,{"code-path":"src/components/monitor/AlertEventsTab.tsx:174:21",children:e.jsx("span",{"code-path":"src/components/monitor/AlertEventsTab.tsx:175:23",className:"text-sm text-slate-400",children:t.created_at?new Date(t.created_at).toLocaleString():"--"})}),e.jsx(c,{"code-path":"src/components/monitor/AlertEventsTab.tsx:179:21",className:"text-right",children:e.jsx("div",{"code-path":"src/components/monitor/AlertEventsTab.tsx:180:23",className:"flex items-center justify-end gap-1",children:t.status==="firing"&&e.jsxs(A,{"code-path":"src/components/monitor/AlertEventsTab.tsx:182:27",variant:"ghost",size:"sm",className:"h-8 text-slate-400 hover:text-emerald-400",onClick:()=>x(t.id),children:[e.jsx(Y,{"code-path":"src/components/monitor/AlertEventsTab.tsx:188:29",className:"h-4 w-4 mr-1"}),"确认"]})})})]},t.id))})]})})})})]})}const Ce=9;function ye({rules:m,notifyChannels:T,onReload:d,onEditRule:p}){const u=H(),[o,h]=l.useState([]),b=()=>{m.length>0&&o.length===m.length?h([]):h(m.map(t=>t.id))},C=t=>{h(r=>r.includes(t)?r.filter(N=>N!==t):[...r,t])},j=async t=>{if(await u({title:"删除告警规则",description:"确定删除此告警规则?",confirmText:"删除",variant:"destructive"}))try{await g.deleteRule(t),E.success("告警规则已删除"),d()}catch(N){console.error("Failed to delete rule:",N),E.error("删除失败")}},y=async()=>{if(!(o.length===0||!await u({title:"批量删除告警规则",description:`确定删除选中的 ${o.length} 条告警规则吗?此操作不可撤销。`,confirmText:"批量删除",variant:"destructive"})))try{await g.batchDeleteRules(o),E.success(`已删除 ${o.length} 条告警规则`),h([]),d()}catch(r){console.error("Failed to batch delete rules:",r),E.error("批量删除失败")}},a=async t=>{try{await g.toggleRule(t),d()}catch(r){console.error("Failed to toggle rule:",r)}},x=m.length>0&&o.length===m.length;return e.jsxs("div",{"code-path":"src/components/monitor/AlertRulesTab.tsx:104:5",className:"mt-4",children:[o.length>0&&e.jsxs("div",{"code-path":"src/components/monitor/AlertRulesTab.tsx:107:9",className:"flex items-center gap-2 mb-3",children:[e.jsxs("span",{"code-path":"src/components/monitor/AlertRulesTab.tsx:108:11",className:"text-sm text-slate-400",children:["已选择 ",o.length," 项"]}),e.jsxs(A,{"code-path":"src/components/monitor/AlertRulesTab.tsx:109:11",variant:"outline",size:"sm",className:"border-red-500/30 text-red-400 hover:bg-red-500/10",onClick:y,children:[e.jsx(P,{"code-path":"src/components/monitor/AlertRulesTab.tsx:115:13",className:"h-4 w-4 mr-2"}),"批量删除"]})]}),e.jsx(w,{"code-path":"src/components/monitor/AlertRulesTab.tsx:121:7",className:"bg-slate-900 border-slate-800",children:e.jsx(M,{"code-path":"src/components/monitor/AlertRulesTab.tsx:122:9",className:"p-0",children:e.jsx("div",{"code-path":"src/components/monitor/AlertRulesTab.tsx:123:11",className:"border-t border-slate-800",children:e.jsxs(J,{"code-path":"src/components/monitor/AlertRulesTab.tsx:124:13",children:[e.jsx(V,{"code-path":"src/components/monitor/AlertRulesTab.tsx:125:15",children:e.jsxs(R,{"code-path":"src/components/monitor/AlertRulesTab.tsx:126:17",className:"border-slate-800 hover:bg-transparent",children:[e.jsx(i,{"code-path":"src/components/monitor/AlertRulesTab.tsx:127:19",className:"w-12",children:e.jsx(G,{"code-path":"src/components/monitor/AlertRulesTab.tsx:128:21",checked:x,onCheckedChange:b,className:"border-slate-600"})}),e.jsx(i,{"code-path":"src/components/monitor/AlertRulesTab.tsx:134:19",className:"text-slate-400",children:"规则名称"}),e.jsx(i,{"code-path":"src/components/monitor/AlertRulesTab.tsx:135:19",className:"text-slate-400",children:"数据源"}),e.jsx(i,{"code-path":"src/components/monitor/AlertRulesTab.tsx:136:19",className:"text-slate-400",children:"触发条件"}),e.jsx(i,{"code-path":"src/components/monitor/AlertRulesTab.tsx:137:19",className:"text-slate-400",children:"级别"}),e.jsx(i,{"code-path":"src/components/monitor/AlertRulesTab.tsx:138:19",className:"text-slate-400",children:"持续时间"}),e.jsx(i,{"code-path":"src/components/monitor/AlertRulesTab.tsx:139:19",className:"text-slate-400",children:"通知渠道"}),e.jsx(i,{"code-path":"src/components/monitor/AlertRulesTab.tsx:140:19",className:"text-slate-400",children:"状态"}),e.jsx(i,{"code-path":"src/components/monitor/AlertRulesTab.tsx:141:19",className:"text-slate-400 text-right",children:"操作"})]})}),e.jsx(q,{"code-path":"src/components/monitor/AlertRulesTab.tsx:144:15",children:m.length===0?e.jsx(R,{"code-path":"src/components/monitor/AlertRulesTab.tsx:146:19",className:"border-slate-800",children:e.jsx(c,{"code-path":"src/components/monitor/AlertRulesTab.tsx:147:21",colSpan:Ce,className:"text-center text-slate-500 py-12",children:"暂无告警规则"})}):m.map(t=>e.jsxs(R,{"code-path":"src/components/monitor/AlertRulesTab.tsx:153:21",className:"border-slate-800 hover:bg-slate-800/50",children:[e.jsx(c,{"code-path":"src/components/monitor/AlertRulesTab.tsx:154:23",children:e.jsx(G,{"code-path":"src/components/monitor/AlertRulesTab.tsx:155:25",checked:o.includes(t.id),onCheckedChange:()=>C(t.id),className:"border-slate-600"})}),e.jsx(c,{"code-path":"src/components/monitor/AlertRulesTab.tsx:161:23",children:e.jsxs("div",{"code-path":"src/components/monitor/AlertRulesTab.tsx:162:25",children:[e.jsx("span",{"code-path":"src/components/monitor/AlertRulesTab.tsx:163:27",className:"text-sm font-medium text-slate-200",children:t.name}),t.description&&e.jsx("p",{"code-path":"src/components/monitor/AlertRulesTab.tsx:165:29",className:"text-xs text-slate-500",children:t.description})]})}),e.jsx(c,{"code-path":"src/components/monitor/AlertRulesTab.tsx:169:23",children:e.jsx("code",{"code-path":"src/components/monitor/AlertRulesTab.tsx:170:25",className:"text-xs text-slate-300 bg-slate-800 px-2 py-0.5 rounded",children:t.source||"--"})}),e.jsx(c,{"code-path":"src/components/monitor/AlertRulesTab.tsx:174:23",className:"max-w-[180px]",children:e.jsx("code",{"code-path":"src/components/monitor/AlertRulesTab.tsx:175:25",className:"text-xs text-blue-300 block truncate",title:t.expression,children:t.expression||"--"})}),e.jsx(c,{"code-path":"src/components/monitor/AlertRulesTab.tsx:179:23",children:t.severity==="critical"?e.jsx(f,{"code-path":"src/components/monitor/AlertRulesTab.tsx:181:27",variant:"outline",className:"border-red-500/30 text-red-400 bg-red-500/10",children:"严重"}):t.severity==="warning"?e.jsx(f,{"code-path":"src/components/monitor/AlertRulesTab.tsx:185:27",variant:"outline",className:"border-amber-500/30 text-amber-400 bg-amber-500/10",children:"警告"}):e.jsx(f,{"code-path":"src/components/monitor/AlertRulesTab.tsx:189:27",variant:"outline",className:"border-blue-500/30 text-blue-400 bg-blue-500/10",children:"提示"})}),e.jsx(c,{"code-path":"src/components/monitor/AlertRulesTab.tsx:194:23",children:e.jsxs("span",{"code-path":"src/components/monitor/AlertRulesTab.tsx:195:25",className:"text-sm text-slate-300",children:[(t.duration||0)/60,"分钟"]})}),e.jsx(c,{"code-path":"src/components/monitor/AlertRulesTab.tsx:197:23",children:pe(t,T)}),e.jsx(c,{"code-path":"src/components/monitor/AlertRulesTab.tsx:200:23",children:e.jsx(B,{"code-path":"src/components/monitor/AlertRulesTab.tsx:201:25",checked:!!t.enabled,className:"data-[state=checked]:bg-blue-600",onCheckedChange:()=>a(t.id)})}),e.jsx(c,{"code-path":"src/components/monitor/AlertRulesTab.tsx:207:23",className:"text-right",children:e.jsxs("div",{"code-path":"src/components/monitor/AlertRulesTab.tsx:208:25",className:"flex items-center justify-end gap-1",children:[e.jsx(A,{"code-path":"src/components/monitor/AlertRulesTab.tsx:209:27",variant:"ghost",size:"icon",className:"h-8 w-8 text-slate-400 hover:text-slate-100",onClick:()=>p(t),children:e.jsx(Q,{"code-path":"src/components/monitor/AlertRulesTab.tsx:215:29",className:"h-4 w-4"})}),e.jsx(A,{"code-path":"src/components/monitor/AlertRulesTab.tsx:217:27",variant:"ghost",size:"icon",className:"h-8 w-8 text-slate-400 hover:text-red-400",onClick:()=>j(t.id),children:e.jsx(P,{"code-path":"src/components/monitor/AlertRulesTab.tsx:223:29",className:"h-4 w-4"})})]})})]},t.id))})]})})})})]})}const L={name:"",type:"dingtalk",config:"",enabled:!0};function we({open:m,onOpenChange:T,notifyChannels:d,onChannelsChanged:p}){const u=H(),[o,h]=l.useState(null),[b,C]=l.useState(!1),[j,y]=l.useState(null),[a,x]=l.useState({...L});l.useEffect(()=>{m&&(h(null),x({...L}))},[m]);const t=s=>{h(s),x({name:s.name||"",type:s.type||"dingtalk",config:s.config||"",enabled:s.enabled!==!1})},r=()=>{h(null),x({...L})},N=async()=>{if(a.name.trim()){C(!0);try{const s={name:a.name.trim(),type:a.type,config:a.config.trim()};o?await g.updateNotifyChannel(o.id,{...s,enabled:a.enabled}):await g.createNotifyChannel(s),r(),p()}catch(s){console.error("Failed to save notify channel:",s)}finally{C(!1)}}},v=async s=>{if(await u({title:"删除通知渠道",description:"确定删除此通知渠道?",confirmText:"删除",variant:"destructive"}))try{await g.deleteNotifyChannel(s),o&&o.id===s&&r(),p()}catch(n){console.error("Failed to delete notify channel:",n)}},k=async s=>{try{await g.updateNotifyChannel(s.id,{enabled:!s.enabled}),p()}catch(n){console.error("Failed to toggle notify channel:",n)}},S=async s=>{y(s);try{await g.testNotifyChannel(s),p()}catch(n){console.error("Failed to test notify channel:",n)}finally{y(null)}};return e.jsx(ee,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:119:5",open:m,onOpenChange:T,children:e.jsxs(te,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:120:7",className:"bg-slate-900 border-slate-700 text-slate-100 max-w-2xl",children:[e.jsxs(se,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:121:9",children:[e.jsx(oe,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:122:11",className:"text-slate-100",children:"通知渠道配置"}),e.jsx(ae,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:123:11",className:"text-slate-500",children:"管理告警通知渠道(钉钉/企业微信/邮件/短信/Webhook),配置后可在告警规则中引用"})]}),e.jsxs("div",{"code-path":"src/components/monitor/AlertChannelDialog.tsx:128:9",className:"grid grid-cols-1 lg:grid-cols-2 gap-4 max-h-[65vh] overflow-y-auto pr-1",children:[e.jsxs("div",{"code-path":"src/components/monitor/AlertChannelDialog.tsx:130:11",className:"space-y-2",children:[e.jsxs("div",{"code-path":"src/components/monitor/AlertChannelDialog.tsx:131:13",className:"flex items-center justify-between",children:[e.jsx(D,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:132:15",className:"text-slate-300 text-sm",children:"已配置渠道"}),e.jsxs(A,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:133:15",size:"sm",variant:"outline",className:"h-7 border-slate-700 text-slate-300 hover:bg-slate-800 text-xs",onClick:r,children:[e.jsx(U,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:139:17",className:"h-3 w-3 mr-1"}),"新建"]})]}),d.length===0?e.jsx("div",{"code-path":"src/components/monitor/AlertChannelDialog.tsx:144:15",className:"text-center py-8 text-sm text-slate-600 border border-dashed border-slate-800 rounded-lg",children:"暂无通知渠道,请在右侧添加"}):e.jsx("div",{"code-path":"src/components/monitor/AlertChannelDialog.tsx:148:15",className:"space-y-2",children:d.map(s=>e.jsxs("div",{"code-path":"src/components/monitor/AlertChannelDialog.tsx:150:19",className:`p-3 rounded-lg border cursor-pointer transition-colors ${o&&o.id===s.id?"border-blue-500/50 bg-blue-500/5":"border-slate-800 bg-slate-800/30 hover:border-slate-700"}`,onClick:()=>t(s),children:[e.jsxs("div",{"code-path":"src/components/monitor/AlertChannelDialog.tsx:159:21",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/monitor/AlertChannelDialog.tsx:160:23",className:"flex items-center gap-2 min-w-0",children:[e.jsx("span",{"code-path":"src/components/monitor/AlertChannelDialog.tsx:161:25",className:"text-sm text-slate-200 truncate",children:s.name}),e.jsx(f,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:162:25",variant:"outline",className:"border-slate-600 text-slate-400 text-[10px] py-0",children:he(s.type)})]}),e.jsx(B,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:166:23",checked:s.enabled!==!1,onCheckedChange:()=>k(s),onClick:n=>n.stopPropagation(),className:"data-[state=checked]:bg-emerald-600 scale-90"})]}),e.jsxs("div",{"code-path":"src/components/monitor/AlertChannelDialog.tsx:173:21",className:"flex items-center justify-between mt-2",children:[s.test_status==="success"?e.jsx("span",{"code-path":"src/components/monitor/AlertChannelDialog.tsx:175:25",className:"text-[11px] text-emerald-400",children:"测试通过"}):e.jsx("span",{"code-path":"src/components/monitor/AlertChannelDialog.tsx:177:25",className:"text-[11px] text-slate-600",children:"未测试"}),e.jsxs("div",{"code-path":"src/components/monitor/AlertChannelDialog.tsx:179:23",className:"flex items-center gap-1",onClick:n=>n.stopPropagation(),children:[e.jsx(A,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:180:25",size:"sm",variant:"ghost",className:"h-6 px-2 text-slate-400 hover:text-slate-200 hover:bg-slate-700 text-xs",disabled:j===s.id,onClick:()=>S(s.id),children:j===s.id?e.jsx(O,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:187:55",className:"h-3 w-3 animate-spin"}):"测试"}),e.jsx(A,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:189:25",size:"sm",variant:"ghost",className:"h-6 px-2 text-red-400/70 hover:text-red-400 hover:bg-red-500/10 text-xs",onClick:()=>v(s.id),children:e.jsx(P,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:195:27",className:"h-3 w-3"})})]})]})]},s.id))})]}),e.jsxs("div",{"code-path":"src/components/monitor/AlertChannelDialog.tsx:206:11",className:"space-y-4",children:[e.jsx(D,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:207:13",className:"text-slate-300 text-sm",children:o?"编辑渠道":"新建渠道"}),e.jsxs("div",{"code-path":"src/components/monitor/AlertChannelDialog.tsx:210:13",className:"space-y-1.5",children:[e.jsxs(D,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:211:15",className:"text-slate-400 text-xs",children:["渠道名称 ",e.jsx("span",{"code-path":"src/components/monitor/AlertChannelDialog.tsx:211:62",className:"text-red-400",children:"*"})]}),e.jsx(X,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:212:15",value:a.name,onChange:s=>x({...a,name:s.target.value}),placeholder:"如:运维告警群",className:"bg-slate-800/50 border-slate-700 text-slate-200 placeholder:text-slate-600 h-9"})]}),e.jsxs("div",{"code-path":"src/components/monitor/AlertChannelDialog.tsx:219:13",className:"space-y-1.5",children:[e.jsx(D,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:220:15",className:"text-slate-400 text-xs",children:"渠道类型"}),e.jsx("select",{"code-path":"src/components/monitor/AlertChannelDialog.tsx:221:15",value:a.type,onChange:s=>x({...a,type:s.target.value}),className:"w-full h-9 px-3 rounded-md bg-slate-800/50 border border-slate-700 text-slate-200 text-sm",children:K.map(({key:s,label:n})=>e.jsx("option",{"code-path":"src/components/monitor/AlertChannelDialog.tsx:227:19",value:s,children:n},s))})]}),e.jsxs("div",{"code-path":"src/components/monitor/AlertChannelDialog.tsx:231:13",className:"space-y-1.5",children:[e.jsx(D,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:232:15",className:"text-slate-400 text-xs",children:"配置(JSON)"}),e.jsx(be,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:233:15",value:a.config,onChange:s=>x({...a,config:s.target.value}),placeholder:K.find(s=>s.key===a.type)?.placeholder||"",rows:5,className:"bg-slate-800/50 border-slate-700 text-slate-200 placeholder:text-slate-600 font-mono text-xs resize-none"})]}),o&&e.jsxs("div",{"code-path":"src/components/monitor/AlertChannelDialog.tsx:242:15",className:"flex items-center gap-2",children:[e.jsx(B,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:243:17",checked:a.enabled,onCheckedChange:s=>x({...a,enabled:s}),className:"data-[state=checked]:bg-emerald-600"}),e.jsx(D,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:248:17",className:"text-slate-400 text-xs",children:"启用此渠道"})]})]})]}),e.jsxs(ne,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:254:9",children:[e.jsx(A,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:255:11",variant:"outline",className:"border-slate-700 text-slate-300 hover:bg-slate-800",onClick:()=>T(!1),children:"关闭"}),e.jsxs(A,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:262:11",className:"bg-blue-600 hover:bg-blue-700 text-white",disabled:!a.name.trim()||b,onClick:N,children:[b&&e.jsx(O,{"code-path":"src/components/monitor/AlertChannelDialog.tsx:267:31",className:"h-4 w-4 mr-2 animate-spin"}),o?"保存修改":"添加渠道"]})]})]})})}function Xe(){const[m,T]=l.useState("events"),[d,p]=l.useState([]),[u,o]=l.useState([]),[h,b]=l.useState(!0),[C,j]=l.useState(!1),[y,a]=l.useState(null),[x,t]=l.useState(!1),[r,N]=l.useState([]),v=async()=>{try{b(!0);const[n,F,Z]=await Promise.all([g.getAlerts(),g.getRules(),g.getNotifyChannels()]);p(n?.list||[]),o(F?.list||(Array.isArray(F)?F:[])),N(Z?.list||[])}catch(n){console.error("Failed to load alert data:",n)}finally{b(!1)}};l.useEffect(()=>{v()},[]);const k=()=>{a(null),j(!0)},S=n=>{a(n),j(!0)},s=[{time:"00:00",critical:2,warning:5,info:8},{time:"04:00",critical:1,warning:3,info:6},{time:"08:00",critical:3,warning:7,info:12},{time:"12:00",critical:5,warning:10,info:15},{time:"16:00",critical:4,warning:8,info:10},{time:"20:00",critical:3,warning:6,info:9},{time:"24:00",critical:2,warning:4,info:7}];return e.jsxs("div",{"code-path":"src/components/monitor/AlertManager.tsx:75:5",className:"space-y-6",children:[e.jsxs("div",{"code-path":"src/components/monitor/AlertManager.tsx:77:7",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/monitor/AlertManager.tsx:78:9",children:[e.jsx("h1",{"code-path":"src/components/monitor/AlertManager.tsx:79:11",className:"text-2xl font-bold text-slate-100",children:"监控告警"}),e.jsx("p",{"code-path":"src/components/monitor/AlertManager.tsx:80:11",className:"text-sm text-slate-500 mt-1",children:"告警规则管理与告警事件处理"})]}),e.jsxs("div",{"code-path":"src/components/monitor/AlertManager.tsx:82:9",className:"flex items-center gap-2",children:[e.jsxs(A,{"code-path":"src/components/monitor/AlertManager.tsx:83:11",variant:"outline",className:"border-slate-700 text-slate-300 hover:text-slate-100 hover:bg-slate-800",onClick:()=>t(!0),children:[e.jsx(Q,{"code-path":"src/components/monitor/AlertManager.tsx:88:13",className:"h-4 w-4 mr-2"}),"通知配置"]}),e.jsxs(A,{"code-path":"src/components/monitor/AlertManager.tsx:91:11",className:"bg-blue-600 hover:bg-blue-700 text-white",onClick:k,children:[e.jsx(U,{"code-path":"src/components/monitor/AlertManager.tsx:92:13",className:"h-4 w-4 mr-2"}),"新建规则"]})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/AlertManager.tsx:99:7",className:"grid grid-cols-1 md:grid-cols-4 gap-4",children:[e.jsx(w,{"code-path":"src/components/monitor/AlertManager.tsx:100:9",className:"bg-slate-900 border-slate-800",children:e.jsx(M,{"code-path":"src/components/monitor/AlertManager.tsx:101:11",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/monitor/AlertManager.tsx:102:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/monitor/AlertManager.tsx:103:15",children:[e.jsx("p",{"code-path":"src/components/monitor/AlertManager.tsx:104:17",className:"text-sm text-slate-500",children:"告警规则"}),e.jsx("p",{"code-path":"src/components/monitor/AlertManager.tsx:105:17",className:"text-2xl font-bold text-slate-100",children:u.length})]}),e.jsx("div",{"code-path":"src/components/monitor/AlertManager.tsx:107:15",className:"p-3 rounded-lg bg-blue-500/10 text-blue-400",children:e.jsx($,{"code-path":"src/components/monitor/AlertManager.tsx:108:17",className:"h-5 w-5"})})]})})}),e.jsx(w,{"code-path":"src/components/monitor/AlertManager.tsx:113:9",className:"bg-slate-900 border-slate-800",children:e.jsx(M,{"code-path":"src/components/monitor/AlertManager.tsx:114:11",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/monitor/AlertManager.tsx:115:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/monitor/AlertManager.tsx:116:15",children:[e.jsx("p",{"code-path":"src/components/monitor/AlertManager.tsx:117:17",className:"text-sm text-slate-500",children:"触发中"}),e.jsx("p",{"code-path":"src/components/monitor/AlertManager.tsx:118:17",className:"text-2xl font-bold text-red-400",children:d.filter(n=>n.status==="firing").length})]}),e.jsx("div",{"code-path":"src/components/monitor/AlertManager.tsx:122:15",className:"p-3 rounded-lg bg-red-500/10 text-red-400",children:e.jsx(z,{"code-path":"src/components/monitor/AlertManager.tsx:123:17",className:"h-5 w-5"})})]})})}),e.jsx(w,{"code-path":"src/components/monitor/AlertManager.tsx:128:9",className:"bg-slate-900 border-slate-800",children:e.jsx(M,{"code-path":"src/components/monitor/AlertManager.tsx:129:11",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/monitor/AlertManager.tsx:130:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/monitor/AlertManager.tsx:131:15",children:[e.jsx("p",{"code-path":"src/components/monitor/AlertManager.tsx:132:17",className:"text-sm text-slate-500",children:"今日告警"}),e.jsx("p",{"code-path":"src/components/monitor/AlertManager.tsx:133:17",className:"text-2xl font-bold text-amber-400",children:d.length})]}),e.jsx("div",{"code-path":"src/components/monitor/AlertManager.tsx:135:15",className:"p-3 rounded-lg bg-amber-500/10 text-amber-400",children:e.jsx(re,{"code-path":"src/components/monitor/AlertManager.tsx:136:17",className:"h-5 w-5"})})]})})}),e.jsx(w,{"code-path":"src/components/monitor/AlertManager.tsx:141:9",className:"bg-slate-900 border-slate-800",children:e.jsx(M,{"code-path":"src/components/monitor/AlertManager.tsx:142:11",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/monitor/AlertManager.tsx:143:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/monitor/AlertManager.tsx:144:15",children:[e.jsx("p",{"code-path":"src/components/monitor/AlertManager.tsx:145:17",className:"text-sm text-slate-500",children:"已恢复"}),e.jsx("p",{"code-path":"src/components/monitor/AlertManager.tsx:146:17",className:"text-2xl font-bold text-emerald-400",children:d.filter(n=>n.status==="resolved").length})]}),e.jsx("div",{"code-path":"src/components/monitor/AlertManager.tsx:150:15",className:"p-3 rounded-lg bg-emerald-500/10 text-emerald-400",children:e.jsx(Y,{"code-path":"src/components/monitor/AlertManager.tsx:151:17",className:"h-5 w-5"})})]})})})]}),e.jsxs(w,{"code-path":"src/components/monitor/AlertManager.tsx:159:7",className:"bg-slate-900 border-slate-800",children:[e.jsxs(ce,{"code-path":"src/components/monitor/AlertManager.tsx:160:9",className:"pb-2",children:[e.jsx(le,{"code-path":"src/components/monitor/AlertManager.tsx:161:11",className:"text-slate-100",children:"告警趋势"}),e.jsx(ie,{"code-path":"src/components/monitor/AlertManager.tsx:162:11",className:"text-slate-500",children:"过去24小时告警统计"})]}),e.jsx(M,{"code-path":"src/components/monitor/AlertManager.tsx:164:9",children:e.jsx("div",{"code-path":"src/components/monitor/AlertManager.tsx:165:11",className:"h-[200px]",children:e.jsx(Ae,{"code-path":"src/components/monitor/AlertManager.tsx:166:13",width:"100%",height:"100%",children:e.jsxs(fe,{"code-path":"src/components/monitor/AlertManager.tsx:167:15",data:s,children:[e.jsxs("defs",{"code-path":"src/components/monitor/AlertManager.tsx:168:17",children:[e.jsxs("linearGradient",{"code-path":"src/components/monitor/AlertManager.tsx:169:19",id:"colorCritical",x1:"0",y1:"0",x2:"0",y2:"1",children:[e.jsx("stop",{"code-path":"src/components/monitor/AlertManager.tsx:170:21",offset:"5%",stopColor:"#ef4444",stopOpacity:.3}),e.jsx("stop",{"code-path":"src/components/monitor/AlertManager.tsx:171:21",offset:"95%",stopColor:"#ef4444",stopOpacity:0})]}),e.jsxs("linearGradient",{"code-path":"src/components/monitor/AlertManager.tsx:173:19",id:"colorWarning",x1:"0",y1:"0",x2:"0",y2:"1",children:[e.jsx("stop",{"code-path":"src/components/monitor/AlertManager.tsx:174:21",offset:"5%",stopColor:"#f59e0b",stopOpacity:.3}),e.jsx("stop",{"code-path":"src/components/monitor/AlertManager.tsx:175:21",offset:"95%",stopColor:"#f59e0b",stopOpacity:0})]})]}),e.jsx(je,{"code-path":"src/components/monitor/AlertManager.tsx:178:17",strokeDasharray:"3 3",stroke:"#1e293b"}),e.jsx(ue,{"code-path":"src/components/monitor/AlertManager.tsx:179:17",dataKey:"time",stroke:"#475569",fontSize:12}),e.jsx(Ne,{"code-path":"src/components/monitor/AlertManager.tsx:180:17",stroke:"#475569",fontSize:12}),e.jsx(ve,{"code-path":"src/components/monitor/AlertManager.tsx:181:17",contentStyle:{backgroundColor:"#0f172a",border:"1px solid #1e293b",borderRadius:"6px",color:"#f8fafc"}}),e.jsx(W,{"code-path":"src/components/monitor/AlertManager.tsx:189:17",type:"monotone",dataKey:"critical",stroke:"#ef4444",fillOpacity:1,fill:"url(#colorCritical)",name:"严重"}),e.jsx(W,{"code-path":"src/components/monitor/AlertManager.tsx:197:17",type:"monotone",dataKey:"warning",stroke:"#f59e0b",fillOpacity:1,fill:"url(#colorWarning)",name:"警告"})]})})})})]}),e.jsxs(me,{"code-path":"src/components/monitor/AlertManager.tsx:212:7",value:m,onValueChange:T,className:"w-full",children:[e.jsxs(de,{"code-path":"src/components/monitor/AlertManager.tsx:213:9",className:"bg-slate-800 border border-slate-700",children:[e.jsx(_,{"code-path":"src/components/monitor/AlertManager.tsx:214:11",value:"events",className:"data-[state=active]:bg-slate-700",children:"告警事件"}),e.jsx(_,{"code-path":"src/components/monitor/AlertManager.tsx:217:11",value:"rules",className:"data-[state=active]:bg-slate-700",children:"告警规则"})]}),e.jsx(I,{"code-path":"src/components/monitor/AlertManager.tsx:223:9",value:"events",children:e.jsx(Te,{"code-path":"src/components/monitor/AlertManager.tsx:224:11",alerts:d,loading:h,onReload:v})}),e.jsx(I,{"code-path":"src/components/monitor/AlertManager.tsx:227:9",value:"rules",children:e.jsx(ye,{"code-path":"src/components/monitor/AlertManager.tsx:228:11",rules:u,notifyChannels:r,onReload:v,onEditRule:S})})]}),e.jsx(ge,{"code-path":"src/components/monitor/AlertManager.tsx:239:7",open:C,onOpenChange:j,editingRule:y,notifyChannels:r,onSaved:v}),e.jsx(we,{"code-path":"src/components/monitor/AlertManager.tsx:246:7",open:x,onOpenChange:t,notifyChannels:r,onChannelsChanged:v})]})}export{Xe as AlertManager}; diff --git a/backend/static/assets/AlertRuleDialog-DnF-_Zoj.js b/backend/static/assets/AlertRuleDialog-CpPLZsky.js similarity index 89% rename from backend/static/assets/AlertRuleDialog-DnF-_Zoj.js rename to backend/static/assets/AlertRuleDialog-CpPLZsky.js index 7882ee7..9c80eea 100644 --- a/backend/static/assets/AlertRuleDialog-DnF-_Zoj.js +++ b/backend/static/assets/AlertRuleDialog-CpPLZsky.js @@ -1,4 +1,4 @@ -import{j as e,J as R,r as d,D as v,b as w,c as k,d as S,e as _,I as x,f as C,B as g,L}from"./index-DfyorCky.js";import{L as n}from"./label-BK0h2apY.js";import{T as E}from"./textarea-NXY8u32k.js";import{S as P}from"./switch-CGiGgOnh.js";import{a as A}from"./monitor-BAaBXIsC.js";import{M as T}from"./message-square-DyxabBvb.js";import{P as I,M as B}from"./phone-DgvWDdJl.js";function D(o){if(!o)return[];if(Array.isArray(o))return o;if(typeof o=="string"){try{const r=JSON.parse(o);if(Array.isArray(r))return r}catch{}return o.split(",").map(r=>r.trim()).filter(Boolean)}return[]}const F=["email","sms","dingtalk","wechat","webhook"],q={dingtalk:"钉钉",wechat:"企业微信",email:"邮件",sms:"短信",webhook:"Webhook"};function H(o,r){if(!o)return null;const a=r.find(c=>String(c.id)===String(o));return a?{type:a.type||"unknown",name:a.name||a.type||"未命名",isLegacy:!1}:F.includes(o)?{type:o,name:q[o]||o,isLegacy:!0}:null}const M=[{key:"dingtalk",label:"钉钉",placeholder:`{ +import{j as e,H as R,r as d,D as v,a as w,b as k,c as S,d as _,e as C,B as g,L}from"./index-Dmami9WE.js";import{I as x}from"./input-NsU9nXZF.js";import{L as n}from"./label-Ap_-SPYI.js";import{T as E}from"./textarea-DHUZ6N85.js";import{S as P}from"./switch-TqjD2x0W.js";import{a as A}from"./monitor-CicbJUrQ.js";import{M as T}from"./message-square-BNbub2_o.js";import{P as I,M as B}from"./phone-Cn_wSobp.js";function D(o){if(!o)return[];if(Array.isArray(o))return o;if(typeof o=="string"){try{const r=JSON.parse(o);if(Array.isArray(r))return r}catch{}return o.split(",").map(r=>r.trim()).filter(Boolean)}return[]}const F=["email","sms","dingtalk","wechat","webhook"],H={dingtalk:"钉钉",wechat:"企业微信",email:"邮件",sms:"短信",webhook:"Webhook"};function q(o,r){if(!o)return null;const a=r.find(c=>String(c.id)===String(o));return a?{type:a.type||"unknown",name:a.name||a.type||"未命名",isLegacy:!1}:F.includes(o)?{type:o,name:H[o]||o,isLegacy:!0}:null}const M=[{key:"dingtalk",label:"钉钉",placeholder:`{ "webhook": "https://oapi.dingtalk.com/robot/send?access_token=***", "secret": "SECxxx" }`},{key:"wechat",label:"企业微信",placeholder:`{ @@ -11,4 +11,4 @@ import{j as e,J as R,r as d,D as v,b as w,c as k,d as S,e as _,I as x,f as C,B a "sign": "AIOps" }`},{key:"webhook",label:"Webhook",placeholder:`{ "url": "https://example.com/alert" -}`}];function y(o){return M.find(r=>r.key===o)?.label||o}function j(o){switch(o){case"email":return B;case"sms":return I;case"dingtalk":case"wechat":return T;default:return R}}function Q(o,r){const a=D(o.notify_channels);return a.length===0?e.jsx("span",{"code-path":"src/components/monitor/alertShared.tsx:76:33",className:"text-xs text-slate-600",children:"--"}):e.jsx("div",{"code-path":"src/components/monitor/alertShared.tsx:78:5",className:"flex flex-wrap gap-1",children:a.map(c=>{const i=H(c,r);if(!i)return null;const t=j(i.type);return e.jsxs("span",{"code-path":"src/components/monitor/alertShared.tsx:84:11",title:`${i.name} (${y(i.type)})`,className:"inline-flex items-center gap-1 text-xs px-1.5 py-0.5 rounded bg-slate-800 text-slate-300",children:[e.jsx(t,{"code-path":"src/components/monitor/alertShared.tsx:89:13",className:"h-3 w-3 text-slate-400"}),i.name]},c)})})}const b={name:"",description:"",type:"metric",source:"prometheus",expression:"",severity:"warning",duration:300,notify_channels:[]};function U({open:o,onOpenChange:r,editingRule:a,notifyChannels:c,onSaved:i}){const[t,l]=d.useState({...b}),[h,u]=d.useState(!1);d.useEffect(()=>{o&&l(a?{name:a.name||"",description:a.description||"",type:a.type||"metric",source:a.source||"prometheus",expression:a.expression||"",severity:a.severity||"warning",duration:a.duration||300,notify_channels:D(a.notify_channels)}:{...b})},[o,a]);const f=s=>{l(m=>({...m,notify_channels:m.notify_channels.includes(s)?m.notify_channels.filter(p=>p!==s):[...m.notify_channels,s]}))},N=async()=>{if(!(!t.name.trim()||!t.expression.trim())){u(!0);try{const s={name:t.name.trim(),description:t.description.trim(),type:t.type,source:t.source,expression:t.expression.trim(),severity:t.severity,duration:Number(t.duration)||0,notify_channels:t.notify_channels};a?await A.updateRule(a.id,s):await A.createRule(s),r(!1),i()}catch(s){console.error("Failed to save rule:",s)}finally{u(!1)}}};return e.jsx(v,{"code-path":"src/components/monitor/AlertRuleDialog.tsx:103:5",open:o,onOpenChange:r,children:e.jsxs(w,{"code-path":"src/components/monitor/AlertRuleDialog.tsx:104:7",className:"bg-slate-900 border-slate-700 text-slate-100 max-w-lg",children:[e.jsxs(k,{"code-path":"src/components/monitor/AlertRuleDialog.tsx:105:9",children:[e.jsx(S,{"code-path":"src/components/monitor/AlertRuleDialog.tsx:106:11",className:"text-slate-100",children:a?"编辑告警规则":"新建告警规则"}),e.jsx(_,{"code-path":"src/components/monitor/AlertRuleDialog.tsx:109:11",className:"text-slate-500",children:a?"修改告警规则的触发条件和通知方式":"配置监控指标的告警触发条件"})]}),e.jsxs("div",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:114:9",className:"space-y-4 max-h-[60vh] overflow-y-auto pr-1",children:[e.jsxs("div",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:115:11",className:"space-y-1.5",children:[e.jsxs(n,{"code-path":"src/components/monitor/AlertRuleDialog.tsx:116:13",className:"text-slate-300",children:["规则名称 ",e.jsx("span",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:116:52",className:"text-red-400",children:"*"})]}),e.jsx(x,{"code-path":"src/components/monitor/AlertRuleDialog.tsx:117:13",value:t.name,onChange:s=>l({...t,name:s.target.value}),placeholder:"如:CPU 使用率告警",className:"bg-slate-800/50 border-slate-700 text-slate-200 placeholder:text-slate-600"})]}),e.jsxs("div",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:125:11",className:"space-y-1.5",children:[e.jsx(n,{"code-path":"src/components/monitor/AlertRuleDialog.tsx:126:13",className:"text-slate-300",children:"描述"}),e.jsx(E,{"code-path":"src/components/monitor/AlertRuleDialog.tsx:127:13",value:t.description,onChange:s=>l({...t,description:s.target.value}),placeholder:"规则说明",rows:2,className:"bg-slate-800/50 border-slate-700 text-slate-200 placeholder:text-slate-600 resize-none"})]}),e.jsxs("div",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:136:11",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:137:13",className:"space-y-1.5",children:[e.jsx(n,{"code-path":"src/components/monitor/AlertRuleDialog.tsx:138:15",className:"text-slate-300",children:"规则类型"}),e.jsxs("select",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:139:15",value:t.type,onChange:s=>l({...t,type:s.target.value}),className:"w-full h-9 px-3 rounded-md bg-slate-800/50 border border-slate-700 text-slate-200 text-sm",children:[e.jsx("option",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:144:17",value:"metric",children:"指标监控"}),e.jsx("option",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:145:17",value:"log",children:"日志告警"}),e.jsx("option",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:146:17",value:"event",children:"事件告警"})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:149:13",className:"space-y-1.5",children:[e.jsx(n,{"code-path":"src/components/monitor/AlertRuleDialog.tsx:150:15",className:"text-slate-300",children:"数据源"}),e.jsxs("select",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:151:15",value:t.source,onChange:s=>l({...t,source:s.target.value}),className:"w-full h-9 px-3 rounded-md bg-slate-800/50 border border-slate-700 text-slate-200 text-sm",children:[e.jsx("option",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:156:17",value:"prometheus",children:"Prometheus"}),e.jsx("option",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:157:17",value:"zabbix",children:"Zabbix"}),e.jsx("option",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:158:17",value:"custom",children:"自定义"})]})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:163:11",className:"space-y-1.5",children:[e.jsxs(n,{"code-path":"src/components/monitor/AlertRuleDialog.tsx:164:13",className:"text-slate-300",children:["触发表达式 ",e.jsx("span",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:164:53",className:"text-red-400",children:"*"})]}),e.jsx(x,{"code-path":"src/components/monitor/AlertRuleDialog.tsx:165:13",value:t.expression,onChange:s=>l({...t,expression:s.target.value}),placeholder:"如:cpu_usage > 80",className:"bg-slate-800/50 border-slate-700 text-slate-200 placeholder:text-slate-600 font-mono text-sm"}),e.jsx("p",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:171:13",className:"text-xs text-slate-600",children:"PromQL 或指标表达式,例如 cpu_usage > 80"})]}),e.jsxs("div",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:174:11",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:175:13",className:"space-y-1.5",children:[e.jsx(n,{"code-path":"src/components/monitor/AlertRuleDialog.tsx:176:15",className:"text-slate-300",children:"告警级别"}),e.jsxs("select",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:177:15",value:t.severity,onChange:s=>l({...t,severity:s.target.value}),className:"w-full h-9 px-3 rounded-md bg-slate-800/50 border border-slate-700 text-slate-200 text-sm",children:[e.jsx("option",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:182:17",value:"info",children:"提示"}),e.jsx("option",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:183:17",value:"warning",children:"警告"}),e.jsx("option",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:184:17",value:"critical",children:"严重"})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:187:13",className:"space-y-1.5",children:[e.jsx(n,{"code-path":"src/components/monitor/AlertRuleDialog.tsx:188:15",className:"text-slate-300",children:"持续时间(秒)"}),e.jsx(x,{"code-path":"src/components/monitor/AlertRuleDialog.tsx:189:15",type:"number",value:t.duration,onChange:s=>l({...t,duration:Number(s.target.value)}),className:"bg-slate-800/50 border-slate-700 text-slate-200"})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:198:11",className:"space-y-1.5",children:[e.jsx(n,{"code-path":"src/components/monitor/AlertRuleDialog.tsx:199:13",className:"text-slate-300",children:"通知渠道"}),c.length===0?e.jsx("div",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:201:15",className:"text-xs text-amber-400/80 bg-amber-500/5 border border-amber-500/20 rounded-md px-3 py-2",children:"暂无已配置的通知渠道,请先在「通知渠道配置」中添加"}):e.jsx("div",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:205:15",className:"flex flex-wrap gap-3 pt-1",children:c.map(s=>{const m=j(s.type),p=t.notify_channels.includes(String(s.id));return e.jsxs("label",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:210:21",className:"flex items-center gap-2 cursor-pointer select-none text-sm text-slate-300",children:[e.jsx(P,{"code-path":"src/components/monitor/AlertRuleDialog.tsx:214:23",checked:p,onCheckedChange:()=>f(String(s.id)),className:"data-[state=checked]:bg-blue-600"}),e.jsx(m,{"code-path":"src/components/monitor/AlertRuleDialog.tsx:219:23",className:"h-4 w-4 text-slate-400"}),e.jsxs("span",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:220:23",children:[s.name,e.jsxs("span",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:222:25",className:"text-xs text-slate-500 ml-1",children:["(",y(s.type),")"]})]})]},s.id)})})]})]}),e.jsxs(C,{"code-path":"src/components/monitor/AlertRuleDialog.tsx:232:9",children:[e.jsx(g,{"code-path":"src/components/monitor/AlertRuleDialog.tsx:233:11",variant:"outline",className:"border-slate-700 text-slate-300 hover:bg-slate-800",onClick:()=>r(!1),children:"取消"}),e.jsxs(g,{"code-path":"src/components/monitor/AlertRuleDialog.tsx:240:11",className:"bg-blue-600 hover:bg-blue-700 text-white",disabled:!t.name.trim()||!t.expression.trim()||h,onClick:N,children:[h&&e.jsx(L,{"code-path":"src/components/monitor/AlertRuleDialog.tsx:245:28",className:"h-4 w-4 mr-2 animate-spin"}),a?"保存修改":"创建规则"]})]})]})})}export{U as A,M as C,y as g,Q as r}; +}`}];function y(o){return M.find(r=>r.key===o)?.label||o}function j(o){switch(o){case"email":return B;case"sms":return I;case"dingtalk":case"wechat":return T;default:return R}}function U(o,r){const a=D(o.notify_channels);return a.length===0?e.jsx("span",{"code-path":"src/components/monitor/alertShared.tsx:76:33",className:"text-xs text-slate-600",children:"--"}):e.jsx("div",{"code-path":"src/components/monitor/alertShared.tsx:78:5",className:"flex flex-wrap gap-1",children:a.map(c=>{const i=q(c,r);if(!i)return null;const t=j(i.type);return e.jsxs("span",{"code-path":"src/components/monitor/alertShared.tsx:84:11",title:`${i.name} (${y(i.type)})`,className:"inline-flex items-center gap-1 text-xs px-1.5 py-0.5 rounded bg-slate-800 text-slate-300",children:[e.jsx(t,{"code-path":"src/components/monitor/alertShared.tsx:89:13",className:"h-3 w-3 text-slate-400"}),i.name]},c)})})}const b={name:"",description:"",type:"metric",source:"prometheus",expression:"",severity:"warning",duration:300,notify_channels:[]};function Z({open:o,onOpenChange:r,editingRule:a,notifyChannels:c,onSaved:i}){const[t,l]=d.useState({...b}),[h,u]=d.useState(!1);d.useEffect(()=>{o&&l(a?{name:a.name||"",description:a.description||"",type:a.type||"metric",source:a.source||"prometheus",expression:a.expression||"",severity:a.severity||"warning",duration:a.duration||300,notify_channels:D(a.notify_channels)}:{...b})},[o,a]);const f=s=>{l(m=>({...m,notify_channels:m.notify_channels.includes(s)?m.notify_channels.filter(p=>p!==s):[...m.notify_channels,s]}))},N=async()=>{if(!(!t.name.trim()||!t.expression.trim())){u(!0);try{const s={name:t.name.trim(),description:t.description.trim(),type:t.type,source:t.source,expression:t.expression.trim(),severity:t.severity,duration:Number(t.duration)||0,notify_channels:t.notify_channels};a?await A.updateRule(a.id,s):await A.createRule(s),r(!1),i()}catch(s){console.error("Failed to save rule:",s)}finally{u(!1)}}};return e.jsx(v,{"code-path":"src/components/monitor/AlertRuleDialog.tsx:103:5",open:o,onOpenChange:r,children:e.jsxs(w,{"code-path":"src/components/monitor/AlertRuleDialog.tsx:104:7",className:"bg-slate-900 border-slate-700 text-slate-100 max-w-lg",children:[e.jsxs(k,{"code-path":"src/components/monitor/AlertRuleDialog.tsx:105:9",children:[e.jsx(S,{"code-path":"src/components/monitor/AlertRuleDialog.tsx:106:11",className:"text-slate-100",children:a?"编辑告警规则":"新建告警规则"}),e.jsx(_,{"code-path":"src/components/monitor/AlertRuleDialog.tsx:109:11",className:"text-slate-500",children:a?"修改告警规则的触发条件和通知方式":"配置监控指标的告警触发条件"})]}),e.jsxs("div",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:114:9",className:"space-y-4 max-h-[60vh] overflow-y-auto pr-1",children:[e.jsxs("div",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:115:11",className:"space-y-1.5",children:[e.jsxs(n,{"code-path":"src/components/monitor/AlertRuleDialog.tsx:116:13",className:"text-slate-300",children:["规则名称 ",e.jsx("span",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:116:52",className:"text-red-400",children:"*"})]}),e.jsx(x,{"code-path":"src/components/monitor/AlertRuleDialog.tsx:117:13",value:t.name,onChange:s=>l({...t,name:s.target.value}),placeholder:"如:CPU 使用率告警",className:"bg-slate-800/50 border-slate-700 text-slate-200 placeholder:text-slate-600"})]}),e.jsxs("div",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:125:11",className:"space-y-1.5",children:[e.jsx(n,{"code-path":"src/components/monitor/AlertRuleDialog.tsx:126:13",className:"text-slate-300",children:"描述"}),e.jsx(E,{"code-path":"src/components/monitor/AlertRuleDialog.tsx:127:13",value:t.description,onChange:s=>l({...t,description:s.target.value}),placeholder:"规则说明",rows:2,className:"bg-slate-800/50 border-slate-700 text-slate-200 placeholder:text-slate-600 resize-none"})]}),e.jsxs("div",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:136:11",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:137:13",className:"space-y-1.5",children:[e.jsx(n,{"code-path":"src/components/monitor/AlertRuleDialog.tsx:138:15",className:"text-slate-300",children:"规则类型"}),e.jsxs("select",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:139:15",value:t.type,onChange:s=>l({...t,type:s.target.value}),className:"w-full h-9 px-3 rounded-md bg-slate-800/50 border border-slate-700 text-slate-200 text-sm",children:[e.jsx("option",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:144:17",value:"metric",children:"指标监控"}),e.jsx("option",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:145:17",value:"log",children:"日志告警"}),e.jsx("option",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:146:17",value:"event",children:"事件告警"})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:149:13",className:"space-y-1.5",children:[e.jsx(n,{"code-path":"src/components/monitor/AlertRuleDialog.tsx:150:15",className:"text-slate-300",children:"数据源"}),e.jsxs("select",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:151:15",value:t.source,onChange:s=>l({...t,source:s.target.value}),className:"w-full h-9 px-3 rounded-md bg-slate-800/50 border border-slate-700 text-slate-200 text-sm",children:[e.jsx("option",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:156:17",value:"prometheus",children:"Prometheus"}),e.jsx("option",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:157:17",value:"zabbix",children:"Zabbix"}),e.jsx("option",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:158:17",value:"custom",children:"自定义"})]})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:163:11",className:"space-y-1.5",children:[e.jsxs(n,{"code-path":"src/components/monitor/AlertRuleDialog.tsx:164:13",className:"text-slate-300",children:["触发表达式 ",e.jsx("span",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:164:53",className:"text-red-400",children:"*"})]}),e.jsx(x,{"code-path":"src/components/monitor/AlertRuleDialog.tsx:165:13",value:t.expression,onChange:s=>l({...t,expression:s.target.value}),placeholder:"如:cpu_usage > 80",className:"bg-slate-800/50 border-slate-700 text-slate-200 placeholder:text-slate-600 font-mono text-sm"}),e.jsx("p",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:171:13",className:"text-xs text-slate-600",children:"PromQL 或指标表达式,例如 cpu_usage > 80"})]}),e.jsxs("div",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:174:11",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:175:13",className:"space-y-1.5",children:[e.jsx(n,{"code-path":"src/components/monitor/AlertRuleDialog.tsx:176:15",className:"text-slate-300",children:"告警级别"}),e.jsxs("select",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:177:15",value:t.severity,onChange:s=>l({...t,severity:s.target.value}),className:"w-full h-9 px-3 rounded-md bg-slate-800/50 border border-slate-700 text-slate-200 text-sm",children:[e.jsx("option",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:182:17",value:"info",children:"提示"}),e.jsx("option",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:183:17",value:"warning",children:"警告"}),e.jsx("option",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:184:17",value:"critical",children:"严重"})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:187:13",className:"space-y-1.5",children:[e.jsx(n,{"code-path":"src/components/monitor/AlertRuleDialog.tsx:188:15",className:"text-slate-300",children:"持续时间(秒)"}),e.jsx(x,{"code-path":"src/components/monitor/AlertRuleDialog.tsx:189:15",type:"number",value:t.duration,onChange:s=>l({...t,duration:Number(s.target.value)}),className:"bg-slate-800/50 border-slate-700 text-slate-200"})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:198:11",className:"space-y-1.5",children:[e.jsx(n,{"code-path":"src/components/monitor/AlertRuleDialog.tsx:199:13",className:"text-slate-300",children:"通知渠道"}),c.length===0?e.jsx("div",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:201:15",className:"text-xs text-amber-400/80 bg-amber-500/5 border border-amber-500/20 rounded-md px-3 py-2",children:"暂无已配置的通知渠道,请先在「通知渠道配置」中添加"}):e.jsx("div",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:205:15",className:"flex flex-wrap gap-3 pt-1",children:c.map(s=>{const m=j(s.type),p=t.notify_channels.includes(String(s.id));return e.jsxs("label",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:210:21",className:"flex items-center gap-2 cursor-pointer select-none text-sm text-slate-300",children:[e.jsx(P,{"code-path":"src/components/monitor/AlertRuleDialog.tsx:214:23",checked:p,onCheckedChange:()=>f(String(s.id)),className:"data-[state=checked]:bg-blue-600"}),e.jsx(m,{"code-path":"src/components/monitor/AlertRuleDialog.tsx:219:23",className:"h-4 w-4 text-slate-400"}),e.jsxs("span",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:220:23",children:[s.name,e.jsxs("span",{"code-path":"src/components/monitor/AlertRuleDialog.tsx:222:25",className:"text-xs text-slate-500 ml-1",children:["(",y(s.type),")"]})]})]},s.id)})})]})]}),e.jsxs(C,{"code-path":"src/components/monitor/AlertRuleDialog.tsx:232:9",children:[e.jsx(g,{"code-path":"src/components/monitor/AlertRuleDialog.tsx:233:11",variant:"outline",className:"border-slate-700 text-slate-300 hover:bg-slate-800",onClick:()=>r(!1),children:"取消"}),e.jsxs(g,{"code-path":"src/components/monitor/AlertRuleDialog.tsx:240:11",className:"bg-blue-600 hover:bg-blue-700 text-white",disabled:!t.name.trim()||!t.expression.trim()||h,onClick:N,children:[h&&e.jsx(L,{"code-path":"src/components/monitor/AlertRuleDialog.tsx:245:28",className:"h-4 w-4 mr-2 animate-spin"}),a?"保存修改":"创建规则"]})]})]})})}export{Z as A,M as C,y as g,U as r}; diff --git a/backend/static/assets/ApprovalAppPage-C4o-Qi-Z.js b/backend/static/assets/ApprovalAppPage-C4o-Qi-Z.js new file mode 100644 index 0000000..ad9df63 --- /dev/null +++ b/backend/static/assets/ApprovalAppPage-C4o-Qi-Z.js @@ -0,0 +1 @@ +import{j as e}from"./index-Dmami9WE.js";import{A as t}from"./ApprovalCategoryPage-CIXhWQ3k.js";import"./card-CIfC-8Rh.js";import"./input-NsU9nXZF.js";import"./badge-3UzCvU7L.js";import"./label-Ap_-SPYI.js";import"./table-CG4mjNfb.js";import"./select-DUbxjT0z.js";import"./index-CtCQcvyh.js";import"./chevron-up-Cq4GPopa.js";import"./system-C3cYTuQH.js";import"./index-BuEnLCjT.js";import"./plus-O65gX7Qz.js";import"./search-Dd-PeBfg.js";import"./refresh-cw-CTBERyFc.js";import"./file-text-CebshSV-.js";import"./circle-x-BBQeW1R3.js";import"./play-0EwQQJX_.js";const r=[{key:"app_name",label:"应用名称",type:"text",placeholder:"如 user-service",required:!0},{key:"git_url",label:"Git 地址",type:"text",placeholder:"如 https://github.com/org/repo.git",required:!0},{key:"branch",label:"分支",type:"text",defaultValue:"main",required:!0},{key:"language",label:"开发语言",type:"select",options:["Java","Go","Python","Node.js","C++"],required:!0},{key:"http_port",label:"HTTP 端口",type:"number",placeholder:"如 8080"},{key:"env",label:"部署环境",type:"select",options:["dev","staging","prod"],required:!0},{key:"replicas",label:"副本数",type:"number",defaultValue:2,required:!0},{key:"remark",label:"备注",type:"textarea"}];function A(){return e.jsx(t,{"code-path":"src/pages/ApprovalAppPage.tsx:17:5",category:"app",title:"应用申请",description:"申请应用部署、版本发布、流水线配置",fields:r,templateCode:"app_deploy"})}export{A as ApprovalAppPage}; diff --git a/backend/static/assets/ApprovalCategoryPage-CIXhWQ3k.js b/backend/static/assets/ApprovalCategoryPage-CIXhWQ3k.js new file mode 100644 index 0000000..0a83974 --- /dev/null +++ b/backend/static/assets/ApprovalCategoryPage-CIXhWQ3k.js @@ -0,0 +1 @@ +import{r as c,j as e,B as x,L as H,X as I,K as B,O as de,D as Q,a as W,b as Y,c as Z,d as ee,C as xe,P as ne,U as ie,o as he}from"./index-Dmami9WE.js";import{C as ve,a as me}from"./card-CIfC-8Rh.js";import{I as q}from"./input-NsU9nXZF.js";import{B as z}from"./badge-3UzCvU7L.js";import{L as ye}from"./label-Ap_-SPYI.js";import{T as ue,a as Ce,b as J,c as N,d as je,e as f}from"./table-CG4mjNfb.js";import{S as K,a as U,b as X,c as G,d as w}from"./select-DUbxjT0z.js";import{b as i}from"./system-C3cYTuQH.js";import{t as l}from"./index-BuEnLCjT.js";import{P as Pe}from"./plus-O65gX7Qz.js";import{S as Ae}from"./search-Dd-PeBfg.js";import{R as be}from"./refresh-cw-CTBERyFc.js";import{F as Ne}from"./file-text-CebshSV-.js";import{C as fe}from"./circle-x-BBQeW1R3.js";import{P as we}from"./play-0EwQQJX_.js";const ae=t=>{switch(t){case"approved":return e.jsxs(z,{"code-path":"src/pages/ApprovalCategoryPage.tsx:43:29",className:"bg-emerald-500/20 text-emerald-400 border-emerald-500/30",children:[e.jsx(ne,{"code-path":"src/pages/ApprovalCategoryPage.tsx:43:105",className:"h-3 w-3 mr-1"}),"已通过"]});case"rejected":return e.jsxs(z,{"code-path":"src/pages/ApprovalCategoryPage.tsx:44:29",className:"bg-red-500/20 text-red-400 border-red-500/30",children:[e.jsx(fe,{"code-path":"src/pages/ApprovalCategoryPage.tsx:44:93",className:"h-3 w-3 mr-1"}),"已拒绝"]});default:return e.jsxs(z,{"code-path":"src/pages/ApprovalCategoryPage.tsx:45:21",className:"bg-amber-500/20 text-amber-400 border-amber-500/30",children:[e.jsx(xe,{"code-path":"src/pages/ApprovalCategoryPage.tsx:45:91",className:"h-3 w-3 mr-1"}),"审批中"]})}};function M(t){try{return JSON.parse(t)||{}}catch{return{}}}function se(t){const p=t?.applicant_user;return p?p.real_name||p.username||`#${t.applicant}`:t?.applicant?`#${t.applicant}`:"--"}function ke(t){if(t.status!=="pending")return"--";const p=t.steps||[];if(p.length===0)return"管理员(待分配)";const d=p.find(g=>g.step===t.current_step&&g.status==="pending");return d?d.approver_user?d.approver_user.real_name||d.approver_user.username||`#${d.approver}`:"管理员":"管理员(待分配)"}function Je({category:t,title:p,description:d,fields:g,templateCode:C}){const[y,j]=c.useState([]),[k,_]=c.useState(!0),[P,S]=c.useState(""),[h,D]=c.useState(""),[s,o]=c.useState(!1),[n,A]=c.useState(!1),[$,F]=c.useState(null),[v,b]=c.useState({}),[te,L]=c.useState(null),[E,T]=c.useState(!1),m=c.useCallback(async()=>{_(!0);try{const a={page_size:"100"};t&&(a.category=t),h&&(a.status=h);const r=await i.getProcesses(a);j(r?.list??r?.data?.list??[])}catch{j([])}finally{_(!1)}},[t,h]),O=c.useCallback(async()=>{try{const a=await i.getTemplates({type:C}),r=a?.list??a?.data?.list??[];r.length>0&&F(r[0].id)}catch{}},[C]);c.useEffect(()=>{m()},[m]),c.useEffect(()=>{O()},[O]);const re=async()=>{if(!$){l.error("模板未加载");return}for(const a of g)if(a.required&&!v[a.key]){l.error(`请填写「${a.label}」`);return}A(!0);try{const a=v[g[0]?.key]||"",r=g[1]&&v[g[1].key]||"";await i.createProcess({template_id:$,title:`${p} - ${a}${r?" / "+r:""}`,form_data:JSON.stringify(v)}),l.success("申请已提交"),o(!1),b({}),m()}catch(a){l.error(a?.message||"提交失败")}finally{A(!1)}},R=()=>{const a={};g.forEach(r=>{a[r.key]=r.defaultValue?.toString()||""}),b(a),o(!0)},pe=async a=>{T(!0);try{await i.approveProcess(a),l.success("已通过"),m()}catch(r){l.error(r?.response?.data?.message||"审批失败")}finally{T(!1)}},ce=async a=>{T(!0);try{await i.rejectProcess(a,"审批拒绝"),l.success("已拒绝"),m()}catch(r){l.error(r?.response?.data?.message||"操作失败")}finally{T(!1)}},oe=async a=>{try{const r=await i.getProcesses({page_size:200}),ge=(r?.list??r?.data?.list??[]).find(le=>le.id===a.id);L(ge||a)}catch{L(a)}},V=y.filter(a=>!P||(a.title||"").toLowerCase().includes(P.toLowerCase()));return e.jsxs("div",{"code-path":"src/pages/ApprovalCategoryPage.tsx:154:5",className:"space-y-5",children:[e.jsxs("div",{"code-path":"src/pages/ApprovalCategoryPage.tsx:155:7",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/pages/ApprovalCategoryPage.tsx:156:9",children:[e.jsx("h1",{"code-path":"src/pages/ApprovalCategoryPage.tsx:157:11",className:"text-2xl font-bold text-[var(--dg-text-primary)]",children:p}),e.jsx("p",{"code-path":"src/pages/ApprovalCategoryPage.tsx:158:11",className:"text-sm text-[var(--dg-text-secondary)] mt-1",children:d})]}),e.jsxs(x,{"code-path":"src/pages/ApprovalCategoryPage.tsx:160:9",onClick:R,className:"bg-[var(--dg-blue)] hover:bg-[var(--dg-blue)]/90",children:[e.jsx(Pe,{"code-path":"src/pages/ApprovalCategoryPage.tsx:161:11",className:"h-4 w-4 mr-2"}),"新建申请"]})]}),e.jsxs("div",{"code-path":"src/pages/ApprovalCategoryPage.tsx:165:7",className:"flex items-center gap-3 flex-wrap",children:[e.jsxs("div",{"code-path":"src/pages/ApprovalCategoryPage.tsx:166:9",className:"relative w-64",children:[e.jsx(Ae,{"code-path":"src/pages/ApprovalCategoryPage.tsx:167:11",className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-[var(--dg-text-muted)]"}),e.jsx(q,{"code-path":"src/pages/ApprovalCategoryPage.tsx:168:11",placeholder:"搜索申请...",value:P,onChange:a=>S(a.target.value),className:"pl-9 h-9 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)]"})]}),e.jsxs(K,{"code-path":"src/pages/ApprovalCategoryPage.tsx:171:9",value:h,onValueChange:D,children:[e.jsx(U,{"code-path":"src/pages/ApprovalCategoryPage.tsx:172:11",className:"w-32 h-9 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)]",children:e.jsx(X,{"code-path":"src/pages/ApprovalCategoryPage.tsx:173:13",placeholder:"全部状态"})}),e.jsxs(G,{"code-path":"src/pages/ApprovalCategoryPage.tsx:175:11",children:[e.jsx(w,{"code-path":"src/pages/ApprovalCategoryPage.tsx:176:13",value:"all",children:"全部状态"}),e.jsx(w,{"code-path":"src/pages/ApprovalCategoryPage.tsx:177:13",value:"pending",children:"审批中"}),e.jsx(w,{"code-path":"src/pages/ApprovalCategoryPage.tsx:178:13",value:"approved",children:"已通过"}),e.jsx(w,{"code-path":"src/pages/ApprovalCategoryPage.tsx:179:13",value:"rejected",children:"已拒绝"})]})]}),e.jsxs(x,{"code-path":"src/pages/ApprovalCategoryPage.tsx:182:9",variant:"outline",size:"sm",className:"border-[var(--dg-border)]",onClick:m,children:[e.jsx(be,{"code-path":"src/pages/ApprovalCategoryPage.tsx:183:11",className:"h-4 w-4 mr-2"}),"刷新"]})]}),e.jsx(ve,{"code-path":"src/pages/ApprovalCategoryPage.tsx:187:7",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsx(me,{"code-path":"src/pages/ApprovalCategoryPage.tsx:188:9",className:"p-0",children:k?e.jsx("div",{"code-path":"src/pages/ApprovalCategoryPage.tsx:190:13",className:"flex items-center justify-center py-16",children:e.jsx(H,{"code-path":"src/pages/ApprovalCategoryPage.tsx:190:69",className:"h-6 w-6 animate-spin text-[var(--dg-blue)]"})}):V.length===0?e.jsxs("div",{"code-path":"src/pages/ApprovalCategoryPage.tsx:192:13",className:"flex flex-col items-center justify-center py-16 text-[var(--dg-text-muted)]",children:[e.jsx(Ne,{"code-path":"src/pages/ApprovalCategoryPage.tsx:193:15",className:"h-10 w-10 mb-3 opacity-30"}),e.jsx("p",{"code-path":"src/pages/ApprovalCategoryPage.tsx:194:15",className:"text-sm",children:"暂无申请记录"}),e.jsx(x,{"code-path":"src/pages/ApprovalCategoryPage.tsx:195:15",variant:"link",className:"mt-2",onClick:R,children:"立即申请"})]}):e.jsxs(ue,{"code-path":"src/pages/ApprovalCategoryPage.tsx:198:13",children:[e.jsx(Ce,{"code-path":"src/pages/ApprovalCategoryPage.tsx:199:15",children:e.jsxs(J,{"code-path":"src/pages/ApprovalCategoryPage.tsx:200:17",className:"border-[var(--dg-border)] hover:bg-transparent",children:[e.jsx(N,{"code-path":"src/pages/ApprovalCategoryPage.tsx:201:19",className:"text-[var(--dg-text-secondary)]",children:"提交时间"}),e.jsx(N,{"code-path":"src/pages/ApprovalCategoryPage.tsx:202:19",className:"text-[var(--dg-text-secondary)]",children:"提交账号"}),e.jsx(N,{"code-path":"src/pages/ApprovalCategoryPage.tsx:203:19",className:"text-[var(--dg-text-secondary)]",children:"当前审核人"}),e.jsx(N,{"code-path":"src/pages/ApprovalCategoryPage.tsx:204:19",className:"text-[var(--dg-text-secondary)]",children:"状态"}),e.jsx(N,{"code-path":"src/pages/ApprovalCategoryPage.tsx:205:19",className:"text-[var(--dg-text-secondary)] w-28",children:"操作"})]})}),e.jsx(je,{"code-path":"src/pages/ApprovalCategoryPage.tsx:208:15",children:V.map(a=>e.jsxs(J,{"code-path":"src/pages/ApprovalCategoryPage.tsx:210:19",className:"border-[var(--dg-border)] hover:bg-[var(--dg-bg-hover)]",children:[e.jsx(f,{"code-path":"src/pages/ApprovalCategoryPage.tsx:211:21",className:"text-[var(--dg-text-muted)] text-sm whitespace-nowrap",children:a.created_at?new Date(a.created_at).toLocaleString("zh-CN"):"--"}),e.jsx(f,{"code-path":"src/pages/ApprovalCategoryPage.tsx:214:21",className:"text-[var(--dg-text-primary)]",children:se(a)}),e.jsx(f,{"code-path":"src/pages/ApprovalCategoryPage.tsx:215:21",className:"text-[var(--dg-text-muted)] text-sm",children:ke(a)}),e.jsx(f,{"code-path":"src/pages/ApprovalCategoryPage.tsx:216:21",children:ae(a.status)}),e.jsx(f,{"code-path":"src/pages/ApprovalCategoryPage.tsx:217:21",children:e.jsx("div",{"code-path":"src/pages/ApprovalCategoryPage.tsx:218:23",className:"flex items-center gap-1",children:a.status==="pending"?e.jsxs(e.Fragment,{children:[e.jsxs(x,{"code-path":"src/pages/ApprovalCategoryPage.tsx:221:29",variant:"ghost",size:"sm",className:"h-8 text-red-400 hover:bg-red-500/10",onClick:()=>ce(a.id),disabled:E,children:[e.jsx(I,{"code-path":"src/pages/ApprovalCategoryPage.tsx:222:31",className:"h-3.5 w-3.5 mr-1"}),"拒绝"]}),e.jsxs(x,{"code-path":"src/pages/ApprovalCategoryPage.tsx:224:29",variant:"ghost",size:"sm",className:"h-8 text-emerald-400 hover:bg-emerald-500/10",onClick:()=>pe(a.id),disabled:E,children:[e.jsx(B,{"code-path":"src/pages/ApprovalCategoryPage.tsx:225:31",className:"h-3.5 w-3.5 mr-1"}),"通过"]})]}):e.jsxs(x,{"code-path":"src/pages/ApprovalCategoryPage.tsx:229:27",variant:"ghost",size:"sm",className:"h-8 text-[var(--dg-text-muted)] hover:text-[var(--dg-text-primary)]",onClick:()=>oe(a),children:[e.jsx(de,{"code-path":"src/pages/ApprovalCategoryPage.tsx:230:29",className:"h-3.5 w-3.5 mr-1"}),"详情"]})})})]},a.id))})]})})}),e.jsx(Q,{"code-path":"src/pages/ApprovalCategoryPage.tsx:244:7",open:s,onOpenChange:o,children:e.jsxs(W,{"code-path":"src/pages/ApprovalCategoryPage.tsx:245:9",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] max-w-lg max-h-[85vh] overflow-y-auto",children:[e.jsxs(Y,{"code-path":"src/pages/ApprovalCategoryPage.tsx:246:11",children:[e.jsxs(Z,{"code-path":"src/pages/ApprovalCategoryPage.tsx:247:13",className:"text-[var(--dg-text-primary)]",children:["新建",p]}),e.jsx(ee,{"code-path":"src/pages/ApprovalCategoryPage.tsx:248:13",className:"text-[var(--dg-text-secondary)]",children:d})]}),e.jsx("div",{"code-path":"src/pages/ApprovalCategoryPage.tsx:250:11",className:"space-y-4 py-2",children:g.map(a=>e.jsxs("div",{"code-path":"src/pages/ApprovalCategoryPage.tsx:252:15",className:"space-y-1.5",children:[e.jsxs(ye,{"code-path":"src/pages/ApprovalCategoryPage.tsx:253:17",className:"text-[var(--dg-text-primary)] text-sm",children:[a.label,a.required&&e.jsx("span",{"code-path":"src/pages/ApprovalCategoryPage.tsx:253:106",className:"text-red-400 ml-0.5",children:"*"})]}),a.type==="select"?e.jsxs(K,{"code-path":"src/pages/ApprovalCategoryPage.tsx:255:19",value:v[a.key]||"",onValueChange:r=>b(u=>({...u,[a.key]:r})),children:[e.jsx(U,{"code-path":"src/pages/ApprovalCategoryPage.tsx:256:21",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)]",children:e.jsx(X,{"code-path":"src/pages/ApprovalCategoryPage.tsx:256:101",placeholder:a.placeholder||`选择${a.label}`})}),e.jsx(G,{"code-path":"src/pages/ApprovalCategoryPage.tsx:257:21",children:(a.options||[]).map(r=>e.jsx(w,{"code-path":"src/pages/ApprovalCategoryPage.tsx:257:73",value:r,children:r},r))})]}):a.type==="textarea"?e.jsx("textarea",{"code-path":"src/pages/ApprovalCategoryPage.tsx:260:19",value:v[a.key]||"",onChange:r=>b(u=>({...u,[a.key]:r.target.value})),placeholder:a.placeholder,rows:3,className:"w-full rounded-md bg-[var(--dg-bg-tertiary)] border border-[var(--dg-border)] text-[var(--dg-text-primary)] px-3 py-2 text-sm resize-none focus:outline-none focus:border-[var(--dg-blue)]"}):e.jsx(q,{"code-path":"src/pages/ApprovalCategoryPage.tsx:264:19",type:a.type,value:v[a.key]||"",onChange:r=>b(u=>({...u,[a.key]:r.target.value})),placeholder:a.placeholder,className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)]"})]},a.key))}),e.jsxs("div",{"code-path":"src/pages/ApprovalCategoryPage.tsx:270:11",className:"flex justify-end gap-3 pt-2",children:[e.jsx(x,{"code-path":"src/pages/ApprovalCategoryPage.tsx:271:13",variant:"outline",className:"border-[var(--dg-border)]",onClick:()=>o(!1),children:"取消"}),e.jsx(x,{"code-path":"src/pages/ApprovalCategoryPage.tsx:272:13",onClick:re,disabled:n,className:"bg-[var(--dg-blue)] hover:bg-[var(--dg-blue)]/90",children:n?e.jsxs(e.Fragment,{children:[e.jsx(H,{"code-path":"src/pages/ApprovalCategoryPage.tsx:273:31",className:"h-4 w-4 mr-2 animate-spin"}),"提交中..."]}):"提交申请"})]})]})}),e.jsx(_e,{"code-path":"src/pages/ApprovalCategoryPage.tsx:280:7",item:te,onClose:()=>L(null),fields:g,onStatusChange:m})]})}function _e({item:t,onClose:p,fields:d,onStatusChange:g}){const[C,y]=c.useState(!1);if(!t)return null;const j=s=>s?new Date(s).toLocaleString("zh-CN"):"",k=t.steps||[],_=async()=>{y(!0);try{await i.approveProcess(t.id),l.success("已通过"),g(),p()}catch(s){l.error(s?.response?.data?.message||"审批失败")}finally{y(!1)}},P=async()=>{y(!0);try{await i.rejectProcess(t.id,"审批拒绝"),l.success("已拒绝"),g(),p()}catch(s){l.error(s?.response?.data?.message||"操作失败")}finally{y(!1)}},S=s=>s.status==="approved"?"通过":s.status==="rejected"?"拒绝":s.status==="pending"&&s.step===t.current_step?"待审批":s.status==="pending"?"待开始":s.status,h=s=>s.status==="approved"?"text-emerald-400":s.status==="rejected"?"text-red-400":s.step===t.current_step?"text-blue-400":"text-[var(--dg-text-muted)]",D=s=>s.approver_user?s.approver_user.real_name||s.approver_user.username||`#${s.approver}`:"管理员";return e.jsx(Q,{"code-path":"src/pages/ApprovalCategoryPage.tsx:337:5",open:!!t,onOpenChange:s=>{s||p()},children:e.jsxs(W,{"code-path":"src/pages/ApprovalCategoryPage.tsx:338:7",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] max-w-lg max-h-[85vh] overflow-y-auto",children:[e.jsxs(Y,{"code-path":"src/pages/ApprovalCategoryPage.tsx:339:9",children:[e.jsx(Z,{"code-path":"src/pages/ApprovalCategoryPage.tsx:340:11",className:"text-[var(--dg-text-primary)]",children:"申请详情"}),e.jsx(ee,{"code-path":"src/pages/ApprovalCategoryPage.tsx:341:11",className:"text-[var(--dg-text-secondary)]",children:t.title})]}),e.jsxs("div",{"code-path":"src/pages/ApprovalCategoryPage.tsx:344:9",className:"space-y-4 py-2",children:[e.jsxs("div",{"code-path":"src/pages/ApprovalCategoryPage.tsx:346:11",className:"flex items-center gap-3",children:[e.jsx("span",{"code-path":"src/pages/ApprovalCategoryPage.tsx:347:13",className:"text-sm text-[var(--dg-text-muted)]",children:"状态:"}),ae(t.status),t.status==="pending"&&e.jsxs("span",{"code-path":"src/pages/ApprovalCategoryPage.tsx:350:15",className:"text-xs text-[var(--dg-text-muted)]",children:["第 ",t.current_step,"/",t.total_steps," 步"]})]}),e.jsxs("div",{"code-path":"src/pages/ApprovalCategoryPage.tsx:357:11",className:"border-t border-[var(--dg-border)] pt-4",children:[e.jsx("h4",{"code-path":"src/pages/ApprovalCategoryPage.tsx:358:13",className:"text-sm font-medium text-[var(--dg-text-primary)] mb-4",children:"操作时间线"}),e.jsxs("div",{"code-path":"src/pages/ApprovalCategoryPage.tsx:359:13",className:"space-y-0",children:[e.jsxs("div",{"code-path":"src/pages/ApprovalCategoryPage.tsx:361:15",className:"flex gap-3",children:[e.jsxs("div",{"code-path":"src/pages/ApprovalCategoryPage.tsx:362:17",className:"flex flex-col items-center",children:[e.jsx("div",{"code-path":"src/pages/ApprovalCategoryPage.tsx:363:19",className:"w-7 h-7 rounded-full bg-blue-500/20 flex items-center justify-center",children:e.jsx(ie,{"code-path":"src/pages/ApprovalCategoryPage.tsx:363:105",className:"w-3.5 h-3.5 text-blue-400"})}),e.jsx("div",{"code-path":"src/pages/ApprovalCategoryPage.tsx:364:19",className:"w-0.5 flex-1 bg-[var(--dg-border)] my-1"})]}),e.jsxs("div",{"code-path":"src/pages/ApprovalCategoryPage.tsx:366:17",className:"flex-1 pb-4",children:[e.jsxs("div",{"code-path":"src/pages/ApprovalCategoryPage.tsx:367:19",className:"flex items-center gap-2",children:[e.jsx("span",{"code-path":"src/pages/ApprovalCategoryPage.tsx:368:21",className:"text-sm font-medium text-[var(--dg-text-primary)]",children:"提交申请"}),e.jsx("span",{"code-path":"src/pages/ApprovalCategoryPage.tsx:369:21",className:"text-xs text-[var(--dg-text-muted)]",children:"·"}),e.jsx("span",{"code-path":"src/pages/ApprovalCategoryPage.tsx:370:21",className:"text-xs text-[var(--dg-text-secondary)]",children:se(t)}),e.jsx("span",{"code-path":"src/pages/ApprovalCategoryPage.tsx:371:21",className:"text-xs text-[var(--dg-text-muted)]",children:"·"}),e.jsx("span",{"code-path":"src/pages/ApprovalCategoryPage.tsx:372:21",className:"text-xs text-[var(--dg-text-muted)]",children:j(t.created_at)})]}),e.jsx("div",{"code-path":"src/pages/ApprovalCategoryPage.tsx:375:19",className:"mt-1 flex flex-wrap gap-2",children:(()=>{const s=M(t.form_data||"{}");return d.slice(0,4).map(o=>{const n=s[o.key];return n?e.jsxs("span",{"code-path":"src/pages/ApprovalCategoryPage.tsx:382:27",className:"text-[11px] px-1.5 py-0.5 rounded bg-[var(--dg-bg-tertiary)] text-[var(--dg-text-muted)]",children:[o.label,": ",e.jsx("span",{"code-path":"src/pages/ApprovalCategoryPage.tsx:383:40",className:"text-[var(--dg-text-secondary)]",children:n})]},o.key):null})})()})]})]}),k.map((s,o)=>{const n=o===k.length-1,A=s.step_type==="execute",$=A?"执行":"审核",F=s.status==="approved"?"bg-emerald-500/20":s.status==="rejected"?"bg-red-500/20":"bg-[var(--dg-bg-tertiary)]";return e.jsxs("div",{"code-path":"src/pages/ApprovalCategoryPage.tsx:401:19",className:"flex gap-3",children:[e.jsxs("div",{"code-path":"src/pages/ApprovalCategoryPage.tsx:402:21",className:"flex flex-col items-center",children:[e.jsx("div",{"code-path":"src/pages/ApprovalCategoryPage.tsx:403:23",className:`w-7 h-7 rounded-full flex items-center justify-center ${F}`,children:s.status==="approved"?e.jsx(B,{"code-path":"src/pages/ApprovalCategoryPage.tsx:404:52",className:"w-3.5 h-3.5 text-emerald-400"}):s.status==="rejected"?e.jsx(I,{"code-path":"src/pages/ApprovalCategoryPage.tsx:405:55",className:"w-3.5 h-3.5 text-red-400"}):A?e.jsx(we,{"code-path":"src/pages/ApprovalCategoryPage.tsx:407:33",className:`w-3.5 h-3.5 ${s.step===t.current_step?"text-green-400":"text-[var(--dg-text-muted)]"}`}):e.jsx(he,{"code-path":"src/pages/ApprovalCategoryPage.tsx:408:33",className:`w-3.5 h-3.5 ${s.step===t.current_step?"text-blue-400":"text-[var(--dg-text-muted)]"}`})}),!n&&e.jsx("div",{"code-path":"src/pages/ApprovalCategoryPage.tsx:410:35",className:"w-0.5 flex-1 bg-[var(--dg-border)] my-1"})]}),e.jsxs("div",{"code-path":"src/pages/ApprovalCategoryPage.tsx:412:21",className:`flex-1 ${n?"":"pb-4"}`,children:[e.jsxs("div",{"code-path":"src/pages/ApprovalCategoryPage.tsx:413:23",className:"flex items-center gap-2 flex-wrap",children:[e.jsx("span",{"code-path":"src/pages/ApprovalCategoryPage.tsx:414:25",className:"text-sm font-medium text-[var(--dg-text-primary)]",children:$}),s.approver_user&&e.jsxs(e.Fragment,{children:[e.jsx("span",{"code-path":"src/pages/ApprovalCategoryPage.tsx:417:29",className:"text-xs text-[var(--dg-text-muted)]",children:"·"}),e.jsxs("span",{"code-path":"src/pages/ApprovalCategoryPage.tsx:418:29",className:"text-xs text-[var(--dg-text-secondary)]",children:["指派人: ",D(s)]})]}),s.approved_at&&e.jsxs(e.Fragment,{children:[e.jsx("span",{"code-path":"src/pages/ApprovalCategoryPage.tsx:423:29",className:"text-xs text-[var(--dg-text-muted)]",children:"·"}),e.jsxs("span",{"code-path":"src/pages/ApprovalCategoryPage.tsx:424:29",className:`text-xs ${h(s)}`,children:[D(s)," · ",S(s)," · ",j(s.approved_at)]})]}),!s.approved_at&&e.jsxs(e.Fragment,{children:[e.jsx("span",{"code-path":"src/pages/ApprovalCategoryPage.tsx:431:29",className:"text-xs text-[var(--dg-text-muted)]",children:"·"}),e.jsx("span",{"code-path":"src/pages/ApprovalCategoryPage.tsx:432:29",className:`text-xs ${h(s)}`,children:S(s)})]})]}),s.comment&&s.comment!==s.status&&s.comment!=="pending"&&e.jsx("p",{"code-path":"src/pages/ApprovalCategoryPage.tsx:437:25",className:"text-xs text-[var(--dg-text-muted)] mt-1 ml-0",children:s.comment})]})]},s.id)})]})]}),e.jsxs("div",{"code-path":"src/pages/ApprovalCategoryPage.tsx:447:11",className:"border-t border-[var(--dg-border)] pt-4",children:[e.jsx("h4",{"code-path":"src/pages/ApprovalCategoryPage.tsx:448:13",className:"text-sm font-medium text-[var(--dg-text-primary)] mb-2",children:"申请内容"}),e.jsx("div",{"code-path":"src/pages/ApprovalCategoryPage.tsx:449:13",className:"space-y-2",children:(()=>{const s=M(t.form_data||"{}");return d.map(o=>{const n=s[o.key];return e.jsxs("div",{"code-path":"src/pages/ApprovalCategoryPage.tsx:455:21",className:"grid grid-cols-3 gap-2 text-sm",children:[e.jsxs("span",{"code-path":"src/pages/ApprovalCategoryPage.tsx:456:23",className:"text-[var(--dg-text-muted)]",children:[o.label,":"]}),e.jsx("span",{"code-path":"src/pages/ApprovalCategoryPage.tsx:457:23",className:"text-[var(--dg-text-primary)] col-span-2",children:n??"--"})]},o.key)})})()})]})]}),e.jsxs("div",{"code-path":"src/pages/ApprovalCategoryPage.tsx:466:9",className:"flex justify-end gap-3 pt-2",children:[t.status==="pending"&&e.jsxs(e.Fragment,{children:[e.jsxs(x,{"code-path":"src/pages/ApprovalCategoryPage.tsx:469:15",variant:"outline",className:"border-red-500/30 text-red-400 hover:bg-red-500/10",onClick:P,disabled:C,children:[e.jsx(I,{"code-path":"src/pages/ApprovalCategoryPage.tsx:470:17",className:"h-4 w-4 mr-1.5"}),"拒绝"]}),e.jsxs(x,{"code-path":"src/pages/ApprovalCategoryPage.tsx:472:15",className:"bg-emerald-600 hover:bg-emerald-700",onClick:_,disabled:C,children:[e.jsx(B,{"code-path":"src/pages/ApprovalCategoryPage.tsx:473:17",className:"h-4 w-4 mr-1.5"}),"通过"]})]}),e.jsx(x,{"code-path":"src/pages/ApprovalCategoryPage.tsx:477:11",variant:"outline",className:"border-[var(--dg-border)]",onClick:p,children:"关闭"})]})]})})}export{Je as A}; diff --git a/backend/static/assets/ApprovalFlow-5mIFjuJZ.js b/backend/static/assets/ApprovalFlow-5mIFjuJZ.js deleted file mode 100644 index ae980c0..0000000 --- a/backend/static/assets/ApprovalFlow-5mIFjuJZ.js +++ /dev/null @@ -1 +0,0 @@ -import{g as ye,q as Ne,j as e,X as b,L as $,S as we,I as pe,B as i,U as fe,a0 as oe,D as V,b as J,c as q,d as H,e as G,x as le,f as Q,r as v}from"./index-DfyorCky.js";import{C as u,a as j,b as Te,c as De,d as Fe}from"./card-C55cvSHg.js";import{B as C}from"./badge-xNW8x0G1.js";import{T as ce}from"./textarea-NXY8u32k.js";import{t as T}from"./index-a3ybMjbR.js";import{b as k}from"./system-BgtMMm0X.js";import{F as _}from"./file-text-C9G5abwR.js";import{C as D}from"./circle-check-DWcXrx2k.js";import{C as F}from"./circle-x-DK79Dhg2.js";import{F as Ce}from"./funnel-D2FHr15I.js";import{S as Pe}from"./square-pen-BxUFAe0F.js";import{A as Se}from"./arrow-right-DyIltvNZ.js";import{L as ke}from"./label-BK0h2apY.js";import{S as _e,a as Le,b as Oe,c as Ie,d as $e}from"./select-D5qUzdAs.js";import{P as ze}from"./plus-CUG-9kpu.js";import"./index-CWVNW_qu.js";const Re=[["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}],["line",{x1:"3",x2:"9",y1:"12",y2:"12",key:"1dyftd"}],["line",{x1:"15",x2:"21",y1:"12",y2:"12",key:"oup4p8"}]],Be=ye("git-commit-horizontal",Re);function Ee(a){if(Array.isArray(a))return a;if(typeof a=="string")try{const s=JSON.parse(a);return Array.isArray(s)?s:[]}catch{return[]}return[]}function I(a){if(!a)return[];const s=typeof a=="string"?(()=>{try{return JSON.parse(a)}catch{return null}})():a;return s?Array.isArray(s.fields)?s.fields:[]:[]}function Me(a,s){if(!a)return null;let r;try{r=typeof a=="string"?JSON.parse(a):a}catch{return null}if(!r||typeof r!="object")return null;const o=I(s?.form_schema),n=new Map;o.forEach(p=>n.set(p.key,p.label));const m=Object.entries(r).filter(([,p])=>p!=null&&p!=="");return m.length===0?null:e.jsx("div",{"code-path":"src/components/approval/helpers.tsx:53:5",className:"grid grid-cols-2 gap-x-4 gap-y-3",children:m.map(([p,d])=>e.jsxs("div",{"code-path":"src/components/approval/helpers.tsx:55:9",className:"min-w-0",children:[e.jsx("p",{"code-path":"src/components/approval/helpers.tsx:56:11",className:"text-xs text-[var(--dg-text-muted)] mb-0.5",children:n.get(p)||p}),e.jsx("p",{"code-path":"src/components/approval/helpers.tsx:57:11",className:"text-sm text-[var(--dg-text-primary)] break-words",children:String(d)})]},p))})}const z=[{value:"server_apply",label:"云服务器申请",icon:Ne,color:"var(--dg-cyan)"},{value:"app_deploy",label:"应用部署申请",icon:Be,color:"var(--dg-blue)"}],U=a=>z.find(s=>s.value===a)?.label||a||"通用审批",L=a=>z.find(s=>s.value===a)?.color||"var(--dg-text-secondary)",Ve=a=>z.find(s=>s.value===a)?.icon||_,A=a=>a?.template?.type||a?.type||"";function X(a){const s=Ee(a.steps),r=a.current_step??0,o=s.length,n=s.filter(p=>p.status==="approved"||p.status==="completed").length,m=o>0?Math.round(n/o*100):0;return{steps:s,currentIndex:r,total:o,completed:n,percentage:m}}function Y(a){const{steps:s,currentIndex:r}=X(a);return s.length===0?null:e.jsx("div",{"code-path":"src/components/approval/helpers.tsx:99:5",className:"flex items-center gap-1 overflow-x-auto",children:s.map((o,n)=>{const m=o.status==="approved"||o.status==="completed",p=n===r,d=o.status==="rejected";return e.jsxs("div",{"code-path":"src/components/approval/helpers.tsx:105:11",className:"flex items-center",children:[e.jsxs("div",{"code-path":"src/components/approval/helpers.tsx:106:13",className:b("flex items-center gap-2 px-3 py-1.5 rounded-lg text-xs whitespace-nowrap",m&&"bg-emerald-500/10 text-emerald-400",p&&!d&&"bg-amber-500/10 text-amber-400 border border-amber-500/30",d&&"bg-red-500/10 text-red-400",!m&&!p&&!d&&"bg-[var(--dg-bg-tertiary)] text-[var(--dg-text-muted)]"),children:[m&&e.jsx(D,{"code-path":"src/components/approval/helpers.tsx:115:31",className:"h-3 w-3"}),d&&e.jsx(F,{"code-path":"src/components/approval/helpers.tsx:116:30",className:"h-3 w-3"}),p&&!d&&e.jsx($,{"code-path":"src/components/approval/helpers.tsx:117:44",className:"h-3 w-3 animate-spin"}),e.jsx("span",{"code-path":"src/components/approval/helpers.tsx:118:15",children:o.name||o.approver_name||`步骤 ${n+1}`})]}),no(c.target.value),className:"pl-9 h-9 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] placeholder:text-[var(--dg-text-muted)]"})]}),e.jsx("div",{"code-path":"src/components/approval/ApprovalProcessTab.tsx:108:9",className:"flex items-center gap-1 bg-[var(--dg-bg-tertiary)] border border-[var(--dg-border)] rounded-lg p-1",children:Je.map(c=>e.jsx("button",{"code-path":"src/components/approval/ApprovalProcessTab.tsx:110:13",onClick:()=>m(c.value),className:b("px-3 py-1.5 rounded-md text-sm transition-colors",n===c.value?"bg-[var(--dg-bg-hover)] text-[var(--dg-text-primary)] font-medium":"text-[var(--dg-text-secondary)] hover:text-[var(--dg-text-primary)]"),children:c.label},c.key))})]}),s?e.jsx(u,{"code-path":"src/components/approval/ApprovalProcessTab.tsx:128:9",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsx(j,{"code-path":"src/components/approval/ApprovalProcessTab.tsx:129:11",className:"p-12",children:e.jsxs("div",{"code-path":"src/components/approval/ApprovalProcessTab.tsx:130:13",className:"flex items-center justify-center text-[var(--dg-text-muted)]",children:[e.jsx($,{"code-path":"src/components/approval/ApprovalProcessTab.tsx:131:15",className:"h-6 w-6 animate-spin mr-2"}),"加载中..."]})})}):a.length===0?e.jsx(u,{"code-path":"src/components/approval/ApprovalProcessTab.tsx:137:9",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsx(j,{"code-path":"src/components/approval/ApprovalProcessTab.tsx:138:11",className:"p-12",children:e.jsxs("div",{"code-path":"src/components/approval/ApprovalProcessTab.tsx:139:13",className:"text-center",children:[e.jsx(_,{"code-path":"src/components/approval/ApprovalProcessTab.tsx:140:15",className:"h-12 w-12 mx-auto text-[var(--dg-text-muted)] mb-4"}),e.jsx("h3",{"code-path":"src/components/approval/ApprovalProcessTab.tsx:141:15",className:"text-lg font-medium text-[var(--dg-text-secondary)] mb-2",children:"暂无审批流程"}),e.jsx("p",{"code-path":"src/components/approval/ApprovalProcessTab.tsx:142:15",className:"text-sm text-[var(--dg-text-muted)]",children:"当前筛选条件下没有匹配的流程实例"})]})})}):e.jsx("div",{"code-path":"src/components/approval/ApprovalProcessTab.tsx:147:9",className:"grid grid-cols-1 gap-4",children:a.map(c=>{const w=Ve(A(c)),{percentage:l}=X(c);return e.jsx(u,{"code-path":"src/components/approval/ApprovalProcessTab.tsx:152:15",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] hover:border-[var(--dg-border)] transition-colors",children:e.jsxs(j,{"code-path":"src/components/approval/ApprovalProcessTab.tsx:153:17",className:"p-4",children:[e.jsxs("div",{"code-path":"src/components/approval/ApprovalProcessTab.tsx:154:19",className:"flex items-start justify-between mb-3",children:[e.jsxs("div",{"code-path":"src/components/approval/ApprovalProcessTab.tsx:155:21",className:"flex items-start gap-3",children:[e.jsx("div",{"code-path":"src/components/approval/ApprovalProcessTab.tsx:156:23",className:"w-10 h-10 rounded-lg bg-[var(--dg-bg-tertiary)] flex items-center justify-center",style:{color:L(A(c))},children:e.jsx(w,{"code-path":"src/components/approval/ApprovalProcessTab.tsx:157:25",className:"h-5 w-5"})}),e.jsxs("div",{"code-path":"src/components/approval/ApprovalProcessTab.tsx:159:23",children:[e.jsxs("div",{"code-path":"src/components/approval/ApprovalProcessTab.tsx:160:25",className:"flex items-center gap-2 mb-1",children:[e.jsx("h3",{"code-path":"src/components/approval/ApprovalProcessTab.tsx:161:27",className:"font-medium text-[var(--dg-text-primary)]",children:c.title}),qe(c.status)]}),e.jsxs("div",{"code-path":"src/components/approval/ApprovalProcessTab.tsx:164:25",className:"flex items-center gap-3 text-xs text-[var(--dg-text-muted)]",children:[e.jsx("span",{"code-path":"src/components/approval/ApprovalProcessTab.tsx:165:27",className:"flex items-center gap-1",children:e.jsx(C,{"code-path":"src/components/approval/ApprovalProcessTab.tsx:166:29",variant:"outline",className:"text-xs border-[var(--dg-border)]",style:{color:L(A(c))},children:U(A(c))})}),e.jsxs("span",{"code-path":"src/components/approval/ApprovalProcessTab.tsx:170:27",children:["申请人:",c.applicant_name||c.applicant||"--"]}),e.jsxs("span",{"code-path":"src/components/approval/ApprovalProcessTab.tsx:171:27",children:["提交于 ",c.created_at?new Date(c.created_at).toLocaleString():"--"]})]})]})]}),e.jsxs("div",{"code-path":"src/components/approval/ApprovalProcessTab.tsx:175:21",className:"flex items-center gap-2",children:[e.jsxs(i,{"code-path":"src/components/approval/ApprovalProcessTab.tsx:176:23",variant:"ghost",size:"sm",className:"text-[var(--dg-text-secondary)] hover:text-[var(--dg-text-primary)]",onClick:()=>p(c),children:[e.jsx(fe,{"code-path":"src/components/approval/ApprovalProcessTab.tsx:177:25",className:"h-4 w-4 mr-1"}),"详情"]}),c.status==="pending"&&e.jsxs(e.Fragment,{children:[e.jsxs(i,{"code-path":"src/components/approval/ApprovalProcessTab.tsx:182:27",variant:"outline",size:"sm",className:"border-emerald-500/30 text-emerald-400 hover:bg-emerald-500/10",onClick:()=>d(c),children:[e.jsx(D,{"code-path":"src/components/approval/ApprovalProcessTab.tsx:188:29",className:"h-4 w-4 mr-1"}),"通过"]}),e.jsxs(i,{"code-path":"src/components/approval/ApprovalProcessTab.tsx:191:27",variant:"outline",size:"sm",className:"border-red-500/30 text-red-400 hover:bg-red-500/10",onClick:()=>y(c),children:[e.jsx(F,{"code-path":"src/components/approval/ApprovalProcessTab.tsx:197:29",className:"h-4 w-4 mr-1"}),"拒绝"]})]})]})]}),e.jsxs("div",{"code-path":"src/components/approval/ApprovalProcessTab.tsx:205:19",className:"mb-3",children:[e.jsxs("div",{"code-path":"src/components/approval/ApprovalProcessTab.tsx:206:21",className:"flex items-center justify-between text-xs text-[var(--dg-text-muted)] mb-1.5",children:[e.jsx("span",{"code-path":"src/components/approval/ApprovalProcessTab.tsx:207:23",children:"审批进度"}),e.jsxs("span",{"code-path":"src/components/approval/ApprovalProcessTab.tsx:208:23",children:[l,"%"]})]}),e.jsx("div",{"code-path":"src/components/approval/ApprovalProcessTab.tsx:210:21",className:"w-full h-1.5 bg-[var(--dg-bg-tertiary)] rounded-full overflow-hidden",children:e.jsx("div",{"code-path":"src/components/approval/ApprovalProcessTab.tsx:211:23",className:b("h-full rounded-full transition-all",c.status==="rejected"?"bg-red-400":"bg-[var(--dg-blue)]"),style:{width:`${l}%`}})})]}),e.jsx("div",{"code-path":"src/components/approval/ApprovalProcessTab.tsx:221:19",className:"bg-[var(--dg-bg-primary)] rounded-lg p-3",children:Y(c)})]})},c.id)})})]})}function ne(a){if(Array.isArray(a))return a;if(typeof a=="string")try{const s=JSON.parse(a);return Array.isArray(s)?s:[]}catch{return[]}return[]}const K=[{value:"deploy",label:"发布审批",color:"var(--dg-blue)"},{value:"server",label:"服务器操作",color:"var(--dg-cyan)"},{value:"permission",label:"权限申请",color:"var(--dg-purple)"}],Ge=a=>K.find(s=>s.value===a)?.label||a||"通用审批",Qe=a=>K.find(s=>s.value===a)?.color||"var(--dg-text-secondary)";function Ue(a){const s=ne(a.steps);return s.length===0?e.jsx("div",{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:37:12",className:"text-[var(--dg-text-muted)] text-center py-4",children:"暂无流程节点"}):e.jsx("div",{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:40:5",className:"flex items-center gap-2 overflow-x-auto py-4",children:s.map((r,o)=>e.jsxs("div",{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:42:9",className:"flex items-center",children:[e.jsxs("div",{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:43:11",className:b("px-4 py-2 rounded-lg border min-w-[100px] text-center",r.type==="start"&&"bg-emerald-500/10 border-emerald-500/30 text-emerald-400",r.type==="approval"&&"bg-[var(--dg-blue)]/10 border-[var(--dg-blue)]/30 text-[var(--dg-blue)]",r.type==="condition"&&"bg-amber-500/10 border-amber-500/30 text-amber-400",r.type==="end"&&"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-secondary)]"),children:[e.jsx("p",{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:52:13",className:"text-sm font-medium",children:r.name}),r.approvers&&e.jsx("p",{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:54:15",className:"text-xs text-[var(--dg-text-muted)] mt-1",children:Array.isArray(r.approvers)?r.approvers.join(", "):r.approvers})]}),or("all"),className:b("px-3 py-1.5 rounded-md text-sm transition-colors",s==="all"?"bg-[var(--dg-bg-hover)] text-[var(--dg-text-primary)] font-medium":"text-[var(--dg-text-secondary)] hover:text-[var(--dg-text-primary)]"),children:"全部类型"}),K.map(o=>e.jsxs("button",{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:100:13",onClick:()=>r(o.value),className:b("px-3 py-1.5 rounded-md text-sm transition-colors flex items-center gap-1.5",s===o.value?"bg-[var(--dg-bg-hover)] text-[var(--dg-text-primary)] font-medium":"text-[var(--dg-text-secondary)] hover:text-[var(--dg-text-primary)]"),children:[e.jsx("span",{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:110:15",style:{color:o.color},children:"●"}),o.label]},o.value))]})]}),e.jsx("div",{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:117:7",className:"grid grid-cols-1 gap-4",children:a.length===0?e.jsx(u,{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:119:11",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsx(j,{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:120:13",className:"p-8",children:e.jsxs("div",{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:121:15",className:"text-center",children:[e.jsx(oe,{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:122:17",className:"h-12 w-12 mx-auto text-[var(--dg-text-muted)] mb-4"}),e.jsx("h3",{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:123:17",className:"text-lg font-medium text-[var(--dg-text-secondary)] mb-2",children:"暂无流程模板"}),e.jsx("p",{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:124:17",className:"text-sm text-[var(--dg-text-muted)]",children:"当前筛选条件下没有匹配的模板"})]})})}):a.map(o=>e.jsxs(u,{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:130:13",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:[e.jsx(Te,{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:131:15",className:"pb-2",children:e.jsxs("div",{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:132:17",className:"flex items-start justify-between",children:[e.jsxs("div",{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:133:19",className:"flex items-center gap-3",children:[e.jsx("div",{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:134:21",className:"w-10 h-10 rounded-lg bg-[var(--dg-blue)]/10 flex items-center justify-center",children:e.jsx(oe,{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:135:23",className:"h-5 w-5 text-[var(--dg-blue)]"})}),e.jsxs("div",{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:137:21",children:[e.jsxs("div",{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:138:23",className:"flex items-center gap-2",children:[e.jsx(De,{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:139:25",className:"text-base text-[var(--dg-text-primary)]",children:o.name}),o.type&&e.jsx(C,{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:141:27",variant:"outline",className:"text-xs border-[var(--dg-border)]",style:{color:Qe(o.type)},children:Ge(o.type)})]}),e.jsx(Fe,{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:150:23",className:"text-[var(--dg-text-muted)]",children:o.description})]})]}),e.jsxs("div",{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:153:19",className:"flex items-center gap-2",children:[e.jsx(C,{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:154:21",variant:"outline",className:o.status===1||o.status==="active"||o.status===!0?"border-emerald-500/30 text-emerald-400 bg-emerald-500/10":"border-[var(--dg-border)] text-[var(--dg-text-secondary)] bg-[var(--dg-bg-tertiary)]",children:o.status===1||o.status==="active"||o.status===!0?"已启用":"已停用"}),e.jsx(i,{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:164:21",variant:"ghost",size:"icon",className:"h-8 w-8 text-[var(--dg-text-secondary)] hover:text-[var(--dg-text-primary)]",children:e.jsx(Pe,{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:165:23",className:"h-4 w-4"})})]})]})}),e.jsxs(j,{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:170:15",children:[e.jsx("div",{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:171:17",className:"bg-[var(--dg-bg-primary)] rounded-lg p-4 overflow-x-auto",children:Ue(o)}),e.jsxs("div",{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:174:17",className:"flex items-center justify-between mt-4 text-sm text-[var(--dg-text-muted)]",children:[e.jsxs("span",{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:175:19",children:["创建于 ",o.created_at?new Date(o.created_at).toLocaleDateString():"--"]}),e.jsxs("span",{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:176:19",children:[ne(o.steps).length," 个节点"]})]})]})]},o.id))})]})}function Ye({open:a,onOpenChange:s,instance:r,templates:o,onApprove:n,onReject:m}){return r?e.jsx(V,{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:41:5",open:a,onOpenChange:s,children:e.jsxs(J,{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:42:7",className:"max-w-2xl bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] max-h-[90vh] overflow-y-auto",children:[e.jsxs(q,{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:43:9",children:[e.jsx(H,{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:44:11",className:"text-[var(--dg-text-primary)]",children:"审批详情"}),e.jsx(G,{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:45:11",className:"text-[var(--dg-text-muted)]",children:"查看审批流程详细信息"})]}),e.jsxs("div",{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:47:9",className:"space-y-4 py-2",children:[e.jsxs("div",{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:48:11",children:[e.jsx("h3",{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:49:13",className:"text-lg font-medium text-[var(--dg-text-primary)]",children:r.title}),e.jsxs("div",{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:50:13",className:"flex items-center gap-2 mt-1",children:[e.jsx(C,{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:51:15",variant:"outline",className:"text-xs border-[var(--dg-border)]",style:{color:L(A(r))},children:U(A(r))}),e.jsxs("span",{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:54:15",className:"text-xs text-[var(--dg-text-muted)]",children:["申请人:",r.applicant_name||r.applicant||"--"]}),e.jsxs("span",{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:57:15",className:"text-xs text-[var(--dg-text-muted)]",children:["提交于 ",r.created_at?new Date(r.created_at).toLocaleString():"--"]})]})]}),r.content&&e.jsx("div",{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:65:13",className:"bg-[var(--dg-bg-primary)] rounded-lg p-4",children:e.jsx("p",{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:66:15",className:"text-sm text-[var(--dg-text-secondary)] whitespace-pre-wrap",children:r.content})}),(()=>{const p=o.find(y=>y.id===r.template_id),d=Me(r.form_data,p);return d?e.jsxs("div",{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:76:15",className:"bg-[var(--dg-bg-primary)] rounded-lg p-4",children:[e.jsx("p",{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:77:17",className:"text-sm font-medium text-[var(--dg-text-secondary)] mb-3",children:"申请表单"}),d]}):null})(),e.jsxs("div",{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:84:11",className:"bg-[var(--dg-bg-primary)] rounded-lg p-4",children:[e.jsx("p",{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:85:13",className:"text-sm font-medium text-[var(--dg-text-secondary)] mb-3",children:"审批进度"}),Y(r)]}),r.actions&&e.jsxs("div",{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:91:13",className:"bg-[var(--dg-bg-primary)] rounded-lg p-4",children:[e.jsx("p",{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:92:15",className:"text-sm font-medium text-[var(--dg-text-secondary)] mb-3",children:"操作记录"}),e.jsx("div",{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:93:15",className:"space-y-2",children:r.actions.map((p,d)=>e.jsxs("div",{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:95:19",className:"flex items-center gap-3 text-sm",children:[p.action==="approve"?e.jsx(D,{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:97:23",className:"h-4 w-4 text-emerald-400"}):p.action==="reject"?e.jsx(F,{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:99:23",className:"h-4 w-4 text-red-400"}):e.jsx(le,{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:101:23",className:"h-4 w-4 text-[var(--dg-text-muted)]"}),e.jsxs("div",{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:103:21",children:[e.jsx("span",{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:104:23",className:"text-[var(--dg-text-secondary)]",children:p.operator_name||p.operator}),e.jsx("span",{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:107:23",className:"text-[var(--dg-text-muted)] mx-1",children:"·"}),e.jsx("span",{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:108:23",className:"text-[var(--dg-text-secondary)]",children:p.action==="approve"?"通过":p.action==="reject"?"拒绝":"提交"}),p.comment&&e.jsx("p",{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:112:25",className:"text-xs text-[var(--dg-text-muted)] mt-0.5",children:p.comment})]}),e.jsx("span",{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:115:21",className:"text-xs text-[var(--dg-text-muted)] ml-auto",children:p.created_at?new Date(p.created_at).toLocaleString():""})]},d))})]})]}),e.jsxs(Q,{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:124:9",children:[r.status==="pending"&&e.jsxs(e.Fragment,{children:[e.jsxs(i,{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:127:15",variant:"outline",className:"border-red-500/30 text-red-400 hover:bg-red-500/10",onClick:()=>{s(!1),m(r)},children:[e.jsx(F,{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:128:17",className:"h-4 w-4 mr-2"}),"拒绝"]}),e.jsxs(i,{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:130:15",className:"bg-emerald-500/90 hover:bg-emerald-500 text-white",onClick:()=>{s(!1),n(r)},children:[e.jsx(D,{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:131:17",className:"h-4 w-4 mr-2"}),"通过"]})]}),e.jsx(i,{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:135:11",variant:"ghost",onClick:()=>s(!1),children:"关闭"})]})]})}):null}function Ke({open:a,onOpenChange:s,templates:r,onSuccess:o}){const[n,m]=v.useState(null),[p,d]=v.useState({}),[y,c]=v.useState(!1),w=async()=>{if(!n){T.error("请先选择申请类型");return}const l=I(n.form_schema);for(const x of l)if(x.required&&!p[x.key]){T.error(`请填写${x.label}`);return}c(!0);try{await k.createProcess({template_id:n.id,title:p.app_name||n.name,form_data:JSON.stringify(p)}),T.success("申请已提交"),s(!1),m(null),d({}),o()}catch(x){T.error("提交失败",{description:x?.message})}finally{c(!1)}};return e.jsx(V,{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:78:5",open:a,onOpenChange:l=>{l||(m(null),d({})),s(l)},children:e.jsxs(J,{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:89:7",className:"max-w-2xl bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] max-h-[90vh] overflow-y-auto",children:[e.jsxs(q,{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:90:9",children:[e.jsx(H,{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:91:11",className:"text-[var(--dg-text-primary)]",children:"新建资源申请"}),e.jsx(G,{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:92:11",className:"text-[var(--dg-text-muted)]",children:n?"请填写申请信息":"请选择申请类型"})]}),n?e.jsxs("div",{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:135:11",className:"py-2",children:[e.jsx("div",{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:136:13",className:"flex items-center gap-2 mb-4",children:e.jsx("button",{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:137:15",type:"button",onClick:()=>{m(null),d({})},className:"text-xs text-[var(--dg-text-muted)] hover:text-[var(--dg-text-primary)]",children:"← 返回选择类型"})}),e.jsx("div",{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:145:13",className:"grid grid-cols-2 gap-x-4 gap-y-4",children:I(n.form_schema).map(l=>{const x=l.type==="textarea";return e.jsxs("div",{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:149:19",className:b("space-y-1.5",x&&"col-span-2"),children:[e.jsxs(ke,{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:150:21",className:"text-sm font-medium text-[var(--dg-text-secondary)]",children:[l.label,l.required&&e.jsx("span",{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:152:42",className:"text-red-400 ml-0.5",children:"*"})]}),l.type==="select"?e.jsxs(_e,{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:155:23",value:String(p[l.key]??""),onValueChange:h=>d(g=>({...g,[l.key]:h})),children:[e.jsx(Le,{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:159:25",className:"bg-[var(--dg-bg-primary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]",children:e.jsx(Oe,{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:160:27",placeholder:l.placeholder||`请选择${l.label}`})}),e.jsx(Ie,{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:162:25",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:(l.options||[]).map(h=>e.jsx($e,{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:164:29",value:h,className:"text-[var(--dg-text-primary)] focus:bg-[var(--dg-bg-hover)]",children:h},h))})]}):l.type==="textarea"?e.jsx(ce,{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:171:23",placeholder:l.placeholder||`请输入${l.label}`,value:p[l.key]??"",onChange:h=>d(g=>({...g,[l.key]:h.target.value})),className:"bg-[var(--dg-bg-primary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] placeholder:text-[var(--dg-text-muted)] min-h-[80px]"}):e.jsx(pe,{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:178:23",type:l.type==="number"?"number":"text",placeholder:l.placeholder||`请输入${l.label}`,value:p[l.key]??"",onChange:h=>d(g=>({...g,[l.key]:h.target.value})),className:"bg-[var(--dg-bg-primary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] placeholder:text-[var(--dg-text-muted)]"})]},l.key)})})]}):e.jsx("div",{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:99:11",className:"grid grid-cols-2 gap-4 py-2",children:z.map(l=>{const x=r.find(g=>g.type===l.value&&g.enabled!==!1),h=l.icon;return e.jsxs("button",{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:106:17",type:"button",disabled:!x,onClick:()=>{m(x),d({})},className:b("flex flex-col items-start gap-3 p-5 rounded-xl text-left transition-colors","bg-[var(--dg-bg-tertiary)] hover:bg-[var(--dg-bg-hover)]",!x&&"opacity-40 cursor-not-allowed hover:bg-[var(--dg-bg-tertiary)]"),children:[e.jsx("div",{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:117:19",className:"w-10 h-10 rounded-lg flex items-center justify-center",style:{backgroundColor:`color-mix(in srgb, ${l.color} 15%, transparent)`,color:l.color},children:e.jsx(h,{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:121:21",className:"h-5 w-5"})}),e.jsxs("div",{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:123:19",children:[e.jsx("p",{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:124:21",className:"text-sm font-medium text-[var(--dg-text-primary)]",children:l.label}),e.jsx("p",{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:125:21",className:"text-xs text-[var(--dg-text-muted)] mt-0.5",children:x?x.description||`共 ${I(x.form_schema).length} 个字段`:"暂无可用模板"})]})]},l.value)})}),e.jsxs(Q,{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:196:9",children:[e.jsx(i,{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:197:11",variant:"ghost",onClick:()=>s(!1),children:"取消"}),n&&e.jsxs(i,{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:199:13",className:"bg-[var(--dg-blue)] hover:opacity-90 text-white",onClick:w,disabled:y,children:[y&&e.jsx($,{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:204:30",className:"h-4 w-4 mr-2 animate-spin"}),"提交申请"]})]})]})})}function We(){const[a,s]=v.useState("instances"),[r,o]=v.useState([]),[n,m]=v.useState([]),[p,d]=v.useState([]),[y,c]=v.useState(!0),[w,l]=v.useState(""),[x,h]=v.useState(""),[g,de]=v.useState("all"),[me,W]=v.useState(!1),[P,Z]=v.useState(null),[ve,O]=v.useState(!1),[f,xe]=v.useState("approve"),[R,ee]=v.useState(""),[ae,te]=v.useState(!1),[ie,re]=v.useState(!1),B=async()=>{try{c(!0);const[t,N,M]=await Promise.all([k.getProcesses().catch(()=>null),k.getTemplates().catch(()=>null),k.getProcesses({status:"pending"}).catch(()=>null)]);o(t?.list||[]),m(N?.list||[]),d(M?.list||[])}catch(t){console.error("加载审批数据失败:",t)}finally{c(!1)}};v.useEffect(()=>{B()},[]);const he=r.filter(t=>{const N=(t.title||"").toLowerCase().includes(w.toLowerCase())||(t.applicant_name||t.applicant||"").toLowerCase().includes(w.toLowerCase()),M=!x||t.status===x;return N&&M}),ge=n.filter(t=>g==="all"||t.type===g),se=t=>{Z(t),W(!0)},S=(t,N)=>{xe(t),Z(N),ee(""),O(!0)},be=async()=>{if(P)try{te(!0),f==="approve"?(await k.approveProcess(P.id,R),T.success("审批通过")):(await k.rejectProcess(P.id,R),T.success("已拒绝")),O(!1),B()}catch(t){T.error("操作失败",{description:t.message})}finally{te(!1)}},ue=r.filter(t=>t.status==="pending").length,je=r.filter(t=>t.status==="approved").length,Ae=r.filter(t=>t.status==="rejected").length,E=p.filter(t=>t.status==="pending").length;return e.jsxs("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:139:5",className:"space-y-6",children:[e.jsxs("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:141:7",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:142:9",children:[e.jsx("h1",{"code-path":"src/components/approval/ApprovalFlow.tsx:143:11",className:"text-2xl font-bold text-[var(--dg-text-primary)]",children:"资源申请"}),e.jsx("p",{"code-path":"src/components/approval/ApprovalFlow.tsx:144:11",className:"text-sm text-[var(--dg-text-muted)] mt-1",children:"云服务器申请 · 应用部署申请"})]}),e.jsxs(i,{"code-path":"src/components/approval/ApprovalFlow.tsx:146:9",className:"bg-[var(--dg-blue)] hover:opacity-90 text-white",onClick:()=>re(!0),children:[e.jsx(ze,{"code-path":"src/components/approval/ApprovalFlow.tsx:150:11",className:"h-4 w-4 mr-2"}),"新建申请"]})]}),e.jsxs("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:156:7",className:"grid grid-cols-1 md:grid-cols-4 gap-4",children:[e.jsx(u,{"code-path":"src/components/approval/ApprovalFlow.tsx:157:9",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsx(j,{"code-path":"src/components/approval/ApprovalFlow.tsx:158:11",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:159:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:160:15",children:[e.jsx("p",{"code-path":"src/components/approval/ApprovalFlow.tsx:161:17",className:"text-sm text-[var(--dg-text-muted)]",children:"待审批"}),e.jsx("p",{"code-path":"src/components/approval/ApprovalFlow.tsx:162:17",className:"text-2xl font-bold text-amber-400",children:ue})]}),e.jsx("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:164:15",className:"p-3 rounded-lg bg-amber-500/10 text-amber-400",children:e.jsx(le,{"code-path":"src/components/approval/ApprovalFlow.tsx:165:17",className:"h-5 w-5"})})]})})}),e.jsx(u,{"code-path":"src/components/approval/ApprovalFlow.tsx:170:9",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsx(j,{"code-path":"src/components/approval/ApprovalFlow.tsx:171:11",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:172:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:173:15",children:[e.jsx("p",{"code-path":"src/components/approval/ApprovalFlow.tsx:174:17",className:"text-sm text-[var(--dg-text-muted)]",children:"已通过"}),e.jsx("p",{"code-path":"src/components/approval/ApprovalFlow.tsx:175:17",className:"text-2xl font-bold text-emerald-400",children:je})]}),e.jsx("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:177:15",className:"p-3 rounded-lg bg-emerald-500/10 text-emerald-400",children:e.jsx(D,{"code-path":"src/components/approval/ApprovalFlow.tsx:178:17",className:"h-5 w-5"})})]})})}),e.jsx(u,{"code-path":"src/components/approval/ApprovalFlow.tsx:183:9",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsx(j,{"code-path":"src/components/approval/ApprovalFlow.tsx:184:11",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:185:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:186:15",children:[e.jsx("p",{"code-path":"src/components/approval/ApprovalFlow.tsx:187:17",className:"text-sm text-[var(--dg-text-muted)]",children:"已拒绝"}),e.jsx("p",{"code-path":"src/components/approval/ApprovalFlow.tsx:188:17",className:"text-2xl font-bold text-red-400",children:Ae})]}),e.jsx("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:190:15",className:"p-3 rounded-lg bg-red-500/10 text-red-400",children:e.jsx(F,{"code-path":"src/components/approval/ApprovalFlow.tsx:191:17",className:"h-5 w-5"})})]})})}),e.jsx(u,{"code-path":"src/components/approval/ApprovalFlow.tsx:196:9",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsx(j,{"code-path":"src/components/approval/ApprovalFlow.tsx:197:11",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:198:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:199:15",children:[e.jsx("p",{"code-path":"src/components/approval/ApprovalFlow.tsx:200:17",className:"text-sm text-[var(--dg-text-muted)]",children:"我的待办"}),e.jsx("p",{"code-path":"src/components/approval/ApprovalFlow.tsx:201:17",className:"text-2xl font-bold text-[var(--dg-blue)]",children:E})]}),e.jsx("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:203:15",className:"p-3 rounded-lg bg-[var(--dg-blue)]/10 text-[var(--dg-blue)]",children:e.jsx(_,{"code-path":"src/components/approval/ApprovalFlow.tsx:204:17",className:"h-5 w-5"})})]})})})]}),e.jsx("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:212:7",className:"flex items-center gap-1 border-b border-[var(--dg-border)]",children:[{key:"instances",label:"审批实例"},{key:"flows",label:"流程模板"},{key:"my-approvals",label:"我的审批"}].map(t=>e.jsxs("button",{"code-path":"src/components/approval/ApprovalFlow.tsx:218:11",onClick:()=>s(t.key),className:b("px-4 py-2 text-sm font-medium border-b-2 -mb-px transition-colors",a===t.key?"border-[var(--dg-blue)] text-[var(--dg-blue)]":"border-transparent text-[var(--dg-text-secondary)] hover:text-[var(--dg-text-primary)]"),children:[t.label,t.key==="my-approvals"&&E>0&&e.jsx(C,{"code-path":"src/components/approval/ApprovalFlow.tsx:230:15",className:"ml-2 bg-red-500/20 text-red-400 border-0 text-xs",children:E})]},t.key))}),a==="instances"&&e.jsx(He,{"code-path":"src/components/approval/ApprovalFlow.tsx:238:9",processes:r,filteredInstances:he,loading:y,searchQuery:w,setSearchQuery:l,statusFilter:x,setStatusFilter:h,onView:se,onApprove:t=>S("approve",t),onReject:t=>S("reject",t)}),a==="flows"&&e.jsx(Xe,{"code-path":"src/components/approval/ApprovalFlow.tsx:253:9",filteredTemplates:ge,templateTypeFilter:g,setTemplateTypeFilter:de}),a==="my-approvals"&&e.jsx("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:261:9",className:"grid grid-cols-1 gap-4",children:p.length===0?e.jsx(u,{"code-path":"src/components/approval/ApprovalFlow.tsx:263:13",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsx(j,{"code-path":"src/components/approval/ApprovalFlow.tsx:264:15",className:"p-12",children:e.jsxs("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:265:17",className:"text-center",children:[e.jsx(_,{"code-path":"src/components/approval/ApprovalFlow.tsx:266:19",className:"h-12 w-12 mx-auto text-[var(--dg-text-muted)] mb-4"}),e.jsx("h3",{"code-path":"src/components/approval/ApprovalFlow.tsx:267:19",className:"text-lg font-medium text-[var(--dg-text-secondary)] mb-2",children:"暂无待办"}),e.jsx("p",{"code-path":"src/components/approval/ApprovalFlow.tsx:268:19",className:"text-sm text-[var(--dg-text-muted)]",children:"没有等待你处理的审批"})]})})}):p.map(t=>{const{percentage:N}=X(t);return e.jsx(u,{"code-path":"src/components/approval/ApprovalFlow.tsx:276:17",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsxs(j,{"code-path":"src/components/approval/ApprovalFlow.tsx:277:19",className:"p-4",children:[e.jsxs("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:278:21",className:"flex items-start justify-between mb-3",children:[e.jsxs("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:279:23",className:"flex items-start gap-3",children:[e.jsx("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:280:25",className:"w-10 h-10 rounded-lg bg-[var(--dg-bg-tertiary)] flex items-center justify-center",style:{color:L(A(t))},children:e.jsx(_,{"code-path":"src/components/approval/ApprovalFlow.tsx:281:27",className:"h-5 w-5"})}),e.jsxs("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:283:25",children:[e.jsxs("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:284:27",className:"flex items-center gap-2 mb-1",children:[e.jsx("h3",{"code-path":"src/components/approval/ApprovalFlow.tsx:285:29",className:"font-medium text-[var(--dg-text-primary)]",children:t.title}),e.jsx(C,{"code-path":"src/components/approval/ApprovalFlow.tsx:286:29",variant:"outline",className:"text-xs border-[var(--dg-border)]",style:{color:L(A(t))},children:U(A(t))})]}),e.jsxs("p",{"code-path":"src/components/approval/ApprovalFlow.tsx:290:27",className:"text-xs text-[var(--dg-text-muted)]",children:["申请人:",t.applicant_name||t.applicant||"--"]}),e.jsxs("p",{"code-path":"src/components/approval/ApprovalFlow.tsx:293:27",className:"text-xs text-[var(--dg-text-muted)]",children:["提交于 ",t.created_at?new Date(t.created_at).toLocaleString():"--"]})]})]}),e.jsxs("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:298:23",className:"flex items-center gap-2",children:[e.jsxs(i,{"code-path":"src/components/approval/ApprovalFlow.tsx:299:25",variant:"ghost",size:"sm",onClick:()=>se(t),children:[e.jsx(_,{"code-path":"src/components/approval/ApprovalFlow.tsx:300:27",className:"h-4 w-4 mr-1"}),"详情"]}),t.status==="pending"&&e.jsxs(e.Fragment,{children:[e.jsxs(i,{"code-path":"src/components/approval/ApprovalFlow.tsx:305:29",variant:"outline",size:"sm",className:"border-emerald-500/30 text-emerald-400 hover:bg-emerald-500/10",onClick:()=>S("approve",t),children:[e.jsx(D,{"code-path":"src/components/approval/ApprovalFlow.tsx:306:31",className:"h-4 w-4 mr-1"}),"通过"]}),e.jsxs(i,{"code-path":"src/components/approval/ApprovalFlow.tsx:308:29",variant:"outline",size:"sm",className:"border-red-500/30 text-red-400 hover:bg-red-500/10",onClick:()=>S("reject",t),children:[e.jsx(F,{"code-path":"src/components/approval/ApprovalFlow.tsx:309:31",className:"h-4 w-4 mr-1"}),"拒绝"]})]})]})]}),e.jsxs("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:315:21",className:"mb-3",children:[e.jsxs("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:316:23",className:"flex items-center justify-between text-xs text-[var(--dg-text-muted)] mb-1.5",children:[e.jsx("span",{"code-path":"src/components/approval/ApprovalFlow.tsx:317:25",children:"审批进度"}),e.jsxs("span",{"code-path":"src/components/approval/ApprovalFlow.tsx:318:25",children:[N,"%"]})]}),e.jsx("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:320:23",className:"w-full h-1.5 bg-[var(--dg-bg-tertiary)] rounded-full overflow-hidden",children:e.jsx("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:321:25",className:b("h-full rounded-full",t.status==="rejected"?"bg-red-400":"bg-[var(--dg-blue)]"),style:{width:`${N}%`}})})]}),e.jsx("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:324:21",className:"bg-[var(--dg-bg-primary)] rounded-lg p-3",children:Y(t)})]})},t.id)})}),e.jsx(Ye,{"code-path":"src/components/approval/ApprovalFlow.tsx:336:7",open:me,onOpenChange:W,instance:P,templates:n,onApprove:t=>S("approve",t),onReject:t=>S("reject",t)}),e.jsx(V,{"code-path":"src/components/approval/ApprovalFlow.tsx:346:7",open:ve,onOpenChange:O,children:e.jsxs(J,{"code-path":"src/components/approval/ApprovalFlow.tsx:347:9",className:"max-w-md bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:[e.jsxs(q,{"code-path":"src/components/approval/ApprovalFlow.tsx:348:11",children:[e.jsx(H,{"code-path":"src/components/approval/ApprovalFlow.tsx:349:13",className:"text-[var(--dg-text-primary)] flex items-center gap-2",children:f==="approve"?e.jsxs(e.Fragment,{children:[e.jsx(D,{"code-path":"src/components/approval/ApprovalFlow.tsx:352:19",className:"h-5 w-5 text-emerald-400"}),"确认通过审批"]}):e.jsxs(e.Fragment,{children:[e.jsx(F,{"code-path":"src/components/approval/ApprovalFlow.tsx:357:19",className:"h-5 w-5 text-red-400"}),"确认拒绝审批"]})}),e.jsx(G,{"code-path":"src/components/approval/ApprovalFlow.tsx:362:13",className:"text-[var(--dg-text-muted)]",children:f==="approve"?"请填写审批意见后确认通过":"请填写拒绝原因后确认拒绝"})]}),P&&e.jsxs("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:367:13",className:"py-2",children:[e.jsxs("p",{"code-path":"src/components/approval/ApprovalFlow.tsx:368:15",className:"text-sm text-[var(--dg-text-secondary)] mb-2",children:["审批标题:",e.jsx("span",{"code-path":"src/components/approval/ApprovalFlow.tsx:369:22",className:"text-[var(--dg-text-primary)]",children:P.title})]}),e.jsxs("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:371:15",className:"space-y-2",children:[e.jsx("label",{"code-path":"src/components/approval/ApprovalFlow.tsx:372:17",className:"text-sm font-medium text-[var(--dg-text-secondary)]",children:f==="approve"?"审批意见":"拒绝原因"}),e.jsx(ce,{"code-path":"src/components/approval/ApprovalFlow.tsx:375:17",placeholder:f==="approve"?"请填写审批意见(可选)":"请填写拒绝原因",value:R,onChange:t=>ee(t.target.value),className:"bg-[var(--dg-bg-primary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] placeholder:text-[var(--dg-text-muted)] min-h-[80px]"})]})]}),e.jsxs(Q,{"code-path":"src/components/approval/ApprovalFlow.tsx:384:11",children:[e.jsx(i,{"code-path":"src/components/approval/ApprovalFlow.tsx:385:13",variant:"outline",onClick:()=>O(!1),className:"border-[var(--dg-border)] text-[var(--dg-text-secondary)]",children:"取消"}),e.jsxs(i,{"code-path":"src/components/approval/ApprovalFlow.tsx:388:13",onClick:be,disabled:ae,className:f==="approve"?"bg-emerald-500/90 hover:bg-emerald-500 text-white":"bg-red-500 hover:bg-red-600 text-white",children:[ae&&e.jsx($,{"code-path":"src/components/approval/ApprovalFlow.tsx:393:36",className:"h-4 w-4 mr-2 animate-spin"}),f==="approve"?"确认通过":"确认拒绝"]})]})]})}),e.jsx(Ke,{"code-path":"src/components/approval/ApprovalFlow.tsx:401:7",open:ie,onOpenChange:re,templates:n,onSuccess:B})]})}const ha=We;export{We as ApprovalFlow,ha as ApprovalFlowManager}; diff --git a/backend/static/assets/ApprovalFlow-B85pKguE.js b/backend/static/assets/ApprovalFlow-B85pKguE.js new file mode 100644 index 0000000..2d624ae --- /dev/null +++ b/backend/static/assets/ApprovalFlow-B85pKguE.js @@ -0,0 +1 @@ +import{i as ye,S as Ne,j as e,a0 as b,L as $,B as i,O as we,Q as oe,D as V,a as J,b as q,c as H,d as Q,C as pe,e as G,r as v}from"./index-Dmami9WE.js";import{C as u,a as j,b as fe,c as Te,d as De}from"./card-CIfC-8Rh.js";import{B as C}from"./badge-3UzCvU7L.js";import{T as le}from"./textarea-DHUZ6N85.js";import{t as T}from"./index-BuEnLCjT.js";import{b as k}from"./system-C3cYTuQH.js";import{I as ce}from"./input-NsU9nXZF.js";import{F as _}from"./file-text-CebshSV-.js";import{C as D}from"./circle-check-CVbTTFQ0.js";import{C as F}from"./circle-x-BBQeW1R3.js";import{S as Fe}from"./search-Dd-PeBfg.js";import{F as Ce}from"./funnel-DngS63SK.js";import{S as Pe}from"./square-pen-B3dPIBrm.js";import{A as Se}from"./arrow-right-CkKR0P0R.js";import{L as ke}from"./label-Ap_-SPYI.js";import{S as _e,a as Le,b as Oe,c as Ie,d as $e}from"./select-DUbxjT0z.js";import{P as ze}from"./plus-O65gX7Qz.js";import"./index-CtCQcvyh.js";import"./chevron-up-Cq4GPopa.js";const Re=[["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}],["line",{x1:"3",x2:"9",y1:"12",y2:"12",key:"1dyftd"}],["line",{x1:"15",x2:"21",y1:"12",y2:"12",key:"oup4p8"}]],Be=ye("git-commit-horizontal",Re);function Ee(a){if(Array.isArray(a))return a;if(typeof a=="string")try{const s=JSON.parse(a);return Array.isArray(s)?s:[]}catch{return[]}return[]}function I(a){if(!a)return[];const s=typeof a=="string"?(()=>{try{return JSON.parse(a)}catch{return null}})():a;return s?Array.isArray(s.fields)?s.fields:[]:[]}function Me(a,s){if(!a)return null;let r;try{r=typeof a=="string"?JSON.parse(a):a}catch{return null}if(!r||typeof r!="object")return null;const o=I(s?.form_schema),n=new Map;o.forEach(p=>n.set(p.key,p.label));const m=Object.entries(r).filter(([,p])=>p!=null&&p!=="");return m.length===0?null:e.jsx("div",{"code-path":"src/components/approval/helpers.tsx:53:5",className:"grid grid-cols-2 gap-x-4 gap-y-3",children:m.map(([p,d])=>e.jsxs("div",{"code-path":"src/components/approval/helpers.tsx:55:9",className:"min-w-0",children:[e.jsx("p",{"code-path":"src/components/approval/helpers.tsx:56:11",className:"text-xs text-[var(--dg-text-muted)] mb-0.5",children:n.get(p)||p}),e.jsx("p",{"code-path":"src/components/approval/helpers.tsx:57:11",className:"text-sm text-[var(--dg-text-primary)] break-words",children:String(d)})]},p))})}const z=[{value:"server_apply",label:"云服务器申请",icon:Ne,color:"var(--dg-cyan)"},{value:"app_deploy",label:"应用部署申请",icon:Be,color:"var(--dg-blue)"}],Y=a=>z.find(s=>s.value===a)?.label||a||"通用审批",L=a=>z.find(s=>s.value===a)?.color||"var(--dg-text-secondary)",Ve=a=>z.find(s=>s.value===a)?.icon||_,A=a=>a?.template?.type||a?.type||"";function U(a){const s=Ee(a.steps),r=a.current_step??0,o=s.length,n=s.filter(p=>p.status==="approved"||p.status==="completed").length,m=o>0?Math.round(n/o*100):0;return{steps:s,currentIndex:r,total:o,completed:n,percentage:m}}function X(a){const{steps:s,currentIndex:r}=U(a);return s.length===0?null:e.jsx("div",{"code-path":"src/components/approval/helpers.tsx:99:5",className:"flex items-center gap-1 overflow-x-auto",children:s.map((o,n)=>{const m=o.status==="approved"||o.status==="completed",p=n===r,d=o.status==="rejected";return e.jsxs("div",{"code-path":"src/components/approval/helpers.tsx:105:11",className:"flex items-center",children:[e.jsxs("div",{"code-path":"src/components/approval/helpers.tsx:106:13",className:b("flex items-center gap-2 px-3 py-1.5 rounded-lg text-xs whitespace-nowrap",m&&"bg-emerald-500/10 text-emerald-400",p&&!d&&"bg-amber-500/10 text-amber-400 border border-amber-500/30",d&&"bg-red-500/10 text-red-400",!m&&!p&&!d&&"bg-[var(--dg-bg-tertiary)] text-[var(--dg-text-muted)]"),children:[m&&e.jsx(D,{"code-path":"src/components/approval/helpers.tsx:115:31",className:"h-3 w-3"}),d&&e.jsx(F,{"code-path":"src/components/approval/helpers.tsx:116:30",className:"h-3 w-3"}),p&&!d&&e.jsx($,{"code-path":"src/components/approval/helpers.tsx:117:44",className:"h-3 w-3 animate-spin"}),e.jsx("span",{"code-path":"src/components/approval/helpers.tsx:118:15",children:o.name||o.approver_name||`步骤 ${n+1}`})]}),no(c.target.value),className:"pl-9 h-9 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] placeholder:text-[var(--dg-text-muted)]"})]}),e.jsx("div",{"code-path":"src/components/approval/ApprovalProcessTab.tsx:108:9",className:"flex items-center gap-1 bg-[var(--dg-bg-tertiary)] border border-[var(--dg-border)] rounded-lg p-1",children:Je.map(c=>e.jsx("button",{"code-path":"src/components/approval/ApprovalProcessTab.tsx:110:13",onClick:()=>m(c.value),className:b("px-3 py-1.5 rounded-md text-sm transition-colors",n===c.value?"bg-[var(--dg-bg-hover)] text-[var(--dg-text-primary)] font-medium":"text-[var(--dg-text-secondary)] hover:text-[var(--dg-text-primary)]"),children:c.label},c.key))})]}),s?e.jsx(u,{"code-path":"src/components/approval/ApprovalProcessTab.tsx:128:9",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsx(j,{"code-path":"src/components/approval/ApprovalProcessTab.tsx:129:11",className:"p-12",children:e.jsxs("div",{"code-path":"src/components/approval/ApprovalProcessTab.tsx:130:13",className:"flex items-center justify-center text-[var(--dg-text-muted)]",children:[e.jsx($,{"code-path":"src/components/approval/ApprovalProcessTab.tsx:131:15",className:"h-6 w-6 animate-spin mr-2"}),"加载中..."]})})}):a.length===0?e.jsx(u,{"code-path":"src/components/approval/ApprovalProcessTab.tsx:137:9",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsx(j,{"code-path":"src/components/approval/ApprovalProcessTab.tsx:138:11",className:"p-12",children:e.jsxs("div",{"code-path":"src/components/approval/ApprovalProcessTab.tsx:139:13",className:"text-center",children:[e.jsx(_,{"code-path":"src/components/approval/ApprovalProcessTab.tsx:140:15",className:"h-12 w-12 mx-auto text-[var(--dg-text-muted)] mb-4"}),e.jsx("h3",{"code-path":"src/components/approval/ApprovalProcessTab.tsx:141:15",className:"text-lg font-medium text-[var(--dg-text-secondary)] mb-2",children:"暂无审批流程"}),e.jsx("p",{"code-path":"src/components/approval/ApprovalProcessTab.tsx:142:15",className:"text-sm text-[var(--dg-text-muted)]",children:"当前筛选条件下没有匹配的流程实例"})]})})}):e.jsx("div",{"code-path":"src/components/approval/ApprovalProcessTab.tsx:147:9",className:"grid grid-cols-1 gap-4",children:a.map(c=>{const w=Ve(A(c)),{percentage:l}=U(c);return e.jsx(u,{"code-path":"src/components/approval/ApprovalProcessTab.tsx:152:15",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] hover:border-[var(--dg-border)] transition-colors",children:e.jsxs(j,{"code-path":"src/components/approval/ApprovalProcessTab.tsx:153:17",className:"p-4",children:[e.jsxs("div",{"code-path":"src/components/approval/ApprovalProcessTab.tsx:154:19",className:"flex items-start justify-between mb-3",children:[e.jsxs("div",{"code-path":"src/components/approval/ApprovalProcessTab.tsx:155:21",className:"flex items-start gap-3",children:[e.jsx("div",{"code-path":"src/components/approval/ApprovalProcessTab.tsx:156:23",className:"w-10 h-10 rounded-lg bg-[var(--dg-bg-tertiary)] flex items-center justify-center",style:{color:L(A(c))},children:e.jsx(w,{"code-path":"src/components/approval/ApprovalProcessTab.tsx:157:25",className:"h-5 w-5"})}),e.jsxs("div",{"code-path":"src/components/approval/ApprovalProcessTab.tsx:159:23",children:[e.jsxs("div",{"code-path":"src/components/approval/ApprovalProcessTab.tsx:160:25",className:"flex items-center gap-2 mb-1",children:[e.jsx("h3",{"code-path":"src/components/approval/ApprovalProcessTab.tsx:161:27",className:"font-medium text-[var(--dg-text-primary)]",children:c.title}),qe(c.status)]}),e.jsxs("div",{"code-path":"src/components/approval/ApprovalProcessTab.tsx:164:25",className:"flex items-center gap-3 text-xs text-[var(--dg-text-muted)]",children:[e.jsx("span",{"code-path":"src/components/approval/ApprovalProcessTab.tsx:165:27",className:"flex items-center gap-1",children:e.jsx(C,{"code-path":"src/components/approval/ApprovalProcessTab.tsx:166:29",variant:"outline",className:"text-xs border-[var(--dg-border)]",style:{color:L(A(c))},children:Y(A(c))})}),e.jsxs("span",{"code-path":"src/components/approval/ApprovalProcessTab.tsx:170:27",children:["申请人:",c.applicant_name||c.applicant||"--"]}),e.jsxs("span",{"code-path":"src/components/approval/ApprovalProcessTab.tsx:171:27",children:["提交于 ",c.created_at?new Date(c.created_at).toLocaleString():"--"]})]})]})]}),e.jsxs("div",{"code-path":"src/components/approval/ApprovalProcessTab.tsx:175:21",className:"flex items-center gap-2",children:[e.jsxs(i,{"code-path":"src/components/approval/ApprovalProcessTab.tsx:176:23",variant:"ghost",size:"sm",className:"text-[var(--dg-text-secondary)] hover:text-[var(--dg-text-primary)]",onClick:()=>p(c),children:[e.jsx(we,{"code-path":"src/components/approval/ApprovalProcessTab.tsx:177:25",className:"h-4 w-4 mr-1"}),"详情"]}),c.status==="pending"&&e.jsxs(e.Fragment,{children:[e.jsxs(i,{"code-path":"src/components/approval/ApprovalProcessTab.tsx:182:27",variant:"outline",size:"sm",className:"border-emerald-500/30 text-emerald-400 hover:bg-emerald-500/10",onClick:()=>d(c),children:[e.jsx(D,{"code-path":"src/components/approval/ApprovalProcessTab.tsx:188:29",className:"h-4 w-4 mr-1"}),"通过"]}),e.jsxs(i,{"code-path":"src/components/approval/ApprovalProcessTab.tsx:191:27",variant:"outline",size:"sm",className:"border-red-500/30 text-red-400 hover:bg-red-500/10",onClick:()=>y(c),children:[e.jsx(F,{"code-path":"src/components/approval/ApprovalProcessTab.tsx:197:29",className:"h-4 w-4 mr-1"}),"拒绝"]})]})]})]}),e.jsxs("div",{"code-path":"src/components/approval/ApprovalProcessTab.tsx:205:19",className:"mb-3",children:[e.jsxs("div",{"code-path":"src/components/approval/ApprovalProcessTab.tsx:206:21",className:"flex items-center justify-between text-xs text-[var(--dg-text-muted)] mb-1.5",children:[e.jsx("span",{"code-path":"src/components/approval/ApprovalProcessTab.tsx:207:23",children:"审批进度"}),e.jsxs("span",{"code-path":"src/components/approval/ApprovalProcessTab.tsx:208:23",children:[l,"%"]})]}),e.jsx("div",{"code-path":"src/components/approval/ApprovalProcessTab.tsx:210:21",className:"w-full h-1.5 bg-[var(--dg-bg-tertiary)] rounded-full overflow-hidden",children:e.jsx("div",{"code-path":"src/components/approval/ApprovalProcessTab.tsx:211:23",className:b("h-full rounded-full transition-all",c.status==="rejected"?"bg-red-400":"bg-[var(--dg-blue)]"),style:{width:`${l}%`}})})]}),e.jsx("div",{"code-path":"src/components/approval/ApprovalProcessTab.tsx:221:19",className:"bg-[var(--dg-bg-primary)] rounded-lg p-3",children:X(c)})]})},c.id)})})]})}function ne(a){if(Array.isArray(a))return a;if(typeof a=="string")try{const s=JSON.parse(a);return Array.isArray(s)?s:[]}catch{return[]}return[]}const K=[{value:"deploy",label:"发布审批",color:"var(--dg-blue)"},{value:"server",label:"服务器操作",color:"var(--dg-cyan)"},{value:"permission",label:"权限申请",color:"var(--dg-purple)"}],Qe=a=>K.find(s=>s.value===a)?.label||a||"通用审批",Ge=a=>K.find(s=>s.value===a)?.color||"var(--dg-text-secondary)";function Ye(a){const s=ne(a.steps);return s.length===0?e.jsx("div",{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:37:12",className:"text-[var(--dg-text-muted)] text-center py-4",children:"暂无流程节点"}):e.jsx("div",{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:40:5",className:"flex items-center gap-2 overflow-x-auto py-4",children:s.map((r,o)=>e.jsxs("div",{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:42:9",className:"flex items-center",children:[e.jsxs("div",{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:43:11",className:b("px-4 py-2 rounded-lg border min-w-[100px] text-center",r.type==="start"&&"bg-emerald-500/10 border-emerald-500/30 text-emerald-400",r.type==="approval"&&"bg-[var(--dg-blue)]/10 border-[var(--dg-blue)]/30 text-[var(--dg-blue)]",r.type==="condition"&&"bg-amber-500/10 border-amber-500/30 text-amber-400",r.type==="end"&&"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-secondary)]"),children:[e.jsx("p",{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:52:13",className:"text-sm font-medium",children:r.name}),r.approvers&&e.jsx("p",{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:54:15",className:"text-xs text-[var(--dg-text-muted)] mt-1",children:Array.isArray(r.approvers)?r.approvers.join(", "):r.approvers})]}),or("all"),className:b("px-3 py-1.5 rounded-md text-sm transition-colors",s==="all"?"bg-[var(--dg-bg-hover)] text-[var(--dg-text-primary)] font-medium":"text-[var(--dg-text-secondary)] hover:text-[var(--dg-text-primary)]"),children:"全部类型"}),K.map(o=>e.jsxs("button",{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:100:13",onClick:()=>r(o.value),className:b("px-3 py-1.5 rounded-md text-sm transition-colors flex items-center gap-1.5",s===o.value?"bg-[var(--dg-bg-hover)] text-[var(--dg-text-primary)] font-medium":"text-[var(--dg-text-secondary)] hover:text-[var(--dg-text-primary)]"),children:[e.jsx("span",{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:110:15",style:{color:o.color},children:"●"}),o.label]},o.value))]})]}),e.jsx("div",{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:117:7",className:"grid grid-cols-1 gap-4",children:a.length===0?e.jsx(u,{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:119:11",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsx(j,{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:120:13",className:"p-8",children:e.jsxs("div",{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:121:15",className:"text-center",children:[e.jsx(oe,{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:122:17",className:"h-12 w-12 mx-auto text-[var(--dg-text-muted)] mb-4"}),e.jsx("h3",{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:123:17",className:"text-lg font-medium text-[var(--dg-text-secondary)] mb-2",children:"暂无流程模板"}),e.jsx("p",{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:124:17",className:"text-sm text-[var(--dg-text-muted)]",children:"当前筛选条件下没有匹配的模板"})]})})}):a.map(o=>e.jsxs(u,{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:130:13",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:[e.jsx(fe,{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:131:15",className:"pb-2",children:e.jsxs("div",{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:132:17",className:"flex items-start justify-between",children:[e.jsxs("div",{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:133:19",className:"flex items-center gap-3",children:[e.jsx("div",{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:134:21",className:"w-10 h-10 rounded-lg bg-[var(--dg-blue)]/10 flex items-center justify-center",children:e.jsx(oe,{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:135:23",className:"h-5 w-5 text-[var(--dg-blue)]"})}),e.jsxs("div",{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:137:21",children:[e.jsxs("div",{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:138:23",className:"flex items-center gap-2",children:[e.jsx(Te,{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:139:25",className:"text-base text-[var(--dg-text-primary)]",children:o.name}),o.type&&e.jsx(C,{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:141:27",variant:"outline",className:"text-xs border-[var(--dg-border)]",style:{color:Ge(o.type)},children:Qe(o.type)})]}),e.jsx(De,{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:150:23",className:"text-[var(--dg-text-muted)]",children:o.description})]})]}),e.jsxs("div",{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:153:19",className:"flex items-center gap-2",children:[e.jsx(C,{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:154:21",variant:"outline",className:o.status===1||o.status==="active"||o.status===!0?"border-emerald-500/30 text-emerald-400 bg-emerald-500/10":"border-[var(--dg-border)] text-[var(--dg-text-secondary)] bg-[var(--dg-bg-tertiary)]",children:o.status===1||o.status==="active"||o.status===!0?"已启用":"已停用"}),e.jsx(i,{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:164:21",variant:"ghost",size:"icon",className:"h-8 w-8 text-[var(--dg-text-secondary)] hover:text-[var(--dg-text-primary)]",children:e.jsx(Pe,{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:165:23",className:"h-4 w-4"})})]})]})}),e.jsxs(j,{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:170:15",children:[e.jsx("div",{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:171:17",className:"bg-[var(--dg-bg-primary)] rounded-lg p-4 overflow-x-auto",children:Ye(o)}),e.jsxs("div",{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:174:17",className:"flex items-center justify-between mt-4 text-sm text-[var(--dg-text-muted)]",children:[e.jsxs("span",{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:175:19",children:["创建于 ",o.created_at?new Date(o.created_at).toLocaleDateString():"--"]}),e.jsxs("span",{"code-path":"src/components/approval/ApprovalTemplateTab.tsx:176:19",children:[ne(o.steps).length," 个节点"]})]})]})]},o.id))})]})}function Xe({open:a,onOpenChange:s,instance:r,templates:o,onApprove:n,onReject:m}){return r?e.jsx(V,{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:41:5",open:a,onOpenChange:s,children:e.jsxs(J,{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:42:7",className:"max-w-2xl bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] max-h-[90vh] overflow-y-auto",children:[e.jsxs(q,{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:43:9",children:[e.jsx(H,{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:44:11",className:"text-[var(--dg-text-primary)]",children:"审批详情"}),e.jsx(Q,{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:45:11",className:"text-[var(--dg-text-muted)]",children:"查看审批流程详细信息"})]}),e.jsxs("div",{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:47:9",className:"space-y-4 py-2",children:[e.jsxs("div",{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:48:11",children:[e.jsx("h3",{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:49:13",className:"text-lg font-medium text-[var(--dg-text-primary)]",children:r.title}),e.jsxs("div",{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:50:13",className:"flex items-center gap-2 mt-1",children:[e.jsx(C,{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:51:15",variant:"outline",className:"text-xs border-[var(--dg-border)]",style:{color:L(A(r))},children:Y(A(r))}),e.jsxs("span",{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:54:15",className:"text-xs text-[var(--dg-text-muted)]",children:["申请人:",r.applicant_name||r.applicant||"--"]}),e.jsxs("span",{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:57:15",className:"text-xs text-[var(--dg-text-muted)]",children:["提交于 ",r.created_at?new Date(r.created_at).toLocaleString():"--"]})]})]}),r.content&&e.jsx("div",{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:65:13",className:"bg-[var(--dg-bg-primary)] rounded-lg p-4",children:e.jsx("p",{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:66:15",className:"text-sm text-[var(--dg-text-secondary)] whitespace-pre-wrap",children:r.content})}),(()=>{const p=o.find(y=>y.id===r.template_id),d=Me(r.form_data,p);return d?e.jsxs("div",{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:76:15",className:"bg-[var(--dg-bg-primary)] rounded-lg p-4",children:[e.jsx("p",{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:77:17",className:"text-sm font-medium text-[var(--dg-text-secondary)] mb-3",children:"申请表单"}),d]}):null})(),e.jsxs("div",{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:84:11",className:"bg-[var(--dg-bg-primary)] rounded-lg p-4",children:[e.jsx("p",{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:85:13",className:"text-sm font-medium text-[var(--dg-text-secondary)] mb-3",children:"审批进度"}),X(r)]}),r.actions&&e.jsxs("div",{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:91:13",className:"bg-[var(--dg-bg-primary)] rounded-lg p-4",children:[e.jsx("p",{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:92:15",className:"text-sm font-medium text-[var(--dg-text-secondary)] mb-3",children:"操作记录"}),e.jsx("div",{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:93:15",className:"space-y-2",children:r.actions.map((p,d)=>e.jsxs("div",{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:95:19",className:"flex items-center gap-3 text-sm",children:[p.action==="approve"?e.jsx(D,{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:97:23",className:"h-4 w-4 text-emerald-400"}):p.action==="reject"?e.jsx(F,{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:99:23",className:"h-4 w-4 text-red-400"}):e.jsx(pe,{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:101:23",className:"h-4 w-4 text-[var(--dg-text-muted)]"}),e.jsxs("div",{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:103:21",children:[e.jsx("span",{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:104:23",className:"text-[var(--dg-text-secondary)]",children:p.operator_name||p.operator}),e.jsx("span",{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:107:23",className:"text-[var(--dg-text-muted)] mx-1",children:"·"}),e.jsx("span",{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:108:23",className:"text-[var(--dg-text-secondary)]",children:p.action==="approve"?"通过":p.action==="reject"?"拒绝":"提交"}),p.comment&&e.jsx("p",{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:112:25",className:"text-xs text-[var(--dg-text-muted)] mt-0.5",children:p.comment})]}),e.jsx("span",{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:115:21",className:"text-xs text-[var(--dg-text-muted)] ml-auto",children:p.created_at?new Date(p.created_at).toLocaleString():""})]},d))})]})]}),e.jsxs(G,{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:124:9",children:[r.status==="pending"&&e.jsxs(e.Fragment,{children:[e.jsxs(i,{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:127:15",variant:"outline",className:"border-red-500/30 text-red-400 hover:bg-red-500/10",onClick:()=>{s(!1),m(r)},children:[e.jsx(F,{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:128:17",className:"h-4 w-4 mr-2"}),"拒绝"]}),e.jsxs(i,{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:130:15",className:"bg-emerald-500/90 hover:bg-emerald-500 text-white",onClick:()=>{s(!1),n(r)},children:[e.jsx(D,{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:131:17",className:"h-4 w-4 mr-2"}),"通过"]})]}),e.jsx(i,{"code-path":"src/components/approval/ApprovalDetailDialog.tsx:135:11",variant:"ghost",onClick:()=>s(!1),children:"关闭"})]})]})}):null}function Ke({open:a,onOpenChange:s,templates:r,onSuccess:o}){const[n,m]=v.useState(null),[p,d]=v.useState({}),[y,c]=v.useState(!1),w=async()=>{if(!n){T.error("请先选择申请类型");return}const l=I(n.form_schema);for(const x of l)if(x.required&&!p[x.key]){T.error(`请填写${x.label}`);return}c(!0);try{await k.createProcess({template_id:n.id,title:p.app_name||n.name,form_data:JSON.stringify(p)}),T.success("申请已提交"),s(!1),m(null),d({}),o()}catch(x){T.error("提交失败",{description:x?.message})}finally{c(!1)}};return e.jsx(V,{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:78:5",open:a,onOpenChange:l=>{l||(m(null),d({})),s(l)},children:e.jsxs(J,{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:89:7",className:"max-w-2xl bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] max-h-[90vh] overflow-y-auto",children:[e.jsxs(q,{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:90:9",children:[e.jsx(H,{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:91:11",className:"text-[var(--dg-text-primary)]",children:"新建资源申请"}),e.jsx(Q,{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:92:11",className:"text-[var(--dg-text-muted)]",children:n?"请填写申请信息":"请选择申请类型"})]}),n?e.jsxs("div",{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:135:11",className:"py-2",children:[e.jsx("div",{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:136:13",className:"flex items-center gap-2 mb-4",children:e.jsx("button",{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:137:15",type:"button",onClick:()=>{m(null),d({})},className:"text-xs text-[var(--dg-text-muted)] hover:text-[var(--dg-text-primary)]",children:"← 返回选择类型"})}),e.jsx("div",{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:145:13",className:"grid grid-cols-2 gap-x-4 gap-y-4",children:I(n.form_schema).map(l=>{const x=l.type==="textarea";return e.jsxs("div",{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:149:19",className:b("space-y-1.5",x&&"col-span-2"),children:[e.jsxs(ke,{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:150:21",className:"text-sm font-medium text-[var(--dg-text-secondary)]",children:[l.label,l.required&&e.jsx("span",{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:152:42",className:"text-red-400 ml-0.5",children:"*"})]}),l.type==="select"?e.jsxs(_e,{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:155:23",value:String(p[l.key]??""),onValueChange:h=>d(g=>({...g,[l.key]:h})),children:[e.jsx(Le,{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:159:25",className:"bg-[var(--dg-bg-primary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]",children:e.jsx(Oe,{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:160:27",placeholder:l.placeholder||`请选择${l.label}`})}),e.jsx(Ie,{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:162:25",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:(l.options||[]).map(h=>e.jsx($e,{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:164:29",value:h,className:"text-[var(--dg-text-primary)] focus:bg-[var(--dg-bg-hover)]",children:h},h))})]}):l.type==="textarea"?e.jsx(le,{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:171:23",placeholder:l.placeholder||`请输入${l.label}`,value:p[l.key]??"",onChange:h=>d(g=>({...g,[l.key]:h.target.value})),className:"bg-[var(--dg-bg-primary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] placeholder:text-[var(--dg-text-muted)] min-h-[80px]"}):e.jsx(ce,{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:178:23",type:l.type==="number"?"number":"text",placeholder:l.placeholder||`请输入${l.label}`,value:p[l.key]??"",onChange:h=>d(g=>({...g,[l.key]:h.target.value})),className:"bg-[var(--dg-bg-primary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] placeholder:text-[var(--dg-text-muted)]"})]},l.key)})})]}):e.jsx("div",{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:99:11",className:"grid grid-cols-2 gap-4 py-2",children:z.map(l=>{const x=r.find(g=>g.type===l.value&&g.enabled!==!1),h=l.icon;return e.jsxs("button",{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:106:17",type:"button",disabled:!x,onClick:()=>{m(x),d({})},className:b("flex flex-col items-start gap-3 p-5 rounded-xl text-left transition-colors","bg-[var(--dg-bg-tertiary)] hover:bg-[var(--dg-bg-hover)]",!x&&"opacity-40 cursor-not-allowed hover:bg-[var(--dg-bg-tertiary)]"),children:[e.jsx("div",{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:117:19",className:"w-10 h-10 rounded-lg flex items-center justify-center",style:{backgroundColor:`color-mix(in srgb, ${l.color} 15%, transparent)`,color:l.color},children:e.jsx(h,{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:121:21",className:"h-5 w-5"})}),e.jsxs("div",{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:123:19",children:[e.jsx("p",{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:124:21",className:"text-sm font-medium text-[var(--dg-text-primary)]",children:l.label}),e.jsx("p",{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:125:21",className:"text-xs text-[var(--dg-text-muted)] mt-0.5",children:x?x.description||`共 ${I(x.form_schema).length} 个字段`:"暂无可用模板"})]})]},l.value)})}),e.jsxs(G,{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:196:9",children:[e.jsx(i,{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:197:11",variant:"ghost",onClick:()=>s(!1),children:"取消"}),n&&e.jsxs(i,{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:199:13",className:"bg-[var(--dg-blue)] hover:opacity-90 text-white",onClick:w,disabled:y,children:[y&&e.jsx($,{"code-path":"src/components/approval/ApprovalCreateDialog.tsx:204:30",className:"h-4 w-4 mr-2 animate-spin"}),"提交申请"]})]})]})})}function We(){const[a,s]=v.useState("instances"),[r,o]=v.useState([]),[n,m]=v.useState([]),[p,d]=v.useState([]),[y,c]=v.useState(!0),[w,l]=v.useState(""),[x,h]=v.useState(""),[g,de]=v.useState("all"),[me,W]=v.useState(!1),[P,Z]=v.useState(null),[ve,O]=v.useState(!1),[f,xe]=v.useState("approve"),[R,ee]=v.useState(""),[ae,te]=v.useState(!1),[ie,re]=v.useState(!1),B=async()=>{try{c(!0);const[t,N,M]=await Promise.all([k.getProcesses().catch(()=>null),k.getTemplates().catch(()=>null),k.getProcesses({status:"pending"}).catch(()=>null)]);o(t?.list||[]),m(N?.list||[]),d(M?.list||[])}catch(t){console.error("加载审批数据失败:",t)}finally{c(!1)}};v.useEffect(()=>{B()},[]);const he=r.filter(t=>{const N=(t.title||"").toLowerCase().includes(w.toLowerCase())||(t.applicant_name||t.applicant||"").toLowerCase().includes(w.toLowerCase()),M=!x||t.status===x;return N&&M}),ge=n.filter(t=>g==="all"||t.type===g),se=t=>{Z(t),W(!0)},S=(t,N)=>{xe(t),Z(N),ee(""),O(!0)},be=async()=>{if(P)try{te(!0),f==="approve"?(await k.approveProcess(P.id,R),T.success("审批通过")):(await k.rejectProcess(P.id,R),T.success("已拒绝")),O(!1),B()}catch(t){T.error("操作失败",{description:t.message})}finally{te(!1)}},ue=r.filter(t=>t.status==="pending").length,je=r.filter(t=>t.status==="approved").length,Ae=r.filter(t=>t.status==="rejected").length,E=p.filter(t=>t.status==="pending").length;return e.jsxs("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:139:5",className:"space-y-6",children:[e.jsxs("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:141:7",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:142:9",children:[e.jsx("h1",{"code-path":"src/components/approval/ApprovalFlow.tsx:143:11",className:"text-2xl font-bold text-[var(--dg-text-primary)]",children:"资源申请"}),e.jsx("p",{"code-path":"src/components/approval/ApprovalFlow.tsx:144:11",className:"text-sm text-[var(--dg-text-muted)] mt-1",children:"云服务器申请 · 应用部署申请"})]}),e.jsxs(i,{"code-path":"src/components/approval/ApprovalFlow.tsx:146:9",className:"bg-[var(--dg-blue)] hover:opacity-90 text-white",onClick:()=>re(!0),children:[e.jsx(ze,{"code-path":"src/components/approval/ApprovalFlow.tsx:150:11",className:"h-4 w-4 mr-2"}),"新建申请"]})]}),e.jsxs("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:156:7",className:"grid grid-cols-1 md:grid-cols-4 gap-4",children:[e.jsx(u,{"code-path":"src/components/approval/ApprovalFlow.tsx:157:9",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsx(j,{"code-path":"src/components/approval/ApprovalFlow.tsx:158:11",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:159:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:160:15",children:[e.jsx("p",{"code-path":"src/components/approval/ApprovalFlow.tsx:161:17",className:"text-sm text-[var(--dg-text-muted)]",children:"待审批"}),e.jsx("p",{"code-path":"src/components/approval/ApprovalFlow.tsx:162:17",className:"text-2xl font-bold text-amber-400",children:ue})]}),e.jsx("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:164:15",className:"p-3 rounded-lg bg-amber-500/10 text-amber-400",children:e.jsx(pe,{"code-path":"src/components/approval/ApprovalFlow.tsx:165:17",className:"h-5 w-5"})})]})})}),e.jsx(u,{"code-path":"src/components/approval/ApprovalFlow.tsx:170:9",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsx(j,{"code-path":"src/components/approval/ApprovalFlow.tsx:171:11",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:172:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:173:15",children:[e.jsx("p",{"code-path":"src/components/approval/ApprovalFlow.tsx:174:17",className:"text-sm text-[var(--dg-text-muted)]",children:"已通过"}),e.jsx("p",{"code-path":"src/components/approval/ApprovalFlow.tsx:175:17",className:"text-2xl font-bold text-emerald-400",children:je})]}),e.jsx("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:177:15",className:"p-3 rounded-lg bg-emerald-500/10 text-emerald-400",children:e.jsx(D,{"code-path":"src/components/approval/ApprovalFlow.tsx:178:17",className:"h-5 w-5"})})]})})}),e.jsx(u,{"code-path":"src/components/approval/ApprovalFlow.tsx:183:9",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsx(j,{"code-path":"src/components/approval/ApprovalFlow.tsx:184:11",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:185:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:186:15",children:[e.jsx("p",{"code-path":"src/components/approval/ApprovalFlow.tsx:187:17",className:"text-sm text-[var(--dg-text-muted)]",children:"已拒绝"}),e.jsx("p",{"code-path":"src/components/approval/ApprovalFlow.tsx:188:17",className:"text-2xl font-bold text-red-400",children:Ae})]}),e.jsx("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:190:15",className:"p-3 rounded-lg bg-red-500/10 text-red-400",children:e.jsx(F,{"code-path":"src/components/approval/ApprovalFlow.tsx:191:17",className:"h-5 w-5"})})]})})}),e.jsx(u,{"code-path":"src/components/approval/ApprovalFlow.tsx:196:9",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsx(j,{"code-path":"src/components/approval/ApprovalFlow.tsx:197:11",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:198:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:199:15",children:[e.jsx("p",{"code-path":"src/components/approval/ApprovalFlow.tsx:200:17",className:"text-sm text-[var(--dg-text-muted)]",children:"我的待办"}),e.jsx("p",{"code-path":"src/components/approval/ApprovalFlow.tsx:201:17",className:"text-2xl font-bold text-[var(--dg-blue)]",children:E})]}),e.jsx("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:203:15",className:"p-3 rounded-lg bg-[var(--dg-blue)]/10 text-[var(--dg-blue)]",children:e.jsx(_,{"code-path":"src/components/approval/ApprovalFlow.tsx:204:17",className:"h-5 w-5"})})]})})})]}),e.jsx("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:212:7",className:"flex items-center gap-1 border-b border-[var(--dg-border)]",children:[{key:"instances",label:"审批实例"},{key:"flows",label:"流程模板"},{key:"my-approvals",label:"我的审批"}].map(t=>e.jsxs("button",{"code-path":"src/components/approval/ApprovalFlow.tsx:218:11",onClick:()=>s(t.key),className:b("px-4 py-2 text-sm font-medium border-b-2 -mb-px transition-colors",a===t.key?"border-[var(--dg-blue)] text-[var(--dg-blue)]":"border-transparent text-[var(--dg-text-secondary)] hover:text-[var(--dg-text-primary)]"),children:[t.label,t.key==="my-approvals"&&E>0&&e.jsx(C,{"code-path":"src/components/approval/ApprovalFlow.tsx:230:15",className:"ml-2 bg-red-500/20 text-red-400 border-0 text-xs",children:E})]},t.key))}),a==="instances"&&e.jsx(He,{"code-path":"src/components/approval/ApprovalFlow.tsx:238:9",processes:r,filteredInstances:he,loading:y,searchQuery:w,setSearchQuery:l,statusFilter:x,setStatusFilter:h,onView:se,onApprove:t=>S("approve",t),onReject:t=>S("reject",t)}),a==="flows"&&e.jsx(Ue,{"code-path":"src/components/approval/ApprovalFlow.tsx:253:9",filteredTemplates:ge,templateTypeFilter:g,setTemplateTypeFilter:de}),a==="my-approvals"&&e.jsx("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:261:9",className:"grid grid-cols-1 gap-4",children:p.length===0?e.jsx(u,{"code-path":"src/components/approval/ApprovalFlow.tsx:263:13",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsx(j,{"code-path":"src/components/approval/ApprovalFlow.tsx:264:15",className:"p-12",children:e.jsxs("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:265:17",className:"text-center",children:[e.jsx(_,{"code-path":"src/components/approval/ApprovalFlow.tsx:266:19",className:"h-12 w-12 mx-auto text-[var(--dg-text-muted)] mb-4"}),e.jsx("h3",{"code-path":"src/components/approval/ApprovalFlow.tsx:267:19",className:"text-lg font-medium text-[var(--dg-text-secondary)] mb-2",children:"暂无待办"}),e.jsx("p",{"code-path":"src/components/approval/ApprovalFlow.tsx:268:19",className:"text-sm text-[var(--dg-text-muted)]",children:"没有等待你处理的审批"})]})})}):p.map(t=>{const{percentage:N}=U(t);return e.jsx(u,{"code-path":"src/components/approval/ApprovalFlow.tsx:276:17",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsxs(j,{"code-path":"src/components/approval/ApprovalFlow.tsx:277:19",className:"p-4",children:[e.jsxs("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:278:21",className:"flex items-start justify-between mb-3",children:[e.jsxs("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:279:23",className:"flex items-start gap-3",children:[e.jsx("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:280:25",className:"w-10 h-10 rounded-lg bg-[var(--dg-bg-tertiary)] flex items-center justify-center",style:{color:L(A(t))},children:e.jsx(_,{"code-path":"src/components/approval/ApprovalFlow.tsx:281:27",className:"h-5 w-5"})}),e.jsxs("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:283:25",children:[e.jsxs("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:284:27",className:"flex items-center gap-2 mb-1",children:[e.jsx("h3",{"code-path":"src/components/approval/ApprovalFlow.tsx:285:29",className:"font-medium text-[var(--dg-text-primary)]",children:t.title}),e.jsx(C,{"code-path":"src/components/approval/ApprovalFlow.tsx:286:29",variant:"outline",className:"text-xs border-[var(--dg-border)]",style:{color:L(A(t))},children:Y(A(t))})]}),e.jsxs("p",{"code-path":"src/components/approval/ApprovalFlow.tsx:290:27",className:"text-xs text-[var(--dg-text-muted)]",children:["申请人:",t.applicant_name||t.applicant||"--"]}),e.jsxs("p",{"code-path":"src/components/approval/ApprovalFlow.tsx:293:27",className:"text-xs text-[var(--dg-text-muted)]",children:["提交于 ",t.created_at?new Date(t.created_at).toLocaleString():"--"]})]})]}),e.jsxs("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:298:23",className:"flex items-center gap-2",children:[e.jsxs(i,{"code-path":"src/components/approval/ApprovalFlow.tsx:299:25",variant:"ghost",size:"sm",onClick:()=>se(t),children:[e.jsx(_,{"code-path":"src/components/approval/ApprovalFlow.tsx:300:27",className:"h-4 w-4 mr-1"}),"详情"]}),t.status==="pending"&&e.jsxs(e.Fragment,{children:[e.jsxs(i,{"code-path":"src/components/approval/ApprovalFlow.tsx:305:29",variant:"outline",size:"sm",className:"border-emerald-500/30 text-emerald-400 hover:bg-emerald-500/10",onClick:()=>S("approve",t),children:[e.jsx(D,{"code-path":"src/components/approval/ApprovalFlow.tsx:306:31",className:"h-4 w-4 mr-1"}),"通过"]}),e.jsxs(i,{"code-path":"src/components/approval/ApprovalFlow.tsx:308:29",variant:"outline",size:"sm",className:"border-red-500/30 text-red-400 hover:bg-red-500/10",onClick:()=>S("reject",t),children:[e.jsx(F,{"code-path":"src/components/approval/ApprovalFlow.tsx:309:31",className:"h-4 w-4 mr-1"}),"拒绝"]})]})]})]}),e.jsxs("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:315:21",className:"mb-3",children:[e.jsxs("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:316:23",className:"flex items-center justify-between text-xs text-[var(--dg-text-muted)] mb-1.5",children:[e.jsx("span",{"code-path":"src/components/approval/ApprovalFlow.tsx:317:25",children:"审批进度"}),e.jsxs("span",{"code-path":"src/components/approval/ApprovalFlow.tsx:318:25",children:[N,"%"]})]}),e.jsx("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:320:23",className:"w-full h-1.5 bg-[var(--dg-bg-tertiary)] rounded-full overflow-hidden",children:e.jsx("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:321:25",className:b("h-full rounded-full",t.status==="rejected"?"bg-red-400":"bg-[var(--dg-blue)]"),style:{width:`${N}%`}})})]}),e.jsx("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:324:21",className:"bg-[var(--dg-bg-primary)] rounded-lg p-3",children:X(t)})]})},t.id)})}),e.jsx(Xe,{"code-path":"src/components/approval/ApprovalFlow.tsx:336:7",open:me,onOpenChange:W,instance:P,templates:n,onApprove:t=>S("approve",t),onReject:t=>S("reject",t)}),e.jsx(V,{"code-path":"src/components/approval/ApprovalFlow.tsx:346:7",open:ve,onOpenChange:O,children:e.jsxs(J,{"code-path":"src/components/approval/ApprovalFlow.tsx:347:9",className:"max-w-md bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:[e.jsxs(q,{"code-path":"src/components/approval/ApprovalFlow.tsx:348:11",children:[e.jsx(H,{"code-path":"src/components/approval/ApprovalFlow.tsx:349:13",className:"text-[var(--dg-text-primary)] flex items-center gap-2",children:f==="approve"?e.jsxs(e.Fragment,{children:[e.jsx(D,{"code-path":"src/components/approval/ApprovalFlow.tsx:352:19",className:"h-5 w-5 text-emerald-400"}),"确认通过审批"]}):e.jsxs(e.Fragment,{children:[e.jsx(F,{"code-path":"src/components/approval/ApprovalFlow.tsx:357:19",className:"h-5 w-5 text-red-400"}),"确认拒绝审批"]})}),e.jsx(Q,{"code-path":"src/components/approval/ApprovalFlow.tsx:362:13",className:"text-[var(--dg-text-muted)]",children:f==="approve"?"请填写审批意见后确认通过":"请填写拒绝原因后确认拒绝"})]}),P&&e.jsxs("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:367:13",className:"py-2",children:[e.jsxs("p",{"code-path":"src/components/approval/ApprovalFlow.tsx:368:15",className:"text-sm text-[var(--dg-text-secondary)] mb-2",children:["审批标题:",e.jsx("span",{"code-path":"src/components/approval/ApprovalFlow.tsx:369:22",className:"text-[var(--dg-text-primary)]",children:P.title})]}),e.jsxs("div",{"code-path":"src/components/approval/ApprovalFlow.tsx:371:15",className:"space-y-2",children:[e.jsx("label",{"code-path":"src/components/approval/ApprovalFlow.tsx:372:17",className:"text-sm font-medium text-[var(--dg-text-secondary)]",children:f==="approve"?"审批意见":"拒绝原因"}),e.jsx(le,{"code-path":"src/components/approval/ApprovalFlow.tsx:375:17",placeholder:f==="approve"?"请填写审批意见(可选)":"请填写拒绝原因",value:R,onChange:t=>ee(t.target.value),className:"bg-[var(--dg-bg-primary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] placeholder:text-[var(--dg-text-muted)] min-h-[80px]"})]})]}),e.jsxs(G,{"code-path":"src/components/approval/ApprovalFlow.tsx:384:11",children:[e.jsx(i,{"code-path":"src/components/approval/ApprovalFlow.tsx:385:13",variant:"outline",onClick:()=>O(!1),className:"border-[var(--dg-border)] text-[var(--dg-text-secondary)]",children:"取消"}),e.jsxs(i,{"code-path":"src/components/approval/ApprovalFlow.tsx:388:13",onClick:be,disabled:ae,className:f==="approve"?"bg-emerald-500/90 hover:bg-emerald-500 text-white":"bg-red-500 hover:bg-red-600 text-white",children:[ae&&e.jsx($,{"code-path":"src/components/approval/ApprovalFlow.tsx:393:36",className:"h-4 w-4 mr-2 animate-spin"}),f==="approve"?"确认通过":"确认拒绝"]})]})]})}),e.jsx(Ke,{"code-path":"src/components/approval/ApprovalFlow.tsx:401:7",open:ie,onOpenChange:re,templates:n,onSuccess:B})]})}const ua=We;export{We as ApprovalFlow,ua as ApprovalFlowManager}; diff --git a/backend/static/assets/ApprovalPermissionPage-DKO3fiCV.js b/backend/static/assets/ApprovalPermissionPage-DKO3fiCV.js new file mode 100644 index 0000000..52d2782 --- /dev/null +++ b/backend/static/assets/ApprovalPermissionPage-DKO3fiCV.js @@ -0,0 +1 @@ +import{j as e}from"./index-Dmami9WE.js";import{A as r}from"./ApprovalCategoryPage-CIXhWQ3k.js";import"./card-CIfC-8Rh.js";import"./input-NsU9nXZF.js";import"./badge-3UzCvU7L.js";import"./label-Ap_-SPYI.js";import"./table-CG4mjNfb.js";import"./select-DUbxjT0z.js";import"./index-CtCQcvyh.js";import"./chevron-up-Cq4GPopa.js";import"./system-C3cYTuQH.js";import"./index-BuEnLCjT.js";import"./plus-O65gX7Qz.js";import"./search-Dd-PeBfg.js";import"./refresh-cw-CTBERyFc.js";import"./file-text-CebshSV-.js";import"./circle-x-BBQeW1R3.js";import"./play-0EwQQJX_.js";const t=[{key:"perm_type",label:"权限类型",type:"select",options:["堡垒机权限","生产VPN权限","日志查询权限","数据库查询权限","服务器SSH权限","K8s集群权限"],required:!0},{key:"account",label:"申请账号",type:"text",placeholder:"如 logan.li",required:!0},{key:"reason",label:"申请理由",type:"textarea",placeholder:"说明为什么需要该权限",required:!0},{key:"duration",label:"权限时长",type:"select",options:["临时(24小时)","短期(7天)","中期(30天)","长期(90天)","永久"],required:!0}];function f(){return e.jsx(r,{"code-path":"src/pages/ApprovalPermissionPage.tsx:17:5",category:"permission",title:"权限审批",description:"申请堡垒机、VPN、日志查询、数据库查询等运维权限",fields:t,templateCode:"permission_request"})}export{f as ApprovalPermissionPage}; diff --git a/backend/static/assets/ApprovalResourcePage-D5TJ7_JK.js b/backend/static/assets/ApprovalResourcePage-D5TJ7_JK.js new file mode 100644 index 0000000..bbed18f --- /dev/null +++ b/backend/static/assets/ApprovalResourcePage-D5TJ7_JK.js @@ -0,0 +1 @@ +import{j as e}from"./index-Dmami9WE.js";import{A as r}from"./ApprovalCategoryPage-CIXhWQ3k.js";import"./card-CIfC-8Rh.js";import"./input-NsU9nXZF.js";import"./badge-3UzCvU7L.js";import"./label-Ap_-SPYI.js";import"./table-CG4mjNfb.js";import"./select-DUbxjT0z.js";import"./index-CtCQcvyh.js";import"./chevron-up-Cq4GPopa.js";import"./system-C3cYTuQH.js";import"./index-BuEnLCjT.js";import"./plus-O65gX7Qz.js";import"./search-Dd-PeBfg.js";import"./refresh-cw-CTBERyFc.js";import"./file-text-CebshSV-.js";import"./circle-x-BBQeW1R3.js";import"./play-0EwQQJX_.js";const t=[{key:"provider",label:"云厂商",type:"select",options:["阿里云","腾讯云","华为云","AWS"],required:!0},{key:"region",label:"地域",type:"text",placeholder:"如 cn-hangzhou",required:!0},{key:"spec",label:"规格",type:"select",options:["2C4G","4C8G","8C16G","16C32G","32C64G"],required:!0},{key:"disk",label:"系统盘(GB)",type:"number",defaultValue:40,required:!0},{key:"count",label:"数量(台)",type:"number",defaultValue:1,required:!0},{key:"duration",label:"时长",type:"select",options:["1个月","3个月","6个月","1年"],required:!0},{key:"purpose",label:"用途说明",type:"textarea",required:!0}];function f(){return e.jsx(r,{"code-path":"src/pages/ApprovalResourcePage.tsx:16:5",category:"resource",title:"资源申请",description:"申请云服务器、存储、网络等基础设施资源",fields:t,templateCode:"server_apply"})}export{f as ApprovalResourcePage}; diff --git a/backend/static/assets/ApprovalWorkflowPage-BcexYBCQ.js b/backend/static/assets/ApprovalWorkflowPage-BcexYBCQ.js new file mode 100644 index 0000000..4a942f1 --- /dev/null +++ b/backend/static/assets/ApprovalWorkflowPage-BcexYBCQ.js @@ -0,0 +1 @@ +import{r as c,h as j,j as e,L as R,B as T,Q as V,V as z,X as Y,t as J,W as X,P as H}from"./index-Dmami9WE.js";import{C as K,a as Z}from"./card-CIfC-8Rh.js";import{t as C}from"./index-BuEnLCjT.js";import{P as F}from"./plus-O65gX7Qz.js";import{S as D}from"./star-DRCV7Fx2.js";import{C as ee}from"./chevron-up-Cq4GPopa.js";import{P as G}from"./play-0EwQQJX_.js";import{P as se}from"./pen-0lfnZsyH.js";import{T as q}from"./trash-2-DWVnIU6o.js";import{A as ae,a as te}from"./arrow-up-DMuDiHn6.js";const re={resource:"资源申请",app:"应用申请",permission:"权限审批"},O={submit:"提交阶段",audit:"审核阶段",execute:"执行阶段"},B={submit:"bg-blue-500/15 text-blue-400 border-blue-500/30",audit:"bg-purple-500/15 text-purple-400 border-purple-500/30",execute:"bg-green-500/15 text-green-400 border-green-500/30"},oe={submit:X,audit:J,execute:G},pe=[{value:"submit",label:"提交阶段",desc:"工单提交人"},{value:"audit",label:"审核阶段",desc:"审核人员审批"},{value:"execute",label:"执行阶段",desc:"执行人员操作"}],S={list:p=>j.get("/approval-workflows",p),get:p=>j.get(`/approval-workflows/${p}`),create:p=>j.post("/approval-workflows",p),update:(p,i)=>j.put(`/approval-workflows/${p}`,i),delete:p=>j.delete(`/approval-workflows/${p}`),setDefault:p=>j.put(`/approval-workflows/${p}/default`)},le=()=>j.get("/admin/users");function ce({users:p,selectedIds:i,label:v,onToggle:W,onToggleAll:y,onClear:f,getUserName:N}){const[m,_]=c.useState(!1),b=c.useRef(null),[k,l]=c.useState({top:0,left:0,width:0}),h=()=>{if(b.current){const d=b.current.getBoundingClientRect();l({top:d.bottom+4,left:d.left,width:d.width})}};return e.jsxs("div",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:121:5",className:"relative",children:[e.jsxs("button",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:122:7",ref:b,type:"button",onClick:()=>{m||h(),_(!m)},className:`w-full flex items-center justify-between px-3 py-2 rounded-lg text-sm transition-colors ${i.length===0?"bg-[var(--dg-bg-tertiary)] border border-red-500/40 text-[var(--dg-text-muted)]":"bg-[var(--dg-bg-tertiary)] border border-[var(--dg-border)] text-[var(--dg-text-primary)]"}`,children:[e.jsx("span",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:132:9",className:"truncate",children:i.length===0?`${v} * 请选择`:`${v} (${i.length}人)`}),e.jsx(z,{"code-path":"src/pages/ApprovalWorkflowPage.tsx:135:9",className:`w-4 h-4 text-[var(--dg-text-muted)] transition-transform ${m?"rotate-180":""}`})]}),i.length>1&&e.jsx("div",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:139:9",className:"flex flex-wrap gap-1 mt-1.5",children:i.map(d=>e.jsxs("span",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:141:13",className:"inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-[11px] bg-blue-500/15 text-blue-400",children:[N(d),e.jsx("button",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:143:15",onClick:()=>W(d),className:"hover:text-red-400",children:e.jsx(Y,{"code-path":"src/pages/ApprovalWorkflowPage.tsx:143:84",className:"w-3 h-3"})})]},d))}),m&&e.jsxs(e.Fragment,{children:[e.jsx("div",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:151:11",className:"fixed inset-0 z-40",onClick:()=>_(!1)}),e.jsxs("div",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:152:11",className:"fixed z-50 bg-[var(--dg-bg-secondary)] border border-[var(--dg-border)] rounded-lg shadow-xl max-h-52 overflow-y-auto",style:{top:k.top,left:k.left,width:k.width},children:[e.jsxs("div",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:154:13",className:"flex items-center justify-between px-3 py-2 border-b border-[var(--dg-border)]",children:[e.jsx("button",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:155:15",onClick:y,className:"text-[11px] text-blue-400 hover:text-blue-300",children:i.length===p.length&&p.length>0?"取消全选":"全选"}),i.length>0&&e.jsx("button",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:159:17",onClick:f,className:"text-[11px] text-red-400 hover:text-red-300",children:"清空"})]}),p.map(d=>{const w=i.includes(d.id);return e.jsxs("div",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:165:17",onClick:()=>W(d.id),className:"flex items-center gap-2.5 px-3 py-2 cursor-pointer hover:bg-[var(--dg-bg-hover)] transition-colors",children:[e.jsx("div",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:167:19",className:`w-4 h-4 rounded border flex items-center justify-center flex-shrink-0 ${w?"bg-blue-500 border-blue-500":"border-[var(--dg-border)]"}`,children:w&&e.jsx(H,{"code-path":"src/pages/ApprovalWorkflowPage.tsx:170:33",className:"w-3 h-3 text-white"})}),e.jsx("span",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:172:19",className:`text-sm flex-1 ${w?"text-[var(--dg-text-primary)]":"text-[var(--dg-text-secondary)]"}`,children:d.display_name||d.username}),e.jsx("span",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:175:19",className:"text-[10px] text-[var(--dg-text-muted)] px-1.5 py-0.5 rounded bg-[var(--dg-bg-tertiary)]",children:d.role})]},d.id)})]})]})]})}function de({workflow:p,users:i,onClose:v,onSaved:W}){const y=!!p,[f,N]=c.useState(p?.name||""),[m,_]=c.useState(p?.description||""),[b,k]=c.useState(p?.category||"resource"),[l,h]=c.useState([]),[d,w]=c.useState(!1),[E,P]=c.useState("");c.useEffect(()=>{p?.steps?.length?h(p.steps.map(s=>({name:s.name,step_type:s.step_type==="serial"||s.step_type==="parallel"?"audit":s.step_type,approver_ids:U(s.approver_ids)}))):h([{name:"提交申请",step_type:"submit",approver_ids:[]},{name:"审核",step_type:"audit",approver_ids:[]}])},[p]);const U=s=>{if(!s)return[];try{const t=JSON.parse(s);return Array.isArray(t)?t:[]}catch{return[]}},a=s=>{const t={submit:"提交",audit:"审核",execute:"执行"},r=l.filter(u=>u.step_type===s).length,x=r>0?` ${r+1}`:"";h([...l,{name:`${t[s]}${x}`,step_type:s,approver_ids:[]}])},g=s=>h(l.filter((t,r)=>r!==s)),o=(s,t)=>{const r=s+t;if(r<0||r>=l.length)return;const x=[...l];[x[s],x[r]]=[x[r],x[s]],h(x)},n=(s,t)=>{h(l.map((r,x)=>x===s?{...r,...t}:r))},$=(s,t)=>{const r=l[s],x=r.approver_ids.includes(t);n(s,{approver_ids:x?r.approver_ids.filter(u=>u!==t):[...r.approver_ids,t]})},A=s=>{const t=i.filter(r=>r.is_active!==!1);return s==="audit"?t:s==="execute"?t.filter(r=>["super_admin","k8s_admin","release_admin","resource_admin"].includes(r.role)):t},I=s=>{const t=l[s],r=A(t.step_type),x=t.approver_ids.length===r.length&&r.length>0;n(s,{approver_ids:x?[]:r.map(u=>u.id)})},M=async()=>{if(!f.trim()){P("请输入流程名称");return}if(l.length===0){P("请至少添加一个步骤");return}for(let s=0;s({step_number:r+1,name:t.name,step_type:t.step_type,approver_ids:t.approver_ids.length>0?JSON.stringify(t.approver_ids):null,is_required:!0,timeout_hours:24,auto_approve_on_timeout:!1}))};y&&p?await S.update(p.id,s):await S.create(s),W()}catch(s){const t=s?.response?.data?.detail||"保存失败";P(t)}finally{w(!1)}},Q=s=>{const t=i.find(r=>r.id===s);return t?t.display_name||t.username:`#${s}`},L="w-full px-3 py-2 bg-[var(--dg-bg-tertiary)] border border-[var(--dg-border)] rounded-lg text-sm focus:border-blue-400 focus:outline-none transition-colors text-[var(--dg-text-primary)]";return e.jsxs("div",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:323:5",className:"fixed inset-0 z-50 flex items-center justify-center",children:[e.jsx("div",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:324:7",className:"absolute inset-0 bg-black/50",onClick:v}),e.jsxs("div",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:325:7",className:"relative bg-[var(--dg-bg-secondary)] rounded-xl shadow-2xl w-full max-w-2xl max-h-[90vh] overflow-y-auto m-4",children:[e.jsxs("div",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:326:9",className:"flex items-center justify-between px-5 py-4 border-b border-[var(--dg-border)]",children:[e.jsx("h2",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:327:11",className:"text-base font-semibold text-[var(--dg-text-primary)]",children:y?"编辑审批流程":"新建审批流程"}),e.jsx("button",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:330:11",onClick:v,className:"p-1.5 rounded-lg hover:bg-[var(--dg-bg-hover)] text-[var(--dg-text-secondary)] transition-colors",children:e.jsx(Y,{"code-path":"src/pages/ApprovalWorkflowPage.tsx:331:13",className:"w-4 h-4"})})]}),e.jsxs("div",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:335:9",className:"px-5 pb-5 space-y-4 pt-4",children:[E&&e.jsx("div",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:336:21",className:"px-3 py-2 text-sm text-red-400 bg-red-500/10 rounded-lg",children:E}),e.jsxs("div",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:338:11",className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:339:13",children:[e.jsx("label",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:340:15",className:"block text-xs font-medium text-[var(--dg-text-secondary)] mb-1",children:"流程名称 *"}),e.jsx("input",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:341:15",className:L,value:f,onChange:s=>N(s.target.value),placeholder:"输入流程名称"})]}),e.jsxs("div",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:343:13",children:[e.jsx("label",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:344:15",className:"block text-xs font-medium text-[var(--dg-text-secondary)] mb-1",children:"所属分类"}),e.jsxs("select",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:345:15",className:L,value:b,onChange:s=>k(s.target.value),children:[e.jsx("option",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:346:17",value:"resource",children:"资源申请"}),e.jsx("option",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:347:17",value:"app",children:"应用申请"}),e.jsx("option",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:348:17",value:"permission",children:"权限审批"})]})]})]}),e.jsxs("div",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:353:11",children:[e.jsx("label",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:354:13",className:"block text-xs font-medium text-[var(--dg-text-secondary)] mb-1",children:"描述"}),e.jsx("input",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:355:13",className:L,value:m,onChange:s=>_(s.target.value),placeholder:"可选"})]}),e.jsxs("div",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:359:11",children:[e.jsxs("div",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:360:13",className:"flex items-center justify-between mb-2",children:[e.jsx("label",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:361:15",className:"text-xs font-medium text-[var(--dg-text-secondary)]",children:"流程步骤"}),e.jsx("div",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:362:15",className:"flex items-center gap-1",children:pe.map(s=>e.jsxs("button",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:364:19",onClick:()=>a(s.value),className:"flex items-center gap-1 px-2 py-1 text-[11px] font-medium bg-blue-500/10 text-blue-400 hover:bg-blue-500/20 rounded transition-colors",children:[e.jsx(F,{"code-path":"src/pages/ApprovalWorkflowPage.tsx:366:21",className:"w-3 h-3"}),s.label]},s.value))})]}),e.jsxs("div",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:372:13",className:"space-y-2",children:[l.map((s,t)=>{const r=B[s.step_type],x=oe[s.step_type]||J;return e.jsxs("div",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:377:19",className:"p-3 bg-[var(--dg-bg-primary)] rounded-lg border border-[var(--dg-border)]",children:[e.jsxs("div",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:378:21",className:"flex items-center gap-2 mb-2",children:[e.jsx("div",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:379:23",className:`w-7 h-7 rounded-md flex items-center justify-center flex-shrink-0 ${r.split(" ")[0]}`,children:e.jsx(x,{"code-path":"src/pages/ApprovalWorkflowPage.tsx:380:25",className:`w-3.5 h-3.5 ${r.split(" ")[1]}`})}),e.jsx("input",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:382:23",className:"flex-1 px-2 py-1 bg-[var(--dg-bg-tertiary)] border border-[var(--dg-border)] rounded text-sm focus:border-blue-400 focus:outline-none text-[var(--dg-text-primary)]",value:s.name,onChange:u=>n(t,{name:u.target.value}),placeholder:"步骤名称"}),e.jsx("span",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:387:23",className:`text-[10px] px-1.5 py-0.5 rounded ${r}`,children:O[s.step_type]}),e.jsxs("div",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:390:23",className:"flex items-center gap-0.5 ml-1",children:[e.jsx("button",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:391:25",onClick:()=>o(t,-1),disabled:t===0,className:"p-1 rounded hover:bg-[var(--dg-bg-hover)] text-[var(--dg-text-muted)] disabled:opacity-20 transition-colors",children:e.jsx(ae,{"code-path":"src/pages/ApprovalWorkflowPage.tsx:393:27",className:"w-3.5 h-3.5"})}),e.jsx("button",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:395:25",onClick:()=>o(t,1),disabled:t===l.length-1,className:"p-1 rounded hover:bg-[var(--dg-bg-hover)] text-[var(--dg-text-muted)] disabled:opacity-20 transition-colors",children:e.jsx(te,{"code-path":"src/pages/ApprovalWorkflowPage.tsx:397:27",className:"w-3.5 h-3.5"})}),e.jsx("button",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:399:25",onClick:()=>g(t),className:"p-1 rounded hover:bg-red-500/10 text-[var(--dg-text-muted)] hover:text-red-400 transition-colors",children:e.jsx(q,{"code-path":"src/pages/ApprovalWorkflowPage.tsx:401:27",className:"w-3.5 h-3.5"})})]})]}),s.step_type!=="submit"&&e.jsx("div",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:407:23",className:"pl-9 mt-2",children:e.jsx(ce,{"code-path":"src/pages/ApprovalWorkflowPage.tsx:408:25",users:A(s.step_type),selectedIds:s.approver_ids,label:s.step_type==="audit"?"审核人":"执行人",onToggle:u=>$(t,u),onToggleAll:()=>I(t),onClear:()=>n(t,{approver_ids:[]}),getUserName:Q})})]},t)}),l.length===0&&e.jsx("div",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:424:17",className:"text-center py-4 text-sm text-[var(--dg-text-muted)]",children:"请点击上方按钮添加流程步骤"})]})]})]}),e.jsxs("div",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:432:9",className:"flex items-center justify-end gap-3 px-5 py-4 border-t border-[var(--dg-border)]",children:[e.jsx("button",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:433:11",onClick:v,className:"px-4 py-2 text-sm text-[var(--dg-text-secondary)] hover:bg-[var(--dg-bg-hover)] rounded-lg transition-colors",children:"取消"}),e.jsxs(T,{"code-path":"src/pages/ApprovalWorkflowPage.tsx:436:11",onClick:M,disabled:d,children:[d&&e.jsx(R,{"code-path":"src/pages/ApprovalWorkflowPage.tsx:437:28",className:"w-4 h-4 animate-spin mr-1"}),y?"保存":"创建"]})]})]})]})}function ke(){const[p,i]=c.useState([]),[v,W]=c.useState([]),[y,f]=c.useState(!0),[N,m]=c.useState(null),[_,b]=c.useState(null),[k,l]=c.useState(void 0),h=c.useCallback(async()=>{try{f(!0),m(null);const a=await S.list(),o=(Array.isArray(a?.list)?a.list:Array.isArray(a)?a:[]).map(n=>({...n,steps:n.steps||[]}));i(o)}catch{m("获取审批流程失败")}finally{f(!1)}},[]),d=c.useCallback(async()=>{try{const a=await le(),o=(Array.isArray(a?.list)?a.list:Array.isArray(a)?a:[]).map(n=>({...n,role:n.role||(Array.isArray(n.roles)&&n.roles.length>0?n.roles[0].code:"")}));W(o)}catch{}},[]);c.useEffect(()=>{h(),d()},[h,d]);const w=c.useCallback(async a=>{try{await S.update(a.id,{is_active:!a.is_active}),i(g=>g.map(o=>o.id===a.id?{...o,is_active:!o.is_active}:o)),C.success(a.is_active?"已停用":"已启用")}catch{C.error("操作失败")}},[]),E=c.useCallback(async(a,g)=>{if(window.confirm(`确定删除审批流程「${g}」?删除后不可恢复。`))try{await S.delete(a),i(o=>o.filter(n=>n.id!==a)),C.success("已删除")}catch{C.error("删除失败")}},[]),P=c.useCallback(async a=>{try{await S.setDefault(a),i(g=>g.map(o=>({...o,is_default:o.id===a}))),C.success("已设为默认")}catch{C.error("操作失败")}},[]),U=c.useCallback(a=>{const g=v.find(o=>o.id===a);return g?g.display_name||g.username:`#${a}`},[v]);return y?e.jsx("div",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:526:7",className:"flex items-center justify-center h-64",children:e.jsx(R,{"code-path":"src/pages/ApprovalWorkflowPage.tsx:527:9",className:"w-8 h-8 animate-spin text-blue-400"})}):N?e.jsxs("div",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:534:7",className:"flex flex-col items-center justify-center h-64 text-[var(--dg-text-muted)]",children:[e.jsx("p",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:535:9",className:"text-sm",children:N}),e.jsx(T,{"code-path":"src/pages/ApprovalWorkflowPage.tsx:536:9",variant:"outline",onClick:h,className:"mt-3",children:"重试"})]}):e.jsxs("div",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:542:5",className:"space-y-5",children:[e.jsxs("div",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:544:7",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:545:9",children:[e.jsx("h1",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:546:11",className:"text-2xl font-semibold text-[var(--dg-text-primary)]",children:"审批流程配置"}),e.jsx("p",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:547:11",className:"text-sm text-[var(--dg-text-secondary)] mt-1",children:"为资源申请、应用申请、权限审批配置多级审批流程"})]}),e.jsxs(T,{"code-path":"src/pages/ApprovalWorkflowPage.tsx:551:9",onClick:()=>l(null),children:[e.jsx(F,{"code-path":"src/pages/ApprovalWorkflowPage.tsx:552:11",className:"w-4 h-4 mr-1.5"}),"新建流程"]})]}),p.length===0?e.jsxs("div",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:557:9",className:"dg-card p-12 text-center",children:[e.jsx(V,{"code-path":"src/pages/ApprovalWorkflowPage.tsx:558:11",className:"w-12 h-12 mx-auto mb-3 opacity-50 text-[var(--dg-text-muted)]"}),e.jsx("p",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:559:11",className:"text-sm text-[var(--dg-text-muted)] mb-4",children:"暂无审批流程"}),e.jsx(T,{"code-path":"src/pages/ApprovalWorkflowPage.tsx:560:11",variant:"outline",onClick:()=>l(null),children:"创建第一个流程"})]}):e.jsx(e.Fragment,{children:e.jsx("div",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:565:11",className:"space-y-4",children:p.map(a=>{const g=_===a.id;return e.jsx(K,{"code-path":"src/pages/ApprovalWorkflowPage.tsx:569:17",className:`dg-card overflow-hidden ${a.is_active?"":"opacity-50"}`,children:e.jsxs(Z,{"code-path":"src/pages/ApprovalWorkflowPage.tsx:570:19",className:"p-5",children:[e.jsxs("div",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:571:21",className:"flex items-start justify-between",children:[e.jsxs("div",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:572:23",className:"flex-1 min-w-0",children:[e.jsxs("div",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:573:25",className:"flex items-center gap-3 mb-2 flex-wrap",children:[e.jsx("h3",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:574:27",className:"text-lg font-semibold text-[var(--dg-text-primary)]",children:a.name}),a.is_default&&e.jsxs("span",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:575:45",className:"text-[10px] px-1.5 py-0.5 rounded bg-yellow-400/15 text-yellow-400 flex items-center gap-1",children:[e.jsx(D,{"code-path":"src/pages/ApprovalWorkflowPage.tsx:575:154",className:"w-3 h-3"}),"默认"]}),e.jsx("span",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:576:27",className:`text-[10px] px-1.5 py-0.5 rounded ${a.is_active?"bg-green-500/15 text-green-400":"bg-red-500/15 text-red-400"}`,children:a.is_active?"启用":"停用"}),e.jsx("span",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:579:27",className:"text-[10px] px-1.5 py-0.5 rounded bg-blue-500/15 text-blue-400",children:re[a.category]||a.category})]}),a.description&&e.jsx("p",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:583:44",className:"text-sm text-[var(--dg-text-secondary)] mb-1",children:a.description}),e.jsx("div",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:584:25",className:"flex items-center gap-1.5 mt-2 flex-wrap",children:a.steps?.map((o,n)=>e.jsxs("span",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:586:29",className:"flex items-center gap-1",children:[e.jsx("span",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:587:31",className:`text-[10px] px-1.5 py-0.5 rounded ${B[o.step_type]||"bg-gray-500/15 text-gray-400 border-gray-500/30"}`,children:O[o.step_type]||o.step_type}),n<(a.steps?.length||0)-1&&e.jsx("span",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:591:33",className:"text-[var(--dg-text-muted)] text-[10px]",children:"→"})]},n))})]}),e.jsxs("div",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:598:23",className:"flex items-center gap-1 flex-shrink-0 ml-4",children:[e.jsx("button",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:599:25",onClick:()=>b(g?null:a.id),className:"p-1.5 rounded hover:bg-[var(--dg-bg-hover)] text-[var(--dg-text-muted)] transition-colors",children:g?e.jsx(ee,{"code-path":"src/pages/ApprovalWorkflowPage.tsx:601:41",className:"w-4 h-4"}):e.jsx(z,{"code-path":"src/pages/ApprovalWorkflowPage.tsx:601:77",className:"w-4 h-4"})}),!a.is_default&&e.jsx("button",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:604:27",onClick:()=>P(a.id),className:"p-1.5 rounded hover:bg-yellow-500/10 text-[var(--dg-text-muted)] hover:text-yellow-400 transition-colors",title:"设为默认",children:e.jsx(D,{"code-path":"src/pages/ApprovalWorkflowPage.tsx:606:29",className:"w-4 h-4"})}),e.jsx("button",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:609:25",onClick:()=>w(a),className:`p-1.5 rounded transition-colors ${a.is_active?"hover:bg-red-500/10 text-green-400 hover:text-red-400":"hover:bg-green-500/10 text-red-400 hover:text-green-400"}`,title:a.is_active?"停用":"启用",children:e.jsx(G,{"code-path":"src/pages/ApprovalWorkflowPage.tsx:612:27",className:`w-4 h-4 ${a.is_active?"":"rotate-180"}`})}),e.jsx("button",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:614:25",onClick:()=>l(a),className:"p-1.5 rounded hover:bg-[var(--dg-bg-hover)] text-[var(--dg-text-muted)] hover:text-blue-400 transition-colors",title:"编辑",children:e.jsx(se,{"code-path":"src/pages/ApprovalWorkflowPage.tsx:616:27",className:"w-4 h-4"})}),e.jsx("button",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:618:25",onClick:()=>E(a.id,a.name),className:"p-1.5 rounded hover:bg-red-500/10 text-[var(--dg-text-muted)] hover:text-red-400 transition-colors",title:"删除",children:e.jsx(q,{"code-path":"src/pages/ApprovalWorkflowPage.tsx:620:27",className:"w-4 h-4"})})]})]}),g&&e.jsx("div",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:626:23",className:"mt-4 pt-4 border-t border-[var(--dg-border)] space-y-3",children:a.steps?.map((o,n)=>{const $=(()=>{try{const A=JSON.parse(o.approver_ids||"[]");return Array.isArray(A)?A:[]}catch{return[]}})();return e.jsxs("div",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:630:29",className:"flex items-start gap-3 p-3 bg-[var(--dg-bg-primary)] rounded-lg",children:[e.jsx("div",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:631:31",className:"w-6 h-6 rounded-full bg-[var(--dg-bg-tertiary)] flex items-center justify-center text-xs font-medium text-[var(--dg-text-secondary)] flex-shrink-0 mt-0.5",children:o.step_number}),e.jsxs("div",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:634:31",className:"flex-1 min-w-0",children:[e.jsxs("div",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:635:33",className:"flex items-center gap-2 mb-1",children:[e.jsx("span",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:636:35",className:"text-sm font-medium text-[var(--dg-text-primary)]",children:o.name}),e.jsx("span",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:637:35",className:`text-[10px] px-1.5 py-0.5 rounded ${B[o.step_type]||"bg-gray-500/15 text-gray-400 border-gray-500/30"}`,children:O[o.step_type]||o.step_type})]}),$.length>0&&e.jsx("div",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:642:35",className:"flex flex-wrap gap-1",children:$.map(A=>e.jsx("span",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:644:39",className:"inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-[11px] bg-blue-500/15 text-blue-400",children:U(A)},A))}),$.length===0&&o.step_type!=="submit"&&e.jsx("span",{"code-path":"src/pages/ApprovalWorkflowPage.tsx:651:35",className:"text-[11px] text-red-400",children:"未关联审批人"})]})]},n)})})]})},a.id)})})}),k!==void 0&&e.jsx(de,{"code-path":"src/pages/ApprovalWorkflowPage.tsx:668:9",workflow:k,users:v,onClose:()=>l(void 0),onSaved:()=>{l(void 0),h()}})]})}export{ke as default}; diff --git a/backend/static/assets/AreaChart-B2zlWfdX.js b/backend/static/assets/AreaChart-B2zlWfdX.js deleted file mode 100644 index 03e9a00..0000000 --- a/backend/static/assets/AreaChart-B2zlWfdX.js +++ /dev/null @@ -1 +0,0 @@ -import{b as R,L as W,m as T,i as C,c as F,A as ie,d as B,e as G,h as oe,j as q,k as se,l as le,u as ue,n as K,G as ce,o as J,p as Q,D as fe,g as pe,X as he,Y as de,f as me}from"./generateCategoricalChart-6v9BPbG2.js";import{_ as p,ab as ee,r as ve}from"./index-DfyorCky.js";var ye=["layout","type","stroke","connectNulls","isRange","ref"],be=["key"],te;function M(e){"@babel/helpers - typeof";return M=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},M(e)}function ae(e,t){if(e==null)return{};var r=Ae(e,t),a,n;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}function Ae(e,t){if(e==null)return{};var r={};for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){if(t.indexOf(a)>=0)continue;r[a]=e[a]}return r}function D(){return D=Object.assign?Object.assign.bind():function(e){for(var t=1;t0||!q(f,o)||!q(c,s))?this.renderAreaWithAnimation(a,n):this.renderAreaStatically(o,s,a,n)}},{key:"render",value:function(){var a,n=this.props,i=n.hide,o=n.dot,s=n.points,u=n.className,l=n.top,f=n.left,c=n.xAxis,h=n.yAxis,A=n.width,g=n.height,x=n.isAnimationActive,v=n.id;if(i||!s||!s.length)return null;var O=this.state.isAnimationFinished,y=s.length===1,_=ee("recharts-area",u),d=c&&c.allowDataOverflow,m=h&&h.allowDataOverflow,b=d||m,w=G(v)?this.id:v,P=(a=R(o,!1))!==null&&a!==void 0?a:{r:3,strokeWidth:2},N=P.r,k=N===void 0?3:N,j=P.strokeWidth,I=j===void 0?2:j,V=se(o)?o:{},Y=V.clipDot,H=Y===void 0?!0:Y,z=k*2+I;return p.createElement(W,{className:_},d||m?p.createElement("defs",null,p.createElement("clipPath",{id:"clipPath-".concat(w)},p.createElement("rect",{x:d?f:f-A/2,y:m?l:l-g/2,width:d?A:A*2,height:m?g:g*2})),!H&&p.createElement("clipPath",{id:"clipPath-dots-".concat(w)},p.createElement("rect",{x:f-z/2,y:l-z/2,width:A+z,height:g+z}))):null,y?null:this.renderArea(b,w),(o||y)&&this.renderDots(b,H,w),(!x||O)&&le.renderCallByParent(this.props,s))}}],[{key:"getDerivedStateFromProps",value:function(a,n){return a.animationId!==n.prevAnimationId?{prevAnimationId:a.animationId,curPoints:a.points,curBaseLine:a.baseLine,prevPoints:n.curPoints,prevBaseLine:n.curBaseLine}:a.points!==n.curPoints||a.baseLine!==n.curBaseLine?{curPoints:a.points,curBaseLine:a.baseLine}:null}}])})(ve.PureComponent);te=L;E(L,"displayName","Area");E(L,"defaultProps",{stroke:"#3182bd",fill:"#3182bd",fillOpacity:.6,xAxisId:0,yAxisId:0,legendType:"line",connectNulls:!1,points:[],dot:!1,activeDot:!0,hide:!1,isAnimationActive:!ce.isSsr,animationBegin:0,animationDuration:1500,animationEasing:"ease"});E(L,"getBaseValue",function(e,t,r,a){var n=e.layout,i=e.baseValue,o=t.props.baseValue,s=o??i;if(C(s)&&typeof s=="number")return s;var u=n==="horizontal"?a:r,l=u.scale.domain();if(u.type==="number"){var f=Math.max(l[0],l[1]),c=Math.min(l[0],l[1]);return s==="dataMin"?c:s==="dataMax"||f<0?f:Math.max(Math.min(l[0],l[1]),0)}return s==="dataMin"?l[0]:s==="dataMax"?l[1]:l[0]});E(L,"getComposedData",function(e){var t=e.props,r=e.item,a=e.xAxis,n=e.yAxis,i=e.xAxisTicks,o=e.yAxisTicks,s=e.bandSize,u=e.dataKey,l=e.stackedData,f=e.dataStartIndex,c=e.displayedData,h=e.offset,A=t.layout,g=l&&l.length,x=te.getBaseValue(t,r,a,n),v=A==="horizontal",O=!1,y=c.map(function(d,m){var b;g?b=l[f+m]:(b=J(d,u),Array.isArray(b)?O=!0:b=[x,b]);var w=b[1]==null||g&&J(d,u)==null;return v?{x:Q({axis:a,ticks:i,bandSize:s,entry:d,index:m}),y:w?null:n.scale(b[1]),value:b,payload:d}:{x:w?null:a.scale(b[1]),y:Q({axis:n,ticks:o,bandSize:s,entry:d,index:m}),value:b,payload:d}}),_;return g||O?_=y.map(function(d){var m=Array.isArray(d.value)?d.value[0]:null;return v?{x:d.x,y:m!=null&&d.y!=null?n.scale(m):null}:{x:m!=null?a.scale(m):null,y:d.y}}):_=v?n.scale(x):a.scale(x),S({points:y,baseLine:_,layout:A,isRange:O},h)});E(L,"renderDotItem",function(e,t){var r;if(p.isValidElement(e))r=p.cloneElement(e,t);else if(K(e))r=e(t);else{var a=ee("recharts-area-dot",typeof e!="boolean"?e.className:""),n=t.key,i=ae(t,be);r=p.createElement(fe,D({},i,{key:n,className:a}))}return r});var ke=pe({chartName:"AreaChart",GraphicalChild:L,axisComponents:[{axisType:"xAxis",AxisComp:he},{axisType:"yAxis",AxisComp:de}],formatAxisMap:me});export{ke as A,L as a}; diff --git a/backend/static/assets/AreaChart-CrvX3B0s.js b/backend/static/assets/AreaChart-CrvX3B0s.js new file mode 100644 index 0000000..61206aa --- /dev/null +++ b/backend/static/assets/AreaChart-CrvX3B0s.js @@ -0,0 +1 @@ +import{b as R,L as W,m as T,i as C,c as F,A as ie,d as B,e as G,h as oe,j as q,k as se,l as le,u as ue,n as K,G as ce,o as J,p as Q,D as fe,g as pe,X as he,Y as de,f as me}from"./generateCategoricalChart-ZqCvxO-S.js";import{a3 as p,a7 as ee,r as ve}from"./index-Dmami9WE.js";var ye=["layout","type","stroke","connectNulls","isRange","ref"],be=["key"],te;function M(e){"@babel/helpers - typeof";return M=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},M(e)}function ae(e,t){if(e==null)return{};var r=Ae(e,t),a,n;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}function Ae(e,t){if(e==null)return{};var r={};for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){if(t.indexOf(a)>=0)continue;r[a]=e[a]}return r}function D(){return D=Object.assign?Object.assign.bind():function(e){for(var t=1;t0||!q(f,o)||!q(c,s))?this.renderAreaWithAnimation(a,n):this.renderAreaStatically(o,s,a,n)}},{key:"render",value:function(){var a,n=this.props,i=n.hide,o=n.dot,s=n.points,u=n.className,l=n.top,f=n.left,c=n.xAxis,h=n.yAxis,A=n.width,g=n.height,x=n.isAnimationActive,v=n.id;if(i||!s||!s.length)return null;var O=this.state.isAnimationFinished,y=s.length===1,_=ee("recharts-area",u),d=c&&c.allowDataOverflow,m=h&&h.allowDataOverflow,b=d||m,w=G(v)?this.id:v,P=(a=R(o,!1))!==null&&a!==void 0?a:{r:3,strokeWidth:2},N=P.r,k=N===void 0?3:N,j=P.strokeWidth,I=j===void 0?2:j,V=se(o)?o:{},Y=V.clipDot,H=Y===void 0?!0:Y,z=k*2+I;return p.createElement(W,{className:_},d||m?p.createElement("defs",null,p.createElement("clipPath",{id:"clipPath-".concat(w)},p.createElement("rect",{x:d?f:f-A/2,y:m?l:l-g/2,width:d?A:A*2,height:m?g:g*2})),!H&&p.createElement("clipPath",{id:"clipPath-dots-".concat(w)},p.createElement("rect",{x:f-z/2,y:l-z/2,width:A+z,height:g+z}))):null,y?null:this.renderArea(b,w),(o||y)&&this.renderDots(b,H,w),(!x||O)&&le.renderCallByParent(this.props,s))}}],[{key:"getDerivedStateFromProps",value:function(a,n){return a.animationId!==n.prevAnimationId?{prevAnimationId:a.animationId,curPoints:a.points,curBaseLine:a.baseLine,prevPoints:n.curPoints,prevBaseLine:n.curBaseLine}:a.points!==n.curPoints||a.baseLine!==n.curBaseLine?{curPoints:a.points,curBaseLine:a.baseLine}:null}}])})(ve.PureComponent);te=L;E(L,"displayName","Area");E(L,"defaultProps",{stroke:"#3182bd",fill:"#3182bd",fillOpacity:.6,xAxisId:0,yAxisId:0,legendType:"line",connectNulls:!1,points:[],dot:!1,activeDot:!0,hide:!1,isAnimationActive:!ce.isSsr,animationBegin:0,animationDuration:1500,animationEasing:"ease"});E(L,"getBaseValue",function(e,t,r,a){var n=e.layout,i=e.baseValue,o=t.props.baseValue,s=o??i;if(C(s)&&typeof s=="number")return s;var u=n==="horizontal"?a:r,l=u.scale.domain();if(u.type==="number"){var f=Math.max(l[0],l[1]),c=Math.min(l[0],l[1]);return s==="dataMin"?c:s==="dataMax"||f<0?f:Math.max(Math.min(l[0],l[1]),0)}return s==="dataMin"?l[0]:s==="dataMax"?l[1]:l[0]});E(L,"getComposedData",function(e){var t=e.props,r=e.item,a=e.xAxis,n=e.yAxis,i=e.xAxisTicks,o=e.yAxisTicks,s=e.bandSize,u=e.dataKey,l=e.stackedData,f=e.dataStartIndex,c=e.displayedData,h=e.offset,A=t.layout,g=l&&l.length,x=te.getBaseValue(t,r,a,n),v=A==="horizontal",O=!1,y=c.map(function(d,m){var b;g?b=l[f+m]:(b=J(d,u),Array.isArray(b)?O=!0:b=[x,b]);var w=b[1]==null||g&&J(d,u)==null;return v?{x:Q({axis:a,ticks:i,bandSize:s,entry:d,index:m}),y:w?null:n.scale(b[1]),value:b,payload:d}:{x:w?null:a.scale(b[1]),y:Q({axis:n,ticks:o,bandSize:s,entry:d,index:m}),value:b,payload:d}}),_;return g||O?_=y.map(function(d){var m=Array.isArray(d.value)?d.value[0]:null;return v?{x:d.x,y:m!=null&&d.y!=null?n.scale(m):null}:{x:m!=null?a.scale(m):null,y:d.y}}):_=v?n.scale(x):a.scale(x),S({points:y,baseLine:_,layout:A,isRange:O},h)});E(L,"renderDotItem",function(e,t){var r;if(p.isValidElement(e))r=p.cloneElement(e,t);else if(K(e))r=e(t);else{var a=ee("recharts-area-dot",typeof e!="boolean"?e.className:""),n=t.key,i=ae(t,be);r=p.createElement(fe,D({},i,{key:n,className:a}))}return r});var ke=pe({chartName:"AreaChart",GraphicalChild:L,axisComponents:[{axisType:"xAxis",AxisComp:he},{axisType:"yAxis",AxisComp:de}],formatAxisMap:me});export{ke as A,L as a}; diff --git a/backend/static/assets/AuditPage-BdPy-cgE.js b/backend/static/assets/AuditPage-BdPy-cgE.js deleted file mode 100644 index ac34dbc..0000000 --- a/backend/static/assets/AuditPage-BdPy-cgE.js +++ /dev/null @@ -1,3 +0,0 @@ -import{g as Le,r as a,j as e,D as ie,b as le,c as oe,d as ne,e as de,L as pe,W as we,aq as Q,a8 as Oe,q as Se,x as Ce,a as xe,A as he,S as I,X as _e,I as E,B as y,U as me,a5 as ue,aQ as ke,O as De,z as Me}from"./index-DfyorCky.js";import{C as P,a as K}from"./card-C55cvSHg.js";import{B as w}from"./badge-xNW8x0G1.js";import{T as H,a as W,b as M,c as i,d as U,e as l}from"./table-5sHV4Akp.js";import{t as F,s as Re,a as X,l as ze}from"./system-BgtMMm0X.js";import{x as ge,a as be}from"./xterm-DSqgeKvr.js";import{R as q}from"./refresh-cw-DUB_tAG-.js";import{P as Be}from"./play-cdPayOtJ.js";import{D as Te}from"./download-DoZfYs2h.js";const Ie=[["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"M2.586 16.726A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2h6.624a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586z",key:"2d38gg"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]],$e=Le("octagon-x",Ie);function Ee({open:s,onOpenChange:o,sessionId:d}){const n=a.useRef(null),p=a.useRef(null),T=a.useRef(null),[h,L]=a.useState(!1),[b,O]=a.useState(""),[j,v]=a.useState(0);return a.useEffect(()=>{if(!s||!d)return;const r=new ge.Terminal({cursorBlink:!1,fontSize:13,fontFamily:'Menlo, Monaco, "Courier New", monospace',disableStdin:!0,cols:80,rows:24,theme:{background:"#0a0e14",foreground:"#d6d6d6",cursor:"#0a0e14",selectionBackground:"rgba(255,255,255,0.2)"}}),m=new be.FitAddon;r.loadAddon(m),p.current=r;let f=!1;return L(!0),O(""),v(0),F.getRecord(d).then(u=>{if(f)return;const C=typeof u=="string"?u:u?.data||u?.record_data||"";if(!C||C.trim()===""){O("No recording data available for this session"),L(!1);return}if(n.current){r.open(n.current);try{m.fit()}catch{}}const R=C.split(` -`).filter(x=>x.trim()),S=[];for(const x of R)try{const g=JSON.parse(x);Array.isArray(g)&&g.length>=3&&S.push({time:g[0],eventType:g[1],data:g[2]})}catch{}if(S.length===0){r.write(C),v(100),L(!1);return}L(!1);const $=S[S.length-1].time;let N=0,z=0;const _=()=>{if(f||N>=S.length){v(100);return}const x=S[N],g=(x.time-z)*1e3;z=x.time,N++;const B=Math.min(g,2e3);T.current=setTimeout(()=>{f||(r.write(x.data),v(Math.round(x.time/$*100)),_())},B)};_()}).catch(u=>{f||(console.error("[Replay] Load failed:",u),O("Failed to load recording data"),L(!1))}),()=>{f=!0,T.current&&clearTimeout(T.current);try{r.dispose()}catch{}p.current=null}},[s,d]),e.jsx(ie,{"code-path":"src/components/system/ReplayDialog.tsx:153:5",open:s,onOpenChange:o,children:e.jsxs(le,{"code-path":"src/components/system/ReplayDialog.tsx:154:7",showOverlay:!1,className:"bg-slate-900 border-slate-800 p-0 gap-0",style:{maxWidth:"900px",width:"90vw"},children:[e.jsxs(oe,{"code-path":"src/components/system/ReplayDialog.tsx:155:9",className:"px-4 py-3 border-b border-slate-800",children:[e.jsxs(ne,{"code-path":"src/components/system/ReplayDialog.tsx:156:11",className:"text-slate-100 text-base flex items-center gap-2",children:["Terminal Replay #",d??"",j>0&&j<100&&e.jsxs("span",{"code-path":"src/components/system/ReplayDialog.tsx:159:15",className:"text-xs text-slate-500 font-normal ml-2",children:[j,"%"]})]}),e.jsx(de,{"code-path":"src/components/system/ReplayDialog.tsx:162:11",className:"text-slate-500 sr-only",children:"Replay recorded terminal output"})]}),e.jsxs("div",{"code-path":"src/components/system/ReplayDialog.tsx:164:9",className:"relative bg-[#0a0e14]",style:{height:"460px"},children:[h&&e.jsx("div",{"code-path":"src/components/system/ReplayDialog.tsx:166:13",className:"absolute inset-0 z-10 flex items-center justify-center bg-black/40",children:e.jsx(pe,{"code-path":"src/components/system/ReplayDialog.tsx:167:15",className:"h-6 w-6 animate-spin text-blue-400"})}),b&&e.jsx("div",{"code-path":"src/components/system/ReplayDialog.tsx:171:13",className:"absolute inset-0 z-10 flex items-center justify-center bg-black/40",children:e.jsx("p",{"code-path":"src/components/system/ReplayDialog.tsx:172:15",className:"text-red-400 text-sm",children:b})}),j>0&&j<100&&e.jsx("div",{"code-path":"src/components/system/ReplayDialog.tsx:176:13",className:"absolute bottom-0 left-0 right-0 h-0.5 bg-slate-800 z-10",children:e.jsx("div",{"code-path":"src/components/system/ReplayDialog.tsx:177:15",className:"h-full bg-blue-500 transition-all duration-300",style:{width:`${j}%`}})}),e.jsx("div",{"code-path":"src/components/system/ReplayDialog.tsx:183:11",ref:n,className:"absolute inset-0 p-1"})]})]})})}function Fe({open:s,onOpenChange:o,sessionId:d,sessionInfo:n}){const p=a.useRef(null),T=a.useRef(null),h=a.useRef(null),[L,b]=a.useState(!1),[O,j]=a.useState(""),[v,r]=a.useState(n||null);a.useEffect(()=>{if(!s||!d)return;const f=p.current;if(!f)return;const u=new ge.Terminal({cursorBlink:!1,fontSize:13,fontFamily:'Menlo, Monaco, "Courier New", monospace',disableStdin:!0,theme:{background:"#0a0e14",foreground:"#d6d6d6",cursor:"#d6d6d6",selectionBackground:"#264f78",black:"#1a1a2e",red:"#ff6b6b",green:"#69db7c",yellow:"#ffd43b",blue:"#4dabf7",magenta:"#da77f2",cyan:"#63e6be",white:"#d6d6d6",brightBlack:"#4a4a4a",brightRed:"#ff8787",brightGreen:"#8ce99a",brightYellow:"#ffe066",brightBlue:"#74c0fc",brightMagenta:"#e599f7",brightCyan:"#7ae5d5",brightWhite:"#f8f9fa"}}),C=new be.FitAddon;u.loadAddon(C),u.open(f),C.fit(),T.current=u;let R=we.getState().token;if(!R)try{R=JSON.parse(localStorage.getItem("user-storage")||"")?.state?.token||""}catch{}const $=`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}/ws/audit/${d}?token=${encodeURIComponent(R||"")}`;console.debug("[LiveMonitor] Connecting to:",$.replace(/token=[^&]+/,"token=***"));const N=new WebSocket($);h.current=N;let z=!1;N.onopen=()=>{console.debug("[LiveMonitor] WS connected for session:",d),z=!0,b(!0),j(""),u.writeln("\x1B[36m[审计监控] 已连接到会话...\x1B[0m")},N.onmessage=x=>{try{const g=JSON.parse(x.data);switch(g.type){case"session_info":r(g.payload),u.writeln(`\x1B[36m用户: ${g.payload.username} 服务器: ${g.payload.server_name}\x1B[0m`);break;case"history":g.data&&u.write(g.data);break;case"output":g.data&&u.write(g.data);break}}catch{}},N.onerror=x=>{console.debug("[LiveMonitor] WS error:",x),j("WebSocket 连接失败")},N.onclose=x=>{console.debug("[LiveMonitor] WS closed code:",x.code,"reason:",x.reason),z||j(`连接失败 (code=${x.code}): ${x.reason||"认证失败或网络问题"}`),b(!1),u.writeln(`\r -\x1B[33m[审计监控] 连接已断开\x1B[0m`)};const _=setTimeout(()=>{z||(j("连接超时 — 请确认已登录且有活跃会话"),N.close())},5e3);return()=>{clearTimeout(_),N.close(),u.dispose(),T.current=null,h.current=null,b(!1)}},[s,d]);const m=f=>f?new Date(f).toLocaleString():"--";return e.jsx(ie,{"code-path":"src/components/system/LiveMonitorDialog.tsx:169:5",open:s,onOpenChange:o,children:e.jsxs(le,{"code-path":"src/components/system/LiveMonitorDialog.tsx:170:7",showOverlay:!1,className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] max-w-[95vw] max-h-[90vh] w-[1200px]",children:[e.jsxs(oe,{"code-path":"src/components/system/LiveMonitorDialog.tsx:171:9",children:[e.jsxs(ne,{"code-path":"src/components/system/LiveMonitorDialog.tsx:172:11",className:"text-[var(--dg-text-primary)] flex items-center gap-2",children:[e.jsx(Q,{"code-path":"src/components/system/LiveMonitorDialog.tsx:173:13",className:"h-5 w-5 text-emerald-400"}),"终端实时监控",L&&e.jsx(w,{"code-path":"src/components/system/LiveMonitorDialog.tsx:176:15",variant:"outline",className:"border-emerald-500/30 text-emerald-400 bg-emerald-500/10 ml-2 text-xs",children:"● 在线"}),!L&&!O&&e.jsxs(w,{"code-path":"src/components/system/LiveMonitorDialog.tsx:181:15",variant:"outline",className:"border-yellow-500/30 text-yellow-400 bg-yellow-500/10 ml-2 text-xs",children:[e.jsx(pe,{"code-path":"src/components/system/LiveMonitorDialog.tsx:182:17",className:"h-3 w-3 animate-spin mr-1"}),"连接中"]}),O&&e.jsx(w,{"code-path":"src/components/system/LiveMonitorDialog.tsx:187:15",variant:"outline",className:"border-red-500/30 text-red-400 bg-red-500/10 ml-2 text-xs",children:"连接失败"})]}),e.jsx(de,{"code-path":"src/components/system/LiveMonitorDialog.tsx:192:11",className:"text-[var(--dg-text-secondary)]",children:v&&e.jsxs("div",{"code-path":"src/components/system/LiveMonitorDialog.tsx:194:15",className:"flex items-center gap-4 text-xs mt-1 flex-wrap",children:[e.jsxs("span",{"code-path":"src/components/system/LiveMonitorDialog.tsx:195:17",className:"flex items-center gap-1",children:[e.jsx(Oe,{"code-path":"src/components/system/LiveMonitorDialog.tsx:196:19",className:"h-3 w-3"}),v.username]}),e.jsxs("span",{"code-path":"src/components/system/LiveMonitorDialog.tsx:199:17",className:"flex items-center gap-1",children:[e.jsx(Se,{"code-path":"src/components/system/LiveMonitorDialog.tsx:200:19",className:"h-3 w-3"}),v.server_name," (",v.server_ip,")"]}),e.jsxs("span",{"code-path":"src/components/system/LiveMonitorDialog.tsx:203:17",className:"flex items-center gap-1",children:[e.jsx(Ce,{"code-path":"src/components/system/LiveMonitorDialog.tsx:204:19",className:"h-3 w-3"}),m(v.start_time)]})]})})]}),e.jsx("div",{"code-path":"src/components/system/LiveMonitorDialog.tsx:212:9",ref:p,className:"w-full rounded-md overflow-hidden border border-[var(--dg-border)]",style:{height:"55vh"}})]})})}function je(s){if(!s||s<0)return"--";if(s<60)return`${s}秒`;const o=Math.floor(s/60),d=s%60;if(o<60)return`${o}分${d>0?`${d}秒`:""}`;const n=Math.floor(o/60),p=o%60;return`${n}时${p>0?`${p}分`:""}`}function Pe(s){return s?s<1024?`${s} B`:s<1024*1024?`${(s/1024).toFixed(1)} KB`:`${(s/1024/1024).toFixed(2)} MB`:"0 B"}function fe(s){return s==="active"?e.jsxs(w,{"code-path":"src/pages/TerminalAuditTab.tsx:84:7",variant:"outline",className:"border-emerald-500/30 text-emerald-400 bg-emerald-500/10",children:[e.jsx("span",{"code-path":"src/pages/TerminalAuditTab.tsx:85:9",className:"w-1.5 h-1.5 rounded-full bg-emerald-400 mr-1.5 inline-block animate-pulse"}),"活动中"]}):s==="failed"?e.jsx(w,{"code-path":"src/pages/TerminalAuditTab.tsx:92:7",variant:"outline",className:"border-red-500/30 text-red-400 bg-red-500/10",children:"失败"}):e.jsx(w,{"code-path":"src/pages/TerminalAuditTab.tsx:98:5",variant:"outline",className:"border-slate-500/30 text-slate-400 bg-slate-500/10",children:"已关闭"})}function Ke(s){const[o,d]=a.useState(0);return a.useEffect(()=>{if(!s)return;const n=new Date(s).getTime(),p=()=>d(Math.floor((Date.now()-n)/1e3));p();const T=setInterval(p,1e3);return()=>clearInterval(T)},[s]),o}const He=[{id:"active",name:"在线会话",icon:he},{id:"history",name:"历史会话",icon:Q},{id:"commands",name:"会话命令",icon:I}];function ce(){const s=xe(),[o,d]=a.useState("active"),[n,p]=a.useState([]),[T,h]=a.useState(!0),[L,b]=a.useState(""),[O,j]=a.useState([]),[v,r]=a.useState(!0),[m,f]=a.useState(""),[u,C]=a.useState(null),[R,S]=a.useState(!1),[$,N]=a.useState([]),[z,_]=a.useState(!0),[x,g]=a.useState(""),[B,V]=a.useState(""),[Y,c]=a.useState(!1),[k,Z]=a.useState(null),J=a.useCallback(async()=>{h(!0);try{const t=await F.list({page:1,page_size:100,status:"active"});p(t?.list??[])}catch{p([])}finally{h(!1)}},[]);a.useEffect(()=>{J()},[J]);const te=n.filter(t=>{const A=L.toLowerCase();return!A||(t.username||"").toLowerCase().includes(A)||(t.server_name||"").toLowerCase().includes(A)||(t.server_ip||"").toLowerCase().includes(A)}),Ae=async(t,A)=>{if(await s({title:"阻断会话",description:`确认强制断开用户「${A}」的当前会话吗?`,confirmText:"阻断",variant:"destructive"}))try{await F.kill(t),await J()}catch{}},ve=t=>{Z(t),c(!0)},ee=a.useCallback(async()=>{r(!0);try{const t=await F.list({page:1,page_size:100,status:"closed"});j(t?.list??[])}catch{j([])}finally{r(!1)}},[]);a.useEffect(()=>{ee()},[ee]);const ae=O.filter(t=>{const A=m.toLowerCase();return!A||(t.username||"").toLowerCase().includes(A)||(t.server_name||"").toLowerCase().includes(A)||(t.server_ip||"").toLowerCase().includes(A)}),Ne=t=>{C(t),S(!0)},ye=async t=>{try{await F.download(t)}catch{}},se=a.useCallback(async()=>{_(!0);try{const t={page:1,page_size:200};B&&(t.session_id=Number(B));const A=await Re.list(t);N(A?.list??[])}catch{N([])}finally{_(!1)}},[B]);a.useEffect(()=>{se()},[se]);const re=$.filter(t=>{const A=x.toLowerCase();return!A||(t.username||"").toLowerCase().includes(A)||(t.command||"").toLowerCase().includes(A)});return e.jsxs("div",{"code-path":"src/pages/TerminalAuditTab.tsx:278:5",className:"space-y-4",children:[e.jsx("div",{"code-path":"src/pages/TerminalAuditTab.tsx:280:7",className:"flex gap-1 bg-[var(--dg-bg-secondary)] p-1 rounded-lg border border-[var(--dg-border)] w-fit",children:He.map(t=>e.jsxs("button",{"code-path":"src/pages/TerminalAuditTab.tsx:282:11",onClick:()=>d(t.id),className:_e("flex items-center gap-2 px-4 py-2 rounded-md text-sm font-medium transition-all",o===t.id?"bg-[var(--dg-bg-tertiary)] text-[var(--dg-text-primary)] shadow-sm":"text-[var(--dg-text-muted)] hover:text-[var(--dg-text-secondary)]"),children:[e.jsx(t.icon,{"code-path":"src/pages/TerminalAuditTab.tsx:292:13",className:"h-4 w-4"}),t.name]},t.id))}),o==="active"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{"code-path":"src/pages/TerminalAuditTab.tsx:301:11",className:"flex items-center gap-3 flex-wrap",children:[e.jsxs("div",{"code-path":"src/pages/TerminalAuditTab.tsx:302:13",className:"relative w-64",children:[e.jsx(I,{"code-path":"src/pages/TerminalAuditTab.tsx:303:15",className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-slate-500"}),e.jsx(E,{"code-path":"src/pages/TerminalAuditTab.tsx:304:15",placeholder:"搜索用户/服务器...",value:L,onChange:t=>b(t.target.value),className:"pl-9 h-9 bg-slate-800/50 border-slate-700 text-slate-200 placeholder:text-slate-500"})]}),e.jsxs(y,{"code-path":"src/pages/TerminalAuditTab.tsx:311:13",variant:"outline",className:"border-slate-700 text-slate-300 hover:text-slate-100 hover:bg-slate-800",onClick:J,children:[e.jsx(q,{"code-path":"src/pages/TerminalAuditTab.tsx:316:15",className:"h-4 w-4 mr-2"}),"刷新"]})]}),e.jsx(P,{"code-path":"src/pages/TerminalAuditTab.tsx:321:11",className:"bg-slate-900 border-slate-800",children:e.jsx(K,{"code-path":"src/pages/TerminalAuditTab.tsx:322:13",className:"p-0",children:e.jsx("div",{"code-path":"src/pages/TerminalAuditTab.tsx:323:15",className:"border-t border-slate-800",children:T?e.jsx("div",{"code-path":"src/pages/TerminalAuditTab.tsx:325:19",className:"flex items-center justify-center py-16",children:e.jsx("div",{"code-path":"src/pages/TerminalAuditTab.tsx:326:21",className:"w-8 h-8 border-2 border-blue-500 border-t-transparent rounded-full animate-spin"})}):te.length===0?e.jsxs("div",{"code-path":"src/pages/TerminalAuditTab.tsx:329:19",className:"flex flex-col items-center justify-center py-16 text-slate-500",children:[e.jsx(he,{"code-path":"src/pages/TerminalAuditTab.tsx:330:21",className:"h-8 w-8 mb-3 opacity-40"}),e.jsx("p",{"code-path":"src/pages/TerminalAuditTab.tsx:331:21",className:"text-sm",children:"暂无在线会话"})]}):e.jsxs(H,{"code-path":"src/pages/TerminalAuditTab.tsx:334:19",children:[e.jsx(W,{"code-path":"src/pages/TerminalAuditTab.tsx:335:21",children:e.jsxs(M,{"code-path":"src/pages/TerminalAuditTab.tsx:336:23",className:"border-slate-800 hover:bg-transparent",children:[e.jsx(i,{"code-path":"src/pages/TerminalAuditTab.tsx:337:25",className:"text-slate-400",children:"ID"}),e.jsx(i,{"code-path":"src/pages/TerminalAuditTab.tsx:338:25",className:"text-slate-400",children:"用户"}),e.jsx(i,{"code-path":"src/pages/TerminalAuditTab.tsx:339:25",className:"text-slate-400",children:"目标服务器"}),e.jsx(i,{"code-path":"src/pages/TerminalAuditTab.tsx:340:25",className:"text-slate-400",children:"端口"}),e.jsx(i,{"code-path":"src/pages/TerminalAuditTab.tsx:341:25",className:"text-slate-400",children:"开始时间"}),e.jsx(i,{"code-path":"src/pages/TerminalAuditTab.tsx:342:25",className:"text-slate-400",children:"时长"}),e.jsx(i,{"code-path":"src/pages/TerminalAuditTab.tsx:343:25",className:"text-slate-400",children:"状态"}),e.jsx(i,{"code-path":"src/pages/TerminalAuditTab.tsx:344:25",className:"text-slate-400 text-right",children:"操作"})]})}),e.jsx(U,{"code-path":"src/pages/TerminalAuditTab.tsx:347:21",children:te.map(t=>e.jsx(We,{"code-path":"src/pages/TerminalAuditTab.tsx:349:25",session:t,onKill:Ae,onMonitor:ve},t.id))})]})})})})]}),o==="history"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{"code-path":"src/pages/TerminalAuditTab.tsx:368:11",className:"flex items-center gap-3 flex-wrap",children:[e.jsxs("div",{"code-path":"src/pages/TerminalAuditTab.tsx:369:13",className:"relative w-64",children:[e.jsx(I,{"code-path":"src/pages/TerminalAuditTab.tsx:370:15",className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-slate-500"}),e.jsx(E,{"code-path":"src/pages/TerminalAuditTab.tsx:371:15",placeholder:"搜索用户/服务器/IP...",value:m,onChange:t=>f(t.target.value),className:"pl-9 h-9 bg-slate-800/50 border-slate-700 text-slate-200 placeholder:text-slate-500"})]}),e.jsxs(y,{"code-path":"src/pages/TerminalAuditTab.tsx:378:13",variant:"outline",className:"border-slate-700 text-slate-300 hover:text-slate-100 hover:bg-slate-800",onClick:ee,children:[e.jsx(q,{"code-path":"src/pages/TerminalAuditTab.tsx:383:15",className:"h-4 w-4 mr-2"}),"刷新"]})]}),e.jsx(P,{"code-path":"src/pages/TerminalAuditTab.tsx:388:11",className:"bg-slate-900 border-slate-800",children:e.jsx(K,{"code-path":"src/pages/TerminalAuditTab.tsx:389:13",className:"p-0",children:e.jsx("div",{"code-path":"src/pages/TerminalAuditTab.tsx:390:15",className:"border-t border-slate-800",children:v?e.jsx("div",{"code-path":"src/pages/TerminalAuditTab.tsx:392:19",className:"flex items-center justify-center py-16",children:e.jsx("div",{"code-path":"src/pages/TerminalAuditTab.tsx:393:21",className:"w-8 h-8 border-2 border-blue-500 border-t-transparent rounded-full animate-spin"})}):ae.length===0?e.jsxs("div",{"code-path":"src/pages/TerminalAuditTab.tsx:396:19",className:"flex flex-col items-center justify-center py-16 text-slate-500",children:[e.jsx(Q,{"code-path":"src/pages/TerminalAuditTab.tsx:397:21",className:"h-8 w-8 mb-3 opacity-40"}),e.jsx("p",{"code-path":"src/pages/TerminalAuditTab.tsx:398:21",className:"text-sm",children:"暂无历史会话"})]}):e.jsxs(H,{"code-path":"src/pages/TerminalAuditTab.tsx:401:19",children:[e.jsx(W,{"code-path":"src/pages/TerminalAuditTab.tsx:402:21",children:e.jsxs(M,{"code-path":"src/pages/TerminalAuditTab.tsx:403:23",className:"border-slate-800 hover:bg-transparent",children:[e.jsx(i,{"code-path":"src/pages/TerminalAuditTab.tsx:404:25",className:"text-slate-400",children:"ID"}),e.jsx(i,{"code-path":"src/pages/TerminalAuditTab.tsx:405:25",className:"text-slate-400",children:"用户"}),e.jsx(i,{"code-path":"src/pages/TerminalAuditTab.tsx:406:25",className:"text-slate-400",children:"目标服务器"}),e.jsx(i,{"code-path":"src/pages/TerminalAuditTab.tsx:407:25",className:"text-slate-400",children:"端口"}),e.jsx(i,{"code-path":"src/pages/TerminalAuditTab.tsx:408:25",className:"text-slate-400",children:"开始时间"}),e.jsx(i,{"code-path":"src/pages/TerminalAuditTab.tsx:409:25",className:"text-slate-400",children:"结束时间"}),e.jsx(i,{"code-path":"src/pages/TerminalAuditTab.tsx:410:25",className:"text-slate-400",children:"时长"}),e.jsx(i,{"code-path":"src/pages/TerminalAuditTab.tsx:411:25",className:"text-slate-400",children:"状态"}),e.jsx(i,{"code-path":"src/pages/TerminalAuditTab.tsx:412:25",className:"text-slate-400 text-right",children:"操作"})]})}),e.jsx(U,{"code-path":"src/pages/TerminalAuditTab.tsx:415:21",children:ae.map(t=>e.jsxs(M,{"code-path":"src/pages/TerminalAuditTab.tsx:417:25",className:"border-slate-800 hover:bg-slate-800/50",children:[e.jsx(l,{"code-path":"src/pages/TerminalAuditTab.tsx:418:27",children:e.jsx("span",{"code-path":"src/pages/TerminalAuditTab.tsx:419:29",className:"text-sm text-slate-400",children:t.id})}),e.jsx(l,{"code-path":"src/pages/TerminalAuditTab.tsx:421:27",children:e.jsx("span",{"code-path":"src/pages/TerminalAuditTab.tsx:422:29",className:"text-sm text-slate-200",children:t.username||"--"})}),e.jsx(l,{"code-path":"src/pages/TerminalAuditTab.tsx:424:27",children:e.jsxs("div",{"code-path":"src/pages/TerminalAuditTab.tsx:425:29",className:"flex flex-col",children:[e.jsx("span",{"code-path":"src/pages/TerminalAuditTab.tsx:426:31",className:"text-sm text-slate-200",children:t.server_name||"--"}),e.jsx("span",{"code-path":"src/pages/TerminalAuditTab.tsx:427:31",className:"text-xs text-slate-500",children:t.server_ip})]})}),e.jsx(l,{"code-path":"src/pages/TerminalAuditTab.tsx:430:27",children:e.jsx("span",{"code-path":"src/pages/TerminalAuditTab.tsx:431:29",className:"text-sm text-slate-400",children:t.server_port})}),e.jsx(l,{"code-path":"src/pages/TerminalAuditTab.tsx:433:27",children:e.jsx("span",{"code-path":"src/pages/TerminalAuditTab.tsx:434:29",className:"text-sm text-slate-400",children:t.start_time?new Date(t.start_time).toLocaleString():"--"})}),e.jsx(l,{"code-path":"src/pages/TerminalAuditTab.tsx:438:27",children:e.jsx("span",{"code-path":"src/pages/TerminalAuditTab.tsx:439:29",className:"text-sm text-slate-400",children:t.end_time?new Date(t.end_time).toLocaleString():"--"})}),e.jsx(l,{"code-path":"src/pages/TerminalAuditTab.tsx:443:27",children:e.jsx("span",{"code-path":"src/pages/TerminalAuditTab.tsx:444:29",className:"text-sm text-slate-300",children:je(t.duration)})}),e.jsx(l,{"code-path":"src/pages/TerminalAuditTab.tsx:446:27",children:fe(t.status)}),e.jsx(l,{"code-path":"src/pages/TerminalAuditTab.tsx:447:27",children:e.jsxs("div",{"code-path":"src/pages/TerminalAuditTab.tsx:448:29",className:"flex items-center justify-end gap-1",children:[e.jsx(y,{"code-path":"src/pages/TerminalAuditTab.tsx:449:31",variant:"ghost",size:"icon",className:"h-8 w-8 text-slate-400 hover:text-blue-400 hover:bg-slate-800",onClick:()=>Ne(t.id),title:"回放",children:e.jsx(Be,{"code-path":"src/pages/TerminalAuditTab.tsx:456:33",className:"h-4 w-4"})}),e.jsx(y,{"code-path":"src/pages/TerminalAuditTab.tsx:458:31",variant:"ghost",size:"icon",className:"h-8 w-8 text-slate-400 hover:text-green-400 hover:bg-slate-800",onClick:()=>ye(t.id),title:"下载录制",children:e.jsx(Te,{"code-path":"src/pages/TerminalAuditTab.tsx:465:33",className:"h-4 w-4"})})]})})]},t.id))})]})})})})]}),o==="commands"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{"code-path":"src/pages/TerminalAuditTab.tsx:483:11",className:"flex items-center gap-3 flex-wrap",children:[e.jsxs("div",{"code-path":"src/pages/TerminalAuditTab.tsx:484:13",className:"relative w-64",children:[e.jsx(I,{"code-path":"src/pages/TerminalAuditTab.tsx:485:15",className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-slate-500"}),e.jsx(E,{"code-path":"src/pages/TerminalAuditTab.tsx:486:15",placeholder:"搜索用户/命令...",value:x,onChange:t=>g(t.target.value),className:"pl-9 h-9 bg-slate-800/50 border-slate-700 text-slate-200 placeholder:text-slate-500"})]}),e.jsx(E,{"code-path":"src/pages/TerminalAuditTab.tsx:493:13",placeholder:"会话 ID(可选)",value:B,onChange:t=>V(t.target.value),className:"w-32 h-9 bg-slate-800/50 border-slate-700 text-slate-200 placeholder:text-slate-500"}),e.jsxs(y,{"code-path":"src/pages/TerminalAuditTab.tsx:499:13",variant:"outline",className:"border-slate-700 text-slate-300 hover:text-slate-100 hover:bg-slate-800",onClick:se,children:[e.jsx(q,{"code-path":"src/pages/TerminalAuditTab.tsx:504:15",className:"h-4 w-4 mr-2"}),"刷新"]})]}),e.jsx(P,{"code-path":"src/pages/TerminalAuditTab.tsx:509:11",className:"bg-slate-900 border-slate-800",children:e.jsx(K,{"code-path":"src/pages/TerminalAuditTab.tsx:510:13",className:"p-0",children:e.jsx("div",{"code-path":"src/pages/TerminalAuditTab.tsx:511:15",className:"border-t border-slate-800",children:z?e.jsx("div",{"code-path":"src/pages/TerminalAuditTab.tsx:513:19",className:"flex items-center justify-center py-16",children:e.jsx("div",{"code-path":"src/pages/TerminalAuditTab.tsx:514:21",className:"w-8 h-8 border-2 border-blue-500 border-t-transparent rounded-full animate-spin"})}):re.length===0?e.jsxs("div",{"code-path":"src/pages/TerminalAuditTab.tsx:517:19",className:"flex flex-col items-center justify-center py-16 text-slate-500",children:[e.jsx(I,{"code-path":"src/pages/TerminalAuditTab.tsx:518:21",className:"h-8 w-8 mb-3 opacity-40"}),e.jsx("p",{"code-path":"src/pages/TerminalAuditTab.tsx:519:21",className:"text-sm",children:"暂无会话命令记录"})]}):e.jsxs(H,{"code-path":"src/pages/TerminalAuditTab.tsx:522:19",children:[e.jsx(W,{"code-path":"src/pages/TerminalAuditTab.tsx:523:21",children:e.jsxs(M,{"code-path":"src/pages/TerminalAuditTab.tsx:524:23",className:"border-slate-800 hover:bg-transparent",children:[e.jsx(i,{"code-path":"src/pages/TerminalAuditTab.tsx:525:25",className:"text-slate-400",children:"时间"}),e.jsx(i,{"code-path":"src/pages/TerminalAuditTab.tsx:526:25",className:"text-slate-400",children:"用户"}),e.jsx(i,{"code-path":"src/pages/TerminalAuditTab.tsx:527:25",className:"text-slate-400",children:"命令"}),e.jsx(i,{"code-path":"src/pages/TerminalAuditTab.tsx:528:25",className:"text-slate-400",children:"退出码"}),e.jsx(i,{"code-path":"src/pages/TerminalAuditTab.tsx:529:25",className:"text-slate-400",children:"输出大小"}),e.jsx(i,{"code-path":"src/pages/TerminalAuditTab.tsx:530:25",className:"text-slate-400",children:"关联会话"})]})}),e.jsx(U,{"code-path":"src/pages/TerminalAuditTab.tsx:533:21",children:re.map(t=>e.jsxs(M,{"code-path":"src/pages/TerminalAuditTab.tsx:535:25",className:"border-slate-800 hover:bg-slate-800/50",children:[e.jsx(l,{"code-path":"src/pages/TerminalAuditTab.tsx:536:27",children:e.jsx("span",{"code-path":"src/pages/TerminalAuditTab.tsx:537:29",className:"text-sm text-slate-400",children:t.created_at?new Date(t.created_at).toLocaleString():"--"})}),e.jsx(l,{"code-path":"src/pages/TerminalAuditTab.tsx:541:27",children:e.jsx("span",{"code-path":"src/pages/TerminalAuditTab.tsx:542:29",className:"text-sm text-slate-200",children:t.username||"--"})}),e.jsx(l,{"code-path":"src/pages/TerminalAuditTab.tsx:544:27",children:e.jsx("code",{"code-path":"src/pages/TerminalAuditTab.tsx:545:29",className:"text-xs text-slate-300 bg-slate-800 px-2 py-0.5 rounded max-w-[400px] truncate block",children:t.command||"--"})}),e.jsx(l,{"code-path":"src/pages/TerminalAuditTab.tsx:549:27",children:e.jsx(w,{"code-path":"src/pages/TerminalAuditTab.tsx:550:29",variant:"outline",className:t.exit_code===0?"border-emerald-500/30 text-emerald-400 bg-emerald-500/10":"border-red-500/30 text-red-400 bg-red-500/10",children:t.exit_code})}),e.jsx(l,{"code-path":"src/pages/TerminalAuditTab.tsx:561:27",children:e.jsx("span",{"code-path":"src/pages/TerminalAuditTab.tsx:562:29",className:"text-sm text-slate-400",children:Pe(t.output_size)})}),e.jsx(l,{"code-path":"src/pages/TerminalAuditTab.tsx:564:27",children:e.jsxs("span",{"code-path":"src/pages/TerminalAuditTab.tsx:565:29",className:"text-xs text-slate-500",children:["#",t.session_id]})})]},t.id))})]})})})})]}),e.jsx(Ee,{"code-path":"src/pages/TerminalAuditTab.tsx:579:7",open:R,onOpenChange:S,sessionId:u}),e.jsx(Fe,{"code-path":"src/pages/TerminalAuditTab.tsx:582:7",open:Y,onOpenChange:c,sessionId:k})]})}function We({session:s,onKill:o,onMonitor:d}){const n=Ke(s.start_time);return e.jsxs(M,{"code-path":"src/pages/TerminalAuditTab.tsx:603:5",className:"border-slate-800 hover:bg-slate-800/50",children:[e.jsx(l,{"code-path":"src/pages/TerminalAuditTab.tsx:604:7",children:e.jsx("span",{"code-path":"src/pages/TerminalAuditTab.tsx:605:9",className:"text-sm text-slate-400",children:s.id})}),e.jsx(l,{"code-path":"src/pages/TerminalAuditTab.tsx:607:7",children:e.jsx("span",{"code-path":"src/pages/TerminalAuditTab.tsx:608:9",className:"text-sm text-slate-200",children:s.username||"--"})}),e.jsx(l,{"code-path":"src/pages/TerminalAuditTab.tsx:610:7",children:e.jsxs("div",{"code-path":"src/pages/TerminalAuditTab.tsx:611:9",className:"flex flex-col",children:[e.jsx("span",{"code-path":"src/pages/TerminalAuditTab.tsx:612:11",className:"text-sm text-slate-200",children:s.server_name||"--"}),e.jsx("span",{"code-path":"src/pages/TerminalAuditTab.tsx:613:11",className:"text-xs text-slate-500",children:s.server_ip})]})}),e.jsx(l,{"code-path":"src/pages/TerminalAuditTab.tsx:616:7",children:e.jsx("span",{"code-path":"src/pages/TerminalAuditTab.tsx:617:9",className:"text-sm text-slate-400",children:s.server_port})}),e.jsx(l,{"code-path":"src/pages/TerminalAuditTab.tsx:619:7",children:e.jsx("span",{"code-path":"src/pages/TerminalAuditTab.tsx:620:9",className:"text-sm text-slate-400",children:s.start_time?new Date(s.start_time).toLocaleString():"--"})}),e.jsx(l,{"code-path":"src/pages/TerminalAuditTab.tsx:624:7",children:e.jsx("span",{"code-path":"src/pages/TerminalAuditTab.tsx:625:9",className:"text-sm text-emerald-400 font-mono",children:je(n)})}),e.jsx(l,{"code-path":"src/pages/TerminalAuditTab.tsx:627:7",children:fe(s.status)}),e.jsx(l,{"code-path":"src/pages/TerminalAuditTab.tsx:628:7",children:e.jsxs("div",{"code-path":"src/pages/TerminalAuditTab.tsx:629:9",className:"flex items-center justify-end gap-1",children:[e.jsx(y,{"code-path":"src/pages/TerminalAuditTab.tsx:630:11",variant:"ghost",size:"icon",className:"h-8 w-8 text-slate-400 hover:text-red-400 hover:bg-slate-800",onClick:()=>o(s.id,s.username),title:"阻断会话",children:e.jsx($e,{"code-path":"src/pages/TerminalAuditTab.tsx:637:13",className:"h-4 w-4"})}),e.jsx(y,{"code-path":"src/pages/TerminalAuditTab.tsx:639:11",variant:"ghost",size:"icon",className:"h-8 w-8 text-slate-400 hover:text-blue-400 hover:bg-slate-800",onClick:()=>d(s.id),title:"实时查看",children:e.jsx(me,{"code-path":"src/pages/TerminalAuditTab.tsx:646:13",className:"h-4 w-4"})})]})})]})}function Ue(s){return{id:String(s.id??""),userId:String(s.user_id??s.userId??""),username:s.username??"",module:s.module??s.resource??"",action:s.action??"",resource:s.resource??"",ip:s.ip??"",userAgent:s.user_agent??s.userAgent??"",result:s.result==="failure"?"failure":"success",message:s.message??s.detail??"",createdAt:s.createdAt??s.created_at??""}}function qe(){xe();const[s,o]=a.useState([]),[d,n]=a.useState(!0),[p,T]=a.useState(""),[h,L]=a.useState(""),[b,O]=a.useState(""),[j,v]=a.useState([]),[r,m]=a.useState([]),[f,u]=a.useState(null),[C,R]=a.useState(!1),[S,$]=a.useState(null),[N,z]=a.useState(!1),_=a.useCallback(async()=>{n(!0);try{const c={page:1,page_size:100};h&&(c.module=h),b&&(c.action=b);const Z=(await X.getLogs(c))?.list??[];o(Z.map(Ue))}catch{o([])}finally{n(!1)}},[h,b]),x=a.useCallback(async()=>{try{const[c,k]=await Promise.all([X.getModules(),X.getActions()]);v(c?.list??c??[]),m(k?.list??k??[])}catch{}},[]);a.useEffect(()=>{_(),x()},[_,x]);const g=s.filter(c=>{const k=p.toLowerCase();return!k||c.username.toLowerCase().includes(k)||c.module.toLowerCase().includes(k)||c.action.toLowerCase().includes(k)||c.resource.toLowerCase().includes(k)}),B=c=>c==="success"?e.jsx(w,{"code-path":"src/pages/AuditOperationsTab.tsx:118:7",variant:"outline",className:"border-emerald-500/30 text-emerald-400 bg-emerald-500/10",children:"成功"}):e.jsx(w,{"code-path":"src/pages/AuditOperationsTab.tsx:122:7",variant:"outline",className:"border-red-500/30 text-red-400 bg-red-500/10",children:"失败"}),V=async()=>{try{const c={};h&&(c.module=h),b&&(c.action=b),await X.exportLogs(c)}catch{}},Y=c=>{u(c)};return e.jsxs("div",{"code-path":"src/pages/AuditOperationsTab.tsx:157:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/pages/AuditOperationsTab.tsx:159:7",className:"flex items-center gap-3 flex-wrap",children:[e.jsxs("div",{"code-path":"src/pages/AuditOperationsTab.tsx:160:9",className:"relative w-64",children:[e.jsx(I,{"code-path":"src/pages/AuditOperationsTab.tsx:161:11",className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-slate-500"}),e.jsx(E,{"code-path":"src/pages/AuditOperationsTab.tsx:162:11",placeholder:"搜索操作日志...",value:p,onChange:c=>T(c.target.value),className:"pl-9 h-9 bg-slate-800/50 border-slate-700 text-slate-200 placeholder:text-slate-500"})]}),e.jsxs("select",{"code-path":"src/pages/AuditOperationsTab.tsx:171:9",value:h,onChange:c=>L(c.target.value),className:"h-9 px-3 text-sm rounded-md bg-slate-800/50 border border-slate-700 text-slate-300 focus:outline-none focus:border-blue-500",children:[e.jsx("option",{"code-path":"src/pages/AuditOperationsTab.tsx:176:11",value:"",children:"全部模块"}),j.map(c=>e.jsx("option",{"code-path":"src/pages/AuditOperationsTab.tsx:178:13",value:c.value,children:c.label},c.value))]}),e.jsxs("select",{"code-path":"src/pages/AuditOperationsTab.tsx:185:9",value:b,onChange:c=>O(c.target.value),className:"h-9 px-3 text-sm rounded-md bg-slate-800/50 border border-slate-700 text-slate-300 focus:outline-none focus:border-blue-500",children:[e.jsx("option",{"code-path":"src/pages/AuditOperationsTab.tsx:190:11",value:"",children:"全部操作"}),r.map(c=>e.jsx("option",{"code-path":"src/pages/AuditOperationsTab.tsx:192:13",value:c.value,children:c.label},c.value))]}),e.jsxs(y,{"code-path":"src/pages/AuditOperationsTab.tsx:198:9",variant:"outline",className:"border-slate-700 text-slate-300 hover:text-slate-100 hover:bg-slate-800",onClick:_,children:[e.jsx(q,{"code-path":"src/pages/AuditOperationsTab.tsx:203:11",className:"h-4 w-4 mr-2"}),"刷新"]}),e.jsxs(y,{"code-path":"src/pages/AuditOperationsTab.tsx:206:9",variant:"outline",className:"border-slate-700 text-slate-300 hover:text-slate-100 hover:bg-slate-800",onClick:V,children:[e.jsx(Te,{"code-path":"src/pages/AuditOperationsTab.tsx:211:11",className:"h-4 w-4 mr-2"}),"导出"]})]}),e.jsx(P,{"code-path":"src/pages/AuditOperationsTab.tsx:217:7",className:"bg-slate-900 border-slate-800",children:e.jsx(K,{"code-path":"src/pages/AuditOperationsTab.tsx:218:9",className:"p-0",children:e.jsx("div",{"code-path":"src/pages/AuditOperationsTab.tsx:219:11",className:"border-t border-slate-800",children:d?e.jsx("div",{"code-path":"src/pages/AuditOperationsTab.tsx:221:15",className:"flex items-center justify-center py-16",children:e.jsx("div",{"code-path":"src/pages/AuditOperationsTab.tsx:222:17",className:"w-8 h-8 border-2 border-blue-500 border-t-transparent rounded-full animate-spin"})}):g.length===0?e.jsxs("div",{"code-path":"src/pages/AuditOperationsTab.tsx:225:15",className:"flex flex-col items-center justify-center py-16 text-slate-500",children:[e.jsx(I,{"code-path":"src/pages/AuditOperationsTab.tsx:226:17",className:"h-8 w-8 mb-3 opacity-40"}),e.jsx("p",{"code-path":"src/pages/AuditOperationsTab.tsx:227:17",className:"text-sm",children:"暂无操作日志"})]}):e.jsxs(H,{"code-path":"src/pages/AuditOperationsTab.tsx:230:15",children:[e.jsx(W,{"code-path":"src/pages/AuditOperationsTab.tsx:231:17",children:e.jsxs(M,{"code-path":"src/pages/AuditOperationsTab.tsx:232:19",className:"border-slate-800 hover:bg-transparent",children:[e.jsx(i,{"code-path":"src/pages/AuditOperationsTab.tsx:233:21",className:"text-slate-400",children:"时间"}),e.jsx(i,{"code-path":"src/pages/AuditOperationsTab.tsx:234:21",className:"text-slate-400",children:"用户"}),e.jsx(i,{"code-path":"src/pages/AuditOperationsTab.tsx:235:21",className:"text-slate-400",children:"模块"}),e.jsx(i,{"code-path":"src/pages/AuditOperationsTab.tsx:236:21",className:"text-slate-400",children:"操作类型"}),e.jsx(i,{"code-path":"src/pages/AuditOperationsTab.tsx:237:21",className:"text-slate-400",children:"资源"}),e.jsx(i,{"code-path":"src/pages/AuditOperationsTab.tsx:238:21",className:"text-slate-400",children:"IP"}),e.jsx(i,{"code-path":"src/pages/AuditOperationsTab.tsx:239:21",className:"text-slate-400",children:"结果"}),e.jsx(i,{"code-path":"src/pages/AuditOperationsTab.tsx:240:21",className:"text-slate-400 text-right",children:"详情"})]})}),e.jsx(U,{"code-path":"src/pages/AuditOperationsTab.tsx:243:17",children:g.map(c=>e.jsxs(M,{"code-path":"src/pages/AuditOperationsTab.tsx:245:21",className:"border-slate-800 hover:bg-slate-800/50",children:[e.jsx(l,{"code-path":"src/pages/AuditOperationsTab.tsx:246:23",children:e.jsx("span",{"code-path":"src/pages/AuditOperationsTab.tsx:247:25",className:"text-sm text-slate-400",children:c.createdAt?new Date(c.createdAt).toLocaleString():"--"})}),e.jsx(l,{"code-path":"src/pages/AuditOperationsTab.tsx:251:23",children:e.jsx("span",{"code-path":"src/pages/AuditOperationsTab.tsx:252:25",className:"text-sm text-slate-200",children:c.username||"--"})}),e.jsx(l,{"code-path":"src/pages/AuditOperationsTab.tsx:254:23",children:e.jsx("span",{"code-path":"src/pages/AuditOperationsTab.tsx:255:25",className:"text-sm text-slate-300",children:c.module||"--"})}),e.jsx(l,{"code-path":"src/pages/AuditOperationsTab.tsx:257:23",children:e.jsx(w,{"code-path":"src/pages/AuditOperationsTab.tsx:258:25",variant:"outline",className:"border-blue-500/30 text-blue-400 bg-blue-500/10",children:c.action||"--"})}),e.jsx(l,{"code-path":"src/pages/AuditOperationsTab.tsx:262:23",children:e.jsx("code",{"code-path":"src/pages/AuditOperationsTab.tsx:263:25",className:"text-xs text-slate-400 bg-slate-800 px-2 py-0.5 rounded",children:c.resource||"--"})}),e.jsx(l,{"code-path":"src/pages/AuditOperationsTab.tsx:267:23",children:e.jsx("span",{"code-path":"src/pages/AuditOperationsTab.tsx:268:25",className:"text-sm text-slate-400",children:c.ip||"--"})}),e.jsx(l,{"code-path":"src/pages/AuditOperationsTab.tsx:270:23",children:B(c.result)}),e.jsx(l,{"code-path":"src/pages/AuditOperationsTab.tsx:271:23",children:e.jsx("div",{"code-path":"src/pages/AuditOperationsTab.tsx:272:25",className:"flex items-center justify-end",children:e.jsx(y,{"code-path":"src/pages/AuditOperationsTab.tsx:273:27",variant:"ghost",size:"icon",className:"h-8 w-8 text-slate-400 hover:text-blue-400 hover:bg-slate-800",onClick:()=>Y(c),title:"查看详情",children:e.jsx(me,{"code-path":"src/pages/AuditOperationsTab.tsx:280:29",className:"h-4 w-4"})})})})]},c.id))})]})})})}),e.jsx(Je,{"code-path":"src/pages/AuditOperationsTab.tsx:294:7",log:f,onClose:()=>u(null)}),e.jsx(Xe,{"code-path":"src/pages/AuditOperationsTab.tsx:297:7",open:C,onClose:()=>R(!1),loading:N,stats:S})]})}function Je({log:s,onClose:o}){return s?e.jsxs("div",{"code-path":"src/pages/AuditOperationsTab.tsx:315:5",className:"fixed inset-0 z-50 flex items-center justify-center",children:[e.jsx("div",{"code-path":"src/pages/AuditOperationsTab.tsx:316:7",className:"absolute inset-0 bg-black/60",onClick:o}),e.jsxs("div",{"code-path":"src/pages/AuditOperationsTab.tsx:317:7",className:"relative bg-slate-900 border border-slate-800 rounded-lg p-6 max-w-lg w-full mx-4 shadow-2xl",children:[e.jsxs("div",{"code-path":"src/pages/AuditOperationsTab.tsx:318:9",className:"flex items-center justify-between mb-4",children:[e.jsx("h3",{"code-path":"src/pages/AuditOperationsTab.tsx:319:11",className:"text-lg font-semibold text-slate-100",children:"操作日志详情"}),e.jsx(y,{"code-path":"src/pages/AuditOperationsTab.tsx:320:11",variant:"ghost",size:"icon",className:"h-7 w-7 text-slate-400 hover:text-slate-100",onClick:o,children:e.jsx(ue,{"code-path":"src/pages/AuditOperationsTab.tsx:326:13",className:"h-4 w-4"})})]}),e.jsxs("div",{"code-path":"src/pages/AuditOperationsTab.tsx:330:9",className:"space-y-3 text-sm",children:[e.jsx(D,{"code-path":"src/pages/AuditOperationsTab.tsx:331:11",label:"ID",value:s.id}),e.jsx(D,{"code-path":"src/pages/AuditOperationsTab.tsx:332:11",label:"时间",value:s.createdAt?new Date(s.createdAt).toLocaleString():"--"}),e.jsx(D,{"code-path":"src/pages/AuditOperationsTab.tsx:333:11",label:"用户",value:s.username||"--"}),e.jsx(D,{"code-path":"src/pages/AuditOperationsTab.tsx:334:11",label:"用户ID",value:s.userId||"--"}),e.jsx(D,{"code-path":"src/pages/AuditOperationsTab.tsx:335:11",label:"模块",value:s.module||"--"}),e.jsx(D,{"code-path":"src/pages/AuditOperationsTab.tsx:336:11",label:"操作类型",value:s.action||"--"}),e.jsx(D,{"code-path":"src/pages/AuditOperationsTab.tsx:337:11",label:"资源",value:s.resource||"--"}),e.jsx(D,{"code-path":"src/pages/AuditOperationsTab.tsx:338:11",label:"IP地址",value:s.ip||"--"}),e.jsx(D,{"code-path":"src/pages/AuditOperationsTab.tsx:339:11",label:"User-Agent",value:s.userAgent||"--"}),e.jsx(D,{"code-path":"src/pages/AuditOperationsTab.tsx:340:11",label:"结果",value:e.jsx(w,{"code-path":"src/pages/AuditOperationsTab.tsx:343:15",variant:"outline",className:s.result==="success"?"border-emerald-500/30 text-emerald-400 bg-emerald-500/10":"border-red-500/30 text-red-400 bg-red-500/10",children:s.result==="success"?"成功":"失败"})}),s.message&&e.jsx(D,{"code-path":"src/pages/AuditOperationsTab.tsx:355:27",label:"详情",value:s.message,mono:!0})]}),e.jsx("div",{"code-path":"src/pages/AuditOperationsTab.tsx:358:9",className:"mt-5 flex justify-end",children:e.jsx(y,{"code-path":"src/pages/AuditOperationsTab.tsx:359:11",variant:"outline",className:"border-slate-700 text-slate-300 hover:bg-slate-800",onClick:o,children:"关闭"})})]})]}):null}function D({label:s,value:o,mono:d}){return e.jsxs("div",{"code-path":"src/pages/AuditOperationsTab.tsx:374:5",className:"flex items-start gap-4",children:[e.jsx("span",{"code-path":"src/pages/AuditOperationsTab.tsx:375:7",className:"text-slate-500 w-20 flex-shrink-0",children:s}),e.jsx("span",{"code-path":"src/pages/AuditOperationsTab.tsx:376:7",className:d?"text-slate-300 font-mono text-xs break-all":"text-slate-200 break-all",children:o})]})}function Xe({open:s,onClose:o,loading:d,stats:n}){return s?e.jsxs("div",{"code-path":"src/pages/AuditOperationsTab.tsx:401:5",className:"fixed inset-0 z-50 flex items-center justify-center",children:[e.jsx("div",{"code-path":"src/pages/AuditOperationsTab.tsx:402:7",className:"absolute inset-0 bg-black/60",onClick:o}),e.jsxs("div",{"code-path":"src/pages/AuditOperationsTab.tsx:403:7",className:"relative bg-slate-900 border border-slate-800 rounded-lg p-6 max-w-md w-full mx-4 shadow-2xl",children:[e.jsxs("div",{"code-path":"src/pages/AuditOperationsTab.tsx:404:9",className:"flex items-center justify-between mb-4",children:[e.jsx("h3",{"code-path":"src/pages/AuditOperationsTab.tsx:405:11",className:"text-lg font-semibold text-slate-100",children:"审计统计"}),e.jsx(y,{"code-path":"src/pages/AuditOperationsTab.tsx:406:11",variant:"ghost",size:"icon",className:"h-7 w-7 text-slate-400 hover:text-slate-100",onClick:o,children:e.jsx(ue,{"code-path":"src/pages/AuditOperationsTab.tsx:412:13",className:"h-4 w-4"})})]}),d?e.jsx("div",{"code-path":"src/pages/AuditOperationsTab.tsx:417:11",className:"flex items-center justify-center py-10",children:e.jsx("div",{"code-path":"src/pages/AuditOperationsTab.tsx:418:13",className:"w-8 h-8 border-2 border-blue-500 border-t-transparent rounded-full animate-spin"})}):n?e.jsxs("div",{"code-path":"src/pages/AuditOperationsTab.tsx:421:11",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/pages/AuditOperationsTab.tsx:422:13",className:"grid grid-cols-2 gap-3",children:[e.jsx(G,{"code-path":"src/pages/AuditOperationsTab.tsx:423:15",label:"总日志数",value:String(n.total_logs??"--"),color:"blue"}),e.jsx(G,{"code-path":"src/pages/AuditOperationsTab.tsx:424:15",label:"今日日志",value:String(n.today_count??"--"),color:"emerald"}),e.jsx(G,{"code-path":"src/pages/AuditOperationsTab.tsx:425:15",label:"成功数",value:String(n.success_count??"--"),color:"emerald"}),e.jsx(G,{"code-path":"src/pages/AuditOperationsTab.tsx:426:15",label:"失败数",value:String(n.failure_count??"--"),color:"red"})]}),n.top_modules&&n.top_modules.length>0&&e.jsxs("div",{"code-path":"src/pages/AuditOperationsTab.tsx:430:15",children:[e.jsx("h4",{"code-path":"src/pages/AuditOperationsTab.tsx:431:17",className:"text-xs font-semibold text-slate-400 mb-2",children:"热门模块"}),e.jsx("div",{"code-path":"src/pages/AuditOperationsTab.tsx:432:17",className:"space-y-1",children:n.top_modules.slice(0,5).map((p,T)=>e.jsxs("div",{"code-path":"src/pages/AuditOperationsTab.tsx:434:21",className:"flex justify-between text-xs",children:[e.jsx("span",{"code-path":"src/pages/AuditOperationsTab.tsx:435:23",className:"text-slate-300",children:p.module}),e.jsx("span",{"code-path":"src/pages/AuditOperationsTab.tsx:436:23",className:"text-slate-500",children:p.count})]},T))})]}),n.top_users&&n.top_users.length>0&&e.jsxs("div",{"code-path":"src/pages/AuditOperationsTab.tsx:444:15",children:[e.jsx("h4",{"code-path":"src/pages/AuditOperationsTab.tsx:445:17",className:"text-xs font-semibold text-slate-400 mb-2",children:"活跃用户"}),e.jsx("div",{"code-path":"src/pages/AuditOperationsTab.tsx:446:17",className:"space-y-1",children:n.top_users.slice(0,5).map((p,T)=>e.jsxs("div",{"code-path":"src/pages/AuditOperationsTab.tsx:448:21",className:"flex justify-between text-xs",children:[e.jsx("span",{"code-path":"src/pages/AuditOperationsTab.tsx:449:23",className:"text-slate-300",children:p.username}),e.jsx("span",{"code-path":"src/pages/AuditOperationsTab.tsx:450:23",className:"text-slate-500",children:p.count})]},T))})]})]}):e.jsx("p",{"code-path":"src/pages/AuditOperationsTab.tsx:458:11",className:"text-slate-500 text-center py-10 text-sm",children:"暂无统计数据"}),e.jsx("div",{"code-path":"src/pages/AuditOperationsTab.tsx:461:9",className:"mt-5 flex justify-end",children:e.jsx(y,{"code-path":"src/pages/AuditOperationsTab.tsx:462:11",variant:"outline",className:"border-slate-700 text-slate-300 hover:bg-slate-800",onClick:o,children:"关闭"})})]})]}):null}function G({label:s,value:o,color:d}){const n={blue:"border-blue-500/20 bg-blue-500/5 text-blue-400",emerald:"border-emerald-500/20 bg-emerald-500/5 text-emerald-400",red:"border-red-500/20 bg-red-500/5 text-red-400"};return e.jsxs("div",{"code-path":"src/pages/AuditOperationsTab.tsx:482:5",className:`rounded-lg border p-3 ${n[d]}`,children:[e.jsx("div",{"code-path":"src/pages/AuditOperationsTab.tsx:483:7",className:"text-xs text-slate-500",children:s}),e.jsx("div",{"code-path":"src/pages/AuditOperationsTab.tsx:484:7",className:"text-xl font-bold mt-0.5",children:o})]})}function Ge(s){return{id:s.id??0,username:s.username??"",login_type:s.login_type??"password",ip:s.ip??"",location:s.location??"",browser:s.browser??"",os:s.os??"",user_agent:s.user_agent??s.userAgent??"",status:s.status==="failed"||s.status==="fail"?"fail":"success",fail_reason:s.fail_reason??s.message??"",login_at:s.login_at??s.created_at??"",created_at:s.created_at??s.login_at??""}}function Qe(){const[s,o]=a.useState([]),[d,n]=a.useState(!0),[p,T]=a.useState(""),[h,L]=a.useState(""),b=a.useCallback(async()=>{n(!0);try{const r={page:1,page_size:100};h&&(r.status=h==="fail"?"failed":h);const f=(await ze.list(r))?.list??[];o(f.map(Ge))}catch{o([])}finally{n(!1)}},[h]);a.useEffect(()=>{b()},[b]);const O=s.filter(r=>{const m=p.toLowerCase();return!m||(r.username||"").toLowerCase().includes(m)||(r.ip||"").toLowerCase().includes(m)||(r.location||"").toLowerCase().includes(m)||(r.user_agent||"").toLowerCase().includes(m)}),j=(r,m)=>r==="success"?e.jsx(w,{"code-path":"src/pages/LoginLogsTab.tsx:88:7",variant:"outline",className:"border-emerald-500/30 text-emerald-400 bg-emerald-500/10",children:"成功"}):e.jsx(w,{"code-path":"src/pages/LoginLogsTab.tsx:92:7",variant:"outline",className:"border-red-500/30 text-red-400 bg-red-500/10",title:m||void 0,children:m||"失败"}),v=r=>{switch(r){case"password":return"密码登录";case"ldap":return"LDAP";case"token":return"Token";case"oauth":return"OAuth";default:return r||"密码登录"}};return e.jsxs("div",{"code-path":"src/pages/LoginLogsTab.tsx:113:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/pages/LoginLogsTab.tsx:115:7",className:"flex items-center gap-3 flex-wrap",children:[e.jsxs("div",{"code-path":"src/pages/LoginLogsTab.tsx:116:9",className:"relative w-64",children:[e.jsx(I,{"code-path":"src/pages/LoginLogsTab.tsx:117:11",className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-slate-500"}),e.jsx(E,{"code-path":"src/pages/LoginLogsTab.tsx:118:11",placeholder:"搜索用户/IP/归属地...",value:p,onChange:r=>T(r.target.value),className:"pl-9 h-9 bg-slate-800/50 border-slate-700 text-slate-200 placeholder:text-slate-500"})]}),e.jsx("div",{"code-path":"src/pages/LoginLogsTab.tsx:126:9",className:"flex items-center gap-1",children:[{value:"",label:"全部"},{value:"success",label:"成功"},{value:"fail",label:"失败"}].map(({value:r,label:m})=>e.jsx(y,{"code-path":"src/pages/LoginLogsTab.tsx:132:13",variant:h===r?"default":"outline",size:"sm",className:h===r?"h-8 bg-blue-600 hover:bg-blue-700 text-white":"h-8 border-slate-700 text-slate-400 hover:text-slate-100 hover:bg-slate-800",onClick:()=>L(r),children:m},r||"all"))}),e.jsxs(y,{"code-path":"src/pages/LoginLogsTab.tsx:148:9",variant:"outline",className:"border-slate-700 text-slate-300 hover:text-slate-100 hover:bg-slate-800",onClick:b,children:[e.jsx(q,{"code-path":"src/pages/LoginLogsTab.tsx:153:11",className:"h-4 w-4 mr-2"}),"刷新"]})]}),e.jsx(P,{"code-path":"src/pages/LoginLogsTab.tsx:159:7",className:"bg-slate-900 border-slate-800",children:e.jsx(K,{"code-path":"src/pages/LoginLogsTab.tsx:160:9",className:"p-0",children:e.jsx("div",{"code-path":"src/pages/LoginLogsTab.tsx:161:11",className:"border-t border-slate-800",children:d?e.jsx("div",{"code-path":"src/pages/LoginLogsTab.tsx:163:15",className:"flex items-center justify-center py-16",children:e.jsx("div",{"code-path":"src/pages/LoginLogsTab.tsx:164:17",className:"w-8 h-8 border-2 border-blue-500 border-t-transparent rounded-full animate-spin"})}):O.length===0?e.jsxs("div",{"code-path":"src/pages/LoginLogsTab.tsx:167:15",className:"flex flex-col items-center justify-center py-16 text-slate-500",children:[e.jsx(ke,{"code-path":"src/pages/LoginLogsTab.tsx:168:17",className:"h-8 w-8 mb-3 opacity-40"}),e.jsx("p",{"code-path":"src/pages/LoginLogsTab.tsx:169:17",className:"text-sm",children:"暂无登录日志"})]}):e.jsxs(H,{"code-path":"src/pages/LoginLogsTab.tsx:172:15",children:[e.jsx(W,{"code-path":"src/pages/LoginLogsTab.tsx:173:17",children:e.jsxs(M,{"code-path":"src/pages/LoginLogsTab.tsx:174:19",className:"border-slate-800 hover:bg-transparent",children:[e.jsx(i,{"code-path":"src/pages/LoginLogsTab.tsx:175:21",className:"text-slate-400",children:"登录时间"}),e.jsx(i,{"code-path":"src/pages/LoginLogsTab.tsx:176:21",className:"text-slate-400",children:"用户"}),e.jsx(i,{"code-path":"src/pages/LoginLogsTab.tsx:177:21",className:"text-slate-400",children:"登录方式"}),e.jsx(i,{"code-path":"src/pages/LoginLogsTab.tsx:178:21",className:"text-slate-400",children:"IP"}),e.jsx(i,{"code-path":"src/pages/LoginLogsTab.tsx:179:21",className:"text-slate-400",children:"归属地"}),e.jsx(i,{"code-path":"src/pages/LoginLogsTab.tsx:180:21",className:"text-slate-400",children:"浏览器/OS"}),e.jsx(i,{"code-path":"src/pages/LoginLogsTab.tsx:181:21",className:"text-slate-400",children:"状态"})]})}),e.jsx(U,{"code-path":"src/pages/LoginLogsTab.tsx:184:17",children:O.map(r=>e.jsxs(M,{"code-path":"src/pages/LoginLogsTab.tsx:186:21",className:"border-slate-800 hover:bg-slate-800/50",children:[e.jsx(l,{"code-path":"src/pages/LoginLogsTab.tsx:187:23",children:e.jsx("span",{"code-path":"src/pages/LoginLogsTab.tsx:188:25",className:"text-sm text-slate-400",children:r.login_at?new Date(r.login_at).toLocaleString():"--"})}),e.jsx(l,{"code-path":"src/pages/LoginLogsTab.tsx:192:23",children:e.jsx("span",{"code-path":"src/pages/LoginLogsTab.tsx:193:25",className:"text-sm text-slate-200 font-medium",children:r.username||"--"})}),e.jsx(l,{"code-path":"src/pages/LoginLogsTab.tsx:195:23",children:e.jsx(w,{"code-path":"src/pages/LoginLogsTab.tsx:196:25",variant:"outline",className:"border-blue-500/30 text-blue-400 bg-blue-500/10 text-xs",children:v(r.login_type)})}),e.jsx(l,{"code-path":"src/pages/LoginLogsTab.tsx:200:23",children:e.jsx("code",{"code-path":"src/pages/LoginLogsTab.tsx:201:25",className:"text-xs text-slate-400 bg-slate-800 px-2 py-0.5 rounded",children:r.ip||"--"})}),e.jsx(l,{"code-path":"src/pages/LoginLogsTab.tsx:205:23",children:e.jsxs("span",{"code-path":"src/pages/LoginLogsTab.tsx:206:25",className:"text-xs text-slate-500 flex items-center gap-1",children:[e.jsx(De,{"code-path":"src/pages/LoginLogsTab.tsx:207:27",className:"h-3 w-3"}),r.location||"--"]})}),e.jsx(l,{"code-path":"src/pages/LoginLogsTab.tsx:211:23",children:e.jsxs("span",{"code-path":"src/pages/LoginLogsTab.tsx:212:25",className:"text-xs text-slate-500 flex items-center gap-1",title:r.user_agent,children:[e.jsx(Q,{"code-path":"src/pages/LoginLogsTab.tsx:213:27",className:"h-3 w-3 flex-shrink-0"}),r.browser||r.os?[r.browser,r.os].filter(Boolean).join(" / "):r.user_agent?r.user_agent.length>40?r.user_agent.slice(0,40)+"...":r.user_agent:"--"]})}),e.jsx(l,{"code-path":"src/pages/LoginLogsTab.tsx:223:23",children:j(r.status,r.fail_reason)})]},r.id))})]})})})})]})}function ls(){const{pathname:s}=Me();return console.debug("[AuditPage v2] pathname:",s),s.includes("/audit/terminal")?e.jsx(ce,{"code-path":"src/pages/AuditPage.tsx:11:52"}):s.includes("/audit/operations")?e.jsx(qe,{"code-path":"src/pages/AuditPage.tsx:12:54"}):s.includes("/audit/login-logs")?e.jsx(Qe,{"code-path":"src/pages/AuditPage.tsx:13:54"}):e.jsx(ce,{"code-path":"src/pages/AuditPage.tsx:15:10"})}export{ls as AuditPage}; diff --git a/backend/static/assets/AuditPage-qFSlP5C_.js b/backend/static/assets/AuditPage-qFSlP5C_.js new file mode 100644 index 0000000..27ca22d --- /dev/null +++ b/backend/static/assets/AuditPage-qFSlP5C_.js @@ -0,0 +1,3 @@ +import{i as ce,r as a,j as e,D as pe,a as xe,b as he,c as me,d as ue,L as ge,$ as _e,aH as Y,U as De,S as Re,C as Me,f as be,A as Te,a0 as ze,B as v,O as je,X as fe,aP as Ee,G as Ie,x as Be}from"./index-Dmami9WE.js";import{C as K,a as U}from"./card-CIfC-8Rh.js";import{I as F}from"./input-NsU9nXZF.js";import{B as _}from"./badge-3UzCvU7L.js";import{T as W,a as q,b as E,c as l,d as G,e as o}from"./table-CG4mjNfb.js";import{t as H,s as $e,a as X,l as Fe}from"./system-C3cYTuQH.js";import{x as Ae,a as ve}from"./xterm-DSqgeKvr.js";import{S as B}from"./search-Dd-PeBfg.js";import{R as J}from"./refresh-cw-CTBERyFc.js";import{P as Pe}from"./play-0EwQQJX_.js";import{D as Ne}from"./download-Vuij9wGr.js";const He=[["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"M2.586 16.726A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2h6.624a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586z",key:"2d38gg"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]],Ke=ce("octagon-x",He);const Ue=[["path",{d:"M10 2h4",key:"n1abiw"}],["path",{d:"M4.6 11a8 8 0 0 0 1.7 8.7 8 8 0 0 0 8.7 1.7",key:"10he05"}],["path",{d:"M7.4 7.4a8 8 0 0 1 10.3 1 8 8 0 0 1 .9 10.2",key:"15f7sh"}],["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M12 12v-2",key:"fwoke6"}]],We=ce("timer-off",Ue);const qe=[["line",{x1:"10",x2:"14",y1:"2",y2:"2",key:"14vaq8"}],["line",{x1:"12",x2:"15",y1:"14",y2:"11",key:"17fdiu"}],["circle",{cx:"12",cy:"14",r:"8",key:"1e1u0o"}]],Ge=ce("timer",qe);function Je({open:s,onOpenChange:i,sessionId:d}){const n=a.useRef(null),p=a.useRef(null),g=a.useRef(null),[m,w]=a.useState(!1),[b,N]=a.useState(""),[T,j]=a.useState(0);return a.useEffect(()=>{if(!s||!d)return;const r=new Ae.Terminal({cursorBlink:!1,fontSize:13,fontFamily:'Menlo, Monaco, "Courier New", monospace',disableStdin:!0,cols:80,rows:24,theme:{background:"#0a0e14",foreground:"#d6d6d6",cursor:"#0a0e14",selectionBackground:"rgba(255,255,255,0.2)"}}),u=new ve.FitAddon;r.loadAddon(u),p.current=r;let O=!1;return w(!0),N(""),j(0),H.getRecord(d).then(x=>{if(O)return;const y=typeof x=="string"?x:x?.data||x?.record_data||"";if(!y||y.trim()===""){N("No recording data available for this session"),w(!1);return}if(n.current){r.open(n.current);try{u.fit()}catch{}}const D=y.split(` +`).filter(L=>L.trim()),S=[];for(const L of D)try{const h=JSON.parse(L);Array.isArray(h)&&h.length>=3&&S.push({time:h[0],eventType:h[1],data:h[2]})}catch{}if(S.length===0){r.write(y),j(100),w(!1);return}w(!1);const P=S[S.length-1].time;let R=0,k=0;const C=()=>{if(O||R>=S.length){j(100);return}const L=S[R],h=(L.time-k)*1e3;k=L.time,R++;const f=Math.min(h,2e3);g.current=setTimeout(()=>{O||(r.write(L.data),j(Math.round(L.time/P*100)),C())},f)};C()}).catch(x=>{O||(console.error("[Replay] Load failed:",x),N("Failed to load recording data"),w(!1))}),()=>{O=!0,g.current&&clearTimeout(g.current);try{r.dispose()}catch{}p.current=null}},[s,d]),e.jsx(pe,{"code-path":"src/components/system/ReplayDialog.tsx:153:5",open:s,onOpenChange:i,children:e.jsxs(xe,{"code-path":"src/components/system/ReplayDialog.tsx:154:7",showOverlay:!1,className:"bg-slate-900 border-slate-800 p-0 gap-0",style:{maxWidth:"900px",width:"90vw"},children:[e.jsxs(he,{"code-path":"src/components/system/ReplayDialog.tsx:155:9",className:"px-4 py-3 border-b border-slate-800",children:[e.jsxs(me,{"code-path":"src/components/system/ReplayDialog.tsx:156:11",className:"text-slate-100 text-base flex items-center gap-2",children:["Terminal Replay #",d??"",T>0&&T<100&&e.jsxs("span",{"code-path":"src/components/system/ReplayDialog.tsx:159:15",className:"text-xs text-slate-500 font-normal ml-2",children:[T,"%"]})]}),e.jsx(ue,{"code-path":"src/components/system/ReplayDialog.tsx:162:11",className:"text-slate-500 sr-only",children:"Replay recorded terminal output"})]}),e.jsxs("div",{"code-path":"src/components/system/ReplayDialog.tsx:164:9",className:"relative bg-[#0a0e14]",style:{height:"460px"},children:[m&&e.jsx("div",{"code-path":"src/components/system/ReplayDialog.tsx:166:13",className:"absolute inset-0 z-10 flex items-center justify-center bg-black/40",children:e.jsx(ge,{"code-path":"src/components/system/ReplayDialog.tsx:167:15",className:"h-6 w-6 animate-spin text-blue-400"})}),b&&e.jsx("div",{"code-path":"src/components/system/ReplayDialog.tsx:171:13",className:"absolute inset-0 z-10 flex items-center justify-center bg-black/40",children:e.jsx("p",{"code-path":"src/components/system/ReplayDialog.tsx:172:15",className:"text-red-400 text-sm",children:b})}),T>0&&T<100&&e.jsx("div",{"code-path":"src/components/system/ReplayDialog.tsx:176:13",className:"absolute bottom-0 left-0 right-0 h-0.5 bg-slate-800 z-10",children:e.jsx("div",{"code-path":"src/components/system/ReplayDialog.tsx:177:15",className:"h-full bg-blue-500 transition-all duration-300",style:{width:`${T}%`}})}),e.jsx("div",{"code-path":"src/components/system/ReplayDialog.tsx:183:11",ref:n,className:"absolute inset-0 p-1"})]})]})})}function Xe({open:s,onOpenChange:i,sessionId:d,sessionInfo:n}){const p=a.useRef(null),g=a.useRef(null),m=a.useRef(null),w=a.useRef(null),[b,N]=a.useState(!1),[T,j]=a.useState(""),[r,u]=a.useState(n||null);a.useEffect(()=>{s||(N(!1),j(""))},[s]),a.useEffect(()=>{if(!s||!d)return;N(!1),j("");const x=new Ae.Terminal({cursorBlink:!1,fontSize:13,fontFamily:'Menlo, Monaco, "Courier New", monospace',disableStdin:!0,theme:{background:"#0a0e14",foreground:"#d6d6d6",cursor:"#d6d6d6",selectionBackground:"#264f78",black:"#1a1a2e",red:"#ff6b6b",green:"#69db7c",yellow:"#ffd43b",blue:"#4dabf7",magenta:"#da77f2",cyan:"#63e6be",white:"#d6d6d6",brightBlack:"#4a4a4a",brightRed:"#ff8787",brightGreen:"#8ce99a",brightYellow:"#ffe066",brightBlue:"#74c0fc",brightMagenta:"#e599f7",brightCyan:"#7ae5d5",brightWhite:"#f8f9fa"}}),y=new ve.FitAddon;x.loadAddon(y),g.current=x,m.current=y;const D=()=>{const h=p.current;if(!h){requestAnimationFrame(D);return}x.open(h);try{y.fit()}catch{}},S=_e.getState().token||localStorage.getItem("token")||(()=>{try{return JSON.parse(localStorage.getItem("user-storage")||"{}")?.state?.token||""}catch{return""}})(),R=`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}/ws/audit/${d}?token=${encodeURIComponent(S)}`;console.log("[LiveMonitor] Connecting to:",R.replace(/token=[^&]+/,"token=***"));const k=new WebSocket(R);w.current=k;let C=!1;k.onopen=()=>{console.log("[LiveMonitor] WS connected for session:",d),C=!0,N(!0),j(""),D(),x.writeln("\x1B[36m[审计监控] 已连接到会话...\x1B[0m")},k.onmessage=h=>{try{const f=JSON.parse(h.data);switch(f.type){case"session_info":u(f.payload),x.writeln(`\x1B[36m用户: ${f.payload.username} 服务器: ${f.payload.server_name}\x1B[0m`);break;case"history":f.data&&x.write(f.data);break;case"output":f.data&&x.write(f.data);break}}catch{}},k.onerror=h=>{console.log("[LiveMonitor] WS error:",h),j("WebSocket 连接失败")},k.onclose=h=>{console.log("[LiveMonitor] WS closed code:",h.code,"reason:",h.reason),C||j(`连接失败 (code=${h.code}): ${h.reason||"认证失败或网络问题"}`),N(!1),x.writeln(`\r +\x1B[33m[审计监控] 连接已断开\x1B[0m`)};const L=setTimeout(()=>{C||(j("连接超时 — 请确认已登录且有活跃会话"),k.close())},5e3);return()=>{clearTimeout(L),k.close(),x.dispose(),g.current=null,m.current=null,w.current=null,N(!1)}},[s,d]),a.useEffect(()=>{if(!s)return;const x=p.current;if(!x)return;let y;const D=new ResizeObserver(()=>{clearTimeout(y),y=setTimeout(()=>{try{m.current?.fit()}catch{}},60)});return D.observe(x),()=>{clearTimeout(y),D.disconnect()}},[s,d]);const O=x=>x?new Date(x).toLocaleString():"--";return e.jsx(pe,{"code-path":"src/components/system/LiveMonitorDialog.tsx:223:5",open:s,onOpenChange:i,children:e.jsxs(xe,{"code-path":"src/components/system/LiveMonitorDialog.tsx:224:7",showOverlay:!1,className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] max-w-[95vw] max-h-[90vh] w-[1200px]",children:[e.jsxs(he,{"code-path":"src/components/system/LiveMonitorDialog.tsx:225:9",children:[e.jsxs(me,{"code-path":"src/components/system/LiveMonitorDialog.tsx:226:11",className:"text-[var(--dg-text-primary)] flex items-center gap-2",children:[e.jsx(Y,{"code-path":"src/components/system/LiveMonitorDialog.tsx:227:13",className:"h-5 w-5 text-emerald-400"}),"终端实时监控",b&&e.jsx(_,{"code-path":"src/components/system/LiveMonitorDialog.tsx:230:15",variant:"outline",className:"border-emerald-500/30 text-emerald-400 bg-emerald-500/10 ml-2 text-xs",children:"● 在线"}),!b&&!T&&e.jsxs(_,{"code-path":"src/components/system/LiveMonitorDialog.tsx:235:15",variant:"outline",className:"border-yellow-500/30 text-yellow-400 bg-yellow-500/10 ml-2 text-xs",children:[e.jsx(ge,{"code-path":"src/components/system/LiveMonitorDialog.tsx:236:17",className:"h-3 w-3 animate-spin mr-1"}),"连接中"]}),T&&e.jsx(_,{"code-path":"src/components/system/LiveMonitorDialog.tsx:241:15",variant:"outline",className:"border-red-500/30 text-red-400 bg-red-500/10 ml-2 text-xs",children:"连接失败"})]}),e.jsx(ue,{"code-path":"src/components/system/LiveMonitorDialog.tsx:246:11",className:"text-[var(--dg-text-secondary)]",children:r&&e.jsxs("div",{"code-path":"src/components/system/LiveMonitorDialog.tsx:248:15",className:"flex items-center gap-4 text-xs mt-1 flex-wrap",children:[e.jsxs("span",{"code-path":"src/components/system/LiveMonitorDialog.tsx:249:17",className:"flex items-center gap-1",children:[e.jsx(De,{"code-path":"src/components/system/LiveMonitorDialog.tsx:250:19",className:"h-3 w-3"}),r.username]}),e.jsxs("span",{"code-path":"src/components/system/LiveMonitorDialog.tsx:253:17",className:"flex items-center gap-1",children:[e.jsx(Re,{"code-path":"src/components/system/LiveMonitorDialog.tsx:254:19",className:"h-3 w-3"}),r.server_name," (",r.server_ip,")"]}),e.jsxs("span",{"code-path":"src/components/system/LiveMonitorDialog.tsx:257:17",className:"flex items-center gap-1",children:[e.jsx(Me,{"code-path":"src/components/system/LiveMonitorDialog.tsx:258:19",className:"h-3 w-3"}),O(r.start_time)]})]})})]}),T&&e.jsx("p",{"code-path":"src/components/system/LiveMonitorDialog.tsx:267:11",className:"text-sm text-red-400 px-1",children:T}),e.jsx("div",{"code-path":"src/components/system/LiveMonitorDialog.tsx:270:9",ref:p,className:"w-full rounded-md overflow-hidden border border-[var(--dg-border)]",style:{height:"55vh"}})]})})}function ye(s){if(!s||s<0)return"--";if(s<60)return`${s}秒`;const i=Math.floor(s/60),d=s%60;if(i<60)return`${i}分${d>0?`${d}秒`:""}`;const n=Math.floor(i/60),p=i%60;return`${n}时${p>0?`${p}分`:""}`}function Ve(s){return s?s<1024?`${s} B`:s<1024*1024?`${(s/1024).toFixed(1)} KB`:`${(s/1024/1024).toFixed(2)} MB`:"0 B"}function Le(s){return s==="active"?e.jsxs(_,{"code-path":"src/pages/TerminalAuditTab.tsx:86:7",variant:"outline",className:"border-emerald-500/30 text-emerald-400 bg-emerald-500/10",children:[e.jsx("span",{"code-path":"src/pages/TerminalAuditTab.tsx:87:9",className:"w-1.5 h-1.5 rounded-full bg-emerald-400 mr-1.5 inline-block animate-pulse"}),"活动中"]}):s==="failed"?e.jsx(_,{"code-path":"src/pages/TerminalAuditTab.tsx:94:7",variant:"outline",className:"border-red-500/30 text-red-400 bg-red-500/10",children:"失败"}):e.jsx(_,{"code-path":"src/pages/TerminalAuditTab.tsx:100:5",variant:"outline",className:"border-slate-500/30 text-slate-400 bg-slate-500/10",children:"已关闭"})}function Ye(s){const[i,d]=a.useState(0);return a.useEffect(()=>{if(!s)return;const n=new Date(s).getTime(),p=()=>d(Math.floor((Date.now()-n)/1e3));p();const g=setInterval(p,1e3);return()=>clearInterval(g)},[s]),i}const Qe=[{id:"active",name:"在线会话",icon:Te},{id:"history",name:"历史会话",icon:Y},{id:"commands",name:"会话命令",icon:B}];function de(){const s=be(),[i,d]=a.useState("active"),[n,p]=a.useState([]),[g,m]=a.useState(!0),[w,b]=a.useState(""),[N,T]=a.useState([]),[j,r]=a.useState(!0),[u,O]=a.useState(""),[x,y]=a.useState(null),[D,S]=a.useState(!1),[P,R]=a.useState([]),[k,C]=a.useState(!0),[L,h]=a.useState(""),[f,Q]=a.useState(""),[Z,c]=a.useState(!1),[M,ee]=a.useState(null),[I,se]=a.useState(!0),[ie,we]=a.useState(!1),te=10;a.useEffect(()=>{i==="active"&&!ie?se(!0):i!=="active"&&se(!1)},[i,ie]);const $=a.useCallback(async()=>{m(!0);try{const t=await H.list({page:1,page_size:100,status:"active"});p(t?.list??[])}catch{p([])}finally{m(!1)}},[]);a.useEffect(()=>{$()},[$]),a.useEffect(()=>{if(!I)return;const t=setInterval($,te*1e3);return()=>clearInterval(t)},[I,$]);const le=n.filter(t=>{const A=w.toLowerCase();return!A||(t.username||"").toLowerCase().includes(A)||(t.server_name||"").toLowerCase().includes(A)||(t.server_ip||"").toLowerCase().includes(A)}),Oe=async(t,A)=>{if(await s({title:"阻断会话",description:`确认强制断开用户「${A}」的当前会话吗?`,confirmText:"阻断",variant:"destructive"}))try{await H.kill(t),await $()}catch{}},Se=t=>{ee(t),c(!0)},ae=a.useCallback(async()=>{r(!0);try{const t=await H.list({page:1,page_size:100,status:"closed"});T(t?.list??[])}catch{T([])}finally{r(!1)}},[]);a.useEffect(()=>{ae()},[ae]);const oe=N.filter(t=>{const A=u.toLowerCase();return!A||(t.username||"").toLowerCase().includes(A)||(t.server_name||"").toLowerCase().includes(A)||(t.server_ip||"").toLowerCase().includes(A)}),ke=t=>{y(t),S(!0)},Ce=async t=>{try{await H.download(t)}catch{}},re=a.useCallback(async()=>{C(!0);try{const t={page:1,page_size:200};f&&(t.session_id=Number(f));const A=await $e.list(t);R(A?.list??[])}catch{R([])}finally{C(!1)}},[f]);a.useEffect(()=>{re()},[re]);const ne=P.filter(t=>{const A=L.toLowerCase();return!A||(t.username||"").toLowerCase().includes(A)||(t.command||"").toLowerCase().includes(A)});return e.jsxs("div",{"code-path":"src/pages/TerminalAuditTab.tsx:301:5",className:"space-y-4",children:[e.jsx("div",{"code-path":"src/pages/TerminalAuditTab.tsx:303:7",className:"flex gap-1 bg-[var(--dg-bg-secondary)] p-1 rounded-lg border border-[var(--dg-border)] w-fit",children:Qe.map(t=>e.jsxs("button",{"code-path":"src/pages/TerminalAuditTab.tsx:305:11",onClick:()=>d(t.id),className:ze("flex items-center gap-2 px-4 py-2 rounded-md text-sm font-medium transition-all",i===t.id?"bg-[var(--dg-bg-tertiary)] text-[var(--dg-text-primary)] shadow-sm":"text-[var(--dg-text-muted)] hover:text-[var(--dg-text-secondary)]"),children:[e.jsx(t.icon,{"code-path":"src/pages/TerminalAuditTab.tsx:315:13",className:"h-4 w-4"}),t.name]},t.id))}),i==="active"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{"code-path":"src/pages/TerminalAuditTab.tsx:324:11",className:"flex items-center gap-3 flex-wrap",children:[e.jsxs("div",{"code-path":"src/pages/TerminalAuditTab.tsx:325:13",className:"relative w-64",children:[e.jsx(B,{"code-path":"src/pages/TerminalAuditTab.tsx:326:15",className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-slate-500"}),e.jsx(F,{"code-path":"src/pages/TerminalAuditTab.tsx:327:15",placeholder:"搜索用户/服务器...",value:w,onChange:t=>b(t.target.value),className:"pl-9 h-9 bg-slate-800/50 border-slate-700 text-slate-200 placeholder:text-slate-500"})]}),e.jsxs(v,{"code-path":"src/pages/TerminalAuditTab.tsx:334:13",variant:"outline",className:"border-slate-700 text-slate-300 hover:text-slate-100 hover:bg-slate-800",onClick:$,children:[e.jsx(J,{"code-path":"src/pages/TerminalAuditTab.tsx:339:15",className:"h-4 w-4 mr-2"}),"刷新"]}),e.jsx(v,{"code-path":"src/pages/TerminalAuditTab.tsx:342:13",variant:I?"default":"outline",className:I?"bg-emerald-600 hover:bg-emerald-700 text-white":"border-slate-700 text-slate-300 hover:text-slate-100 hover:bg-slate-800",onClick:()=>{I&&we(!0),se(!I)},title:I?`每 ${te}s 自动刷新 · 点击关闭`:"点击开启自动刷新",children:I?e.jsxs(e.Fragment,{children:[e.jsx(Ge,{"code-path":"src/pages/TerminalAuditTab.tsx:355:19",className:"h-4 w-4 mr-1.5 animate-pulse"}),te,"s"]}):e.jsxs(e.Fragment,{children:[e.jsx(We,{"code-path":"src/pages/TerminalAuditTab.tsx:357:19",className:"h-4 w-4 mr-2"}),"自动刷新"]})})]}),e.jsx(K,{"code-path":"src/pages/TerminalAuditTab.tsx:362:11",className:"bg-slate-900 border-slate-800",children:e.jsx(U,{"code-path":"src/pages/TerminalAuditTab.tsx:363:13",className:"p-0",children:e.jsx("div",{"code-path":"src/pages/TerminalAuditTab.tsx:364:15",className:"border-t border-slate-800",children:g?e.jsx("div",{"code-path":"src/pages/TerminalAuditTab.tsx:366:19",className:"flex items-center justify-center py-16",children:e.jsx("div",{"code-path":"src/pages/TerminalAuditTab.tsx:367:21",className:"w-8 h-8 border-2 border-blue-500 border-t-transparent rounded-full animate-spin"})}):le.length===0?e.jsxs("div",{"code-path":"src/pages/TerminalAuditTab.tsx:370:19",className:"flex flex-col items-center justify-center py-16 text-slate-500",children:[e.jsx(Te,{"code-path":"src/pages/TerminalAuditTab.tsx:371:21",className:"h-8 w-8 mb-3 opacity-40"}),e.jsx("p",{"code-path":"src/pages/TerminalAuditTab.tsx:372:21",className:"text-sm",children:"暂无在线会话"})]}):e.jsxs(W,{"code-path":"src/pages/TerminalAuditTab.tsx:375:19",children:[e.jsx(q,{"code-path":"src/pages/TerminalAuditTab.tsx:376:21",children:e.jsxs(E,{"code-path":"src/pages/TerminalAuditTab.tsx:377:23",className:"border-slate-800 hover:bg-transparent",children:[e.jsx(l,{"code-path":"src/pages/TerminalAuditTab.tsx:378:25",className:"text-slate-400",children:"ID"}),e.jsx(l,{"code-path":"src/pages/TerminalAuditTab.tsx:379:25",className:"text-slate-400",children:"用户"}),e.jsx(l,{"code-path":"src/pages/TerminalAuditTab.tsx:380:25",className:"text-slate-400",children:"目标服务器"}),e.jsx(l,{"code-path":"src/pages/TerminalAuditTab.tsx:381:25",className:"text-slate-400",children:"端口"}),e.jsx(l,{"code-path":"src/pages/TerminalAuditTab.tsx:382:25",className:"text-slate-400",children:"开始时间"}),e.jsx(l,{"code-path":"src/pages/TerminalAuditTab.tsx:383:25",className:"text-slate-400",children:"时长"}),e.jsx(l,{"code-path":"src/pages/TerminalAuditTab.tsx:384:25",className:"text-slate-400",children:"状态"}),e.jsx(l,{"code-path":"src/pages/TerminalAuditTab.tsx:385:25",className:"text-slate-400 text-right",children:"操作"})]})}),e.jsx(G,{"code-path":"src/pages/TerminalAuditTab.tsx:388:21",children:le.map(t=>e.jsx(Ze,{"code-path":"src/pages/TerminalAuditTab.tsx:390:25",session:t,onKill:Oe,onMonitor:Se},t.id))})]})})})})]}),i==="history"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{"code-path":"src/pages/TerminalAuditTab.tsx:409:11",className:"flex items-center gap-3 flex-wrap",children:[e.jsxs("div",{"code-path":"src/pages/TerminalAuditTab.tsx:410:13",className:"relative w-64",children:[e.jsx(B,{"code-path":"src/pages/TerminalAuditTab.tsx:411:15",className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-slate-500"}),e.jsx(F,{"code-path":"src/pages/TerminalAuditTab.tsx:412:15",placeholder:"搜索用户/服务器/IP...",value:u,onChange:t=>O(t.target.value),className:"pl-9 h-9 bg-slate-800/50 border-slate-700 text-slate-200 placeholder:text-slate-500"})]}),e.jsxs(v,{"code-path":"src/pages/TerminalAuditTab.tsx:419:13",variant:"outline",className:"border-slate-700 text-slate-300 hover:text-slate-100 hover:bg-slate-800",onClick:ae,children:[e.jsx(J,{"code-path":"src/pages/TerminalAuditTab.tsx:424:15",className:"h-4 w-4 mr-2"}),"刷新"]})]}),e.jsx(K,{"code-path":"src/pages/TerminalAuditTab.tsx:429:11",className:"bg-slate-900 border-slate-800",children:e.jsx(U,{"code-path":"src/pages/TerminalAuditTab.tsx:430:13",className:"p-0",children:e.jsx("div",{"code-path":"src/pages/TerminalAuditTab.tsx:431:15",className:"border-t border-slate-800",children:j?e.jsx("div",{"code-path":"src/pages/TerminalAuditTab.tsx:433:19",className:"flex items-center justify-center py-16",children:e.jsx("div",{"code-path":"src/pages/TerminalAuditTab.tsx:434:21",className:"w-8 h-8 border-2 border-blue-500 border-t-transparent rounded-full animate-spin"})}):oe.length===0?e.jsxs("div",{"code-path":"src/pages/TerminalAuditTab.tsx:437:19",className:"flex flex-col items-center justify-center py-16 text-slate-500",children:[e.jsx(Y,{"code-path":"src/pages/TerminalAuditTab.tsx:438:21",className:"h-8 w-8 mb-3 opacity-40"}),e.jsx("p",{"code-path":"src/pages/TerminalAuditTab.tsx:439:21",className:"text-sm",children:"暂无历史会话"})]}):e.jsxs(W,{"code-path":"src/pages/TerminalAuditTab.tsx:442:19",children:[e.jsx(q,{"code-path":"src/pages/TerminalAuditTab.tsx:443:21",children:e.jsxs(E,{"code-path":"src/pages/TerminalAuditTab.tsx:444:23",className:"border-slate-800 hover:bg-transparent",children:[e.jsx(l,{"code-path":"src/pages/TerminalAuditTab.tsx:445:25",className:"text-slate-400",children:"ID"}),e.jsx(l,{"code-path":"src/pages/TerminalAuditTab.tsx:446:25",className:"text-slate-400",children:"用户"}),e.jsx(l,{"code-path":"src/pages/TerminalAuditTab.tsx:447:25",className:"text-slate-400",children:"目标服务器"}),e.jsx(l,{"code-path":"src/pages/TerminalAuditTab.tsx:448:25",className:"text-slate-400",children:"端口"}),e.jsx(l,{"code-path":"src/pages/TerminalAuditTab.tsx:449:25",className:"text-slate-400",children:"开始时间"}),e.jsx(l,{"code-path":"src/pages/TerminalAuditTab.tsx:450:25",className:"text-slate-400",children:"结束时间"}),e.jsx(l,{"code-path":"src/pages/TerminalAuditTab.tsx:451:25",className:"text-slate-400",children:"时长"}),e.jsx(l,{"code-path":"src/pages/TerminalAuditTab.tsx:452:25",className:"text-slate-400",children:"状态"}),e.jsx(l,{"code-path":"src/pages/TerminalAuditTab.tsx:453:25",className:"text-slate-400 text-right",children:"操作"})]})}),e.jsx(G,{"code-path":"src/pages/TerminalAuditTab.tsx:456:21",children:oe.map(t=>e.jsxs(E,{"code-path":"src/pages/TerminalAuditTab.tsx:458:25",className:"border-slate-800 hover:bg-slate-800/50",children:[e.jsx(o,{"code-path":"src/pages/TerminalAuditTab.tsx:459:27",children:e.jsx("span",{"code-path":"src/pages/TerminalAuditTab.tsx:460:29",className:"text-sm text-slate-400",children:t.id})}),e.jsx(o,{"code-path":"src/pages/TerminalAuditTab.tsx:462:27",children:e.jsx("span",{"code-path":"src/pages/TerminalAuditTab.tsx:463:29",className:"text-sm text-slate-200",children:t.username||"--"})}),e.jsx(o,{"code-path":"src/pages/TerminalAuditTab.tsx:465:27",children:e.jsxs("div",{"code-path":"src/pages/TerminalAuditTab.tsx:466:29",className:"flex flex-col",children:[e.jsx("span",{"code-path":"src/pages/TerminalAuditTab.tsx:467:31",className:"text-sm text-slate-200",children:t.server_name||"--"}),e.jsx("span",{"code-path":"src/pages/TerminalAuditTab.tsx:468:31",className:"text-xs text-slate-500",children:t.server_ip})]})}),e.jsx(o,{"code-path":"src/pages/TerminalAuditTab.tsx:471:27",children:e.jsx("span",{"code-path":"src/pages/TerminalAuditTab.tsx:472:29",className:"text-sm text-slate-400",children:t.server_port})}),e.jsx(o,{"code-path":"src/pages/TerminalAuditTab.tsx:474:27",children:e.jsx("span",{"code-path":"src/pages/TerminalAuditTab.tsx:475:29",className:"text-sm text-slate-400",children:t.start_time?new Date(t.start_time).toLocaleString():"--"})}),e.jsx(o,{"code-path":"src/pages/TerminalAuditTab.tsx:479:27",children:e.jsx("span",{"code-path":"src/pages/TerminalAuditTab.tsx:480:29",className:"text-sm text-slate-400",children:t.end_time?new Date(t.end_time).toLocaleString():"--"})}),e.jsx(o,{"code-path":"src/pages/TerminalAuditTab.tsx:484:27",children:e.jsx("span",{"code-path":"src/pages/TerminalAuditTab.tsx:485:29",className:"text-sm text-slate-300",children:ye(t.duration)})}),e.jsx(o,{"code-path":"src/pages/TerminalAuditTab.tsx:487:27",children:Le(t.status)}),e.jsx(o,{"code-path":"src/pages/TerminalAuditTab.tsx:488:27",children:e.jsxs("div",{"code-path":"src/pages/TerminalAuditTab.tsx:489:29",className:"flex items-center justify-end gap-1",children:[e.jsx(v,{"code-path":"src/pages/TerminalAuditTab.tsx:490:31",variant:"ghost",size:"icon",className:"h-8 w-8 text-slate-400 hover:text-blue-400 hover:bg-slate-800",onClick:()=>ke(t.id),title:"回放",children:e.jsx(Pe,{"code-path":"src/pages/TerminalAuditTab.tsx:497:33",className:"h-4 w-4"})}),e.jsx(v,{"code-path":"src/pages/TerminalAuditTab.tsx:499:31",variant:"ghost",size:"icon",className:"h-8 w-8 text-slate-400 hover:text-green-400 hover:bg-slate-800",onClick:()=>Ce(t.id),title:"下载录制",children:e.jsx(Ne,{"code-path":"src/pages/TerminalAuditTab.tsx:506:33",className:"h-4 w-4"})})]})})]},t.id))})]})})})})]}),i==="commands"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{"code-path":"src/pages/TerminalAuditTab.tsx:524:11",className:"flex items-center gap-3 flex-wrap",children:[e.jsxs("div",{"code-path":"src/pages/TerminalAuditTab.tsx:525:13",className:"relative w-64",children:[e.jsx(B,{"code-path":"src/pages/TerminalAuditTab.tsx:526:15",className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-slate-500"}),e.jsx(F,{"code-path":"src/pages/TerminalAuditTab.tsx:527:15",placeholder:"搜索用户/命令...",value:L,onChange:t=>h(t.target.value),className:"pl-9 h-9 bg-slate-800/50 border-slate-700 text-slate-200 placeholder:text-slate-500"})]}),e.jsx(F,{"code-path":"src/pages/TerminalAuditTab.tsx:534:13",placeholder:"会话 ID(可选)",value:f,onChange:t=>Q(t.target.value),className:"w-32 h-9 bg-slate-800/50 border-slate-700 text-slate-200 placeholder:text-slate-500"}),e.jsxs(v,{"code-path":"src/pages/TerminalAuditTab.tsx:540:13",variant:"outline",className:"border-slate-700 text-slate-300 hover:text-slate-100 hover:bg-slate-800",onClick:re,children:[e.jsx(J,{"code-path":"src/pages/TerminalAuditTab.tsx:545:15",className:"h-4 w-4 mr-2"}),"刷新"]})]}),e.jsx(K,{"code-path":"src/pages/TerminalAuditTab.tsx:550:11",className:"bg-slate-900 border-slate-800",children:e.jsx(U,{"code-path":"src/pages/TerminalAuditTab.tsx:551:13",className:"p-0",children:e.jsx("div",{"code-path":"src/pages/TerminalAuditTab.tsx:552:15",className:"border-t border-slate-800",children:k?e.jsx("div",{"code-path":"src/pages/TerminalAuditTab.tsx:554:19",className:"flex items-center justify-center py-16",children:e.jsx("div",{"code-path":"src/pages/TerminalAuditTab.tsx:555:21",className:"w-8 h-8 border-2 border-blue-500 border-t-transparent rounded-full animate-spin"})}):ne.length===0?e.jsxs("div",{"code-path":"src/pages/TerminalAuditTab.tsx:558:19",className:"flex flex-col items-center justify-center py-16 text-slate-500",children:[e.jsx(B,{"code-path":"src/pages/TerminalAuditTab.tsx:559:21",className:"h-8 w-8 mb-3 opacity-40"}),e.jsx("p",{"code-path":"src/pages/TerminalAuditTab.tsx:560:21",className:"text-sm",children:"暂无会话命令记录"})]}):e.jsxs(W,{"code-path":"src/pages/TerminalAuditTab.tsx:563:19",children:[e.jsx(q,{"code-path":"src/pages/TerminalAuditTab.tsx:564:21",children:e.jsxs(E,{"code-path":"src/pages/TerminalAuditTab.tsx:565:23",className:"border-slate-800 hover:bg-transparent",children:[e.jsx(l,{"code-path":"src/pages/TerminalAuditTab.tsx:566:25",className:"text-slate-400",children:"时间"}),e.jsx(l,{"code-path":"src/pages/TerminalAuditTab.tsx:567:25",className:"text-slate-400",children:"用户"}),e.jsx(l,{"code-path":"src/pages/TerminalAuditTab.tsx:568:25",className:"text-slate-400",children:"命令"}),e.jsx(l,{"code-path":"src/pages/TerminalAuditTab.tsx:569:25",className:"text-slate-400",children:"输出大小"}),e.jsx(l,{"code-path":"src/pages/TerminalAuditTab.tsx:570:25",className:"text-slate-400",children:"关联会话"})]})}),e.jsx(G,{"code-path":"src/pages/TerminalAuditTab.tsx:573:21",children:ne.map(t=>e.jsxs(E,{"code-path":"src/pages/TerminalAuditTab.tsx:575:25",className:"border-slate-800 hover:bg-slate-800/50",children:[e.jsx(o,{"code-path":"src/pages/TerminalAuditTab.tsx:576:27",children:e.jsx("span",{"code-path":"src/pages/TerminalAuditTab.tsx:577:29",className:"text-sm text-slate-400",children:t.created_at?new Date(t.created_at).toLocaleString():"--"})}),e.jsx(o,{"code-path":"src/pages/TerminalAuditTab.tsx:581:27",children:e.jsx("span",{"code-path":"src/pages/TerminalAuditTab.tsx:582:29",className:"text-sm text-slate-200",children:t.username||"--"})}),e.jsx(o,{"code-path":"src/pages/TerminalAuditTab.tsx:584:27",children:e.jsx("code",{"code-path":"src/pages/TerminalAuditTab.tsx:585:29",className:"text-xs text-slate-300 bg-slate-800 px-2 py-0.5 rounded max-w-[400px] truncate block",children:t.command||"--"})}),e.jsx(o,{"code-path":"src/pages/TerminalAuditTab.tsx:589:27",children:e.jsx("span",{"code-path":"src/pages/TerminalAuditTab.tsx:590:29",className:"text-sm text-slate-400",children:Ve(t.output_size)})}),e.jsx(o,{"code-path":"src/pages/TerminalAuditTab.tsx:592:27",children:e.jsxs("span",{"code-path":"src/pages/TerminalAuditTab.tsx:593:29",className:"text-xs text-slate-500",children:["#",t.session_id]})})]},t.id))})]})})})})]}),e.jsx(Je,{"code-path":"src/pages/TerminalAuditTab.tsx:607:7",open:D,onOpenChange:S,sessionId:x}),e.jsx(Xe,{"code-path":"src/pages/TerminalAuditTab.tsx:610:7",open:Z,onOpenChange:c,sessionId:M})]})}function Ze({session:s,onKill:i,onMonitor:d}){const n=Ye(s.start_time);return e.jsxs(E,{"code-path":"src/pages/TerminalAuditTab.tsx:631:5",className:"border-slate-800 hover:bg-slate-800/50",children:[e.jsx(o,{"code-path":"src/pages/TerminalAuditTab.tsx:632:7",children:e.jsx("span",{"code-path":"src/pages/TerminalAuditTab.tsx:633:9",className:"text-sm text-slate-400",children:s.id})}),e.jsx(o,{"code-path":"src/pages/TerminalAuditTab.tsx:635:7",children:e.jsx("span",{"code-path":"src/pages/TerminalAuditTab.tsx:636:9",className:"text-sm text-slate-200",children:s.username||"--"})}),e.jsx(o,{"code-path":"src/pages/TerminalAuditTab.tsx:638:7",children:e.jsxs("div",{"code-path":"src/pages/TerminalAuditTab.tsx:639:9",className:"flex flex-col",children:[e.jsx("span",{"code-path":"src/pages/TerminalAuditTab.tsx:640:11",className:"text-sm text-slate-200",children:s.server_name||"--"}),e.jsx("span",{"code-path":"src/pages/TerminalAuditTab.tsx:641:11",className:"text-xs text-slate-500",children:s.server_ip})]})}),e.jsx(o,{"code-path":"src/pages/TerminalAuditTab.tsx:644:7",children:e.jsx("span",{"code-path":"src/pages/TerminalAuditTab.tsx:645:9",className:"text-sm text-slate-400",children:s.server_port})}),e.jsx(o,{"code-path":"src/pages/TerminalAuditTab.tsx:647:7",children:e.jsx("span",{"code-path":"src/pages/TerminalAuditTab.tsx:648:9",className:"text-sm text-slate-400",children:s.start_time?new Date(s.start_time).toLocaleString():"--"})}),e.jsx(o,{"code-path":"src/pages/TerminalAuditTab.tsx:652:7",children:e.jsx("span",{"code-path":"src/pages/TerminalAuditTab.tsx:653:9",className:"text-sm text-emerald-400 font-mono",children:ye(n)})}),e.jsx(o,{"code-path":"src/pages/TerminalAuditTab.tsx:655:7",children:Le(s.status)}),e.jsx(o,{"code-path":"src/pages/TerminalAuditTab.tsx:656:7",children:e.jsxs("div",{"code-path":"src/pages/TerminalAuditTab.tsx:657:9",className:"flex items-center justify-end gap-1",children:[e.jsx(v,{"code-path":"src/pages/TerminalAuditTab.tsx:658:11",variant:"ghost",size:"icon",className:"h-8 w-8 text-slate-400 hover:text-red-400 hover:bg-slate-800",onClick:()=>i(s.id,s.username),title:"阻断会话",children:e.jsx(Ke,{"code-path":"src/pages/TerminalAuditTab.tsx:665:13",className:"h-4 w-4"})}),e.jsx(v,{"code-path":"src/pages/TerminalAuditTab.tsx:667:11",variant:"ghost",size:"icon",className:"h-8 w-8 text-slate-400 hover:text-blue-400 hover:bg-slate-800",onClick:()=>d(s.id),title:"实时查看",children:e.jsx(je,{"code-path":"src/pages/TerminalAuditTab.tsx:674:13",className:"h-4 w-4"})})]})})]})}function es(s){return{id:String(s.id??""),userId:String(s.user_id??s.userId??""),username:s.username??"",module:s.module??s.resource??"",action:s.action??"",resource:s.resource??"",ip:s.ip??"",userAgent:s.user_agent??s.userAgent??"",result:s.result==="failure"?"failure":"success",message:s.message??s.detail??"",createdAt:s.createdAt??s.created_at??""}}function ss(){be();const[s,i]=a.useState([]),[d,n]=a.useState(!0),[p,g]=a.useState(""),[m,w]=a.useState(""),[b,N]=a.useState(""),[T,j]=a.useState([]),[r,u]=a.useState([]),[O,x]=a.useState(null),[y,D]=a.useState(!1),[S,P]=a.useState(null),[R,k]=a.useState(!1),C=a.useCallback(async()=>{n(!0);try{const c={page:1,page_size:100};m&&(c.module=m),b&&(c.action=b);const ee=(await X.getLogs(c))?.list??[];i(ee.map(es))}catch{i([])}finally{n(!1)}},[m,b]),L=a.useCallback(async()=>{try{const[c,M]=await Promise.all([X.getModules(),X.getActions()]);j(c?.list??c??[]),u(M?.list??M??[])}catch{}},[]);a.useEffect(()=>{C(),L()},[C,L]);const h=s.filter(c=>{const M=p.toLowerCase();return!M||c.username.toLowerCase().includes(M)||c.module.toLowerCase().includes(M)||c.action.toLowerCase().includes(M)||c.resource.toLowerCase().includes(M)}),f=c=>c==="success"?e.jsx(_,{"code-path":"src/pages/AuditOperationsTab.tsx:118:7",variant:"outline",className:"border-emerald-500/30 text-emerald-400 bg-emerald-500/10",children:"成功"}):e.jsx(_,{"code-path":"src/pages/AuditOperationsTab.tsx:122:7",variant:"outline",className:"border-red-500/30 text-red-400 bg-red-500/10",children:"失败"}),Q=async()=>{try{const c={};m&&(c.module=m),b&&(c.action=b),await X.exportLogs(c)}catch{}},Z=c=>{x(c)};return e.jsxs("div",{"code-path":"src/pages/AuditOperationsTab.tsx:157:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/pages/AuditOperationsTab.tsx:159:7",className:"flex items-center gap-3 flex-wrap",children:[e.jsxs("div",{"code-path":"src/pages/AuditOperationsTab.tsx:160:9",className:"relative w-64",children:[e.jsx(B,{"code-path":"src/pages/AuditOperationsTab.tsx:161:11",className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-slate-500"}),e.jsx(F,{"code-path":"src/pages/AuditOperationsTab.tsx:162:11",placeholder:"搜索操作日志...",value:p,onChange:c=>g(c.target.value),className:"pl-9 h-9 bg-slate-800/50 border-slate-700 text-slate-200 placeholder:text-slate-500"})]}),e.jsxs("select",{"code-path":"src/pages/AuditOperationsTab.tsx:171:9",value:m,onChange:c=>w(c.target.value),className:"h-9 px-3 text-sm rounded-md bg-slate-800/50 border border-slate-700 text-slate-300 focus:outline-none focus:border-blue-500",children:[e.jsx("option",{"code-path":"src/pages/AuditOperationsTab.tsx:176:11",value:"",children:"全部模块"}),T.map(c=>e.jsx("option",{"code-path":"src/pages/AuditOperationsTab.tsx:178:13",value:c.value,children:c.label},c.value))]}),e.jsxs("select",{"code-path":"src/pages/AuditOperationsTab.tsx:185:9",value:b,onChange:c=>N(c.target.value),className:"h-9 px-3 text-sm rounded-md bg-slate-800/50 border border-slate-700 text-slate-300 focus:outline-none focus:border-blue-500",children:[e.jsx("option",{"code-path":"src/pages/AuditOperationsTab.tsx:190:11",value:"",children:"全部操作"}),r.map(c=>e.jsx("option",{"code-path":"src/pages/AuditOperationsTab.tsx:192:13",value:c.value,children:c.label},c.value))]}),e.jsxs(v,{"code-path":"src/pages/AuditOperationsTab.tsx:198:9",variant:"outline",className:"border-slate-700 text-slate-300 hover:text-slate-100 hover:bg-slate-800",onClick:C,children:[e.jsx(J,{"code-path":"src/pages/AuditOperationsTab.tsx:203:11",className:"h-4 w-4 mr-2"}),"刷新"]}),e.jsxs(v,{"code-path":"src/pages/AuditOperationsTab.tsx:206:9",variant:"outline",className:"border-slate-700 text-slate-300 hover:text-slate-100 hover:bg-slate-800",onClick:Q,children:[e.jsx(Ne,{"code-path":"src/pages/AuditOperationsTab.tsx:211:11",className:"h-4 w-4 mr-2"}),"导出"]})]}),e.jsx(K,{"code-path":"src/pages/AuditOperationsTab.tsx:217:7",className:"bg-slate-900 border-slate-800",children:e.jsx(U,{"code-path":"src/pages/AuditOperationsTab.tsx:218:9",className:"p-0",children:e.jsx("div",{"code-path":"src/pages/AuditOperationsTab.tsx:219:11",className:"border-t border-slate-800",children:d?e.jsx("div",{"code-path":"src/pages/AuditOperationsTab.tsx:221:15",className:"flex items-center justify-center py-16",children:e.jsx("div",{"code-path":"src/pages/AuditOperationsTab.tsx:222:17",className:"w-8 h-8 border-2 border-blue-500 border-t-transparent rounded-full animate-spin"})}):h.length===0?e.jsxs("div",{"code-path":"src/pages/AuditOperationsTab.tsx:225:15",className:"flex flex-col items-center justify-center py-16 text-slate-500",children:[e.jsx(B,{"code-path":"src/pages/AuditOperationsTab.tsx:226:17",className:"h-8 w-8 mb-3 opacity-40"}),e.jsx("p",{"code-path":"src/pages/AuditOperationsTab.tsx:227:17",className:"text-sm",children:"暂无操作日志"})]}):e.jsxs(W,{"code-path":"src/pages/AuditOperationsTab.tsx:230:15",children:[e.jsx(q,{"code-path":"src/pages/AuditOperationsTab.tsx:231:17",children:e.jsxs(E,{"code-path":"src/pages/AuditOperationsTab.tsx:232:19",className:"border-slate-800 hover:bg-transparent",children:[e.jsx(l,{"code-path":"src/pages/AuditOperationsTab.tsx:233:21",className:"text-slate-400",children:"时间"}),e.jsx(l,{"code-path":"src/pages/AuditOperationsTab.tsx:234:21",className:"text-slate-400",children:"用户"}),e.jsx(l,{"code-path":"src/pages/AuditOperationsTab.tsx:235:21",className:"text-slate-400",children:"模块"}),e.jsx(l,{"code-path":"src/pages/AuditOperationsTab.tsx:236:21",className:"text-slate-400",children:"操作类型"}),e.jsx(l,{"code-path":"src/pages/AuditOperationsTab.tsx:237:21",className:"text-slate-400",children:"资源"}),e.jsx(l,{"code-path":"src/pages/AuditOperationsTab.tsx:238:21",className:"text-slate-400",children:"IP"}),e.jsx(l,{"code-path":"src/pages/AuditOperationsTab.tsx:239:21",className:"text-slate-400",children:"结果"}),e.jsx(l,{"code-path":"src/pages/AuditOperationsTab.tsx:240:21",className:"text-slate-400 text-right",children:"详情"})]})}),e.jsx(G,{"code-path":"src/pages/AuditOperationsTab.tsx:243:17",children:h.map(c=>e.jsxs(E,{"code-path":"src/pages/AuditOperationsTab.tsx:245:21",className:"border-slate-800 hover:bg-slate-800/50",children:[e.jsx(o,{"code-path":"src/pages/AuditOperationsTab.tsx:246:23",children:e.jsx("span",{"code-path":"src/pages/AuditOperationsTab.tsx:247:25",className:"text-sm text-slate-400",children:c.createdAt?new Date(c.createdAt).toLocaleString():"--"})}),e.jsx(o,{"code-path":"src/pages/AuditOperationsTab.tsx:251:23",children:e.jsx("span",{"code-path":"src/pages/AuditOperationsTab.tsx:252:25",className:"text-sm text-slate-200",children:c.username||"--"})}),e.jsx(o,{"code-path":"src/pages/AuditOperationsTab.tsx:254:23",children:e.jsx("span",{"code-path":"src/pages/AuditOperationsTab.tsx:255:25",className:"text-sm text-slate-300",children:c.module||"--"})}),e.jsx(o,{"code-path":"src/pages/AuditOperationsTab.tsx:257:23",children:e.jsx(_,{"code-path":"src/pages/AuditOperationsTab.tsx:258:25",variant:"outline",className:"border-blue-500/30 text-blue-400 bg-blue-500/10",children:c.action||"--"})}),e.jsx(o,{"code-path":"src/pages/AuditOperationsTab.tsx:262:23",children:e.jsx("code",{"code-path":"src/pages/AuditOperationsTab.tsx:263:25",className:"text-xs text-slate-400 bg-slate-800 px-2 py-0.5 rounded",children:c.resource||"--"})}),e.jsx(o,{"code-path":"src/pages/AuditOperationsTab.tsx:267:23",children:e.jsx("span",{"code-path":"src/pages/AuditOperationsTab.tsx:268:25",className:"text-sm text-slate-400",children:c.ip||"--"})}),e.jsx(o,{"code-path":"src/pages/AuditOperationsTab.tsx:270:23",children:f(c.result)}),e.jsx(o,{"code-path":"src/pages/AuditOperationsTab.tsx:271:23",children:e.jsx("div",{"code-path":"src/pages/AuditOperationsTab.tsx:272:25",className:"flex items-center justify-end",children:e.jsx(v,{"code-path":"src/pages/AuditOperationsTab.tsx:273:27",variant:"ghost",size:"icon",className:"h-8 w-8 text-slate-400 hover:text-blue-400 hover:bg-slate-800",onClick:()=>Z(c),title:"查看详情",children:e.jsx(je,{"code-path":"src/pages/AuditOperationsTab.tsx:280:29",className:"h-4 w-4"})})})})]},c.id))})]})})})}),e.jsx(ts,{"code-path":"src/pages/AuditOperationsTab.tsx:294:7",log:O,onClose:()=>x(null)}),e.jsx(as,{"code-path":"src/pages/AuditOperationsTab.tsx:297:7",open:y,onClose:()=>D(!1),loading:R,stats:S})]})}function ts({log:s,onClose:i}){return s?e.jsxs("div",{"code-path":"src/pages/AuditOperationsTab.tsx:315:5",className:"fixed inset-0 z-50 flex items-center justify-center",children:[e.jsx("div",{"code-path":"src/pages/AuditOperationsTab.tsx:316:7",className:"absolute inset-0 bg-black/60",onClick:i}),e.jsxs("div",{"code-path":"src/pages/AuditOperationsTab.tsx:317:7",className:"relative bg-slate-900 border border-slate-800 rounded-lg p-6 max-w-lg w-full mx-4 shadow-2xl",children:[e.jsxs("div",{"code-path":"src/pages/AuditOperationsTab.tsx:318:9",className:"flex items-center justify-between mb-4",children:[e.jsx("h3",{"code-path":"src/pages/AuditOperationsTab.tsx:319:11",className:"text-lg font-semibold text-slate-100",children:"操作日志详情"}),e.jsx(v,{"code-path":"src/pages/AuditOperationsTab.tsx:320:11",variant:"ghost",size:"icon",className:"h-7 w-7 text-slate-400 hover:text-slate-100",onClick:i,children:e.jsx(fe,{"code-path":"src/pages/AuditOperationsTab.tsx:326:13",className:"h-4 w-4"})})]}),e.jsxs("div",{"code-path":"src/pages/AuditOperationsTab.tsx:330:9",className:"space-y-3 text-sm",children:[e.jsx(z,{"code-path":"src/pages/AuditOperationsTab.tsx:331:11",label:"ID",value:s.id}),e.jsx(z,{"code-path":"src/pages/AuditOperationsTab.tsx:332:11",label:"时间",value:s.createdAt?new Date(s.createdAt).toLocaleString():"--"}),e.jsx(z,{"code-path":"src/pages/AuditOperationsTab.tsx:333:11",label:"用户",value:s.username||"--"}),e.jsx(z,{"code-path":"src/pages/AuditOperationsTab.tsx:334:11",label:"用户ID",value:s.userId||"--"}),e.jsx(z,{"code-path":"src/pages/AuditOperationsTab.tsx:335:11",label:"模块",value:s.module||"--"}),e.jsx(z,{"code-path":"src/pages/AuditOperationsTab.tsx:336:11",label:"操作类型",value:s.action||"--"}),e.jsx(z,{"code-path":"src/pages/AuditOperationsTab.tsx:337:11",label:"资源",value:s.resource||"--"}),e.jsx(z,{"code-path":"src/pages/AuditOperationsTab.tsx:338:11",label:"IP地址",value:s.ip||"--"}),e.jsx(z,{"code-path":"src/pages/AuditOperationsTab.tsx:339:11",label:"User-Agent",value:s.userAgent||"--"}),e.jsx(z,{"code-path":"src/pages/AuditOperationsTab.tsx:340:11",label:"结果",value:e.jsx(_,{"code-path":"src/pages/AuditOperationsTab.tsx:343:15",variant:"outline",className:s.result==="success"?"border-emerald-500/30 text-emerald-400 bg-emerald-500/10":"border-red-500/30 text-red-400 bg-red-500/10",children:s.result==="success"?"成功":"失败"})}),s.message&&e.jsx(z,{"code-path":"src/pages/AuditOperationsTab.tsx:355:27",label:"详情",value:s.message,mono:!0})]}),e.jsx("div",{"code-path":"src/pages/AuditOperationsTab.tsx:358:9",className:"mt-5 flex justify-end",children:e.jsx(v,{"code-path":"src/pages/AuditOperationsTab.tsx:359:11",variant:"outline",className:"border-slate-700 text-slate-300 hover:bg-slate-800",onClick:i,children:"关闭"})})]})]}):null}function z({label:s,value:i,mono:d}){return e.jsxs("div",{"code-path":"src/pages/AuditOperationsTab.tsx:374:5",className:"flex items-start gap-4",children:[e.jsx("span",{"code-path":"src/pages/AuditOperationsTab.tsx:375:7",className:"text-slate-500 w-20 flex-shrink-0",children:s}),e.jsx("span",{"code-path":"src/pages/AuditOperationsTab.tsx:376:7",className:d?"text-slate-300 font-mono text-xs break-all":"text-slate-200 break-all",children:i})]})}function as({open:s,onClose:i,loading:d,stats:n}){return s?e.jsxs("div",{"code-path":"src/pages/AuditOperationsTab.tsx:401:5",className:"fixed inset-0 z-50 flex items-center justify-center",children:[e.jsx("div",{"code-path":"src/pages/AuditOperationsTab.tsx:402:7",className:"absolute inset-0 bg-black/60",onClick:i}),e.jsxs("div",{"code-path":"src/pages/AuditOperationsTab.tsx:403:7",className:"relative bg-slate-900 border border-slate-800 rounded-lg p-6 max-w-md w-full mx-4 shadow-2xl",children:[e.jsxs("div",{"code-path":"src/pages/AuditOperationsTab.tsx:404:9",className:"flex items-center justify-between mb-4",children:[e.jsx("h3",{"code-path":"src/pages/AuditOperationsTab.tsx:405:11",className:"text-lg font-semibold text-slate-100",children:"审计统计"}),e.jsx(v,{"code-path":"src/pages/AuditOperationsTab.tsx:406:11",variant:"ghost",size:"icon",className:"h-7 w-7 text-slate-400 hover:text-slate-100",onClick:i,children:e.jsx(fe,{"code-path":"src/pages/AuditOperationsTab.tsx:412:13",className:"h-4 w-4"})})]}),d?e.jsx("div",{"code-path":"src/pages/AuditOperationsTab.tsx:417:11",className:"flex items-center justify-center py-10",children:e.jsx("div",{"code-path":"src/pages/AuditOperationsTab.tsx:418:13",className:"w-8 h-8 border-2 border-blue-500 border-t-transparent rounded-full animate-spin"})}):n?e.jsxs("div",{"code-path":"src/pages/AuditOperationsTab.tsx:421:11",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/pages/AuditOperationsTab.tsx:422:13",className:"grid grid-cols-2 gap-3",children:[e.jsx(V,{"code-path":"src/pages/AuditOperationsTab.tsx:423:15",label:"总日志数",value:String(n.total_logs??"--"),color:"blue"}),e.jsx(V,{"code-path":"src/pages/AuditOperationsTab.tsx:424:15",label:"今日日志",value:String(n.today_count??"--"),color:"emerald"}),e.jsx(V,{"code-path":"src/pages/AuditOperationsTab.tsx:425:15",label:"成功数",value:String(n.success_count??"--"),color:"emerald"}),e.jsx(V,{"code-path":"src/pages/AuditOperationsTab.tsx:426:15",label:"失败数",value:String(n.failure_count??"--"),color:"red"})]}),n.top_modules&&n.top_modules.length>0&&e.jsxs("div",{"code-path":"src/pages/AuditOperationsTab.tsx:430:15",children:[e.jsx("h4",{"code-path":"src/pages/AuditOperationsTab.tsx:431:17",className:"text-xs font-semibold text-slate-400 mb-2",children:"热门模块"}),e.jsx("div",{"code-path":"src/pages/AuditOperationsTab.tsx:432:17",className:"space-y-1",children:n.top_modules.slice(0,5).map((p,g)=>e.jsxs("div",{"code-path":"src/pages/AuditOperationsTab.tsx:434:21",className:"flex justify-between text-xs",children:[e.jsx("span",{"code-path":"src/pages/AuditOperationsTab.tsx:435:23",className:"text-slate-300",children:p.module}),e.jsx("span",{"code-path":"src/pages/AuditOperationsTab.tsx:436:23",className:"text-slate-500",children:p.count})]},g))})]}),n.top_users&&n.top_users.length>0&&e.jsxs("div",{"code-path":"src/pages/AuditOperationsTab.tsx:444:15",children:[e.jsx("h4",{"code-path":"src/pages/AuditOperationsTab.tsx:445:17",className:"text-xs font-semibold text-slate-400 mb-2",children:"活跃用户"}),e.jsx("div",{"code-path":"src/pages/AuditOperationsTab.tsx:446:17",className:"space-y-1",children:n.top_users.slice(0,5).map((p,g)=>e.jsxs("div",{"code-path":"src/pages/AuditOperationsTab.tsx:448:21",className:"flex justify-between text-xs",children:[e.jsx("span",{"code-path":"src/pages/AuditOperationsTab.tsx:449:23",className:"text-slate-300",children:p.username}),e.jsx("span",{"code-path":"src/pages/AuditOperationsTab.tsx:450:23",className:"text-slate-500",children:p.count})]},g))})]})]}):e.jsx("p",{"code-path":"src/pages/AuditOperationsTab.tsx:458:11",className:"text-slate-500 text-center py-10 text-sm",children:"暂无统计数据"}),e.jsx("div",{"code-path":"src/pages/AuditOperationsTab.tsx:461:9",className:"mt-5 flex justify-end",children:e.jsx(v,{"code-path":"src/pages/AuditOperationsTab.tsx:462:11",variant:"outline",className:"border-slate-700 text-slate-300 hover:bg-slate-800",onClick:i,children:"关闭"})})]})]}):null}function V({label:s,value:i,color:d}){const n={blue:"border-blue-500/20 bg-blue-500/5 text-blue-400",emerald:"border-emerald-500/20 bg-emerald-500/5 text-emerald-400",red:"border-red-500/20 bg-red-500/5 text-red-400"};return e.jsxs("div",{"code-path":"src/pages/AuditOperationsTab.tsx:482:5",className:`rounded-lg border p-3 ${n[d]}`,children:[e.jsx("div",{"code-path":"src/pages/AuditOperationsTab.tsx:483:7",className:"text-xs text-slate-500",children:s}),e.jsx("div",{"code-path":"src/pages/AuditOperationsTab.tsx:484:7",className:"text-xl font-bold mt-0.5",children:i})]})}function rs(s){return{id:s.id??0,username:s.username??"",login_type:s.login_type??"password",ip:s.ip??"",location:s.location??"",browser:s.browser??"",os:s.os??"",user_agent:s.user_agent??s.userAgent??"",status:s.status==="failed"||s.status==="fail"?"fail":"success",fail_reason:s.fail_reason??s.message??"",login_at:s.login_at??s.created_at??"",created_at:s.created_at??s.login_at??""}}function cs(){const[s,i]=a.useState([]),[d,n]=a.useState(!0),[p,g]=a.useState(""),[m,w]=a.useState(""),b=a.useCallback(async()=>{n(!0);try{const r={page:1,page_size:100};m&&(r.status=m==="fail"?"failed":m);const O=(await Fe.list(r))?.list??[];i(O.map(rs))}catch{i([])}finally{n(!1)}},[m]);a.useEffect(()=>{b()},[b]);const N=s.filter(r=>{const u=p.toLowerCase();return!u||(r.username||"").toLowerCase().includes(u)||(r.ip||"").toLowerCase().includes(u)||(r.location||"").toLowerCase().includes(u)||(r.user_agent||"").toLowerCase().includes(u)}),T=(r,u)=>r==="success"?e.jsx(_,{"code-path":"src/pages/LoginLogsTab.tsx:88:7",variant:"outline",className:"border-emerald-500/30 text-emerald-400 bg-emerald-500/10",children:"成功"}):e.jsx(_,{"code-path":"src/pages/LoginLogsTab.tsx:92:7",variant:"outline",className:"border-red-500/30 text-red-400 bg-red-500/10",title:u||void 0,children:u||"失败"}),j=r=>{switch(r){case"password":return"密码登录";case"ldap":return"LDAP";case"token":return"Token";case"oauth":return"OAuth";default:return r||"密码登录"}};return e.jsxs("div",{"code-path":"src/pages/LoginLogsTab.tsx:113:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/pages/LoginLogsTab.tsx:115:7",className:"flex items-center gap-3 flex-wrap",children:[e.jsxs("div",{"code-path":"src/pages/LoginLogsTab.tsx:116:9",className:"relative w-64",children:[e.jsx(B,{"code-path":"src/pages/LoginLogsTab.tsx:117:11",className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-slate-500"}),e.jsx(F,{"code-path":"src/pages/LoginLogsTab.tsx:118:11",placeholder:"搜索用户/IP/归属地...",value:p,onChange:r=>g(r.target.value),className:"pl-9 h-9 bg-slate-800/50 border-slate-700 text-slate-200 placeholder:text-slate-500"})]}),e.jsx("div",{"code-path":"src/pages/LoginLogsTab.tsx:126:9",className:"flex items-center gap-1",children:[{value:"",label:"全部"},{value:"success",label:"成功"},{value:"fail",label:"失败"}].map(({value:r,label:u})=>e.jsx(v,{"code-path":"src/pages/LoginLogsTab.tsx:132:13",variant:m===r?"default":"outline",size:"sm",className:m===r?"h-8 bg-blue-600 hover:bg-blue-700 text-white":"h-8 border-slate-700 text-slate-400 hover:text-slate-100 hover:bg-slate-800",onClick:()=>w(r),children:u},r||"all"))}),e.jsxs(v,{"code-path":"src/pages/LoginLogsTab.tsx:148:9",variant:"outline",className:"border-slate-700 text-slate-300 hover:text-slate-100 hover:bg-slate-800",onClick:b,children:[e.jsx(J,{"code-path":"src/pages/LoginLogsTab.tsx:153:11",className:"h-4 w-4 mr-2"}),"刷新"]})]}),e.jsx(K,{"code-path":"src/pages/LoginLogsTab.tsx:159:7",className:"bg-slate-900 border-slate-800",children:e.jsx(U,{"code-path":"src/pages/LoginLogsTab.tsx:160:9",className:"p-0",children:e.jsx("div",{"code-path":"src/pages/LoginLogsTab.tsx:161:11",className:"border-t border-slate-800",children:d?e.jsx("div",{"code-path":"src/pages/LoginLogsTab.tsx:163:15",className:"flex items-center justify-center py-16",children:e.jsx("div",{"code-path":"src/pages/LoginLogsTab.tsx:164:17",className:"w-8 h-8 border-2 border-blue-500 border-t-transparent rounded-full animate-spin"})}):N.length===0?e.jsxs("div",{"code-path":"src/pages/LoginLogsTab.tsx:167:15",className:"flex flex-col items-center justify-center py-16 text-slate-500",children:[e.jsx(Ee,{"code-path":"src/pages/LoginLogsTab.tsx:168:17",className:"h-8 w-8 mb-3 opacity-40"}),e.jsx("p",{"code-path":"src/pages/LoginLogsTab.tsx:169:17",className:"text-sm",children:"暂无登录日志"})]}):e.jsxs(W,{"code-path":"src/pages/LoginLogsTab.tsx:172:15",children:[e.jsx(q,{"code-path":"src/pages/LoginLogsTab.tsx:173:17",children:e.jsxs(E,{"code-path":"src/pages/LoginLogsTab.tsx:174:19",className:"border-slate-800 hover:bg-transparent",children:[e.jsx(l,{"code-path":"src/pages/LoginLogsTab.tsx:175:21",className:"text-slate-400",children:"登录时间"}),e.jsx(l,{"code-path":"src/pages/LoginLogsTab.tsx:176:21",className:"text-slate-400",children:"用户"}),e.jsx(l,{"code-path":"src/pages/LoginLogsTab.tsx:177:21",className:"text-slate-400",children:"登录方式"}),e.jsx(l,{"code-path":"src/pages/LoginLogsTab.tsx:178:21",className:"text-slate-400",children:"IP"}),e.jsx(l,{"code-path":"src/pages/LoginLogsTab.tsx:179:21",className:"text-slate-400",children:"归属地"}),e.jsx(l,{"code-path":"src/pages/LoginLogsTab.tsx:180:21",className:"text-slate-400",children:"浏览器/OS"}),e.jsx(l,{"code-path":"src/pages/LoginLogsTab.tsx:181:21",className:"text-slate-400",children:"状态"})]})}),e.jsx(G,{"code-path":"src/pages/LoginLogsTab.tsx:184:17",children:N.map(r=>e.jsxs(E,{"code-path":"src/pages/LoginLogsTab.tsx:186:21",className:"border-slate-800 hover:bg-slate-800/50",children:[e.jsx(o,{"code-path":"src/pages/LoginLogsTab.tsx:187:23",children:e.jsx("span",{"code-path":"src/pages/LoginLogsTab.tsx:188:25",className:"text-sm text-slate-400",children:r.login_at?new Date(r.login_at).toLocaleString():"--"})}),e.jsx(o,{"code-path":"src/pages/LoginLogsTab.tsx:192:23",children:e.jsx("span",{"code-path":"src/pages/LoginLogsTab.tsx:193:25",className:"text-sm text-slate-200 font-medium",children:r.username||"--"})}),e.jsx(o,{"code-path":"src/pages/LoginLogsTab.tsx:195:23",children:e.jsx(_,{"code-path":"src/pages/LoginLogsTab.tsx:196:25",variant:"outline",className:"border-blue-500/30 text-blue-400 bg-blue-500/10 text-xs",children:j(r.login_type)})}),e.jsx(o,{"code-path":"src/pages/LoginLogsTab.tsx:200:23",children:e.jsx("code",{"code-path":"src/pages/LoginLogsTab.tsx:201:25",className:"text-xs text-slate-400 bg-slate-800 px-2 py-0.5 rounded",children:r.ip||"--"})}),e.jsx(o,{"code-path":"src/pages/LoginLogsTab.tsx:205:23",children:e.jsxs("span",{"code-path":"src/pages/LoginLogsTab.tsx:206:25",className:"text-xs text-slate-500 flex items-center gap-1",children:[e.jsx(Ie,{"code-path":"src/pages/LoginLogsTab.tsx:207:27",className:"h-3 w-3"}),r.location||"--"]})}),e.jsx(o,{"code-path":"src/pages/LoginLogsTab.tsx:211:23",children:e.jsxs("span",{"code-path":"src/pages/LoginLogsTab.tsx:212:25",className:"text-xs text-slate-500 flex items-center gap-1",title:r.user_agent,children:[e.jsx(Y,{"code-path":"src/pages/LoginLogsTab.tsx:213:27",className:"h-3 w-3 flex-shrink-0"}),r.browser||r.os?[r.browser,r.os].filter(Boolean).join(" / "):r.user_agent?r.user_agent.length>40?r.user_agent.slice(0,40)+"...":r.user_agent:"--"]})}),e.jsx(o,{"code-path":"src/pages/LoginLogsTab.tsx:223:23",children:T(r.status,r.fail_reason)})]},r.id))})]})})})})]})}function Ts(){const{pathname:s}=Be();return console.debug("[AuditPage v2] pathname:",s),s.includes("/audit/terminal")?e.jsx(de,{"code-path":"src/pages/AuditPage.tsx:11:52"}):s.includes("/audit/operations")?e.jsx(ss,{"code-path":"src/pages/AuditPage.tsx:12:54"}):s.includes("/audit/login-logs")?e.jsx(cs,{"code-path":"src/pages/AuditPage.tsx:13:54"}):e.jsx(de,{"code-path":"src/pages/AuditPage.tsx:15:10"})}export{Ts as AuditPage}; diff --git a/backend/static/assets/BarChart-DlFprovY.js b/backend/static/assets/BarChart-CLIO1OEu.js similarity index 79% rename from backend/static/assets/BarChart-DlFprovY.js rename to backend/static/assets/BarChart-CLIO1OEu.js index 3d09032..19375b2 100644 --- a/backend/static/assets/BarChart-DlFprovY.js +++ b/backend/static/assets/BarChart-CLIO1OEu.js @@ -1 +1 @@ -import{g as a,B as i,X as s,Y as t,f as e}from"./generateCategoricalChart-6v9BPbG2.js";var x=a({chartName:"BarChart",GraphicalChild:i,defaultTooltipEventType:"axis",validateTooltipEventTypes:["axis","item"],axisComponents:[{axisType:"xAxis",AxisComp:s},{axisType:"yAxis",AxisComp:t}],formatAxisMap:e});export{x as B}; +import{g as a,B as i,X as s,Y as t,f as e}from"./generateCategoricalChart-ZqCvxO-S.js";var x=a({chartName:"BarChart",GraphicalChild:i,defaultTooltipEventType:"axis",validateTooltipEventTypes:["axis","item"],axisComponents:[{axisType:"xAxis",AxisComp:s},{axisType:"yAxis",AxisComp:t}],formatAxisMap:e});export{x as B}; diff --git a/backend/static/assets/CapacityPage-BUj-xHWD.js b/backend/static/assets/CapacityPage-BUj-xHWD.js new file mode 100644 index 0000000..845fb67 --- /dev/null +++ b/backend/static/assets/CapacityPage-BUj-xHWD.js @@ -0,0 +1 @@ +import{k as E,m as D,r as c,j as e,n as k,o as j,J as H,B as P,p as N}from"./index-Dmami9WE.js";import{C as L,a as M}from"./card-CIfC-8Rh.js";import{B as z}from"./badge-3UzCvU7L.js";import{S as f,a as v,b as S,c as w,d as x}from"./select-DUbxjT0z.js";import{T as U,a as F,b as d,c as r,d as I,e as n}from"./table-CG4mjNfb.js";import{k as p}from"./kubernetes-D2-GnE0t.js";import{R as J}from"./refresh-cw-CTBERyFc.js";import{D as G}from"./download-Vuij9wGr.js";import{H as _}from"./hard-drive-DmC04Y5r.js";import"./index-CtCQcvyh.js";import"./chevron-up-Cq4GPopa.js";function ce(){const{clusterCode:$}=E(),h=D(),[l,u]=c.useState(!1),[b,g]=c.useState([]),[q,T]=c.useState([]),[A,R]=c.useState([]),[o,V]=c.useState("all"),[a,C]=c.useState($||"");c.useEffect(()=>{p.getClusters().then(s=>{const t=s?.list||[];if(T(t),!a&&t.length>0){const y=t[0].code||String(t[0].id);C(y),h(`/kubernetes/${y}/capacity`,{replace:!0})}}).catch(()=>{})},[]),c.useEffect(()=>{a&&p.getNamespaces(a).then(s=>{R(Array.isArray(s)?s:s?.list||s?.data||[])}).catch(()=>{})},[a]);const i=c.useCallback(async()=>{if(a){u(!0);try{const s=o==="all"?void 0:o,t=await p.getCapacity(a,s);g(Array.isArray(t)?t:t?.list||[])}catch{g([])}finally{u(!1)}}},[a,o]);c.useEffect(()=>{i()},[i]);const m=c.useMemo(()=>b.flatMap(s=>(s.containers||[]).map(t=>({namespace:s.namespace,deployment:s.name,replicas:s.replicas,container:t.name,cpu_req:t.cpu_request||"-",cpu_lim:t.cpu_limit||"-",mem_req:t.mem_request||"-",mem_lim:t.mem_limit||"-"}))),[b]),B=()=>p.exportAsCSV(`capacity-${a}.csv`,m);return e.jsxs("div",{"code-path":"src/components/kubernetes/CapacityPage.tsx:73:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/CapacityPage.tsx:74:7",className:"flex items-center gap-2 text-sm text-slate-500",children:[e.jsx(k,{"code-path":"src/components/kubernetes/CapacityPage.tsx:75:9",to:"/kubernetes",className:"hover:text-slate-300",children:"集群"}),a&&e.jsxs(e.Fragment,{children:[e.jsx(j,{"code-path":"src/components/kubernetes/CapacityPage.tsx:76:29",className:"h-3 w-3"}),e.jsx(k,{"code-path":"src/components/kubernetes/CapacityPage.tsx:76:65",to:`/kubernetes/${a}`,className:"hover:text-slate-300",children:a})]}),e.jsx(j,{"code-path":"src/components/kubernetes/CapacityPage.tsx:77:9",className:"h-3 w-3"}),e.jsx("span",{"code-path":"src/components/kubernetes/CapacityPage.tsx:77:45",className:"text-slate-300",children:"容量分析"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/CapacityPage.tsx:80:7",className:"flex items-center justify-between flex-wrap gap-3",children:[e.jsxs("h2",{"code-path":"src/components/kubernetes/CapacityPage.tsx:81:9",className:"text-lg font-semibold text-slate-100 flex items-center gap-2",children:[e.jsx(H,{"code-path":"src/components/kubernetes/CapacityPage.tsx:81:86",className:"h-5 w-5 text-purple-400"}),"资源容量分析"]}),e.jsxs("div",{"code-path":"src/components/kubernetes/CapacityPage.tsx:82:9",className:"flex items-center gap-2",children:[e.jsxs(f,{"code-path":"src/components/kubernetes/CapacityPage.tsx:83:11",value:a,onValueChange:s=>{C(s),h(`/kubernetes/${s}/capacity`)},children:[e.jsx(v,{"code-path":"src/components/kubernetes/CapacityPage.tsx:84:13",className:"w-40 h-8 text-xs bg-slate-800 border-slate-700",children:e.jsx(S,{"code-path":"src/components/kubernetes/CapacityPage.tsx:84:87"})}),e.jsx(w,{"code-path":"src/components/kubernetes/CapacityPage.tsx:85:13",className:"bg-slate-800 border-slate-700",children:q.map(s=>e.jsx(x,{"code-path":"src/components/kubernetes/CapacityPage.tsx:86:42",value:s.code||String(s.id),className:"text-xs",children:s.name||s.code},s.id))})]}),e.jsxs(f,{"code-path":"src/components/kubernetes/CapacityPage.tsx:89:11",value:o,onValueChange:V,children:[e.jsx(v,{"code-path":"src/components/kubernetes/CapacityPage.tsx:90:13",className:"w-32 h-8 text-xs bg-slate-800 border-slate-700",children:e.jsx(S,{"code-path":"src/components/kubernetes/CapacityPage.tsx:90:87",placeholder:"所有命名空间"})}),e.jsxs(w,{"code-path":"src/components/kubernetes/CapacityPage.tsx:91:13",className:"bg-slate-800 border-slate-700",children:[e.jsx(x,{"code-path":"src/components/kubernetes/CapacityPage.tsx:92:15",value:"all",className:"text-xs",children:"所有命名空间"}),A.map(s=>e.jsx(x,{"code-path":"src/components/kubernetes/CapacityPage.tsx:93:36",value:s,className:"text-xs",children:s},s))]})]}),e.jsxs(P,{"code-path":"src/components/kubernetes/CapacityPage.tsx:96:11",variant:"outline",size:"sm",className:"h-8 border-slate-700 text-slate-300 text-xs",onClick:i,disabled:l,children:[e.jsx(J,{"code-path":"src/components/kubernetes/CapacityPage.tsx:97:13",className:`h-3 w-3 mr-1 ${l?"animate-spin":""}`}),"刷新"]}),e.jsxs(P,{"code-path":"src/components/kubernetes/CapacityPage.tsx:99:11",variant:"outline",size:"sm",className:"h-8 border-slate-700 text-slate-300 text-xs",onClick:B,children:[e.jsx(G,{"code-path":"src/components/kubernetes/CapacityPage.tsx:100:13",className:"h-3 w-3 mr-1"}),"CSV"]})]})]}),e.jsx(L,{"code-path":"src/components/kubernetes/CapacityPage.tsx:105:7",className:"bg-slate-900 border-slate-800",children:e.jsx(M,{"code-path":"src/components/kubernetes/CapacityPage.tsx:106:9",className:"p-0",children:e.jsxs(U,{"code-path":"src/components/kubernetes/CapacityPage.tsx:107:11",children:[e.jsx(F,{"code-path":"src/components/kubernetes/CapacityPage.tsx:108:13",children:e.jsxs(d,{"code-path":"src/components/kubernetes/CapacityPage.tsx:108:26",className:"border-slate-800 hover:bg-transparent",children:[e.jsx(r,{"code-path":"src/components/kubernetes/CapacityPage.tsx:109:15",className:"text-slate-400",children:"Deployment"}),e.jsx(r,{"code-path":"src/components/kubernetes/CapacityPage.tsx:110:15",className:"text-slate-400",children:"命名空间"}),e.jsx(r,{"code-path":"src/components/kubernetes/CapacityPage.tsx:111:15",className:"text-slate-400",children:"副本"}),e.jsx(r,{"code-path":"src/components/kubernetes/CapacityPage.tsx:112:15",className:"text-slate-400",children:"容器"}),e.jsxs(r,{"code-path":"src/components/kubernetes/CapacityPage.tsx:113:15",className:"text-slate-400",children:[e.jsx(N,{"code-path":"src/components/kubernetes/CapacityPage.tsx:113:53",className:"h-3 w-3 inline mr-1"}),"CPU Req"]}),e.jsxs(r,{"code-path":"src/components/kubernetes/CapacityPage.tsx:114:15",className:"text-slate-400",children:[e.jsx(N,{"code-path":"src/components/kubernetes/CapacityPage.tsx:114:53",className:"h-3 w-3 inline mr-1"}),"CPU Lim"]}),e.jsxs(r,{"code-path":"src/components/kubernetes/CapacityPage.tsx:115:15",className:"text-slate-400",children:[e.jsx(_,{"code-path":"src/components/kubernetes/CapacityPage.tsx:115:53",className:"h-3 w-3 inline mr-1"}),"Mem Req"]}),e.jsxs(r,{"code-path":"src/components/kubernetes/CapacityPage.tsx:116:15",className:"text-slate-400",children:[e.jsx(_,{"code-path":"src/components/kubernetes/CapacityPage.tsx:116:53",className:"h-3 w-3 inline mr-1"}),"Mem Lim"]})]})}),e.jsx(I,{"code-path":"src/components/kubernetes/CapacityPage.tsx:118:13",children:m.length===0?e.jsx(d,{"code-path":"src/components/kubernetes/CapacityPage.tsx:120:17",children:e.jsxs(n,{"code-path":"src/components/kubernetes/CapacityPage.tsx:120:27",colSpan:8,className:"text-center text-slate-500 py-8",children:["暂无数据",l?e.jsx("span",{"code-path":"src/components/kubernetes/CapacityPage.tsx:120:109",className:"animate-spin inline-block ml-2",children:"⏳"}):""]})}):m.map((s,t)=>e.jsxs(d,{"code-path":"src/components/kubernetes/CapacityPage.tsx:122:17",className:"border-slate-800 hover:bg-slate-800/30",children:[e.jsx(n,{"code-path":"src/components/kubernetes/CapacityPage.tsx:123:19",className:"font-medium text-slate-200 text-sm",children:s.deployment}),e.jsx(n,{"code-path":"src/components/kubernetes/CapacityPage.tsx:124:19",children:e.jsx(z,{"code-path":"src/components/kubernetes/CapacityPage.tsx:124:30",variant:"outline",className:"border-slate-700 text-slate-400 text-xs",children:s.namespace})}),e.jsx(n,{"code-path":"src/components/kubernetes/CapacityPage.tsx:125:19",className:"text-sm text-slate-300",children:s.replicas}),e.jsx(n,{"code-path":"src/components/kubernetes/CapacityPage.tsx:126:19",className:"text-sm text-slate-400",children:s.container}),e.jsx(n,{"code-path":"src/components/kubernetes/CapacityPage.tsx:127:19",className:`text-sm ${s.cpu_req!=="-"?"text-blue-400":"text-slate-600"}`,children:s.cpu_req}),e.jsx(n,{"code-path":"src/components/kubernetes/CapacityPage.tsx:128:19",className:`text-sm ${s.cpu_lim!=="-"?"text-cyan-400":"text-slate-600"}`,children:s.cpu_lim}),e.jsx(n,{"code-path":"src/components/kubernetes/CapacityPage.tsx:129:19",className:`text-sm ${s.mem_req!=="-"?"text-emerald-400":"text-slate-600"}`,children:s.mem_req}),e.jsx(n,{"code-path":"src/components/kubernetes/CapacityPage.tsx:130:19",className:`text-sm ${s.mem_lim!=="-"?"text-teal-400":"text-slate-600"}`,children:s.mem_lim})]},`${s.deployment}-${s.container}-${t}`))})]})})})]})}export{ce as default}; diff --git a/backend/static/assets/CapacityPage-Dz7l4ubk.js b/backend/static/assets/CapacityPage-Dz7l4ubk.js deleted file mode 100644 index 66320b8..0000000 --- a/backend/static/assets/CapacityPage-Dz7l4ubk.js +++ /dev/null @@ -1 +0,0 @@ -import{i as E,k as D,r as c,j as e,m as k,n as j,K as H,B as P,o as N}from"./index-DfyorCky.js";import{C as L,a as M}from"./card-C55cvSHg.js";import{B as z}from"./badge-xNW8x0G1.js";import{S as f,a as v,b as S,c as w,d as x}from"./select-D5qUzdAs.js";import{T as U,a as F,b as d,c as r,d as I,e as n}from"./table-5sHV4Akp.js";import{k as p}from"./kubernetes-J8O09fK7.js";import{R as K}from"./refresh-cw-DUB_tAG-.js";import{D as G}from"./download-DoZfYs2h.js";import{H as _}from"./hard-drive-BbPmnARR.js";import"./index-CWVNW_qu.js";function ae(){const{clusterCode:$}=E(),h=D(),[l,u]=c.useState(!1),[b,g]=c.useState([]),[q,T]=c.useState([]),[A,R]=c.useState([]),[o,V]=c.useState("all"),[a,C]=c.useState($||"");c.useEffect(()=>{p.getClusters().then(s=>{const t=s?.list||[];if(T(t),!a&&t.length>0){const y=t[0].code||String(t[0].id);C(y),h(`/kubernetes/${y}/capacity`,{replace:!0})}}).catch(()=>{})},[]),c.useEffect(()=>{a&&p.getNamespaces(a).then(s=>{R(Array.isArray(s)?s:s?.list||s?.data||[])}).catch(()=>{})},[a]);const i=c.useCallback(async()=>{if(a){u(!0);try{const s=o==="all"?void 0:o,t=await p.getCapacity(a,s);g(Array.isArray(t)?t:t?.list||[])}catch{g([])}finally{u(!1)}}},[a,o]);c.useEffect(()=>{i()},[i]);const m=c.useMemo(()=>b.flatMap(s=>(s.containers||[]).map(t=>({namespace:s.namespace,deployment:s.name,replicas:s.replicas,container:t.name,cpu_req:t.cpu_request||"-",cpu_lim:t.cpu_limit||"-",mem_req:t.mem_request||"-",mem_lim:t.mem_limit||"-"}))),[b]),B=()=>p.exportAsCSV(`capacity-${a}.csv`,m);return e.jsxs("div",{"code-path":"src/components/kubernetes/CapacityPage.tsx:73:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/CapacityPage.tsx:74:7",className:"flex items-center gap-2 text-sm text-slate-500",children:[e.jsx(k,{"code-path":"src/components/kubernetes/CapacityPage.tsx:75:9",to:"/kubernetes",className:"hover:text-slate-300",children:"集群"}),a&&e.jsxs(e.Fragment,{children:[e.jsx(j,{"code-path":"src/components/kubernetes/CapacityPage.tsx:76:29",className:"h-3 w-3"}),e.jsx(k,{"code-path":"src/components/kubernetes/CapacityPage.tsx:76:65",to:`/kubernetes/${a}`,className:"hover:text-slate-300",children:a})]}),e.jsx(j,{"code-path":"src/components/kubernetes/CapacityPage.tsx:77:9",className:"h-3 w-3"}),e.jsx("span",{"code-path":"src/components/kubernetes/CapacityPage.tsx:77:45",className:"text-slate-300",children:"容量分析"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/CapacityPage.tsx:80:7",className:"flex items-center justify-between flex-wrap gap-3",children:[e.jsxs("h2",{"code-path":"src/components/kubernetes/CapacityPage.tsx:81:9",className:"text-lg font-semibold text-slate-100 flex items-center gap-2",children:[e.jsx(H,{"code-path":"src/components/kubernetes/CapacityPage.tsx:81:86",className:"h-5 w-5 text-purple-400"}),"资源容量分析"]}),e.jsxs("div",{"code-path":"src/components/kubernetes/CapacityPage.tsx:82:9",className:"flex items-center gap-2",children:[e.jsxs(f,{"code-path":"src/components/kubernetes/CapacityPage.tsx:83:11",value:a,onValueChange:s=>{C(s),h(`/kubernetes/${s}/capacity`)},children:[e.jsx(v,{"code-path":"src/components/kubernetes/CapacityPage.tsx:84:13",className:"w-40 h-8 text-xs bg-slate-800 border-slate-700",children:e.jsx(S,{"code-path":"src/components/kubernetes/CapacityPage.tsx:84:87"})}),e.jsx(w,{"code-path":"src/components/kubernetes/CapacityPage.tsx:85:13",className:"bg-slate-800 border-slate-700",children:q.map(s=>e.jsx(x,{"code-path":"src/components/kubernetes/CapacityPage.tsx:86:42",value:s.code||String(s.id),className:"text-xs",children:s.name||s.code},s.id))})]}),e.jsxs(f,{"code-path":"src/components/kubernetes/CapacityPage.tsx:89:11",value:o,onValueChange:V,children:[e.jsx(v,{"code-path":"src/components/kubernetes/CapacityPage.tsx:90:13",className:"w-32 h-8 text-xs bg-slate-800 border-slate-700",children:e.jsx(S,{"code-path":"src/components/kubernetes/CapacityPage.tsx:90:87",placeholder:"所有命名空间"})}),e.jsxs(w,{"code-path":"src/components/kubernetes/CapacityPage.tsx:91:13",className:"bg-slate-800 border-slate-700",children:[e.jsx(x,{"code-path":"src/components/kubernetes/CapacityPage.tsx:92:15",value:"all",className:"text-xs",children:"所有命名空间"}),A.map(s=>e.jsx(x,{"code-path":"src/components/kubernetes/CapacityPage.tsx:93:36",value:s,className:"text-xs",children:s},s))]})]}),e.jsxs(P,{"code-path":"src/components/kubernetes/CapacityPage.tsx:96:11",variant:"outline",size:"sm",className:"h-8 border-slate-700 text-slate-300 text-xs",onClick:i,disabled:l,children:[e.jsx(K,{"code-path":"src/components/kubernetes/CapacityPage.tsx:97:13",className:`h-3 w-3 mr-1 ${l?"animate-spin":""}`}),"刷新"]}),e.jsxs(P,{"code-path":"src/components/kubernetes/CapacityPage.tsx:99:11",variant:"outline",size:"sm",className:"h-8 border-slate-700 text-slate-300 text-xs",onClick:B,children:[e.jsx(G,{"code-path":"src/components/kubernetes/CapacityPage.tsx:100:13",className:"h-3 w-3 mr-1"}),"CSV"]})]})]}),e.jsx(L,{"code-path":"src/components/kubernetes/CapacityPage.tsx:105:7",className:"bg-slate-900 border-slate-800",children:e.jsx(M,{"code-path":"src/components/kubernetes/CapacityPage.tsx:106:9",className:"p-0",children:e.jsxs(U,{"code-path":"src/components/kubernetes/CapacityPage.tsx:107:11",children:[e.jsx(F,{"code-path":"src/components/kubernetes/CapacityPage.tsx:108:13",children:e.jsxs(d,{"code-path":"src/components/kubernetes/CapacityPage.tsx:108:26",className:"border-slate-800 hover:bg-transparent",children:[e.jsx(r,{"code-path":"src/components/kubernetes/CapacityPage.tsx:109:15",className:"text-slate-400",children:"Deployment"}),e.jsx(r,{"code-path":"src/components/kubernetes/CapacityPage.tsx:110:15",className:"text-slate-400",children:"命名空间"}),e.jsx(r,{"code-path":"src/components/kubernetes/CapacityPage.tsx:111:15",className:"text-slate-400",children:"副本"}),e.jsx(r,{"code-path":"src/components/kubernetes/CapacityPage.tsx:112:15",className:"text-slate-400",children:"容器"}),e.jsxs(r,{"code-path":"src/components/kubernetes/CapacityPage.tsx:113:15",className:"text-slate-400",children:[e.jsx(N,{"code-path":"src/components/kubernetes/CapacityPage.tsx:113:53",className:"h-3 w-3 inline mr-1"}),"CPU Req"]}),e.jsxs(r,{"code-path":"src/components/kubernetes/CapacityPage.tsx:114:15",className:"text-slate-400",children:[e.jsx(N,{"code-path":"src/components/kubernetes/CapacityPage.tsx:114:53",className:"h-3 w-3 inline mr-1"}),"CPU Lim"]}),e.jsxs(r,{"code-path":"src/components/kubernetes/CapacityPage.tsx:115:15",className:"text-slate-400",children:[e.jsx(_,{"code-path":"src/components/kubernetes/CapacityPage.tsx:115:53",className:"h-3 w-3 inline mr-1"}),"Mem Req"]}),e.jsxs(r,{"code-path":"src/components/kubernetes/CapacityPage.tsx:116:15",className:"text-slate-400",children:[e.jsx(_,{"code-path":"src/components/kubernetes/CapacityPage.tsx:116:53",className:"h-3 w-3 inline mr-1"}),"Mem Lim"]})]})}),e.jsx(I,{"code-path":"src/components/kubernetes/CapacityPage.tsx:118:13",children:m.length===0?e.jsx(d,{"code-path":"src/components/kubernetes/CapacityPage.tsx:120:17",children:e.jsxs(n,{"code-path":"src/components/kubernetes/CapacityPage.tsx:120:27",colSpan:8,className:"text-center text-slate-500 py-8",children:["暂无数据",l?e.jsx("span",{"code-path":"src/components/kubernetes/CapacityPage.tsx:120:109",className:"animate-spin inline-block ml-2",children:"⏳"}):""]})}):m.map((s,t)=>e.jsxs(d,{"code-path":"src/components/kubernetes/CapacityPage.tsx:122:17",className:"border-slate-800 hover:bg-slate-800/30",children:[e.jsx(n,{"code-path":"src/components/kubernetes/CapacityPage.tsx:123:19",className:"font-medium text-slate-200 text-sm",children:s.deployment}),e.jsx(n,{"code-path":"src/components/kubernetes/CapacityPage.tsx:124:19",children:e.jsx(z,{"code-path":"src/components/kubernetes/CapacityPage.tsx:124:30",variant:"outline",className:"border-slate-700 text-slate-400 text-xs",children:s.namespace})}),e.jsx(n,{"code-path":"src/components/kubernetes/CapacityPage.tsx:125:19",className:"text-sm text-slate-300",children:s.replicas}),e.jsx(n,{"code-path":"src/components/kubernetes/CapacityPage.tsx:126:19",className:"text-sm text-slate-400",children:s.container}),e.jsx(n,{"code-path":"src/components/kubernetes/CapacityPage.tsx:127:19",className:`text-sm ${s.cpu_req!=="-"?"text-blue-400":"text-slate-600"}`,children:s.cpu_req}),e.jsx(n,{"code-path":"src/components/kubernetes/CapacityPage.tsx:128:19",className:`text-sm ${s.cpu_lim!=="-"?"text-cyan-400":"text-slate-600"}`,children:s.cpu_lim}),e.jsx(n,{"code-path":"src/components/kubernetes/CapacityPage.tsx:129:19",className:`text-sm ${s.mem_req!=="-"?"text-emerald-400":"text-slate-600"}`,children:s.mem_req}),e.jsx(n,{"code-path":"src/components/kubernetes/CapacityPage.tsx:130:19",className:`text-sm ${s.mem_lim!=="-"?"text-teal-400":"text-slate-600"}`,children:s.mem_lim})]},`${s.deployment}-${s.container}-${t}`))})]})})})]})}export{ae as default}; diff --git a/backend/static/assets/CloudAccountManager-DU9759_X.js b/backend/static/assets/CloudAccountManager-DU9759_X.js deleted file mode 100644 index b4b4d37..0000000 --- a/backend/static/assets/CloudAccountManager-DU9759_X.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e,r as a,B as p,s as S,P as f,S as $,I as C,D as G,b as X,c as Z,d as q,e as J,f as U,L as Y}from"./index-DfyorCky.js";import{L as x}from"./label-BK0h2apY.js";import{C as r,a as d}from"./card-C55cvSHg.js";import{B as v}from"./badge-xNW8x0G1.js";import{c as N}from"./cloud-Dzoer-2i.js";import{R as k}from"./refresh-cw-DUB_tAG-.js";import{P as L}from"./plus-CUG-9kpu.js";import{C as B}from"./circle-check-DWcXrx2k.js";import{C as D}from"./circle-x-DK79Dhg2.js";import{P}from"./pencil-BqUotcjf.js";import{T as ee}from"./trash-2-Dx32pOzT.js";const E={aws:{viewBox:"0 0 24 24",color:"#FF9900",path:"M6.763 10.036c0 .296.032.535.088.71.064.176.144.368.256.576.04.063.056.127.056.183 0 .08-.048.16-.152.24l-.503.335a.383.383 0 0 1-.208.072c-.08 0-.16-.04-.24-.112a2.47 2.47 0 0 1-.288-.375 6.18 6.18 0 0 1-.248-.471c-.622.734-1.405 1.101-2.347 1.101-.671 0-1.205-.191-1.596-.574-.391-.384-.59-.894-.59-1.533 0-.678.239-1.23.726-1.644.487-.415 1.133-.623 1.955-.623.272 0 .551.024.846.064.296.04.6.104.918.176v-.583c0-.607-.127-1.03-.375-1.277-.255-.248-.686-.367-1.3-.367-.28 0-.568.031-.863.103-.295.072-.583.16-.862.272a2.287 2.287 0 0 1-.28.104.488.488 0 0 1-.127.023c-.112 0-.168-.08-.168-.247v-.391c0-.128.016-.224.056-.28a.597.597 0 0 1 .224-.167c.279-.144.614-.264 1.005-.36a4.84 4.84 0 0 1 1.246-.151c.95 0 1.644.216 2.091.647.439.43.662 1.085.662 1.963v2.586zm-3.24 1.21c.265 0 .538-.048.822-.144.283-.096.535-.271.742-.51.128-.152.224-.32.264-.512.04-.191.072-.423.072-.694v-.335a6.66 6.66 0 0 0-.735-.136 6.02 6.02 0 0 0-.75-.048c-.535 0-.926.104-1.19.32-.263.215-.39.518-.39.917 0 .375.095.654.295.846.191.2.47.296.838.296zm3.89.527c-.073 0-.12-.016-.152-.048-.032-.024-.064-.08-.088-.152L6.155 5.563a.715.715 0 0 1-.032-.16c0-.128.064-.2.192.2h.703c.08 0 .136.016.168.048.032.024.064.08.088.152l1.348 5.298 1.252-5.298c.024-.08.056-.128.088-.152a.355.355 0 0 1 .176-.048h.575c.08 0 .136.016.176.048.032.024.072.08.088.152l1.268 5.362 1.39-5.362c.024-.08.056-.128.088-.152a.344.344 0 0 1 .168-.048h.67c.128 0 .2.072.2.2 0 .04-.008.072-.016.112 0 0-.04.128-.088.152l-1.916 6.15c-.032.08-.064.128-.096.152a.355.355 0 0 1-.176.048h-.622c-.08 0-.136-.016-.176-.048-.032-.024-.064-.08-.088-.152l-1.26-5.186-1.252 5.178c-.024.08-.056.128-.088.152a.355.355 0 0 1-.176.048h-.623zm9.166.215c-.367 0-.734-.04-1.094-.127-.359-.088-.638-.184-.822-.296-.112-.064-.191-.136-.223-.2a.498.498 0 0 1-.032-.128v-.399c0-.167.064-.247.183-.247a.45.45 0 0 1 .144.024c.048.016.12.048.2.08.271.12.566.215.878.279.319.064.63.096.95.096.502 0 .893-.088 1.164-.264a.86.86 0 0 0 .415-.758.777.777 0 0 0-.215-.55c-.144-.151-.423-.287-.83-.415l-1.188-.367c-.598-.192-1.044-.471-1.316-.838a1.95 1.95 0 0 1-.415-1.205c0-.351.072-.662.215-.918.144-.255.335-.479.575-.654.24-.184.51-.319.822-.415.311-.096.638-.136.982-.136.176 0 .36.008.535.032.184.024.351.056.518.088.152.04.303.08.439.127.136.048.24.096.311.144a.66.66 0 0 1 .176.144.298.298 0 0 1 .048.184v.359c0 .168-.064.256-.183.256a.83.83 0 0 1-.304-.096 3.68 3.68 0 0 0-1.548-.311c-.463 0-.83.072-1.085.231-.255.16-.39.4-.39.743 0 .351.128.59.383.758.255.168.702.335 1.331.48.583.135 1.005.311 1.268.518.263.207.39.495.39.862 0 .367-.128.662-.375.902-.247.247-.67.375-1.26.375zm2.004 1.332c-2.637 1.948-6.488 2.984-9.793 2.984-4.635 0-8.81-1.715-11.966-4.566-.255-.224-.024-.335.271-.144 3.41 1.987 7.622 3.183 11.966 3.183 2.936 0 6.158-.61 9.119-1.876.44-.207.815.287.383.615zm1.078-1.23c-.336-.431-2.223-.2-3.073-.103-.255.024-.295-.192-.064-.351 1.5-1.053 3.962-.75 4.246-.4.287.359-.08 2.824-1.484 4.004-.215.184-.423.088-.319-.151.311-.774 1.005-2.51.662-2.956v-.443z"},azure:{viewBox:"0 0 24 24",color:"#0078D4",path:"M5.483 21.3H24L14.025 4.013l-3.022 5.915 5.99 9.357H8.787l-3.304 6.015zM8.7 3.197L0 21.3h6.395l4.49-8.51L8.7 3.196z"},gcp:{viewBox:"0 0 24 24",color:"#4285F4",path:"M12.19 2.38a9.344 9.344 0 0 0-9.234 6.893c.053-.02-.055.013 0 0-3.875 2.551-3.922 8.11-.247 10.941l.006-.007-.007.03a6.717 6.717 0 0 0 4.077 1.356h5.173l.03.03h5.192c6.687.053 9.376-8.605 3.835-12.35a9.365 9.365 0 0 0-2.821-4.552l-.043.043.006-.05A9.344 9.344 0 0 0 12.19 2.38zm-.358 4.146c1.244-.04 2.518.368 3.486 1.15a5.186 5.186 0 0 1 1.862 4.078v.518c3.53-.07 3.53 5.262 0 5.193h-5.193l-.008.009v-.04H6.785a2.59 2.59 0 0 1-1.067-.23h.001a2.597 2.597 0 1 1 3.437-3.437l3.013-3.012A6.747 6.747 0 0 0 8.11 8.24c.018-.01.04-.026.054-.023a5.186 5.186 0 0 1 3.67-1.69z"},aliyun:{viewBox:"0 0 24 24",color:"#FF6A00",path:"M3.996 4.517h5.291L8.01 6.324 4.153 7.506a1.668 1.668 0 0 0-1.165 1.601v5.786a1.668 1.668 0 0 0 1.165 1.6l3.857 1.183 1.277 1.807H3.996A3.996 3.996 0 0 1 0 15.487V8.513a3.996 3.996 0 0 1 3.996-3.996m16.008 0h-5.291l1.277 1.807 3.857 1.182c.715.227 1.17.889 1.165 1.601v5.786a1.668 1.668 0 0 1-1.165 1.6l-3.857 1.183-1.277 1.807h5.291A3.996 3.996 0 0 0 24 15.487V8.513a3.996 3.996 0 0 0-3.996-3.996m-4.007 8.345H8.002v-1.804h7.995Z"},tencent:{viewBox:"220 60 620 430",color:"#006EFF",paths:[{fill:"#006EFF",d:"M685.3,188.5c-24.7-66.3-88-110.4-158.8-110.5c-84.8,0-152.2,62.8-165.3,140.8c6.5,0,13.1-2.1,21.8-2.1c8.7,0,19.6,2.1,28.3,2.1c10.9-54.2,58.7-93.2,115.3-93.2c47.8,0,89.2,28.2,108.7,69.3c0,0,2.2,2.2,2.2,0C652.6,192.8,670,188.5,685.3,188.5L685.3,188.5"},{fill:"#00C8DC",d:"M456.9,242.6c-23.9-17.3-47.9-26-76.1-26c-33.9,0-66.2,14.2-89.2,39c-48.4,49.7-47.4,129.2,2.2,177.7c21.7,19.5,43.5,30.3,69.6,32.5l50-47.7h-28.3c-28.3-2.1-45.7-10.8-56.5-21.6c-30-29.6-30.9-77.6-2.2-108.3c15.2-15.2,32.6-21.7,54.4-21.7c13.1,0,32.6,2.1,52.2,21.6c8.7,8.7,32.6,26,41.3,34.7h2.1l32.6-32.5v-2.2C493.9,273,470,253.5,456.9,242.6"},{fill:"#00A3FF",d:"M724.4,396.5c-8.7,8.7-26.1,21.7-56.5,21.7h-187c56.5-54.1,104.4-99.6,108.8-104c8.3-8.4,17-16.3,26.1-23.8c21.8-19.5,39.1-21.7,54.4-21.7c21.7,0,39.1,8.7,54.4,21.6C754.9,318.5,754.9,368.4,724.4,396.5z M761.4,255.6c-23-24.8-55.3-39-89.2-39c-30.4,0-56.5,10.9-80.5,28.2c-8.8,8.7-21.8,17.3-32.7,30.3c-8.7,8.7-195.7,190.7-195.7,190.7c10.9,2.2,23.9,2.2,34.8,2.2h237.1c17.4,0,30.5,0,43.5-2.2c30-2.2,58.3-14.4,80.5-34.7C809.2,383.5,809.2,303.4,761.4,255.6L761.4,255.6"}]},huawei:{viewBox:"0 0 24 24",color:"#FF0000",path:"M3.67 6.14S1.82 7.91 1.72 9.78v.35c.08 1.51 1.22 2.4 1.22 2.4 1.83 1.79 6.26 4.04 7.3 4.55 0 0 .06.03.1-.01l.02-.04v-.04C7.52 10.8 3.67 6.14 3.67 6.14zM9.65 18.6c-.02-.08-.1-.08-.1-.08l-7.38.26c.8 1.43 2.15 2.53 3.56 2.2.96-.25 3.16-1.78 3.88-2.3.06-.05.04-.09.04-.09zm.08-.78C6.49 15.63.21 12.28.21 12.28c-.15.46-.2.9-.21 1.3v.07c0 1.07.4 1.82.4 1.82.8 1.69 2.34 2.2 2.34 2.2.7.3 1.4.31 1.4.31.12.02 4.4 0 5.54 0 .05 0 .08-.05.08-.05v-.06c0-.03-.03-.05-.03-.05zM9.06 3.19a3.42 3.42 0 00-2.57 3.15v.41c.03.6.16 1.05.16 1.05.66 2.9 3.86 7.65 4.55 8.65.05.05.1.03.1.03a.1.1 0 00.06-.1c1.06-10.6-1.11-13.42-1.11-13.42-.32.02-1.19.23-1.19.23zm8.299 2.27s-.49-1.8-2.44-2.28c0 0-.57-.14-1.17-.22 0 0-2.18 2.81-1.12 13.43.01.07.06.08.06.08.07.03.1-.03.1-.03.72-1.03 3.9-5.76 4.55-8.64 0 0 .36-1.4.02-2.34zm-2.92 13.07s-.07 0-.09.05c0 0-.01.07.03.1.7.51 2.85 2 3.88 2.3 0 0 .16.05.43.06h.14c.69-.02 1.9-.37 3-2.26l-7.4-.25zm7.83-8.41c.14-2.06-1.94-3.97-1.94-3.98 0 0-3.85 4.66-6.67 10.8 0 0-.03.08.02.13l.04.01h.06c1.06-.53 5.46-2.77 7.28-4.54 0 0 1.15-.93 1.21-2.42zm1.52 2.14s-6.28 3.37-9.52 5.55c0 0-.05.04-.03.11 0 0 .03.06.07.06 1.16 0 5.56 0 5.67-.02 0 0 .57-.02 1.27-.29 0 0 1.56-.5 2.37-2.27 0 0 .73-1.45.17-3.14z"}};function ce({provider:t,className:m="h-5 w-5"}){const n=E[t]||E.aliyun;return e.jsx("svg",{"code-path":"src/components/icons/CloudBrandIcon.tsx:69:5",className:m,viewBox:n.viewBox,fill:"currentColor",style:{color:n.color},role:"img","aria-label":t,children:n.paths?n.paths.map((h,i)=>e.jsx("path",{"code-path":"src/components/icons/CloudBrandIcon.tsx:79:11",d:h.d,fill:h.fill||"currentColor"},i)):e.jsx("path",{"code-path":"src/components/icons/CloudBrandIcon.tsx:82:9",d:n.path})})}function se(t){return{aws:"#FF9900",azure:"#0078D4",gcp:"#4285F4",aliyun:"#FF6A00",tencent:"#006EFF",huawei:"#FF0000"}[t]||"#64748B"}const te={aws:"AWS",aliyun:"阿里云",tencent:"腾讯云",huawei:"华为云",azure:"Azure",gcp:"GCP"};function ie(){const[t,m]=a.useState([]),[n,h]=a.useState(!0),[i,I]=a.useState(""),[b,K]=a.useState("all"),[H,g]=a.useState(!1),[w,z]=a.useState(!1),[o,_]=a.useState(null),[s,l]=a.useState({name:"",provider:"aliyun",access_key:"",secret_key:"",monthly_cost:"",status:"active"}),O=()=>{_(null),l({name:"",provider:"aliyun",access_key:"",secret_key:"",monthly_cost:"",status:"active"})},T=()=>{O(),g(!0)},R=c=>{_(c),l({name:c.name||"",provider:c.provider||"aliyun",access_key:"",secret_key:"",monthly_cost:String(c.monthly_cost??0),status:c.status||"active"}),g(!0)},W=async()=>{if(!(!s.name.trim()||!s.provider.trim()))try{z(!0);const c={name:s.name.trim(),provider:s.provider,access_key:s.access_key.trim(),secret_key:s.secret_key.trim(),monthly_cost:Number(s.monthly_cost)||0,status:s.status};o?await N.updateAccount(o.id,c):await N.createAccount(c),g(!1),A()}catch(c){console.error(o?"更新云账号失败:":"创建云账号失败:",c)}finally{z(!1)}},A=async()=>{try{h(!0);const c=await N.getAccounts();m(c?.list||[])}catch(c){console.error("加载云账号列表失败:",c),m([])}finally{h(!1)}};a.useEffect(()=>{A()},[]);const Q=async c=>{try{await N.deleteAccount(c),A()}catch(u){console.error("删除云账号失败:",u)}},F=t.filter(c=>{const u=c.access_key||c.accessKey||"",y=(c.name||"").toLowerCase().includes(i.toLowerCase())||u.toLowerCase().includes(i.toLowerCase()),M=b==="all"||c.provider===b;return y&&M}),j={total:t.length,active:t.filter(c=>c.status==="active").length,inactive:t.filter(c=>c.status==="inactive").length,error:t.filter(c=>c.status==="error").length};return e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:156:5",className:"space-y-6",children:[e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:158:7",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:159:9",children:[e.jsx("h1",{"code-path":"src/components/cloud/CloudAccountManager.tsx:160:11",className:"text-2xl font-bold text-slate-100",children:"云账号管理"}),e.jsx("p",{"code-path":"src/components/cloud/CloudAccountManager.tsx:161:11",className:"text-slate-400 mt-1",children:"管理多云平台的访问凭证和账号信息"})]}),e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:163:9",className:"flex items-center gap-2",children:[e.jsxs(p,{"code-path":"src/components/cloud/CloudAccountManager.tsx:164:11",variant:"outline",onClick:A,className:"border-slate-700 text-slate-300",children:[e.jsx(k,{"code-path":"src/components/cloud/CloudAccountManager.tsx:165:13",className:`h-4 w-4 mr-2 ${n?"animate-spin":""}`}),"刷新"]}),e.jsxs(p,{"code-path":"src/components/cloud/CloudAccountManager.tsx:168:11",className:"bg-blue-600 hover:bg-blue-700",onClick:T,children:[e.jsx(L,{"code-path":"src/components/cloud/CloudAccountManager.tsx:169:13",className:"h-4 w-4 mr-2"}),"添加账号"]})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:176:7",className:"grid grid-cols-4 gap-4",children:[e.jsx(r,{"code-path":"src/components/cloud/CloudAccountManager.tsx:177:9",className:"bg-slate-800 border-slate-700",children:e.jsx(d,{"code-path":"src/components/cloud/CloudAccountManager.tsx:178:11",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:179:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:180:15",children:[e.jsx("p",{"code-path":"src/components/cloud/CloudAccountManager.tsx:181:17",className:"text-slate-400 text-sm",children:"账号总数"}),e.jsx("p",{"code-path":"src/components/cloud/CloudAccountManager.tsx:182:17",className:"text-2xl font-bold text-slate-100 mt-1",children:j.total})]}),e.jsx("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:184:15",className:"w-10 h-10 rounded-lg bg-blue-500/20 flex items-center justify-center",children:e.jsx(S,{"code-path":"src/components/cloud/CloudAccountManager.tsx:185:17",className:"h-5 w-5 text-blue-400"})})]})})}),e.jsx(r,{"code-path":"src/components/cloud/CloudAccountManager.tsx:190:9",className:"bg-slate-800 border-slate-700",children:e.jsx(d,{"code-path":"src/components/cloud/CloudAccountManager.tsx:191:11",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:192:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:193:15",children:[e.jsx("p",{"code-path":"src/components/cloud/CloudAccountManager.tsx:194:17",className:"text-slate-400 text-sm",children:"正常"}),e.jsx("p",{"code-path":"src/components/cloud/CloudAccountManager.tsx:195:17",className:"text-2xl font-bold text-green-400 mt-1",children:j.active})]}),e.jsx("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:197:15",className:"w-10 h-10 rounded-lg bg-green-500/20 flex items-center justify-center",children:e.jsx(B,{"code-path":"src/components/cloud/CloudAccountManager.tsx:198:17",className:"h-5 w-5 text-green-400"})})]})})}),e.jsx(r,{"code-path":"src/components/cloud/CloudAccountManager.tsx:203:9",className:"bg-slate-800 border-slate-700",children:e.jsx(d,{"code-path":"src/components/cloud/CloudAccountManager.tsx:204:11",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:205:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:206:15",children:[e.jsx("p",{"code-path":"src/components/cloud/CloudAccountManager.tsx:207:17",className:"text-slate-400 text-sm",children:"已停用"}),e.jsx("p",{"code-path":"src/components/cloud/CloudAccountManager.tsx:208:17",className:"text-2xl font-bold text-slate-400 mt-1",children:j.inactive})]}),e.jsx("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:210:15",className:"w-10 h-10 rounded-lg bg-slate-500/20 flex items-center justify-center",children:e.jsx(D,{"code-path":"src/components/cloud/CloudAccountManager.tsx:211:17",className:"h-5 w-5 text-slate-400"})})]})})}),e.jsx(r,{"code-path":"src/components/cloud/CloudAccountManager.tsx:216:9",className:"bg-slate-800 border-slate-700",children:e.jsx(d,{"code-path":"src/components/cloud/CloudAccountManager.tsx:217:11",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:218:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:219:15",children:[e.jsx("p",{"code-path":"src/components/cloud/CloudAccountManager.tsx:220:17",className:"text-slate-400 text-sm",children:"异常"}),e.jsx("p",{"code-path":"src/components/cloud/CloudAccountManager.tsx:221:17",className:"text-2xl font-bold text-red-400 mt-1",children:j.error})]}),e.jsx("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:223:15",className:"w-10 h-10 rounded-lg bg-red-500/20 flex items-center justify-center",children:e.jsx(f,{"code-path":"src/components/cloud/CloudAccountManager.tsx:224:17",className:"h-5 w-5 text-red-400"})})]})})})]}),e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:232:7",className:"flex items-center gap-4",children:[e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:233:9",className:"relative flex-1 max-w-md",children:[e.jsx($,{"code-path":"src/components/cloud/CloudAccountManager.tsx:234:11",className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-slate-400"}),e.jsx(C,{"code-path":"src/components/cloud/CloudAccountManager.tsx:235:11",placeholder:"搜索账号名称或AccessKey...",value:i,onChange:c=>I(c.target.value),className:"pl-10 bg-slate-800 border-slate-700 text-slate-100"})]}),e.jsxs("select",{"code-path":"src/components/cloud/CloudAccountManager.tsx:242:9",value:b,onChange:c=>K(c.target.value),className:"px-3 py-2 bg-slate-800 border border-slate-700 rounded-md text-slate-100 text-sm",children:[e.jsx("option",{"code-path":"src/components/cloud/CloudAccountManager.tsx:247:11",value:"all",children:"全部平台"}),e.jsx("option",{"code-path":"src/components/cloud/CloudAccountManager.tsx:248:11",value:"aws",children:"AWS"}),e.jsx("option",{"code-path":"src/components/cloud/CloudAccountManager.tsx:249:11",value:"aliyun",children:"阿里云"}),e.jsx("option",{"code-path":"src/components/cloud/CloudAccountManager.tsx:250:11",value:"tencent",children:"腾讯云"}),e.jsx("option",{"code-path":"src/components/cloud/CloudAccountManager.tsx:251:11",value:"huawei",children:"华为云"}),e.jsx("option",{"code-path":"src/components/cloud/CloudAccountManager.tsx:252:11",value:"azure",children:"Azure"})]})]}),n?e.jsx(r,{"code-path":"src/components/cloud/CloudAccountManager.tsx:258:9",className:"bg-slate-800 border-slate-700",children:e.jsxs(d,{"code-path":"src/components/cloud/CloudAccountManager.tsx:259:11",className:"p-12 text-center text-slate-500",children:[e.jsx(k,{"code-path":"src/components/cloud/CloudAccountManager.tsx:260:13",className:"h-6 w-6 animate-spin mx-auto mb-3"}),"加载中..."]})}):F.length===0?e.jsx(r,{"code-path":"src/components/cloud/CloudAccountManager.tsx:265:9",className:"bg-slate-800 border-slate-700",children:e.jsx(d,{"code-path":"src/components/cloud/CloudAccountManager.tsx:266:11",className:"p-12 text-center text-slate-500",children:"暂无云账号数据"})}):e.jsx("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:269:9",className:"grid grid-cols-2 gap-4",children:F.map(c=>{const u=c.access_key||c.accessKey||"",y=c.server_count??c.serverCount??0,M=c.last_sync||c.lastSync||c.created_at||"-",V=c.monthly_cost??c.monthlyCost??0;return e.jsx(r,{"code-path":"src/components/cloud/CloudAccountManager.tsx:276:15",className:"bg-slate-800 border-slate-700",children:e.jsxs(d,{"code-path":"src/components/cloud/CloudAccountManager.tsx:277:17",className:"p-4",children:[e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:278:19",className:"flex items-start justify-between",children:[e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:279:21",className:"flex items-start gap-3",children:[e.jsx("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:280:23",className:"w-10 h-10 rounded-lg bg-slate-800 flex items-center justify-center",style:{borderBottom:`2px solid ${se(c.provider)}`},children:e.jsx(ce,{"code-path":"src/components/cloud/CloudAccountManager.tsx:281:25",provider:c.provider,className:"h-6 w-6"})}),e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:283:23",children:[e.jsx("h3",{"code-path":"src/components/cloud/CloudAccountManager.tsx:284:25",className:"font-medium text-slate-100",children:c.name}),e.jsx("p",{"code-path":"src/components/cloud/CloudAccountManager.tsx:285:25",className:"text-sm text-slate-400 mt-0.5",children:te[c.provider]||c.provider}),e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:286:25",className:"flex items-center gap-3 mt-2",children:[u&&e.jsxs(v,{"code-path":"src/components/cloud/CloudAccountManager.tsx:288:29",variant:"secondary",className:"bg-slate-700 text-slate-300",children:[e.jsx(f,{"code-path":"src/components/cloud/CloudAccountManager.tsx:289:31",className:"h-3 w-3 mr-1"}),u.slice(0,8),"..."]}),c.status==="active"&&e.jsxs(v,{"code-path":"src/components/cloud/CloudAccountManager.tsx:294:29",className:"bg-green-500/20 text-green-400 border-0",children:[e.jsx(B,{"code-path":"src/components/cloud/CloudAccountManager.tsx:295:31",className:"h-3 w-3 mr-1"}),"正常"]}),c.status==="inactive"&&e.jsxs(v,{"code-path":"src/components/cloud/CloudAccountManager.tsx:300:29",className:"bg-slate-500/20 text-slate-400 border-0",children:[e.jsx(D,{"code-path":"src/components/cloud/CloudAccountManager.tsx:301:31",className:"h-3 w-3 mr-1"}),"已停用"]}),c.status==="error"&&e.jsxs(v,{"code-path":"src/components/cloud/CloudAccountManager.tsx:306:29",className:"bg-red-500/20 text-red-400 border-0",children:[e.jsx(f,{"code-path":"src/components/cloud/CloudAccountManager.tsx:307:31",className:"h-3 w-3 mr-1"}),"异常"]})]})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:314:21",className:"flex items-center gap-1",children:[e.jsx(p,{"code-path":"src/components/cloud/CloudAccountManager.tsx:315:23",variant:"ghost",size:"icon",className:"h-8 w-8 text-slate-400 hover:text-blue-400",onClick:()=>R(c),children:e.jsx(P,{"code-path":"src/components/cloud/CloudAccountManager.tsx:321:25",className:"h-4 w-4"})}),e.jsx(p,{"code-path":"src/components/cloud/CloudAccountManager.tsx:323:23",variant:"ghost",size:"icon",className:"h-8 w-8 text-slate-400 hover:text-red-400",onClick:()=>Q(c.id),children:e.jsx(ee,{"code-path":"src/components/cloud/CloudAccountManager.tsx:329:25",className:"h-4 w-4"})})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:333:19",className:"grid grid-cols-3 gap-4 mt-4 pt-4 border-t border-slate-700",children:[e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:334:21",children:[e.jsx("p",{"code-path":"src/components/cloud/CloudAccountManager.tsx:335:23",className:"text-xs text-slate-400",children:"月费用"}),e.jsxs("p",{"code-path":"src/components/cloud/CloudAccountManager.tsx:336:23",className:"text-lg font-medium text-emerald-400",children:["¥",Number(V).toLocaleString()]})]}),e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:338:21",children:[e.jsx("p",{"code-path":"src/components/cloud/CloudAccountManager.tsx:339:23",className:"text-xs text-slate-400",children:"服务器数"}),e.jsx("p",{"code-path":"src/components/cloud/CloudAccountManager.tsx:340:23",className:"text-lg font-medium text-slate-100",children:y})]}),e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:342:21",children:[e.jsx("p",{"code-path":"src/components/cloud/CloudAccountManager.tsx:343:23",className:"text-xs text-slate-400",children:"最后同步"}),e.jsx("p",{"code-path":"src/components/cloud/CloudAccountManager.tsx:344:23",className:"text-sm text-slate-300",children:M!=="-"?new Date(M).toLocaleString():"-"})]})]})]})},c.id)})}),e.jsx(G,{"code-path":"src/components/cloud/CloudAccountManager.tsx:357:7",open:H,onOpenChange:g,children:e.jsxs(X,{"code-path":"src/components/cloud/CloudAccountManager.tsx:358:9",className:"bg-slate-800 border-slate-700 text-slate-100 max-w-lg",children:[e.jsxs(Z,{"code-path":"src/components/cloud/CloudAccountManager.tsx:359:11",children:[e.jsxs(q,{"code-path":"src/components/cloud/CloudAccountManager.tsx:360:13",className:"text-slate-100 flex items-center gap-2",children:[e.jsx(S,{"code-path":"src/components/cloud/CloudAccountManager.tsx:361:15",className:"h-5 w-5 text-blue-400"}),o?"编辑云账号":"添加云账号"]}),e.jsx(J,{"code-path":"src/components/cloud/CloudAccountManager.tsx:364:13",className:"text-slate-400",children:o?"修改账号信息和访问凭证,留空则保持原凭证不变":"录入多云平台的访问凭证,用于资源同步与成本统计"})]}),e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:369:11",className:"space-y-4 py-2",children:[e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:370:13",className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:371:15",className:"space-y-1.5",children:[e.jsxs(x,{"code-path":"src/components/cloud/CloudAccountManager.tsx:372:17",className:"text-slate-300",children:["账号名称 ",e.jsx("span",{"code-path":"src/components/cloud/CloudAccountManager.tsx:373:24",className:"text-red-400",children:"*"})]}),e.jsx(C,{"code-path":"src/components/cloud/CloudAccountManager.tsx:375:17",placeholder:"阿里云生产账号",value:s.name,onChange:c=>l({...s,name:c.target.value}),className:"bg-slate-900 border-slate-700 text-slate-100 placeholder:text-slate-500"})]}),e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:382:15",className:"space-y-1.5",children:[e.jsxs(x,{"code-path":"src/components/cloud/CloudAccountManager.tsx:383:17",className:"text-slate-300",children:["云平台 ",e.jsx("span",{"code-path":"src/components/cloud/CloudAccountManager.tsx:384:23",className:"text-red-400",children:"*"})]}),e.jsxs("select",{"code-path":"src/components/cloud/CloudAccountManager.tsx:386:17",value:s.provider,onChange:c=>l({...s,provider:c.target.value}),className:"w-full px-3 py-2 bg-slate-900 border border-slate-700 rounded-md text-slate-100 text-sm",children:[e.jsx("option",{"code-path":"src/components/cloud/CloudAccountManager.tsx:391:19",value:"aliyun",children:"阿里云"}),e.jsx("option",{"code-path":"src/components/cloud/CloudAccountManager.tsx:392:19",value:"tencent",children:"腾讯云"}),e.jsx("option",{"code-path":"src/components/cloud/CloudAccountManager.tsx:393:19",value:"aws",children:"AWS"}),e.jsx("option",{"code-path":"src/components/cloud/CloudAccountManager.tsx:394:19",value:"huawei",children:"华为云"}),e.jsx("option",{"code-path":"src/components/cloud/CloudAccountManager.tsx:395:19",value:"azure",children:"Azure"})]})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:400:13",className:"space-y-1.5",children:[e.jsxs(x,{"code-path":"src/components/cloud/CloudAccountManager.tsx:401:15",className:"text-slate-300",children:["AccessKey",o&&e.jsx("span",{"code-path":"src/components/cloud/CloudAccountManager.tsx:403:36",className:"text-xs text-slate-500 ml-2",children:"留空保持不变"})]}),e.jsx(C,{"code-path":"src/components/cloud/CloudAccountManager.tsx:405:15",placeholder:"LTAI...",value:s.access_key,onChange:c=>l({...s,access_key:c.target.value}),className:"bg-slate-900 border-slate-700 text-slate-100 placeholder:text-slate-500 font-mono text-sm"})]}),e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:413:13",className:"space-y-1.5",children:[e.jsxs(x,{"code-path":"src/components/cloud/CloudAccountManager.tsx:414:15",className:"text-slate-300",children:["SecretKey",o&&e.jsx("span",{"code-path":"src/components/cloud/CloudAccountManager.tsx:416:36",className:"text-xs text-slate-500 ml-2",children:"留空保持不变"})]}),e.jsx(C,{"code-path":"src/components/cloud/CloudAccountManager.tsx:418:15",type:"password",placeholder:"••••••••",value:s.secret_key,onChange:c=>l({...s,secret_key:c.target.value}),className:"bg-slate-900 border-slate-700 text-slate-100 placeholder:text-slate-500 font-mono text-sm"})]}),e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:427:13",className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:428:15",className:"space-y-1.5",children:[e.jsx(x,{"code-path":"src/components/cloud/CloudAccountManager.tsx:429:17",className:"text-slate-300",children:"月费用 (元)"}),e.jsx(C,{"code-path":"src/components/cloud/CloudAccountManager.tsx:430:17",type:"number",min:"0",placeholder:"0",value:s.monthly_cost,onChange:c=>l({...s,monthly_cost:c.target.value}),className:"bg-slate-900 border-slate-700 text-slate-100 placeholder:text-slate-500"})]}),e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:439:15",className:"space-y-1.5",children:[e.jsx(x,{"code-path":"src/components/cloud/CloudAccountManager.tsx:440:17",className:"text-slate-300",children:"状态"}),e.jsxs("select",{"code-path":"src/components/cloud/CloudAccountManager.tsx:441:17",value:s.status,onChange:c=>l({...s,status:c.target.value}),className:"w-full px-3 py-2 bg-slate-900 border border-slate-700 rounded-md text-slate-100 text-sm",children:[e.jsx("option",{"code-path":"src/components/cloud/CloudAccountManager.tsx:446:19",value:"active",children:"正常"}),e.jsx("option",{"code-path":"src/components/cloud/CloudAccountManager.tsx:447:19",value:"inactive",children:"已停用"}),e.jsx("option",{"code-path":"src/components/cloud/CloudAccountManager.tsx:448:19",value:"error",children:"异常"})]})]})]})]}),e.jsxs(U,{"code-path":"src/components/cloud/CloudAccountManager.tsx:454:11",children:[e.jsx(p,{"code-path":"src/components/cloud/CloudAccountManager.tsx:455:13",variant:"outline",onClick:()=>g(!1),className:"border-slate-700 text-slate-300 hover:bg-slate-700",children:"取消"}),e.jsxs(p,{"code-path":"src/components/cloud/CloudAccountManager.tsx:458:13",className:"bg-blue-600 hover:bg-blue-700",disabled:!s.name.trim()||w,onClick:W,children:[w?e.jsx(Y,{"code-path":"src/components/cloud/CloudAccountManager.tsx:463:29",className:"h-4 w-4 mr-2 animate-spin"}):o?e.jsx(P,{"code-path":"src/components/cloud/CloudAccountManager.tsx:463:98",className:"h-4 w-4 mr-2"}):e.jsx(L,{"code-path":"src/components/cloud/CloudAccountManager.tsx:463:136",className:"h-4 w-4 mr-2"}),o?"保存修改":"创建账号"]})]})]})})]})}export{ie as CloudAccountManager}; diff --git a/backend/static/assets/CloudAccountManager-DraLE_6Y.js b/backend/static/assets/CloudAccountManager-DraLE_6Y.js new file mode 100644 index 0000000..856c2b7 --- /dev/null +++ b/backend/static/assets/CloudAccountManager-DraLE_6Y.js @@ -0,0 +1 @@ +import{j as e,r as a,B as d,Y as _,D as R,a as W,b as Q,c as V,s as $,d as G,e as X,L as Y}from"./index-Dmami9WE.js";import{I as h}from"./input-NsU9nXZF.js";import{L as u}from"./label-Ap_-SPYI.js";import{C as N,a as y}from"./card-CIfC-8Rh.js";import{B as A}from"./badge-3UzCvU7L.js";import{c as v}from"./cloud-Dq4kl-JO.js";import{R as F}from"./refresh-cw-CTBERyFc.js";import{P as S}from"./plus-O65gX7Qz.js";import{S as Z}from"./search-Dd-PeBfg.js";import{C as q}from"./circle-check-CVbTTFQ0.js";import{C as J}from"./circle-x-BBQeW1R3.js";import{P as k}from"./pencil-BYahlvYT.js";import{T as U}from"./trash-2-DWVnIU6o.js";const L={aws:{viewBox:"0 0 24 24",color:"#FF9900",path:"M6.763 10.036c0 .296.032.535.088.71.064.176.144.368.256.576.04.063.056.127.056.183 0 .08-.048.16-.152.24l-.503.335a.383.383 0 0 1-.208.072c-.08 0-.16-.04-.24-.112a2.47 2.47 0 0 1-.288-.375 6.18 6.18 0 0 1-.248-.471c-.622.734-1.405 1.101-2.347 1.101-.671 0-1.205-.191-1.596-.574-.391-.384-.59-.894-.59-1.533 0-.678.239-1.23.726-1.644.487-.415 1.133-.623 1.955-.623.272 0 .551.024.846.064.296.04.6.104.918.176v-.583c0-.607-.127-1.03-.375-1.277-.255-.248-.686-.367-1.3-.367-.28 0-.568.031-.863.103-.295.072-.583.16-.862.272a2.287 2.287 0 0 1-.28.104.488.488 0 0 1-.127.023c-.112 0-.168-.08-.168-.247v-.391c0-.128.016-.224.056-.28a.597.597 0 0 1 .224-.167c.279-.144.614-.264 1.005-.36a4.84 4.84 0 0 1 1.246-.151c.95 0 1.644.216 2.091.647.439.43.662 1.085.662 1.963v2.586zm-3.24 1.21c.265 0 .538-.048.822-.144.283-.096.535-.271.742-.51.128-.152.224-.32.264-.512.04-.191.072-.423.072-.694v-.335a6.66 6.66 0 0 0-.735-.136 6.02 6.02 0 0 0-.75-.048c-.535 0-.926.104-1.19.32-.263.215-.39.518-.39.917 0 .375.095.654.295.846.191.2.47.296.838.296zm3.89.527c-.073 0-.12-.016-.152-.048-.032-.024-.064-.08-.088-.152L6.155 5.563a.715.715 0 0 1-.032-.16c0-.128.064-.2.192.2h.703c.08 0 .136.016.168.048.032.024.064.08.088.152l1.348 5.298 1.252-5.298c.024-.08.056-.128.088-.152a.355.355 0 0 1 .176-.048h.575c.08 0 .136.016.176.048.032.024.072.08.088.152l1.268 5.362 1.39-5.362c.024-.08.056-.128.088-.152a.344.344 0 0 1 .168-.048h.67c.128 0 .2.072.2.2 0 .04-.008.072-.016.112 0 0-.04.128-.088.152l-1.916 6.15c-.032.08-.064.128-.096.152a.355.355 0 0 1-.176.048h-.622c-.08 0-.136-.016-.176-.048-.032-.024-.064-.08-.088-.152l-1.26-5.186-1.252 5.178c-.024.08-.056.128-.088.152a.355.355 0 0 1-.176.048h-.623zm9.166.215c-.367 0-.734-.04-1.094-.127-.359-.088-.638-.184-.822-.296-.112-.064-.191-.136-.223-.2a.498.498 0 0 1-.032-.128v-.399c0-.167.064-.247.183-.247a.45.45 0 0 1 .144.024c.048.016.12.048.2.08.271.12.566.215.878.279.319.064.63.096.95.096.502 0 .893-.088 1.164-.264a.86.86 0 0 0 .415-.758.777.777 0 0 0-.215-.55c-.144-.151-.423-.287-.83-.415l-1.188-.367c-.598-.192-1.044-.471-1.316-.838a1.95 1.95 0 0 1-.415-1.205c0-.351.072-.662.215-.918.144-.255.335-.479.575-.654.24-.184.51-.319.822-.415.311-.096.638-.136.982-.136.176 0 .36.008.535.032.184.024.351.056.518.088.152.04.303.08.439.127.136.048.24.096.311.144a.66.66 0 0 1 .176.144.298.298 0 0 1 .048.184v.359c0 .168-.064.256-.183.256a.83.83 0 0 1-.304-.096 3.68 3.68 0 0 0-1.548-.311c-.463 0-.83.072-1.085.231-.255.16-.39.4-.39.743 0 .351.128.59.383.758.255.168.702.335 1.331.48.583.135 1.005.311 1.268.518.263.207.39.495.39.862 0 .367-.128.662-.375.902-.247.247-.67.375-1.26.375zm2.004 1.332c-2.637 1.948-6.488 2.984-9.793 2.984-4.635 0-8.81-1.715-11.966-4.566-.255-.224-.024-.335.271-.144 3.41 1.987 7.622 3.183 11.966 3.183 2.936 0 6.158-.61 9.119-1.876.44-.207.815.287.383.615zm1.078-1.23c-.336-.431-2.223-.2-3.073-.103-.255.024-.295-.192-.064-.351 1.5-1.053 3.962-.75 4.246-.4.287.359-.08 2.824-1.484 4.004-.215.184-.423.088-.319-.151.311-.774 1.005-2.51.662-2.956v-.443z"},azure:{viewBox:"0 0 24 24",color:"#0078D4",path:"M5.483 21.3H24L14.025 4.013l-3.022 5.915 5.99 9.357H8.787l-3.304 6.015zM8.7 3.197L0 21.3h6.395l4.49-8.51L8.7 3.196z"},gcp:{viewBox:"0 0 24 24",color:"#4285F4",path:"M12.19 2.38a9.344 9.344 0 0 0-9.234 6.893c.053-.02-.055.013 0 0-3.875 2.551-3.922 8.11-.247 10.941l.006-.007-.007.03a6.717 6.717 0 0 0 4.077 1.356h5.173l.03.03h5.192c6.687.053 9.376-8.605 3.835-12.35a9.365 9.365 0 0 0-2.821-4.552l-.043.043.006-.05A9.344 9.344 0 0 0 12.19 2.38zm-.358 4.146c1.244-.04 2.518.368 3.486 1.15a5.186 5.186 0 0 1 1.862 4.078v.518c3.53-.07 3.53 5.262 0 5.193h-5.193l-.008.009v-.04H6.785a2.59 2.59 0 0 1-1.067-.23h.001a2.597 2.597 0 1 1 3.437-3.437l3.013-3.012A6.747 6.747 0 0 0 8.11 8.24c.018-.01.04-.026.054-.023a5.186 5.186 0 0 1 3.67-1.69z"},aliyun:{viewBox:"0 0 24 24",color:"#FF6A00",path:"M3.996 4.517h5.291L8.01 6.324 4.153 7.506a1.668 1.668 0 0 0-1.165 1.601v5.786a1.668 1.668 0 0 0 1.165 1.6l3.857 1.183 1.277 1.807H3.996A3.996 3.996 0 0 1 0 15.487V8.513a3.996 3.996 0 0 1 3.996-3.996m16.008 0h-5.291l1.277 1.807 3.857 1.182c.715.227 1.17.889 1.165 1.601v5.786a1.668 1.668 0 0 1-1.165 1.6l-3.857 1.183-1.277 1.807h5.291A3.996 3.996 0 0 0 24 15.487V8.513a3.996 3.996 0 0 0-3.996-3.996m-4.007 8.345H8.002v-1.804h7.995Z"},tencent:{viewBox:"220 60 620 430",color:"#006EFF",paths:[{fill:"#006EFF",d:"M685.3,188.5c-24.7-66.3-88-110.4-158.8-110.5c-84.8,0-152.2,62.8-165.3,140.8c6.5,0,13.1-2.1,21.8-2.1c8.7,0,19.6,2.1,28.3,2.1c10.9-54.2,58.7-93.2,115.3-93.2c47.8,0,89.2,28.2,108.7,69.3c0,0,2.2,2.2,2.2,0C652.6,192.8,670,188.5,685.3,188.5L685.3,188.5"},{fill:"#00C8DC",d:"M456.9,242.6c-23.9-17.3-47.9-26-76.1-26c-33.9,0-66.2,14.2-89.2,39c-48.4,49.7-47.4,129.2,2.2,177.7c21.7,19.5,43.5,30.3,69.6,32.5l50-47.7h-28.3c-28.3-2.1-45.7-10.8-56.5-21.6c-30-29.6-30.9-77.6-2.2-108.3c15.2-15.2,32.6-21.7,54.4-21.7c13.1,0,32.6,2.1,52.2,21.6c8.7,8.7,32.6,26,41.3,34.7h2.1l32.6-32.5v-2.2C493.9,273,470,253.5,456.9,242.6"},{fill:"#00A3FF",d:"M724.4,396.5c-8.7,8.7-26.1,21.7-56.5,21.7h-187c56.5-54.1,104.4-99.6,108.8-104c8.3-8.4,17-16.3,26.1-23.8c21.8-19.5,39.1-21.7,54.4-21.7c21.7,0,39.1,8.7,54.4,21.6C754.9,318.5,754.9,368.4,724.4,396.5z M761.4,255.6c-23-24.8-55.3-39-89.2-39c-30.4,0-56.5,10.9-80.5,28.2c-8.8,8.7-21.8,17.3-32.7,30.3c-8.7,8.7-195.7,190.7-195.7,190.7c10.9,2.2,23.9,2.2,34.8,2.2h237.1c17.4,0,30.5,0,43.5-2.2c30-2.2,58.3-14.4,80.5-34.7C809.2,383.5,809.2,303.4,761.4,255.6L761.4,255.6"}]},huawei:{viewBox:"0 0 24 24",color:"#FF0000",path:"M3.67 6.14S1.82 7.91 1.72 9.78v.35c.08 1.51 1.22 2.4 1.22 2.4 1.83 1.79 6.26 4.04 7.3 4.55 0 0 .06.03.1-.01l.02-.04v-.04C7.52 10.8 3.67 6.14 3.67 6.14zM9.65 18.6c-.02-.08-.1-.08-.1-.08l-7.38.26c.8 1.43 2.15 2.53 3.56 2.2.96-.25 3.16-1.78 3.88-2.3.06-.05.04-.09.04-.09zm.08-.78C6.49 15.63.21 12.28.21 12.28c-.15.46-.2.9-.21 1.3v.07c0 1.07.4 1.82.4 1.82.8 1.69 2.34 2.2 2.34 2.2.7.3 1.4.31 1.4.31.12.02 4.4 0 5.54 0 .05 0 .08-.05.08-.05v-.06c0-.03-.03-.05-.03-.05zM9.06 3.19a3.42 3.42 0 00-2.57 3.15v.41c.03.6.16 1.05.16 1.05.66 2.9 3.86 7.65 4.55 8.65.05.05.1.03.1.03a.1.1 0 00.06-.1c1.06-10.6-1.11-13.42-1.11-13.42-.32.02-1.19.23-1.19.23zm8.299 2.27s-.49-1.8-2.44-2.28c0 0-.57-.14-1.17-.22 0 0-2.18 2.81-1.12 13.43.01.07.06.08.06.08.07.03.1-.03.1-.03.72-1.03 3.9-5.76 4.55-8.64 0 0 .36-1.4.02-2.34zm-2.92 13.07s-.07 0-.09.05c0 0-.01.07.03.1.7.51 2.85 2 3.88 2.3 0 0 .16.05.43.06h.14c.69-.02 1.9-.37 3-2.26l-7.4-.25zm7.83-8.41c.14-2.06-1.94-3.97-1.94-3.98 0 0-3.85 4.66-6.67 10.8 0 0-.03.08.02.13l.04.01h.06c1.06-.53 5.46-2.77 7.28-4.54 0 0 1.15-.93 1.21-2.42zm1.52 2.14s-6.28 3.37-9.52 5.55c0 0-.05.04-.03.11 0 0 .03.06.07.06 1.16 0 5.56 0 5.67-.02 0 0 .57-.02 1.27-.29 0 0 1.56-.5 2.37-2.27 0 0 .73-1.45.17-3.14z"}};function ee({provider:t,className:p="h-5 w-5"}){const n=L[t]||L.aliyun;return e.jsx("svg",{"code-path":"src/components/icons/CloudBrandIcon.tsx:69:5",className:p,viewBox:n.viewBox,fill:"currentColor",style:{color:n.color},role:"img","aria-label":t,children:n.paths?n.paths.map((m,x)=>e.jsx("path",{"code-path":"src/components/icons/CloudBrandIcon.tsx:79:11",d:m.d,fill:m.fill||"currentColor"},x)):e.jsx("path",{"code-path":"src/components/icons/CloudBrandIcon.tsx:82:9",d:n.path})})}function ce(t){return{aws:"#FF9900",azure:"#0078D4",gcp:"#4285F4",aliyun:"#FF6A00",tencent:"#006EFF",huawei:"#FF0000"}[t]||"#64748B"}const se={aws:"AWS",aliyun:"阿里云",tencent:"腾讯云",huawei:"华为云",azure:"Azure",gcp:"GCP"};function ge(){const[t,p]=a.useState([]),[n,m]=a.useState(!0),[x,B]=a.useState(""),[M,D]=a.useState("all"),[P,i]=a.useState(!1),[b,f]=a.useState(!1),[o,w]=a.useState(null),[s,l]=a.useState({name:"",provider:"aliyun",access_key:"",secret_key:"",monthly_cost:"",status:"active"}),E=()=>{w(null),l({name:"",provider:"aliyun",access_key:"",secret_key:"",monthly_cost:"",status:"active"})},I=()=>{E(),i(!0)},K=c=>{w(c),l({name:c.name||"",provider:c.provider||"aliyun",access_key:"",secret_key:"",monthly_cost:String(c.monthly_cost??0),status:c.status||"active"}),i(!0)},H=async()=>{if(!(!s.name.trim()||!s.provider.trim()))try{f(!0);const c={name:s.name.trim(),provider:s.provider,access_key:s.access_key.trim(),secret_key:s.secret_key.trim(),monthly_cost:Number(s.monthly_cost)||0,status:s.status};o?await v.updateAccount(o.id,c):await v.createAccount(c),i(!1),g()}catch(c){console.error(o?"更新云账号失败:":"创建云账号失败:",c)}finally{f(!1)}},g=async()=>{try{m(!0);const c=await v.getAccounts();p(c?.list||[])}catch(c){console.error("加载云账号列表失败:",c),p([])}finally{m(!1)}};a.useEffect(()=>{g()},[]);const O=async c=>{try{await v.deleteAccount(c),g()}catch(r){console.error("删除云账号失败:",r)}},z=t.filter(c=>{const r=c.access_key||c.accessKey||"",j=(c.name||"").toLowerCase().includes(x.toLowerCase())||r.toLowerCase().includes(x.toLowerCase()),C=M==="all"||c.provider===M;return j&&C});return t.length,t.filter(c=>c.status==="active").length,t.filter(c=>c.status==="inactive").length,t.filter(c=>c.status==="error").length,e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:156:5",className:"space-y-6",children:[e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:158:7",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:159:9",children:[e.jsx("h1",{"code-path":"src/components/cloud/CloudAccountManager.tsx:160:11",className:"text-2xl font-bold text-slate-100",children:"云账号管理"}),e.jsx("p",{"code-path":"src/components/cloud/CloudAccountManager.tsx:161:11",className:"text-slate-400 mt-1",children:"管理多云平台的访问凭证和账号信息"})]}),e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:163:9",className:"flex items-center gap-2",children:[e.jsxs(d,{"code-path":"src/components/cloud/CloudAccountManager.tsx:164:11",variant:"outline",onClick:g,className:"border-slate-700 text-slate-300",children:[e.jsx(F,{"code-path":"src/components/cloud/CloudAccountManager.tsx:165:13",className:`h-4 w-4 mr-2 ${n?"animate-spin":""}`}),"刷新"]}),e.jsxs(d,{"code-path":"src/components/cloud/CloudAccountManager.tsx:168:11",className:"bg-blue-600 hover:bg-blue-700",onClick:I,children:[e.jsx(S,{"code-path":"src/components/cloud/CloudAccountManager.tsx:169:13",className:"h-4 w-4 mr-2"}),"添加账号"]})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:176:7",className:"flex items-center gap-4",children:[e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:177:9",className:"relative flex-1 max-w-md",children:[e.jsx(Z,{"code-path":"src/components/cloud/CloudAccountManager.tsx:178:11",className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-slate-400"}),e.jsx(h,{"code-path":"src/components/cloud/CloudAccountManager.tsx:179:11",placeholder:"搜索账号名称或AccessKey...",value:x,onChange:c=>B(c.target.value),className:"pl-10 bg-slate-800 border-slate-700 text-slate-100"})]}),e.jsxs("select",{"code-path":"src/components/cloud/CloudAccountManager.tsx:186:9",value:M,onChange:c=>D(c.target.value),className:"px-3 py-2 bg-slate-800 border border-slate-700 rounded-md text-slate-100 text-sm",children:[e.jsx("option",{"code-path":"src/components/cloud/CloudAccountManager.tsx:191:11",value:"all",children:"全部平台"}),e.jsx("option",{"code-path":"src/components/cloud/CloudAccountManager.tsx:192:11",value:"aws",children:"AWS"}),e.jsx("option",{"code-path":"src/components/cloud/CloudAccountManager.tsx:193:11",value:"aliyun",children:"阿里云"}),e.jsx("option",{"code-path":"src/components/cloud/CloudAccountManager.tsx:194:11",value:"tencent",children:"腾讯云"}),e.jsx("option",{"code-path":"src/components/cloud/CloudAccountManager.tsx:195:11",value:"huawei",children:"华为云"}),e.jsx("option",{"code-path":"src/components/cloud/CloudAccountManager.tsx:196:11",value:"azure",children:"Azure"})]})]}),n?e.jsx(N,{"code-path":"src/components/cloud/CloudAccountManager.tsx:202:9",className:"bg-slate-800 border-slate-700",children:e.jsxs(y,{"code-path":"src/components/cloud/CloudAccountManager.tsx:203:11",className:"p-12 text-center text-slate-500",children:[e.jsx(F,{"code-path":"src/components/cloud/CloudAccountManager.tsx:204:13",className:"h-6 w-6 animate-spin mx-auto mb-3"}),"加载中..."]})}):z.length===0?e.jsx(N,{"code-path":"src/components/cloud/CloudAccountManager.tsx:209:9",className:"bg-slate-800 border-slate-700",children:e.jsx(y,{"code-path":"src/components/cloud/CloudAccountManager.tsx:210:11",className:"p-12 text-center text-slate-500",children:"暂无云账号数据"})}):e.jsx("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:213:9",className:"grid grid-cols-2 gap-4",children:z.map(c=>{const r=c.access_key||c.accessKey||"",j=c.server_count??c.serverCount??0,C=c.last_sync||c.lastSync||c.created_at||"-",T=c.monthly_cost??c.monthlyCost??0;return e.jsx(N,{"code-path":"src/components/cloud/CloudAccountManager.tsx:220:15",className:"bg-slate-800 border-slate-700",children:e.jsxs(y,{"code-path":"src/components/cloud/CloudAccountManager.tsx:221:17",className:"p-4",children:[e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:222:19",className:"flex items-start justify-between",children:[e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:223:21",className:"flex items-start gap-3",children:[e.jsx("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:224:23",className:"w-10 h-10 rounded-lg bg-slate-800 flex items-center justify-center",style:{borderBottom:`2px solid ${ce(c.provider)}`},children:e.jsx(ee,{"code-path":"src/components/cloud/CloudAccountManager.tsx:225:25",provider:c.provider,className:"h-6 w-6"})}),e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:227:23",children:[e.jsx("h3",{"code-path":"src/components/cloud/CloudAccountManager.tsx:228:25",className:"font-medium text-slate-100",children:c.name}),e.jsx("p",{"code-path":"src/components/cloud/CloudAccountManager.tsx:229:25",className:"text-sm text-slate-400 mt-0.5",children:se[c.provider]||c.provider}),e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:230:25",className:"flex items-center gap-3 mt-2",children:[r&&e.jsxs(A,{"code-path":"src/components/cloud/CloudAccountManager.tsx:232:29",variant:"secondary",className:"bg-slate-700 text-slate-300",children:[e.jsx(_,{"code-path":"src/components/cloud/CloudAccountManager.tsx:233:31",className:"h-3 w-3 mr-1"}),r.slice(0,8),"..."]}),c.status==="active"&&e.jsxs(A,{"code-path":"src/components/cloud/CloudAccountManager.tsx:238:29",className:"bg-green-500/20 text-green-400 border-0",children:[e.jsx(q,{"code-path":"src/components/cloud/CloudAccountManager.tsx:239:31",className:"h-3 w-3 mr-1"}),"正常"]}),c.status==="inactive"&&e.jsxs(A,{"code-path":"src/components/cloud/CloudAccountManager.tsx:244:29",className:"bg-slate-500/20 text-slate-400 border-0",children:[e.jsx(J,{"code-path":"src/components/cloud/CloudAccountManager.tsx:245:31",className:"h-3 w-3 mr-1"}),"已停用"]}),c.status==="error"&&e.jsxs(A,{"code-path":"src/components/cloud/CloudAccountManager.tsx:250:29",className:"bg-red-500/20 text-red-400 border-0",children:[e.jsx(_,{"code-path":"src/components/cloud/CloudAccountManager.tsx:251:31",className:"h-3 w-3 mr-1"}),"异常"]})]})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:258:21",className:"flex items-center gap-1",children:[e.jsx(d,{"code-path":"src/components/cloud/CloudAccountManager.tsx:259:23",variant:"ghost",size:"icon",className:"h-8 w-8 text-slate-400 hover:text-blue-400",onClick:()=>K(c),children:e.jsx(k,{"code-path":"src/components/cloud/CloudAccountManager.tsx:265:25",className:"h-4 w-4"})}),e.jsx(d,{"code-path":"src/components/cloud/CloudAccountManager.tsx:267:23",variant:"ghost",size:"icon",className:"h-8 w-8 text-slate-400 hover:text-red-400",onClick:()=>O(c.id),children:e.jsx(U,{"code-path":"src/components/cloud/CloudAccountManager.tsx:273:25",className:"h-4 w-4"})})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:277:19",className:"grid grid-cols-3 gap-4 mt-4 pt-4 border-t border-slate-700",children:[e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:278:21",children:[e.jsx("p",{"code-path":"src/components/cloud/CloudAccountManager.tsx:279:23",className:"text-xs text-slate-400",children:"月费用"}),e.jsxs("p",{"code-path":"src/components/cloud/CloudAccountManager.tsx:280:23",className:"text-lg font-medium text-emerald-400",children:["¥",Number(T).toLocaleString()]})]}),e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:282:21",children:[e.jsx("p",{"code-path":"src/components/cloud/CloudAccountManager.tsx:283:23",className:"text-xs text-slate-400",children:"服务器数"}),e.jsx("p",{"code-path":"src/components/cloud/CloudAccountManager.tsx:284:23",className:"text-lg font-medium text-slate-100",children:j})]}),e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:286:21",children:[e.jsx("p",{"code-path":"src/components/cloud/CloudAccountManager.tsx:287:23",className:"text-xs text-slate-400",children:"最后同步"}),e.jsx("p",{"code-path":"src/components/cloud/CloudAccountManager.tsx:288:23",className:"text-sm text-slate-300",children:C!=="-"?new Date(C).toLocaleString():"-"})]})]})]})},c.id)})}),e.jsx(R,{"code-path":"src/components/cloud/CloudAccountManager.tsx:301:7",open:P,onOpenChange:i,children:e.jsxs(W,{"code-path":"src/components/cloud/CloudAccountManager.tsx:302:9",className:"bg-slate-800 border-slate-700 text-slate-100 max-w-lg",children:[e.jsxs(Q,{"code-path":"src/components/cloud/CloudAccountManager.tsx:303:11",children:[e.jsxs(V,{"code-path":"src/components/cloud/CloudAccountManager.tsx:304:13",className:"text-slate-100 flex items-center gap-2",children:[e.jsx($,{"code-path":"src/components/cloud/CloudAccountManager.tsx:305:15",className:"h-5 w-5 text-blue-400"}),o?"编辑云账号":"添加云账号"]}),e.jsx(G,{"code-path":"src/components/cloud/CloudAccountManager.tsx:308:13",className:"text-slate-400",children:o?"修改账号信息和访问凭证,留空则保持原凭证不变":"录入多云平台的访问凭证,用于资源同步与成本统计"})]}),e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:313:11",className:"space-y-4 py-2",children:[e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:314:13",className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:315:15",className:"space-y-1.5",children:[e.jsxs(u,{"code-path":"src/components/cloud/CloudAccountManager.tsx:316:17",className:"text-slate-300",children:["账号名称 ",e.jsx("span",{"code-path":"src/components/cloud/CloudAccountManager.tsx:317:24",className:"text-red-400",children:"*"})]}),e.jsx(h,{"code-path":"src/components/cloud/CloudAccountManager.tsx:319:17",placeholder:"阿里云生产账号",value:s.name,onChange:c=>l({...s,name:c.target.value}),className:"bg-slate-900 border-slate-700 text-slate-100 placeholder:text-slate-500"})]}),e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:326:15",className:"space-y-1.5",children:[e.jsxs(u,{"code-path":"src/components/cloud/CloudAccountManager.tsx:327:17",className:"text-slate-300",children:["云平台 ",e.jsx("span",{"code-path":"src/components/cloud/CloudAccountManager.tsx:328:23",className:"text-red-400",children:"*"})]}),e.jsxs("select",{"code-path":"src/components/cloud/CloudAccountManager.tsx:330:17",value:s.provider,onChange:c=>l({...s,provider:c.target.value}),className:"w-full px-3 py-2 bg-slate-900 border border-slate-700 rounded-md text-slate-100 text-sm",children:[e.jsx("option",{"code-path":"src/components/cloud/CloudAccountManager.tsx:335:19",value:"aliyun",children:"阿里云"}),e.jsx("option",{"code-path":"src/components/cloud/CloudAccountManager.tsx:336:19",value:"tencent",children:"腾讯云"}),e.jsx("option",{"code-path":"src/components/cloud/CloudAccountManager.tsx:337:19",value:"aws",children:"AWS"}),e.jsx("option",{"code-path":"src/components/cloud/CloudAccountManager.tsx:338:19",value:"huawei",children:"华为云"}),e.jsx("option",{"code-path":"src/components/cloud/CloudAccountManager.tsx:339:19",value:"azure",children:"Azure"})]})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:344:13",className:"space-y-1.5",children:[e.jsxs(u,{"code-path":"src/components/cloud/CloudAccountManager.tsx:345:15",className:"text-slate-300",children:["AccessKey",o&&e.jsx("span",{"code-path":"src/components/cloud/CloudAccountManager.tsx:347:36",className:"text-xs text-slate-500 ml-2",children:"留空保持不变"})]}),e.jsx(h,{"code-path":"src/components/cloud/CloudAccountManager.tsx:349:15",placeholder:"LTAI...",value:s.access_key,onChange:c=>l({...s,access_key:c.target.value}),className:"bg-slate-900 border-slate-700 text-slate-100 placeholder:text-slate-500 font-mono text-sm"})]}),e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:357:13",className:"space-y-1.5",children:[e.jsxs(u,{"code-path":"src/components/cloud/CloudAccountManager.tsx:358:15",className:"text-slate-300",children:["SecretKey",o&&e.jsx("span",{"code-path":"src/components/cloud/CloudAccountManager.tsx:360:36",className:"text-xs text-slate-500 ml-2",children:"留空保持不变"})]}),e.jsx(h,{"code-path":"src/components/cloud/CloudAccountManager.tsx:362:15",type:"password",placeholder:"••••••••",value:s.secret_key,onChange:c=>l({...s,secret_key:c.target.value}),className:"bg-slate-900 border-slate-700 text-slate-100 placeholder:text-slate-500 font-mono text-sm"})]}),e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:371:13",className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:372:15",className:"space-y-1.5",children:[e.jsx(u,{"code-path":"src/components/cloud/CloudAccountManager.tsx:373:17",className:"text-slate-300",children:"月费用 (元)"}),e.jsx(h,{"code-path":"src/components/cloud/CloudAccountManager.tsx:374:17",type:"number",min:"0",placeholder:"0",value:s.monthly_cost,onChange:c=>l({...s,monthly_cost:c.target.value}),className:"bg-slate-900 border-slate-700 text-slate-100 placeholder:text-slate-500"})]}),e.jsxs("div",{"code-path":"src/components/cloud/CloudAccountManager.tsx:383:15",className:"space-y-1.5",children:[e.jsx(u,{"code-path":"src/components/cloud/CloudAccountManager.tsx:384:17",className:"text-slate-300",children:"状态"}),e.jsxs("select",{"code-path":"src/components/cloud/CloudAccountManager.tsx:385:17",value:s.status,onChange:c=>l({...s,status:c.target.value}),className:"w-full px-3 py-2 bg-slate-900 border border-slate-700 rounded-md text-slate-100 text-sm",children:[e.jsx("option",{"code-path":"src/components/cloud/CloudAccountManager.tsx:390:19",value:"active",children:"正常"}),e.jsx("option",{"code-path":"src/components/cloud/CloudAccountManager.tsx:391:19",value:"inactive",children:"已停用"}),e.jsx("option",{"code-path":"src/components/cloud/CloudAccountManager.tsx:392:19",value:"error",children:"异常"})]})]})]})]}),e.jsxs(X,{"code-path":"src/components/cloud/CloudAccountManager.tsx:398:11",children:[e.jsx(d,{"code-path":"src/components/cloud/CloudAccountManager.tsx:399:13",variant:"outline",onClick:()=>i(!1),className:"border-slate-700 text-slate-300 hover:bg-slate-700",children:"取消"}),e.jsxs(d,{"code-path":"src/components/cloud/CloudAccountManager.tsx:402:13",className:"bg-blue-600 hover:bg-blue-700",disabled:!s.name.trim()||b,onClick:H,children:[b?e.jsx(Y,{"code-path":"src/components/cloud/CloudAccountManager.tsx:407:29",className:"h-4 w-4 mr-2 animate-spin"}):o?e.jsx(k,{"code-path":"src/components/cloud/CloudAccountManager.tsx:407:98",className:"h-4 w-4 mr-2"}):e.jsx(S,{"code-path":"src/components/cloud/CloudAccountManager.tsx:407:136",className:"h-4 w-4 mr-2"}),o?"保存修改":"创建账号"]})]})]})})]})}export{ge as CloudAccountManager}; diff --git a/backend/static/assets/CloudBilling-BGHhcZTW.js b/backend/static/assets/CloudBilling-BGHhcZTW.js new file mode 100644 index 0000000..5d98d40 --- /dev/null +++ b/backend/static/assets/CloudBilling-BGHhcZTW.js @@ -0,0 +1 @@ +import{i as ve,j as e,r as c,D as X,a as Y,b as Z,c as ee,d as se,e as le,B as u,L as R,f as Ne,H as A}from"./index-Dmami9WE.js";import{I as j}from"./input-NsU9nXZF.js";import{L as r}from"./label-Ap_-SPYI.js";import{C as T,a as V}from"./card-CIfC-8Rh.js";import{B as fe}from"./badge-3UzCvU7L.js";import{S as oe}from"./switch-TqjD2x0W.js";import{S as w,a as S,b as k,c as _,d as x}from"./select-DUbxjT0z.js";import{t as p}from"./index-BuEnLCjT.js";import{b as h}from"./cloud-Dq4kl-JO.js";import{S as be}from"./stat-strip-BteRU1Iu.js";import{R as q}from"./refresh-cw-CTBERyFc.js";import{P as G}from"./plus-O65gX7Qz.js";import{P as J}from"./pencil-BYahlvYT.js";import{T as K}from"./trash-2-DWVnIU6o.js";import"./index-CtCQcvyh.js";import"./chevron-up-Cq4GPopa.js";const De=[["path",{d:"M19 7V4a1 1 0 0 0-1-1H5a2 2 0 0 0 0 4h15a1 1 0 0 1 1 1v4h-3a2 2 0 0 0 0 4h3a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1",key:"18etb6"}],["path",{d:"M3 5v14a2 2 0 0 0 2 2h15a1 1 0 0 0 1-1v-4",key:"xoc0q4"}]],ye=ve("wallet",De),v={aliyun:"阿里云",tencent:"腾讯云",aws:"AWS",huawei:"华为云",azure:"Azure"},O={aliyun:"bg-orange-500",tencent:"bg-blue-500",aws:"bg-amber-500",huawei:"bg-red-500",azure:"bg-sky-500"};function g(d){return`¥${d.toLocaleString("zh-CN",{minimumFractionDigits:2,maximumFractionDigits:2})}`}function Re({data:d}){if(d.length===0)return e.jsx("p",{"code-path":"src/components/cloud/CloudBillingHelpers.tsx:54:12",className:"text-sm text-slate-500 py-8 text-center",children:"暂无数据"});const n=Math.max(...d.map(a=>a.cost),1),t=d.slice(-30);return e.jsxs("div",{"code-path":"src/components/cloud/CloudBillingHelpers.tsx:60:5",children:[e.jsx("div",{"code-path":"src/components/cloud/CloudBillingHelpers.tsx:61:7",className:"flex items-end gap-0.5 h-40",children:t.map((a,o)=>{const i=Math.max(a.cost/n*100,2);return e.jsxs("div",{"code-path":"src/components/cloud/CloudBillingHelpers.tsx:65:13",className:"flex-1 group relative",style:{height:"100%"},children:[e.jsx("div",{"code-path":"src/components/cloud/CloudBillingHelpers.tsx:70:15",className:"absolute bottom-0 w-full rounded-t-sm bg-gradient-to-t from-blue-600/60 to-blue-400/80 group-hover:from-blue-500 group-hover:to-blue-300 transition-colors",style:{height:`${i}%`}}),e.jsxs("div",{"code-path":"src/components/cloud/CloudBillingHelpers.tsx:74:15",className:"absolute bottom-full left-1/2 -translate-x-1/2 mb-2 hidden group-hover:block whitespace-nowrap text-xs bg-slate-800 text-slate-200 px-2 py-1 rounded border border-slate-700 z-10",children:[a.date,": ",g(a.cost)]})]},o)})}),e.jsxs("div",{"code-path":"src/components/cloud/CloudBillingHelpers.tsx:81:7",className:"flex justify-between mt-2 text-xs text-slate-500",children:[e.jsx("span",{"code-path":"src/components/cloud/CloudBillingHelpers.tsx:82:9",children:t[0]?.date}),e.jsx("span",{"code-path":"src/components/cloud/CloudBillingHelpers.tsx:83:9",children:t[t.length-1]?.date})]})]})}const Q={provider:"aliyun",billing_date:"",cost:"",service:"",region:"",account_name:"",description:""};function we({open:d,onOpenChange:n,editingRecord:t,onSuccess:a}){const[o,i]=c.useState(Q),[B,C]=c.useState(!1);c.useEffect(()=>{d&&i(t?{provider:t.provider,billing_date:t.billing_date,cost:t.cost,service:t.service||"",region:t.region||"",account_name:t.account_name||"",description:t.description||""}:{...Q,billing_date:new Date().toISOString().slice(0,10)})},[d,t]);const y=async()=>{if(!o.provider||!o.billing_date||!o.cost){p.error("请填写必填字段");return}C(!0);try{const l={...o,cost:parseFloat(o.cost)};t?(await h.remove(t.id),await h.create(l)):await h.create(l),n(!1),a(),p("保存成功")}catch(l){p.error("保存失败",{description:l.message})}finally{C(!1)}};return e.jsx(X,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:90:5",open:d,onOpenChange:n,children:e.jsxs(Y,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:91:7",className:"max-w-md",children:[e.jsxs(Z,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:92:9",children:[e.jsx(ee,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:93:11",children:t?"编辑成本记录":"记录成本"}),e.jsx(se,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:94:11",children:"记录一条每日云资源成本"})]}),e.jsxs("div",{"code-path":"src/components/cloud/BillingRecordDialog.tsx:96:9",className:"space-y-3",children:[e.jsxs("div",{"code-path":"src/components/cloud/BillingRecordDialog.tsx:97:11",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/cloud/BillingRecordDialog.tsx:98:13",children:[e.jsx(r,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:99:15",className:"text-sm text-slate-300",children:"厂商 *"}),e.jsxs(w,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:100:15",value:o.provider,onValueChange:l=>i({...o,provider:l}),children:[e.jsx(S,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:101:17",className:"mt-1",children:e.jsx(k,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:101:49"})}),e.jsx(_,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:102:17",children:Object.entries(v).map(([l,f])=>e.jsx(x,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:104:21",value:l,children:f},l))})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/BillingRecordDialog.tsx:109:13",children:[e.jsx(r,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:110:15",className:"text-sm text-slate-300",children:"日期 *"}),e.jsx(j,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:111:15",type:"date",className:"mt-1",value:o.billing_date,onChange:l=>i({...o,billing_date:l.target.value})})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/BillingRecordDialog.tsx:114:11",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/cloud/BillingRecordDialog.tsx:115:13",children:[e.jsx(r,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:116:15",className:"text-sm text-slate-300",children:"费用(元) *"}),e.jsx(j,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:117:15",type:"number",step:"0.01",className:"mt-1",placeholder:"0.00",value:o.cost,onChange:l=>i({...o,cost:l.target.value})})]}),e.jsxs("div",{"code-path":"src/components/cloud/BillingRecordDialog.tsx:119:13",children:[e.jsx(r,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:120:15",className:"text-sm text-slate-300",children:"服务"}),e.jsx(j,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:121:15",className:"mt-1",placeholder:"ECS, RDS...",value:o.service,onChange:l=>i({...o,service:l.target.value})})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/BillingRecordDialog.tsx:124:11",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/cloud/BillingRecordDialog.tsx:125:13",children:[e.jsx(r,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:126:15",className:"text-sm text-slate-300",children:"区域"}),e.jsx(j,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:127:15",className:"mt-1",placeholder:"cn-hangzhou",value:o.region,onChange:l=>i({...o,region:l.target.value})})]}),e.jsxs("div",{"code-path":"src/components/cloud/BillingRecordDialog.tsx:129:13",children:[e.jsx(r,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:130:15",className:"text-sm text-slate-300",children:"账号名称"}),e.jsx(j,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:131:15",className:"mt-1",placeholder:"主账号",value:o.account_name,onChange:l=>i({...o,account_name:l.target.value})})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/BillingRecordDialog.tsx:134:11",children:[e.jsx(r,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:135:13",className:"text-sm text-slate-300",children:"备注"}),e.jsx(j,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:136:13",className:"mt-1",placeholder:"可选",value:o.description,onChange:l=>i({...o,description:l.target.value})})]})]}),e.jsxs(le,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:139:9",children:[e.jsx(u,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:140:11",variant:"outline",onClick:()=>n(!1),children:"取消"}),e.jsxs(u,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:141:11",onClick:y,disabled:B,children:[B&&e.jsx(R,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:142:28",className:"h-4 w-4 mr-1 animate-spin"}),"保存"]})]})]})})}const U={name:"",provider:"",metric:"daily",threshold:"",operator:">",enabled:!0};function Se({open:d,onOpenChange:n,editingRule:t,onSuccess:a}){const[o,i]=c.useState(U),[B,C]=c.useState(!1);c.useEffect(()=>{d&&i(t?{name:t.name,provider:t.provider||"",metric:t.metric||"daily",threshold:t.threshold,operator:t.operator||">",enabled:t.enabled}:{...U})},[d,t]);const y=async()=>{if(!o.name||!o.threshold){p.error("请填写规则名称和阈值");return}C(!0);try{const l={...o,threshold:parseFloat(o.threshold)};t?await h.updateAlertRule(t.id,l):await h.createAlertRule(l),n(!1),a(),p("保存成功")}catch(l){p.error("保存失败",{description:l.message})}finally{C(!1)}};return e.jsx(X,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:81:5",open:d,onOpenChange:n,children:e.jsxs(Y,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:82:7",className:"max-w-md",children:[e.jsxs(Z,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:83:9",children:[e.jsx(ee,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:84:11",children:t?"编辑预警规则":"添加预警规则"}),e.jsx(se,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:85:11",children:"设置成本阈值,超标时自动预警"})]}),e.jsxs("div",{"code-path":"src/components/cloud/BillingRuleDialog.tsx:87:9",className:"space-y-3",children:[e.jsxs("div",{"code-path":"src/components/cloud/BillingRuleDialog.tsx:88:11",children:[e.jsx(r,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:89:13",className:"text-sm text-slate-300",children:"规则名称 *"}),e.jsx(j,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:90:13",className:"mt-1",placeholder:"如:日成本超 500 元预警",value:o.name,onChange:l=>i({...o,name:l.target.value})})]}),e.jsxs("div",{"code-path":"src/components/cloud/BillingRuleDialog.tsx:92:11",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/cloud/BillingRuleDialog.tsx:93:13",children:[e.jsx(r,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:94:15",className:"text-sm text-slate-300",children:"厂商"}),e.jsxs(w,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:95:15",value:o.provider||"all",onValueChange:l=>i({...o,provider:l==="all"?"":l}),children:[e.jsx(S,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:96:17",className:"mt-1",children:e.jsx(k,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:96:49"})}),e.jsxs(_,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:97:17",children:[e.jsx(x,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:98:19",value:"all",children:"全部厂商"}),Object.entries(v).map(([l,f])=>e.jsx(x,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:100:21",value:l,children:f},l))]})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/BillingRuleDialog.tsx:105:13",children:[e.jsx(r,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:106:15",className:"text-sm text-slate-300",children:"指标"}),e.jsxs(w,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:107:15",value:o.metric,onValueChange:l=>i({...o,metric:l}),children:[e.jsx(S,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:108:17",className:"mt-1",children:e.jsx(k,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:108:49"})}),e.jsxs(_,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:109:17",children:[e.jsx(x,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:110:19",value:"daily",children:"日成本"}),e.jsx(x,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:111:19",value:"monthly",children:"月累计"})]})]})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/BillingRuleDialog.tsx:116:11",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/cloud/BillingRuleDialog.tsx:117:13",children:[e.jsx(r,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:118:15",className:"text-sm text-slate-300",children:"比较"}),e.jsxs(w,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:119:15",value:o.operator,onValueChange:l=>i({...o,operator:l}),children:[e.jsx(S,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:120:17",className:"mt-1",children:e.jsx(k,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:120:49"})}),e.jsxs(_,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:121:17",children:[e.jsx(x,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:122:19",value:">",children:"大于 >"}),e.jsx(x,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:123:19",value:">=",children:"大于等于 ≥"}),e.jsx(x,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:124:19",value:"<",children:"小于 <"}),e.jsx(x,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:125:19",value:"<=",children:"小于等于 ≤"})]})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/BillingRuleDialog.tsx:129:13",children:[e.jsx(r,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:130:15",className:"text-sm text-slate-300",children:"阈值(元) *"}),e.jsx(j,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:131:15",type:"number",step:"0.01",className:"mt-1",placeholder:"500.00",value:o.threshold,onChange:l=>i({...o,threshold:l.target.value})})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/BillingRuleDialog.tsx:134:11",className:"flex items-center gap-2",children:[e.jsx(oe,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:135:13",checked:o.enabled,onCheckedChange:l=>i({...o,enabled:l})}),e.jsx(r,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:136:13",className:"text-sm text-slate-300",children:"启用"})]})]}),e.jsxs(le,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:139:9",children:[e.jsx(u,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:140:11",variant:"outline",onClick:()=>n(!1),children:"取消"}),e.jsxs(u,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:141:11",onClick:y,disabled:B,children:[B&&e.jsx(R,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:142:28",className:"h-4 w-4 mr-1 animate-spin"}),"保存"]})]})]})})}function qe(){const d=Ne(),[n,t]=c.useState("overview"),[a,o]=c.useState(null),[i,B]=c.useState(!0),[C,y]=c.useState([]),[l,f]=c.useState(!0),[z,te]=c.useState(""),[E,ce]=c.useState(""),[L,ne]=c.useState(""),[P,ae]=c.useState([]),[ie,I]=c.useState(!0),[de,F]=c.useState(!1),[re,M]=c.useState(null),[pe,H]=c.useState(!1),[me,W]=c.useState(null),N=c.useCallback(async()=>{B(!0);try{const s=await h.getStats();o(s)}catch(s){p.error("加载统计失败",{description:s.message})}finally{B(!1)}},[]),b=c.useCallback(async()=>{f(!0);try{const s={};z&&(s.provider=z),E&&(s.start_date=E),L&&(s.end_date=L);const m=await h.list(s);y(m.list||[])}catch(s){p.error("加载账单失败",{description:s.message})}finally{f(!1)}},[z,E,L]),D=c.useCallback(async()=>{I(!0);try{const s=await h.listAlertRules();ae(s.list||[])}catch(s){p.error("加载预警规则失败",{description:s.message})}finally{I(!1)}},[]);c.useEffect(()=>{N()},[N]),c.useEffect(()=>{n==="records"&&b()},[n,b]),c.useEffect(()=>{n==="alerts"&&D()},[n,D]);const ue=()=>{M(null),F(!0)},xe=s=>{M(s),F(!0)},he=()=>{W(null),H(!0)},ge=s=>{W(s),H(!0)},je=async s=>{if(await d({title:"删除账单记录",description:"确定删除这条成本记录?",variant:"destructive"}))try{await h.remove(s),b(),N(),p("删除成功")}catch($){p.error("删除失败",{description:$.message})}},Be=async s=>{if(await d({title:"删除预警规则",description:"确定删除此预警规则?",variant:"destructive"}))try{await h.deleteAlertRule(s),D(),p("删除成功")}catch($){p.error("删除失败",{description:$.message})}},Ce=async s=>{try{await h.toggleAlertRule(s),D(),N()}catch(m){p.error("操作失败",{description:m.message})}};return e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:166:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:167:7",className:"flex items-center justify-between",children:[e.jsx("h2",{"code-path":"src/components/cloud/CloudBilling.tsx:168:9",className:"text-lg font-semibold text-slate-100",children:"云账单管理"}),e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:169:9",className:"flex items-center gap-2",children:[e.jsxs(u,{"code-path":"src/components/cloud/CloudBilling.tsx:170:11",variant:"outline",size:"sm",onClick:()=>{N(),n==="records"&&b(),n==="alerts"&&D()},children:[e.jsx(q,{"code-path":"src/components/cloud/CloudBilling.tsx:171:13",className:"h-4 w-4 mr-1"}),"刷新"]}),n==="records"&&e.jsxs(u,{"code-path":"src/components/cloud/CloudBilling.tsx:174:13",size:"sm",onClick:ue,children:[e.jsx(G,{"code-path":"src/components/cloud/CloudBilling.tsx:175:15",className:"h-4 w-4 mr-1"}),"记录成本"]}),n==="alerts"&&e.jsxs(u,{"code-path":"src/components/cloud/CloudBilling.tsx:179:13",size:"sm",onClick:he,children:[e.jsx(G,{"code-path":"src/components/cloud/CloudBilling.tsx:180:15",className:"h-4 w-4 mr-1"}),"添加规则"]})]})]}),e.jsx("div",{"code-path":"src/components/cloud/CloudBilling.tsx:186:7",className:"flex gap-1 border-b border-slate-800",children:[{key:"overview",label:"概览统计"},{key:"records",label:"成本记录"},{key:"alerts",label:"预警规则"}].map(s=>e.jsx("button",{"code-path":"src/components/cloud/CloudBilling.tsx:192:11",onClick:()=>t(s.key),className:`px-4 py-2 text-sm font-medium transition-colors border-b-2 -mb-px ${n===s.key?"text-blue-400 border-blue-400":"text-slate-400 border-transparent hover:text-slate-200"}`,children:s.label},s.key))}),n==="overview"&&e.jsx("div",{"code-path":"src/components/cloud/CloudBilling.tsx:207:9",className:"space-y-4",children:i?e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:209:13",className:"flex items-center justify-center py-20 text-slate-500",children:[e.jsx(R,{"code-path":"src/components/cloud/CloudBilling.tsx:209:84",className:"h-6 w-6 animate-spin mr-2"}),"加载中..."]}):a?e.jsxs(e.Fragment,{children:[e.jsx(be,{"code-path":"src/components/cloud/CloudBilling.tsx:212:15",items:[{label:"今日",value:g(a.today_cost||0),color:"blue"},{label:"本月",value:g(a.month_cost||0),color:"amber"},{label:"年度",value:g(a.year_cost||0),color:"purple"},{label:"预警",value:`${a.alerts?.length||0} 条`,color:a.alerts?.length>0?"red":"muted"}]}),a.alerts?.length>0&&e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:222:17",className:"rounded-lg border border-amber-500/30 bg-amber-500/5 p-4",children:[e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:223:19",className:"flex items-center gap-2 mb-3",children:[e.jsx(A,{"code-path":"src/components/cloud/CloudBilling.tsx:224:21",className:"h-4 w-4 text-amber-400"}),e.jsx("span",{"code-path":"src/components/cloud/CloudBilling.tsx:225:21",className:"text-sm font-medium text-amber-300",children:"成本预警"})]}),e.jsx("div",{"code-path":"src/components/cloud/CloudBilling.tsx:227:19",className:"space-y-2",children:a.alerts.map((s,m)=>e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:229:23",className:"flex items-center justify-between text-sm",children:[e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:230:25",className:"flex items-center gap-2",children:[e.jsx(fe,{"code-path":"src/components/cloud/CloudBilling.tsx:231:27",variant:"outline",className:"border-amber-500/50 text-amber-300",children:s.rule_name}),e.jsxs("span",{"code-path":"src/components/cloud/CloudBilling.tsx:232:27",className:"text-slate-400",children:[s.provider," · ",s.metric==="daily"?"日":"月","成本"]})]}),e.jsxs("span",{"code-path":"src/components/cloud/CloudBilling.tsx:236:25",className:"text-slate-300",children:["当前 ",e.jsx("span",{"code-path":"src/components/cloud/CloudBilling.tsx:237:30",className:"text-amber-300 font-medium",children:g(s.current)})," ",s.operator," ","阈值 ",e.jsx("span",{"code-path":"src/components/cloud/CloudBilling.tsx:239:30",className:"text-red-400 font-medium",children:g(s.threshold)})]})]},m))})]}),e.jsx(T,{"code-path":"src/components/cloud/CloudBilling.tsx:247:15",className:"bg-slate-900/50 border-slate-800",children:e.jsxs(V,{"code-path":"src/components/cloud/CloudBilling.tsx:248:17",className:"pt-4",children:[e.jsx("h3",{"code-path":"src/components/cloud/CloudBilling.tsx:249:19",className:"text-sm font-medium text-slate-200 mb-4",children:"近 30 天成本趋势"}),e.jsx(Re,{"code-path":"src/components/cloud/CloudBilling.tsx:250:19",data:a.month_trend||[]})]})}),e.jsx(T,{"code-path":"src/components/cloud/CloudBilling.tsx:254:15",className:"bg-slate-900/50 border-slate-800",children:e.jsxs(V,{"code-path":"src/components/cloud/CloudBilling.tsx:255:17",className:"pt-4",children:[e.jsx("h3",{"code-path":"src/components/cloud/CloudBilling.tsx:256:19",className:"text-sm font-medium text-slate-200 mb-4",children:"本月厂商成本分布"}),(a.provider_dist||[]).length===0?e.jsx("p",{"code-path":"src/components/cloud/CloudBilling.tsx:258:21",className:"text-sm text-slate-500 py-8 text-center",children:"暂无数据"}):e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:260:21",className:"space-y-3",children:[e.jsx("div",{"code-path":"src/components/cloud/CloudBilling.tsx:261:23",className:"flex h-8 rounded-lg overflow-hidden",children:a.provider_dist.map((s,m)=>e.jsx("div",{"code-path":"src/components/cloud/CloudBilling.tsx:263:27",className:`${O[s.provider]||"bg-slate-600"} flex items-center justify-center text-xs text-white font-medium`,style:{width:`${s.percent}%`},title:`${v[s.provider]||s.provider}: ${g(s.cost)} (${s.percent.toFixed(1)}%)`,children:s.percent>8?v[s.provider]||s.provider:""},m))}),e.jsx("div",{"code-path":"src/components/cloud/CloudBilling.tsx:273:23",className:"grid grid-cols-2 md:grid-cols-3 gap-2",children:a.provider_dist.map((s,m)=>e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:275:27",className:"flex items-center justify-between text-sm",children:[e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:276:29",className:"flex items-center gap-2",children:[e.jsx("div",{"code-path":"src/components/cloud/CloudBilling.tsx:277:31",className:`w-3 h-3 rounded ${O[s.provider]||"bg-slate-600"}`}),e.jsx("span",{"code-path":"src/components/cloud/CloudBilling.tsx:278:31",className:"text-slate-300",children:v[s.provider]||s.provider})]}),e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:280:29",className:"text-right",children:[e.jsx("span",{"code-path":"src/components/cloud/CloudBilling.tsx:281:31",className:"text-slate-200 font-medium",children:g(s.cost)}),e.jsxs("span",{"code-path":"src/components/cloud/CloudBilling.tsx:282:31",className:"text-slate-500 ml-2",children:[s.percent.toFixed(1),"%"]})]})]},m))})]})]})})]}):null}),n==="records"&&e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:297:9",className:"space-y-3",children:[e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:298:11",className:"flex flex-wrap items-end gap-3",children:[e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:299:13",children:[e.jsx(r,{"code-path":"src/components/cloud/CloudBilling.tsx:300:15",className:"text-xs text-slate-400 mb-1",children:"厂商"}),e.jsxs(w,{"code-path":"src/components/cloud/CloudBilling.tsx:301:15",value:z||"all",onValueChange:s=>te(s==="all"?"":s),children:[e.jsx(S,{"code-path":"src/components/cloud/CloudBilling.tsx:302:17",className:"w-32 h-9",children:e.jsx(k,{"code-path":"src/components/cloud/CloudBilling.tsx:302:53"})}),e.jsxs(_,{"code-path":"src/components/cloud/CloudBilling.tsx:303:17",children:[e.jsx(x,{"code-path":"src/components/cloud/CloudBilling.tsx:304:19",value:"all",children:"全部"}),Object.entries(v).map(([s,m])=>e.jsx(x,{"code-path":"src/components/cloud/CloudBilling.tsx:306:21",value:s,children:m},s))]})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:311:13",children:[e.jsx(r,{"code-path":"src/components/cloud/CloudBilling.tsx:312:15",className:"text-xs text-slate-400 mb-1",children:"开始日期"}),e.jsx(j,{"code-path":"src/components/cloud/CloudBilling.tsx:313:15",type:"date",className:"w-40 h-9",value:E,onChange:s=>ce(s.target.value)})]}),e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:315:13",children:[e.jsx(r,{"code-path":"src/components/cloud/CloudBilling.tsx:316:15",className:"text-xs text-slate-400 mb-1",children:"结束日期"}),e.jsx(j,{"code-path":"src/components/cloud/CloudBilling.tsx:317:15",type:"date",className:"w-40 h-9",value:L,onChange:s=>ne(s.target.value)})]}),e.jsxs(u,{"code-path":"src/components/cloud/CloudBilling.tsx:319:13",variant:"outline",size:"sm",onClick:b,children:[e.jsx(q,{"code-path":"src/components/cloud/CloudBilling.tsx:320:15",className:"h-4 w-4 mr-1"}),"查询"]})]}),l?e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:325:13",className:"flex items-center justify-center py-20 text-slate-500",children:[e.jsx(R,{"code-path":"src/components/cloud/CloudBilling.tsx:325:84",className:"h-6 w-6 animate-spin mr-2"}),"加载中..."]}):C.length===0?e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:327:13",className:"py-20 text-center text-slate-500",children:[e.jsx(ye,{"code-path":"src/components/cloud/CloudBilling.tsx:328:15",className:"h-12 w-12 mx-auto mb-3 opacity-30"}),e.jsx("p",{"code-path":"src/components/cloud/CloudBilling.tsx:329:15",className:"text-sm",children:"暂无成本记录"})]}):e.jsx("div",{"code-path":"src/components/cloud/CloudBilling.tsx:332:13",className:"overflow-x-auto rounded-lg border border-slate-800",children:e.jsxs("table",{"code-path":"src/components/cloud/CloudBilling.tsx:333:15",className:"w-full text-sm",children:[e.jsx("thead",{"code-path":"src/components/cloud/CloudBilling.tsx:334:17",className:"bg-slate-900/80 text-slate-400",children:e.jsxs("tr",{"code-path":"src/components/cloud/CloudBilling.tsx:335:19",children:[e.jsx("th",{"code-path":"src/components/cloud/CloudBilling.tsx:336:21",className:"px-4 py-2.5 text-left font-medium",children:"日期"}),e.jsx("th",{"code-path":"src/components/cloud/CloudBilling.tsx:337:21",className:"px-4 py-2.5 text-left font-medium",children:"厂商"}),e.jsx("th",{"code-path":"src/components/cloud/CloudBilling.tsx:338:21",className:"px-4 py-2.5 text-left font-medium",children:"服务"}),e.jsx("th",{"code-path":"src/components/cloud/CloudBilling.tsx:339:21",className:"px-4 py-2.5 text-left font-medium",children:"区域"}),e.jsx("th",{"code-path":"src/components/cloud/CloudBilling.tsx:340:21",className:"px-4 py-2.5 text-left font-medium",children:"账号"}),e.jsx("th",{"code-path":"src/components/cloud/CloudBilling.tsx:341:21",className:"px-4 py-2.5 text-right font-medium",children:"费用"}),e.jsx("th",{"code-path":"src/components/cloud/CloudBilling.tsx:342:21",className:"px-4 py-2.5 text-left font-medium",children:"说明"}),e.jsx("th",{"code-path":"src/components/cloud/CloudBilling.tsx:343:21",className:"px-4 py-2.5 text-center font-medium",children:"操作"})]})}),e.jsx("tbody",{"code-path":"src/components/cloud/CloudBilling.tsx:346:17",children:C.map(s=>e.jsxs("tr",{"code-path":"src/components/cloud/CloudBilling.tsx:348:21",className:"border-t border-slate-800 hover:bg-slate-800/30",children:[e.jsx("td",{"code-path":"src/components/cloud/CloudBilling.tsx:349:23",className:"px-4 py-2.5 text-slate-300",children:s.billing_date}),e.jsx("td",{"code-path":"src/components/cloud/CloudBilling.tsx:350:23",className:"px-4 py-2.5",children:e.jsxs("span",{"code-path":"src/components/cloud/CloudBilling.tsx:351:25",className:"inline-flex items-center gap-1.5",children:[e.jsx("span",{"code-path":"src/components/cloud/CloudBilling.tsx:352:27",className:`w-2 h-2 rounded-full ${O[s.provider]||"bg-slate-500"}`}),v[s.provider]||s.provider]})}),e.jsx("td",{"code-path":"src/components/cloud/CloudBilling.tsx:356:23",className:"px-4 py-2.5 text-slate-400",children:s.service||"-"}),e.jsx("td",{"code-path":"src/components/cloud/CloudBilling.tsx:357:23",className:"px-4 py-2.5 text-slate-400",children:s.region||"-"}),e.jsx("td",{"code-path":"src/components/cloud/CloudBilling.tsx:358:23",className:"px-4 py-2.5 text-slate-400",children:s.account_name||"-"}),e.jsx("td",{"code-path":"src/components/cloud/CloudBilling.tsx:359:23",className:"px-4 py-2.5 text-right text-slate-200 font-medium",children:g(s.cost)}),e.jsx("td",{"code-path":"src/components/cloud/CloudBilling.tsx:360:23",className:"px-4 py-2.5 text-slate-500 max-w-xs truncate",children:s.description||"-"}),e.jsx("td",{"code-path":"src/components/cloud/CloudBilling.tsx:361:23",className:"px-4 py-2.5",children:e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:362:25",className:"flex items-center justify-center gap-1",children:[e.jsx(u,{"code-path":"src/components/cloud/CloudBilling.tsx:363:27",variant:"ghost",size:"icon",className:"h-7 w-7",onClick:()=>xe(s),children:e.jsx(J,{"code-path":"src/components/cloud/CloudBilling.tsx:364:29",className:"h-3.5 w-3.5"})}),e.jsx(u,{"code-path":"src/components/cloud/CloudBilling.tsx:366:27",variant:"ghost",size:"icon",className:"h-7 w-7 text-red-400 hover:text-red-300",onClick:()=>je(s.id),children:e.jsx(K,{"code-path":"src/components/cloud/CloudBilling.tsx:367:29",className:"h-3.5 w-3.5"})})]})})]},s.id))})]})})]}),n==="alerts"&&e.jsx("div",{"code-path":"src/components/cloud/CloudBilling.tsx:381:9",className:"space-y-3",children:ie?e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:383:13",className:"flex items-center justify-center py-20 text-slate-500",children:[e.jsx(R,{"code-path":"src/components/cloud/CloudBilling.tsx:383:84",className:"h-6 w-6 animate-spin mr-2"}),"加载中..."]}):P.length===0?e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:385:13",className:"py-20 text-center text-slate-500",children:[e.jsx(A,{"code-path":"src/components/cloud/CloudBilling.tsx:386:15",className:"h-12 w-12 mx-auto mb-3 opacity-30"}),e.jsx("p",{"code-path":"src/components/cloud/CloudBilling.tsx:387:15",className:"text-sm",children:"暂无预警规则"})]}):e.jsx("div",{"code-path":"src/components/cloud/CloudBilling.tsx:390:13",className:"grid grid-cols-1 md:grid-cols-2 gap-3",children:P.map(s=>e.jsx(T,{"code-path":"src/components/cloud/CloudBilling.tsx:392:17",className:"bg-slate-900/50 border-slate-800",children:e.jsxs(V,{"code-path":"src/components/cloud/CloudBilling.tsx:393:19",className:"pt-4",children:[e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:394:21",className:"flex items-center justify-between mb-3",children:[e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:395:23",className:"flex items-center gap-2",children:[e.jsx(A,{"code-path":"src/components/cloud/CloudBilling.tsx:396:25",className:`h-4 w-4 ${s.enabled?"text-amber-400":"text-slate-600"}`}),e.jsx("span",{"code-path":"src/components/cloud/CloudBilling.tsx:397:25",className:"text-sm font-medium text-slate-200",children:s.name})]}),e.jsx(oe,{"code-path":"src/components/cloud/CloudBilling.tsx:399:23",checked:s.enabled,onCheckedChange:()=>Ce(s.id)})]}),e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:401:21",className:"grid grid-cols-2 gap-2 text-sm",children:[e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:402:23",children:[e.jsx("span",{"code-path":"src/components/cloud/CloudBilling.tsx:403:25",className:"text-slate-500",children:"厂商"}),e.jsx("span",{"code-path":"src/components/cloud/CloudBilling.tsx:404:25",className:"ml-2 text-slate-300",children:s.provider?v[s.provider]||s.provider:"全部"})]}),e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:406:23",children:[e.jsx("span",{"code-path":"src/components/cloud/CloudBilling.tsx:407:25",className:"text-slate-500",children:"指标"}),e.jsx("span",{"code-path":"src/components/cloud/CloudBilling.tsx:408:25",className:"ml-2 text-slate-300",children:s.metric==="daily"?"日成本":"月累计"})]}),e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:410:23",children:[e.jsx("span",{"code-path":"src/components/cloud/CloudBilling.tsx:411:25",className:"text-slate-500",children:"阈值"}),e.jsxs("span",{"code-path":"src/components/cloud/CloudBilling.tsx:412:25",className:"ml-2 text-amber-300 font-medium",children:[s.operator," ",g(s.threshold)]})]}),s.last_triggered&&e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:415:25",children:[e.jsx("span",{"code-path":"src/components/cloud/CloudBilling.tsx:416:27",className:"text-slate-500",children:"最后触发"}),e.jsx("span",{"code-path":"src/components/cloud/CloudBilling.tsx:417:27",className:"ml-2 text-slate-400",children:new Date(s.last_triggered).toLocaleString("zh-CN")})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:421:21",className:"flex justify-end gap-1 mt-3",children:[e.jsx(u,{"code-path":"src/components/cloud/CloudBilling.tsx:422:23",variant:"ghost",size:"icon",className:"h-7 w-7",onClick:()=>ge(s),children:e.jsx(J,{"code-path":"src/components/cloud/CloudBilling.tsx:423:25",className:"h-3.5 w-3.5"})}),e.jsx(u,{"code-path":"src/components/cloud/CloudBilling.tsx:425:23",variant:"ghost",size:"icon",className:"h-7 w-7 text-red-400 hover:text-red-300",onClick:()=>Be(s.id),children:e.jsx(K,{"code-path":"src/components/cloud/CloudBilling.tsx:426:25",className:"h-3.5 w-3.5"})})]})]})},s.id))})}),e.jsx(we,{"code-path":"src/components/cloud/CloudBilling.tsx:437:7",open:de,onOpenChange:F,editingRecord:re,onSuccess:()=>{b(),N()}}),e.jsx(Se,{"code-path":"src/components/cloud/CloudBilling.tsx:443:7",open:pe,onOpenChange:H,editingRule:me,onSuccess:()=>{D(),N()}})]})}export{qe as CloudBilling}; diff --git a/backend/static/assets/CloudBilling-BUyc8wKP.js b/backend/static/assets/CloudBilling-BUyc8wKP.js deleted file mode 100644 index 1ae729b..0000000 --- a/backend/static/assets/CloudBilling-BUyc8wKP.js +++ /dev/null @@ -1 +0,0 @@ -import{g as Z,j as e,r as a,D as ee,b as se,c as le,d as oe,e as te,I as j,f as ce,B as m,L as R,a as ye,T as De,J as M}from"./index-DfyorCky.js";import{L as r}from"./label-BK0h2apY.js";import{C as A,a as V}from"./card-C55cvSHg.js";import{B as Re}from"./badge-xNW8x0G1.js";import{S as ne}from"./switch-CGiGgOnh.js";import{S as w,a as S,b as k,c as _,d as h}from"./select-D5qUzdAs.js";import{t as p}from"./index-a3ybMjbR.js";import{b as g}from"./cloud-Dzoer-2i.js";import{T as ae}from"./trending-up-CdusV6gc.js";import{T as we}from"./trending-down-BGTWG_dA.js";import{R as J}from"./refresh-cw-DUB_tAG-.js";import{P as U}from"./plus-CUG-9kpu.js";import{P as G}from"./pencil-BqUotcjf.js";import{T as K}from"./trash-2-Dx32pOzT.js";import"./index-CWVNW_qu.js";const Se=[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}],["path",{d:"M8 14h.01",key:"6423bh"}],["path",{d:"M12 14h.01",key:"1etili"}],["path",{d:"M16 14h.01",key:"1gbofw"}],["path",{d:"M8 18h.01",key:"lrp35t"}],["path",{d:"M12 18h.01",key:"mhygvu"}],["path",{d:"M16 18h.01",key:"kzsmim"}]],ke=Z("calendar-days",Se);const _e=[["path",{d:"M19 7V4a1 1 0 0 0-1-1H5a2 2 0 0 0 0 4h15a1 1 0 0 1 1 1v4h-3a2 2 0 0 0 0 4h3a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1",key:"18etb6"}],["path",{d:"M3 5v14a2 2 0 0 0 2 2h15a1 1 0 0 0 1-1v-4",key:"xoc0q4"}]],Q=Z("wallet",_e),v={aliyun:"阿里云",tencent:"腾讯云",aws:"AWS",huawei:"华为云",azure:"Azure"},O={aliyun:"bg-orange-500",tencent:"bg-blue-500",aws:"bg-amber-500",huawei:"bg-red-500",azure:"bg-sky-500"};function u(d){return`¥${d.toLocaleString("zh-CN",{minimumFractionDigits:2,maximumFractionDigits:2})}`}function E({icon:d,label:i,value:t,trend:c,trendLabel:o,alert:n}){return e.jsxs("div",{"code-path":"src/components/cloud/CloudBillingHelpers.tsx:35:5",className:`rounded-lg border p-4 ${n?"border-amber-500/30 bg-amber-500/5":"border-slate-800 bg-slate-900/50"}`,children:[e.jsxs("div",{"code-path":"src/components/cloud/CloudBillingHelpers.tsx:36:7",className:"flex items-center justify-between mb-2",children:[e.jsx("span",{"code-path":"src/components/cloud/CloudBillingHelpers.tsx:37:9",className:"text-slate-400 text-sm",children:i}),e.jsx("span",{"code-path":"src/components/cloud/CloudBillingHelpers.tsx:38:9",className:n?"text-amber-400":"text-slate-500",children:d})]}),e.jsx("div",{"code-path":"src/components/cloud/CloudBillingHelpers.tsx:40:7",className:`text-2xl font-bold ${n?"text-amber-300":"text-slate-100"}`,children:t}),o&&e.jsxs("div",{"code-path":"src/components/cloud/CloudBillingHelpers.tsx:42:9",className:"flex items-center gap-1 mt-1 text-xs",children:[c!==void 0&&c>0&&e.jsx(ae,{"code-path":"src/components/cloud/CloudBillingHelpers.tsx:43:48",className:"h-3 w-3 text-red-400"}),c!==void 0&&c<0&&e.jsx(we,{"code-path":"src/components/cloud/CloudBillingHelpers.tsx:44:48",className:"h-3 w-3 text-green-400"}),e.jsx("span",{"code-path":"src/components/cloud/CloudBillingHelpers.tsx:45:11",className:"text-slate-500",children:o})]})]})}function He({data:d}){if(d.length===0)return e.jsx("p",{"code-path":"src/components/cloud/CloudBillingHelpers.tsx:54:12",className:"text-sm text-slate-500 py-8 text-center",children:"暂无数据"});const i=Math.max(...d.map(c=>c.cost),1),t=d.slice(-30);return e.jsxs("div",{"code-path":"src/components/cloud/CloudBillingHelpers.tsx:60:5",children:[e.jsx("div",{"code-path":"src/components/cloud/CloudBillingHelpers.tsx:61:7",className:"flex items-end gap-0.5 h-40",children:t.map((c,o)=>{const n=Math.max(c.cost/i*100,2);return e.jsxs("div",{"code-path":"src/components/cloud/CloudBillingHelpers.tsx:65:13",className:"flex-1 group relative",style:{height:"100%"},children:[e.jsx("div",{"code-path":"src/components/cloud/CloudBillingHelpers.tsx:70:15",className:"absolute bottom-0 w-full rounded-t-sm bg-gradient-to-t from-blue-600/60 to-blue-400/80 group-hover:from-blue-500 group-hover:to-blue-300 transition-colors",style:{height:`${n}%`}}),e.jsxs("div",{"code-path":"src/components/cloud/CloudBillingHelpers.tsx:74:15",className:"absolute bottom-full left-1/2 -translate-x-1/2 mb-2 hidden group-hover:block whitespace-nowrap text-xs bg-slate-800 text-slate-200 px-2 py-1 rounded border border-slate-700 z-10",children:[c.date,": ",u(c.cost)]})]},o)})}),e.jsxs("div",{"code-path":"src/components/cloud/CloudBillingHelpers.tsx:81:7",className:"flex justify-between mt-2 text-xs text-slate-500",children:[e.jsx("span",{"code-path":"src/components/cloud/CloudBillingHelpers.tsx:82:9",children:t[0]?.date}),e.jsx("span",{"code-path":"src/components/cloud/CloudBillingHelpers.tsx:83:9",children:t[t.length-1]?.date})]})]})}const X={provider:"aliyun",billing_date:"",cost:"",service:"",region:"",account_name:"",description:""};function ze({open:d,onOpenChange:i,editingRecord:t,onSuccess:c}){const[o,n]=a.useState(X),[B,C]=a.useState(!1);a.useEffect(()=>{d&&n(t?{provider:t.provider,billing_date:t.billing_date,cost:t.cost,service:t.service||"",region:t.region||"",account_name:t.account_name||"",description:t.description||""}:{...X,billing_date:new Date().toISOString().slice(0,10)})},[d,t]);const D=async()=>{if(!o.provider||!o.billing_date||!o.cost){p.error("请填写必填字段");return}C(!0);try{const l={...o,cost:parseFloat(o.cost)};t?(await g.remove(t.id),await g.create(l)):await g.create(l),i(!1),c(),p("保存成功")}catch(l){p.error("保存失败",{description:l.message})}finally{C(!1)}};return e.jsx(ee,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:90:5",open:d,onOpenChange:i,children:e.jsxs(se,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:91:7",className:"max-w-md",children:[e.jsxs(le,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:92:9",children:[e.jsx(oe,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:93:11",children:t?"编辑成本记录":"记录成本"}),e.jsx(te,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:94:11",children:"记录一条每日云资源成本"})]}),e.jsxs("div",{"code-path":"src/components/cloud/BillingRecordDialog.tsx:96:9",className:"space-y-3",children:[e.jsxs("div",{"code-path":"src/components/cloud/BillingRecordDialog.tsx:97:11",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/cloud/BillingRecordDialog.tsx:98:13",children:[e.jsx(r,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:99:15",className:"text-sm text-slate-300",children:"厂商 *"}),e.jsxs(w,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:100:15",value:o.provider,onValueChange:l=>n({...o,provider:l}),children:[e.jsx(S,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:101:17",className:"mt-1",children:e.jsx(k,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:101:49"})}),e.jsx(_,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:102:17",children:Object.entries(v).map(([l,f])=>e.jsx(h,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:104:21",value:l,children:f},l))})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/BillingRecordDialog.tsx:109:13",children:[e.jsx(r,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:110:15",className:"text-sm text-slate-300",children:"日期 *"}),e.jsx(j,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:111:15",type:"date",className:"mt-1",value:o.billing_date,onChange:l=>n({...o,billing_date:l.target.value})})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/BillingRecordDialog.tsx:114:11",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/cloud/BillingRecordDialog.tsx:115:13",children:[e.jsx(r,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:116:15",className:"text-sm text-slate-300",children:"费用(元) *"}),e.jsx(j,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:117:15",type:"number",step:"0.01",className:"mt-1",placeholder:"0.00",value:o.cost,onChange:l=>n({...o,cost:l.target.value})})]}),e.jsxs("div",{"code-path":"src/components/cloud/BillingRecordDialog.tsx:119:13",children:[e.jsx(r,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:120:15",className:"text-sm text-slate-300",children:"服务"}),e.jsx(j,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:121:15",className:"mt-1",placeholder:"ECS, RDS...",value:o.service,onChange:l=>n({...o,service:l.target.value})})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/BillingRecordDialog.tsx:124:11",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/cloud/BillingRecordDialog.tsx:125:13",children:[e.jsx(r,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:126:15",className:"text-sm text-slate-300",children:"区域"}),e.jsx(j,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:127:15",className:"mt-1",placeholder:"cn-hangzhou",value:o.region,onChange:l=>n({...o,region:l.target.value})})]}),e.jsxs("div",{"code-path":"src/components/cloud/BillingRecordDialog.tsx:129:13",children:[e.jsx(r,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:130:15",className:"text-sm text-slate-300",children:"账号名称"}),e.jsx(j,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:131:15",className:"mt-1",placeholder:"主账号",value:o.account_name,onChange:l=>n({...o,account_name:l.target.value})})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/BillingRecordDialog.tsx:134:11",children:[e.jsx(r,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:135:13",className:"text-sm text-slate-300",children:"备注"}),e.jsx(j,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:136:13",className:"mt-1",placeholder:"可选",value:o.description,onChange:l=>n({...o,description:l.target.value})})]})]}),e.jsxs(ce,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:139:9",children:[e.jsx(m,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:140:11",variant:"outline",onClick:()=>i(!1),children:"取消"}),e.jsxs(m,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:141:11",onClick:D,disabled:B,children:[B&&e.jsx(R,{"code-path":"src/components/cloud/BillingRecordDialog.tsx:142:28",className:"h-4 w-4 mr-1 animate-spin"}),"保存"]})]})]})})}const Y={name:"",provider:"",metric:"daily",threshold:"",operator:">",enabled:!0};function $e({open:d,onOpenChange:i,editingRule:t,onSuccess:c}){const[o,n]=a.useState(Y),[B,C]=a.useState(!1);a.useEffect(()=>{d&&n(t?{name:t.name,provider:t.provider||"",metric:t.metric||"daily",threshold:t.threshold,operator:t.operator||">",enabled:t.enabled}:{...Y})},[d,t]);const D=async()=>{if(!o.name||!o.threshold){p.error("请填写规则名称和阈值");return}C(!0);try{const l={...o,threshold:parseFloat(o.threshold)};t?await g.updateAlertRule(t.id,l):await g.createAlertRule(l),i(!1),c(),p("保存成功")}catch(l){p.error("保存失败",{description:l.message})}finally{C(!1)}};return e.jsx(ee,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:81:5",open:d,onOpenChange:i,children:e.jsxs(se,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:82:7",className:"max-w-md",children:[e.jsxs(le,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:83:9",children:[e.jsx(oe,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:84:11",children:t?"编辑预警规则":"添加预警规则"}),e.jsx(te,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:85:11",children:"设置成本阈值,超标时自动预警"})]}),e.jsxs("div",{"code-path":"src/components/cloud/BillingRuleDialog.tsx:87:9",className:"space-y-3",children:[e.jsxs("div",{"code-path":"src/components/cloud/BillingRuleDialog.tsx:88:11",children:[e.jsx(r,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:89:13",className:"text-sm text-slate-300",children:"规则名称 *"}),e.jsx(j,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:90:13",className:"mt-1",placeholder:"如:日成本超 500 元预警",value:o.name,onChange:l=>n({...o,name:l.target.value})})]}),e.jsxs("div",{"code-path":"src/components/cloud/BillingRuleDialog.tsx:92:11",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/cloud/BillingRuleDialog.tsx:93:13",children:[e.jsx(r,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:94:15",className:"text-sm text-slate-300",children:"厂商"}),e.jsxs(w,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:95:15",value:o.provider||"all",onValueChange:l=>n({...o,provider:l==="all"?"":l}),children:[e.jsx(S,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:96:17",className:"mt-1",children:e.jsx(k,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:96:49"})}),e.jsxs(_,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:97:17",children:[e.jsx(h,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:98:19",value:"all",children:"全部厂商"}),Object.entries(v).map(([l,f])=>e.jsx(h,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:100:21",value:l,children:f},l))]})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/BillingRuleDialog.tsx:105:13",children:[e.jsx(r,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:106:15",className:"text-sm text-slate-300",children:"指标"}),e.jsxs(w,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:107:15",value:o.metric,onValueChange:l=>n({...o,metric:l}),children:[e.jsx(S,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:108:17",className:"mt-1",children:e.jsx(k,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:108:49"})}),e.jsxs(_,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:109:17",children:[e.jsx(h,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:110:19",value:"daily",children:"日成本"}),e.jsx(h,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:111:19",value:"monthly",children:"月累计"})]})]})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/BillingRuleDialog.tsx:116:11",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/cloud/BillingRuleDialog.tsx:117:13",children:[e.jsx(r,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:118:15",className:"text-sm text-slate-300",children:"比较"}),e.jsxs(w,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:119:15",value:o.operator,onValueChange:l=>n({...o,operator:l}),children:[e.jsx(S,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:120:17",className:"mt-1",children:e.jsx(k,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:120:49"})}),e.jsxs(_,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:121:17",children:[e.jsx(h,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:122:19",value:">",children:"大于 >"}),e.jsx(h,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:123:19",value:">=",children:"大于等于 ≥"}),e.jsx(h,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:124:19",value:"<",children:"小于 <"}),e.jsx(h,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:125:19",value:"<=",children:"小于等于 ≤"})]})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/BillingRuleDialog.tsx:129:13",children:[e.jsx(r,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:130:15",className:"text-sm text-slate-300",children:"阈值(元) *"}),e.jsx(j,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:131:15",type:"number",step:"0.01",className:"mt-1",placeholder:"500.00",value:o.threshold,onChange:l=>n({...o,threshold:l.target.value})})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/BillingRuleDialog.tsx:134:11",className:"flex items-center gap-2",children:[e.jsx(ne,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:135:13",checked:o.enabled,onCheckedChange:l=>n({...o,enabled:l})}),e.jsx(r,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:136:13",className:"text-sm text-slate-300",children:"启用"})]})]}),e.jsxs(ce,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:139:9",children:[e.jsx(m,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:140:11",variant:"outline",onClick:()=>i(!1),children:"取消"}),e.jsxs(m,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:141:11",onClick:D,disabled:B,children:[B&&e.jsx(R,{"code-path":"src/components/cloud/BillingRuleDialog.tsx:142:28",className:"h-4 w-4 mr-1 animate-spin"}),"保存"]})]})]})})}function Ke(){const d=ye(),[i,t]=a.useState("overview"),[c,o]=a.useState(null),[n,B]=a.useState(!0),[C,D]=a.useState([]),[l,f]=a.useState(!0),[H,ie]=a.useState(""),[z,de]=a.useState(""),[$,re]=a.useState(""),[P,pe]=a.useState([]),[xe,I]=a.useState(!0),[me,L]=a.useState(!1),[ue,W]=a.useState(null),[he,T]=a.useState(!1),[ge,q]=a.useState(null),N=a.useCallback(async()=>{B(!0);try{const s=await g.getStats();o(s)}catch(s){p.error("加载统计失败",{description:s.message})}finally{B(!1)}},[]),b=a.useCallback(async()=>{f(!0);try{const s={};H&&(s.provider=H),z&&(s.start_date=z),$&&(s.end_date=$);const x=await g.list(s);D(x.list||[])}catch(s){p.error("加载账单失败",{description:s.message})}finally{f(!1)}},[H,z,$]),y=a.useCallback(async()=>{I(!0);try{const s=await g.listAlertRules();pe(s.list||[])}catch(s){p.error("加载预警规则失败",{description:s.message})}finally{I(!1)}},[]);a.useEffect(()=>{N()},[N]),a.useEffect(()=>{i==="records"&&b()},[i,b]),a.useEffect(()=>{i==="alerts"&&y()},[i,y]);const je=()=>{W(null),L(!0)},Be=s=>{W(s),L(!0)},Ce=()=>{q(null),T(!0)},ve=s=>{q(s),T(!0)},Ne=async s=>{if(await d({title:"删除账单记录",description:"确定删除这条成本记录?",variant:"destructive"}))try{await g.remove(s),b(),N(),p("删除成功")}catch(F){p.error("删除失败",{description:F.message})}},fe=async s=>{if(await d({title:"删除预警规则",description:"确定删除此预警规则?",variant:"destructive"}))try{await g.deleteAlertRule(s),y(),p("删除成功")}catch(F){p.error("删除失败",{description:F.message})}},be=async s=>{try{await g.toggleAlertRule(s),y(),N()}catch(x){p.error("操作失败",{description:x.message})}};return e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:165:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:166:7",className:"flex items-center justify-between",children:[e.jsx("h2",{"code-path":"src/components/cloud/CloudBilling.tsx:167:9",className:"text-lg font-semibold text-slate-100",children:"云账单管理"}),e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:168:9",className:"flex items-center gap-2",children:[e.jsxs(m,{"code-path":"src/components/cloud/CloudBilling.tsx:169:11",variant:"outline",size:"sm",onClick:()=>{N(),i==="records"&&b(),i==="alerts"&&y()},children:[e.jsx(J,{"code-path":"src/components/cloud/CloudBilling.tsx:170:13",className:"h-4 w-4 mr-1"}),"刷新"]}),i==="records"&&e.jsxs(m,{"code-path":"src/components/cloud/CloudBilling.tsx:173:13",size:"sm",onClick:je,children:[e.jsx(U,{"code-path":"src/components/cloud/CloudBilling.tsx:174:15",className:"h-4 w-4 mr-1"}),"记录成本"]}),i==="alerts"&&e.jsxs(m,{"code-path":"src/components/cloud/CloudBilling.tsx:178:13",size:"sm",onClick:Ce,children:[e.jsx(U,{"code-path":"src/components/cloud/CloudBilling.tsx:179:15",className:"h-4 w-4 mr-1"}),"添加规则"]})]})]}),e.jsx("div",{"code-path":"src/components/cloud/CloudBilling.tsx:185:7",className:"flex gap-1 border-b border-slate-800",children:[{key:"overview",label:"概览统计"},{key:"records",label:"成本记录"},{key:"alerts",label:"预警规则"}].map(s=>e.jsx("button",{"code-path":"src/components/cloud/CloudBilling.tsx:191:11",onClick:()=>t(s.key),className:`px-4 py-2 text-sm font-medium transition-colors border-b-2 -mb-px ${i===s.key?"text-blue-400 border-blue-400":"text-slate-400 border-transparent hover:text-slate-200"}`,children:s.label},s.key))}),i==="overview"&&e.jsx("div",{"code-path":"src/components/cloud/CloudBilling.tsx:206:9",className:"space-y-4",children:n?e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:208:13",className:"flex items-center justify-center py-20 text-slate-500",children:[e.jsx(R,{"code-path":"src/components/cloud/CloudBilling.tsx:208:84",className:"h-6 w-6 animate-spin mr-2"}),"加载中..."]}):c?e.jsxs(e.Fragment,{children:[e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:211:15",className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-3",children:[e.jsx(E,{"code-path":"src/components/cloud/CloudBilling.tsx:212:17",icon:e.jsx(Q,{"code-path":"src/components/cloud/CloudBilling.tsx:213:25",className:"h-5 w-5"}),label:"今日成本",value:u(c.today_cost||0),trend:c.today_cost-(c.yesterday_cost||0),trendLabel:`昨日 ${u(c.yesterday_cost||0)}`}),e.jsx(E,{"code-path":"src/components/cloud/CloudBilling.tsx:219:17",icon:e.jsx(ke,{"code-path":"src/components/cloud/CloudBilling.tsx:220:25",className:"h-5 w-5"}),label:"本月成本",value:u(c.month_cost||0)}),e.jsx(E,{"code-path":"src/components/cloud/CloudBilling.tsx:224:17",icon:e.jsx(ae,{"code-path":"src/components/cloud/CloudBilling.tsx:225:25",className:"h-5 w-5"}),label:"年度成本",value:u(c.year_cost||0)}),e.jsx(E,{"code-path":"src/components/cloud/CloudBilling.tsx:229:17",icon:e.jsx(De,{"code-path":"src/components/cloud/CloudBilling.tsx:230:25",className:"h-5 w-5"}),label:"活跃预警",value:`${c.alerts?.length||0} 条`,alert:c.alerts?.length>0})]}),c.alerts?.length>0&&e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:238:17",className:"rounded-lg border border-amber-500/30 bg-amber-500/5 p-4",children:[e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:239:19",className:"flex items-center gap-2 mb-3",children:[e.jsx(M,{"code-path":"src/components/cloud/CloudBilling.tsx:240:21",className:"h-4 w-4 text-amber-400"}),e.jsx("span",{"code-path":"src/components/cloud/CloudBilling.tsx:241:21",className:"text-sm font-medium text-amber-300",children:"成本预警"})]}),e.jsx("div",{"code-path":"src/components/cloud/CloudBilling.tsx:243:19",className:"space-y-2",children:c.alerts.map((s,x)=>e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:245:23",className:"flex items-center justify-between text-sm",children:[e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:246:25",className:"flex items-center gap-2",children:[e.jsx(Re,{"code-path":"src/components/cloud/CloudBilling.tsx:247:27",variant:"outline",className:"border-amber-500/50 text-amber-300",children:s.rule_name}),e.jsxs("span",{"code-path":"src/components/cloud/CloudBilling.tsx:248:27",className:"text-slate-400",children:[s.provider," · ",s.metric==="daily"?"日":"月","成本"]})]}),e.jsxs("span",{"code-path":"src/components/cloud/CloudBilling.tsx:252:25",className:"text-slate-300",children:["当前 ",e.jsx("span",{"code-path":"src/components/cloud/CloudBilling.tsx:253:30",className:"text-amber-300 font-medium",children:u(s.current)})," ",s.operator," ","阈值 ",e.jsx("span",{"code-path":"src/components/cloud/CloudBilling.tsx:255:30",className:"text-red-400 font-medium",children:u(s.threshold)})]})]},x))})]}),e.jsx(A,{"code-path":"src/components/cloud/CloudBilling.tsx:263:15",className:"bg-slate-900/50 border-slate-800",children:e.jsxs(V,{"code-path":"src/components/cloud/CloudBilling.tsx:264:17",className:"pt-4",children:[e.jsx("h3",{"code-path":"src/components/cloud/CloudBilling.tsx:265:19",className:"text-sm font-medium text-slate-200 mb-4",children:"近 30 天成本趋势"}),e.jsx(He,{"code-path":"src/components/cloud/CloudBilling.tsx:266:19",data:c.month_trend||[]})]})}),e.jsx(A,{"code-path":"src/components/cloud/CloudBilling.tsx:270:15",className:"bg-slate-900/50 border-slate-800",children:e.jsxs(V,{"code-path":"src/components/cloud/CloudBilling.tsx:271:17",className:"pt-4",children:[e.jsx("h3",{"code-path":"src/components/cloud/CloudBilling.tsx:272:19",className:"text-sm font-medium text-slate-200 mb-4",children:"本月厂商成本分布"}),(c.provider_dist||[]).length===0?e.jsx("p",{"code-path":"src/components/cloud/CloudBilling.tsx:274:21",className:"text-sm text-slate-500 py-8 text-center",children:"暂无数据"}):e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:276:21",className:"space-y-3",children:[e.jsx("div",{"code-path":"src/components/cloud/CloudBilling.tsx:277:23",className:"flex h-8 rounded-lg overflow-hidden",children:c.provider_dist.map((s,x)=>e.jsx("div",{"code-path":"src/components/cloud/CloudBilling.tsx:279:27",className:`${O[s.provider]||"bg-slate-600"} flex items-center justify-center text-xs text-white font-medium`,style:{width:`${s.percent}%`},title:`${v[s.provider]||s.provider}: ${u(s.cost)} (${s.percent.toFixed(1)}%)`,children:s.percent>8?v[s.provider]||s.provider:""},x))}),e.jsx("div",{"code-path":"src/components/cloud/CloudBilling.tsx:289:23",className:"grid grid-cols-2 md:grid-cols-3 gap-2",children:c.provider_dist.map((s,x)=>e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:291:27",className:"flex items-center justify-between text-sm",children:[e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:292:29",className:"flex items-center gap-2",children:[e.jsx("div",{"code-path":"src/components/cloud/CloudBilling.tsx:293:31",className:`w-3 h-3 rounded ${O[s.provider]||"bg-slate-600"}`}),e.jsx("span",{"code-path":"src/components/cloud/CloudBilling.tsx:294:31",className:"text-slate-300",children:v[s.provider]||s.provider})]}),e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:296:29",className:"text-right",children:[e.jsx("span",{"code-path":"src/components/cloud/CloudBilling.tsx:297:31",className:"text-slate-200 font-medium",children:u(s.cost)}),e.jsxs("span",{"code-path":"src/components/cloud/CloudBilling.tsx:298:31",className:"text-slate-500 ml-2",children:[s.percent.toFixed(1),"%"]})]})]},x))})]})]})})]}):null}),i==="records"&&e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:313:9",className:"space-y-3",children:[e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:314:11",className:"flex flex-wrap items-end gap-3",children:[e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:315:13",children:[e.jsx(r,{"code-path":"src/components/cloud/CloudBilling.tsx:316:15",className:"text-xs text-slate-400 mb-1",children:"厂商"}),e.jsxs(w,{"code-path":"src/components/cloud/CloudBilling.tsx:317:15",value:H||"all",onValueChange:s=>ie(s==="all"?"":s),children:[e.jsx(S,{"code-path":"src/components/cloud/CloudBilling.tsx:318:17",className:"w-32 h-9",children:e.jsx(k,{"code-path":"src/components/cloud/CloudBilling.tsx:318:53"})}),e.jsxs(_,{"code-path":"src/components/cloud/CloudBilling.tsx:319:17",children:[e.jsx(h,{"code-path":"src/components/cloud/CloudBilling.tsx:320:19",value:"all",children:"全部"}),Object.entries(v).map(([s,x])=>e.jsx(h,{"code-path":"src/components/cloud/CloudBilling.tsx:322:21",value:s,children:x},s))]})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:327:13",children:[e.jsx(r,{"code-path":"src/components/cloud/CloudBilling.tsx:328:15",className:"text-xs text-slate-400 mb-1",children:"开始日期"}),e.jsx(j,{"code-path":"src/components/cloud/CloudBilling.tsx:329:15",type:"date",className:"w-40 h-9",value:z,onChange:s=>de(s.target.value)})]}),e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:331:13",children:[e.jsx(r,{"code-path":"src/components/cloud/CloudBilling.tsx:332:15",className:"text-xs text-slate-400 mb-1",children:"结束日期"}),e.jsx(j,{"code-path":"src/components/cloud/CloudBilling.tsx:333:15",type:"date",className:"w-40 h-9",value:$,onChange:s=>re(s.target.value)})]}),e.jsxs(m,{"code-path":"src/components/cloud/CloudBilling.tsx:335:13",variant:"outline",size:"sm",onClick:b,children:[e.jsx(J,{"code-path":"src/components/cloud/CloudBilling.tsx:336:15",className:"h-4 w-4 mr-1"}),"查询"]})]}),l?e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:341:13",className:"flex items-center justify-center py-20 text-slate-500",children:[e.jsx(R,{"code-path":"src/components/cloud/CloudBilling.tsx:341:84",className:"h-6 w-6 animate-spin mr-2"}),"加载中..."]}):C.length===0?e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:343:13",className:"py-20 text-center text-slate-500",children:[e.jsx(Q,{"code-path":"src/components/cloud/CloudBilling.tsx:344:15",className:"h-12 w-12 mx-auto mb-3 opacity-30"}),e.jsx("p",{"code-path":"src/components/cloud/CloudBilling.tsx:345:15",className:"text-sm",children:"暂无成本记录"})]}):e.jsx("div",{"code-path":"src/components/cloud/CloudBilling.tsx:348:13",className:"overflow-x-auto rounded-lg border border-slate-800",children:e.jsxs("table",{"code-path":"src/components/cloud/CloudBilling.tsx:349:15",className:"w-full text-sm",children:[e.jsx("thead",{"code-path":"src/components/cloud/CloudBilling.tsx:350:17",className:"bg-slate-900/80 text-slate-400",children:e.jsxs("tr",{"code-path":"src/components/cloud/CloudBilling.tsx:351:19",children:[e.jsx("th",{"code-path":"src/components/cloud/CloudBilling.tsx:352:21",className:"px-4 py-2.5 text-left font-medium",children:"日期"}),e.jsx("th",{"code-path":"src/components/cloud/CloudBilling.tsx:353:21",className:"px-4 py-2.5 text-left font-medium",children:"厂商"}),e.jsx("th",{"code-path":"src/components/cloud/CloudBilling.tsx:354:21",className:"px-4 py-2.5 text-left font-medium",children:"服务"}),e.jsx("th",{"code-path":"src/components/cloud/CloudBilling.tsx:355:21",className:"px-4 py-2.5 text-left font-medium",children:"区域"}),e.jsx("th",{"code-path":"src/components/cloud/CloudBilling.tsx:356:21",className:"px-4 py-2.5 text-left font-medium",children:"账号"}),e.jsx("th",{"code-path":"src/components/cloud/CloudBilling.tsx:357:21",className:"px-4 py-2.5 text-right font-medium",children:"费用"}),e.jsx("th",{"code-path":"src/components/cloud/CloudBilling.tsx:358:21",className:"px-4 py-2.5 text-left font-medium",children:"说明"}),e.jsx("th",{"code-path":"src/components/cloud/CloudBilling.tsx:359:21",className:"px-4 py-2.5 text-center font-medium",children:"操作"})]})}),e.jsx("tbody",{"code-path":"src/components/cloud/CloudBilling.tsx:362:17",children:C.map(s=>e.jsxs("tr",{"code-path":"src/components/cloud/CloudBilling.tsx:364:21",className:"border-t border-slate-800 hover:bg-slate-800/30",children:[e.jsx("td",{"code-path":"src/components/cloud/CloudBilling.tsx:365:23",className:"px-4 py-2.5 text-slate-300",children:s.billing_date}),e.jsx("td",{"code-path":"src/components/cloud/CloudBilling.tsx:366:23",className:"px-4 py-2.5",children:e.jsxs("span",{"code-path":"src/components/cloud/CloudBilling.tsx:367:25",className:"inline-flex items-center gap-1.5",children:[e.jsx("span",{"code-path":"src/components/cloud/CloudBilling.tsx:368:27",className:`w-2 h-2 rounded-full ${O[s.provider]||"bg-slate-500"}`}),v[s.provider]||s.provider]})}),e.jsx("td",{"code-path":"src/components/cloud/CloudBilling.tsx:372:23",className:"px-4 py-2.5 text-slate-400",children:s.service||"-"}),e.jsx("td",{"code-path":"src/components/cloud/CloudBilling.tsx:373:23",className:"px-4 py-2.5 text-slate-400",children:s.region||"-"}),e.jsx("td",{"code-path":"src/components/cloud/CloudBilling.tsx:374:23",className:"px-4 py-2.5 text-slate-400",children:s.account_name||"-"}),e.jsx("td",{"code-path":"src/components/cloud/CloudBilling.tsx:375:23",className:"px-4 py-2.5 text-right text-slate-200 font-medium",children:u(s.cost)}),e.jsx("td",{"code-path":"src/components/cloud/CloudBilling.tsx:376:23",className:"px-4 py-2.5 text-slate-500 max-w-xs truncate",children:s.description||"-"}),e.jsx("td",{"code-path":"src/components/cloud/CloudBilling.tsx:377:23",className:"px-4 py-2.5",children:e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:378:25",className:"flex items-center justify-center gap-1",children:[e.jsx(m,{"code-path":"src/components/cloud/CloudBilling.tsx:379:27",variant:"ghost",size:"icon",className:"h-7 w-7",onClick:()=>Be(s),children:e.jsx(G,{"code-path":"src/components/cloud/CloudBilling.tsx:380:29",className:"h-3.5 w-3.5"})}),e.jsx(m,{"code-path":"src/components/cloud/CloudBilling.tsx:382:27",variant:"ghost",size:"icon",className:"h-7 w-7 text-red-400 hover:text-red-300",onClick:()=>Ne(s.id),children:e.jsx(K,{"code-path":"src/components/cloud/CloudBilling.tsx:383:29",className:"h-3.5 w-3.5"})})]})})]},s.id))})]})})]}),i==="alerts"&&e.jsx("div",{"code-path":"src/components/cloud/CloudBilling.tsx:397:9",className:"space-y-3",children:xe?e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:399:13",className:"flex items-center justify-center py-20 text-slate-500",children:[e.jsx(R,{"code-path":"src/components/cloud/CloudBilling.tsx:399:84",className:"h-6 w-6 animate-spin mr-2"}),"加载中..."]}):P.length===0?e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:401:13",className:"py-20 text-center text-slate-500",children:[e.jsx(M,{"code-path":"src/components/cloud/CloudBilling.tsx:402:15",className:"h-12 w-12 mx-auto mb-3 opacity-30"}),e.jsx("p",{"code-path":"src/components/cloud/CloudBilling.tsx:403:15",className:"text-sm",children:"暂无预警规则"})]}):e.jsx("div",{"code-path":"src/components/cloud/CloudBilling.tsx:406:13",className:"grid grid-cols-1 md:grid-cols-2 gap-3",children:P.map(s=>e.jsx(A,{"code-path":"src/components/cloud/CloudBilling.tsx:408:17",className:"bg-slate-900/50 border-slate-800",children:e.jsxs(V,{"code-path":"src/components/cloud/CloudBilling.tsx:409:19",className:"pt-4",children:[e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:410:21",className:"flex items-center justify-between mb-3",children:[e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:411:23",className:"flex items-center gap-2",children:[e.jsx(M,{"code-path":"src/components/cloud/CloudBilling.tsx:412:25",className:`h-4 w-4 ${s.enabled?"text-amber-400":"text-slate-600"}`}),e.jsx("span",{"code-path":"src/components/cloud/CloudBilling.tsx:413:25",className:"text-sm font-medium text-slate-200",children:s.name})]}),e.jsx(ne,{"code-path":"src/components/cloud/CloudBilling.tsx:415:23",checked:s.enabled,onCheckedChange:()=>be(s.id)})]}),e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:417:21",className:"grid grid-cols-2 gap-2 text-sm",children:[e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:418:23",children:[e.jsx("span",{"code-path":"src/components/cloud/CloudBilling.tsx:419:25",className:"text-slate-500",children:"厂商"}),e.jsx("span",{"code-path":"src/components/cloud/CloudBilling.tsx:420:25",className:"ml-2 text-slate-300",children:s.provider?v[s.provider]||s.provider:"全部"})]}),e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:422:23",children:[e.jsx("span",{"code-path":"src/components/cloud/CloudBilling.tsx:423:25",className:"text-slate-500",children:"指标"}),e.jsx("span",{"code-path":"src/components/cloud/CloudBilling.tsx:424:25",className:"ml-2 text-slate-300",children:s.metric==="daily"?"日成本":"月累计"})]}),e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:426:23",children:[e.jsx("span",{"code-path":"src/components/cloud/CloudBilling.tsx:427:25",className:"text-slate-500",children:"阈值"}),e.jsxs("span",{"code-path":"src/components/cloud/CloudBilling.tsx:428:25",className:"ml-2 text-amber-300 font-medium",children:[s.operator," ",u(s.threshold)]})]}),s.last_triggered&&e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:431:25",children:[e.jsx("span",{"code-path":"src/components/cloud/CloudBilling.tsx:432:27",className:"text-slate-500",children:"最后触发"}),e.jsx("span",{"code-path":"src/components/cloud/CloudBilling.tsx:433:27",className:"ml-2 text-slate-400",children:new Date(s.last_triggered).toLocaleString("zh-CN")})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/CloudBilling.tsx:437:21",className:"flex justify-end gap-1 mt-3",children:[e.jsx(m,{"code-path":"src/components/cloud/CloudBilling.tsx:438:23",variant:"ghost",size:"icon",className:"h-7 w-7",onClick:()=>ve(s),children:e.jsx(G,{"code-path":"src/components/cloud/CloudBilling.tsx:439:25",className:"h-3.5 w-3.5"})}),e.jsx(m,{"code-path":"src/components/cloud/CloudBilling.tsx:441:23",variant:"ghost",size:"icon",className:"h-7 w-7 text-red-400 hover:text-red-300",onClick:()=>fe(s.id),children:e.jsx(K,{"code-path":"src/components/cloud/CloudBilling.tsx:442:25",className:"h-3.5 w-3.5"})})]})]})},s.id))})}),e.jsx(ze,{"code-path":"src/components/cloud/CloudBilling.tsx:453:7",open:me,onOpenChange:L,editingRecord:ue,onSuccess:()=>{b(),N()}}),e.jsx($e,{"code-path":"src/components/cloud/CloudBilling.tsx:459:7",open:he,onOpenChange:T,editingRule:ge,onSuccess:()=>{y(),N()}})]})}export{Ke as CloudBilling}; diff --git a/backend/static/assets/ClusterOverviewPage-CYcNLUM0.js b/backend/static/assets/ClusterOverviewPage-Alfof2Du.js similarity index 96% rename from backend/static/assets/ClusterOverviewPage-CYcNLUM0.js rename to backend/static/assets/ClusterOverviewPage-Alfof2Du.js index 3e1dae8..56ffd23 100644 --- a/backend/static/assets/ClusterOverviewPage-CYcNLUM0.js +++ b/backend/static/assets/ClusterOverviewPage-Alfof2Du.js @@ -1 +1 @@ -import{i as F,k as K,r as c,j as e,m as w,n as C,B as G,L as A,o as k,p as R,q as T,s as H,A as q,t as z,v as D}from"./index-DfyorCky.js";import{C as i,a as u}from"./card-C55cvSHg.js";import{B as M}from"./badge-xNW8x0G1.js";import{T as J,a as Q,b as x,c as n,d as V,e as a}from"./table-5sHV4Akp.js";import{k as j}from"./kubernetes-J8O09fK7.js";import{u as W}from"./use-toast-CrSOP4cJ.js";import{R as X}from"./refresh-cw-DUB_tAG-.js";const Y={"kube-system":T,"kube-public":z,"kube-node-lease":q,default:H};function ne(){const{clusterCode:r}=F(),B=K(),{toast:E}=W(),[,P]=c.useState([]),[m,O]=c.useState([]),[N,f]=c.useState([]),[d,I]=c.useState(null),[p,y]=c.useState(!1),_=c.useCallback(async()=>{try{const t=(await j.getClusters())?.list||[];P(t);const o=t.find(l=>(l.code||String(l.id))===r);I(o||null),!o&&t.length>0&&r&&E({title:"集群未找到",description:`找不到集群 ${r}`,variant:"destructive"})}catch{P([])}},[r]),v=c.useCallback(async()=>{if(r){y(!0);try{const[s,t]=await Promise.all([j.getNodes(r).catch(()=>[]),j.getNamespaces(r).catch(()=>[])]);O(Array.isArray(s)?s:s?.list||s?.data||[]);const o=Array.isArray(t)?t:t?.list||t?.data||[];f(o)}catch{O([]),f([])}finally{y(!1)}}},[r]);c.useEffect(()=>{_()},[_]),c.useEffect(()=>{v()},[v]);const L=s=>s?.role==="master"||s?.role==="control-plane"?"bg-blue-500/20 text-blue-400 border-blue-500/30":"bg-slate-500/20 text-slate-400 border-slate-500/30";return e.jsxs("div",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:81:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:83:7",className:"flex items-center gap-2 text-sm text-slate-500",children:[e.jsx(w,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:84:9",to:"/kubernetes",className:"hover:text-slate-300 transition-colors",children:"集群"}),e.jsx(C,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:85:9",className:"h-3 w-3"}),e.jsx("span",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:86:9",className:"text-slate-300",children:r})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:90:7",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:91:9",children:[e.jsx("h1",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:92:11",className:"text-2xl font-bold text-slate-100",children:r}),e.jsxs("p",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:93:11",className:"text-sm text-slate-500 mt-1",children:["集群概览",d?.version?` — Kubernetes ${d.version}`:""]})]}),e.jsx("div",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:98:9",className:"flex items-center gap-2",children:e.jsx(G,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:99:11",variant:"outline",size:"icon",className:"h-9 w-9 border-slate-700 text-slate-400",onClick:v,disabled:p,children:p?e.jsx(A,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:101:24",className:"h-4 w-4 animate-spin"}):e.jsx(X,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:101:71",className:"h-4 w-4"})})})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:107:7",className:"grid grid-cols-3 md:grid-cols-3 gap-4",children:[e.jsx(i,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:108:9",className:"bg-slate-900 border-slate-800",children:e.jsx(u,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:109:11",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:110:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:111:15",children:[e.jsx("p",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:111:20",className:"text-sm text-slate-500",children:"节点"}),e.jsx("p",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:111:64",className:"text-2xl font-bold text-blue-400",children:m.length})]}),e.jsx(k,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:112:15",className:"h-8 w-8 opacity-30 text-blue-400"})]})})}),e.jsx(i,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:116:9",className:"bg-slate-900 border-slate-800",children:e.jsx(u,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:117:11",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:118:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:119:15",children:[e.jsx("p",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:119:20",className:"text-sm text-slate-500",children:"命名空间"}),e.jsx("p",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:119:66",className:"text-2xl font-bold text-emerald-400",children:N.length})]}),e.jsx(R,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:120:15",className:"h-8 w-8 opacity-30 text-emerald-400"})]})})}),e.jsx(i,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:124:9",className:"bg-slate-900 border-slate-800",children:e.jsx(u,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:125:11",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:126:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:127:15",children:[e.jsx("p",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:127:20",className:"text-sm text-slate-500",children:"版本"}),e.jsx("p",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:127:64",className:"text-lg font-bold text-slate-300",children:d?.version||"-"})]}),e.jsx(T,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:128:15",className:"h-8 w-8 opacity-30 text-slate-400"})]})})})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:135:7",children:[e.jsxs("h2",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:136:9",className:"text-lg font-semibold text-slate-100 mb-3 flex items-center gap-2",children:[e.jsx(k,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:137:11",className:"h-4 w-4 text-blue-400"}),"节点列表"]}),e.jsx(i,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:139:9",className:"bg-slate-900 border-slate-800",children:e.jsx(u,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:140:11",className:"p-0",children:e.jsxs(J,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:141:13",children:[e.jsx(Q,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:142:15",children:e.jsxs(x,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:143:17",className:"border-slate-800 hover:bg-transparent",children:[e.jsx(n,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:144:19",className:"text-slate-400",children:"名称"}),e.jsx(n,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:145:19",className:"text-slate-400",children:"角色"}),e.jsx(n,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:146:19",className:"text-slate-400",children:"状态"}),e.jsx(n,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:147:19",className:"text-slate-400",children:"IP"}),e.jsx(n,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:148:19",className:"text-slate-400",children:"OS"}),e.jsx(n,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:149:19",className:"text-slate-400",children:"Kubelet"}),e.jsx(n,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:150:19",className:"text-slate-400",children:"CPU"}),e.jsx(n,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:151:19",className:"text-slate-400",children:"内存"})]})}),e.jsx(V,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:154:15",children:p?e.jsx(x,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:156:19",children:e.jsxs(a,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:156:29",colSpan:8,className:"text-center text-slate-500 py-12",children:[e.jsx(A,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:156:97",className:"h-5 w-5 animate-spin mx-auto mb-2"}),"加载中..."]})}):m.length===0?e.jsx(x,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:158:19",children:e.jsxs(a,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:158:29",colSpan:8,className:"text-center text-slate-500 py-12",children:[e.jsx(k,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:158:97",className:"h-8 w-8 mx-auto mb-2 opacity-50"}),"暂无节点"]})}):m.map(s=>{const t=s.cpu||0,o=s.cpu_usage_m?parseFloat(s.cpu_usage_m.replace("m","")):0,l=t>0?o/1e3/t*100:0,h=s.memory_mb||0,b=s.mem_usage_mi?parseFloat(s.mem_usage_mi.replace("Mi","").replace("Ki","").replace("Gi","")):0,U=s.mem_usage_mi?.includes("Ki")?b/1024:s.mem_usage_mi?.includes("Gi")?b*1024:b,g=h>0?U/h*100:0,S=$=>$>80?"bg-red-500":$>60?"bg-yellow-500":"bg-emerald-500";return e.jsxs(x,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:171:21",className:"border-slate-800 hover:bg-slate-800/30 cursor-pointer",onClick:()=>B(`/kubernetes/${r}/nodes/${s.name}`),children:[e.jsx(a,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:173:23",className:"font-medium text-blue-400 hover:text-blue-300",children:s.name}),e.jsx(a,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:174:23",children:e.jsx(M,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:174:34",className:L(s),children:s.role||"worker"})}),e.jsx(a,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:175:23",children:e.jsx(M,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:175:34",className:s.status==="Ready"?"bg-emerald-500/20 text-emerald-400":"bg-red-500/20 text-red-400",children:s.status||"Unknown"})}),e.jsx(a,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:176:23",className:"text-sm text-slate-400",children:s.ip||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:177:23",className:"text-sm text-slate-400 max-w-[200px] truncate",children:s.os||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:178:23",className:"text-sm text-slate-400",children:s.kubelet_version||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:179:23",className:"text-xs",children:s.cpu_usage_m?e.jsxs("div",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:181:27",className:"flex items-center gap-1.5 min-w-[80px]",children:[e.jsx("div",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:182:29",className:"flex-1 h-1.5 rounded-full bg-slate-700/50 overflow-hidden",children:e.jsx("div",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:183:31",className:`h-full rounded-full ${S(l)}`,style:{width:`${Math.min(l,100)}%`}})}),e.jsxs("span",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:185:29",className:"text-slate-400",children:[l.toFixed(0),"%"]})]}):e.jsxs("span",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:188:27",className:"text-slate-500",children:[t," 核"]})}),e.jsx(a,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:191:23",className:"text-xs",children:s.mem_usage_mi?e.jsxs("div",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:193:27",className:"flex items-center gap-1.5 min-w-[80px]",children:[e.jsx("div",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:194:29",className:"flex-1 h-1.5 rounded-full bg-slate-700/50 overflow-hidden",children:e.jsx("div",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:195:31",className:`h-full rounded-full ${S(g)}`,style:{width:`${Math.min(g,100)}%`}})}),e.jsxs("span",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:197:29",className:"text-slate-400",children:[g.toFixed(0),"%"]})]}):e.jsxs("span",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:200:27",className:"text-slate-500",children:[h,"Mi"]})})]},s.name)})})]})})})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:214:7",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:215:9",className:"flex items-center justify-between mb-3",children:[e.jsxs("h2",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:216:11",className:"text-lg font-semibold text-slate-100 flex items-center gap-2",children:[e.jsx(R,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:217:13",className:"h-4 w-4 text-emerald-400"}),"命名空间"]}),e.jsxs(w,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:219:11",to:`/kubernetes/${r}/namespaces`,className:"text-sm text-blue-400 hover:text-blue-300 transition-colors flex items-center gap-1",children:["管理全部 ",e.jsx(C,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:220:18",className:"h-3 w-3"})]})]}),e.jsx("div",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:223:9",className:"grid grid-cols-2 md:grid-cols-4 gap-3",children:N.map(s=>{const t=Y[s]||D;return e.jsx(w,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:227:15",to:`/kubernetes/${r}/namespace/${s}`,className:"bg-slate-900 border border-slate-800 rounded-lg p-4 hover:border-slate-600 hover:bg-slate-800/50 transition-all group",children:e.jsxs("div",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:231:17",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:232:19",className:"flex items-center gap-2",children:[e.jsx(t,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:233:21",className:"h-5 w-5 text-slate-500 group-hover:text-slate-300 transition-colors"}),e.jsx("span",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:234:21",className:"text-sm font-medium text-slate-300 group-hover:text-slate-100 transition-colors",children:s})]}),e.jsx(C,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:236:19",className:"h-4 w-4 text-slate-600 group-hover:text-slate-400 transition-colors"})]})},s)})})]})]})}export{ne as default}; +import{k as F,m as K,r as c,j as e,n as w,o as C,B as G,L as A,p as k,q as R,S as T,s as H,A as q,t as z,v as D}from"./index-Dmami9WE.js";import{C as i,a as u}from"./card-CIfC-8Rh.js";import{B as M}from"./badge-3UzCvU7L.js";import{T as J,a as Q,b as x,c as n,d as V,e as a}from"./table-CG4mjNfb.js";import{k as j}from"./kubernetes-D2-GnE0t.js";import{u as W}from"./use-toast-jvSbBx20.js";import{R as X}from"./refresh-cw-CTBERyFc.js";const Y={"kube-system":T,"kube-public":z,"kube-node-lease":q,default:H};function ne(){const{clusterCode:r}=F(),B=K(),{toast:E}=W(),[,P]=c.useState([]),[m,O]=c.useState([]),[N,f]=c.useState([]),[d,I]=c.useState(null),[p,y]=c.useState(!1),_=c.useCallback(async()=>{try{const t=(await j.getClusters())?.list||[];P(t);const o=t.find(l=>(l.code||String(l.id))===r);I(o||null),!o&&t.length>0&&r&&E({title:"集群未找到",description:`找不到集群 ${r}`,variant:"destructive"})}catch{P([])}},[r]),v=c.useCallback(async()=>{if(r){y(!0);try{const[s,t]=await Promise.all([j.getNodes(r).catch(()=>[]),j.getNamespaces(r).catch(()=>[])]);O(Array.isArray(s)?s:s?.list||s?.data||[]);const o=Array.isArray(t)?t:t?.list||t?.data||[];f(o)}catch{O([]),f([])}finally{y(!1)}}},[r]);c.useEffect(()=>{_()},[_]),c.useEffect(()=>{v()},[v]);const L=s=>s?.role==="master"||s?.role==="control-plane"?"bg-blue-500/20 text-blue-400 border-blue-500/30":"bg-slate-500/20 text-slate-400 border-slate-500/30";return e.jsxs("div",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:81:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:83:7",className:"flex items-center gap-2 text-sm text-slate-500",children:[e.jsx(w,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:84:9",to:"/kubernetes",className:"hover:text-slate-300 transition-colors",children:"集群"}),e.jsx(C,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:85:9",className:"h-3 w-3"}),e.jsx("span",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:86:9",className:"text-slate-300",children:r})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:90:7",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:91:9",children:[e.jsx("h1",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:92:11",className:"text-2xl font-bold text-slate-100",children:r}),e.jsxs("p",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:93:11",className:"text-sm text-slate-500 mt-1",children:["集群概览",d?.version?` — Kubernetes ${d.version}`:""]})]}),e.jsx("div",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:98:9",className:"flex items-center gap-2",children:e.jsx(G,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:99:11",variant:"outline",size:"icon",className:"h-9 w-9 border-slate-700 text-slate-400",onClick:v,disabled:p,children:p?e.jsx(A,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:101:24",className:"h-4 w-4 animate-spin"}):e.jsx(X,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:101:71",className:"h-4 w-4"})})})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:107:7",className:"grid grid-cols-3 md:grid-cols-3 gap-4",children:[e.jsx(i,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:108:9",className:"bg-slate-900 border-slate-800",children:e.jsx(u,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:109:11",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:110:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:111:15",children:[e.jsx("p",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:111:20",className:"text-sm text-slate-500",children:"节点"}),e.jsx("p",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:111:64",className:"text-2xl font-bold text-blue-400",children:m.length})]}),e.jsx(k,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:112:15",className:"h-8 w-8 opacity-30 text-blue-400"})]})})}),e.jsx(i,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:116:9",className:"bg-slate-900 border-slate-800",children:e.jsx(u,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:117:11",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:118:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:119:15",children:[e.jsx("p",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:119:20",className:"text-sm text-slate-500",children:"命名空间"}),e.jsx("p",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:119:66",className:"text-2xl font-bold text-emerald-400",children:N.length})]}),e.jsx(R,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:120:15",className:"h-8 w-8 opacity-30 text-emerald-400"})]})})}),e.jsx(i,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:124:9",className:"bg-slate-900 border-slate-800",children:e.jsx(u,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:125:11",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:126:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:127:15",children:[e.jsx("p",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:127:20",className:"text-sm text-slate-500",children:"版本"}),e.jsx("p",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:127:64",className:"text-lg font-bold text-slate-300",children:d?.version||"-"})]}),e.jsx(T,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:128:15",className:"h-8 w-8 opacity-30 text-slate-400"})]})})})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:135:7",children:[e.jsxs("h2",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:136:9",className:"text-lg font-semibold text-slate-100 mb-3 flex items-center gap-2",children:[e.jsx(k,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:137:11",className:"h-4 w-4 text-blue-400"}),"节点列表"]}),e.jsx(i,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:139:9",className:"bg-slate-900 border-slate-800",children:e.jsx(u,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:140:11",className:"p-0",children:e.jsxs(J,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:141:13",children:[e.jsx(Q,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:142:15",children:e.jsxs(x,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:143:17",className:"border-slate-800 hover:bg-transparent",children:[e.jsx(n,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:144:19",className:"text-slate-400",children:"名称"}),e.jsx(n,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:145:19",className:"text-slate-400",children:"角色"}),e.jsx(n,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:146:19",className:"text-slate-400",children:"状态"}),e.jsx(n,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:147:19",className:"text-slate-400",children:"IP"}),e.jsx(n,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:148:19",className:"text-slate-400",children:"OS"}),e.jsx(n,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:149:19",className:"text-slate-400",children:"Kubelet"}),e.jsx(n,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:150:19",className:"text-slate-400",children:"CPU"}),e.jsx(n,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:151:19",className:"text-slate-400",children:"内存"})]})}),e.jsx(V,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:154:15",children:p?e.jsx(x,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:156:19",children:e.jsxs(a,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:156:29",colSpan:8,className:"text-center text-slate-500 py-12",children:[e.jsx(A,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:156:97",className:"h-5 w-5 animate-spin mx-auto mb-2"}),"加载中..."]})}):m.length===0?e.jsx(x,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:158:19",children:e.jsxs(a,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:158:29",colSpan:8,className:"text-center text-slate-500 py-12",children:[e.jsx(k,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:158:97",className:"h-8 w-8 mx-auto mb-2 opacity-50"}),"暂无节点"]})}):m.map(s=>{const t=s.cpu||0,o=s.cpu_usage_m?parseFloat(s.cpu_usage_m.replace("m","")):0,l=t>0?o/1e3/t*100:0,h=s.memory_mb||0,b=s.mem_usage_mi?parseFloat(s.mem_usage_mi.replace("Mi","").replace("Ki","").replace("Gi","")):0,U=s.mem_usage_mi?.includes("Ki")?b/1024:s.mem_usage_mi?.includes("Gi")?b*1024:b,g=h>0?U/h*100:0,S=$=>$>80?"bg-red-500":$>60?"bg-yellow-500":"bg-emerald-500";return e.jsxs(x,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:171:21",className:"border-slate-800 hover:bg-slate-800/30 cursor-pointer",onClick:()=>B(`/kubernetes/${r}/nodes/${s.name}`),children:[e.jsx(a,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:173:23",className:"font-medium text-blue-400 hover:text-blue-300",children:s.name}),e.jsx(a,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:174:23",children:e.jsx(M,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:174:34",className:L(s),children:s.role||"worker"})}),e.jsx(a,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:175:23",children:e.jsx(M,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:175:34",className:s.status==="Ready"?"bg-emerald-500/20 text-emerald-400":"bg-red-500/20 text-red-400",children:s.status||"Unknown"})}),e.jsx(a,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:176:23",className:"text-sm text-slate-400",children:s.ip||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:177:23",className:"text-sm text-slate-400 max-w-[200px] truncate",children:s.os||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:178:23",className:"text-sm text-slate-400",children:s.kubelet_version||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:179:23",className:"text-xs",children:s.cpu_usage_m?e.jsxs("div",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:181:27",className:"flex items-center gap-1.5 min-w-[80px]",children:[e.jsx("div",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:182:29",className:"flex-1 h-1.5 rounded-full bg-slate-700/50 overflow-hidden",children:e.jsx("div",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:183:31",className:`h-full rounded-full ${S(l)}`,style:{width:`${Math.min(l,100)}%`}})}),e.jsxs("span",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:185:29",className:"text-slate-400",children:[l.toFixed(0),"%"]})]}):e.jsxs("span",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:188:27",className:"text-slate-500",children:[t," 核"]})}),e.jsx(a,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:191:23",className:"text-xs",children:s.mem_usage_mi?e.jsxs("div",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:193:27",className:"flex items-center gap-1.5 min-w-[80px]",children:[e.jsx("div",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:194:29",className:"flex-1 h-1.5 rounded-full bg-slate-700/50 overflow-hidden",children:e.jsx("div",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:195:31",className:`h-full rounded-full ${S(g)}`,style:{width:`${Math.min(g,100)}%`}})}),e.jsxs("span",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:197:29",className:"text-slate-400",children:[g.toFixed(0),"%"]})]}):e.jsxs("span",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:200:27",className:"text-slate-500",children:[h,"Mi"]})})]},s.name)})})]})})})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:214:7",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:215:9",className:"flex items-center justify-between mb-3",children:[e.jsxs("h2",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:216:11",className:"text-lg font-semibold text-slate-100 flex items-center gap-2",children:[e.jsx(R,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:217:13",className:"h-4 w-4 text-emerald-400"}),"命名空间"]}),e.jsxs(w,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:219:11",to:`/kubernetes/${r}/namespaces`,className:"text-sm text-blue-400 hover:text-blue-300 transition-colors flex items-center gap-1",children:["管理全部 ",e.jsx(C,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:220:18",className:"h-3 w-3"})]})]}),e.jsx("div",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:223:9",className:"grid grid-cols-2 md:grid-cols-4 gap-3",children:N.map(s=>{const t=Y[s]||D;return e.jsx(w,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:227:15",to:`/kubernetes/${r}/namespace/${s}`,className:"bg-slate-900 border border-slate-800 rounded-lg p-4 hover:border-slate-600 hover:bg-slate-800/50 transition-all group",children:e.jsxs("div",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:231:17",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:232:19",className:"flex items-center gap-2",children:[e.jsx(t,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:233:21",className:"h-5 w-5 text-slate-500 group-hover:text-slate-300 transition-colors"}),e.jsx("span",{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:234:21",className:"text-sm font-medium text-slate-300 group-hover:text-slate-100 transition-colors",children:s})]}),e.jsx(C,{"code-path":"src/components/kubernetes/ClusterOverviewPage.tsx:236:19",className:"h-4 w-4 text-slate-600 group-hover:text-slate-400 transition-colors"})]})},s)})})]})]})}export{ne as default}; diff --git a/backend/static/assets/CredentialManager-Cqu2GauH.js b/backend/static/assets/CredentialManager-Cqu2GauH.js new file mode 100644 index 0000000..6b30d8d --- /dev/null +++ b/backend/static/assets/CredentialManager-Cqu2GauH.js @@ -0,0 +1 @@ +import{f as st,r as a,h as I,j as e,B as b,t as $e,G as rt,z as nt,s as ot,v as ct,S as dt,Y as V,C as lt,D as qe,a as ze,b as Be,c as Ue,d as pt,e as Ge,T as it,Z as Ye,O as Qe,_ as xt}from"./index-Dmami9WE.js";import{I as p}from"./input-NsU9nXZF.js";import{L as l}from"./label-Ap_-SPYI.js";import{B as S}from"./badge-3UzCvU7L.js";import{S as Ke,a as De,b as Ae,c as Pe,d as _}from"./select-DUbxjT0z.js";import{t as y}from"./index-BuEnLCjT.js";import{R as mt}from"./refresh-cw-CTBERyFc.js";import{P as Re}from"./plus-O65gX7Qz.js";import{S as gt}from"./search-Dd-PeBfg.js";import{Z as ht}from"./zap-CocSkPPl.js";import{F as yt}from"./file-text-CebshSV-.js";import{P as vt}from"./pencil-BYahlvYT.js";import{C as Ze}from"./circle-x-BBQeW1R3.js";import{C as We}from"./circle-check-CVbTTFQ0.js";import{T as Ct}from"./trash-2-DWVnIU6o.js";import{C as Ve}from"./copy-CE_T92Lk.js";import"./index-CtCQcvyh.js";import"./chevron-up-Cq4GPopa.js";const O={ssh:{label:"SSH 密钥",icon:dt,color:"text-amber-400",desc:"SSH 私钥/公钥/密码"},docker:{label:"Docker 凭证",icon:ct,color:"text-cyan-400",desc:"Docker Registry 登录凭据"},tls:{label:"TLS 证书",icon:$e,color:"text-green-400",desc:"TLS/SSL 证书与私钥"},aksk:{label:"AKSK 密钥",icon:ot,color:"text-purple-400",desc:"云服务 AccessKey/SecretKey"},database:{label:"数据库凭证",icon:nt,color:"text-blue-400",desc:"数据库连接信息"},api:{label:"API 密钥",icon:rt,color:"text-orange-400",desc:"API Token/Key + 端点"},generic:{label:"通用凭证",icon:yt,color:"text-gray-400",desc:"自定义 Key/Value 键值对"}},Xe={ssh:"bg-amber-500/20 text-amber-400 border-amber-500/30",docker:"bg-cyan-500/20 text-cyan-400 border-cyan-500/30",tls:"bg-green-500/20 text-green-400 border-green-500/30",aksk:"bg-purple-500/20 text-purple-400 border-purple-500/30",database:"bg-blue-500/20 text-blue-400 border-blue-500/30",api:"bg-orange-500/20 text-orange-400 border-orange-500/30",generic:"bg-gray-500/20 text-gray-400 border-gray-500/30"};function ut({open:j,onClose:M,credId:k}){const[n,h]=a.useState(null),[T,v]=a.useState(!1),[E,w]=a.useState({});if(a.useEffect(()=>{!k||!j||(v(!0),I.get(`/credentials/${k}`).then(d=>{h(d)}).catch(()=>y.error("加载详情失败")).finally(()=>v(!1)))},[k,j]),!j||!k)return null;const c=d=>w(i=>({...i,[d]:!i[d]})),K=d=>{navigator.clipboard.writeText(d),y.success("已复制")},x=n?.secret_type,C=O[x],r=n?.content||{},o=({label:d,value:i,sensitive:m,fieldKey:D})=>{if(i==null||i==="")return null;const L=typeof i=="string"&&i.length>80,A=D?E[D]:!1;return e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:107:7",className:"mb-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:108:9",className:"flex items-center gap-2 text-xs text-[var(--dg-text-muted)] mb-1",children:[e.jsx(xt,{"code-path":"src/components/deploy/CredentialManager.tsx:109:11",className:"h-3 w-3"}),d]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:111:9",className:"flex gap-1",children:[L?e.jsx("textarea",{"code-path":"src/components/deploy/CredentialManager.tsx:113:13",readOnly:!0,value:m&&!A?"••••••••":i,className:"flex-1 rounded-md bg-[var(--dg-bg-tertiary)] border border-[var(--dg-border)] text-[var(--dg-text-primary)] p-2 text-xs font-mono resize-none",rows:4}):e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:117:13",readOnly:!0,value:m&&!A?"••••••••":String(i),className:"flex-1 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] font-mono text-xs"}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:120:11",className:"flex flex-col gap-0.5 shrink-0",children:[m&&e.jsx(b,{"code-path":"src/components/deploy/CredentialManager.tsx:122:15",variant:"ghost",size:"icon",className:"h-7 w-7",onClick:()=>c(D),children:A?e.jsx(Ye,{"code-path":"src/components/deploy/CredentialManager.tsx:123:25",className:"h-3 w-3"}):e.jsx(Qe,{"code-path":"src/components/deploy/CredentialManager.tsx:123:58",className:"h-3 w-3"})}),e.jsx(b,{"code-path":"src/components/deploy/CredentialManager.tsx:126:13",variant:"ghost",size:"icon",className:"h-7 w-7",onClick:()=>K(String(i)),children:e.jsx(Ve,{"code-path":"src/components/deploy/CredentialManager.tsx:127:15",className:"h-3 w-3"})})]})]})]})};return e.jsx(qe,{"code-path":"src/components/deploy/CredentialManager.tsx:136:5",open:j,onOpenChange:M,children:e.jsxs(ze,{"code-path":"src/components/deploy/CredentialManager.tsx:137:7",className:"sm:max-w-[680px] max-h-[85vh] overflow-y-auto bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:[e.jsx(Be,{"code-path":"src/components/deploy/CredentialManager.tsx:138:9",children:e.jsxs(Ue,{"code-path":"src/components/deploy/CredentialManager.tsx:139:11",className:"text-[var(--dg-text-primary)] flex items-center gap-2",children:[C?e.jsx(C.icon,{"code-path":"src/components/deploy/CredentialManager.tsx:140:20",className:`h-5 w-5 ${C.color}`}):e.jsx(V,{"code-path":"src/components/deploy/CredentialManager.tsx:140:70",className:"h-5 w-5 text-[var(--dg-text-muted)]"}),"凭据详情"]})}),T?e.jsx("div",{"code-path":"src/components/deploy/CredentialManager.tsx:145:11",className:"text-center py-8 text-[var(--dg-text-muted)]",children:"加载中..."}):n?e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:147:11",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:149:13",className:"grid grid-cols-2 gap-3 text-sm",children:[e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:150:15",children:[e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:150:20",className:"text-[var(--dg-text-muted)]",children:"名称:"}),e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:150:76",className:"text-[var(--dg-text-primary)] font-medium",children:n.name})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:151:15",children:[e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:151:20",className:"text-[var(--dg-text-muted)]",children:"类型:"}),e.jsx(S,{"code-path":"src/components/deploy/CredentialManager.tsx:152:17",variant:"outline",className:`text-xs ml-1 ${Xe[x]||""}`,children:C?.label||x})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:154:15",children:[e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:154:20",className:"text-[var(--dg-text-muted)]",children:"状态:"}),n.is_active?e.jsxs(S,{"code-path":"src/components/deploy/CredentialManager.tsx:156:21",className:"bg-green-500/20 text-green-400 text-xs ml-1",children:[e.jsx(We,{"code-path":"src/components/deploy/CredentialManager.tsx:156:84",className:"h-3 w-3 mr-0.5"}),"启用"]}):e.jsxs(S,{"code-path":"src/components/deploy/CredentialManager.tsx:157:21",className:"bg-red-500/20 text-red-400 text-xs ml-1",children:[e.jsx(Ze,{"code-path":"src/components/deploy/CredentialManager.tsx:157:80",className:"h-3 w-3 mr-0.5"}),"禁用"]}),n.expires_at&&new Date(n.expires_at)K(n.env_prefix||""),children:[e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:163:17",className:"text-[var(--dg-text-muted)]",children:"引用ID:"}),e.jsx("code",{"code-path":"src/components/deploy/CredentialManager.tsx:164:17",className:"text-[var(--dg-blue)] font-mono text-xs",children:n.env_prefix||"无"}),e.jsx(Ve,{"code-path":"src/components/deploy/CredentialManager.tsx:165:17",className:"h-3 w-3 inline ml-1 text-[var(--dg-text-muted)]"})]}),n.tags?.length>0&&e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:168:17",className:"col-span-2",children:[e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:169:19",className:"text-[var(--dg-text-muted)]",children:"标签:"}),n.tags.map(d=>e.jsx(S,{"code-path":"src/components/deploy/CredentialManager.tsx:171:21",variant:"outline",className:"text-xs ml-1 border-[var(--dg-border)]",children:d},d))]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:175:15",className:"col-span-2",children:[e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:175:43",className:"text-[var(--dg-text-muted)]",children:"描述:"}),e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:175:99",className:"text-[var(--dg-text-secondary)]",children:n.description||"无"})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:176:15",children:[e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:176:20",className:"text-[var(--dg-text-muted)]",children:"创建:"}),e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:176:76",className:"text-[var(--dg-text-secondary)] text-xs",children:new Date(n.created_at).toLocaleString()})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:177:15",children:[e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:177:20",className:"text-[var(--dg-text-muted)]",children:"更新:"}),e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:177:76",className:"text-[var(--dg-text-secondary)] text-xs",children:new Date(n.updated_at).toLocaleString()})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:181:13",className:"border-t border-[var(--dg-border)] pt-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:182:15",className:"flex items-center gap-2 text-sm text-[var(--dg-text-primary)] font-medium mb-3",children:[e.jsx(V,{"code-path":"src/components/deploy/CredentialManager.tsx:183:17",className:"h-4 w-4 text-yellow-500"}),"密钥数据"]}),e.jsx("div",{"code-path":"src/components/deploy/CredentialManager.tsx:185:15",className:"p-3 rounded-md bg-yellow-500/5 border border-yellow-500/20 mb-3",children:e.jsx("p",{"code-path":"src/components/deploy/CredentialManager.tsx:186:17",className:"text-xs text-yellow-400/80",children:"以下内容包含敏感信息,请妥善保管,不要泄露给他人。"})}),x==="ssh"&&e.jsxs(e.Fragment,{children:[e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:190:17",label:"SSH 用户",value:r.ssh_user}),e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:191:17",label:"SSH 端口",value:r.ssh_port}),e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:192:17",label:"SSH 密码",value:r.password,sensitive:!0,fieldKey:"ssh_password"}),e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:193:17",label:"私钥",value:r.private_key,sensitive:!0,fieldKey:"ssh_private_key"}),e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:194:17",label:"公钥",value:r.public_key,fieldKey:"ssh_public_key"})]}),x==="docker"&&e.jsxs(e.Fragment,{children:[e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:197:17",label:"Registry 地址",value:r.server}),e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:198:17",label:"用户名",value:r.username}),e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:199:17",label:"密码",value:r.password,sensitive:!0,fieldKey:"docker_password"})]}),x==="tls"&&e.jsxs(e.Fragment,{children:[e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:202:17",label:"证书",value:r.cert,sensitive:!0,fieldKey:"tls_cert"}),e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:203:17",label:"私钥",value:r.key,sensitive:!0,fieldKey:"tls_key"}),e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:204:17",label:"CA 证书",value:r.ca,sensitive:!0,fieldKey:"tls_ca"})]}),x==="aksk"&&e.jsxs(e.Fragment,{children:[e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:207:17",label:"Access Key ID",value:r.access_key}),e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:208:17",label:"Secret Access Key",value:r.secret_key,sensitive:!0,fieldKey:"aksk_secret_key"})]}),x==="database"&&e.jsxs(e.Fragment,{children:[e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:211:17",label:"数据库类型",value:(r.db_type||"").toUpperCase()}),e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:212:17",label:"主机",value:r.host}),e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:213:17",label:"端口",value:r.port}),e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:214:17",label:"数据库名",value:r.db_name}),e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:215:17",label:"用户名",value:r.username}),e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:216:17",label:"密码",value:r.password,sensitive:!0,fieldKey:"db_password"})]}),x==="api"&&e.jsxs(e.Fragment,{children:[e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:219:17",label:"API Key",value:r.api_key,sensitive:!0,fieldKey:"api_key"}),e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:220:17",label:"API 端点",value:r.endpoint})]}),x==="generic"&&e.jsxs(e.Fragment,{children:[e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:223:17",label:"Key",value:r.generic_key}),e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:224:17",label:"Value",value:r.generic_value,sensitive:!0,fieldKey:"generic_value"})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:229:13",className:"border-t border-[var(--dg-border)] pt-3",children:[e.jsx("div",{"code-path":"src/components/deploy/CredentialManager.tsx:230:15",className:"text-xs text-[var(--dg-text-muted)] mb-2",children:"在流水线/脚本中引用此凭据:"}),e.jsxs("code",{"code-path":"src/components/deploy/CredentialManager.tsx:231:15",className:"text-xs bg-[var(--dg-bg-tertiary)] px-3 py-1.5 rounded block text-[var(--dg-blue)]",children:["${",n.variable_name||n.name.toUpperCase().replace(/[^A-Z0-9]/g,"_"),"}"]})]})]}):e.jsx("div",{"code-path":"src/components/deploy/CredentialManager.tsx:237:11",className:"text-center py-8 text-[var(--dg-text-muted)]",children:"未找到凭据数据"}),e.jsx(Ge,{"code-path":"src/components/deploy/CredentialManager.tsx:239:9",children:e.jsx(b,{"code-path":"src/components/deploy/CredentialManager.tsx:240:11",variant:"outline",onClick:M,children:"关闭"})})]})})}function bt({open:j,onClose:M,onSaved:k,editData:n}){const h=!!n,[T,v]=a.useState(""),[E,w]=a.useState(""),[c,K]=a.useState("ssh"),[x,C]=a.useState(""),[r,o]=a.useState(""),[d,i]=a.useState(!0),[m,D]=a.useState(!1),[L,A]=a.useState({}),[F,s]=a.useState("root"),[g,P]=a.useState("22"),[H,N]=a.useState(""),[$,q]=a.useState(""),[z,B]=a.useState(""),[U,G]=a.useState(""),[Y,Q]=a.useState(""),[Z,W]=a.useState(""),[X,J]=a.useState(""),[ee,te]=a.useState(""),[ae,se]=a.useState(""),[,Te]=a.useState(""),[re,ne]=a.useState(""),[oe,ce]=a.useState(""),[,Ee]=a.useState(""),[de,le]=a.useState("mysql"),[pe,ie]=a.useState(""),[xe,me]=a.useState("3306"),[ge,he]=a.useState(""),[ye,ve]=a.useState(""),[Ce,ue]=a.useState(""),[be,je]=a.useState(""),[Me,Ne]=a.useState(""),[fe,Se]=a.useState(""),[we,_e]=a.useState("");a.useEffect(()=>{j&&(n?(v(n.name),w(n.variable_name||""),K(n.secret_type),C(n.description||""),o((n.tags||[]).join(", ")),i(n.is_active),s(""),P("22"),N(""),q(""),B(""),G(""),Q(""),W(""),J(""),te(""),se(""),Te(""),ne(""),ce(""),Ee(""),le("mysql"),ie(""),me("3306"),he(""),ve(""),ue(""),je(""),Ne(""),Se(""),_e("")):(v(""),w(""),K("ssh"),C(""),o(""),i(!0),s("root"),P("22"),N(""),q(""),B(""),G(""),Q(""),W(""),J(""),te(""),se(""),Te(""),ne(""),ce(""),Ee(""),le("mysql"),ie(""),me("3306"),he(""),ve(""),ue(""),je(""),Ne(""),Se(""),_e("")),A({}))},[n,j]);const Je=t=>A(f=>({...f,[t]:!f[t]})),et=async()=>{if(!T.trim()){y.error("请填写凭据名称");return}D(!0);try{const t={name:T.trim(),secret_type:c,description:x.trim(),tags:r.split(",").map(f=>f.trim()).filter(Boolean),is_active:d};E.trim()&&(t.variable_name=E.trim()),c==="ssh"?(F.trim()&&(t.ssh_user=F.trim()),g&&(t.ssh_port=parseInt(g)||22),H.trim()&&(t.ssh_password=H.trim()),$.trim()&&(t.ssh_private_key=$.trim()),z.trim()&&(t.ssh_public_key=z.trim())):c==="docker"?(U.trim()&&(t.docker_server=U.trim()),Y.trim()&&(t.docker_username=Y.trim()),Z.trim()&&(t.docker_password=Z.trim())):c==="tls"?(X.trim()&&(t.tls_cert=X.trim()),ee.trim()&&(t.tls_key=ee.trim()),ae.trim()&&(t.tls_ca=ae.trim())):c==="aksk"?(re.trim()&&(t.aksk_access_key=re.trim()),oe.trim()&&(t.aksk_secret_key=oe.trim())):c==="database"?(de.trim()&&(t.db_type=de.trim()),pe.trim()&&(t.db_host=pe.trim()),xe&&(t.db_port=parseInt(xe)||3306),ge.trim()&&(t.db_name=ge.trim()),ye.trim()&&(t.db_username=ye.trim()),Ce.trim()&&(t.db_password=Ce.trim())):c==="api"?(be.trim()&&(t.api_key=be.trim()),Me.trim()&&(t.api_endpoint=Me.trim())):c==="generic"&&(fe.trim()&&(t.generic_key=fe.trim()),we.trim()&&(t.generic_value=we.trim())),h?(await I.put(`/credentials/${n.id}`,t),y.success("已更新")):(await I.post("/credentials",t),y.success("已创建")),k(),M()}catch(t){y.error(t?.response?.data?.message||"操作失败")}finally{D(!1)}},u=({label:t,value:f,onChange:Le,placeholder:Fe,fieldKey:He,required:tt,isLong:at})=>{const Oe=L[He];return e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:394:7",className:"space-y-1",children:[e.jsxs(l,{"code-path":"src/components/deploy/CredentialManager.tsx:395:9",className:"text-[var(--dg-text-secondary)] text-xs",children:[t,tt&&!h&&e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:395:99",className:"text-red-400",children:" *"})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:396:9",className:"relative",children:[at?e.jsx("textarea",{"code-path":"src/components/deploy/CredentialManager.tsx:398:13",value:f,onChange:ke=>Le(ke.target.value),placeholder:Fe,rows:5,className:"w-full rounded-md bg-[var(--dg-bg-tertiary)] border border-[var(--dg-border)] text-[var(--dg-text-primary)] p-2 text-sm font-mono placeholder:text-[var(--dg-text-muted)]"}):e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:402:13",value:f,onChange:ke=>Le(ke.target.value),type:Oe?"text":"password",placeholder:Fe,className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] pr-10 font-mono text-sm"}),e.jsx("button",{"code-path":"src/components/deploy/CredentialManager.tsx:406:11",type:"button",onClick:()=>Je(He),className:"absolute right-2 top-1/2 -translate-y-1/2 text-[var(--dg-text-muted)] hover:text-[var(--dg-text-primary)] text-xs",children:Oe?e.jsx(Ye,{"code-path":"src/components/deploy/CredentialManager.tsx:408:21",className:"h-3.5 w-3.5"}):e.jsx(Qe,{"code-path":"src/components/deploy/CredentialManager.tsx:408:58",className:"h-3.5 w-3.5"})})]})]})},R=O[c],Ie=R?.icon||V;return e.jsx(qe,{"code-path":"src/components/deploy/CredentialManager.tsx:419:5",open:j,onOpenChange:M,children:e.jsxs(ze,{"code-path":"src/components/deploy/CredentialManager.tsx:420:7",className:"sm:max-w-[620px] max-h-[90vh] overflow-y-auto bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:[e.jsxs(Be,{"code-path":"src/components/deploy/CredentialManager.tsx:421:9",children:[e.jsxs(Ue,{"code-path":"src/components/deploy/CredentialManager.tsx:422:11",className:"text-[var(--dg-text-primary)] flex items-center gap-2",children:[e.jsx(Ie,{"code-path":"src/components/deploy/CredentialManager.tsx:423:13",className:`h-5 w-5 ${R?.color||""}`}),h?"编辑凭据":"新增凭据"]}),e.jsx(pt,{"code-path":"src/components/deploy/CredentialManager.tsx:426:11",className:"text-[var(--dg-text-muted)] text-xs",children:R?.desc||"管理敏感凭据信息"})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:430:9",className:"space-y-4 py-2",children:[e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:432:11",className:"border-b border-[var(--dg-border)] pb-3",children:[e.jsx("div",{"code-path":"src/components/deploy/CredentialManager.tsx:433:13",className:"text-xs font-medium text-[var(--dg-text-secondary)] mb-2",children:"基本信息"}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:434:13",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:435:15",className:"space-y-1",children:[e.jsxs(l,{"code-path":"src/components/deploy/CredentialManager.tsx:436:17",className:"text-[var(--dg-text-secondary)] text-xs",children:["凭据名称 ",e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:436:81",className:"text-red-400",children:"*"})]}),e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:437:17",value:T,onChange:t=>v(t.target.value),placeholder:"如:生产环境 SSH",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:440:15",className:"space-y-1",children:[e.jsx(l,{"code-path":"src/components/deploy/CredentialManager.tsx:441:17",className:"text-[var(--dg-text-secondary)] text-xs",children:"变量别名"}),e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:442:17",value:E,onChange:t=>w(t.target.value),placeholder:"如:MYSQL_PROD",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] font-mono text-sm"})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:445:15",className:"space-y-1",children:[e.jsxs(l,{"code-path":"src/components/deploy/CredentialManager.tsx:446:17",className:"text-[var(--dg-text-secondary)] text-xs",children:["类型",!h&&e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:446:90",className:"text-red-400",children:" *"})]}),e.jsxs(Ke,{"code-path":"src/components/deploy/CredentialManager.tsx:447:17",value:c,onValueChange:t=>K(t),disabled:h,children:[e.jsx(De,{"code-path":"src/components/deploy/CredentialManager.tsx:448:19",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]",children:e.jsx(Ae,{"code-path":"src/components/deploy/CredentialManager.tsx:449:21"})}),e.jsx(Pe,{"code-path":"src/components/deploy/CredentialManager.tsx:451:19",className:"max-h-[300px]",children:Object.entries(O).map(([t,f])=>e.jsx(_,{"code-path":"src/components/deploy/CredentialManager.tsx:453:23",value:t,children:e.jsxs("span",{"code-path":"src/components/deploy/CredentialManager.tsx:454:25",className:"flex items-center gap-2",children:[e.jsx(f.icon,{"code-path":"src/components/deploy/CredentialManager.tsx:454:67",className:"h-4 w-4"}),f.label]})},t))})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:460:15",className:"space-y-1",children:[e.jsx(l,{"code-path":"src/components/deploy/CredentialManager.tsx:461:17",className:"text-[var(--dg-text-secondary)] text-xs",children:"标签"}),e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:462:17",value:r,onChange:t=>o(t.target.value),placeholder:"生产环境, 阿里云",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:466:13",className:"mt-2 space-y-1",children:[e.jsx(l,{"code-path":"src/components/deploy/CredentialManager.tsx:467:15",className:"text-[var(--dg-text-secondary)] text-xs",children:"描述"}),e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:468:15",value:x,onChange:t=>C(t.target.value),placeholder:"可选备注信息",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:474:11",children:[e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:475:13",className:"text-xs font-medium text-[var(--dg-text-secondary)] mb-2 flex items-center gap-2",children:[e.jsx(Ie,{"code-path":"src/components/deploy/CredentialManager.tsx:476:15",className:"h-3.5 w-3.5"}),R?.label||c," 配置",h&&e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:477:26",className:"text-[var(--dg-text-muted)]",children:"(仅填写需要修改的字段)"})]}),c==="ssh"&&e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:481:15",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:482:17",className:"space-y-1",children:[e.jsx(l,{"code-path":"src/components/deploy/CredentialManager.tsx:483:19",className:"text-[var(--dg-text-secondary)] text-xs",children:"SSH 用户"}),e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:484:19",value:F,onChange:t=>s(t.target.value),placeholder:"root",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:487:17",className:"space-y-1",children:[e.jsx(l,{"code-path":"src/components/deploy/CredentialManager.tsx:488:19",className:"text-[var(--dg-text-secondary)] text-xs",children:"SSH 端口"}),e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:489:19",value:g,onChange:t=>P(t.target.value),placeholder:"22",type:"number",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),e.jsx("div",{"code-path":"src/components/deploy/CredentialManager.tsx:492:17",className:"col-span-2",children:e.jsx(u,{"code-path":"src/components/deploy/CredentialManager.tsx:493:19",label:"SSH 密码",value:H,onChange:N,placeholder:"密码(或留空用密钥)",fieldKey:"ssh_pwd"})}),e.jsx("div",{"code-path":"src/components/deploy/CredentialManager.tsx:496:17",className:"col-span-2",children:e.jsx(u,{"code-path":"src/components/deploy/CredentialManager.tsx:497:19",label:"私钥内容",value:$,onChange:q,placeholder:"粘贴 SSH 私钥...",fieldKey:"ssh_pk",isLong:!0})}),e.jsx("div",{"code-path":"src/components/deploy/CredentialManager.tsx:500:17",className:"col-span-2",children:e.jsx(u,{"code-path":"src/components/deploy/CredentialManager.tsx:501:19",label:"公钥内容",value:z,onChange:B,placeholder:"粘贴 SSH 公钥...",fieldKey:"ssh_pub",isLong:!0})})]}),c==="docker"&&e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:508:15",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:509:17",className:"col-span-2 space-y-1",children:[e.jsxs(l,{"code-path":"src/components/deploy/CredentialManager.tsx:510:19",className:"text-[var(--dg-text-secondary)] text-xs",children:["Registry 地址 ",e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:510:90",className:"text-red-400",children:"*"})]}),e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:511:19",value:U,onChange:t=>G(t.target.value),placeholder:"registry.example.com",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] font-mono"})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:514:17",className:"space-y-1",children:[e.jsx(l,{"code-path":"src/components/deploy/CredentialManager.tsx:515:19",className:"text-[var(--dg-text-secondary)] text-xs",children:"用户名"}),e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:516:19",value:Y,onChange:t=>Q(t.target.value),placeholder:"admin",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),e.jsx("div",{"code-path":"src/components/deploy/CredentialManager.tsx:519:17",children:e.jsx(u,{"code-path":"src/components/deploy/CredentialManager.tsx:519:22",label:"密码",value:Z,onChange:W,placeholder:"Registry 密码",fieldKey:"docker_pwd",required:!0})})]}),c==="tls"&&e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:525:15",className:"space-y-3",children:[e.jsx(u,{"code-path":"src/components/deploy/CredentialManager.tsx:526:17",label:"证书 (PEM)",value:X,onChange:J,placeholder:"-----BEGIN CERTIFICATE-----",fieldKey:"tls_cert",isLong:!0,required:!0}),e.jsx(u,{"code-path":"src/components/deploy/CredentialManager.tsx:528:17",label:"私钥 (PEM)",value:ee,onChange:te,placeholder:"-----BEGIN PRIVATE KEY-----",fieldKey:"tls_key",isLong:!0,required:!0}),e.jsx(u,{"code-path":"src/components/deploy/CredentialManager.tsx:530:17",label:"CA 证书",value:ae,onChange:se,placeholder:"CA 证书内容...",fieldKey:"tls_ca",isLong:!0})]}),c==="aksk"&&e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:536:15",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:537:17",className:"col-span-2 space-y-1",children:[e.jsxs(l,{"code-path":"src/components/deploy/CredentialManager.tsx:538:19",className:"text-[var(--dg-text-secondary)] text-xs",children:["Access Key ID ",e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:538:92",className:"text-red-400",children:"*"})]}),e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:539:19",value:re,onChange:t=>ne(t.target.value),placeholder:"AKIDxxxx...",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] font-mono"})]}),e.jsx("div",{"code-path":"src/components/deploy/CredentialManager.tsx:542:17",className:"col-span-2",children:e.jsx(u,{"code-path":"src/components/deploy/CredentialManager.tsx:543:19",label:"Secret Access Key",value:oe,onChange:ce,placeholder:"输入 Secret Key",fieldKey:"aksk_sk",required:!0})})]}),c==="database"&&e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:550:15",className:"grid grid-cols-3 gap-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:551:17",className:"space-y-1",children:[e.jsx(l,{"code-path":"src/components/deploy/CredentialManager.tsx:552:19",className:"text-[var(--dg-text-secondary)] text-xs",children:"数据库类型"}),e.jsxs(Ke,{"code-path":"src/components/deploy/CredentialManager.tsx:553:19",value:de,onValueChange:le,children:[e.jsx(De,{"code-path":"src/components/deploy/CredentialManager.tsx:554:21",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]",children:e.jsx(Ae,{"code-path":"src/components/deploy/CredentialManager.tsx:555:23"})}),e.jsxs(Pe,{"code-path":"src/components/deploy/CredentialManager.tsx:557:21",children:[e.jsx(_,{"code-path":"src/components/deploy/CredentialManager.tsx:558:23",value:"mysql",children:"MySQL"}),e.jsx(_,{"code-path":"src/components/deploy/CredentialManager.tsx:559:23",value:"postgres",children:"PostgreSQL"}),e.jsx(_,{"code-path":"src/components/deploy/CredentialManager.tsx:560:23",value:"mongodb",children:"MongoDB"}),e.jsx(_,{"code-path":"src/components/deploy/CredentialManager.tsx:561:23",value:"redis",children:"Redis"}),e.jsx(_,{"code-path":"src/components/deploy/CredentialManager.tsx:562:23",value:"mssql",children:"SQL Server"}),e.jsx(_,{"code-path":"src/components/deploy/CredentialManager.tsx:563:23",value:"oracle",children:"Oracle"})]})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:567:17",className:"space-y-1",children:[e.jsxs(l,{"code-path":"src/components/deploy/CredentialManager.tsx:568:19",className:"text-[var(--dg-text-secondary)] text-xs",children:["主机 ",e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:568:81",className:"text-red-400",children:"*"})]}),e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:569:19",value:pe,onChange:t=>ie(t.target.value),placeholder:"10.0.0.1",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] font-mono"})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:572:17",className:"space-y-1",children:[e.jsx(l,{"code-path":"src/components/deploy/CredentialManager.tsx:573:19",className:"text-[var(--dg-text-secondary)] text-xs",children:"端口"}),e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:574:19",value:xe,onChange:t=>me(t.target.value),placeholder:"3306",type:"number",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:577:17",className:"space-y-1",children:[e.jsx(l,{"code-path":"src/components/deploy/CredentialManager.tsx:578:19",className:"text-[var(--dg-text-secondary)] text-xs",children:"数据库名"}),e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:579:19",value:ge,onChange:t=>he(t.target.value),placeholder:"aiops",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:582:17",className:"space-y-1",children:[e.jsx(l,{"code-path":"src/components/deploy/CredentialManager.tsx:583:19",className:"text-[var(--dg-text-secondary)] text-xs",children:"用户名"}),e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:584:19",value:ye,onChange:t=>ve(t.target.value),placeholder:"root",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),e.jsx("div",{"code-path":"src/components/deploy/CredentialManager.tsx:587:17",children:e.jsx(u,{"code-path":"src/components/deploy/CredentialManager.tsx:587:22",label:"密码",value:Ce,onChange:ue,placeholder:"数据库密码",fieldKey:"db_pwd"})})]}),c==="api"&&e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:593:15",className:"space-y-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:594:17",className:"space-y-1",children:[e.jsx(l,{"code-path":"src/components/deploy/CredentialManager.tsx:595:19",className:"text-[var(--dg-text-secondary)] text-xs",children:"API 端点"}),e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:596:19",value:Me,onChange:t=>Ne(t.target.value),placeholder:"https://api.example.com",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] font-mono"})]}),e.jsx(u,{"code-path":"src/components/deploy/CredentialManager.tsx:599:17",label:"API Key / Token",value:be,onChange:je,placeholder:"sk-xxxx...",fieldKey:"api_key",required:!0})]}),c==="generic"&&e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:605:15",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:606:17",className:"space-y-1",children:[e.jsxs(l,{"code-path":"src/components/deploy/CredentialManager.tsx:607:19",className:"text-[var(--dg-text-secondary)] text-xs",children:["Key ",e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:607:82",className:"text-red-400",children:"*"})]}),e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:608:19",value:fe,onChange:t=>Se(t.target.value),placeholder:"MY_SECRET",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] font-mono"})]}),e.jsx(u,{"code-path":"src/components/deploy/CredentialManager.tsx:611:17",label:"Value",value:we,onChange:_e,placeholder:"密钥值",fieldKey:"generic_val",required:!0})]})]})]}),e.jsxs(Ge,{"code-path":"src/components/deploy/CredentialManager.tsx:617:9",children:[e.jsx(b,{"code-path":"src/components/deploy/CredentialManager.tsx:618:11",variant:"outline",onClick:M,children:"取消"}),e.jsx(b,{"code-path":"src/components/deploy/CredentialManager.tsx:619:11",onClick:et,disabled:m,className:"bg-[var(--dg-blue)] hover:bg-[var(--dg-blue)]/80",children:m?"保存中...":h?"更新":"创建"})]})]})})}function Ot(){const j=st(),[M,k]=a.useState([]),[n,h]=a.useState(!1),[T,v]=a.useState(!1),[E,w]=a.useState(null),[c,K]=a.useState(null),[x,C]=a.useState(!1),[r,o]=a.useState(""),[d,i]=a.useState(""),m=a.useCallback(async()=>{h(!0);try{const s=new URLSearchParams;r&&s.set("secret_type",r),d&&s.set("search",d),s.set("page_size","100");const g=await I.get(`/credentials?${s.toString()}`);k(g?.list||[])}catch{y.error("获取凭证列表失败")}finally{h(!1)}},[r,d]);a.useEffect(()=>{m()},[m]);const D=async s=>{if(await j({title:"删除凭据",description:`确定删除凭据「${s.name}」?此操作不可撤销。`,confirmText:"删除",variant:"destructive"}))try{await I.delete(`/credentials/${s.id}`),y.success("已删除"),m()}catch{y.error("删除失败")}},L=async s=>{try{await I.put(`/credentials/${s.id}`,{is_active:!s.is_active}),y.success(s.is_active?"已禁用":"已启用"),m()}catch{y.error("操作失败")}},A=s=>{navigator.clipboard.writeText(s),y.success("引用 ID 已复制")},F=Object.entries(O);return e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:689:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:690:7",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:691:9",children:[e.jsx("h2",{"code-path":"src/components/deploy/CredentialManager.tsx:692:11",className:"text-lg font-semibold text-[var(--dg-text-primary)]",children:"凭据管理"}),e.jsx("p",{"code-path":"src/components/deploy/CredentialManager.tsx:693:11",className:"text-sm text-[var(--dg-text-muted)] mt-0.5",children:"统一管理 SSH 密钥、Docker 密码、AKSK、数据库等敏感凭据(AES 加密存储)"})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:697:9",className:"flex items-center gap-2",children:[e.jsxs(b,{"code-path":"src/components/deploy/CredentialManager.tsx:698:11",variant:"outline",size:"sm",onClick:m,children:[e.jsx(mt,{"code-path":"src/components/deploy/CredentialManager.tsx:699:13",className:"w-4 h-4 mr-1"}),"刷新"]}),e.jsxs(b,{"code-path":"src/components/deploy/CredentialManager.tsx:701:11",size:"sm",onClick:()=>{w(null),v(!0)},children:[e.jsx(Re,{"code-path":"src/components/deploy/CredentialManager.tsx:702:13",className:"w-4 h-4 mr-1"}),"新增凭据"]})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:708:7",className:"flex items-center gap-3 flex-wrap",children:[e.jsxs(Ke,{"code-path":"src/components/deploy/CredentialManager.tsx:709:9",value:r,onValueChange:o,children:[e.jsx(De,{"code-path":"src/components/deploy/CredentialManager.tsx:710:11",className:"w-[140px] bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] h-9 text-sm",children:e.jsx(Ae,{"code-path":"src/components/deploy/CredentialManager.tsx:711:13",placeholder:"全部类型"})}),e.jsxs(Pe,{"code-path":"src/components/deploy/CredentialManager.tsx:713:11",children:[e.jsx(_,{"code-path":"src/components/deploy/CredentialManager.tsx:714:13",value:"all",children:"全部类型"}),F.map(([s,g])=>e.jsx(_,{"code-path":"src/components/deploy/CredentialManager.tsx:716:15",value:s,children:e.jsxs("span",{"code-path":"src/components/deploy/CredentialManager.tsx:717:17",className:"flex items-center gap-2",children:[e.jsx(g.icon,{"code-path":"src/components/deploy/CredentialManager.tsx:717:59",className:"h-3.5 w-3.5"}),g.label]})},s))]})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:722:9",className:"relative flex-1 max-w-xs",children:[e.jsx(gt,{"code-path":"src/components/deploy/CredentialManager.tsx:723:11",className:"absolute left-2.5 top-1/2 -translate-y-1/2 h-4 w-4 text-[var(--dg-text-muted)]"}),e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:724:11",value:d,onChange:s=>i(s.target.value),placeholder:"搜索名称、描述...",className:"pl-8 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] h-9 text-sm"})]}),e.jsxs("span",{"code-path":"src/components/deploy/CredentialManager.tsx:728:9",className:"text-xs text-[var(--dg-text-muted)]",children:[M.length," 个凭据"]})]}),n?e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:732:9",className:"text-center py-16 text-[var(--dg-text-secondary)]",children:[e.jsx(ht,{"code-path":"src/components/deploy/CredentialManager.tsx:733:11",className:"w-6 h-6 animate-spin mx-auto mb-2 text-[var(--dg-blue)]"}),"加载中..."]}):M.length===0?e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:736:9",className:"text-center py-16 border border-dashed border-[var(--dg-border)] rounded-lg",children:[e.jsx($e,{"code-path":"src/components/deploy/CredentialManager.tsx:737:11",className:"w-12 h-12 mx-auto mb-3 text-[var(--dg-text-muted)]"}),e.jsx("p",{"code-path":"src/components/deploy/CredentialManager.tsx:738:11",className:"text-[var(--dg-text-secondary)] mb-2",children:"暂无凭据"}),e.jsx("p",{"code-path":"src/components/deploy/CredentialManager.tsx:739:11",className:"text-xs text-[var(--dg-text-muted)] mb-4",children:"创建 SSH、Docker、AKSK 等类型的凭据,供流水线和服务器使用"}),e.jsxs(b,{"code-path":"src/components/deploy/CredentialManager.tsx:740:11",onClick:()=>{w(null),v(!0)},children:[e.jsx(Re,{"code-path":"src/components/deploy/CredentialManager.tsx:741:13",className:"w-4 h-4 mr-1"}),"创建第一个凭据"]})]}):e.jsx("div",{"code-path":"src/components/deploy/CredentialManager.tsx:745:9",className:"rounded-md border border-[var(--dg-border)] overflow-hidden",children:e.jsxs("table",{"code-path":"src/components/deploy/CredentialManager.tsx:746:11",className:"w-full text-sm",children:[e.jsx("thead",{"code-path":"src/components/deploy/CredentialManager.tsx:747:13",className:"bg-[var(--dg-bg-tertiary)] border-b border-[var(--dg-border)]",children:e.jsxs("tr",{"code-path":"src/components/deploy/CredentialManager.tsx:748:15",children:[e.jsx("th",{"code-path":"src/components/deploy/CredentialManager.tsx:749:17",className:"px-3 py-2.5 text-left font-medium text-[var(--dg-text-secondary)]",children:"名称"}),e.jsx("th",{"code-path":"src/components/deploy/CredentialManager.tsx:750:17",className:"px-3 py-2.5 text-left font-medium text-[var(--dg-text-secondary)]",children:"类型"}),e.jsx("th",{"code-path":"src/components/deploy/CredentialManager.tsx:751:17",className:"px-3 py-2.5 text-left font-medium text-[var(--dg-text-secondary)] hidden md:table-cell",children:"摘要"}),e.jsx("th",{"code-path":"src/components/deploy/CredentialManager.tsx:752:17",className:"px-3 py-2.5 text-left font-medium text-[var(--dg-text-secondary)] hidden lg:table-cell",children:"标签"}),e.jsx("th",{"code-path":"src/components/deploy/CredentialManager.tsx:753:17",className:"px-3 py-2.5 text-left font-medium text-[var(--dg-text-secondary)] hidden xl:table-cell",children:"引用ID"}),e.jsx("th",{"code-path":"src/components/deploy/CredentialManager.tsx:754:17",className:"px-3 py-2.5 text-left font-medium text-[var(--dg-text-secondary)]",children:"状态"}),e.jsx("th",{"code-path":"src/components/deploy/CredentialManager.tsx:755:17",className:"px-3 py-2.5 text-right font-medium text-[var(--dg-text-secondary)]",children:"操作"})]})}),e.jsx("tbody",{"code-path":"src/components/deploy/CredentialManager.tsx:758:13",children:M.map(s=>{const g=s.secret_type,P=O[g],H=s.expires_at&&new Date(s.expires_at){K(s.id),C(!0)},children:[e.jsx("td",{"code-path":"src/components/deploy/CredentialManager.tsx:767:21",className:"px-3 py-2.5",children:e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:768:23",className:"flex items-center gap-2",children:[P?e.jsx(P.icon,{"code-path":"src/components/deploy/CredentialManager.tsx:769:32",className:`h-4 w-4 ${P.color} shrink-0`}):e.jsx(V,{"code-path":"src/components/deploy/CredentialManager.tsx:769:91",className:"h-4 w-4 text-[var(--dg-text-muted)] shrink-0"}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:770:25",children:[e.jsx("div",{"code-path":"src/components/deploy/CredentialManager.tsx:771:27",className:"font-medium text-[var(--dg-text-primary)]",children:s.name}),s.variable_name&&e.jsx("div",{"code-path":"src/components/deploy/CredentialManager.tsx:773:29",className:"text-xs text-[var(--dg-text-muted)] font-mono",children:s.variable_name})]})]})}),e.jsx("td",{"code-path":"src/components/deploy/CredentialManager.tsx:778:21",className:"px-3 py-2.5",children:e.jsx(S,{"code-path":"src/components/deploy/CredentialManager.tsx:779:23",variant:"outline",className:`text-xs ${Xe[g]||""}`,children:P?.label||g})}),e.jsx("td",{"code-path":"src/components/deploy/CredentialManager.tsx:783:21",className:"px-3 py-2.5 text-[var(--dg-text-secondary)] text-xs hidden md:table-cell max-w-[180px] truncate font-mono",children:s.summary||"-"}),e.jsx("td",{"code-path":"src/components/deploy/CredentialManager.tsx:786:21",className:"px-3 py-2.5 hidden lg:table-cell",children:e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:787:23",className:"flex gap-1 flex-wrap",children:[(s.tags||[]).slice(0,3).map(N=>e.jsx(S,{"code-path":"src/components/deploy/CredentialManager.tsx:789:27",variant:"outline",className:"text-xs border-[var(--dg-border)] text-[var(--dg-text-muted)]",children:N},N)),(s.tags||[]).length>3&&e.jsxs("span",{"code-path":"src/components/deploy/CredentialManager.tsx:792:27",className:"text-xs text-[var(--dg-text-muted)]",children:["+",s.tags.length-3]})]})}),e.jsx("td",{"code-path":"src/components/deploy/CredentialManager.tsx:796:21",className:"px-3 py-2.5 hidden xl:table-cell",children:e.jsx("code",{"code-path":"src/components/deploy/CredentialManager.tsx:797:23",className:"text-xs text-[var(--dg-blue)] cursor-pointer font-mono",onClick:N=>{N.stopPropagation(),A(s.env_prefix)},children:s.env_prefix})}),e.jsx("td",{"code-path":"src/components/deploy/CredentialManager.tsx:802:21",className:"px-3 py-2.5",children:e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:803:23",className:"flex items-center gap-1",children:[s.is_active?e.jsx(S,{"code-path":"src/components/deploy/CredentialManager.tsx:805:27",className:"bg-green-500/20 text-green-400 text-xs border-0",children:"启用"}):e.jsx(S,{"code-path":"src/components/deploy/CredentialManager.tsx:807:27",className:"bg-red-500/20 text-red-400 text-xs border-0",children:"禁用"}),H&&e.jsxs(S,{"code-path":"src/components/deploy/CredentialManager.tsx:810:27",className:"bg-yellow-500/20 text-yellow-400 text-xs border-0",children:[e.jsx(lt,{"code-path":"src/components/deploy/CredentialManager.tsx:810:96",className:"h-2.5 w-2.5 mr-0.5"}),"过期"]})]})}),e.jsx("td",{"code-path":"src/components/deploy/CredentialManager.tsx:814:21",className:"px-3 py-2.5 text-right",onClick:N=>N.stopPropagation(),children:e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:815:23",className:"flex justify-end gap-1",children:[e.jsx(b,{"code-path":"src/components/deploy/CredentialManager.tsx:816:25",variant:"ghost",size:"icon",className:"h-7 w-7",onClick:()=>{w(s),v(!0)},title:"编辑",children:e.jsx(vt,{"code-path":"src/components/deploy/CredentialManager.tsx:818:27",className:"w-3.5 h-3.5"})}),e.jsx(b,{"code-path":"src/components/deploy/CredentialManager.tsx:820:25",variant:"ghost",size:"icon",className:"h-7 w-7",onClick:()=>L(s),title:s.is_active?"禁用":"启用",children:s.is_active?e.jsx(Ze,{"code-path":"src/components/deploy/CredentialManager.tsx:823:45",className:"w-3.5 h-3.5 text-yellow-500"}):e.jsx(We,{"code-path":"src/components/deploy/CredentialManager.tsx:823:99",className:"w-3.5 h-3.5 text-green-500"})}),e.jsx(b,{"code-path":"src/components/deploy/CredentialManager.tsx:825:25",variant:"ghost",size:"icon",className:"h-7 w-7 text-red-500",onClick:()=>D(s),title:"删除",children:e.jsx(Ct,{"code-path":"src/components/deploy/CredentialManager.tsx:827:27",className:"w-3.5 h-3.5"})})]})})]},s.id)})})]})}),e.jsx(bt,{"code-path":"src/components/deploy/CredentialManager.tsx:839:7",open:T,onClose:()=>v(!1),onSaved:m,editData:E}),e.jsx(ut,{"code-path":"src/components/deploy/CredentialManager.tsx:840:7",open:x,onClose:()=>C(!1),credId:c})]})}export{Ot as default}; diff --git a/backend/static/assets/CredentialManager-DlhOOSIa.js b/backend/static/assets/CredentialManager-DlhOOSIa.js deleted file mode 100644 index d53fc43..0000000 --- a/backend/static/assets/CredentialManager-DlhOOSIa.js +++ /dev/null @@ -1 +0,0 @@ -import{a as st,r as a,h as I,j as e,B as b,S as rt,I as p,t as qe,O as nt,G as ot,s as ct,v as dt,q as lt,P as V,x as pt,D as $e,b as Ue,c as ze,d as Be,e as it,f as Ge,T as xt,Q as Qe,U as Ye,V as mt}from"./index-DfyorCky.js";import{L as l}from"./label-BK0h2apY.js";import{B as S}from"./badge-xNW8x0G1.js";import{S as Ke,a as De,b as Ae,c as Pe,d as _}from"./select-D5qUzdAs.js";import{t as y}from"./index-a3ybMjbR.js";import{R as gt}from"./refresh-cw-DUB_tAG-.js";import{P as Re}from"./plus-CUG-9kpu.js";import{Z as ht}from"./zap-D2uWSK32.js";import{F as yt}from"./file-text-C9G5abwR.js";import{P as vt}from"./pencil-BqUotcjf.js";import{C as Ze}from"./circle-x-DK79Dhg2.js";import{C as We}from"./circle-check-DWcXrx2k.js";import{T as Ct}from"./trash-2-Dx32pOzT.js";import{C as Ve}from"./copy-DXW4LnkN.js";import"./index-CWVNW_qu.js";const O={ssh:{label:"SSH 密钥",icon:lt,color:"text-amber-400",desc:"SSH 私钥/公钥/密码"},docker:{label:"Docker 凭证",icon:dt,color:"text-cyan-400",desc:"Docker Registry 登录凭据"},tls:{label:"TLS 证书",icon:qe,color:"text-green-400",desc:"TLS/SSL 证书与私钥"},aksk:{label:"AKSK 密钥",icon:ct,color:"text-purple-400",desc:"云服务 AccessKey/SecretKey"},database:{label:"数据库凭证",icon:ot,color:"text-blue-400",desc:"数据库连接信息"},api:{label:"API 密钥",icon:nt,color:"text-orange-400",desc:"API Token/Key + 端点"},generic:{label:"通用凭证",icon:yt,color:"text-gray-400",desc:"自定义 Key/Value 键值对"}},Xe={ssh:"bg-amber-500/20 text-amber-400 border-amber-500/30",docker:"bg-cyan-500/20 text-cyan-400 border-cyan-500/30",tls:"bg-green-500/20 text-green-400 border-green-500/30",aksk:"bg-purple-500/20 text-purple-400 border-purple-500/30",database:"bg-blue-500/20 text-blue-400 border-blue-500/30",api:"bg-orange-500/20 text-orange-400 border-orange-500/30",generic:"bg-gray-500/20 text-gray-400 border-gray-500/30"};function ut({open:j,onClose:M,credId:k}){const[n,h]=a.useState(null),[T,v]=a.useState(!1),[E,w]=a.useState({});if(a.useEffect(()=>{!k||!j||(v(!0),I.get(`/credentials/${k}`).then(d=>{h(d)}).catch(()=>y.error("加载详情失败")).finally(()=>v(!1)))},[k,j]),!j||!k)return null;const c=d=>w(i=>({...i,[d]:!i[d]})),K=d=>{navigator.clipboard.writeText(d),y.success("已复制")},x=n?.secret_type,C=O[x],r=n?.content||{},o=({label:d,value:i,sensitive:m,fieldKey:D})=>{if(i==null||i==="")return null;const L=typeof i=="string"&&i.length>80,A=D?E[D]:!1;return e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:107:7",className:"mb-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:108:9",className:"flex items-center gap-2 text-xs text-[var(--dg-text-muted)] mb-1",children:[e.jsx(mt,{"code-path":"src/components/deploy/CredentialManager.tsx:109:11",className:"h-3 w-3"}),d]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:111:9",className:"flex gap-1",children:[L?e.jsx("textarea",{"code-path":"src/components/deploy/CredentialManager.tsx:113:13",readOnly:!0,value:m&&!A?"••••••••":i,className:"flex-1 rounded-md bg-[var(--dg-bg-tertiary)] border border-[var(--dg-border)] text-[var(--dg-text-primary)] p-2 text-xs font-mono resize-none",rows:4}):e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:117:13",readOnly:!0,value:m&&!A?"••••••••":String(i),className:"flex-1 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] font-mono text-xs"}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:120:11",className:"flex flex-col gap-0.5 shrink-0",children:[m&&e.jsx(b,{"code-path":"src/components/deploy/CredentialManager.tsx:122:15",variant:"ghost",size:"icon",className:"h-7 w-7",onClick:()=>c(D),children:A?e.jsx(Qe,{"code-path":"src/components/deploy/CredentialManager.tsx:123:25",className:"h-3 w-3"}):e.jsx(Ye,{"code-path":"src/components/deploy/CredentialManager.tsx:123:58",className:"h-3 w-3"})}),e.jsx(b,{"code-path":"src/components/deploy/CredentialManager.tsx:126:13",variant:"ghost",size:"icon",className:"h-7 w-7",onClick:()=>K(String(i)),children:e.jsx(Ve,{"code-path":"src/components/deploy/CredentialManager.tsx:127:15",className:"h-3 w-3"})})]})]})]})};return e.jsx($e,{"code-path":"src/components/deploy/CredentialManager.tsx:136:5",open:j,onOpenChange:M,children:e.jsxs(Ue,{"code-path":"src/components/deploy/CredentialManager.tsx:137:7",className:"sm:max-w-[680px] max-h-[85vh] overflow-y-auto bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:[e.jsx(ze,{"code-path":"src/components/deploy/CredentialManager.tsx:138:9",children:e.jsxs(Be,{"code-path":"src/components/deploy/CredentialManager.tsx:139:11",className:"text-[var(--dg-text-primary)] flex items-center gap-2",children:[C?e.jsx(C.icon,{"code-path":"src/components/deploy/CredentialManager.tsx:140:20",className:`h-5 w-5 ${C.color}`}):e.jsx(V,{"code-path":"src/components/deploy/CredentialManager.tsx:140:70",className:"h-5 w-5 text-[var(--dg-text-muted)]"}),"凭据详情"]})}),T?e.jsx("div",{"code-path":"src/components/deploy/CredentialManager.tsx:145:11",className:"text-center py-8 text-[var(--dg-text-muted)]",children:"加载中..."}):n?e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:147:11",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:149:13",className:"grid grid-cols-2 gap-3 text-sm",children:[e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:150:15",children:[e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:150:20",className:"text-[var(--dg-text-muted)]",children:"名称:"}),e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:150:76",className:"text-[var(--dg-text-primary)] font-medium",children:n.name})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:151:15",children:[e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:151:20",className:"text-[var(--dg-text-muted)]",children:"类型:"}),e.jsx(S,{"code-path":"src/components/deploy/CredentialManager.tsx:152:17",variant:"outline",className:`text-xs ml-1 ${Xe[x]||""}`,children:C?.label||x})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:154:15",children:[e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:154:20",className:"text-[var(--dg-text-muted)]",children:"状态:"}),n.is_active?e.jsxs(S,{"code-path":"src/components/deploy/CredentialManager.tsx:156:21",className:"bg-green-500/20 text-green-400 text-xs ml-1",children:[e.jsx(We,{"code-path":"src/components/deploy/CredentialManager.tsx:156:84",className:"h-3 w-3 mr-0.5"}),"启用"]}):e.jsxs(S,{"code-path":"src/components/deploy/CredentialManager.tsx:157:21",className:"bg-red-500/20 text-red-400 text-xs ml-1",children:[e.jsx(Ze,{"code-path":"src/components/deploy/CredentialManager.tsx:157:80",className:"h-3 w-3 mr-0.5"}),"禁用"]}),n.expires_at&&new Date(n.expires_at)K(n.env_prefix||""),children:[e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:163:17",className:"text-[var(--dg-text-muted)]",children:"引用ID:"}),e.jsx("code",{"code-path":"src/components/deploy/CredentialManager.tsx:164:17",className:"text-[var(--dg-blue)] font-mono text-xs",children:n.env_prefix||"无"}),e.jsx(Ve,{"code-path":"src/components/deploy/CredentialManager.tsx:165:17",className:"h-3 w-3 inline ml-1 text-[var(--dg-text-muted)]"})]}),n.tags?.length>0&&e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:168:17",className:"col-span-2",children:[e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:169:19",className:"text-[var(--dg-text-muted)]",children:"标签:"}),n.tags.map(d=>e.jsx(S,{"code-path":"src/components/deploy/CredentialManager.tsx:171:21",variant:"outline",className:"text-xs ml-1 border-[var(--dg-border)]",children:d},d))]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:175:15",className:"col-span-2",children:[e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:175:43",className:"text-[var(--dg-text-muted)]",children:"描述:"}),e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:175:99",className:"text-[var(--dg-text-secondary)]",children:n.description||"无"})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:176:15",children:[e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:176:20",className:"text-[var(--dg-text-muted)]",children:"创建:"}),e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:176:76",className:"text-[var(--dg-text-secondary)] text-xs",children:new Date(n.created_at).toLocaleString()})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:177:15",children:[e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:177:20",className:"text-[var(--dg-text-muted)]",children:"更新:"}),e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:177:76",className:"text-[var(--dg-text-secondary)] text-xs",children:new Date(n.updated_at).toLocaleString()})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:181:13",className:"border-t border-[var(--dg-border)] pt-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:182:15",className:"flex items-center gap-2 text-sm text-[var(--dg-text-primary)] font-medium mb-3",children:[e.jsx(V,{"code-path":"src/components/deploy/CredentialManager.tsx:183:17",className:"h-4 w-4 text-yellow-500"}),"密钥数据"]}),e.jsx("div",{"code-path":"src/components/deploy/CredentialManager.tsx:185:15",className:"p-3 rounded-md bg-yellow-500/5 border border-yellow-500/20 mb-3",children:e.jsx("p",{"code-path":"src/components/deploy/CredentialManager.tsx:186:17",className:"text-xs text-yellow-400/80",children:"以下内容包含敏感信息,请妥善保管,不要泄露给他人。"})}),x==="ssh"&&e.jsxs(e.Fragment,{children:[e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:190:17",label:"SSH 用户",value:r.ssh_user}),e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:191:17",label:"SSH 端口",value:r.ssh_port}),e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:192:17",label:"SSH 密码",value:r.password,sensitive:!0,fieldKey:"ssh_password"}),e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:193:17",label:"私钥",value:r.private_key,sensitive:!0,fieldKey:"ssh_private_key"}),e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:194:17",label:"公钥",value:r.public_key,fieldKey:"ssh_public_key"})]}),x==="docker"&&e.jsxs(e.Fragment,{children:[e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:197:17",label:"Registry 地址",value:r.server}),e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:198:17",label:"用户名",value:r.username}),e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:199:17",label:"密码",value:r.password,sensitive:!0,fieldKey:"docker_password"})]}),x==="tls"&&e.jsxs(e.Fragment,{children:[e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:202:17",label:"证书",value:r.cert,sensitive:!0,fieldKey:"tls_cert"}),e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:203:17",label:"私钥",value:r.key,sensitive:!0,fieldKey:"tls_key"}),e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:204:17",label:"CA 证书",value:r.ca,sensitive:!0,fieldKey:"tls_ca"})]}),x==="aksk"&&e.jsxs(e.Fragment,{children:[e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:207:17",label:"Access Key ID",value:r.access_key}),e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:208:17",label:"Secret Access Key",value:r.secret_key,sensitive:!0,fieldKey:"aksk_secret_key"})]}),x==="database"&&e.jsxs(e.Fragment,{children:[e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:211:17",label:"数据库类型",value:(r.db_type||"").toUpperCase()}),e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:212:17",label:"主机",value:r.host}),e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:213:17",label:"端口",value:r.port}),e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:214:17",label:"数据库名",value:r.db_name}),e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:215:17",label:"用户名",value:r.username}),e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:216:17",label:"密码",value:r.password,sensitive:!0,fieldKey:"db_password"})]}),x==="api"&&e.jsxs(e.Fragment,{children:[e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:219:17",label:"API Key",value:r.api_key,sensitive:!0,fieldKey:"api_key"}),e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:220:17",label:"API 端点",value:r.endpoint})]}),x==="generic"&&e.jsxs(e.Fragment,{children:[e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:223:17",label:"Key",value:r.generic_key}),e.jsx(o,{"code-path":"src/components/deploy/CredentialManager.tsx:224:17",label:"Value",value:r.generic_value,sensitive:!0,fieldKey:"generic_value"})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:229:13",className:"border-t border-[var(--dg-border)] pt-3",children:[e.jsx("div",{"code-path":"src/components/deploy/CredentialManager.tsx:230:15",className:"text-xs text-[var(--dg-text-muted)] mb-2",children:"在流水线/脚本中引用此凭据:"}),e.jsxs("code",{"code-path":"src/components/deploy/CredentialManager.tsx:231:15",className:"text-xs bg-[var(--dg-bg-tertiary)] px-3 py-1.5 rounded block text-[var(--dg-blue)]",children:["${",n.variable_name||n.name.toUpperCase().replace(/[^A-Z0-9]/g,"_"),"}"]})]})]}):e.jsx("div",{"code-path":"src/components/deploy/CredentialManager.tsx:237:11",className:"text-center py-8 text-[var(--dg-text-muted)]",children:"未找到凭据数据"}),e.jsx(Ge,{"code-path":"src/components/deploy/CredentialManager.tsx:239:9",children:e.jsx(b,{"code-path":"src/components/deploy/CredentialManager.tsx:240:11",variant:"outline",onClick:M,children:"关闭"})})]})})}function bt({open:j,onClose:M,onSaved:k,editData:n}){const h=!!n,[T,v]=a.useState(""),[E,w]=a.useState(""),[c,K]=a.useState("ssh"),[x,C]=a.useState(""),[r,o]=a.useState(""),[d,i]=a.useState(!0),[m,D]=a.useState(!1),[L,A]=a.useState({}),[F,s]=a.useState("root"),[g,P]=a.useState("22"),[H,N]=a.useState(""),[q,$]=a.useState(""),[U,z]=a.useState(""),[B,G]=a.useState(""),[Q,Y]=a.useState(""),[Z,W]=a.useState(""),[X,J]=a.useState(""),[ee,te]=a.useState(""),[ae,se]=a.useState(""),[,Te]=a.useState(""),[re,ne]=a.useState(""),[oe,ce]=a.useState(""),[,Ee]=a.useState(""),[de,le]=a.useState("mysql"),[pe,ie]=a.useState(""),[xe,me]=a.useState("3306"),[ge,he]=a.useState(""),[ye,ve]=a.useState(""),[Ce,ue]=a.useState(""),[be,je]=a.useState(""),[Me,Ne]=a.useState(""),[fe,Se]=a.useState(""),[we,_e]=a.useState("");a.useEffect(()=>{j&&(n?(v(n.name),w(n.variable_name||""),K(n.secret_type),C(n.description||""),o((n.tags||[]).join(", ")),i(n.is_active),s(""),P("22"),N(""),$(""),z(""),G(""),Y(""),W(""),J(""),te(""),se(""),Te(""),ne(""),ce(""),Ee(""),le("mysql"),ie(""),me("3306"),he(""),ve(""),ue(""),je(""),Ne(""),Se(""),_e("")):(v(""),w(""),K("ssh"),C(""),o(""),i(!0),s("root"),P("22"),N(""),$(""),z(""),G(""),Y(""),W(""),J(""),te(""),se(""),Te(""),ne(""),ce(""),Ee(""),le("mysql"),ie(""),me("3306"),he(""),ve(""),ue(""),je(""),Ne(""),Se(""),_e("")),A({}))},[n,j]);const Je=t=>A(f=>({...f,[t]:!f[t]})),et=async()=>{if(!T.trim()){y.error("请填写凭据名称");return}D(!0);try{const t={name:T.trim(),secret_type:c,description:x.trim(),tags:r.split(",").map(f=>f.trim()).filter(Boolean),is_active:d};E.trim()&&(t.variable_name=E.trim()),c==="ssh"?(F.trim()&&(t.ssh_user=F.trim()),g&&(t.ssh_port=parseInt(g)||22),H.trim()&&(t.ssh_password=H.trim()),q.trim()&&(t.ssh_private_key=q.trim()),U.trim()&&(t.ssh_public_key=U.trim())):c==="docker"?(B.trim()&&(t.docker_server=B.trim()),Q.trim()&&(t.docker_username=Q.trim()),Z.trim()&&(t.docker_password=Z.trim())):c==="tls"?(X.trim()&&(t.tls_cert=X.trim()),ee.trim()&&(t.tls_key=ee.trim()),ae.trim()&&(t.tls_ca=ae.trim())):c==="aksk"?(re.trim()&&(t.aksk_access_key=re.trim()),oe.trim()&&(t.aksk_secret_key=oe.trim())):c==="database"?(de.trim()&&(t.db_type=de.trim()),pe.trim()&&(t.db_host=pe.trim()),xe&&(t.db_port=parseInt(xe)||3306),ge.trim()&&(t.db_name=ge.trim()),ye.trim()&&(t.db_username=ye.trim()),Ce.trim()&&(t.db_password=Ce.trim())):c==="api"?(be.trim()&&(t.api_key=be.trim()),Me.trim()&&(t.api_endpoint=Me.trim())):c==="generic"&&(fe.trim()&&(t.generic_key=fe.trim()),we.trim()&&(t.generic_value=we.trim())),h?(await I.put(`/credentials/${n.id}`,t),y.success("已更新")):(await I.post("/credentials",t),y.success("已创建")),k(),M()}catch(t){y.error(t?.response?.data?.message||"操作失败")}finally{D(!1)}},u=({label:t,value:f,onChange:Le,placeholder:Fe,fieldKey:He,required:tt,isLong:at})=>{const Oe=L[He];return e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:394:7",className:"space-y-1",children:[e.jsxs(l,{"code-path":"src/components/deploy/CredentialManager.tsx:395:9",className:"text-[var(--dg-text-secondary)] text-xs",children:[t,tt&&!h&&e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:395:99",className:"text-red-400",children:" *"})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:396:9",className:"relative",children:[at?e.jsx("textarea",{"code-path":"src/components/deploy/CredentialManager.tsx:398:13",value:f,onChange:ke=>Le(ke.target.value),placeholder:Fe,rows:5,className:"w-full rounded-md bg-[var(--dg-bg-tertiary)] border border-[var(--dg-border)] text-[var(--dg-text-primary)] p-2 text-sm font-mono placeholder:text-[var(--dg-text-muted)]"}):e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:402:13",value:f,onChange:ke=>Le(ke.target.value),type:Oe?"text":"password",placeholder:Fe,className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] pr-10 font-mono text-sm"}),e.jsx("button",{"code-path":"src/components/deploy/CredentialManager.tsx:406:11",type:"button",onClick:()=>Je(He),className:"absolute right-2 top-1/2 -translate-y-1/2 text-[var(--dg-text-muted)] hover:text-[var(--dg-text-primary)] text-xs",children:Oe?e.jsx(Qe,{"code-path":"src/components/deploy/CredentialManager.tsx:408:21",className:"h-3.5 w-3.5"}):e.jsx(Ye,{"code-path":"src/components/deploy/CredentialManager.tsx:408:58",className:"h-3.5 w-3.5"})})]})]})},R=O[c],Ie=R?.icon||V;return e.jsx($e,{"code-path":"src/components/deploy/CredentialManager.tsx:419:5",open:j,onOpenChange:M,children:e.jsxs(Ue,{"code-path":"src/components/deploy/CredentialManager.tsx:420:7",className:"sm:max-w-[620px] max-h-[90vh] overflow-y-auto bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:[e.jsxs(ze,{"code-path":"src/components/deploy/CredentialManager.tsx:421:9",children:[e.jsxs(Be,{"code-path":"src/components/deploy/CredentialManager.tsx:422:11",className:"text-[var(--dg-text-primary)] flex items-center gap-2",children:[e.jsx(Ie,{"code-path":"src/components/deploy/CredentialManager.tsx:423:13",className:`h-5 w-5 ${R?.color||""}`}),h?"编辑凭据":"新增凭据"]}),e.jsx(it,{"code-path":"src/components/deploy/CredentialManager.tsx:426:11",className:"text-[var(--dg-text-muted)] text-xs",children:R?.desc||"管理敏感凭据信息"})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:430:9",className:"space-y-4 py-2",children:[e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:432:11",className:"border-b border-[var(--dg-border)] pb-3",children:[e.jsx("div",{"code-path":"src/components/deploy/CredentialManager.tsx:433:13",className:"text-xs font-medium text-[var(--dg-text-secondary)] mb-2",children:"基本信息"}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:434:13",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:435:15",className:"space-y-1",children:[e.jsxs(l,{"code-path":"src/components/deploy/CredentialManager.tsx:436:17",className:"text-[var(--dg-text-secondary)] text-xs",children:["凭据名称 ",e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:436:81",className:"text-red-400",children:"*"})]}),e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:437:17",value:T,onChange:t=>v(t.target.value),placeholder:"如:生产环境 SSH",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:440:15",className:"space-y-1",children:[e.jsx(l,{"code-path":"src/components/deploy/CredentialManager.tsx:441:17",className:"text-[var(--dg-text-secondary)] text-xs",children:"变量别名"}),e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:442:17",value:E,onChange:t=>w(t.target.value),placeholder:"如:MYSQL_PROD",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] font-mono text-sm"})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:445:15",className:"space-y-1",children:[e.jsxs(l,{"code-path":"src/components/deploy/CredentialManager.tsx:446:17",className:"text-[var(--dg-text-secondary)] text-xs",children:["类型",!h&&e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:446:90",className:"text-red-400",children:" *"})]}),e.jsxs(Ke,{"code-path":"src/components/deploy/CredentialManager.tsx:447:17",value:c,onValueChange:t=>K(t),disabled:h,children:[e.jsx(De,{"code-path":"src/components/deploy/CredentialManager.tsx:448:19",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]",children:e.jsx(Ae,{"code-path":"src/components/deploy/CredentialManager.tsx:449:21"})}),e.jsx(Pe,{"code-path":"src/components/deploy/CredentialManager.tsx:451:19",className:"max-h-[300px]",children:Object.entries(O).map(([t,f])=>e.jsx(_,{"code-path":"src/components/deploy/CredentialManager.tsx:453:23",value:t,children:e.jsxs("span",{"code-path":"src/components/deploy/CredentialManager.tsx:454:25",className:"flex items-center gap-2",children:[e.jsx(f.icon,{"code-path":"src/components/deploy/CredentialManager.tsx:454:67",className:"h-4 w-4"}),f.label]})},t))})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:460:15",className:"space-y-1",children:[e.jsx(l,{"code-path":"src/components/deploy/CredentialManager.tsx:461:17",className:"text-[var(--dg-text-secondary)] text-xs",children:"标签"}),e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:462:17",value:r,onChange:t=>o(t.target.value),placeholder:"生产环境, 阿里云",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:466:13",className:"mt-2 space-y-1",children:[e.jsx(l,{"code-path":"src/components/deploy/CredentialManager.tsx:467:15",className:"text-[var(--dg-text-secondary)] text-xs",children:"描述"}),e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:468:15",value:x,onChange:t=>C(t.target.value),placeholder:"可选备注信息",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:474:11",children:[e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:475:13",className:"text-xs font-medium text-[var(--dg-text-secondary)] mb-2 flex items-center gap-2",children:[e.jsx(Ie,{"code-path":"src/components/deploy/CredentialManager.tsx:476:15",className:"h-3.5 w-3.5"}),R?.label||c," 配置",h&&e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:477:26",className:"text-[var(--dg-text-muted)]",children:"(仅填写需要修改的字段)"})]}),c==="ssh"&&e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:481:15",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:482:17",className:"space-y-1",children:[e.jsx(l,{"code-path":"src/components/deploy/CredentialManager.tsx:483:19",className:"text-[var(--dg-text-secondary)] text-xs",children:"SSH 用户"}),e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:484:19",value:F,onChange:t=>s(t.target.value),placeholder:"root",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:487:17",className:"space-y-1",children:[e.jsx(l,{"code-path":"src/components/deploy/CredentialManager.tsx:488:19",className:"text-[var(--dg-text-secondary)] text-xs",children:"SSH 端口"}),e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:489:19",value:g,onChange:t=>P(t.target.value),placeholder:"22",type:"number",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),e.jsx("div",{"code-path":"src/components/deploy/CredentialManager.tsx:492:17",className:"col-span-2",children:e.jsx(u,{"code-path":"src/components/deploy/CredentialManager.tsx:493:19",label:"SSH 密码",value:H,onChange:N,placeholder:"密码(或留空用密钥)",fieldKey:"ssh_pwd"})}),e.jsx("div",{"code-path":"src/components/deploy/CredentialManager.tsx:496:17",className:"col-span-2",children:e.jsx(u,{"code-path":"src/components/deploy/CredentialManager.tsx:497:19",label:"私钥内容",value:q,onChange:$,placeholder:"粘贴 SSH 私钥...",fieldKey:"ssh_pk",isLong:!0})}),e.jsx("div",{"code-path":"src/components/deploy/CredentialManager.tsx:500:17",className:"col-span-2",children:e.jsx(u,{"code-path":"src/components/deploy/CredentialManager.tsx:501:19",label:"公钥内容",value:U,onChange:z,placeholder:"粘贴 SSH 公钥...",fieldKey:"ssh_pub",isLong:!0})})]}),c==="docker"&&e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:508:15",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:509:17",className:"col-span-2 space-y-1",children:[e.jsxs(l,{"code-path":"src/components/deploy/CredentialManager.tsx:510:19",className:"text-[var(--dg-text-secondary)] text-xs",children:["Registry 地址 ",e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:510:90",className:"text-red-400",children:"*"})]}),e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:511:19",value:B,onChange:t=>G(t.target.value),placeholder:"registry.example.com",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] font-mono"})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:514:17",className:"space-y-1",children:[e.jsx(l,{"code-path":"src/components/deploy/CredentialManager.tsx:515:19",className:"text-[var(--dg-text-secondary)] text-xs",children:"用户名"}),e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:516:19",value:Q,onChange:t=>Y(t.target.value),placeholder:"admin",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),e.jsx("div",{"code-path":"src/components/deploy/CredentialManager.tsx:519:17",children:e.jsx(u,{"code-path":"src/components/deploy/CredentialManager.tsx:519:22",label:"密码",value:Z,onChange:W,placeholder:"Registry 密码",fieldKey:"docker_pwd",required:!0})})]}),c==="tls"&&e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:525:15",className:"space-y-3",children:[e.jsx(u,{"code-path":"src/components/deploy/CredentialManager.tsx:526:17",label:"证书 (PEM)",value:X,onChange:J,placeholder:"-----BEGIN CERTIFICATE-----",fieldKey:"tls_cert",isLong:!0,required:!0}),e.jsx(u,{"code-path":"src/components/deploy/CredentialManager.tsx:528:17",label:"私钥 (PEM)",value:ee,onChange:te,placeholder:"-----BEGIN PRIVATE KEY-----",fieldKey:"tls_key",isLong:!0,required:!0}),e.jsx(u,{"code-path":"src/components/deploy/CredentialManager.tsx:530:17",label:"CA 证书",value:ae,onChange:se,placeholder:"CA 证书内容...",fieldKey:"tls_ca",isLong:!0})]}),c==="aksk"&&e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:536:15",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:537:17",className:"col-span-2 space-y-1",children:[e.jsxs(l,{"code-path":"src/components/deploy/CredentialManager.tsx:538:19",className:"text-[var(--dg-text-secondary)] text-xs",children:["Access Key ID ",e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:538:92",className:"text-red-400",children:"*"})]}),e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:539:19",value:re,onChange:t=>ne(t.target.value),placeholder:"AKIDxxxx...",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] font-mono"})]}),e.jsx("div",{"code-path":"src/components/deploy/CredentialManager.tsx:542:17",className:"col-span-2",children:e.jsx(u,{"code-path":"src/components/deploy/CredentialManager.tsx:543:19",label:"Secret Access Key",value:oe,onChange:ce,placeholder:"输入 Secret Key",fieldKey:"aksk_sk",required:!0})})]}),c==="database"&&e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:550:15",className:"grid grid-cols-3 gap-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:551:17",className:"space-y-1",children:[e.jsx(l,{"code-path":"src/components/deploy/CredentialManager.tsx:552:19",className:"text-[var(--dg-text-secondary)] text-xs",children:"数据库类型"}),e.jsxs(Ke,{"code-path":"src/components/deploy/CredentialManager.tsx:553:19",value:de,onValueChange:le,children:[e.jsx(De,{"code-path":"src/components/deploy/CredentialManager.tsx:554:21",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]",children:e.jsx(Ae,{"code-path":"src/components/deploy/CredentialManager.tsx:555:23"})}),e.jsxs(Pe,{"code-path":"src/components/deploy/CredentialManager.tsx:557:21",children:[e.jsx(_,{"code-path":"src/components/deploy/CredentialManager.tsx:558:23",value:"mysql",children:"MySQL"}),e.jsx(_,{"code-path":"src/components/deploy/CredentialManager.tsx:559:23",value:"postgres",children:"PostgreSQL"}),e.jsx(_,{"code-path":"src/components/deploy/CredentialManager.tsx:560:23",value:"mongodb",children:"MongoDB"}),e.jsx(_,{"code-path":"src/components/deploy/CredentialManager.tsx:561:23",value:"redis",children:"Redis"}),e.jsx(_,{"code-path":"src/components/deploy/CredentialManager.tsx:562:23",value:"mssql",children:"SQL Server"}),e.jsx(_,{"code-path":"src/components/deploy/CredentialManager.tsx:563:23",value:"oracle",children:"Oracle"})]})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:567:17",className:"space-y-1",children:[e.jsxs(l,{"code-path":"src/components/deploy/CredentialManager.tsx:568:19",className:"text-[var(--dg-text-secondary)] text-xs",children:["主机 ",e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:568:81",className:"text-red-400",children:"*"})]}),e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:569:19",value:pe,onChange:t=>ie(t.target.value),placeholder:"10.0.0.1",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] font-mono"})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:572:17",className:"space-y-1",children:[e.jsx(l,{"code-path":"src/components/deploy/CredentialManager.tsx:573:19",className:"text-[var(--dg-text-secondary)] text-xs",children:"端口"}),e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:574:19",value:xe,onChange:t=>me(t.target.value),placeholder:"3306",type:"number",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:577:17",className:"space-y-1",children:[e.jsx(l,{"code-path":"src/components/deploy/CredentialManager.tsx:578:19",className:"text-[var(--dg-text-secondary)] text-xs",children:"数据库名"}),e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:579:19",value:ge,onChange:t=>he(t.target.value),placeholder:"aiops",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:582:17",className:"space-y-1",children:[e.jsx(l,{"code-path":"src/components/deploy/CredentialManager.tsx:583:19",className:"text-[var(--dg-text-secondary)] text-xs",children:"用户名"}),e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:584:19",value:ye,onChange:t=>ve(t.target.value),placeholder:"root",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),e.jsx("div",{"code-path":"src/components/deploy/CredentialManager.tsx:587:17",children:e.jsx(u,{"code-path":"src/components/deploy/CredentialManager.tsx:587:22",label:"密码",value:Ce,onChange:ue,placeholder:"数据库密码",fieldKey:"db_pwd"})})]}),c==="api"&&e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:593:15",className:"space-y-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:594:17",className:"space-y-1",children:[e.jsx(l,{"code-path":"src/components/deploy/CredentialManager.tsx:595:19",className:"text-[var(--dg-text-secondary)] text-xs",children:"API 端点"}),e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:596:19",value:Me,onChange:t=>Ne(t.target.value),placeholder:"https://api.example.com",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] font-mono"})]}),e.jsx(u,{"code-path":"src/components/deploy/CredentialManager.tsx:599:17",label:"API Key / Token",value:be,onChange:je,placeholder:"sk-xxxx...",fieldKey:"api_key",required:!0})]}),c==="generic"&&e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:605:15",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:606:17",className:"space-y-1",children:[e.jsxs(l,{"code-path":"src/components/deploy/CredentialManager.tsx:607:19",className:"text-[var(--dg-text-secondary)] text-xs",children:["Key ",e.jsx("span",{"code-path":"src/components/deploy/CredentialManager.tsx:607:82",className:"text-red-400",children:"*"})]}),e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:608:19",value:fe,onChange:t=>Se(t.target.value),placeholder:"MY_SECRET",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] font-mono"})]}),e.jsx(u,{"code-path":"src/components/deploy/CredentialManager.tsx:611:17",label:"Value",value:we,onChange:_e,placeholder:"密钥值",fieldKey:"generic_val",required:!0})]})]})]}),e.jsxs(Ge,{"code-path":"src/components/deploy/CredentialManager.tsx:617:9",children:[e.jsx(b,{"code-path":"src/components/deploy/CredentialManager.tsx:618:11",variant:"outline",onClick:M,children:"取消"}),e.jsx(b,{"code-path":"src/components/deploy/CredentialManager.tsx:619:11",onClick:et,disabled:m,className:"bg-[var(--dg-blue)] hover:bg-[var(--dg-blue)]/80",children:m?"保存中...":h?"更新":"创建"})]})]})})}function Lt(){const j=st(),[M,k]=a.useState([]),[n,h]=a.useState(!1),[T,v]=a.useState(!1),[E,w]=a.useState(null),[c,K]=a.useState(null),[x,C]=a.useState(!1),[r,o]=a.useState(""),[d,i]=a.useState(""),m=a.useCallback(async()=>{h(!0);try{const s=new URLSearchParams;r&&s.set("secret_type",r),d&&s.set("search",d),s.set("page_size","100");const g=await I.get(`/credentials?${s.toString()}`);k(g?.list||[])}catch{y.error("获取凭证列表失败")}finally{h(!1)}},[r,d]);a.useEffect(()=>{m()},[m]);const D=async s=>{if(await j({title:"删除凭据",description:`确定删除凭据「${s.name}」?此操作不可撤销。`,confirmText:"删除",variant:"destructive"}))try{await I.delete(`/credentials/${s.id}`),y.success("已删除"),m()}catch{y.error("删除失败")}},L=async s=>{try{await I.put(`/credentials/${s.id}`,{is_active:!s.is_active}),y.success(s.is_active?"已禁用":"已启用"),m()}catch{y.error("操作失败")}},A=s=>{navigator.clipboard.writeText(s),y.success("引用 ID 已复制")},F=Object.entries(O);return e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:689:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:690:7",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:691:9",children:[e.jsx("h2",{"code-path":"src/components/deploy/CredentialManager.tsx:692:11",className:"text-lg font-semibold text-[var(--dg-text-primary)]",children:"凭据管理"}),e.jsx("p",{"code-path":"src/components/deploy/CredentialManager.tsx:693:11",className:"text-sm text-[var(--dg-text-muted)] mt-0.5",children:"统一管理 SSH 密钥、Docker 密码、AKSK、数据库等敏感凭据(AES 加密存储)"})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:697:9",className:"flex items-center gap-2",children:[e.jsxs(b,{"code-path":"src/components/deploy/CredentialManager.tsx:698:11",variant:"outline",size:"sm",onClick:m,children:[e.jsx(gt,{"code-path":"src/components/deploy/CredentialManager.tsx:699:13",className:"w-4 h-4 mr-1"}),"刷新"]}),e.jsxs(b,{"code-path":"src/components/deploy/CredentialManager.tsx:701:11",size:"sm",onClick:()=>{w(null),v(!0)},children:[e.jsx(Re,{"code-path":"src/components/deploy/CredentialManager.tsx:702:13",className:"w-4 h-4 mr-1"}),"新增凭据"]})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:708:7",className:"flex items-center gap-3 flex-wrap",children:[e.jsxs(Ke,{"code-path":"src/components/deploy/CredentialManager.tsx:709:9",value:r,onValueChange:o,children:[e.jsx(De,{"code-path":"src/components/deploy/CredentialManager.tsx:710:11",className:"w-[140px] bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] h-9 text-sm",children:e.jsx(Ae,{"code-path":"src/components/deploy/CredentialManager.tsx:711:13",placeholder:"全部类型"})}),e.jsxs(Pe,{"code-path":"src/components/deploy/CredentialManager.tsx:713:11",children:[e.jsx(_,{"code-path":"src/components/deploy/CredentialManager.tsx:714:13",value:"all",children:"全部类型"}),F.map(([s,g])=>e.jsx(_,{"code-path":"src/components/deploy/CredentialManager.tsx:716:15",value:s,children:e.jsxs("span",{"code-path":"src/components/deploy/CredentialManager.tsx:717:17",className:"flex items-center gap-2",children:[e.jsx(g.icon,{"code-path":"src/components/deploy/CredentialManager.tsx:717:59",className:"h-3.5 w-3.5"}),g.label]})},s))]})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:722:9",className:"relative flex-1 max-w-xs",children:[e.jsx(rt,{"code-path":"src/components/deploy/CredentialManager.tsx:723:11",className:"absolute left-2.5 top-1/2 -translate-y-1/2 h-4 w-4 text-[var(--dg-text-muted)]"}),e.jsx(p,{"code-path":"src/components/deploy/CredentialManager.tsx:724:11",value:d,onChange:s=>i(s.target.value),placeholder:"搜索名称、描述...",className:"pl-8 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] h-9 text-sm"})]}),e.jsxs("span",{"code-path":"src/components/deploy/CredentialManager.tsx:728:9",className:"text-xs text-[var(--dg-text-muted)]",children:[M.length," 个凭据"]})]}),n?e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:732:9",className:"text-center py-16 text-[var(--dg-text-secondary)]",children:[e.jsx(ht,{"code-path":"src/components/deploy/CredentialManager.tsx:733:11",className:"w-6 h-6 animate-spin mx-auto mb-2 text-[var(--dg-blue)]"}),"加载中..."]}):M.length===0?e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:736:9",className:"text-center py-16 border border-dashed border-[var(--dg-border)] rounded-lg",children:[e.jsx(qe,{"code-path":"src/components/deploy/CredentialManager.tsx:737:11",className:"w-12 h-12 mx-auto mb-3 text-[var(--dg-text-muted)]"}),e.jsx("p",{"code-path":"src/components/deploy/CredentialManager.tsx:738:11",className:"text-[var(--dg-text-secondary)] mb-2",children:"暂无凭据"}),e.jsx("p",{"code-path":"src/components/deploy/CredentialManager.tsx:739:11",className:"text-xs text-[var(--dg-text-muted)] mb-4",children:"创建 SSH、Docker、AKSK 等类型的凭据,供流水线和服务器使用"}),e.jsxs(b,{"code-path":"src/components/deploy/CredentialManager.tsx:740:11",onClick:()=>{w(null),v(!0)},children:[e.jsx(Re,{"code-path":"src/components/deploy/CredentialManager.tsx:741:13",className:"w-4 h-4 mr-1"}),"创建第一个凭据"]})]}):e.jsx("div",{"code-path":"src/components/deploy/CredentialManager.tsx:745:9",className:"rounded-md border border-[var(--dg-border)] overflow-hidden",children:e.jsxs("table",{"code-path":"src/components/deploy/CredentialManager.tsx:746:11",className:"w-full text-sm",children:[e.jsx("thead",{"code-path":"src/components/deploy/CredentialManager.tsx:747:13",className:"bg-[var(--dg-bg-tertiary)] border-b border-[var(--dg-border)]",children:e.jsxs("tr",{"code-path":"src/components/deploy/CredentialManager.tsx:748:15",children:[e.jsx("th",{"code-path":"src/components/deploy/CredentialManager.tsx:749:17",className:"px-3 py-2.5 text-left font-medium text-[var(--dg-text-secondary)]",children:"名称"}),e.jsx("th",{"code-path":"src/components/deploy/CredentialManager.tsx:750:17",className:"px-3 py-2.5 text-left font-medium text-[var(--dg-text-secondary)]",children:"类型"}),e.jsx("th",{"code-path":"src/components/deploy/CredentialManager.tsx:751:17",className:"px-3 py-2.5 text-left font-medium text-[var(--dg-text-secondary)] hidden md:table-cell",children:"摘要"}),e.jsx("th",{"code-path":"src/components/deploy/CredentialManager.tsx:752:17",className:"px-3 py-2.5 text-left font-medium text-[var(--dg-text-secondary)] hidden lg:table-cell",children:"标签"}),e.jsx("th",{"code-path":"src/components/deploy/CredentialManager.tsx:753:17",className:"px-3 py-2.5 text-left font-medium text-[var(--dg-text-secondary)] hidden xl:table-cell",children:"引用ID"}),e.jsx("th",{"code-path":"src/components/deploy/CredentialManager.tsx:754:17",className:"px-3 py-2.5 text-left font-medium text-[var(--dg-text-secondary)]",children:"状态"}),e.jsx("th",{"code-path":"src/components/deploy/CredentialManager.tsx:755:17",className:"px-3 py-2.5 text-right font-medium text-[var(--dg-text-secondary)]",children:"操作"})]})}),e.jsx("tbody",{"code-path":"src/components/deploy/CredentialManager.tsx:758:13",children:M.map(s=>{const g=s.secret_type,P=O[g],H=s.expires_at&&new Date(s.expires_at){K(s.id),C(!0)},children:[e.jsx("td",{"code-path":"src/components/deploy/CredentialManager.tsx:767:21",className:"px-3 py-2.5",children:e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:768:23",className:"flex items-center gap-2",children:[P?e.jsx(P.icon,{"code-path":"src/components/deploy/CredentialManager.tsx:769:32",className:`h-4 w-4 ${P.color} shrink-0`}):e.jsx(V,{"code-path":"src/components/deploy/CredentialManager.tsx:769:91",className:"h-4 w-4 text-[var(--dg-text-muted)] shrink-0"}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:770:25",children:[e.jsx("div",{"code-path":"src/components/deploy/CredentialManager.tsx:771:27",className:"font-medium text-[var(--dg-text-primary)]",children:s.name}),s.variable_name&&e.jsx("div",{"code-path":"src/components/deploy/CredentialManager.tsx:773:29",className:"text-xs text-[var(--dg-text-muted)] font-mono",children:s.variable_name})]})]})}),e.jsx("td",{"code-path":"src/components/deploy/CredentialManager.tsx:778:21",className:"px-3 py-2.5",children:e.jsx(S,{"code-path":"src/components/deploy/CredentialManager.tsx:779:23",variant:"outline",className:`text-xs ${Xe[g]||""}`,children:P?.label||g})}),e.jsx("td",{"code-path":"src/components/deploy/CredentialManager.tsx:783:21",className:"px-3 py-2.5 text-[var(--dg-text-secondary)] text-xs hidden md:table-cell max-w-[180px] truncate font-mono",children:s.summary||"-"}),e.jsx("td",{"code-path":"src/components/deploy/CredentialManager.tsx:786:21",className:"px-3 py-2.5 hidden lg:table-cell",children:e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:787:23",className:"flex gap-1 flex-wrap",children:[(s.tags||[]).slice(0,3).map(N=>e.jsx(S,{"code-path":"src/components/deploy/CredentialManager.tsx:789:27",variant:"outline",className:"text-xs border-[var(--dg-border)] text-[var(--dg-text-muted)]",children:N},N)),(s.tags||[]).length>3&&e.jsxs("span",{"code-path":"src/components/deploy/CredentialManager.tsx:792:27",className:"text-xs text-[var(--dg-text-muted)]",children:["+",s.tags.length-3]})]})}),e.jsx("td",{"code-path":"src/components/deploy/CredentialManager.tsx:796:21",className:"px-3 py-2.5 hidden xl:table-cell",children:e.jsx("code",{"code-path":"src/components/deploy/CredentialManager.tsx:797:23",className:"text-xs text-[var(--dg-blue)] cursor-pointer font-mono",onClick:N=>{N.stopPropagation(),A(s.env_prefix)},children:s.env_prefix})}),e.jsx("td",{"code-path":"src/components/deploy/CredentialManager.tsx:802:21",className:"px-3 py-2.5",children:e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:803:23",className:"flex items-center gap-1",children:[s.is_active?e.jsx(S,{"code-path":"src/components/deploy/CredentialManager.tsx:805:27",className:"bg-green-500/20 text-green-400 text-xs border-0",children:"启用"}):e.jsx(S,{"code-path":"src/components/deploy/CredentialManager.tsx:807:27",className:"bg-red-500/20 text-red-400 text-xs border-0",children:"禁用"}),H&&e.jsxs(S,{"code-path":"src/components/deploy/CredentialManager.tsx:810:27",className:"bg-yellow-500/20 text-yellow-400 text-xs border-0",children:[e.jsx(pt,{"code-path":"src/components/deploy/CredentialManager.tsx:810:96",className:"h-2.5 w-2.5 mr-0.5"}),"过期"]})]})}),e.jsx("td",{"code-path":"src/components/deploy/CredentialManager.tsx:814:21",className:"px-3 py-2.5 text-right",onClick:N=>N.stopPropagation(),children:e.jsxs("div",{"code-path":"src/components/deploy/CredentialManager.tsx:815:23",className:"flex justify-end gap-1",children:[e.jsx(b,{"code-path":"src/components/deploy/CredentialManager.tsx:816:25",variant:"ghost",size:"icon",className:"h-7 w-7",onClick:()=>{w(s),v(!0)},title:"编辑",children:e.jsx(vt,{"code-path":"src/components/deploy/CredentialManager.tsx:818:27",className:"w-3.5 h-3.5"})}),e.jsx(b,{"code-path":"src/components/deploy/CredentialManager.tsx:820:25",variant:"ghost",size:"icon",className:"h-7 w-7",onClick:()=>L(s),title:s.is_active?"禁用":"启用",children:s.is_active?e.jsx(Ze,{"code-path":"src/components/deploy/CredentialManager.tsx:823:45",className:"w-3.5 h-3.5 text-yellow-500"}):e.jsx(We,{"code-path":"src/components/deploy/CredentialManager.tsx:823:99",className:"w-3.5 h-3.5 text-green-500"})}),e.jsx(b,{"code-path":"src/components/deploy/CredentialManager.tsx:825:25",variant:"ghost",size:"icon",className:"h-7 w-7 text-red-500",onClick:()=>D(s),title:"删除",children:e.jsx(Ct,{"code-path":"src/components/deploy/CredentialManager.tsx:827:27",className:"w-3.5 h-3.5"})})]})})]},s.id)})})]})}),e.jsx(bt,{"code-path":"src/components/deploy/CredentialManager.tsx:839:7",open:T,onClose:()=>v(!1),onSaved:m,editData:E}),e.jsx(ut,{"code-path":"src/components/deploy/CredentialManager.tsx:840:7",open:x,onClose:()=>C(!1),credId:c})]})}export{Lt as default}; diff --git a/backend/static/assets/CronJobManager-BMfKpm0z.js b/backend/static/assets/CronJobManager-BMfKpm0z.js deleted file mode 100644 index 992250c..0000000 --- a/backend/static/assets/CronJobManager-BMfKpm0z.js +++ /dev/null @@ -1,2 +0,0 @@ -import{j as t,L,a3 as mt,r as n,D as K,b as U,c as W,d as Y,e as Z,I as $,f as xt,B as p,H as tt,a as pt,S as ht,x as gt,F as ut}from"./index-DfyorCky.js";import{C as w,a as S}from"./card-C55cvSHg.js";import{B as C}from"./badge-xNW8x0G1.js";import{C as B}from"./checkbox-CH0bpj6b.js";import{t as d}from"./index-a3ybMjbR.js";import{s as z,c as y,t as bt}from"./automation-mtL167W_.js";import{C as vt}from"./circle-x-DK79Dhg2.js";import{S as O,a as R,b as A,c as V,d as N}from"./select-D5qUzdAs.js";import{T as Q}from"./textarea-NXY8u32k.js";import{L as J}from"./label-BK0h2apY.js";import{T as yt,a as Ct,b as I,c as E,d as jt,e as f}from"./table-5sHV4Akp.js";import{H as ot}from"./history-D_9jPUQg.js";import{R as Nt}from"./refresh-cw-DUB_tAG-.js";import{P as Jt}from"./plus-CUG-9kpu.js";import{T as q}from"./trash-2-Dx32pOzT.js";import{P as ft}from"./package-open-CUXo2Tda.js";import{P as X}from"./play-cdPayOtJ.js";import{P as Dt}from"./pause-D_famo9P.js";import{S as Mt}from"./square-pen-BxUFAe0F.js";import"./index-CWVNW_qu.js";function et(i){switch(i){case"success":return t.jsxs(C,{"code-path":"src/components/automation/cronJobHelpers.tsx:9:9",variant:"outline",className:"border-emerald-500/30 text-emerald-400 bg-emerald-500/10",children:[t.jsx(mt,{"code-path":"src/components/automation/cronJobHelpers.tsx:10:11",className:"h-3 w-3 mr-1"}),"成功"]});case"failed":return t.jsxs(C,{"code-path":"src/components/automation/cronJobHelpers.tsx:16:9",variant:"outline",className:"border-red-500/30 text-red-400 bg-red-500/10",children:[t.jsx(vt,{"code-path":"src/components/automation/cronJobHelpers.tsx:17:11",className:"h-3 w-3 mr-1"}),"失败"]});case"running":return t.jsxs(C,{"code-path":"src/components/automation/cronJobHelpers.tsx:23:9",variant:"outline",className:"border-blue-500/30 text-blue-400 bg-blue-500/10 animate-pulse",children:[t.jsx(L,{"code-path":"src/components/automation/cronJobHelpers.tsx:24:11",className:"h-3 w-3 mr-1 animate-spin"}),"执行中"]});default:return t.jsx(C,{"code-path":"src/components/automation/cronJobHelpers.tsx:30:9",variant:"outline",className:"border-[var(--dg-border)] text-[var(--dg-text-muted)]",children:"从未执行"})}}function Ft(i){return{"0 2 * * *":"每天 02:00","0 3 * * 0":"每周日 03:00","*/5 * * * *":"每 5 分钟","0 * * * *":"每小时","0 9 * * 1":"每周一 09:00"}[i]||i}const G=[{value:"shell",label:"Shell 脚本",desc:"关联脚本库中的 Shell 脚本"},{value:"python",label:"Python 脚本",desc:"关联脚本库中的 Python 脚本"},{value:"command",label:"自定义命令",desc:"手动输入命令或脚本路径"}];function wt({open:i,onOpenChange:g,editJob:s,onSuccess:D}){const[a,l]=n.useState({name:"",description:"",cron_expr:"",type:"shell",content:"",script_id:null}),[h,v]=n.useState([]),[r,m]=n.useState(null),[H,M]=n.useState(!1);n.useEffect(()=>{i&&(z.getScripts({page_size:200}).then(e=>{v(e?.list||[])}).catch(()=>v([])),s?(l({name:s.name||"",description:s.description||"",cron_expr:s.cron_expr||"",type:s.type||"shell",content:s.content||"",script_id:s.script_id||null}),s.script_id?z.getScript(s.script_id).then(e=>{m(e)}).catch(()=>m(null)):m(null)):(l({name:"",description:"",cron_expr:"",type:"shell",content:"",script_id:null}),m(null)))},[i,s]);const F=a.type==="shell"||a.type==="python"?h.filter(e=>e.type===a.type):[],_=e=>{const x=h.find(j=>String(j.id)===e);x&&(m(x),l(j=>({...j,script_id:x.id,content:x.content})))},P=e=>{l(x=>({...x,type:e,script_id:null,content:e==="command"?x.content:""})),m(null)},k=async()=>{if(!a.name||!a.cron_expr){d.error("请填写任务名称和 Cron 表达式");return}if((a.type==="shell"||a.type==="python")&&!a.script_id){d.error("请选择关联的脚本");return}try{M(!0);const e={name:a.name,description:a.description,cron_expr:a.cron_expr,type:a.type,content:a.content,script_id:a.script_id};s?(await y.updateJob(s.id,e),d.success("任务更新成功")):(await y.createJob(e),d.success("任务创建成功")),g(!1),D()}catch(e){console.error("Failed to save cron job:",e),d.error(s?"更新失败":"创建失败")}finally{M(!1)}};return t.jsx(K,{"code-path":"src/components/automation/CronJobFormDialog.tsx:149:5",open:i,onOpenChange:g,children:t.jsxs(U,{"code-path":"src/components/automation/CronJobFormDialog.tsx:150:7",className:"max-w-2xl bg-[var(--dg-bg-primary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]",children:[t.jsxs(W,{"code-path":"src/components/automation/CronJobFormDialog.tsx:151:9",children:[t.jsx(Y,{"code-path":"src/components/automation/CronJobFormDialog.tsx:152:11",children:s?"编辑定时任务":"新建定时任务"}),t.jsx(Z,{"code-path":"src/components/automation/CronJobFormDialog.tsx:153:11",className:"text-[var(--dg-text-secondary)]",children:"配置 Cron 定时任务"})]}),t.jsxs("div",{"code-path":"src/components/automation/CronJobFormDialog.tsx:155:9",className:"space-y-4 py-4 max-h-[60vh] overflow-y-auto pr-1",children:[t.jsxs("div",{"code-path":"src/components/automation/CronJobFormDialog.tsx:157:11",children:[t.jsx(J,{"code-path":"src/components/automation/CronJobFormDialog.tsx:158:13",className:"text-[var(--dg-text-primary)]",children:"任务名称"}),t.jsx($,{"code-path":"src/components/automation/CronJobFormDialog.tsx:159:13",value:a.name,onChange:e=>l({...a,name:e.target.value}),placeholder:"例如: 数据库备份",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] mt-1"})]}),t.jsxs("div",{"code-path":"src/components/automation/CronJobFormDialog.tsx:168:11",children:[t.jsx(J,{"code-path":"src/components/automation/CronJobFormDialog.tsx:169:13",className:"text-[var(--dg-text-primary)]",children:"描述"}),t.jsx(Q,{"code-path":"src/components/automation/CronJobFormDialog.tsx:170:13",value:a.description,onChange:e=>l({...a,description:e.target.value}),placeholder:"任务描述...",rows:2,className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] mt-1"})]}),t.jsxs("div",{"code-path":"src/components/automation/CronJobFormDialog.tsx:180:11",children:[t.jsx(J,{"code-path":"src/components/automation/CronJobFormDialog.tsx:181:13",className:"text-[var(--dg-text-primary)]",children:"Cron 表达式"}),t.jsxs("div",{"code-path":"src/components/automation/CronJobFormDialog.tsx:182:13",className:"flex gap-2",children:[t.jsx($,{"code-path":"src/components/automation/CronJobFormDialog.tsx:183:15",value:a.cron_expr,onChange:e=>l({...a,cron_expr:e.target.value}),placeholder:"0 2 * * *",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] mt-1"}),t.jsxs(O,{"code-path":"src/components/automation/CronJobFormDialog.tsx:189:15",onValueChange:e=>l({...a,cron_expr:e}),children:[t.jsx(R,{"code-path":"src/components/automation/CronJobFormDialog.tsx:190:17",className:"w-48 bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] mt-1",children:t.jsx(A,{"code-path":"src/components/automation/CronJobFormDialog.tsx:191:19",placeholder:"快速选择"})}),t.jsxs(V,{"code-path":"src/components/automation/CronJobFormDialog.tsx:193:17",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:[t.jsx(N,{"code-path":"src/components/automation/CronJobFormDialog.tsx:194:19",value:"*/5 * * * *",className:"text-[var(--dg-text-primary)]",children:"每 5 分钟"}),t.jsx(N,{"code-path":"src/components/automation/CronJobFormDialog.tsx:195:19",value:"0 * * * *",className:"text-[var(--dg-text-primary)]",children:"每小时"}),t.jsx(N,{"code-path":"src/components/automation/CronJobFormDialog.tsx:196:19",value:"0 2 * * *",className:"text-[var(--dg-text-primary)]",children:"每天 02:00"}),t.jsx(N,{"code-path":"src/components/automation/CronJobFormDialog.tsx:197:19",value:"0 3 * * 0",className:"text-[var(--dg-text-primary)]",children:"每周日 03:00"}),t.jsx(N,{"code-path":"src/components/automation/CronJobFormDialog.tsx:198:19",value:"0 9 * * 1",className:"text-[var(--dg-text-primary)]",children:"每周一 09:00"})]})]})]}),t.jsx("p",{"code-path":"src/components/automation/CronJobFormDialog.tsx:202:13",className:"text-xs text-[var(--dg-text-muted)] mt-1",children:"格式: 分 时 日 月 周"})]}),t.jsxs("div",{"code-path":"src/components/automation/CronJobFormDialog.tsx:206:11",children:[t.jsx(J,{"code-path":"src/components/automation/CronJobFormDialog.tsx:207:13",className:"text-[var(--dg-text-primary)]",children:"执行类型"}),t.jsx("div",{"code-path":"src/components/automation/CronJobFormDialog.tsx:208:13",className:"grid grid-cols-3 gap-2 mt-1",children:G.map(e=>t.jsx("button",{"code-path":"src/components/automation/CronJobFormDialog.tsx:210:17",type:"button",onClick:()=>P(e.value),className:`px-3 py-2 rounded-md border text-sm transition-colors text-left ${a.type===e.value?"border-[var(--dg-blue)] bg-[var(--dg-blue)]/10 text-[var(--dg-blue)]":"border-[var(--dg-border)] text-[var(--dg-text-secondary)] hover:bg-[var(--dg-bg-hover)]"}`,children:t.jsx("div",{"code-path":"src/components/automation/CronJobFormDialog.tsx:220:19",className:"font-medium",children:e.label})},e.value))}),t.jsx("p",{"code-path":"src/components/automation/CronJobFormDialog.tsx:224:13",className:"text-xs text-[var(--dg-text-muted)] mt-1",children:G.find(e=>e.value===a.type)?.desc})]}),a.type==="shell"||a.type==="python"?t.jsxs("div",{"code-path":"src/components/automation/CronJobFormDialog.tsx:231:13",className:"space-y-3",children:[t.jsxs("div",{"code-path":"src/components/automation/CronJobFormDialog.tsx:232:15",children:[t.jsxs(J,{"code-path":"src/components/automation/CronJobFormDialog.tsx:233:17",className:"text-[var(--dg-text-primary)]",children:["选择脚本 ",t.jsx("span",{"code-path":"src/components/automation/CronJobFormDialog.tsx:234:24",className:"text-red-400",children:"*"})]}),F.length===0?t.jsxs("div",{"code-path":"src/components/automation/CronJobFormDialog.tsx:237:19",className:"mt-1 px-3 py-4 rounded-md border border-dashed border-[var(--dg-border)] text-center",children:[t.jsxs("p",{"code-path":"src/components/automation/CronJobFormDialog.tsx:238:21",className:"text-sm text-[var(--dg-text-muted)]",children:["脚本库中没有 ",a.type==="shell"?"Shell":"Python"," 脚本"]}),t.jsxs("p",{"code-path":"src/components/automation/CronJobFormDialog.tsx:241:21",className:"text-xs text-[var(--dg-text-muted)] mt-1",children:["请先到「脚本库」创建 ",a.type==="shell"?"Shell":"Python"," 脚本"]})]}):t.jsxs(O,{"code-path":"src/components/automation/CronJobFormDialog.tsx:246:19",value:a.script_id?String(a.script_id):"",onValueChange:_,children:[t.jsx(R,{"code-path":"src/components/automation/CronJobFormDialog.tsx:250:21",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] mt-1",children:t.jsx(A,{"code-path":"src/components/automation/CronJobFormDialog.tsx:251:23",placeholder:"选择脚本库中的脚本..."})}),t.jsx(V,{"code-path":"src/components/automation/CronJobFormDialog.tsx:253:21",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:F.map(e=>t.jsxs(N,{"code-path":"src/components/automation/CronJobFormDialog.tsx:255:25",value:String(e.id),className:"text-[var(--dg-text-primary)]",children:[e.name,e.description?` — ${e.description}`:""]},e.id))})]})]}),r&&t.jsxs("div",{"code-path":"src/components/automation/CronJobFormDialog.tsx:266:17",children:[t.jsxs("div",{"code-path":"src/components/automation/CronJobFormDialog.tsx:267:19",className:"flex items-center gap-2 mb-1",children:[t.jsx(C,{"code-path":"src/components/automation/CronJobFormDialog.tsx:268:21",variant:"outline",className:"border-[var(--dg-border)] text-[var(--dg-text-muted)]",children:r.type==="shell"?"Shell":"Python"}),t.jsxs("span",{"code-path":"src/components/automation/CronJobFormDialog.tsx:271:21",className:"text-xs text-[var(--dg-text-muted)]",children:[(r.content||"").split(` -`).length," 行"]})]}),t.jsx("pre",{"code-path":"src/components/automation/CronJobFormDialog.tsx:275:19",className:"max-h-48 overflow-auto rounded-md bg-[var(--dg-bg-tertiary)] border border-[var(--dg-border)] p-3 text-xs font-mono text-[var(--dg-text-secondary)] whitespace-pre-wrap break-all",children:r.content||"(空脚本)"})]})]}):t.jsxs("div",{"code-path":"src/components/automation/CronJobFormDialog.tsx:282:13",children:[t.jsx(J,{"code-path":"src/components/automation/CronJobFormDialog.tsx:283:15",className:"text-[var(--dg-text-primary)]",children:"执行命令"}),t.jsx(Q,{"code-path":"src/components/automation/CronJobFormDialog.tsx:284:15",value:a.content,onChange:e=>l({...a,content:e.target.value}),placeholder:"/scripts/backup.sh arg1 arg2",rows:4,className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] mt-1 font-mono"})]})]}),t.jsxs(xt,{"code-path":"src/components/automation/CronJobFormDialog.tsx:294:9",children:[t.jsx(p,{"code-path":"src/components/automation/CronJobFormDialog.tsx:295:11",variant:"outline",onClick:()=>g(!1),className:"border-[var(--dg-border)] text-[var(--dg-text-secondary)]",children:"取消"}),t.jsx(p,{"code-path":"src/components/automation/CronJobFormDialog.tsx:298:11",className:"bg-blue-600 hover:bg-blue-700",onClick:k,disabled:H,children:H?"保存中...":s?"保存修改":"创建任务"})]})]})})}function St({open:i,onOpenChange:g}){const[s,D]=n.useState([]),[a,l]=n.useState(!1),[h,v]=n.useState(null);return n.useEffect(()=>{if(!i)return;(async()=>{try{l(!0);const m=await bt.getExecutions({task_type:"cron",page_size:50});D(m.list||[])}catch(m){console.error("Failed to load executions:",m)}finally{l(!1)}})()},[i]),t.jsx(K,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:51:5",open:i,onOpenChange:g,children:t.jsxs(U,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:52:7",className:"max-w-4xl bg-[var(--dg-bg-primary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] max-h-[85vh] overflow-y-auto",children:[t.jsxs(W,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:53:9",children:[t.jsx(Y,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:54:11",children:"执行历史"}),t.jsx(Z,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:55:11",className:"text-[var(--dg-text-secondary)]",children:"定时任务执行记录与输出日志"})]}),t.jsx("div",{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:57:9",className:"mt-4",children:a?t.jsx("div",{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:59:13",className:"flex items-center justify-center py-8",children:t.jsx(L,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:60:15",className:"h-6 w-6 text-[var(--dg-text-secondary)] animate-spin"})}):s.length===0?t.jsxs("div",{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:63:13",className:"flex flex-col items-center justify-center py-12 text-[var(--dg-text-secondary)]",children:[t.jsx(ot,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:64:15",className:"h-10 w-10 mb-3 opacity-40"}),t.jsx("p",{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:65:15",className:"text-sm",children:"暂无执行记录"})]}):t.jsxs(yt,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:68:13",children:[t.jsx(Ct,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:69:15",children:t.jsxs(I,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:70:17",className:"border-[var(--dg-border)]",children:[t.jsx(E,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:71:19",className:"text-[var(--dg-text-secondary)]",children:"任务"}),t.jsx(E,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:72:19",className:"text-[var(--dg-text-secondary)]",children:"状态"}),t.jsx(E,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:73:19",className:"text-[var(--dg-text-secondary)]",children:"耗时"}),t.jsx(E,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:74:19",className:"text-[var(--dg-text-secondary)]",children:"执行时间"}),t.jsx(E,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:75:19",className:"text-[var(--dg-text-secondary)]",children:"输出"})]})}),t.jsx(jt,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:78:15",children:s.map(r=>t.jsxs(n.Fragment,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:80:19",children:[t.jsxs(I,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:81:21",className:"border-[var(--dg-border)] cursor-pointer hover:bg-[var(--dg-bg-hover)]/50",onClick:()=>v(h===r.id?null:r.id),children:[t.jsx(f,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:82:23",className:"text-[var(--dg-text-primary)]",children:r.task_name}),t.jsx(f,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:83:23",children:et(r.status)}),t.jsx(f,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:84:23",className:"text-[var(--dg-text-secondary)]",children:r.duration?`${r.duration}ms`:"--"}),t.jsx(f,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:85:23",className:"text-[var(--dg-text-secondary)]",children:r.started_at?new Date(r.started_at).toLocaleString():"--"}),t.jsx(f,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:88:23",className:"text-[var(--dg-text-secondary)]",children:r.output?t.jsxs("span",{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:90:27",className:"text-blue-400 text-xs flex items-center gap-1",children:[t.jsx(tt,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:91:29",className:"h-3 w-3"}),h===r.id?"收起":"查看"]}):"--"})]}),h===r.id&&r.output&&t.jsx(I,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:100:23",className:"border-[var(--dg-border)]",children:t.jsx(f,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:101:25",colSpan:5,className:"bg-[var(--dg-bg-tertiary)] p-0",children:t.jsx("pre",{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:102:27",className:"p-4 text-xs text-[var(--dg-text-primary)] font-mono whitespace-pre-wrap max-h-64 overflow-y-auto",children:r.output})})},`${r.id}-out`)]},r.id))})]})})]})})}function Ut(){const[i,g]=n.useState(""),[s,D]=n.useState([]),[a,l]=n.useState(!0),[h,v]=n.useState(!1),[r,m]=n.useState(!1),[H,M]=n.useState(!1),[F,_]=n.useState(null),[P,k]=n.useState(null),[e,x]=n.useState([]),j=pt(),at=()=>{k(null),m(!0)},st=o=>{k(o),m(!0)},u=n.useCallback(async()=>{v(!0);try{const o=await y.getJobs();D(o.list||[])}catch(o){console.error("Failed to load cron jobs:",o),d.error("加载失败")}finally{v(!1),l(!1)}},[]);n.useEffect(()=>{u()},[u]);const b=s.filter(o=>(o.name||"").toLowerCase().includes(i.toLowerCase())||(o.description||"").toLowerCase().includes(i.toLowerCase())),rt=async o=>{try{await y.toggleJob(o),d.success("状态已切换"),u()}catch(c){console.error("Failed to toggle job:",c),d.error("操作失败")}},nt=async o=>{_(o);try{const c=await y.executeJob(o);(c?.status||"success")==="success"?d.success("执行成功",{description:`耗时 ${c?.duration||0}ms`}):d.error("执行失败",{description:(c?.output||"").slice(0,100)}),u()}catch(c){console.error("Failed to execute job:",c),d.error("执行失败")}finally{_(null)}},ct=async o=>{if(await j({title:"删除定时任务",description:`确定删除「${o.name}」吗?此操作不可恢复。`,variant:"destructive"}))try{await y.deleteJob(o.id),d.success("任务已删除"),u()}catch(T){console.error("Failed to delete job:",T),d.error("删除失败")}},it=o=>{x(c=>c.includes(o)?c.filter(T=>T!==o):[...c,o])},dt=()=>{e.length===b.length&&b.length>0?x([]):x(b.map(o=>o.id))},lt=async()=>{if(!(e.length===0||!await j({title:"批量删除定时任务",description:`确定删除选中的 ${e.length} 个任务吗?此操作不可恢复。`,confirmText:"批量删除",variant:"destructive"})))try{await y.batchDelete(e),d.success(`已删除 ${e.length} 个任务`),x([]),u()}catch(c){console.error("Failed to batch delete jobs:",c),d.error("批量删除失败")}};return t.jsxs("div",{"code-path":"src/components/automation/CronJobManager.tsx:164:5",className:"space-y-6",children:[t.jsxs("div",{"code-path":"src/components/automation/CronJobManager.tsx:166:7",className:"flex items-center justify-between",children:[t.jsxs("div",{"code-path":"src/components/automation/CronJobManager.tsx:167:9",children:[t.jsx("h1",{"code-path":"src/components/automation/CronJobManager.tsx:168:11",className:"text-2xl font-bold text-[var(--dg-text-primary)]",children:"定时任务"}),t.jsx("p",{"code-path":"src/components/automation/CronJobManager.tsx:169:11",className:"text-sm text-[var(--dg-text-secondary)] mt-1",children:"Cron 任务管理与执行"})]}),t.jsxs("div",{"code-path":"src/components/automation/CronJobManager.tsx:171:9",className:"flex items-center gap-2",children:[t.jsxs(p,{"code-path":"src/components/automation/CronJobManager.tsx:172:11",variant:"outline",className:"border-[var(--dg-border)] text-[var(--dg-text-secondary)]",onClick:()=>M(!0),children:[t.jsx(ot,{"code-path":"src/components/automation/CronJobManager.tsx:177:13",className:"h-4 w-4 mr-2"}),"执行历史"]}),t.jsxs(p,{"code-path":"src/components/automation/CronJobManager.tsx:180:11",variant:"outline",className:"border-[var(--dg-border)] text-[var(--dg-text-secondary)]",onClick:()=>u(),disabled:h,children:[t.jsx(Nt,{"code-path":"src/components/automation/CronJobManager.tsx:186:13",className:`h-4 w-4 mr-2 ${h?"animate-spin":""}`}),"刷新"]}),t.jsxs(p,{"code-path":"src/components/automation/CronJobManager.tsx:189:11",className:"bg-blue-600 hover:bg-blue-700",onClick:at,children:[t.jsx(Jt,{"code-path":"src/components/automation/CronJobManager.tsx:190:13",className:"h-4 w-4 mr-2"}),"新建任务"]})]})]}),t.jsxs("div",{"code-path":"src/components/automation/CronJobManager.tsx:197:7",className:"grid grid-cols-4 gap-4",children:[t.jsx(w,{"code-path":"src/components/automation/CronJobManager.tsx:198:9",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:t.jsxs(S,{"code-path":"src/components/automation/CronJobManager.tsx:199:11",className:"p-4",children:[t.jsx("p",{"code-path":"src/components/automation/CronJobManager.tsx:200:13",className:"text-[var(--dg-text-secondary)] text-sm",children:"任务总数"}),t.jsx("p",{"code-path":"src/components/automation/CronJobManager.tsx:201:13",className:"text-2xl font-bold text-[var(--dg-text-primary)]",children:s.length})]})}),t.jsx(w,{"code-path":"src/components/automation/CronJobManager.tsx:204:9",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:t.jsxs(S,{"code-path":"src/components/automation/CronJobManager.tsx:205:11",className:"p-4",children:[t.jsx("p",{"code-path":"src/components/automation/CronJobManager.tsx:206:13",className:"text-[var(--dg-text-secondary)] text-sm",children:"已启用"}),t.jsx("p",{"code-path":"src/components/automation/CronJobManager.tsx:207:13",className:"text-2xl font-bold text-emerald-400",children:s.filter(o=>o.enabled).length})]})}),t.jsx(w,{"code-path":"src/components/automation/CronJobManager.tsx:212:9",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:t.jsxs(S,{"code-path":"src/components/automation/CronJobManager.tsx:213:11",className:"p-4",children:[t.jsx("p",{"code-path":"src/components/automation/CronJobManager.tsx:214:13",className:"text-[var(--dg-text-secondary)] text-sm",children:"累计成功"}),t.jsx("p",{"code-path":"src/components/automation/CronJobManager.tsx:215:13",className:"text-2xl font-bold text-emerald-400",children:s.reduce((o,c)=>o+(c.success_count||0),0)})]})}),t.jsx(w,{"code-path":"src/components/automation/CronJobManager.tsx:220:9",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:t.jsxs(S,{"code-path":"src/components/automation/CronJobManager.tsx:221:11",className:"p-4",children:[t.jsx("p",{"code-path":"src/components/automation/CronJobManager.tsx:222:13",className:"text-[var(--dg-text-secondary)] text-sm",children:"累计失败"}),t.jsx("p",{"code-path":"src/components/automation/CronJobManager.tsx:223:13",className:"text-2xl font-bold text-red-400",children:s.reduce((o,c)=>o+(c.fail_count||0),0)})]})})]}),t.jsxs("div",{"code-path":"src/components/automation/CronJobManager.tsx:231:7",className:"flex items-center justify-between flex-wrap gap-4",children:[t.jsxs("div",{"code-path":"src/components/automation/CronJobManager.tsx:232:9",className:"flex items-center gap-3 flex-wrap",children:[t.jsxs("div",{"code-path":"src/components/automation/CronJobManager.tsx:233:11",className:"relative flex-1 max-w-md",children:[t.jsx(ht,{"code-path":"src/components/automation/CronJobManager.tsx:234:13",className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-[var(--dg-text-secondary)]"}),t.jsx($,{"code-path":"src/components/automation/CronJobManager.tsx:235:13",placeholder:"搜索任务...",value:i,onChange:o=>g(o.target.value),className:"pl-10 bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),b.length>0&&t.jsxs("label",{"code-path":"src/components/automation/CronJobManager.tsx:243:13",className:"flex items-center gap-2 text-sm text-[var(--dg-text-secondary)] cursor-pointer select-none",children:[t.jsx(B,{"code-path":"src/components/automation/CronJobManager.tsx:244:15",checked:e.length===b.length&&b.length>0,onCheckedChange:dt,className:"border-[var(--dg-border)]"}),"全选"]})]}),e.length>0&&t.jsxs("div",{"code-path":"src/components/automation/CronJobManager.tsx:256:11",className:"flex items-center gap-2",children:[t.jsxs("span",{"code-path":"src/components/automation/CronJobManager.tsx:257:13",className:"text-sm text-[var(--dg-text-secondary)]",children:["已选择 ",e.length," 项"]}),t.jsxs(p,{"code-path":"src/components/automation/CronJobManager.tsx:258:13",variant:"outline",size:"sm",className:"border-red-500/30 text-red-400 hover:bg-red-500/10",onClick:lt,children:[t.jsx(q,{"code-path":"src/components/automation/CronJobManager.tsx:264:15",className:"h-4 w-4 mr-2"}),"批量删除"]})]})]}),a?t.jsx("div",{"code-path":"src/components/automation/CronJobManager.tsx:272:9",className:"flex items-center justify-center py-12",children:t.jsx(L,{"code-path":"src/components/automation/CronJobManager.tsx:273:11",className:"h-6 w-6 text-[var(--dg-text-secondary)] animate-spin"})}):b.length===0?t.jsxs("div",{"code-path":"src/components/automation/CronJobManager.tsx:276:9",className:"flex flex-col items-center justify-center py-16 text-[var(--dg-text-secondary)]",children:[t.jsx(ft,{"code-path":"src/components/automation/CronJobManager.tsx:277:11",className:"h-12 w-12 mb-3 opacity-40"}),t.jsx("p",{"code-path":"src/components/automation/CronJobManager.tsx:278:11",className:"text-sm",children:"暂无定时任务"})]}):null,t.jsx("div",{"code-path":"src/components/automation/CronJobManager.tsx:283:7",className:"space-y-3",children:b.map(o=>t.jsx(w,{"code-path":"src/components/automation/CronJobManager.tsx:285:11",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:t.jsx(S,{"code-path":"src/components/automation/CronJobManager.tsx:286:13",className:"p-4",children:t.jsxs("div",{"code-path":"src/components/automation/CronJobManager.tsx:287:15",className:"flex items-start justify-between gap-3",children:[t.jsx("div",{"code-path":"src/components/automation/CronJobManager.tsx:288:17",className:"flex items-center pt-1",children:t.jsx(B,{"code-path":"src/components/automation/CronJobManager.tsx:289:19",checked:e.includes(o.id),onCheckedChange:()=>it(o.id),className:"border-[var(--dg-border)]"})}),t.jsxs("div",{"code-path":"src/components/automation/CronJobManager.tsx:295:17",className:"flex-1 min-w-0",children:[t.jsxs("div",{"code-path":"src/components/automation/CronJobManager.tsx:296:19",className:"flex items-center gap-3 flex-wrap",children:[t.jsx("h3",{"code-path":"src/components/automation/CronJobManager.tsx:297:21",className:"font-medium text-[var(--dg-text-primary)]",children:o.name}),t.jsx(C,{"code-path":"src/components/automation/CronJobManager.tsx:298:21",variant:"outline",className:o.enabled?"border-emerald-500/30 text-emerald-400 bg-emerald-500/10":"border-[var(--dg-border)] text-[var(--dg-text-muted)]",children:o.enabled?"已启用":"已禁用"}),et(o.last_status),t.jsx(C,{"code-path":"src/components/automation/CronJobManager.tsx:309:21",variant:"outline",className:"border-[var(--dg-border)] text-[var(--dg-text-secondary)]",children:o.type==="shell"?"Shell":o.type==="python"?"Python":"命令"})]}),t.jsx("p",{"code-path":"src/components/automation/CronJobManager.tsx:313:19",className:"text-sm text-[var(--dg-text-secondary)] mt-1",children:o.description||"—"}),t.jsxs("div",{"code-path":"src/components/automation/CronJobManager.tsx:314:19",className:"flex items-center gap-4 mt-2 text-sm",children:[t.jsxs("span",{"code-path":"src/components/automation/CronJobManager.tsx:315:21",className:"flex items-center gap-1 text-[var(--dg-text-secondary)]",children:[t.jsx(gt,{"code-path":"src/components/automation/CronJobManager.tsx:316:23",className:"h-3 w-3"}),Ft(o.cron_expr)]}),(o.type==="shell"||o.type==="python")&&o.script?.name?t.jsxs("span",{"code-path":"src/components/automation/CronJobManager.tsx:320:23",className:"flex items-center gap-1 text-[var(--dg-text-secondary)]",children:[t.jsx(ut,{"code-path":"src/components/automation/CronJobManager.tsx:321:25",className:"h-3 w-3"}),t.jsx("span",{"code-path":"src/components/automation/CronJobManager.tsx:322:25",className:"text-xs",children:o.script.name})]}):o.content&&t.jsxs("span",{"code-path":"src/components/automation/CronJobManager.tsx:325:23",className:"flex items-center gap-1 text-[var(--dg-text-secondary)]",children:[t.jsx(tt,{"code-path":"src/components/automation/CronJobManager.tsx:326:25",className:"h-3 w-3"}),t.jsx("code",{"code-path":"src/components/automation/CronJobManager.tsx:327:25",className:"text-xs bg-[var(--dg-bg-tertiary)] px-2 py-0.5 rounded truncate max-w-xs",children:o.content})]})]}),t.jsxs("div",{"code-path":"src/components/automation/CronJobManager.tsx:333:19",className:"flex items-center gap-4 mt-2 text-xs text-[var(--dg-text-muted)]",children:[t.jsxs("span",{"code-path":"src/components/automation/CronJobManager.tsx:334:21",children:["上次执行: ",o.last_run_at?new Date(o.last_run_at).toLocaleString():"--"]}),t.jsxs("span",{"code-path":"src/components/automation/CronJobManager.tsx:335:21",children:["成功: ",o.success_count||0," / 失败: ",o.fail_count||0]}),t.jsxs("span",{"code-path":"src/components/automation/CronJobManager.tsx:336:21",children:["累计: ",o.run_count||0," 次"]})]})]}),t.jsxs("div",{"code-path":"src/components/automation/CronJobManager.tsx:340:17",className:"flex items-center gap-2 shrink-0",children:[t.jsxs(p,{"code-path":"src/components/automation/CronJobManager.tsx:341:19",variant:"outline",size:"sm",className:"border-emerald-600 text-emerald-400 hover:bg-emerald-600/20",disabled:F===o.id,onClick:()=>nt(o.id),children:[F===o.id?t.jsx(L,{"code-path":"src/components/automation/CronJobManager.tsx:349:23",className:"h-4 w-4 mr-1 animate-spin"}):t.jsx(X,{"code-path":"src/components/automation/CronJobManager.tsx:351:23",className:"h-4 w-4 mr-1"}),"立即执行"]}),t.jsx(p,{"code-path":"src/components/automation/CronJobManager.tsx:355:19",variant:"ghost",size:"icon",className:"h-8 w-8 text-[var(--dg-text-secondary)] hover:text-blue-400",title:o.enabled?"禁用":"启用",onClick:()=>rt(o.id),children:o.enabled?t.jsx(Dt,{"code-path":"src/components/automation/CronJobManager.tsx:362:36",className:"h-4 w-4"}):t.jsx(X,{"code-path":"src/components/automation/CronJobManager.tsx:362:68",className:"h-4 w-4"})}),t.jsx(p,{"code-path":"src/components/automation/CronJobManager.tsx:364:19",variant:"ghost",size:"icon",className:"h-8 w-8 text-[var(--dg-text-secondary)] hover:text-blue-400",title:"编辑",onClick:()=>st(o),children:t.jsx(Mt,{"code-path":"src/components/automation/CronJobManager.tsx:371:21",className:"h-4 w-4"})}),t.jsx(p,{"code-path":"src/components/automation/CronJobManager.tsx:373:19",variant:"ghost",size:"icon",className:"h-8 w-8 text-[var(--dg-text-secondary)] hover:text-red-400",title:"删除",onClick:()=>ct(o),children:t.jsx(q,{"code-path":"src/components/automation/CronJobManager.tsx:380:21",className:"h-4 w-4"})})]})]})})},o.id))}),t.jsx(wt,{"code-path":"src/components/automation/CronJobManager.tsx:390:7",open:r,onOpenChange:m,editJob:P,onSuccess:u}),t.jsx(St,{"code-path":"src/components/automation/CronJobManager.tsx:398:7",open:H,onOpenChange:M})]})}export{Ut as CronJobManager}; diff --git a/backend/static/assets/CronJobManager-I_oMSm5O.js b/backend/static/assets/CronJobManager-I_oMSm5O.js new file mode 100644 index 0000000..fdc0367 --- /dev/null +++ b/backend/static/assets/CronJobManager-I_oMSm5O.js @@ -0,0 +1,2 @@ +import{j as t,L as k,P as lt,r as n,D as X,a as G,b as K,c as U,d as W,e as mt,B as p,E as Y,f as dt,C as xt,F as pt}from"./index-Dmami9WE.js";import{C as ht,a as gt}from"./card-CIfC-8Rh.js";import{S as ut}from"./stat-strip-BteRU1Iu.js";import{I as L}from"./input-NsU9nXZF.js";import{B as C}from"./badge-3UzCvU7L.js";import{C as I}from"./checkbox-DoAtRzQj.js";import{t as l}from"./index-BuEnLCjT.js";import{s as $,c as y,t as bt}from"./automation-WG-s4QEv.js";import{C as vt}from"./circle-x-BBQeW1R3.js";import{S as B,a as z,b as O,c as R,d as J}from"./select-DUbxjT0z.js";import{T as A}from"./textarea-DHUZ6N85.js";import{L as N}from"./label-Ap_-SPYI.js";import{T as yt,a as Ct,b as P,c as w,d as jt,e as f}from"./table-CG4mjNfb.js";import{H as Z}from"./history-CbX6uocL.js";import{R as Jt}from"./refresh-cw-CTBERyFc.js";import{P as Nt}from"./plus-O65gX7Qz.js";import{S as ft}from"./search-Dd-PeBfg.js";import{T as V}from"./trash-2-DWVnIU6o.js";import{P as Dt}from"./package-open-Bj2Cp1LK.js";import{P as Q}from"./play-0EwQQJX_.js";import{P as Ft}from"./pause-DOhduDQ5.js";import{S as Mt}from"./square-pen-B3dPIBrm.js";import"./index-CtCQcvyh.js";import"./chevron-up-Cq4GPopa.js";function tt(i){switch(i){case"success":return t.jsxs(C,{"code-path":"src/components/automation/cronJobHelpers.tsx:9:9",variant:"outline",className:"border-emerald-500/30 text-emerald-400 bg-emerald-500/10",children:[t.jsx(lt,{"code-path":"src/components/automation/cronJobHelpers.tsx:10:11",className:"h-3 w-3 mr-1"}),"成功"]});case"failed":return t.jsxs(C,{"code-path":"src/components/automation/cronJobHelpers.tsx:16:9",variant:"outline",className:"border-red-500/30 text-red-400 bg-red-500/10",children:[t.jsx(vt,{"code-path":"src/components/automation/cronJobHelpers.tsx:17:11",className:"h-3 w-3 mr-1"}),"失败"]});case"running":return t.jsxs(C,{"code-path":"src/components/automation/cronJobHelpers.tsx:23:9",variant:"outline",className:"border-blue-500/30 text-blue-400 bg-blue-500/10 animate-pulse",children:[t.jsx(k,{"code-path":"src/components/automation/cronJobHelpers.tsx:24:11",className:"h-3 w-3 mr-1 animate-spin"}),"执行中"]});default:return t.jsx(C,{"code-path":"src/components/automation/cronJobHelpers.tsx:30:9",variant:"outline",className:"border-[var(--dg-border)] text-[var(--dg-text-muted)]",children:"从未执行"})}}function wt(i){return{"0 2 * * *":"每天 02:00","0 3 * * 0":"每周日 03:00","*/5 * * * *":"每 5 分钟","0 * * * *":"每小时","0 9 * * 1":"每周一 09:00"}[i]||i}const q=[{value:"shell",label:"Shell 脚本",desc:"关联脚本库中的 Shell 脚本"},{value:"python",label:"Python 脚本",desc:"关联脚本库中的 Python 脚本"},{value:"command",label:"自定义命令",desc:"手动输入命令或脚本路径"}];function St({open:i,onOpenChange:g,editJob:s,onSuccess:D}){const[a,m]=n.useState({name:"",description:"",cron_expr:"",type:"shell",content:"",script_id:null}),[h,v]=n.useState([]),[r,d]=n.useState(null),[S,F]=n.useState(!1);n.useEffect(()=>{i&&($.getScripts({page_size:200}).then(e=>{v(e?.list||[])}).catch(()=>v([])),s?(m({name:s.name||"",description:s.description||"",cron_expr:s.cron_expr||"",type:s.type||"shell",content:s.content||"",script_id:s.script_id||null}),s.script_id?$.getScript(s.script_id).then(e=>{d(e)}).catch(()=>d(null)):d(null)):(m({name:"",description:"",cron_expr:"",type:"shell",content:"",script_id:null}),d(null)))},[i,s]);const M=a.type==="shell"||a.type==="python"?h.filter(e=>e.type===a.type):[],E=e=>{const x=h.find(j=>String(j.id)===e);x&&(d(x),m(j=>({...j,script_id:x.id,content:x.content})))},T=e=>{m(x=>({...x,type:e,script_id:null,content:e==="command"?x.content:""})),d(null)},H=async()=>{if(!a.name||!a.cron_expr){l.error("请填写任务名称和 Cron 表达式");return}if((a.type==="shell"||a.type==="python")&&!a.script_id){l.error("请选择关联的脚本");return}try{F(!0);const e={name:a.name,description:a.description,cron_expr:a.cron_expr,type:a.type,content:a.content,script_id:a.script_id};s?(await y.updateJob(s.id,e),l.success("任务更新成功")):(await y.createJob(e),l.success("任务创建成功")),g(!1),D()}catch(e){console.error("Failed to save cron job:",e),l.error(s?"更新失败":"创建失败")}finally{F(!1)}};return t.jsx(X,{"code-path":"src/components/automation/CronJobFormDialog.tsx:149:5",open:i,onOpenChange:g,children:t.jsxs(G,{"code-path":"src/components/automation/CronJobFormDialog.tsx:150:7",className:"max-w-2xl bg-[var(--dg-bg-primary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]",children:[t.jsxs(K,{"code-path":"src/components/automation/CronJobFormDialog.tsx:151:9",children:[t.jsx(U,{"code-path":"src/components/automation/CronJobFormDialog.tsx:152:11",children:s?"编辑定时任务":"新建定时任务"}),t.jsx(W,{"code-path":"src/components/automation/CronJobFormDialog.tsx:153:11",className:"text-[var(--dg-text-secondary)]",children:"配置 Cron 定时任务"})]}),t.jsxs("div",{"code-path":"src/components/automation/CronJobFormDialog.tsx:155:9",className:"space-y-4 py-4 max-h-[60vh] overflow-y-auto pr-1",children:[t.jsxs("div",{"code-path":"src/components/automation/CronJobFormDialog.tsx:157:11",children:[t.jsx(N,{"code-path":"src/components/automation/CronJobFormDialog.tsx:158:13",className:"text-[var(--dg-text-primary)]",children:"任务名称"}),t.jsx(L,{"code-path":"src/components/automation/CronJobFormDialog.tsx:159:13",value:a.name,onChange:e=>m({...a,name:e.target.value}),placeholder:"例如: 数据库备份",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] mt-1"})]}),t.jsxs("div",{"code-path":"src/components/automation/CronJobFormDialog.tsx:168:11",children:[t.jsx(N,{"code-path":"src/components/automation/CronJobFormDialog.tsx:169:13",className:"text-[var(--dg-text-primary)]",children:"描述"}),t.jsx(A,{"code-path":"src/components/automation/CronJobFormDialog.tsx:170:13",value:a.description,onChange:e=>m({...a,description:e.target.value}),placeholder:"任务描述...",rows:2,className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] mt-1"})]}),t.jsxs("div",{"code-path":"src/components/automation/CronJobFormDialog.tsx:180:11",children:[t.jsx(N,{"code-path":"src/components/automation/CronJobFormDialog.tsx:181:13",className:"text-[var(--dg-text-primary)]",children:"Cron 表达式"}),t.jsxs("div",{"code-path":"src/components/automation/CronJobFormDialog.tsx:182:13",className:"flex gap-2",children:[t.jsx(L,{"code-path":"src/components/automation/CronJobFormDialog.tsx:183:15",value:a.cron_expr,onChange:e=>m({...a,cron_expr:e.target.value}),placeholder:"0 2 * * *",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] mt-1"}),t.jsxs(B,{"code-path":"src/components/automation/CronJobFormDialog.tsx:189:15",onValueChange:e=>m({...a,cron_expr:e}),children:[t.jsx(z,{"code-path":"src/components/automation/CronJobFormDialog.tsx:190:17",className:"w-48 bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] mt-1",children:t.jsx(O,{"code-path":"src/components/automation/CronJobFormDialog.tsx:191:19",placeholder:"快速选择"})}),t.jsxs(R,{"code-path":"src/components/automation/CronJobFormDialog.tsx:193:17",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:[t.jsx(J,{"code-path":"src/components/automation/CronJobFormDialog.tsx:194:19",value:"*/5 * * * *",className:"text-[var(--dg-text-primary)]",children:"每 5 分钟"}),t.jsx(J,{"code-path":"src/components/automation/CronJobFormDialog.tsx:195:19",value:"0 * * * *",className:"text-[var(--dg-text-primary)]",children:"每小时"}),t.jsx(J,{"code-path":"src/components/automation/CronJobFormDialog.tsx:196:19",value:"0 2 * * *",className:"text-[var(--dg-text-primary)]",children:"每天 02:00"}),t.jsx(J,{"code-path":"src/components/automation/CronJobFormDialog.tsx:197:19",value:"0 3 * * 0",className:"text-[var(--dg-text-primary)]",children:"每周日 03:00"}),t.jsx(J,{"code-path":"src/components/automation/CronJobFormDialog.tsx:198:19",value:"0 9 * * 1",className:"text-[var(--dg-text-primary)]",children:"每周一 09:00"})]})]})]}),t.jsx("p",{"code-path":"src/components/automation/CronJobFormDialog.tsx:202:13",className:"text-xs text-[var(--dg-text-muted)] mt-1",children:"格式: 分 时 日 月 周"})]}),t.jsxs("div",{"code-path":"src/components/automation/CronJobFormDialog.tsx:206:11",children:[t.jsx(N,{"code-path":"src/components/automation/CronJobFormDialog.tsx:207:13",className:"text-[var(--dg-text-primary)]",children:"执行类型"}),t.jsx("div",{"code-path":"src/components/automation/CronJobFormDialog.tsx:208:13",className:"grid grid-cols-3 gap-2 mt-1",children:q.map(e=>t.jsx("button",{"code-path":"src/components/automation/CronJobFormDialog.tsx:210:17",type:"button",onClick:()=>T(e.value),className:`px-3 py-2 rounded-md border text-sm transition-colors text-left ${a.type===e.value?"border-[var(--dg-blue)] bg-[var(--dg-blue)]/10 text-[var(--dg-blue)]":"border-[var(--dg-border)] text-[var(--dg-text-secondary)] hover:bg-[var(--dg-bg-hover)]"}`,children:t.jsx("div",{"code-path":"src/components/automation/CronJobFormDialog.tsx:220:19",className:"font-medium",children:e.label})},e.value))}),t.jsx("p",{"code-path":"src/components/automation/CronJobFormDialog.tsx:224:13",className:"text-xs text-[var(--dg-text-muted)] mt-1",children:q.find(e=>e.value===a.type)?.desc})]}),a.type==="shell"||a.type==="python"?t.jsxs("div",{"code-path":"src/components/automation/CronJobFormDialog.tsx:231:13",className:"space-y-3",children:[t.jsxs("div",{"code-path":"src/components/automation/CronJobFormDialog.tsx:232:15",children:[t.jsxs(N,{"code-path":"src/components/automation/CronJobFormDialog.tsx:233:17",className:"text-[var(--dg-text-primary)]",children:["选择脚本 ",t.jsx("span",{"code-path":"src/components/automation/CronJobFormDialog.tsx:234:24",className:"text-red-400",children:"*"})]}),M.length===0?t.jsxs("div",{"code-path":"src/components/automation/CronJobFormDialog.tsx:237:19",className:"mt-1 px-3 py-4 rounded-md border border-dashed border-[var(--dg-border)] text-center",children:[t.jsxs("p",{"code-path":"src/components/automation/CronJobFormDialog.tsx:238:21",className:"text-sm text-[var(--dg-text-muted)]",children:["脚本库中没有 ",a.type==="shell"?"Shell":"Python"," 脚本"]}),t.jsxs("p",{"code-path":"src/components/automation/CronJobFormDialog.tsx:241:21",className:"text-xs text-[var(--dg-text-muted)] mt-1",children:["请先到「脚本库」创建 ",a.type==="shell"?"Shell":"Python"," 脚本"]})]}):t.jsxs(B,{"code-path":"src/components/automation/CronJobFormDialog.tsx:246:19",value:a.script_id?String(a.script_id):"",onValueChange:E,children:[t.jsx(z,{"code-path":"src/components/automation/CronJobFormDialog.tsx:250:21",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] mt-1",children:t.jsx(O,{"code-path":"src/components/automation/CronJobFormDialog.tsx:251:23",placeholder:"选择脚本库中的脚本..."})}),t.jsx(R,{"code-path":"src/components/automation/CronJobFormDialog.tsx:253:21",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:M.map(e=>t.jsxs(J,{"code-path":"src/components/automation/CronJobFormDialog.tsx:255:25",value:String(e.id),className:"text-[var(--dg-text-primary)]",children:[e.name,e.description?` — ${e.description}`:""]},e.id))})]})]}),r&&t.jsxs("div",{"code-path":"src/components/automation/CronJobFormDialog.tsx:266:17",children:[t.jsxs("div",{"code-path":"src/components/automation/CronJobFormDialog.tsx:267:19",className:"flex items-center gap-2 mb-1",children:[t.jsx(C,{"code-path":"src/components/automation/CronJobFormDialog.tsx:268:21",variant:"outline",className:"border-[var(--dg-border)] text-[var(--dg-text-muted)]",children:r.type==="shell"?"Shell":"Python"}),t.jsxs("span",{"code-path":"src/components/automation/CronJobFormDialog.tsx:271:21",className:"text-xs text-[var(--dg-text-muted)]",children:[(r.content||"").split(` +`).length," 行"]})]}),t.jsx("pre",{"code-path":"src/components/automation/CronJobFormDialog.tsx:275:19",className:"max-h-48 overflow-auto rounded-md bg-[var(--dg-bg-tertiary)] border border-[var(--dg-border)] p-3 text-xs font-mono text-[var(--dg-text-secondary)] whitespace-pre-wrap break-all",children:r.content||"(空脚本)"})]})]}):t.jsxs("div",{"code-path":"src/components/automation/CronJobFormDialog.tsx:282:13",children:[t.jsx(N,{"code-path":"src/components/automation/CronJobFormDialog.tsx:283:15",className:"text-[var(--dg-text-primary)]",children:"执行命令"}),t.jsx(A,{"code-path":"src/components/automation/CronJobFormDialog.tsx:284:15",value:a.content,onChange:e=>m({...a,content:e.target.value}),placeholder:"/scripts/backup.sh arg1 arg2",rows:4,className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] mt-1 font-mono"})]})]}),t.jsxs(mt,{"code-path":"src/components/automation/CronJobFormDialog.tsx:294:9",children:[t.jsx(p,{"code-path":"src/components/automation/CronJobFormDialog.tsx:295:11",variant:"outline",onClick:()=>g(!1),className:"border-[var(--dg-border)] text-[var(--dg-text-secondary)]",children:"取消"}),t.jsx(p,{"code-path":"src/components/automation/CronJobFormDialog.tsx:298:11",className:"bg-blue-600 hover:bg-blue-700",onClick:H,disabled:S,children:S?"保存中...":s?"保存修改":"创建任务"})]})]})})}function Et({open:i,onOpenChange:g}){const[s,D]=n.useState([]),[a,m]=n.useState(!1),[h,v]=n.useState(null);return n.useEffect(()=>{if(!i)return;(async()=>{try{m(!0);const d=await bt.getExecutions({task_type:"cron",page_size:50});D(d.list||[])}catch(d){console.error("Failed to load executions:",d)}finally{m(!1)}})()},[i]),t.jsx(X,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:51:5",open:i,onOpenChange:g,children:t.jsxs(G,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:52:7",className:"max-w-4xl bg-[var(--dg-bg-primary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] max-h-[85vh] overflow-y-auto",children:[t.jsxs(K,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:53:9",children:[t.jsx(U,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:54:11",children:"执行历史"}),t.jsx(W,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:55:11",className:"text-[var(--dg-text-secondary)]",children:"定时任务执行记录与输出日志"})]}),t.jsx("div",{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:57:9",className:"mt-4",children:a?t.jsx("div",{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:59:13",className:"flex items-center justify-center py-8",children:t.jsx(k,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:60:15",className:"h-6 w-6 text-[var(--dg-text-secondary)] animate-spin"})}):s.length===0?t.jsxs("div",{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:63:13",className:"flex flex-col items-center justify-center py-12 text-[var(--dg-text-secondary)]",children:[t.jsx(Z,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:64:15",className:"h-10 w-10 mb-3 opacity-40"}),t.jsx("p",{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:65:15",className:"text-sm",children:"暂无执行记录"})]}):t.jsxs(yt,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:68:13",children:[t.jsx(Ct,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:69:15",children:t.jsxs(P,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:70:17",className:"border-[var(--dg-border)]",children:[t.jsx(w,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:71:19",className:"text-[var(--dg-text-secondary)]",children:"任务"}),t.jsx(w,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:72:19",className:"text-[var(--dg-text-secondary)]",children:"状态"}),t.jsx(w,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:73:19",className:"text-[var(--dg-text-secondary)]",children:"耗时"}),t.jsx(w,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:74:19",className:"text-[var(--dg-text-secondary)]",children:"执行时间"}),t.jsx(w,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:75:19",className:"text-[var(--dg-text-secondary)]",children:"输出"})]})}),t.jsx(jt,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:78:15",children:s.map(r=>t.jsxs(n.Fragment,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:80:19",children:[t.jsxs(P,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:81:21",className:"border-[var(--dg-border)] cursor-pointer hover:bg-[var(--dg-bg-hover)]/50",onClick:()=>v(h===r.id?null:r.id),children:[t.jsx(f,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:82:23",className:"text-[var(--dg-text-primary)]",children:r.task_name}),t.jsx(f,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:83:23",children:tt(r.status)}),t.jsx(f,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:84:23",className:"text-[var(--dg-text-secondary)]",children:r.duration?`${r.duration}ms`:"--"}),t.jsx(f,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:85:23",className:"text-[var(--dg-text-secondary)]",children:r.started_at?new Date(r.started_at).toLocaleString():"--"}),t.jsx(f,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:88:23",className:"text-[var(--dg-text-secondary)]",children:r.output?t.jsxs("span",{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:90:27",className:"text-blue-400 text-xs flex items-center gap-1",children:[t.jsx(Y,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:91:29",className:"h-3 w-3"}),h===r.id?"收起":"查看"]}):"--"})]}),h===r.id&&r.output&&t.jsx(P,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:100:23",className:"border-[var(--dg-border)]",children:t.jsx(f,{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:101:25",colSpan:5,className:"bg-[var(--dg-bg-tertiary)] p-0",children:t.jsx("pre",{"code-path":"src/components/automation/ExecutionHistoryDialog.tsx:102:27",className:"p-4 text-xs text-[var(--dg-text-primary)] font-mono whitespace-pre-wrap max-h-64 overflow-y-auto",children:r.output})})},`${r.id}-out`)]},r.id))})]})})]})})}function oo(){const[i,g]=n.useState(""),[s,D]=n.useState([]),[a,m]=n.useState(!0),[h,v]=n.useState(!1),[r,d]=n.useState(!1),[S,F]=n.useState(!1),[M,E]=n.useState(null),[T,H]=n.useState(null),[e,x]=n.useState([]),j=dt(),ot=()=>{H(null),d(!0)},et=o=>{H(o),d(!0)},u=n.useCallback(async()=>{v(!0);try{const o=await y.getJobs();D(o.list||[])}catch(o){console.error("Failed to load cron jobs:",o),l.error("加载失败")}finally{v(!1),m(!1)}},[]);n.useEffect(()=>{u()},[u]);const b=s.filter(o=>(o.name||"").toLowerCase().includes(i.toLowerCase())||(o.description||"").toLowerCase().includes(i.toLowerCase())),at=async o=>{try{await y.toggleJob(o),l.success("状态已切换"),u()}catch(c){console.error("Failed to toggle job:",c),l.error("操作失败")}},st=async o=>{E(o);try{const c=await y.executeJob(o);(c?.status||"success")==="success"?l.success("执行成功",{description:`耗时 ${c?.duration||0}ms`}):l.error("执行失败",{description:(c?.output||"").slice(0,100)}),u()}catch(c){console.error("Failed to execute job:",c),l.error("执行失败")}finally{E(null)}},rt=async o=>{if(await j({title:"删除定时任务",description:`确定删除「${o.name}」吗?此操作不可恢复。`,variant:"destructive"}))try{await y.deleteJob(o.id),l.success("任务已删除"),u()}catch(_){console.error("Failed to delete job:",_),l.error("删除失败")}},nt=o=>{x(c=>c.includes(o)?c.filter(_=>_!==o):[...c,o])},ct=()=>{e.length===b.length&&b.length>0?x([]):x(b.map(o=>o.id))},it=async()=>{if(!(e.length===0||!await j({title:"批量删除定时任务",description:`确定删除选中的 ${e.length} 个任务吗?此操作不可恢复。`,confirmText:"批量删除",variant:"destructive"})))try{await y.batchDelete(e),l.success(`已删除 ${e.length} 个任务`),x([]),u()}catch(c){console.error("Failed to batch delete jobs:",c),l.error("批量删除失败")}};return t.jsxs("div",{"code-path":"src/components/automation/CronJobManager.tsx:165:5",className:"space-y-6",children:[t.jsxs("div",{"code-path":"src/components/automation/CronJobManager.tsx:167:7",className:"flex items-center justify-between",children:[t.jsxs("div",{"code-path":"src/components/automation/CronJobManager.tsx:168:9",children:[t.jsx("h1",{"code-path":"src/components/automation/CronJobManager.tsx:169:11",className:"text-2xl font-bold text-[var(--dg-text-primary)]",children:"定时任务"}),t.jsx("p",{"code-path":"src/components/automation/CronJobManager.tsx:170:11",className:"text-sm text-[var(--dg-text-secondary)] mt-1",children:"Cron 任务管理与执行"})]}),t.jsxs("div",{"code-path":"src/components/automation/CronJobManager.tsx:172:9",className:"flex items-center gap-2",children:[t.jsxs(p,{"code-path":"src/components/automation/CronJobManager.tsx:173:11",variant:"outline",className:"border-[var(--dg-border)] text-[var(--dg-text-secondary)]",onClick:()=>F(!0),children:[t.jsx(Z,{"code-path":"src/components/automation/CronJobManager.tsx:178:13",className:"h-4 w-4 mr-2"}),"执行历史"]}),t.jsxs(p,{"code-path":"src/components/automation/CronJobManager.tsx:181:11",variant:"outline",className:"border-[var(--dg-border)] text-[var(--dg-text-secondary)]",onClick:()=>u(),disabled:h,children:[t.jsx(Jt,{"code-path":"src/components/automation/CronJobManager.tsx:187:13",className:`h-4 w-4 mr-2 ${h?"animate-spin":""}`}),"刷新"]}),t.jsxs(p,{"code-path":"src/components/automation/CronJobManager.tsx:190:11",className:"bg-blue-600 hover:bg-blue-700",onClick:ot,children:[t.jsx(Nt,{"code-path":"src/components/automation/CronJobManager.tsx:191:13",className:"h-4 w-4 mr-2"}),"新建任务"]})]})]}),t.jsx(ut,{"code-path":"src/components/automation/CronJobManager.tsx:198:7",items:[{label:"任务总数",value:s.length,color:"blue"},{label:"已启用",value:s.filter(o=>o.enabled).length,color:"emerald"},{label:"累计成功",value:s.reduce((o,c)=>o+(c.success_count||0),0),color:"emerald"},{label:"累计失败",value:s.reduce((o,c)=>o+(c.fail_count||0),0),color:"red"}]}),t.jsxs("div",{"code-path":"src/components/automation/CronJobManager.tsx:208:7",className:"flex items-center justify-between flex-wrap gap-4",children:[t.jsxs("div",{"code-path":"src/components/automation/CronJobManager.tsx:209:9",className:"flex items-center gap-3 flex-wrap",children:[t.jsxs("div",{"code-path":"src/components/automation/CronJobManager.tsx:210:11",className:"relative flex-1 max-w-md",children:[t.jsx(ft,{"code-path":"src/components/automation/CronJobManager.tsx:211:13",className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-[var(--dg-text-secondary)]"}),t.jsx(L,{"code-path":"src/components/automation/CronJobManager.tsx:212:13",placeholder:"搜索任务...",value:i,onChange:o=>g(o.target.value),className:"pl-10 bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),b.length>0&&t.jsxs("label",{"code-path":"src/components/automation/CronJobManager.tsx:220:13",className:"flex items-center gap-2 text-sm text-[var(--dg-text-secondary)] cursor-pointer select-none",children:[t.jsx(I,{"code-path":"src/components/automation/CronJobManager.tsx:221:15",checked:e.length===b.length&&b.length>0,onCheckedChange:ct,className:"border-[var(--dg-border)]"}),"全选"]})]}),e.length>0&&t.jsxs("div",{"code-path":"src/components/automation/CronJobManager.tsx:233:11",className:"flex items-center gap-2",children:[t.jsxs("span",{"code-path":"src/components/automation/CronJobManager.tsx:234:13",className:"text-sm text-[var(--dg-text-secondary)]",children:["已选择 ",e.length," 项"]}),t.jsxs(p,{"code-path":"src/components/automation/CronJobManager.tsx:235:13",variant:"outline",size:"sm",className:"border-red-500/30 text-red-400 hover:bg-red-500/10",onClick:it,children:[t.jsx(V,{"code-path":"src/components/automation/CronJobManager.tsx:241:15",className:"h-4 w-4 mr-2"}),"批量删除"]})]})]}),a?t.jsx("div",{"code-path":"src/components/automation/CronJobManager.tsx:249:9",className:"flex items-center justify-center py-12",children:t.jsx(k,{"code-path":"src/components/automation/CronJobManager.tsx:250:11",className:"h-6 w-6 text-[var(--dg-text-secondary)] animate-spin"})}):b.length===0?t.jsxs("div",{"code-path":"src/components/automation/CronJobManager.tsx:253:9",className:"flex flex-col items-center justify-center py-16 text-[var(--dg-text-secondary)]",children:[t.jsx(Dt,{"code-path":"src/components/automation/CronJobManager.tsx:254:11",className:"h-12 w-12 mb-3 opacity-40"}),t.jsx("p",{"code-path":"src/components/automation/CronJobManager.tsx:255:11",className:"text-sm",children:"暂无定时任务"})]}):null,t.jsx("div",{"code-path":"src/components/automation/CronJobManager.tsx:260:7",className:"space-y-3",children:b.map(o=>t.jsx(ht,{"code-path":"src/components/automation/CronJobManager.tsx:262:11",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:t.jsx(gt,{"code-path":"src/components/automation/CronJobManager.tsx:263:13",className:"p-4",children:t.jsxs("div",{"code-path":"src/components/automation/CronJobManager.tsx:264:15",className:"flex items-start justify-between gap-3",children:[t.jsx("div",{"code-path":"src/components/automation/CronJobManager.tsx:265:17",className:"flex items-center pt-1",children:t.jsx(I,{"code-path":"src/components/automation/CronJobManager.tsx:266:19",checked:e.includes(o.id),onCheckedChange:()=>nt(o.id),className:"border-[var(--dg-border)]"})}),t.jsxs("div",{"code-path":"src/components/automation/CronJobManager.tsx:272:17",className:"flex-1 min-w-0",children:[t.jsxs("div",{"code-path":"src/components/automation/CronJobManager.tsx:273:19",className:"flex items-center gap-3 flex-wrap",children:[t.jsx("h3",{"code-path":"src/components/automation/CronJobManager.tsx:274:21",className:"font-medium text-[var(--dg-text-primary)]",children:o.name}),t.jsx(C,{"code-path":"src/components/automation/CronJobManager.tsx:275:21",variant:"outline",className:o.enabled?"border-emerald-500/30 text-emerald-400 bg-emerald-500/10":"border-[var(--dg-border)] text-[var(--dg-text-muted)]",children:o.enabled?"已启用":"已禁用"}),tt(o.last_status),t.jsx(C,{"code-path":"src/components/automation/CronJobManager.tsx:286:21",variant:"outline",className:"border-[var(--dg-border)] text-[var(--dg-text-secondary)]",children:o.type==="shell"?"Shell":o.type==="python"?"Python":"命令"})]}),t.jsx("p",{"code-path":"src/components/automation/CronJobManager.tsx:290:19",className:"text-sm text-[var(--dg-text-secondary)] mt-1",children:o.description||"—"}),t.jsxs("div",{"code-path":"src/components/automation/CronJobManager.tsx:291:19",className:"flex items-center gap-4 mt-2 text-sm",children:[t.jsxs("span",{"code-path":"src/components/automation/CronJobManager.tsx:292:21",className:"flex items-center gap-1 text-[var(--dg-text-secondary)]",children:[t.jsx(xt,{"code-path":"src/components/automation/CronJobManager.tsx:293:23",className:"h-3 w-3"}),wt(o.cron_expr)]}),(o.type==="shell"||o.type==="python")&&o.script?.name?t.jsxs("span",{"code-path":"src/components/automation/CronJobManager.tsx:297:23",className:"flex items-center gap-1 text-[var(--dg-text-secondary)]",children:[t.jsx(pt,{"code-path":"src/components/automation/CronJobManager.tsx:298:25",className:"h-3 w-3"}),t.jsx("span",{"code-path":"src/components/automation/CronJobManager.tsx:299:25",className:"text-xs",children:o.script.name})]}):o.content&&t.jsxs("span",{"code-path":"src/components/automation/CronJobManager.tsx:302:23",className:"flex items-center gap-1 text-[var(--dg-text-secondary)]",children:[t.jsx(Y,{"code-path":"src/components/automation/CronJobManager.tsx:303:25",className:"h-3 w-3"}),t.jsx("code",{"code-path":"src/components/automation/CronJobManager.tsx:304:25",className:"text-xs bg-[var(--dg-bg-tertiary)] px-2 py-0.5 rounded truncate max-w-xs",children:o.content})]})]}),t.jsxs("div",{"code-path":"src/components/automation/CronJobManager.tsx:310:19",className:"flex items-center gap-4 mt-2 text-xs text-[var(--dg-text-muted)]",children:[t.jsxs("span",{"code-path":"src/components/automation/CronJobManager.tsx:311:21",children:["上次执行: ",o.last_run_at?new Date(o.last_run_at).toLocaleString():"--"]}),t.jsxs("span",{"code-path":"src/components/automation/CronJobManager.tsx:312:21",children:["成功: ",o.success_count||0," / 失败: ",o.fail_count||0]}),t.jsxs("span",{"code-path":"src/components/automation/CronJobManager.tsx:313:21",children:["累计: ",o.run_count||0," 次"]})]})]}),t.jsxs("div",{"code-path":"src/components/automation/CronJobManager.tsx:317:17",className:"flex items-center gap-2 shrink-0",children:[t.jsxs(p,{"code-path":"src/components/automation/CronJobManager.tsx:318:19",variant:"outline",size:"sm",className:"border-emerald-600 text-emerald-400 hover:bg-emerald-600/20",disabled:M===o.id,onClick:()=>st(o.id),children:[M===o.id?t.jsx(k,{"code-path":"src/components/automation/CronJobManager.tsx:326:23",className:"h-4 w-4 mr-1 animate-spin"}):t.jsx(Q,{"code-path":"src/components/automation/CronJobManager.tsx:328:23",className:"h-4 w-4 mr-1"}),"立即执行"]}),t.jsx(p,{"code-path":"src/components/automation/CronJobManager.tsx:332:19",variant:"ghost",size:"icon",className:"h-8 w-8 text-[var(--dg-text-secondary)] hover:text-blue-400",title:o.enabled?"禁用":"启用",onClick:()=>at(o.id),children:o.enabled?t.jsx(Ft,{"code-path":"src/components/automation/CronJobManager.tsx:339:36",className:"h-4 w-4"}):t.jsx(Q,{"code-path":"src/components/automation/CronJobManager.tsx:339:68",className:"h-4 w-4"})}),t.jsx(p,{"code-path":"src/components/automation/CronJobManager.tsx:341:19",variant:"ghost",size:"icon",className:"h-8 w-8 text-[var(--dg-text-secondary)] hover:text-blue-400",title:"编辑",onClick:()=>et(o),children:t.jsx(Mt,{"code-path":"src/components/automation/CronJobManager.tsx:348:21",className:"h-4 w-4"})}),t.jsx(p,{"code-path":"src/components/automation/CronJobManager.tsx:350:19",variant:"ghost",size:"icon",className:"h-8 w-8 text-[var(--dg-text-secondary)] hover:text-red-400",title:"删除",onClick:()=>rt(o),children:t.jsx(V,{"code-path":"src/components/automation/CronJobManager.tsx:357:21",className:"h-4 w-4"})})]})]})})},o.id))}),t.jsx(St,{"code-path":"src/components/automation/CronJobManager.tsx:367:7",open:r,onOpenChange:d,editJob:T,onSuccess:u}),t.jsx(Et,{"code-path":"src/components/automation/CronJobManager.tsx:375:7",open:S,onOpenChange:F})]})}export{oo as CronJobManager}; diff --git a/backend/static/assets/Dashboard-BQNyHaTP.js b/backend/static/assets/Dashboard-BQNyHaTP.js new file mode 100644 index 0000000..5e4c911 --- /dev/null +++ b/backend/static/assets/Dashboard-BQNyHaTP.js @@ -0,0 +1,4 @@ +import{a7 as B,a3 as m,aT as tt,r as A,j as s,p as at,A as Dt,a0 as u,z as Nt,m as ie,B as se,a5 as st,T as rt,t as $e,al as Fe,S as ot,s as Me,C as Ct}from"./index-Dmami9WE.js";import{d as he}from"./dashboard-BHNKEvkq.js";import{s as kt}from"./server-3HmnhxQB.js";import{k as Rt}from"./kubernetes-D2-GnE0t.js";import{S as At}from"./stat-strip-BteRU1Iu.js";import{C as K,b as U,c as z,d as V,a as W}from"./card-CIfC-8Rh.js";import{B as L}from"./badge-3UzCvU7L.js";import{H as wt}from"./hard-drive-DmC04Y5r.js";import{b as C,r as nt,s as St,t as ct,v as Ot,n as X,w as Ee,x as I,L as T,y as dt,z as Te,E as it,D as Pt,c as _t,e as ae,o as J,S as Et,A as Tt,F as Lt,d as Be,j as It,i as Q,l as $t,u as Ft,G as Mt,H as me,I as Bt,a as lt,J as Kt,K as pe,M as Ke,g as Ut,N as zt,R as Re,C as ht,X as pt,Y as mt,T as Ae,B as Vt}from"./generateCategoricalChart-ZqCvxO-S.js";import{A as Wt,a as Ne}from"./AreaChart-CrvX3B0s.js";import{B as qt}from"./BarChart-CLIO1OEu.js";import{M as Ht}from"./memory-stick-DvAvWvue.js";import{A as le}from"./arrow-right-CkKR0P0R.js";import{C as Gt}from"./circle-CGbaa1m0.js";var Zt=["points","className","baseLinePoints","connectNulls"];function ee(){return ee=Object.assign?Object.assign.bind():function(t){for(var a=1;a=0)&&Object.prototype.propertyIsEnumerable.call(t,e)&&(r[e]=t[e])}return r}function Yt(t,a){if(t==null)return{};var r={};for(var e in t)if(Object.prototype.hasOwnProperty.call(t,e)){if(a.indexOf(e)>=0)continue;r[e]=t[e]}return r}function Ue(t){return ta(t)||ea(t)||Qt(t)||Jt()}function Jt(){throw new TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Qt(t,a){if(t){if(typeof t=="string")return we(t,a);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set")return Array.from(t);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return we(t,a)}}function ea(t){if(typeof Symbol<"u"&&t[Symbol.iterator]!=null||t["@@iterator"]!=null)return Array.from(t)}function ta(t){if(Array.isArray(t))return we(t)}function we(t,a){(a==null||a>t.length)&&(a=t.length);for(var r=0,e=new Array(a);r0&&arguments[0]!==void 0?arguments[0]:[],r=[[]];return a.forEach(function(e){ze(e)?r[r.length-1].push(e):r[r.length-1].length>0&&r.push([])}),ze(a[0])&&r[r.length-1].push(a[0]),r[r.length-1].length<=0&&(r=r.slice(0,-1)),r},ce=function(a,r){var e=aa(a);r&&(e=[e.reduce(function(n,c){return[].concat(Ue(n),Ue(c))},[])]);var o=e.map(function(n){return n.reduce(function(c,d,l){return"".concat(c).concat(l===0?"M":"L").concat(d.x,",").concat(d.y)},"")}).join("");return e.length===1?"".concat(o,"Z"):o},sa=function(a,r,e){var o=ce(a,e);return"".concat(o.slice(-1)==="Z"?o.slice(0,-1):o,"L").concat(ce(r.reverse(),e).slice(1))},ra=function(a){var r=a.points,e=a.className,o=a.baseLinePoints,n=a.connectNulls,c=Xt(a,Zt);if(!r||!r.length)return null;var d=B("recharts-polygon",e);if(o&&o.length){var l=c.stroke&&c.stroke!=="none",i=sa(r,o,n);return m.createElement("g",{className:d},m.createElement("path",ee({},C(c,!0),{fill:i.slice(-1)==="Z"?c.fill:"none",stroke:"none",d:i})),l?m.createElement("path",ee({},C(c,!0),{fill:"none",d:ce(r,n)})):null,l?m.createElement("path",ee({},C(c,!0),{fill:"none",d:ce(o,n)})):null)}var p=ce(r,n);return m.createElement("path",ee({},C(c,!0),{fill:p.slice(-1)==="Z"?c.fill:"none",className:d,d:p}))},Ce,Ve;function oa(){if(Ve)return Ce;Ve=1;var t=nt(),a=St(),r=ct();function e(o,n){return o&&o.length?t(o,r(n,2),a):void 0}return Ce=e,Ce}var na=oa();const ca=tt(na);var ke,We;function da(){if(We)return ke;We=1;var t=nt(),a=ct(),r=Ot();function e(o,n){return o&&o.length?t(o,a(n,2),r):void 0}return ke=e,ke}var ia=da();const la=tt(ia);var ha=["cx","cy","angle","ticks","axisLine"],pa=["ticks","tick","angle","tickFormatter","stroke"];function re(t){"@babel/helpers - typeof";return re=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(a){return typeof a}:function(a){return a&&typeof Symbol=="function"&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},re(t)}function de(){return de=Object.assign?Object.assign.bind():function(t){for(var a=1;a=0)&&Object.prototype.propertyIsEnumerable.call(t,e)&&(r[e]=t[e])}return r}function ma(t,a){if(t==null)return{};var r={};for(var e in t)if(Object.prototype.hasOwnProperty.call(t,e)){if(a.indexOf(e)>=0)continue;r[e]=t[e]}return r}function ua(t,a){if(!(t instanceof a))throw new TypeError("Cannot call a class as a function")}function Ge(t,a){for(var r=0;rYe?c=o==="outer"?"start":"end":n<-Ye?c=o==="outer"?"end":"start":c="middle",c}},{key:"renderAxisLine",value:function(){var e=this.props,o=e.cx,n=e.cy,c=e.radius,d=e.axisLine,l=e.axisLineType,i=Z(Z({},C(this.props,!1)),{},{fill:"none"},C(d,!1));if(l==="circle")return m.createElement(Pt,Y({className:"recharts-polar-angle-axis-line"},i,{cx:o,cy:n,r:c}));var p=this.props.ticks,x=p.map(function(b){return I(o,n,c,b.coordinate)});return m.createElement(ra,Y({className:"recharts-polar-angle-axis-line"},i,{points:x}))}},{key:"renderTicks",value:function(){var e=this,o=this.props,n=o.ticks,c=o.tick,d=o.tickLine,l=o.tickFormatter,i=o.stroke,p=C(this.props,!1),x=C(c,!1),b=Z(Z({},p),{},{fill:"none"},C(d,!1)),N=n.map(function(f,h){var v=e.getTickLineCoord(f),y=e.getTickTextAnchor(f),j=Z(Z(Z({textAnchor:y},p),{},{stroke:"none",fill:i},x),{},{index:h,payload:f,x:v.x2,y:v.y2});return m.createElement(T,Y({className:B("recharts-polar-angle-axis-tick",dt(c)),key:"tick-".concat(f.coordinate)},Te(e.props,f,h)),d&&m.createElement("line",Y({className:"recharts-polar-angle-axis-tick-line"},b,v)),c&&a.renderTickItem(c,j,l?l(f.value,h):f.value))});return m.createElement(T,{className:"recharts-polar-angle-axis-ticks"},N)}},{key:"render",value:function(){var e=this.props,o=e.ticks,n=e.radius,c=e.axisLine;return n<=0||!o||!o.length?null:m.createElement(T,{className:B("recharts-polar-angle-axis",this.props.className)},c&&this.renderAxisLine(),this.renderTicks())}}],[{key:"renderTickItem",value:function(e,o,n){var c;return m.isValidElement(e)?c=m.cloneElement(e,o):X(e)?c=e(o):c=m.createElement(Ee,Y({},o,{className:"recharts-polar-angle-axis-tick-value"}),n),c}}])})(A.PureComponent);je(De,"displayName","PolarAngleAxis");je(De,"axisType","angleAxis");je(De,"defaultProps",{type:"category",angleAxisId:0,scale:"auto",cx:0,cy:0,orientation:"outer",axisLine:!0,tickLine:!0,tickSize:8,tick:!0,hide:!1,allowDuplicatedCategory:!0});var ue;function ne(t){"@babel/helpers - typeof";return ne=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(a){return typeof a}:function(a){return a&&typeof Symbol=="function"&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},ne(t)}function te(){return te=Object.assign?Object.assign.bind():function(t){for(var a=1;a0?Lt(k,"paddingAngle",0):0;if(w){var F=Be(w.endAngle-w.startAngle,k.endAngle-k.startAngle),D=g(g({},k),{},{startAngle:j+_,endAngle:j+F(h)+_});v.push(D),j=D.endAngle}else{var M=k.endAngle,O=k.startAngle,q=Be(0,M-O),H=q(h),E=g(g({},k),{},{startAngle:j+_,endAngle:j+H+_});v.push(E),j=E.endAngle}}),m.createElement(T,null,e.renderSectorsStatically(v))})}},{key:"attachKeyboardHandlers",value:function(e){var o=this;e.onkeydown=function(n){if(!n.altKey)switch(n.key){case"ArrowLeft":{var c=++o.state.sectorToFocus%o.sectorRefs.length;o.sectorRefs[c].focus(),o.setState({sectorToFocus:c});break}case"ArrowRight":{var d=--o.state.sectorToFocus<0?o.sectorRefs.length-1:o.state.sectorToFocus%o.sectorRefs.length;o.sectorRefs[d].focus(),o.setState({sectorToFocus:d});break}case"Escape":{o.sectorRefs[o.state.sectorToFocus].blur(),o.setState({sectorToFocus:0});break}}}}},{key:"renderSectors",value:function(){var e=this.props,o=e.sectors,n=e.isAnimationActive,c=this.state.prevSectors;return n&&o&&o.length&&(!c||!It(c,o))?this.renderSectorsWithAnimation():this.renderSectorsStatically(o)}},{key:"componentDidMount",value:function(){this.pieRef&&this.attachKeyboardHandlers(this.pieRef)}},{key:"render",value:function(){var e=this,o=this.props,n=o.hide,c=o.sectors,d=o.className,l=o.label,i=o.cx,p=o.cy,x=o.innerRadius,b=o.outerRadius,N=o.isAnimationActive,f=this.state.isAnimationFinished;if(n||!c||!c.length||!Q(i)||!Q(p)||!Q(x)||!Q(b))return null;var h=B("recharts-pie",d);return m.createElement(T,{tabIndex:this.props.rootTabIndex,className:h,ref:function(y){e.pieRef=y}},this.renderSectors(),l&&this.renderLabels(c),it.renderCallByParent(this.props,null,!1),(!N||f)&&$t.renderCallByParent(this.props,c,!1))}}],[{key:"getDerivedStateFromProps",value:function(e,o){return o.prevIsAnimationActive!==e.isAnimationActive?{prevIsAnimationActive:e.isAnimationActive,prevAnimationId:e.animationId,curSectors:e.sectors,prevSectors:[],isAnimationFinished:!0}:e.isAnimationActive&&e.animationId!==o.prevAnimationId?{prevAnimationId:e.animationId,curSectors:e.sectors,prevSectors:o.curSectors,isAnimationFinished:!0}:e.sectors!==o.curSectors?{curSectors:e.sectors,isAnimationFinished:!0}:null}},{key:"getTextAnchor",value:function(e,o){return e>o?"start":e=360?j:j-1)*l,S=v-j*N-k,w=o.reduce(function(D,M){var O=J(M,y,0);return D+(Q(O)?O:0)},0),_;if(w>0){var F;_=o.map(function(D,M){var O=J(D,y,0),q=J(D,p,M),H=(Q(O)?O:0)/w,E;M?E=F.endAngle+me(h)*l*(O!==0?1:0):E=c;var R=E+me(h)*((O!==0?N:0)+H*S),Le=(E+R)/2,Ie=(f.innerRadius+f.outerRadius)/2,yt=[{name:q,value:O,payload:D,dataKey:y,type:b}],jt=I(f.cx,f.cy,Ie,Le);return F=g(g(g({percent:H,cornerRadius:n,name:q,tooltipPayload:yt,midAngle:Le,middleRadius:Ie,tooltipPosition:jt},D),f),{},{value:J(D,y),startAngle:E,endAngle:R,payload:D,paddingAngle:me(h)*l}),F})}return g(g({},f),{},{sectors:_,data:o})});var Ia=Ut({chartName:"PieChart",GraphicalChild:$,validateTooltipEventTypes:["item"],defaultTooltipEventType:"item",legendContent:"children",axisComponents:[{axisType:"angleAxis",AxisComp:De},{axisType:"radiusAxis",AxisComp:ye}],formatAxisMap:zt,defaultProps:{layout:"centric",startAngle:0,endAngle:360,cx:"50%",cy:"50%",innerRadius:0,outerRadius:"80%"}});const $a={阿里云:"#ff6a00",aliyun:"#ff6a00",AWS:"#ff9900",aws:"#ff9900",腾讯云:"#006eff",tencent:"#006eff",华为云:"#ff0000",huawei:"#ff0000",Azure:"#0078d4",azure:"#0078d4"},et=["#ff6a00","#ff9900","#006eff","#ff0000","#0078d4","#10b981","#a855f7","#ec4899"];function Fa(t){if(!t||t.length<2)return{pct:0,label:"暂无数据",direction:"neutral"};const a=Number(t[t.length-1].cost??0),r=Number(t[t.length-2].cost??0);if(r===0)return{pct:0,label:a>0?"新增费用":"持平",direction:"neutral"};const e=(a-r)/r*100,o=e>.05?"up":e<-.05?"down":"neutral",n=`${e>0?"+":""}${e.toFixed(1)}% 较上月`;return{pct:e,label:n,direction:o}}function Ma(t,a,r,e=24){const o=[];for(let n=e-1;n>=0;n--){const c=new Date(Date.now()-n*60*60*1e3);o.push({time:`${c.getHours().toString().padStart(2,"0")}:00`,cpu:Number(Math.max(0,Math.min(100,t+(Math.random()-.5)*15)).toFixed(1)),memory:Number(Math.max(0,Math.min(100,a+(Math.random()-.5)*10)).toFixed(1)),disk:Number(Math.max(0,Math.min(100,r+(Math.random()-.5)*5)).toFixed(1))})}return o}function Ba(t,a){if(!t||t.length===0)return[];const r={};for(const e of t){const o=e.timestamp;if(!o)continue;const c=`${new Date(o).getHours().toString().padStart(2,"0")}:00`;r[c]||(r[c]={}),e.name==="cpu"&&(r[c].cpu=Number(e.value)||0),e.name==="memory"&&(r[c].memory=Number(e.value)||0)}return Object.entries(r).sort((e,o)=>e[0].localeCompare(o[0])).map(([e,o])=>({time:e,cpu:Number((o.cpu??0).toFixed(1)),memory:Number((o.memory??0).toFixed(1)),disk:Number(a.toFixed(1))}))}function _e({active:t,payload:a,label:r}){return!t||!a?null:s.jsxs("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:94:5",className:"chart-tooltip px-3 py-2",children:[s.jsx("p",{"code-path":"src/components/dashboard/DashboardCharts.tsx:95:7",className:"text-xs font-medium mb-1.5",style:{color:"var(--dg-text-secondary)"},children:r}),a.map((e,o)=>s.jsxs("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:97:9",className:"flex items-center gap-2 text-xs",children:[s.jsx("span",{"code-path":"src/components/dashboard/DashboardCharts.tsx:98:11",className:"w-2 h-2 rounded-full",style:{backgroundColor:e.color}}),s.jsxs("span",{"code-path":"src/components/dashboard/DashboardCharts.tsx:99:11",style:{color:"var(--dg-text-muted)"},children:[e.name,":"]}),s.jsx("span",{"code-path":"src/components/dashboard/DashboardCharts.tsx:100:11",className:"font-medium",style:{color:"var(--dg-text-primary)"},children:typeof e.value=="number"?`${e.value}%`:e.value})]},o))]})}function Ka({costStats:t}){const a=t?.cloud_costs??[],r=t?.month_trend??[],e=a.map((d,l)=>({name:d.cloud,value:d.cost,color:$a[d.cloud]||et[l%et.length]})),o=r.map(d=>({month:d.month,cost:d.cost})),n=t?.total_cost??e.reduce((d,l)=>d+l.value,0),c=Fa(r);return s.jsxs(K,{"code-path":"src/components/dashboard/DashboardCharts.tsx:123:5",className:"dg-card dg-card-hover",children:[s.jsx(U,{"code-path":"src/components/dashboard/DashboardCharts.tsx:124:7",className:"pb-2",children:s.jsxs("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:125:9",className:"flex items-center justify-between",children:[s.jsxs("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:126:11",children:[s.jsx(z,{"code-path":"src/components/dashboard/DashboardCharts.tsx:127:13",className:"text-[var(--dg-text-primary)]",children:"云成本概览"}),s.jsx(V,{"code-path":"src/components/dashboard/DashboardCharts.tsx:128:13",className:"text-[var(--dg-text-muted)]",children:"本月各云平台费用支出"})]}),s.jsxs("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:130:11",className:"text-right",children:[s.jsxs("p",{"code-path":"src/components/dashboard/DashboardCharts.tsx:131:13",className:"text-2xl font-bold text-[var(--dg-text-primary)] tracking-tight",children:["¥",Number(n).toLocaleString()]}),s.jsx("p",{"code-path":"src/components/dashboard/DashboardCharts.tsx:134:13",className:u("text-xs font-medium mt-0.5",c.direction==="up"?"text-[var(--dg-green)]":c.direction==="down"?"text-[var(--dg-red)]":"text-[var(--dg-text-muted)]"),children:c.label})]})]})}),s.jsxs(W,{"code-path":"src/components/dashboard/DashboardCharts.tsx:145:7",children:[s.jsxs("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:146:9",className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:147:11",children:[s.jsx("p",{"code-path":"src/components/dashboard/DashboardCharts.tsx:148:13",className:"text-sm text-[var(--dg-text-secondary)] mb-2",children:"费用分布"}),s.jsx("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:149:13",className:"h-[180px]",children:s.jsx(Re,{"code-path":"src/components/dashboard/DashboardCharts.tsx:150:15",width:"100%",height:"100%",children:s.jsxs(Ia,{"code-path":"src/components/dashboard/DashboardCharts.tsx:151:17",children:[s.jsx($,{"code-path":"src/components/dashboard/DashboardCharts.tsx:152:19",data:e,cx:"50%",cy:"50%",innerRadius:40,outerRadius:70,paddingAngle:2,dataKey:"value",stroke:"none",children:e.map((d,l)=>s.jsx(lt,{"code-path":"src/components/dashboard/DashboardCharts.tsx:163:23",fill:d.color},`cell-${l}`))}),s.jsx(Ae,{"code-path":"src/components/dashboard/DashboardCharts.tsx:166:19",content:s.jsx(_e,{"code-path":"src/components/dashboard/DashboardCharts.tsx:166:37"})})]})})})]}),s.jsxs("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:171:11",children:[s.jsx("p",{"code-path":"src/components/dashboard/DashboardCharts.tsx:172:13",className:"text-sm text-[var(--dg-text-secondary)] mb-2",children:"月度趋势"}),s.jsx("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:173:13",className:"h-[180px]",children:s.jsx(Re,{"code-path":"src/components/dashboard/DashboardCharts.tsx:174:15",width:"100%",height:"100%",children:s.jsxs(qt,{"code-path":"src/components/dashboard/DashboardCharts.tsx:175:17",data:o,margin:{top:5,right:5,left:0,bottom:5},children:[s.jsx(ht,{"code-path":"src/components/dashboard/DashboardCharts.tsx:176:19",strokeDasharray:"3 3",className:"chart-grid-stroke",stroke:"var(--chart-grid)"}),s.jsx(pt,{"code-path":"src/components/dashboard/DashboardCharts.tsx:177:19",dataKey:"month",stroke:"var(--chart-axis)",fontSize:10,tickLine:!1,axisLine:!1}),s.jsx(mt,{"code-path":"src/components/dashboard/DashboardCharts.tsx:178:19",stroke:"var(--chart-axis)",fontSize:10,tickLine:!1,axisLine:!1}),s.jsx(Ae,{"code-path":"src/components/dashboard/DashboardCharts.tsx:179:19",content:s.jsx(_e,{"code-path":"src/components/dashboard/DashboardCharts.tsx:179:37"})}),s.jsx(Vt,{"code-path":"src/components/dashboard/DashboardCharts.tsx:180:19",dataKey:"cost",fill:"var(--dg-blue)",radius:[4,4,0,0]})]})})})]})]}),s.jsx("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:186:9",className:"mt-4 space-y-2",children:e.map(d=>s.jsxs("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:188:13",className:"flex items-center justify-between",children:[s.jsxs("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:189:15",className:"flex items-center gap-2",children:[s.jsx("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:190:17",className:"w-3 h-3 rounded-full",style:{backgroundColor:d.color}}),s.jsx("span",{"code-path":"src/components/dashboard/DashboardCharts.tsx:191:17",className:"text-sm text-[var(--dg-text-secondary)]",children:d.name})]}),s.jsxs("span",{"code-path":"src/components/dashboard/DashboardCharts.tsx:193:15",className:"text-sm font-semibold text-[var(--dg-text-primary)]",children:["¥",Number(d.value).toLocaleString()]})]},d.name))})]})]})}function Ua({topUsage:t}){const a=(t?.cpu??[]).slice(0,5),r=(t?.memory??[]).slice(0,5),e=(t?.disk??[]).slice(0,5),o=(n,c,d,l,i)=>s.jsxs("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:215:5",children:[s.jsxs("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:216:7",className:"flex items-center gap-2 mb-3",children:[l,s.jsx("span",{"code-path":"src/components/dashboard/DashboardCharts.tsx:218:9",className:"text-sm font-semibold text-[var(--dg-text-secondary)]",children:i})]}),s.jsx("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:220:7",className:"space-y-2.5",children:n.map((p,x)=>{const b=Number(p.usage??0);return s.jsxs("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:224:13",className:"flex items-center gap-2.5",children:[s.jsx("span",{"code-path":"src/components/dashboard/DashboardCharts.tsx:225:15",className:"text-xs font-mono text-[var(--dg-text-muted)] w-5 text-center",children:x+1}),s.jsxs("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:228:15",className:"flex-1 min-w-0",children:[s.jsx("p",{"code-path":"src/components/dashboard/DashboardCharts.tsx:229:17",className:"text-xs text-[var(--dg-text-secondary)] truncate font-medium",children:p.hostname}),s.jsxs("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:230:17",className:"flex items-center gap-2 mt-1",children:[s.jsx("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:231:19",className:"flex-1 h-1.5 bg-[var(--dg-bg-tertiary)] rounded-full overflow-hidden",children:s.jsx("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:232:21",className:u("h-full rounded-full transition-all duration-500",b>80?"bg-[var(--dg-red)]":b>60?"bg-[var(--dg-yellow)]":d),style:{width:`${Math.min(b,100)}%`}})}),s.jsxs("span",{"code-path":"src/components/dashboard/DashboardCharts.tsx:240:19",className:u("text-xs font-mono font-medium w-12 text-right",b>80?"text-[var(--dg-red)]":b>60?"text-[var(--dg-yellow)]":"text-[var(--dg-text-muted)]"),children:[b.toFixed(1),"%"]})]})]})]},p.id??x)})})]});return s.jsxs(K,{"code-path":"src/components/dashboard/DashboardCharts.tsx:256:5",className:"dg-card dg-card-hover",children:[s.jsx(U,{"code-path":"src/components/dashboard/DashboardCharts.tsx:257:7",className:"pb-2",children:s.jsxs("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:258:9",children:[s.jsx(z,{"code-path":"src/components/dashboard/DashboardCharts.tsx:259:11",className:"text-[var(--dg-text-primary)]",children:"Top5 资源使用"}),s.jsx(V,{"code-path":"src/components/dashboard/DashboardCharts.tsx:260:11",className:"text-[var(--dg-text-muted)]",children:"CPU、内存、磁盘使用率最高"})]})}),s.jsx(W,{"code-path":"src/components/dashboard/DashboardCharts.tsx:263:7",children:s.jsxs("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:264:9",className:"grid grid-cols-3 gap-4",children:[o(a,"blue","bg-[var(--dg-blue)]",s.jsx(at,{"code-path":"src/components/dashboard/DashboardCharts.tsx:265:69",className:"h-4 w-4 text-[var(--dg-blue)]"}),"CPU"),o(r,"emerald","bg-[var(--dg-green)]",s.jsx(Ht,{"code-path":"src/components/dashboard/DashboardCharts.tsx:266:76",className:"h-4 w-4 text-[var(--dg-green)]"}),"内存"),o(e,"purple","bg-[var(--dg-purple)]",s.jsx(Nt,{"code-path":"src/components/dashboard/DashboardCharts.tsx:267:74",className:"h-4 w-4 text-[var(--dg-purple)]"}),"磁盘")]})})]})}function za({avgCpu:t,avgMemory:a,avgDisk:r,metrics:e}){const o=Ba(e??[],r),n=o.length>0?o:Ma(t,a,r,24);return s.jsxs(K,{"code-path":"src/components/dashboard/DashboardCharts.tsx:289:5",className:"dg-card",children:[s.jsx(U,{"code-path":"src/components/dashboard/DashboardCharts.tsx:290:7",className:"pb-2",children:s.jsxs("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:291:9",className:"flex items-center justify-between flex-wrap gap-3",children:[s.jsxs("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:292:11",children:[s.jsx(z,{"code-path":"src/components/dashboard/DashboardCharts.tsx:293:13",className:"text-[var(--dg-text-primary)]",children:"资源使用率趋势"}),s.jsx(V,{"code-path":"src/components/dashboard/DashboardCharts.tsx:294:13",className:"text-[var(--dg-text-muted)]",children:"过去24小时系统资源使用情况"})]}),s.jsxs("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:296:11",className:"flex items-center gap-2",children:[s.jsxs(L,{"code-path":"src/components/dashboard/DashboardCharts.tsx:297:13",variant:"outline",className:"dg-badge-blue border",children:[s.jsx(at,{"code-path":"src/components/dashboard/DashboardCharts.tsx:298:15",className:"h-3 w-3 mr-1"}),"CPU"]}),s.jsxs(L,{"code-path":"src/components/dashboard/DashboardCharts.tsx:301:13",variant:"outline",className:"dg-badge-green border",children:[s.jsx(Dt,{"code-path":"src/components/dashboard/DashboardCharts.tsx:302:15",className:"h-3 w-3 mr-1"}),"内存"]}),s.jsxs(L,{"code-path":"src/components/dashboard/DashboardCharts.tsx:305:13",variant:"outline",className:"dg-badge-purple border",children:[s.jsx(wt,{"code-path":"src/components/dashboard/DashboardCharts.tsx:306:15",className:"h-3 w-3 mr-1"}),"磁盘"]})]})]})}),s.jsx(W,{"code-path":"src/components/dashboard/DashboardCharts.tsx:312:7",children:s.jsx("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:313:9",className:"h-[280px]",children:s.jsx(Re,{"code-path":"src/components/dashboard/DashboardCharts.tsx:314:11",width:"100%",height:"100%",children:s.jsxs(Wt,{"code-path":"src/components/dashboard/DashboardCharts.tsx:315:13",data:n,margin:{top:10,right:10,left:0,bottom:0},children:[s.jsxs("defs",{"code-path":"src/components/dashboard/DashboardCharts.tsx:316:15",children:[s.jsxs("linearGradient",{"code-path":"src/components/dashboard/DashboardCharts.tsx:317:17",id:"colorCpu",x1:"0",y1:"0",x2:"0",y2:"1",children:[s.jsx("stop",{"code-path":"src/components/dashboard/DashboardCharts.tsx:318:19",offset:"5%",stopColor:"var(--dg-blue)",stopOpacity:.3}),s.jsx("stop",{"code-path":"src/components/dashboard/DashboardCharts.tsx:319:19",offset:"95%",stopColor:"var(--dg-blue)",stopOpacity:0})]}),s.jsxs("linearGradient",{"code-path":"src/components/dashboard/DashboardCharts.tsx:321:17",id:"colorMemory",x1:"0",y1:"0",x2:"0",y2:"1",children:[s.jsx("stop",{"code-path":"src/components/dashboard/DashboardCharts.tsx:322:19",offset:"5%",stopColor:"var(--dg-green)",stopOpacity:.3}),s.jsx("stop",{"code-path":"src/components/dashboard/DashboardCharts.tsx:323:19",offset:"95%",stopColor:"var(--dg-green)",stopOpacity:0})]}),s.jsxs("linearGradient",{"code-path":"src/components/dashboard/DashboardCharts.tsx:325:17",id:"colorDisk",x1:"0",y1:"0",x2:"0",y2:"1",children:[s.jsx("stop",{"code-path":"src/components/dashboard/DashboardCharts.tsx:326:19",offset:"5%",stopColor:"var(--dg-purple)",stopOpacity:.3}),s.jsx("stop",{"code-path":"src/components/dashboard/DashboardCharts.tsx:327:19",offset:"95%",stopColor:"var(--dg-purple)",stopOpacity:0})]})]}),s.jsx(ht,{"code-path":"src/components/dashboard/DashboardCharts.tsx:330:15",strokeDasharray:"3 3",stroke:"var(--chart-grid)"}),s.jsx(pt,{"code-path":"src/components/dashboard/DashboardCharts.tsx:331:15",dataKey:"time",stroke:"var(--chart-axis)",fontSize:12,tickLine:!1,axisLine:!1}),s.jsx(mt,{"code-path":"src/components/dashboard/DashboardCharts.tsx:332:15",stroke:"var(--chart-axis)",fontSize:12,tickLine:!1,axisLine:!1,unit:"%"}),s.jsx(Ae,{"code-path":"src/components/dashboard/DashboardCharts.tsx:333:15",content:s.jsx(_e,{"code-path":"src/components/dashboard/DashboardCharts.tsx:333:33"})}),s.jsx(Ne,{"code-path":"src/components/dashboard/DashboardCharts.tsx:334:15",type:"monotone",dataKey:"cpu",stroke:"var(--dg-blue)",fillOpacity:1,fill:"url(#colorCpu)",strokeWidth:2,name:"CPU"}),s.jsx(Ne,{"code-path":"src/components/dashboard/DashboardCharts.tsx:335:15",type:"monotone",dataKey:"memory",stroke:"var(--dg-green)",fillOpacity:1,fill:"url(#colorMemory)",strokeWidth:2,name:"内存"}),s.jsx(Ne,{"code-path":"src/components/dashboard/DashboardCharts.tsx:336:15",type:"monotone",dataKey:"disk",stroke:"var(--dg-purple)",fillOpacity:1,fill:"url(#colorDisk)",strokeWidth:2,name:"磁盘"})]})})})})]})}function Va({severity:t}){return s.jsx("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:31:5",className:u("w-2 h-2 rounded-full flex-shrink-0 mt-1.5",t==="critical"&&"bg-[var(--dg-red)]",t==="warning"&&"bg-[var(--dg-yellow)]",t==="info"&&"bg-[var(--dg-blue)]")})}function Wa({severity:t}){return s.jsx(L,{"code-path":"src/components/dashboard/DashboardRecent.tsx:45:5",variant:"outline",className:u("text-xs font-medium",t==="critical"&&"dg-badge-red border",t==="warning"&&"dg-badge-yellow border",t==="info"&&"dg-badge-blue border"),children:t==="critical"?"严重":t==="warning"?"警告":"提示"})}function qa({alerts:t}){const a=ie(),r=t.filter(e=>e.status==="firing").slice(0,8);return s.jsxs(K,{"code-path":"src/components/dashboard/DashboardRecent.tsx:64:5",className:"dg-card dg-card-hover",children:[s.jsx(U,{"code-path":"src/components/dashboard/DashboardRecent.tsx:65:7",className:"pb-2",children:s.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:66:9",className:"flex items-center justify-between",children:[s.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:67:11",children:[s.jsx(z,{"code-path":"src/components/dashboard/DashboardRecent.tsx:68:13",className:"text-[var(--dg-text-primary)]",children:"告警消息"}),s.jsx(V,{"code-path":"src/components/dashboard/DashboardRecent.tsx:69:13",className:"text-[var(--dg-text-muted)]",children:"最近触发的告警事件"})]}),s.jsxs(se,{"code-path":"src/components/dashboard/DashboardRecent.tsx:71:11",variant:"ghost",size:"sm",className:"dg-btn-ghost text-xs",onClick:()=>a("/alerts"),children:["查看全部",s.jsx(le,{"code-path":"src/components/dashboard/DashboardRecent.tsx:78:13",className:"h-3.5 w-3.5 ml-1"})]})]})}),s.jsx(W,{"code-path":"src/components/dashboard/DashboardRecent.tsx:82:7",children:s.jsx(st,{"code-path":"src/components/dashboard/DashboardRecent.tsx:83:9",className:"h-[320px] scrollbar-thin",children:r.length===0?s.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:85:13",className:"flex flex-col items-center justify-center py-12 text-[var(--dg-text-muted)]",children:[s.jsx(rt,{"code-path":"src/components/dashboard/DashboardRecent.tsx:86:15",className:"h-10 w-10 mb-3 opacity-30"}),s.jsx("p",{"code-path":"src/components/dashboard/DashboardRecent.tsx:87:15",className:"text-sm",children:"暂无告警事件"}),s.jsx("p",{"code-path":"src/components/dashboard/DashboardRecent.tsx:88:15",className:"text-xs mt-1 opacity-60",children:"所有系统运行正常"})]}):s.jsx("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:91:13",className:"space-y-1.5 pr-2",children:r.map(e=>s.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:93:17",className:"flex items-start gap-3 p-3 rounded-lg bg-[var(--dg-bg-tertiary)]/50 hover:bg-[var(--dg-bg-hover)] transition-all duration-200 cursor-pointer group",onClick:()=>a("/alert-center"),children:[s.jsx(Va,{"code-path":"src/components/dashboard/DashboardRecent.tsx:98:19",severity:e.severity||"info"}),s.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:99:19",className:"flex-1 min-w-0",children:[s.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:100:21",className:"flex items-center gap-2 flex-wrap",children:[s.jsx("span",{"code-path":"src/components/dashboard/DashboardRecent.tsx:101:23",className:"text-sm font-medium text-[var(--dg-text-primary)] truncate",children:e.rule_name}),s.jsx(Wa,{"code-path":"src/components/dashboard/DashboardRecent.tsx:104:23",severity:e.severity||"info"})]}),s.jsx("p",{"code-path":"src/components/dashboard/DashboardRecent.tsx:106:21",className:"text-xs text-[var(--dg-text-muted)] mt-1",children:e.target}),s.jsx("p",{"code-path":"src/components/dashboard/DashboardRecent.tsx:107:21",className:"text-xs text-[var(--dg-text-muted)]/70 line-clamp-1",children:e.message})]}),s.jsx("span",{"code-path":"src/components/dashboard/DashboardRecent.tsx:109:19",className:"text-[11px] text-[var(--dg-text-muted)]/50 whitespace-nowrap flex-shrink-0",children:e.created_at?new Date(e.created_at).toLocaleTimeString("zh-CN",{hour:"2-digit",minute:"2-digit"}):""})]},e.id))})})})]})}function Ha({expCerts:t}){const a=(t??[]).map(o=>({...o,daysUntilExpiry:o.days_until_expiry??Math.ceil((new Date(o.expire_date).getTime()-Date.now())/864e5)})).sort((o,n)=>o.daysUntilExpiry-n.daysUntilExpiry),r=a.filter(o=>o.daysUntilExpiry<30).length,e=a.filter(o=>o.daysUntilExpiry>=30&&o.daysUntilExpiry<60).length;return s.jsxs(K,{"code-path":"src/components/dashboard/DashboardRecent.tsx:134:5",className:"dg-card dg-card-hover",children:[s.jsx(U,{"code-path":"src/components/dashboard/DashboardRecent.tsx:135:7",className:"pb-2",children:s.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:136:9",className:"flex items-center justify-between flex-wrap gap-2",children:[s.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:137:11",children:[s.jsx(z,{"code-path":"src/components/dashboard/DashboardRecent.tsx:138:13",className:"text-[var(--dg-text-primary)]",children:"证书到期提醒"}),s.jsx(V,{"code-path":"src/components/dashboard/DashboardRecent.tsx:139:13",className:"text-[var(--dg-text-muted)]",children:"SSL证书到期时间监控"})]}),s.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:141:11",className:"flex items-center gap-2",children:[r>0&&s.jsxs(L,{"code-path":"src/components/dashboard/DashboardRecent.tsx:143:15",className:"dg-badge-red border",children:[s.jsx(rt,{"code-path":"src/components/dashboard/DashboardRecent.tsx:144:17",className:"h-3 w-3 mr-1"}),r," 即将过期"]}),e>0&&s.jsxs(L,{"code-path":"src/components/dashboard/DashboardRecent.tsx:149:15",className:"dg-badge-yellow border",children:[e," 30天内过期"]})]})]})}),s.jsx(W,{"code-path":"src/components/dashboard/DashboardRecent.tsx:156:7",children:s.jsx(st,{"code-path":"src/components/dashboard/DashboardRecent.tsx:157:9",className:"h-[280px] scrollbar-thin",children:a.length===0?s.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:159:13",className:"flex flex-col items-center justify-center py-10 text-[var(--dg-text-muted)]",children:[s.jsx($e,{"code-path":"src/components/dashboard/DashboardRecent.tsx:160:15",className:"h-10 w-10 mb-3 opacity-30"}),s.jsx("p",{"code-path":"src/components/dashboard/DashboardRecent.tsx:161:15",className:"text-sm",children:"暂无证书数据"})]}):s.jsx("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:164:13",className:"space-y-1.5 pr-2",children:a.map(o=>s.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:166:17",className:"flex items-center justify-between p-3 rounded-lg bg-[var(--dg-bg-tertiary)]/50 hover:bg-[var(--dg-bg-hover)] transition-all duration-200",children:[s.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:170:19",className:"flex items-center gap-3 min-w-0",children:[s.jsx("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:171:21",className:u("w-8 h-8 rounded-lg flex items-center justify-center flex-shrink-0",o.daysUntilExpiry<30?"bg-[var(--dg-red)]/10":o.daysUntilExpiry<60?"bg-[var(--dg-yellow)]/10":"bg-[var(--dg-green)]/10"),children:s.jsx($e,{"code-path":"src/components/dashboard/DashboardRecent.tsx:179:23",className:u("h-4 w-4",o.daysUntilExpiry<30?"text-[var(--dg-red)]":o.daysUntilExpiry<60?"text-[var(--dg-yellow)]":"text-[var(--dg-green)]")})}),s.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:186:21",className:"min-w-0",children:[s.jsx("p",{"code-path":"src/components/dashboard/DashboardRecent.tsx:187:23",className:"text-sm font-medium text-[var(--dg-text-primary)] truncate",children:o.name}),s.jsxs("p",{"code-path":"src/components/dashboard/DashboardRecent.tsx:188:23",className:"text-xs text-[var(--dg-text-muted)]",children:["到期: ",o.expire_date?.substring(0,10)]})]})]}),s.jsx(L,{"code-path":"src/components/dashboard/DashboardRecent.tsx:191:19",variant:"outline",className:u("text-xs flex-shrink-0",o.daysUntilExpiry<30?"dg-badge-red border":o.daysUntilExpiry<60?"dg-badge-yellow border":"dg-badge-green border"),children:o.daysUntilExpiry<0?"已过期":`${o.daysUntilExpiry} 天`})]},o.id))})})})]})}function Ga({releases:t}){const a=ie(),r=t?.slice(0,5)??[];return s.jsxs(K,{"code-path":"src/components/dashboard/DashboardRecent.tsx:217:5",className:"dg-card dg-card-hover",children:[s.jsx(U,{"code-path":"src/components/dashboard/DashboardRecent.tsx:218:7",className:"pb-2",children:s.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:219:9",className:"flex items-center justify-between",children:[s.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:220:11",children:[s.jsx(z,{"code-path":"src/components/dashboard/DashboardRecent.tsx:221:13",className:"text-[var(--dg-text-primary)]",children:"发布历史"}),s.jsx(V,{"code-path":"src/components/dashboard/DashboardRecent.tsx:222:13",className:"text-[var(--dg-text-muted)]",children:"今日应用发布记录"})]}),s.jsxs(se,{"code-path":"src/components/dashboard/DashboardRecent.tsx:224:11",variant:"ghost",size:"sm",className:"dg-btn-ghost text-xs",onClick:()=>a("/pipelines"),children:["查看全部",s.jsx(le,{"code-path":"src/components/dashboard/DashboardRecent.tsx:231:13",className:"h-3.5 w-3.5 ml-1"})]})]})}),s.jsx(W,{"code-path":"src/components/dashboard/DashboardRecent.tsx:235:7",children:r.length===0?s.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:237:11",className:"flex flex-col items-center justify-center py-10 text-[var(--dg-text-muted)]",children:[s.jsx(Fe,{"code-path":"src/components/dashboard/DashboardRecent.tsx:238:13",className:"h-10 w-10 mb-3 opacity-30"}),s.jsx("p",{"code-path":"src/components/dashboard/DashboardRecent.tsx:239:13",className:"text-sm",children:"暂无发布记录"})]}):s.jsx("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:242:11",className:"space-y-2",children:r.map(e=>s.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:244:15",className:"flex items-center gap-3 p-3 rounded-lg bg-[var(--dg-bg-tertiary)]/50 hover:bg-[var(--dg-bg-hover)] transition-all duration-200",children:[s.jsx("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:248:17",className:u("w-8 h-8 rounded-lg flex items-center justify-center flex-shrink-0",e.status==="success"?"bg-[var(--dg-green)]/10":e.status==="failed"?"bg-[var(--dg-red)]/10":e.status==="deploying"?"bg-[var(--dg-blue)]/10":"bg-[var(--dg-yellow)]/10"),children:s.jsx(Fe,{"code-path":"src/components/dashboard/DashboardRecent.tsx:257:19",className:u("h-4 w-4",e.status==="success"?"text-[var(--dg-green)]":e.status==="failed"?"text-[var(--dg-red)]":e.status==="deploying"?"text-[var(--dg-blue)]":"text-[var(--dg-yellow)]")})}),s.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:265:17",className:"flex-1 min-w-0",children:[s.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:266:19",className:"flex items-center gap-2",children:[s.jsx("span",{"code-path":"src/components/dashboard/DashboardRecent.tsx:267:21",className:"text-sm font-medium text-[var(--dg-text-primary)] truncate",children:e.app_name}),s.jsx(L,{"code-path":"src/components/dashboard/DashboardRecent.tsx:268:21",variant:"outline",className:"text-xs border-[var(--dg-border)] text-[var(--dg-text-muted)] flex-shrink-0",children:e.version})]}),s.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:272:19",className:"flex items-center gap-2 mt-0.5",children:[s.jsx("span",{"code-path":"src/components/dashboard/DashboardRecent.tsx:273:21",className:"text-xs text-[var(--dg-text-muted)]",children:e.environment}),s.jsx("span",{"code-path":"src/components/dashboard/DashboardRecent.tsx:274:21",className:"text-xs text-[var(--dg-border)]",children:"·"}),s.jsx("span",{"code-path":"src/components/dashboard/DashboardRecent.tsx:275:21",className:"text-xs text-[var(--dg-text-muted)] truncate",children:e.commit_id})]})]}),s.jsx(L,{"code-path":"src/components/dashboard/DashboardRecent.tsx:278:17",variant:"outline",className:u("text-xs flex-shrink-0",e.status==="success"?"dg-badge-green border":e.status==="failed"?"dg-badge-red border":e.status==="deploying"?"dg-badge-blue border":"dg-badge-yellow border"),children:e.status==="success"?"成功":e.status==="failed"?"失败":e.status==="deploying"?"发布中":e.status==="rolled_back"?"已回滚":"构建中"})]},e.id))})})]})}function Za({servers:t}){const a=ie(),r=t.filter(n=>n.status==="running").length,e=t.filter(n=>n.status==="stopped").length,o=t.filter(n=>n.status==="maintenance").length;return s.jsxs(K,{"code-path":"src/components/dashboard/DashboardRecent.tsx:309:5",className:"dg-card dg-card-hover",children:[s.jsx(U,{"code-path":"src/components/dashboard/DashboardRecent.tsx:310:7",className:"pb-2",children:s.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:311:9",className:"flex items-center justify-between",children:[s.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:312:11",children:[s.jsx(z,{"code-path":"src/components/dashboard/DashboardRecent.tsx:313:13",className:"text-[var(--dg-text-primary)]",children:"服务器状态"}),s.jsx(V,{"code-path":"src/components/dashboard/DashboardRecent.tsx:314:13",className:"text-[var(--dg-text-muted)]",children:"服务器运行状态分布"})]}),s.jsxs(se,{"code-path":"src/components/dashboard/DashboardRecent.tsx:316:11",variant:"ghost",size:"sm",className:"dg-btn-ghost text-xs",onClick:()=>a("/servers"),children:["查看全部",s.jsx(le,{"code-path":"src/components/dashboard/DashboardRecent.tsx:323:13",className:"h-3.5 w-3.5 ml-1"})]})]})}),s.jsxs(W,{"code-path":"src/components/dashboard/DashboardRecent.tsx:327:7",children:[s.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:329:9",className:"grid grid-cols-3 gap-3 mb-4",children:[s.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:330:11",className:"text-center p-3 rounded-xl bg-[var(--dg-green)]/8 border border-[var(--dg-green)]/15",children:[s.jsx("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:331:13",className:"text-2xl font-bold text-[var(--dg-green)]",children:r}),s.jsx("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:332:13",className:"text-xs text-[var(--dg-text-muted)] mt-1",children:"运行中"})]}),s.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:334:11",className:"text-center p-3 rounded-xl bg-[var(--dg-yellow)]/8 border border-[var(--dg-yellow)]/15",children:[s.jsx("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:335:13",className:"text-2xl font-bold text-[var(--dg-yellow)]",children:o}),s.jsx("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:336:13",className:"text-xs text-[var(--dg-text-muted)] mt-1",children:"维护中"})]}),s.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:338:11",className:"text-center p-3 rounded-xl bg-[var(--dg-text-muted)]/8 border border-[var(--dg-border)]",children:[s.jsx("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:339:13",className:"text-2xl font-bold text-[var(--dg-text-muted)]",children:e}),s.jsx("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:340:13",className:"text-xs text-[var(--dg-text-muted)] mt-1",children:"已停止"})]})]}),s.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:345:9",className:"space-y-1.5",children:[t.slice(0,4).map(n=>s.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:347:13",className:"flex items-center gap-3 p-2.5 rounded-lg bg-[var(--dg-bg-tertiary)]/50 hover:bg-[var(--dg-bg-hover)] transition-all duration-200",children:[s.jsx(Gt,{"code-path":"src/components/dashboard/DashboardRecent.tsx:351:15",className:u("h-2.5 w-2.5 flex-shrink-0 fill-current",n.status==="running"?"text-[var(--dg-green)]":n.status==="maintenance"?"text-[var(--dg-yellow)]":"text-[var(--dg-text-muted)]")}),s.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:359:15",className:"flex-1 min-w-0",children:[s.jsx("p",{"code-path":"src/components/dashboard/DashboardRecent.tsx:360:17",className:"text-sm text-[var(--dg-text-primary)] truncate",children:n.hostname}),s.jsx("p",{"code-path":"src/components/dashboard/DashboardRecent.tsx:361:17",className:"text-xs text-[var(--dg-text-muted)]",children:n.ip})]}),s.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:363:15",className:"text-right flex-shrink-0",children:[s.jsxs("p",{"code-path":"src/components/dashboard/DashboardRecent.tsx:364:17",className:"text-xs text-[var(--dg-text-muted)]",children:["CPU ",s.jsxs("span",{"code-path":"src/components/dashboard/DashboardRecent.tsx:365:23",className:"text-[var(--dg-text-secondary)] font-medium",children:[Number(n.cpu_usage??0).toFixed(1),"%"]})]}),s.jsxs("p",{"code-path":"src/components/dashboard/DashboardRecent.tsx:367:17",className:"text-xs text-[var(--dg-text-muted)]",children:["内存 ",s.jsxs("span",{"code-path":"src/components/dashboard/DashboardRecent.tsx:368:22",className:"text-[var(--dg-text-secondary)] font-medium",children:[Number(n.memory_usage??0).toFixed(1),"%"]})]})]})]},n.id)),t.length===0&&s.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:374:13",className:"flex flex-col items-center justify-center py-6 text-[var(--dg-text-muted)]",children:[s.jsx(ot,{"code-path":"src/components/dashboard/DashboardRecent.tsx:375:15",className:"h-8 w-8 mb-2 opacity-30"}),s.jsx("p",{"code-path":"src/components/dashboard/DashboardRecent.tsx:376:15",className:"text-sm",children:"暂无服务器"})]})]})]})]})}function Xa({clusters:t}){const a=ie();return s.jsxs(K,{"code-path":"src/components/dashboard/DashboardRecent.tsx:389:5",className:"dg-card dg-card-hover",children:[s.jsx(U,{"code-path":"src/components/dashboard/DashboardRecent.tsx:390:7",className:"pb-2",children:s.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:391:9",className:"flex items-center justify-between",children:[s.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:392:11",children:[s.jsx(z,{"code-path":"src/components/dashboard/DashboardRecent.tsx:393:13",className:"text-[var(--dg-text-primary)]",children:"Kubernetes 集群"}),s.jsx(V,{"code-path":"src/components/dashboard/DashboardRecent.tsx:394:13",className:"text-[var(--dg-text-muted)]",children:"Kubernetes集群健康状态"})]}),s.jsxs(se,{"code-path":"src/components/dashboard/DashboardRecent.tsx:396:11",variant:"ghost",size:"sm",className:"dg-btn-ghost text-xs",onClick:()=>a("/kubernetes"),children:["查看全部",s.jsx(le,{"code-path":"src/components/dashboard/DashboardRecent.tsx:403:13",className:"h-3.5 w-3.5 ml-1"})]})]})}),s.jsx(W,{"code-path":"src/components/dashboard/DashboardRecent.tsx:407:7",children:t.length===0?s.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:409:11",className:"flex flex-col items-center justify-center py-10 text-[var(--dg-text-muted)]",children:[s.jsx(Me,{"code-path":"src/components/dashboard/DashboardRecent.tsx:410:13",className:"h-10 w-10 mb-3 opacity-30"}),s.jsx("p",{"code-path":"src/components/dashboard/DashboardRecent.tsx:411:13",className:"text-sm",children:"暂无集群数据"})]}):s.jsx("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:414:11",className:"space-y-3",children:t.map(r=>{const e=Number(r.cpu_usage??0),o=Number(r.memory_usage??0);return s.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:419:17",className:"p-3.5 rounded-xl bg-[var(--dg-bg-tertiary)]/50 hover:bg-[var(--dg-bg-hover)] transition-all duration-200 cursor-pointer",onClick:()=>a(`/kubernetes/${r.code||r.id}`),children:[s.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:424:19",className:"flex items-center justify-between mb-3",children:[s.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:425:21",className:"flex items-center gap-2.5",children:[s.jsx(Me,{"code-path":"src/components/dashboard/DashboardRecent.tsx:426:23",className:"h-4.5 w-4.5 text-[var(--dg-blue)]"}),s.jsx("span",{"code-path":"src/components/dashboard/DashboardRecent.tsx:427:23",className:"text-sm font-semibold text-[var(--dg-text-primary)]",children:r.name})]}),s.jsx(L,{"code-path":"src/components/dashboard/DashboardRecent.tsx:429:21",variant:"outline",className:u("text-xs",r.status==="healthy"?"dg-badge-green border":r.status==="warning"?"dg-badge-yellow border":"dg-badge-red border"),children:r.status==="healthy"?"健康":r.status==="warning"?"警告":"异常"})]}),s.jsx("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:441:19",className:"grid grid-cols-4 gap-2 text-center",children:[{label:"节点",value:r.node_count??0},{label:"Pod",value:r.pod_count??0},{label:"CPU",value:`${e.toFixed(1)}%`},{label:"内存",value:`${o.toFixed(1)}%`}].map(n=>s.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:448:23",className:"p-1.5 rounded-lg bg-[var(--dg-bg-primary)]/50",children:[s.jsx("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:449:25",className:"text-sm font-semibold text-[var(--dg-text-primary)]",children:n.value}),s.jsx("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:450:25",className:"text-[10px] text-[var(--dg-text-muted)] mt-0.5",children:n.label})]},n.label))})]},r.id)})})})]})}function xe({variant:t="card",className:a}){const r="dg-skeleton";return t==="stat"?s.jsxs("div",{"code-path":"src/components/layout/SkeletonCard.tsx:22:7",className:u("dg-card p-6 space-y-4",a),children:[s.jsxs("div",{"code-path":"src/components/layout/SkeletonCard.tsx:23:9",className:"flex items-start justify-between",children:[s.jsxs("div",{"code-path":"src/components/layout/SkeletonCard.tsx:24:11",className:"space-y-3 flex-1",children:[s.jsx("div",{"code-path":"src/components/layout/SkeletonCard.tsx:25:13",className:u("h-4 w-24 rounded",r)}),s.jsx("div",{"code-path":"src/components/layout/SkeletonCard.tsx:26:13",className:u("h-8 w-16 rounded",r)})]}),s.jsx("div",{"code-path":"src/components/layout/SkeletonCard.tsx:28:11",className:u("h-10 w-10 rounded-lg",r)})]}),s.jsx("div",{"code-path":"src/components/layout/SkeletonCard.tsx:30:9",className:u("h-3 w-32 rounded",r)})]}):t==="chart"?s.jsxs("div",{"code-path":"src/components/layout/SkeletonCard.tsx:37:7",className:u("dg-card p-6 space-y-4",a),children:[s.jsxs("div",{"code-path":"src/components/layout/SkeletonCard.tsx:38:9",className:"space-y-2",children:[s.jsx("div",{"code-path":"src/components/layout/SkeletonCard.tsx:39:11",className:u("h-5 w-32 rounded",r)}),s.jsx("div",{"code-path":"src/components/layout/SkeletonCard.tsx:40:11",className:u("h-3 w-48 rounded",r)})]}),s.jsx("div",{"code-path":"src/components/layout/SkeletonCard.tsx:42:9",className:u("h-[200px] rounded-lg",r)})]}):t==="table"?s.jsxs("div",{"code-path":"src/components/layout/SkeletonCard.tsx:49:7",className:u("dg-card overflow-hidden",a),children:[s.jsxs("div",{"code-path":"src/components/layout/SkeletonCard.tsx:51:9",className:"flex items-center gap-4 p-4 border-b border-[var(--dg-border)]",children:[s.jsx("div",{"code-path":"src/components/layout/SkeletonCard.tsx:52:11",className:u("h-4 w-8 rounded",r)}),Array.from({length:6}).map((e,o)=>s.jsx("div",{"code-path":"src/components/layout/SkeletonCard.tsx:54:13",className:u("h-4 flex-1 rounded",r)},o))]}),Array.from({length:5}).map((e,o)=>s.jsxs("div",{"code-path":"src/components/layout/SkeletonCard.tsx:59:11",className:"flex items-center gap-4 p-4 border-b border-[var(--dg-border)] last:border-0",children:[s.jsx("div",{"code-path":"src/components/layout/SkeletonCard.tsx:60:13",className:u("h-4 w-8 rounded",r)}),Array.from({length:6}).map((n,c)=>s.jsx("div",{"code-path":"src/components/layout/SkeletonCard.tsx:62:15",className:u("h-4 flex-1 rounded",r)},c))]},o))]}):s.jsxs("div",{"code-path":"src/components/layout/SkeletonCard.tsx:72:5",className:u("dg-card p-6 space-y-4",a),children:[s.jsxs("div",{"code-path":"src/components/layout/SkeletonCard.tsx:73:7",className:"space-y-2",children:[s.jsx("div",{"code-path":"src/components/layout/SkeletonCard.tsx:74:9",className:u("h-5 w-40 rounded",r)}),s.jsx("div",{"code-path":"src/components/layout/SkeletonCard.tsx:75:9",className:u("h-3 w-56 rounded",r)})]}),s.jsx("div",{"code-path":"src/components/layout/SkeletonCard.tsx:77:7",className:"space-y-3",children:Array.from({length:4}).map((e,o)=>s.jsxs("div",{"code-path":"src/components/layout/SkeletonCard.tsx:79:11",className:"flex items-center gap-3",children:[s.jsx("div",{"code-path":"src/components/layout/SkeletonCard.tsx:80:13",className:u("h-8 w-8 rounded-lg",r)}),s.jsxs("div",{"code-path":"src/components/layout/SkeletonCard.tsx:81:13",className:"flex-1 space-y-2",children:[s.jsx("div",{"code-path":"src/components/layout/SkeletonCard.tsx:82:15",className:u("h-3 w-full rounded",r)}),s.jsx("div",{"code-path":"src/components/layout/SkeletonCard.tsx:83:15",className:u("h-3 w-2/3 rounded",r)})]})]},o))})]})}function Ya({count:t=4}){return s.jsx("div",{"code-path":"src/components/layout/SkeletonCard.tsx:97:5",className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4",children:Array.from({length:t}).map((a,r)=>s.jsx(xe,{"code-path":"src/components/layout/SkeletonCard.tsx:99:9",variant:"stat"},r))})}function Ja(){return s.jsxs("div",{"code-path":"src/components/layout/SkeletonCard.tsx:110:5",className:"space-y-6",children:[s.jsxs("div",{"code-path":"src/components/layout/SkeletonCard.tsx:112:7",className:"flex items-center justify-between",children:[s.jsxs("div",{"code-path":"src/components/layout/SkeletonCard.tsx:113:9",className:"space-y-2",children:[s.jsx("div",{"code-path":"src/components/layout/SkeletonCard.tsx:114:11",className:"dg-skeleton h-7 w-24 rounded"}),s.jsx("div",{"code-path":"src/components/layout/SkeletonCard.tsx:115:11",className:"dg-skeleton h-4 w-48 rounded"})]}),s.jsx("div",{"code-path":"src/components/layout/SkeletonCard.tsx:117:9",className:"dg-skeleton h-9 w-20 rounded-lg"})]}),s.jsx(Ya,{"code-path":"src/components/layout/SkeletonCard.tsx:121:7",count:4}),s.jsx(xe,{"code-path":"src/components/layout/SkeletonCard.tsx:124:7",variant:"chart"}),s.jsxs("div",{"code-path":"src/components/layout/SkeletonCard.tsx:127:7",className:"grid grid-cols-1 lg:grid-cols-2 gap-6",children:[s.jsx(xe,{"code-path":"src/components/layout/SkeletonCard.tsx:128:9",variant:"list"}),s.jsx(xe,{"code-path":"src/components/layout/SkeletonCard.tsx:129:9",variant:"list"})]})]})}function ms(){const t=ie(),[a,r]=A.useState(!0),[e,o]=A.useState(!1),[n,c]=A.useState(null),[d,l]=A.useState([]),[i,p]=A.useState([]),[x,b]=A.useState([]),[N,f]=A.useState([]),[h,v]=A.useState([]),[y,j]=A.useState([]),k=A.useCallback(async()=>{o(!0);try{const[D,M,O,q,H,E]=await Promise.all([he.getStats().catch(R=>(console.error("Failed to fetch dashboard stats:",R),null)),kt.getServers({page:1,page_size:100}).catch(R=>(console.error("Failed to fetch servers:",R),null)),Rt.getClusters().catch(R=>(console.error("Failed to fetch k8s clusters:",R),null)),he.getAlerts(10).catch(R=>(console.error("Failed to fetch dashboard alerts:",R),null)),he.getReleases(5).catch(R=>(console.error("Failed to fetch dashboard releases:",R),null)),he.getMetrics(6).catch(R=>(console.error("Failed to fetch metrics:",R),[]))]);c(D),l(M?.list??[]),p(O?.list??[]),b(Array.isArray(q)?q:[]),f(Array.isArray(H)?H:[]),v(D?.expiring_certs??[]),j(Array.isArray(E)?E:[])}catch(D){console.error("Failed to load dashboard data:",D)}finally{o(!1),r(!1)}},[]);if(A.useEffect(()=>{k();const D=setInterval(k,5e3);return()=>clearInterval(D)},[k]),a)return s.jsx(Ja,{"code-path":"src/components/dashboard/Dashboard.tsx:94:12"});const S=n?.server_stats,w=n?.kubernetes_stats,_=n?.alert_stats,F=n?.cost_stats;return s.jsxs("div",{"code-path":"src/components/dashboard/Dashboard.tsx:103:5",className:"dg-page",children:[s.jsxs("div",{"code-path":"src/components/dashboard/Dashboard.tsx:105:7",className:"dg-page-header",children:[s.jsxs("div",{"code-path":"src/components/dashboard/Dashboard.tsx:106:9",children:[s.jsx("h1",{"code-path":"src/components/dashboard/Dashboard.tsx:107:11",className:"dg-page-title",children:"仪表盘"}),s.jsxs("p",{"code-path":"src/components/dashboard/Dashboard.tsx:108:11",className:"dg-page-subtitle",children:["实时监控和运维概览 · 最后更新: ",new Date().toLocaleTimeString("zh-CN")]})]}),s.jsxs("div",{"code-path":"src/components/dashboard/Dashboard.tsx:110:9",className:"dg-page-actions",children:[s.jsxs(se,{"code-path":"src/components/dashboard/Dashboard.tsx:111:11",variant:"outline",className:"dg-btn-secondary",onClick:k,disabled:e,children:[s.jsx(Ct,{"code-path":"src/components/dashboard/Dashboard.tsx:117:13",className:u("h-4 w-4",e&&"animate-spin")}),e?"刷新中":"刷新"]}),s.jsxs(se,{"code-path":"src/components/dashboard/Dashboard.tsx:120:11",className:"dg-btn-primary",onClick:()=>t("/servers"),children:[s.jsx(ot,{"code-path":"src/components/dashboard/Dashboard.tsx:124:13",className:"h-4 w-4"}),"服务器",s.jsx(le,{"code-path":"src/components/dashboard/Dashboard.tsx:126:13",className:"h-3.5 w-3.5"})]})]})]}),s.jsx("div",{"code-path":"src/components/dashboard/Dashboard.tsx:132:7",className:"animate-fade-in-delay-1",children:s.jsx(At,{"code-path":"src/components/dashboard/Dashboard.tsx:133:9",items:[{label:"服务器",value:S?.total??0,color:"blue"},{label:"运行中",value:S?.running??0,color:"emerald"},{label:"K8s 集群",value:w?.total??0,color:"purple"},{label:"健康集群",value:w?.healthy??0,color:"cyan"},{label:"告警",value:_?.firing??0,color:_?.firing>0?"red":"muted"},{label:"严重",value:_?.critical??0,color:"red"},{label:"本月成本",value:`¥${Number(F?.month_cost??0).toLocaleString()}`,color:"amber"}]})}),s.jsx("div",{"code-path":"src/components/dashboard/Dashboard.tsx:147:7",className:"animate-fade-in-delay-2",children:s.jsx(za,{"code-path":"src/components/dashboard/Dashboard.tsx:148:9",avgCpu:Number(S?.avg_cpu??0),avgMemory:Number(S?.avg_memory??0),avgDisk:Number(S?.avg_disk??0),metrics:y})}),s.jsxs("div",{"code-path":"src/components/dashboard/Dashboard.tsx:157:7",className:"grid grid-cols-1 lg:grid-cols-2 gap-6 animate-fade-in-delay-3",children:[s.jsx(Ka,{"code-path":"src/components/dashboard/Dashboard.tsx:158:9",costStats:F}),s.jsx(Ua,{"code-path":"src/components/dashboard/Dashboard.tsx:159:9",topUsage:n?.top_resource_usage})]}),s.jsxs("div",{"code-path":"src/components/dashboard/Dashboard.tsx:163:7",className:"grid grid-cols-1 lg:grid-cols-2 gap-6 animate-fade-in-delay-3",children:[s.jsx(qa,{"code-path":"src/components/dashboard/Dashboard.tsx:164:9",alerts:x}),s.jsx(Ha,{"code-path":"src/components/dashboard/Dashboard.tsx:165:9",expCerts:h})]}),s.jsxs("div",{"code-path":"src/components/dashboard/Dashboard.tsx:169:7",className:"grid grid-cols-1 lg:grid-cols-3 gap-6 animate-fade-in-delay-4",children:[s.jsx(Ga,{"code-path":"src/components/dashboard/Dashboard.tsx:170:9",releases:N}),s.jsx(Za,{"code-path":"src/components/dashboard/Dashboard.tsx:171:9",servers:d}),s.jsx(Xa,{"code-path":"src/components/dashboard/Dashboard.tsx:172:9",clusters:i})]})]})}export{ms as Dashboard}; diff --git a/backend/static/assets/Dashboard-iCzLAtNG.js b/backend/static/assets/Dashboard-iCzLAtNG.js deleted file mode 100644 index e3a1f4e..0000000 --- a/backend/static/assets/Dashboard-iCzLAtNG.js +++ /dev/null @@ -1,4 +0,0 @@ -import{g as kt,j as t,X as m,ab as U,_ as x,aU as rt,r as A,o as ot,A as wt,G as Rt,k as le,B as se,a2 as nt,T as ct,t as Be,a7 as Ke,q as Ae,s as Se,x as At,J as St}from"./index-DfyorCky.js";import{d as pe}from"./dashboard-BjQPIG2G.js";import{s as Ot}from"./server-CjDPBaTN.js";import{k as _t}from"./kubernetes-J8O09fK7.js";import{C as I,a as F,b as z,c as V,d as q}from"./card-C55cvSHg.js";import{T as Pt}from"./trending-up-CdusV6gc.js";import{T as Et}from"./trending-down-BGTWG_dA.js";import{M as Tt}from"./minus-UVrx3jLc.js";import{B as $}from"./badge-xNW8x0G1.js";import{H as Lt}from"./hard-drive-BbPmnARR.js";import{b as C,r as dt,s as $t,t as it,v as It,n as Z,w as Ie,x as B,L,y as lt,z as Fe,E as ht,D as Ft,c as Mt,e as ae,o as Y,S as Bt,A as Kt,F as Ut,d as Ue,j as zt,i as Q,l as Vt,u as qt,G as Ht,H as ue,I as Wt,a as pt,J as Gt,K as me,M as ze,g as Zt,N as Xt,R as Oe,C as mt,X as xt,Y as ut,T as _e,B as Jt}from"./generateCategoricalChart-6v9BPbG2.js";import{A as Yt,a as ke}from"./AreaChart-B2zlWfdX.js";import{B as Qt}from"./BarChart-DlFprovY.js";import{M as ea}from"./memory-stick-QMV-0CnU.js";import{A as he}from"./arrow-right-DyIltvNZ.js";import{C as ta}from"./circle-DOZr6_68.js";const aa=[["line",{x1:"12",x2:"12",y1:"2",y2:"22",key:"7eqyqh"}],["path",{d:"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6",key:"1b0p4s"}]],sa=kt("dollar-sign",aa),Ve={blue:{bg:"bg-[var(--dg-blue)]/10",icon:"text-[var(--dg-blue)]",glow:"shadow-[var(--dg-blue)]/10"},emerald:{bg:"bg-[var(--dg-green)]/10",icon:"text-[var(--dg-green)]",glow:"shadow-[var(--dg-green)]/10"},amber:{bg:"bg-[var(--dg-yellow)]/10",icon:"text-[var(--dg-yellow)]",glow:"shadow-[var(--dg-yellow)]/10"},rose:{bg:"bg-[var(--dg-red)]/10",icon:"text-[var(--dg-red)]",glow:"shadow-[var(--dg-red)]/10"},purple:{bg:"bg-[var(--dg-purple)]/10",icon:"text-[var(--dg-purple)]",glow:"shadow-[var(--dg-purple)]/10"},cyan:{bg:"bg-[var(--dg-cyan)]/10",icon:"text-[var(--dg-cyan)]",glow:"shadow-[var(--dg-cyan)]/10"},orange:{bg:"bg-[var(--dg-orange)]/10",icon:"text-[var(--dg-orange)]",glow:"shadow-[var(--dg-orange)]/10"}};function xe({title:a,value:s,description:r,icon:e,trend:o,trendValue:n,color:c,onClick:d,loading:l=!1}){const i=Ve[c]||Ve.blue;if(l)return t.jsx(I,{"code-path":"src/components/dashboard/DashboardStats.tsx:53:7",className:"dg-card overflow-hidden",children:t.jsxs(F,{"code-path":"src/components/dashboard/DashboardStats.tsx:54:9",className:"p-6 space-y-4",children:[t.jsxs("div",{"code-path":"src/components/dashboard/DashboardStats.tsx:55:11",className:"flex items-start justify-between",children:[t.jsxs("div",{"code-path":"src/components/dashboard/DashboardStats.tsx:56:13",className:"space-y-3 flex-1",children:[t.jsx("div",{"code-path":"src/components/dashboard/DashboardStats.tsx:57:15",className:"dg-skeleton h-4 w-24 rounded"}),t.jsx("div",{"code-path":"src/components/dashboard/DashboardStats.tsx:58:15",className:"dg-skeleton h-8 w-16 rounded"})]}),t.jsx("div",{"code-path":"src/components/dashboard/DashboardStats.tsx:60:13",className:"dg-skeleton h-10 w-10 rounded-lg"})]}),t.jsx("div",{"code-path":"src/components/dashboard/DashboardStats.tsx:62:11",className:"dg-skeleton h-3 w-32 rounded"})]})});const p=o==="up"?Pt:o==="down"?Et:Tt,u=o==="up"?"text-[var(--dg-green)]":o==="down"?"text-[var(--dg-red)]":"text-[var(--dg-text-muted)]";return t.jsx(I,{"code-path":"src/components/dashboard/DashboardStats.tsx:76:5",className:m("dg-card dg-card-hover cursor-pointer overflow-hidden",d&&"cursor-pointer"),onClick:d,children:t.jsx(F,{"code-path":"src/components/dashboard/DashboardStats.tsx:83:7",className:"p-6",children:t.jsxs("div",{"code-path":"src/components/dashboard/DashboardStats.tsx:84:9",className:"flex items-start justify-between gap-4",children:[t.jsxs("div",{"code-path":"src/components/dashboard/DashboardStats.tsx:85:11",className:"space-y-3 min-w-0 flex-1",children:[t.jsx("p",{"code-path":"src/components/dashboard/DashboardStats.tsx:86:13",className:"text-sm font-medium text-[var(--dg-text-secondary)] truncate",children:a}),t.jsxs("div",{"code-path":"src/components/dashboard/DashboardStats.tsx:89:13",className:"flex items-baseline gap-2 flex-wrap",children:[t.jsx("h3",{"code-path":"src/components/dashboard/DashboardStats.tsx:90:15",className:"text-2xl font-bold text-[var(--dg-text-primary)] tracking-tight",children:s}),o&&n&&t.jsxs("span",{"code-path":"src/components/dashboard/DashboardStats.tsx:94:17",className:m("flex items-center text-xs font-semibold gap-0.5",u),children:[t.jsx(p,{"code-path":"src/components/dashboard/DashboardStats.tsx:95:19",className:"h-3.5 w-3.5"}),n]})]}),r&&t.jsx("p",{"code-path":"src/components/dashboard/DashboardStats.tsx:101:15",className:"text-xs text-[var(--dg-text-muted)]",children:r})]}),t.jsx("div",{"code-path":"src/components/dashboard/DashboardStats.tsx:104:11",className:m("p-3 rounded-xl flex-shrink-0",i.bg,i.icon),children:t.jsx(e,{"code-path":"src/components/dashboard/DashboardStats.tsx:111:13",className:"h-5 w-5"})})]})})})}var ra=["points","className","baseLinePoints","connectNulls"];function ee(){return ee=Object.assign?Object.assign.bind():function(a){for(var s=1;s=0)&&Object.prototype.propertyIsEnumerable.call(a,e)&&(r[e]=a[e])}return r}function na(a,s){if(a==null)return{};var r={};for(var e in a)if(Object.prototype.hasOwnProperty.call(a,e)){if(s.indexOf(e)>=0)continue;r[e]=a[e]}return r}function qe(a){return la(a)||ia(a)||da(a)||ca()}function ca(){throw new TypeError(`Invalid attempt to spread non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function da(a,s){if(a){if(typeof a=="string")return Pe(a,s);var r=Object.prototype.toString.call(a).slice(8,-1);if(r==="Object"&&a.constructor&&(r=a.constructor.name),r==="Map"||r==="Set")return Array.from(a);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Pe(a,s)}}function ia(a){if(typeof Symbol<"u"&&a[Symbol.iterator]!=null||a["@@iterator"]!=null)return Array.from(a)}function la(a){if(Array.isArray(a))return Pe(a)}function Pe(a,s){(s==null||s>a.length)&&(s=a.length);for(var r=0,e=new Array(s);r0&&arguments[0]!==void 0?arguments[0]:[],r=[[]];return s.forEach(function(e){He(e)?r[r.length-1].push(e):r[r.length-1].length>0&&r.push([])}),He(s[0])&&r[r.length-1].push(s[0]),r[r.length-1].length<=0&&(r=r.slice(0,-1)),r},de=function(s,r){var e=ha(s);r&&(e=[e.reduce(function(n,c){return[].concat(qe(n),qe(c))},[])]);var o=e.map(function(n){return n.reduce(function(c,d,l){return"".concat(c).concat(l===0?"M":"L").concat(d.x,",").concat(d.y)},"")}).join("");return e.length===1?"".concat(o,"Z"):o},pa=function(s,r,e){var o=de(s,e);return"".concat(o.slice(-1)==="Z"?o.slice(0,-1):o,"L").concat(de(r.reverse(),e).slice(1))},ma=function(s){var r=s.points,e=s.className,o=s.baseLinePoints,n=s.connectNulls,c=oa(s,ra);if(!r||!r.length)return null;var d=U("recharts-polygon",e);if(o&&o.length){var l=c.stroke&&c.stroke!=="none",i=pa(r,o,n);return x.createElement("g",{className:d},x.createElement("path",ee({},C(c,!0),{fill:i.slice(-1)==="Z"?c.fill:"none",stroke:"none",d:i})),l?x.createElement("path",ee({},C(c,!0),{fill:"none",d:de(r,n)})):null,l?x.createElement("path",ee({},C(c,!0),{fill:"none",d:de(o,n)})):null)}var p=de(r,n);return x.createElement("path",ee({},C(c,!0),{fill:p.slice(-1)==="Z"?c.fill:"none",className:d,d:p}))},we,We;function xa(){if(We)return we;We=1;var a=dt(),s=$t(),r=it();function e(o,n){return o&&o.length?a(o,r(n,2),s):void 0}return we=e,we}var ua=xa();const ba=rt(ua);var Re,Ge;function fa(){if(Ge)return Re;Ge=1;var a=dt(),s=it(),r=It();function e(o,n){return o&&o.length?a(o,s(n,2),r):void 0}return Re=e,Re}var ga=fa();const va=rt(ga);var ya=["cx","cy","angle","ticks","axisLine"],ja=["ticks","tick","angle","tickFormatter","stroke"];function re(a){"@babel/helpers - typeof";return re=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(s){return typeof s}:function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},re(a)}function ie(){return ie=Object.assign?Object.assign.bind():function(a){for(var s=1;s=0)&&Object.prototype.propertyIsEnumerable.call(a,e)&&(r[e]=a[e])}return r}function Da(a,s){if(a==null)return{};var r={};for(var e in a)if(Object.prototype.hasOwnProperty.call(a,e)){if(s.indexOf(e)>=0)continue;r[e]=a[e]}return r}function Na(a,s){if(!(a instanceof s))throw new TypeError("Cannot call a class as a function")}function Je(a,s){for(var r=0;ret?c=o==="outer"?"start":"end":n<-et?c=o==="outer"?"end":"start":c="middle",c}},{key:"renderAxisLine",value:function(){var e=this.props,o=e.cx,n=e.cy,c=e.radius,d=e.axisLine,l=e.axisLineType,i=G(G({},C(this.props,!1)),{},{fill:"none"},C(d,!1));if(l==="circle")return x.createElement(Ft,X({className:"recharts-polar-angle-axis-line"},i,{cx:o,cy:n,r:c}));var p=this.props.ticks,u=p.map(function(b){return B(o,n,c,b.coordinate)});return x.createElement(ma,X({className:"recharts-polar-angle-axis-line"},i,{points:u}))}},{key:"renderTicks",value:function(){var e=this,o=this.props,n=o.ticks,c=o.tick,d=o.tickLine,l=o.tickFormatter,i=o.stroke,p=C(this.props,!1),u=C(c,!1),b=G(G({},p),{},{fill:"none"},C(d,!1)),D=n.map(function(f,h){var v=e.getTickLineCoord(f),y=e.getTickTextAnchor(f),j=G(G(G({textAnchor:y},p),{},{stroke:"none",fill:i},u),{},{index:h,payload:f,x:v.x2,y:v.y2});return x.createElement(L,X({className:U("recharts-polar-angle-axis-tick",lt(c)),key:"tick-".concat(f.coordinate)},Fe(e.props,f,h)),d&&x.createElement("line",X({className:"recharts-polar-angle-axis-tick-line"},b,v)),c&&s.renderTickItem(c,j,l?l(f.value,h):f.value))});return x.createElement(L,{className:"recharts-polar-angle-axis-ticks"},D)}},{key:"render",value:function(){var e=this.props,o=e.ticks,n=e.radius,c=e.axisLine;return n<=0||!o||!o.length?null:x.createElement(L,{className:U("recharts-polar-angle-axis",this.props.className)},c&&this.renderAxisLine(),this.renderTicks())}}],[{key:"renderTickItem",value:function(e,o,n){var c;return x.isValidElement(e)?c=x.cloneElement(e,o):Z(e)?c=e(o):c=x.createElement(Ie,X({},o,{className:"recharts-polar-angle-axis-tick-value"}),n),c}}])})(A.PureComponent);Ne(Ce,"displayName","PolarAngleAxis");Ne(Ce,"axisType","angleAxis");Ne(Ce,"defaultProps",{type:"category",angleAxisId:0,scale:"auto",cx:0,cy:0,orientation:"outer",axisLine:!0,tickLine:!0,tickSize:8,tick:!0,hide:!1,allowDuplicatedCategory:!0});var be;function ne(a){"@babel/helpers - typeof";return ne=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(s){return typeof s}:function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},ne(a)}function te(){return te=Object.assign?Object.assign.bind():function(a){for(var s=1;s0?Ut(k,"paddingAngle",0):0;if(S){var M=Ue(S.endAngle-S.startAngle,k.endAngle-k.startAngle),N=g(g({},k),{},{startAngle:j+_,endAngle:j+M(h)+_});v.push(N),j=N.endAngle}else{var O=k.endAngle,P=k.startAngle,J=Ue(0,O-P),H=J(h),T=g(g({},k),{},{startAngle:j+_,endAngle:j+H+_});v.push(T),j=T.endAngle}}),x.createElement(L,null,e.renderSectorsStatically(v))})}},{key:"attachKeyboardHandlers",value:function(e){var o=this;e.onkeydown=function(n){if(!n.altKey)switch(n.key){case"ArrowLeft":{var c=++o.state.sectorToFocus%o.sectorRefs.length;o.sectorRefs[c].focus(),o.setState({sectorToFocus:c});break}case"ArrowRight":{var d=--o.state.sectorToFocus<0?o.sectorRefs.length-1:o.state.sectorToFocus%o.sectorRefs.length;o.sectorRefs[d].focus(),o.setState({sectorToFocus:d});break}case"Escape":{o.sectorRefs[o.state.sectorToFocus].blur(),o.setState({sectorToFocus:0});break}}}}},{key:"renderSectors",value:function(){var e=this.props,o=e.sectors,n=e.isAnimationActive,c=this.state.prevSectors;return n&&o&&o.length&&(!c||!zt(c,o))?this.renderSectorsWithAnimation():this.renderSectorsStatically(o)}},{key:"componentDidMount",value:function(){this.pieRef&&this.attachKeyboardHandlers(this.pieRef)}},{key:"render",value:function(){var e=this,o=this.props,n=o.hide,c=o.sectors,d=o.className,l=o.label,i=o.cx,p=o.cy,u=o.innerRadius,b=o.outerRadius,D=o.isAnimationActive,f=this.state.isAnimationFinished;if(n||!c||!c.length||!Q(i)||!Q(p)||!Q(u)||!Q(b))return null;var h=U("recharts-pie",d);return x.createElement(L,{tabIndex:this.props.rootTabIndex,className:h,ref:function(y){e.pieRef=y}},this.renderSectors(),l&&this.renderLabels(c),ht.renderCallByParent(this.props,null,!1),(!D||f)&&Vt.renderCallByParent(this.props,c,!1))}}],[{key:"getDerivedStateFromProps",value:function(e,o){return o.prevIsAnimationActive!==e.isAnimationActive?{prevIsAnimationActive:e.isAnimationActive,prevAnimationId:e.animationId,curSectors:e.sectors,prevSectors:[],isAnimationFinished:!0}:e.isAnimationActive&&e.animationId!==o.prevAnimationId?{prevAnimationId:e.animationId,curSectors:e.sectors,prevSectors:o.curSectors,isAnimationFinished:!0}:e.sectors!==o.curSectors?{curSectors:e.sectors,isAnimationFinished:!0}:null}},{key:"getTextAnchor",value:function(e,o){return e>o?"start":e=360?j:j-1)*l,w=v-j*D-k,S=o.reduce(function(N,O){var P=Y(O,y,0);return N+(Q(P)?P:0)},0),_;if(S>0){var M;_=o.map(function(N,O){var P=Y(N,y,0),J=Y(N,p,O),H=(Q(P)?P:0)/S,T;O?T=M.endAngle+ue(h)*l*(P!==0?1:0):T=c;var ce=T+ue(h)*((P!==0?D:0)+H*w),R=(T+ce)/2,Me=(f.innerRadius+f.outerRadius)/2,Nt=[{name:J,value:P,payload:N,dataKey:y,type:b}],Ct=B(f.cx,f.cy,Me,R);return M=g(g(g({percent:H,cornerRadius:n,name:J,tooltipPayload:Nt,midAngle:R,middleRadius:Me,tooltipPosition:Ct},N),f),{},{value:Y(N,y),startAngle:T,endAngle:ce,payload:N,paddingAngle:ue(h)*l}),M})}return g(g({},f),{},{sectors:_,data:o})});var qa=Zt({chartName:"PieChart",GraphicalChild:K,validateTooltipEventTypes:["item"],defaultTooltipEventType:"item",legendContent:"children",axisComponents:[{axisType:"angleAxis",AxisComp:Ce},{axisType:"radiusAxis",AxisComp:De}],formatAxisMap:Xt,defaultProps:{layout:"centric",startAngle:0,endAngle:360,cx:"50%",cy:"50%",innerRadius:0,outerRadius:"80%"}});const Ha={阿里云:"#ff6a00",aliyun:"#ff6a00",AWS:"#ff9900",aws:"#ff9900",腾讯云:"#006eff",tencent:"#006eff",华为云:"#ff0000",huawei:"#ff0000",Azure:"#0078d4",azure:"#0078d4"},st=["#ff6a00","#ff9900","#006eff","#ff0000","#0078d4","#10b981","#a855f7","#ec4899"];function Dt(a){if(!a||a.length<2)return{pct:0,label:"暂无数据",direction:"neutral"};const s=Number(a[a.length-1].cost??0),r=Number(a[a.length-2].cost??0);if(r===0)return{pct:0,label:s>0?"新增费用":"持平",direction:"neutral"};const e=(s-r)/r*100,o=e>.05?"up":e<-.05?"down":"neutral",n=`${e>0?"+":""}${e.toFixed(1)}% 较上月`;return{pct:e,label:n,direction:o}}function Wa(a,s,r,e=24){const o=[];for(let n=e-1;n>=0;n--){const c=new Date(Date.now()-n*60*60*1e3);o.push({time:`${c.getHours().toString().padStart(2,"0")}:00`,cpu:Number(Math.max(0,Math.min(100,a+(Math.random()-.5)*15)).toFixed(1)),memory:Number(Math.max(0,Math.min(100,s+(Math.random()-.5)*10)).toFixed(1)),disk:Number(Math.max(0,Math.min(100,r+(Math.random()-.5)*5)).toFixed(1))})}return o}function Ga(a,s){if(!a||a.length===0)return[];const r={};for(const e of a){const o=e.timestamp;if(!o)continue;const c=`${new Date(o).getHours().toString().padStart(2,"0")}:00`;r[c]||(r[c]={}),e.name==="cpu"&&(r[c].cpu=Number(e.value)||0),e.name==="memory"&&(r[c].memory=Number(e.value)||0)}return Object.entries(r).sort((e,o)=>e[0].localeCompare(o[0])).map(([e,o])=>({time:e,cpu:Number((o.cpu??0).toFixed(1)),memory:Number((o.memory??0).toFixed(1)),disk:Number(s.toFixed(1))}))}function $e({active:a,payload:s,label:r}){return!a||!s?null:t.jsxs("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:94:5",className:"chart-tooltip px-3 py-2",children:[t.jsx("p",{"code-path":"src/components/dashboard/DashboardCharts.tsx:95:7",className:"text-xs font-medium mb-1.5",style:{color:"var(--dg-text-secondary)"},children:r}),s.map((e,o)=>t.jsxs("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:97:9",className:"flex items-center gap-2 text-xs",children:[t.jsx("span",{"code-path":"src/components/dashboard/DashboardCharts.tsx:98:11",className:"w-2 h-2 rounded-full",style:{backgroundColor:e.color}}),t.jsxs("span",{"code-path":"src/components/dashboard/DashboardCharts.tsx:99:11",style:{color:"var(--dg-text-muted)"},children:[e.name,":"]}),t.jsx("span",{"code-path":"src/components/dashboard/DashboardCharts.tsx:100:11",className:"font-medium",style:{color:"var(--dg-text-primary)"},children:typeof e.value=="number"?`${e.value}%`:e.value})]},o))]})}function Za({costStats:a}){const s=a?.cloud_costs??[],r=a?.month_trend??[],e=s.map((d,l)=>({name:d.cloud,value:d.cost,color:Ha[d.cloud]||st[l%st.length]})),o=r.map(d=>({month:d.month,cost:d.cost})),n=a?.total_cost??e.reduce((d,l)=>d+l.value,0),c=Dt(r);return t.jsxs(I,{"code-path":"src/components/dashboard/DashboardCharts.tsx:123:5",className:"dg-card dg-card-hover",children:[t.jsx(z,{"code-path":"src/components/dashboard/DashboardCharts.tsx:124:7",className:"pb-2",children:t.jsxs("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:125:9",className:"flex items-center justify-between",children:[t.jsxs("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:126:11",children:[t.jsx(V,{"code-path":"src/components/dashboard/DashboardCharts.tsx:127:13",className:"text-[var(--dg-text-primary)]",children:"云成本概览"}),t.jsx(q,{"code-path":"src/components/dashboard/DashboardCharts.tsx:128:13",className:"text-[var(--dg-text-muted)]",children:"本月各云平台费用支出"})]}),t.jsxs("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:130:11",className:"text-right",children:[t.jsxs("p",{"code-path":"src/components/dashboard/DashboardCharts.tsx:131:13",className:"text-2xl font-bold text-[var(--dg-text-primary)] tracking-tight",children:["¥",Number(n).toLocaleString()]}),t.jsx("p",{"code-path":"src/components/dashboard/DashboardCharts.tsx:134:13",className:m("text-xs font-medium mt-0.5",c.direction==="up"?"text-[var(--dg-green)]":c.direction==="down"?"text-[var(--dg-red)]":"text-[var(--dg-text-muted)]"),children:c.label})]})]})}),t.jsxs(F,{"code-path":"src/components/dashboard/DashboardCharts.tsx:145:7",children:[t.jsxs("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:146:9",className:"grid grid-cols-2 gap-4",children:[t.jsxs("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:147:11",children:[t.jsx("p",{"code-path":"src/components/dashboard/DashboardCharts.tsx:148:13",className:"text-sm text-[var(--dg-text-secondary)] mb-2",children:"费用分布"}),t.jsx("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:149:13",className:"h-[180px]",children:t.jsx(Oe,{"code-path":"src/components/dashboard/DashboardCharts.tsx:150:15",width:"100%",height:"100%",children:t.jsxs(qa,{"code-path":"src/components/dashboard/DashboardCharts.tsx:151:17",children:[t.jsx(K,{"code-path":"src/components/dashboard/DashboardCharts.tsx:152:19",data:e,cx:"50%",cy:"50%",innerRadius:40,outerRadius:70,paddingAngle:2,dataKey:"value",stroke:"none",children:e.map((d,l)=>t.jsx(pt,{"code-path":"src/components/dashboard/DashboardCharts.tsx:163:23",fill:d.color},`cell-${l}`))}),t.jsx(_e,{"code-path":"src/components/dashboard/DashboardCharts.tsx:166:19",content:t.jsx($e,{"code-path":"src/components/dashboard/DashboardCharts.tsx:166:37"})})]})})})]}),t.jsxs("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:171:11",children:[t.jsx("p",{"code-path":"src/components/dashboard/DashboardCharts.tsx:172:13",className:"text-sm text-[var(--dg-text-secondary)] mb-2",children:"月度趋势"}),t.jsx("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:173:13",className:"h-[180px]",children:t.jsx(Oe,{"code-path":"src/components/dashboard/DashboardCharts.tsx:174:15",width:"100%",height:"100%",children:t.jsxs(Qt,{"code-path":"src/components/dashboard/DashboardCharts.tsx:175:17",data:o,margin:{top:5,right:5,left:0,bottom:5},children:[t.jsx(mt,{"code-path":"src/components/dashboard/DashboardCharts.tsx:176:19",strokeDasharray:"3 3",className:"chart-grid-stroke",stroke:"var(--chart-grid)"}),t.jsx(xt,{"code-path":"src/components/dashboard/DashboardCharts.tsx:177:19",dataKey:"month",stroke:"var(--chart-axis)",fontSize:10,tickLine:!1,axisLine:!1}),t.jsx(ut,{"code-path":"src/components/dashboard/DashboardCharts.tsx:178:19",stroke:"var(--chart-axis)",fontSize:10,tickLine:!1,axisLine:!1}),t.jsx(_e,{"code-path":"src/components/dashboard/DashboardCharts.tsx:179:19",content:t.jsx($e,{"code-path":"src/components/dashboard/DashboardCharts.tsx:179:37"})}),t.jsx(Jt,{"code-path":"src/components/dashboard/DashboardCharts.tsx:180:19",dataKey:"cost",fill:"var(--dg-blue)",radius:[4,4,0,0]})]})})})]})]}),t.jsx("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:186:9",className:"mt-4 space-y-2",children:e.map(d=>t.jsxs("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:188:13",className:"flex items-center justify-between",children:[t.jsxs("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:189:15",className:"flex items-center gap-2",children:[t.jsx("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:190:17",className:"w-3 h-3 rounded-full",style:{backgroundColor:d.color}}),t.jsx("span",{"code-path":"src/components/dashboard/DashboardCharts.tsx:191:17",className:"text-sm text-[var(--dg-text-secondary)]",children:d.name})]}),t.jsxs("span",{"code-path":"src/components/dashboard/DashboardCharts.tsx:193:15",className:"text-sm font-semibold text-[var(--dg-text-primary)]",children:["¥",Number(d.value).toLocaleString()]})]},d.name))})]})]})}function Xa({topUsage:a}){const s=(a?.cpu??[]).slice(0,5),r=(a?.memory??[]).slice(0,5),e=(a?.disk??[]).slice(0,5),o=(n,c,d,l,i)=>t.jsxs("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:215:5",children:[t.jsxs("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:216:7",className:"flex items-center gap-2 mb-3",children:[l,t.jsx("span",{"code-path":"src/components/dashboard/DashboardCharts.tsx:218:9",className:"text-sm font-semibold text-[var(--dg-text-secondary)]",children:i})]}),t.jsx("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:220:7",className:"space-y-2.5",children:n.map((p,u)=>{const b=Number(p.usage??0);return t.jsxs("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:224:13",className:"flex items-center gap-2.5",children:[t.jsx("span",{"code-path":"src/components/dashboard/DashboardCharts.tsx:225:15",className:"text-xs font-mono text-[var(--dg-text-muted)] w-5 text-center",children:u+1}),t.jsxs("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:228:15",className:"flex-1 min-w-0",children:[t.jsx("p",{"code-path":"src/components/dashboard/DashboardCharts.tsx:229:17",className:"text-xs text-[var(--dg-text-secondary)] truncate font-medium",children:p.hostname}),t.jsxs("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:230:17",className:"flex items-center gap-2 mt-1",children:[t.jsx("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:231:19",className:"flex-1 h-1.5 bg-[var(--dg-bg-tertiary)] rounded-full overflow-hidden",children:t.jsx("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:232:21",className:m("h-full rounded-full transition-all duration-500",b>80?"bg-[var(--dg-red)]":b>60?"bg-[var(--dg-yellow)]":d),style:{width:`${Math.min(b,100)}%`}})}),t.jsxs("span",{"code-path":"src/components/dashboard/DashboardCharts.tsx:240:19",className:m("text-xs font-mono font-medium w-12 text-right",b>80?"text-[var(--dg-red)]":b>60?"text-[var(--dg-yellow)]":"text-[var(--dg-text-muted)]"),children:[b.toFixed(1),"%"]})]})]})]},p.id??u)})})]});return t.jsxs(I,{"code-path":"src/components/dashboard/DashboardCharts.tsx:256:5",className:"dg-card dg-card-hover",children:[t.jsx(z,{"code-path":"src/components/dashboard/DashboardCharts.tsx:257:7",className:"pb-2",children:t.jsxs("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:258:9",children:[t.jsx(V,{"code-path":"src/components/dashboard/DashboardCharts.tsx:259:11",className:"text-[var(--dg-text-primary)]",children:"Top5 资源使用"}),t.jsx(q,{"code-path":"src/components/dashboard/DashboardCharts.tsx:260:11",className:"text-[var(--dg-text-muted)]",children:"CPU、内存、磁盘使用率最高"})]})}),t.jsx(F,{"code-path":"src/components/dashboard/DashboardCharts.tsx:263:7",children:t.jsxs("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:264:9",className:"grid grid-cols-3 gap-4",children:[o(s,"blue","bg-[var(--dg-blue)]",t.jsx(ot,{"code-path":"src/components/dashboard/DashboardCharts.tsx:265:69",className:"h-4 w-4 text-[var(--dg-blue)]"}),"CPU"),o(r,"emerald","bg-[var(--dg-green)]",t.jsx(ea,{"code-path":"src/components/dashboard/DashboardCharts.tsx:266:76",className:"h-4 w-4 text-[var(--dg-green)]"}),"内存"),o(e,"purple","bg-[var(--dg-purple)]",t.jsx(Rt,{"code-path":"src/components/dashboard/DashboardCharts.tsx:267:74",className:"h-4 w-4 text-[var(--dg-purple)]"}),"磁盘")]})})]})}function Ja({avgCpu:a,avgMemory:s,avgDisk:r,metrics:e}){const o=Ga(e??[],r),n=o.length>0?o:Wa(a,s,r,24);return t.jsxs(I,{"code-path":"src/components/dashboard/DashboardCharts.tsx:289:5",className:"dg-card",children:[t.jsx(z,{"code-path":"src/components/dashboard/DashboardCharts.tsx:290:7",className:"pb-2",children:t.jsxs("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:291:9",className:"flex items-center justify-between flex-wrap gap-3",children:[t.jsxs("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:292:11",children:[t.jsx(V,{"code-path":"src/components/dashboard/DashboardCharts.tsx:293:13",className:"text-[var(--dg-text-primary)]",children:"资源使用率趋势"}),t.jsx(q,{"code-path":"src/components/dashboard/DashboardCharts.tsx:294:13",className:"text-[var(--dg-text-muted)]",children:"过去24小时系统资源使用情况"})]}),t.jsxs("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:296:11",className:"flex items-center gap-2",children:[t.jsxs($,{"code-path":"src/components/dashboard/DashboardCharts.tsx:297:13",variant:"outline",className:"dg-badge-blue border",children:[t.jsx(ot,{"code-path":"src/components/dashboard/DashboardCharts.tsx:298:15",className:"h-3 w-3 mr-1"}),"CPU"]}),t.jsxs($,{"code-path":"src/components/dashboard/DashboardCharts.tsx:301:13",variant:"outline",className:"dg-badge-green border",children:[t.jsx(wt,{"code-path":"src/components/dashboard/DashboardCharts.tsx:302:15",className:"h-3 w-3 mr-1"}),"内存"]}),t.jsxs($,{"code-path":"src/components/dashboard/DashboardCharts.tsx:305:13",variant:"outline",className:"dg-badge-purple border",children:[t.jsx(Lt,{"code-path":"src/components/dashboard/DashboardCharts.tsx:306:15",className:"h-3 w-3 mr-1"}),"磁盘"]})]})]})}),t.jsx(F,{"code-path":"src/components/dashboard/DashboardCharts.tsx:312:7",children:t.jsx("div",{"code-path":"src/components/dashboard/DashboardCharts.tsx:313:9",className:"h-[280px]",children:t.jsx(Oe,{"code-path":"src/components/dashboard/DashboardCharts.tsx:314:11",width:"100%",height:"100%",children:t.jsxs(Yt,{"code-path":"src/components/dashboard/DashboardCharts.tsx:315:13",data:n,margin:{top:10,right:10,left:0,bottom:0},children:[t.jsxs("defs",{"code-path":"src/components/dashboard/DashboardCharts.tsx:316:15",children:[t.jsxs("linearGradient",{"code-path":"src/components/dashboard/DashboardCharts.tsx:317:17",id:"colorCpu",x1:"0",y1:"0",x2:"0",y2:"1",children:[t.jsx("stop",{"code-path":"src/components/dashboard/DashboardCharts.tsx:318:19",offset:"5%",stopColor:"var(--dg-blue)",stopOpacity:.3}),t.jsx("stop",{"code-path":"src/components/dashboard/DashboardCharts.tsx:319:19",offset:"95%",stopColor:"var(--dg-blue)",stopOpacity:0})]}),t.jsxs("linearGradient",{"code-path":"src/components/dashboard/DashboardCharts.tsx:321:17",id:"colorMemory",x1:"0",y1:"0",x2:"0",y2:"1",children:[t.jsx("stop",{"code-path":"src/components/dashboard/DashboardCharts.tsx:322:19",offset:"5%",stopColor:"var(--dg-green)",stopOpacity:.3}),t.jsx("stop",{"code-path":"src/components/dashboard/DashboardCharts.tsx:323:19",offset:"95%",stopColor:"var(--dg-green)",stopOpacity:0})]}),t.jsxs("linearGradient",{"code-path":"src/components/dashboard/DashboardCharts.tsx:325:17",id:"colorDisk",x1:"0",y1:"0",x2:"0",y2:"1",children:[t.jsx("stop",{"code-path":"src/components/dashboard/DashboardCharts.tsx:326:19",offset:"5%",stopColor:"var(--dg-purple)",stopOpacity:.3}),t.jsx("stop",{"code-path":"src/components/dashboard/DashboardCharts.tsx:327:19",offset:"95%",stopColor:"var(--dg-purple)",stopOpacity:0})]})]}),t.jsx(mt,{"code-path":"src/components/dashboard/DashboardCharts.tsx:330:15",strokeDasharray:"3 3",stroke:"var(--chart-grid)"}),t.jsx(xt,{"code-path":"src/components/dashboard/DashboardCharts.tsx:331:15",dataKey:"time",stroke:"var(--chart-axis)",fontSize:12,tickLine:!1,axisLine:!1}),t.jsx(ut,{"code-path":"src/components/dashboard/DashboardCharts.tsx:332:15",stroke:"var(--chart-axis)",fontSize:12,tickLine:!1,axisLine:!1,unit:"%"}),t.jsx(_e,{"code-path":"src/components/dashboard/DashboardCharts.tsx:333:15",content:t.jsx($e,{"code-path":"src/components/dashboard/DashboardCharts.tsx:333:33"})}),t.jsx(ke,{"code-path":"src/components/dashboard/DashboardCharts.tsx:334:15",type:"monotone",dataKey:"cpu",stroke:"var(--dg-blue)",fillOpacity:1,fill:"url(#colorCpu)",strokeWidth:2,name:"CPU"}),t.jsx(ke,{"code-path":"src/components/dashboard/DashboardCharts.tsx:335:15",type:"monotone",dataKey:"memory",stroke:"var(--dg-green)",fillOpacity:1,fill:"url(#colorMemory)",strokeWidth:2,name:"内存"}),t.jsx(ke,{"code-path":"src/components/dashboard/DashboardCharts.tsx:336:15",type:"monotone",dataKey:"disk",stroke:"var(--dg-purple)",fillOpacity:1,fill:"url(#colorDisk)",strokeWidth:2,name:"磁盘"})]})})})})]})}function Ya({severity:a}){return t.jsx("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:31:5",className:m("w-2 h-2 rounded-full flex-shrink-0 mt-1.5",a==="critical"&&"bg-[var(--dg-red)]",a==="warning"&&"bg-[var(--dg-yellow)]",a==="info"&&"bg-[var(--dg-blue)]")})}function Qa({severity:a}){return t.jsx($,{"code-path":"src/components/dashboard/DashboardRecent.tsx:45:5",variant:"outline",className:m("text-xs font-medium",a==="critical"&&"dg-badge-red border",a==="warning"&&"dg-badge-yellow border",a==="info"&&"dg-badge-blue border"),children:a==="critical"?"严重":a==="warning"?"警告":"提示"})}function es({alerts:a}){const s=le(),r=a.filter(e=>e.status==="firing").slice(0,8);return t.jsxs(I,{"code-path":"src/components/dashboard/DashboardRecent.tsx:64:5",className:"dg-card dg-card-hover",children:[t.jsx(z,{"code-path":"src/components/dashboard/DashboardRecent.tsx:65:7",className:"pb-2",children:t.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:66:9",className:"flex items-center justify-between",children:[t.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:67:11",children:[t.jsx(V,{"code-path":"src/components/dashboard/DashboardRecent.tsx:68:13",className:"text-[var(--dg-text-primary)]",children:"告警消息"}),t.jsx(q,{"code-path":"src/components/dashboard/DashboardRecent.tsx:69:13",className:"text-[var(--dg-text-muted)]",children:"最近触发的告警事件"})]}),t.jsxs(se,{"code-path":"src/components/dashboard/DashboardRecent.tsx:71:11",variant:"ghost",size:"sm",className:"dg-btn-ghost text-xs",onClick:()=>s("/alerts"),children:["查看全部",t.jsx(he,{"code-path":"src/components/dashboard/DashboardRecent.tsx:78:13",className:"h-3.5 w-3.5 ml-1"})]})]})}),t.jsx(F,{"code-path":"src/components/dashboard/DashboardRecent.tsx:82:7",children:t.jsx(nt,{"code-path":"src/components/dashboard/DashboardRecent.tsx:83:9",className:"h-[320px] scrollbar-thin",children:r.length===0?t.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:85:13",className:"flex flex-col items-center justify-center py-12 text-[var(--dg-text-muted)]",children:[t.jsx(ct,{"code-path":"src/components/dashboard/DashboardRecent.tsx:86:15",className:"h-10 w-10 mb-3 opacity-30"}),t.jsx("p",{"code-path":"src/components/dashboard/DashboardRecent.tsx:87:15",className:"text-sm",children:"暂无告警事件"}),t.jsx("p",{"code-path":"src/components/dashboard/DashboardRecent.tsx:88:15",className:"text-xs mt-1 opacity-60",children:"所有系统运行正常"})]}):t.jsx("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:91:13",className:"space-y-1.5 pr-2",children:r.map(e=>t.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:93:17",className:"flex items-start gap-3 p-3 rounded-lg bg-[var(--dg-bg-tertiary)]/50 hover:bg-[var(--dg-bg-hover)] transition-all duration-200 cursor-pointer group",onClick:()=>s("/alert-center"),children:[t.jsx(Ya,{"code-path":"src/components/dashboard/DashboardRecent.tsx:98:19",severity:e.severity||"info"}),t.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:99:19",className:"flex-1 min-w-0",children:[t.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:100:21",className:"flex items-center gap-2 flex-wrap",children:[t.jsx("span",{"code-path":"src/components/dashboard/DashboardRecent.tsx:101:23",className:"text-sm font-medium text-[var(--dg-text-primary)] truncate",children:e.rule_name}),t.jsx(Qa,{"code-path":"src/components/dashboard/DashboardRecent.tsx:104:23",severity:e.severity||"info"})]}),t.jsx("p",{"code-path":"src/components/dashboard/DashboardRecent.tsx:106:21",className:"text-xs text-[var(--dg-text-muted)] mt-1",children:e.target}),t.jsx("p",{"code-path":"src/components/dashboard/DashboardRecent.tsx:107:21",className:"text-xs text-[var(--dg-text-muted)]/70 line-clamp-1",children:e.message})]}),t.jsx("span",{"code-path":"src/components/dashboard/DashboardRecent.tsx:109:19",className:"text-[11px] text-[var(--dg-text-muted)]/50 whitespace-nowrap flex-shrink-0",children:e.created_at?new Date(e.created_at).toLocaleTimeString("zh-CN",{hour:"2-digit",minute:"2-digit"}):""})]},e.id))})})})]})}function ts({expCerts:a}){const s=(a??[]).map(o=>({...o,daysUntilExpiry:o.days_until_expiry??Math.ceil((new Date(o.expire_date).getTime()-Date.now())/864e5)})).sort((o,n)=>o.daysUntilExpiry-n.daysUntilExpiry),r=s.filter(o=>o.daysUntilExpiry<30).length,e=s.filter(o=>o.daysUntilExpiry>=30&&o.daysUntilExpiry<60).length;return t.jsxs(I,{"code-path":"src/components/dashboard/DashboardRecent.tsx:134:5",className:"dg-card dg-card-hover",children:[t.jsx(z,{"code-path":"src/components/dashboard/DashboardRecent.tsx:135:7",className:"pb-2",children:t.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:136:9",className:"flex items-center justify-between flex-wrap gap-2",children:[t.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:137:11",children:[t.jsx(V,{"code-path":"src/components/dashboard/DashboardRecent.tsx:138:13",className:"text-[var(--dg-text-primary)]",children:"证书到期提醒"}),t.jsx(q,{"code-path":"src/components/dashboard/DashboardRecent.tsx:139:13",className:"text-[var(--dg-text-muted)]",children:"SSL证书到期时间监控"})]}),t.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:141:11",className:"flex items-center gap-2",children:[r>0&&t.jsxs($,{"code-path":"src/components/dashboard/DashboardRecent.tsx:143:15",className:"dg-badge-red border",children:[t.jsx(ct,{"code-path":"src/components/dashboard/DashboardRecent.tsx:144:17",className:"h-3 w-3 mr-1"}),r," 即将过期"]}),e>0&&t.jsxs($,{"code-path":"src/components/dashboard/DashboardRecent.tsx:149:15",className:"dg-badge-yellow border",children:[e," 30天内过期"]})]})]})}),t.jsx(F,{"code-path":"src/components/dashboard/DashboardRecent.tsx:156:7",children:t.jsx(nt,{"code-path":"src/components/dashboard/DashboardRecent.tsx:157:9",className:"h-[280px] scrollbar-thin",children:s.length===0?t.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:159:13",className:"flex flex-col items-center justify-center py-10 text-[var(--dg-text-muted)]",children:[t.jsx(Be,{"code-path":"src/components/dashboard/DashboardRecent.tsx:160:15",className:"h-10 w-10 mb-3 opacity-30"}),t.jsx("p",{"code-path":"src/components/dashboard/DashboardRecent.tsx:161:15",className:"text-sm",children:"暂无证书数据"})]}):t.jsx("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:164:13",className:"space-y-1.5 pr-2",children:s.map(o=>t.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:166:17",className:"flex items-center justify-between p-3 rounded-lg bg-[var(--dg-bg-tertiary)]/50 hover:bg-[var(--dg-bg-hover)] transition-all duration-200",children:[t.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:170:19",className:"flex items-center gap-3 min-w-0",children:[t.jsx("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:171:21",className:m("w-8 h-8 rounded-lg flex items-center justify-center flex-shrink-0",o.daysUntilExpiry<30?"bg-[var(--dg-red)]/10":o.daysUntilExpiry<60?"bg-[var(--dg-yellow)]/10":"bg-[var(--dg-green)]/10"),children:t.jsx(Be,{"code-path":"src/components/dashboard/DashboardRecent.tsx:179:23",className:m("h-4 w-4",o.daysUntilExpiry<30?"text-[var(--dg-red)]":o.daysUntilExpiry<60?"text-[var(--dg-yellow)]":"text-[var(--dg-green)]")})}),t.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:186:21",className:"min-w-0",children:[t.jsx("p",{"code-path":"src/components/dashboard/DashboardRecent.tsx:187:23",className:"text-sm font-medium text-[var(--dg-text-primary)] truncate",children:o.name}),t.jsxs("p",{"code-path":"src/components/dashboard/DashboardRecent.tsx:188:23",className:"text-xs text-[var(--dg-text-muted)]",children:["到期: ",o.expire_date?.substring(0,10)]})]})]}),t.jsx($,{"code-path":"src/components/dashboard/DashboardRecent.tsx:191:19",variant:"outline",className:m("text-xs flex-shrink-0",o.daysUntilExpiry<30?"dg-badge-red border":o.daysUntilExpiry<60?"dg-badge-yellow border":"dg-badge-green border"),children:o.daysUntilExpiry<0?"已过期":`${o.daysUntilExpiry} 天`})]},o.id))})})})]})}function as({releases:a}){const s=le(),r=a?.slice(0,5)??[];return t.jsxs(I,{"code-path":"src/components/dashboard/DashboardRecent.tsx:217:5",className:"dg-card dg-card-hover",children:[t.jsx(z,{"code-path":"src/components/dashboard/DashboardRecent.tsx:218:7",className:"pb-2",children:t.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:219:9",className:"flex items-center justify-between",children:[t.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:220:11",children:[t.jsx(V,{"code-path":"src/components/dashboard/DashboardRecent.tsx:221:13",className:"text-[var(--dg-text-primary)]",children:"发布历史"}),t.jsx(q,{"code-path":"src/components/dashboard/DashboardRecent.tsx:222:13",className:"text-[var(--dg-text-muted)]",children:"今日应用发布记录"})]}),t.jsxs(se,{"code-path":"src/components/dashboard/DashboardRecent.tsx:224:11",variant:"ghost",size:"sm",className:"dg-btn-ghost text-xs",onClick:()=>s("/pipelines"),children:["查看全部",t.jsx(he,{"code-path":"src/components/dashboard/DashboardRecent.tsx:231:13",className:"h-3.5 w-3.5 ml-1"})]})]})}),t.jsx(F,{"code-path":"src/components/dashboard/DashboardRecent.tsx:235:7",children:r.length===0?t.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:237:11",className:"flex flex-col items-center justify-center py-10 text-[var(--dg-text-muted)]",children:[t.jsx(Ke,{"code-path":"src/components/dashboard/DashboardRecent.tsx:238:13",className:"h-10 w-10 mb-3 opacity-30"}),t.jsx("p",{"code-path":"src/components/dashboard/DashboardRecent.tsx:239:13",className:"text-sm",children:"暂无发布记录"})]}):t.jsx("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:242:11",className:"space-y-2",children:r.map(e=>t.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:244:15",className:"flex items-center gap-3 p-3 rounded-lg bg-[var(--dg-bg-tertiary)]/50 hover:bg-[var(--dg-bg-hover)] transition-all duration-200",children:[t.jsx("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:248:17",className:m("w-8 h-8 rounded-lg flex items-center justify-center flex-shrink-0",e.status==="success"?"bg-[var(--dg-green)]/10":e.status==="failed"?"bg-[var(--dg-red)]/10":e.status==="deploying"?"bg-[var(--dg-blue)]/10":"bg-[var(--dg-yellow)]/10"),children:t.jsx(Ke,{"code-path":"src/components/dashboard/DashboardRecent.tsx:257:19",className:m("h-4 w-4",e.status==="success"?"text-[var(--dg-green)]":e.status==="failed"?"text-[var(--dg-red)]":e.status==="deploying"?"text-[var(--dg-blue)]":"text-[var(--dg-yellow)]")})}),t.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:265:17",className:"flex-1 min-w-0",children:[t.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:266:19",className:"flex items-center gap-2",children:[t.jsx("span",{"code-path":"src/components/dashboard/DashboardRecent.tsx:267:21",className:"text-sm font-medium text-[var(--dg-text-primary)] truncate",children:e.app_name}),t.jsx($,{"code-path":"src/components/dashboard/DashboardRecent.tsx:268:21",variant:"outline",className:"text-xs border-[var(--dg-border)] text-[var(--dg-text-muted)] flex-shrink-0",children:e.version})]}),t.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:272:19",className:"flex items-center gap-2 mt-0.5",children:[t.jsx("span",{"code-path":"src/components/dashboard/DashboardRecent.tsx:273:21",className:"text-xs text-[var(--dg-text-muted)]",children:e.environment}),t.jsx("span",{"code-path":"src/components/dashboard/DashboardRecent.tsx:274:21",className:"text-xs text-[var(--dg-border)]",children:"·"}),t.jsx("span",{"code-path":"src/components/dashboard/DashboardRecent.tsx:275:21",className:"text-xs text-[var(--dg-text-muted)] truncate",children:e.commit_id})]})]}),t.jsx($,{"code-path":"src/components/dashboard/DashboardRecent.tsx:278:17",variant:"outline",className:m("text-xs flex-shrink-0",e.status==="success"?"dg-badge-green border":e.status==="failed"?"dg-badge-red border":e.status==="deploying"?"dg-badge-blue border":"dg-badge-yellow border"),children:e.status==="success"?"成功":e.status==="failed"?"失败":e.status==="deploying"?"发布中":e.status==="rolled_back"?"已回滚":"构建中"})]},e.id))})})]})}function ss({servers:a}){const s=le(),r=a.filter(n=>n.status==="running").length,e=a.filter(n=>n.status==="stopped").length,o=a.filter(n=>n.status==="maintenance").length;return t.jsxs(I,{"code-path":"src/components/dashboard/DashboardRecent.tsx:309:5",className:"dg-card dg-card-hover",children:[t.jsx(z,{"code-path":"src/components/dashboard/DashboardRecent.tsx:310:7",className:"pb-2",children:t.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:311:9",className:"flex items-center justify-between",children:[t.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:312:11",children:[t.jsx(V,{"code-path":"src/components/dashboard/DashboardRecent.tsx:313:13",className:"text-[var(--dg-text-primary)]",children:"服务器状态"}),t.jsx(q,{"code-path":"src/components/dashboard/DashboardRecent.tsx:314:13",className:"text-[var(--dg-text-muted)]",children:"服务器运行状态分布"})]}),t.jsxs(se,{"code-path":"src/components/dashboard/DashboardRecent.tsx:316:11",variant:"ghost",size:"sm",className:"dg-btn-ghost text-xs",onClick:()=>s("/servers"),children:["查看全部",t.jsx(he,{"code-path":"src/components/dashboard/DashboardRecent.tsx:323:13",className:"h-3.5 w-3.5 ml-1"})]})]})}),t.jsxs(F,{"code-path":"src/components/dashboard/DashboardRecent.tsx:327:7",children:[t.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:329:9",className:"grid grid-cols-3 gap-3 mb-4",children:[t.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:330:11",className:"text-center p-3 rounded-xl bg-[var(--dg-green)]/8 border border-[var(--dg-green)]/15",children:[t.jsx("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:331:13",className:"text-2xl font-bold text-[var(--dg-green)]",children:r}),t.jsx("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:332:13",className:"text-xs text-[var(--dg-text-muted)] mt-1",children:"运行中"})]}),t.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:334:11",className:"text-center p-3 rounded-xl bg-[var(--dg-yellow)]/8 border border-[var(--dg-yellow)]/15",children:[t.jsx("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:335:13",className:"text-2xl font-bold text-[var(--dg-yellow)]",children:o}),t.jsx("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:336:13",className:"text-xs text-[var(--dg-text-muted)] mt-1",children:"维护中"})]}),t.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:338:11",className:"text-center p-3 rounded-xl bg-[var(--dg-text-muted)]/8 border border-[var(--dg-border)]",children:[t.jsx("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:339:13",className:"text-2xl font-bold text-[var(--dg-text-muted)]",children:e}),t.jsx("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:340:13",className:"text-xs text-[var(--dg-text-muted)] mt-1",children:"已停止"})]})]}),t.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:345:9",className:"space-y-1.5",children:[a.slice(0,4).map(n=>t.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:347:13",className:"flex items-center gap-3 p-2.5 rounded-lg bg-[var(--dg-bg-tertiary)]/50 hover:bg-[var(--dg-bg-hover)] transition-all duration-200",children:[t.jsx(ta,{"code-path":"src/components/dashboard/DashboardRecent.tsx:351:15",className:m("h-2.5 w-2.5 flex-shrink-0 fill-current",n.status==="running"?"text-[var(--dg-green)]":n.status==="maintenance"?"text-[var(--dg-yellow)]":"text-[var(--dg-text-muted)]")}),t.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:359:15",className:"flex-1 min-w-0",children:[t.jsx("p",{"code-path":"src/components/dashboard/DashboardRecent.tsx:360:17",className:"text-sm text-[var(--dg-text-primary)] truncate",children:n.hostname}),t.jsx("p",{"code-path":"src/components/dashboard/DashboardRecent.tsx:361:17",className:"text-xs text-[var(--dg-text-muted)]",children:n.ip})]}),t.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:363:15",className:"text-right flex-shrink-0",children:[t.jsxs("p",{"code-path":"src/components/dashboard/DashboardRecent.tsx:364:17",className:"text-xs text-[var(--dg-text-muted)]",children:["CPU ",t.jsxs("span",{"code-path":"src/components/dashboard/DashboardRecent.tsx:365:23",className:"text-[var(--dg-text-secondary)] font-medium",children:[Number(n.cpu_usage??0).toFixed(1),"%"]})]}),t.jsxs("p",{"code-path":"src/components/dashboard/DashboardRecent.tsx:367:17",className:"text-xs text-[var(--dg-text-muted)]",children:["内存 ",t.jsxs("span",{"code-path":"src/components/dashboard/DashboardRecent.tsx:368:22",className:"text-[var(--dg-text-secondary)] font-medium",children:[Number(n.memory_usage??0).toFixed(1),"%"]})]})]})]},n.id)),a.length===0&&t.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:374:13",className:"flex flex-col items-center justify-center py-6 text-[var(--dg-text-muted)]",children:[t.jsx(Ae,{"code-path":"src/components/dashboard/DashboardRecent.tsx:375:15",className:"h-8 w-8 mb-2 opacity-30"}),t.jsx("p",{"code-path":"src/components/dashboard/DashboardRecent.tsx:376:15",className:"text-sm",children:"暂无服务器"})]})]})]})]})}function rs({clusters:a}){const s=le();return t.jsxs(I,{"code-path":"src/components/dashboard/DashboardRecent.tsx:389:5",className:"dg-card dg-card-hover",children:[t.jsx(z,{"code-path":"src/components/dashboard/DashboardRecent.tsx:390:7",className:"pb-2",children:t.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:391:9",className:"flex items-center justify-between",children:[t.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:392:11",children:[t.jsx(V,{"code-path":"src/components/dashboard/DashboardRecent.tsx:393:13",className:"text-[var(--dg-text-primary)]",children:"Kubernetes 集群"}),t.jsx(q,{"code-path":"src/components/dashboard/DashboardRecent.tsx:394:13",className:"text-[var(--dg-text-muted)]",children:"Kubernetes集群健康状态"})]}),t.jsxs(se,{"code-path":"src/components/dashboard/DashboardRecent.tsx:396:11",variant:"ghost",size:"sm",className:"dg-btn-ghost text-xs",onClick:()=>s("/kubernetes"),children:["查看全部",t.jsx(he,{"code-path":"src/components/dashboard/DashboardRecent.tsx:403:13",className:"h-3.5 w-3.5 ml-1"})]})]})}),t.jsx(F,{"code-path":"src/components/dashboard/DashboardRecent.tsx:407:7",children:a.length===0?t.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:409:11",className:"flex flex-col items-center justify-center py-10 text-[var(--dg-text-muted)]",children:[t.jsx(Se,{"code-path":"src/components/dashboard/DashboardRecent.tsx:410:13",className:"h-10 w-10 mb-3 opacity-30"}),t.jsx("p",{"code-path":"src/components/dashboard/DashboardRecent.tsx:411:13",className:"text-sm",children:"暂无集群数据"})]}):t.jsx("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:414:11",className:"space-y-3",children:a.map(r=>{const e=Number(r.cpu_usage??0),o=Number(r.memory_usage??0);return t.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:419:17",className:"p-3.5 rounded-xl bg-[var(--dg-bg-tertiary)]/50 hover:bg-[var(--dg-bg-hover)] transition-all duration-200 cursor-pointer",onClick:()=>s(`/kubernetes/${r.code||r.id}`),children:[t.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:424:19",className:"flex items-center justify-between mb-3",children:[t.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:425:21",className:"flex items-center gap-2.5",children:[t.jsx(Se,{"code-path":"src/components/dashboard/DashboardRecent.tsx:426:23",className:"h-4.5 w-4.5 text-[var(--dg-blue)]"}),t.jsx("span",{"code-path":"src/components/dashboard/DashboardRecent.tsx:427:23",className:"text-sm font-semibold text-[var(--dg-text-primary)]",children:r.name})]}),t.jsx($,{"code-path":"src/components/dashboard/DashboardRecent.tsx:429:21",variant:"outline",className:m("text-xs",r.status==="healthy"?"dg-badge-green border":r.status==="warning"?"dg-badge-yellow border":"dg-badge-red border"),children:r.status==="healthy"?"健康":r.status==="warning"?"警告":"异常"})]}),t.jsx("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:441:19",className:"grid grid-cols-4 gap-2 text-center",children:[{label:"节点",value:r.node_count??0},{label:"Pod",value:r.pod_count??0},{label:"CPU",value:`${e.toFixed(1)}%`},{label:"内存",value:`${o.toFixed(1)}%`}].map(n=>t.jsxs("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:448:23",className:"p-1.5 rounded-lg bg-[var(--dg-bg-primary)]/50",children:[t.jsx("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:449:25",className:"text-sm font-semibold text-[var(--dg-text-primary)]",children:n.value}),t.jsx("div",{"code-path":"src/components/dashboard/DashboardRecent.tsx:450:25",className:"text-[10px] text-[var(--dg-text-muted)] mt-0.5",children:n.label})]},n.label))})]},r.id)})})})]})}function fe({variant:a="card",className:s}){const r="dg-skeleton";return a==="stat"?t.jsxs("div",{"code-path":"src/components/layout/SkeletonCard.tsx:22:7",className:m("dg-card p-6 space-y-4",s),children:[t.jsxs("div",{"code-path":"src/components/layout/SkeletonCard.tsx:23:9",className:"flex items-start justify-between",children:[t.jsxs("div",{"code-path":"src/components/layout/SkeletonCard.tsx:24:11",className:"space-y-3 flex-1",children:[t.jsx("div",{"code-path":"src/components/layout/SkeletonCard.tsx:25:13",className:m("h-4 w-24 rounded",r)}),t.jsx("div",{"code-path":"src/components/layout/SkeletonCard.tsx:26:13",className:m("h-8 w-16 rounded",r)})]}),t.jsx("div",{"code-path":"src/components/layout/SkeletonCard.tsx:28:11",className:m("h-10 w-10 rounded-lg",r)})]}),t.jsx("div",{"code-path":"src/components/layout/SkeletonCard.tsx:30:9",className:m("h-3 w-32 rounded",r)})]}):a==="chart"?t.jsxs("div",{"code-path":"src/components/layout/SkeletonCard.tsx:37:7",className:m("dg-card p-6 space-y-4",s),children:[t.jsxs("div",{"code-path":"src/components/layout/SkeletonCard.tsx:38:9",className:"space-y-2",children:[t.jsx("div",{"code-path":"src/components/layout/SkeletonCard.tsx:39:11",className:m("h-5 w-32 rounded",r)}),t.jsx("div",{"code-path":"src/components/layout/SkeletonCard.tsx:40:11",className:m("h-3 w-48 rounded",r)})]}),t.jsx("div",{"code-path":"src/components/layout/SkeletonCard.tsx:42:9",className:m("h-[200px] rounded-lg",r)})]}):a==="table"?t.jsxs("div",{"code-path":"src/components/layout/SkeletonCard.tsx:49:7",className:m("dg-card overflow-hidden",s),children:[t.jsxs("div",{"code-path":"src/components/layout/SkeletonCard.tsx:51:9",className:"flex items-center gap-4 p-4 border-b border-[var(--dg-border)]",children:[t.jsx("div",{"code-path":"src/components/layout/SkeletonCard.tsx:52:11",className:m("h-4 w-8 rounded",r)}),Array.from({length:6}).map((e,o)=>t.jsx("div",{"code-path":"src/components/layout/SkeletonCard.tsx:54:13",className:m("h-4 flex-1 rounded",r)},o))]}),Array.from({length:5}).map((e,o)=>t.jsxs("div",{"code-path":"src/components/layout/SkeletonCard.tsx:59:11",className:"flex items-center gap-4 p-4 border-b border-[var(--dg-border)] last:border-0",children:[t.jsx("div",{"code-path":"src/components/layout/SkeletonCard.tsx:60:13",className:m("h-4 w-8 rounded",r)}),Array.from({length:6}).map((n,c)=>t.jsx("div",{"code-path":"src/components/layout/SkeletonCard.tsx:62:15",className:m("h-4 flex-1 rounded",r)},c))]},o))]}):t.jsxs("div",{"code-path":"src/components/layout/SkeletonCard.tsx:72:5",className:m("dg-card p-6 space-y-4",s),children:[t.jsxs("div",{"code-path":"src/components/layout/SkeletonCard.tsx:73:7",className:"space-y-2",children:[t.jsx("div",{"code-path":"src/components/layout/SkeletonCard.tsx:74:9",className:m("h-5 w-40 rounded",r)}),t.jsx("div",{"code-path":"src/components/layout/SkeletonCard.tsx:75:9",className:m("h-3 w-56 rounded",r)})]}),t.jsx("div",{"code-path":"src/components/layout/SkeletonCard.tsx:77:7",className:"space-y-3",children:Array.from({length:4}).map((e,o)=>t.jsxs("div",{"code-path":"src/components/layout/SkeletonCard.tsx:79:11",className:"flex items-center gap-3",children:[t.jsx("div",{"code-path":"src/components/layout/SkeletonCard.tsx:80:13",className:m("h-8 w-8 rounded-lg",r)}),t.jsxs("div",{"code-path":"src/components/layout/SkeletonCard.tsx:81:13",className:"flex-1 space-y-2",children:[t.jsx("div",{"code-path":"src/components/layout/SkeletonCard.tsx:82:15",className:m("h-3 w-full rounded",r)}),t.jsx("div",{"code-path":"src/components/layout/SkeletonCard.tsx:83:15",className:m("h-3 w-2/3 rounded",r)})]})]},o))})]})}function os({count:a=4}){return t.jsx("div",{"code-path":"src/components/layout/SkeletonCard.tsx:97:5",className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4",children:Array.from({length:a}).map((s,r)=>t.jsx(fe,{"code-path":"src/components/layout/SkeletonCard.tsx:99:9",variant:"stat"},r))})}function ns(){return t.jsxs("div",{"code-path":"src/components/layout/SkeletonCard.tsx:110:5",className:"space-y-6",children:[t.jsxs("div",{"code-path":"src/components/layout/SkeletonCard.tsx:112:7",className:"flex items-center justify-between",children:[t.jsxs("div",{"code-path":"src/components/layout/SkeletonCard.tsx:113:9",className:"space-y-2",children:[t.jsx("div",{"code-path":"src/components/layout/SkeletonCard.tsx:114:11",className:"dg-skeleton h-7 w-24 rounded"}),t.jsx("div",{"code-path":"src/components/layout/SkeletonCard.tsx:115:11",className:"dg-skeleton h-4 w-48 rounded"})]}),t.jsx("div",{"code-path":"src/components/layout/SkeletonCard.tsx:117:9",className:"dg-skeleton h-9 w-20 rounded-lg"})]}),t.jsx(os,{"code-path":"src/components/layout/SkeletonCard.tsx:121:7",count:4}),t.jsx(fe,{"code-path":"src/components/layout/SkeletonCard.tsx:124:7",variant:"chart"}),t.jsxs("div",{"code-path":"src/components/layout/SkeletonCard.tsx:127:7",className:"grid grid-cols-1 lg:grid-cols-2 gap-6",children:[t.jsx(fe,{"code-path":"src/components/layout/SkeletonCard.tsx:128:9",variant:"list"}),t.jsx(fe,{"code-path":"src/components/layout/SkeletonCard.tsx:129:9",variant:"list"})]})]})}function Ns(){const a=le(),[s,r]=A.useState(!0),[e,o]=A.useState(!1),[n,c]=A.useState(null),[d,l]=A.useState([]),[i,p]=A.useState([]),[u,b]=A.useState([]),[D,f]=A.useState([]),[h,v]=A.useState([]),[y,j]=A.useState([]),k=A.useCallback(async()=>{o(!0);try{const[O,P,J,H,T,ce]=await Promise.all([pe.getStats().catch(R=>(console.error("Failed to fetch dashboard stats:",R),null)),Ot.getServers({page:1,page_size:100}).catch(R=>(console.error("Failed to fetch servers:",R),null)),_t.getClusters().catch(R=>(console.error("Failed to fetch k8s clusters:",R),null)),pe.getAlerts(10).catch(R=>(console.error("Failed to fetch dashboard alerts:",R),null)),pe.getReleases(5).catch(R=>(console.error("Failed to fetch dashboard releases:",R),null)),pe.getMetrics(6).catch(R=>(console.error("Failed to fetch metrics:",R),[]))]);c(O),l(P?.list??[]),p(J?.list??[]),b(Array.isArray(H)?H:[]),f(Array.isArray(T)?T:[]),v(O?.expiring_certs??[]),j(Array.isArray(ce)?ce:[])}catch(O){console.error("Failed to load dashboard data:",O)}finally{o(!1),r(!1)}},[]);if(A.useEffect(()=>{k();const O=setInterval(k,5e3);return()=>clearInterval(O)},[k]),s)return t.jsx(ns,{"code-path":"src/components/dashboard/Dashboard.tsx:94:12"});const w=n?.server_stats,S=n?.kubernetes_stats,_=n?.alert_stats,M=n?.cost_stats,N=Dt(M?.month_trend);return t.jsxs("div",{"code-path":"src/components/dashboard/Dashboard.tsx:104:5",className:"dg-page",children:[t.jsxs("div",{"code-path":"src/components/dashboard/Dashboard.tsx:106:7",className:"dg-page-header",children:[t.jsxs("div",{"code-path":"src/components/dashboard/Dashboard.tsx:107:9",children:[t.jsx("h1",{"code-path":"src/components/dashboard/Dashboard.tsx:108:11",className:"dg-page-title",children:"仪表盘"}),t.jsxs("p",{"code-path":"src/components/dashboard/Dashboard.tsx:109:11",className:"dg-page-subtitle",children:["实时监控和运维概览 · 最后更新: ",new Date().toLocaleTimeString("zh-CN")]})]}),t.jsxs("div",{"code-path":"src/components/dashboard/Dashboard.tsx:111:9",className:"dg-page-actions",children:[t.jsxs(se,{"code-path":"src/components/dashboard/Dashboard.tsx:112:11",variant:"outline",className:"dg-btn-secondary",onClick:k,disabled:e,children:[t.jsx(At,{"code-path":"src/components/dashboard/Dashboard.tsx:118:13",className:m("h-4 w-4",e&&"animate-spin")}),e?"刷新中":"刷新"]}),t.jsxs(se,{"code-path":"src/components/dashboard/Dashboard.tsx:121:11",className:"dg-btn-primary",onClick:()=>a("/servers"),children:[t.jsx(Ae,{"code-path":"src/components/dashboard/Dashboard.tsx:125:13",className:"h-4 w-4"}),"服务器",t.jsx(he,{"code-path":"src/components/dashboard/Dashboard.tsx:127:13",className:"h-3.5 w-3.5"})]})]})]}),t.jsxs("div",{"code-path":"src/components/dashboard/Dashboard.tsx:133:7",className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4",children:[t.jsx("div",{"code-path":"src/components/dashboard/Dashboard.tsx:134:9",className:"animate-fade-in-delay-1",children:t.jsx(xe,{"code-path":"src/components/dashboard/Dashboard.tsx:135:11",title:"服务器总数",value:w?.total??0,description:`${w?.running??0} 台运行中`,icon:Ae,trend:Number(w?.error??0)>0?"down":"neutral",trendValue:Number(w?.error??0)>0?`${w?.error} 台异常`:"运行正常",color:"blue",onClick:()=>a("/servers")})}),t.jsx("div",{"code-path":"src/components/dashboard/Dashboard.tsx:146:9",className:"animate-fade-in-delay-2",children:t.jsx(xe,{"code-path":"src/components/dashboard/Dashboard.tsx:147:11",title:"Kubernetes 集群",value:S?.total??0,description:`${S?.healthy??0} 个健康`,icon:Se,trend:"neutral",trendValue:"稳定",color:"purple",onClick:()=>a("/kubernetes")})}),t.jsx("div",{"code-path":"src/components/dashboard/Dashboard.tsx:158:9",className:"animate-fade-in-delay-3",children:t.jsx(xe,{"code-path":"src/components/dashboard/Dashboard.tsx:159:11",title:"待处理告警",value:_?.firing??0,description:`${_?.critical??0} 个严重`,icon:St,trend:Number(_?.today_count??0)>0?"up":"down",trendValue:`本周 ${_?.week_count??0} 条`,color:"rose",onClick:()=>a("/alert-center")})}),t.jsx("div",{"code-path":"src/components/dashboard/Dashboard.tsx:170:9",className:"animate-fade-in-delay-4",children:t.jsx(xe,{"code-path":"src/components/dashboard/Dashboard.tsx:171:11",title:"本月云成本",value:`¥${Number(M?.month_cost??0).toLocaleString()}`,description:N.label,icon:sa,trend:N.direction,trendValue:`${N.pct>0?"+":""}${N.pct.toFixed(1)}%`,color:"orange",onClick:()=>a("/cloud-billing")})})]}),t.jsx("div",{"code-path":"src/components/dashboard/Dashboard.tsx:185:7",className:"animate-fade-in-delay-2",children:t.jsx(Ja,{"code-path":"src/components/dashboard/Dashboard.tsx:186:9",avgCpu:Number(w?.avg_cpu??0),avgMemory:Number(w?.avg_memory??0),avgDisk:Number(w?.avg_disk??0),metrics:y})}),t.jsxs("div",{"code-path":"src/components/dashboard/Dashboard.tsx:195:7",className:"grid grid-cols-1 lg:grid-cols-2 gap-6 animate-fade-in-delay-3",children:[t.jsx(Za,{"code-path":"src/components/dashboard/Dashboard.tsx:196:9",costStats:M}),t.jsx(Xa,{"code-path":"src/components/dashboard/Dashboard.tsx:197:9",topUsage:n?.top_resource_usage})]}),t.jsxs("div",{"code-path":"src/components/dashboard/Dashboard.tsx:201:7",className:"grid grid-cols-1 lg:grid-cols-2 gap-6 animate-fade-in-delay-3",children:[t.jsx(es,{"code-path":"src/components/dashboard/Dashboard.tsx:202:9",alerts:u}),t.jsx(ts,{"code-path":"src/components/dashboard/Dashboard.tsx:203:9",expCerts:h})]}),t.jsxs("div",{"code-path":"src/components/dashboard/Dashboard.tsx:207:7",className:"grid grid-cols-1 lg:grid-cols-3 gap-6 animate-fade-in-delay-4",children:[t.jsx(as,{"code-path":"src/components/dashboard/Dashboard.tsx:208:9",releases:D}),t.jsx(ss,{"code-path":"src/components/dashboard/Dashboard.tsx:209:9",servers:d}),t.jsx(rs,{"code-path":"src/components/dashboard/Dashboard.tsx:210:9",clusters:i})]})]})}export{Ns as Dashboard}; diff --git a/backend/static/assets/DatasourcePage-R-tZ5_Fl.js b/backend/static/assets/DatasourcePage-R-tZ5_Fl.js new file mode 100644 index 0000000..54f975c --- /dev/null +++ b/backend/static/assets/DatasourcePage-R-tZ5_Fl.js @@ -0,0 +1 @@ +import{i as Ze,f as he,r,j as e,B as i,z as L,Y as Ce,D as le,a as xe,b as pe,c as ge,d as be,G as De,t as je,V as F,X as ke,T as Se,C as te,y as ve,P as Te,e as Me}from"./index-Dmami9WE.js";import{T as Ae,a as ze,b as de,c as me}from"./tabs-lV44z_UR.js";import{I as u}from"./input-NsU9nXZF.js";import{B as v}from"./badge-3UzCvU7L.js";import{C as re,b as Le,c as Fe,a as oe}from"./card-CIfC-8Rh.js";import{L as c}from"./label-Ap_-SPYI.js";import{S as l}from"./switch-TqjD2x0W.js";import{S as Y,a as ee,b as ae,c as se,d as A}from"./select-DUbxjT0z.js";import{t as o}from"./index-BuEnLCjT.js";import{p as k,z}from"./monitor-CicbJUrQ.js";import{R as ce}from"./refresh-cw-CTBERyFc.js";import{P as H}from"./plus-O65gX7Qz.js";import{S as V}from"./star-DRCV7Fx2.js";import{S as Ne}from"./square-pen-B3dPIBrm.js";import{T as fe}from"./trash-2-DWVnIU6o.js";import{C as I}from"./chevron-up-Cq4GPopa.js";import{W as Ie}from"./wrench-DMCGQEzN.js";import{C as _e}from"./circle-x-BBQeW1R3.js";import{C as qe}from"./circle-check-CVbTTFQ0.js";import"./index-CtCQcvyh.js";const Ee=[["path",{d:"M12 22v-5",key:"1ega77"}],["path",{d:"M15 8V2",key:"18g5xt"}],["path",{d:"M17 8a1 1 0 0 1 1 1v4a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1z",key:"1xoxul"}],["path",{d:"M9 8V2",key:"14iosj"}]],ne=Ze("plug",Ee),ie={name:"",url:"",access:"server",http_method:"POST",basic_auth:!1,basic_auth_user:"",basic_auth_pass:"",with_credentials:!1,tls_client_auth:!1,with_ca_cert:!1,ca_cert:"",skip_tls_verify:!1,custom_headers_json:"",enable_alerting:!0,alertmanager_ds:"",scrape_interval:15,query_timeout:60,disable_metrics_lookup:!1,custom_query_params:"",is_default:!1};function Oe(){const x=he(),[h,p]=r.useState([]),[B,$]=r.useState(!0),[U,g]=r.useState(!1),[b,q]=r.useState(null),[s,_]=r.useState({...ie}),[P,D]=r.useState([]),[y,E]=r.useState(!1),[,O]=r.useState(!1),[S,R]=r.useState(!1),[T,w]=r.useState(!1),[M,N]=r.useState(!1),[j,Z]=r.useState(null),m=r.useCallback(async()=>{try{const a=await k.list();p(a?.data||a||[])}catch{o.error("获取数据源列表失败")}finally{$(!1)}},[]);r.useEffect(()=>{m()},[m]);const G=()=>{q(null),_({...ie}),D([]),Z(null),E(!1),O(!1),R(!1),w(!1),g(!0)},W=a=>{q(a.id),_({name:a.name,url:a.url,access:a.access||"server",http_method:a.http_method||"POST",basic_auth:a.basic_auth||!1,basic_auth_user:a.basic_auth_user||"",basic_auth_pass:a.basic_auth_pass||"",with_credentials:a.with_credentials||!1,tls_client_auth:a.tls_client_auth||!1,with_ca_cert:a.with_ca_cert||!1,ca_cert:a.ca_cert||"",skip_tls_verify:a.skip_tls_verify||!1,custom_headers_json:a.custom_headers||"",enable_alerting:a.enable_alerting!==!1,alertmanager_ds:a.alertmanager_ds||"",scrape_interval:a.scrape_interval||15,query_timeout:a.query_timeout||60,disable_metrics_lookup:a.disable_metrics_lookup||!1,custom_query_params:a.custom_query_params||"",is_default:a.is_default||!1});try{const d=JSON.parse(a.custom_headers||"[]");D(Array.isArray(d)?d:[])}catch{D([])}Z(null),g(!0)},n=(a,d)=>{_(f=>({...f,[a]:d}))},J=()=>{D(a=>[...a,{header:"",value:""}])},t=a=>{D(d=>d.filter((f,X)=>X!==a))},C=(a,d,f)=>{D(X=>{const K=[...X];return K[a]={...K[a],[d]:f},K})},Q=async()=>{if(!s.name.trim()){o.error("请输入数据源名称");return}if(!s.url.trim()){o.error("请输入 Prometheus URL");return}const a={name:s.name.trim(),url:s.url.trim(),access:s.access,http_method:s.http_method,basic_auth:s.basic_auth,basic_auth_user:s.basic_auth_user,basic_auth_pass:s.basic_auth_pass,with_credentials:s.with_credentials,tls_client_auth:s.tls_client_auth,with_ca_cert:s.with_ca_cert,ca_cert:s.ca_cert,skip_tls_verify:s.skip_tls_verify,custom_headers:JSON.stringify(P),enable_alerting:s.enable_alerting,alertmanager_ds:s.alertmanager_ds,scrape_interval:s.scrape_interval,query_timeout:s.query_timeout,disable_metrics_lookup:s.disable_metrics_lookup,custom_query_params:s.custom_query_params,is_default:s.is_default};try{b?(await k.update(b,a),o.success("数据源更新成功")):(await k.create(a),o.success("数据源创建成功")),g(!1),m()}catch(d){o.error(d?.message||"操作失败")}},Pe=async a=>{if(await x({title:"删除数据源",description:`确定删除数据源「${a.name}」吗?此操作不可撤销。`,variant:"destructive"}))try{await k.delete(a.id),o.success("已删除"),m()}catch{o.error("删除失败")}},ye=async a=>{try{await k.setDefault(a.id),o.success(`已将「${a.name}」设为默认数据源`),m()}catch{o.error("设置失败")}},we=async()=>{if(!s.url.trim()){o.error("请先输入 URL");return}N(!0),Z(null);try{const a=await k.testConnection({url:s.url.trim(),basic_auth:s.basic_auth,basic_auth_user:s.basic_auth_user,basic_auth_pass:s.basic_auth_pass,skip_tls_verify:s.skip_tls_verify}),d=a?.data||a;Z(d)}catch(a){Z({success:!1,message:a?.message||"测试失败"})}finally{N(!1)}};return B?e.jsx("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:298:7",className:"flex items-center justify-center h-96",children:e.jsx(ce,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:299:9",className:"animate-spin w-8 h-8 text-[var(--dg-text-secondary)]"})}):e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:305:5",className:"p-6 space-y-6 max-w-7xl mx-auto",children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:307:7",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:308:9",children:[e.jsx("h1",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:309:11",className:"text-2xl font-bold text-[var(--dg-text-primary)]",children:"数据源管理"}),e.jsx("p",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:310:11",className:"text-sm text-[var(--dg-text-secondary)] mt-1",children:"Prometheus 数据源配置,用于指标监控与监控大屏"})]}),e.jsxs(i,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:314:9",onClick:G,className:"gap-2",children:[e.jsx(H,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:315:11",className:"w-4 h-4"}),"添加数据源"]})]}),e.jsxs(re,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:321:7",className:"border-[var(--dg-border)] bg-[var(--dg-bg-secondary)]",children:[e.jsx(Le,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:322:9",className:"pb-2",children:e.jsxs(Fe,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:323:11",className:"text-base flex items-center gap-2",children:[e.jsx(L,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:324:13",className:"w-4 h-4 text-blue-400"}),"已配置的数据源",e.jsx(v,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:326:13",variant:"secondary",className:"ml-2",children:h.length})]})}),e.jsx(oe,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:329:9",className:"p-0",children:h.length===0?e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:331:13",className:"py-12 text-center text-[var(--dg-text-secondary)]",children:[e.jsx(L,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:332:15",className:"w-12 h-12 mx-auto mb-3 opacity-30"}),e.jsx("p",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:333:15",className:"text-sm",children:"暂无数据源"}),e.jsx("p",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:334:15",className:"text-xs mt-1",children:"点击「添加数据源」开始配置"})]}):e.jsx("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:337:13",className:"overflow-x-auto",children:e.jsxs("table",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:338:15",className:"w-full",children:[e.jsx("thead",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:339:17",className:"border-b border-[var(--dg-border)]",children:e.jsxs("tr",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:340:19",className:"text-xs text-[var(--dg-text-secondary)]",children:[e.jsx("th",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:341:21",className:"text-left py-3 px-4 font-medium",children:"名称"}),e.jsx("th",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:342:21",className:"text-left py-3 px-4 font-medium",children:"URL"}),e.jsx("th",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:343:21",className:"text-left py-3 px-4 font-medium w-20",children:"默认"}),e.jsx("th",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:344:21",className:"text-left py-3 px-4 font-medium w-16",children:"状态"}),e.jsx("th",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:345:21",className:"text-right py-3 px-4 font-medium w-36",children:"操作"})]})}),e.jsx("tbody",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:348:17",children:h.map(a=>e.jsxs("tr",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:350:21",className:"border-b border-[var(--dg-border)]/50 hover:bg-[var(--dg-bg-tertiary)]/50 transition-colors",children:[e.jsx("td",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:354:23",className:"py-3 px-4",children:e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:355:25",className:"flex items-center gap-2",children:[e.jsx("img",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:356:27",src:"https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/prometheus.png",alt:"Prometheus",className:"w-5 h-5 rounded",onError:d=>{d.target.style.display="none"}}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:362:27",children:[e.jsx("span",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:363:29",className:"text-sm font-medium text-[var(--dg-text-primary)]",children:a.name}),a.basic_auth&&e.jsx(Ce,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:364:47",className:"w-3 h-3 inline ml-1.5 text-amber-400"})]})]})}),e.jsx("td",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:368:23",className:"py-3 px-4",children:e.jsx("code",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:369:25",className:"text-xs text-blue-300 bg-slate-800/50 px-2 py-0.5 rounded max-w-[320px] block truncate",title:a.url,children:a.url})}),e.jsx("td",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:374:23",className:"py-3 px-4",children:a.is_default?e.jsxs(v,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:376:27",variant:"default",className:"bg-amber-500/15 text-amber-400 border-amber-500/30 text-xs",children:[e.jsx(V,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:377:29",className:"w-3 h-3 mr-1"})," 默认"]}):e.jsx("span",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:380:27",className:"text-xs text-[var(--dg-text-secondary)]",children:"--"})}),e.jsx("td",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:383:23",className:"py-3 px-4",children:a.status===1?e.jsx(v,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:385:27",variant:"default",className:"bg-emerald-500/15 text-emerald-400 border-emerald-500/30 text-xs",children:"启用"}):e.jsx(v,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:389:27",variant:"secondary",className:"text-xs",children:"禁用"})}),e.jsx("td",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:392:23",className:"py-3 px-4",children:e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:393:25",className:"flex items-center justify-end gap-1",children:[e.jsx(i,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:394:27",variant:"ghost",size:"sm",className:"h-8 px-2",onClick:()=>Re(a),title:"测试连接",children:e.jsx(ne,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:400:29",className:"w-3.5 h-3.5"})}),!a.is_default&&e.jsx(i,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:403:29",variant:"ghost",size:"sm",className:"h-8 px-2 text-amber-400 hover:text-amber-300",onClick:()=>ye(a),title:"设为默认",children:e.jsx(V,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:409:31",className:"w-3.5 h-3.5"})}),e.jsx(i,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:412:27",variant:"ghost",size:"sm",className:"h-8 px-2",onClick:()=>W(a),children:e.jsx(Ne,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:417:29",className:"w-3.5 h-3.5"})}),e.jsx(i,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:419:27",variant:"ghost",size:"sm",className:"h-8 px-2 text-red-400 hover:text-red-300",onClick:()=>Pe(a),children:e.jsx(fe,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:424:29",className:"w-3.5 h-3.5"})})]})})]},a.id))})]})})})]}),e.jsx(le,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:438:7",open:U,onOpenChange:g,children:e.jsxs(xe,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:439:9",className:"max-w-2xl max-h-[90vh] overflow-y-auto bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:[e.jsxs(pe,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:440:11",children:[e.jsxs(ge,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:441:13",className:"flex items-center gap-2 text-lg",children:[e.jsx(L,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:442:15",className:"w-5 h-5 text-orange-400"}),b?"编辑数据源":"添加数据源"]}),e.jsx(be,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:445:13",children:"Prometheus 数据源配置 · 参考 Grafana 数据源管理"})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:450:11",className:"space-y-5 py-2",children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:452:13",className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:453:15",className:"space-y-2",children:[e.jsxs(c,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:454:17",htmlFor:"ds-name",className:"text-sm",children:["Name ",e.jsx("span",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:454:67",className:"text-red-400",children:"*"})]}),e.jsx(u,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:455:17",id:"ds-name",placeholder:"Prometheus 数据源名称",value:s.name,onChange:a=>n("name",a.target.value),className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)]"})]}),e.jsx("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:463:15",className:"flex items-end pb-2",children:e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:464:17",className:"flex items-center gap-3",children:[e.jsx(l,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:465:19",id:"ds-default",checked:s.is_default,onCheckedChange:a=>n("is_default",a)}),e.jsx(c,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:470:19",htmlFor:"ds-default",className:"text-sm cursor-pointer",children:"Default"})]})})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:476:13",className:"space-y-3 bg-[var(--dg-bg-tertiary)]/50 rounded-lg p-4 border border-[var(--dg-border)]/50",children:[e.jsxs("h4",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:477:15",className:"text-sm font-medium flex items-center gap-2 text-[var(--dg-text-primary)]",children:[e.jsx(De,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:478:17",className:"w-4 h-4"})," HTTP"]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:480:15",className:"space-y-2",children:[e.jsxs(c,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:481:17",htmlFor:"ds-url",className:"text-sm",children:["URL ",e.jsx("span",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:481:65",className:"text-red-400",children:"*"})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:482:17",className:"flex gap-2",children:[e.jsxs(Y,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:483:19",value:s.access,onValueChange:a=>n("access",a),children:[e.jsx(ee,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:484:21",className:"w-32 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-sm",children:e.jsx(ae,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:485:23"})}),e.jsxs(se,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:487:21",children:[e.jsx(A,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:488:23",value:"server",children:"Server"}),e.jsx(A,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:489:23",value:"browser",children:"Browser"})]})]}),e.jsx(u,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:492:19",id:"ds-url",placeholder:"http://localhost:9090",value:s.url,onChange:a=>n("url",a.target.value),className:"flex-1 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] font-mono text-sm"})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:501:15",className:"text-xs text-[var(--dg-text-secondary)]",children:["Access: ",e.jsx("span",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:502:25",className:"text-[var(--dg-text-primary)]",children:s.access==="server"?"Server (default)":"Browser"})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:507:13",className:"border border-[var(--dg-border)]/50 rounded-lg overflow-hidden",children:[e.jsxs("button",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:508:15",type:"button",className:"w-full flex items-center justify-between px-4 py-3 bg-[var(--dg-bg-tertiary)]/30 hover:bg-[var(--dg-bg-tertiary)]/60 transition-colors",onClick:()=>E(!y),children:[e.jsxs("span",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:513:17",className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(je,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:514:19",className:"w-4 h-4"})," Auth"]}),y?e.jsx(I,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:516:29",className:"w-4 h-4"}):e.jsx(F,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:516:65",className:"w-4 h-4"})]}),y&&e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:519:17",className:"p-4 space-y-4 border-t border-[var(--dg-border)]/50",children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:521:19",className:"space-y-3",children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:522:21",className:"flex items-center gap-3",children:[e.jsx(l,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:523:23",id:"ds-basic-auth",checked:s.basic_auth,onCheckedChange:a=>n("basic_auth",a)}),e.jsx(c,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:528:23",htmlFor:"ds-basic-auth",className:"text-sm cursor-pointer",children:"Basic auth"})]}),s.basic_auth&&e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:531:23",className:"grid grid-cols-2 gap-3 ml-9",children:[e.jsx(u,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:532:25",placeholder:"用户名",value:s.basic_auth_user,onChange:a=>n("basic_auth_user",a.target.value),className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-sm"}),e.jsx(u,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:538:25",type:"password",placeholder:"密码",value:s.basic_auth_pass,onChange:a=>n("basic_auth_pass",a.target.value),className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-sm"})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:550:19",className:"flex items-center gap-3",children:[e.jsx(l,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:551:21",id:"ds-with-creds",checked:s.with_credentials,onCheckedChange:a=>n("with_credentials",a)}),e.jsx(c,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:556:21",htmlFor:"ds-with-creds",className:"text-sm cursor-pointer",children:"With Credentials"})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:560:19",className:"space-y-3",children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:561:21",className:"flex items-center gap-3",children:[e.jsx(l,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:562:23",id:"ds-tls-auth",checked:s.tls_client_auth,onCheckedChange:a=>n("tls_client_auth",a)}),e.jsx(c,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:567:23",htmlFor:"ds-tls-auth",className:"text-sm cursor-pointer",children:"TLS Client Auth"})]}),s.tls_client_auth&&e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:570:23",className:"ml-9 space-y-3",children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:571:25",className:"flex items-center gap-3",children:[e.jsx(l,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:572:27",id:"ds-ca-cert",checked:s.with_ca_cert,onCheckedChange:a=>n("with_ca_cert",a)}),e.jsx(c,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:577:27",htmlFor:"ds-ca-cert",className:"text-sm cursor-pointer",children:"With CA Cert"})]}),s.with_ca_cert&&e.jsx("textarea",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:580:27",placeholder:"PEM 格式的 CA 证书内容...",value:s.ca_cert,onChange:a=>n("ca_cert",a.target.value),rows:4,className:"w-full bg-[var(--dg-bg-tertiary)] border border-[var(--dg-border)] rounded-md p-3 text-xs font-mono text-[var(--dg-text-primary)] resize-y"})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:593:19",className:"flex items-center gap-3",children:[e.jsx(l,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:594:21",id:"ds-skip-tls",checked:s.skip_tls_verify,onCheckedChange:a=>n("skip_tls_verify",a)}),e.jsx(c,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:599:21",htmlFor:"ds-skip-tls",className:"text-sm cursor-pointer",children:"Skip TLS Verify"})]}),e.jsx("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:603:19",className:"text-xs text-[var(--dg-text-secondary)] italic",children:"Forward OAuth Identity"})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:611:13",className:"space-y-3 bg-[var(--dg-bg-tertiary)]/30 rounded-lg p-4 border border-[var(--dg-border)]/50",children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:612:15",className:"flex items-center justify-between",children:[e.jsxs("h4",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:613:17",className:"text-sm font-medium flex items-center gap-2 text-[var(--dg-text-primary)]",children:[e.jsx(Ie,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:614:19",className:"w-4 h-4"})," Custom HTTP Headers"]}),e.jsxs(i,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:616:17",variant:"outline",size:"sm",className:"h-7 text-xs",onClick:J,children:[e.jsx(H,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:617:19",className:"w-3 h-3 mr-1"})," Add header"]})]}),P.length===0?e.jsx("p",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:621:17",className:"text-xs text-[var(--dg-text-secondary)] italic",children:"暂无自定义 Header"}):e.jsx("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:623:17",className:"space-y-2",children:P.map((a,d)=>e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:625:21",className:"flex items-center gap-2",children:[e.jsx(u,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:626:23",placeholder:"Header",value:a.header,onChange:f=>C(d,"header",f.target.value),className:"flex-1 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-sm h-8"}),e.jsx(u,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:632:23",placeholder:"Value",value:a.value,onChange:f=>C(d,"value",f.target.value),className:"flex-1 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-sm h-8"}),e.jsx(i,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:638:23",variant:"ghost",size:"sm",className:"h-8 w-8 p-0 text-red-400 hover:text-red-300",onClick:()=>t(d),children:e.jsx(ke,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:642:25",className:"w-3.5 h-3.5"})})]},d))})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:651:13",className:"border border-[var(--dg-border)]/50 rounded-lg overflow-hidden",children:[e.jsxs("button",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:652:15",type:"button",className:"w-full flex items-center justify-between px-4 py-3 bg-[var(--dg-bg-tertiary)]/30 hover:bg-[var(--dg-bg-tertiary)]/60 transition-colors",onClick:()=>R(!S),children:[e.jsxs("span",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:657:17",className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(Se,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:658:19",className:"w-4 h-4"})," Alerting"]}),S?e.jsx(I,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:660:33",className:"w-4 h-4"}):e.jsx(F,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:660:69",className:"w-4 h-4"})]}),S&&e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:663:17",className:"p-4 space-y-4 border-t border-[var(--dg-border)]/50",children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:664:19",className:"flex items-center gap-3",children:[e.jsx(l,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:665:21",id:"ds-enable-alerting",checked:s.enable_alerting,onCheckedChange:a=>n("enable_alerting",a)}),e.jsx(c,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:670:21",htmlFor:"ds-enable-alerting",className:"text-sm cursor-pointer",children:"Manage alerts via Alerting UI"})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:674:19",className:"space-y-2",children:[e.jsx(c,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:675:21",className:"text-sm text-[var(--dg-text-secondary)]",children:"Alertmanager data source"}),e.jsxs(Y,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:676:21",value:s.alertmanager_ds,onValueChange:a=>n("alertmanager_ds",a),children:[e.jsx(ee,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:677:23",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-sm",children:e.jsx(ae,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:678:25",placeholder:"Choose"})}),e.jsxs(se,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:680:23",children:[e.jsx(A,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:681:25",value:"__none",children:"无"}),h.filter(a=>a.id!==b).map(a=>e.jsx(A,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:683:27",value:String(a.id),children:a.name},a.id))]})]})]})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:693:13",className:"grid grid-cols-2 gap-4 bg-[var(--dg-bg-tertiary)]/30 rounded-lg p-4 border border-[var(--dg-border)]/50",children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:694:15",className:"space-y-2",children:[e.jsxs(c,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:695:17",className:"text-sm flex items-center gap-1.5",children:[e.jsx(te,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:696:19",className:"w-3.5 h-3.5"})," Scrape interval"]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:698:17",className:"flex items-center gap-2",children:[e.jsx(u,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:699:19",type:"number",min:1,value:s.scrape_interval,onChange:a=>n("scrape_interval",Number(a.target.value)),className:"w-20 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-sm text-center"}),e.jsx("span",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:706:19",className:"text-xs text-[var(--dg-text-secondary)]",children:"秒"})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:709:15",className:"space-y-2",children:[e.jsxs(c,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:710:17",className:"text-sm flex items-center gap-1.5",children:[e.jsx(te,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:711:19",className:"w-3.5 h-3.5"})," Query timeout"]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:713:17",className:"flex items-center gap-2",children:[e.jsx(u,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:714:19",type:"number",min:1,value:s.query_timeout,onChange:a=>n("query_timeout",Number(a.target.value)),className:"w-20 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-sm text-center"}),e.jsx("span",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:721:19",className:"text-xs text-[var(--dg-text-secondary)]",children:"秒"})]})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:727:13",className:"space-y-2",children:[e.jsx(c,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:728:15",className:"text-sm",children:"HTTP Method"}),e.jsxs(Y,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:729:15",value:s.http_method,onValueChange:a=>n("http_method",a),children:[e.jsx(ee,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:730:17",className:"w-32 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-sm",children:e.jsx(ae,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:731:19"})}),e.jsxs(se,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:733:17",children:[e.jsx(A,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:734:19",value:"POST",children:"POST"}),e.jsx(A,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:735:19",value:"GET",children:"GET"})]})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:741:13",className:"border border-[var(--dg-border)]/50 rounded-lg overflow-hidden",children:[e.jsxs("button",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:742:15",type:"button",className:"w-full flex items-center justify-between px-4 py-3 bg-[var(--dg-bg-tertiary)]/30 hover:bg-[var(--dg-bg-tertiary)]/60 transition-colors",onClick:()=>w(!T),children:[e.jsxs("span",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:747:17",className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(ve,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:748:19",className:"w-4 h-4"})," Misc"]}),T?e.jsx(I,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:750:29",className:"w-4 h-4"}):e.jsx(F,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:750:65",className:"w-4 h-4"})]}),T&&e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:753:17",className:"p-4 space-y-4 border-t border-[var(--dg-border)]/50",children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:754:19",className:"flex items-center gap-3",children:[e.jsx(l,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:755:21",id:"ds-disable-lookup",checked:s.disable_metrics_lookup,onCheckedChange:a=>n("disable_metrics_lookup",a)}),e.jsx(c,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:760:21",htmlFor:"ds-disable-lookup",className:"text-sm cursor-pointer",children:"Disable metrics lookup"})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:764:19",className:"space-y-2",children:[e.jsx(c,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:765:21",className:"text-sm text-[var(--dg-text-secondary)]",children:"Custom query parameters"}),e.jsx(u,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:766:21",placeholder:'例: {"timeout": "30s"}',value:s.custom_query_params,onChange:a=>n("custom_query_params",a.target.value),className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-sm font-mono"})]})]})]}),j&&e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:779:15",className:`rounded-lg p-3 flex items-center gap-2 text-sm ${j.success?"bg-emerald-500/10 border border-emerald-500/30 text-emerald-400":"bg-red-500/10 border border-red-500/30 text-red-400"}`,children:[j.success?e.jsx(Te,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:785:21",className:"w-4 h-4 shrink-0"}):e.jsx(_e,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:786:21",className:"w-4 h-4 shrink-0"}),e.jsx("span",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:788:17",children:j.message}),j.target_count!==void 0&&e.jsxs(v,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:790:19",variant:"secondary",className:"ml-auto text-xs",children:[j.target_count," targets"]})]})]}),e.jsxs(Me,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:799:11",className:"flex items-center gap-2 pt-2 border-t border-[var(--dg-border)]/50",children:[e.jsxs(i,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:800:13",variant:"outline",onClick:we,disabled:M||!s.url.trim(),className:"gap-2",children:[M?e.jsx(ce,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:807:17",className:"w-4 h-4 animate-spin"}):e.jsx(ne,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:809:17",className:"w-4 h-4"}),"Save & test"]}),e.jsx("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:813:13",className:"flex-1"}),e.jsx(i,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:814:13",variant:"ghost",onClick:()=>g(!1),children:"取消"}),e.jsx(i,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:817:13",onClick:Q,children:b?"更新":"保存"})]})]})})]})}async function Re(x){try{const h=await k.testConnection({url:x.url,basic_auth:x.basic_auth,basic_auth_user:x.basic_auth_user,basic_auth_pass:x.basic_auth_pass,skip_tls_verify:x.skip_tls_verify}),p=h?.data||h;p?.success?o.success(`连接成功 · ${p.target_count||0} targets`):o.error(p?.message||"连接失败")}catch(h){o.error(h?.message||"测试失败")}}const ue={name:"",url:"",username:"",password:"",trends_after:0,trends_range:0,trends_cache_ttl:3600,trends_timeout:30,direct_db:!1,disable_acknowledges:!1,disable_data_alignment:!1,is_default:!1};function He(){const x=he(),[h,p]=r.useState([]),[B,$]=r.useState(!0),[U,g]=r.useState(!1),[b,q]=r.useState(null),[s,_]=r.useState({...ue}),[P,D]=r.useState(!1),[y,E]=r.useState(!1),[O,S]=r.useState(!1),[R,T]=r.useState(!1),[w,M]=r.useState(null),N=r.useCallback(async()=>{try{const t=await z.list();p(t?.data||t||[])}catch{o.error("获取数据源列表失败")}finally{$(!1)}},[]);r.useEffect(()=>{N()},[N]);const j=()=>{q(null),_({...ue}),M(null),D(!1),E(!1),S(!1),g(!0)},Z=t=>{q(t.id),_({name:t.name,url:t.url,username:t.username||"",password:t.password||"",trends_after:t.trends_after||0,trends_range:t.trends_range||0,trends_cache_ttl:t.trends_cache_ttl||3600,trends_timeout:t.trends_timeout||30,direct_db:t.direct_db||!1,disable_acknowledges:t.disable_acknowledges||!1,disable_data_alignment:t.disable_data_alignment||!1,is_default:t.is_default||!1}),M(null),g(!0)},m=(t,C)=>{_(Q=>({...Q,[t]:C}))},G=async()=>{if(!s.name.trim()){o.error("请输入数据源名称");return}if(!s.url.trim()){o.error("请输入 Zabbix API URL");return}if(!s.username.trim()){o.error("请输入用户名");return}if(!s.password.trim()){o.error("请输入密码");return}try{b?(await z.update(b,s),o.success("数据源已更新")):(await z.create(s),o.success("数据源已创建")),g(!1),N()}catch(t){o.error(t?.message||"操作失败")}},W=async t=>{if(await x({title:"删除数据源",description:`确定删除「${t.name}」?`,variant:"destructive"}))try{await z.delete(t.id),o.success("已删除"),N()}catch{o.error("删除失败")}},n=async t=>{try{await z.setDefault(t.id),o.success(`已将「${t.name}」设为默认`),N()}catch{o.error("设置失败")}},J=async()=>{if(!s.url.trim()||!s.username.trim()){o.error("请填写 URL 和用户名");return}T(!0),M(null);try{const t=await z.testConnection({url:s.url.trim(),username:s.username.trim(),password:s.password||""}),C=t?.data||t;M(C)}catch(t){M({success:!1,message:t?.message||"测试失败"})}finally{T(!1)}};return B?e.jsx("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:183:7",className:"flex items-center justify-center h-96",children:e.jsx(ce,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:184:9",className:"animate-spin w-8 h-8 text-[var(--dg-text-secondary)]"})}):e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:190:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:191:7",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:192:9",children:[e.jsxs("h2",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:193:11",className:"text-lg font-semibold text-[var(--dg-text-primary)] flex items-center gap-2",children:[e.jsx("img",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:194:13",src:"https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/zabbix.png",className:"w-5 h-5 rounded",onError:t=>{t.target.style.display="none"}}),"Zabbix 数据源"]}),e.jsx("p",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:201:11",className:"text-xs text-[var(--dg-text-muted)]",children:"配置 Zabbix API 连接,获取主机监控数据"})]}),e.jsxs(i,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:203:9",onClick:j,size:"sm",children:[e.jsx(H,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:204:11",className:"w-4 h-4 mr-1"}),"添加"]})]}),h.length===0?e.jsx(re,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:209:9",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsxs(oe,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:210:11",className:"py-12 text-center text-[var(--dg-text-muted)]",children:[e.jsx(L,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:211:13",className:"w-12 h-12 mx-auto mb-3 opacity-30"}),e.jsx("p",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:212:13",className:"text-sm",children:"暂无 Zabbix 数据源"}),e.jsxs(i,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:213:13",size:"sm",className:"mt-4",onClick:j,children:[e.jsx(H,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:214:15",className:"w-4 h-4 mr-1"}),"添加数据源"]})]})}):e.jsx("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:219:9",className:"grid gap-3",children:h.map(t=>e.jsx(re,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:221:13",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] hover:border-orange-500/30 transition-colors",children:e.jsx(oe,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:222:15",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:223:17",className:"flex items-start justify-between",children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:224:19",className:"flex-1 min-w-0",children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:225:21",className:"flex items-center gap-2 mb-1",children:[e.jsx("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:226:23",className:`w-2 h-2 rounded-full ${t.status===1?"bg-emerald-400":"bg-slate-500"}`}),e.jsx("span",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:227:23",className:"font-medium text-[var(--dg-text-primary)]",children:t.name}),t.is_default&&e.jsxs(v,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:228:41",className:"bg-amber-500/20 text-amber-400 text-[10px]",children:[e.jsx(V,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:228:103",className:"w-3 h-3 mr-0.5"}),"默认"]}),t.status===1?e.jsx(v,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:230:27",className:"bg-emerald-500/20 text-emerald-400 text-[10px]",children:"启用"}):e.jsx(v,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:231:27",className:"bg-slate-500/20 text-slate-400 text-[10px]",children:"禁用"})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:233:21",className:"text-xs text-[var(--dg-text-muted)] space-x-3",children:[e.jsx("code",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:234:23",className:"text-orange-300",children:t.url}),e.jsxs("span",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:235:23",children:["用户: ",t.username]}),t.direct_db&&e.jsx(v,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:236:40",variant:"outline",className:"text-[10px]",children:"直连DB"})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:239:19",className:"flex items-center gap-1",children:[!t.is_default&&e.jsxs(i,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:241:23",variant:"ghost",size:"sm",className:"h-7 text-xs text-amber-400",onClick:()=>n(t),children:[e.jsx(V,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:242:25",className:"w-3 h-3 mr-0.5"}),"默认"]}),e.jsxs(i,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:245:21",variant:"ghost",size:"sm",className:"h-7 text-xs",onClick:()=>Z(t),children:[e.jsx(Ne,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:246:23",className:"w-3 h-3 mr-0.5"}),"编辑"]}),e.jsx(i,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:248:21",variant:"ghost",size:"sm",className:"h-7 text-xs text-red-400",onClick:()=>W(t),children:e.jsx(fe,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:249:23",className:"w-3 h-3"})})]})]})})},t.id))}),e.jsx(le,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:260:7",open:U,onOpenChange:g,children:e.jsxs(xe,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:261:9",className:"max-w-xl max-h-[85vh] overflow-y-auto bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:[e.jsxs(pe,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:262:11",children:[e.jsxs(ge,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:263:13",className:"text-[var(--dg-text-primary)] flex items-center gap-2",children:[e.jsx(L,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:264:15",className:"h-5 w-5 text-orange-400"}),b?"编辑 Zabbix 数据源":"新建 Zabbix 数据源"]}),e.jsx(be,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:267:13",children:"配置 Zabbix API 连接,用于主机监控与告警数据获取"})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:272:11",className:"space-y-4 py-2",children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:274:13",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:275:15",children:[e.jsx(c,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:276:17",className:"text-xs text-[var(--dg-text-secondary)]",children:"名称 *"}),e.jsx(u,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:277:17",className:"mt-1 h-9 text-sm bg-[var(--dg-bg-primary)]",placeholder:"如:生产 Zabbix",value:s.name,onChange:t=>m("name",t.target.value)})]}),e.jsx("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:280:15",className:"flex items-end pb-1",children:e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:281:17",className:"flex items-center gap-2",children:[e.jsx(l,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:282:19",checked:s.is_default,onCheckedChange:t=>m("is_default",t)}),e.jsx(c,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:283:19",className:"text-xs cursor-pointer",children:"设为默认"})]})})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:289:13",className:"border border-[var(--dg-border)] rounded-lg p-3 space-y-3",children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:290:15",className:"flex items-center gap-2 text-sm text-[var(--dg-text-primary)]",children:[e.jsx(De,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:291:17",className:"w-4 h-4"})," HTTP"]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:293:15",children:[e.jsx(c,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:294:17",className:"text-xs text-[var(--dg-text-secondary)]",children:"URL *"}),e.jsx(u,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:295:17",className:"mt-1 h-9 text-sm font-mono bg-[var(--dg-bg-primary)]",placeholder:"http://zabbix.example.com/api_jsonrpc.php",value:s.url,onChange:t=>m("url",t.target.value)})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:302:13",className:"border border-[var(--dg-border)] rounded-lg overflow-hidden",children:[e.jsxs("button",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:303:15",className:"w-full flex items-center justify-between px-3 py-2.5 text-sm hover:bg-[var(--dg-bg-tertiary)]",onClick:()=>D(!P),children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:305:17",className:"flex items-center gap-2",children:[e.jsx(je,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:306:19",className:"w-4 h-4"}),e.jsx("span",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:307:19",children:"Zabbix API 认证"})]}),P?e.jsx(I,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:309:29",className:"w-4 h-4"}):e.jsx(F,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:309:65",className:"w-4 h-4"})]}),P&&e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:312:17",className:"px-3 pb-3 space-y-3",children:[e.jsx(u,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:313:19",className:"h-9 text-sm bg-[var(--dg-bg-primary)]",placeholder:"用户名 *",value:s.username,onChange:t=>m("username",t.target.value)}),e.jsx(u,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:315:19",className:"h-9 text-sm bg-[var(--dg-bg-primary)]",type:"password",placeholder:"密码 *",value:s.password,onChange:t=>m("password",t.target.value)})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:322:13",className:"border border-[var(--dg-border)] rounded-lg overflow-hidden",children:[e.jsxs("button",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:323:15",className:"w-full flex items-center justify-between px-3 py-2.5 text-sm hover:bg-[var(--dg-bg-tertiary)]",onClick:()=>E(!y),children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:325:17",className:"flex items-center gap-2",children:[e.jsx(te,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:326:19",className:"w-4 h-4"}),e.jsx("span",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:327:19",children:"Trends 设置"})]}),y?e.jsx(I,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:329:31",className:"w-4 h-4"}):e.jsx(F,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:329:67",className:"w-4 h-4"})]}),y&&e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:332:17",className:"px-3 pb-3 space-y-3",children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:333:19",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:334:21",children:[e.jsx(c,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:335:23",className:"text-xs text-[var(--dg-text-secondary)]",children:"After (天)"}),e.jsx(u,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:336:23",className:"mt-1 h-9 text-sm bg-[var(--dg-bg-primary)]",type:"number",min:0,value:s.trends_after,onChange:t=>m("trends_after",parseInt(t.target.value)||0)})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:339:21",children:[e.jsx(c,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:340:23",className:"text-xs text-[var(--dg-text-secondary)]",children:"Range (秒)"}),e.jsx(u,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:341:23",className:"mt-1 h-9 text-sm bg-[var(--dg-bg-primary)]",type:"number",min:0,value:s.trends_range,onChange:t=>m("trends_range",parseInt(t.target.value)||0)})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:345:19",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:346:21",children:[e.jsx(c,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:347:23",className:"text-xs text-[var(--dg-text-secondary)]",children:"Cache TTL (秒)"}),e.jsx(u,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:348:23",className:"mt-1 h-9 text-sm bg-[var(--dg-bg-primary)]",type:"number",min:0,value:s.trends_cache_ttl,onChange:t=>m("trends_cache_ttl",parseInt(t.target.value)||3600)})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:351:21",children:[e.jsx(c,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:352:23",className:"text-xs text-[var(--dg-text-secondary)]",children:"Timeout (秒)"}),e.jsx(u,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:353:23",className:"mt-1 h-9 text-sm bg-[var(--dg-bg-primary)]",type:"number",min:1,value:s.trends_timeout,onChange:t=>m("trends_timeout",parseInt(t.target.value)||30)})]})]})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:362:13",className:"border border-[var(--dg-border)] rounded-lg overflow-hidden",children:[e.jsxs("button",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:363:15",className:"w-full flex items-center justify-between px-3 py-2.5 text-sm hover:bg-[var(--dg-bg-tertiary)]",onClick:()=>S(!O),children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:365:17",className:"flex items-center gap-2",children:[e.jsx(ve,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:366:19",className:"w-4 h-4"}),e.jsx("span",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:367:19",children:"其他设置"})]}),O?e.jsx(I,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:369:30",className:"w-4 h-4"}):e.jsx(F,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:369:66",className:"w-4 h-4"})]}),O&&e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:372:17",className:"px-3 pb-3 space-y-3",children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:373:19",className:"flex items-center justify-between",children:[e.jsx(c,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:374:21",className:"text-xs",children:"Direct DB Connection"}),e.jsx(l,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:375:21",checked:s.direct_db,onCheckedChange:t=>m("direct_db",t)})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:377:19",className:"flex items-center justify-between",children:[e.jsx(c,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:378:21",className:"text-xs",children:"只读用户禁用确认"}),e.jsx(l,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:379:21",checked:s.disable_acknowledges,onCheckedChange:t=>m("disable_acknowledges",t)})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:381:19",className:"flex items-center justify-between",children:[e.jsx(c,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:382:21",className:"text-xs",children:"禁用数据对齐"}),e.jsx(l,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:383:21",checked:s.disable_data_alignment,onCheckedChange:t=>m("disable_data_alignment",t)})]})]})]}),w&&e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:391:15",className:`flex items-center gap-2 p-2.5 rounded text-sm ${w.success?"bg-emerald-500/10 text-emerald-400":"bg-red-500/10 text-red-400"}`,children:[w.success?e.jsx(qe,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:394:39",className:"h-4 w-4"}):e.jsx(_e,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:394:78",className:"h-4 w-4"}),w.message]})]}),e.jsxs(Me,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:400:11",className:"gap-2",children:[e.jsxs(i,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:401:13",variant:"outline",size:"sm",onClick:J,disabled:R,children:[e.jsx(ne,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:402:15",className:`w-4 h-4 mr-1 ${R?"animate-pulse":""}`}),"测试连接"]}),e.jsx("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:405:13",className:"flex-1"}),e.jsx(i,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:406:13",variant:"ghost",size:"sm",onClick:()=>g(!1),children:"取消"}),e.jsx(i,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:407:13",size:"sm",onClick:G,children:"保存"})]})]})})]})}function ma(){const[x,h]=r.useState("prometheus");return e.jsxs("div",{"code-path":"src/components/monitor/datasource/DatasourcePage.tsx:12:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/DatasourcePage.tsx:13:7",className:"flex items-center gap-2",children:[e.jsx(L,{"code-path":"src/components/monitor/datasource/DatasourcePage.tsx:14:9",className:"h-5 w-5 text-blue-400"}),e.jsx("h1",{"code-path":"src/components/monitor/datasource/DatasourcePage.tsx:15:9",className:"text-xl font-bold text-[var(--dg-text-primary)]",children:"数据源管理"})]}),e.jsxs(Ae,{"code-path":"src/components/monitor/datasource/DatasourcePage.tsx:18:7",value:x,onValueChange:h,children:[e.jsxs(ze,{"code-path":"src/components/monitor/datasource/DatasourcePage.tsx:19:9",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:[e.jsxs(de,{"code-path":"src/components/monitor/datasource/DatasourcePage.tsx:20:11",value:"prometheus",className:"data-[state=active]:bg-orange-500/10 data-[state=active]:text-orange-400",children:[e.jsx("img",{"code-path":"src/components/monitor/datasource/DatasourcePage.tsx:21:13",src:"https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/prometheus.png",className:"w-4 h-4 rounded mr-1.5",onError:p=>{p.target.style.display="none"}}),"Prometheus"]}),e.jsxs(de,{"code-path":"src/components/monitor/datasource/DatasourcePage.tsx:28:11",value:"zabbix",className:"data-[state=active]:bg-orange-500/10 data-[state=active]:text-orange-400",children:[e.jsx("img",{"code-path":"src/components/monitor/datasource/DatasourcePage.tsx:29:13",src:"https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/zabbix.png",className:"w-4 h-4 rounded mr-1.5",onError:p=>{p.target.style.display="none"}}),"Zabbix"]})]}),e.jsx(me,{"code-path":"src/components/monitor/datasource/DatasourcePage.tsx:38:9",value:"prometheus",className:"mt-4",children:e.jsx(Oe,{"code-path":"src/components/monitor/datasource/DatasourcePage.tsx:39:11"})}),e.jsx(me,{"code-path":"src/components/monitor/datasource/DatasourcePage.tsx:41:9",value:"zabbix",className:"mt-4",children:e.jsx(He,{"code-path":"src/components/monitor/datasource/DatasourcePage.tsx:42:11"})})]})]})}export{ma as default}; diff --git a/backend/static/assets/DatasourcePage-brk0z6d8.js b/backend/static/assets/DatasourcePage-brk0z6d8.js deleted file mode 100644 index 690db2b..0000000 --- a/backend/static/assets/DatasourcePage-brk0z6d8.js +++ /dev/null @@ -1 +0,0 @@ -import{g as he,a as le,r,j as e,B as i,G as L,P as Ce,D as xe,b as pe,c as ge,d as be,e as De,I as u,O as je,t as ve,a4 as F,a5 as ke,T as Se,x as te,E as Me,a3 as Te,f as Ne}from"./index-DfyorCky.js";import{T as Ae,a as ze,b as de,c as me}from"./tabs-CIh_yD4s.js";import{B as v}from"./badge-xNW8x0G1.js";import{C as re,b as Le,c as Fe,a as oe}from"./card-C55cvSHg.js";import{L as c}from"./label-BK0h2apY.js";import{S as l}from"./switch-CGiGgOnh.js";import{S as Y,a as ee,b as ae,c as se,d as A,C as I}from"./select-D5qUzdAs.js";import{t as o}from"./index-a3ybMjbR.js";import{p as k,z}from"./monitor-BAaBXIsC.js";import{R as ce}from"./refresh-cw-DUB_tAG-.js";import{P as H}from"./plus-CUG-9kpu.js";import{S as fe}from"./square-pen-BxUFAe0F.js";import{T as _e}from"./trash-2-Dx32pOzT.js";import{W as Ie}from"./wrench-KfbhOOJm.js";import{C as Pe}from"./circle-x-DK79Dhg2.js";import{C as qe}from"./circle-check-DWcXrx2k.js";import"./index-CWVNW_qu.js";const Ee=[["path",{d:"M12 22v-5",key:"1ega77"}],["path",{d:"M15 8V2",key:"18g5xt"}],["path",{d:"M17 8a1 1 0 0 1 1 1v4a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1z",key:"1xoxul"}],["path",{d:"M9 8V2",key:"14iosj"}]],ne=he("plug",Ee);const Oe=[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]],$=he("star",Oe),ie={name:"",url:"",access:"server",http_method:"POST",basic_auth:!1,basic_auth_user:"",basic_auth_pass:"",with_credentials:!1,tls_client_auth:!1,with_ca_cert:!1,ca_cert:"",skip_tls_verify:!1,custom_headers_json:"",enable_alerting:!0,alertmanager_ds:"",scrape_interval:15,query_timeout:60,disable_metrics_lookup:!1,custom_query_params:"",is_default:!1};function Re(){const x=le(),[h,p]=r.useState([]),[B,V]=r.useState(!0),[U,g]=r.useState(!1),[b,q]=r.useState(null),[s,_]=r.useState({...ie}),[P,D]=r.useState([]),[y,E]=r.useState(!1),[,O]=r.useState(!1),[S,R]=r.useState(!1),[T,w]=r.useState(!1),[M,N]=r.useState(!1),[j,Z]=r.useState(null),m=r.useCallback(async()=>{try{const a=await k.list();p(a?.data||a||[])}catch{o.error("获取数据源列表失败")}finally{V(!1)}},[]);r.useEffect(()=>{m()},[m]);const G=()=>{q(null),_({...ie}),D([]),Z(null),E(!1),O(!1),R(!1),w(!1),g(!0)},W=a=>{q(a.id),_({name:a.name,url:a.url,access:a.access||"server",http_method:a.http_method||"POST",basic_auth:a.basic_auth||!1,basic_auth_user:a.basic_auth_user||"",basic_auth_pass:a.basic_auth_pass||"",with_credentials:a.with_credentials||!1,tls_client_auth:a.tls_client_auth||!1,with_ca_cert:a.with_ca_cert||!1,ca_cert:a.ca_cert||"",skip_tls_verify:a.skip_tls_verify||!1,custom_headers_json:a.custom_headers||"",enable_alerting:a.enable_alerting!==!1,alertmanager_ds:a.alertmanager_ds||"",scrape_interval:a.scrape_interval||15,query_timeout:a.query_timeout||60,disable_metrics_lookup:a.disable_metrics_lookup||!1,custom_query_params:a.custom_query_params||"",is_default:a.is_default||!1});try{const d=JSON.parse(a.custom_headers||"[]");D(Array.isArray(d)?d:[])}catch{D([])}Z(null),g(!0)},n=(a,d)=>{_(f=>({...f,[a]:d}))},J=()=>{D(a=>[...a,{header:"",value:""}])},t=a=>{D(d=>d.filter((f,X)=>X!==a))},C=(a,d,f)=>{D(X=>{const K=[...X];return K[a]={...K[a],[d]:f},K})},Q=async()=>{if(!s.name.trim()){o.error("请输入数据源名称");return}if(!s.url.trim()){o.error("请输入 Prometheus URL");return}const a={name:s.name.trim(),url:s.url.trim(),access:s.access,http_method:s.http_method,basic_auth:s.basic_auth,basic_auth_user:s.basic_auth_user,basic_auth_pass:s.basic_auth_pass,with_credentials:s.with_credentials,tls_client_auth:s.tls_client_auth,with_ca_cert:s.with_ca_cert,ca_cert:s.ca_cert,skip_tls_verify:s.skip_tls_verify,custom_headers:JSON.stringify(P),enable_alerting:s.enable_alerting,alertmanager_ds:s.alertmanager_ds,scrape_interval:s.scrape_interval,query_timeout:s.query_timeout,disable_metrics_lookup:s.disable_metrics_lookup,custom_query_params:s.custom_query_params,is_default:s.is_default};try{b?(await k.update(b,a),o.success("数据源更新成功")):(await k.create(a),o.success("数据源创建成功")),g(!1),m()}catch(d){o.error(d?.message||"操作失败")}},ye=async a=>{if(await x({title:"删除数据源",description:`确定删除数据源「${a.name}」吗?此操作不可撤销。`,variant:"destructive"}))try{await k.delete(a.id),o.success("已删除"),m()}catch{o.error("删除失败")}},we=async a=>{try{await k.setDefault(a.id),o.success(`已将「${a.name}」设为默认数据源`),m()}catch{o.error("设置失败")}},Ze=async()=>{if(!s.url.trim()){o.error("请先输入 URL");return}N(!0),Z(null);try{const a=await k.testConnection({url:s.url.trim(),basic_auth:s.basic_auth,basic_auth_user:s.basic_auth_user,basic_auth_pass:s.basic_auth_pass,skip_tls_verify:s.skip_tls_verify}),d=a?.data||a;Z(d)}catch(a){Z({success:!1,message:a?.message||"测试失败"})}finally{N(!1)}};return B?e.jsx("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:298:7",className:"flex items-center justify-center h-96",children:e.jsx(ce,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:299:9",className:"animate-spin w-8 h-8 text-[var(--dg-text-secondary)]"})}):e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:305:5",className:"p-6 space-y-6 max-w-7xl mx-auto",children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:307:7",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:308:9",children:[e.jsx("h1",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:309:11",className:"text-2xl font-bold text-[var(--dg-text-primary)]",children:"数据源管理"}),e.jsx("p",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:310:11",className:"text-sm text-[var(--dg-text-secondary)] mt-1",children:"Prometheus 数据源配置,用于指标监控与监控大屏"})]}),e.jsxs(i,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:314:9",onClick:G,className:"gap-2",children:[e.jsx(H,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:315:11",className:"w-4 h-4"}),"添加数据源"]})]}),e.jsxs(re,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:321:7",className:"border-[var(--dg-border)] bg-[var(--dg-bg-secondary)]",children:[e.jsx(Le,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:322:9",className:"pb-2",children:e.jsxs(Fe,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:323:11",className:"text-base flex items-center gap-2",children:[e.jsx(L,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:324:13",className:"w-4 h-4 text-blue-400"}),"已配置的数据源",e.jsx(v,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:326:13",variant:"secondary",className:"ml-2",children:h.length})]})}),e.jsx(oe,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:329:9",className:"p-0",children:h.length===0?e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:331:13",className:"py-12 text-center text-[var(--dg-text-secondary)]",children:[e.jsx(L,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:332:15",className:"w-12 h-12 mx-auto mb-3 opacity-30"}),e.jsx("p",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:333:15",className:"text-sm",children:"暂无数据源"}),e.jsx("p",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:334:15",className:"text-xs mt-1",children:"点击「添加数据源」开始配置"})]}):e.jsx("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:337:13",className:"overflow-x-auto",children:e.jsxs("table",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:338:15",className:"w-full",children:[e.jsx("thead",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:339:17",className:"border-b border-[var(--dg-border)]",children:e.jsxs("tr",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:340:19",className:"text-xs text-[var(--dg-text-secondary)]",children:[e.jsx("th",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:341:21",className:"text-left py-3 px-4 font-medium",children:"名称"}),e.jsx("th",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:342:21",className:"text-left py-3 px-4 font-medium",children:"URL"}),e.jsx("th",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:343:21",className:"text-left py-3 px-4 font-medium w-20",children:"默认"}),e.jsx("th",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:344:21",className:"text-left py-3 px-4 font-medium w-16",children:"状态"}),e.jsx("th",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:345:21",className:"text-right py-3 px-4 font-medium w-36",children:"操作"})]})}),e.jsx("tbody",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:348:17",children:h.map(a=>e.jsxs("tr",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:350:21",className:"border-b border-[var(--dg-border)]/50 hover:bg-[var(--dg-bg-tertiary)]/50 transition-colors",children:[e.jsx("td",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:354:23",className:"py-3 px-4",children:e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:355:25",className:"flex items-center gap-2",children:[e.jsx("img",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:356:27",src:"https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/prometheus.png",alt:"Prometheus",className:"w-5 h-5 rounded",onError:d=>{d.target.style.display="none"}}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:362:27",children:[e.jsx("span",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:363:29",className:"text-sm font-medium text-[var(--dg-text-primary)]",children:a.name}),a.basic_auth&&e.jsx(Ce,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:364:47",className:"w-3 h-3 inline ml-1.5 text-amber-400"})]})]})}),e.jsx("td",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:368:23",className:"py-3 px-4",children:e.jsx("code",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:369:25",className:"text-xs text-blue-300 bg-slate-800/50 px-2 py-0.5 rounded max-w-[320px] block truncate",title:a.url,children:a.url})}),e.jsx("td",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:374:23",className:"py-3 px-4",children:a.is_default?e.jsxs(v,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:376:27",variant:"default",className:"bg-amber-500/15 text-amber-400 border-amber-500/30 text-xs",children:[e.jsx($,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:377:29",className:"w-3 h-3 mr-1"})," 默认"]}):e.jsx("span",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:380:27",className:"text-xs text-[var(--dg-text-secondary)]",children:"--"})}),e.jsx("td",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:383:23",className:"py-3 px-4",children:a.status===1?e.jsx(v,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:385:27",variant:"default",className:"bg-emerald-500/15 text-emerald-400 border-emerald-500/30 text-xs",children:"启用"}):e.jsx(v,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:389:27",variant:"secondary",className:"text-xs",children:"禁用"})}),e.jsx("td",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:392:23",className:"py-3 px-4",children:e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:393:25",className:"flex items-center justify-end gap-1",children:[e.jsx(i,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:394:27",variant:"ghost",size:"sm",className:"h-8 px-2",onClick:()=>He(a),title:"测试连接",children:e.jsx(ne,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:400:29",className:"w-3.5 h-3.5"})}),!a.is_default&&e.jsx(i,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:403:29",variant:"ghost",size:"sm",className:"h-8 px-2 text-amber-400 hover:text-amber-300",onClick:()=>we(a),title:"设为默认",children:e.jsx($,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:409:31",className:"w-3.5 h-3.5"})}),e.jsx(i,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:412:27",variant:"ghost",size:"sm",className:"h-8 px-2",onClick:()=>W(a),children:e.jsx(fe,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:417:29",className:"w-3.5 h-3.5"})}),e.jsx(i,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:419:27",variant:"ghost",size:"sm",className:"h-8 px-2 text-red-400 hover:text-red-300",onClick:()=>ye(a),children:e.jsx(_e,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:424:29",className:"w-3.5 h-3.5"})})]})})]},a.id))})]})})})]}),e.jsx(xe,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:438:7",open:U,onOpenChange:g,children:e.jsxs(pe,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:439:9",className:"max-w-2xl max-h-[90vh] overflow-y-auto bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:[e.jsxs(ge,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:440:11",children:[e.jsxs(be,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:441:13",className:"flex items-center gap-2 text-lg",children:[e.jsx(L,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:442:15",className:"w-5 h-5 text-orange-400"}),b?"编辑数据源":"添加数据源"]}),e.jsx(De,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:445:13",children:"Prometheus 数据源配置 · 参考 Grafana 数据源管理"})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:450:11",className:"space-y-5 py-2",children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:452:13",className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:453:15",className:"space-y-2",children:[e.jsxs(c,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:454:17",htmlFor:"ds-name",className:"text-sm",children:["Name ",e.jsx("span",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:454:67",className:"text-red-400",children:"*"})]}),e.jsx(u,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:455:17",id:"ds-name",placeholder:"Prometheus 数据源名称",value:s.name,onChange:a=>n("name",a.target.value),className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)]"})]}),e.jsx("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:463:15",className:"flex items-end pb-2",children:e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:464:17",className:"flex items-center gap-3",children:[e.jsx(l,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:465:19",id:"ds-default",checked:s.is_default,onCheckedChange:a=>n("is_default",a)}),e.jsx(c,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:470:19",htmlFor:"ds-default",className:"text-sm cursor-pointer",children:"Default"})]})})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:476:13",className:"space-y-3 bg-[var(--dg-bg-tertiary)]/50 rounded-lg p-4 border border-[var(--dg-border)]/50",children:[e.jsxs("h4",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:477:15",className:"text-sm font-medium flex items-center gap-2 text-[var(--dg-text-primary)]",children:[e.jsx(je,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:478:17",className:"w-4 h-4"})," HTTP"]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:480:15",className:"space-y-2",children:[e.jsxs(c,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:481:17",htmlFor:"ds-url",className:"text-sm",children:["URL ",e.jsx("span",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:481:65",className:"text-red-400",children:"*"})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:482:17",className:"flex gap-2",children:[e.jsxs(Y,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:483:19",value:s.access,onValueChange:a=>n("access",a),children:[e.jsx(ee,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:484:21",className:"w-32 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-sm",children:e.jsx(ae,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:485:23"})}),e.jsxs(se,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:487:21",children:[e.jsx(A,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:488:23",value:"server",children:"Server"}),e.jsx(A,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:489:23",value:"browser",children:"Browser"})]})]}),e.jsx(u,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:492:19",id:"ds-url",placeholder:"http://localhost:9090",value:s.url,onChange:a=>n("url",a.target.value),className:"flex-1 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] font-mono text-sm"})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:501:15",className:"text-xs text-[var(--dg-text-secondary)]",children:["Access: ",e.jsx("span",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:502:25",className:"text-[var(--dg-text-primary)]",children:s.access==="server"?"Server (default)":"Browser"})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:507:13",className:"border border-[var(--dg-border)]/50 rounded-lg overflow-hidden",children:[e.jsxs("button",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:508:15",type:"button",className:"w-full flex items-center justify-between px-4 py-3 bg-[var(--dg-bg-tertiary)]/30 hover:bg-[var(--dg-bg-tertiary)]/60 transition-colors",onClick:()=>E(!y),children:[e.jsxs("span",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:513:17",className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(ve,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:514:19",className:"w-4 h-4"})," Auth"]}),y?e.jsx(I,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:516:29",className:"w-4 h-4"}):e.jsx(F,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:516:65",className:"w-4 h-4"})]}),y&&e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:519:17",className:"p-4 space-y-4 border-t border-[var(--dg-border)]/50",children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:521:19",className:"space-y-3",children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:522:21",className:"flex items-center gap-3",children:[e.jsx(l,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:523:23",id:"ds-basic-auth",checked:s.basic_auth,onCheckedChange:a=>n("basic_auth",a)}),e.jsx(c,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:528:23",htmlFor:"ds-basic-auth",className:"text-sm cursor-pointer",children:"Basic auth"})]}),s.basic_auth&&e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:531:23",className:"grid grid-cols-2 gap-3 ml-9",children:[e.jsx(u,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:532:25",placeholder:"用户名",value:s.basic_auth_user,onChange:a=>n("basic_auth_user",a.target.value),className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-sm"}),e.jsx(u,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:538:25",type:"password",placeholder:"密码",value:s.basic_auth_pass,onChange:a=>n("basic_auth_pass",a.target.value),className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-sm"})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:550:19",className:"flex items-center gap-3",children:[e.jsx(l,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:551:21",id:"ds-with-creds",checked:s.with_credentials,onCheckedChange:a=>n("with_credentials",a)}),e.jsx(c,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:556:21",htmlFor:"ds-with-creds",className:"text-sm cursor-pointer",children:"With Credentials"})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:560:19",className:"space-y-3",children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:561:21",className:"flex items-center gap-3",children:[e.jsx(l,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:562:23",id:"ds-tls-auth",checked:s.tls_client_auth,onCheckedChange:a=>n("tls_client_auth",a)}),e.jsx(c,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:567:23",htmlFor:"ds-tls-auth",className:"text-sm cursor-pointer",children:"TLS Client Auth"})]}),s.tls_client_auth&&e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:570:23",className:"ml-9 space-y-3",children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:571:25",className:"flex items-center gap-3",children:[e.jsx(l,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:572:27",id:"ds-ca-cert",checked:s.with_ca_cert,onCheckedChange:a=>n("with_ca_cert",a)}),e.jsx(c,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:577:27",htmlFor:"ds-ca-cert",className:"text-sm cursor-pointer",children:"With CA Cert"})]}),s.with_ca_cert&&e.jsx("textarea",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:580:27",placeholder:"PEM 格式的 CA 证书内容...",value:s.ca_cert,onChange:a=>n("ca_cert",a.target.value),rows:4,className:"w-full bg-[var(--dg-bg-tertiary)] border border-[var(--dg-border)] rounded-md p-3 text-xs font-mono text-[var(--dg-text-primary)] resize-y"})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:593:19",className:"flex items-center gap-3",children:[e.jsx(l,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:594:21",id:"ds-skip-tls",checked:s.skip_tls_verify,onCheckedChange:a=>n("skip_tls_verify",a)}),e.jsx(c,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:599:21",htmlFor:"ds-skip-tls",className:"text-sm cursor-pointer",children:"Skip TLS Verify"})]}),e.jsx("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:603:19",className:"text-xs text-[var(--dg-text-secondary)] italic",children:"Forward OAuth Identity"})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:611:13",className:"space-y-3 bg-[var(--dg-bg-tertiary)]/30 rounded-lg p-4 border border-[var(--dg-border)]/50",children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:612:15",className:"flex items-center justify-between",children:[e.jsxs("h4",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:613:17",className:"text-sm font-medium flex items-center gap-2 text-[var(--dg-text-primary)]",children:[e.jsx(Ie,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:614:19",className:"w-4 h-4"})," Custom HTTP Headers"]}),e.jsxs(i,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:616:17",variant:"outline",size:"sm",className:"h-7 text-xs",onClick:J,children:[e.jsx(H,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:617:19",className:"w-3 h-3 mr-1"})," Add header"]})]}),P.length===0?e.jsx("p",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:621:17",className:"text-xs text-[var(--dg-text-secondary)] italic",children:"暂无自定义 Header"}):e.jsx("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:623:17",className:"space-y-2",children:P.map((a,d)=>e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:625:21",className:"flex items-center gap-2",children:[e.jsx(u,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:626:23",placeholder:"Header",value:a.header,onChange:f=>C(d,"header",f.target.value),className:"flex-1 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-sm h-8"}),e.jsx(u,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:632:23",placeholder:"Value",value:a.value,onChange:f=>C(d,"value",f.target.value),className:"flex-1 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-sm h-8"}),e.jsx(i,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:638:23",variant:"ghost",size:"sm",className:"h-8 w-8 p-0 text-red-400 hover:text-red-300",onClick:()=>t(d),children:e.jsx(ke,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:642:25",className:"w-3.5 h-3.5"})})]},d))})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:651:13",className:"border border-[var(--dg-border)]/50 rounded-lg overflow-hidden",children:[e.jsxs("button",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:652:15",type:"button",className:"w-full flex items-center justify-between px-4 py-3 bg-[var(--dg-bg-tertiary)]/30 hover:bg-[var(--dg-bg-tertiary)]/60 transition-colors",onClick:()=>R(!S),children:[e.jsxs("span",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:657:17",className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(Se,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:658:19",className:"w-4 h-4"})," Alerting"]}),S?e.jsx(I,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:660:33",className:"w-4 h-4"}):e.jsx(F,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:660:69",className:"w-4 h-4"})]}),S&&e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:663:17",className:"p-4 space-y-4 border-t border-[var(--dg-border)]/50",children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:664:19",className:"flex items-center gap-3",children:[e.jsx(l,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:665:21",id:"ds-enable-alerting",checked:s.enable_alerting,onCheckedChange:a=>n("enable_alerting",a)}),e.jsx(c,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:670:21",htmlFor:"ds-enable-alerting",className:"text-sm cursor-pointer",children:"Manage alerts via Alerting UI"})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:674:19",className:"space-y-2",children:[e.jsx(c,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:675:21",className:"text-sm text-[var(--dg-text-secondary)]",children:"Alertmanager data source"}),e.jsxs(Y,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:676:21",value:s.alertmanager_ds,onValueChange:a=>n("alertmanager_ds",a),children:[e.jsx(ee,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:677:23",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-sm",children:e.jsx(ae,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:678:25",placeholder:"Choose"})}),e.jsxs(se,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:680:23",children:[e.jsx(A,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:681:25",value:"__none",children:"无"}),h.filter(a=>a.id!==b).map(a=>e.jsx(A,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:683:27",value:String(a.id),children:a.name},a.id))]})]})]})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:693:13",className:"grid grid-cols-2 gap-4 bg-[var(--dg-bg-tertiary)]/30 rounded-lg p-4 border border-[var(--dg-border)]/50",children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:694:15",className:"space-y-2",children:[e.jsxs(c,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:695:17",className:"text-sm flex items-center gap-1.5",children:[e.jsx(te,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:696:19",className:"w-3.5 h-3.5"})," Scrape interval"]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:698:17",className:"flex items-center gap-2",children:[e.jsx(u,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:699:19",type:"number",min:1,value:s.scrape_interval,onChange:a=>n("scrape_interval",Number(a.target.value)),className:"w-20 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-sm text-center"}),e.jsx("span",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:706:19",className:"text-xs text-[var(--dg-text-secondary)]",children:"秒"})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:709:15",className:"space-y-2",children:[e.jsxs(c,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:710:17",className:"text-sm flex items-center gap-1.5",children:[e.jsx(te,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:711:19",className:"w-3.5 h-3.5"})," Query timeout"]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:713:17",className:"flex items-center gap-2",children:[e.jsx(u,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:714:19",type:"number",min:1,value:s.query_timeout,onChange:a=>n("query_timeout",Number(a.target.value)),className:"w-20 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-sm text-center"}),e.jsx("span",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:721:19",className:"text-xs text-[var(--dg-text-secondary)]",children:"秒"})]})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:727:13",className:"space-y-2",children:[e.jsx(c,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:728:15",className:"text-sm",children:"HTTP Method"}),e.jsxs(Y,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:729:15",value:s.http_method,onValueChange:a=>n("http_method",a),children:[e.jsx(ee,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:730:17",className:"w-32 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-sm",children:e.jsx(ae,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:731:19"})}),e.jsxs(se,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:733:17",children:[e.jsx(A,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:734:19",value:"POST",children:"POST"}),e.jsx(A,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:735:19",value:"GET",children:"GET"})]})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:741:13",className:"border border-[var(--dg-border)]/50 rounded-lg overflow-hidden",children:[e.jsxs("button",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:742:15",type:"button",className:"w-full flex items-center justify-between px-4 py-3 bg-[var(--dg-bg-tertiary)]/30 hover:bg-[var(--dg-bg-tertiary)]/60 transition-colors",onClick:()=>w(!T),children:[e.jsxs("span",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:747:17",className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(Me,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:748:19",className:"w-4 h-4"})," Misc"]}),T?e.jsx(I,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:750:29",className:"w-4 h-4"}):e.jsx(F,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:750:65",className:"w-4 h-4"})]}),T&&e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:753:17",className:"p-4 space-y-4 border-t border-[var(--dg-border)]/50",children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:754:19",className:"flex items-center gap-3",children:[e.jsx(l,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:755:21",id:"ds-disable-lookup",checked:s.disable_metrics_lookup,onCheckedChange:a=>n("disable_metrics_lookup",a)}),e.jsx(c,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:760:21",htmlFor:"ds-disable-lookup",className:"text-sm cursor-pointer",children:"Disable metrics lookup"})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:764:19",className:"space-y-2",children:[e.jsx(c,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:765:21",className:"text-sm text-[var(--dg-text-secondary)]",children:"Custom query parameters"}),e.jsx(u,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:766:21",placeholder:'例: {"timeout": "30s"}',value:s.custom_query_params,onChange:a=>n("custom_query_params",a.target.value),className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-sm font-mono"})]})]})]}),j&&e.jsxs("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:779:15",className:`rounded-lg p-3 flex items-center gap-2 text-sm ${j.success?"bg-emerald-500/10 border border-emerald-500/30 text-emerald-400":"bg-red-500/10 border border-red-500/30 text-red-400"}`,children:[j.success?e.jsx(Te,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:785:21",className:"w-4 h-4 shrink-0"}):e.jsx(Pe,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:786:21",className:"w-4 h-4 shrink-0"}),e.jsx("span",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:788:17",children:j.message}),j.target_count!==void 0&&e.jsxs(v,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:790:19",variant:"secondary",className:"ml-auto text-xs",children:[j.target_count," targets"]})]})]}),e.jsxs(Ne,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:799:11",className:"flex items-center gap-2 pt-2 border-t border-[var(--dg-border)]/50",children:[e.jsxs(i,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:800:13",variant:"outline",onClick:Ze,disabled:M||!s.url.trim(),className:"gap-2",children:[M?e.jsx(ce,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:807:17",className:"w-4 h-4 animate-spin"}):e.jsx(ne,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:809:17",className:"w-4 h-4"}),"Save & test"]}),e.jsx("div",{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:813:13",className:"flex-1"}),e.jsx(i,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:814:13",variant:"ghost",onClick:()=>g(!1),children:"取消"}),e.jsx(i,{"code-path":"src/components/monitor/datasource/PrometheusDatasourceManager.tsx:817:13",onClick:Q,children:b?"更新":"保存"})]})]})})]})}async function He(x){try{const h=await k.testConnection({url:x.url,basic_auth:x.basic_auth,basic_auth_user:x.basic_auth_user,basic_auth_pass:x.basic_auth_pass,skip_tls_verify:x.skip_tls_verify}),p=h?.data||h;p?.success?o.success(`连接成功 · ${p.target_count||0} targets`):o.error(p?.message||"连接失败")}catch(h){o.error(h?.message||"测试失败")}}const ue={name:"",url:"",username:"",password:"",trends_after:0,trends_range:0,trends_cache_ttl:3600,trends_timeout:30,direct_db:!1,disable_acknowledges:!1,disable_data_alignment:!1,is_default:!1};function $e(){const x=le(),[h,p]=r.useState([]),[B,V]=r.useState(!0),[U,g]=r.useState(!1),[b,q]=r.useState(null),[s,_]=r.useState({...ue}),[P,D]=r.useState(!1),[y,E]=r.useState(!1),[O,S]=r.useState(!1),[R,T]=r.useState(!1),[w,M]=r.useState(null),N=r.useCallback(async()=>{try{const t=await z.list();p(t?.data||t||[])}catch{o.error("获取数据源列表失败")}finally{V(!1)}},[]);r.useEffect(()=>{N()},[N]);const j=()=>{q(null),_({...ue}),M(null),D(!1),E(!1),S(!1),g(!0)},Z=t=>{q(t.id),_({name:t.name,url:t.url,username:t.username||"",password:t.password||"",trends_after:t.trends_after||0,trends_range:t.trends_range||0,trends_cache_ttl:t.trends_cache_ttl||3600,trends_timeout:t.trends_timeout||30,direct_db:t.direct_db||!1,disable_acknowledges:t.disable_acknowledges||!1,disable_data_alignment:t.disable_data_alignment||!1,is_default:t.is_default||!1}),M(null),g(!0)},m=(t,C)=>{_(Q=>({...Q,[t]:C}))},G=async()=>{if(!s.name.trim()){o.error("请输入数据源名称");return}if(!s.url.trim()){o.error("请输入 Zabbix API URL");return}if(!s.username.trim()){o.error("请输入用户名");return}if(!s.password.trim()){o.error("请输入密码");return}try{b?(await z.update(b,s),o.success("数据源已更新")):(await z.create(s),o.success("数据源已创建")),g(!1),N()}catch(t){o.error(t?.message||"操作失败")}},W=async t=>{if(await x({title:"删除数据源",description:`确定删除「${t.name}」?`,variant:"destructive"}))try{await z.delete(t.id),o.success("已删除"),N()}catch{o.error("删除失败")}},n=async t=>{try{await z.setDefault(t.id),o.success(`已将「${t.name}」设为默认`),N()}catch{o.error("设置失败")}},J=async()=>{if(!s.url.trim()||!s.username.trim()){o.error("请填写 URL 和用户名");return}T(!0),M(null);try{const t=await z.testConnection({url:s.url.trim(),username:s.username.trim(),password:s.password||""}),C=t?.data||t;M(C)}catch(t){M({success:!1,message:t?.message||"测试失败"})}finally{T(!1)}};return B?e.jsx("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:183:7",className:"flex items-center justify-center h-96",children:e.jsx(ce,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:184:9",className:"animate-spin w-8 h-8 text-[var(--dg-text-secondary)]"})}):e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:190:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:191:7",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:192:9",children:[e.jsxs("h2",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:193:11",className:"text-lg font-semibold text-[var(--dg-text-primary)] flex items-center gap-2",children:[e.jsx("img",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:194:13",src:"https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/zabbix.png",className:"w-5 h-5 rounded",onError:t=>{t.target.style.display="none"}}),"Zabbix 数据源"]}),e.jsx("p",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:201:11",className:"text-xs text-[var(--dg-text-muted)]",children:"配置 Zabbix API 连接,获取主机监控数据"})]}),e.jsxs(i,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:203:9",onClick:j,size:"sm",children:[e.jsx(H,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:204:11",className:"w-4 h-4 mr-1"}),"添加"]})]}),h.length===0?e.jsx(re,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:209:9",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsxs(oe,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:210:11",className:"py-12 text-center text-[var(--dg-text-muted)]",children:[e.jsx(L,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:211:13",className:"w-12 h-12 mx-auto mb-3 opacity-30"}),e.jsx("p",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:212:13",className:"text-sm",children:"暂无 Zabbix 数据源"}),e.jsxs(i,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:213:13",size:"sm",className:"mt-4",onClick:j,children:[e.jsx(H,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:214:15",className:"w-4 h-4 mr-1"}),"添加数据源"]})]})}):e.jsx("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:219:9",className:"grid gap-3",children:h.map(t=>e.jsx(re,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:221:13",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] hover:border-orange-500/30 transition-colors",children:e.jsx(oe,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:222:15",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:223:17",className:"flex items-start justify-between",children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:224:19",className:"flex-1 min-w-0",children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:225:21",className:"flex items-center gap-2 mb-1",children:[e.jsx("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:226:23",className:`w-2 h-2 rounded-full ${t.status===1?"bg-emerald-400":"bg-slate-500"}`}),e.jsx("span",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:227:23",className:"font-medium text-[var(--dg-text-primary)]",children:t.name}),t.is_default&&e.jsxs(v,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:228:41",className:"bg-amber-500/20 text-amber-400 text-[10px]",children:[e.jsx($,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:228:103",className:"w-3 h-3 mr-0.5"}),"默认"]}),t.status===1?e.jsx(v,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:230:27",className:"bg-emerald-500/20 text-emerald-400 text-[10px]",children:"启用"}):e.jsx(v,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:231:27",className:"bg-slate-500/20 text-slate-400 text-[10px]",children:"禁用"})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:233:21",className:"text-xs text-[var(--dg-text-muted)] space-x-3",children:[e.jsx("code",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:234:23",className:"text-orange-300",children:t.url}),e.jsxs("span",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:235:23",children:["用户: ",t.username]}),t.direct_db&&e.jsx(v,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:236:40",variant:"outline",className:"text-[10px]",children:"直连DB"})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:239:19",className:"flex items-center gap-1",children:[!t.is_default&&e.jsxs(i,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:241:23",variant:"ghost",size:"sm",className:"h-7 text-xs text-amber-400",onClick:()=>n(t),children:[e.jsx($,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:242:25",className:"w-3 h-3 mr-0.5"}),"默认"]}),e.jsxs(i,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:245:21",variant:"ghost",size:"sm",className:"h-7 text-xs",onClick:()=>Z(t),children:[e.jsx(fe,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:246:23",className:"w-3 h-3 mr-0.5"}),"编辑"]}),e.jsx(i,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:248:21",variant:"ghost",size:"sm",className:"h-7 text-xs text-red-400",onClick:()=>W(t),children:e.jsx(_e,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:249:23",className:"w-3 h-3"})})]})]})})},t.id))}),e.jsx(xe,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:260:7",open:U,onOpenChange:g,children:e.jsxs(pe,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:261:9",className:"max-w-xl max-h-[85vh] overflow-y-auto bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:[e.jsxs(ge,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:262:11",children:[e.jsxs(be,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:263:13",className:"text-[var(--dg-text-primary)] flex items-center gap-2",children:[e.jsx(L,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:264:15",className:"h-5 w-5 text-orange-400"}),b?"编辑 Zabbix 数据源":"新建 Zabbix 数据源"]}),e.jsx(De,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:267:13",children:"配置 Zabbix API 连接,用于主机监控与告警数据获取"})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:272:11",className:"space-y-4 py-2",children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:274:13",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:275:15",children:[e.jsx(c,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:276:17",className:"text-xs text-[var(--dg-text-secondary)]",children:"名称 *"}),e.jsx(u,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:277:17",className:"mt-1 h-9 text-sm bg-[var(--dg-bg-primary)]",placeholder:"如:生产 Zabbix",value:s.name,onChange:t=>m("name",t.target.value)})]}),e.jsx("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:280:15",className:"flex items-end pb-1",children:e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:281:17",className:"flex items-center gap-2",children:[e.jsx(l,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:282:19",checked:s.is_default,onCheckedChange:t=>m("is_default",t)}),e.jsx(c,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:283:19",className:"text-xs cursor-pointer",children:"设为默认"})]})})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:289:13",className:"border border-[var(--dg-border)] rounded-lg p-3 space-y-3",children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:290:15",className:"flex items-center gap-2 text-sm text-[var(--dg-text-primary)]",children:[e.jsx(je,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:291:17",className:"w-4 h-4"})," HTTP"]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:293:15",children:[e.jsx(c,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:294:17",className:"text-xs text-[var(--dg-text-secondary)]",children:"URL *"}),e.jsx(u,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:295:17",className:"mt-1 h-9 text-sm font-mono bg-[var(--dg-bg-primary)]",placeholder:"http://zabbix.example.com/api_jsonrpc.php",value:s.url,onChange:t=>m("url",t.target.value)})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:302:13",className:"border border-[var(--dg-border)] rounded-lg overflow-hidden",children:[e.jsxs("button",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:303:15",className:"w-full flex items-center justify-between px-3 py-2.5 text-sm hover:bg-[var(--dg-bg-tertiary)]",onClick:()=>D(!P),children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:305:17",className:"flex items-center gap-2",children:[e.jsx(ve,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:306:19",className:"w-4 h-4"}),e.jsx("span",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:307:19",children:"Zabbix API 认证"})]}),P?e.jsx(I,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:309:29",className:"w-4 h-4"}):e.jsx(F,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:309:65",className:"w-4 h-4"})]}),P&&e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:312:17",className:"px-3 pb-3 space-y-3",children:[e.jsx(u,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:313:19",className:"h-9 text-sm bg-[var(--dg-bg-primary)]",placeholder:"用户名 *",value:s.username,onChange:t=>m("username",t.target.value)}),e.jsx(u,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:315:19",className:"h-9 text-sm bg-[var(--dg-bg-primary)]",type:"password",placeholder:"密码 *",value:s.password,onChange:t=>m("password",t.target.value)})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:322:13",className:"border border-[var(--dg-border)] rounded-lg overflow-hidden",children:[e.jsxs("button",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:323:15",className:"w-full flex items-center justify-between px-3 py-2.5 text-sm hover:bg-[var(--dg-bg-tertiary)]",onClick:()=>E(!y),children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:325:17",className:"flex items-center gap-2",children:[e.jsx(te,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:326:19",className:"w-4 h-4"}),e.jsx("span",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:327:19",children:"Trends 设置"})]}),y?e.jsx(I,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:329:31",className:"w-4 h-4"}):e.jsx(F,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:329:67",className:"w-4 h-4"})]}),y&&e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:332:17",className:"px-3 pb-3 space-y-3",children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:333:19",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:334:21",children:[e.jsx(c,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:335:23",className:"text-xs text-[var(--dg-text-secondary)]",children:"After (天)"}),e.jsx(u,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:336:23",className:"mt-1 h-9 text-sm bg-[var(--dg-bg-primary)]",type:"number",min:0,value:s.trends_after,onChange:t=>m("trends_after",parseInt(t.target.value)||0)})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:339:21",children:[e.jsx(c,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:340:23",className:"text-xs text-[var(--dg-text-secondary)]",children:"Range (秒)"}),e.jsx(u,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:341:23",className:"mt-1 h-9 text-sm bg-[var(--dg-bg-primary)]",type:"number",min:0,value:s.trends_range,onChange:t=>m("trends_range",parseInt(t.target.value)||0)})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:345:19",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:346:21",children:[e.jsx(c,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:347:23",className:"text-xs text-[var(--dg-text-secondary)]",children:"Cache TTL (秒)"}),e.jsx(u,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:348:23",className:"mt-1 h-9 text-sm bg-[var(--dg-bg-primary)]",type:"number",min:0,value:s.trends_cache_ttl,onChange:t=>m("trends_cache_ttl",parseInt(t.target.value)||3600)})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:351:21",children:[e.jsx(c,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:352:23",className:"text-xs text-[var(--dg-text-secondary)]",children:"Timeout (秒)"}),e.jsx(u,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:353:23",className:"mt-1 h-9 text-sm bg-[var(--dg-bg-primary)]",type:"number",min:1,value:s.trends_timeout,onChange:t=>m("trends_timeout",parseInt(t.target.value)||30)})]})]})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:362:13",className:"border border-[var(--dg-border)] rounded-lg overflow-hidden",children:[e.jsxs("button",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:363:15",className:"w-full flex items-center justify-between px-3 py-2.5 text-sm hover:bg-[var(--dg-bg-tertiary)]",onClick:()=>S(!O),children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:365:17",className:"flex items-center gap-2",children:[e.jsx(Me,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:366:19",className:"w-4 h-4"}),e.jsx("span",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:367:19",children:"其他设置"})]}),O?e.jsx(I,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:369:30",className:"w-4 h-4"}):e.jsx(F,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:369:66",className:"w-4 h-4"})]}),O&&e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:372:17",className:"px-3 pb-3 space-y-3",children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:373:19",className:"flex items-center justify-between",children:[e.jsx(c,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:374:21",className:"text-xs",children:"Direct DB Connection"}),e.jsx(l,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:375:21",checked:s.direct_db,onCheckedChange:t=>m("direct_db",t)})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:377:19",className:"flex items-center justify-between",children:[e.jsx(c,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:378:21",className:"text-xs",children:"只读用户禁用确认"}),e.jsx(l,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:379:21",checked:s.disable_acknowledges,onCheckedChange:t=>m("disable_acknowledges",t)})]}),e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:381:19",className:"flex items-center justify-between",children:[e.jsx(c,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:382:21",className:"text-xs",children:"禁用数据对齐"}),e.jsx(l,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:383:21",checked:s.disable_data_alignment,onCheckedChange:t=>m("disable_data_alignment",t)})]})]})]}),w&&e.jsxs("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:391:15",className:`flex items-center gap-2 p-2.5 rounded text-sm ${w.success?"bg-emerald-500/10 text-emerald-400":"bg-red-500/10 text-red-400"}`,children:[w.success?e.jsx(qe,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:394:39",className:"h-4 w-4"}):e.jsx(Pe,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:394:78",className:"h-4 w-4"}),w.message]})]}),e.jsxs(Ne,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:400:11",className:"gap-2",children:[e.jsxs(i,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:401:13",variant:"outline",size:"sm",onClick:J,disabled:R,children:[e.jsx(ne,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:402:15",className:`w-4 h-4 mr-1 ${R?"animate-pulse":""}`}),"测试连接"]}),e.jsx("div",{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:405:13",className:"flex-1"}),e.jsx(i,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:406:13",variant:"ghost",size:"sm",onClick:()=>g(!1),children:"取消"}),e.jsx(i,{"code-path":"src/components/monitor/datasource/ZabbixDatasourceManager.tsx:407:13",size:"sm",onClick:G,children:"保存"})]})]})})]})}function na(){const[x,h]=r.useState("prometheus");return e.jsxs("div",{"code-path":"src/components/monitor/datasource/DatasourcePage.tsx:12:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/monitor/datasource/DatasourcePage.tsx:13:7",className:"flex items-center gap-2",children:[e.jsx(L,{"code-path":"src/components/monitor/datasource/DatasourcePage.tsx:14:9",className:"h-5 w-5 text-blue-400"}),e.jsx("h1",{"code-path":"src/components/monitor/datasource/DatasourcePage.tsx:15:9",className:"text-xl font-bold text-[var(--dg-text-primary)]",children:"数据源管理"})]}),e.jsxs(Ae,{"code-path":"src/components/monitor/datasource/DatasourcePage.tsx:18:7",value:x,onValueChange:h,children:[e.jsxs(ze,{"code-path":"src/components/monitor/datasource/DatasourcePage.tsx:19:9",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:[e.jsxs(de,{"code-path":"src/components/monitor/datasource/DatasourcePage.tsx:20:11",value:"prometheus",className:"data-[state=active]:bg-orange-500/10 data-[state=active]:text-orange-400",children:[e.jsx("img",{"code-path":"src/components/monitor/datasource/DatasourcePage.tsx:21:13",src:"https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/prometheus.png",className:"w-4 h-4 rounded mr-1.5",onError:p=>{p.target.style.display="none"}}),"Prometheus"]}),e.jsxs(de,{"code-path":"src/components/monitor/datasource/DatasourcePage.tsx:28:11",value:"zabbix",className:"data-[state=active]:bg-orange-500/10 data-[state=active]:text-orange-400",children:[e.jsx("img",{"code-path":"src/components/monitor/datasource/DatasourcePage.tsx:29:13",src:"https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/zabbix.png",className:"w-4 h-4 rounded mr-1.5",onError:p=>{p.target.style.display="none"}}),"Zabbix"]})]}),e.jsx(me,{"code-path":"src/components/monitor/datasource/DatasourcePage.tsx:38:9",value:"prometheus",className:"mt-4",children:e.jsx(Re,{"code-path":"src/components/monitor/datasource/DatasourcePage.tsx:39:11"})}),e.jsx(me,{"code-path":"src/components/monitor/datasource/DatasourcePage.tsx:41:9",value:"zabbix",className:"mt-4",children:e.jsx($e,{"code-path":"src/components/monitor/datasource/DatasourcePage.tsx:42:11"})})]})]})}export{na as default}; diff --git a/backend/static/assets/DeployCredentials-XbkP4xDn.js b/backend/static/assets/DeployCredentials-XbkP4xDn.js deleted file mode 100644 index faef104..0000000 --- a/backend/static/assets/DeployCredentials-XbkP4xDn.js +++ /dev/null @@ -1 +0,0 @@ -import{g as te,r as o,j as e,D as A,b as H,c as M,d as W,O as Y,v as Z,I as z,P as oe,f as ae,B as d,h as ne,L as F,a3 as le,x as ce,a4 as de,e as re,a as pe,a0 as ie}from"./index-DfyorCky.js";import{B as w}from"./badge-xNW8x0G1.js";import{T as xe,a as me,b as $,c as B}from"./tabs-CIh_yD4s.js";import{L as _}from"./label-BK0h2apY.js";import{S as K,a as X,b as q,c as J,d as E}from"./select-D5qUzdAs.js";import{t as r}from"./index-a3ybMjbR.js";import{d as i}from"./deploy-B3Sg3N1U.js";import{P as G}from"./plus-CUG-9kpu.js";import{R as ee}from"./refresh-cw-DUB_tAG-.js";import{C as ye}from"./circle-x-DK79Dhg2.js";import{D as I}from"./download-DoZfYs2h.js";import{W as he}from"./wrench-KfbhOOJm.js";import{P}from"./pencil-BqUotcjf.js";import{T as U}from"./trash-2-Dx32pOzT.js";import"./index-CWVNW_qu.js";const ge=[["path",{d:"M14 17H5",key:"gfn3mx"}],["path",{d:"M19 7h-9",key:"6i9tg"}],["circle",{cx:"17",cy:"17",r:"3",key:"18b49y"}],["circle",{cx:"7",cy:"7",r:"3",key:"dfmy0x"}]],Ce=te("settings-2",ge);function be({open:S,onOpenChange:b,type:L,editId:n,repos:h,registries:j,onSave:m}){const c=L==="repo",[g,u]=o.useState(""),[C,f]=o.useState(""),[p,v]=o.useState(""),[y,N]=o.useState(""),[D,T]=o.useState(""),[s,l]=o.useState([]),[x,V]=o.useState(!1),t=s.filter(a=>c?!0:a.secret_type==="docker"),k=async()=>{try{const a=await ne.get("/credentials?page_size=100");l(a?.list||[])}catch{}};o.useEffect(()=>{if(k(),n)if(c){const a=h.find(R=>R.id===n);a&&(u(a.name),f(""),v(a.url),T(a.credential_id||""))}else{const a=j.find(R=>R.id===n);a&&(u(a.name),f(""),v(a.registry_url),N(a.namespace||""),T(a.credential_id||""))}else u(""),f(""),v(""),N(""),T("")},[n,S,c]);const O=async()=>{if(!g.trim()||!p.trim()){r.error("请填写名称和地址");return}V(!0);try{const a=D?Number(D):null,R=c?{name:g.trim(),description:C.trim(),url:p.trim(),credential_id:a}:{name:g.trim(),description:C.trim(),registry_url:p.trim(),namespace:y.trim(),credential_id:a};n?(c?await i.updateRepo(n,R):await i.updateRegistry(n,R),r.success("已更新")):(c?await i.createRepo(R):await i.createRegistry(R),r.success("已创建")),b(!1),m()}catch{r.error("保存失败")}finally{V(!1)}},se=c?Y:Z;return e.jsx(A,{"code-path":"src/components/deploy/CredentialFormDialog.tsx:97:5",open:S,onOpenChange:b,children:e.jsxs(H,{"code-path":"src/components/deploy/CredentialFormDialog.tsx:98:7",className:"sm:max-w-[480px] bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:[e.jsx(M,{"code-path":"src/components/deploy/CredentialFormDialog.tsx:99:9",children:e.jsxs(W,{"code-path":"src/components/deploy/CredentialFormDialog.tsx:100:11",className:"text-[var(--dg-text-primary)] flex items-center gap-2",children:[e.jsx(se,{"code-path":"src/components/deploy/CredentialFormDialog.tsx:101:13",className:"h-5 w-5 text-[var(--dg-blue)]"}),n?"编辑":"新增",c?" Git 仓库":" 镜像仓库"]})}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialFormDialog.tsx:105:9",className:"space-y-4 py-2",children:[e.jsxs("div",{"code-path":"src/components/deploy/CredentialFormDialog.tsx:106:11",className:"space-y-1",children:[e.jsx(_,{"code-path":"src/components/deploy/CredentialFormDialog.tsx:106:38",children:"名称 *"}),e.jsx(z,{"code-path":"src/components/deploy/CredentialFormDialog.tsx:107:13",value:g,onChange:a=>u(a.target.value),placeholder:c?"如:GitLab CE":"如:Harbor",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialFormDialog.tsx:108:11",className:"space-y-1",children:[e.jsx(_,{"code-path":"src/components/deploy/CredentialFormDialog.tsx:108:38",children:c?"仓库 URL *":"Registry URL *"}),e.jsx(z,{"code-path":"src/components/deploy/CredentialFormDialog.tsx:109:13",value:p,onChange:a=>v(a.target.value),placeholder:c?"http://10.10.10.72:9000/group/repo.git":"http://10.10.10.72",className:"font-mono text-sm bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),!c&&e.jsxs("div",{"code-path":"src/components/deploy/CredentialFormDialog.tsx:110:23",className:"space-y-1",children:[e.jsx(_,{"code-path":"src/components/deploy/CredentialFormDialog.tsx:110:50",children:"默认命名空间"}),e.jsx(z,{"code-path":"src/components/deploy/CredentialFormDialog.tsx:111:13",value:y,onChange:a=>N(a.target.value),placeholder:"如:aiops",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialFormDialog.tsx:114:11",className:"space-y-1",children:[e.jsxs(_,{"code-path":"src/components/deploy/CredentialFormDialog.tsx:115:13",children:["关联凭证 ",e.jsx("span",{"code-path":"src/components/deploy/CredentialFormDialog.tsx:115:25",className:"text-xs text-[var(--dg-text-secondary)] opacity-70",children:"(认证由凭据管理统一配置)"})]}),e.jsxs(K,{"code-path":"src/components/deploy/CredentialFormDialog.tsx:116:13",value:String(D),onValueChange:a=>T(a==="__none"?"":a),children:[e.jsx(X,{"code-path":"src/components/deploy/CredentialFormDialog.tsx:117:15",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]",children:e.jsx(q,{"code-path":"src/components/deploy/CredentialFormDialog.tsx:118:17",placeholder:c?"选择凭据(API/密码等)":"选择 Docker 密码凭据"})}),e.jsxs(J,{"code-path":"src/components/deploy/CredentialFormDialog.tsx:120:15",children:[e.jsx(E,{"code-path":"src/components/deploy/CredentialFormDialog.tsx:121:17",value:"__none",children:"不关联凭证"}),t.map(a=>e.jsx(E,{"code-path":"src/components/deploy/CredentialFormDialog.tsx:123:19",value:String(a.id),children:e.jsxs("span",{"code-path":"src/components/deploy/CredentialFormDialog.tsx:124:21",className:"flex items-center gap-1.5",children:[e.jsx(oe,{"code-path":"src/components/deploy/CredentialFormDialog.tsx:125:23",className:"h-3 w-3 opacity-60"}),a.name," ",a.summary&&e.jsxs("span",{"code-path":"src/components/deploy/CredentialFormDialog.tsx:126:46",className:"text-[10px] opacity-50",children:["(",a.summary,")"]})]})},a.id))]})]}),t.length===0&&e.jsxs("p",{"code-path":"src/components/deploy/CredentialFormDialog.tsx:133:15",className:"text-xs text-amber-400 flex items-center gap-1 mt-1",children:[e.jsx(G,{"code-path":"src/components/deploy/CredentialFormDialog.tsx:134:17",className:"h-3 w-3"}),"暂无",c?"":"Docker 密码","类型凭证,请在凭证配置页面新增"]})]})]}),e.jsxs(ae,{"code-path":"src/components/deploy/CredentialFormDialog.tsx:140:9",children:[e.jsx(d,{"code-path":"src/components/deploy/CredentialFormDialog.tsx:141:11",variant:"outline",onClick:()=>b(!1),children:"取消"}),e.jsx(d,{"code-path":"src/components/deploy/CredentialFormDialog.tsx:142:11",onClick:O,disabled:x,children:x?"保存中...":"保存"})]})]})})}const je={build:"构建",deploy:"部署",automation:"自动化",other:"其他"},Q={build:"bg-amber-500/20 text-amber-400 border-amber-500/30",deploy:"bg-cyan-500/20 text-cyan-400 border-cyan-500/30",automation:"bg-purple-500/20 text-purple-400 border-purple-500/30",other:"bg-slate-500/20 text-slate-400 border-slate-500/30"},ue=["jdk","nodejs","maven"];function fe(){const[S,b]=o.useState([]),[L,n]=o.useState(!1),[h,j]=o.useState(null),[m,c]=o.useState(null),[g,u]=o.useState(""),[C,f]=o.useState(null),p=async()=>{n(!0);try{const s=await i.getTools();b(s?.list||[])}catch{r.error("获取工具配置失败")}finally{n(!1)}};o.useEffect(()=>{p()},[]);const v=async s=>{try{const x=(await i.getToolVersions(s.id))?.versions||[];if(x.length===0){y(s);return}c({tool:s,versions:x}),u(s.default_version||x[0]?.version||"")}catch{y(s)}},y=async(s,l)=>{j(s.id);try{const x=l||s.default_version;await i.installTool(s.id,x),r.success(`${s.display_name}${x?` (${x})`:""} 安装已触发`),c(null),setTimeout(async()=>{try{await i.checkTool(s.id),p()}catch{}j(null)},3e3)}catch{r.error("触发安装失败"),j(null)}},N=async s=>{try{const l=await i.checkTool(s.id);r.success(l?.available?`${s.display_name} 可用`:`${s.display_name} 不可用`),p()}catch{r.error("检测失败")}},D=async(s,l)=>{try{await i.updateTool(s.id,{install_method:l}),r.success("已更新"),p()}catch{r.error("更新失败")}},T=async s=>{f(s.id);const l=Date.now();try{const x=await i.getToolVersions(s.id),V=((Date.now()-l)/1e3).toFixed(1);x?.versions?.length>0?r.success(`${s.display_name} 镜像可访问 (${V}s)`):r(`${s.display_name} 无法获取版本列表`,{description:"请检查网络连接"})}catch{r.error(`${s.display_name} 网络不可达`)}f(null)};return e.jsxs("div",{"code-path":"src/components/deploy/ToolConfigTab.tsx:137:5",className:"space-y-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/ToolConfigTab.tsx:138:7",className:"flex items-center justify-between",children:[e.jsx("p",{"code-path":"src/components/deploy/ToolConfigTab.tsx:139:9",className:"text-xs text-[var(--dg-text-secondary)]",children:"管理 DevOps 工具的安装策略:预装在镜像中、首次使用自动下载(懒加载)、或禁用不安装"}),e.jsxs(d,{"code-path":"src/components/deploy/ToolConfigTab.tsx:142:9",variant:"outline",size:"sm",onClick:p,children:[e.jsx(ee,{"code-path":"src/components/deploy/ToolConfigTab.tsx:143:11",className:"w-3.5 h-3.5 mr-1"}),"刷新"]})]}),L?e.jsxs("div",{"code-path":"src/components/deploy/ToolConfigTab.tsx:148:9",className:"text-center py-12 text-[var(--dg-text-secondary)]",children:[e.jsx(F,{"code-path":"src/components/deploy/ToolConfigTab.tsx:149:11",className:"w-5 h-5 animate-spin mx-auto mb-2"}),"加载中..."]}):S.length===0?e.jsx("div",{"code-path":"src/components/deploy/ToolConfigTab.tsx:152:9",className:"text-center py-12 text-[var(--dg-text-secondary)]",children:"暂无工具配置,请检查后端种子数据"}):e.jsx("div",{"code-path":"src/components/deploy/ToolConfigTab.tsx:156:9",className:"rounded-md border border-[var(--dg-border)] overflow-hidden",children:e.jsxs("table",{"code-path":"src/components/deploy/ToolConfigTab.tsx:157:11",className:"w-full text-sm",children:[e.jsx("thead",{"code-path":"src/components/deploy/ToolConfigTab.tsx:158:13",className:"bg-[var(--dg-bg-tertiary)] border-b border-[var(--dg-border)]",children:e.jsxs("tr",{"code-path":"src/components/deploy/ToolConfigTab.tsx:159:15",children:[e.jsx("th",{"code-path":"src/components/deploy/ToolConfigTab.tsx:160:17",className:"px-3 py-2 text-left font-medium text-[var(--dg-text-secondary)]",children:"工具"}),e.jsx("th",{"code-path":"src/components/deploy/ToolConfigTab.tsx:161:17",className:"px-3 py-2 text-left font-medium text-[var(--dg-text-secondary)] hidden sm:table-cell",children:"分类"}),e.jsx("th",{"code-path":"src/components/deploy/ToolConfigTab.tsx:162:17",className:"px-3 py-2 text-left font-medium text-[var(--dg-text-secondary)]",children:"安装方式"}),e.jsx("th",{"code-path":"src/components/deploy/ToolConfigTab.tsx:163:17",className:"px-3 py-2 text-left font-medium text-[var(--dg-text-secondary)]",children:"状态"}),e.jsx("th",{"code-path":"src/components/deploy/ToolConfigTab.tsx:164:17",className:"px-3 py-2 text-right font-medium text-[var(--dg-text-secondary)]",children:"操作"})]})}),e.jsx("tbody",{"code-path":"src/components/deploy/ToolConfigTab.tsx:167:13",children:S.map(s=>{const l=ue.includes(s.name);return e.jsxs("tr",{"code-path":"src/components/deploy/ToolConfigTab.tsx:171:19",className:"border-b border-[var(--dg-border)] hover:bg-[var(--dg-bg-tertiary)]/50",children:[e.jsxs("td",{"code-path":"src/components/deploy/ToolConfigTab.tsx:172:21",className:"px-3 py-2",children:[e.jsx("div",{"code-path":"src/components/deploy/ToolConfigTab.tsx:173:23",className:"font-medium text-[var(--dg-text-primary)]",children:s.display_name}),e.jsx("div",{"code-path":"src/components/deploy/ToolConfigTab.tsx:174:23",className:"text-xs text-[var(--dg-text-secondary)] font-mono",children:s.name}),s.description&&e.jsx("div",{"code-path":"src/components/deploy/ToolConfigTab.tsx:176:25",className:"text-[10px] text-[var(--dg-text-muted)] mt-0.5 max-w-[220px] leading-tight",children:s.description}),s.installed_version&&s.status==="installed"&&e.jsxs("div",{"code-path":"src/components/deploy/ToolConfigTab.tsx:179:25",className:"text-xs text-emerald-400 font-mono mt-0.5",children:["v",s.installed_version]}),s.error_msg&&e.jsx("div",{"code-path":"src/components/deploy/ToolConfigTab.tsx:182:25",className:"text-xs text-red-400 mt-0.5 max-w-[200px] truncate",title:s.error_msg,children:s.error_msg})]}),e.jsx("td",{"code-path":"src/components/deploy/ToolConfigTab.tsx:185:21",className:"px-3 py-2 hidden sm:table-cell",children:e.jsx(w,{"code-path":"src/components/deploy/ToolConfigTab.tsx:186:23",className:`text-xs ${Q[s.category]||Q.other}`,children:je[s.category]||s.category})}),e.jsx("td",{"code-path":"src/components/deploy/ToolConfigTab.tsx:190:21",className:"px-3 py-2",children:e.jsxs(K,{"code-path":"src/components/deploy/ToolConfigTab.tsx:191:23",value:s.install_method,onValueChange:x=>D(s,x),children:[e.jsx(X,{"code-path":"src/components/deploy/ToolConfigTab.tsx:195:25",className:"h-7 w-[90px] text-xs",children:e.jsx(q,{"code-path":"src/components/deploy/ToolConfigTab.tsx:196:27"})}),e.jsxs(J,{"code-path":"src/components/deploy/ToolConfigTab.tsx:198:25",children:[e.jsx(E,{"code-path":"src/components/deploy/ToolConfigTab.tsx:199:27",value:"preinstall",children:"预装"}),e.jsx(E,{"code-path":"src/components/deploy/ToolConfigTab.tsx:200:27",value:"lazy",children:"懒加载"}),e.jsx(E,{"code-path":"src/components/deploy/ToolConfigTab.tsx:201:27",value:"disabled",children:"禁用"})]})]})}),e.jsx("td",{"code-path":"src/components/deploy/ToolConfigTab.tsx:205:21",className:"px-3 py-2",children:s.status==="installed"?e.jsxs(w,{"code-path":"src/components/deploy/ToolConfigTab.tsx:207:25",className:"bg-emerald-500/20 text-emerald-400 border-emerald-500/30 text-xs gap-1",children:[e.jsx(le,{"code-path":"src/components/deploy/ToolConfigTab.tsx:208:27",className:"w-3 h-3"}),"已安装"]}):s.status==="installing"?e.jsxs(w,{"code-path":"src/components/deploy/ToolConfigTab.tsx:211:25",className:"bg-amber-500/20 text-amber-400 border-amber-500/30 text-xs gap-1",children:[e.jsx(F,{"code-path":"src/components/deploy/ToolConfigTab.tsx:212:27",className:"w-3 h-3 animate-spin"}),"安装中"]}):s.status==="failed"?e.jsxs(w,{"code-path":"src/components/deploy/ToolConfigTab.tsx:215:25",className:"bg-red-500/20 text-red-400 border-red-500/30 text-xs gap-1",children:[e.jsx(ye,{"code-path":"src/components/deploy/ToolConfigTab.tsx:216:27",className:"w-3 h-3"}),"失败"]}):e.jsxs(w,{"code-path":"src/components/deploy/ToolConfigTab.tsx:219:25",className:"bg-slate-500/20 text-slate-400 border-slate-500/30 text-xs gap-1",children:[e.jsx(ce,{"code-path":"src/components/deploy/ToolConfigTab.tsx:220:27",className:"w-3 h-3"}),"未安装"]})}),e.jsx("td",{"code-path":"src/components/deploy/ToolConfigTab.tsx:224:21",className:"px-3 py-2 text-right",children:e.jsxs("div",{"code-path":"src/components/deploy/ToolConfigTab.tsx:225:23",className:"flex justify-end gap-1",children:[s.install_method==="lazy"&&s.status!=="installed"&&(l?e.jsxs(d,{"code-path":"src/components/deploy/ToolConfigTab.tsx:228:29",variant:"outline",size:"sm",className:"h-7 text-xs",onClick:()=>v(s),disabled:h===s.id,children:[h===s.id?e.jsx(F,{"code-path":"src/components/deploy/ToolConfigTab.tsx:234:33",className:"w-3 h-3 animate-spin mr-1"}):e.jsx(I,{"code-path":"src/components/deploy/ToolConfigTab.tsx:236:33",className:"w-3 h-3 mr-1"}),"安装"]}):e.jsxs(d,{"code-path":"src/components/deploy/ToolConfigTab.tsx:241:29",variant:"outline",size:"sm",className:"h-7 text-xs",onClick:()=>y(s),disabled:h===s.id,children:[h===s.id?e.jsx(F,{"code-path":"src/components/deploy/ToolConfigTab.tsx:247:33",className:"w-3 h-3 animate-spin mr-1"}):e.jsx(I,{"code-path":"src/components/deploy/ToolConfigTab.tsx:249:33",className:"w-3 h-3 mr-1"}),"安装"]})),s.install_method==="lazy"&&e.jsxs(d,{"code-path":"src/components/deploy/ToolConfigTab.tsx:256:27",variant:"ghost",size:"sm",className:"h-7 text-xs text-[var(--dg-text-secondary)]",onClick:()=>T(s),disabled:C===s.id,children:[C===s.id?e.jsx(F,{"code-path":"src/components/deploy/ToolConfigTab.tsx:262:31",className:"w-3 h-3 animate-spin mr-1"}):e.jsx(de,{"code-path":"src/components/deploy/ToolConfigTab.tsx:264:31",className:"w-3 h-3 mr-1"}),"测试"]}),e.jsx(d,{"code-path":"src/components/deploy/ToolConfigTab.tsx:269:25",variant:"ghost",size:"icon",className:"h-7 w-7",onClick:()=>N(s),title:"检测",children:e.jsx(Ce,{"code-path":"src/components/deploy/ToolConfigTab.tsx:270:27",className:"w-3.5 h-3.5"})})]})})]},s.id)})})]})}),e.jsx(A,{"code-path":"src/components/deploy/ToolConfigTab.tsx:283:7",open:!!m,onOpenChange:()=>c(null),children:e.jsxs(H,{"code-path":"src/components/deploy/ToolConfigTab.tsx:284:9",className:"max-w-sm",children:[e.jsxs(M,{"code-path":"src/components/deploy/ToolConfigTab.tsx:285:11",children:[e.jsx(W,{"code-path":"src/components/deploy/ToolConfigTab.tsx:286:13",children:"选择安装版本"}),e.jsxs(re,{"code-path":"src/components/deploy/ToolConfigTab.tsx:287:13",children:[m?.tool.display_name," — 请选择要安装的版本"]})]}),e.jsxs("div",{"code-path":"src/components/deploy/ToolConfigTab.tsx:291:11",className:"space-y-4 py-2",children:[e.jsx("div",{"code-path":"src/components/deploy/ToolConfigTab.tsx:292:13",className:"space-y-2",children:m?.versions.map((s,l)=>e.jsxs("button",{"code-path":"src/components/deploy/ToolConfigTab.tsx:294:17",onClick:()=>u(s.version),className:`w-full flex items-center justify-between px-3 py-2.5 rounded-lg text-sm border transition-all ${g===s.version?"border-indigo-400/50 bg-indigo-400/10 text-[var(--dg-text-primary)]":"border-[var(--dg-border)] bg-[var(--dg-bg-secondary)] text-[var(--dg-text-secondary)] hover:border-[var(--dg-text-secondary)]/30"}`,children:[e.jsx("span",{"code-path":"src/components/deploy/ToolConfigTab.tsx:303:19",children:s.label}),e.jsx("span",{"code-path":"src/components/deploy/ToolConfigTab.tsx:304:19",className:"text-xs font-mono text-[var(--dg-text-muted)]",children:s.version})]},s.version))}),e.jsxs("div",{"code-path":"src/components/deploy/ToolConfigTab.tsx:308:13",className:"flex justify-end gap-2 pt-2 border-t border-[var(--dg-border)]",children:[e.jsx(d,{"code-path":"src/components/deploy/ToolConfigTab.tsx:309:15",variant:"outline",size:"sm",onClick:()=>c(null),children:"取消"}),e.jsxs(d,{"code-path":"src/components/deploy/ToolConfigTab.tsx:310:15",size:"sm",onClick:()=>m&&y(m.tool,g),disabled:!g||h===m?.tool.id,children:[h===m?.tool.id?e.jsx(F,{"code-path":"src/components/deploy/ToolConfigTab.tsx:316:19",className:"w-3.5 h-3.5 animate-spin mr-1"}):e.jsx(I,{"code-path":"src/components/deploy/ToolConfigTab.tsx:318:19",className:"w-3.5 h-3.5 mr-1"}),"安装"]})]})]})]})})]})}function ve({open:S,onClose:b,onSaved:L,editData:n}){const[h,j]=o.useState(""),[m,c]=o.useState(""),[g,u]=o.useState("development"),[C,f]=o.useState("#3B82F6"),[p,v]=o.useState(""),[y,N]=o.useState(50),[D,T]=o.useState(!1);o.useEffect(()=>{n?(j(n.name),c(n.display_name),u(n.type),f(n.color),v(n.description||""),N(n.sort_order)):(j(""),c(""),u("development"),f("#3B82F6"),v(""),N(50))},[n,S]);const s=async()=>{if(!h.trim()||!m.trim()){r.error("请填写名称");return}T(!0);try{n?await i.updateEnvironment(n.id,{name:h,display_name:m,type:g,color:C,sort_order:y,description:p}):await i.createEnvironment({name:h,display_name:m,type:g,color:C,sort_order:y,description:p}),r.success(n?"已更新":"已创建"),L(),b()}catch{r.error("操作失败")}finally{T(!1)}};return e.jsx(A,{"code-path":"src/components/deploy/DeployCredentials.tsx:67:5",open:S,onOpenChange:b,children:e.jsxs(H,{"code-path":"src/components/deploy/DeployCredentials.tsx:68:7",children:[e.jsx(M,{"code-path":"src/components/deploy/DeployCredentials.tsx:69:9",children:e.jsx(W,{"code-path":"src/components/deploy/DeployCredentials.tsx:69:23",children:n?"编辑环境":"新增环境"})}),e.jsxs("div",{"code-path":"src/components/deploy/DeployCredentials.tsx:70:9",className:"space-y-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/DeployCredentials.tsx:71:11",className:"space-y-1",children:[e.jsx(_,{"code-path":"src/components/deploy/DeployCredentials.tsx:71:38",children:"环境标识"}),e.jsx(z,{"code-path":"src/components/deploy/DeployCredentials.tsx:71:57",value:h,onChange:l=>j(l.target.value),placeholder:"production"})]}),e.jsxs("div",{"code-path":"src/components/deploy/DeployCredentials.tsx:72:11",className:"space-y-1",children:[e.jsx(_,{"code-path":"src/components/deploy/DeployCredentials.tsx:72:38",children:"显示名称"}),e.jsx(z,{"code-path":"src/components/deploy/DeployCredentials.tsx:72:57",value:m,onChange:l=>c(l.target.value),placeholder:"生产环境"})]}),e.jsxs("div",{"code-path":"src/components/deploy/DeployCredentials.tsx:73:11",className:"space-y-1",children:[e.jsx(_,{"code-path":"src/components/deploy/DeployCredentials.tsx:73:38",children:"环境类型"}),e.jsxs(K,{"code-path":"src/components/deploy/DeployCredentials.tsx:74:13",value:g,onValueChange:u,children:[e.jsx(X,{"code-path":"src/components/deploy/DeployCredentials.tsx:75:15",children:e.jsx(q,{"code-path":"src/components/deploy/DeployCredentials.tsx:75:30"})}),e.jsxs(J,{"code-path":"src/components/deploy/DeployCredentials.tsx:76:15",children:[e.jsx(E,{"code-path":"src/components/deploy/DeployCredentials.tsx:77:17",value:"production",children:"生产环境"}),e.jsx(E,{"code-path":"src/components/deploy/DeployCredentials.tsx:78:17",value:"staging",children:"预发布"}),e.jsx(E,{"code-path":"src/components/deploy/DeployCredentials.tsx:79:17",value:"testing",children:"测试环境"}),e.jsx(E,{"code-path":"src/components/deploy/DeployCredentials.tsx:80:17",value:"development",children:"开发环境"})]})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/DeployCredentials.tsx:84:11",className:"space-y-1",children:[e.jsx(_,{"code-path":"src/components/deploy/DeployCredentials.tsx:84:38",children:"标志颜色"}),e.jsx(z,{"code-path":"src/components/deploy/DeployCredentials.tsx:84:57",value:C,onChange:l=>f(l.target.value),type:"color",className:"w-16 h-9 p-1"})]}),e.jsxs("div",{"code-path":"src/components/deploy/DeployCredentials.tsx:85:11",className:"space-y-1",children:[e.jsx(_,{"code-path":"src/components/deploy/DeployCredentials.tsx:85:38",children:"排序序号"}),e.jsx(z,{"code-path":"src/components/deploy/DeployCredentials.tsx:85:57",value:y,onChange:l=>N(Number(l.target.value)),type:"number"})]}),e.jsxs("div",{"code-path":"src/components/deploy/DeployCredentials.tsx:86:11",className:"space-y-1",children:[e.jsx(_,{"code-path":"src/components/deploy/DeployCredentials.tsx:86:38",children:"描述"}),e.jsx(z,{"code-path":"src/components/deploy/DeployCredentials.tsx:86:55",value:p,onChange:l=>v(l.target.value),placeholder:"可选"})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/DeployCredentials.tsx:88:9",className:"flex justify-end gap-2 mt-4",children:[e.jsx(d,{"code-path":"src/components/deploy/DeployCredentials.tsx:89:11",variant:"outline",onClick:b,children:"取消"}),e.jsx(d,{"code-path":"src/components/deploy/DeployCredentials.tsx:90:11",onClick:s,disabled:D,children:D?"...":n?"保存":"创建"})]})]})})}function Be(){const S=pe(),[b,L]=o.useState([]),[n,h]=o.useState([]),[j,m]=o.useState([]),[c,g]=o.useState(!1),[u,C]=o.useState(!1),[f,p]=o.useState("repo"),[v,y]=o.useState(null),[N,D]=o.useState(!1),[T,s]=o.useState(null),l=async()=>{g(!0);try{const[t,k,O]=await Promise.all([i.getRepos(),i.getRegistries(),i.getEnvironments()]);L(t?.list||[]),h(k?.list||[]),m(O?.list||[])}catch{r.error("获取数据失败")}finally{g(!1)}};o.useEffect(()=>{l()},[]);const x=async(t,k)=>{if(await S({title:"删除",description:`确定删除「${k.name||k.display_name}」?`,confirmText:"删除",variant:"destructive"}))try{t==="repo"?await i.deleteRepo(k.id):t==="registry"?await i.deleteRegistry(k.id):await i.deleteEnvironment(k.id),r.success("已删除"),l()}catch{r.error("删除失败")}},V={production:"生产",staging:"预发布",testing:"测试",development:"开发"};return e.jsxs("div",{"code-path":"src/components/deploy/DeployCredentials.tsx:137:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/deploy/DeployCredentials.tsx:138:7",className:"flex items-center justify-between",children:[e.jsx("h2",{"code-path":"src/components/deploy/DeployCredentials.tsx:139:9",className:"text-lg font-semibold text-[var(--dg-text-primary)]",children:"发布配置管理"}),e.jsxs("div",{"code-path":"src/components/deploy/DeployCredentials.tsx:140:9",className:"flex items-center gap-2",children:[e.jsxs(d,{"code-path":"src/components/deploy/DeployCredentials.tsx:141:11",variant:"outline",size:"sm",onClick:l,children:[e.jsx(ee,{"code-path":"src/components/deploy/DeployCredentials.tsx:141:66",className:"w-4 h-4 mr-1"}),"刷新"]}),e.jsxs(d,{"code-path":"src/components/deploy/DeployCredentials.tsx:142:11",size:"sm",onClick:()=>{p("repo"),y(null),C(!0)},children:[e.jsx(G,{"code-path":"src/components/deploy/DeployCredentials.tsx:143:13",className:"w-4 h-4 mr-1"}),"新增 Git 仓库"]}),e.jsxs(d,{"code-path":"src/components/deploy/DeployCredentials.tsx:145:11",size:"sm",variant:"secondary",onClick:()=>{p("registry"),y(null),C(!0)},children:[e.jsx(G,{"code-path":"src/components/deploy/DeployCredentials.tsx:146:13",className:"w-4 h-4 mr-1"}),"新增镜像仓库"]})]})]}),e.jsxs(xe,{"code-path":"src/components/deploy/DeployCredentials.tsx:151:7",defaultValue:"repos",children:[e.jsxs(me,{"code-path":"src/components/deploy/DeployCredentials.tsx:152:9",children:[e.jsxs($,{"code-path":"src/components/deploy/DeployCredentials.tsx:153:11",value:"repos",className:"gap-1",children:[e.jsx(ie,{"code-path":"src/components/deploy/DeployCredentials.tsx:153:56",className:"w-4 h-4"}),"Git 仓库 (",b.length,")"]}),e.jsxs($,{"code-path":"src/components/deploy/DeployCredentials.tsx:154:11",value:"registries",className:"gap-1",children:[e.jsx(Z,{"code-path":"src/components/deploy/DeployCredentials.tsx:154:61",className:"w-4 h-4"}),"镜像仓库 (",n.length,")"]}),e.jsxs($,{"code-path":"src/components/deploy/DeployCredentials.tsx:155:11",value:"environments",className:"gap-1",children:[e.jsx(Y,{"code-path":"src/components/deploy/DeployCredentials.tsx:155:63",className:"w-4 h-4"}),"环境管理 (",j.length,")"]}),e.jsxs($,{"code-path":"src/components/deploy/DeployCredentials.tsx:156:11",value:"tools",className:"gap-1",children:[e.jsx(he,{"code-path":"src/components/deploy/DeployCredentials.tsx:156:56",className:"w-4 h-4"}),"工具配置"]})]}),e.jsx(B,{"code-path":"src/components/deploy/DeployCredentials.tsx:159:9",value:"repos",className:"mt-3",children:c?e.jsxs("div",{"code-path":"src/components/deploy/DeployCredentials.tsx:160:22",className:"text-center py-8 text-[var(--dg-text-secondary)]",children:[e.jsx(F,{"code-path":"src/components/deploy/DeployCredentials.tsx:160:88",className:"w-5 h-5 animate-spin mx-auto mb-2"}),"加载中..."]}):b.length===0?e.jsx("div",{"code-path":"src/components/deploy/DeployCredentials.tsx:161:34",className:"text-center py-8 text-[var(--dg-text-secondary)]",children:"暂无 Git 仓库认证配置"}):e.jsx("div",{"code-path":"src/components/deploy/DeployCredentials.tsx:163:13",className:"rounded-md border border-[var(--dg-border)] overflow-hidden",children:e.jsxs("table",{"code-path":"src/components/deploy/DeployCredentials.tsx:164:15",className:"w-full text-sm",children:[e.jsx("thead",{"code-path":"src/components/deploy/DeployCredentials.tsx:165:17",className:"bg-[var(--dg-bg-tertiary)] border-b border-[var(--dg-border)]",children:e.jsxs("tr",{"code-path":"src/components/deploy/DeployCredentials.tsx:166:19",children:[e.jsx("th",{"code-path":"src/components/deploy/DeployCredentials.tsx:167:21",className:"px-3 py-2 text-left font-medium text-[var(--dg-text-secondary)]",children:"名称"}),e.jsx("th",{"code-path":"src/components/deploy/DeployCredentials.tsx:168:21",className:"px-3 py-2 text-left font-medium text-[var(--dg-text-secondary)] hidden md:table-cell",children:"仓库 URL"}),e.jsx("th",{"code-path":"src/components/deploy/DeployCredentials.tsx:169:21",className:"px-3 py-2 text-left font-medium text-[var(--dg-text-secondary)]",children:"认证方式"}),e.jsx("th",{"code-path":"src/components/deploy/DeployCredentials.tsx:170:21",className:"px-3 py-2 text-left font-medium text-[var(--dg-text-secondary)]",children:"状态"}),e.jsx("th",{"code-path":"src/components/deploy/DeployCredentials.tsx:171:21",className:"px-3 py-2 text-right font-medium text-[var(--dg-text-secondary)]",children:"操作"})]})}),e.jsx("tbody",{"code-path":"src/components/deploy/DeployCredentials.tsx:174:17",children:b.map(t=>e.jsxs("tr",{"code-path":"src/components/deploy/DeployCredentials.tsx:176:21",className:"border-b border-[var(--dg-border)] hover:bg-[var(--dg-bg-tertiary)]/50",children:[e.jsx("td",{"code-path":"src/components/deploy/DeployCredentials.tsx:177:23",className:"px-3 py-2 font-medium text-[var(--dg-text-primary)]",children:t.name}),e.jsx("td",{"code-path":"src/components/deploy/DeployCredentials.tsx:178:23",className:"px-3 py-2 text-[var(--dg-text-secondary)] hidden md:table-cell font-mono text-xs max-w-[300px] truncate",children:t.url}),e.jsx("td",{"code-path":"src/components/deploy/DeployCredentials.tsx:179:23",className:"px-3 py-2",children:e.jsx(w,{"code-path":"src/components/deploy/DeployCredentials.tsx:179:49",variant:"outline",className:"text-xs",children:t.auth_type})}),e.jsx("td",{"code-path":"src/components/deploy/DeployCredentials.tsx:180:23",className:"px-3 py-2",children:e.jsx(w,{"code-path":"src/components/deploy/DeployCredentials.tsx:181:25",className:t.enabled?"bg-emerald-500/20 text-emerald-400 border-emerald-500/30":"bg-slate-500/20 text-slate-400 border-slate-500/30",children:t.enabled?"启用":"禁用"})}),e.jsx("td",{"code-path":"src/components/deploy/DeployCredentials.tsx:183:23",className:"px-3 py-2 text-right",children:e.jsxs("div",{"code-path":"src/components/deploy/DeployCredentials.tsx:184:25",className:"flex justify-end gap-1",children:[e.jsx(d,{"code-path":"src/components/deploy/DeployCredentials.tsx:185:27",variant:"ghost",size:"icon",className:"h-7 w-7",onClick:()=>{p("repo"),y(t.id),C(!0)},children:e.jsx(P,{"code-path":"src/components/deploy/DeployCredentials.tsx:185:165",className:"w-3.5 h-3.5"})}),e.jsx(d,{"code-path":"src/components/deploy/DeployCredentials.tsx:186:27",variant:"ghost",size:"icon",className:"h-7 w-7 text-red-500",onClick:()=>x("repo",t),children:e.jsx(U,{"code-path":"src/components/deploy/DeployCredentials.tsx:186:136",className:"w-3.5 h-3.5"})})]})})]},t.id))})]})})}),e.jsx(B,{"code-path":"src/components/deploy/DeployCredentials.tsx:197:9",value:"registries",className:"mt-3",children:c?e.jsxs("div",{"code-path":"src/components/deploy/DeployCredentials.tsx:198:22",className:"text-center py-8 text-[var(--dg-text-secondary)]",children:[e.jsx(F,{"code-path":"src/components/deploy/DeployCredentials.tsx:198:88",className:"w-5 h-5 animate-spin mx-auto mb-2"}),"加载中..."]}):n.length===0?e.jsx("div",{"code-path":"src/components/deploy/DeployCredentials.tsx:199:39",className:"text-center py-8 text-[var(--dg-text-secondary)]",children:"暂无镜像仓库认证配置"}):e.jsx("div",{"code-path":"src/components/deploy/DeployCredentials.tsx:201:13",className:"rounded-md border border-[var(--dg-border)] overflow-hidden",children:e.jsxs("table",{"code-path":"src/components/deploy/DeployCredentials.tsx:202:15",className:"w-full text-sm",children:[e.jsx("thead",{"code-path":"src/components/deploy/DeployCredentials.tsx:203:17",className:"bg-[var(--dg-bg-tertiary)] border-b border-[var(--dg-border)]",children:e.jsxs("tr",{"code-path":"src/components/deploy/DeployCredentials.tsx:204:19",children:[e.jsx("th",{"code-path":"src/components/deploy/DeployCredentials.tsx:205:21",className:"px-3 py-2 text-left font-medium text-[var(--dg-text-secondary)]",children:"名称"}),e.jsx("th",{"code-path":"src/components/deploy/DeployCredentials.tsx:206:21",className:"px-3 py-2 text-left font-medium text-[var(--dg-text-secondary)] hidden md:table-cell",children:"Registry URL"}),e.jsx("th",{"code-path":"src/components/deploy/DeployCredentials.tsx:207:21",className:"px-3 py-2 text-left font-medium text-[var(--dg-text-secondary)] hidden sm:table-cell",children:"命名空间"}),e.jsx("th",{"code-path":"src/components/deploy/DeployCredentials.tsx:208:21",className:"px-3 py-2 text-left font-medium text-[var(--dg-text-secondary)]",children:"认证"}),e.jsx("th",{"code-path":"src/components/deploy/DeployCredentials.tsx:209:21",className:"px-3 py-2 text-left font-medium text-[var(--dg-text-secondary)]",children:"状态"}),e.jsx("th",{"code-path":"src/components/deploy/DeployCredentials.tsx:210:21",className:"px-3 py-2 text-right font-medium text-[var(--dg-text-secondary)]",children:"操作"})]})}),e.jsx("tbody",{"code-path":"src/components/deploy/DeployCredentials.tsx:213:17",children:n.map(t=>e.jsxs("tr",{"code-path":"src/components/deploy/DeployCredentials.tsx:215:21",className:"border-b border-[var(--dg-border)] hover:bg-[var(--dg-bg-tertiary)]/50",children:[e.jsx("td",{"code-path":"src/components/deploy/DeployCredentials.tsx:216:23",className:"px-3 py-2 font-medium text-[var(--dg-text-primary)]",children:t.name}),e.jsx("td",{"code-path":"src/components/deploy/DeployCredentials.tsx:217:23",className:"px-3 py-2 text-[var(--dg-text-secondary)] hidden md:table-cell font-mono text-xs max-w-[250px] truncate",children:t.registry_url}),e.jsx("td",{"code-path":"src/components/deploy/DeployCredentials.tsx:218:23",className:"px-3 py-2 text-[var(--dg-text-secondary)] hidden sm:table-cell",children:t.namespace||"-"}),e.jsx("td",{"code-path":"src/components/deploy/DeployCredentials.tsx:219:23",className:"px-3 py-2",children:e.jsx(w,{"code-path":"src/components/deploy/DeployCredentials.tsx:219:49",variant:"outline",className:"text-xs",children:t.auth_type})}),e.jsx("td",{"code-path":"src/components/deploy/DeployCredentials.tsx:220:23",className:"px-3 py-2",children:e.jsx(w,{"code-path":"src/components/deploy/DeployCredentials.tsx:221:25",className:t.enabled?"bg-emerald-500/20 text-emerald-400 border-emerald-500/30":"bg-slate-500/20 text-slate-400 border-slate-500/30",children:t.enabled?"启用":"禁用"})}),e.jsx("td",{"code-path":"src/components/deploy/DeployCredentials.tsx:223:23",className:"px-3 py-2 text-right",children:e.jsxs("div",{"code-path":"src/components/deploy/DeployCredentials.tsx:224:25",className:"flex justify-end gap-1",children:[e.jsx(d,{"code-path":"src/components/deploy/DeployCredentials.tsx:225:27",variant:"ghost",size:"icon",className:"h-7 w-7",onClick:()=>{p("registry"),y(t.id),C(!0)},children:e.jsx(P,{"code-path":"src/components/deploy/DeployCredentials.tsx:225:169",className:"w-3.5 h-3.5"})}),e.jsx(d,{"code-path":"src/components/deploy/DeployCredentials.tsx:226:27",variant:"ghost",size:"icon",className:"h-7 w-7 text-red-500",onClick:()=>x("registry",t),children:e.jsx(U,{"code-path":"src/components/deploy/DeployCredentials.tsx:226:140",className:"w-3.5 h-3.5"})})]})})]},t.id))})]})})}),e.jsxs(B,{"code-path":"src/components/deploy/DeployCredentials.tsx:238:9",value:"environments",className:"mt-3",children:[e.jsx("div",{"code-path":"src/components/deploy/DeployCredentials.tsx:239:11",className:"flex items-center justify-end mb-3",children:e.jsxs(d,{"code-path":"src/components/deploy/DeployCredentials.tsx:240:13",size:"sm",onClick:()=>{s(null),D(!0)},children:[e.jsx(G,{"code-path":"src/components/deploy/DeployCredentials.tsx:241:15",className:"w-4 h-4 mr-1"}),"新增环境"]})}),c?e.jsxs("div",{"code-path":"src/components/deploy/DeployCredentials.tsx:244:22",className:"text-center py-8 text-[var(--dg-text-secondary)]",children:[e.jsx(F,{"code-path":"src/components/deploy/DeployCredentials.tsx:244:88",className:"w-5 h-5 animate-spin mx-auto mb-2"}),"加载中..."]}):j.length===0?e.jsx("div",{"code-path":"src/components/deploy/DeployCredentials.tsx:245:41",className:"text-center py-8 text-[var(--dg-text-secondary)]",children:'暂无环境配置,点击"新增环境"创建'}):e.jsx("div",{"code-path":"src/components/deploy/DeployCredentials.tsx:247:13",className:"rounded-md border border-[var(--dg-border)] overflow-hidden",children:e.jsxs("table",{"code-path":"src/components/deploy/DeployCredentials.tsx:248:15",className:"w-full text-sm",children:[e.jsx("thead",{"code-path":"src/components/deploy/DeployCredentials.tsx:249:17",className:"bg-[var(--dg-bg-tertiary)] border-b border-[var(--dg-border)]",children:e.jsxs("tr",{"code-path":"src/components/deploy/DeployCredentials.tsx:250:19",children:[e.jsx("th",{"code-path":"src/components/deploy/DeployCredentials.tsx:251:21",className:"px-3 py-2 text-left font-medium text-[var(--dg-text-secondary)]",children:"环境标识"}),e.jsx("th",{"code-path":"src/components/deploy/DeployCredentials.tsx:252:21",className:"px-3 py-2 text-left font-medium text-[var(--dg-text-secondary)]",children:"显示名称"}),e.jsx("th",{"code-path":"src/components/deploy/DeployCredentials.tsx:253:21",className:"px-3 py-2 text-left font-medium text-[var(--dg-text-secondary)]",children:"类型"}),e.jsx("th",{"code-path":"src/components/deploy/DeployCredentials.tsx:254:21",className:"px-3 py-2 text-left font-medium text-[var(--dg-text-secondary)]",children:"颜色"}),e.jsx("th",{"code-path":"src/components/deploy/DeployCredentials.tsx:255:21",className:"px-3 py-2 text-left font-medium text-[var(--dg-text-secondary)]",children:"排序"}),e.jsx("th",{"code-path":"src/components/deploy/DeployCredentials.tsx:256:21",className:"px-3 py-2 text-left font-medium text-[var(--dg-text-secondary)]",children:"状态"}),e.jsx("th",{"code-path":"src/components/deploy/DeployCredentials.tsx:257:21",className:"px-3 py-2 text-right font-medium text-[var(--dg-text-secondary)]",children:"操作"})]})}),e.jsx("tbody",{"code-path":"src/components/deploy/DeployCredentials.tsx:260:17",children:j.map(t=>e.jsxs("tr",{"code-path":"src/components/deploy/DeployCredentials.tsx:262:21",className:"border-b border-[var(--dg-border)] hover:bg-[var(--dg-bg-tertiary)]/50",children:[e.jsx("td",{"code-path":"src/components/deploy/DeployCredentials.tsx:263:23",className:"px-3 py-2 font-mono text-xs font-medium text-[var(--dg-text-primary)]",children:t.name}),e.jsx("td",{"code-path":"src/components/deploy/DeployCredentials.tsx:264:23",className:"px-3 py-2 text-[var(--dg-text-primary)]",children:e.jsxs("span",{"code-path":"src/components/deploy/DeployCredentials.tsx:265:25",className:"flex items-center gap-1.5",children:[e.jsx("span",{"code-path":"src/components/deploy/DeployCredentials.tsx:266:27",className:"w-2.5 h-2.5 rounded-full inline-block",style:{backgroundColor:t.color}}),t.display_name]})}),e.jsx("td",{"code-path":"src/components/deploy/DeployCredentials.tsx:270:23",className:"px-3 py-2",children:e.jsx(w,{"code-path":"src/components/deploy/DeployCredentials.tsx:270:49",variant:"secondary",className:"text-xs",children:V[t.type]||t.type})}),e.jsx("td",{"code-path":"src/components/deploy/DeployCredentials.tsx:271:23",className:"px-3 py-2",children:e.jsx("div",{"code-path":"src/components/deploy/DeployCredentials.tsx:271:49",className:"w-6 h-6 rounded border",style:{backgroundColor:t.color}})}),e.jsx("td",{"code-path":"src/components/deploy/DeployCredentials.tsx:272:23",className:"px-3 py-2 text-[var(--dg-text-secondary)]",children:t.sort_order}),e.jsx("td",{"code-path":"src/components/deploy/DeployCredentials.tsx:273:23",className:"px-3 py-2",children:e.jsx(w,{"code-path":"src/components/deploy/DeployCredentials.tsx:274:25",className:t.enabled?"bg-emerald-500/20 text-emerald-400 border-emerald-500/30":"bg-slate-500/20 text-slate-400 border-slate-500/30",children:t.enabled?"启用":"禁用"})}),e.jsx("td",{"code-path":"src/components/deploy/DeployCredentials.tsx:276:23",className:"px-3 py-2 text-right",children:e.jsxs("div",{"code-path":"src/components/deploy/DeployCredentials.tsx:277:25",className:"flex justify-end gap-1",children:[e.jsx(d,{"code-path":"src/components/deploy/DeployCredentials.tsx:278:27",variant:"ghost",size:"icon",className:"h-7 w-7",onClick:()=>{s(t),D(!0)},children:e.jsx(P,{"code-path":"src/components/deploy/DeployCredentials.tsx:278:144",className:"w-3.5 h-3.5"})}),e.jsx(d,{"code-path":"src/components/deploy/DeployCredentials.tsx:279:27",variant:"ghost",size:"icon",className:"h-7 w-7 text-red-500",onClick:()=>x("env",t),children:e.jsx(U,{"code-path":"src/components/deploy/DeployCredentials.tsx:279:137",className:"w-3.5 h-3.5"})})]})})]},t.id))})]})})]}),e.jsx(B,{"code-path":"src/components/deploy/DeployCredentials.tsx:291:9",value:"tools",className:"mt-3",children:e.jsx(fe,{"code-path":"src/components/deploy/DeployCredentials.tsx:292:11"})})]}),e.jsx(be,{"code-path":"src/components/deploy/DeployCredentials.tsx:296:7",open:u,onOpenChange:C,type:f,editId:v,repos:b,registries:n,onSave:l}),e.jsx(ve,{"code-path":"src/components/deploy/DeployCredentials.tsx:301:7",open:N,onClose:()=>D(!1),onSaved:l,editData:T})]})}export{Be as default}; diff --git a/backend/static/assets/DeployCredentials-lv4yXPn3.js b/backend/static/assets/DeployCredentials-lv4yXPn3.js new file mode 100644 index 0000000..b8e2ebf --- /dev/null +++ b/backend/static/assets/DeployCredentials-lv4yXPn3.js @@ -0,0 +1 @@ +import{i as te,r as o,j as e,D as A,a as H,b as M,c as W,G as J,v as Z,Y as oe,e as ae,B as d,h as ne,L as F,P as le,C as ce,V as de,d as re,f as pe,Q as ie}from"./index-Dmami9WE.js";import{I as z}from"./input-NsU9nXZF.js";import{B as w}from"./badge-3UzCvU7L.js";import{T as xe,a as me,b as O,c as B}from"./tabs-lV44z_UR.js";import{L as _}from"./label-Ap_-SPYI.js";import{S as K,a as Q,b as X,c as Y,d as E}from"./select-DUbxjT0z.js";import{t as r}from"./index-BuEnLCjT.js";import{d as i}from"./deploy-CD5bEXt-.js";import{P as G}from"./plus-O65gX7Qz.js";import{R as ee}from"./refresh-cw-CTBERyFc.js";import{C as ye}from"./circle-x-BBQeW1R3.js";import{D as I}from"./download-Vuij9wGr.js";import{W as he}from"./wrench-DMCGQEzN.js";import{P}from"./pencil-BYahlvYT.js";import{T as U}from"./trash-2-DWVnIU6o.js";import"./index-CtCQcvyh.js";import"./chevron-up-Cq4GPopa.js";const ge=[["path",{d:"M14 17H5",key:"gfn3mx"}],["path",{d:"M19 7h-9",key:"6i9tg"}],["circle",{cx:"17",cy:"17",r:"3",key:"18b49y"}],["circle",{cx:"7",cy:"7",r:"3",key:"dfmy0x"}]],Ce=te("settings-2",ge);function be({open:S,onOpenChange:b,type:L,editId:n,repos:h,registries:j,onSave:m}){const c=L==="repo",[g,u]=o.useState(""),[C,f]=o.useState(""),[p,v]=o.useState(""),[y,N]=o.useState(""),[D,T]=o.useState(""),[s,l]=o.useState([]),[x,V]=o.useState(!1),t=s.filter(a=>c?!0:a.secret_type==="docker"),k=async()=>{try{const a=await ne.get("/credentials?page_size=100");l(a?.list||[])}catch{}};o.useEffect(()=>{if(k(),n)if(c){const a=h.find(R=>R.id===n);a&&(u(a.name),f(""),v(a.url),T(a.credential_id||""))}else{const a=j.find(R=>R.id===n);a&&(u(a.name),f(""),v(a.registry_url),N(a.namespace||""),T(a.credential_id||""))}else u(""),f(""),v(""),N(""),T("")},[n,S,c]);const $=async()=>{if(!g.trim()||!p.trim()){r.error("请填写名称和地址");return}V(!0);try{const a=D?Number(D):null,R=c?{name:g.trim(),description:C.trim(),url:p.trim(),credential_id:a}:{name:g.trim(),description:C.trim(),registry_url:p.trim(),namespace:y.trim(),credential_id:a};n?(c?await i.updateRepo(n,R):await i.updateRegistry(n,R),r.success("已更新")):(c?await i.createRepo(R):await i.createRegistry(R),r.success("已创建")),b(!1),m()}catch{r.error("保存失败")}finally{V(!1)}},se=c?J:Z;return e.jsx(A,{"code-path":"src/components/deploy/CredentialFormDialog.tsx:97:5",open:S,onOpenChange:b,children:e.jsxs(H,{"code-path":"src/components/deploy/CredentialFormDialog.tsx:98:7",className:"sm:max-w-[480px] bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:[e.jsx(M,{"code-path":"src/components/deploy/CredentialFormDialog.tsx:99:9",children:e.jsxs(W,{"code-path":"src/components/deploy/CredentialFormDialog.tsx:100:11",className:"text-[var(--dg-text-primary)] flex items-center gap-2",children:[e.jsx(se,{"code-path":"src/components/deploy/CredentialFormDialog.tsx:101:13",className:"h-5 w-5 text-[var(--dg-blue)]"}),n?"编辑":"新增",c?" Git 仓库":" 镜像仓库"]})}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialFormDialog.tsx:105:9",className:"space-y-4 py-2",children:[e.jsxs("div",{"code-path":"src/components/deploy/CredentialFormDialog.tsx:106:11",className:"space-y-1",children:[e.jsx(_,{"code-path":"src/components/deploy/CredentialFormDialog.tsx:106:38",children:"名称 *"}),e.jsx(z,{"code-path":"src/components/deploy/CredentialFormDialog.tsx:107:13",value:g,onChange:a=>u(a.target.value),placeholder:c?"如:GitLab CE":"如:Harbor",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialFormDialog.tsx:108:11",className:"space-y-1",children:[e.jsx(_,{"code-path":"src/components/deploy/CredentialFormDialog.tsx:108:38",children:c?"仓库 URL *":"Registry URL *"}),e.jsx(z,{"code-path":"src/components/deploy/CredentialFormDialog.tsx:109:13",value:p,onChange:a=>v(a.target.value),placeholder:c?"http://10.10.10.72:9000/group/repo.git":"http://10.10.10.72",className:"font-mono text-sm bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),!c&&e.jsxs("div",{"code-path":"src/components/deploy/CredentialFormDialog.tsx:110:23",className:"space-y-1",children:[e.jsx(_,{"code-path":"src/components/deploy/CredentialFormDialog.tsx:110:50",children:"默认命名空间"}),e.jsx(z,{"code-path":"src/components/deploy/CredentialFormDialog.tsx:111:13",value:y,onChange:a=>N(a.target.value),placeholder:"如:aiops",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),e.jsxs("div",{"code-path":"src/components/deploy/CredentialFormDialog.tsx:114:11",className:"space-y-1",children:[e.jsxs(_,{"code-path":"src/components/deploy/CredentialFormDialog.tsx:115:13",children:["关联凭证 ",e.jsx("span",{"code-path":"src/components/deploy/CredentialFormDialog.tsx:115:25",className:"text-xs text-[var(--dg-text-secondary)] opacity-70",children:"(认证由凭据管理统一配置)"})]}),e.jsxs(K,{"code-path":"src/components/deploy/CredentialFormDialog.tsx:116:13",value:String(D),onValueChange:a=>T(a==="__none"?"":a),children:[e.jsx(Q,{"code-path":"src/components/deploy/CredentialFormDialog.tsx:117:15",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]",children:e.jsx(X,{"code-path":"src/components/deploy/CredentialFormDialog.tsx:118:17",placeholder:c?"选择凭据(API/密码等)":"选择 Docker 密码凭据"})}),e.jsxs(Y,{"code-path":"src/components/deploy/CredentialFormDialog.tsx:120:15",children:[e.jsx(E,{"code-path":"src/components/deploy/CredentialFormDialog.tsx:121:17",value:"__none",children:"不关联凭证"}),t.map(a=>e.jsx(E,{"code-path":"src/components/deploy/CredentialFormDialog.tsx:123:19",value:String(a.id),children:e.jsxs("span",{"code-path":"src/components/deploy/CredentialFormDialog.tsx:124:21",className:"flex items-center gap-1.5",children:[e.jsx(oe,{"code-path":"src/components/deploy/CredentialFormDialog.tsx:125:23",className:"h-3 w-3 opacity-60"}),a.name," ",a.summary&&e.jsxs("span",{"code-path":"src/components/deploy/CredentialFormDialog.tsx:126:46",className:"text-[10px] opacity-50",children:["(",a.summary,")"]})]})},a.id))]})]}),t.length===0&&e.jsxs("p",{"code-path":"src/components/deploy/CredentialFormDialog.tsx:133:15",className:"text-xs text-amber-400 flex items-center gap-1 mt-1",children:[e.jsx(G,{"code-path":"src/components/deploy/CredentialFormDialog.tsx:134:17",className:"h-3 w-3"}),"暂无",c?"":"Docker 密码","类型凭证,请在凭证配置页面新增"]})]})]}),e.jsxs(ae,{"code-path":"src/components/deploy/CredentialFormDialog.tsx:140:9",children:[e.jsx(d,{"code-path":"src/components/deploy/CredentialFormDialog.tsx:141:11",variant:"outline",onClick:()=>b(!1),children:"取消"}),e.jsx(d,{"code-path":"src/components/deploy/CredentialFormDialog.tsx:142:11",onClick:$,disabled:x,children:x?"保存中...":"保存"})]})]})})}const je={build:"构建",deploy:"部署",automation:"自动化",other:"其他"},q={build:"bg-amber-500/20 text-amber-400 border-amber-500/30",deploy:"bg-cyan-500/20 text-cyan-400 border-cyan-500/30",automation:"bg-purple-500/20 text-purple-400 border-purple-500/30",other:"bg-slate-500/20 text-slate-400 border-slate-500/30"},ue=["jdk","nodejs","maven"];function fe(){const[S,b]=o.useState([]),[L,n]=o.useState(!1),[h,j]=o.useState(null),[m,c]=o.useState(null),[g,u]=o.useState(""),[C,f]=o.useState(null),p=async()=>{n(!0);try{const s=await i.getTools();b(s?.list||[])}catch{r.error("获取工具配置失败")}finally{n(!1)}};o.useEffect(()=>{p()},[]);const v=async s=>{try{const x=(await i.getToolVersions(s.id))?.versions||[];if(x.length===0){y(s);return}c({tool:s,versions:x}),u(s.default_version||x[0]?.version||"")}catch{y(s)}},y=async(s,l)=>{j(s.id);try{const x=l||s.default_version;await i.installTool(s.id,x),r.success(`${s.display_name}${x?` (${x})`:""} 安装已触发`),c(null),setTimeout(async()=>{try{await i.checkTool(s.id),p()}catch{}j(null)},3e3)}catch{r.error("触发安装失败"),j(null)}},N=async s=>{try{const l=await i.checkTool(s.id);r.success(l?.available?`${s.display_name} 可用`:`${s.display_name} 不可用`),p()}catch{r.error("检测失败")}},D=async(s,l)=>{try{await i.updateTool(s.id,{install_method:l}),r.success("已更新"),p()}catch{r.error("更新失败")}},T=async s=>{f(s.id);const l=Date.now();try{const x=await i.getToolVersions(s.id),V=((Date.now()-l)/1e3).toFixed(1);x?.versions?.length>0?r.success(`${s.display_name} 镜像可访问 (${V}s)`):r(`${s.display_name} 无法获取版本列表`,{description:"请检查网络连接"})}catch{r.error(`${s.display_name} 网络不可达`)}f(null)};return e.jsxs("div",{"code-path":"src/components/deploy/ToolConfigTab.tsx:137:5",className:"space-y-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/ToolConfigTab.tsx:138:7",className:"flex items-center justify-between",children:[e.jsx("p",{"code-path":"src/components/deploy/ToolConfigTab.tsx:139:9",className:"text-xs text-[var(--dg-text-secondary)]",children:"管理 DevOps 工具的安装策略:预装在镜像中、首次使用自动下载(懒加载)、或禁用不安装"}),e.jsxs(d,{"code-path":"src/components/deploy/ToolConfigTab.tsx:142:9",variant:"outline",size:"sm",onClick:p,children:[e.jsx(ee,{"code-path":"src/components/deploy/ToolConfigTab.tsx:143:11",className:"w-3.5 h-3.5 mr-1"}),"刷新"]})]}),L?e.jsxs("div",{"code-path":"src/components/deploy/ToolConfigTab.tsx:148:9",className:"text-center py-12 text-[var(--dg-text-secondary)]",children:[e.jsx(F,{"code-path":"src/components/deploy/ToolConfigTab.tsx:149:11",className:"w-5 h-5 animate-spin mx-auto mb-2"}),"加载中..."]}):S.length===0?e.jsx("div",{"code-path":"src/components/deploy/ToolConfigTab.tsx:152:9",className:"text-center py-12 text-[var(--dg-text-secondary)]",children:"暂无工具配置,请检查后端种子数据"}):e.jsx("div",{"code-path":"src/components/deploy/ToolConfigTab.tsx:156:9",className:"rounded-md border border-[var(--dg-border)] overflow-hidden",children:e.jsxs("table",{"code-path":"src/components/deploy/ToolConfigTab.tsx:157:11",className:"w-full text-sm",children:[e.jsx("thead",{"code-path":"src/components/deploy/ToolConfigTab.tsx:158:13",className:"bg-[var(--dg-bg-tertiary)] border-b border-[var(--dg-border)]",children:e.jsxs("tr",{"code-path":"src/components/deploy/ToolConfigTab.tsx:159:15",children:[e.jsx("th",{"code-path":"src/components/deploy/ToolConfigTab.tsx:160:17",className:"px-3 py-2 text-left font-medium text-[var(--dg-text-secondary)]",children:"工具"}),e.jsx("th",{"code-path":"src/components/deploy/ToolConfigTab.tsx:161:17",className:"px-3 py-2 text-left font-medium text-[var(--dg-text-secondary)] hidden sm:table-cell",children:"分类"}),e.jsx("th",{"code-path":"src/components/deploy/ToolConfigTab.tsx:162:17",className:"px-3 py-2 text-left font-medium text-[var(--dg-text-secondary)]",children:"安装方式"}),e.jsx("th",{"code-path":"src/components/deploy/ToolConfigTab.tsx:163:17",className:"px-3 py-2 text-left font-medium text-[var(--dg-text-secondary)]",children:"状态"}),e.jsx("th",{"code-path":"src/components/deploy/ToolConfigTab.tsx:164:17",className:"px-3 py-2 text-right font-medium text-[var(--dg-text-secondary)]",children:"操作"})]})}),e.jsx("tbody",{"code-path":"src/components/deploy/ToolConfigTab.tsx:167:13",children:S.map(s=>{const l=ue.includes(s.name);return e.jsxs("tr",{"code-path":"src/components/deploy/ToolConfigTab.tsx:171:19",className:"border-b border-[var(--dg-border)] hover:bg-[var(--dg-bg-tertiary)]/50",children:[e.jsxs("td",{"code-path":"src/components/deploy/ToolConfigTab.tsx:172:21",className:"px-3 py-2",children:[e.jsx("div",{"code-path":"src/components/deploy/ToolConfigTab.tsx:173:23",className:"font-medium text-[var(--dg-text-primary)]",children:s.display_name}),e.jsx("div",{"code-path":"src/components/deploy/ToolConfigTab.tsx:174:23",className:"text-xs text-[var(--dg-text-secondary)] font-mono",children:s.name}),s.description&&e.jsx("div",{"code-path":"src/components/deploy/ToolConfigTab.tsx:176:25",className:"text-[10px] text-[var(--dg-text-muted)] mt-0.5 max-w-[220px] leading-tight",children:s.description}),s.installed_version&&s.status==="installed"&&e.jsxs("div",{"code-path":"src/components/deploy/ToolConfigTab.tsx:179:25",className:"text-xs text-emerald-400 font-mono mt-0.5",children:["v",s.installed_version]}),s.error_msg&&e.jsx("div",{"code-path":"src/components/deploy/ToolConfigTab.tsx:182:25",className:"text-xs text-red-400 mt-0.5 max-w-[200px] truncate",title:s.error_msg,children:s.error_msg})]}),e.jsx("td",{"code-path":"src/components/deploy/ToolConfigTab.tsx:185:21",className:"px-3 py-2 hidden sm:table-cell",children:e.jsx(w,{"code-path":"src/components/deploy/ToolConfigTab.tsx:186:23",className:`text-xs ${q[s.category]||q.other}`,children:je[s.category]||s.category})}),e.jsx("td",{"code-path":"src/components/deploy/ToolConfigTab.tsx:190:21",className:"px-3 py-2",children:e.jsxs(K,{"code-path":"src/components/deploy/ToolConfigTab.tsx:191:23",value:s.install_method,onValueChange:x=>D(s,x),children:[e.jsx(Q,{"code-path":"src/components/deploy/ToolConfigTab.tsx:195:25",className:"h-7 w-[90px] text-xs",children:e.jsx(X,{"code-path":"src/components/deploy/ToolConfigTab.tsx:196:27"})}),e.jsxs(Y,{"code-path":"src/components/deploy/ToolConfigTab.tsx:198:25",children:[e.jsx(E,{"code-path":"src/components/deploy/ToolConfigTab.tsx:199:27",value:"preinstall",children:"预装"}),e.jsx(E,{"code-path":"src/components/deploy/ToolConfigTab.tsx:200:27",value:"lazy",children:"懒加载"}),e.jsx(E,{"code-path":"src/components/deploy/ToolConfigTab.tsx:201:27",value:"disabled",children:"禁用"})]})]})}),e.jsx("td",{"code-path":"src/components/deploy/ToolConfigTab.tsx:205:21",className:"px-3 py-2",children:s.status==="installed"?e.jsxs(w,{"code-path":"src/components/deploy/ToolConfigTab.tsx:207:25",className:"bg-emerald-500/20 text-emerald-400 border-emerald-500/30 text-xs gap-1",children:[e.jsx(le,{"code-path":"src/components/deploy/ToolConfigTab.tsx:208:27",className:"w-3 h-3"}),"已安装"]}):s.status==="installing"?e.jsxs(w,{"code-path":"src/components/deploy/ToolConfigTab.tsx:211:25",className:"bg-amber-500/20 text-amber-400 border-amber-500/30 text-xs gap-1",children:[e.jsx(F,{"code-path":"src/components/deploy/ToolConfigTab.tsx:212:27",className:"w-3 h-3 animate-spin"}),"安装中"]}):s.status==="failed"?e.jsxs(w,{"code-path":"src/components/deploy/ToolConfigTab.tsx:215:25",className:"bg-red-500/20 text-red-400 border-red-500/30 text-xs gap-1",children:[e.jsx(ye,{"code-path":"src/components/deploy/ToolConfigTab.tsx:216:27",className:"w-3 h-3"}),"失败"]}):e.jsxs(w,{"code-path":"src/components/deploy/ToolConfigTab.tsx:219:25",className:"bg-slate-500/20 text-slate-400 border-slate-500/30 text-xs gap-1",children:[e.jsx(ce,{"code-path":"src/components/deploy/ToolConfigTab.tsx:220:27",className:"w-3 h-3"}),"未安装"]})}),e.jsx("td",{"code-path":"src/components/deploy/ToolConfigTab.tsx:224:21",className:"px-3 py-2 text-right",children:e.jsxs("div",{"code-path":"src/components/deploy/ToolConfigTab.tsx:225:23",className:"flex justify-end gap-1",children:[s.install_method==="lazy"&&s.status!=="installed"&&(l?e.jsxs(d,{"code-path":"src/components/deploy/ToolConfigTab.tsx:228:29",variant:"outline",size:"sm",className:"h-7 text-xs",onClick:()=>v(s),disabled:h===s.id,children:[h===s.id?e.jsx(F,{"code-path":"src/components/deploy/ToolConfigTab.tsx:234:33",className:"w-3 h-3 animate-spin mr-1"}):e.jsx(I,{"code-path":"src/components/deploy/ToolConfigTab.tsx:236:33",className:"w-3 h-3 mr-1"}),"安装"]}):e.jsxs(d,{"code-path":"src/components/deploy/ToolConfigTab.tsx:241:29",variant:"outline",size:"sm",className:"h-7 text-xs",onClick:()=>y(s),disabled:h===s.id,children:[h===s.id?e.jsx(F,{"code-path":"src/components/deploy/ToolConfigTab.tsx:247:33",className:"w-3 h-3 animate-spin mr-1"}):e.jsx(I,{"code-path":"src/components/deploy/ToolConfigTab.tsx:249:33",className:"w-3 h-3 mr-1"}),"安装"]})),s.install_method==="lazy"&&e.jsxs(d,{"code-path":"src/components/deploy/ToolConfigTab.tsx:256:27",variant:"ghost",size:"sm",className:"h-7 text-xs text-[var(--dg-text-secondary)]",onClick:()=>T(s),disabled:C===s.id,children:[C===s.id?e.jsx(F,{"code-path":"src/components/deploy/ToolConfigTab.tsx:262:31",className:"w-3 h-3 animate-spin mr-1"}):e.jsx(de,{"code-path":"src/components/deploy/ToolConfigTab.tsx:264:31",className:"w-3 h-3 mr-1"}),"测试"]}),e.jsx(d,{"code-path":"src/components/deploy/ToolConfigTab.tsx:269:25",variant:"ghost",size:"icon",className:"h-7 w-7",onClick:()=>N(s),title:"检测",children:e.jsx(Ce,{"code-path":"src/components/deploy/ToolConfigTab.tsx:270:27",className:"w-3.5 h-3.5"})})]})})]},s.id)})})]})}),e.jsx(A,{"code-path":"src/components/deploy/ToolConfigTab.tsx:283:7",open:!!m,onOpenChange:()=>c(null),children:e.jsxs(H,{"code-path":"src/components/deploy/ToolConfigTab.tsx:284:9",className:"max-w-sm",children:[e.jsxs(M,{"code-path":"src/components/deploy/ToolConfigTab.tsx:285:11",children:[e.jsx(W,{"code-path":"src/components/deploy/ToolConfigTab.tsx:286:13",children:"选择安装版本"}),e.jsxs(re,{"code-path":"src/components/deploy/ToolConfigTab.tsx:287:13",children:[m?.tool.display_name," — 请选择要安装的版本"]})]}),e.jsxs("div",{"code-path":"src/components/deploy/ToolConfigTab.tsx:291:11",className:"space-y-4 py-2",children:[e.jsx("div",{"code-path":"src/components/deploy/ToolConfigTab.tsx:292:13",className:"space-y-2",children:m?.versions.map((s,l)=>e.jsxs("button",{"code-path":"src/components/deploy/ToolConfigTab.tsx:294:17",onClick:()=>u(s.version),className:`w-full flex items-center justify-between px-3 py-2.5 rounded-lg text-sm border transition-all ${g===s.version?"border-indigo-400/50 bg-indigo-400/10 text-[var(--dg-text-primary)]":"border-[var(--dg-border)] bg-[var(--dg-bg-secondary)] text-[var(--dg-text-secondary)] hover:border-[var(--dg-text-secondary)]/30"}`,children:[e.jsx("span",{"code-path":"src/components/deploy/ToolConfigTab.tsx:303:19",children:s.label}),e.jsx("span",{"code-path":"src/components/deploy/ToolConfigTab.tsx:304:19",className:"text-xs font-mono text-[var(--dg-text-muted)]",children:s.version})]},s.version))}),e.jsxs("div",{"code-path":"src/components/deploy/ToolConfigTab.tsx:308:13",className:"flex justify-end gap-2 pt-2 border-t border-[var(--dg-border)]",children:[e.jsx(d,{"code-path":"src/components/deploy/ToolConfigTab.tsx:309:15",variant:"outline",size:"sm",onClick:()=>c(null),children:"取消"}),e.jsxs(d,{"code-path":"src/components/deploy/ToolConfigTab.tsx:310:15",size:"sm",onClick:()=>m&&y(m.tool,g),disabled:!g||h===m?.tool.id,children:[h===m?.tool.id?e.jsx(F,{"code-path":"src/components/deploy/ToolConfigTab.tsx:316:19",className:"w-3.5 h-3.5 animate-spin mr-1"}):e.jsx(I,{"code-path":"src/components/deploy/ToolConfigTab.tsx:318:19",className:"w-3.5 h-3.5 mr-1"}),"安装"]})]})]})]})})]})}function ve({open:S,onClose:b,onSaved:L,editData:n}){const[h,j]=o.useState(""),[m,c]=o.useState(""),[g,u]=o.useState("development"),[C,f]=o.useState("#3B82F6"),[p,v]=o.useState(""),[y,N]=o.useState(50),[D,T]=o.useState(!1);o.useEffect(()=>{n?(j(n.name),c(n.display_name),u(n.type),f(n.color),v(n.description||""),N(n.sort_order)):(j(""),c(""),u("development"),f("#3B82F6"),v(""),N(50))},[n,S]);const s=async()=>{if(!h.trim()||!m.trim()){r.error("请填写名称");return}T(!0);try{n?await i.updateEnvironment(n.id,{name:h,display_name:m,type:g,color:C,sort_order:y,description:p}):await i.createEnvironment({name:h,display_name:m,type:g,color:C,sort_order:y,description:p}),r.success(n?"已更新":"已创建"),L(),b()}catch{r.error("操作失败")}finally{T(!1)}};return e.jsx(A,{"code-path":"src/components/deploy/DeployCredentials.tsx:67:5",open:S,onOpenChange:b,children:e.jsxs(H,{"code-path":"src/components/deploy/DeployCredentials.tsx:68:7",children:[e.jsx(M,{"code-path":"src/components/deploy/DeployCredentials.tsx:69:9",children:e.jsx(W,{"code-path":"src/components/deploy/DeployCredentials.tsx:69:23",children:n?"编辑环境":"新增环境"})}),e.jsxs("div",{"code-path":"src/components/deploy/DeployCredentials.tsx:70:9",className:"space-y-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/DeployCredentials.tsx:71:11",className:"space-y-1",children:[e.jsx(_,{"code-path":"src/components/deploy/DeployCredentials.tsx:71:38",children:"环境标识"}),e.jsx(z,{"code-path":"src/components/deploy/DeployCredentials.tsx:71:57",value:h,onChange:l=>j(l.target.value),placeholder:"production"})]}),e.jsxs("div",{"code-path":"src/components/deploy/DeployCredentials.tsx:72:11",className:"space-y-1",children:[e.jsx(_,{"code-path":"src/components/deploy/DeployCredentials.tsx:72:38",children:"显示名称"}),e.jsx(z,{"code-path":"src/components/deploy/DeployCredentials.tsx:72:57",value:m,onChange:l=>c(l.target.value),placeholder:"生产环境"})]}),e.jsxs("div",{"code-path":"src/components/deploy/DeployCredentials.tsx:73:11",className:"space-y-1",children:[e.jsx(_,{"code-path":"src/components/deploy/DeployCredentials.tsx:73:38",children:"环境类型"}),e.jsxs(K,{"code-path":"src/components/deploy/DeployCredentials.tsx:74:13",value:g,onValueChange:u,children:[e.jsx(Q,{"code-path":"src/components/deploy/DeployCredentials.tsx:75:15",children:e.jsx(X,{"code-path":"src/components/deploy/DeployCredentials.tsx:75:30"})}),e.jsxs(Y,{"code-path":"src/components/deploy/DeployCredentials.tsx:76:15",children:[e.jsx(E,{"code-path":"src/components/deploy/DeployCredentials.tsx:77:17",value:"production",children:"生产环境"}),e.jsx(E,{"code-path":"src/components/deploy/DeployCredentials.tsx:78:17",value:"staging",children:"预发布"}),e.jsx(E,{"code-path":"src/components/deploy/DeployCredentials.tsx:79:17",value:"testing",children:"测试环境"}),e.jsx(E,{"code-path":"src/components/deploy/DeployCredentials.tsx:80:17",value:"development",children:"开发环境"})]})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/DeployCredentials.tsx:84:11",className:"space-y-1",children:[e.jsx(_,{"code-path":"src/components/deploy/DeployCredentials.tsx:84:38",children:"标志颜色"}),e.jsx(z,{"code-path":"src/components/deploy/DeployCredentials.tsx:84:57",value:C,onChange:l=>f(l.target.value),type:"color",className:"w-16 h-9 p-1"})]}),e.jsxs("div",{"code-path":"src/components/deploy/DeployCredentials.tsx:85:11",className:"space-y-1",children:[e.jsx(_,{"code-path":"src/components/deploy/DeployCredentials.tsx:85:38",children:"排序序号"}),e.jsx(z,{"code-path":"src/components/deploy/DeployCredentials.tsx:85:57",value:y,onChange:l=>N(Number(l.target.value)),type:"number"})]}),e.jsxs("div",{"code-path":"src/components/deploy/DeployCredentials.tsx:86:11",className:"space-y-1",children:[e.jsx(_,{"code-path":"src/components/deploy/DeployCredentials.tsx:86:38",children:"描述"}),e.jsx(z,{"code-path":"src/components/deploy/DeployCredentials.tsx:86:55",value:p,onChange:l=>v(l.target.value),placeholder:"可选"})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/DeployCredentials.tsx:88:9",className:"flex justify-end gap-2 mt-4",children:[e.jsx(d,{"code-path":"src/components/deploy/DeployCredentials.tsx:89:11",variant:"outline",onClick:b,children:"取消"}),e.jsx(d,{"code-path":"src/components/deploy/DeployCredentials.tsx:90:11",onClick:s,disabled:D,children:D?"...":n?"保存":"创建"})]})]})})}function Ie(){const S=pe(),[b,L]=o.useState([]),[n,h]=o.useState([]),[j,m]=o.useState([]),[c,g]=o.useState(!1),[u,C]=o.useState(!1),[f,p]=o.useState("repo"),[v,y]=o.useState(null),[N,D]=o.useState(!1),[T,s]=o.useState(null),l=async()=>{g(!0);try{const[t,k,$]=await Promise.all([i.getRepos(),i.getRegistries(),i.getEnvironments()]);L(t?.list||[]),h(k?.list||[]),m($?.list||[])}catch{r.error("获取数据失败")}finally{g(!1)}};o.useEffect(()=>{l()},[]);const x=async(t,k)=>{if(await S({title:"删除",description:`确定删除「${k.name||k.display_name}」?`,confirmText:"删除",variant:"destructive"}))try{t==="repo"?await i.deleteRepo(k.id):t==="registry"?await i.deleteRegistry(k.id):await i.deleteEnvironment(k.id),r.success("已删除"),l()}catch{r.error("删除失败")}},V={production:"生产",staging:"预发布",testing:"测试",development:"开发"};return e.jsxs("div",{"code-path":"src/components/deploy/DeployCredentials.tsx:137:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/deploy/DeployCredentials.tsx:138:7",className:"flex items-center justify-between",children:[e.jsx("h2",{"code-path":"src/components/deploy/DeployCredentials.tsx:139:9",className:"text-lg font-semibold text-[var(--dg-text-primary)]",children:"发布配置管理"}),e.jsxs("div",{"code-path":"src/components/deploy/DeployCredentials.tsx:140:9",className:"flex items-center gap-2",children:[e.jsxs(d,{"code-path":"src/components/deploy/DeployCredentials.tsx:141:11",variant:"outline",size:"sm",onClick:l,children:[e.jsx(ee,{"code-path":"src/components/deploy/DeployCredentials.tsx:141:66",className:"w-4 h-4 mr-1"}),"刷新"]}),e.jsxs(d,{"code-path":"src/components/deploy/DeployCredentials.tsx:142:11",size:"sm",onClick:()=>{p("repo"),y(null),C(!0)},children:[e.jsx(G,{"code-path":"src/components/deploy/DeployCredentials.tsx:143:13",className:"w-4 h-4 mr-1"}),"新增 Git 仓库"]}),e.jsxs(d,{"code-path":"src/components/deploy/DeployCredentials.tsx:145:11",size:"sm",variant:"secondary",onClick:()=>{p("registry"),y(null),C(!0)},children:[e.jsx(G,{"code-path":"src/components/deploy/DeployCredentials.tsx:146:13",className:"w-4 h-4 mr-1"}),"新增镜像仓库"]})]})]}),e.jsxs(xe,{"code-path":"src/components/deploy/DeployCredentials.tsx:151:7",defaultValue:"repos",children:[e.jsxs(me,{"code-path":"src/components/deploy/DeployCredentials.tsx:152:9",children:[e.jsxs(O,{"code-path":"src/components/deploy/DeployCredentials.tsx:153:11",value:"repos",className:"gap-1",children:[e.jsx(ie,{"code-path":"src/components/deploy/DeployCredentials.tsx:153:56",className:"w-4 h-4"}),"Git 仓库 (",b.length,")"]}),e.jsxs(O,{"code-path":"src/components/deploy/DeployCredentials.tsx:154:11",value:"registries",className:"gap-1",children:[e.jsx(Z,{"code-path":"src/components/deploy/DeployCredentials.tsx:154:61",className:"w-4 h-4"}),"镜像仓库 (",n.length,")"]}),e.jsxs(O,{"code-path":"src/components/deploy/DeployCredentials.tsx:155:11",value:"environments",className:"gap-1",children:[e.jsx(J,{"code-path":"src/components/deploy/DeployCredentials.tsx:155:63",className:"w-4 h-4"}),"环境管理 (",j.length,")"]}),e.jsxs(O,{"code-path":"src/components/deploy/DeployCredentials.tsx:156:11",value:"tools",className:"gap-1",children:[e.jsx(he,{"code-path":"src/components/deploy/DeployCredentials.tsx:156:56",className:"w-4 h-4"}),"工具配置"]})]}),e.jsx(B,{"code-path":"src/components/deploy/DeployCredentials.tsx:159:9",value:"repos",className:"mt-3",children:c?e.jsxs("div",{"code-path":"src/components/deploy/DeployCredentials.tsx:160:22",className:"text-center py-8 text-[var(--dg-text-secondary)]",children:[e.jsx(F,{"code-path":"src/components/deploy/DeployCredentials.tsx:160:88",className:"w-5 h-5 animate-spin mx-auto mb-2"}),"加载中..."]}):b.length===0?e.jsx("div",{"code-path":"src/components/deploy/DeployCredentials.tsx:161:34",className:"text-center py-8 text-[var(--dg-text-secondary)]",children:"暂无 Git 仓库认证配置"}):e.jsx("div",{"code-path":"src/components/deploy/DeployCredentials.tsx:163:13",className:"rounded-md border border-[var(--dg-border)] overflow-hidden",children:e.jsxs("table",{"code-path":"src/components/deploy/DeployCredentials.tsx:164:15",className:"w-full text-sm",children:[e.jsx("thead",{"code-path":"src/components/deploy/DeployCredentials.tsx:165:17",className:"bg-[var(--dg-bg-tertiary)] border-b border-[var(--dg-border)]",children:e.jsxs("tr",{"code-path":"src/components/deploy/DeployCredentials.tsx:166:19",children:[e.jsx("th",{"code-path":"src/components/deploy/DeployCredentials.tsx:167:21",className:"px-3 py-2 text-left font-medium text-[var(--dg-text-secondary)]",children:"名称"}),e.jsx("th",{"code-path":"src/components/deploy/DeployCredentials.tsx:168:21",className:"px-3 py-2 text-left font-medium text-[var(--dg-text-secondary)] hidden md:table-cell",children:"仓库 URL"}),e.jsx("th",{"code-path":"src/components/deploy/DeployCredentials.tsx:169:21",className:"px-3 py-2 text-left font-medium text-[var(--dg-text-secondary)]",children:"认证方式"}),e.jsx("th",{"code-path":"src/components/deploy/DeployCredentials.tsx:170:21",className:"px-3 py-2 text-left font-medium text-[var(--dg-text-secondary)]",children:"状态"}),e.jsx("th",{"code-path":"src/components/deploy/DeployCredentials.tsx:171:21",className:"px-3 py-2 text-right font-medium text-[var(--dg-text-secondary)]",children:"操作"})]})}),e.jsx("tbody",{"code-path":"src/components/deploy/DeployCredentials.tsx:174:17",children:b.map(t=>e.jsxs("tr",{"code-path":"src/components/deploy/DeployCredentials.tsx:176:21",className:"border-b border-[var(--dg-border)] hover:bg-[var(--dg-bg-tertiary)]/50",children:[e.jsx("td",{"code-path":"src/components/deploy/DeployCredentials.tsx:177:23",className:"px-3 py-2 font-medium text-[var(--dg-text-primary)]",children:t.name}),e.jsx("td",{"code-path":"src/components/deploy/DeployCredentials.tsx:178:23",className:"px-3 py-2 text-[var(--dg-text-secondary)] hidden md:table-cell font-mono text-xs max-w-[300px] truncate",children:t.url}),e.jsx("td",{"code-path":"src/components/deploy/DeployCredentials.tsx:179:23",className:"px-3 py-2",children:e.jsx(w,{"code-path":"src/components/deploy/DeployCredentials.tsx:179:49",variant:"outline",className:"text-xs",children:t.auth_type})}),e.jsx("td",{"code-path":"src/components/deploy/DeployCredentials.tsx:180:23",className:"px-3 py-2",children:e.jsx(w,{"code-path":"src/components/deploy/DeployCredentials.tsx:181:25",className:t.enabled?"bg-emerald-500/20 text-emerald-400 border-emerald-500/30":"bg-slate-500/20 text-slate-400 border-slate-500/30",children:t.enabled?"启用":"禁用"})}),e.jsx("td",{"code-path":"src/components/deploy/DeployCredentials.tsx:183:23",className:"px-3 py-2 text-right",children:e.jsxs("div",{"code-path":"src/components/deploy/DeployCredentials.tsx:184:25",className:"flex justify-end gap-1",children:[e.jsx(d,{"code-path":"src/components/deploy/DeployCredentials.tsx:185:27",variant:"ghost",size:"icon",className:"h-7 w-7",onClick:()=>{p("repo"),y(t.id),C(!0)},children:e.jsx(P,{"code-path":"src/components/deploy/DeployCredentials.tsx:185:165",className:"w-3.5 h-3.5"})}),e.jsx(d,{"code-path":"src/components/deploy/DeployCredentials.tsx:186:27",variant:"ghost",size:"icon",className:"h-7 w-7 text-red-500",onClick:()=>x("repo",t),children:e.jsx(U,{"code-path":"src/components/deploy/DeployCredentials.tsx:186:136",className:"w-3.5 h-3.5"})})]})})]},t.id))})]})})}),e.jsx(B,{"code-path":"src/components/deploy/DeployCredentials.tsx:197:9",value:"registries",className:"mt-3",children:c?e.jsxs("div",{"code-path":"src/components/deploy/DeployCredentials.tsx:198:22",className:"text-center py-8 text-[var(--dg-text-secondary)]",children:[e.jsx(F,{"code-path":"src/components/deploy/DeployCredentials.tsx:198:88",className:"w-5 h-5 animate-spin mx-auto mb-2"}),"加载中..."]}):n.length===0?e.jsx("div",{"code-path":"src/components/deploy/DeployCredentials.tsx:199:39",className:"text-center py-8 text-[var(--dg-text-secondary)]",children:"暂无镜像仓库认证配置"}):e.jsx("div",{"code-path":"src/components/deploy/DeployCredentials.tsx:201:13",className:"rounded-md border border-[var(--dg-border)] overflow-hidden",children:e.jsxs("table",{"code-path":"src/components/deploy/DeployCredentials.tsx:202:15",className:"w-full text-sm",children:[e.jsx("thead",{"code-path":"src/components/deploy/DeployCredentials.tsx:203:17",className:"bg-[var(--dg-bg-tertiary)] border-b border-[var(--dg-border)]",children:e.jsxs("tr",{"code-path":"src/components/deploy/DeployCredentials.tsx:204:19",children:[e.jsx("th",{"code-path":"src/components/deploy/DeployCredentials.tsx:205:21",className:"px-3 py-2 text-left font-medium text-[var(--dg-text-secondary)]",children:"名称"}),e.jsx("th",{"code-path":"src/components/deploy/DeployCredentials.tsx:206:21",className:"px-3 py-2 text-left font-medium text-[var(--dg-text-secondary)] hidden md:table-cell",children:"Registry URL"}),e.jsx("th",{"code-path":"src/components/deploy/DeployCredentials.tsx:207:21",className:"px-3 py-2 text-left font-medium text-[var(--dg-text-secondary)] hidden sm:table-cell",children:"命名空间"}),e.jsx("th",{"code-path":"src/components/deploy/DeployCredentials.tsx:208:21",className:"px-3 py-2 text-left font-medium text-[var(--dg-text-secondary)]",children:"认证"}),e.jsx("th",{"code-path":"src/components/deploy/DeployCredentials.tsx:209:21",className:"px-3 py-2 text-left font-medium text-[var(--dg-text-secondary)]",children:"状态"}),e.jsx("th",{"code-path":"src/components/deploy/DeployCredentials.tsx:210:21",className:"px-3 py-2 text-right font-medium text-[var(--dg-text-secondary)]",children:"操作"})]})}),e.jsx("tbody",{"code-path":"src/components/deploy/DeployCredentials.tsx:213:17",children:n.map(t=>e.jsxs("tr",{"code-path":"src/components/deploy/DeployCredentials.tsx:215:21",className:"border-b border-[var(--dg-border)] hover:bg-[var(--dg-bg-tertiary)]/50",children:[e.jsx("td",{"code-path":"src/components/deploy/DeployCredentials.tsx:216:23",className:"px-3 py-2 font-medium text-[var(--dg-text-primary)]",children:t.name}),e.jsx("td",{"code-path":"src/components/deploy/DeployCredentials.tsx:217:23",className:"px-3 py-2 text-[var(--dg-text-secondary)] hidden md:table-cell font-mono text-xs max-w-[250px] truncate",children:t.registry_url}),e.jsx("td",{"code-path":"src/components/deploy/DeployCredentials.tsx:218:23",className:"px-3 py-2 text-[var(--dg-text-secondary)] hidden sm:table-cell",children:t.namespace||"-"}),e.jsx("td",{"code-path":"src/components/deploy/DeployCredentials.tsx:219:23",className:"px-3 py-2",children:e.jsx(w,{"code-path":"src/components/deploy/DeployCredentials.tsx:219:49",variant:"outline",className:"text-xs",children:t.auth_type})}),e.jsx("td",{"code-path":"src/components/deploy/DeployCredentials.tsx:220:23",className:"px-3 py-2",children:e.jsx(w,{"code-path":"src/components/deploy/DeployCredentials.tsx:221:25",className:t.enabled?"bg-emerald-500/20 text-emerald-400 border-emerald-500/30":"bg-slate-500/20 text-slate-400 border-slate-500/30",children:t.enabled?"启用":"禁用"})}),e.jsx("td",{"code-path":"src/components/deploy/DeployCredentials.tsx:223:23",className:"px-3 py-2 text-right",children:e.jsxs("div",{"code-path":"src/components/deploy/DeployCredentials.tsx:224:25",className:"flex justify-end gap-1",children:[e.jsx(d,{"code-path":"src/components/deploy/DeployCredentials.tsx:225:27",variant:"ghost",size:"icon",className:"h-7 w-7",onClick:()=>{p("registry"),y(t.id),C(!0)},children:e.jsx(P,{"code-path":"src/components/deploy/DeployCredentials.tsx:225:169",className:"w-3.5 h-3.5"})}),e.jsx(d,{"code-path":"src/components/deploy/DeployCredentials.tsx:226:27",variant:"ghost",size:"icon",className:"h-7 w-7 text-red-500",onClick:()=>x("registry",t),children:e.jsx(U,{"code-path":"src/components/deploy/DeployCredentials.tsx:226:140",className:"w-3.5 h-3.5"})})]})})]},t.id))})]})})}),e.jsxs(B,{"code-path":"src/components/deploy/DeployCredentials.tsx:238:9",value:"environments",className:"mt-3",children:[e.jsx("div",{"code-path":"src/components/deploy/DeployCredentials.tsx:239:11",className:"flex items-center justify-end mb-3",children:e.jsxs(d,{"code-path":"src/components/deploy/DeployCredentials.tsx:240:13",size:"sm",onClick:()=>{s(null),D(!0)},children:[e.jsx(G,{"code-path":"src/components/deploy/DeployCredentials.tsx:241:15",className:"w-4 h-4 mr-1"}),"新增环境"]})}),c?e.jsxs("div",{"code-path":"src/components/deploy/DeployCredentials.tsx:244:22",className:"text-center py-8 text-[var(--dg-text-secondary)]",children:[e.jsx(F,{"code-path":"src/components/deploy/DeployCredentials.tsx:244:88",className:"w-5 h-5 animate-spin mx-auto mb-2"}),"加载中..."]}):j.length===0?e.jsx("div",{"code-path":"src/components/deploy/DeployCredentials.tsx:245:41",className:"text-center py-8 text-[var(--dg-text-secondary)]",children:'暂无环境配置,点击"新增环境"创建'}):e.jsx("div",{"code-path":"src/components/deploy/DeployCredentials.tsx:247:13",className:"rounded-md border border-[var(--dg-border)] overflow-hidden",children:e.jsxs("table",{"code-path":"src/components/deploy/DeployCredentials.tsx:248:15",className:"w-full text-sm",children:[e.jsx("thead",{"code-path":"src/components/deploy/DeployCredentials.tsx:249:17",className:"bg-[var(--dg-bg-tertiary)] border-b border-[var(--dg-border)]",children:e.jsxs("tr",{"code-path":"src/components/deploy/DeployCredentials.tsx:250:19",children:[e.jsx("th",{"code-path":"src/components/deploy/DeployCredentials.tsx:251:21",className:"px-3 py-2 text-left font-medium text-[var(--dg-text-secondary)]",children:"环境标识"}),e.jsx("th",{"code-path":"src/components/deploy/DeployCredentials.tsx:252:21",className:"px-3 py-2 text-left font-medium text-[var(--dg-text-secondary)]",children:"显示名称"}),e.jsx("th",{"code-path":"src/components/deploy/DeployCredentials.tsx:253:21",className:"px-3 py-2 text-left font-medium text-[var(--dg-text-secondary)]",children:"类型"}),e.jsx("th",{"code-path":"src/components/deploy/DeployCredentials.tsx:254:21",className:"px-3 py-2 text-left font-medium text-[var(--dg-text-secondary)]",children:"颜色"}),e.jsx("th",{"code-path":"src/components/deploy/DeployCredentials.tsx:255:21",className:"px-3 py-2 text-left font-medium text-[var(--dg-text-secondary)]",children:"排序"}),e.jsx("th",{"code-path":"src/components/deploy/DeployCredentials.tsx:256:21",className:"px-3 py-2 text-left font-medium text-[var(--dg-text-secondary)]",children:"状态"}),e.jsx("th",{"code-path":"src/components/deploy/DeployCredentials.tsx:257:21",className:"px-3 py-2 text-right font-medium text-[var(--dg-text-secondary)]",children:"操作"})]})}),e.jsx("tbody",{"code-path":"src/components/deploy/DeployCredentials.tsx:260:17",children:j.map(t=>e.jsxs("tr",{"code-path":"src/components/deploy/DeployCredentials.tsx:262:21",className:"border-b border-[var(--dg-border)] hover:bg-[var(--dg-bg-tertiary)]/50",children:[e.jsx("td",{"code-path":"src/components/deploy/DeployCredentials.tsx:263:23",className:"px-3 py-2 font-mono text-xs font-medium text-[var(--dg-text-primary)]",children:t.name}),e.jsx("td",{"code-path":"src/components/deploy/DeployCredentials.tsx:264:23",className:"px-3 py-2 text-[var(--dg-text-primary)]",children:e.jsxs("span",{"code-path":"src/components/deploy/DeployCredentials.tsx:265:25",className:"flex items-center gap-1.5",children:[e.jsx("span",{"code-path":"src/components/deploy/DeployCredentials.tsx:266:27",className:"w-2.5 h-2.5 rounded-full inline-block",style:{backgroundColor:t.color}}),t.display_name]})}),e.jsx("td",{"code-path":"src/components/deploy/DeployCredentials.tsx:270:23",className:"px-3 py-2",children:e.jsx(w,{"code-path":"src/components/deploy/DeployCredentials.tsx:270:49",variant:"secondary",className:"text-xs",children:V[t.type]||t.type})}),e.jsx("td",{"code-path":"src/components/deploy/DeployCredentials.tsx:271:23",className:"px-3 py-2",children:e.jsx("div",{"code-path":"src/components/deploy/DeployCredentials.tsx:271:49",className:"w-6 h-6 rounded border",style:{backgroundColor:t.color}})}),e.jsx("td",{"code-path":"src/components/deploy/DeployCredentials.tsx:272:23",className:"px-3 py-2 text-[var(--dg-text-secondary)]",children:t.sort_order}),e.jsx("td",{"code-path":"src/components/deploy/DeployCredentials.tsx:273:23",className:"px-3 py-2",children:e.jsx(w,{"code-path":"src/components/deploy/DeployCredentials.tsx:274:25",className:t.enabled?"bg-emerald-500/20 text-emerald-400 border-emerald-500/30":"bg-slate-500/20 text-slate-400 border-slate-500/30",children:t.enabled?"启用":"禁用"})}),e.jsx("td",{"code-path":"src/components/deploy/DeployCredentials.tsx:276:23",className:"px-3 py-2 text-right",children:e.jsxs("div",{"code-path":"src/components/deploy/DeployCredentials.tsx:277:25",className:"flex justify-end gap-1",children:[e.jsx(d,{"code-path":"src/components/deploy/DeployCredentials.tsx:278:27",variant:"ghost",size:"icon",className:"h-7 w-7",onClick:()=>{s(t),D(!0)},children:e.jsx(P,{"code-path":"src/components/deploy/DeployCredentials.tsx:278:144",className:"w-3.5 h-3.5"})}),e.jsx(d,{"code-path":"src/components/deploy/DeployCredentials.tsx:279:27",variant:"ghost",size:"icon",className:"h-7 w-7 text-red-500",onClick:()=>x("env",t),children:e.jsx(U,{"code-path":"src/components/deploy/DeployCredentials.tsx:279:137",className:"w-3.5 h-3.5"})})]})})]},t.id))})]})})]}),e.jsx(B,{"code-path":"src/components/deploy/DeployCredentials.tsx:291:9",value:"tools",className:"mt-3",children:e.jsx(fe,{"code-path":"src/components/deploy/DeployCredentials.tsx:292:11"})})]}),e.jsx(be,{"code-path":"src/components/deploy/DeployCredentials.tsx:296:7",open:u,onOpenChange:C,type:f,editId:v,repos:b,registries:n,onSave:l}),e.jsx(ve,{"code-path":"src/components/deploy/DeployCredentials.tsx:301:7",open:N,onClose:()=>D(!1),onSaved:l,editData:T})]})}export{Ie as default}; diff --git a/backend/static/assets/DeployRBAC-BGcpvtav.js b/backend/static/assets/DeployRBAC-BGcpvtav.js new file mode 100644 index 0000000..4a6be05 --- /dev/null +++ b/backend/static/assets/DeployRBAC-BGcpvtav.js @@ -0,0 +1 @@ +import{i as Ne,r as o,f as ve,j as e,L as M,t as ae,B as a,Q as D,K as fe,X as pe,W as we,u as be}from"./index-Dmami9WE.js";import{C as g,a as N}from"./card-CIfC-8Rh.js";import{I as h}from"./input-NsU9nXZF.js";import{B as x}from"./badge-3UzCvU7L.js";import{S as v,a as f,b as w,c as b,d as r}from"./select-DUbxjT0z.js";import{L as i}from"./label-Ap_-SPYI.js";import{t as c}from"./index-BuEnLCjT.js";import{d as m,p as Se}from"./deploy-CD5bEXt-.js";import{P as le}from"./plus-O65gX7Qz.js";import{S as ne}from"./save-YtnrpTd8.js";import{T as ke}from"./trash-2-DWVnIU6o.js";import{U as de}from"./user-plus-DKeca2Dx.js";import"./index-CtCQcvyh.js";import"./chevron-up-Cq4GPopa.js";const Ie=[["path",{d:"M17 3v10",key:"15fgeh"}],["path",{d:"m12.67 5.5 8.66 5",key:"1gpheq"}],["path",{d:"m12.67 10.5 8.66-5",key:"1dkfa6"}],["path",{d:"M9 17a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v2a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2v-2z",key:"swwfx4"}]],re=Ne("regex",Ie);function Ke(){const[l,me]=o.useState([]),[xe,T]=o.useState(!0),[S,A]=o.useState(!1),[y,ie]=o.useState([]),[n,k]=o.useState(null),[F,ye]=o.useState([]),[I,_]=o.useState([]),[p,he]=o.useState(""),[j,q]=o.useState(""),[G,H]=o.useState(!1),[J,z]=o.useState(!1),[P,K]=o.useState(""),[E,Q]=o.useState(""),[C,W]=o.useState(""),[X,O]=o.useState("editor"),[Y,Z]=o.useState(""),[Ce,U]=o.useState(null),[L,ee]=o.useState(""),[se,te]=o.useState(""),Re=ve(),R=async()=>{T(!0);try{const[s,t,d]=await Promise.all([m.getItemRoles(),Se.getPipelines({page_size:200}),be.getUsers({page_size:500})]);me(Array.isArray(s)?s:s?.list||s?.data||[]),ie(Array.isArray(t)?t:t?.list||t?.data||[]);const u=Array.isArray(d)?d:d?.list||d?.data||[];ye(u)}catch{}finally{T(!1)}};o.useEffect(()=>{R()},[]);const $=async()=>{if(!p){_([]);return}try{const s=await m.getUserItemRoles(Number(p));_(Array.isArray(s)?s:s?.data||s?.list||[])}catch{_([])}};o.useEffect(()=>{$()},[p]);const B=o.useMemo(()=>{const s={};return l.forEach(t=>{try{const d=new RegExp(t.pattern);s[t.id]=y.filter(u=>d.test(u.code)).map(u=>u.code)}catch{s[t.id]=[]}}),s},[l,y]),oe=(n?l.find(s=>s.id===n):null)?B[n]||[]:[],ue=async()=>{if(!P.trim()||!E.trim()||!C.trim()){c.error("名称、代码、正则表达式不能为空");return}A(!0);try{await m.createItemRole({name:P.trim(),code:E.trim(),pattern:C.trim(),role:X,description:Y}),c.success("已创建"),z(!1),K(""),Q(""),W(""),O("editor"),Z(""),R()}catch(s){c.error(s?.message||"创建失败")}finally{A(!1)}},Ae=async s=>{if(!L.trim()){c.error("正则不能为空");return}A(!0);try{await m.updateItemRole(s,{pattern:L,role:se}),c.success("已更新"),U(null),R()}catch(t){c.error(t?.message||"更新失败")}finally{A(!1)}},je=async s=>{if(await Re({title:"删除角色",description:`确定删除「${s.name}」?匹配 ${B[s.id]?.length||0} 条流水线`,variant:"destructive"}))try{await m.deleteItemRole(s.id),c.success("已删除"),R()}catch{c.error("删除失败")}},Be=async s=>{try{await m.updateItemRole(s.id,{status:s.status?0:1}),c.success(s.status?"已禁用":"已启用"),R()}catch{c.error("操作失败")}},De=async()=>{if(!p||!j){c.error("请选择用户和角色");return}H(!0);try{await m.assignItemRole(Number(p),{user_id:Number(p),item_role_id:Number(j)}),c.success("已分配"),q(""),$()}catch(s){c.error(s?.message||"分配失败")}finally{H(!1)}},ge=async s=>{try{await m.removeItemRole(Number(p),s),c.success("已撤销"),$()}catch{c.error("撤销失败")}},ce=s=>s==="owner"?"bg-amber-500/20 text-amber-400 border-amber-500/30":s==="editor"?"bg-blue-500/20 text-blue-400 border-blue-500/30":"bg-slate-500/20 text-slate-400 border-slate-500/30",V=F.find(s=>String(s.id)===p);return xe?e.jsx("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:167:23",className:"flex items-center justify-center py-20",children:e.jsx(M,{"code-path":"src/components/deploy/DeployRBAC.tsx:167:79",className:"w-6 h-6 animate-spin"})}):e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:170:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:172:7",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:173:9",children:[e.jsxs("h1",{"code-path":"src/components/deploy/DeployRBAC.tsx:174:11",className:"text-xl font-bold flex items-center gap-2 text-[var(--dg-text-primary)]",children:[e.jsx(ae,{"code-path":"src/components/deploy/DeployRBAC.tsx:175:13",className:"w-5 h-5 text-purple-500"}),"发布权限"]}),e.jsx("p",{"code-path":"src/components/deploy/DeployRBAC.tsx:177:11",className:"text-sm text-[var(--dg-text-secondary)] mt-1",children:"Jenkins-style Role Strategy — 按流水线 code 正则匹配分配角色"})]}),e.jsxs(a,{"code-path":"src/components/deploy/DeployRBAC.tsx:181:9",onClick:()=>z(!0),disabled:J,children:[e.jsx(le,{"code-path":"src/components/deploy/DeployRBAC.tsx:182:11",className:"w-4 h-4 mr-1"}),"新建角色"]})]}),e.jsx(g,{"code-path":"src/components/deploy/DeployRBAC.tsx:187:7",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsxs(N,{"code-path":"src/components/deploy/DeployRBAC.tsx:188:9",className:"p-4",children:[e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:189:11",className:"flex items-center gap-2 mb-3",children:[e.jsx(D,{"code-path":"src/components/deploy/DeployRBAC.tsx:190:13",className:"w-4 h-4 text-blue-500"}),e.jsx("span",{"code-path":"src/components/deploy/DeployRBAC.tsx:191:13",className:"text-sm font-medium text-[var(--dg-text-primary)]",children:"流水线命中预览"}),e.jsx("span",{"code-path":"src/components/deploy/DeployRBAC.tsx:192:13",className:"text-xs text-[var(--dg-text-muted)]",children:"— 选择一个角色查看哪些流水线会被匹配"})]}),e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:194:11",className:"flex gap-2 mb-3 flex-wrap",children:[e.jsxs(a,{"code-path":"src/components/deploy/DeployRBAC.tsx:195:13",variant:n===null?"secondary":"ghost",size:"sm",onClick:()=>k(null),children:["全部 (",y.length,")"]}),l.map(s=>e.jsxs(a,{"code-path":"src/components/deploy/DeployRBAC.tsx:197:15",variant:n===s.id?"secondary":"ghost",size:"sm",onClick:()=>k(s.id),className:s.status===0?"opacity-40":"",children:[s.name," (",B[s.id]?.length||0,")"]},s.id))]}),e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:203:11",className:"flex flex-wrap gap-1.5 max-h-32 overflow-y-auto",children:[n===null?y.map(s=>e.jsxs(x,{"code-path":"src/components/deploy/DeployRBAC.tsx:205:36",variant:"secondary",className:"text-xs",children:[e.jsx(D,{"code-path":"src/components/deploy/DeployRBAC.tsx:205:94",className:"w-3 h-3 mr-0.5"}),s.code]},s.id)):y.map(s=>{const t=oe.includes(s.code);return e.jsxs(x,{"code-path":"src/components/deploy/DeployRBAC.tsx:209:21",variant:t?"default":"secondary",className:`text-xs ${t?"bg-purple-500/20 text-purple-300 border-purple-500/30":"opacity-30"}`,children:[e.jsx(D,{"code-path":"src/components/deploy/DeployRBAC.tsx:211:23",className:"w-3 h-3 mr-0.5"}),s.code]},s.id)}),n!==null&&oe.length===0&&e.jsx("span",{"code-path":"src/components/deploy/DeployRBAC.tsx:217:15",className:"text-xs text-red-400",children:"无匹配 — 请调整正则表达式"})]})]})}),J&&e.jsx(g,{"code-path":"src/components/deploy/DeployRBAC.tsx:225:9",className:"bg-[var(--dg-bg-secondary)] border-purple-500/20",children:e.jsxs(N,{"code-path":"src/components/deploy/DeployRBAC.tsx:226:11",className:"p-4 space-y-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:227:13",className:"flex items-center justify-between",children:[e.jsxs("span",{"code-path":"src/components/deploy/DeployRBAC.tsx:228:15",className:"text-sm font-medium text-[var(--dg-text-primary)] flex items-center gap-2",children:[e.jsx(le,{"code-path":"src/components/deploy/DeployRBAC.tsx:228:107",className:"w-4 h-4"}),"新建 Item Role"]}),e.jsx(a,{"code-path":"src/components/deploy/DeployRBAC.tsx:229:15",variant:"ghost",size:"sm",onClick:()=>z(!1),children:"取消"})]}),e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:231:13",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:232:15",className:"space-y-1",children:[e.jsx(i,{"code-path":"src/components/deploy/DeployRBAC.tsx:232:42",className:"text-xs",children:"名称"}),e.jsx(h,{"code-path":"src/components/deploy/DeployRBAC.tsx:232:79",value:P,onChange:s=>K(s.target.value),placeholder:"如: backend",className:"h-8 text-sm"})]}),e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:233:15",className:"space-y-1",children:[e.jsx(i,{"code-path":"src/components/deploy/DeployRBAC.tsx:233:42",className:"text-xs",children:"代码 (唯一标识)"}),e.jsx(h,{"code-path":"src/components/deploy/DeployRBAC.tsx:233:86",value:E,onChange:s=>Q(s.target.value),placeholder:"如: backend",className:"h-8 text-sm font-mono"})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:235:13",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:236:15",className:"space-y-1",children:[e.jsxs(i,{"code-path":"src/components/deploy/DeployRBAC.tsx:237:17",className:"text-xs flex items-center gap-1",children:[e.jsx(re,{"code-path":"src/components/deploy/DeployRBAC.tsx:237:68",className:"w-3 h-3"}),"正则匹配 Pattern"]}),e.jsx(h,{"code-path":"src/components/deploy/DeployRBAC.tsx:238:17",value:C,onChange:s=>{W(s.target.value)},placeholder:"如: ^cex-.*",className:"h-8 text-sm font-mono"}),C&&e.jsxs("p",{"code-path":"src/components/deploy/DeployRBAC.tsx:240:19",className:"text-xs text-[var(--dg-text-muted)]",children:["实时匹配: ",(()=>{try{const s=y.filter(t=>new RegExp(C).test(t.code)).length;return s>0?`✅ 命中 ${s} 条流水线`:"⚠️ 无匹配"}catch{return"❌ 正则语法错误"}})()]})]}),e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:245:15",className:"space-y-1",children:[e.jsx(i,{"code-path":"src/components/deploy/DeployRBAC.tsx:246:17",className:"text-xs",children:"角色"}),e.jsxs(v,{"code-path":"src/components/deploy/DeployRBAC.tsx:247:17",value:X,onValueChange:O,children:[e.jsx(f,{"code-path":"src/components/deploy/DeployRBAC.tsx:248:19",className:"h-8 text-sm",children:e.jsx(w,{"code-path":"src/components/deploy/DeployRBAC.tsx:248:58"})}),e.jsxs(b,{"code-path":"src/components/deploy/DeployRBAC.tsx:249:19",children:[e.jsx(r,{"code-path":"src/components/deploy/DeployRBAC.tsx:250:21",value:"owner",children:"拥有者 (owner)"}),e.jsx(r,{"code-path":"src/components/deploy/DeployRBAC.tsx:251:21",value:"editor",children:"编辑者 (editor)"}),e.jsx(r,{"code-path":"src/components/deploy/DeployRBAC.tsx:252:21",value:"viewer",children:"查看者 (viewer)"})]})]})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:257:13",className:"space-y-1",children:[e.jsx(i,{"code-path":"src/components/deploy/DeployRBAC.tsx:257:40",className:"text-xs",children:"描述 (可选)"}),e.jsx(h,{"code-path":"src/components/deploy/DeployRBAC.tsx:257:82",value:Y,onChange:s=>Z(s.target.value),placeholder:"简要说明此角色的用途",className:"h-8 text-sm"})]}),e.jsxs(a,{"code-path":"src/components/deploy/DeployRBAC.tsx:258:13",onClick:ue,disabled:S,className:"w-full",children:[S?e.jsx(M,{"code-path":"src/components/deploy/DeployRBAC.tsx:259:25",className:"w-4 h-4 mr-1 animate-spin"}):e.jsx(ne,{"code-path":"src/components/deploy/DeployRBAC.tsx:259:77",className:"w-4 h-4 mr-1"}),S?"创建中...":"创建"]})]})}),l.length===0?e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:268:9",className:"text-center py-12 text-[var(--dg-text-secondary)]",children:[e.jsx(ae,{"code-path":"src/components/deploy/DeployRBAC.tsx:269:11",className:"w-10 h-10 mx-auto mb-2 opacity-20"}),e.jsx("p",{"code-path":"src/components/deploy/DeployRBAC.tsx:270:11",className:"text-sm",children:"暂无 Item Role"})]}):e.jsx("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:273:9",className:"space-y-2",children:l.map(s=>e.jsx(g,{"code-path":"src/components/deploy/DeployRBAC.tsx:275:13",className:`bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] ${s.status===0?"opacity-50":""}`,children:e.jsx(N,{"code-path":"src/components/deploy/DeployRBAC.tsx:276:15",className:"p-3",children:e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:277:17",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:278:19",className:"flex items-center gap-3 flex-1 min-w-0",children:[e.jsx("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:279:21",className:"w-9 h-9 rounded-lg bg-purple-500/20 flex items-center justify-center shrink-0",children:e.jsx(re,{"code-path":"src/components/deploy/DeployRBAC.tsx:280:23",className:"w-4 h-4 text-purple-400"})}),e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:282:21",className:"min-w-0",children:[e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:283:23",className:"flex items-center gap-1.5 flex-wrap",children:[e.jsx("span",{"code-path":"src/components/deploy/DeployRBAC.tsx:284:25",className:"text-sm font-semibold text-[var(--dg-text-primary)]",children:s.name}),e.jsx(x,{"code-path":"src/components/deploy/DeployRBAC.tsx:285:25",className:`text-xs border ${ce(s.role)}`,children:s.role==="owner"?"拥有者":s.role==="editor"?"编辑者":"查看者"}),s.status===0&&e.jsx(x,{"code-path":"src/components/deploy/DeployRBAC.tsx:286:47",variant:"secondary",className:"text-xs text-red-400",children:"已禁用"}),e.jsxs(x,{"code-path":"src/components/deploy/DeployRBAC.tsx:287:25",variant:"secondary",className:"text-xs cursor-pointer",onClick:()=>k(n===s.id?null:s.id),children:[e.jsx(D,{"code-path":"src/components/deploy/DeployRBAC.tsx:288:27",className:"w-3 h-3 mr-0.5"}),B[s.id]?.length||0," 条"]})]}),e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:291:23",className:"text-xs text-[var(--dg-text-secondary)] mt-0.5 truncate",children:[e.jsx("code",{"code-path":"src/components/deploy/DeployRBAC.tsx:292:25",className:"font-mono text-purple-400 bg-purple-500/10 px-1 rounded",children:s.code}),e.jsx("span",{"code-path":"src/components/deploy/DeployRBAC.tsx:293:25",className:"mx-1",children:"→"}),e.jsx("code",{"code-path":"src/components/deploy/DeployRBAC.tsx:294:25",className:"font-mono text-blue-400 bg-blue-500/10 px-1 rounded",children:s.pattern}),s.description&&e.jsx("span",{"code-path":"src/components/deploy/DeployRBAC.tsx:295:46",className:"ml-2 opacity-60",children:s.description})]})]})]}),e.jsx("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:299:19",className:"flex items-center gap-1 shrink-0",children:Ce===s.id?e.jsxs(e.Fragment,{children:[e.jsx(h,{"code-path":"src/components/deploy/DeployRBAC.tsx:302:25",value:L,onChange:t=>ee(t.target.value),className:"h-7 w-36 text-xs font-mono",placeholder:"正则表达式"}),e.jsxs(v,{"code-path":"src/components/deploy/DeployRBAC.tsx:303:25",value:se,onValueChange:te,children:[e.jsx(f,{"code-path":"src/components/deploy/DeployRBAC.tsx:304:27",className:"h-7 w-20 text-xs",children:e.jsx(w,{"code-path":"src/components/deploy/DeployRBAC.tsx:304:71"})}),e.jsxs(b,{"code-path":"src/components/deploy/DeployRBAC.tsx:305:27",children:[e.jsx(r,{"code-path":"src/components/deploy/DeployRBAC.tsx:306:29",value:"owner",children:"拥有者"}),e.jsx(r,{"code-path":"src/components/deploy/DeployRBAC.tsx:307:29",value:"editor",children:"编辑者"}),e.jsx(r,{"code-path":"src/components/deploy/DeployRBAC.tsx:308:29",value:"viewer",children:"查看者"})]})]}),e.jsx(a,{"code-path":"src/components/deploy/DeployRBAC.tsx:311:25",size:"icon",variant:"ghost",className:"h-7 w-7 text-green-400",onClick:()=>Ae(s.id),children:e.jsx(fe,{"code-path":"src/components/deploy/DeployRBAC.tsx:311:134",className:"w-3.5 h-3.5"})}),e.jsx(a,{"code-path":"src/components/deploy/DeployRBAC.tsx:312:25",size:"icon",variant:"ghost",className:"h-7 w-7 text-red-400",onClick:()=>U(null),children:e.jsx(pe,{"code-path":"src/components/deploy/DeployRBAC.tsx:312:127",className:"w-3.5 h-3.5"})})]}):e.jsxs(e.Fragment,{children:[e.jsxs(a,{"code-path":"src/components/deploy/DeployRBAC.tsx:316:25",variant:"ghost",size:"sm",className:"h-7 text-xs",onClick:()=>{U(s.id),ee(s.pattern),te(s.role)},children:[e.jsx(ne,{"code-path":"src/components/deploy/DeployRBAC.tsx:316:178",className:"w-3 h-3 mr-1"}),"编辑"]}),e.jsx(a,{"code-path":"src/components/deploy/DeployRBAC.tsx:317:25",variant:"ghost",size:"sm",className:"h-7 text-xs",onClick:()=>Be(s),children:s.status?"禁用":"启用"}),e.jsx(a,{"code-path":"src/components/deploy/DeployRBAC.tsx:318:25",variant:"ghost",size:"icon",className:"h-7 w-7 text-red-500",onClick:()=>je(s),children:e.jsx(ke,{"code-path":"src/components/deploy/DeployRBAC.tsx:318:129",className:"w-3.5 h-3.5"})})]})})]})})},s.id))}),e.jsx(g,{"code-path":"src/components/deploy/DeployRBAC.tsx:330:7",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsxs(N,{"code-path":"src/components/deploy/DeployRBAC.tsx:331:9",className:"p-4",children:[e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:332:11",className:"flex items-center gap-2 mb-3",children:[e.jsx(de,{"code-path":"src/components/deploy/DeployRBAC.tsx:333:13",className:"w-4 h-4 text-amber-400"}),e.jsx("span",{"code-path":"src/components/deploy/DeployRBAC.tsx:334:13",className:"text-sm font-medium text-[var(--dg-text-primary)]",children:"分配角色给用户"})]}),e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:336:11",className:"flex gap-3 items-end mb-4",children:[e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:337:13",className:"space-y-1 flex-1",children:[e.jsx(i,{"code-path":"src/components/deploy/DeployRBAC.tsx:338:15",className:"text-xs",children:"选择用户"}),e.jsxs(v,{"code-path":"src/components/deploy/DeployRBAC.tsx:339:15",value:p,onValueChange:he,children:[e.jsx(f,{"code-path":"src/components/deploy/DeployRBAC.tsx:340:17",className:"h-8 text-sm",children:e.jsx(w,{"code-path":"src/components/deploy/DeployRBAC.tsx:340:56",placeholder:"选择用户..."})}),e.jsxs(b,{"code-path":"src/components/deploy/DeployRBAC.tsx:341:17",className:"max-h-60",children:[e.jsx("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:342:19",className:"px-2 py-1.5 sticky top-0 bg-popover z-10",children:e.jsx(h,{"code-path":"src/components/deploy/DeployRBAC.tsx:342:77",placeholder:"搜索用户...",className:"h-7 text-xs"})}),F.map(s=>e.jsxs(r,{"code-path":"src/components/deploy/DeployRBAC.tsx:344:21",value:String(s.id),children:[s.real_name||s.username," (",s.username,")",I.some(t=>t.user_id===s.id)&&e.jsx("span",{"code-path":"src/components/deploy/DeployRBAC.tsx:346:69",className:"ml-2 text-xs text-purple-400",children:"已分配"})]},s.id))]})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:352:13",className:"space-y-1 w-48",children:[e.jsx(i,{"code-path":"src/components/deploy/DeployRBAC.tsx:353:15",className:"text-xs",children:"Item Role"}),e.jsxs(v,{"code-path":"src/components/deploy/DeployRBAC.tsx:354:15",value:j,onValueChange:q,children:[e.jsx(f,{"code-path":"src/components/deploy/DeployRBAC.tsx:355:17",className:"h-8 text-sm",children:e.jsx(w,{"code-path":"src/components/deploy/DeployRBAC.tsx:355:56",placeholder:"选择角色"})}),e.jsx(b,{"code-path":"src/components/deploy/DeployRBAC.tsx:356:17",children:l.filter(s=>s.status===1).map(s=>e.jsxs(r,{"code-path":"src/components/deploy/DeployRBAC.tsx:358:21",value:String(s.id),children:[s.name," (",s.role,")"]},s.id))})]})]}),e.jsxs(a,{"code-path":"src/components/deploy/DeployRBAC.tsx:363:13",className:"h-8",onClick:De,disabled:G||!p||!j,children:[G?e.jsx(M,{"code-path":"src/components/deploy/DeployRBAC.tsx:364:32",className:"w-3.5 h-3.5 mr-1 animate-spin"}):e.jsx(de,{"code-path":"src/components/deploy/DeployRBAC.tsx:364:88",className:"w-3.5 h-3.5 mr-1"}),"分配"]})]}),V&&e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:371:13",children:[e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:372:15",className:"flex items-center gap-2 mb-2",children:[e.jsxs(x,{"code-path":"src/components/deploy/DeployRBAC.tsx:373:17",variant:"secondary",className:"text-xs",children:[e.jsx(we,{"code-path":"src/components/deploy/DeployRBAC.tsx:374:19",className:"w-3 h-3 mr-1"}),V.real_name||V.username]}),e.jsx("span",{"code-path":"src/components/deploy/DeployRBAC.tsx:376:17",className:"text-xs text-[var(--dg-text-muted)]",children:"已分配角色:"})]}),I.length===0?e.jsx("p",{"code-path":"src/components/deploy/DeployRBAC.tsx:379:17",className:"text-xs text-[var(--dg-text-muted)] py-2",children:"该用户尚未分配任何 Item Role"}):e.jsx("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:381:17",className:"space-y-1",children:I.map(s=>{const t=s.item_role||l.find(d=>d.id===s.item_role_id);return e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:385:23",className:"flex items-center justify-between py-1.5 px-2 rounded bg-[var(--dg-bg-tertiary)] text-xs",children:[e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:386:25",className:"flex items-center gap-2",children:[e.jsx(x,{"code-path":"src/components/deploy/DeployRBAC.tsx:387:27",className:`text-xs border ${ce(t?.role||"viewer")}`,children:t?.role==="owner"?"拥有者":t?.role==="editor"?"编辑者":"查看者"}),e.jsx("span",{"code-path":"src/components/deploy/DeployRBAC.tsx:390:27",className:"text-[var(--dg-text-primary)]",children:t?.name||`#${s.item_role_id}`}),t&&e.jsx("code",{"code-path":"src/components/deploy/DeployRBAC.tsx:392:29",className:"font-mono text-[var(--dg-text-muted)] bg-[var(--dg-bg-primary)] px-1 rounded text-xs",children:t.pattern})]}),e.jsx(a,{"code-path":"src/components/deploy/DeployRBAC.tsx:397:25",variant:"ghost",size:"icon",className:"h-6 w-6 text-red-400",onClick:()=>ge(s.id),children:e.jsx(pe,{"code-path":"src/components/deploy/DeployRBAC.tsx:398:27",className:"w-3 h-3"})})]},s.id)})})]})]})})]})}export{Ke as default}; diff --git a/backend/static/assets/DeployRBAC-QV1xM1Jn.js b/backend/static/assets/DeployRBAC-QV1xM1Jn.js deleted file mode 100644 index 2ff3a5f..0000000 --- a/backend/static/assets/DeployRBAC-QV1xM1Jn.js +++ /dev/null @@ -1 +0,0 @@ -import{g as Ne,r as o,a as ve,j as e,L as M,t as ae,B as a,a0 as D,I as h,a9 as fe,a5 as le,aa as we,u as be}from"./index-DfyorCky.js";import{C as g,a as N}from"./card-C55cvSHg.js";import{B as x}from"./badge-xNW8x0G1.js";import{S as v,a as f,b as w,c as b,d as r}from"./select-D5qUzdAs.js";import{L as i}from"./label-BK0h2apY.js";import{t as c}from"./index-a3ybMjbR.js";import{d as m,p as Se}from"./deploy-B3Sg3N1U.js";import{P as pe}from"./plus-CUG-9kpu.js";import{S as ne}from"./save-DoGGjfwC.js";import{T as ke}from"./trash-2-Dx32pOzT.js";import{U as de}from"./user-plus-BwUWtcQl.js";import"./index-CWVNW_qu.js";const Ie=[["path",{d:"M17 3v10",key:"15fgeh"}],["path",{d:"m12.67 5.5 8.66 5",key:"1gpheq"}],["path",{d:"m12.67 10.5 8.66-5",key:"1dkfa6"}],["path",{d:"M9 17a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v2a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2v-2z",key:"swwfx4"}]],re=Ne("regex",Ie);function He(){const[p,me]=o.useState([]),[xe,T]=o.useState(!0),[S,A]=o.useState(!1),[y,ie]=o.useState([]),[n,k]=o.useState(null),[F,ye]=o.useState([]),[I,_]=o.useState([]),[l,he]=o.useState(""),[j,q]=o.useState(""),[G,H]=o.useState(!1),[J,z]=o.useState(!1),[P,X]=o.useState(""),[E,K]=o.useState(""),[C,O]=o.useState(""),[Q,W]=o.useState("editor"),[Y,Z]=o.useState(""),[Ce,U]=o.useState(null),[L,ee]=o.useState(""),[se,te]=o.useState(""),Re=ve(),R=async()=>{T(!0);try{const[s,t,d]=await Promise.all([m.getItemRoles(),Se.getPipelines({page_size:200}),be.getUsers({page_size:500})]);me(Array.isArray(s)?s:s?.list||s?.data||[]),ie(Array.isArray(t)?t:t?.list||t?.data||[]);const u=Array.isArray(d)?d:d?.list||d?.data||[];ye(u)}catch{}finally{T(!1)}};o.useEffect(()=>{R()},[]);const $=async()=>{if(!l){_([]);return}try{const s=await m.getUserItemRoles(Number(l));_(Array.isArray(s)?s:s?.data||s?.list||[])}catch{_([])}};o.useEffect(()=>{$()},[l]);const B=o.useMemo(()=>{const s={};return p.forEach(t=>{try{const d=new RegExp(t.pattern);s[t.id]=y.filter(u=>d.test(u.code)).map(u=>u.code)}catch{s[t.id]=[]}}),s},[p,y]),oe=(n?p.find(s=>s.id===n):null)?B[n]||[]:[],ue=async()=>{if(!P.trim()||!E.trim()||!C.trim()){c.error("名称、代码、正则表达式不能为空");return}A(!0);try{await m.createItemRole({name:P.trim(),code:E.trim(),pattern:C.trim(),role:Q,description:Y}),c.success("已创建"),z(!1),X(""),K(""),O(""),W("editor"),Z(""),R()}catch(s){c.error(s?.message||"创建失败")}finally{A(!1)}},Ae=async s=>{if(!L.trim()){c.error("正则不能为空");return}A(!0);try{await m.updateItemRole(s,{pattern:L,role:se}),c.success("已更新"),U(null),R()}catch(t){c.error(t?.message||"更新失败")}finally{A(!1)}},je=async s=>{if(await Re({title:"删除角色",description:`确定删除「${s.name}」?匹配 ${B[s.id]?.length||0} 条流水线`,variant:"destructive"}))try{await m.deleteItemRole(s.id),c.success("已删除"),R()}catch{c.error("删除失败")}},Be=async s=>{try{await m.updateItemRole(s.id,{status:s.status?0:1}),c.success(s.status?"已禁用":"已启用"),R()}catch{c.error("操作失败")}},De=async()=>{if(!l||!j){c.error("请选择用户和角色");return}H(!0);try{await m.assignItemRole(Number(l),{user_id:Number(l),item_role_id:Number(j)}),c.success("已分配"),q(""),$()}catch(s){c.error(s?.message||"分配失败")}finally{H(!1)}},ge=async s=>{try{await m.removeItemRole(Number(l),s),c.success("已撤销"),$()}catch{c.error("撤销失败")}},ce=s=>s==="owner"?"bg-amber-500/20 text-amber-400 border-amber-500/30":s==="editor"?"bg-blue-500/20 text-blue-400 border-blue-500/30":"bg-slate-500/20 text-slate-400 border-slate-500/30",V=F.find(s=>String(s.id)===l);return xe?e.jsx("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:167:23",className:"flex items-center justify-center py-20",children:e.jsx(M,{"code-path":"src/components/deploy/DeployRBAC.tsx:167:79",className:"w-6 h-6 animate-spin"})}):e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:170:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:172:7",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:173:9",children:[e.jsxs("h1",{"code-path":"src/components/deploy/DeployRBAC.tsx:174:11",className:"text-xl font-bold flex items-center gap-2 text-[var(--dg-text-primary)]",children:[e.jsx(ae,{"code-path":"src/components/deploy/DeployRBAC.tsx:175:13",className:"w-5 h-5 text-purple-500"}),"发布权限"]}),e.jsx("p",{"code-path":"src/components/deploy/DeployRBAC.tsx:177:11",className:"text-sm text-[var(--dg-text-secondary)] mt-1",children:"Jenkins-style Role Strategy — 按流水线 code 正则匹配分配角色"})]}),e.jsxs(a,{"code-path":"src/components/deploy/DeployRBAC.tsx:181:9",onClick:()=>z(!0),disabled:J,children:[e.jsx(pe,{"code-path":"src/components/deploy/DeployRBAC.tsx:182:11",className:"w-4 h-4 mr-1"}),"新建角色"]})]}),e.jsx(g,{"code-path":"src/components/deploy/DeployRBAC.tsx:187:7",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsxs(N,{"code-path":"src/components/deploy/DeployRBAC.tsx:188:9",className:"p-4",children:[e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:189:11",className:"flex items-center gap-2 mb-3",children:[e.jsx(D,{"code-path":"src/components/deploy/DeployRBAC.tsx:190:13",className:"w-4 h-4 text-blue-500"}),e.jsx("span",{"code-path":"src/components/deploy/DeployRBAC.tsx:191:13",className:"text-sm font-medium text-[var(--dg-text-primary)]",children:"流水线命中预览"}),e.jsx("span",{"code-path":"src/components/deploy/DeployRBAC.tsx:192:13",className:"text-xs text-[var(--dg-text-muted)]",children:"— 选择一个角色查看哪些流水线会被匹配"})]}),e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:194:11",className:"flex gap-2 mb-3 flex-wrap",children:[e.jsxs(a,{"code-path":"src/components/deploy/DeployRBAC.tsx:195:13",variant:n===null?"secondary":"ghost",size:"sm",onClick:()=>k(null),children:["全部 (",y.length,")"]}),p.map(s=>e.jsxs(a,{"code-path":"src/components/deploy/DeployRBAC.tsx:197:15",variant:n===s.id?"secondary":"ghost",size:"sm",onClick:()=>k(s.id),className:s.status===0?"opacity-40":"",children:[s.name," (",B[s.id]?.length||0,")"]},s.id))]}),e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:203:11",className:"flex flex-wrap gap-1.5 max-h-32 overflow-y-auto",children:[n===null?y.map(s=>e.jsxs(x,{"code-path":"src/components/deploy/DeployRBAC.tsx:205:36",variant:"secondary",className:"text-xs",children:[e.jsx(D,{"code-path":"src/components/deploy/DeployRBAC.tsx:205:94",className:"w-3 h-3 mr-0.5"}),s.code]},s.id)):y.map(s=>{const t=oe.includes(s.code);return e.jsxs(x,{"code-path":"src/components/deploy/DeployRBAC.tsx:209:21",variant:t?"default":"secondary",className:`text-xs ${t?"bg-purple-500/20 text-purple-300 border-purple-500/30":"opacity-30"}`,children:[e.jsx(D,{"code-path":"src/components/deploy/DeployRBAC.tsx:211:23",className:"w-3 h-3 mr-0.5"}),s.code]},s.id)}),n!==null&&oe.length===0&&e.jsx("span",{"code-path":"src/components/deploy/DeployRBAC.tsx:217:15",className:"text-xs text-red-400",children:"无匹配 — 请调整正则表达式"})]})]})}),J&&e.jsx(g,{"code-path":"src/components/deploy/DeployRBAC.tsx:225:9",className:"bg-[var(--dg-bg-secondary)] border-purple-500/20",children:e.jsxs(N,{"code-path":"src/components/deploy/DeployRBAC.tsx:226:11",className:"p-4 space-y-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:227:13",className:"flex items-center justify-between",children:[e.jsxs("span",{"code-path":"src/components/deploy/DeployRBAC.tsx:228:15",className:"text-sm font-medium text-[var(--dg-text-primary)] flex items-center gap-2",children:[e.jsx(pe,{"code-path":"src/components/deploy/DeployRBAC.tsx:228:107",className:"w-4 h-4"}),"新建 Item Role"]}),e.jsx(a,{"code-path":"src/components/deploy/DeployRBAC.tsx:229:15",variant:"ghost",size:"sm",onClick:()=>z(!1),children:"取消"})]}),e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:231:13",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:232:15",className:"space-y-1",children:[e.jsx(i,{"code-path":"src/components/deploy/DeployRBAC.tsx:232:42",className:"text-xs",children:"名称"}),e.jsx(h,{"code-path":"src/components/deploy/DeployRBAC.tsx:232:79",value:P,onChange:s=>X(s.target.value),placeholder:"如: backend",className:"h-8 text-sm"})]}),e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:233:15",className:"space-y-1",children:[e.jsx(i,{"code-path":"src/components/deploy/DeployRBAC.tsx:233:42",className:"text-xs",children:"代码 (唯一标识)"}),e.jsx(h,{"code-path":"src/components/deploy/DeployRBAC.tsx:233:86",value:E,onChange:s=>K(s.target.value),placeholder:"如: backend",className:"h-8 text-sm font-mono"})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:235:13",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:236:15",className:"space-y-1",children:[e.jsxs(i,{"code-path":"src/components/deploy/DeployRBAC.tsx:237:17",className:"text-xs flex items-center gap-1",children:[e.jsx(re,{"code-path":"src/components/deploy/DeployRBAC.tsx:237:68",className:"w-3 h-3"}),"正则匹配 Pattern"]}),e.jsx(h,{"code-path":"src/components/deploy/DeployRBAC.tsx:238:17",value:C,onChange:s=>{O(s.target.value)},placeholder:"如: ^cex-.*",className:"h-8 text-sm font-mono"}),C&&e.jsxs("p",{"code-path":"src/components/deploy/DeployRBAC.tsx:240:19",className:"text-xs text-[var(--dg-text-muted)]",children:["实时匹配: ",(()=>{try{const s=y.filter(t=>new RegExp(C).test(t.code)).length;return s>0?`✅ 命中 ${s} 条流水线`:"⚠️ 无匹配"}catch{return"❌ 正则语法错误"}})()]})]}),e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:245:15",className:"space-y-1",children:[e.jsx(i,{"code-path":"src/components/deploy/DeployRBAC.tsx:246:17",className:"text-xs",children:"角色"}),e.jsxs(v,{"code-path":"src/components/deploy/DeployRBAC.tsx:247:17",value:Q,onValueChange:W,children:[e.jsx(f,{"code-path":"src/components/deploy/DeployRBAC.tsx:248:19",className:"h-8 text-sm",children:e.jsx(w,{"code-path":"src/components/deploy/DeployRBAC.tsx:248:58"})}),e.jsxs(b,{"code-path":"src/components/deploy/DeployRBAC.tsx:249:19",children:[e.jsx(r,{"code-path":"src/components/deploy/DeployRBAC.tsx:250:21",value:"owner",children:"拥有者 (owner)"}),e.jsx(r,{"code-path":"src/components/deploy/DeployRBAC.tsx:251:21",value:"editor",children:"编辑者 (editor)"}),e.jsx(r,{"code-path":"src/components/deploy/DeployRBAC.tsx:252:21",value:"viewer",children:"查看者 (viewer)"})]})]})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:257:13",className:"space-y-1",children:[e.jsx(i,{"code-path":"src/components/deploy/DeployRBAC.tsx:257:40",className:"text-xs",children:"描述 (可选)"}),e.jsx(h,{"code-path":"src/components/deploy/DeployRBAC.tsx:257:82",value:Y,onChange:s=>Z(s.target.value),placeholder:"简要说明此角色的用途",className:"h-8 text-sm"})]}),e.jsxs(a,{"code-path":"src/components/deploy/DeployRBAC.tsx:258:13",onClick:ue,disabled:S,className:"w-full",children:[S?e.jsx(M,{"code-path":"src/components/deploy/DeployRBAC.tsx:259:25",className:"w-4 h-4 mr-1 animate-spin"}):e.jsx(ne,{"code-path":"src/components/deploy/DeployRBAC.tsx:259:77",className:"w-4 h-4 mr-1"}),S?"创建中...":"创建"]})]})}),p.length===0?e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:268:9",className:"text-center py-12 text-[var(--dg-text-secondary)]",children:[e.jsx(ae,{"code-path":"src/components/deploy/DeployRBAC.tsx:269:11",className:"w-10 h-10 mx-auto mb-2 opacity-20"}),e.jsx("p",{"code-path":"src/components/deploy/DeployRBAC.tsx:270:11",className:"text-sm",children:"暂无 Item Role"})]}):e.jsx("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:273:9",className:"space-y-2",children:p.map(s=>e.jsx(g,{"code-path":"src/components/deploy/DeployRBAC.tsx:275:13",className:`bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] ${s.status===0?"opacity-50":""}`,children:e.jsx(N,{"code-path":"src/components/deploy/DeployRBAC.tsx:276:15",className:"p-3",children:e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:277:17",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:278:19",className:"flex items-center gap-3 flex-1 min-w-0",children:[e.jsx("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:279:21",className:"w-9 h-9 rounded-lg bg-purple-500/20 flex items-center justify-center shrink-0",children:e.jsx(re,{"code-path":"src/components/deploy/DeployRBAC.tsx:280:23",className:"w-4 h-4 text-purple-400"})}),e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:282:21",className:"min-w-0",children:[e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:283:23",className:"flex items-center gap-1.5 flex-wrap",children:[e.jsx("span",{"code-path":"src/components/deploy/DeployRBAC.tsx:284:25",className:"text-sm font-semibold text-[var(--dg-text-primary)]",children:s.name}),e.jsx(x,{"code-path":"src/components/deploy/DeployRBAC.tsx:285:25",className:`text-xs border ${ce(s.role)}`,children:s.role==="owner"?"拥有者":s.role==="editor"?"编辑者":"查看者"}),s.status===0&&e.jsx(x,{"code-path":"src/components/deploy/DeployRBAC.tsx:286:47",variant:"secondary",className:"text-xs text-red-400",children:"已禁用"}),e.jsxs(x,{"code-path":"src/components/deploy/DeployRBAC.tsx:287:25",variant:"secondary",className:"text-xs cursor-pointer",onClick:()=>k(n===s.id?null:s.id),children:[e.jsx(D,{"code-path":"src/components/deploy/DeployRBAC.tsx:288:27",className:"w-3 h-3 mr-0.5"}),B[s.id]?.length||0," 条"]})]}),e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:291:23",className:"text-xs text-[var(--dg-text-secondary)] mt-0.5 truncate",children:[e.jsx("code",{"code-path":"src/components/deploy/DeployRBAC.tsx:292:25",className:"font-mono text-purple-400 bg-purple-500/10 px-1 rounded",children:s.code}),e.jsx("span",{"code-path":"src/components/deploy/DeployRBAC.tsx:293:25",className:"mx-1",children:"→"}),e.jsx("code",{"code-path":"src/components/deploy/DeployRBAC.tsx:294:25",className:"font-mono text-blue-400 bg-blue-500/10 px-1 rounded",children:s.pattern}),s.description&&e.jsx("span",{"code-path":"src/components/deploy/DeployRBAC.tsx:295:46",className:"ml-2 opacity-60",children:s.description})]})]})]}),e.jsx("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:299:19",className:"flex items-center gap-1 shrink-0",children:Ce===s.id?e.jsxs(e.Fragment,{children:[e.jsx(h,{"code-path":"src/components/deploy/DeployRBAC.tsx:302:25",value:L,onChange:t=>ee(t.target.value),className:"h-7 w-36 text-xs font-mono",placeholder:"正则表达式"}),e.jsxs(v,{"code-path":"src/components/deploy/DeployRBAC.tsx:303:25",value:se,onValueChange:te,children:[e.jsx(f,{"code-path":"src/components/deploy/DeployRBAC.tsx:304:27",className:"h-7 w-20 text-xs",children:e.jsx(w,{"code-path":"src/components/deploy/DeployRBAC.tsx:304:71"})}),e.jsxs(b,{"code-path":"src/components/deploy/DeployRBAC.tsx:305:27",children:[e.jsx(r,{"code-path":"src/components/deploy/DeployRBAC.tsx:306:29",value:"owner",children:"拥有者"}),e.jsx(r,{"code-path":"src/components/deploy/DeployRBAC.tsx:307:29",value:"editor",children:"编辑者"}),e.jsx(r,{"code-path":"src/components/deploy/DeployRBAC.tsx:308:29",value:"viewer",children:"查看者"})]})]}),e.jsx(a,{"code-path":"src/components/deploy/DeployRBAC.tsx:311:25",size:"icon",variant:"ghost",className:"h-7 w-7 text-green-400",onClick:()=>Ae(s.id),children:e.jsx(fe,{"code-path":"src/components/deploy/DeployRBAC.tsx:311:134",className:"w-3.5 h-3.5"})}),e.jsx(a,{"code-path":"src/components/deploy/DeployRBAC.tsx:312:25",size:"icon",variant:"ghost",className:"h-7 w-7 text-red-400",onClick:()=>U(null),children:e.jsx(le,{"code-path":"src/components/deploy/DeployRBAC.tsx:312:127",className:"w-3.5 h-3.5"})})]}):e.jsxs(e.Fragment,{children:[e.jsxs(a,{"code-path":"src/components/deploy/DeployRBAC.tsx:316:25",variant:"ghost",size:"sm",className:"h-7 text-xs",onClick:()=>{U(s.id),ee(s.pattern),te(s.role)},children:[e.jsx(ne,{"code-path":"src/components/deploy/DeployRBAC.tsx:316:178",className:"w-3 h-3 mr-1"}),"编辑"]}),e.jsx(a,{"code-path":"src/components/deploy/DeployRBAC.tsx:317:25",variant:"ghost",size:"sm",className:"h-7 text-xs",onClick:()=>Be(s),children:s.status?"禁用":"启用"}),e.jsx(a,{"code-path":"src/components/deploy/DeployRBAC.tsx:318:25",variant:"ghost",size:"icon",className:"h-7 w-7 text-red-500",onClick:()=>je(s),children:e.jsx(ke,{"code-path":"src/components/deploy/DeployRBAC.tsx:318:129",className:"w-3.5 h-3.5"})})]})})]})})},s.id))}),e.jsx(g,{"code-path":"src/components/deploy/DeployRBAC.tsx:330:7",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsxs(N,{"code-path":"src/components/deploy/DeployRBAC.tsx:331:9",className:"p-4",children:[e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:332:11",className:"flex items-center gap-2 mb-3",children:[e.jsx(de,{"code-path":"src/components/deploy/DeployRBAC.tsx:333:13",className:"w-4 h-4 text-amber-400"}),e.jsx("span",{"code-path":"src/components/deploy/DeployRBAC.tsx:334:13",className:"text-sm font-medium text-[var(--dg-text-primary)]",children:"分配角色给用户"})]}),e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:336:11",className:"flex gap-3 items-end mb-4",children:[e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:337:13",className:"space-y-1 flex-1",children:[e.jsx(i,{"code-path":"src/components/deploy/DeployRBAC.tsx:338:15",className:"text-xs",children:"选择用户"}),e.jsxs(v,{"code-path":"src/components/deploy/DeployRBAC.tsx:339:15",value:l,onValueChange:he,children:[e.jsx(f,{"code-path":"src/components/deploy/DeployRBAC.tsx:340:17",className:"h-8 text-sm",children:e.jsx(w,{"code-path":"src/components/deploy/DeployRBAC.tsx:340:56",placeholder:"选择用户..."})}),e.jsxs(b,{"code-path":"src/components/deploy/DeployRBAC.tsx:341:17",className:"max-h-60",children:[e.jsx("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:342:19",className:"px-2 py-1.5 sticky top-0 bg-popover z-10",children:e.jsx(h,{"code-path":"src/components/deploy/DeployRBAC.tsx:342:77",placeholder:"搜索用户...",className:"h-7 text-xs"})}),F.map(s=>e.jsxs(r,{"code-path":"src/components/deploy/DeployRBAC.tsx:344:21",value:String(s.id),children:[s.real_name||s.username," (",s.username,")",I.some(t=>t.user_id===s.id)&&e.jsx("span",{"code-path":"src/components/deploy/DeployRBAC.tsx:346:69",className:"ml-2 text-xs text-purple-400",children:"已分配"})]},s.id))]})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:352:13",className:"space-y-1 w-48",children:[e.jsx(i,{"code-path":"src/components/deploy/DeployRBAC.tsx:353:15",className:"text-xs",children:"Item Role"}),e.jsxs(v,{"code-path":"src/components/deploy/DeployRBAC.tsx:354:15",value:j,onValueChange:q,children:[e.jsx(f,{"code-path":"src/components/deploy/DeployRBAC.tsx:355:17",className:"h-8 text-sm",children:e.jsx(w,{"code-path":"src/components/deploy/DeployRBAC.tsx:355:56",placeholder:"选择角色"})}),e.jsx(b,{"code-path":"src/components/deploy/DeployRBAC.tsx:356:17",children:p.filter(s=>s.status===1).map(s=>e.jsxs(r,{"code-path":"src/components/deploy/DeployRBAC.tsx:358:21",value:String(s.id),children:[s.name," (",s.role,")"]},s.id))})]})]}),e.jsxs(a,{"code-path":"src/components/deploy/DeployRBAC.tsx:363:13",className:"h-8",onClick:De,disabled:G||!l||!j,children:[G?e.jsx(M,{"code-path":"src/components/deploy/DeployRBAC.tsx:364:32",className:"w-3.5 h-3.5 mr-1 animate-spin"}):e.jsx(de,{"code-path":"src/components/deploy/DeployRBAC.tsx:364:88",className:"w-3.5 h-3.5 mr-1"}),"分配"]})]}),V&&e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:371:13",children:[e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:372:15",className:"flex items-center gap-2 mb-2",children:[e.jsxs(x,{"code-path":"src/components/deploy/DeployRBAC.tsx:373:17",variant:"secondary",className:"text-xs",children:[e.jsx(we,{"code-path":"src/components/deploy/DeployRBAC.tsx:374:19",className:"w-3 h-3 mr-1"}),V.real_name||V.username]}),e.jsx("span",{"code-path":"src/components/deploy/DeployRBAC.tsx:376:17",className:"text-xs text-[var(--dg-text-muted)]",children:"已分配角色:"})]}),I.length===0?e.jsx("p",{"code-path":"src/components/deploy/DeployRBAC.tsx:379:17",className:"text-xs text-[var(--dg-text-muted)] py-2",children:"该用户尚未分配任何 Item Role"}):e.jsx("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:381:17",className:"space-y-1",children:I.map(s=>{const t=s.item_role||p.find(d=>d.id===s.item_role_id);return e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:385:23",className:"flex items-center justify-between py-1.5 px-2 rounded bg-[var(--dg-bg-tertiary)] text-xs",children:[e.jsxs("div",{"code-path":"src/components/deploy/DeployRBAC.tsx:386:25",className:"flex items-center gap-2",children:[e.jsx(x,{"code-path":"src/components/deploy/DeployRBAC.tsx:387:27",className:`text-xs border ${ce(t?.role||"viewer")}`,children:t?.role==="owner"?"拥有者":t?.role==="editor"?"编辑者":"查看者"}),e.jsx("span",{"code-path":"src/components/deploy/DeployRBAC.tsx:390:27",className:"text-[var(--dg-text-primary)]",children:t?.name||`#${s.item_role_id}`}),t&&e.jsx("code",{"code-path":"src/components/deploy/DeployRBAC.tsx:392:29",className:"font-mono text-[var(--dg-text-muted)] bg-[var(--dg-bg-primary)] px-1 rounded text-xs",children:t.pattern})]}),e.jsx(a,{"code-path":"src/components/deploy/DeployRBAC.tsx:397:25",variant:"ghost",size:"icon",className:"h-6 w-6 text-red-400",onClick:()=>ge(s.id),children:e.jsx(le,{"code-path":"src/components/deploy/DeployRBAC.tsx:398:27",className:"w-3 h-3"})})]},s.id)})})]})]})})]})}export{He as default}; diff --git a/backend/static/assets/DeploymentDetailPage--48QYro1.js b/backend/static/assets/DeploymentDetailPage-w_oqbEN-.js similarity index 82% rename from backend/static/assets/DeploymentDetailPage--48QYro1.js rename to backend/static/assets/DeploymentDetailPage-w_oqbEN-.js index 6dd1532..9a37ee9 100644 --- a/backend/static/assets/DeploymentDetailPage--48QYro1.js +++ b/backend/static/assets/DeploymentDetailPage-w_oqbEN-.js @@ -1,4 +1,4 @@ -import{g as Fe,r as m,v as ot,N as Se,A as Zt,j as e,B as u,I as v,L as xe,a4 as Qt,n as es,H as ts,x as ss,R as bs,o as ys,t as ns,V as os,G as tt,q as jt,E as vt,O as ks,M as vs,a3 as gt,a0 as xt,k as as,aT as gs,T as Mt,a7 as Ds,a5 as cs,W as Nt,i as js}from"./index-DfyorCky.js";import{C as L,a as G,b as ie,c as pe}from"./card-C55cvSHg.js";import{L as C}from"./label-BK0h2apY.js";import{B as se}from"./badge-xNW8x0G1.js";import{k as te}from"./kubernetes-J8O09fK7.js";import{u as Pe}from"./use-toast-CrSOP4cJ.js";import{S as we,f as Ye,e as Ns,b as fs,s as ht,Y as zt,P as Es,a as ws}from"./PodFileBrowser-BySN2XGN.js";import{T as Re,a as Be,b as De,c as X,d as Oe,e as Z}from"./table-5sHV4Akp.js";import{P as ae}from"./plus-CUG-9kpu.js";import{H as Cs}from"./history-D_9jPUQg.js";import{M as ft}from"./minus-UVrx3jLc.js";import{F as Et}from"./file-text-C9G5abwR.js";import{H as rs}from"./hard-drive-BbPmnARR.js";import{E as Dt}from"./external-link-CzIpMNu1.js";import{T as st}from"./textarea-NXY8u32k.js";import{S as Le,a as Ge,b as nt,c as He,d as ve}from"./select-D5qUzdAs.js";import{S as wt}from"./switch-CGiGgOnh.js";import{T as ue}from"./trash-2-Dx32pOzT.js";import{P as ls}from"./play-cdPayOtJ.js";import{S as at}from"./save-DoGGjfwC.js";import{R as ds}from"./rotate-cw-5qcj_h_q.js";import{Z as is}from"./zap-D2uWSK32.js";import{F as Ss}from"./folder-open-IMBifk-r.js";import{D as Ps}from"./disc-EsE6x5Oh.js";import{F as As,a as ut}from"./folder-DoMwqvzv.js";import{R as ct}from"./refresh-cw-DUB_tAG-.js";import{C as Vs}from"./circle-x-DK79Dhg2.js";import{A as Ws}from"./arrow-left-BDgGyrD0.js";import{P as _t}from"./pause-D_famo9P.js";import"./copy-DXW4LnkN.js";import"./sparkles-Bld4NX5y.js";import"./xterm-DSqgeKvr.js";import"./box-TTGA1p57.js";import"./minimize-2-CiCQYRfn.js";import"./upload-Ba6rlaGS.js";import"./download-DoZfYs2h.js";import"./index-CWVNW_qu.js";const Ts=[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]],Rs=Fe("hash",Ts);const Bs=[["path",{d:"M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5",key:"mvr1a0"}]],Os=Fe("heart",Bs);const Is=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]],Ms=Fe("image",Is);const zs=[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]],_s=Fe("key-round",zs);const $s=[["path",{d:"M13.172 2a2 2 0 0 1 1.414.586l6.71 6.71a2.4 2.4 0 0 1 0 3.408l-4.592 4.592a2.4 2.4 0 0 1-3.408 0l-6.71-6.71A2 2 0 0 1 6 9.172V3a1 1 0 0 1 1-1z",key:"16rjxf"}],["path",{d:"M2 7v6.172a2 2 0 0 0 .586 1.414l6.71 6.71a2.4 2.4 0 0 0 3.191.193",key:"178nd4"}],["circle",{cx:"10.5",cy:"6.5",r:".5",fill:"currentColor",key:"12ikhr"}]],$t=Fe("tags",$s);function ps(t){const s=t.conditions||t.pod_conditions||[],o=n=>s.find(d=>(d.type||d.Type)===n),a=n=>n?.lastTransitionTime||n?.LastTransitionTime||n?.last_transition_time;return{scheduled:a(o("PodScheduled")||{}),initialized:a(o("Initialized")||{}),containersReady:a(o("ContainersReady")||{}),ready:a(o("Ready")||{}),startTime:t.start_time||t.startTime}}function Ls(t){const{clusterCode:s,namespace:o,deployment:a,pods:n,revisions:d,onRefresh:i}=t,{toast:p}=Pe(),[D,h]=m.useState("pods"),[N,I]=m.useState(null),[q,V]=m.useState(null),[R,M]=m.useState(a?.replicas||0),[z,F]=m.useState(!1),[B,U]=m.useState([]),[Y,S]=m.useState([]),[Q,O]=m.useState([]),[H,ne]=m.useState(""),[oe,r]=m.useState([]),[b,f]=m.useState([]),P=a?.ready_replicas??a?.readyReplicas??0,l=a?.replicas??0,w=P===l&&l>0;m.useEffect(()=>{D==="services"&&(ne("services"),Promise.all([te.getNamespaceServices(s,o).catch(()=>[]),te.getNamespaceIngresses(s,o).catch(()=>[])]).then(([y,J])=>{const _=A=>Array.isArray(A)?A:A?.list||A?.items||A?.data||[],$=_(y),be=_(J),K=a?.spec?.selector?.matchLabels||a?.spec?.template?.metadata?.labels||{},he=$.filter(A=>{const ce=A.spec?.selector||A.selector||{};return Object.keys(ce).length===0?!1:Object.entries(ce).every(([ge,fe])=>K[ge]===fe)}).map(A=>({name:A.name||A.metadata?.name,type:A.spec?.type||A.type||"ClusterIP",clusterIP:A.spec?.clusterIP||A.cluster_ip||"",ports:(A.spec?.ports||A.ports||[]).map(ce=>`${ce.port}${ce.targetPort?":"+ce.targetPort:""}/${ce.protocol||"TCP"}`),selector:A.spec?.selector||A.selector||{},age:A.age||""})),Ne=new Set(he.map(A=>A.name)),de=be.filter(A=>(A.spec?.rules||A.rules||[]).some(ge=>(ge.http?.paths||ge.paths||[]).some(fe=>{const g=fe.backend?.service?.name||fe.backendService||"";return Ne.has(g)}))).map(A=>({name:A.name||A.metadata?.name,className:A.spec?.ingressClassName||A.ingressClass||"-",hosts:(A.spec?.rules||A.rules||[]).map(ce=>ce.host).filter(Boolean),rules:A.spec?.rules||A.rules||[],age:A.age||""}));U(he),S(de)}).catch(()=>{}).finally(()=>ne("")))},[D,s,o,a]),m.useEffect(()=>{D==="events"&&(ne("events"),te.getEvents(s,o,void 0).then(y=>{const _=(Array.isArray(y)?y:y?.list||y?.items||y?.data||[]).filter($=>{const K=($.involvedObject||$.involved_object||{}).name||"";return K===a?.name||K.startsWith(a?.name+"-")}).map($=>({type:$.type||"Normal",reason:$.reason||"",message:$.message||"",source:$.source?.component||$.sourceComponent||"-",firstTimestamp:$.firstTimestamp||$.first_timestamp||"",lastTimestamp:$.lastTimestamp||$.last_timestamp||"",count:$.count||1}));O(_)}).catch(()=>{}).finally(()=>ne("")))},[D,s,o,a?.name]),m.useEffect(()=>{D==="scale"&&(ne("scale"),Promise.all([te.getHPAs(s,o).catch(()=>[]),Promise.resolve([])]).then(([y])=>{const _=(be=>Array.isArray(be)?be:be?.list||be?.items||be?.data||[])(y),$=a?.name||"";r(_.filter(be=>(be.scaleTargetRef?.name||be.targetRef?.name||"")===$)),f([])}).catch(()=>{}).finally(()=>ne("")))},[D,s,o,a?.name]);const T=async y=>{const J=y.revision??y.revision_number??y.number;if(confirm(`确认回滚到修订版本 #${J}?`)){V(J);try{await te.rollbackDeployment(s,o,a.name,Number(J)),p({title:"回滚已下发",description:`正在回滚到 #${J}`}),i()}catch(_){p({title:"回滚失败",description:_?.message||String(_),variant:"destructive"})}finally{V(null)}}},c=async()=>{F(!0);try{await te.scaleDeployment(s,o,a.name,R),p({title:"伸缩已提交",description:`副本数 → ${R}`}),i()}catch(y){p({title:"伸缩失败",description:y?.message||String(y),variant:"destructive"})}finally{F(!1)}},k=[{key:"pods",label:"容器组",icon:ot,count:n.length},{key:"services",label:"访问方式",icon:Se,count:B.length},{key:"events",label:"事件",icon:Zt,count:Q.length},{key:"scale",label:"容器伸缩",icon:ae},{key:"history",label:"历史版本",icon:Cs,count:d.length}];return e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:225:5",className:"space-y-4",children:[e.jsx(L,{"code-path":"src/components/kubernetes/DeploymentView.tsx:227:7",className:"dg-card",children:e.jsxs(G,{"code-path":"src/components/kubernetes/DeploymentView.tsx:228:9",className:"p-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:229:11",className:"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-3 text-sm",children:[e.jsx(Te,{"code-path":"src/components/kubernetes/DeploymentView.tsx:230:13",label:"状态",value:e.jsx(se,{"code-path":"src/components/kubernetes/DeploymentView.tsx:231:15",style:{background:`${w?we.green:we.orange}22`,color:w?we.green:we.orange,border:`1px solid ${w?we.green:we.orange}44`},children:w?"Running":"Updating"})}),e.jsx(Te,{"code-path":"src/components/kubernetes/DeploymentView.tsx:235:13",label:"副本",value:e.jsxs("span",{"code-path":"src/components/kubernetes/DeploymentView.tsx:235:41",className:"font-mono",children:[P,"/",l]})}),e.jsx(Te,{"code-path":"src/components/kubernetes/DeploymentView.tsx:236:13",label:"策略",value:a?.strategy||"RollingUpdate"}),n[0]&&e.jsxs(e.Fragment,{children:[e.jsx(Te,{"code-path":"src/components/kubernetes/DeploymentView.tsx:239:17",label:"所在节点",value:e.jsx("button",{"code-path":"src/components/kubernetes/DeploymentView.tsx:240:19",className:"text-[var(--dg-blue)] hover:underline",onClick:()=>window.open(`/kubernetes/${s}/nodes/${n[0].node_name||n[0].node}`,"_blank"),children:n[0].node_name||n[0].node||"-"})}),e.jsx(Te,{"code-path":"src/components/kubernetes/DeploymentView.tsx:244:17",label:"容器组 IP",value:e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentView.tsx:244:49",className:"font-mono",children:n[0].ip||n[0].pod_ip||"-"})})]}),e.jsx(Te,{"code-path":"src/components/kubernetes/DeploymentView.tsx:247:13",label:"创建时间",value:Ye(a?.created_at||a?.creationTimestamp)})]}),n[0]&&e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:251:13",className:"mt-3 pt-3 border-t border-[var(--dg-border)]",children:e.jsx(ms,{"code-path":"src/components/kubernetes/DeploymentView.tsx:252:15",pod:n[0]})})]})}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:259:7",className:"flex items-center gap-0.5 border-b border-[var(--dg-border)] overflow-x-auto",children:[k.map(y=>e.jsxs("button",{"code-path":"src/components/kubernetes/DeploymentView.tsx:261:11",className:`flex items-center gap-1.5 px-4 py-2.5 text-sm font-medium border-b-2 transition-colors whitespace-nowrap ${D===y.key?"border-[var(--dg-blue)] text-[var(--dg-blue)]":"border-transparent text-[var(--dg-text-muted)] hover:text-[var(--dg-text-secondary)]"}`,onClick:()=>h(y.key),children:[e.jsx(y.icon,{"code-path":"src/components/kubernetes/DeploymentView.tsx:270:13",className:"h-4 w-4"}),y.label,y.key==="pods"&&e.jsx(se,{"code-path":"src/components/kubernetes/DeploymentView.tsx:272:34",className:"ml-1 text-[10px] px-1.5 py-0 bg-[var(--dg-bg-tertiary)] text-[var(--dg-text-muted)]",children:y.count})]},y.key)),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:276:9",className:"ml-auto flex items-center gap-1 pr-2 shrink-0",children:[e.jsx(u,{"code-path":"src/components/kubernetes/DeploymentView.tsx:277:11",variant:"ghost",size:"icon",className:"h-7 w-7 text-[var(--dg-text-muted)] hover:text-[var(--dg-text-primary)]",disabled:z||R<=0,onClick:()=>M(y=>Math.max(0,y-1)),children:e.jsx(ft,{"code-path":"src/components/kubernetes/DeploymentView.tsx:280:13",className:"h-4 w-4"})}),e.jsx(v,{"code-path":"src/components/kubernetes/DeploymentView.tsx:282:11",type:"number",min:0,value:R,onChange:y=>M(Math.max(0,Number(y.target.value))),className:"w-16 h-7 text-center text-sm font-bold bg-slate-800 border-slate-700 text-slate-200"}),e.jsx(u,{"code-path":"src/components/kubernetes/DeploymentView.tsx:287:11",variant:"ghost",size:"icon",className:"h-7 w-7 text-[var(--dg-text-muted)] hover:text-[var(--dg-text-primary)]",disabled:z,onClick:()=>M(y=>y+1),children:e.jsx(ae,{"code-path":"src/components/kubernetes/DeploymentView.tsx:290:13",className:"h-4 w-4"})}),R!==l&&e.jsx(u,{"code-path":"src/components/kubernetes/DeploymentView.tsx:293:13",size:"sm",className:"h-7 text-xs bg-[var(--dg-blue)] hover:bg-[var(--dg-blue-hover)]",disabled:z,onClick:c,children:z?e.jsx(xe,{"code-path":"src/components/kubernetes/DeploymentView.tsx:295:31",className:"h-3 w-3 animate-spin"}):"应用"})]})]}),D==="pods"&&e.jsx(Gs,{"code-path":"src/components/kubernetes/DeploymentView.tsx:302:26",...t,expandedPod:N,setExpandedPod:I}),D==="services"&&e.jsx(Hs,{"code-path":"src/components/kubernetes/DeploymentView.tsx:303:30",services:B,ingresses:Y,loading:H,namespace:o}),D==="events"&&e.jsx(Fs,{"code-path":"src/components/kubernetes/DeploymentView.tsx:304:28",events:Q,loading:H}),D==="scale"&&e.jsx(Ys,{"code-path":"src/components/kubernetes/DeploymentView.tsx:306:9",hpas:oe,cronHpas:b,loading:H,replicas:l}),D==="history"&&e.jsx(Js,{"code-path":"src/components/kubernetes/DeploymentView.tsx:313:29",revisions:d,rollbackLoading:q,onRollback:T})]})}function Te({label:t,value:s}){return e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:321:5",children:[e.jsx("p",{"code-path":"src/components/kubernetes/DeploymentView.tsx:322:7",className:"text-xs text-[var(--dg-text-muted)] mb-1",children:t}),e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:323:7",className:"text-sm text-[var(--dg-text-primary)]",children:s})]})}function ms({pod:t}){const s=ps(t),o=[{label:"已调度",ts:s.scheduled,color:we.blue},{label:"已初始化",ts:s.initialized,color:we.orange},{label:"容器已就绪",ts:s.containersReady,color:we.green},{label:"容器组已就绪",ts:s.ready,color:we.green}];return e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:338:5",className:"flex items-center gap-2 overflow-x-auto",children:o.map((a,n)=>{const d=o[n-1],i=Ns(d?.ts,a.ts);return e.jsxs(m.Fragment,{"code-path":"src/components/kubernetes/DeploymentView.tsx:343:11",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:344:13",className:"flex flex-col items-center min-w-[80px]",children:[e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:345:15",className:"h-2 w-2 rounded-full",style:{background:a.ts?a.color:"#334155"}}),e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentView.tsx:346:15",className:"text-[10px] mt-1 font-medium",style:{color:a.ts?a.color:"#475569"},children:a.label}),e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentView.tsx:347:15",className:"text-[9px] text-[var(--dg-text-muted)]",children:a.ts?Ye(a.ts):"-"})]}),n{const D=ps(p),h=d===p.name,N=p.node_name||p.node;return e.jsx(L,{"code-path":"src/components/kubernetes/DeploymentView.tsx:374:11",className:"dg-card",children:e.jsxs(G,{"code-path":"src/components/kubernetes/DeploymentView.tsx:375:13",className:"p-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:377:15",className:"flex items-center gap-3",children:[e.jsx(u,{"code-path":"src/components/kubernetes/DeploymentView.tsx:378:17",variant:"ghost",size:"icon",className:"h-6 w-6 text-[var(--dg-text-muted)]",onClick:()=>i(h?null:p.name),children:h?e.jsx(Qt,{"code-path":"src/components/kubernetes/DeploymentView.tsx:379:31",className:"h-4 w-4"}):e.jsx(es,{"code-path":"src/components/kubernetes/DeploymentView.tsx:379:69",className:"h-4 w-4"})}),e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentView.tsx:381:17",className:"font-mono text-sm text-[var(--dg-text-primary)]",children:p.name}),e.jsx(se,{"code-path":"src/components/kubernetes/DeploymentView.tsx:382:17",style:{background:`${ht(p.status)}22`,color:ht(p.status),border:`1px solid ${ht(p.status)}44`},children:p.status||"Unknown"}),e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentView.tsx:385:17",className:"text-xs text-[var(--dg-text-muted)]",children:e.jsx("button",{"code-path":"src/components/kubernetes/DeploymentView.tsx:386:19",className:"text-[var(--dg-blue)] hover:underline mr-2",onClick:()=>window.open(`/kubernetes/${t}/nodes/${N}`,"_blank"),children:N||"-"})}),e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentView.tsx:390:17",className:"text-xs font-mono text-[var(--dg-text-muted)]",children:p.ip||p.pod_ip||"-"}),e.jsxs("span",{"code-path":"src/components/kubernetes/DeploymentView.tsx:391:17",className:"text-xs text-[var(--dg-text-muted)]",children:["重启 ",p.restart_count||0," 次"]}),e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentView.tsx:392:17",className:"text-xs text-[var(--dg-text-muted)]",children:Ye(D.startTime||p.created_at)}),e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:393:17",className:"flex-1"}),e.jsxs(u,{"code-path":"src/components/kubernetes/DeploymentView.tsx:394:17",variant:"ghost",size:"sm",className:"h-7 text-xs text-[var(--dg-blue)]",onClick:()=>o(p),children:[e.jsx(Et,{"code-path":"src/components/kubernetes/DeploymentView.tsx:395:19",className:"h-3.5 w-3.5 mr-1"}),"日志"]}),e.jsxs(u,{"code-path":"src/components/kubernetes/DeploymentView.tsx:397:17",variant:"ghost",size:"sm",className:"h-7 text-xs text-emerald-400",onClick:()=>a(p),children:[e.jsx(ts,{"code-path":"src/components/kubernetes/DeploymentView.tsx:398:19",className:"h-3.5 w-3.5 mr-1"}),"终端"]}),e.jsxs(u,{"code-path":"src/components/kubernetes/DeploymentView.tsx:400:17",variant:"ghost",size:"sm",className:"h-7 text-xs text-amber-400",onClick:()=>n(p),children:[e.jsx(rs,{"code-path":"src/components/kubernetes/DeploymentView.tsx:401:19",className:"h-3.5 w-3.5 mr-1"}),"文件"]})]}),h&&e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:406:17",className:"mt-3 pt-3 border-t border-[var(--dg-border)]",children:[e.jsx(ms,{"code-path":"src/components/kubernetes/DeploymentView.tsx:407:19",pod:p}),p.containers&&p.containers.length>0&&e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:410:21",className:"mt-3 grid grid-cols-1 md:grid-cols-2 gap-2",children:p.containers.map((I,q)=>e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:412:25",className:"p-2 rounded bg-[var(--dg-bg-tertiary)] text-xs",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:413:27",className:"flex items-center justify-between",children:[e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentView.tsx:414:29",className:"font-medium text-[var(--dg-text-primary)]",children:I.name}),e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentView.tsx:415:29",className:I.ready?"text-emerald-400":"text-[var(--dg-text-muted)]",children:I.ready?"Ready":"Pending"})]}),e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:417:27",className:"text-[var(--dg-text-muted)] mt-1",children:I.image}),I.resources&&e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:419:29",className:"mt-1 flex gap-3",children:[e.jsxs("span",{"code-path":"src/components/kubernetes/DeploymentView.tsx:420:31",children:["CPU: ",I.resources?.requests?.cpu||"0","/",I.resources?.limits?.cpu||"-"," m"]}),e.jsxs("span",{"code-path":"src/components/kubernetes/DeploymentView.tsx:421:31",children:["内存: ",I.resources?.requests?.memory||"0","/",I.resources?.limits?.memory||"-"]})]})]},q))})]})]})},p.name)})})}function Hs({services:t,ingresses:s,loading:o}){return o==="services"?e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:441:12",className:"flex items-center justify-center py-12",children:e.jsx(xe,{"code-path":"src/components/kubernetes/DeploymentView.tsx:441:68",className:"h-6 w-6 animate-spin text-[var(--dg-text-muted)]"})}):e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:444:5",className:"space-y-6",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:446:7",children:[e.jsxs("h3",{"code-path":"src/components/kubernetes/DeploymentView.tsx:447:9",className:"text-sm font-semibold text-[var(--dg-text-primary)] mb-3 flex items-center gap-2",children:[e.jsx(Se,{"code-path":"src/components/kubernetes/DeploymentView.tsx:448:11",className:"h-4 w-4 text-[var(--dg-blue)]"}),"关联 Service"]}),t.length===0?e.jsx("p",{"code-path":"src/components/kubernetes/DeploymentView.tsx:451:11",className:"text-sm text-[var(--dg-text-muted)] py-4",children:"暂无匹配的 Service(Deployment 选择器未关联任何 Service)"}):e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:453:11",className:"overflow-x-auto",children:e.jsxs(Re,{"code-path":"src/components/kubernetes/DeploymentView.tsx:454:13",children:[e.jsx(Be,{"code-path":"src/components/kubernetes/DeploymentView.tsx:455:15",children:e.jsxs(De,{"code-path":"src/components/kubernetes/DeploymentView.tsx:456:17",className:"border-[var(--dg-border)]",children:[e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:457:19",className:"text-[var(--dg-text-muted)]",children:"名称"}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:458:19",className:"text-[var(--dg-text-muted)]",children:"类型"}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:459:19",className:"text-[var(--dg-text-muted)]",children:"ClusterIP"}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:460:19",className:"text-[var(--dg-text-muted)]",children:"端口"}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:461:19",className:"text-[var(--dg-text-muted)]",children:"Selector"})]})}),e.jsx(Oe,{"code-path":"src/components/kubernetes/DeploymentView.tsx:464:15",children:t.map(a=>e.jsxs(De,{"code-path":"src/components/kubernetes/DeploymentView.tsx:466:19",className:"border-[var(--dg-border)]",children:[e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:467:21",className:"font-medium text-[var(--dg-text-primary)]",children:a.name}),e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:468:21",children:e.jsx(se,{"code-path":"src/components/kubernetes/DeploymentView.tsx:468:32",variant:"outline",className:"text-xs",children:a.type})}),e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:469:21",className:"font-mono text-sm text-[var(--dg-text-muted)]",children:a.clusterIP}),e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:470:21",className:"text-sm text-[var(--dg-text-muted)]",children:a.ports.join(", ")}),e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:471:21",className:"text-xs text-[var(--dg-text-muted)]",children:Object.entries(a.selector).map(([n,d])=>e.jsxs("code",{"code-path":"src/components/kubernetes/DeploymentView.tsx:473:25",className:"mr-1 bg-[var(--dg-bg-tertiary)] px-1 rounded",children:[n,"=",d]},n))})]},a.name))})]})})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:485:7",children:[e.jsxs("h3",{"code-path":"src/components/kubernetes/DeploymentView.tsx:486:9",className:"text-sm font-semibold text-[var(--dg-text-primary)] mb-3 flex items-center gap-2",children:[e.jsx(Dt,{"code-path":"src/components/kubernetes/DeploymentView.tsx:487:11",className:"h-4 w-4 text-[var(--dg-purple)]"}),"关联 Ingress"]}),s.length===0?e.jsx("p",{"code-path":"src/components/kubernetes/DeploymentView.tsx:490:11",className:"text-sm text-[var(--dg-text-muted)] py-4",children:"暂无匹配的 Ingress"}):e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:492:11",className:"overflow-x-auto",children:e.jsxs(Re,{"code-path":"src/components/kubernetes/DeploymentView.tsx:493:13",children:[e.jsx(Be,{"code-path":"src/components/kubernetes/DeploymentView.tsx:494:15",children:e.jsxs(De,{"code-path":"src/components/kubernetes/DeploymentView.tsx:495:17",className:"border-[var(--dg-border)]",children:[e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:496:19",className:"text-[var(--dg-text-muted)]",children:"名称"}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:497:19",className:"text-[var(--dg-text-muted)]",children:"Class"}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:498:19",className:"text-[var(--dg-text-muted)]",children:"Host"}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:499:19",className:"text-[var(--dg-text-muted)]",children:"路径"})]})}),e.jsx(Oe,{"code-path":"src/components/kubernetes/DeploymentView.tsx:502:15",children:s.map(a=>e.jsxs(De,{"code-path":"src/components/kubernetes/DeploymentView.tsx:504:19",className:"border-[var(--dg-border)]",children:[e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:505:21",className:"font-medium text-[var(--dg-text-primary)]",children:a.name}),e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:506:21",className:"text-sm text-[var(--dg-text-muted)]",children:a.className}),e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:507:21",className:"text-sm text-[var(--dg-text-muted)]",children:a.hosts.join(", ")}),e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:508:21",className:"text-xs text-[var(--dg-text-muted)]",children:a.rules.flatMap(n=>(n.http?.paths||n.paths||[]).map(d=>d.path||"/")).join(", ")})]},a.name))})]})})]})]})}function Fs({events:t,loading:s}){return s==="events"?e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:525:12",className:"flex items-center justify-center py-12",children:e.jsx(xe,{"code-path":"src/components/kubernetes/DeploymentView.tsx:525:68",className:"h-6 w-6 animate-spin text-[var(--dg-text-muted)]"})}):t.length===0?e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:528:12",className:"text-center text-[var(--dg-text-muted)] py-12",children:"暂无事件"}):e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:531:5",className:"overflow-x-auto",children:e.jsxs(Re,{"code-path":"src/components/kubernetes/DeploymentView.tsx:532:7",children:[e.jsx(Be,{"code-path":"src/components/kubernetes/DeploymentView.tsx:533:9",children:e.jsxs(De,{"code-path":"src/components/kubernetes/DeploymentView.tsx:534:11",className:"border-[var(--dg-border)]",children:[e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:535:13",className:"text-[var(--dg-text-muted)] w-16",children:"类型"}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:536:13",className:"text-[var(--dg-text-muted)] w-24",children:"原因"}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:537:13",className:"text-[var(--dg-text-muted)]",children:"消息"}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:538:13",className:"text-[var(--dg-text-muted)] w-20",children:"来源"}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:539:13",className:"text-[var(--dg-text-muted)] w-10",children:"次数"}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:540:13",className:"text-[var(--dg-text-muted)] w-40",children:"最后时间"})]})}),e.jsx(Oe,{"code-path":"src/components/kubernetes/DeploymentView.tsx:543:9",children:t.map((o,a)=>e.jsxs(De,{"code-path":"src/components/kubernetes/DeploymentView.tsx:545:13",className:"border-[var(--dg-border)]",children:[e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:546:15",children:e.jsx(se,{"code-path":"src/components/kubernetes/DeploymentView.tsx:547:17",variant:"outline",className:o.type==="Warning"?"text-[var(--dg-yellow)] border-[var(--dg-yellow)]/30":"text-[var(--dg-text-muted)] border-[var(--dg-border)]",children:o.type})}),e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:551:15",className:"text-sm text-[var(--dg-text-secondary)]",children:o.reason}),e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:552:15",className:"text-sm text-[var(--dg-text-primary)] max-w-md truncate",title:o.message,children:o.message}),e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:553:15",className:"text-xs text-[var(--dg-text-muted)]",children:o.source}),e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:554:15",className:"text-sm text-[var(--dg-text-muted)]",children:o.count}),e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:555:15",className:"text-xs text-[var(--dg-text-muted)]",children:Ye(o.lastTimestamp)})]},a))})]})})}function Ys({hpas:t,cronHpas:s,loading:o,replicas:a}){return o==="scale"?e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:567:12",className:"flex items-center justify-center py-12",children:e.jsx(xe,{"code-path":"src/components/kubernetes/DeploymentView.tsx:567:68",className:"h-6 w-6 animate-spin text-[var(--dg-text-muted)]"})}):e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:571:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:573:7",className:"flex items-center gap-2 px-2",children:[e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentView.tsx:574:9",className:"text-sm text-[var(--dg-text-muted)]",children:"当前副本:"}),e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentView.tsx:575:9",className:"text-sm font-bold text-[var(--dg-text-primary)]",children:a}),e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentView.tsx:576:9",className:"text-xs text-[var(--dg-text-muted)]",children:"(可通过 Tab 栏右侧 +/- 手动调整)"})]}),e.jsxs(L,{"code-path":"src/components/kubernetes/DeploymentView.tsx:580:7",className:"dg-card",children:[e.jsx(ie,{"code-path":"src/components/kubernetes/DeploymentView.tsx:581:9",className:"pb-2",children:e.jsxs(pe,{"code-path":"src/components/kubernetes/DeploymentView.tsx:581:38",className:"text-sm flex items-center gap-2",children:[e.jsx(Zt,{"code-path":"src/components/kubernetes/DeploymentView.tsx:581:93",className:"h-4 w-4 text-[var(--dg-orange)]"}),"HPA — 水平自动伸缩"]})}),e.jsx(G,{"code-path":"src/components/kubernetes/DeploymentView.tsx:582:9",children:t.length===0?e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:584:13",className:"text-sm text-[var(--dg-text-muted)] py-4",children:["未关联 HPA — ",e.jsx(u,{"code-path":"src/components/kubernetes/DeploymentView.tsx:585:25",variant:"link",className:"h-auto p-0 text-[var(--dg-blue)] text-sm",children:"创建 HPA"})]}):e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:588:13",className:"overflow-x-auto",children:e.jsxs(Re,{"code-path":"src/components/kubernetes/DeploymentView.tsx:589:15",children:[e.jsx(Be,{"code-path":"src/components/kubernetes/DeploymentView.tsx:590:17",children:e.jsxs(De,{"code-path":"src/components/kubernetes/DeploymentView.tsx:591:19",className:"border-[var(--dg-border)]",children:[e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:592:21",className:"text-[var(--dg-text-muted)]",children:"名称"}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:593:21",className:"text-[var(--dg-text-muted)]",children:"最小/最大"}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:594:21",className:"text-[var(--dg-text-muted)]",children:"指标"}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:595:21",className:"text-[var(--dg-text-muted)]",children:"当前负载"}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:596:21",className:"text-[var(--dg-text-muted)]",children:"状态"})]})}),e.jsx(Oe,{"code-path":"src/components/kubernetes/DeploymentView.tsx:599:17",children:t.map((n,d)=>{const i=n.spec?.minReplicas??n.minReplicas??1,p=n.spec?.maxReplicas??n.maxReplicas??10,D=n.spec?.metrics||n.metrics||[],h=n.status?.currentReplicas??n.currentReplicas??0,q=(n.status?.conditions||n.conditions||[]).find(V=>V.type==="AbleToScale")?.status==="True";return e.jsxs(De,{"code-path":"src/components/kubernetes/DeploymentView.tsx:609:23",className:"border-[var(--dg-border)]",children:[e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:610:25",className:"font-medium text-[var(--dg-text-primary)]",children:n.name||n.metadata?.name}),e.jsxs(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:611:25",className:"text-sm text-[var(--dg-text-secondary)] font-mono",children:[i," → ",p]}),e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:612:25",className:"text-xs text-[var(--dg-text-muted)]",children:D.map((V,R)=>{const M=V.resource||V.object?.metric?.name||"",z=V.resource?.target?.averageUtilization||V.resource?.target?.averageValue||V.resource?.target?.type||"-";return e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:616:36",children:[M?.name||M,": ",z,V.resource?.target?.averageUtilization?"%":""]},R)})}),e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:619:25",className:"text-sm font-mono text-[var(--dg-text-secondary)]",children:h}),e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:620:25",children:e.jsx(se,{"code-path":"src/components/kubernetes/DeploymentView.tsx:621:27",className:q?"bg-[var(--dg-green)]/20 text-[var(--dg-green)]":"bg-[var(--dg-red)]/20 text-[var(--dg-red)]",children:q?"正常":"异常"})})]},n.name||d)})})]})})})]}),e.jsxs(L,{"code-path":"src/components/kubernetes/DeploymentView.tsx:636:7",className:"dg-card",children:[e.jsx(ie,{"code-path":"src/components/kubernetes/DeploymentView.tsx:637:9",className:"pb-2",children:e.jsxs(pe,{"code-path":"src/components/kubernetes/DeploymentView.tsx:637:38",className:"text-sm flex items-center gap-2",children:[e.jsx(ss,{"code-path":"src/components/kubernetes/DeploymentView.tsx:637:93",className:"h-4 w-4 text-[var(--dg-blue)]"}),"CronHPA — 定时伸缩"]})}),e.jsx(G,{"code-path":"src/components/kubernetes/DeploymentView.tsx:638:9",children:s.length===0?e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:640:13",className:"text-sm text-[var(--dg-text-muted)] py-4",children:["未关联 CronHPA — ",e.jsx(u,{"code-path":"src/components/kubernetes/DeploymentView.tsx:641:29",variant:"link",className:"h-auto p-0 text-[var(--dg-blue)] text-sm",children:"创建 CronHPA"})]}):e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:644:13",className:"overflow-x-auto",children:e.jsxs(Re,{"code-path":"src/components/kubernetes/DeploymentView.tsx:645:15",children:[e.jsx(Be,{"code-path":"src/components/kubernetes/DeploymentView.tsx:646:17",children:e.jsxs(De,{"code-path":"src/components/kubernetes/DeploymentView.tsx:647:19",className:"border-[var(--dg-border)]",children:[e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:648:21",className:"text-[var(--dg-text-muted)]",children:"名称"}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:649:21",className:"text-[var(--dg-text-muted)]",children:"目标副本"}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:650:21",className:"text-[var(--dg-text-muted)]",children:"调度规则"}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:651:21",className:"text-[var(--dg-text-muted)]",children:"时区"}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:652:21",className:"text-[var(--dg-text-muted)]",children:"状态"})]})}),e.jsx(Oe,{"code-path":"src/components/kubernetes/DeploymentView.tsx:655:17",children:s.map((n,d)=>{const i=n.spec?.jobs||n.jobs||[],p=n.spec?.timezone||"UTC";return e.jsxs(De,{"code-path":"src/components/kubernetes/DeploymentView.tsx:660:23",className:"border-[var(--dg-border)]",children:[e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:661:25",className:"font-medium text-[var(--dg-text-primary)]",children:n.name||n.metadata?.name}),e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:662:25",className:"text-sm text-[var(--dg-text-secondary)]",children:i.map(D=>D.targetSize||D.targetReplicas||"?").join(", ")}),e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:665:25",className:"text-xs font-mono text-[var(--dg-text-muted)]",children:i.map(D=>D.schedule||"?").join(", ")}),e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:666:25",className:"text-xs text-[var(--dg-text-muted)]",children:p}),e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:667:25",children:e.jsx(se,{"code-path":"src/components/kubernetes/DeploymentView.tsx:668:27",className:"bg-[var(--dg-green)]/20 text-[var(--dg-green)]",children:"已启用"})})]},n.name||d)})})]})})})]})]})}function Js({revisions:t,rollbackLoading:s,onRollback:o}){return t.length===0?e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:686:12",className:"text-center text-[var(--dg-text-muted)] py-12",children:"暂无历史版本"}):e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:689:5",className:"overflow-x-auto",children:e.jsxs(Re,{"code-path":"src/components/kubernetes/DeploymentView.tsx:690:7",children:[e.jsx(Be,{"code-path":"src/components/kubernetes/DeploymentView.tsx:691:9",children:e.jsxs(De,{"code-path":"src/components/kubernetes/DeploymentView.tsx:692:11",className:"border-[var(--dg-border)]",children:[e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:693:13",className:"text-[var(--dg-text-muted)] w-24",children:"Revision"}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:694:13",className:"text-[var(--dg-text-muted)]",children:"镜像"}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:695:13",className:"text-[var(--dg-text-muted)] w-24",children:"状态"}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:696:13",className:"text-[var(--dg-text-muted)] w-40",children:"更新时间"}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:697:13",className:"text-[var(--dg-text-muted)] w-24",children:"操作"})]})}),e.jsx(Oe,{"code-path":"src/components/kubernetes/DeploymentView.tsx:700:9",children:t.map((a,n)=>{const d=a.revision??a.revision_number??a.number??n+1,i=n===0;return e.jsxs(De,{"code-path":"src/components/kubernetes/DeploymentView.tsx:705:15",className:"border-[var(--dg-border)]",children:[e.jsxs(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:706:17",className:"font-mono text-[var(--dg-text-primary)]",children:["#",d]}),e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:707:17",className:"text-xs font-mono text-[var(--dg-text-muted)] max-w-[300px] truncate",children:a.image||a.images?.[0]||"-"}),e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:708:17",children:i?e.jsx(se,{"code-path":"src/components/kubernetes/DeploymentView.tsx:710:23",className:"bg-[var(--dg-green)]/20 text-[var(--dg-green)] border-[var(--dg-green)]/30",children:"当前"}):e.jsx(se,{"code-path":"src/components/kubernetes/DeploymentView.tsx:711:23",variant:"outline",className:"text-[var(--dg-text-muted)]",children:"历史"})}),e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:713:17",className:"text-xs text-[var(--dg-text-muted)]",children:Ye(a.created_at||a.time)}),e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:714:17",children:e.jsxs(u,{"code-path":"src/components/kubernetes/DeploymentView.tsx:715:19",variant:"ghost",size:"sm",className:"h-7 text-amber-400",disabled:i||s!==null,onClick:()=>o(a),children:[s===d?e.jsx(xe,{"code-path":"src/components/kubernetes/DeploymentView.tsx:716:53",className:"h-3 w-3 animate-spin mr-1"}):e.jsx(bs,{"code-path":"src/components/kubernetes/DeploymentView.tsx:716:105",className:"h-3 w-3 mr-1"}),"回滚"]})})]},d)})})]})})}function Lt(t){const s=n=>{if(!n)return null;let d="none";return n.httpGet?d="httpGet":n.tcpSocket?d="tcpSocket":n.exec&&(d="exec"),{type:d,httpPath:n.httpGet?.path||"",httpPort:n.httpGet?.port??"",httpHost:n.httpGet?.host||"",tcpPort:n.tcpSocket?.port??"",execCommand:Array.isArray(n.exec?.command)?n.exec.command.join(` +import{i as Fe,r as m,v as ot,N as Se,A as Zt,j as e,B as u,L as xe,V as Qt,o as es,E as ts,C as ss,R as bs,p as ys,t as ns,_ as os,z as tt,S as jt,y as vt,G as ks,M as vs,P as gt,Q as xt,m as as,aU as gs,T as Mt,al as Ds,X as cs,$ as Nt,k as js}from"./index-Dmami9WE.js";import{C as L,a as G,b as ie,c as pe}from"./card-CIfC-8Rh.js";import{I as v}from"./input-NsU9nXZF.js";import{L as C}from"./label-Ap_-SPYI.js";import{B as se}from"./badge-3UzCvU7L.js";import{k as te}from"./kubernetes-D2-GnE0t.js";import{u as Pe}from"./use-toast-jvSbBx20.js";import{S as we,f as Ye,e as Ns,b as fs,s as ht,Y as zt,P as Es,a as ws}from"./PodFileBrowser-BLvOIIeH.js";import{T as Re,a as Be,b as De,c as X,d as Oe,e as Z}from"./table-CG4mjNfb.js";import{P as ae}from"./plus-O65gX7Qz.js";import{H as Cs}from"./history-CbX6uocL.js";import{M as ft}from"./minus-DRP_TSA-.js";import{F as Et}from"./file-text-CebshSV-.js";import{H as rs}from"./hard-drive-DmC04Y5r.js";import{E as Dt}from"./external-link-2hCYo_Ng.js";import{T as st}from"./textarea-DHUZ6N85.js";import{S as Le,a as Ge,b as nt,c as He,d as ve}from"./select-DUbxjT0z.js";import{S as wt}from"./switch-TqjD2x0W.js";import{T as ue}from"./trash-2-DWVnIU6o.js";import{P as ls}from"./play-0EwQQJX_.js";import{S as at}from"./save-YtnrpTd8.js";import{R as ds}from"./rotate-cw-CKCO6IKE.js";import{Z as is}from"./zap-CocSkPPl.js";import{F as Ss}from"./folder-open-CjMh_m_2.js";import{D as Ps}from"./disc-BPxL4arn.js";import{F as As,a as ut}from"./folder-B5RGB3GG.js";import{R as ct}from"./refresh-cw-CTBERyFc.js";import{C as Vs}from"./circle-x-BBQeW1R3.js";import{A as Ws}from"./arrow-left-BIbk9wFC.js";import{P as _t}from"./pause-DOhduDQ5.js";import"./copy-CE_T92Lk.js";import"./sparkles-rPZivnlW.js";import"./xterm-DSqgeKvr.js";import"./box-88Ol5qY-.js";import"./minimize-2-BHcbNmdK.js";import"./upload-CRLg7Pbj.js";import"./download-Vuij9wGr.js";import"./index-CtCQcvyh.js";import"./chevron-up-Cq4GPopa.js";const Ts=[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]],Rs=Fe("hash",Ts);const Bs=[["path",{d:"M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5",key:"mvr1a0"}]],Os=Fe("heart",Bs);const Is=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]],Ms=Fe("image",Is);const zs=[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]],_s=Fe("key-round",zs);const $s=[["path",{d:"M13.172 2a2 2 0 0 1 1.414.586l6.71 6.71a2.4 2.4 0 0 1 0 3.408l-4.592 4.592a2.4 2.4 0 0 1-3.408 0l-6.71-6.71A2 2 0 0 1 6 9.172V3a1 1 0 0 1 1-1z",key:"16rjxf"}],["path",{d:"M2 7v6.172a2 2 0 0 0 .586 1.414l6.71 6.71a2.4 2.4 0 0 0 3.191.193",key:"178nd4"}],["circle",{cx:"10.5",cy:"6.5",r:".5",fill:"currentColor",key:"12ikhr"}]],$t=Fe("tags",$s);function ps(t){const s=t.conditions||t.pod_conditions||[],o=n=>s.find(d=>(d.type||d.Type)===n),a=n=>n?.lastTransitionTime||n?.LastTransitionTime||n?.last_transition_time;return{scheduled:a(o("PodScheduled")||{}),initialized:a(o("Initialized")||{}),containersReady:a(o("ContainersReady")||{}),ready:a(o("Ready")||{}),startTime:t.start_time||t.startTime}}function Ls(t){const{clusterCode:s,namespace:o,deployment:a,pods:n,revisions:d,onRefresh:i}=t,{toast:p}=Pe(),[D,h]=m.useState("pods"),[N,I]=m.useState(null),[q,V]=m.useState(null),[R,M]=m.useState(a?.replicas||0),[z,F]=m.useState(!1),[B,U]=m.useState([]),[Y,S]=m.useState([]),[Q,O]=m.useState([]),[H,ne]=m.useState(""),[oe,r]=m.useState([]),[b,f]=m.useState([]),P=a?.ready_replicas??a?.readyReplicas??0,l=a?.replicas??0,w=P===l&&l>0;m.useEffect(()=>{D==="services"&&(ne("services"),Promise.all([te.getNamespaceServices(s,o).catch(()=>[]),te.getNamespaceIngresses(s,o).catch(()=>[])]).then(([y,J])=>{const _=A=>Array.isArray(A)?A:A?.list||A?.items||A?.data||[],$=_(y),be=_(J),K=a?.spec?.selector?.matchLabels||a?.spec?.template?.metadata?.labels||{},he=$.filter(A=>{const ce=A.spec?.selector||A.selector||{};return Object.keys(ce).length===0?!1:Object.entries(ce).every(([ge,fe])=>K[ge]===fe)}).map(A=>({name:A.name||A.metadata?.name,type:A.spec?.type||A.type||"ClusterIP",clusterIP:A.spec?.clusterIP||A.cluster_ip||"",ports:(A.spec?.ports||A.ports||[]).map(ce=>`${ce.port}${ce.targetPort?":"+ce.targetPort:""}/${ce.protocol||"TCP"}`),selector:A.spec?.selector||A.selector||{},age:A.age||""})),Ne=new Set(he.map(A=>A.name)),de=be.filter(A=>(A.spec?.rules||A.rules||[]).some(ge=>(ge.http?.paths||ge.paths||[]).some(fe=>{const g=fe.backend?.service?.name||fe.backendService||"";return Ne.has(g)}))).map(A=>({name:A.name||A.metadata?.name,className:A.spec?.ingressClassName||A.ingressClass||"-",hosts:(A.spec?.rules||A.rules||[]).map(ce=>ce.host).filter(Boolean),rules:A.spec?.rules||A.rules||[],age:A.age||""}));U(he),S(de)}).catch(()=>{}).finally(()=>ne("")))},[D,s,o,a]),m.useEffect(()=>{D==="events"&&(ne("events"),te.getEvents(s,o,void 0).then(y=>{const _=(Array.isArray(y)?y:y?.list||y?.items||y?.data||[]).filter($=>{const K=($.involvedObject||$.involved_object||{}).name||"";return K===a?.name||K.startsWith(a?.name+"-")}).map($=>({type:$.type||"Normal",reason:$.reason||"",message:$.message||"",source:$.source?.component||$.sourceComponent||"-",firstTimestamp:$.firstTimestamp||$.first_timestamp||"",lastTimestamp:$.lastTimestamp||$.last_timestamp||"",count:$.count||1}));O(_)}).catch(()=>{}).finally(()=>ne("")))},[D,s,o,a?.name]),m.useEffect(()=>{D==="scale"&&(ne("scale"),Promise.all([te.getHPAs(s,o).catch(()=>[]),Promise.resolve([])]).then(([y])=>{const _=(be=>Array.isArray(be)?be:be?.list||be?.items||be?.data||[])(y),$=a?.name||"";r(_.filter(be=>(be.scaleTargetRef?.name||be.targetRef?.name||"")===$)),f([])}).catch(()=>{}).finally(()=>ne("")))},[D,s,o,a?.name]);const T=async y=>{const J=y.revision??y.revision_number??y.number;if(confirm(`确认回滚到修订版本 #${J}?`)){V(J);try{await te.rollbackDeployment(s,o,a.name,Number(J)),p({title:"回滚已下发",description:`正在回滚到 #${J}`}),i()}catch(_){p({title:"回滚失败",description:_?.message||String(_),variant:"destructive"})}finally{V(null)}}},c=async()=>{F(!0);try{await te.scaleDeployment(s,o,a.name,R),p({title:"伸缩已提交",description:`副本数 → ${R}`}),i()}catch(y){p({title:"伸缩失败",description:y?.message||String(y),variant:"destructive"})}finally{F(!1)}},k=[{key:"pods",label:"容器组",icon:ot,count:n.length},{key:"services",label:"访问方式",icon:Se,count:B.length},{key:"events",label:"事件",icon:Zt,count:Q.length},{key:"scale",label:"容器伸缩",icon:ae},{key:"history",label:"历史版本",icon:Cs,count:d.length}];return e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:225:5",className:"space-y-4",children:[e.jsx(L,{"code-path":"src/components/kubernetes/DeploymentView.tsx:227:7",className:"dg-card",children:e.jsxs(G,{"code-path":"src/components/kubernetes/DeploymentView.tsx:228:9",className:"p-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:229:11",className:"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-3 text-sm",children:[e.jsx(Te,{"code-path":"src/components/kubernetes/DeploymentView.tsx:230:13",label:"状态",value:e.jsx(se,{"code-path":"src/components/kubernetes/DeploymentView.tsx:231:15",style:{background:`${w?we.green:we.orange}22`,color:w?we.green:we.orange,border:`1px solid ${w?we.green:we.orange}44`},children:w?"Running":"Updating"})}),e.jsx(Te,{"code-path":"src/components/kubernetes/DeploymentView.tsx:235:13",label:"副本",value:e.jsxs("span",{"code-path":"src/components/kubernetes/DeploymentView.tsx:235:41",className:"font-mono",children:[P,"/",l]})}),e.jsx(Te,{"code-path":"src/components/kubernetes/DeploymentView.tsx:236:13",label:"策略",value:a?.strategy||"RollingUpdate"}),n[0]&&e.jsxs(e.Fragment,{children:[e.jsx(Te,{"code-path":"src/components/kubernetes/DeploymentView.tsx:239:17",label:"所在节点",value:e.jsx("button",{"code-path":"src/components/kubernetes/DeploymentView.tsx:240:19",className:"text-[var(--dg-blue)] hover:underline",onClick:()=>window.open(`/kubernetes/${s}/nodes/${n[0].node_name||n[0].node}`,"_blank"),children:n[0].node_name||n[0].node||"-"})}),e.jsx(Te,{"code-path":"src/components/kubernetes/DeploymentView.tsx:244:17",label:"容器组 IP",value:e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentView.tsx:244:49",className:"font-mono",children:n[0].ip||n[0].pod_ip||"-"})})]}),e.jsx(Te,{"code-path":"src/components/kubernetes/DeploymentView.tsx:247:13",label:"创建时间",value:Ye(a?.created_at||a?.creationTimestamp)})]}),n[0]&&e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:251:13",className:"mt-3 pt-3 border-t border-[var(--dg-border)]",children:e.jsx(ms,{"code-path":"src/components/kubernetes/DeploymentView.tsx:252:15",pod:n[0]})})]})}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:259:7",className:"flex items-center gap-0.5 border-b border-[var(--dg-border)] overflow-x-auto",children:[k.map(y=>e.jsxs("button",{"code-path":"src/components/kubernetes/DeploymentView.tsx:261:11",className:`flex items-center gap-1.5 px-4 py-2.5 text-sm font-medium border-b-2 transition-colors whitespace-nowrap ${D===y.key?"border-[var(--dg-blue)] text-[var(--dg-blue)]":"border-transparent text-[var(--dg-text-muted)] hover:text-[var(--dg-text-secondary)]"}`,onClick:()=>h(y.key),children:[e.jsx(y.icon,{"code-path":"src/components/kubernetes/DeploymentView.tsx:270:13",className:"h-4 w-4"}),y.label,y.key==="pods"&&e.jsx(se,{"code-path":"src/components/kubernetes/DeploymentView.tsx:272:34",className:"ml-1 text-[10px] px-1.5 py-0 bg-[var(--dg-bg-tertiary)] text-[var(--dg-text-muted)]",children:y.count})]},y.key)),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:276:9",className:"ml-auto flex items-center gap-1 pr-2 shrink-0",children:[e.jsx(u,{"code-path":"src/components/kubernetes/DeploymentView.tsx:277:11",variant:"ghost",size:"icon",className:"h-7 w-7 text-[var(--dg-text-muted)] hover:text-[var(--dg-text-primary)]",disabled:z||R<=0,onClick:()=>M(y=>Math.max(0,y-1)),children:e.jsx(ft,{"code-path":"src/components/kubernetes/DeploymentView.tsx:280:13",className:"h-4 w-4"})}),e.jsx(v,{"code-path":"src/components/kubernetes/DeploymentView.tsx:282:11",type:"number",min:0,value:R,onChange:y=>M(Math.max(0,Number(y.target.value))),className:"w-16 h-7 text-center text-sm font-bold bg-slate-800 border-slate-700 text-slate-200"}),e.jsx(u,{"code-path":"src/components/kubernetes/DeploymentView.tsx:287:11",variant:"ghost",size:"icon",className:"h-7 w-7 text-[var(--dg-text-muted)] hover:text-[var(--dg-text-primary)]",disabled:z,onClick:()=>M(y=>y+1),children:e.jsx(ae,{"code-path":"src/components/kubernetes/DeploymentView.tsx:290:13",className:"h-4 w-4"})}),R!==l&&e.jsx(u,{"code-path":"src/components/kubernetes/DeploymentView.tsx:293:13",size:"sm",className:"h-7 text-xs bg-[var(--dg-blue)] hover:bg-[var(--dg-blue-hover)]",disabled:z,onClick:c,children:z?e.jsx(xe,{"code-path":"src/components/kubernetes/DeploymentView.tsx:295:31",className:"h-3 w-3 animate-spin"}):"应用"})]})]}),D==="pods"&&e.jsx(Gs,{"code-path":"src/components/kubernetes/DeploymentView.tsx:302:26",...t,expandedPod:N,setExpandedPod:I}),D==="services"&&e.jsx(Hs,{"code-path":"src/components/kubernetes/DeploymentView.tsx:303:30",services:B,ingresses:Y,loading:H,namespace:o}),D==="events"&&e.jsx(Fs,{"code-path":"src/components/kubernetes/DeploymentView.tsx:304:28",events:Q,loading:H}),D==="scale"&&e.jsx(Ys,{"code-path":"src/components/kubernetes/DeploymentView.tsx:306:9",hpas:oe,cronHpas:b,loading:H,replicas:l}),D==="history"&&e.jsx(Js,{"code-path":"src/components/kubernetes/DeploymentView.tsx:313:29",revisions:d,rollbackLoading:q,onRollback:T})]})}function Te({label:t,value:s}){return e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:321:5",children:[e.jsx("p",{"code-path":"src/components/kubernetes/DeploymentView.tsx:322:7",className:"text-xs text-[var(--dg-text-muted)] mb-1",children:t}),e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:323:7",className:"text-sm text-[var(--dg-text-primary)]",children:s})]})}function ms({pod:t}){const s=ps(t),o=[{label:"已调度",ts:s.scheduled,color:we.blue},{label:"已初始化",ts:s.initialized,color:we.orange},{label:"容器已就绪",ts:s.containersReady,color:we.green},{label:"容器组已就绪",ts:s.ready,color:we.green}];return e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:338:5",className:"flex items-center gap-2 overflow-x-auto",children:o.map((a,n)=>{const d=o[n-1],i=Ns(d?.ts,a.ts);return e.jsxs(m.Fragment,{"code-path":"src/components/kubernetes/DeploymentView.tsx:343:11",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:344:13",className:"flex flex-col items-center min-w-[80px]",children:[e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:345:15",className:"h-2 w-2 rounded-full",style:{background:a.ts?a.color:"#334155"}}),e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentView.tsx:346:15",className:"text-[10px] mt-1 font-medium",style:{color:a.ts?a.color:"#475569"},children:a.label}),e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentView.tsx:347:15",className:"text-[9px] text-[var(--dg-text-muted)]",children:a.ts?Ye(a.ts):"-"})]}),n{const D=ps(p),h=d===p.name,N=p.node_name||p.node;return e.jsx(L,{"code-path":"src/components/kubernetes/DeploymentView.tsx:374:11",className:"dg-card",children:e.jsxs(G,{"code-path":"src/components/kubernetes/DeploymentView.tsx:375:13",className:"p-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:377:15",className:"flex items-center gap-3",children:[e.jsx(u,{"code-path":"src/components/kubernetes/DeploymentView.tsx:378:17",variant:"ghost",size:"icon",className:"h-6 w-6 text-[var(--dg-text-muted)]",onClick:()=>i(h?null:p.name),children:h?e.jsx(Qt,{"code-path":"src/components/kubernetes/DeploymentView.tsx:379:31",className:"h-4 w-4"}):e.jsx(es,{"code-path":"src/components/kubernetes/DeploymentView.tsx:379:69",className:"h-4 w-4"})}),e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentView.tsx:381:17",className:"font-mono text-sm text-[var(--dg-text-primary)]",children:p.name}),e.jsx(se,{"code-path":"src/components/kubernetes/DeploymentView.tsx:382:17",style:{background:`${ht(p.status)}22`,color:ht(p.status),border:`1px solid ${ht(p.status)}44`},children:p.status||"Unknown"}),e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentView.tsx:385:17",className:"text-xs text-[var(--dg-text-muted)]",children:e.jsx("button",{"code-path":"src/components/kubernetes/DeploymentView.tsx:386:19",className:"text-[var(--dg-blue)] hover:underline mr-2",onClick:()=>window.open(`/kubernetes/${t}/nodes/${N}`,"_blank"),children:N||"-"})}),e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentView.tsx:390:17",className:"text-xs font-mono text-[var(--dg-text-muted)]",children:p.ip||p.pod_ip||"-"}),e.jsxs("span",{"code-path":"src/components/kubernetes/DeploymentView.tsx:391:17",className:"text-xs text-[var(--dg-text-muted)]",children:["重启 ",p.restart_count||0," 次"]}),e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentView.tsx:392:17",className:"text-xs text-[var(--dg-text-muted)]",children:Ye(D.startTime||p.created_at)}),e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:393:17",className:"flex-1"}),e.jsxs(u,{"code-path":"src/components/kubernetes/DeploymentView.tsx:394:17",variant:"ghost",size:"sm",className:"h-7 text-xs text-[var(--dg-blue)]",onClick:()=>o(p),children:[e.jsx(Et,{"code-path":"src/components/kubernetes/DeploymentView.tsx:395:19",className:"h-3.5 w-3.5 mr-1"}),"日志"]}),e.jsxs(u,{"code-path":"src/components/kubernetes/DeploymentView.tsx:397:17",variant:"ghost",size:"sm",className:"h-7 text-xs text-emerald-400",onClick:()=>a(p),children:[e.jsx(ts,{"code-path":"src/components/kubernetes/DeploymentView.tsx:398:19",className:"h-3.5 w-3.5 mr-1"}),"终端"]}),e.jsxs(u,{"code-path":"src/components/kubernetes/DeploymentView.tsx:400:17",variant:"ghost",size:"sm",className:"h-7 text-xs text-amber-400",onClick:()=>n(p),children:[e.jsx(rs,{"code-path":"src/components/kubernetes/DeploymentView.tsx:401:19",className:"h-3.5 w-3.5 mr-1"}),"文件"]})]}),h&&e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:406:17",className:"mt-3 pt-3 border-t border-[var(--dg-border)]",children:[e.jsx(ms,{"code-path":"src/components/kubernetes/DeploymentView.tsx:407:19",pod:p}),p.containers&&p.containers.length>0&&e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:410:21",className:"mt-3 grid grid-cols-1 md:grid-cols-2 gap-2",children:p.containers.map((I,q)=>e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:412:25",className:"p-2 rounded bg-[var(--dg-bg-tertiary)] text-xs",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:413:27",className:"flex items-center justify-between",children:[e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentView.tsx:414:29",className:"font-medium text-[var(--dg-text-primary)]",children:I.name}),e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentView.tsx:415:29",className:I.ready?"text-emerald-400":"text-[var(--dg-text-muted)]",children:I.ready?"Ready":"Pending"})]}),e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:417:27",className:"text-[var(--dg-text-muted)] mt-1",children:I.image}),I.resources&&e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:419:29",className:"mt-1 flex gap-3",children:[e.jsxs("span",{"code-path":"src/components/kubernetes/DeploymentView.tsx:420:31",children:["CPU: ",I.resources?.requests?.cpu||"0","/",I.resources?.limits?.cpu||"-"," m"]}),e.jsxs("span",{"code-path":"src/components/kubernetes/DeploymentView.tsx:421:31",children:["内存: ",I.resources?.requests?.memory||"0","/",I.resources?.limits?.memory||"-"]})]})]},q))})]})]})},p.name)})})}function Hs({services:t,ingresses:s,loading:o}){return o==="services"?e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:441:12",className:"flex items-center justify-center py-12",children:e.jsx(xe,{"code-path":"src/components/kubernetes/DeploymentView.tsx:441:68",className:"h-6 w-6 animate-spin text-[var(--dg-text-muted)]"})}):e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:444:5",className:"space-y-6",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:446:7",children:[e.jsxs("h3",{"code-path":"src/components/kubernetes/DeploymentView.tsx:447:9",className:"text-sm font-semibold text-[var(--dg-text-primary)] mb-3 flex items-center gap-2",children:[e.jsx(Se,{"code-path":"src/components/kubernetes/DeploymentView.tsx:448:11",className:"h-4 w-4 text-[var(--dg-blue)]"}),"关联 Service"]}),t.length===0?e.jsx("p",{"code-path":"src/components/kubernetes/DeploymentView.tsx:451:11",className:"text-sm text-[var(--dg-text-muted)] py-4",children:"暂无匹配的 Service(Deployment 选择器未关联任何 Service)"}):e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:453:11",className:"overflow-x-auto",children:e.jsxs(Re,{"code-path":"src/components/kubernetes/DeploymentView.tsx:454:13",children:[e.jsx(Be,{"code-path":"src/components/kubernetes/DeploymentView.tsx:455:15",children:e.jsxs(De,{"code-path":"src/components/kubernetes/DeploymentView.tsx:456:17",className:"border-[var(--dg-border)]",children:[e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:457:19",className:"text-[var(--dg-text-muted)]",children:"名称"}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:458:19",className:"text-[var(--dg-text-muted)]",children:"类型"}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:459:19",className:"text-[var(--dg-text-muted)]",children:"ClusterIP"}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:460:19",className:"text-[var(--dg-text-muted)]",children:"端口"}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:461:19",className:"text-[var(--dg-text-muted)]",children:"Selector"})]})}),e.jsx(Oe,{"code-path":"src/components/kubernetes/DeploymentView.tsx:464:15",children:t.map(a=>e.jsxs(De,{"code-path":"src/components/kubernetes/DeploymentView.tsx:466:19",className:"border-[var(--dg-border)]",children:[e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:467:21",className:"font-medium text-[var(--dg-text-primary)]",children:a.name}),e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:468:21",children:e.jsx(se,{"code-path":"src/components/kubernetes/DeploymentView.tsx:468:32",variant:"outline",className:"text-xs",children:a.type})}),e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:469:21",className:"font-mono text-sm text-[var(--dg-text-muted)]",children:a.clusterIP}),e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:470:21",className:"text-sm text-[var(--dg-text-muted)]",children:a.ports.join(", ")}),e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:471:21",className:"text-xs text-[var(--dg-text-muted)]",children:Object.entries(a.selector).map(([n,d])=>e.jsxs("code",{"code-path":"src/components/kubernetes/DeploymentView.tsx:473:25",className:"mr-1 bg-[var(--dg-bg-tertiary)] px-1 rounded",children:[n,"=",d]},n))})]},a.name))})]})})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:485:7",children:[e.jsxs("h3",{"code-path":"src/components/kubernetes/DeploymentView.tsx:486:9",className:"text-sm font-semibold text-[var(--dg-text-primary)] mb-3 flex items-center gap-2",children:[e.jsx(Dt,{"code-path":"src/components/kubernetes/DeploymentView.tsx:487:11",className:"h-4 w-4 text-[var(--dg-purple)]"}),"关联 Ingress"]}),s.length===0?e.jsx("p",{"code-path":"src/components/kubernetes/DeploymentView.tsx:490:11",className:"text-sm text-[var(--dg-text-muted)] py-4",children:"暂无匹配的 Ingress"}):e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:492:11",className:"overflow-x-auto",children:e.jsxs(Re,{"code-path":"src/components/kubernetes/DeploymentView.tsx:493:13",children:[e.jsx(Be,{"code-path":"src/components/kubernetes/DeploymentView.tsx:494:15",children:e.jsxs(De,{"code-path":"src/components/kubernetes/DeploymentView.tsx:495:17",className:"border-[var(--dg-border)]",children:[e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:496:19",className:"text-[var(--dg-text-muted)]",children:"名称"}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:497:19",className:"text-[var(--dg-text-muted)]",children:"Class"}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:498:19",className:"text-[var(--dg-text-muted)]",children:"Host"}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:499:19",className:"text-[var(--dg-text-muted)]",children:"路径"})]})}),e.jsx(Oe,{"code-path":"src/components/kubernetes/DeploymentView.tsx:502:15",children:s.map(a=>e.jsxs(De,{"code-path":"src/components/kubernetes/DeploymentView.tsx:504:19",className:"border-[var(--dg-border)]",children:[e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:505:21",className:"font-medium text-[var(--dg-text-primary)]",children:a.name}),e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:506:21",className:"text-sm text-[var(--dg-text-muted)]",children:a.className}),e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:507:21",className:"text-sm text-[var(--dg-text-muted)]",children:a.hosts.join(", ")}),e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:508:21",className:"text-xs text-[var(--dg-text-muted)]",children:a.rules.flatMap(n=>(n.http?.paths||n.paths||[]).map(d=>d.path||"/")).join(", ")})]},a.name))})]})})]})]})}function Fs({events:t,loading:s}){return s==="events"?e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:525:12",className:"flex items-center justify-center py-12",children:e.jsx(xe,{"code-path":"src/components/kubernetes/DeploymentView.tsx:525:68",className:"h-6 w-6 animate-spin text-[var(--dg-text-muted)]"})}):t.length===0?e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:528:12",className:"text-center text-[var(--dg-text-muted)] py-12",children:"暂无事件"}):e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:531:5",className:"overflow-x-auto",children:e.jsxs(Re,{"code-path":"src/components/kubernetes/DeploymentView.tsx:532:7",children:[e.jsx(Be,{"code-path":"src/components/kubernetes/DeploymentView.tsx:533:9",children:e.jsxs(De,{"code-path":"src/components/kubernetes/DeploymentView.tsx:534:11",className:"border-[var(--dg-border)]",children:[e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:535:13",className:"text-[var(--dg-text-muted)] w-16",children:"类型"}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:536:13",className:"text-[var(--dg-text-muted)] w-24",children:"原因"}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:537:13",className:"text-[var(--dg-text-muted)]",children:"消息"}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:538:13",className:"text-[var(--dg-text-muted)] w-20",children:"来源"}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:539:13",className:"text-[var(--dg-text-muted)] w-10",children:"次数"}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:540:13",className:"text-[var(--dg-text-muted)] w-40",children:"最后时间"})]})}),e.jsx(Oe,{"code-path":"src/components/kubernetes/DeploymentView.tsx:543:9",children:t.map((o,a)=>e.jsxs(De,{"code-path":"src/components/kubernetes/DeploymentView.tsx:545:13",className:"border-[var(--dg-border)]",children:[e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:546:15",children:e.jsx(se,{"code-path":"src/components/kubernetes/DeploymentView.tsx:547:17",variant:"outline",className:o.type==="Warning"?"text-[var(--dg-yellow)] border-[var(--dg-yellow)]/30":"text-[var(--dg-text-muted)] border-[var(--dg-border)]",children:o.type})}),e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:551:15",className:"text-sm text-[var(--dg-text-secondary)]",children:o.reason}),e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:552:15",className:"text-sm text-[var(--dg-text-primary)] max-w-md truncate",title:o.message,children:o.message}),e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:553:15",className:"text-xs text-[var(--dg-text-muted)]",children:o.source}),e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:554:15",className:"text-sm text-[var(--dg-text-muted)]",children:o.count}),e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:555:15",className:"text-xs text-[var(--dg-text-muted)]",children:Ye(o.lastTimestamp)})]},a))})]})})}function Ys({hpas:t,cronHpas:s,loading:o,replicas:a}){return o==="scale"?e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:567:12",className:"flex items-center justify-center py-12",children:e.jsx(xe,{"code-path":"src/components/kubernetes/DeploymentView.tsx:567:68",className:"h-6 w-6 animate-spin text-[var(--dg-text-muted)]"})}):e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:571:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:573:7",className:"flex items-center gap-2 px-2",children:[e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentView.tsx:574:9",className:"text-sm text-[var(--dg-text-muted)]",children:"当前副本:"}),e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentView.tsx:575:9",className:"text-sm font-bold text-[var(--dg-text-primary)]",children:a}),e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentView.tsx:576:9",className:"text-xs text-[var(--dg-text-muted)]",children:"(可通过 Tab 栏右侧 +/- 手动调整)"})]}),e.jsxs(L,{"code-path":"src/components/kubernetes/DeploymentView.tsx:580:7",className:"dg-card",children:[e.jsx(ie,{"code-path":"src/components/kubernetes/DeploymentView.tsx:581:9",className:"pb-2",children:e.jsxs(pe,{"code-path":"src/components/kubernetes/DeploymentView.tsx:581:38",className:"text-sm flex items-center gap-2",children:[e.jsx(Zt,{"code-path":"src/components/kubernetes/DeploymentView.tsx:581:93",className:"h-4 w-4 text-[var(--dg-orange)]"}),"HPA — 水平自动伸缩"]})}),e.jsx(G,{"code-path":"src/components/kubernetes/DeploymentView.tsx:582:9",children:t.length===0?e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:584:13",className:"text-sm text-[var(--dg-text-muted)] py-4",children:["未关联 HPA — ",e.jsx(u,{"code-path":"src/components/kubernetes/DeploymentView.tsx:585:25",variant:"link",className:"h-auto p-0 text-[var(--dg-blue)] text-sm",children:"创建 HPA"})]}):e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:588:13",className:"overflow-x-auto",children:e.jsxs(Re,{"code-path":"src/components/kubernetes/DeploymentView.tsx:589:15",children:[e.jsx(Be,{"code-path":"src/components/kubernetes/DeploymentView.tsx:590:17",children:e.jsxs(De,{"code-path":"src/components/kubernetes/DeploymentView.tsx:591:19",className:"border-[var(--dg-border)]",children:[e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:592:21",className:"text-[var(--dg-text-muted)]",children:"名称"}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:593:21",className:"text-[var(--dg-text-muted)]",children:"最小/最大"}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:594:21",className:"text-[var(--dg-text-muted)]",children:"指标"}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:595:21",className:"text-[var(--dg-text-muted)]",children:"当前负载"}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:596:21",className:"text-[var(--dg-text-muted)]",children:"状态"})]})}),e.jsx(Oe,{"code-path":"src/components/kubernetes/DeploymentView.tsx:599:17",children:t.map((n,d)=>{const i=n.spec?.minReplicas??n.minReplicas??1,p=n.spec?.maxReplicas??n.maxReplicas??10,D=n.spec?.metrics||n.metrics||[],h=n.status?.currentReplicas??n.currentReplicas??0,q=(n.status?.conditions||n.conditions||[]).find(V=>V.type==="AbleToScale")?.status==="True";return e.jsxs(De,{"code-path":"src/components/kubernetes/DeploymentView.tsx:609:23",className:"border-[var(--dg-border)]",children:[e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:610:25",className:"font-medium text-[var(--dg-text-primary)]",children:n.name||n.metadata?.name}),e.jsxs(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:611:25",className:"text-sm text-[var(--dg-text-secondary)] font-mono",children:[i," → ",p]}),e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:612:25",className:"text-xs text-[var(--dg-text-muted)]",children:D.map((V,R)=>{const M=V.resource||V.object?.metric?.name||"",z=V.resource?.target?.averageUtilization||V.resource?.target?.averageValue||V.resource?.target?.type||"-";return e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:616:36",children:[M?.name||M,": ",z,V.resource?.target?.averageUtilization?"%":""]},R)})}),e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:619:25",className:"text-sm font-mono text-[var(--dg-text-secondary)]",children:h}),e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:620:25",children:e.jsx(se,{"code-path":"src/components/kubernetes/DeploymentView.tsx:621:27",className:q?"bg-[var(--dg-green)]/20 text-[var(--dg-green)]":"bg-[var(--dg-red)]/20 text-[var(--dg-red)]",children:q?"正常":"异常"})})]},n.name||d)})})]})})})]}),e.jsxs(L,{"code-path":"src/components/kubernetes/DeploymentView.tsx:636:7",className:"dg-card",children:[e.jsx(ie,{"code-path":"src/components/kubernetes/DeploymentView.tsx:637:9",className:"pb-2",children:e.jsxs(pe,{"code-path":"src/components/kubernetes/DeploymentView.tsx:637:38",className:"text-sm flex items-center gap-2",children:[e.jsx(ss,{"code-path":"src/components/kubernetes/DeploymentView.tsx:637:93",className:"h-4 w-4 text-[var(--dg-blue)]"}),"CronHPA — 定时伸缩"]})}),e.jsx(G,{"code-path":"src/components/kubernetes/DeploymentView.tsx:638:9",children:s.length===0?e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:640:13",className:"text-sm text-[var(--dg-text-muted)] py-4",children:["未关联 CronHPA — ",e.jsx(u,{"code-path":"src/components/kubernetes/DeploymentView.tsx:641:29",variant:"link",className:"h-auto p-0 text-[var(--dg-blue)] text-sm",children:"创建 CronHPA"})]}):e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:644:13",className:"overflow-x-auto",children:e.jsxs(Re,{"code-path":"src/components/kubernetes/DeploymentView.tsx:645:15",children:[e.jsx(Be,{"code-path":"src/components/kubernetes/DeploymentView.tsx:646:17",children:e.jsxs(De,{"code-path":"src/components/kubernetes/DeploymentView.tsx:647:19",className:"border-[var(--dg-border)]",children:[e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:648:21",className:"text-[var(--dg-text-muted)]",children:"名称"}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:649:21",className:"text-[var(--dg-text-muted)]",children:"目标副本"}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:650:21",className:"text-[var(--dg-text-muted)]",children:"调度规则"}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:651:21",className:"text-[var(--dg-text-muted)]",children:"时区"}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:652:21",className:"text-[var(--dg-text-muted)]",children:"状态"})]})}),e.jsx(Oe,{"code-path":"src/components/kubernetes/DeploymentView.tsx:655:17",children:s.map((n,d)=>{const i=n.spec?.jobs||n.jobs||[],p=n.spec?.timezone||"UTC";return e.jsxs(De,{"code-path":"src/components/kubernetes/DeploymentView.tsx:660:23",className:"border-[var(--dg-border)]",children:[e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:661:25",className:"font-medium text-[var(--dg-text-primary)]",children:n.name||n.metadata?.name}),e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:662:25",className:"text-sm text-[var(--dg-text-secondary)]",children:i.map(D=>D.targetSize||D.targetReplicas||"?").join(", ")}),e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:665:25",className:"text-xs font-mono text-[var(--dg-text-muted)]",children:i.map(D=>D.schedule||"?").join(", ")}),e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:666:25",className:"text-xs text-[var(--dg-text-muted)]",children:p}),e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:667:25",children:e.jsx(se,{"code-path":"src/components/kubernetes/DeploymentView.tsx:668:27",className:"bg-[var(--dg-green)]/20 text-[var(--dg-green)]",children:"已启用"})})]},n.name||d)})})]})})})]})]})}function Js({revisions:t,rollbackLoading:s,onRollback:o}){return t.length===0?e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:686:12",className:"text-center text-[var(--dg-text-muted)] py-12",children:"暂无历史版本"}):e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentView.tsx:689:5",className:"overflow-x-auto",children:e.jsxs(Re,{"code-path":"src/components/kubernetes/DeploymentView.tsx:690:7",children:[e.jsx(Be,{"code-path":"src/components/kubernetes/DeploymentView.tsx:691:9",children:e.jsxs(De,{"code-path":"src/components/kubernetes/DeploymentView.tsx:692:11",className:"border-[var(--dg-border)]",children:[e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:693:13",className:"text-[var(--dg-text-muted)] w-24",children:"Revision"}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:694:13",className:"text-[var(--dg-text-muted)]",children:"镜像"}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:695:13",className:"text-[var(--dg-text-muted)] w-24",children:"状态"}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:696:13",className:"text-[var(--dg-text-muted)] w-40",children:"更新时间"}),e.jsx(X,{"code-path":"src/components/kubernetes/DeploymentView.tsx:697:13",className:"text-[var(--dg-text-muted)] w-24",children:"操作"})]})}),e.jsx(Oe,{"code-path":"src/components/kubernetes/DeploymentView.tsx:700:9",children:t.map((a,n)=>{const d=a.revision??a.revision_number??a.number??n+1,i=n===0;return e.jsxs(De,{"code-path":"src/components/kubernetes/DeploymentView.tsx:705:15",className:"border-[var(--dg-border)]",children:[e.jsxs(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:706:17",className:"font-mono text-[var(--dg-text-primary)]",children:["#",d]}),e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:707:17",className:"text-xs font-mono text-[var(--dg-text-muted)] max-w-[300px] truncate",children:a.image||a.images?.[0]||"-"}),e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:708:17",children:i?e.jsx(se,{"code-path":"src/components/kubernetes/DeploymentView.tsx:710:23",className:"bg-[var(--dg-green)]/20 text-[var(--dg-green)] border-[var(--dg-green)]/30",children:"当前"}):e.jsx(se,{"code-path":"src/components/kubernetes/DeploymentView.tsx:711:23",variant:"outline",className:"text-[var(--dg-text-muted)]",children:"历史"})}),e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:713:17",className:"text-xs text-[var(--dg-text-muted)]",children:Ye(a.created_at||a.time)}),e.jsx(Z,{"code-path":"src/components/kubernetes/DeploymentView.tsx:714:17",children:e.jsxs(u,{"code-path":"src/components/kubernetes/DeploymentView.tsx:715:19",variant:"ghost",size:"sm",className:"h-7 text-amber-400",disabled:i||s!==null,onClick:()=>o(a),children:[s===d?e.jsx(xe,{"code-path":"src/components/kubernetes/DeploymentView.tsx:716:53",className:"h-3 w-3 animate-spin mr-1"}):e.jsx(bs,{"code-path":"src/components/kubernetes/DeploymentView.tsx:716:105",className:"h-3 w-3 mr-1"}),"回滚"]})})]},d)})})]})})}function Lt(t){const s=n=>{if(!n)return null;let d="none";return n.httpGet?d="httpGet":n.tcpSocket?d="tcpSocket":n.exec&&(d="exec"),{type:d,httpPath:n.httpGet?.path||"",httpPort:n.httpGet?.port??"",httpHost:n.httpGet?.host||"",tcpPort:n.tcpSocket?.port??"",execCommand:Array.isArray(n.exec?.command)?n.exec.command.join(` `):n.exec?.command||"",initialDelaySeconds:n.initialDelaySeconds,periodSeconds:n.periodSeconds,timeoutSeconds:n.timeoutSeconds,successThreshold:n.successThreshold,failureThreshold:n.failureThreshold}},o=n=>{if(!n)return{type:"none"};let d="none";return n.exec?d="exec":n.httpGet?d="httpGet":n.tcpSocket&&(d="tcpSocket"),{type:d,execCommand:Array.isArray(n.exec?.command)?n.exec.command.join(` `):"",httpPath:n.httpGet?.path||"",httpPort:n.httpGet?.port??"",tcpPort:n.tcpSocket?.port??""}},a=t.securityContext;return{name:t.name||"",image:t.image||"",imagePullPolicy:t.imagePullPolicy||"",command:Array.isArray(t.command)?t.command:[],args:Array.isArray(t.args)?t.args:[],workingDir:t.workingDir||"",env:(Array.isArray(t.env)?t.env:[]).map(n=>({name:n.name||"",value:n.value??""})),ports:(Array.isArray(t.ports)?t.ports:[]).map(n=>({name:n.name||"",containerPort:n.containerPort??"",protocol:n.protocol||"TCP"})),resources:{requests:t.resources?.requests||{},limits:t.resources?.limits||{}},livenessProbe:s(t.livenessProbe),readinessProbe:s(t.readinessProbe),startupProbe:s(t.startupProbe),lifecycle:t.lifecycle?{postStart:t.lifecycle.postStart?o(t.lifecycle.postStart):void 0,preStop:t.lifecycle.preStop?o(t.lifecycle.preStop):void 0}:null,securityContext:a?{runAsUser:a.runAsUser,runAsGroup:a.runAsGroup,runAsNonRoot:a.runAsNonRoot,privileged:a.privileged,readOnlyRootFilesystem:a.readOnlyRootFilesystem,allowPrivilegeEscalation:a.allowPrivilegeEscalation,capabilitiesAdd:a.capabilities?.add||[],capabilitiesDrop:a.capabilities?.drop||[]}:null,volumeMounts:(Array.isArray(t.volumeMounts)?t.volumeMounts:[]).map(n=>({name:n.name||"",mountPath:n.mountPath||"",subPath:n.subPath||"",readOnly:n.readOnly||!1}))}}function Gt(t=""){return{name:t,image:"",imagePullPolicy:"IfNotPresent",command:[],args:[],workingDir:"",env:[],ports:[],resources:{},livenessProbe:null,readinessProbe:null,startupProbe:null,lifecycle:null,securityContext:null,volumeMounts:[]}}function bt(t){if(!t||t.type==="none"||!t.type)return;const s={};if(t.type==="httpGet")s.httpGet={},t.httpPath&&(s.httpGet.path=t.httpPath),t.httpPort!==""&&t.httpPort!=null&&(s.httpGet.port=typeof t.httpPort=="number"?t.httpPort:Number(t.httpPort)),t.httpHost&&(s.httpGet.host=t.httpHost);else if(t.type==="tcpSocket")s.tcpSocket={},t.tcpPort!==""&&t.tcpPort!=null&&(s.tcpSocket.port=typeof t.tcpPort=="number"?t.tcpPort:Number(t.tcpPort));else if(t.type==="exec"){const o=(t.execCommand||"").split(` `).map(a=>a.trim()).filter(Boolean);o.length&&(s.exec={command:o})}return t.initialDelaySeconds!=null&&(s.initialDelaySeconds=t.initialDelaySeconds),t.periodSeconds!=null&&(s.periodSeconds=t.periodSeconds),t.timeoutSeconds!=null&&(s.timeoutSeconds=t.timeoutSeconds),t.successThreshold!=null&&(s.successThreshold=t.successThreshold),t.failureThreshold!=null&&(s.failureThreshold=t.failureThreshold),Object.keys(s).length>0?s:void 0}function Ht(t){if(!(!t||t.type==="none"||!t.type)){if(t.type==="exec"){const s=(t.execCommand||"").split(` @@ -17,4 +17,4 @@ cluster.local`,rows:3,className:"w-full mt-1 bg-slate-800 border border-slate-70 ${N?"border-blue-500 text-blue-400":h.available?"border-transparent text-slate-400 hover:text-slate-200":"border-transparent text-slate-600 cursor-not-allowed"}`,children:[e.jsx(I,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:584:15",className:"h-3.5 w-3.5"}),h.label,h.badge&&e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:587:17",className:`text-[9px] px-1 py-0.5 rounded ${N?"bg-blue-500/20 text-blue-300":"bg-slate-800 text-slate-600"}`,children:h.badge})]},h.key)})}),i==="basic"?e.jsx(Xs,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:598:9",clusterCode:t,namespace:s,deploymentName:o,manifest:a,onSaved:n,onCancel:d}):i==="containers"?e.jsx(qs,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:608:9",clusterCode:t,namespace:s,deploymentName:o,manifest:a,onSaved:n,onCancel:d}):i==="storage"?e.jsx(en,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:618:9",clusterCode:t,namespace:s,deploymentName:o,manifest:a,onSaved:n,onCancel:d}):i==="advanced"?e.jsx(tn,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:628:9",clusterCode:t,namespace:s,deploymentName:o,manifest:a,onSaved:n,onCancel:d}):i==="service"?e.jsx(nn,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:638:9",clusterCode:t,namespace:s,deploymentName:o,manifest:a,onSaved:n,onCancel:d}):null]})}function cn({clusterCode:t,namespace:s,deploymentName:o}){const{toast:a}=Pe(),n=Nt(D=>D.token)||localStorage.getItem("token")||"",d=`${window.location.origin}/api/v1/clusters/${t}/namespaces/${s}/deployments/${o}/update-image`,i=`curl -X POST '${d}' \\ -H 'Authorization: Bearer ${n?n.substring(0,16)+"...":"YOUR_TOKEN"}' \\ -H 'Content-Type: application/json' \\ - -d '{"image": "harbor.example.com/app:v1.0", "container": "your-container-name"}'`,p=D=>{navigator.clipboard.writeText(D).then(()=>a({title:"已复制"})).catch(()=>{})};return e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:666:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:667:7",children:[e.jsx(C,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:668:9",className:"text-slate-400 text-sm",children:"Webhook URL"}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:669:9",className:"flex items-center gap-2 mt-1",children:[e.jsx("code",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:670:11",className:"flex-1 text-xs text-slate-300 bg-slate-800 rounded px-3 py-2 break-all font-mono",children:d}),e.jsx(u,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:671:11",variant:"outline",size:"sm",className:"border-slate-700 text-slate-400 shrink-0",onClick:()=>p(d),children:"复制"})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:674:7",children:[e.jsx(C,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:675:9",className:"text-slate-400 text-sm",children:"curl 示例"}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:676:9",className:"relative mt-1",children:[e.jsx("pre",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:677:11",className:"text-xs text-slate-300 bg-slate-800 rounded p-3 overflow-x-auto font-mono whitespace-pre-wrap",children:i}),e.jsx(u,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:678:11",variant:"outline",size:"sm",className:"absolute top-2 right-2 border-slate-700 text-slate-400",onClick:()=>p(i),children:"复制"})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:681:7",className:"text-xs text-slate-500 space-y-1",children:[e.jsx("p",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:682:9",children:"• 使用 Bearer Token 认证(JWT 登录令牌)"}),e.jsxs("p",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:683:9",children:["• ",e.jsx("code",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:683:14",className:"text-slate-400",children:"image"})," 必填,指定新镜像地址"]}),e.jsxs("p",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:684:9",children:["• ",e.jsx("code",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:684:14",className:"text-slate-400",children:"container"})," 可选,不填则更新第一个容器"]})]})]})}function et({title:t,children:s,onClose:o}){return e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:693:5",className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60",onClick:o,children:e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:694:7",className:"bg-slate-900 border border-slate-700 rounded-xl p-6 w-[460px] max-w-[90vw] shadow-2xl",onClick:a=>a.stopPropagation(),children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:695:9",className:"flex items-center justify-between mb-4",children:[e.jsx("h2",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:696:11",className:"text-base font-bold text-slate-100",children:t}),e.jsx(u,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:697:11",variant:"ghost",size:"icon",className:"h-7 w-7 text-slate-400",onClick:o,children:e.jsx(cs,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:697:100",className:"h-4 w-4"})})]}),s]})})}function rn({clusterCode:t,namespace:s,podName:o,containers:a,onClose:n}){const{toast:d}=Pe(),[i,p]=m.useState(""),[D,h]=m.useState(200),[N,I]=m.useState(a[0]||""),[q,V]=m.useState(!1),[R,M]=m.useState(!1),z=async()=>{V(!0);try{const B=await te.getPodLogs(t,s,o,D,N||void 0);p(B?.data?.logs||B?.logs||B||"无日志")}catch{p("获取日志失败")}finally{V(!1)}};m.useEffect(()=>{z()},[N,D]);const F=async()=>{M(!0);const B=Nt.getState().token||"",U="",Y=N?`&container=${encodeURIComponent(N)}`:"",S=`${U}/api/v1/kubernetes/${t}/namespace/${s}/pods/${o}/logs?tail=${D}&stream=true${Y}`;try{const O=(await fetch(S,{headers:{Authorization:`Bearer ${B}`}})).body?.getReader();if(!O)return;const H=new TextDecoder;let ne="";for(;;){const{done:oe,value:r}=await O.read();if(oe)break;ne+=H.decode(r,{stream:!0}),p(ne)}}catch{d({title:"流式日志连接中断",variant:"destructive"})}finally{M(!1)}};return e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:752:5",className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60",onClick:n,children:e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:753:7",className:"bg-slate-900 border border-slate-700 rounded-xl w-[90vw] max-w-4xl max-h-[80vh] flex flex-col",onClick:B=>B.stopPropagation(),children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:754:9",className:"flex items-center justify-between p-3 border-b border-slate-700",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:755:11",className:"flex items-center gap-2",children:[e.jsx(Et,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:756:13",className:"h-4 w-4 text-blue-400"}),e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:757:13",className:"text-sm font-semibold text-slate-200",children:o}),N&&e.jsx(se,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:758:27",variant:"outline",className:"border-slate-700 text-slate-400 text-[10px]",children:N})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:760:11",className:"flex items-center gap-2",children:[a.length>0&&e.jsx("select",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:762:15",value:N,onChange:B=>I(B.target.value),className:"bg-slate-800 border border-slate-700 rounded text-xs text-slate-300 px-2 py-1",children:a.map(B=>e.jsx("option",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:764:38",value:B,children:B},B))}),e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:767:13",className:"text-[11px] text-slate-500",children:"最近"}),e.jsx(v,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:768:13",type:"number",value:D,onChange:B=>h(Number(B.target.value)||200),className:"w-16 h-7 bg-slate-800 border-slate-700 text-slate-200 text-xs"}),e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:770:13",className:"text-[11px] text-slate-500",children:"行"}),e.jsx(u,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:771:13",size:"sm",variant:"outline",className:"h-7 border-slate-700 text-slate-300 text-xs",onClick:z,disabled:q,children:q?e.jsx(xe,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:772:26",className:"h-3 w-3 animate-spin"}):e.jsx(ct,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:772:73",className:"h-3 w-3"})}),e.jsx(u,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:774:13",size:"sm",variant:"outline",className:"h-7 border-slate-700 text-emerald-400 text-xs",onClick:F,disabled:R,children:R?"流中...":"实时流"}),e.jsx(u,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:777:13",variant:"ghost",size:"icon",className:"h-7 w-7 text-slate-400",onClick:n,children:e.jsx(cs,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:777:102",className:"h-4 w-4"})})]})]}),e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:780:9",className:"flex-1 overflow-auto p-3",children:e.jsx("pre",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:781:11",className:"bg-slate-950 rounded p-3 text-xs text-slate-300 font-mono whitespace-pre-wrap max-h-[60vh] overflow-auto",children:i||"无日志内容"})})]})})}function Yn(){const t=js(),s=as(),o=t.clusterCode||"",a=t.namespace||"",n=t.name||"",d=t.mode==="edit"||t.mode==="yaml"?t.mode:"view",i=p=>{p!==d&&s(`/kubernetes/${o}/namespace/${a}/workload/${p}/Deployment/${n}`,{replace:!0})};return e.jsx(on,{"code-path":"src/components/kubernetes/DeploymentDetailPage.tsx:38:5",clusterCode:o,namespace:a,deploymentName:n,mode:d,onBack:()=>s(-1),onModeChange:i})}export{Yn as default}; + -d '{"image": "harbor.example.com/app:v1.0", "container": "your-container-name"}'`,p=D=>{navigator.clipboard.writeText(D).then(()=>a({title:"已复制"})).catch(()=>{})};return e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:666:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:667:7",children:[e.jsx(C,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:668:9",className:"text-slate-400 text-sm",children:"Webhook URL"}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:669:9",className:"flex items-center gap-2 mt-1",children:[e.jsx("code",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:670:11",className:"flex-1 text-xs text-slate-300 bg-slate-800 rounded px-3 py-2 break-all font-mono",children:d}),e.jsx(u,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:671:11",variant:"outline",size:"sm",className:"border-slate-700 text-slate-400 shrink-0",onClick:()=>p(d),children:"复制"})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:674:7",children:[e.jsx(C,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:675:9",className:"text-slate-400 text-sm",children:"curl 示例"}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:676:9",className:"relative mt-1",children:[e.jsx("pre",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:677:11",className:"text-xs text-slate-300 bg-slate-800 rounded p-3 overflow-x-auto font-mono whitespace-pre-wrap",children:i}),e.jsx(u,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:678:11",variant:"outline",size:"sm",className:"absolute top-2 right-2 border-slate-700 text-slate-400",onClick:()=>p(i),children:"复制"})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:681:7",className:"text-xs text-slate-500 space-y-1",children:[e.jsx("p",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:682:9",children:"• 使用 Bearer Token 认证(JWT 登录令牌)"}),e.jsxs("p",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:683:9",children:["• ",e.jsx("code",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:683:14",className:"text-slate-400",children:"image"})," 必填,指定新镜像地址"]}),e.jsxs("p",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:684:9",children:["• ",e.jsx("code",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:684:14",className:"text-slate-400",children:"container"})," 可选,不填则更新第一个容器"]})]})]})}function et({title:t,children:s,onClose:o}){return e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:693:5",className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60",onClick:o,children:e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:694:7",className:"bg-slate-900 border border-slate-700 rounded-xl p-6 w-[460px] max-w-[90vw] shadow-2xl",onClick:a=>a.stopPropagation(),children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:695:9",className:"flex items-center justify-between mb-4",children:[e.jsx("h2",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:696:11",className:"text-base font-bold text-slate-100",children:t}),e.jsx(u,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:697:11",variant:"ghost",size:"icon",className:"h-7 w-7 text-slate-400",onClick:o,children:e.jsx(cs,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:697:100",className:"h-4 w-4"})})]}),s]})})}function rn({clusterCode:t,namespace:s,podName:o,containers:a,onClose:n}){const{toast:d}=Pe(),[i,p]=m.useState(""),[D,h]=m.useState(200),[N,I]=m.useState(a[0]||""),[q,V]=m.useState(!1),[R,M]=m.useState(!1),z=async()=>{V(!0);try{const B=await te.getPodLogs(t,s,o,D,N||void 0);p(B?.data?.logs||B?.logs||B||"无日志")}catch{p("获取日志失败")}finally{V(!1)}};m.useEffect(()=>{z()},[N,D]);const F=async()=>{M(!0);const B=Nt.getState().token||"",U="",Y=N?`&container=${encodeURIComponent(N)}`:"",S=`${U}/api/v1/kubernetes/${t}/namespace/${s}/pods/${o}/logs?tail=${D}&stream=true${Y}`;try{const O=(await fetch(S,{headers:{Authorization:`Bearer ${B}`}})).body?.getReader();if(!O)return;const H=new TextDecoder;let ne="";for(;;){const{done:oe,value:r}=await O.read();if(oe)break;ne+=H.decode(r,{stream:!0}),p(ne)}}catch{d({title:"流式日志连接中断",variant:"destructive"})}finally{M(!1)}};return e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:752:5",className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60",onClick:n,children:e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:753:7",className:"bg-slate-900 border border-slate-700 rounded-xl w-[90vw] max-w-4xl max-h-[80vh] flex flex-col",onClick:B=>B.stopPropagation(),children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:754:9",className:"flex items-center justify-between p-3 border-b border-slate-700",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:755:11",className:"flex items-center gap-2",children:[e.jsx(Et,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:756:13",className:"h-4 w-4 text-blue-400"}),e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:757:13",className:"text-sm font-semibold text-slate-200",children:o}),N&&e.jsx(se,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:758:27",variant:"outline",className:"border-slate-700 text-slate-400 text-[10px]",children:N})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:760:11",className:"flex items-center gap-2",children:[a.length>0&&e.jsx("select",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:762:15",value:N,onChange:B=>I(B.target.value),className:"bg-slate-800 border border-slate-700 rounded text-xs text-slate-300 px-2 py-1",children:a.map(B=>e.jsx("option",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:764:38",value:B,children:B},B))}),e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:767:13",className:"text-[11px] text-slate-500",children:"最近"}),e.jsx(v,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:768:13",type:"number",value:D,onChange:B=>h(Number(B.target.value)||200),className:"w-16 h-7 bg-slate-800 border-slate-700 text-slate-200 text-xs"}),e.jsx("span",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:770:13",className:"text-[11px] text-slate-500",children:"行"}),e.jsx(u,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:771:13",size:"sm",variant:"outline",className:"h-7 border-slate-700 text-slate-300 text-xs",onClick:z,disabled:q,children:q?e.jsx(xe,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:772:26",className:"h-3 w-3 animate-spin"}):e.jsx(ct,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:772:73",className:"h-3 w-3"})}),e.jsx(u,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:774:13",size:"sm",variant:"outline",className:"h-7 border-slate-700 text-emerald-400 text-xs",onClick:F,disabled:R,children:R?"流中...":"实时流"}),e.jsx(u,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:777:13",variant:"ghost",size:"icon",className:"h-7 w-7 text-slate-400",onClick:n,children:e.jsx(cs,{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:777:102",className:"h-4 w-4"})})]})]}),e.jsx("div",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:780:9",className:"flex-1 overflow-auto p-3",children:e.jsx("pre",{"code-path":"src/components/kubernetes/DeploymentWorkload.tsx:781:11",className:"bg-slate-950 rounded p-3 text-xs text-slate-300 font-mono whitespace-pre-wrap max-h-[60vh] overflow-auto",children:i||"无日志内容"})})]})})}function qn(){const t=js(),s=as(),o=t.clusterCode||"",a=t.namespace||"",n=t.name||"",d=t.mode==="edit"||t.mode==="yaml"?t.mode:"view",i=p=>{p!==d&&s(`/kubernetes/${o}/namespace/${a}/workload/${p}/Deployment/${n}`,{replace:!0})};return e.jsx(on,{"code-path":"src/components/kubernetes/DeploymentDetailPage.tsx:38:5",clusterCode:o,namespace:a,deploymentName:n,mode:d,onBack:()=>s(-1),onModeChange:i})}export{qn as default}; diff --git a/backend/static/assets/DomainManager-C-P3R-u_.js b/backend/static/assets/DomainManager-C-P3R-u_.js new file mode 100644 index 0000000..dbaf802 --- /dev/null +++ b/backend/static/assets/DomainManager-C-P3R-u_.js @@ -0,0 +1 @@ +import{r as n,j as e,B as m,G as E,C as U,D as A,a as H,b as X,c as q,d as J,e as K,L as V}from"./index-Dmami9WE.js";import{I as l}from"./input-NsU9nXZF.js";import{L as d}from"./label-Ap_-SPYI.js";import{C as j,a as M}from"./card-CIfC-8Rh.js";import{B as h}from"./badge-3UzCvU7L.js";import{c as u}from"./cloud-Dq4kl-JO.js";import{R as L}from"./refresh-cw-CTBERyFc.js";import{P as k}from"./plus-O65gX7Qz.js";import{S as W}from"./search-Dd-PeBfg.js";import{C as P}from"./circle-check-CVbTTFQ0.js";import{C as Y}from"./circle-x-BBQeW1R3.js";import{P as O}from"./pen-0lfnZsyH.js";import{T as Z}from"./trash-2-DWVnIU6o.js";function xe(){const[i,b]=n.useState([]),[N,v]=n.useState(!0),[g,B]=n.useState(""),[D,F]=n.useState("all"),[I,p]=n.useState(!1),[f,_]=n.useState(!1),[r,y]=n.useState(null),[a,t]=n.useState({name:"",registrar:"",status:"active",expire_date:"",dns_provider:"",record_count:"",ssl_enabled:!1,ssl_expire_date:""}),T=()=>{y(null),t({name:"",registrar:"",status:"active",expire_date:"",dns_provider:"",record_count:"",ssl_enabled:!1,ssl_expire_date:""})},R=()=>{T(),p(!0)},$=s=>{y(s);const o=c=>c?c.substring(0,10):"";t({name:s.name||"",registrar:s.registrar||"",status:s.status||"active",expire_date:o(s.expire_date||""),dns_provider:s.dns_provider||s.dnsProvider||"",record_count:String(s.record_count??s.recordCount??""),ssl_enabled:s.ssl_enabled??s.sslEnabled??!1,ssl_expire_date:o(s.ssl_expire_date||"")}),p(!0)},z=async()=>{if(a.name.trim())try{_(!0);const s={name:a.name.trim(),registrar:a.registrar.trim(),status:a.status,expire_date:a.expire_date,dns_provider:a.dns_provider.trim(),record_count:Number(a.record_count)||0,ssl_enabled:a.ssl_enabled,ssl_expire_date:a.ssl_expire_date};r?await u.updateDomain(r.id,s):await u.createDomain(s),p(!1),x()}catch(s){console.error(r?"更新域名失败:":"创建域名失败:",s)}finally{_(!1)}},x=async()=>{try{v(!0);const s=await u.getDomains();b(s?.list||[])}catch(s){console.error("加载域名列表失败:",s),b([])}finally{v(!1)}};n.useEffect(()=>{x()},[]);const G=async s=>{try{await u.deleteDomain(s),x()}catch(o){console.error("删除域名失败:",o)}},C=i.filter(s=>{const o=(s.name||"").toLowerCase().includes(g.toLowerCase())||(s.registrar||"").toLowerCase().includes(g.toLowerCase()),c=D==="all"||s.status===D;return o&&c});i.length,i.filter(s=>s.status==="active").length,i.filter(s=>s.status==="expired").length,i.filter(s=>s.status==="pending").length,i.filter(s=>s.ssl_enabled||s.sslEnabled).length;const Q=s=>s?Math.ceil((new Date(s).getTime()-Date.now())/(1e3*60*60*24)):1/0;return e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:162:5",className:"space-y-6",children:[e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:164:7",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:165:9",children:[e.jsx("h1",{"code-path":"src/components/cloud/DomainManager.tsx:166:11",className:"text-2xl font-bold text-slate-100",children:"域名管理"}),e.jsx("p",{"code-path":"src/components/cloud/DomainManager.tsx:167:11",className:"text-slate-400 mt-1",children:"管理域名注册信息和DNS解析记录"})]}),e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:169:9",className:"flex items-center gap-2",children:[e.jsxs(m,{"code-path":"src/components/cloud/DomainManager.tsx:170:11",variant:"outline",onClick:x,className:"border-slate-700 text-slate-300",children:[e.jsx(L,{"code-path":"src/components/cloud/DomainManager.tsx:171:13",className:`h-4 w-4 mr-2 ${N?"animate-spin":""}`}),"刷新"]}),e.jsxs(m,{"code-path":"src/components/cloud/DomainManager.tsx:174:11",className:"bg-blue-600 hover:bg-blue-700",onClick:R,children:[e.jsx(k,{"code-path":"src/components/cloud/DomainManager.tsx:175:13",className:"h-4 w-4 mr-2"}),"添加域名"]})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:182:7",className:"flex items-center gap-4",children:[e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:183:9",className:"relative flex-1 max-w-md",children:[e.jsx(W,{"code-path":"src/components/cloud/DomainManager.tsx:184:11",className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-slate-400"}),e.jsx(l,{"code-path":"src/components/cloud/DomainManager.tsx:185:11",placeholder:"搜索域名...",value:g,onChange:s=>B(s.target.value),className:"pl-10 bg-slate-800 border-slate-700 text-slate-100"})]}),e.jsxs("select",{"code-path":"src/components/cloud/DomainManager.tsx:192:9",value:D,onChange:s=>F(s.target.value),className:"px-3 py-2 bg-slate-800 border border-slate-700 rounded-md text-slate-100 text-sm",children:[e.jsx("option",{"code-path":"src/components/cloud/DomainManager.tsx:197:11",value:"all",children:"全部状态"}),e.jsx("option",{"code-path":"src/components/cloud/DomainManager.tsx:198:11",value:"active",children:"正常"}),e.jsx("option",{"code-path":"src/components/cloud/DomainManager.tsx:199:11",value:"expired",children:"已过期"}),e.jsx("option",{"code-path":"src/components/cloud/DomainManager.tsx:200:11",value:"pending",children:"待审核"})]})]}),N?e.jsx(j,{"code-path":"src/components/cloud/DomainManager.tsx:206:9",className:"bg-slate-800 border-slate-700",children:e.jsxs(M,{"code-path":"src/components/cloud/DomainManager.tsx:207:11",className:"p-12 text-center text-slate-500",children:[e.jsx(L,{"code-path":"src/components/cloud/DomainManager.tsx:208:13",className:"h-6 w-6 animate-spin mx-auto mb-3"}),"加载中..."]})}):C.length===0?e.jsx(j,{"code-path":"src/components/cloud/DomainManager.tsx:213:9",className:"bg-slate-800 border-slate-700",children:e.jsx(M,{"code-path":"src/components/cloud/DomainManager.tsx:214:11",className:"p-12 text-center text-slate-500",children:"暂无域名数据"})}):e.jsx("div",{"code-path":"src/components/cloud/DomainManager.tsx:217:9",className:"space-y-3",children:C.map(s=>{const o=s.ssl_enabled||s.sslEnabled,c=s.expire_date||s.expireDate||"",w=s.ssl_expire_date||s.sslExpireDate||"",S=Q(c);return e.jsx(j,{"code-path":"src/components/cloud/DomainManager.tsx:224:15",className:"bg-slate-800 border-slate-700",children:e.jsx(M,{"code-path":"src/components/cloud/DomainManager.tsx:225:17",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:226:19",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:227:21",className:"flex items-center gap-4",children:[e.jsx("div",{"code-path":"src/components/cloud/DomainManager.tsx:228:23",className:"w-10 h-10 rounded-lg bg-gradient-to-br from-blue-500 to-cyan-500 flex items-center justify-center",children:e.jsx(E,{"code-path":"src/components/cloud/DomainManager.tsx:229:25",className:"h-5 w-5 text-white"})}),e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:231:23",children:[e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:232:25",className:"flex items-center gap-2",children:[e.jsx("h3",{"code-path":"src/components/cloud/DomainManager.tsx:233:27",className:"font-medium text-slate-100 text-lg",children:s.name}),s.status==="active"&&e.jsxs(h,{"code-path":"src/components/cloud/DomainManager.tsx:235:29",className:"bg-green-500/20 text-green-400 border-0",children:[e.jsx(P,{"code-path":"src/components/cloud/DomainManager.tsx:236:31",className:"h-3 w-3 mr-1"}),"正常"]}),s.status==="expired"&&e.jsxs(h,{"code-path":"src/components/cloud/DomainManager.tsx:241:29",className:"bg-red-500/20 text-red-400 border-0",children:[e.jsx(Y,{"code-path":"src/components/cloud/DomainManager.tsx:242:31",className:"h-3 w-3 mr-1"}),"已过期"]}),s.status==="pending"&&e.jsxs(h,{"code-path":"src/components/cloud/DomainManager.tsx:247:29",className:"bg-yellow-500/20 text-yellow-400 border-0",children:[e.jsx(U,{"code-path":"src/components/cloud/DomainManager.tsx:248:31",className:"h-3 w-3 mr-1"}),"待审核"]}),o&&e.jsxs(h,{"code-path":"src/components/cloud/DomainManager.tsx:253:29",className:"bg-cyan-500/20 text-cyan-400 border-0",children:[e.jsx(P,{"code-path":"src/components/cloud/DomainManager.tsx:254:31",className:"h-3 w-3 mr-1"}),"SSL"]})]}),e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:259:25",className:"flex items-center gap-4 mt-1 text-sm text-slate-400",children:[e.jsxs("span",{"code-path":"src/components/cloud/DomainManager.tsx:260:27",children:["注册商: ",s.registrar||"-"]}),e.jsxs("span",{"code-path":"src/components/cloud/DomainManager.tsx:261:27",children:["DNS: ",s.dns_provider||s.dnsProvider||"-"]}),e.jsxs("span",{"code-path":"src/components/cloud/DomainManager.tsx:262:27",children:["解析记录: ",s.record_count??s.recordCount??0,"条"]})]})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:266:21",className:"flex items-center gap-4",children:[e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:267:23",className:"text-right",children:[e.jsx("p",{"code-path":"src/components/cloud/DomainManager.tsx:268:25",className:"text-sm text-slate-400",children:"到期时间"}),e.jsxs("p",{"code-path":"src/components/cloud/DomainManager.tsx:269:25",className:`text-sm font-medium ${S<30?"text-red-400":"text-slate-200"}`,children:[c?c.substring(0,10):"-",c&&` (${S}天)`,o&&w&&e.jsxs("span",{"code-path":"src/components/cloud/DomainManager.tsx:272:29",className:"text-slate-500",children:[" · SSL: ",w.substring(0,10)]})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:276:23",className:"flex items-center gap-1",children:[e.jsx(m,{"code-path":"src/components/cloud/DomainManager.tsx:277:25",variant:"ghost",size:"icon",className:"h-8 w-8 text-slate-400 hover:text-blue-400",onClick:()=>$(s),children:e.jsx(O,{"code-path":"src/components/cloud/DomainManager.tsx:283:27",className:"h-4 w-4"})}),e.jsx(m,{"code-path":"src/components/cloud/DomainManager.tsx:285:25",variant:"ghost",size:"icon",className:"h-8 w-8 text-slate-400 hover:text-red-400",onClick:()=>G(s.id),children:e.jsx(Z,{"code-path":"src/components/cloud/DomainManager.tsx:291:27",className:"h-4 w-4"})})]})]})]})})},s.id)})}),e.jsx(A,{"code-path":"src/components/cloud/DomainManager.tsx:304:7",open:I,onOpenChange:p,children:e.jsxs(H,{"code-path":"src/components/cloud/DomainManager.tsx:305:9",className:"bg-slate-800 border-slate-700 text-slate-100 max-w-lg",children:[e.jsxs(X,{"code-path":"src/components/cloud/DomainManager.tsx:306:11",children:[e.jsxs(q,{"code-path":"src/components/cloud/DomainManager.tsx:307:13",className:"text-slate-100 flex items-center gap-2",children:[e.jsx(E,{"code-path":"src/components/cloud/DomainManager.tsx:308:15",className:"h-5 w-5 text-blue-400"}),r?"编辑域名":"添加域名"]}),e.jsx(J,{"code-path":"src/components/cloud/DomainManager.tsx:311:13",className:"text-slate-400",children:r?"修改域名注册信息、DNS 配置和 SSL 证书状态":"录入域名信息,包括注册商、DNS 服务商和到期时间"})]}),e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:316:11",className:"space-y-4 py-2",children:[e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:317:13",className:"space-y-2",children:[e.jsx(d,{"code-path":"src/components/cloud/DomainManager.tsx:318:15",className:"text-slate-300",children:"域名 *"}),e.jsx(l,{"code-path":"src/components/cloud/DomainManager.tsx:319:15",placeholder:"example.com",value:a.name,onChange:s=>t({...a,name:s.target.value}),className:"bg-slate-900 border-slate-700 text-slate-100"})]}),e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:327:13",className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:328:15",className:"space-y-2",children:[e.jsx(d,{"code-path":"src/components/cloud/DomainManager.tsx:329:17",className:"text-slate-300",children:"注册商"}),e.jsx(l,{"code-path":"src/components/cloud/DomainManager.tsx:330:17",placeholder:"阿里云 / Cloudflare ...",value:a.registrar,onChange:s=>t({...a,registrar:s.target.value}),className:"bg-slate-900 border-slate-700 text-slate-100"})]}),e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:337:15",className:"space-y-2",children:[e.jsx(d,{"code-path":"src/components/cloud/DomainManager.tsx:338:17",className:"text-slate-300",children:"状态"}),e.jsxs("select",{"code-path":"src/components/cloud/DomainManager.tsx:339:17",value:a.status,onChange:s=>t({...a,status:s.target.value}),className:"w-full px-3 py-2 bg-slate-900 border border-slate-700 rounded-md text-slate-100 text-sm",children:[e.jsx("option",{"code-path":"src/components/cloud/DomainManager.tsx:344:19",value:"active",children:"正常"}),e.jsx("option",{"code-path":"src/components/cloud/DomainManager.tsx:345:19",value:"expired",children:"已过期"}),e.jsx("option",{"code-path":"src/components/cloud/DomainManager.tsx:346:19",value:"pending",children:"待审核"})]})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:351:13",className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:352:15",className:"space-y-2",children:[e.jsx(d,{"code-path":"src/components/cloud/DomainManager.tsx:353:17",className:"text-slate-300",children:"到期时间"}),e.jsx(l,{"code-path":"src/components/cloud/DomainManager.tsx:354:17",type:"date",value:a.expire_date,onChange:s=>t({...a,expire_date:s.target.value}),className:"bg-slate-900 border-slate-700 text-slate-100"})]}),e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:361:15",className:"space-y-2",children:[e.jsx(d,{"code-path":"src/components/cloud/DomainManager.tsx:362:17",className:"text-slate-300",children:"DNS 服务商"}),e.jsx(l,{"code-path":"src/components/cloud/DomainManager.tsx:363:17",placeholder:"Cloudflare / DNSPod ...",value:a.dns_provider,onChange:s=>t({...a,dns_provider:s.target.value}),className:"bg-slate-900 border-slate-700 text-slate-100"})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:372:13",className:"space-y-2",children:[e.jsx(d,{"code-path":"src/components/cloud/DomainManager.tsx:373:15",className:"text-slate-300",children:"解析记录数"}),e.jsx(l,{"code-path":"src/components/cloud/DomainManager.tsx:374:15",type:"number",placeholder:"0",value:a.record_count,onChange:s=>t({...a,record_count:s.target.value}),className:"bg-slate-900 border-slate-700 text-slate-100"})]}),e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:383:13",className:"grid grid-cols-2 gap-4 items-end",children:[e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:384:15",className:"space-y-2",children:[e.jsx(d,{"code-path":"src/components/cloud/DomainManager.tsx:385:17",className:"text-slate-300",children:"SSL 证书到期"}),e.jsx(l,{"code-path":"src/components/cloud/DomainManager.tsx:386:17",type:"date",value:a.ssl_expire_date,onChange:s=>t({...a,ssl_expire_date:s.target.value}),disabled:!a.ssl_enabled,className:"bg-slate-900 border-slate-700 text-slate-100 disabled:opacity-40"})]}),e.jsxs("label",{"code-path":"src/components/cloud/DomainManager.tsx:394:15",className:"flex items-center gap-2 cursor-pointer pb-2",children:[e.jsx("input",{"code-path":"src/components/cloud/DomainManager.tsx:395:17",type:"checkbox",checked:a.ssl_enabled,onChange:s=>t({...a,ssl_enabled:s.target.checked}),className:"h-4 w-4 rounded border-slate-600 bg-slate-900 accent-cyan-500"}),e.jsx("span",{"code-path":"src/components/cloud/DomainManager.tsx:401:17",className:"text-slate-300 text-sm",children:"启用 SSL"})]})]})]}),e.jsxs(K,{"code-path":"src/components/cloud/DomainManager.tsx:406:11",children:[e.jsx(m,{"code-path":"src/components/cloud/DomainManager.tsx:407:13",variant:"outline",onClick:()=>p(!1),className:"border-slate-700 text-slate-300",children:"取消"}),e.jsxs(m,{"code-path":"src/components/cloud/DomainManager.tsx:410:13",className:"bg-blue-600 hover:bg-blue-700",disabled:!a.name.trim()||f,onClick:z,children:[f?e.jsx(V,{"code-path":"src/components/cloud/DomainManager.tsx:415:29",className:"h-4 w-4 mr-2 animate-spin"}):r?e.jsx(O,{"code-path":"src/components/cloud/DomainManager.tsx:415:97",className:"h-4 w-4 mr-2"}):e.jsx(k,{"code-path":"src/components/cloud/DomainManager.tsx:415:134",className:"h-4 w-4 mr-2"}),r?"保存修改":"创建域名"]})]})]})})]})}export{xe as DomainManager}; diff --git a/backend/static/assets/DomainManager-CIA5bu9u.js b/backend/static/assets/DomainManager-CIA5bu9u.js deleted file mode 100644 index 0897bb4..0000000 --- a/backend/static/assets/DomainManager-CIA5bu9u.js +++ /dev/null @@ -1 +0,0 @@ -import{g as X,r as o,j as e,B as x,O as v,x as O,S as q,I as i,D as J,b as K,c as V,d as W,e as Y,f as Z,L as ee}from"./index-DfyorCky.js";import{L as m}from"./label-BK0h2apY.js";import{C as r,a as l}from"./card-C55cvSHg.js";import{B as D}from"./badge-xNW8x0G1.js";import{c as j}from"./cloud-Dzoer-2i.js";import{R as P}from"./refresh-cw-DUB_tAG-.js";import{P as I}from"./plus-CUG-9kpu.js";import{C as M}from"./circle-check-DWcXrx2k.js";import{C as B}from"./circle-x-DK79Dhg2.js";import{T as se}from"./trash-2-Dx32pOzT.js";const ae=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}]],F=X("pen",ae);function xe(){const[p,f]=o.useState([]),[y,_]=o.useState(!0),[N,T]=o.useState(""),[b,z]=o.useState("all"),[R,h]=o.useState(!1),[w,C]=o.useState(!1),[d,S]=o.useState(null),[a,t]=o.useState({name:"",registrar:"",status:"active",expire_date:"",dns_provider:"",record_count:"",ssl_enabled:!1,ssl_expire_date:""}),$=()=>{S(null),t({name:"",registrar:"",status:"active",expire_date:"",dns_provider:"",record_count:"",ssl_enabled:!1,ssl_expire_date:""})},Q=()=>{$(),h(!0)},U=s=>{S(s);const c=n=>n?n.substring(0,10):"";t({name:s.name||"",registrar:s.registrar||"",status:s.status||"active",expire_date:c(s.expire_date||""),dns_provider:s.dns_provider||s.dnsProvider||"",record_count:String(s.record_count??s.recordCount??""),ssl_enabled:s.ssl_enabled??s.sslEnabled??!1,ssl_expire_date:c(s.ssl_expire_date||"")}),h(!0)},A=async()=>{if(a.name.trim())try{C(!0);const s={name:a.name.trim(),registrar:a.registrar.trim(),status:a.status,expire_date:a.expire_date,dns_provider:a.dns_provider.trim(),record_count:Number(a.record_count)||0,ssl_enabled:a.ssl_enabled,ssl_expire_date:a.ssl_expire_date};d?await j.updateDomain(d.id,s):await j.createDomain(s),h(!1),g()}catch(s){console.error(d?"更新域名失败:":"创建域名失败:",s)}finally{C(!1)}},g=async()=>{try{_(!0);const s=await j.getDomains();f(s?.list||[])}catch(s){console.error("加载域名列表失败:",s),f([])}finally{_(!1)}};o.useEffect(()=>{g()},[]);const G=async s=>{try{await j.deleteDomain(s),g()}catch(c){console.error("删除域名失败:",c)}},L=p.filter(s=>{const c=(s.name||"").toLowerCase().includes(N.toLowerCase())||(s.registrar||"").toLowerCase().includes(N.toLowerCase()),n=b==="all"||s.status===b;return c&&n}),u={total:p.length,active:p.filter(s=>s.status==="active").length,expired:p.filter(s=>s.status==="expired").length,pending:p.filter(s=>s.status==="pending").length,sslEnabled:p.filter(s=>s.ssl_enabled||s.sslEnabled).length},H=s=>s?Math.ceil((new Date(s).getTime()-Date.now())/(1e3*60*60*24)):1/0;return e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:162:5",className:"space-y-6",children:[e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:164:7",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:165:9",children:[e.jsx("h1",{"code-path":"src/components/cloud/DomainManager.tsx:166:11",className:"text-2xl font-bold text-slate-100",children:"域名管理"}),e.jsx("p",{"code-path":"src/components/cloud/DomainManager.tsx:167:11",className:"text-slate-400 mt-1",children:"管理域名注册信息和DNS解析记录"})]}),e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:169:9",className:"flex items-center gap-2",children:[e.jsxs(x,{"code-path":"src/components/cloud/DomainManager.tsx:170:11",variant:"outline",onClick:g,className:"border-slate-700 text-slate-300",children:[e.jsx(P,{"code-path":"src/components/cloud/DomainManager.tsx:171:13",className:`h-4 w-4 mr-2 ${y?"animate-spin":""}`}),"刷新"]}),e.jsxs(x,{"code-path":"src/components/cloud/DomainManager.tsx:174:11",className:"bg-blue-600 hover:bg-blue-700",onClick:Q,children:[e.jsx(I,{"code-path":"src/components/cloud/DomainManager.tsx:175:13",className:"h-4 w-4 mr-2"}),"添加域名"]})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:182:7",className:"grid grid-cols-5 gap-4",children:[e.jsx(r,{"code-path":"src/components/cloud/DomainManager.tsx:183:9",className:"bg-slate-800 border-slate-700",children:e.jsx(l,{"code-path":"src/components/cloud/DomainManager.tsx:184:11",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:185:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:186:15",children:[e.jsx("p",{"code-path":"src/components/cloud/DomainManager.tsx:187:17",className:"text-slate-400 text-sm",children:"域名总数"}),e.jsx("p",{"code-path":"src/components/cloud/DomainManager.tsx:188:17",className:"text-2xl font-bold text-slate-100 mt-1",children:u.total})]}),e.jsx("div",{"code-path":"src/components/cloud/DomainManager.tsx:190:15",className:"w-10 h-10 rounded-lg bg-blue-500/20 flex items-center justify-center",children:e.jsx(v,{"code-path":"src/components/cloud/DomainManager.tsx:191:17",className:"h-5 w-5 text-blue-400"})})]})})}),e.jsx(r,{"code-path":"src/components/cloud/DomainManager.tsx:196:9",className:"bg-slate-800 border-slate-700",children:e.jsx(l,{"code-path":"src/components/cloud/DomainManager.tsx:197:11",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:198:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:199:15",children:[e.jsx("p",{"code-path":"src/components/cloud/DomainManager.tsx:200:17",className:"text-slate-400 text-sm",children:"正常"}),e.jsx("p",{"code-path":"src/components/cloud/DomainManager.tsx:201:17",className:"text-2xl font-bold text-green-400 mt-1",children:u.active})]}),e.jsx("div",{"code-path":"src/components/cloud/DomainManager.tsx:203:15",className:"w-10 h-10 rounded-lg bg-green-500/20 flex items-center justify-center",children:e.jsx(M,{"code-path":"src/components/cloud/DomainManager.tsx:204:17",className:"h-5 w-5 text-green-400"})})]})})}),e.jsx(r,{"code-path":"src/components/cloud/DomainManager.tsx:209:9",className:"bg-slate-800 border-slate-700",children:e.jsx(l,{"code-path":"src/components/cloud/DomainManager.tsx:210:11",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:211:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:212:15",children:[e.jsx("p",{"code-path":"src/components/cloud/DomainManager.tsx:213:17",className:"text-slate-400 text-sm",children:"已过期"}),e.jsx("p",{"code-path":"src/components/cloud/DomainManager.tsx:214:17",className:"text-2xl font-bold text-red-400 mt-1",children:u.expired})]}),e.jsx("div",{"code-path":"src/components/cloud/DomainManager.tsx:216:15",className:"w-10 h-10 rounded-lg bg-red-500/20 flex items-center justify-center",children:e.jsx(B,{"code-path":"src/components/cloud/DomainManager.tsx:217:17",className:"h-5 w-5 text-red-400"})})]})})}),e.jsx(r,{"code-path":"src/components/cloud/DomainManager.tsx:222:9",className:"bg-slate-800 border-slate-700",children:e.jsx(l,{"code-path":"src/components/cloud/DomainManager.tsx:223:11",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:224:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:225:15",children:[e.jsx("p",{"code-path":"src/components/cloud/DomainManager.tsx:226:17",className:"text-slate-400 text-sm",children:"待审核"}),e.jsx("p",{"code-path":"src/components/cloud/DomainManager.tsx:227:17",className:"text-2xl font-bold text-yellow-400 mt-1",children:u.pending})]}),e.jsx("div",{"code-path":"src/components/cloud/DomainManager.tsx:229:15",className:"w-10 h-10 rounded-lg bg-yellow-500/20 flex items-center justify-center",children:e.jsx(O,{"code-path":"src/components/cloud/DomainManager.tsx:230:17",className:"h-5 w-5 text-yellow-400"})})]})})}),e.jsx(r,{"code-path":"src/components/cloud/DomainManager.tsx:235:9",className:"bg-slate-800 border-slate-700",children:e.jsx(l,{"code-path":"src/components/cloud/DomainManager.tsx:236:11",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:237:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:238:15",children:[e.jsx("p",{"code-path":"src/components/cloud/DomainManager.tsx:239:17",className:"text-slate-400 text-sm",children:"SSL证书"}),e.jsx("p",{"code-path":"src/components/cloud/DomainManager.tsx:240:17",className:"text-2xl font-bold text-cyan-400 mt-1",children:u.sslEnabled})]}),e.jsx("div",{"code-path":"src/components/cloud/DomainManager.tsx:242:15",className:"w-10 h-10 rounded-lg bg-cyan-500/20 flex items-center justify-center",children:e.jsx(M,{"code-path":"src/components/cloud/DomainManager.tsx:243:17",className:"h-5 w-5 text-cyan-400"})})]})})})]}),e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:251:7",className:"flex items-center gap-4",children:[e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:252:9",className:"relative flex-1 max-w-md",children:[e.jsx(q,{"code-path":"src/components/cloud/DomainManager.tsx:253:11",className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-slate-400"}),e.jsx(i,{"code-path":"src/components/cloud/DomainManager.tsx:254:11",placeholder:"搜索域名...",value:N,onChange:s=>T(s.target.value),className:"pl-10 bg-slate-800 border-slate-700 text-slate-100"})]}),e.jsxs("select",{"code-path":"src/components/cloud/DomainManager.tsx:261:9",value:b,onChange:s=>z(s.target.value),className:"px-3 py-2 bg-slate-800 border border-slate-700 rounded-md text-slate-100 text-sm",children:[e.jsx("option",{"code-path":"src/components/cloud/DomainManager.tsx:266:11",value:"all",children:"全部状态"}),e.jsx("option",{"code-path":"src/components/cloud/DomainManager.tsx:267:11",value:"active",children:"正常"}),e.jsx("option",{"code-path":"src/components/cloud/DomainManager.tsx:268:11",value:"expired",children:"已过期"}),e.jsx("option",{"code-path":"src/components/cloud/DomainManager.tsx:269:11",value:"pending",children:"待审核"})]})]}),y?e.jsx(r,{"code-path":"src/components/cloud/DomainManager.tsx:275:9",className:"bg-slate-800 border-slate-700",children:e.jsxs(l,{"code-path":"src/components/cloud/DomainManager.tsx:276:11",className:"p-12 text-center text-slate-500",children:[e.jsx(P,{"code-path":"src/components/cloud/DomainManager.tsx:277:13",className:"h-6 w-6 animate-spin mx-auto mb-3"}),"加载中..."]})}):L.length===0?e.jsx(r,{"code-path":"src/components/cloud/DomainManager.tsx:282:9",className:"bg-slate-800 border-slate-700",children:e.jsx(l,{"code-path":"src/components/cloud/DomainManager.tsx:283:11",className:"p-12 text-center text-slate-500",children:"暂无域名数据"})}):e.jsx("div",{"code-path":"src/components/cloud/DomainManager.tsx:286:9",className:"space-y-3",children:L.map(s=>{const c=s.ssl_enabled||s.sslEnabled,n=s.expire_date||s.expireDate||"",E=s.ssl_expire_date||s.sslExpireDate||"",k=H(n);return e.jsx(r,{"code-path":"src/components/cloud/DomainManager.tsx:293:15",className:"bg-slate-800 border-slate-700",children:e.jsx(l,{"code-path":"src/components/cloud/DomainManager.tsx:294:17",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:295:19",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:296:21",className:"flex items-center gap-4",children:[e.jsx("div",{"code-path":"src/components/cloud/DomainManager.tsx:297:23",className:"w-10 h-10 rounded-lg bg-gradient-to-br from-blue-500 to-cyan-500 flex items-center justify-center",children:e.jsx(v,{"code-path":"src/components/cloud/DomainManager.tsx:298:25",className:"h-5 w-5 text-white"})}),e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:300:23",children:[e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:301:25",className:"flex items-center gap-2",children:[e.jsx("h3",{"code-path":"src/components/cloud/DomainManager.tsx:302:27",className:"font-medium text-slate-100 text-lg",children:s.name}),s.status==="active"&&e.jsxs(D,{"code-path":"src/components/cloud/DomainManager.tsx:304:29",className:"bg-green-500/20 text-green-400 border-0",children:[e.jsx(M,{"code-path":"src/components/cloud/DomainManager.tsx:305:31",className:"h-3 w-3 mr-1"}),"正常"]}),s.status==="expired"&&e.jsxs(D,{"code-path":"src/components/cloud/DomainManager.tsx:310:29",className:"bg-red-500/20 text-red-400 border-0",children:[e.jsx(B,{"code-path":"src/components/cloud/DomainManager.tsx:311:31",className:"h-3 w-3 mr-1"}),"已过期"]}),s.status==="pending"&&e.jsxs(D,{"code-path":"src/components/cloud/DomainManager.tsx:316:29",className:"bg-yellow-500/20 text-yellow-400 border-0",children:[e.jsx(O,{"code-path":"src/components/cloud/DomainManager.tsx:317:31",className:"h-3 w-3 mr-1"}),"待审核"]}),c&&e.jsxs(D,{"code-path":"src/components/cloud/DomainManager.tsx:322:29",className:"bg-cyan-500/20 text-cyan-400 border-0",children:[e.jsx(M,{"code-path":"src/components/cloud/DomainManager.tsx:323:31",className:"h-3 w-3 mr-1"}),"SSL"]})]}),e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:328:25",className:"flex items-center gap-4 mt-1 text-sm text-slate-400",children:[e.jsxs("span",{"code-path":"src/components/cloud/DomainManager.tsx:329:27",children:["注册商: ",s.registrar||"-"]}),e.jsxs("span",{"code-path":"src/components/cloud/DomainManager.tsx:330:27",children:["DNS: ",s.dns_provider||s.dnsProvider||"-"]}),e.jsxs("span",{"code-path":"src/components/cloud/DomainManager.tsx:331:27",children:["解析记录: ",s.record_count??s.recordCount??0,"条"]})]})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:335:21",className:"flex items-center gap-4",children:[e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:336:23",className:"text-right",children:[e.jsx("p",{"code-path":"src/components/cloud/DomainManager.tsx:337:25",className:"text-sm text-slate-400",children:"到期时间"}),e.jsxs("p",{"code-path":"src/components/cloud/DomainManager.tsx:338:25",className:`text-sm font-medium ${k<30?"text-red-400":"text-slate-200"}`,children:[n?n.substring(0,10):"-",n&&` (${k}天)`,c&&E&&e.jsxs("span",{"code-path":"src/components/cloud/DomainManager.tsx:341:29",className:"text-slate-500",children:[" · SSL: ",E.substring(0,10)]})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:345:23",className:"flex items-center gap-1",children:[e.jsx(x,{"code-path":"src/components/cloud/DomainManager.tsx:346:25",variant:"ghost",size:"icon",className:"h-8 w-8 text-slate-400 hover:text-blue-400",onClick:()=>U(s),children:e.jsx(F,{"code-path":"src/components/cloud/DomainManager.tsx:352:27",className:"h-4 w-4"})}),e.jsx(x,{"code-path":"src/components/cloud/DomainManager.tsx:354:25",variant:"ghost",size:"icon",className:"h-8 w-8 text-slate-400 hover:text-red-400",onClick:()=>G(s.id),children:e.jsx(se,{"code-path":"src/components/cloud/DomainManager.tsx:360:27",className:"h-4 w-4"})})]})]})]})})},s.id)})}),e.jsx(J,{"code-path":"src/components/cloud/DomainManager.tsx:373:7",open:R,onOpenChange:h,children:e.jsxs(K,{"code-path":"src/components/cloud/DomainManager.tsx:374:9",className:"bg-slate-800 border-slate-700 text-slate-100 max-w-lg",children:[e.jsxs(V,{"code-path":"src/components/cloud/DomainManager.tsx:375:11",children:[e.jsxs(W,{"code-path":"src/components/cloud/DomainManager.tsx:376:13",className:"text-slate-100 flex items-center gap-2",children:[e.jsx(v,{"code-path":"src/components/cloud/DomainManager.tsx:377:15",className:"h-5 w-5 text-blue-400"}),d?"编辑域名":"添加域名"]}),e.jsx(Y,{"code-path":"src/components/cloud/DomainManager.tsx:380:13",className:"text-slate-400",children:d?"修改域名注册信息、DNS 配置和 SSL 证书状态":"录入域名信息,包括注册商、DNS 服务商和到期时间"})]}),e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:385:11",className:"space-y-4 py-2",children:[e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:386:13",className:"space-y-2",children:[e.jsx(m,{"code-path":"src/components/cloud/DomainManager.tsx:387:15",className:"text-slate-300",children:"域名 *"}),e.jsx(i,{"code-path":"src/components/cloud/DomainManager.tsx:388:15",placeholder:"example.com",value:a.name,onChange:s=>t({...a,name:s.target.value}),className:"bg-slate-900 border-slate-700 text-slate-100"})]}),e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:396:13",className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:397:15",className:"space-y-2",children:[e.jsx(m,{"code-path":"src/components/cloud/DomainManager.tsx:398:17",className:"text-slate-300",children:"注册商"}),e.jsx(i,{"code-path":"src/components/cloud/DomainManager.tsx:399:17",placeholder:"阿里云 / Cloudflare ...",value:a.registrar,onChange:s=>t({...a,registrar:s.target.value}),className:"bg-slate-900 border-slate-700 text-slate-100"})]}),e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:406:15",className:"space-y-2",children:[e.jsx(m,{"code-path":"src/components/cloud/DomainManager.tsx:407:17",className:"text-slate-300",children:"状态"}),e.jsxs("select",{"code-path":"src/components/cloud/DomainManager.tsx:408:17",value:a.status,onChange:s=>t({...a,status:s.target.value}),className:"w-full px-3 py-2 bg-slate-900 border border-slate-700 rounded-md text-slate-100 text-sm",children:[e.jsx("option",{"code-path":"src/components/cloud/DomainManager.tsx:413:19",value:"active",children:"正常"}),e.jsx("option",{"code-path":"src/components/cloud/DomainManager.tsx:414:19",value:"expired",children:"已过期"}),e.jsx("option",{"code-path":"src/components/cloud/DomainManager.tsx:415:19",value:"pending",children:"待审核"})]})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:420:13",className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:421:15",className:"space-y-2",children:[e.jsx(m,{"code-path":"src/components/cloud/DomainManager.tsx:422:17",className:"text-slate-300",children:"到期时间"}),e.jsx(i,{"code-path":"src/components/cloud/DomainManager.tsx:423:17",type:"date",value:a.expire_date,onChange:s=>t({...a,expire_date:s.target.value}),className:"bg-slate-900 border-slate-700 text-slate-100"})]}),e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:430:15",className:"space-y-2",children:[e.jsx(m,{"code-path":"src/components/cloud/DomainManager.tsx:431:17",className:"text-slate-300",children:"DNS 服务商"}),e.jsx(i,{"code-path":"src/components/cloud/DomainManager.tsx:432:17",placeholder:"Cloudflare / DNSPod ...",value:a.dns_provider,onChange:s=>t({...a,dns_provider:s.target.value}),className:"bg-slate-900 border-slate-700 text-slate-100"})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:441:13",className:"space-y-2",children:[e.jsx(m,{"code-path":"src/components/cloud/DomainManager.tsx:442:15",className:"text-slate-300",children:"解析记录数"}),e.jsx(i,{"code-path":"src/components/cloud/DomainManager.tsx:443:15",type:"number",placeholder:"0",value:a.record_count,onChange:s=>t({...a,record_count:s.target.value}),className:"bg-slate-900 border-slate-700 text-slate-100"})]}),e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:452:13",className:"grid grid-cols-2 gap-4 items-end",children:[e.jsxs("div",{"code-path":"src/components/cloud/DomainManager.tsx:453:15",className:"space-y-2",children:[e.jsx(m,{"code-path":"src/components/cloud/DomainManager.tsx:454:17",className:"text-slate-300",children:"SSL 证书到期"}),e.jsx(i,{"code-path":"src/components/cloud/DomainManager.tsx:455:17",type:"date",value:a.ssl_expire_date,onChange:s=>t({...a,ssl_expire_date:s.target.value}),disabled:!a.ssl_enabled,className:"bg-slate-900 border-slate-700 text-slate-100 disabled:opacity-40"})]}),e.jsxs("label",{"code-path":"src/components/cloud/DomainManager.tsx:463:15",className:"flex items-center gap-2 cursor-pointer pb-2",children:[e.jsx("input",{"code-path":"src/components/cloud/DomainManager.tsx:464:17",type:"checkbox",checked:a.ssl_enabled,onChange:s=>t({...a,ssl_enabled:s.target.checked}),className:"h-4 w-4 rounded border-slate-600 bg-slate-900 accent-cyan-500"}),e.jsx("span",{"code-path":"src/components/cloud/DomainManager.tsx:470:17",className:"text-slate-300 text-sm",children:"启用 SSL"})]})]})]}),e.jsxs(Z,{"code-path":"src/components/cloud/DomainManager.tsx:475:11",children:[e.jsx(x,{"code-path":"src/components/cloud/DomainManager.tsx:476:13",variant:"outline",onClick:()=>h(!1),className:"border-slate-700 text-slate-300",children:"取消"}),e.jsxs(x,{"code-path":"src/components/cloud/DomainManager.tsx:479:13",className:"bg-blue-600 hover:bg-blue-700",disabled:!a.name.trim()||w,onClick:A,children:[w?e.jsx(ee,{"code-path":"src/components/cloud/DomainManager.tsx:484:29",className:"h-4 w-4 mr-2 animate-spin"}):d?e.jsx(F,{"code-path":"src/components/cloud/DomainManager.tsx:484:97",className:"h-4 w-4 mr-2"}):e.jsx(I,{"code-path":"src/components/cloud/DomainManager.tsx:484:134",className:"h-4 w-4 mr-2"}),d?"保存修改":"创建域名"]})]})]})})]})}export{xe as DomainManager}; diff --git a/backend/static/assets/EventsPage-CjlxkpqG.js b/backend/static/assets/EventsPage-CjlxkpqG.js new file mode 100644 index 0000000..f2e259c --- /dev/null +++ b/backend/static/assets/EventsPage-CjlxkpqG.js @@ -0,0 +1 @@ +import{k as he,m as ue,r as n,j as e,n as q,o as J,H as be,B as ge,A as ve,T as E,I as Q,S as ke}from"./index-Dmami9WE.js";import{C as x,a as p}from"./card-CIfC-8Rh.js";import{B as g}from"./badge-3UzCvU7L.js";import{S as N,a as f,b as y,c as w,d as o}from"./select-DUbxjT0z.js";import{T as Ee,a as je,b as L,c as h,d as Pe,e as d}from"./table-CG4mjNfb.js";import{k as S}from"./kubernetes-D2-GnE0t.js";import{R as Ne}from"./refresh-cw-CTBERyFc.js";import{L as Z}from"./layers-Dv4yGMGm.js";import{R as W,C as D,X as K,Y as M,T as V,B as H,a as ee}from"./generateCategoricalChart-ZqCvxO-S.js";import{B as I}from"./BarChart-CLIO1OEu.js";import"./index-CtCQcvyh.js";import"./chevron-up-Cq4GPopa.js";const se=["#EF4444","#F59E0B","#3B82F6","#8B5CF6","#EC4899","#14B8A6","#F97316","#6366F1","#84CC16","#06B6D4"];function Fe(){const{clusterCode:te}=he(),O=ue(),[C,U]=n.useState(!1),[m,X]=n.useState([]),[ne,ae]=n.useState([]),[ce,re]=n.useState([]),[i,oe]=n.useState("all"),[j,le]=n.useState("all"),[T,xe]=n.useState("0"),[c,Y]=n.useState(te||""),[r,G]=n.useState(null),[u,B]=n.useState(""),[b,R]=n.useState(""),[pe,de]=n.useState(null);n.useEffect(()=>{S.getClusters().then(s=>{const t=s?.list||[];if(ae(t),!c&&t.length>0){const a=t[0].code||String(t[0].id);Y(a),O(`/kubernetes/${a}/events`,{replace:!0})}}).catch(()=>{})},[]),n.useEffect(()=>{c&&S.getNamespaces(c).then(s=>{re(Array.isArray(s)?s:s?.list||s?.data||[])}).catch(()=>{})},[c]);const _=n.useCallback(async()=>{if(c){U(!0);try{const s=i==="all"?void 0:i,t=j==="all"?void 0:j,a=await S.getEvents(c,s,t);X(Array.isArray(a)?a:a?.list||[])}catch{X([])}finally{U(!1)}}},[c,i,j]),A=n.useCallback(async()=>{if(c)try{const s=i==="all"?void 0:i,t=parseInt(T)||void 0,a=await S.getEventsSummary(c,s,t);G(a||null)}catch{G(null)}},[c,i,T]);n.useEffect(()=>{_()},[_]),n.useEffect(()=>{A()},[A]);const v=n.useMemo(()=>{let s=m;return u&&(s=s.filter(t=>t.reason===u)),b&&(s=s.filter(t=>(t.object||"").startsWith(b+"/"))),s},[m,u,b]),me=n.useMemo(()=>m.filter(s=>s.type==="Warning").length,[m]),ie=n.useMemo(()=>m.filter(s=>s.type==="Normal").length,[m]),k=n.useMemo(()=>(r?.by_reason||[]).map(t=>({name:t.reason||"Unknown",count:t.count})),[r]),z=n.useMemo(()=>(r?.by_namespace||[]).map(t=>({name:t.namespace||"",count:t.count})),[r]),$=n.useMemo(()=>(r?.by_kind||[]).map(t=>({name:t.kind||"Unknown",count:t.count})),[r]),F=s=>s?s.replace("T"," ").substring(0,19):"-",P=s=>{if(!s)return"";const t=Date.now()-new Date(s).getTime();if(t<0)return"";const a=Math.floor(t/6e4);if(a<1)return"刚刚";if(a<60)return`${a}分钟前`;const l=Math.floor(a/60);return l<24?`${l}小时前`:`${Math.floor(l/24)}天前`};return e.jsxs("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:134:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:136:7",className:"flex items-center gap-2 text-sm text-slate-500",children:[e.jsx(q,{"code-path":"src/components/kubernetes/EventsPage.tsx:137:9",to:"/kubernetes",className:"hover:text-slate-300",children:"集群"}),c&&e.jsxs(e.Fragment,{children:[e.jsx(J,{"code-path":"src/components/kubernetes/EventsPage.tsx:138:29",className:"h-3 w-3"}),e.jsx(q,{"code-path":"src/components/kubernetes/EventsPage.tsx:138:65",to:`/kubernetes/${c}`,className:"hover:text-slate-300",children:c})]}),e.jsx(J,{"code-path":"src/components/kubernetes/EventsPage.tsx:139:9",className:"h-3 w-3"}),e.jsx("span",{"code-path":"src/components/kubernetes/EventsPage.tsx:139:45",className:"text-slate-300",children:"事件"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:143:7",className:"flex items-center justify-between flex-wrap gap-3",children:[e.jsxs("h2",{"code-path":"src/components/kubernetes/EventsPage.tsx:144:9",className:"text-lg font-semibold text-slate-100 flex items-center gap-2",children:[e.jsx(be,{"code-path":"src/components/kubernetes/EventsPage.tsx:145:11",className:"h-5 w-5 text-yellow-400"}),"事件中心"]}),e.jsxs("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:147:9",className:"flex items-center gap-2 flex-wrap",children:[e.jsxs(N,{"code-path":"src/components/kubernetes/EventsPage.tsx:148:11",value:c,onValueChange:s=>{Y(s),O(`/kubernetes/${s}/events`)},children:[e.jsx(f,{"code-path":"src/components/kubernetes/EventsPage.tsx:149:13",className:"w-40 h-8 text-xs bg-slate-800 border-slate-700",children:e.jsx(y,{"code-path":"src/components/kubernetes/EventsPage.tsx:149:87"})}),e.jsx(w,{"code-path":"src/components/kubernetes/EventsPage.tsx:150:13",className:"bg-slate-800 border-slate-700",children:ne.map(s=>e.jsx(o,{"code-path":"src/components/kubernetes/EventsPage.tsx:151:42",value:s.code||String(s.id),className:"text-xs",children:s.name||s.code},s.id))})]}),e.jsxs(N,{"code-path":"src/components/kubernetes/EventsPage.tsx:154:11",value:i,onValueChange:s=>{oe(s),B(""),R("")},children:[e.jsx(f,{"code-path":"src/components/kubernetes/EventsPage.tsx:155:13",className:"w-36 h-8 text-xs bg-slate-800 border-slate-700",children:e.jsx(y,{"code-path":"src/components/kubernetes/EventsPage.tsx:155:87",placeholder:"命名空间"})}),e.jsxs(w,{"code-path":"src/components/kubernetes/EventsPage.tsx:156:13",className:"bg-slate-800 border-slate-700",children:[e.jsx(o,{"code-path":"src/components/kubernetes/EventsPage.tsx:157:15",value:"all",className:"text-xs",children:"所有命名空间"}),ce.map(s=>e.jsx(o,{"code-path":"src/components/kubernetes/EventsPage.tsx:158:36",value:s,className:"text-xs",children:s},s))]})]}),e.jsxs(N,{"code-path":"src/components/kubernetes/EventsPage.tsx:161:11",value:T,onValueChange:s=>xe(s),children:[e.jsx(f,{"code-path":"src/components/kubernetes/EventsPage.tsx:162:13",className:"w-32 h-8 text-xs bg-slate-800 border-slate-700",children:e.jsx(y,{"code-path":"src/components/kubernetes/EventsPage.tsx:162:87"})}),e.jsxs(w,{"code-path":"src/components/kubernetes/EventsPage.tsx:163:13",className:"bg-slate-800 border-slate-700",children:[e.jsx(o,{"code-path":"src/components/kubernetes/EventsPage.tsx:164:15",value:"0",className:"text-xs",children:"全部时间"}),e.jsx(o,{"code-path":"src/components/kubernetes/EventsPage.tsx:165:15",value:"1",className:"text-xs",children:"近 1 小时"}),e.jsx(o,{"code-path":"src/components/kubernetes/EventsPage.tsx:166:15",value:"6",className:"text-xs",children:"近 6 小时"}),e.jsx(o,{"code-path":"src/components/kubernetes/EventsPage.tsx:167:15",value:"24",className:"text-xs",children:"近 24 小时"}),e.jsx(o,{"code-path":"src/components/kubernetes/EventsPage.tsx:168:15",value:"168",className:"text-xs",children:"近 7 天"})]})]}),e.jsxs(ge,{"code-path":"src/components/kubernetes/EventsPage.tsx:171:11",variant:"outline",size:"sm",className:"h-8 border-slate-700 text-slate-300 text-xs",onClick:()=>{_(),A()},disabled:C,children:[e.jsx(Ne,{"code-path":"src/components/kubernetes/EventsPage.tsx:172:13",className:`h-3 w-3 mr-1 ${C?"animate-spin":""}`}),"刷新"]})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:178:7",className:"grid grid-cols-2 md:grid-cols-4 gap-3",children:[e.jsx(x,{"code-path":"src/components/kubernetes/EventsPage.tsx:179:9",className:"bg-slate-900 border-slate-800",children:e.jsx(p,{"code-path":"src/components/kubernetes/EventsPage.tsx:180:11",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:181:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:182:15",children:[e.jsx("p",{"code-path":"src/components/kubernetes/EventsPage.tsx:183:17",className:"text-xs text-slate-500 mb-1",children:"事件总数"}),e.jsx("p",{"code-path":"src/components/kubernetes/EventsPage.tsx:184:17",className:"text-2xl font-bold text-slate-100",children:r?.total??m.length})]}),e.jsx(ve,{"code-path":"src/components/kubernetes/EventsPage.tsx:186:15",className:"h-8 w-8 text-slate-600"})]})})}),e.jsx(x,{"code-path":"src/components/kubernetes/EventsPage.tsx:190:9",className:"bg-slate-900 border-red-900/40",children:e.jsx(p,{"code-path":"src/components/kubernetes/EventsPage.tsx:191:11",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:192:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:193:15",children:[e.jsx("p",{"code-path":"src/components/kubernetes/EventsPage.tsx:194:17",className:"text-xs text-slate-500 mb-1",children:"告警事件"}),e.jsx("p",{"code-path":"src/components/kubernetes/EventsPage.tsx:195:17",className:"text-2xl font-bold text-red-400",children:r?.warning_count??me}),e.jsx("p",{"code-path":"src/components/kubernetes/EventsPage.tsx:196:17",className:"text-[10px] text-slate-600 mt-0.5",children:"Warning 累计触发次数"})]}),e.jsx(E,{"code-path":"src/components/kubernetes/EventsPage.tsx:198:15",className:"h-8 w-8 text-red-500/30"})]})})}),e.jsx(x,{"code-path":"src/components/kubernetes/EventsPage.tsx:202:9",className:"bg-slate-900 border-emerald-900/40",children:e.jsx(p,{"code-path":"src/components/kubernetes/EventsPage.tsx:203:11",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:204:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:205:15",children:[e.jsx("p",{"code-path":"src/components/kubernetes/EventsPage.tsx:206:17",className:"text-xs text-slate-500 mb-1",children:"正常事件"}),e.jsx("p",{"code-path":"src/components/kubernetes/EventsPage.tsx:207:17",className:"text-2xl font-bold text-emerald-400",children:r?.normal_count??ie})]}),e.jsx(Q,{"code-path":"src/components/kubernetes/EventsPage.tsx:209:15",className:"h-8 w-8 text-emerald-500/30"})]})})}),e.jsx(x,{"code-path":"src/components/kubernetes/EventsPage.tsx:213:9",className:"bg-slate-900 border-slate-800",children:e.jsx(p,{"code-path":"src/components/kubernetes/EventsPage.tsx:214:11",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:215:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:216:15",children:[e.jsx("p",{"code-path":"src/components/kubernetes/EventsPage.tsx:217:17",className:"text-xs text-slate-500 mb-1",children:"告警类型数"}),e.jsx("p",{"code-path":"src/components/kubernetes/EventsPage.tsx:218:17",className:"text-2xl font-bold text-amber-400",children:k.length}),e.jsx("p",{"code-path":"src/components/kubernetes/EventsPage.tsx:219:17",className:"text-[10px] text-slate-600 mt-0.5",children:"不同 Reason 数量"})]}),e.jsx(Z,{"code-path":"src/components/kubernetes/EventsPage.tsx:221:15",className:"h-8 w-8 text-amber-500/30"})]})})})]}),(u||b)&&e.jsxs("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:229:9",className:"flex items-center gap-2",children:[e.jsx("span",{"code-path":"src/components/kubernetes/EventsPage.tsx:230:11",className:"text-xs text-slate-500",children:"已选过滤:"}),u&&e.jsxs(g,{"code-path":"src/components/kubernetes/EventsPage.tsx:232:13",className:"bg-amber-500/20 text-amber-300 border-amber-500/30 cursor-pointer text-xs",onClick:()=>B(""),children:["原因: ",u," ✕"]}),b&&e.jsxs(g,{"code-path":"src/components/kubernetes/EventsPage.tsx:237:13",className:"bg-blue-500/20 text-blue-300 border-blue-500/30 cursor-pointer text-xs",onClick:()=>R(""),children:["类型: ",b," ✕"]})]}),k.length>0&&e.jsxs("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:246:9",className:"grid grid-cols-1 lg:grid-cols-3 gap-4",children:[e.jsx(x,{"code-path":"src/components/kubernetes/EventsPage.tsx:248:11",className:"bg-slate-900 border-slate-800",children:e.jsxs(p,{"code-path":"src/components/kubernetes/EventsPage.tsx:249:13",className:"p-4",children:[e.jsxs("h3",{"code-path":"src/components/kubernetes/EventsPage.tsx:250:15",className:"text-sm font-medium text-slate-300 mb-3 flex items-center gap-1.5",children:[e.jsx(E,{"code-path":"src/components/kubernetes/EventsPage.tsx:251:17",className:"h-4 w-4 text-amber-400"}),"告警原因 Top ",k.length]}),e.jsx(W,{"code-path":"src/components/kubernetes/EventsPage.tsx:253:15",width:"100%",height:220,children:e.jsxs(I,{"code-path":"src/components/kubernetes/EventsPage.tsx:254:17",data:k,layout:"vertical",margin:{left:10,right:10,top:0,bottom:0},children:[e.jsx(D,{"code-path":"src/components/kubernetes/EventsPage.tsx:255:19",strokeDasharray:"3 3",stroke:"#1e293b",horizontal:!1}),e.jsx(K,{"code-path":"src/components/kubernetes/EventsPage.tsx:256:19",type:"number",tick:{fill:"#64748b",fontSize:10},axisLine:{stroke:"#334155"}}),e.jsx(M,{"code-path":"src/components/kubernetes/EventsPage.tsx:257:19",type:"category",dataKey:"name",tick:{fill:"#94a3b8",fontSize:10},width:100,axisLine:{stroke:"#334155"}}),e.jsx(V,{"code-path":"src/components/kubernetes/EventsPage.tsx:258:19",contentStyle:{background:"#1e293b",border:"1px solid #334155",borderRadius:"6px",fontSize:"12px"},labelStyle:{color:"#e2e8f0"}}),e.jsx(H,{"code-path":"src/components/kubernetes/EventsPage.tsx:262:19",dataKey:"count",radius:[0,4,4,0],cursor:"pointer",onClick:s=>B(t=>t===s?.name?"":s?.name),children:k.map((s,t)=>e.jsx(ee,{"code-path":"src/components/kubernetes/EventsPage.tsx:264:23",fill:se[t%se.length]},t))})]})}),e.jsx("p",{"code-path":"src/components/kubernetes/EventsPage.tsx:269:15",className:"text-[10px] text-slate-600 text-center mt-1",children:"点击柱状图过滤事件列表"})]})}),z.length>0&&e.jsx(x,{"code-path":"src/components/kubernetes/EventsPage.tsx:275:13",className:"bg-slate-900 border-slate-800",children:e.jsxs(p,{"code-path":"src/components/kubernetes/EventsPage.tsx:276:15",className:"p-4",children:[e.jsxs("h3",{"code-path":"src/components/kubernetes/EventsPage.tsx:277:17",className:"text-sm font-medium text-slate-300 mb-3 flex items-center gap-1.5",children:[e.jsx(ke,{"code-path":"src/components/kubernetes/EventsPage.tsx:278:19",className:"h-4 w-4 text-blue-400"}),"命名空间分布 Top ",z.length]}),e.jsx(W,{"code-path":"src/components/kubernetes/EventsPage.tsx:280:17",width:"100%",height:220,children:e.jsxs(I,{"code-path":"src/components/kubernetes/EventsPage.tsx:281:19",data:z,layout:"vertical",margin:{left:10,right:10,top:0,bottom:0},children:[e.jsx(D,{"code-path":"src/components/kubernetes/EventsPage.tsx:282:21",strokeDasharray:"3 3",stroke:"#1e293b",horizontal:!1}),e.jsx(K,{"code-path":"src/components/kubernetes/EventsPage.tsx:283:21",type:"number",tick:{fill:"#64748b",fontSize:10},axisLine:{stroke:"#334155"}}),e.jsx(M,{"code-path":"src/components/kubernetes/EventsPage.tsx:284:21",type:"category",dataKey:"name",tick:{fill:"#94a3b8",fontSize:10},width:80,axisLine:{stroke:"#334155"}}),e.jsx(V,{"code-path":"src/components/kubernetes/EventsPage.tsx:285:21",contentStyle:{background:"#1e293b",border:"1px solid #334155",borderRadius:"6px",fontSize:"12px"},labelStyle:{color:"#e2e8f0"}}),e.jsx(H,{"code-path":"src/components/kubernetes/EventsPage.tsx:289:21",dataKey:"count",radius:[0,4,4,0],fill:"#3B82F6",fillOpacity:.7})]})})]})}),$.length>0&&e.jsx(x,{"code-path":"src/components/kubernetes/EventsPage.tsx:298:13",className:"bg-slate-900 border-slate-800",children:e.jsxs(p,{"code-path":"src/components/kubernetes/EventsPage.tsx:299:15",className:"p-4",children:[e.jsxs("h3",{"code-path":"src/components/kubernetes/EventsPage.tsx:300:17",className:"text-sm font-medium text-slate-300 mb-3 flex items-center gap-1.5",children:[e.jsx(Z,{"code-path":"src/components/kubernetes/EventsPage.tsx:301:19",className:"h-4 w-4 text-purple-400"}),"资源类型分布"]}),e.jsx(W,{"code-path":"src/components/kubernetes/EventsPage.tsx:303:17",width:"100%",height:220,children:e.jsxs(I,{"code-path":"src/components/kubernetes/EventsPage.tsx:304:19",data:$,layout:"vertical",margin:{left:10,right:10,top:0,bottom:0},children:[e.jsx(D,{"code-path":"src/components/kubernetes/EventsPage.tsx:305:21",strokeDasharray:"3 3",stroke:"#1e293b",horizontal:!1}),e.jsx(K,{"code-path":"src/components/kubernetes/EventsPage.tsx:306:21",type:"number",tick:{fill:"#64748b",fontSize:10},axisLine:{stroke:"#334155"}}),e.jsx(M,{"code-path":"src/components/kubernetes/EventsPage.tsx:307:21",type:"category",dataKey:"name",tick:{fill:"#94a3b8",fontSize:10},width:80,axisLine:{stroke:"#334155"}}),e.jsx(V,{"code-path":"src/components/kubernetes/EventsPage.tsx:308:21",contentStyle:{background:"#1e293b",border:"1px solid #334155",borderRadius:"6px",fontSize:"12px"},labelStyle:{color:"#e2e8f0"}}),e.jsx(H,{"code-path":"src/components/kubernetes/EventsPage.tsx:312:21",dataKey:"count",radius:[0,4,4,0],cursor:"pointer",onClick:s=>R(t=>t===s?.name?"":s?.name),children:$.map((s,t)=>e.jsx(ee,{"code-path":"src/components/kubernetes/EventsPage.tsx:314:25",fill:["#8B5CF6","#6366F1","#EC4899","#14B8A6"][t%4],fillOpacity:.7},t))})]})}),e.jsx("p",{"code-path":"src/components/kubernetes/EventsPage.tsx:319:17",className:"text-[10px] text-slate-600 text-center mt-1",children:"点击柱状图过滤事件列表"})]})})]}),r?.recent_warnings?.length>0&&e.jsx(x,{"code-path":"src/components/kubernetes/EventsPage.tsx:328:9",className:"bg-red-950/20 border-red-900/30",children:e.jsxs(p,{"code-path":"src/components/kubernetes/EventsPage.tsx:329:11",className:"p-4",children:[e.jsxs("h3",{"code-path":"src/components/kubernetes/EventsPage.tsx:330:13",className:"text-sm font-medium text-red-300 mb-3 flex items-center gap-1.5",children:[e.jsx(E,{"code-path":"src/components/kubernetes/EventsPage.tsx:331:15",className:"h-4 w-4"}),"最新告警事件 (",r.recent_warnings.length,")"]}),e.jsx("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:333:13",className:"space-y-1.5",children:r.recent_warnings.map((s,t)=>e.jsxs("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:335:17",className:"flex items-start gap-2 text-xs py-1.5 px-2 rounded bg-slate-900/40 hover:bg-slate-800/40 transition-colors",children:[e.jsx(E,{"code-path":"src/components/kubernetes/EventsPage.tsx:336:19",className:"h-3.5 w-3.5 text-red-400 mt-0.5 shrink-0"}),e.jsxs("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:337:19",className:"flex-1 min-w-0",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:338:21",className:"flex items-center gap-2 flex-wrap",children:[e.jsx(g,{"code-path":"src/components/kubernetes/EventsPage.tsx:339:23",variant:"outline",className:"text-[10px] h-4 px-1 border-red-500/30 text-red-400",children:s.reason}),e.jsx("span",{"code-path":"src/components/kubernetes/EventsPage.tsx:340:23",className:"text-slate-500 font-mono text-[11px]",children:s.object}),e.jsx("span",{"code-path":"src/components/kubernetes/EventsPage.tsx:341:23",className:"text-slate-600 text-[10px]",children:s.namespace}),e.jsxs("span",{"code-path":"src/components/kubernetes/EventsPage.tsx:342:23",className:"text-slate-600 text-[10px]",children:["×",s.count]}),e.jsx("span",{"code-path":"src/components/kubernetes/EventsPage.tsx:343:23",className:"text-slate-600 text-[10px] ml-auto",children:P(s.last_time)})]}),e.jsx("p",{"code-path":"src/components/kubernetes/EventsPage.tsx:345:21",className:"text-slate-400 mt-0.5 truncate",title:s.message,children:s.message})]})]},t))})]})}),e.jsx(x,{"code-path":"src/components/kubernetes/EventsPage.tsx:355:7",className:"bg-slate-900 border-slate-800",children:e.jsxs(p,{"code-path":"src/components/kubernetes/EventsPage.tsx:356:9",className:"p-0",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:357:11",className:"flex items-center justify-between px-4 py-2 border-b border-slate-800",children:[e.jsxs("span",{"code-path":"src/components/kubernetes/EventsPage.tsx:358:13",className:"text-sm text-slate-400",children:["事件列表 (",v.length,")"]}),e.jsxs(N,{"code-path":"src/components/kubernetes/EventsPage.tsx:359:13",value:j,onValueChange:le,children:[e.jsx(f,{"code-path":"src/components/kubernetes/EventsPage.tsx:360:15",className:"w-28 h-7 text-xs bg-slate-800 border-slate-700",children:e.jsx(y,{"code-path":"src/components/kubernetes/EventsPage.tsx:360:89"})}),e.jsxs(w,{"code-path":"src/components/kubernetes/EventsPage.tsx:361:15",className:"bg-slate-800 border-slate-700",children:[e.jsx(o,{"code-path":"src/components/kubernetes/EventsPage.tsx:362:17",value:"all",className:"text-xs",children:"所有类型"}),e.jsx(o,{"code-path":"src/components/kubernetes/EventsPage.tsx:363:17",value:"Warning",className:"text-xs",children:"⚠ Warning"}),e.jsx(o,{"code-path":"src/components/kubernetes/EventsPage.tsx:364:17",value:"Normal",className:"text-xs",children:"ℹ Normal"})]})]})]}),e.jsxs(Ee,{"code-path":"src/components/kubernetes/EventsPage.tsx:368:11",children:[e.jsx(je,{"code-path":"src/components/kubernetes/EventsPage.tsx:369:13",children:e.jsxs(L,{"code-path":"src/components/kubernetes/EventsPage.tsx:369:26",className:"border-slate-800 hover:bg-transparent",children:[e.jsx(h,{"code-path":"src/components/kubernetes/EventsPage.tsx:370:15",className:"text-slate-400 w-16",children:"类型"}),e.jsx(h,{"code-path":"src/components/kubernetes/EventsPage.tsx:371:15",className:"text-slate-400 w-24",children:"原因"}),e.jsx(h,{"code-path":"src/components/kubernetes/EventsPage.tsx:372:15",className:"text-slate-400",children:"对象"}),e.jsx(h,{"code-path":"src/components/kubernetes/EventsPage.tsx:373:15",className:"text-slate-400",children:"消息"}),e.jsx(h,{"code-path":"src/components/kubernetes/EventsPage.tsx:374:15",className:"text-slate-400 w-12",children:"次数"}),e.jsx(h,{"code-path":"src/components/kubernetes/EventsPage.tsx:375:15",className:"text-slate-400 w-20",children:"命名空间"}),e.jsx(h,{"code-path":"src/components/kubernetes/EventsPage.tsx:376:15",className:"text-slate-400 w-40",children:"最后时间"})]})}),e.jsx(Pe,{"code-path":"src/components/kubernetes/EventsPage.tsx:378:13",children:v.length===0?e.jsx(L,{"code-path":"src/components/kubernetes/EventsPage.tsx:380:17",children:e.jsx(d,{"code-path":"src/components/kubernetes/EventsPage.tsx:380:27",colSpan:7,className:"text-center text-slate-500 py-8",children:C?e.jsx("span",{"code-path":"src/components/kubernetes/EventsPage.tsx:381:30",className:"animate-spin inline-block",children:"⏳"}):"暂无事件"})}):v.slice(0,200).map((s,t)=>{const a=`${s.name}-${t}`,l=pe===a;return e.jsxs(L,{"code-path":"src/components/kubernetes/EventsPage.tsx:387:19",className:`border-slate-800 cursor-pointer ${s.type==="Warning"?"hover:bg-red-950/10":"hover:bg-slate-800/30"} ${l?"bg-slate-800/20":""}`,onClick:()=>de(l?null:a),children:[e.jsx(d,{"code-path":"src/components/kubernetes/EventsPage.tsx:392:21",children:s.type==="Warning"?e.jsxs(g,{"code-path":"src/components/kubernetes/EventsPage.tsx:394:25",className:"bg-red-500/20 text-red-400 border-red-500/30 text-xs",children:[e.jsx(E,{"code-path":"src/components/kubernetes/EventsPage.tsx:394:97",className:"h-3 w-3 mr-0.5 inline"}),"W"]}):e.jsxs(g,{"code-path":"src/components/kubernetes/EventsPage.tsx:396:25",className:"bg-blue-500/20 text-blue-400 border-blue-500/30 text-xs",children:[e.jsx(Q,{"code-path":"src/components/kubernetes/EventsPage.tsx:396:100",className:"h-3 w-3 mr-0.5 inline"}),"N"]})}),e.jsx(d,{"code-path":"src/components/kubernetes/EventsPage.tsx:399:21",className:"text-xs text-slate-300 font-medium",children:e.jsx("span",{"code-path":"src/components/kubernetes/EventsPage.tsx:400:23",className:s.type==="Warning"?"text-amber-400":"text-slate-400",children:s.reason||"-"})}),e.jsx(d,{"code-path":"src/components/kubernetes/EventsPage.tsx:402:21",className:"text-xs text-slate-500 font-mono",children:s.object||"-"}),e.jsxs(d,{"code-path":"src/components/kubernetes/EventsPage.tsx:403:21",className:"text-xs text-slate-400 max-w-[400px]",children:[e.jsx("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:404:23",className:`truncate ${l?"whitespace-normal":""}`,title:l?void 0:s.message,children:s.message||"-"}),l&&e.jsxs("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:408:25",className:"mt-1 pt-1 border-t border-slate-800 text-[10px] text-slate-600 space-y-0.5",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:409:27",children:["首次出现: ",F(s.first_time)," (",P(s.first_time),")"]}),e.jsxs("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:410:27",children:["最后出现: ",F(s.last_time)," (",P(s.last_time),")"]}),e.jsxs("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:411:27",children:["事件名称: ",s.name]})]})]}),e.jsx(d,{"code-path":"src/components/kubernetes/EventsPage.tsx:415:21",className:"text-sm text-slate-400 text-center",children:s.count>1?e.jsx(g,{"code-path":"src/components/kubernetes/EventsPage.tsx:416:38",variant:"outline",className:"text-[10px] h-4 px-1",children:s.count}):e.jsx("span",{"code-path":"src/components/kubernetes/EventsPage.tsx:416:116",className:"text-slate-600",children:"1"})}),e.jsx(d,{"code-path":"src/components/kubernetes/EventsPage.tsx:418:21",className:"text-xs text-slate-500",children:s.namespace||"-"}),e.jsxs(d,{"code-path":"src/components/kubernetes/EventsPage.tsx:419:21",className:"text-xs text-slate-500",children:[e.jsx("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:420:23",children:F(s.last_time)}),e.jsx("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:421:23",className:"text-[10px] text-slate-600",children:P(s.last_time)})]})]},a)})})]}),v.length>200&&e.jsxs("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:429:13",className:"text-center py-2 text-xs text-slate-600 border-t border-slate-800",children:["仅显示前 200 条,共 ",v.length," 条事件"]})]})})]})}export{Fe as default}; diff --git a/backend/static/assets/EventsPage-Dbw7LuoJ.js b/backend/static/assets/EventsPage-Dbw7LuoJ.js deleted file mode 100644 index 837dcd1..0000000 --- a/backend/static/assets/EventsPage-Dbw7LuoJ.js +++ /dev/null @@ -1 +0,0 @@ -import{i as he,k as ue,r as n,j as e,m as G,n as J,J as be,B as ge,A as ve,T as E,w as Q,q as ke}from"./index-DfyorCky.js";import{C as x,a as p}from"./card-C55cvSHg.js";import{B as g}from"./badge-xNW8x0G1.js";import{S as N,a as f,b as y,c as w,d as o}from"./select-D5qUzdAs.js";import{T as Ee,a as je,b as L,c as h,d as Pe,e as d}from"./table-5sHV4Akp.js";import{k as S}from"./kubernetes-J8O09fK7.js";import{R as Ne}from"./refresh-cw-DUB_tAG-.js";import{L as Z}from"./layers-FW4KKJMi.js";import{R as W,C as D,X as K,Y as M,T as V,B as O,a as ee}from"./generateCategoricalChart-6v9BPbG2.js";import{B as H}from"./BarChart-DlFprovY.js";import"./index-CWVNW_qu.js";const se=["#EF4444","#F59E0B","#3B82F6","#8B5CF6","#EC4899","#14B8A6","#F97316","#6366F1","#84CC16","#06B6D4"];function $e(){const{clusterCode:te}=he(),I=ue(),[C,U]=n.useState(!1),[m,X]=n.useState([]),[ne,ae]=n.useState([]),[ce,re]=n.useState([]),[i,oe]=n.useState("all"),[j,le]=n.useState("all"),[T,xe]=n.useState("0"),[c,Y]=n.useState(te||""),[r,q]=n.useState(null),[u,B]=n.useState(""),[b,R]=n.useState(""),[pe,de]=n.useState(null);n.useEffect(()=>{S.getClusters().then(s=>{const t=s?.list||[];if(ae(t),!c&&t.length>0){const a=t[0].code||String(t[0].id);Y(a),I(`/kubernetes/${a}/events`,{replace:!0})}}).catch(()=>{})},[]),n.useEffect(()=>{c&&S.getNamespaces(c).then(s=>{re(Array.isArray(s)?s:s?.list||s?.data||[])}).catch(()=>{})},[c]);const _=n.useCallback(async()=>{if(c){U(!0);try{const s=i==="all"?void 0:i,t=j==="all"?void 0:j,a=await S.getEvents(c,s,t);X(Array.isArray(a)?a:a?.list||[])}catch{X([])}finally{U(!1)}}},[c,i,j]),A=n.useCallback(async()=>{if(c)try{const s=i==="all"?void 0:i,t=parseInt(T)||void 0,a=await S.getEventsSummary(c,s,t);q(a||null)}catch{q(null)}},[c,i,T]);n.useEffect(()=>{_()},[_]),n.useEffect(()=>{A()},[A]);const v=n.useMemo(()=>{let s=m;return u&&(s=s.filter(t=>t.reason===u)),b&&(s=s.filter(t=>(t.object||"").startsWith(b+"/"))),s},[m,u,b]),me=n.useMemo(()=>m.filter(s=>s.type==="Warning").length,[m]),ie=n.useMemo(()=>m.filter(s=>s.type==="Normal").length,[m]),k=n.useMemo(()=>(r?.by_reason||[]).map(t=>({name:t.reason||"Unknown",count:t.count})),[r]),z=n.useMemo(()=>(r?.by_namespace||[]).map(t=>({name:t.namespace||"",count:t.count})),[r]),$=n.useMemo(()=>(r?.by_kind||[]).map(t=>({name:t.kind||"Unknown",count:t.count})),[r]),F=s=>s?s.replace("T"," ").substring(0,19):"-",P=s=>{if(!s)return"";const t=Date.now()-new Date(s).getTime();if(t<0)return"";const a=Math.floor(t/6e4);if(a<1)return"刚刚";if(a<60)return`${a}分钟前`;const l=Math.floor(a/60);return l<24?`${l}小时前`:`${Math.floor(l/24)}天前`};return e.jsxs("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:134:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:136:7",className:"flex items-center gap-2 text-sm text-slate-500",children:[e.jsx(G,{"code-path":"src/components/kubernetes/EventsPage.tsx:137:9",to:"/kubernetes",className:"hover:text-slate-300",children:"集群"}),c&&e.jsxs(e.Fragment,{children:[e.jsx(J,{"code-path":"src/components/kubernetes/EventsPage.tsx:138:29",className:"h-3 w-3"}),e.jsx(G,{"code-path":"src/components/kubernetes/EventsPage.tsx:138:65",to:`/kubernetes/${c}`,className:"hover:text-slate-300",children:c})]}),e.jsx(J,{"code-path":"src/components/kubernetes/EventsPage.tsx:139:9",className:"h-3 w-3"}),e.jsx("span",{"code-path":"src/components/kubernetes/EventsPage.tsx:139:45",className:"text-slate-300",children:"事件"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:143:7",className:"flex items-center justify-between flex-wrap gap-3",children:[e.jsxs("h2",{"code-path":"src/components/kubernetes/EventsPage.tsx:144:9",className:"text-lg font-semibold text-slate-100 flex items-center gap-2",children:[e.jsx(be,{"code-path":"src/components/kubernetes/EventsPage.tsx:145:11",className:"h-5 w-5 text-yellow-400"}),"事件中心"]}),e.jsxs("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:147:9",className:"flex items-center gap-2 flex-wrap",children:[e.jsxs(N,{"code-path":"src/components/kubernetes/EventsPage.tsx:148:11",value:c,onValueChange:s=>{Y(s),I(`/kubernetes/${s}/events`)},children:[e.jsx(f,{"code-path":"src/components/kubernetes/EventsPage.tsx:149:13",className:"w-40 h-8 text-xs bg-slate-800 border-slate-700",children:e.jsx(y,{"code-path":"src/components/kubernetes/EventsPage.tsx:149:87"})}),e.jsx(w,{"code-path":"src/components/kubernetes/EventsPage.tsx:150:13",className:"bg-slate-800 border-slate-700",children:ne.map(s=>e.jsx(o,{"code-path":"src/components/kubernetes/EventsPage.tsx:151:42",value:s.code||String(s.id),className:"text-xs",children:s.name||s.code},s.id))})]}),e.jsxs(N,{"code-path":"src/components/kubernetes/EventsPage.tsx:154:11",value:i,onValueChange:s=>{oe(s),B(""),R("")},children:[e.jsx(f,{"code-path":"src/components/kubernetes/EventsPage.tsx:155:13",className:"w-36 h-8 text-xs bg-slate-800 border-slate-700",children:e.jsx(y,{"code-path":"src/components/kubernetes/EventsPage.tsx:155:87",placeholder:"命名空间"})}),e.jsxs(w,{"code-path":"src/components/kubernetes/EventsPage.tsx:156:13",className:"bg-slate-800 border-slate-700",children:[e.jsx(o,{"code-path":"src/components/kubernetes/EventsPage.tsx:157:15",value:"all",className:"text-xs",children:"所有命名空间"}),ce.map(s=>e.jsx(o,{"code-path":"src/components/kubernetes/EventsPage.tsx:158:36",value:s,className:"text-xs",children:s},s))]})]}),e.jsxs(N,{"code-path":"src/components/kubernetes/EventsPage.tsx:161:11",value:T,onValueChange:s=>xe(s),children:[e.jsx(f,{"code-path":"src/components/kubernetes/EventsPage.tsx:162:13",className:"w-32 h-8 text-xs bg-slate-800 border-slate-700",children:e.jsx(y,{"code-path":"src/components/kubernetes/EventsPage.tsx:162:87"})}),e.jsxs(w,{"code-path":"src/components/kubernetes/EventsPage.tsx:163:13",className:"bg-slate-800 border-slate-700",children:[e.jsx(o,{"code-path":"src/components/kubernetes/EventsPage.tsx:164:15",value:"0",className:"text-xs",children:"全部时间"}),e.jsx(o,{"code-path":"src/components/kubernetes/EventsPage.tsx:165:15",value:"1",className:"text-xs",children:"近 1 小时"}),e.jsx(o,{"code-path":"src/components/kubernetes/EventsPage.tsx:166:15",value:"6",className:"text-xs",children:"近 6 小时"}),e.jsx(o,{"code-path":"src/components/kubernetes/EventsPage.tsx:167:15",value:"24",className:"text-xs",children:"近 24 小时"}),e.jsx(o,{"code-path":"src/components/kubernetes/EventsPage.tsx:168:15",value:"168",className:"text-xs",children:"近 7 天"})]})]}),e.jsxs(ge,{"code-path":"src/components/kubernetes/EventsPage.tsx:171:11",variant:"outline",size:"sm",className:"h-8 border-slate-700 text-slate-300 text-xs",onClick:()=>{_(),A()},disabled:C,children:[e.jsx(Ne,{"code-path":"src/components/kubernetes/EventsPage.tsx:172:13",className:`h-3 w-3 mr-1 ${C?"animate-spin":""}`}),"刷新"]})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:178:7",className:"grid grid-cols-2 md:grid-cols-4 gap-3",children:[e.jsx(x,{"code-path":"src/components/kubernetes/EventsPage.tsx:179:9",className:"bg-slate-900 border-slate-800",children:e.jsx(p,{"code-path":"src/components/kubernetes/EventsPage.tsx:180:11",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:181:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:182:15",children:[e.jsx("p",{"code-path":"src/components/kubernetes/EventsPage.tsx:183:17",className:"text-xs text-slate-500 mb-1",children:"事件总数"}),e.jsx("p",{"code-path":"src/components/kubernetes/EventsPage.tsx:184:17",className:"text-2xl font-bold text-slate-100",children:r?.total??m.length})]}),e.jsx(ve,{"code-path":"src/components/kubernetes/EventsPage.tsx:186:15",className:"h-8 w-8 text-slate-600"})]})})}),e.jsx(x,{"code-path":"src/components/kubernetes/EventsPage.tsx:190:9",className:"bg-slate-900 border-red-900/40",children:e.jsx(p,{"code-path":"src/components/kubernetes/EventsPage.tsx:191:11",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:192:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:193:15",children:[e.jsx("p",{"code-path":"src/components/kubernetes/EventsPage.tsx:194:17",className:"text-xs text-slate-500 mb-1",children:"告警事件"}),e.jsx("p",{"code-path":"src/components/kubernetes/EventsPage.tsx:195:17",className:"text-2xl font-bold text-red-400",children:r?.warning_count??me}),e.jsx("p",{"code-path":"src/components/kubernetes/EventsPage.tsx:196:17",className:"text-[10px] text-slate-600 mt-0.5",children:"Warning 累计触发次数"})]}),e.jsx(E,{"code-path":"src/components/kubernetes/EventsPage.tsx:198:15",className:"h-8 w-8 text-red-500/30"})]})})}),e.jsx(x,{"code-path":"src/components/kubernetes/EventsPage.tsx:202:9",className:"bg-slate-900 border-emerald-900/40",children:e.jsx(p,{"code-path":"src/components/kubernetes/EventsPage.tsx:203:11",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:204:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:205:15",children:[e.jsx("p",{"code-path":"src/components/kubernetes/EventsPage.tsx:206:17",className:"text-xs text-slate-500 mb-1",children:"正常事件"}),e.jsx("p",{"code-path":"src/components/kubernetes/EventsPage.tsx:207:17",className:"text-2xl font-bold text-emerald-400",children:r?.normal_count??ie})]}),e.jsx(Q,{"code-path":"src/components/kubernetes/EventsPage.tsx:209:15",className:"h-8 w-8 text-emerald-500/30"})]})})}),e.jsx(x,{"code-path":"src/components/kubernetes/EventsPage.tsx:213:9",className:"bg-slate-900 border-slate-800",children:e.jsx(p,{"code-path":"src/components/kubernetes/EventsPage.tsx:214:11",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:215:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:216:15",children:[e.jsx("p",{"code-path":"src/components/kubernetes/EventsPage.tsx:217:17",className:"text-xs text-slate-500 mb-1",children:"告警类型数"}),e.jsx("p",{"code-path":"src/components/kubernetes/EventsPage.tsx:218:17",className:"text-2xl font-bold text-amber-400",children:k.length}),e.jsx("p",{"code-path":"src/components/kubernetes/EventsPage.tsx:219:17",className:"text-[10px] text-slate-600 mt-0.5",children:"不同 Reason 数量"})]}),e.jsx(Z,{"code-path":"src/components/kubernetes/EventsPage.tsx:221:15",className:"h-8 w-8 text-amber-500/30"})]})})})]}),(u||b)&&e.jsxs("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:229:9",className:"flex items-center gap-2",children:[e.jsx("span",{"code-path":"src/components/kubernetes/EventsPage.tsx:230:11",className:"text-xs text-slate-500",children:"已选过滤:"}),u&&e.jsxs(g,{"code-path":"src/components/kubernetes/EventsPage.tsx:232:13",className:"bg-amber-500/20 text-amber-300 border-amber-500/30 cursor-pointer text-xs",onClick:()=>B(""),children:["原因: ",u," ✕"]}),b&&e.jsxs(g,{"code-path":"src/components/kubernetes/EventsPage.tsx:237:13",className:"bg-blue-500/20 text-blue-300 border-blue-500/30 cursor-pointer text-xs",onClick:()=>R(""),children:["类型: ",b," ✕"]})]}),k.length>0&&e.jsxs("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:246:9",className:"grid grid-cols-1 lg:grid-cols-3 gap-4",children:[e.jsx(x,{"code-path":"src/components/kubernetes/EventsPage.tsx:248:11",className:"bg-slate-900 border-slate-800",children:e.jsxs(p,{"code-path":"src/components/kubernetes/EventsPage.tsx:249:13",className:"p-4",children:[e.jsxs("h3",{"code-path":"src/components/kubernetes/EventsPage.tsx:250:15",className:"text-sm font-medium text-slate-300 mb-3 flex items-center gap-1.5",children:[e.jsx(E,{"code-path":"src/components/kubernetes/EventsPage.tsx:251:17",className:"h-4 w-4 text-amber-400"}),"告警原因 Top ",k.length]}),e.jsx(W,{"code-path":"src/components/kubernetes/EventsPage.tsx:253:15",width:"100%",height:220,children:e.jsxs(H,{"code-path":"src/components/kubernetes/EventsPage.tsx:254:17",data:k,layout:"vertical",margin:{left:10,right:10,top:0,bottom:0},children:[e.jsx(D,{"code-path":"src/components/kubernetes/EventsPage.tsx:255:19",strokeDasharray:"3 3",stroke:"#1e293b",horizontal:!1}),e.jsx(K,{"code-path":"src/components/kubernetes/EventsPage.tsx:256:19",type:"number",tick:{fill:"#64748b",fontSize:10},axisLine:{stroke:"#334155"}}),e.jsx(M,{"code-path":"src/components/kubernetes/EventsPage.tsx:257:19",type:"category",dataKey:"name",tick:{fill:"#94a3b8",fontSize:10},width:100,axisLine:{stroke:"#334155"}}),e.jsx(V,{"code-path":"src/components/kubernetes/EventsPage.tsx:258:19",contentStyle:{background:"#1e293b",border:"1px solid #334155",borderRadius:"6px",fontSize:"12px"},labelStyle:{color:"#e2e8f0"}}),e.jsx(O,{"code-path":"src/components/kubernetes/EventsPage.tsx:262:19",dataKey:"count",radius:[0,4,4,0],cursor:"pointer",onClick:s=>B(t=>t===s?.name?"":s?.name),children:k.map((s,t)=>e.jsx(ee,{"code-path":"src/components/kubernetes/EventsPage.tsx:264:23",fill:se[t%se.length]},t))})]})}),e.jsx("p",{"code-path":"src/components/kubernetes/EventsPage.tsx:269:15",className:"text-[10px] text-slate-600 text-center mt-1",children:"点击柱状图过滤事件列表"})]})}),z.length>0&&e.jsx(x,{"code-path":"src/components/kubernetes/EventsPage.tsx:275:13",className:"bg-slate-900 border-slate-800",children:e.jsxs(p,{"code-path":"src/components/kubernetes/EventsPage.tsx:276:15",className:"p-4",children:[e.jsxs("h3",{"code-path":"src/components/kubernetes/EventsPage.tsx:277:17",className:"text-sm font-medium text-slate-300 mb-3 flex items-center gap-1.5",children:[e.jsx(ke,{"code-path":"src/components/kubernetes/EventsPage.tsx:278:19",className:"h-4 w-4 text-blue-400"}),"命名空间分布 Top ",z.length]}),e.jsx(W,{"code-path":"src/components/kubernetes/EventsPage.tsx:280:17",width:"100%",height:220,children:e.jsxs(H,{"code-path":"src/components/kubernetes/EventsPage.tsx:281:19",data:z,layout:"vertical",margin:{left:10,right:10,top:0,bottom:0},children:[e.jsx(D,{"code-path":"src/components/kubernetes/EventsPage.tsx:282:21",strokeDasharray:"3 3",stroke:"#1e293b",horizontal:!1}),e.jsx(K,{"code-path":"src/components/kubernetes/EventsPage.tsx:283:21",type:"number",tick:{fill:"#64748b",fontSize:10},axisLine:{stroke:"#334155"}}),e.jsx(M,{"code-path":"src/components/kubernetes/EventsPage.tsx:284:21",type:"category",dataKey:"name",tick:{fill:"#94a3b8",fontSize:10},width:80,axisLine:{stroke:"#334155"}}),e.jsx(V,{"code-path":"src/components/kubernetes/EventsPage.tsx:285:21",contentStyle:{background:"#1e293b",border:"1px solid #334155",borderRadius:"6px",fontSize:"12px"},labelStyle:{color:"#e2e8f0"}}),e.jsx(O,{"code-path":"src/components/kubernetes/EventsPage.tsx:289:21",dataKey:"count",radius:[0,4,4,0],fill:"#3B82F6",fillOpacity:.7})]})})]})}),$.length>0&&e.jsx(x,{"code-path":"src/components/kubernetes/EventsPage.tsx:298:13",className:"bg-slate-900 border-slate-800",children:e.jsxs(p,{"code-path":"src/components/kubernetes/EventsPage.tsx:299:15",className:"p-4",children:[e.jsxs("h3",{"code-path":"src/components/kubernetes/EventsPage.tsx:300:17",className:"text-sm font-medium text-slate-300 mb-3 flex items-center gap-1.5",children:[e.jsx(Z,{"code-path":"src/components/kubernetes/EventsPage.tsx:301:19",className:"h-4 w-4 text-purple-400"}),"资源类型分布"]}),e.jsx(W,{"code-path":"src/components/kubernetes/EventsPage.tsx:303:17",width:"100%",height:220,children:e.jsxs(H,{"code-path":"src/components/kubernetes/EventsPage.tsx:304:19",data:$,layout:"vertical",margin:{left:10,right:10,top:0,bottom:0},children:[e.jsx(D,{"code-path":"src/components/kubernetes/EventsPage.tsx:305:21",strokeDasharray:"3 3",stroke:"#1e293b",horizontal:!1}),e.jsx(K,{"code-path":"src/components/kubernetes/EventsPage.tsx:306:21",type:"number",tick:{fill:"#64748b",fontSize:10},axisLine:{stroke:"#334155"}}),e.jsx(M,{"code-path":"src/components/kubernetes/EventsPage.tsx:307:21",type:"category",dataKey:"name",tick:{fill:"#94a3b8",fontSize:10},width:80,axisLine:{stroke:"#334155"}}),e.jsx(V,{"code-path":"src/components/kubernetes/EventsPage.tsx:308:21",contentStyle:{background:"#1e293b",border:"1px solid #334155",borderRadius:"6px",fontSize:"12px"},labelStyle:{color:"#e2e8f0"}}),e.jsx(O,{"code-path":"src/components/kubernetes/EventsPage.tsx:312:21",dataKey:"count",radius:[0,4,4,0],cursor:"pointer",onClick:s=>R(t=>t===s?.name?"":s?.name),children:$.map((s,t)=>e.jsx(ee,{"code-path":"src/components/kubernetes/EventsPage.tsx:314:25",fill:["#8B5CF6","#6366F1","#EC4899","#14B8A6"][t%4],fillOpacity:.7},t))})]})}),e.jsx("p",{"code-path":"src/components/kubernetes/EventsPage.tsx:319:17",className:"text-[10px] text-slate-600 text-center mt-1",children:"点击柱状图过滤事件列表"})]})})]}),r?.recent_warnings?.length>0&&e.jsx(x,{"code-path":"src/components/kubernetes/EventsPage.tsx:328:9",className:"bg-red-950/20 border-red-900/30",children:e.jsxs(p,{"code-path":"src/components/kubernetes/EventsPage.tsx:329:11",className:"p-4",children:[e.jsxs("h3",{"code-path":"src/components/kubernetes/EventsPage.tsx:330:13",className:"text-sm font-medium text-red-300 mb-3 flex items-center gap-1.5",children:[e.jsx(E,{"code-path":"src/components/kubernetes/EventsPage.tsx:331:15",className:"h-4 w-4"}),"最新告警事件 (",r.recent_warnings.length,")"]}),e.jsx("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:333:13",className:"space-y-1.5",children:r.recent_warnings.map((s,t)=>e.jsxs("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:335:17",className:"flex items-start gap-2 text-xs py-1.5 px-2 rounded bg-slate-900/40 hover:bg-slate-800/40 transition-colors",children:[e.jsx(E,{"code-path":"src/components/kubernetes/EventsPage.tsx:336:19",className:"h-3.5 w-3.5 text-red-400 mt-0.5 shrink-0"}),e.jsxs("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:337:19",className:"flex-1 min-w-0",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:338:21",className:"flex items-center gap-2 flex-wrap",children:[e.jsx(g,{"code-path":"src/components/kubernetes/EventsPage.tsx:339:23",variant:"outline",className:"text-[10px] h-4 px-1 border-red-500/30 text-red-400",children:s.reason}),e.jsx("span",{"code-path":"src/components/kubernetes/EventsPage.tsx:340:23",className:"text-slate-500 font-mono text-[11px]",children:s.object}),e.jsx("span",{"code-path":"src/components/kubernetes/EventsPage.tsx:341:23",className:"text-slate-600 text-[10px]",children:s.namespace}),e.jsxs("span",{"code-path":"src/components/kubernetes/EventsPage.tsx:342:23",className:"text-slate-600 text-[10px]",children:["×",s.count]}),e.jsx("span",{"code-path":"src/components/kubernetes/EventsPage.tsx:343:23",className:"text-slate-600 text-[10px] ml-auto",children:P(s.last_time)})]}),e.jsx("p",{"code-path":"src/components/kubernetes/EventsPage.tsx:345:21",className:"text-slate-400 mt-0.5 truncate",title:s.message,children:s.message})]})]},t))})]})}),e.jsx(x,{"code-path":"src/components/kubernetes/EventsPage.tsx:355:7",className:"bg-slate-900 border-slate-800",children:e.jsxs(p,{"code-path":"src/components/kubernetes/EventsPage.tsx:356:9",className:"p-0",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:357:11",className:"flex items-center justify-between px-4 py-2 border-b border-slate-800",children:[e.jsxs("span",{"code-path":"src/components/kubernetes/EventsPage.tsx:358:13",className:"text-sm text-slate-400",children:["事件列表 (",v.length,")"]}),e.jsxs(N,{"code-path":"src/components/kubernetes/EventsPage.tsx:359:13",value:j,onValueChange:le,children:[e.jsx(f,{"code-path":"src/components/kubernetes/EventsPage.tsx:360:15",className:"w-28 h-7 text-xs bg-slate-800 border-slate-700",children:e.jsx(y,{"code-path":"src/components/kubernetes/EventsPage.tsx:360:89"})}),e.jsxs(w,{"code-path":"src/components/kubernetes/EventsPage.tsx:361:15",className:"bg-slate-800 border-slate-700",children:[e.jsx(o,{"code-path":"src/components/kubernetes/EventsPage.tsx:362:17",value:"all",className:"text-xs",children:"所有类型"}),e.jsx(o,{"code-path":"src/components/kubernetes/EventsPage.tsx:363:17",value:"Warning",className:"text-xs",children:"⚠ Warning"}),e.jsx(o,{"code-path":"src/components/kubernetes/EventsPage.tsx:364:17",value:"Normal",className:"text-xs",children:"ℹ Normal"})]})]})]}),e.jsxs(Ee,{"code-path":"src/components/kubernetes/EventsPage.tsx:368:11",children:[e.jsx(je,{"code-path":"src/components/kubernetes/EventsPage.tsx:369:13",children:e.jsxs(L,{"code-path":"src/components/kubernetes/EventsPage.tsx:369:26",className:"border-slate-800 hover:bg-transparent",children:[e.jsx(h,{"code-path":"src/components/kubernetes/EventsPage.tsx:370:15",className:"text-slate-400 w-16",children:"类型"}),e.jsx(h,{"code-path":"src/components/kubernetes/EventsPage.tsx:371:15",className:"text-slate-400 w-24",children:"原因"}),e.jsx(h,{"code-path":"src/components/kubernetes/EventsPage.tsx:372:15",className:"text-slate-400",children:"对象"}),e.jsx(h,{"code-path":"src/components/kubernetes/EventsPage.tsx:373:15",className:"text-slate-400",children:"消息"}),e.jsx(h,{"code-path":"src/components/kubernetes/EventsPage.tsx:374:15",className:"text-slate-400 w-12",children:"次数"}),e.jsx(h,{"code-path":"src/components/kubernetes/EventsPage.tsx:375:15",className:"text-slate-400 w-20",children:"命名空间"}),e.jsx(h,{"code-path":"src/components/kubernetes/EventsPage.tsx:376:15",className:"text-slate-400 w-40",children:"最后时间"})]})}),e.jsx(Pe,{"code-path":"src/components/kubernetes/EventsPage.tsx:378:13",children:v.length===0?e.jsx(L,{"code-path":"src/components/kubernetes/EventsPage.tsx:380:17",children:e.jsx(d,{"code-path":"src/components/kubernetes/EventsPage.tsx:380:27",colSpan:7,className:"text-center text-slate-500 py-8",children:C?e.jsx("span",{"code-path":"src/components/kubernetes/EventsPage.tsx:381:30",className:"animate-spin inline-block",children:"⏳"}):"暂无事件"})}):v.slice(0,200).map((s,t)=>{const a=`${s.name}-${t}`,l=pe===a;return e.jsxs(L,{"code-path":"src/components/kubernetes/EventsPage.tsx:387:19",className:`border-slate-800 cursor-pointer ${s.type==="Warning"?"hover:bg-red-950/10":"hover:bg-slate-800/30"} ${l?"bg-slate-800/20":""}`,onClick:()=>de(l?null:a),children:[e.jsx(d,{"code-path":"src/components/kubernetes/EventsPage.tsx:392:21",children:s.type==="Warning"?e.jsxs(g,{"code-path":"src/components/kubernetes/EventsPage.tsx:394:25",className:"bg-red-500/20 text-red-400 border-red-500/30 text-xs",children:[e.jsx(E,{"code-path":"src/components/kubernetes/EventsPage.tsx:394:97",className:"h-3 w-3 mr-0.5 inline"}),"W"]}):e.jsxs(g,{"code-path":"src/components/kubernetes/EventsPage.tsx:396:25",className:"bg-blue-500/20 text-blue-400 border-blue-500/30 text-xs",children:[e.jsx(Q,{"code-path":"src/components/kubernetes/EventsPage.tsx:396:100",className:"h-3 w-3 mr-0.5 inline"}),"N"]})}),e.jsx(d,{"code-path":"src/components/kubernetes/EventsPage.tsx:399:21",className:"text-xs text-slate-300 font-medium",children:e.jsx("span",{"code-path":"src/components/kubernetes/EventsPage.tsx:400:23",className:s.type==="Warning"?"text-amber-400":"text-slate-400",children:s.reason||"-"})}),e.jsx(d,{"code-path":"src/components/kubernetes/EventsPage.tsx:402:21",className:"text-xs text-slate-500 font-mono",children:s.object||"-"}),e.jsxs(d,{"code-path":"src/components/kubernetes/EventsPage.tsx:403:21",className:"text-xs text-slate-400 max-w-[400px]",children:[e.jsx("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:404:23",className:`truncate ${l?"whitespace-normal":""}`,title:l?void 0:s.message,children:s.message||"-"}),l&&e.jsxs("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:408:25",className:"mt-1 pt-1 border-t border-slate-800 text-[10px] text-slate-600 space-y-0.5",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:409:27",children:["首次出现: ",F(s.first_time)," (",P(s.first_time),")"]}),e.jsxs("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:410:27",children:["最后出现: ",F(s.last_time)," (",P(s.last_time),")"]}),e.jsxs("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:411:27",children:["事件名称: ",s.name]})]})]}),e.jsx(d,{"code-path":"src/components/kubernetes/EventsPage.tsx:415:21",className:"text-sm text-slate-400 text-center",children:s.count>1?e.jsx(g,{"code-path":"src/components/kubernetes/EventsPage.tsx:416:38",variant:"outline",className:"text-[10px] h-4 px-1",children:s.count}):e.jsx("span",{"code-path":"src/components/kubernetes/EventsPage.tsx:416:116",className:"text-slate-600",children:"1"})}),e.jsx(d,{"code-path":"src/components/kubernetes/EventsPage.tsx:418:21",className:"text-xs text-slate-500",children:s.namespace||"-"}),e.jsxs(d,{"code-path":"src/components/kubernetes/EventsPage.tsx:419:21",className:"text-xs text-slate-500",children:[e.jsx("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:420:23",children:F(s.last_time)}),e.jsx("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:421:23",className:"text-[10px] text-slate-600",children:P(s.last_time)})]})]},a)})})]}),v.length>200&&e.jsxs("div",{"code-path":"src/components/kubernetes/EventsPage.tsx:429:13",className:"text-center py-2 text-xs text-slate-600 border-t border-slate-800",children:["仅显示前 200 条,共 ",v.length," 条事件"]})]})})]})}export{$e as default}; diff --git a/backend/static/assets/GrafanaDashboard-BoB6WmDi.js b/backend/static/assets/GrafanaDashboard-BoB6WmDi.js deleted file mode 100644 index a24eadc..0000000 --- a/backend/static/assets/GrafanaDashboard-BoB6WmDi.js +++ /dev/null @@ -1,3 +0,0 @@ -import{g as ya,j as a,r as o,h as oa,A as J,B as D,L as aa,T as Na,q as Q,v as Ya,o as ka,W as Wa,D as ra,b as na,c as da,d as ca,e as _a,H as pa,a9 as Qa,t as Xa,I as X,E as as,aq as $a,a as ss,k as es,a7 as ts,w as os,f as va,K as Za,G as Ta}from"./index-DfyorCky.js";import{B as E}from"./badge-xNW8x0G1.js";import{C as z,b as Ga,c as wa,a as k}from"./card-C55cvSHg.js";import{S as ba,a as ua,b as ga,c as fa,d as O}from"./select-D5qUzdAs.js";import{L}from"./label-BK0h2apY.js";import{t as u}from"./index-a3ybMjbR.js";import{s as Fa}from"./server-CjDPBaTN.js";import{z as rs,p as ns,d as ja}from"./monitor-BAaBXIsC.js";import{a as Aa}from"./agent-DqqIRCQX.js";import{T as ds}from"./trending-up-CdusV6gc.js";import{R as ha}from"./refresh-cw-DUB_tAG-.js";import{W as Ma}from"./wifi-FqsslTyA.js";import{A as Ia}from"./arrow-up-down-DnvTt5VG.js";import{T as Ba,a as Oa,b as R,c as K}from"./tabs-CIh_yD4s.js";import{Z as ta}from"./zap-D2uWSK32.js";import{C as cs}from"./copy-DXW4LnkN.js";import{D as hs}from"./download-DoZfYs2h.js";import{P as ms}from"./play-cdPayOtJ.js";import{C as Da}from"./checkbox-CH0bpj6b.js";import{M as is,a as ls}from"./minimize-2-CiCQYRfn.js";import{P as Sa}from"./package-open-CUXo2Tda.js";import{T as xs}from"./trash-2-Dx32pOzT.js";import{E as Ea}from"./external-link-CzIpMNu1.js";import{P as Ca}from"./plus-CUG-9kpu.js";import"./index-CWVNW_qu.js";const ps=[["path",{d:"M12 5v14",key:"s699le"}],["path",{d:"m19 12-7 7-7-7",key:"1idqje"}]],Ua=ya("arrow-down",ps);const bs=[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]],Ha=ya("arrow-up",bs);const us=[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}],["path",{d:"M5 12.859a10 10 0 0 1 5.17-2.69",key:"1dl1wf"}],["path",{d:"M19 12.859a10 10 0 0 0-2.007-1.523",key:"4k23kn"}],["path",{d:"M2 8.82a15 15 0 0 1 4.177-2.643",key:"1grhjp"}],["path",{d:"M22 8.82a15 15 0 0 0-11.288-3.764",key:"z3jwby"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],gs=ya("wifi-off",us);function fs(s){return s?Array.isArray(s)?s:Array.isArray(s.list)?s.list:Array.isArray(s.items)?s.items:Array.isArray(s.data)?s.data:[]:[]}function js(s){const e=[];for(let c=0;c<24;c++)e.push({time:new Date(Date.now()-(24-c)*36e5).toLocaleTimeString(),value:Math.random()*100});return e}function Ds({panel:s}){const r=js();switch(s.type){case"stat":return a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaPanelContent.tsx:24:9",className:"flex flex-col items-center justify-center h-full",children:[a.jsx("span",{"code-path":"src/components/monitor/dashboard/GrafanaPanelContent.tsx:25:11",className:"text-4xl font-bold text-blue-500",children:Math.floor(Math.random()*1e3)}),a.jsx("span",{"code-path":"src/components/monitor/dashboard/GrafanaPanelContent.tsx:26:11",className:"text-sm text-muted-foreground mt-2",children:s.options?.unit||"requests/s"}),a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaPanelContent.tsx:27:11",className:"flex items-center gap-1 mt-2 text-green-500 text-sm",children:[a.jsx(ds,{"code-path":"src/components/monitor/dashboard/GrafanaPanelContent.tsx:28:13",className:"w-4 h-4"}),a.jsx("span",{"code-path":"src/components/monitor/dashboard/GrafanaPanelContent.tsx:29:13",children:"+12.5%"})]})]});case"gauge":return a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaPanelContent.tsx:35:9",className:"flex flex-col items-center justify-center h-full",children:[a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaPanelContent.tsx:36:11",className:"relative w-24 h-24",children:[a.jsxs("svg",{"code-path":"src/components/monitor/dashboard/GrafanaPanelContent.tsx:37:13",className:"w-full h-full",viewBox:"0 0 100 100",children:[a.jsx("circle",{"code-path":"src/components/monitor/dashboard/GrafanaPanelContent.tsx:38:15",cx:"50",cy:"50",r:"40",fill:"none",stroke:"#e5e7eb",strokeWidth:"10"}),a.jsx("circle",{"code-path":"src/components/monitor/dashboard/GrafanaPanelContent.tsx:39:15",cx:"50",cy:"50",r:"40",fill:"none",stroke:"#3b82f6",strokeWidth:"10",strokeDasharray:`${Math.random()*251} 251`,transform:"rotate(-90 50 50)"})]}),a.jsx("div",{"code-path":"src/components/monitor/dashboard/GrafanaPanelContent.tsx:50:13",className:"absolute inset-0 flex items-center justify-center",children:a.jsxs("span",{"code-path":"src/components/monitor/dashboard/GrafanaPanelContent.tsx:51:15",className:"text-xl font-bold",children:[Math.floor(Math.random()*100),"%"]})})]}),a.jsx("span",{"code-path":"src/components/monitor/dashboard/GrafanaPanelContent.tsx:54:11",className:"text-sm text-muted-foreground mt-2",children:"CPU使用率"})]});default:return a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaPanelContent.tsx:60:9",className:"h-full flex flex-col",children:[a.jsx("div",{"code-path":"src/components/monitor/dashboard/GrafanaPanelContent.tsx:61:11",className:"flex-1 flex items-end gap-1 px-2",children:r.map((e,c)=>a.jsx("div",{"code-path":"src/components/monitor/dashboard/GrafanaPanelContent.tsx:63:15",className:"flex-1 bg-blue-500 rounded-t",style:{height:`${e.value}%`,opacity:.3+c/r.length*.7}},c))}),a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaPanelContent.tsx:70:11",className:"flex justify-between text-xs text-muted-foreground px-2 pt-2",children:[a.jsx("span",{"code-path":"src/components/monitor/dashboard/GrafanaPanelContent.tsx:71:13",children:r[0].time}),a.jsx("span",{"code-path":"src/components/monitor/dashboard/GrafanaPanelContent.tsx:72:13",children:r[r.length-1].time})]})]})}}const Ns=({dsUrl:s,dsUsername:r,dsPassword:e})=>{const[c,i]=o.useState(!1),[x,b]=o.useState(!1),[g,N]=o.useState([]),[w,m]=o.useState(""),[P,y]=o.useState(""),[W,v]=o.useState("cpu_usage"),[h,A]=o.useState("desc");o.useEffect(()=>{s&&r&&e&&$(s,r,e)},[s,r,e]);const $=async(n,l,S)=>{b(!0),y("");try{const j=await oa.post("/zabbix/connect",{url:n,username:l,password:S});N(j.hosts||[]),m(j.version||""),i(!0)}catch(j){i(!1),y(j.message||"连接失败")}finally{b(!1)}},F=()=>{s&&r&&e&&$(s,r,e)},M=n=>{W===n?A(l=>l==="asc"?"desc":"asc"):(v(n),A("desc"))},I=[...g].sort((n,l)=>{const S=n[W]??"",j=l[W]??"";return typeof S=="number"?h==="asc"?S-j:j-S:h==="asc"?String(S).localeCompare(String(j)):String(j).localeCompare(String(S))}),T=({f:n})=>W!==n?a.jsx(Ia,{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:68:33",className:"w-3 h-3 text-slate-500"}):h==="asc"?a.jsx(Ha,{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:69:32",className:"w-3 h-3 text-blue-400"}):a.jsx(Ua,{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:69:80",className:"w-3 h-3 text-blue-400"}),p=(n,l)=>a.jsxs("div",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:73:5",className:"flex items-center gap-2 min-w-[90px]",children:[a.jsx("div",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:74:7",className:"flex-1 h-2.5 rounded-full bg-[var(--dg-bg-tertiary)] overflow-hidden",children:a.jsx("div",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:75:9",className:`h-full rounded-full transition-all duration-500 ${n>=80?"bg-orange-500":"bg-blue-500"}`,style:{width:`${Math.min(n,100)}%`}})}),a.jsx("span",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:77:7",className:`w-14 text-right text-xs font-mono tabular-nums ${n>=80?"text-orange-400":""}`,children:l})]}),f=n=>!n||n===0?"—":n>1e9?`${(n/1e9).toFixed(1)} GB/s`:n>1e6?`${(n/1e6).toFixed(1)} MB/s`:n>1e3?`${(n/1e3).toFixed(1)} KB/s`:`${n.toFixed(1)} B/s`;return!c&&!x&&!P?null:a.jsxs(z,{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:92:5",className:"bg-[var(--dg-bg-secondary)] border-blue-500/20",children:[a.jsx(Ga,{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:93:7",className:"py-3 px-4 pb-2",children:a.jsxs("div",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:94:9",className:"flex items-center gap-2",children:[a.jsx(J,{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:95:11",className:"h-4 w-4 text-blue-400"}),a.jsx(wa,{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:96:11",className:"text-sm font-medium",children:"Zabbix 主机监控"}),w&&a.jsxs(E,{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:97:23",className:"text-[10px] bg-blue-500/10 text-blue-400",children:["v",w]}),c&&a.jsxs("span",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:98:25",className:"text-[10px] text-[var(--dg-text-muted)] ml-2",children:[g.length," 台"]}),c&&a.jsx("div",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:99:25",className:"ml-auto flex gap-1",children:a.jsxs(D,{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:99:61",variant:"ghost",size:"sm",className:"h-6 px-2 text-[10px]",onClick:F,children:[a.jsx(ha,{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:99:146",className:"w-3 h-3 mr-1"}),"刷新"]})})]})}),a.jsx(k,{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:102:7",className:"px-4 pb-3 pt-0",children:x?a.jsxs("div",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:103:21",className:"text-center py-12",children:[a.jsx(aa,{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:103:56",className:"h-6 w-6 mx-auto mb-2 animate-spin text-blue-400"}),a.jsx("p",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:103:127",className:"text-xs text-[var(--dg-text-muted)]",children:"连接中…"})]}):P?a.jsxs("div",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:104:20",className:"p-3 rounded-lg bg-red-500/10 border border-red-500/20 text-xs text-red-400 flex items-start gap-2",children:[a.jsx(Na,{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:104:135",className:"h-4 w-4 mt-0.5"}),a.jsx("span",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:104:179",children:P})]}):g.length===0?a.jsxs("div",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:105:33",className:"text-center py-8 text-[var(--dg-text-muted)]",children:[a.jsx(Q,{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:105:95",className:"h-8 w-8 mx-auto mb-2 text-slate-600"}),a.jsx("p",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:105:153",className:"text-sm",children:"未找到被监控的 Zabbix 主机"})]}):a.jsx("div",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:107:11",className:"overflow-x-auto rounded-lg border border-[var(--dg-border)]",children:a.jsxs("table",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:108:13",className:"w-full text-xs",children:[a.jsx("thead",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:109:15",className:"bg-[var(--dg-bg-tertiary)] border-b border-[var(--dg-border)]",children:a.jsx("tr",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:109:96",children:[{f:"hostname",l:"主机名"},{f:"cpu_usage",l:"CPU"},{f:"memory_usage",l:"内存"},{f:"disk_usage",l:"磁盘"},{f:"load5",l:"Load5"},{f:"net_in_bps",l:"流入"},{f:"net_out_bps",l:"流出"},{f:"problem_count",l:"问题"},{f:"uptime_days",l:"运行"}].map(({f:n,l})=>a.jsx("th",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:115:19",className:"px-3 py-2 text-left font-medium text-[var(--dg-text-secondary)] cursor-pointer hover:text-[var(--dg-text-primary)] select-none whitespace-nowrap",onClick:()=>M(n),children:a.jsxs("div",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:116:21",className:"flex items-center gap-1",children:[l,a.jsx(T,{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:116:65",f:n})]})},n))})}),a.jsx("tbody",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:118:15",children:I.map((n,l)=>a.jsxs("tr",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:120:19",className:"border-b border-[var(--dg-border)] last:border-0 hover:bg-[var(--dg-bg-tertiary)]/50",children:[a.jsxs("td",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:121:21",className:"px-3 py-2.5 whitespace-nowrap",children:[a.jsxs(E,{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:121:67",className:`text-[10px] ${n.available==="1"?"bg-emerald-500/20 text-emerald-400":"bg-red-500/20 text-red-400"}`,children:[a.jsx(Ma,{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:121:193",className:"w-3 h-3 mr-1"}),n.available==="1"?"UP":"DOWN"]})," ",a.jsx("span",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:121:272",className:"font-medium text-[var(--dg-text-primary)] ml-1",children:n.name||n.hostname})]}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:122:21",className:"px-3 py-2.5",children:p(Number(n.cpu_usage||0),`${Number(n.cpu_usage||0).toFixed(1)}%`)}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:123:21",className:"px-3 py-2.5",children:p(Number(n.memory_usage||0),`${Number(n.memory_usage||0).toFixed(1)}%`)}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:124:21",className:"px-3 py-2.5",children:p(Number(n.disk_usage||0),`${Number(n.disk_usage||0).toFixed(1)}%`)}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:125:21",className:"px-3 py-2.5 text-[var(--dg-text-secondary)]",children:n.load5>0?n.load5.toFixed(1):"—"}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:126:21",className:"px-3 py-2.5 font-mono text-[var(--dg-text-secondary)]",children:f(n.net_in_bps)}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:127:21",className:"px-3 py-2.5 font-mono text-[var(--dg-text-secondary)]",children:f(n.net_out_bps)}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:128:21",className:"px-3 py-2.5 text-center",children:a.jsx("span",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:128:61",className:`font-mono font-bold ${n.problem_count>0?n.problem_count>2?"text-red-400":"text-amber-400":"text-emerald-400"}`,children:n.problem_count>0?a.jsxs(a.Fragment,{children:[a.jsx(Na,{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:128:230",className:"w-3 h-3 inline mr-1"}),n.problem_count]}):"0"})}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:129:21",className:"px-3 py-2.5 text-[var(--dg-text-secondary)]",children:n.uptime_days>0?`${n.uptime_days}d`:"—"})]},n.hostid||l))})]})})})]})},V=({val:s,label:r,color:e})=>{const c=Math.min(s,100);return a.jsxs("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:15:5",className:"flex items-center gap-1.5 min-w-[80px]",children:[a.jsx("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:16:7",className:"flex-1 h-2 rounded-full bg-[var(--dg-bg-tertiary)] overflow-hidden",children:a.jsx("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:17:9",className:`h-full rounded-full ${e||"bg-purple-500"}`,style:{width:`${c}%`}})}),a.jsx("span",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:19:7",className:"w-14 text-right text-[11px] font-mono text-[var(--dg-text-secondary)]",children:r})]})},vs=s=>s?s>1e9?`${(s/1e9).toFixed(1)} GB`:s>1e6?`${(s/1e6).toFixed(1)} MB`:`${(s/1e3).toFixed(1)} KB`:"—",za=s=>s?s>1e9?`${(s/1e9).toFixed(1)} GB/s`:s>1e6?`${(s/1e6).toFixed(1)} MB/s`:s>1e3?`${(s/1e3).toFixed(1)} KB/s`:`${s.toFixed(1)} B/s`:"—";function ys(s){return(s||[]).map(r=>{const e={...r.metric||{}};return r.value&&(e.value=r.value[1]),e})}const Gs=s=>a.jsx("svg",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:46:26",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",...s,children:a.jsx("path",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:46:211",d:"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"})}),ws=({d:s})=>a.jsxs("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:49:3",className:"space-y-4",children:[a.jsxs("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:50:5",className:"grid grid-cols-4 gap-3",children:[a.jsx(z,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:51:7",className:"bg-[var(--dg-bg-primary)] border-[var(--dg-border)]",children:a.jsxs(k,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:51:77",className:"p-3 text-center",children:[a.jsx("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:51:118",className:"text-2xl font-bold text-purple-400",children:s.podCount?.[0]?.value||0}),a.jsx("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:51:205",className:"text-[10px] text-[var(--dg-text-muted)]",children:"Pods"})]})}),a.jsx(z,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:52:7",className:"bg-[var(--dg-bg-primary)] border-[var(--dg-border)]",children:a.jsxs(k,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:52:77",className:"p-3 text-center",children:[a.jsx("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:52:118",className:"text-2xl font-bold text-blue-400",children:s.deployCount?.[0]?.value||0}),a.jsx("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:52:206",className:"text-[10px] text-[var(--dg-text-muted)]",children:"Deployments"})]})}),a.jsx(z,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:53:7",className:"bg-[var(--dg-bg-primary)] border-[var(--dg-border)]",children:a.jsxs(k,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:53:77",className:"p-3 text-center",children:[a.jsx("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:53:118",className:"text-2xl font-bold text-emerald-400",children:s.nodeCount?.[0]?.value||0}),a.jsx("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:53:207",className:"text-[10px] text-[var(--dg-text-muted)]",children:"Nodes"})]})}),a.jsx(z,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:54:7",className:"bg-[var(--dg-bg-primary)] border-[var(--dg-border)]",children:a.jsxs(k,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:54:77",className:"p-3 text-center",children:[a.jsx("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:54:118",className:"text-2xl font-bold text-amber-400",children:s.nsPods?.length||0}),a.jsx("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:54:198",className:"text-[10px] text-[var(--dg-text-muted)]",children:"Namespaces"})]})})]}),a.jsxs("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:56:5",className:"rounded-lg bg-[var(--dg-bg-primary)] border border-[var(--dg-border)] p-3 max-h-60 overflow-y-auto",children:[a.jsxs("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:57:7",className:"text-xs font-medium mb-2 flex items-center gap-1",children:[a.jsx(ka,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:57:73",className:"w-3 h-3 text-purple-400"}),"节点 CPU / 内存利用率"]}),(s.nodeCPU||[]).map((r,e)=>{const c=(s.nodeMem||[]).find(i=>i.node===r.node);return a.jsxs("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:60:16",className:"flex items-center gap-3 text-[11px] mb-1.5",children:[a.jsx("span",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:60:84",className:"w-28 truncate",title:r.node,children:r.node}),a.jsx(V,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:60:146",val:Number(r.value||0),label:`${Number(r.value||0).toFixed(1)}%`}),a.jsx(V,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:60:226",val:Number(c?.value||0),label:`${Number(c?.value||0).toFixed(1)}%`,color:"bg-blue-500"})]},e)})]})]}),Ps=({d:s})=>a.jsx("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:67:3",className:"overflow-x-auto rounded-lg border border-[var(--dg-border)]",children:a.jsxs("table",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:68:5",className:"w-full text-xs",children:[a.jsx("thead",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:69:7",className:"bg-[var(--dg-bg-tertiary)]",children:a.jsxs("tr",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:69:53",children:[a.jsx("th",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:69:57",className:"px-3 py-2 text-left",children:"节点"}),a.jsx("th",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:69:100",className:"px-3 py-2 text-left",children:"状态"}),a.jsx("th",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:69:143",className:"px-3 py-2 text-left",children:"CPU"}),a.jsx("th",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:69:187",className:"px-3 py-2 text-left",children:"内存"}),a.jsx("th",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:69:230",className:"px-3 py-2 text-left",children:"磁盘"}),a.jsx("th",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:69:273",className:"px-3 py-2 text-left",children:"流入"}),a.jsx("th",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:69:316",className:"px-3 py-2 text-left",children:"流出"})]})}),a.jsx("tbody",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:70:7",children:(s.nodes||[]).map((r,e)=>{const c=r.instance||r.exported_instance||"",i=(s.cpuUsage||[]).find(m=>m.instance===c),x=(s.memUsage||[]).find(m=>m.instance===c),b=(s.diskUsage||[]).find(m=>m.instance===c),g=(s.up||[]).find(m=>m.instance===c),N=(s.netRx||[]).find(m=>m.instance===c),w=(s.netTx||[]).find(m=>m.instance===c);return a.jsxs("tr",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:79:18",className:"border-b border-[var(--dg-border)] hover:bg-[var(--dg-bg-tertiary)]/50",children:[a.jsx("td",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:80:13",className:"px-3 py-2 font-medium",children:r.nodename||c}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:81:13",className:"px-3 py-2",children:a.jsx(E,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:81:39",className:`text-[10px] ${g?.value===1?"bg-emerald-500/20 text-emerald-400":"bg-red-500/20 text-red-400"}`,children:g?.value===1?"UP":"DOWN"})}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:82:13",className:"px-3 py-2",children:a.jsx(V,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:82:39",val:Number(i?.value||0),label:`${Number(i?.value||0).toFixed(1)}%`})}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:83:13",className:"px-3 py-2",children:a.jsx(V,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:83:39",val:Number(x?.value||0),label:`${Number(x?.value||0).toFixed(1)}%`,color:"bg-blue-500"})}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:84:13",className:"px-3 py-2",children:a.jsx(V,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:84:39",val:Number(b?.value||0),label:`${Number(b?.value||0).toFixed(1)}%`,color:"bg-amber-500"})}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:85:13",className:"px-3 py-2 font-mono text-[var(--dg-text-secondary)]",children:za(Number(N?.value||0))}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:86:13",className:"px-3 py-2 font-mono text-[var(--dg-text-secondary)]",children:za(Number(w?.value||0))})]},e)})})]})}),As=({d:s})=>a.jsxs("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:95:3",className:"space-y-4",children:[a.jsxs("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:96:5",className:"grid grid-cols-4 gap-3",children:[a.jsx(z,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:97:7",className:"bg-[var(--dg-bg-primary)]",children:a.jsxs(k,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:97:51",className:"p-3 text-center",children:[a.jsx("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:97:92",className:"text-xl font-bold text-emerald-400",children:s.running?.[0]?.value||0}),a.jsx("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:97:176",className:"text-[10px] text-[var(--dg-text-muted)]",children:"Running"})]})}),a.jsx(z,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:98:7",className:"bg-[var(--dg-bg-primary)]",children:a.jsxs(k,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:98:51",className:"p-3 text-center",children:[a.jsx("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:98:92",className:"text-xl font-bold text-amber-400",children:s.pending?.[0]?.value||0}),a.jsx("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:98:174",className:"text-[10px] text-[var(--dg-text-muted)]",children:"Pending"})]})})]}),a.jsxs("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:100:5",className:"rounded-lg bg-[var(--dg-bg-primary)] p-3 max-h-40 overflow-y-auto",children:[a.jsx("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:100:88",className:"text-xs font-medium mb-2",children:"CPU Top 10"}),(s.cpuTop||[]).map((r,e)=>a.jsxs("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:100:186",className:"flex items-center gap-2 text-[11px] mb-1",children:[a.jsx("span",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:100:252",className:"w-10 text-right text-[var(--dg-text-muted)]",children:e+1}),a.jsx("span",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:100:326",className:"w-32 truncate",title:r.pod,children:r.pod}),a.jsx(V,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:100:386",val:Number(r.value||0)*100,label:`${Number(r.value||0).toFixed(2)}c`,color:"bg-purple-500"})]},e))]}),a.jsxs("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:101:5",className:"rounded-lg bg-[var(--dg-bg-primary)] p-3 max-h-40 overflow-y-auto",children:[a.jsx("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:101:88",className:"text-xs font-medium mb-2",children:"内存 Top 10"}),(s.memTop||[]).map((r,e)=>a.jsxs("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:101:185",className:"flex items-center gap-2 text-[11px] mb-1",children:[a.jsx("span",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:101:251",className:"w-10 text-right text-[var(--dg-text-muted)]",children:e+1}),a.jsx("span",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:101:325",className:"w-32 truncate",title:r.pod,children:r.pod}),a.jsx("span",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:101:385",className:"ml-auto",children:vs(Number(r.value||0))})]},e))]})]}),Ss=({d:s})=>{const r=Number(s.heapUsed?.[0]?.value||0),e=Number(s.uptime?.[0]?.value||0);return a.jsxs("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:109:5",className:"grid grid-cols-5 gap-3",children:[a.jsx(z,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:110:7",className:"bg-[var(--dg-bg-primary)]",children:a.jsxs(k,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:110:51",className:"p-3 text-center",children:[a.jsx("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:110:92",className:"text-lg font-bold",children:e>86400?`${(e/86400).toFixed(1)}d`:`${(e/3600).toFixed(1)}h`}),a.jsx("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:110:210",className:"text-[10px] text-[var(--dg-text-muted)]",children:"Uptime"})]})}),a.jsx(z,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:111:7",className:"bg-[var(--dg-bg-primary)]",children:a.jsxs(k,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:111:51",className:"p-3 text-center",children:[a.jsx(V,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:111:92",val:r,label:`${r.toFixed(1)}%`,color:r>80?"bg-orange-500":"bg-purple-500"}),a.jsx("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:111:183",className:"text-[10px] text-[var(--dg-text-muted)] mt-1",children:"Heap"})]})}),a.jsx(z,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:112:7",className:"bg-[var(--dg-bg-primary)]",children:a.jsxs(k,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:112:51",className:"p-3 text-center",children:[a.jsx(V,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:112:92",val:Number(s.nonHeapUsed?.[0]?.value||0),label:`${Number(s.nonHeapUsed?.[0]?.value||0).toFixed(1)}%`,color:"bg-blue-500"}),a.jsx("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:112:228",className:"text-[10px] text-[var(--dg-text-muted)] mt-1",children:"Non-Heap"})]})}),a.jsx(z,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:113:7",className:"bg-[var(--dg-bg-primary)]",children:a.jsxs(k,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:113:51",className:"p-3 text-center",children:[a.jsx("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:113:92",className:"text-lg font-bold text-emerald-400",children:s.threadCount?.[0]?.value||0}),a.jsx("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:113:180",className:"text-[10px] text-[var(--dg-text-muted)]",children:"Threads"})]})}),a.jsx(z,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:114:7",className:"bg-[var(--dg-bg-primary)]",children:a.jsxs(k,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:114:51",className:"p-3 text-center",children:[a.jsx("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:114:92",className:"text-lg font-bold text-amber-400",children:Number(s.gcPause?.[0]?.value||0).toFixed(3)}),a.jsx("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:114:193",className:"text-[10px] text-[var(--dg-text-muted)]",children:"GC Pause (s)"})]})})]})},Cs=({dsUrl:s})=>{const[r,e]=o.useState(!1),[c,i]=o.useState(!1),[x,b]=o.useState(0),[g,N]=o.useState(""),[w,m]=o.useState("kubernetes"),[P,y]=o.useState({}),[W,v]=o.useState({}),[h,A]=o.useState({}),[$,F]=o.useState({});o.useEffect(()=>{s&&M(s)},[s]);const M=async p=>{i(!0),N("");try{const f=await oa.post("/prometheus/connect",{url:p});e(!0),b(f.targets||0),I(p)}catch(f){e(!1),N(f.message||"连接失败")}finally{i(!1)}},I=async p=>{for(const f of["kubernetes","node","pod","jvm"])try{const n=await oa.post("/prometheus/dashboard",{url:p,type:f}),l={};for(const[S,j]of Object.entries(n||{}))l[S]=Array.isArray(j)?j:j?.data?.result?ys(j.data.result):j;f==="kubernetes"&&y(l),f==="node"&&v(l),f==="pod"&&A(l),f==="jvm"&&F(l)}catch{}},T=()=>{s&&M(s)};return!r&&!g?null:a.jsxs(z,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:162:5",className:"bg-[var(--dg-bg-secondary)] border-purple-500/20",children:[a.jsx(Ga,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:163:7",className:"py-3 px-4 pb-2",children:a.jsxs("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:164:9",className:"flex items-center gap-2",children:[a.jsx(J,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:165:11",className:"h-4 w-4 text-purple-400"}),a.jsx(wa,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:166:11",className:"text-sm font-medium",children:"Prometheus 监控"}),r&&a.jsxs(E,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:167:25",className:"text-[10px] bg-purple-500/10 text-purple-400",children:[x," targets"]}),r&&a.jsx("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:168:25",className:"ml-auto",children:a.jsxs(D,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:168:50",variant:"ghost",size:"sm",className:"h-6 px-2 text-[10px]",onClick:T,children:[a.jsx(ha,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:168:135",className:"w-3 h-3 mr-1"}),"刷新"]})})]})}),a.jsx(k,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:171:7",className:"px-4 pb-3 pt-0",children:c?a.jsxs("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:172:21",className:"text-center py-12",children:[a.jsx(aa,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:172:56",className:"h-6 w-6 mx-auto mb-2 animate-spin text-purple-400"}),a.jsx("p",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:172:129",className:"text-xs text-[var(--dg-text-muted)]",children:"连接中…"})]}):g?a.jsxs("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:173:20",className:"p-3 rounded-lg bg-red-500/10 border border-red-500/20 text-xs text-red-400",children:[a.jsx(Na,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:173:112",className:"h-4 w-4 inline mr-1"}),g]}):a.jsxs(Ba,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:175:11",value:w,onValueChange:m,children:[a.jsxs(Oa,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:176:13",className:"bg-[var(--dg-bg-tertiary)] mb-3",children:[a.jsxs(R,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:177:15",value:"kubernetes",className:"text-xs",children:[a.jsx(Ya,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:177:67",className:"w-3 h-3 mr-1"}),"Kubernetes"]}),a.jsxs(R,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:178:15",value:"node",className:"text-xs",children:[a.jsx(Q,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:178:61",className:"w-3 h-3 mr-1"}),"Node"]}),a.jsxs(R,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:179:15",value:"pod",className:"text-xs",children:[a.jsx(Gs,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:179:60",className:"w-3 h-3 mr-1"}),"Pod"]}),a.jsxs(R,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:180:15",value:"jvm",className:"text-xs",children:[a.jsx(ta,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:180:60",className:"w-3 h-3 mr-1"}),"JVM"]})]}),a.jsx(K,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:182:13",value:"kubernetes",children:a.jsx(ws,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:182:45",d:P})}),a.jsx(K,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:183:13",value:"node",children:a.jsx(Ps,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:183:39",d:W})}),a.jsx(K,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:184:13",value:"pod",children:a.jsx(As,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:184:38",d:h})}),a.jsx(K,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:185:13",value:"jvm",children:a.jsx(Ss,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:185:38",d:$})})]})})]})};function zs(){return typeof window<"u"&&window.location?{origin:window.location.origin,backend:`${window.location.protocol}//${window.location.hostname}:8080`}:{origin:"http://127.0.0.1",backend:"http://127.0.0.1:8080"}}function ks({open:s,onOpenChange:r,server:e,onInstalled:c,onFailed:i}){const x=Wa(d=>d.token)||"",{origin:b,backend:g}=zs(),[N,w]=o.useState(!1),[m,P]=o.useState(!1),[y,W]=o.useState(!1),[v,h]=o.useState("auto"),[A,$]=o.useState("root"),[F,M]=o.useState(""),[I,T]=o.useState(""),[p,f]=o.useState("password"),n=e&&!e.has_auth,l=`curl -fsSL ${b}/agent/install.sh | bash -s -- --server ${g} --token ${x}`,S=()=>{const d=document.createElement("textarea");d.value=l,d.style.position="fixed",d.style.top="0",d.style.left="0",d.style.width="2em",d.style.height="2em",d.style.padding="0",d.style.border="none",d.style.outline="none",d.style.boxShadow="none",d.style.background="transparent",d.style.opacity="0",d.style.pointerEvents="none",d.style.zIndex="-1",d.style.fontSize="16px",d.contentEditable="true",d.readOnly=!0,document.body.appendChild(d),d.focus(),d.select(),d.setSelectionRange&&d.setSelectionRange(0,999999);let Z=!1;try{Z=document.execCommand("copy")}catch{}document.body.removeChild(d),Z?(w(!0),u.success("安装命令已复制到剪贴板,粘贴到目标主机执行"),setTimeout(()=>w(!1),3e3)):(u.error("自动复制失败,请在下方手动全选复制 (Ctrl+A → Ctrl+C)"),P(!0))},j=`${b}/agent/aiops-agent-linux-amd64`,ma=[{icon:hs,title:"1. 下载二进制",commands:[`curl -fsSL ${j} -o /usr/local/bin/aiops-agent`]},{icon:as,title:"2. 赋予执行权限",commands:["chmod +x /usr/local/bin/aiops-agent"]},{icon:ka,title:"3. 创建 systemd 服务",commands:["cat > /etc/systemd/system/aiops-agent.service << 'EOF'","[Unit]","Description=AIOps Agent","After=network.target","","[Service]","Type=simple",`ExecStart=/usr/local/bin/aiops-agent --server ${g} --token ${x}`,"Restart=always","RestartSec=5","","[Install]","WantedBy=multi-user.target","EOF"]},{icon:ms,title:"4. 启动并设置开机自启",commands:["systemctl daemon-reload","systemctl enable --now aiops-agent","systemctl status aiops-agent"]}],B=async()=>{if(!(!e||!x)){if(n&&!F&&!I){u.error("请填写 SSH 登录凭据(密码或密钥)");return}W(!0);try{const d=n?{username:A,password:F,ssh_key:I,auth_type:p}:void 0;(await Fa.installAgent(e.id,x,d))?.installed||!1?(u.success(`${e.hostname} Agent 安装成功`),c?.(e.id),r(!1)):(u.warning(`${e.hostname}: Agent 安装命令已执行,但服务未检测到运行`),c?.(e.id),r(!1))}catch(d){const Z=d?.message||"安装失败";u.error(`${e.hostname} ${Z}`),i?.(e.id,Z)}finally{W(!1)}}};return a.jsx(ra,{"code-path":"src/components/agent/AgentWizard.tsx:190:5",open:s,onOpenChange:r,children:a.jsxs(na,{"code-path":"src/components/agent/AgentWizard.tsx:191:7",className:"max-w-2xl bg-slate-900 border-slate-800 text-slate-100",children:[a.jsxs(da,{"code-path":"src/components/agent/AgentWizard.tsx:192:9",children:[a.jsx(ca,{"code-path":"src/components/agent/AgentWizard.tsx:193:11",className:"text-slate-100",children:e?`部署 Agent → ${e.hostname}`:"部署 Agent"}),a.jsx(_a,{"code-path":"src/components/agent/AgentWizard.tsx:196:11",className:"text-slate-400",children:e?`目标主机 ${e.hostname} (${e.ip}),选择安装方式:`:"在目标主机上执行以下命令即可完成 Agent 安装与注册"})]}),a.jsxs(Ba,{"code-path":"src/components/agent/AgentWizard.tsx:204:9",value:v,onValueChange:h,className:"w-full",children:[a.jsxs(Oa,{"code-path":"src/components/agent/AgentWizard.tsx:205:11",className:"bg-slate-800 border border-slate-700",children:[a.jsxs(R,{"code-path":"src/components/agent/AgentWizard.tsx:206:13",value:"auto",className:"data-[state=active]:bg-slate-700",children:[a.jsx(pa,{"code-path":"src/components/agent/AgentWizard.tsx:207:15",className:"h-4 w-4 mr-1.5"}),"安装Agent"]}),e&&a.jsxs(R,{"code-path":"src/components/agent/AgentWizard.tsx:211:15",value:"ssh",className:"data-[state=active]:bg-slate-700",children:[a.jsx(ta,{"code-path":"src/components/agent/AgentWizard.tsx:212:17",className:"h-4 w-4 mr-1.5"}),"SSH一键安装"]}),!e&&a.jsxs(R,{"code-path":"src/components/agent/AgentWizard.tsx:217:15",value:"ssh",className:"data-[state=active]:bg-slate-700 opacity-50 cursor-not-allowed",disabled:!0,children:[a.jsx(ta,{"code-path":"src/components/agent/AgentWizard.tsx:218:17",className:"h-4 w-4 mr-1.5"}),"SSH一键安装"]}),a.jsx(R,{"code-path":"src/components/agent/AgentWizard.tsx:222:13",value:"manual",className:"data-[state=active]:bg-slate-700",children:"手动安装"})]}),a.jsxs(K,{"code-path":"src/components/agent/AgentWizard.tsx:228:11",value:"auto",className:"mt-4 space-y-3",children:[a.jsx("p",{"code-path":"src/components/agent/AgentWizard.tsx:229:13",className:"text-sm text-slate-400",children:"在目标主机执行以下命令,Agent 将自动下载、安装并启动:"}),a.jsxs("div",{"code-path":"src/components/agent/AgentWizard.tsx:232:13",className:"relative rounded-lg bg-slate-950 border border-slate-800 p-4",children:[a.jsx("pre",{"code-path":"src/components/agent/AgentWizard.tsx:233:15",className:"text-xs text-emerald-400 font-mono whitespace-pre-wrap break-all pr-10",children:l}),a.jsx(D,{"code-path":"src/components/agent/AgentWizard.tsx:236:15",size:"icon",variant:"ghost",onClick:S,className:"absolute top-2 right-2 h-8 w-8 text-slate-400 hover:text-slate-100 hover:bg-slate-800",title:"复制到剪贴板",children:N?a.jsx(Qa,{"code-path":"src/components/agent/AgentWizard.tsx:243:27",className:"h-4 w-4 text-emerald-400"}):a.jsx(cs,{"code-path":"src/components/agent/AgentWizard.tsx:243:76",className:"h-4 w-4"})})]}),m&&a.jsxs("div",{"code-path":"src/components/agent/AgentWizard.tsx:249:15",className:"rounded-lg bg-amber-950/30 border border-amber-800/50 p-4",children:[a.jsx("p",{"code-path":"src/components/agent/AgentWizard.tsx:250:17",className:"text-xs text-amber-400 mb-2",children:"⚠️ 自动复制失败。请点击下方输入框全选 (Ctrl+A) 后复制 (Ctrl+C):"}),a.jsx("textarea",{"code-path":"src/components/agent/AgentWizard.tsx:253:17",readOnly:!0,value:l,className:"w-full h-24 bg-slate-950 border border-amber-800/30 text-emerald-400 font-mono text-xs p-3 rounded resize-none focus:outline-none focus:border-amber-600",onClick:d=>d.target.select()})]}),a.jsxs("div",{"code-path":"src/components/agent/AgentWizard.tsx:261:13",className:"flex items-start gap-2 text-xs text-slate-500",children:[a.jsx(pa,{"code-path":"src/components/agent/AgentWizard.tsx:262:15",className:"h-3.5 w-3.5 mt-0.5 shrink-0"}),a.jsxs("span",{"code-path":"src/components/agent/AgentWizard.tsx:263:15",children:["服务器地址已自动检测 — 安装脚本通过 Nginx 代理 (",b,"),Agent 直连后端 (",g,")。安装成功后将自动连接并开始上报指标。"]})]})]}),!e&&a.jsx(K,{"code-path":"src/components/agent/AgentWizard.tsx:271:13",value:"ssh",className:"mt-4 space-y-4",children:a.jsxs("div",{"code-path":"src/components/agent/AgentWizard.tsx:272:15",className:"text-center py-12 text-slate-400",children:[a.jsx(Q,{"code-path":"src/components/agent/AgentWizard.tsx:273:17",className:"h-10 w-10 mx-auto mb-3 opacity-50"}),a.jsx("p",{"code-path":"src/components/agent/AgentWizard.tsx:274:17",className:"text-sm font-medium mb-1",children:"未选择目标主机"}),a.jsx("p",{"code-path":"src/components/agent/AgentWizard.tsx:275:17",className:"text-xs",children:"请先在主机列表中勾选一台主机,再点击「安装 Agent」打开此页面"})]})}),e&&a.jsxs(K,{"code-path":"src/components/agent/AgentWizard.tsx:281:13",value:"ssh",className:"mt-4 space-y-4",children:[a.jsxs("div",{"code-path":"src/components/agent/AgentWizard.tsx:282:15",className:"rounded-lg bg-slate-950 border border-slate-800 p-4",children:[a.jsxs("div",{"code-path":"src/components/agent/AgentWizard.tsx:283:17",className:"flex items-center gap-3 mb-3",children:[a.jsx(Q,{"code-path":"src/components/agent/AgentWizard.tsx:284:19",className:"h-5 w-5 text-blue-400"}),a.jsxs("div",{"code-path":"src/components/agent/AgentWizard.tsx:285:19",children:[a.jsx("p",{"code-path":"src/components/agent/AgentWizard.tsx:286:21",className:"text-sm font-medium text-slate-200",children:e.hostname}),a.jsx("code",{"code-path":"src/components/agent/AgentWizard.tsx:287:21",className:"text-xs text-slate-400",children:e.ip})]})]}),n&&a.jsxs("div",{"code-path":"src/components/agent/AgentWizard.tsx:293:19",className:"mb-4 p-3 rounded-lg bg-amber-950/30 border border-amber-800/40 space-y-3",children:[a.jsxs("div",{"code-path":"src/components/agent/AgentWizard.tsx:294:21",className:"flex items-center gap-2 text-xs text-amber-300/80",children:[a.jsx(Xa,{"code-path":"src/components/agent/AgentWizard.tsx:295:23",className:"h-3.5 w-3.5"}),a.jsx("span",{"code-path":"src/components/agent/AgentWizard.tsx:296:23",children:"该服务器未配置 SSH 凭据,请填写以下信息(首次连接成功后自动保存)"})]}),a.jsxs("div",{"code-path":"src/components/agent/AgentWizard.tsx:298:21",className:"grid grid-cols-2 gap-2",children:[a.jsxs("div",{"code-path":"src/components/agent/AgentWizard.tsx:299:23",children:[a.jsx(L,{"code-path":"src/components/agent/AgentWizard.tsx:300:25",className:"text-xs text-slate-400",children:"用户名"}),a.jsx(X,{"code-path":"src/components/agent/AgentWizard.tsx:301:25",value:A,onChange:d=>$(d.target.value),placeholder:"root",className:"h-8 text-sm bg-slate-900 border-slate-700 text-slate-200 mt-1"})]}),a.jsxs("div",{"code-path":"src/components/agent/AgentWizard.tsx:308:23",className:"flex items-end gap-1",children:[a.jsxs("div",{"code-path":"src/components/agent/AgentWizard.tsx:309:25",className:"flex-1",children:[a.jsx(L,{"code-path":"src/components/agent/AgentWizard.tsx:310:27",className:"text-xs text-slate-400",children:"密码"}),a.jsx(X,{"code-path":"src/components/agent/AgentWizard.tsx:311:27",type:"password",value:F,onChange:d=>{M(d.target.value),f("password")},placeholder:"******",className:"h-8 text-sm bg-slate-900 border-slate-700 text-slate-200 mt-1"})]}),a.jsx("span",{"code-path":"src/components/agent/AgentWizard.tsx:319:25",className:"text-xs text-slate-500 px-1 pb-1",children:"或"}),a.jsx(D,{"code-path":"src/components/agent/AgentWizard.tsx:320:25",variant:"ghost",size:"sm",onClick:()=>{f("key"),M("")},className:`text-xs h-7 px-2 ${p==="key"?"text-blue-400":"text-slate-500"}`,children:"密钥"})]})]}),p==="key"&&a.jsxs("div",{"code-path":"src/components/agent/AgentWizard.tsx:328:23",children:[a.jsx(L,{"code-path":"src/components/agent/AgentWizard.tsx:329:25",className:"text-xs text-slate-400",children:"SSH 私钥(PEM 格式)"}),a.jsx("textarea",{"code-path":"src/components/agent/AgentWizard.tsx:330:25",value:I,onChange:d=>T(d.target.value),placeholder:`-----BEGIN OPENSSH PRIVATE KEY----- -... ------END OPENSSH PRIVATE KEY-----`,rows:3,className:"w-full mt-1 bg-slate-900 border border-slate-700 text-slate-200 font-mono text-xs p-2 rounded-md resize-none"})]})]}),a.jsx("p",{"code-path":"src/components/agent/AgentWizard.tsx:342:17",className:"text-sm text-slate-400 mb-4",children:"通过 SSH 远程连接到目标主机,自动下载并安装 Agent,完成后立即启动运行。"}),a.jsx(D,{"code-path":"src/components/agent/AgentWizard.tsx:345:17",onClick:B,disabled:y,className:"w-full bg-blue-600 hover:bg-blue-700 text-white",children:y?a.jsxs(a.Fragment,{children:[a.jsx(aa,{"code-path":"src/components/agent/AgentWizard.tsx:352:23",className:"h-4 w-4 mr-2 animate-spin"}),"SSH 连接中,正在安装..."]}):a.jsxs(a.Fragment,{children:[a.jsx(ta,{"code-path":"src/components/agent/AgentWizard.tsx:357:23",className:"h-4 w-4 mr-2"}),n?"连接并安装 Agent(凭据将自动保存)":"一键安装 Agent"]})})]}),a.jsxs("div",{"code-path":"src/components/agent/AgentWizard.tsx:363:15",className:"flex items-start gap-2 text-xs text-slate-500",children:[a.jsx(pa,{"code-path":"src/components/agent/AgentWizard.tsx:364:17",className:"h-3.5 w-3.5 mt-0.5 shrink-0"}),a.jsxs("span",{"code-path":"src/components/agent/AgentWizard.tsx:365:17",children:["系统将通过 SSH 连接 ",e.ip,",执行安装脚本。请确保服务器 SSH 凭据已正确配置(编辑服务器可修改密码/密钥)。"]})]})]}),a.jsxs(K,{"code-path":"src/components/agent/AgentWizard.tsx:373:11",value:"manual",className:"mt-4 space-y-4",children:[a.jsx("div",{"code-path":"src/components/agent/AgentWizard.tsx:374:13",className:"max-h-[420px] overflow-y-auto space-y-3 pr-1",children:ma.map(d=>a.jsxs("div",{"code-path":"src/components/agent/AgentWizard.tsx:376:17",className:"rounded-lg bg-slate-950 border border-slate-800 overflow-hidden",children:[a.jsxs("div",{"code-path":"src/components/agent/AgentWizard.tsx:377:19",className:"flex items-center gap-2 px-4 py-2.5 bg-slate-800/50",children:[a.jsx(d.icon,{"code-path":"src/components/agent/AgentWizard.tsx:378:21",className:"h-4 w-4 text-blue-400"}),a.jsx("span",{"code-path":"src/components/agent/AgentWizard.tsx:379:21",className:"text-sm font-medium text-slate-200",children:d.title})]}),a.jsx("div",{"code-path":"src/components/agent/AgentWizard.tsx:381:19",className:"p-3 space-y-1",children:d.commands.map((Z,sa)=>a.jsxs("div",{"code-path":"src/components/agent/AgentWizard.tsx:383:23",className:"flex items-start gap-2",children:[a.jsx("span",{"code-path":"src/components/agent/AgentWizard.tsx:384:25",className:"text-slate-600 font-mono text-xs select-none mt-0.5",children:"$"}),a.jsx("code",{"code-path":"src/components/agent/AgentWizard.tsx:385:25",className:"text-xs text-slate-300 font-mono whitespace-pre-wrap break-all flex-1",children:Z})]},sa))})]},d.title))}),a.jsx("p",{"code-path":"src/components/agent/AgentWizard.tsx:394:13",className:"text-xs text-slate-500",children:"完成上述步骤后,Agent 将作为 systemd 服务运行并自动上报指标。"})]})]})]})})}const Ws=[{id:"agent",label:"Agent 主机",icon:a.jsx(Q,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:52:43",className:"w-3.5 h-3.5"})},{id:"zabbix",label:"Zabbix",icon:a.jsx(J,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:53:42",className:"w-3.5 h-3.5"})},{id:"prometheus",label:"Prometheus",icon:a.jsx(J,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:54:50",className:"w-3.5 h-3.5"})},{id:"dashboard",label:"自定义",icon:a.jsx($a,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:55:42",className:"w-3.5 h-3.5"})}],_s=()=>{const s=ss(),r=es(),[e,c]=o.useState([]),[i,x]=o.useState(!0),[b,g]=o.useState("cpu_usage"),[N,w]=o.useState("desc"),[m,P]=o.useState(1),[y,W]=o.useState(10),[v,h]=o.useState(new Set),[A,$]=o.useState(!1),[F,M]=o.useState(null),[I,T]=o.useState(!1),[p,f]=o.useState("install"),[n,l]=o.useState(!1),[S,j]=o.useState(!1),[ma,B]=o.useState(new Set),[d,Z]=o.useState(!1),sa=async()=>{if(await s({title:"批量卸载 Agent",description:`确定卸载选中的 ${ea.length} 台主机的 AIOps Agent?卸载将在后台异步执行。`,confirmText:"卸载",variant:"destructive"})){Z(!0),B(new Set(ea));try{await Aa.batchUninstall(ea),u.success(`已提交:批量卸载 ${ea.length} 台主机的 Agent,后台执行中,30秒后自动刷新`),h(new Set),setTimeout(()=>{q(),B(new Set)},3e4)}catch{u.error("提交失败"),B(new Set)}finally{Z(!1)}}},Pa=Math.max(1,Math.ceil(e.length/y)),q=async()=>{try{c(fs(await oa.get("/agent/latest")))}catch{}finally{x(!1)}};o.useEffect(()=>{q();const t=setInterval(q,3e4);return()=>clearInterval(t)},[]);const La=t=>{b===t?w(C=>C==="asc"?"desc":"asc"):(g(t),w("desc"))},Ra=[...e].sort((t,C)=>{let G=t[b]??"",_=C[b]??"";return b==="agent_status"&&(G=t.agent_status||"",_=C.agent_status||""),typeof G=="number"?N==="asc"?G-_:_-G:N==="asc"?String(G).localeCompare(String(_)):String(_).localeCompare(String(G))}).slice((m-1)*y,m*y),Ka=({f:t})=>b!==t?a.jsx(Ia,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:107:54",className:"w-3 h-3 text-slate-500"}):N==="asc"?a.jsx(Ha,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:107:122",className:"w-3 h-3 text-emerald-400"}):a.jsx(Ua,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:107:173",className:"w-3 h-3 text-emerald-400"}),ia=(t,C)=>a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:109:5",className:"flex items-center gap-2 min-w-[90px]",children:[a.jsx("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:109:59",className:"flex-1 h-2.5 rounded-full bg-[var(--dg-bg-tertiary)] overflow-hidden",children:a.jsx("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:109:145",className:`h-full rounded-full transition-all duration-500 ${t>=80?"bg-orange-500":"bg-emerald-500"}`,style:{width:`${Math.min(t,100)}%`}})}),a.jsx("span",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:109:310",className:`w-14 text-right text-xs font-mono tabular-nums ${t>=80?"text-orange-400":""}`,children:C})]}),Va=v.size===e.length&&e.length>0,la=v.size>0,ea=[...v].map(Number).filter(t=>!isNaN(t)),Y=o.useMemo(()=>e.filter(t=>v.has(String(t.server_id))),[e,v]),U=o.useMemo(()=>Y.filter(t=>t.agent_status!=="online"),[Y]),H=o.useMemo(()=>Y.filter(t=>t.agent_status==="online"),[Y]),qa=()=>{l(!1),U.length>0&&H.length===0?f("install"):U.length===0&&H.length>0?f("upgrade"):f("install"),T(!0)},Ja=async()=>{if(!n){u.error("请先确认并勾选「我已知悉」");return}j(!0);const t=Wa.getState().token,C=Y.map(G=>G.server_id);B(new Set(C));try{if(p==="install"){if(!t){u.error("未登录");return}const G=U.map(xa=>xa.server_id);if(G.length===0){u.warning("所选主机均已安装 Agent,无需安装");return}const _=await Fa.batchInstallAgent(G,t);u.success(`已提交:批量安装 ${_?.total??G.length} 台主机的 Agent,后台执行中,30秒后自动刷新`),h(new Set),setTimeout(()=>{q(),B(new Set)},3e4)}else{const G=H.map(xa=>xa.server_id);if(G.length===0){u.warning("所选主机中没有在线 Agent,无法升级");return}const _=await Aa.batchUpgrade(G);u.success(_?.message||`已提交:批量升级 ${G.length} 台主机的 Agent,后台执行中,30秒后自动刷新`),h(new Set),setTimeout(()=>{q(),B(new Set)},3e4)}T(!1)}catch{u.error("提交失败"),B(new Set)}finally{j(!1)}};return i?a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:164:23",className:"text-center py-20 text-[var(--dg-text-muted)]",children:[a.jsx(J,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:164:86",className:"h-6 w-6 mx-auto mb-2 animate-spin"}),a.jsx("p",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:164:144",className:"text-xs",children:"加载中…"})]}):e.length?a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:167:5",children:[a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:169:7",className:"flex items-center gap-2 mb-3 flex-wrap",children:[la&&a.jsxs("span",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:170:20",className:"text-xs text-[var(--dg-text-secondary)]",children:["已选 ",v.size," 项"]}),a.jsx("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:171:9",className:"flex-1"}),a.jsxs(D,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:172:9",size:"sm",variant:"outline",className:"h-7 text-xs gap-1",onClick:()=>{const t=la?e.find(C=>v.has(String(C.server_id))):null;M(t?{id:t.server_id,hostname:t.hostname,ip:t.ip,has_auth:t.has_auth}:null),$(!0)},children:[a.jsx(ts,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:177:11",className:"w-3 h-3"}),"安装 Agent"]}),la&&a.jsxs(a.Fragment,{children:[a.jsxs(D,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:181:13",size:"sm",variant:"outline",className:"h-7 text-xs gap-1 border-blue-500/30 text-blue-400 hover:bg-blue-500/10",onClick:qa,children:[a.jsx(Sa,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:182:15",className:"w-3 h-3"}),"批量部署 (",v.size,")"]}),a.jsxs(D,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:184:13",size:"sm",variant:"outline",className:"h-7 text-xs gap-1 border-red-500/30 text-red-400 hover:bg-red-500/10",onClick:sa,disabled:d,children:[a.jsx(xs,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:185:15",className:"w-3 h-3"}),"批量卸载 (",v.size,")"]})]}),a.jsxs(D,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:189:9",size:"sm",variant:"ghost",className:"h-7 text-xs gap-1",onClick:q,children:[a.jsx(ha,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:189:89",className:"w-3 h-3"}),"刷新"]})]}),a.jsx(ks,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:192:7",open:A,onOpenChange:$,server:F,onInstalled:()=>{u.success("Agent 安装成功"),$(!1),q()},onFailed:()=>u.error("安装失败")}),a.jsx(ra,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:197:7",open:I,onOpenChange:t=>{t||(T(!1),l(!1))},children:a.jsxs(na,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:198:9",className:"max-w-2xl max-h-[85vh] overflow-auto bg-slate-900 border-slate-700 text-slate-100",children:[a.jsxs(da,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:199:11",children:[a.jsxs(ca,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:200:13",className:"flex items-center gap-2 text-base",children:[a.jsx(Sa,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:201:15",className:"w-5 h-5 text-blue-400"}),"批量部署 Agent"]}),a.jsxs(_a,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:204:13",className:"text-slate-400 text-xs",children:["选中 ",Y.length," 台主机(需安装: ",U.length,",待升级: ",H.length,")"]})]}),a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:209:11",className:"space-y-4",children:[a.jsx("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:211:13",className:"flex items-center gap-2 p-1 rounded-lg bg-slate-800 border border-slate-700 w-fit",children:["install","upgrade"].map(t=>a.jsx("button",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:213:17",disabled:t==="install"?U.length===0:H.length===0,onClick:()=>f(t),className:`px-4 py-1.5 rounded text-xs font-medium transition-colors disabled:opacity-30 disabled:cursor-not-allowed ${p===t?"bg-blue-600 text-white shadow-sm":"text-slate-400 hover:text-slate-200"}`,children:t==="install"?`⚡ 安装 (${U.length})`:`🔄 升级到最新版 (${H.length})`},t))}),a.jsx("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:227:13",className:"rounded-md border border-slate-700 overflow-hidden",children:a.jsxs("table",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:228:15",className:"w-full text-xs",children:[a.jsx("thead",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:229:17",className:"bg-slate-800",children:a.jsxs("tr",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:230:19",children:[a.jsx("th",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:231:21",className:"px-3 py-2 text-left font-medium text-slate-400",children:"主机名"}),a.jsx("th",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:232:21",className:"px-3 py-2 text-left font-medium text-slate-400",children:"IP"}),a.jsx("th",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:233:21",className:"px-3 py-2 text-left font-medium text-slate-400",children:"状态"}),a.jsx("th",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:234:21",className:"px-3 py-2 text-left font-medium text-slate-400",children:"当前版本"}),a.jsx("th",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:235:21",className:"px-3 py-2 text-left font-medium text-slate-400",children:"操作"})]})}),a.jsx("tbody",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:238:17",children:(p==="install"?U:H).map(t=>a.jsxs("tr",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:240:21",className:"border-t border-slate-800 hover:bg-slate-800/50",children:[a.jsx("td",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:241:23",className:"px-3 py-2 font-medium text-slate-200",children:t.hostname}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:242:23",className:"px-3 py-2 font-mono text-slate-400",children:t.ip}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:243:23",className:"px-3 py-2",children:t.agent_status==="online"?a.jsx(E,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:245:29",className:"text-[10px] bg-emerald-500/20 text-emerald-400",children:"在线"}):a.jsx(E,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:246:29",className:"text-[10px] bg-slate-500/20 text-slate-400",children:t.agent_status==="not_installed"?"未安装":t.agent_status||"离线"})}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:250:23",className:"px-3 py-2 font-mono text-slate-400",children:t.agent_version||"—"}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:251:23",className:"px-3 py-2",children:a.jsx("span",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:252:25",className:"text-blue-400 text-[11px]",children:p==="install"?"即将安装":"即将升级"})})]},t.server_id))})]})}),a.jsx("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:263:13",className:"rounded-md border border-amber-500/30 bg-amber-500/5 p-3 space-y-2",children:a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:264:15",className:"flex items-start gap-2",children:[a.jsx(os,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:265:17",className:"w-4 h-4 text-amber-400 mt-0.5 shrink-0"}),a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:266:17",children:[a.jsxs("p",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:267:19",className:"text-xs font-medium text-amber-300 mb-1",children:[p==="install"?"本次安装":"本次升级",",主机监控探针将部署 AIOps Agent。AIOps Agent 是 AIOps 平台推出的新一代数据采集器,提供主机监控指标采集和可观测数据采集能力。"]}),a.jsxs("p",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:270:19",className:"text-[11px] text-amber-400/80 leading-relaxed",children:[p==="upgrade"&&"升级前请注意以下事项:",p==="install"&&"安装前请注意以下事项:"]}),a.jsxs("ul",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:274:19",className:"mt-1 space-y-0.5 text-[11px] text-slate-400 list-disc list-inside",children:[p==="upgrade"&&a.jsxs(a.Fragment,{children:[a.jsx("li",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:277:25",children:"如果您的机器已经安装旧版 Agent,升级操作将停止旧版并替换为最新版本。"}),a.jsx("li",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:278:25",children:"如果您的机器之前安装过 Agent 但已卸载,遗留有相关采集配置,本次升级可能导致配置重新生效。升级前请确保存量废弃配置已经移除。"}),a.jsx("li",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:279:25",children:"如果您的机器采用自定义安装的 Agent(非 AIOps 提供的一键安装脚本),请不要直接使用批量升级。"}),a.jsx("li",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:280:25",children:"批量升级前,请务必先单机灰度升级,确保升级成功且不影响业务后再操作。"})]}),p==="install"&&a.jsxs(a.Fragment,{children:[a.jsx("li",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:285:25",children:"安装将自动检测目标主机架构(amd64/arm64),下载对应版本的 Agent 二进制并启动服务。"}),a.jsx("li",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:286:25",children:"请确保目标主机的 SSH 端口(默认 22)可访问,且已关联有效的 SSH 凭据。"}),a.jsx("li",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:287:25",children:"安装过程约 30-60 秒,期间目标主机 CPU 负载会短暂升高。"}),a.jsx("li",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:288:25",children:"若安装失败,请检查目标主机的防火墙规则和 SSH 服务状态后重试。"})]}),a.jsx("li",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:291:21",children:"操作不可回滚,请在操作前确认已备份关键配置。"}),a.jsx("li",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:292:21",children:"操作将在后台异步执行,您可以在「任务执行记录」中查看详细进度。"})]})]})]})}),a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:299:13",className:"flex items-center gap-2",children:[a.jsx(Da,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:300:15",id:"batch-ack",checked:n,onCheckedChange:t=>l(!!t)}),a.jsx("label",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:301:15",htmlFor:"batch-ack",className:"text-xs text-slate-300 cursor-pointer select-none",children:"我已知悉以上风险和注意事项"})]})]}),a.jsxs(va,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:305:11",className:"gap-2",children:[a.jsx(D,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:306:13",variant:"outline",className:"border-slate-700 text-slate-300 h-8 text-xs",onClick:()=>{T(!1),l(!1)},children:"取消"}),a.jsxs(D,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:309:13",className:"bg-blue-600 hover:bg-blue-700 text-white h-8 text-xs gap-1",disabled:S||!n||(p==="install"?U.length===0:H.length===0),onClick:Ja,children:[S&&a.jsx(aa,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:314:35",className:"w-3 h-3 animate-spin"}),p==="install"?"确认安装":"确认升级"]})]})]})}),a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:321:7",className:"overflow-x-auto rounded-lg border border-[var(--dg-border)]",children:[a.jsxs("table",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:322:9",className:"w-full text-xs",children:[a.jsx("thead",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:323:11",className:"bg-[var(--dg-bg-tertiary)] border-b",children:a.jsxs("tr",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:323:66",children:[a.jsx("th",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:324:13",className:"px-2 py-2 w-8",children:a.jsx(Da,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:325:15",checked:Va,onCheckedChange:t=>h(t?new Set(e.map(C=>String(C.server_id))):new Set)})}),["hostname","agent_version","agent_status","cpu_usage","mem_usage","disk_usage","region","ip"].map(t=>a.jsx("th",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:328:15",className:"px-3 py-2 text-left font-medium text-[var(--dg-text-secondary)] cursor-pointer hover:text-[var(--dg-text-primary)] select-none whitespace-nowrap",onClick:()=>La(t),children:a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:329:17",className:"flex items-center gap-1",children:[{hostname:"主机名",agent_version:"Agent版本",agent_status:"状态",cpu_usage:"CPU",mem_usage:"内存",disk_usage:"磁盘",region:"区域",ip:"IP"}[t],a.jsx(Ka,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:329:188",f:t})]})},t)),a.jsx("th",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:332:13",className:"px-3 py-2 text-left font-medium text-[var(--dg-text-secondary)] whitespace-nowrap",children:"操作"})]})}),a.jsx("tbody",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:333:11",children:Ra.map((t,C)=>a.jsxs("tr",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:335:15",className:"border-b border-[var(--dg-border)] last:border-0 hover:bg-[var(--dg-bg-tertiary)]/50",children:[a.jsx("td",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:336:17",className:"px-2 py-2.5",children:a.jsx(Da,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:337:19",checked:v.has(String(t.server_id)),onCheckedChange:G=>{const _=new Set(v);G?_.add(String(t.server_id)):_.delete(String(t.server_id)),h(_)}})}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:343:17",className:"px-3 py-2.5 font-medium text-[var(--dg-text-primary)]",children:t.hostname}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:344:17",className:"px-3 py-2.5 font-mono text-[var(--dg-text-secondary)]",children:ma.has(t.server_id)?a.jsxs("span",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:346:21",className:"inline-flex items-center gap-1 text-blue-400",children:[a.jsx(aa,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:347:23",className:"w-3 h-3 animate-spin"}),a.jsx("span",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:348:23",className:"text-[10px]",children:"部署中"})]}):t.agent_version||"—"}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:354:17",className:"px-3 py-2.5",children:t.agent_status==="online"?a.jsxs(E,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:354:72",className:"text-[10px] bg-emerald-500/20 text-emerald-400",children:[a.jsx(Ma,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:354:138",className:"w-3 h-3 mr-1"}),"在线"]}):t.agent_status==="not_installed"?a.jsx(E,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:354:214",className:"text-[10px] bg-amber-500/20 text-amber-400",children:"未安装"}):a.jsxs(E,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:354:288",className:"text-[10px] bg-slate-500/10 text-slate-400",children:[a.jsx(gs,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:354:350",className:"w-3 h-3 mr-1"}),"离线"]})}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:355:17",className:"px-3 py-2.5",children:ia(Number(t.cpu_usage||0),`${Number(t.cpu_usage||0).toFixed(1)}%`)}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:356:17",className:"px-3 py-2.5",children:ia(Number(t.mem_usage||0),`${Number(t.mem_usage||0).toFixed(1)}%`)}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:357:17",className:"px-3 py-2.5",children:ia(Number(t.disk_usage||0),`${Number(t.disk_usage||0).toFixed(1)}%`)}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:358:17",className:"px-3 py-2.5 text-[var(--dg-text-secondary)]",children:t.region||"—"}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:359:17",className:"px-3 py-2.5 font-mono text-[var(--dg-text-secondary)]",children:t.ip||"—"}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:360:17",className:"px-3 py-2.5",children:a.jsxs(D,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:361:19",variant:"ghost",size:"sm",className:"h-7 text-xs text-blue-400 hover:text-blue-300 hover:bg-blue-500/10 px-2",onClick:()=>r(`/host-monitor?host=${encodeURIComponent(t.hostname)}`),children:[a.jsx(Za,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:363:21",className:"w-3.5 h-3.5 mr-1"}),"图表"]})})]},t.hostname+C))})]}),e.length>y&&a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:371:11",className:"flex items-center justify-between px-3 py-2 bg-[var(--dg-bg-tertiary)] border-t border-[var(--dg-border)] text-xs",children:[a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:372:13",className:"flex items-center gap-2 text-[var(--dg-text-muted)]",children:[a.jsxs("span",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:373:15",children:["共 ",e.length," 条"]}),a.jsxs("select",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:374:15",className:"bg-[var(--dg-bg-primary)] border border-[var(--dg-border)] rounded px-2 py-0.5 text-xs",value:y,onChange:t=>{W(Number(t.target.value)),P(1)},children:[a.jsx("option",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:375:17",value:10,children:"10/页"}),a.jsx("option",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:376:17",value:20,children:"20/页"}),a.jsx("option",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:377:17",value:30,children:"30/页"})]})]}),a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:380:13",className:"flex items-center gap-1",children:[a.jsx("button",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:381:15",className:"px-2 py-0.5 rounded hover:bg-[var(--dg-bg-primary)] disabled:opacity-30",disabled:m<=1,onClick:()=>P(t=>t-1),children:"上一页"}),a.jsxs("span",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:382:15",className:"px-2 text-[var(--dg-text-primary)]",children:[m," / ",Pa]}),a.jsx("button",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:383:15",className:"px-2 py-0.5 rounded hover:bg-[var(--dg-bg-primary)] disabled:opacity-30",disabled:m>=Pa,onClick:()=>P(t=>t+1),children:"下一页"})]})]})]})]}):a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:165:29",className:"text-center py-20 text-[var(--dg-text-muted)]",children:[a.jsx(Q,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:165:92",className:"h-8 w-8 mx-auto mb-2"}),a.jsx("p",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:165:135",className:"text-sm",children:"暂无服务器资产"}),a.jsx("p",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:165:169",className:"text-xs mt-1",children:"请先在「服务器管理」中添加主机,然后在此安装 Agent"})]})},$s=()=>{const[s,r]=o.useState(null),[e,c]=o.useState(!0);return o.useEffect(()=>{rs.list().then(i=>{const x=i?.data||i||[];r(x.find(b=>b.is_default)||x[0]||null)}).catch(()=>{}).finally(()=>c(!1))},[]),e?a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:402:23",className:"text-center py-20 text-[var(--dg-text-muted)]",children:[a.jsx(J,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:402:86",className:"h-6 w-6 mx-auto mb-2 animate-spin"}),a.jsx("p",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:402:144",className:"text-xs",children:"加载数据源…"})]}):s?a.jsx(Ns,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:404:10",dsUrl:s.url,dsUsername:s.username,dsPassword:s.password}):a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:403:19",className:"text-center py-20 text-[var(--dg-text-muted)]",children:[a.jsx(Ta,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:403:82",className:"h-8 w-8 mx-auto mb-2"}),a.jsx("p",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:403:127",className:"text-sm",children:"未配置 Zabbix 数据源"}),a.jsxs("a",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:403:168",href:"/datasources",className:"text-xs text-blue-400 hover:underline inline-flex items-center gap-1",children:["前往配置 ",a.jsx(Ea,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:403:277",className:"w-3 h-3"})]})]})},Zs=()=>{const[s,r]=o.useState(null),[e,c]=o.useState(!0);return o.useEffect(()=>{ns.list().then(i=>{const x=i?.data||i||[];r(x.find(b=>b.is_default)||x[0]||null)}).catch(()=>{}).finally(()=>c(!1))},[]),e?a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:416:23",className:"text-center py-20 text-[var(--dg-text-muted)]",children:[a.jsx(J,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:416:86",className:"h-6 w-6 mx-auto mb-2 animate-spin"}),a.jsx("p",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:416:144",className:"text-xs",children:"加载数据源…"})]}):s?a.jsx(Cs,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:418:10",dsUrl:s.url}):a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:417:19",className:"text-center py-20 text-[var(--dg-text-muted)]",children:[a.jsx(Ta,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:417:82",className:"h-8 w-8 mx-auto mb-2"}),a.jsx("p",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:417:127",className:"text-sm",children:"未配置 Prometheus 数据源"}),a.jsxs("a",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:417:172",href:"/datasources",className:"text-xs text-blue-400 hover:underline inline-flex items-center gap-1",children:["前往配置 ",a.jsx(Ea,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:417:281",className:"w-3 h-3"})]})]})},Ts=()=>{const[s,r]=o.useState([]),[e,c]=o.useState(null),[i,x]=o.useState(!1),[b,g]=o.useState(!1),[N,w]=o.useState({name:"",description:"",datasource:"prometheus",datasourceUrl:""}),[m,P]=o.useState({title:"",type:"graph",query:"",width:6,height:4}),y=async()=>{try{const A=(await ja.getDashboards()).data||[];r(A),A.length>0&&!e&&c(A[0])}catch{}};o.useEffect(()=>{y()},[]);const W=async()=>{if(!N.name){u.error("请输入名称");return}try{await ja.createDashboard({...N,panels:[]}),u.success("创建成功"),x(!1),w({name:"",description:"",datasource:"prometheus",datasourceUrl:""}),y()}catch{u.error("创建失败")}},v=async()=>{if(!(!m.title||!m.query||!e))try{const h={id:Date.now().toString(),...m,datasource:e.datasource,x:0,y:0,options:{legend:!0,tooltip:!0,refreshInterval:30}};await ja.updateDashboard(e.id,{...e,panels:[...e.panels,h]}),u.success("面板添加成功"),g(!1),P({title:"",type:"graph",query:"",width:6,height:4}),y()}catch{u.error("添加失败")}};return a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:452:5",className:"space-y-4",children:[a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:453:7",className:"flex items-center gap-2",children:[a.jsxs(ba,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:454:9",value:e?.id,onValueChange:h=>{const A=s.find($=>$.id===h);A&&c(A)},children:[a.jsx(ua,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:455:11",className:"w-[240px] h-8 text-xs",children:a.jsx(ga,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:455:60",placeholder:"选择仪表盘"})}),a.jsx(fa,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:456:11",children:s.map(h=>a.jsxs(O,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:456:47",value:h.id,children:[h.name,h.isDefault?" (默认)":""]},h.id))})]}),a.jsxs(D,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:458:9",variant:"outline",size:"sm",className:"h-8 text-[10px]",onClick:y,children:[a.jsx(ha,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:458:89",className:"w-3 h-3 mr-1"}),"刷新"]}),e&&a.jsxs(D,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:459:20",variant:"outline",size:"sm",className:"h-8 text-[10px]",onClick:()=>g(!0),children:[a.jsx(Ca,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:459:117",className:"w-3 h-3 mr-1"}),"添加面板"]}),a.jsxs(D,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:460:9",variant:"outline",size:"sm",className:"h-8 text-[10px]",onClick:()=>x(!0),children:[a.jsx(Ca,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:460:109",className:"w-3 h-3 mr-1"}),"新建"]})]}),e?e.panels.length===0?a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:465:11",className:"text-center py-16 text-[var(--dg-text-muted)]",children:[a.jsx(Za,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:465:74",className:"w-10 h-10 mx-auto mb-2 opacity-50"}),a.jsx("p",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:465:133",className:"text-xs",children:"暂无面板"})]}):a.jsx("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:467:11",className:"grid grid-cols-12 gap-3",children:e.panels.map(h=>a.jsxs(z,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:469:15",style:{gridColumn:`span ${h.width}`,minHeight:`${h.height*80}px`},children:[a.jsx(Ga,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:470:17",className:"py-2 px-3",children:a.jsx(wa,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:470:51",className:"text-[11px] font-medium",children:h.title})}),a.jsx(k,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:471:17",className:"p-3 pt-0",children:a.jsx(Ds,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:471:51",panel:h})})]},h.id))}):a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:477:9",className:"text-center py-16 text-[var(--dg-text-muted)]",children:[a.jsx($a,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:477:72",className:"w-10 h-10 mx-auto mb-2 opacity-50"}),a.jsx("p",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:477:129",className:"text-xs",children:"暂无仪表盘"})]}),a.jsx(ra,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:480:7",open:i,onOpenChange:x,children:a.jsxs(na,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:480:62",children:[a.jsx(da,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:480:77",children:a.jsx(ca,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:480:91",children:"新建仪表盘"})}),a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:481:9",className:"space-y-3",children:[a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:481:36",children:[a.jsx(L,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:481:41",children:"名称"}),a.jsx(X,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:481:58",value:N.name,onChange:h=>w({...N,name:h.target.value})})]}),a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:482:11",children:[a.jsx(L,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:482:16",children:"数据源"}),a.jsxs(ba,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:482:34",value:N.datasource,onValueChange:h=>w({...N,datasource:h}),children:[a.jsx(ua,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:482:124",children:a.jsx(ga,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:482:139"})}),a.jsxs(fa,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:482:170",children:[a.jsx(O,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:482:185",value:"prometheus",children:"Prometheus"}),a.jsx(O,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:482:239",value:"zabbix",children:"Zabbix"}),a.jsx(O,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:482:285",value:"skywalking",children:"SkyWalking"}),a.jsx(O,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:482:339",value:"custom",children:"自定义"})]})]})]})]}),a.jsxs(va,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:483:9",children:[a.jsx(D,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:483:23",variant:"outline",onClick:()=>x(!1),children:"取消"}),a.jsx(D,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:483:97",onClick:W,children:"创建"})]})]})}),a.jsx(ra,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:485:7",open:b,onOpenChange:g,children:a.jsxs(na,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:485:56",children:[a.jsx(da,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:485:71",children:a.jsx(ca,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:485:85",children:"添加面板"})}),a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:486:9",className:"space-y-3",children:[a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:486:36",children:[a.jsx(L,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:486:41",children:"标题"}),a.jsx(X,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:486:58",value:m.title,onChange:h=>P({...m,title:h.target.value})})]}),a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:487:11",children:[a.jsx(L,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:487:16",children:"类型"}),a.jsxs(ba,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:487:33",value:m.type,onValueChange:h=>P({...m,type:h}),children:[a.jsx(ua,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:487:111",children:a.jsx(ga,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:487:126"})}),a.jsxs(fa,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:487:157",children:[a.jsx(O,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:487:172",value:"graph",children:"折线图"}),a.jsx(O,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:487:214",value:"stat",children:"数值"}),a.jsx(O,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:487:254",value:"gauge",children:"仪表盘"}),a.jsx(O,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:487:296",value:"table",children:"表格"})]})]})]}),a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:488:11",children:[a.jsx(L,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:488:16",children:"查询"}),a.jsx(X,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:488:33",value:m.query,onChange:h=>P({...m,query:h.target.value})})]})]}),a.jsxs(va,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:489:9",children:[a.jsx(D,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:489:23",variant:"outline",onClick:()=>g(!1),children:"取消"}),a.jsx(D,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:489:94",onClick:v,children:"添加"})]})]})})]})},he=()=>{const[s,r]=o.useState("agent"),[e,c]=o.useState(!1);return a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:500:5",className:`space-y-4 ${e?"fixed inset-0 z-50 bg-background p-4 overflow-auto":""}`,children:[a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:503:7",className:"flex items-center gap-1 p-1 rounded-lg bg-[var(--dg-bg-secondary)] border border-[var(--dg-border)]",children:[Ws.map(i=>a.jsxs("button",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:505:11",onClick:()=>r(i.id),className:`flex items-center gap-1.5 px-4 py-2 rounded-md text-xs font-medium transition-colors ${s===i.id?"bg-[var(--dg-bg-primary)] text-[var(--dg-text-primary)] shadow-sm":"text-[var(--dg-text-muted)] hover:text-[var(--dg-text-secondary)]"}`,children:[i.icon,i.label]},i.id)),a.jsx("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:518:9",className:"ml-auto",children:a.jsx(D,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:519:11",variant:"ghost",size:"sm",className:"h-7 w-7 p-0",onClick:()=>c(!e),children:e?a.jsx(is,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:520:27",className:"w-3.5 h-3.5"}):a.jsx(ls,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:520:67",className:"w-3.5 h-3.5"})})})]}),a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:526:7",className:"min-h-[50vh]",children:[s==="agent"&&a.jsx(_s,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:527:29"}),s==="zabbix"&&a.jsx($s,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:528:30"}),s==="prometheus"&&a.jsx(Zs,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:529:34"}),s==="dashboard"&&a.jsx(Ts,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:530:33"})]})]})};export{he as default}; diff --git a/backend/static/assets/GrafanaDashboard-DunI4txd.js b/backend/static/assets/GrafanaDashboard-DunI4txd.js new file mode 100644 index 0000000..c003fa7 --- /dev/null +++ b/backend/static/assets/GrafanaDashboard-DunI4txd.js @@ -0,0 +1,3 @@ +import{i as Ya,j as a,r as o,h as oa,A as J,B as D,L as aa,T as Na,S as Q,v as Qa,p as za,$ as ka,D as ra,a as na,b as da,c as ca,d as Wa,E as pa,K as Xa,t as as,y as ss,aH as _a,f as es,m as ts,al as os,I as rs,e as va,J as $a,z as Za}from"./index-Dmami9WE.js";import{I as X}from"./input-NsU9nXZF.js";import{B}from"./badge-3UzCvU7L.js";import{C as U,b as ya,c as Ga,a as H}from"./card-CIfC-8Rh.js";import{S as ba,a as ua,b as ga,c as fa,d as I}from"./select-DUbxjT0z.js";import{L}from"./label-Ap_-SPYI.js";import{t as u}from"./index-BuEnLCjT.js";import{s as Ta}from"./server-3HmnhxQB.js";import{z as ns,p as ds,d as ja}from"./monitor-CicbJUrQ.js";import{a as Pa}from"./agent-B3ElXCx8.js";import{T as cs}from"./trending-up-d1DKmRom.js";import{R as ha}from"./refresh-cw-CTBERyFc.js";import{W as Fa}from"./wifi-CtC3YBV7.js";import{A as Ma}from"./arrow-up-down-Cn71rsC9.js";import{A as Ia,a as Ba}from"./arrow-up-DMuDiHn6.js";import{S as Oa}from"./stat-strip-BteRU1Iu.js";import{T as Ea,a as Ua,b as R,c as K}from"./tabs-lV44z_UR.js";import{Z as ta}from"./zap-CocSkPPl.js";import{C as hs}from"./copy-CE_T92Lk.js";import{D as ms}from"./download-Vuij9wGr.js";import{P as is}from"./play-0EwQQJX_.js";import{C as Da}from"./checkbox-DoAtRzQj.js";import{M as ls,a as xs}from"./minimize-2-BHcbNmdK.js";import{P as Aa}from"./package-open-Bj2Cp1LK.js";import{T as ps}from"./trash-2-DWVnIU6o.js";import{E as Ha}from"./external-link-2hCYo_Ng.js";import{P as Sa}from"./plus-O65gX7Qz.js";import"./index-CtCQcvyh.js";import"./chevron-up-Cq4GPopa.js";const bs=[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}],["path",{d:"M5 12.859a10 10 0 0 1 5.17-2.69",key:"1dl1wf"}],["path",{d:"M19 12.859a10 10 0 0 0-2.007-1.523",key:"4k23kn"}],["path",{d:"M2 8.82a15 15 0 0 1 4.177-2.643",key:"1grhjp"}],["path",{d:"M22 8.82a15 15 0 0 0-11.288-3.764",key:"z3jwby"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],us=Ya("wifi-off",bs);function gs(s){return s?Array.isArray(s)?s:Array.isArray(s.list)?s.list:Array.isArray(s.items)?s.items:Array.isArray(s.data)?s.data:[]:[]}function fs(s){const e=[];for(let c=0;c<24;c++)e.push({time:new Date(Date.now()-(24-c)*36e5).toLocaleTimeString(),value:Math.random()*100});return e}function js({panel:s}){const r=fs();switch(s.type){case"stat":return a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaPanelContent.tsx:24:9",className:"flex flex-col items-center justify-center h-full",children:[a.jsx("span",{"code-path":"src/components/monitor/dashboard/GrafanaPanelContent.tsx:25:11",className:"text-4xl font-bold text-blue-500",children:Math.floor(Math.random()*1e3)}),a.jsx("span",{"code-path":"src/components/monitor/dashboard/GrafanaPanelContent.tsx:26:11",className:"text-sm text-muted-foreground mt-2",children:s.options?.unit||"requests/s"}),a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaPanelContent.tsx:27:11",className:"flex items-center gap-1 mt-2 text-green-500 text-sm",children:[a.jsx(cs,{"code-path":"src/components/monitor/dashboard/GrafanaPanelContent.tsx:28:13",className:"w-4 h-4"}),a.jsx("span",{"code-path":"src/components/monitor/dashboard/GrafanaPanelContent.tsx:29:13",children:"+12.5%"})]})]});case"gauge":return a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaPanelContent.tsx:35:9",className:"flex flex-col items-center justify-center h-full",children:[a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaPanelContent.tsx:36:11",className:"relative w-24 h-24",children:[a.jsxs("svg",{"code-path":"src/components/monitor/dashboard/GrafanaPanelContent.tsx:37:13",className:"w-full h-full",viewBox:"0 0 100 100",children:[a.jsx("circle",{"code-path":"src/components/monitor/dashboard/GrafanaPanelContent.tsx:38:15",cx:"50",cy:"50",r:"40",fill:"none",stroke:"#e5e7eb",strokeWidth:"10"}),a.jsx("circle",{"code-path":"src/components/monitor/dashboard/GrafanaPanelContent.tsx:39:15",cx:"50",cy:"50",r:"40",fill:"none",stroke:"#3b82f6",strokeWidth:"10",strokeDasharray:`${Math.random()*251} 251`,transform:"rotate(-90 50 50)"})]}),a.jsx("div",{"code-path":"src/components/monitor/dashboard/GrafanaPanelContent.tsx:50:13",className:"absolute inset-0 flex items-center justify-center",children:a.jsxs("span",{"code-path":"src/components/monitor/dashboard/GrafanaPanelContent.tsx:51:15",className:"text-xl font-bold",children:[Math.floor(Math.random()*100),"%"]})})]}),a.jsx("span",{"code-path":"src/components/monitor/dashboard/GrafanaPanelContent.tsx:54:11",className:"text-sm text-muted-foreground mt-2",children:"CPU使用率"})]});default:return a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaPanelContent.tsx:60:9",className:"h-full flex flex-col",children:[a.jsx("div",{"code-path":"src/components/monitor/dashboard/GrafanaPanelContent.tsx:61:11",className:"flex-1 flex items-end gap-1 px-2",children:r.map((e,c)=>a.jsx("div",{"code-path":"src/components/monitor/dashboard/GrafanaPanelContent.tsx:63:15",className:"flex-1 bg-blue-500 rounded-t",style:{height:`${e.value}%`,opacity:.3+c/r.length*.7}},c))}),a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaPanelContent.tsx:70:11",className:"flex justify-between text-xs text-muted-foreground px-2 pt-2",children:[a.jsx("span",{"code-path":"src/components/monitor/dashboard/GrafanaPanelContent.tsx:71:13",children:r[0].time}),a.jsx("span",{"code-path":"src/components/monitor/dashboard/GrafanaPanelContent.tsx:72:13",children:r[r.length-1].time})]})]})}}const Ds=({dsUrl:s,dsUsername:r,dsPassword:e})=>{const[c,i]=o.useState(!1),[x,b]=o.useState(!1),[g,N]=o.useState([]),[w,m]=o.useState(""),[P,y]=o.useState(""),[z,v]=o.useState("cpu_usage"),[h,A]=o.useState("desc");o.useEffect(()=>{s&&r&&e&&W(s,r,e)},[s,r,e]);const W=async(n,l,S)=>{b(!0),y("");try{const j=await oa.post("/zabbix/connect",{url:n,username:l,password:S});N(j.hosts||[]),m(j.version||""),i(!0)}catch(j){i(!1),y(j.message||"连接失败")}finally{b(!1)}},Z=()=>{s&&r&&e&&W(s,r,e)},T=n=>{z===n?A(l=>l==="asc"?"desc":"asc"):(v(n),A("desc"))},F=[...g].sort((n,l)=>{const S=n[z]??"",j=l[z]??"";return typeof S=="number"?h==="asc"?S-j:j-S:h==="asc"?String(S).localeCompare(String(j)):String(j).localeCompare(String(S))}),$=({f:n})=>z!==n?a.jsx(Ma,{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:68:33",className:"w-3 h-3 text-slate-500"}):h==="asc"?a.jsx(Ia,{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:69:32",className:"w-3 h-3 text-blue-400"}):a.jsx(Ba,{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:69:80",className:"w-3 h-3 text-blue-400"}),p=(n,l)=>a.jsxs("div",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:73:5",className:"flex items-center gap-2 min-w-[90px]",children:[a.jsx("div",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:74:7",className:"flex-1 h-2.5 rounded-full bg-[var(--dg-bg-tertiary)] overflow-hidden",children:a.jsx("div",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:75:9",className:`h-full rounded-full transition-all duration-500 ${n>=80?"bg-orange-500":"bg-blue-500"}`,style:{width:`${Math.min(n,100)}%`}})}),a.jsx("span",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:77:7",className:`w-14 text-right text-xs font-mono tabular-nums ${n>=80?"text-orange-400":""}`,children:l})]}),f=n=>!n||n===0?"—":n>1e9?`${(n/1e9).toFixed(1)} GB/s`:n>1e6?`${(n/1e6).toFixed(1)} MB/s`:n>1e3?`${(n/1e3).toFixed(1)} KB/s`:`${n.toFixed(1)} B/s`;return!c&&!x&&!P?null:a.jsxs(U,{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:92:5",className:"bg-[var(--dg-bg-secondary)] border-blue-500/20",children:[a.jsx(ya,{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:93:7",className:"py-3 px-4 pb-2",children:a.jsxs("div",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:94:9",className:"flex items-center gap-2",children:[a.jsx(J,{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:95:11",className:"h-4 w-4 text-blue-400"}),a.jsx(Ga,{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:96:11",className:"text-sm font-medium",children:"Zabbix 主机监控"}),w&&a.jsxs(B,{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:97:23",className:"text-[10px] bg-blue-500/10 text-blue-400",children:["v",w]}),c&&a.jsxs("span",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:98:25",className:"text-[10px] text-[var(--dg-text-muted)] ml-2",children:[g.length," 台"]}),c&&a.jsx("div",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:99:25",className:"ml-auto flex gap-1",children:a.jsxs(D,{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:99:61",variant:"ghost",size:"sm",className:"h-6 px-2 text-[10px]",onClick:Z,children:[a.jsx(ha,{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:99:146",className:"w-3 h-3 mr-1"}),"刷新"]})})]})}),a.jsx(H,{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:102:7",className:"px-4 pb-3 pt-0",children:x?a.jsxs("div",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:103:21",className:"text-center py-12",children:[a.jsx(aa,{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:103:56",className:"h-6 w-6 mx-auto mb-2 animate-spin text-blue-400"}),a.jsx("p",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:103:127",className:"text-xs text-[var(--dg-text-muted)]",children:"连接中…"})]}):P?a.jsxs("div",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:104:20",className:"p-3 rounded-lg bg-red-500/10 border border-red-500/20 text-xs text-red-400 flex items-start gap-2",children:[a.jsx(Na,{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:104:135",className:"h-4 w-4 mt-0.5"}),a.jsx("span",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:104:179",children:P})]}):g.length===0?a.jsxs("div",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:105:33",className:"text-center py-8 text-[var(--dg-text-muted)]",children:[a.jsx(Q,{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:105:95",className:"h-8 w-8 mx-auto mb-2 text-slate-600"}),a.jsx("p",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:105:153",className:"text-sm",children:"未找到被监控的 Zabbix 主机"})]}):a.jsx("div",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:107:11",className:"overflow-x-auto rounded-lg border border-[var(--dg-border)]",children:a.jsxs("table",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:108:13",className:"w-full text-xs",children:[a.jsx("thead",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:109:15",className:"bg-[var(--dg-bg-tertiary)] border-b border-[var(--dg-border)]",children:a.jsx("tr",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:109:96",children:[{f:"hostname",l:"主机名"},{f:"cpu_usage",l:"CPU"},{f:"memory_usage",l:"内存"},{f:"disk_usage",l:"磁盘"},{f:"load5",l:"Load5"},{f:"net_in_bps",l:"流入"},{f:"net_out_bps",l:"流出"},{f:"problem_count",l:"问题"},{f:"uptime_days",l:"运行"}].map(({f:n,l})=>a.jsx("th",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:115:19",className:"px-3 py-2 text-left font-medium text-[var(--dg-text-secondary)] cursor-pointer hover:text-[var(--dg-text-primary)] select-none whitespace-nowrap",onClick:()=>T(n),children:a.jsxs("div",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:116:21",className:"flex items-center gap-1",children:[l,a.jsx($,{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:116:65",f:n})]})},n))})}),a.jsx("tbody",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:118:15",children:F.map((n,l)=>a.jsxs("tr",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:120:19",className:"border-b border-[var(--dg-border)] last:border-0 hover:bg-[var(--dg-bg-tertiary)]/50",children:[a.jsxs("td",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:121:21",className:"px-3 py-2.5 whitespace-nowrap",children:[a.jsxs(B,{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:121:67",className:`text-[10px] ${n.available==="1"?"bg-emerald-500/20 text-emerald-400":"bg-red-500/20 text-red-400"}`,children:[a.jsx(Fa,{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:121:193",className:"w-3 h-3 mr-1"}),n.available==="1"?"UP":"DOWN"]})," ",a.jsx("span",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:121:272",className:"font-medium text-[var(--dg-text-primary)] ml-1",children:n.name||n.hostname})]}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:122:21",className:"px-3 py-2.5",children:p(Number(n.cpu_usage||0),`${Number(n.cpu_usage||0).toFixed(1)}%`)}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:123:21",className:"px-3 py-2.5",children:p(Number(n.memory_usage||0),`${Number(n.memory_usage||0).toFixed(1)}%`)}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:124:21",className:"px-3 py-2.5",children:p(Number(n.disk_usage||0),`${Number(n.disk_usage||0).toFixed(1)}%`)}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:125:21",className:"px-3 py-2.5 text-[var(--dg-text-secondary)]",children:n.load5>0?n.load5.toFixed(1):"—"}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:126:21",className:"px-3 py-2.5 font-mono text-[var(--dg-text-secondary)]",children:f(n.net_in_bps)}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:127:21",className:"px-3 py-2.5 font-mono text-[var(--dg-text-secondary)]",children:f(n.net_out_bps)}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:128:21",className:"px-3 py-2.5 text-center",children:a.jsx("span",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:128:61",className:`font-mono font-bold ${n.problem_count>0?n.problem_count>2?"text-red-400":"text-amber-400":"text-emerald-400"}`,children:n.problem_count>0?a.jsxs(a.Fragment,{children:[a.jsx(Na,{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:128:230",className:"w-3 h-3 inline mr-1"}),n.problem_count]}):"0"})}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/ZabbixDashboard.tsx:129:21",className:"px-3 py-2.5 text-[var(--dg-text-secondary)]",children:n.uptime_days>0?`${n.uptime_days}d`:"—"})]},n.hostid||l))})]})})})]})},V=({val:s,label:r,color:e})=>{const c=Math.min(s,100);return a.jsxs("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:16:5",className:"flex items-center gap-1.5 min-w-[80px]",children:[a.jsx("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:17:7",className:"flex-1 h-2 rounded-full bg-[var(--dg-bg-tertiary)] overflow-hidden",children:a.jsx("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:18:9",className:`h-full rounded-full ${e||"bg-purple-500"}`,style:{width:`${c}%`}})}),a.jsx("span",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:20:7",className:"w-14 text-right text-[11px] font-mono text-[var(--dg-text-secondary)]",children:r})]})},Ns=s=>s?s>1e9?`${(s/1e9).toFixed(1)} GB`:s>1e6?`${(s/1e6).toFixed(1)} MB`:`${(s/1e3).toFixed(1)} KB`:"—",Ca=s=>s?s>1e9?`${(s/1e9).toFixed(1)} GB/s`:s>1e6?`${(s/1e6).toFixed(1)} MB/s`:s>1e3?`${(s/1e3).toFixed(1)} KB/s`:`${s.toFixed(1)} B/s`:"—";function vs(s){return(s||[]).map(r=>{const e={...r.metric||{}};return r.value&&(e.value=r.value[1]),e})}const ys=s=>a.jsx("svg",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:47:26",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",...s,children:a.jsx("path",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:47:211",d:"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"})}),Gs=({d:s})=>a.jsxs("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:50:3",className:"space-y-4",children:[a.jsx(Oa,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:51:5",items:[{label:"Pods",value:s.podCount?.[0]?.value||0,color:"purple"},{label:"Deployments",value:s.deployCount?.[0]?.value||0,color:"blue"},{label:"Nodes",value:s.nodeCount?.[0]?.value||0,color:"emerald"},{label:"Namespaces",value:s.nsPods?.length||0,color:"amber"}]}),a.jsxs("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:59:5",className:"rounded-lg bg-[var(--dg-bg-primary)] border border-[var(--dg-border)] p-3 max-h-60 overflow-y-auto",children:[a.jsxs("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:60:7",className:"text-xs font-medium mb-2 flex items-center gap-1",children:[a.jsx(za,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:60:73",className:"w-3 h-3 text-purple-400"}),"节点 CPU / 内存利用率"]}),(s.nodeCPU||[]).map((r,e)=>{const c=(s.nodeMem||[]).find(i=>i.node===r.node);return a.jsxs("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:63:16",className:"flex items-center gap-3 text-[11px] mb-1.5",children:[a.jsx("span",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:63:84",className:"w-28 truncate",title:r.node,children:r.node}),a.jsx(V,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:63:146",val:Number(r.value||0),label:`${Number(r.value||0).toFixed(1)}%`}),a.jsx(V,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:63:226",val:Number(c?.value||0),label:`${Number(c?.value||0).toFixed(1)}%`,color:"bg-blue-500"})]},e)})]})]}),ws=({d:s})=>a.jsx("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:70:3",className:"overflow-x-auto rounded-lg border border-[var(--dg-border)]",children:a.jsxs("table",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:71:5",className:"w-full text-xs",children:[a.jsx("thead",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:72:7",className:"bg-[var(--dg-bg-tertiary)]",children:a.jsxs("tr",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:72:53",children:[a.jsx("th",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:72:57",className:"px-3 py-2 text-left",children:"节点"}),a.jsx("th",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:72:100",className:"px-3 py-2 text-left",children:"状态"}),a.jsx("th",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:72:143",className:"px-3 py-2 text-left",children:"CPU"}),a.jsx("th",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:72:187",className:"px-3 py-2 text-left",children:"内存"}),a.jsx("th",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:72:230",className:"px-3 py-2 text-left",children:"磁盘"}),a.jsx("th",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:72:273",className:"px-3 py-2 text-left",children:"流入"}),a.jsx("th",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:72:316",className:"px-3 py-2 text-left",children:"流出"})]})}),a.jsx("tbody",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:73:7",children:(s.nodes||[]).map((r,e)=>{const c=r.instance||r.exported_instance||"",i=(s.cpuUsage||[]).find(m=>m.instance===c),x=(s.memUsage||[]).find(m=>m.instance===c),b=(s.diskUsage||[]).find(m=>m.instance===c),g=(s.up||[]).find(m=>m.instance===c),N=(s.netRx||[]).find(m=>m.instance===c),w=(s.netTx||[]).find(m=>m.instance===c);return a.jsxs("tr",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:82:18",className:"border-b border-[var(--dg-border)] hover:bg-[var(--dg-bg-tertiary)]/50",children:[a.jsx("td",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:83:13",className:"px-3 py-2 font-medium",children:r.nodename||c}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:84:13",className:"px-3 py-2",children:a.jsx(B,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:84:39",className:`text-[10px] ${g?.value===1?"bg-emerald-500/20 text-emerald-400":"bg-red-500/20 text-red-400"}`,children:g?.value===1?"UP":"DOWN"})}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:85:13",className:"px-3 py-2",children:a.jsx(V,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:85:39",val:Number(i?.value||0),label:`${Number(i?.value||0).toFixed(1)}%`})}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:86:13",className:"px-3 py-2",children:a.jsx(V,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:86:39",val:Number(x?.value||0),label:`${Number(x?.value||0).toFixed(1)}%`,color:"bg-blue-500"})}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:87:13",className:"px-3 py-2",children:a.jsx(V,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:87:39",val:Number(b?.value||0),label:`${Number(b?.value||0).toFixed(1)}%`,color:"bg-amber-500"})}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:88:13",className:"px-3 py-2 font-mono text-[var(--dg-text-secondary)]",children:Ca(Number(N?.value||0))}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:89:13",className:"px-3 py-2 font-mono text-[var(--dg-text-secondary)]",children:Ca(Number(w?.value||0))})]},e)})})]})}),Ps=({d:s})=>a.jsxs("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:98:3",className:"space-y-4",children:[a.jsx(Oa,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:99:5",items:[{label:"Running",value:s.running?.[0]?.value||0,color:"emerald"},{label:"Pending",value:s.pending?.[0]?.value||0,color:"amber"}]}),a.jsxs("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:105:5",className:"rounded-lg bg-[var(--dg-bg-primary)] p-3 max-h-40 overflow-y-auto",children:[a.jsx("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:105:88",className:"text-xs font-medium mb-2",children:"CPU Top 10"}),(s.cpuTop||[]).map((r,e)=>a.jsxs("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:105:186",className:"flex items-center gap-2 text-[11px] mb-1",children:[a.jsx("span",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:105:252",className:"w-10 text-right text-[var(--dg-text-muted)]",children:e+1}),a.jsx("span",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:105:326",className:"w-32 truncate",title:r.pod,children:r.pod}),a.jsx(V,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:105:386",val:Number(r.value||0)*100,label:`${Number(r.value||0).toFixed(2)}c`,color:"bg-purple-500"})]},e))]}),a.jsxs("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:106:5",className:"rounded-lg bg-[var(--dg-bg-primary)] p-3 max-h-40 overflow-y-auto",children:[a.jsx("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:106:88",className:"text-xs font-medium mb-2",children:"内存 Top 10"}),(s.memTop||[]).map((r,e)=>a.jsxs("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:106:185",className:"flex items-center gap-2 text-[11px] mb-1",children:[a.jsx("span",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:106:251",className:"w-10 text-right text-[var(--dg-text-muted)]",children:e+1}),a.jsx("span",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:106:325",className:"w-32 truncate",title:r.pod,children:r.pod}),a.jsx("span",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:106:385",className:"ml-auto",children:Ns(Number(r.value||0))})]},e))]})]}),As=({d:s})=>{const r=Number(s.heapUsed?.[0]?.value||0),e=Number(s.uptime?.[0]?.value||0);return a.jsxs("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:114:5",className:"grid grid-cols-5 gap-3",children:[a.jsx(U,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:115:7",className:"bg-[var(--dg-bg-primary)]",children:a.jsxs(H,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:115:51",className:"p-3 text-center",children:[a.jsx("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:115:92",className:"text-lg font-bold",children:e>86400?`${(e/86400).toFixed(1)}d`:`${(e/3600).toFixed(1)}h`}),a.jsx("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:115:210",className:"text-[10px] text-[var(--dg-text-muted)]",children:"Uptime"})]})}),a.jsx(U,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:116:7",className:"bg-[var(--dg-bg-primary)]",children:a.jsxs(H,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:116:51",className:"p-3 text-center",children:[a.jsx(V,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:116:92",val:r,label:`${r.toFixed(1)}%`,color:r>80?"bg-orange-500":"bg-purple-500"}),a.jsx("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:116:183",className:"text-[10px] text-[var(--dg-text-muted)] mt-1",children:"Heap"})]})}),a.jsx(U,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:117:7",className:"bg-[var(--dg-bg-primary)]",children:a.jsxs(H,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:117:51",className:"p-3 text-center",children:[a.jsx(V,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:117:92",val:Number(s.nonHeapUsed?.[0]?.value||0),label:`${Number(s.nonHeapUsed?.[0]?.value||0).toFixed(1)}%`,color:"bg-blue-500"}),a.jsx("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:117:228",className:"text-[10px] text-[var(--dg-text-muted)] mt-1",children:"Non-Heap"})]})}),a.jsx(U,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:118:7",className:"bg-[var(--dg-bg-primary)]",children:a.jsxs(H,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:118:51",className:"p-3 text-center",children:[a.jsx("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:118:92",className:"text-lg font-bold text-emerald-400",children:s.threadCount?.[0]?.value||0}),a.jsx("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:118:180",className:"text-[10px] text-[var(--dg-text-muted)]",children:"Threads"})]})}),a.jsx(U,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:119:7",className:"bg-[var(--dg-bg-primary)]",children:a.jsxs(H,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:119:51",className:"p-3 text-center",children:[a.jsx("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:119:92",className:"text-lg font-bold text-amber-400",children:Number(s.gcPause?.[0]?.value||0).toFixed(3)}),a.jsx("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:119:193",className:"text-[10px] text-[var(--dg-text-muted)]",children:"GC Pause (s)"})]})})]})},Ss=({dsUrl:s})=>{const[r,e]=o.useState(!1),[c,i]=o.useState(!1),[x,b]=o.useState(0),[g,N]=o.useState(""),[w,m]=o.useState("kubernetes"),[P,y]=o.useState({}),[z,v]=o.useState({}),[h,A]=o.useState({}),[W,Z]=o.useState({});o.useEffect(()=>{s&&T(s)},[s]);const T=async p=>{i(!0),N("");try{const f=await oa.post("/prometheus/connect",{url:p});e(!0),b(f.targets||0),F(p)}catch(f){e(!1),N(f.message||"连接失败")}finally{i(!1)}},F=async p=>{for(const f of["kubernetes","node","pod","jvm"])try{const n=await oa.post("/prometheus/dashboard",{url:p,type:f}),l={};for(const[S,j]of Object.entries(n||{}))l[S]=Array.isArray(j)?j:j?.data?.result?vs(j.data.result):j;f==="kubernetes"&&y(l),f==="node"&&v(l),f==="pod"&&A(l),f==="jvm"&&Z(l)}catch{}},$=()=>{s&&T(s)};return!r&&!g?null:a.jsxs(U,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:167:5",className:"bg-[var(--dg-bg-secondary)] border-purple-500/20",children:[a.jsx(ya,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:168:7",className:"py-3 px-4 pb-2",children:a.jsxs("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:169:9",className:"flex items-center gap-2",children:[a.jsx(J,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:170:11",className:"h-4 w-4 text-purple-400"}),a.jsx(Ga,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:171:11",className:"text-sm font-medium",children:"Prometheus 监控"}),r&&a.jsxs(B,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:172:25",className:"text-[10px] bg-purple-500/10 text-purple-400",children:[x," targets"]}),r&&a.jsx("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:173:25",className:"ml-auto",children:a.jsxs(D,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:173:50",variant:"ghost",size:"sm",className:"h-6 px-2 text-[10px]",onClick:$,children:[a.jsx(ha,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:173:135",className:"w-3 h-3 mr-1"}),"刷新"]})})]})}),a.jsx(H,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:176:7",className:"px-4 pb-3 pt-0",children:c?a.jsxs("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:177:21",className:"text-center py-12",children:[a.jsx(aa,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:177:56",className:"h-6 w-6 mx-auto mb-2 animate-spin text-purple-400"}),a.jsx("p",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:177:129",className:"text-xs text-[var(--dg-text-muted)]",children:"连接中…"})]}):g?a.jsxs("div",{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:178:20",className:"p-3 rounded-lg bg-red-500/10 border border-red-500/20 text-xs text-red-400",children:[a.jsx(Na,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:178:112",className:"h-4 w-4 inline mr-1"}),g]}):a.jsxs(Ea,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:180:11",value:w,onValueChange:m,children:[a.jsxs(Ua,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:181:13",className:"bg-[var(--dg-bg-tertiary)] mb-3",children:[a.jsxs(R,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:182:15",value:"kubernetes",className:"text-xs",children:[a.jsx(Qa,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:182:67",className:"w-3 h-3 mr-1"}),"Kubernetes"]}),a.jsxs(R,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:183:15",value:"node",className:"text-xs",children:[a.jsx(Q,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:183:61",className:"w-3 h-3 mr-1"}),"Node"]}),a.jsxs(R,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:184:15",value:"pod",className:"text-xs",children:[a.jsx(ys,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:184:60",className:"w-3 h-3 mr-1"}),"Pod"]}),a.jsxs(R,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:185:15",value:"jvm",className:"text-xs",children:[a.jsx(ta,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:185:60",className:"w-3 h-3 mr-1"}),"JVM"]})]}),a.jsx(K,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:187:13",value:"kubernetes",children:a.jsx(Gs,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:187:45",d:P})}),a.jsx(K,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:188:13",value:"node",children:a.jsx(ws,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:188:39",d:z})}),a.jsx(K,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:189:13",value:"pod",children:a.jsx(Ps,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:189:38",d:h})}),a.jsx(K,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:190:13",value:"jvm",children:a.jsx(As,{"code-path":"src/components/monitor/dashboard/PrometheusDashboard.tsx:190:38",d:W})})]})})]})};function Cs(){return typeof window<"u"&&window.location?{origin:window.location.origin,backend:`${window.location.protocol}//${window.location.hostname}:8080`}:{origin:"http://127.0.0.1",backend:"http://127.0.0.1:8080"}}function zs({open:s,onOpenChange:r,server:e,onInstalled:c,onFailed:i}){const x=ka(d=>d.token)||"",{origin:b,backend:g}=Cs(),[N,w]=o.useState(!1),[m,P]=o.useState(!1),[y,z]=o.useState(!1),[v,h]=o.useState("auto"),[A,W]=o.useState("root"),[Z,T]=o.useState(""),[F,$]=o.useState(""),[p,f]=o.useState("password"),n=e&&!e.has_auth,l=`curl -fsSL ${b}/agent/install.sh | bash -s -- --server ${g} --token ${x}`,S=()=>{const d=document.createElement("textarea");d.value=l,d.style.position="fixed",d.style.top="0",d.style.left="0",d.style.width="2em",d.style.height="2em",d.style.padding="0",d.style.border="none",d.style.outline="none",d.style.boxShadow="none",d.style.background="transparent",d.style.opacity="0",d.style.pointerEvents="none",d.style.zIndex="-1",d.style.fontSize="16px",d.contentEditable="true",d.readOnly=!0,document.body.appendChild(d),d.focus(),d.select(),d.setSelectionRange&&d.setSelectionRange(0,999999);let _=!1;try{_=document.execCommand("copy")}catch{}document.body.removeChild(d),_?(w(!0),u.success("安装命令已复制到剪贴板,粘贴到目标主机执行"),setTimeout(()=>w(!1),3e3)):(u.error("自动复制失败,请在下方手动全选复制 (Ctrl+A → Ctrl+C)"),P(!0))},j=`${b}/agent/aiops-agent-linux-amd64`,ma=[{icon:ms,title:"1. 下载二进制",commands:[`curl -fsSL ${j} -o /usr/local/bin/aiops-agent`]},{icon:ss,title:"2. 赋予执行权限",commands:["chmod +x /usr/local/bin/aiops-agent"]},{icon:za,title:"3. 创建 systemd 服务",commands:["cat > /etc/systemd/system/aiops-agent.service << 'EOF'","[Unit]","Description=AIOps Agent","After=network.target","","[Service]","Type=simple",`ExecStart=/usr/local/bin/aiops-agent --server ${g} --token ${x}`,"Restart=always","RestartSec=5","","[Install]","WantedBy=multi-user.target","EOF"]},{icon:is,title:"4. 启动并设置开机自启",commands:["systemctl daemon-reload","systemctl enable --now aiops-agent","systemctl status aiops-agent"]}],M=async()=>{if(!(!e||!x)){if(n&&!Z&&!F){u.error("请填写 SSH 登录凭据(密码或密钥)");return}z(!0);try{const d=n?{username:A,password:Z,ssh_key:F,auth_type:p}:void 0;(await Ta.installAgent(e.id,x,d))?.installed||!1?(u.success(`${e.hostname} Agent 安装成功`),c?.(e.id),r(!1)):(u.warning(`${e.hostname}: Agent 安装命令已执行,但服务未检测到运行`),c?.(e.id),r(!1))}catch(d){const _=d?.message||"安装失败";u.error(`${e.hostname} ${_}`),i?.(e.id,_)}finally{z(!1)}}};return a.jsx(ra,{"code-path":"src/components/agent/AgentWizard.tsx:190:5",open:s,onOpenChange:r,children:a.jsxs(na,{"code-path":"src/components/agent/AgentWizard.tsx:191:7",className:"max-w-2xl bg-slate-900 border-slate-800 text-slate-100",children:[a.jsxs(da,{"code-path":"src/components/agent/AgentWizard.tsx:192:9",children:[a.jsx(ca,{"code-path":"src/components/agent/AgentWizard.tsx:193:11",className:"text-slate-100",children:e?`部署 Agent → ${e.hostname}`:"部署 Agent"}),a.jsx(Wa,{"code-path":"src/components/agent/AgentWizard.tsx:196:11",className:"text-slate-400",children:e?`目标主机 ${e.hostname} (${e.ip}),选择安装方式:`:"在目标主机上执行以下命令即可完成 Agent 安装与注册"})]}),a.jsxs(Ea,{"code-path":"src/components/agent/AgentWizard.tsx:204:9",value:v,onValueChange:h,className:"w-full",children:[a.jsxs(Ua,{"code-path":"src/components/agent/AgentWizard.tsx:205:11",className:"bg-slate-800 border border-slate-700",children:[a.jsxs(R,{"code-path":"src/components/agent/AgentWizard.tsx:206:13",value:"auto",className:"data-[state=active]:bg-slate-700",children:[a.jsx(pa,{"code-path":"src/components/agent/AgentWizard.tsx:207:15",className:"h-4 w-4 mr-1.5"}),"安装Agent"]}),e&&a.jsxs(R,{"code-path":"src/components/agent/AgentWizard.tsx:211:15",value:"ssh",className:"data-[state=active]:bg-slate-700",children:[a.jsx(ta,{"code-path":"src/components/agent/AgentWizard.tsx:212:17",className:"h-4 w-4 mr-1.5"}),"SSH一键安装"]}),!e&&a.jsxs(R,{"code-path":"src/components/agent/AgentWizard.tsx:217:15",value:"ssh",className:"data-[state=active]:bg-slate-700 opacity-50 cursor-not-allowed",disabled:!0,children:[a.jsx(ta,{"code-path":"src/components/agent/AgentWizard.tsx:218:17",className:"h-4 w-4 mr-1.5"}),"SSH一键安装"]}),a.jsx(R,{"code-path":"src/components/agent/AgentWizard.tsx:222:13",value:"manual",className:"data-[state=active]:bg-slate-700",children:"手动安装"})]}),a.jsxs(K,{"code-path":"src/components/agent/AgentWizard.tsx:228:11",value:"auto",className:"mt-4 space-y-3",children:[a.jsx("p",{"code-path":"src/components/agent/AgentWizard.tsx:229:13",className:"text-sm text-slate-400",children:"在目标主机执行以下命令,Agent 将自动下载、安装并启动:"}),a.jsxs("div",{"code-path":"src/components/agent/AgentWizard.tsx:232:13",className:"relative rounded-lg bg-slate-950 border border-slate-800 p-4",children:[a.jsx("pre",{"code-path":"src/components/agent/AgentWizard.tsx:233:15",className:"text-xs text-emerald-400 font-mono whitespace-pre-wrap break-all pr-10",children:l}),a.jsx(D,{"code-path":"src/components/agent/AgentWizard.tsx:236:15",size:"icon",variant:"ghost",onClick:S,className:"absolute top-2 right-2 h-8 w-8 text-slate-400 hover:text-slate-100 hover:bg-slate-800",title:"复制到剪贴板",children:N?a.jsx(Xa,{"code-path":"src/components/agent/AgentWizard.tsx:243:27",className:"h-4 w-4 text-emerald-400"}):a.jsx(hs,{"code-path":"src/components/agent/AgentWizard.tsx:243:76",className:"h-4 w-4"})})]}),m&&a.jsxs("div",{"code-path":"src/components/agent/AgentWizard.tsx:249:15",className:"rounded-lg bg-amber-950/30 border border-amber-800/50 p-4",children:[a.jsx("p",{"code-path":"src/components/agent/AgentWizard.tsx:250:17",className:"text-xs text-amber-400 mb-2",children:"⚠️ 自动复制失败。请点击下方输入框全选 (Ctrl+A) 后复制 (Ctrl+C):"}),a.jsx("textarea",{"code-path":"src/components/agent/AgentWizard.tsx:253:17",readOnly:!0,value:l,className:"w-full h-24 bg-slate-950 border border-amber-800/30 text-emerald-400 font-mono text-xs p-3 rounded resize-none focus:outline-none focus:border-amber-600",onClick:d=>d.target.select()})]}),a.jsxs("div",{"code-path":"src/components/agent/AgentWizard.tsx:261:13",className:"flex items-start gap-2 text-xs text-slate-500",children:[a.jsx(pa,{"code-path":"src/components/agent/AgentWizard.tsx:262:15",className:"h-3.5 w-3.5 mt-0.5 shrink-0"}),a.jsxs("span",{"code-path":"src/components/agent/AgentWizard.tsx:263:15",children:["服务器地址已自动检测 — 安装脚本通过 Nginx 代理 (",b,"),Agent 直连后端 (",g,")。安装成功后将自动连接并开始上报指标。"]})]})]}),!e&&a.jsx(K,{"code-path":"src/components/agent/AgentWizard.tsx:271:13",value:"ssh",className:"mt-4 space-y-4",children:a.jsxs("div",{"code-path":"src/components/agent/AgentWizard.tsx:272:15",className:"text-center py-12 text-slate-400",children:[a.jsx(Q,{"code-path":"src/components/agent/AgentWizard.tsx:273:17",className:"h-10 w-10 mx-auto mb-3 opacity-50"}),a.jsx("p",{"code-path":"src/components/agent/AgentWizard.tsx:274:17",className:"text-sm font-medium mb-1",children:"未选择目标主机"}),a.jsx("p",{"code-path":"src/components/agent/AgentWizard.tsx:275:17",className:"text-xs",children:"请先在主机列表中勾选一台主机,再点击「安装 Agent」打开此页面"})]})}),e&&a.jsxs(K,{"code-path":"src/components/agent/AgentWizard.tsx:281:13",value:"ssh",className:"mt-4 space-y-4",children:[a.jsxs("div",{"code-path":"src/components/agent/AgentWizard.tsx:282:15",className:"rounded-lg bg-slate-950 border border-slate-800 p-4",children:[a.jsxs("div",{"code-path":"src/components/agent/AgentWizard.tsx:283:17",className:"flex items-center gap-3 mb-3",children:[a.jsx(Q,{"code-path":"src/components/agent/AgentWizard.tsx:284:19",className:"h-5 w-5 text-blue-400"}),a.jsxs("div",{"code-path":"src/components/agent/AgentWizard.tsx:285:19",children:[a.jsx("p",{"code-path":"src/components/agent/AgentWizard.tsx:286:21",className:"text-sm font-medium text-slate-200",children:e.hostname}),a.jsx("code",{"code-path":"src/components/agent/AgentWizard.tsx:287:21",className:"text-xs text-slate-400",children:e.ip})]})]}),n&&a.jsxs("div",{"code-path":"src/components/agent/AgentWizard.tsx:293:19",className:"mb-4 p-3 rounded-lg bg-amber-950/30 border border-amber-800/40 space-y-3",children:[a.jsxs("div",{"code-path":"src/components/agent/AgentWizard.tsx:294:21",className:"flex items-center gap-2 text-xs text-amber-300/80",children:[a.jsx(as,{"code-path":"src/components/agent/AgentWizard.tsx:295:23",className:"h-3.5 w-3.5"}),a.jsx("span",{"code-path":"src/components/agent/AgentWizard.tsx:296:23",children:"该服务器未配置 SSH 凭据,请填写以下信息(首次连接成功后自动保存)"})]}),a.jsxs("div",{"code-path":"src/components/agent/AgentWizard.tsx:298:21",className:"grid grid-cols-2 gap-2",children:[a.jsxs("div",{"code-path":"src/components/agent/AgentWizard.tsx:299:23",children:[a.jsx(L,{"code-path":"src/components/agent/AgentWizard.tsx:300:25",className:"text-xs text-slate-400",children:"用户名"}),a.jsx(X,{"code-path":"src/components/agent/AgentWizard.tsx:301:25",value:A,onChange:d=>W(d.target.value),placeholder:"root",className:"h-8 text-sm bg-slate-900 border-slate-700 text-slate-200 mt-1"})]}),a.jsxs("div",{"code-path":"src/components/agent/AgentWizard.tsx:308:23",className:"flex items-end gap-1",children:[a.jsxs("div",{"code-path":"src/components/agent/AgentWizard.tsx:309:25",className:"flex-1",children:[a.jsx(L,{"code-path":"src/components/agent/AgentWizard.tsx:310:27",className:"text-xs text-slate-400",children:"密码"}),a.jsx(X,{"code-path":"src/components/agent/AgentWizard.tsx:311:27",type:"password",value:Z,onChange:d=>{T(d.target.value),f("password")},placeholder:"******",className:"h-8 text-sm bg-slate-900 border-slate-700 text-slate-200 mt-1"})]}),a.jsx("span",{"code-path":"src/components/agent/AgentWizard.tsx:319:25",className:"text-xs text-slate-500 px-1 pb-1",children:"或"}),a.jsx(D,{"code-path":"src/components/agent/AgentWizard.tsx:320:25",variant:"ghost",size:"sm",onClick:()=>{f("key"),T("")},className:`text-xs h-7 px-2 ${p==="key"?"text-blue-400":"text-slate-500"}`,children:"密钥"})]})]}),p==="key"&&a.jsxs("div",{"code-path":"src/components/agent/AgentWizard.tsx:328:23",children:[a.jsx(L,{"code-path":"src/components/agent/AgentWizard.tsx:329:25",className:"text-xs text-slate-400",children:"SSH 私钥(PEM 格式)"}),a.jsx("textarea",{"code-path":"src/components/agent/AgentWizard.tsx:330:25",value:F,onChange:d=>$(d.target.value),placeholder:`-----BEGIN OPENSSH PRIVATE KEY----- +... +-----END OPENSSH PRIVATE KEY-----`,rows:3,className:"w-full mt-1 bg-slate-900 border border-slate-700 text-slate-200 font-mono text-xs p-2 rounded-md resize-none"})]})]}),a.jsx("p",{"code-path":"src/components/agent/AgentWizard.tsx:342:17",className:"text-sm text-slate-400 mb-4",children:"通过 SSH 远程连接到目标主机,自动下载并安装 Agent,完成后立即启动运行。"}),a.jsx(D,{"code-path":"src/components/agent/AgentWizard.tsx:345:17",onClick:M,disabled:y,className:"w-full bg-blue-600 hover:bg-blue-700 text-white",children:y?a.jsxs(a.Fragment,{children:[a.jsx(aa,{"code-path":"src/components/agent/AgentWizard.tsx:352:23",className:"h-4 w-4 mr-2 animate-spin"}),"SSH 连接中,正在安装..."]}):a.jsxs(a.Fragment,{children:[a.jsx(ta,{"code-path":"src/components/agent/AgentWizard.tsx:357:23",className:"h-4 w-4 mr-2"}),n?"连接并安装 Agent(凭据将自动保存)":"一键安装 Agent"]})})]}),a.jsxs("div",{"code-path":"src/components/agent/AgentWizard.tsx:363:15",className:"flex items-start gap-2 text-xs text-slate-500",children:[a.jsx(pa,{"code-path":"src/components/agent/AgentWizard.tsx:364:17",className:"h-3.5 w-3.5 mt-0.5 shrink-0"}),a.jsxs("span",{"code-path":"src/components/agent/AgentWizard.tsx:365:17",children:["系统将通过 SSH 连接 ",e.ip,",执行安装脚本。请确保服务器 SSH 凭据已正确配置(编辑服务器可修改密码/密钥)。"]})]})]}),a.jsxs(K,{"code-path":"src/components/agent/AgentWizard.tsx:373:11",value:"manual",className:"mt-4 space-y-4",children:[a.jsx("div",{"code-path":"src/components/agent/AgentWizard.tsx:374:13",className:"max-h-[420px] overflow-y-auto space-y-3 pr-1",children:ma.map(d=>a.jsxs("div",{"code-path":"src/components/agent/AgentWizard.tsx:376:17",className:"rounded-lg bg-slate-950 border border-slate-800 overflow-hidden",children:[a.jsxs("div",{"code-path":"src/components/agent/AgentWizard.tsx:377:19",className:"flex items-center gap-2 px-4 py-2.5 bg-slate-800/50",children:[a.jsx(d.icon,{"code-path":"src/components/agent/AgentWizard.tsx:378:21",className:"h-4 w-4 text-blue-400"}),a.jsx("span",{"code-path":"src/components/agent/AgentWizard.tsx:379:21",className:"text-sm font-medium text-slate-200",children:d.title})]}),a.jsx("div",{"code-path":"src/components/agent/AgentWizard.tsx:381:19",className:"p-3 space-y-1",children:d.commands.map((_,sa)=>a.jsxs("div",{"code-path":"src/components/agent/AgentWizard.tsx:383:23",className:"flex items-start gap-2",children:[a.jsx("span",{"code-path":"src/components/agent/AgentWizard.tsx:384:25",className:"text-slate-600 font-mono text-xs select-none mt-0.5",children:"$"}),a.jsx("code",{"code-path":"src/components/agent/AgentWizard.tsx:385:25",className:"text-xs text-slate-300 font-mono whitespace-pre-wrap break-all flex-1",children:_})]},sa))})]},d.title))}),a.jsx("p",{"code-path":"src/components/agent/AgentWizard.tsx:394:13",className:"text-xs text-slate-500",children:"完成上述步骤后,Agent 将作为 systemd 服务运行并自动上报指标。"})]})]})]})})}const ks=[{id:"agent",label:"Agent 主机",icon:a.jsx(Q,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:52:43",className:"w-3.5 h-3.5"})},{id:"zabbix",label:"Zabbix",icon:a.jsx(J,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:53:42",className:"w-3.5 h-3.5"})},{id:"prometheus",label:"Prometheus",icon:a.jsx(J,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:54:50",className:"w-3.5 h-3.5"})},{id:"dashboard",label:"自定义",icon:a.jsx(_a,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:55:42",className:"w-3.5 h-3.5"})}],Ws=()=>{const s=es(),r=ts(),[e,c]=o.useState([]),[i,x]=o.useState(!0),[b,g]=o.useState("cpu_usage"),[N,w]=o.useState("desc"),[m,P]=o.useState(1),[y,z]=o.useState(10),[v,h]=o.useState(new Set),[A,W]=o.useState(!1),[Z,T]=o.useState(null),[F,$]=o.useState(!1),[p,f]=o.useState("install"),[n,l]=o.useState(!1),[S,j]=o.useState(!1),[ma,M]=o.useState(new Set),[d,_]=o.useState(!1),sa=async()=>{if(await s({title:"批量卸载 Agent",description:`确定卸载选中的 ${ea.length} 台主机的 AIOps Agent?卸载将在后台异步执行。`,confirmText:"卸载",variant:"destructive"})){_(!0),M(new Set(ea));try{await Pa.batchUninstall(ea),u.success(`已提交:批量卸载 ${ea.length} 台主机的 Agent,后台执行中,30秒后自动刷新`),h(new Set),setTimeout(()=>{q(),M(new Set)},3e4)}catch{u.error("提交失败"),M(new Set)}finally{_(!1)}}},wa=Math.max(1,Math.ceil(e.length/y)),q=async()=>{try{c(gs(await oa.get("/agent/latest")))}catch{}finally{x(!1)}};o.useEffect(()=>{q();const t=setInterval(q,3e4);return()=>clearInterval(t)},[]);const La=t=>{b===t?w(C=>C==="asc"?"desc":"asc"):(g(t),w("desc"))},Ra=[...e].sort((t,C)=>{let G=t[b]??"",k=C[b]??"";return b==="agent_status"&&(G=t.agent_status||"",k=C.agent_status||""),typeof G=="number"?N==="asc"?G-k:k-G:N==="asc"?String(G).localeCompare(String(k)):String(k).localeCompare(String(G))}).slice((m-1)*y,m*y),Ka=({f:t})=>b!==t?a.jsx(Ma,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:107:54",className:"w-3 h-3 text-slate-500"}):N==="asc"?a.jsx(Ia,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:107:122",className:"w-3 h-3 text-emerald-400"}):a.jsx(Ba,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:107:173",className:"w-3 h-3 text-emerald-400"}),ia=(t,C)=>a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:109:5",className:"flex items-center gap-2 min-w-[90px]",children:[a.jsx("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:109:59",className:"flex-1 h-2.5 rounded-full bg-[var(--dg-bg-tertiary)] overflow-hidden",children:a.jsx("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:109:145",className:`h-full rounded-full transition-all duration-500 ${t>=80?"bg-orange-500":"bg-emerald-500"}`,style:{width:`${Math.min(t,100)}%`}})}),a.jsx("span",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:109:310",className:`w-14 text-right text-xs font-mono tabular-nums ${t>=80?"text-orange-400":""}`,children:C})]}),Va=v.size===e.length&&e.length>0,la=v.size>0,ea=[...v].map(Number).filter(t=>!isNaN(t)),Y=o.useMemo(()=>e.filter(t=>v.has(String(t.server_id))),[e,v]),O=o.useMemo(()=>Y.filter(t=>t.agent_status!=="online"),[Y]),E=o.useMemo(()=>Y.filter(t=>t.agent_status==="online"),[Y]),qa=()=>{l(!1),O.length>0&&E.length===0?f("install"):O.length===0&&E.length>0?f("upgrade"):f("install"),$(!0)},Ja=async()=>{if(!n){u.error("请先确认并勾选「我已知悉」");return}j(!0);const t=ka.getState().token,C=Y.map(G=>G.server_id);M(new Set(C));try{if(p==="install"){if(!t){u.error("未登录");return}const G=O.map(xa=>xa.server_id);if(G.length===0){u.warning("所选主机均已安装 Agent,无需安装");return}const k=await Ta.batchInstallAgent(G,t);u.success(`已提交:批量安装 ${k?.total??G.length} 台主机的 Agent,后台执行中,30秒后自动刷新`),h(new Set),setTimeout(()=>{q(),M(new Set)},3e4)}else{const G=E.map(xa=>xa.server_id);if(G.length===0){u.warning("所选主机中没有在线 Agent,无法升级");return}const k=await Pa.batchUpgrade(G);u.success(k?.message||`已提交:批量升级 ${G.length} 台主机的 Agent,后台执行中,30秒后自动刷新`),h(new Set),setTimeout(()=>{q(),M(new Set)},3e4)}$(!1)}catch{u.error("提交失败"),M(new Set)}finally{j(!1)}};return i?a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:164:23",className:"text-center py-20 text-[var(--dg-text-muted)]",children:[a.jsx(J,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:164:86",className:"h-6 w-6 mx-auto mb-2 animate-spin"}),a.jsx("p",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:164:144",className:"text-xs",children:"加载中…"})]}):e.length?a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:167:5",children:[a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:169:7",className:"flex items-center gap-2 mb-3 flex-wrap",children:[la&&a.jsxs("span",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:170:20",className:"text-xs text-[var(--dg-text-secondary)]",children:["已选 ",v.size," 项"]}),a.jsx("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:171:9",className:"flex-1"}),a.jsxs(D,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:172:9",size:"sm",variant:"outline",className:"h-7 text-xs gap-1",onClick:()=>{const t=la?e.find(C=>v.has(String(C.server_id))):null;T(t?{id:t.server_id,hostname:t.hostname,ip:t.ip,has_auth:t.has_auth}:null),W(!0)},children:[a.jsx(os,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:177:11",className:"w-3 h-3"}),"安装 Agent"]}),la&&a.jsxs(a.Fragment,{children:[a.jsxs(D,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:181:13",size:"sm",variant:"outline",className:"h-7 text-xs gap-1 border-blue-500/30 text-blue-400 hover:bg-blue-500/10",onClick:qa,children:[a.jsx(Aa,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:182:15",className:"w-3 h-3"}),"批量部署 (",v.size,")"]}),a.jsxs(D,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:184:13",size:"sm",variant:"outline",className:"h-7 text-xs gap-1 border-red-500/30 text-red-400 hover:bg-red-500/10",onClick:sa,disabled:d,children:[a.jsx(ps,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:185:15",className:"w-3 h-3"}),"批量卸载 (",v.size,")"]})]}),a.jsxs(D,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:189:9",size:"sm",variant:"ghost",className:"h-7 text-xs gap-1",onClick:q,children:[a.jsx(ha,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:189:89",className:"w-3 h-3"}),"刷新"]})]}),a.jsx(zs,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:192:7",open:A,onOpenChange:W,server:Z,onInstalled:()=>{u.success("Agent 安装成功"),W(!1),q()},onFailed:()=>u.error("安装失败")}),a.jsx(ra,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:197:7",open:F,onOpenChange:t=>{t||($(!1),l(!1))},children:a.jsxs(na,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:198:9",className:"max-w-2xl max-h-[85vh] overflow-auto bg-slate-900 border-slate-700 text-slate-100",children:[a.jsxs(da,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:199:11",children:[a.jsxs(ca,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:200:13",className:"flex items-center gap-2 text-base",children:[a.jsx(Aa,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:201:15",className:"w-5 h-5 text-blue-400"}),"批量部署 Agent"]}),a.jsxs(Wa,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:204:13",className:"text-slate-400 text-xs",children:["选中 ",Y.length," 台主机(需安装: ",O.length,",待升级: ",E.length,")"]})]}),a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:209:11",className:"space-y-4",children:[a.jsx("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:211:13",className:"flex items-center gap-2 p-1 rounded-lg bg-slate-800 border border-slate-700 w-fit",children:["install","upgrade"].map(t=>a.jsx("button",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:213:17",disabled:t==="install"?O.length===0:E.length===0,onClick:()=>f(t),className:`px-4 py-1.5 rounded text-xs font-medium transition-colors disabled:opacity-30 disabled:cursor-not-allowed ${p===t?"bg-blue-600 text-white shadow-sm":"text-slate-400 hover:text-slate-200"}`,children:t==="install"?`⚡ 安装 (${O.length})`:`🔄 升级到最新版 (${E.length})`},t))}),a.jsx("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:227:13",className:"rounded-md border border-slate-700 overflow-hidden",children:a.jsxs("table",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:228:15",className:"w-full text-xs",children:[a.jsx("thead",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:229:17",className:"bg-slate-800",children:a.jsxs("tr",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:230:19",children:[a.jsx("th",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:231:21",className:"px-3 py-2 text-left font-medium text-slate-400",children:"主机名"}),a.jsx("th",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:232:21",className:"px-3 py-2 text-left font-medium text-slate-400",children:"IP"}),a.jsx("th",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:233:21",className:"px-3 py-2 text-left font-medium text-slate-400",children:"状态"}),a.jsx("th",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:234:21",className:"px-3 py-2 text-left font-medium text-slate-400",children:"当前版本"}),a.jsx("th",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:235:21",className:"px-3 py-2 text-left font-medium text-slate-400",children:"操作"})]})}),a.jsx("tbody",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:238:17",children:(p==="install"?O:E).map(t=>a.jsxs("tr",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:240:21",className:"border-t border-slate-800 hover:bg-slate-800/50",children:[a.jsx("td",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:241:23",className:"px-3 py-2 font-medium text-slate-200",children:t.hostname}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:242:23",className:"px-3 py-2 font-mono text-slate-400",children:t.ip}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:243:23",className:"px-3 py-2",children:t.agent_status==="online"?a.jsx(B,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:245:29",className:"text-[10px] bg-emerald-500/20 text-emerald-400",children:"在线"}):a.jsx(B,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:246:29",className:"text-[10px] bg-slate-500/20 text-slate-400",children:t.agent_status==="not_installed"?"未安装":t.agent_status||"离线"})}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:250:23",className:"px-3 py-2 font-mono text-slate-400",children:t.agent_version||"—"}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:251:23",className:"px-3 py-2",children:a.jsx("span",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:252:25",className:"text-blue-400 text-[11px]",children:p==="install"?"即将安装":"即将升级"})})]},t.server_id))})]})}),a.jsx("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:263:13",className:"rounded-md border border-amber-500/30 bg-amber-500/5 p-3 space-y-2",children:a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:264:15",className:"flex items-start gap-2",children:[a.jsx(rs,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:265:17",className:"w-4 h-4 text-amber-400 mt-0.5 shrink-0"}),a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:266:17",children:[a.jsxs("p",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:267:19",className:"text-xs font-medium text-amber-300 mb-1",children:[p==="install"?"本次安装":"本次升级",",主机监控探针将部署 AIOps Agent。AIOps Agent 是 AIOps 平台推出的新一代数据采集器,提供主机监控指标采集和可观测数据采集能力。"]}),a.jsxs("p",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:270:19",className:"text-[11px] text-amber-400/80 leading-relaxed",children:[p==="upgrade"&&"升级前请注意以下事项:",p==="install"&&"安装前请注意以下事项:"]}),a.jsxs("ul",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:274:19",className:"mt-1 space-y-0.5 text-[11px] text-slate-400 list-disc list-inside",children:[p==="upgrade"&&a.jsxs(a.Fragment,{children:[a.jsx("li",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:277:25",children:"如果您的机器已经安装旧版 Agent,升级操作将停止旧版并替换为最新版本。"}),a.jsx("li",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:278:25",children:"如果您的机器之前安装过 Agent 但已卸载,遗留有相关采集配置,本次升级可能导致配置重新生效。升级前请确保存量废弃配置已经移除。"}),a.jsx("li",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:279:25",children:"如果您的机器采用自定义安装的 Agent(非 AIOps 提供的一键安装脚本),请不要直接使用批量升级。"}),a.jsx("li",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:280:25",children:"批量升级前,请务必先单机灰度升级,确保升级成功且不影响业务后再操作。"})]}),p==="install"&&a.jsxs(a.Fragment,{children:[a.jsx("li",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:285:25",children:"安装将自动检测目标主机架构(amd64/arm64),下载对应版本的 Agent 二进制并启动服务。"}),a.jsx("li",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:286:25",children:"请确保目标主机的 SSH 端口(默认 22)可访问,且已关联有效的 SSH 凭据。"}),a.jsx("li",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:287:25",children:"安装过程约 30-60 秒,期间目标主机 CPU 负载会短暂升高。"}),a.jsx("li",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:288:25",children:"若安装失败,请检查目标主机的防火墙规则和 SSH 服务状态后重试。"})]}),a.jsx("li",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:291:21",children:"操作不可回滚,请在操作前确认已备份关键配置。"}),a.jsx("li",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:292:21",children:"操作将在后台异步执行,您可以在「任务执行记录」中查看详细进度。"})]})]})]})}),a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:299:13",className:"flex items-center gap-2",children:[a.jsx(Da,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:300:15",id:"batch-ack",checked:n,onCheckedChange:t=>l(!!t)}),a.jsx("label",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:301:15",htmlFor:"batch-ack",className:"text-xs text-slate-300 cursor-pointer select-none",children:"我已知悉以上风险和注意事项"})]})]}),a.jsxs(va,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:305:11",className:"gap-2",children:[a.jsx(D,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:306:13",variant:"outline",className:"border-slate-700 text-slate-300 h-8 text-xs",onClick:()=>{$(!1),l(!1)},children:"取消"}),a.jsxs(D,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:309:13",className:"bg-blue-600 hover:bg-blue-700 text-white h-8 text-xs gap-1",disabled:S||!n||(p==="install"?O.length===0:E.length===0),onClick:Ja,children:[S&&a.jsx(aa,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:314:35",className:"w-3 h-3 animate-spin"}),p==="install"?"确认安装":"确认升级"]})]})]})}),a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:321:7",className:"overflow-x-auto rounded-lg border border-[var(--dg-border)]",children:[a.jsxs("table",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:322:9",className:"w-full text-xs",children:[a.jsx("thead",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:323:11",className:"bg-[var(--dg-bg-tertiary)] border-b",children:a.jsxs("tr",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:323:66",children:[a.jsx("th",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:324:13",className:"px-2 py-2 w-8",children:a.jsx(Da,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:325:15",checked:Va,onCheckedChange:t=>h(t?new Set(e.map(C=>String(C.server_id))):new Set)})}),["hostname","agent_version","agent_status","cpu_usage","mem_usage","disk_usage","region","ip"].map(t=>a.jsx("th",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:328:15",className:"px-3 py-2 text-left font-medium text-[var(--dg-text-secondary)] cursor-pointer hover:text-[var(--dg-text-primary)] select-none whitespace-nowrap",onClick:()=>La(t),children:a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:329:17",className:"flex items-center gap-1",children:[{hostname:"主机名",agent_version:"Agent版本",agent_status:"状态",cpu_usage:"CPU",mem_usage:"内存",disk_usage:"磁盘",region:"区域",ip:"IP"}[t],a.jsx(Ka,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:329:188",f:t})]})},t)),a.jsx("th",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:332:13",className:"px-3 py-2 text-left font-medium text-[var(--dg-text-secondary)] whitespace-nowrap",children:"操作"})]})}),a.jsx("tbody",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:333:11",children:Ra.map((t,C)=>a.jsxs("tr",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:335:15",className:"border-b border-[var(--dg-border)] last:border-0 hover:bg-[var(--dg-bg-tertiary)]/50",children:[a.jsx("td",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:336:17",className:"px-2 py-2.5",children:a.jsx(Da,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:337:19",checked:v.has(String(t.server_id)),onCheckedChange:G=>{const k=new Set(v);G?k.add(String(t.server_id)):k.delete(String(t.server_id)),h(k)}})}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:343:17",className:"px-3 py-2.5 font-medium text-[var(--dg-text-primary)]",children:t.hostname}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:344:17",className:"px-3 py-2.5 font-mono text-[var(--dg-text-secondary)]",children:ma.has(t.server_id)?a.jsxs("span",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:346:21",className:"inline-flex items-center gap-1 text-blue-400",children:[a.jsx(aa,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:347:23",className:"w-3 h-3 animate-spin"}),a.jsx("span",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:348:23",className:"text-[10px]",children:"部署中"})]}):t.agent_version||"—"}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:354:17",className:"px-3 py-2.5",children:t.agent_status==="online"?a.jsxs(B,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:354:72",className:"text-[10px] bg-emerald-500/20 text-emerald-400",children:[a.jsx(Fa,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:354:138",className:"w-3 h-3 mr-1"}),"在线"]}):t.agent_status==="not_installed"?a.jsx(B,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:354:214",className:"text-[10px] bg-amber-500/20 text-amber-400",children:"未安装"}):a.jsxs(B,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:354:288",className:"text-[10px] bg-slate-500/10 text-slate-400",children:[a.jsx(us,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:354:350",className:"w-3 h-3 mr-1"}),"离线"]})}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:355:17",className:"px-3 py-2.5",children:ia(Number(t.cpu_usage||0),`${Number(t.cpu_usage||0).toFixed(1)}%`)}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:356:17",className:"px-3 py-2.5",children:ia(Number(t.mem_usage||0),`${Number(t.mem_usage||0).toFixed(1)}%`)}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:357:17",className:"px-3 py-2.5",children:ia(Number(t.disk_usage||0),`${Number(t.disk_usage||0).toFixed(1)}%`)}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:358:17",className:"px-3 py-2.5 text-[var(--dg-text-secondary)]",children:t.region||"—"}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:359:17",className:"px-3 py-2.5 font-mono text-[var(--dg-text-secondary)]",children:t.ip||"—"}),a.jsx("td",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:360:17",className:"px-3 py-2.5",children:a.jsxs(D,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:361:19",variant:"ghost",size:"sm",className:"h-7 text-xs text-blue-400 hover:text-blue-300 hover:bg-blue-500/10 px-2",onClick:()=>r(`/host-monitor?host=${encodeURIComponent(t.hostname)}`),children:[a.jsx($a,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:363:21",className:"w-3.5 h-3.5 mr-1"}),"图表"]})})]},t.hostname+C))})]}),e.length>y&&a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:371:11",className:"flex items-center justify-between px-3 py-2 bg-[var(--dg-bg-tertiary)] border-t border-[var(--dg-border)] text-xs",children:[a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:372:13",className:"flex items-center gap-2 text-[var(--dg-text-muted)]",children:[a.jsxs("span",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:373:15",children:["共 ",e.length," 条"]}),a.jsxs("select",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:374:15",className:"bg-[var(--dg-bg-primary)] border border-[var(--dg-border)] rounded px-2 py-0.5 text-xs",value:y,onChange:t=>{z(Number(t.target.value)),P(1)},children:[a.jsx("option",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:375:17",value:10,children:"10/页"}),a.jsx("option",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:376:17",value:20,children:"20/页"}),a.jsx("option",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:377:17",value:30,children:"30/页"})]})]}),a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:380:13",className:"flex items-center gap-1",children:[a.jsx("button",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:381:15",className:"px-2 py-0.5 rounded hover:bg-[var(--dg-bg-primary)] disabled:opacity-30",disabled:m<=1,onClick:()=>P(t=>t-1),children:"上一页"}),a.jsxs("span",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:382:15",className:"px-2 text-[var(--dg-text-primary)]",children:[m," / ",wa]}),a.jsx("button",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:383:15",className:"px-2 py-0.5 rounded hover:bg-[var(--dg-bg-primary)] disabled:opacity-30",disabled:m>=wa,onClick:()=>P(t=>t+1),children:"下一页"})]})]})]})]}):a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:165:29",className:"text-center py-20 text-[var(--dg-text-muted)]",children:[a.jsx(Q,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:165:92",className:"h-8 w-8 mx-auto mb-2"}),a.jsx("p",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:165:135",className:"text-sm",children:"暂无服务器资产"}),a.jsx("p",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:165:169",className:"text-xs mt-1",children:"请先在「服务器管理」中添加主机,然后在此安装 Agent"})]})},_s=()=>{const[s,r]=o.useState(null),[e,c]=o.useState(!0);return o.useEffect(()=>{ns.list().then(i=>{const x=i?.data||i||[];r(x.find(b=>b.is_default)||x[0]||null)}).catch(()=>{}).finally(()=>c(!1))},[]),e?a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:402:23",className:"text-center py-20 text-[var(--dg-text-muted)]",children:[a.jsx(J,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:402:86",className:"h-6 w-6 mx-auto mb-2 animate-spin"}),a.jsx("p",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:402:144",className:"text-xs",children:"加载数据源…"})]}):s?a.jsx(Ds,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:404:10",dsUrl:s.url,dsUsername:s.username,dsPassword:s.password}):a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:403:19",className:"text-center py-20 text-[var(--dg-text-muted)]",children:[a.jsx(Za,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:403:82",className:"h-8 w-8 mx-auto mb-2"}),a.jsx("p",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:403:127",className:"text-sm",children:"未配置 Zabbix 数据源"}),a.jsxs("a",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:403:168",href:"/datasources",className:"text-xs text-blue-400 hover:underline inline-flex items-center gap-1",children:["前往配置 ",a.jsx(Ha,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:403:277",className:"w-3 h-3"})]})]})},$s=()=>{const[s,r]=o.useState(null),[e,c]=o.useState(!0);return o.useEffect(()=>{ds.list().then(i=>{const x=i?.data||i||[];r(x.find(b=>b.is_default)||x[0]||null)}).catch(()=>{}).finally(()=>c(!1))},[]),e?a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:416:23",className:"text-center py-20 text-[var(--dg-text-muted)]",children:[a.jsx(J,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:416:86",className:"h-6 w-6 mx-auto mb-2 animate-spin"}),a.jsx("p",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:416:144",className:"text-xs",children:"加载数据源…"})]}):s?a.jsx(Ss,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:418:10",dsUrl:s.url}):a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:417:19",className:"text-center py-20 text-[var(--dg-text-muted)]",children:[a.jsx(Za,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:417:82",className:"h-8 w-8 mx-auto mb-2"}),a.jsx("p",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:417:127",className:"text-sm",children:"未配置 Prometheus 数据源"}),a.jsxs("a",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:417:172",href:"/datasources",className:"text-xs text-blue-400 hover:underline inline-flex items-center gap-1",children:["前往配置 ",a.jsx(Ha,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:417:281",className:"w-3 h-3"})]})]})},Zs=()=>{const[s,r]=o.useState([]),[e,c]=o.useState(null),[i,x]=o.useState(!1),[b,g]=o.useState(!1),[N,w]=o.useState({name:"",description:"",datasource:"prometheus",datasourceUrl:""}),[m,P]=o.useState({title:"",type:"graph",query:"",width:6,height:4}),y=async()=>{try{const A=(await ja.getDashboards()).data||[];r(A),A.length>0&&!e&&c(A[0])}catch{}};o.useEffect(()=>{y()},[]);const z=async()=>{if(!N.name){u.error("请输入名称");return}try{await ja.createDashboard({...N,panels:[]}),u.success("创建成功"),x(!1),w({name:"",description:"",datasource:"prometheus",datasourceUrl:""}),y()}catch{u.error("创建失败")}},v=async()=>{if(!(!m.title||!m.query||!e))try{const h={id:Date.now().toString(),...m,datasource:e.datasource,x:0,y:0,options:{legend:!0,tooltip:!0,refreshInterval:30}};await ja.updateDashboard(e.id,{...e,panels:[...e.panels,h]}),u.success("面板添加成功"),g(!1),P({title:"",type:"graph",query:"",width:6,height:4}),y()}catch{u.error("添加失败")}};return a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:452:5",className:"space-y-4",children:[a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:453:7",className:"flex items-center gap-2",children:[a.jsxs(ba,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:454:9",value:e?.id,onValueChange:h=>{const A=s.find(W=>W.id===h);A&&c(A)},children:[a.jsx(ua,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:455:11",className:"w-[240px] h-8 text-xs",children:a.jsx(ga,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:455:60",placeholder:"选择仪表盘"})}),a.jsx(fa,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:456:11",children:s.map(h=>a.jsxs(I,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:456:47",value:h.id,children:[h.name,h.isDefault?" (默认)":""]},h.id))})]}),a.jsxs(D,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:458:9",variant:"outline",size:"sm",className:"h-8 text-[10px]",onClick:y,children:[a.jsx(ha,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:458:89",className:"w-3 h-3 mr-1"}),"刷新"]}),e&&a.jsxs(D,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:459:20",variant:"outline",size:"sm",className:"h-8 text-[10px]",onClick:()=>g(!0),children:[a.jsx(Sa,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:459:117",className:"w-3 h-3 mr-1"}),"添加面板"]}),a.jsxs(D,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:460:9",variant:"outline",size:"sm",className:"h-8 text-[10px]",onClick:()=>x(!0),children:[a.jsx(Sa,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:460:109",className:"w-3 h-3 mr-1"}),"新建"]})]}),e?e.panels.length===0?a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:465:11",className:"text-center py-16 text-[var(--dg-text-muted)]",children:[a.jsx($a,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:465:74",className:"w-10 h-10 mx-auto mb-2 opacity-50"}),a.jsx("p",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:465:133",className:"text-xs",children:"暂无面板"})]}):a.jsx("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:467:11",className:"grid grid-cols-12 gap-3",children:e.panels.map(h=>a.jsxs(U,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:469:15",style:{gridColumn:`span ${h.width}`,minHeight:`${h.height*80}px`},children:[a.jsx(ya,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:470:17",className:"py-2 px-3",children:a.jsx(Ga,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:470:51",className:"text-[11px] font-medium",children:h.title})}),a.jsx(H,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:471:17",className:"p-3 pt-0",children:a.jsx(js,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:471:51",panel:h})})]},h.id))}):a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:477:9",className:"text-center py-16 text-[var(--dg-text-muted)]",children:[a.jsx(_a,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:477:72",className:"w-10 h-10 mx-auto mb-2 opacity-50"}),a.jsx("p",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:477:129",className:"text-xs",children:"暂无仪表盘"})]}),a.jsx(ra,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:480:7",open:i,onOpenChange:x,children:a.jsxs(na,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:480:62",children:[a.jsx(da,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:480:77",children:a.jsx(ca,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:480:91",children:"新建仪表盘"})}),a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:481:9",className:"space-y-3",children:[a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:481:36",children:[a.jsx(L,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:481:41",children:"名称"}),a.jsx(X,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:481:58",value:N.name,onChange:h=>w({...N,name:h.target.value})})]}),a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:482:11",children:[a.jsx(L,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:482:16",children:"数据源"}),a.jsxs(ba,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:482:34",value:N.datasource,onValueChange:h=>w({...N,datasource:h}),children:[a.jsx(ua,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:482:124",children:a.jsx(ga,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:482:139"})}),a.jsxs(fa,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:482:170",children:[a.jsx(I,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:482:185",value:"prometheus",children:"Prometheus"}),a.jsx(I,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:482:239",value:"zabbix",children:"Zabbix"}),a.jsx(I,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:482:285",value:"skywalking",children:"SkyWalking"}),a.jsx(I,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:482:339",value:"custom",children:"自定义"})]})]})]})]}),a.jsxs(va,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:483:9",children:[a.jsx(D,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:483:23",variant:"outline",onClick:()=>x(!1),children:"取消"}),a.jsx(D,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:483:97",onClick:z,children:"创建"})]})]})}),a.jsx(ra,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:485:7",open:b,onOpenChange:g,children:a.jsxs(na,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:485:56",children:[a.jsx(da,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:485:71",children:a.jsx(ca,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:485:85",children:"添加面板"})}),a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:486:9",className:"space-y-3",children:[a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:486:36",children:[a.jsx(L,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:486:41",children:"标题"}),a.jsx(X,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:486:58",value:m.title,onChange:h=>P({...m,title:h.target.value})})]}),a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:487:11",children:[a.jsx(L,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:487:16",children:"类型"}),a.jsxs(ba,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:487:33",value:m.type,onValueChange:h=>P({...m,type:h}),children:[a.jsx(ua,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:487:111",children:a.jsx(ga,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:487:126"})}),a.jsxs(fa,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:487:157",children:[a.jsx(I,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:487:172",value:"graph",children:"折线图"}),a.jsx(I,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:487:214",value:"stat",children:"数值"}),a.jsx(I,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:487:254",value:"gauge",children:"仪表盘"}),a.jsx(I,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:487:296",value:"table",children:"表格"})]})]})]}),a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:488:11",children:[a.jsx(L,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:488:16",children:"查询"}),a.jsx(X,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:488:33",value:m.query,onChange:h=>P({...m,query:h.target.value})})]})]}),a.jsxs(va,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:489:9",children:[a.jsx(D,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:489:23",variant:"outline",onClick:()=>g(!1),children:"取消"}),a.jsx(D,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:489:94",onClick:v,children:"添加"})]})]})})]})},le=()=>{const[s,r]=o.useState("agent"),[e,c]=o.useState(!1);return a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:500:5",className:`space-y-4 ${e?"fixed inset-0 z-50 bg-background p-4 overflow-auto":""}`,children:[a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:503:7",className:"flex items-center gap-1 p-1 rounded-lg bg-[var(--dg-bg-secondary)] border border-[var(--dg-border)]",children:[ks.map(i=>a.jsxs("button",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:505:11",onClick:()=>r(i.id),className:`flex items-center gap-1.5 px-4 py-2 rounded-md text-xs font-medium transition-colors ${s===i.id?"bg-[var(--dg-bg-primary)] text-[var(--dg-text-primary)] shadow-sm":"text-[var(--dg-text-muted)] hover:text-[var(--dg-text-secondary)]"}`,children:[i.icon,i.label]},i.id)),a.jsx("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:518:9",className:"ml-auto",children:a.jsx(D,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:519:11",variant:"ghost",size:"sm",className:"h-7 w-7 p-0",onClick:()=>c(!e),children:e?a.jsx(ls,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:520:27",className:"w-3.5 h-3.5"}):a.jsx(xs,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:520:67",className:"w-3.5 h-3.5"})})})]}),a.jsxs("div",{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:526:7",className:"min-h-[50vh]",children:[s==="agent"&&a.jsx(Ws,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:527:29"}),s==="zabbix"&&a.jsx(_s,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:528:30"}),s==="prometheus"&&a.jsx($s,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:529:34"}),s==="dashboard"&&a.jsx(Zs,{"code-path":"src/components/monitor/dashboard/GrafanaDashboard.tsx:530:33"})]})]})};export{le as default}; diff --git a/backend/static/assets/HostMonitor-BhnRAvcW.js b/backend/static/assets/HostMonitor-BhnRAvcW.js new file mode 100644 index 0000000..f4b5981 --- /dev/null +++ b/backend/static/assets/HostMonitor-BhnRAvcW.js @@ -0,0 +1 @@ +import{i as os,aG as gs,r as i,j as t,L as ms,S as Y,B as A,aH as us,N as dt,I as bs,p as Ms,C as at,A as Wt,P as Hs,D as Kt,a as qt,b as Ut,c as Vt,d as Xt,e as Jt}from"./index-Dmami9WE.js";import{a as G}from"./agent-B3ElXCx8.js";import{C,a as S}from"./card-CIfC-8Rh.js";import{S as Qt,a as Yt,b as Zt,c as ts,d as rt}from"./select-DUbxjT0z.js";import{T as js,a as vs,b as fs,c as z}from"./tabs-lV44z_UR.js";import{B as Z}from"./badge-3UzCvU7L.js";import{H as W}from"./hard-drive-DmC04Y5r.js";import{D as mt}from"./disc-BPxL4arn.js";import{C as ut}from"./circle-x-BBQeW1R3.js";import{R as Mt,C as Ht,X as jt,Y as vt,T as ft,q as as}from"./generateCategoricalChart-ZqCvxO-S.js";import{A as Nt,a as it}from"./AreaChart-CrvX3B0s.js";import{R as ss}from"./refresh-cw-CTBERyFc.js";import{P as Ns}from"./plus-O65gX7Qz.js";import{S as _s}from"./square-pen-B3dPIBrm.js";import{T as ys}from"./trash-2-DWVnIU6o.js";import"./index-CtCQcvyh.js";import"./chevron-up-Cq4GPopa.js";const ws=[["path",{d:"M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5",key:"mvr1a0"}],["path",{d:"M3.22 13H9.5l.5-1 2 4.5 2-7 1.5 3.5h5.27",key:"auskq0"}]],ks=os("heart-pulse",ws);const Cs=[["path",{d:"M3 5h.01",key:"18ugdj"}],["path",{d:"M3 12h.01",key:"nlz23k"}],["path",{d:"M3 19h.01",key:"noohij"}],["path",{d:"M8 5h13",key:"1pao27"}],["path",{d:"M8 12h13",key:"1za7za"}],["path",{d:"M8 19h13",key:"m83p4d"}]],es=os("list",Cs),bt=[{label:"1小时",hours:1,window:60,buckets:60},{label:"6小时",hours:6,window:300,buckets:72},{label:"12小时",hours:12,window:600,buckets:72},{label:"1天",hours:24,window:1800,buckets:96},{label:"3天",hours:72,window:3600,buckets:72},{label:"7天",hours:168,window:10800,buckets:56},{label:"14天",hours:336,window:21600,buckets:48}];function u(r,T,O){if(!r||r.length===0)return[];const F=Math.max(1,Math.ceil(r.length/O)),d=[];for(let j=0;jnt+K,0)/y.length,f=Math.max(...y),R=Math.min(...y),n=w[Math.floor(w.length/2)]||0;d.push({time:new Date(n*1e3).toLocaleTimeString("zh-CN",{hour:"2-digit",minute:"2-digit"}),timestamp:n,avg:Number(v.toFixed(2)),max:Number(f.toFixed(2)),min:Number(R.toFixed(2)),count:y.length})}return d.slice(-O)}function M(r){if(!r)return{};if(typeof r=="object")return r;try{return JSON.parse(r)}catch{return{}}}function ct(r){return r>=1024*1024*1024?`${(r/1024/1024/1024).toFixed(1)} GB/s`:r>=1024*1024?`${(r/1024/1024).toFixed(1)} MB/s`:r>=1024?`${(r/1024).toFixed(1)} KB/s`:`${r.toFixed(1)} B/s`}function Us(){const[r]=gs(),T=r.get("host")||"",[O,F]=i.useState([]),[d,j]=i.useState(T),[y,w]=i.useState(!0),[P,v]=i.useState("basic"),[f,R]=i.useState(1),[n,nt]=i.useState("avg"),[K,_t]=i.useState([]),[o,yt]=i.useState(null),[b,rs]=i.useState(null),[wt,tt]=i.useState([]),[cs,q]=i.useState(!1),[U,kt]=i.useState(null),[a,N]=i.useState({name:"",hostname:"",probe_type:"http_get",http_url:"",http_method:"GET",http_expect_code:200,http_expect_body:"",tcp_host:"",tcp_port:3306,exec_command:"",timeout:10,interval:60,description:""}),V=i.useCallback(()=>{d&&G.getHealthProbes({hostname:d}).then(s=>{Array.isArray(s)?tt(s):s?.list?tt(s.list):tt([])}).catch(()=>tt([]))},[d]),[k,xt]=i.useState("whitelist"),[X,Ct]=i.useState([]),[ds,st]=i.useState(!1),[St,Tt]=i.useState(!1),pt=i.useCallback(()=>{d&&G.getPortPolicy(d).then(s=>{s?.data&&(xt(s.data.port_filter_mode||"blacklist"),Ct(s.data.port_whitelist||[]))}).catch(()=>{})},[d]);i.useEffect(()=>{pt()},[pt]);const is=async()=>{if(d){Tt(!0);try{await G.savePortPolicy(d,{port_filter_mode:k,port_whitelist:X}),st(!1)}catch{}finally{Tt(!1)}}};i.useEffect(()=>{V()},[V]);const h=bt.find(s=>s.hours===f)||bt[0];i.useEffect(()=>{G.getLatest().then(s=>{const e=Array.isArray(s)?s:s?.data||s?.list||[];if(F(e),e.length>0&&!d){const l=T?e.find(E=>E.hostname===T):null;j(l?.hostname||e[0]?.hostname||"")}const c=e.find(l=>l.hostname===(d||T));c&&(yt(c),rs(c))}).catch(()=>{}).finally(()=>w(!1))},[d]),i.useEffect(()=>{d&&G.getHistory(d,f).then(s=>{const e=Array.isArray(s)?s:s?.data||s?.list||[];if(_t(e),e.length>0){const c=e[e.length-1];yt(l=>({...l,...c}))}}).catch(()=>_t([])).finally(()=>w(!1))},[d,f]);const g=i.useMemo(()=>{const s=[],e=[],c=[],l=[],E=[],et=[],B=[],$t=[],At=[],Ft=[],It=[],Dt=[],Et=[],Bt=[],Ot=[],Gt=[],Rt=[],zt=[],Lt=[],ht=[],m=[];for(const x of K){const ns=x.report_time?new Date(x.report_time).getTime()/1e3:x.created_at?new Date(x.created_at).getTime()/1e3:0;m.push(ns),s.push(x.cpu_usage||0),Bt.push(x.cpu_iowait||0),e.push(x.mem_usage||0),Ot.push(x.mem_available||0),c.push(x.load1||0),l.push(x.disk_usage||0);const ot=M(x.disk_info);if(Array.isArray(ot)&&ot.length>0){const ls=ot.find(hs=>hs.mount==="/")||ot[0];ht.push(ls?.inode_usage_pct||0)}else ht.push(0);const $=M(x.net_info);E.push($.tcp_established||0),et.push($.tcp_time_wait||0),B.push($.tcp_close_wait||0),Rt.push(($.tcp_established||0)+($.tcp_time_wait||0)+($.tcp_close_wait||0)),$t.push($.net_rx_bps||0),At.push($.net_tx_bps||0),zt.push($.net_rx_errors||0),Lt.push($.net_tx_errors||0);const gt=M(x.disk_io_info);Ft.push(gt.read_bps||0),It.push(gt.write_bps||0),Gt.push(gt.util||0);const xs=M(x.swap_info);Dt.push(xs?.usage_percent||0);const ps=M(x.fd_info);Et.push(ps?.usage_pct||0)}return{cpu:u(s,m,h.buckets),mem:u(e,m,h.buckets),load1:u(c,m,h.buckets),disk:u(l,m,h.buckets),tcpEst:u(E,m,h.buckets),tcpTW:u(et,m,h.buckets),tcpCW:u(B,m,h.buckets),rx:u($t.map(x=>x/1024),m,h.buckets),tx:u(At.map(x=>x/1024),m,h.buckets),ioRead:u(Ft.map(x=>x/1024),m,h.buckets),ioWrite:u(It.map(x=>x/1024),m,h.buckets),swap:u(Dt,m,h.buckets),fd:u(Et,m,h.buckets),iowait:u(Bt,m,h.buckets),memAvail:u(Ot,m,h.buckets),ioUtil:u(Gt,m,h.buckets),connTotal:u(Rt,m,h.buckets),rxErr:u(zt,m,h.buckets),txErr:u(Lt,m,h.buckets),inode:u(ht,m,h.buckets)}},[K,h]),p=M(o?.net_info),J=Array.isArray(o?.port_info)?o.port_info:Array.isArray(M(o?.port_info))?M(o?.port_info):[],L=M(o?.disk_io_info),Pt=M(o?.swap_info),lt=Array.isArray(M(o?.process_top_info))?M(o?.process_top_info):[],I=M(o?.fd_info),_=M(o?.cs_info),Q=M(o?.heartbeat_info),D=(s,e="--")=>o?s==="cpu"?o.cpu_usage!=null?`${o.cpu_usage.toFixed(1)}%`:e:s==="mem"?o.mem_usage!=null?`${o.mem_usage.toFixed(1)}%`:e:s==="disk"?o.disk_usage!=null?`${o.disk_usage.toFixed(1)}%`:e:s==="load1"?o.load1!=null?String(o.load1):e:s==="tcp"?p.tcp_established!=null?String(p.tcp_established):e:s==="tw"?p.tcp_time_wait!=null?String(p.tcp_time_wait):e:s==="rx"?p.net_rx_bps!=null?`${(p.net_rx_bps/1024).toFixed(1)} KB/s`:e:s==="tx"?p.net_tx_bps!=null?`${(p.net_tx_bps/1024).toFixed(1)} KB/s`:e:s==="ioR"?L.read_bps!=null?`${ct(L.read_bps)}`:e:s==="ioW"?L.write_bps!=null?`${ct(L.write_bps)}`:e:s==="swap"?Pt?.usage_percent!=null?`${Pt.usage_percent.toFixed(1)}%`:e:s==="fd"&&I?.usage_pct!=null?`${I.usage_pct.toFixed(1)}%`:e:e;return y&&!K.length?t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:278:12",className:"flex items-center justify-center h-64",children:t.jsx(ms,{"code-path":"src/pages/HostMonitor.tsx:278:67",className:"h-8 w-8 animate-spin text-slate-500"})}):t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:282:5",className:"space-y-3",children:[t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:284:7",className:"flex items-center justify-between flex-wrap gap-2",children:[t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:285:9",className:"flex items-center gap-2",children:[t.jsx(Y,{"code-path":"src/pages/HostMonitor.tsx:286:11",className:"h-4 w-4 text-blue-400"}),t.jsxs(Qt,{"code-path":"src/pages/HostMonitor.tsx:287:11",value:d,onValueChange:j,children:[t.jsx(Yt,{"code-path":"src/pages/HostMonitor.tsx:288:13",className:"w-52 h-8 text-xs bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:t.jsx(Zt,{"code-path":"src/pages/HostMonitor.tsx:289:15",placeholder:"选择主机..."})}),t.jsx(ts,{"code-path":"src/pages/HostMonitor.tsx:291:13",className:"bg-slate-800 border-slate-700 text-slate-200",children:O.map(s=>t.jsx(rt,{"code-path":"src/pages/HostMonitor.tsx:293:17",value:s.hostname,children:s.hostname},s.hostname))})]}),b&&t.jsxs("span",{"code-path":"src/pages/HostMonitor.tsx:298:13",className:"text-xs text-[var(--dg-text-muted)] ml-2",children:[b.os||"",b.cpu_cores?` | ${b.cpu_cores} 核`:"",b.mem_total?` | ${b.mem_total.toFixed(0)}GB`:""]})]}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:303:9",className:"flex items-center gap-2",children:[t.jsxs(Qt,{"code-path":"src/pages/HostMonitor.tsx:304:11",value:n,onValueChange:s=>nt(s),children:[t.jsx(Yt,{"code-path":"src/pages/HostMonitor.tsx:305:13",className:"w-24 h-7 text-xs bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:t.jsx(Zt,{"code-path":"src/pages/HostMonitor.tsx:306:15"})}),t.jsxs(ts,{"code-path":"src/pages/HostMonitor.tsx:308:13",className:"bg-slate-800 border-slate-700 text-slate-200",children:[t.jsx(rt,{"code-path":"src/pages/HostMonitor.tsx:309:15",value:"avg",children:"平均值"}),t.jsx(rt,{"code-path":"src/pages/HostMonitor.tsx:310:15",value:"max",children:"最大值"}),t.jsx(rt,{"code-path":"src/pages/HostMonitor.tsx:311:15",value:"min",children:"最小值"})]})]}),t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:314:11",className:"flex items-center gap-1",children:bt.map(s=>t.jsx(A,{"code-path":"src/pages/HostMonitor.tsx:316:15",variant:f===s.hours?"default":"outline",size:"sm",className:"h-7 text-xs px-2.5",onClick:()=>R(s.hours),children:s.label},s.hours))})]})]}),t.jsxs(js,{"code-path":"src/pages/HostMonitor.tsx:324:7",value:P,onValueChange:v,children:[t.jsx(vs,{"code-path":"src/pages/HostMonitor.tsx:325:9",className:"h-8 bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] gap-0 overflow-x-auto",children:[{id:"basic",label:"基础监控",icon:t.jsx(us,{"code-path":"src/pages/HostMonitor.tsx:327:49",className:"w-3 h-3"})},{id:"disk",label:"磁盘监控",icon:t.jsx(W,{"code-path":"src/pages/HostMonitor.tsx:328:48",className:"w-3 h-3"})},{id:"network",label:"网络监控",icon:t.jsx(dt,{"code-path":"src/pages/HostMonitor.tsx:329:51",className:"w-3 h-3"})},{id:"ports",label:"端口监控",icon:t.jsx(Y,{"code-path":"src/pages/HostMonitor.tsx:330:49",className:"w-3 h-3"})},{id:"process",label:"进程监控",icon:t.jsx(es,{"code-path":"src/pages/HostMonitor.tsx:331:51",className:"w-3 h-3"})},{id:"system",label:"系统信息",icon:t.jsx(bs,{"code-path":"src/pages/HostMonitor.tsx:332:50",className:"w-3 h-3"})},{id:"health_probes",label:"健康探针",icon:t.jsx(ks,{"code-path":"src/pages/HostMonitor.tsx:333:57",className:"w-3 h-3"})}].map(s=>t.jsxs(fs,{"code-path":"src/pages/HostMonitor.tsx:335:13",value:s.id,className:"text-[11px] h-7 gap-1 data-[state=active]:bg-[var(--dg-bg-primary)]",children:[s.icon,s.label]},s.id))}),t.jsxs(z,{"code-path":"src/pages/HostMonitor.tsx:342:9",value:"basic",className:"mt-3 grid grid-cols-1 md:grid-cols-3 gap-3",children:[t.jsx(H,{"code-path":"src/pages/HostMonitor.tsx:343:11",title:"CPU 使用率(%)",value:D("cpu"),icon:t.jsx(Ms,{"code-path":"src/pages/HostMonitor.tsx:343:79",className:"h-4 w-4 text-blue-400"}),data:g.cpu,color:"#3b82f6",unit:"%",domain:[0,100],aggType:n}),t.jsx(H,{"code-path":"src/pages/HostMonitor.tsx:345:11",title:"CPU IO等待(%)",value:o?.cpu_iowait!=null?`${o.cpu_iowait.toFixed(1)}%`:"--",icon:t.jsx(at,{"code-path":"src/pages/HostMonitor.tsx:345:133",className:"h-4 w-4 text-orange-400"}),data:g.iowait,color:"#f97316",unit:"%",domain:[0,100],aggType:n}),t.jsx(H,{"code-path":"src/pages/HostMonitor.tsx:347:11",title:"内存使用率(%)",value:D("mem"),icon:t.jsx(Y,{"code-path":"src/pages/HostMonitor.tsx:347:77",className:"h-4 w-4 text-emerald-400"}),data:g.mem,color:"#10b981",unit:"%",domain:[0,100],aggType:n}),t.jsx(H,{"code-path":"src/pages/HostMonitor.tsx:349:11",title:"可用内存(GB)",value:o?.mem_available!=null?`${o.mem_available.toFixed(1)}GB`:"--",icon:t.jsx(Y,{"code-path":"src/pages/HostMonitor.tsx:349:137",className:"h-4 w-4 text-emerald-400"}),data:g.memAvail,color:"#34d399",unit:"GB",domain:[0,"auto"],aggType:n}),t.jsx(H,{"code-path":"src/pages/HostMonitor.tsx:351:11",title:"Swap 使用率(%)",value:D("swap"),icon:t.jsx(W,{"code-path":"src/pages/HostMonitor.tsx:351:81",className:"h-4 w-4 text-red-400"}),data:g.swap,color:"#ef4444",unit:"%",domain:[0,100],aggType:n}),t.jsx(H,{"code-path":"src/pages/HostMonitor.tsx:353:11",title:"系统负载(1m)",value:D("load1"),icon:t.jsx(Wt,{"code-path":"src/pages/HostMonitor.tsx:353:79",className:"h-4 w-4 text-purple-400"}),data:g.load1,color:"#8b5cf6",unit:"",domain:[0,"auto"],aggType:n})]}),t.jsx(z,{"code-path":"src/pages/HostMonitor.tsx:358:9",value:"disk",className:"mt-3 space-y-3",children:t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:359:11",className:"grid grid-cols-1 md:grid-cols-3 gap-3",children:[t.jsx(H,{"code-path":"src/pages/HostMonitor.tsx:360:13",title:"磁盘使用率(%)",value:D("disk"),icon:t.jsx(W,{"code-path":"src/pages/HostMonitor.tsx:360:80",className:"h-4 w-4 text-orange-400"}),data:g.disk,color:"#f97316",unit:"%",domain:[0,100],aggType:n}),t.jsx(H,{"code-path":"src/pages/HostMonitor.tsx:362:13",title:"Inode 使用率(%)",value:(()=>{const s=Array.isArray(M(o?.disk_info))?M(o?.disk_info):[],e=s.find(c=>c.mount==="/")||s[0];return e?.inode_usage_pct!=null?`${e.inode_usage_pct.toFixed(1)}%`:"--"})(),icon:t.jsx(W,{"code-path":"src/pages/HostMonitor.tsx:366:25",className:"h-4 w-4 text-purple-400"}),data:g.inode,color:"#8b5cf6",unit:"%",domain:[0,100],aggType:n}),t.jsx(H,{"code-path":"src/pages/HostMonitor.tsx:368:13",title:"磁盘读取(KB/s)",value:D("ioR"),icon:t.jsx(mt,{"code-path":"src/pages/HostMonitor.tsx:368:81",className:"h-4 w-4 text-blue-400"}),data:g.ioRead,color:"#3b82f6",unit:"KB/s",domain:[0,"auto"],aggType:n}),t.jsx(H,{"code-path":"src/pages/HostMonitor.tsx:370:13",title:"磁盘写入(KB/s)",value:D("ioW"),icon:t.jsx(mt,{"code-path":"src/pages/HostMonitor.tsx:370:81",className:"h-4 w-4 text-emerald-400"}),data:g.ioWrite,color:"#10b981",unit:"KB/s",domain:[0,"auto"],aggType:n}),t.jsx(H,{"code-path":"src/pages/HostMonitor.tsx:372:13",title:"磁盘IO繁忙度(%)",value:L?.util!=null?`${L.util.toFixed(1)}%`:"--",icon:t.jsx(mt,{"code-path":"src/pages/HostMonitor.tsx:372:130",className:"h-4 w-4 text-red-400"}),data:g.ioUtil,color:"#ef4444",unit:"%",domain:[0,100],aggType:n})]})}),t.jsxs(z,{"code-path":"src/pages/HostMonitor.tsx:378:9",value:"network",className:"mt-3 space-y-3",children:[t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:379:11",className:"grid grid-cols-1 md:grid-cols-4 gap-3",children:[t.jsx(H,{"code-path":"src/pages/HostMonitor.tsx:380:13",title:"TCP EST",value:D("tcp"),icon:t.jsx(dt,{"code-path":"src/pages/HostMonitor.tsx:380:78",className:"h-4 w-4 text-purple-400"}),data:g.tcpEst,color:"#8b5cf6",unit:"个",domain:[0,"auto"],aggType:n}),t.jsx(H,{"code-path":"src/pages/HostMonitor.tsx:382:13",title:"TCP TIME_WAIT",value:D("tw"),icon:t.jsx(at,{"code-path":"src/pages/HostMonitor.tsx:382:83",className:"h-4 w-4 text-amber-400"}),data:g.tcpTW,color:"#f59e0b",unit:"个",domain:[0,"auto"],aggType:n}),t.jsx(H,{"code-path":"src/pages/HostMonitor.tsx:384:13",title:"TCP CLOSE_WAIT",value:p?.tcp_close_wait!=null?String(p.tcp_close_wait):"--",icon:t.jsx(at,{"code-path":"src/pages/HostMonitor.tsx:384:139",className:"h-4 w-4 text-red-400"}),data:g.tcpCW,color:"#ef4444",unit:"个",domain:[0,"auto"],aggType:n}),t.jsx(H,{"code-path":"src/pages/HostMonitor.tsx:386:13",title:"TCP 总连接",value:p?String((p.tcp_established||0)+(p.tcp_time_wait||0)+(p.tcp_close_wait||0)):"--",icon:t.jsx(dt,{"code-path":"src/pages/HostMonitor.tsx:386:169",className:"h-4 w-4 text-cyan-400"}),data:g.connTotal,color:"#22d3ee",unit:"个",domain:[0,"auto"],aggType:n})]}),t.jsx(Ss,{"code-path":"src/pages/HostMonitor.tsx:390:11",title:"网卡带宽吞吐",currentRx:p?.net_rx_bps!=null?ct(p.net_rx_bps):"--",currentTx:p?.net_tx_bps!=null?ct(p.net_tx_bps):"--",rxData:g.rx,txData:g.tx,aggType:n,unit:"KB/s"}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:397:11",className:"grid grid-cols-1 md:grid-cols-2 gap-3 mt-3",children:[t.jsx(H,{"code-path":"src/pages/HostMonitor.tsx:398:13",title:"网卡接收错误",value:p?.net_rx_errors!=null?String(p.net_rx_errors):"--",icon:t.jsx(ut,{"code-path":"src/pages/HostMonitor.tsx:398:129",className:"h-4 w-4 text-red-400"}),data:g.rxErr,color:"#ef4444",unit:"个",domain:[0,"auto"],aggType:n}),t.jsx(H,{"code-path":"src/pages/HostMonitor.tsx:400:13",title:"网卡发送错误",value:p?.net_tx_errors!=null?String(p.net_tx_errors):"--",icon:t.jsx(ut,{"code-path":"src/pages/HostMonitor.tsx:400:129",className:"h-4 w-4 text-orange-400"}),data:g.txErr,color:"#f97316",unit:"个",domain:[0,"auto"],aggType:n})]})]}),t.jsx(z,{"code-path":"src/pages/HostMonitor.tsx:406:9",value:"ports",className:"mt-3 space-y-3",children:t.jsx(C,{"code-path":"src/pages/HostMonitor.tsx:407:11",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:t.jsxs(S,{"code-path":"src/pages/HostMonitor.tsx:408:13",className:"p-4",children:[t.jsxs("h3",{"code-path":"src/pages/HostMonitor.tsx:409:15",className:"text-xs font-medium text-[var(--dg-text-primary)] mb-3 flex items-center gap-2",children:[t.jsx(Y,{"code-path":"src/pages/HostMonitor.tsx:410:17",className:"h-4 w-4 text-emerald-400"}),"监听端口 ",J.length,t.jsxs("span",{"code-path":"src/pages/HostMonitor.tsx:411:17",className:"ml-auto flex items-center gap-2",children:[k==="blacklist"&&X.length>0&&t.jsxs(Z,{"code-path":"src/pages/HostMonitor.tsx:413:21",variant:"outline",className:"text-[10px] text-amber-400 border-amber-500/30",children:["黑名单: ",X.join(",")]}),k==="whitelist"&&t.jsx(Z,{"code-path":"src/pages/HostMonitor.tsx:418:21",variant:"outline",className:"text-[10px] text-blue-400 border-blue-500/30",children:"白名单模式"}),t.jsx(A,{"code-path":"src/pages/HostMonitor.tsx:422:19",variant:"outline",size:"sm",className:"h-6 text-[10px] px-2",onClick:()=>{pt(),st(!0)},children:"策略配置"})]})]}),J.length===0?t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:429:17",className:"text-center py-6 text-xs text-[var(--dg-text-muted)] border border-dashed border-[var(--dg-border)] rounded-lg",children:"暂无端口数据"}):t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:433:17",className:"overflow-x-auto",children:t.jsxs("table",{"code-path":"src/pages/HostMonitor.tsx:434:19",className:"w-full text-xs",children:[t.jsx("thead",{"code-path":"src/pages/HostMonitor.tsx:435:21",children:t.jsxs("tr",{"code-path":"src/pages/HostMonitor.tsx:436:23",className:"text-[var(--dg-text-muted)] border-b border-[var(--dg-border)]",children:[t.jsx("th",{"code-path":"src/pages/HostMonitor.tsx:437:25",className:"py-1.5 text-left font-medium",children:"端口"}),t.jsx("th",{"code-path":"src/pages/HostMonitor.tsx:438:25",className:"py-1.5 text-left font-medium",children:"协议"}),t.jsx("th",{"code-path":"src/pages/HostMonitor.tsx:439:25",className:"py-1.5 text-left font-medium",children:"进程"}),t.jsx("th",{"code-path":"src/pages/HostMonitor.tsx:440:25",className:"py-1.5 text-right font-medium",children:"状态"})]})}),t.jsx("tbody",{"code-path":"src/pages/HostMonitor.tsx:443:21",children:J.map((s,e)=>t.jsxs("tr",{"code-path":"src/pages/HostMonitor.tsx:445:25",className:"border-b border-[var(--dg-border)]/30 hover:bg-slate-800/30 transition-colors",children:[t.jsx("td",{"code-path":"src/pages/HostMonitor.tsx:446:27",className:"py-1.5 font-mono text-[var(--dg-text-primary)]",children:s.port}),t.jsx("td",{"code-path":"src/pages/HostMonitor.tsx:447:27",className:"py-1.5",children:t.jsx(Z,{"code-path":"src/pages/HostMonitor.tsx:448:29",variant:"outline",className:"text-[10px] font-mono",children:s.protocol||"tcp"})}),t.jsx("td",{"code-path":"src/pages/HostMonitor.tsx:452:27",className:"py-1.5 font-mono text-[var(--dg-text-muted)]",children:s.process||"—"}),t.jsx("td",{"code-path":"src/pages/HostMonitor.tsx:453:27",className:"py-1.5 text-right",children:t.jsx(Z,{"code-path":"src/pages/HostMonitor.tsx:454:29",variant:"default",className:"text-[10px] bg-emerald-500/20 text-emerald-400 border-emerald-500/30",children:"LISTEN"})})]},e))})]})})]})})}),t.jsxs(z,{"code-path":"src/pages/HostMonitor.tsx:469:9",value:"process",className:"mt-3 space-y-3",children:[t.jsx(C,{"code-path":"src/pages/HostMonitor.tsx:471:11",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:t.jsxs(S,{"code-path":"src/pages/HostMonitor.tsx:472:13",className:"p-4",children:[t.jsxs("h3",{"code-path":"src/pages/HostMonitor.tsx:473:15",className:"text-xs font-medium text-[var(--dg-text-primary)] mb-3 flex items-center gap-2",children:[t.jsx(es,{"code-path":"src/pages/HostMonitor.tsx:474:17",className:"h-4 w-4 text-cyan-400"}),"进程 TOP ",lt.length]}),lt.length===0?t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:477:17",className:"text-center py-6 text-xs text-[var(--dg-text-muted)] border border-dashed border-[var(--dg-border)] rounded-lg",children:"Agent v2.0+ 支持,等待数据上报…"}):t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:481:17",className:"overflow-x-auto",children:t.jsxs("table",{"code-path":"src/pages/HostMonitor.tsx:482:19",className:"w-full text-xs",children:[t.jsx("thead",{"code-path":"src/pages/HostMonitor.tsx:483:21",children:t.jsxs("tr",{"code-path":"src/pages/HostMonitor.tsx:484:23",className:"text-[var(--dg-text-muted)] border-b border-[var(--dg-border)]",children:[t.jsx("th",{"code-path":"src/pages/HostMonitor.tsx:485:25",className:"py-1.5 text-left font-medium w-[40%]",children:"进程名称 / CMD"}),t.jsx("th",{"code-path":"src/pages/HostMonitor.tsx:486:25",className:"py-1.5 text-right font-medium w-[8%]",children:"PID"}),t.jsx("th",{"code-path":"src/pages/HostMonitor.tsx:487:25",className:"py-1.5 text-right font-medium w-[16%]",children:"内存使用率(%)"}),t.jsx("th",{"code-path":"src/pages/HostMonitor.tsx:488:25",className:"py-1.5 text-right font-medium w-[16%]",children:"CPU使用率(%)"}),t.jsx("th",{"code-path":"src/pages/HostMonitor.tsx:489:25",className:"py-1.5 text-right font-medium w-[20%]",children:"打开文件数"})]})}),t.jsx("tbody",{"code-path":"src/pages/HostMonitor.tsx:492:21",children:lt.map((s,e)=>{const c=s.cmdline||s.name||"?",l=s.cpu_pct!=null?Number(s.cpu_pct):null,E=s.mem_pct!=null?Number(s.mem_pct):null;return t.jsxs("tr",{"code-path":"src/pages/HostMonitor.tsx:498:27",className:"border-b border-[var(--dg-border)]/30 hover:bg-slate-800/30 transition-colors",children:[t.jsx("td",{"code-path":"src/pages/HostMonitor.tsx:499:29",className:"py-1.5 pr-2",children:t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:500:31",className:"flex items-center gap-1 group/cmd",children:[t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:501:33",className:"font-mono text-[var(--dg-text-primary)] truncate max-w-[320px] inline-block align-middle",title:c,children:c}),t.jsx("button",{"code-path":"src/pages/HostMonitor.tsx:507:33",className:"opacity-0 group-hover/cmd:opacity-100 transition-opacity p-0.5 hover:text-cyan-400 shrink-0",title:"复制命令行",onClick:async et=>{et.stopPropagation();try{await navigator.clipboard.writeText(c)}catch{const B=document.createElement("textarea");B.value=c,B.style.position="fixed",B.style.opacity="0",document.body.appendChild(B),B.select(),document.execCommand("copy"),document.body.removeChild(B)}},children:t.jsxs("svg",{"code-path":"src/pages/HostMonitor.tsx:523:35",className:"w-3 h-3",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[t.jsx("rect",{"code-path":"src/pages/HostMonitor.tsx:524:37",x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),t.jsx("path",{"code-path":"src/pages/HostMonitor.tsx:525:37",d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]})})]})}),t.jsx("td",{"code-path":"src/pages/HostMonitor.tsx:530:29",className:"py-1.5 text-right font-mono text-[var(--dg-text-muted)]",children:s.pid}),t.jsx("td",{"code-path":"src/pages/HostMonitor.tsx:531:29",className:"py-1.5 text-right font-mono",children:t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:532:31",className:E!=null&&E>50?"text-rose-400":"text-cyan-400",children:E!=null?E.toFixed(2):"--"})}),t.jsx("td",{"code-path":"src/pages/HostMonitor.tsx:536:29",className:"py-1.5 text-right font-mono",children:t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:537:31",className:l!=null&&l>50?"text-rose-400":"text-[var(--dg-text-primary)]",children:l!=null?l.toFixed(2):"--"})}),t.jsx("td",{"code-path":"src/pages/HostMonitor.tsx:541:29",className:"py-1.5 text-right font-mono text-[var(--dg-text-muted)]",children:s.fd_count??"--"})]},e)})})]})})]})}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:553:11",className:"grid grid-cols-1 md:grid-cols-2 gap-3",children:[t.jsx(C,{"code-path":"src/pages/HostMonitor.tsx:555:13",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:t.jsxs(S,{"code-path":"src/pages/HostMonitor.tsx:556:15",className:"p-4",children:[t.jsxs("h3",{"code-path":"src/pages/HostMonitor.tsx:557:17",className:"text-xs font-medium text-[var(--dg-text-primary)] mb-3 flex items-center gap-2",children:[t.jsx(W,{"code-path":"src/pages/HostMonitor.tsx:558:19",className:"h-4 w-4 text-violet-400"}),"FD 文件句柄"]}),I?.allocated!=null?t.jsxs(t.Fragment,{children:[t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:562:21",className:"flex items-center gap-4 mb-3 text-xs",children:[t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:563:23",children:[t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:564:25",className:"text-[var(--dg-text-muted)]",children:"已分配 "}),t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:565:25",className:"font-mono text-[var(--dg-text-primary)] font-semibold",children:I.allocated.toLocaleString()})]}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:567:23",children:[t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:568:25",className:"text-[var(--dg-text-muted)]",children:"上限 "}),t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:569:25",className:"font-mono text-[var(--dg-text-primary)] font-semibold",children:I.max===-1?"无限制":I.max?.toLocaleString()||"—"})]}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:571:23",children:[t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:572:25",className:"text-[var(--dg-text-muted)]",children:"使用率 "}),t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:573:25",className:`font-mono font-semibold ${I.usage_pct>80?"text-rose-400":"text-violet-400"}`,children:I.usage_pct!=null?`${I.usage_pct.toFixed(1)}%`:"—"})]})]}),g.fd.length>0&&t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:579:23",className:"h-[120px]",children:t.jsx(Mt,{"code-path":"src/pages/HostMonitor.tsx:580:25",width:"100%",height:"100%",children:t.jsxs(Nt,{"code-path":"src/pages/HostMonitor.tsx:581:27",data:g.fd,children:[t.jsx(Ht,{"code-path":"src/pages/HostMonitor.tsx:582:29",strokeDasharray:"3 3",stroke:"var(--dg-border)"}),t.jsx(jt,{"code-path":"src/pages/HostMonitor.tsx:583:29",dataKey:"time",tick:{fontSize:10,fill:"var(--dg-text-muted)"},interval:"preserveStartEnd"}),t.jsx(vt,{"code-path":"src/pages/HostMonitor.tsx:584:29",tick:{fontSize:10,fill:"var(--dg-text-muted)"},unit:"%",domain:[0,"auto"]}),t.jsx(ft,{"code-path":"src/pages/HostMonitor.tsx:585:29",contentStyle:{background:"#1e293b",border:"1px solid #334155",borderRadius:6,fontSize:11}}),t.jsx("defs",{"code-path":"src/pages/HostMonitor.tsx:586:29",children:t.jsxs("linearGradient",{"code-path":"src/pages/HostMonitor.tsx:587:31",id:"fdGrad",x1:"0",y1:"0",x2:"0",y2:"1",children:[t.jsx("stop",{"code-path":"src/pages/HostMonitor.tsx:588:33",offset:"0%",stopColor:"#a78bfa",stopOpacity:.3}),t.jsx("stop",{"code-path":"src/pages/HostMonitor.tsx:589:33",offset:"100%",stopColor:"#a78bfa",stopOpacity:.05})]})}),t.jsx(it,{"code-path":"src/pages/HostMonitor.tsx:592:29",type:"monotone",dataKey:n,stroke:"#a78bfa",strokeWidth:1.5,fill:"url(#fdGrad)",name:"FD使用率"})]})})})]}):t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:599:19",className:"text-center py-4 text-xs text-[var(--dg-text-muted)]",children:"等待数据…"})]})}),t.jsx(C,{"code-path":"src/pages/HostMonitor.tsx:605:13",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:t.jsxs(S,{"code-path":"src/pages/HostMonitor.tsx:606:15",className:"p-4",children:[t.jsxs("h3",{"code-path":"src/pages/HostMonitor.tsx:607:17",className:"text-xs font-medium text-[var(--dg-text-primary)] mb-3 flex items-center gap-2",children:[t.jsx(ss,{"code-path":"src/pages/HostMonitor.tsx:608:19",className:"h-4 w-4 text-emerald-400"}),"上下文切换"]}),_?.ctx_per_sec!=null?t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:611:19",className:"space-y-4",children:[t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:612:21",className:"grid grid-cols-2 gap-4",children:[t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:613:23",className:"bg-[var(--dg-bg-primary)] rounded-lg p-3 text-center",children:[t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:614:25",className:"text-[10px] text-[var(--dg-text-muted)] mb-1",children:"CTX 切换/秒"}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:615:25",className:"text-lg font-bold font-mono text-emerald-400",children:[(_.ctx_per_sec/1e6).toFixed(1),t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:616:66",className:"text-xs font-normal text-[var(--dg-text-muted)] ml-0.5",children:"M"})]}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:618:25",className:"text-[10px] text-[var(--dg-text-muted)] mt-1 font-mono",children:[_.ctx_per_sec?.toLocaleString()," 次"]})]}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:620:23",className:"bg-[var(--dg-bg-primary)] rounded-lg p-3 text-center",children:[t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:621:25",className:"text-[10px] text-[var(--dg-text-muted)] mb-1",children:"IRQ 中断/秒"}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:622:25",className:"text-lg font-bold font-mono text-amber-400",children:[(_.irq_per_sec/1e6).toFixed(1),t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:623:66",className:"text-xs font-normal text-[var(--dg-text-muted)] ml-0.5",children:"M"})]}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:625:25",className:"text-[10px] text-[var(--dg-text-muted)] mt-1 font-mono",children:[_.irq_per_sec?.toLocaleString()," 次"]})]})]}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:629:21",className:"space-y-1",children:[t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:630:23",className:"flex justify-between text-[10px]",children:[t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:631:25",className:"text-emerald-400",children:"CTX"}),t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:632:25",className:"text-amber-400",children:"IRQ"})]}),t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:634:23",className:"h-2 bg-[var(--dg-bg-primary)] rounded-full overflow-hidden flex",children:_.ctx_per_sec+_.irq_per_sec>0&&t.jsxs(t.Fragment,{children:[t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:637:29",className:"h-full bg-emerald-500/60 rounded-l-full transition-all",style:{width:`${(_.ctx_per_sec/(_.ctx_per_sec+_.irq_per_sec)*100).toFixed(1)}%`}}),t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:639:29",className:"h-full bg-amber-500/60 rounded-r-full transition-all",style:{width:`${(_.irq_per_sec/(_.ctx_per_sec+_.irq_per_sec)*100).toFixed(1)}%`}})]})})]})]}):t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:647:19",className:"text-center py-4 text-xs text-[var(--dg-text-muted)]",children:"等待数据…"})]})})]})]}),t.jsxs(z,{"code-path":"src/pages/HostMonitor.tsx:655:9",value:"system",className:"mt-3 space-y-3",children:[t.jsx(C,{"code-path":"src/pages/HostMonitor.tsx:656:11",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:t.jsx(S,{"code-path":"src/pages/HostMonitor.tsx:657:13",className:"p-4",children:t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:658:15",className:"grid grid-cols-2 md:grid-cols-4 gap-x-6 gap-y-3 text-xs",children:[["主机名",b?.hostname||d],["IP 地址",b?.ip||"—"],["操作系统",b?.os||"—"],["内核版本",b?.kernel||"—"],["CPU 核心数",b?.cpu_cores||"—"],["总内存",b?.mem_total?`${b.mem_total.toFixed(0)} GB`:"—"],["已用内存",b?.mem_used?`${b.mem_used.toFixed(1)} GB`:"—"],["运行时长",b?.uptime?`${Math.floor(b.uptime/86400)}天 ${Math.floor(b.uptime%86400/3600)}时`:"—"],["Agent 版本",Q?.version||b?.agent_version||"—"],["Agent 序列号",Q?.report_seq!=null?String(Q.report_seq):"—"],["监听端口数",J.length>0?`${J.length}`:"—"],["Agent RSS",Q?.self_rss_mb?`${Q.self_rss_mb.toFixed(1)} MB`:"—"]].map(([s,e])=>t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:673:19",children:[t.jsxs("span",{"code-path":"src/pages/HostMonitor.tsx:674:21",className:"text-[var(--dg-text-muted)]",children:[s,":"]}),t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:675:21",className:"text-[var(--dg-text-primary)] font-mono",children:e})]},s))})})}),o&&t.jsx(C,{"code-path":"src/pages/HostMonitor.tsx:684:13",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:t.jsxs(S,{"code-path":"src/pages/HostMonitor.tsx:685:15",className:"p-4",children:[t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:686:17",className:"flex items-center gap-2 mb-2",children:[t.jsx(Wt,{"code-path":"src/pages/HostMonitor.tsx:687:19",className:"h-4 w-4 text-[var(--dg-text-muted)]"}),t.jsx("h3",{"code-path":"src/pages/HostMonitor.tsx:688:19",className:"text-xs font-medium text-[var(--dg-text-primary)]",children:"系统负载 (Load Average)"})]}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:690:17",className:"flex items-center gap-6 text-xs",children:[t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:691:19",children:[t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:691:24",className:"text-[var(--dg-text-muted)]",children:"1min "}),t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:691:82",className:"text-sm font-bold text-slate-200",children:o.load1??"--"})]}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:692:19",children:[t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:692:24",className:"text-[var(--dg-text-muted)]",children:"5min "}),t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:692:82",className:"text-sm font-bold text-slate-200",children:o.load5??"--"})]}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:693:19",children:[t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:693:24",className:"text-[var(--dg-text-muted)]",children:"15min "}),t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:693:83",className:"text-sm font-bold text-slate-200",children:o.load15??"--"})]})]})]})}),o?.disk_info&&(()=>{const s=M(o.disk_info),e=Array.isArray(s)?s:s.partitions||[];return e.length?t.jsx(C,{"code-path":"src/pages/HostMonitor.tsx:705:15",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:t.jsxs(S,{"code-path":"src/pages/HostMonitor.tsx:706:17",className:"p-4",children:[t.jsxs("h3",{"code-path":"src/pages/HostMonitor.tsx:707:19",className:"text-xs font-medium text-[var(--dg-text-primary)] mb-2 flex items-center gap-2",children:[t.jsx(W,{"code-path":"src/pages/HostMonitor.tsx:707:114",className:"h-4 w-4"}),"磁盘分区"]}),t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:708:19",className:"space-y-1.5",children:e.map((c,l)=>t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:710:23",className:"flex items-center gap-2 text-xs",children:[t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:711:25",className:"text-[var(--dg-text-muted)] w-24 font-mono truncate",children:c.mount||c.mountpoint||c.device||`disk${l}`}),t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:712:25",className:"flex-1 h-1.5 bg-slate-700 rounded-full overflow-hidden",children:t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:713:27",className:"h-full rounded-full bg-blue-500",style:{width:`${Math.min(c.usage_percent||c.used_percent||0,100)}%`}})}),t.jsxs("span",{"code-path":"src/pages/HostMonitor.tsx:715:25",className:"text-[var(--dg-text-primary)] w-28 text-right tabular-nums whitespace-nowrap",children:[(c.used_gb??0).toFixed(1),"/",(c.total_gb??0).toFixed(0),"GB"]}),t.jsxs("span",{"code-path":"src/pages/HostMonitor.tsx:716:25",className:"text-blue-400 w-14 text-right tabular-nums whitespace-nowrap",children:[(c.usage_percent??c.used_percent??0).toFixed(1),"%"]})]},l))})]})}):null})()]}),t.jsxs(z,{"code-path":"src/pages/HostMonitor.tsx:727:9",value:"health_probes",className:"mt-3 space-y-3",children:[t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:728:11",className:"flex items-center justify-between",children:[t.jsx("h3",{"code-path":"src/pages/HostMonitor.tsx:729:13",className:"text-xs font-medium text-[var(--dg-text-primary)]",children:"探针列表(Agent 在目标主机本地执行探测)"}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:730:13",className:"flex gap-2",children:[t.jsxs(A,{"code-path":"src/pages/HostMonitor.tsx:731:15",size:"sm",variant:"outline",className:"h-7 text-[11px]",onClick:V,children:[t.jsx(ss,{"code-path":"src/pages/HostMonitor.tsx:732:17",className:"w-3 h-3 mr-1"}),"刷新"]}),t.jsxs(A,{"code-path":"src/pages/HostMonitor.tsx:734:15",size:"sm",className:"h-7 text-[11px] bg-blue-600 hover:bg-blue-500",onClick:()=>{kt(null),N({name:"",hostname:d,probe_type:"http_get",http_url:"",http_method:"GET",http_expect_code:200,http_expect_body:"",tcp_host:"localhost",tcp_port:3306,exec_command:"",timeout:10,interval:60,description:""}),q(!0)},children:[t.jsx(Ns,{"code-path":"src/pages/HostMonitor.tsx:743:17",className:"w-3 h-3 mr-1"}),"添加探针"]})]})]}),wt.length===0?t.jsx(C,{"code-path":"src/pages/HostMonitor.tsx:748:13",className:"bg-[var(--dg-bg-secondary)] border-dashed border-[var(--dg-border)]",children:t.jsx(S,{"code-path":"src/pages/HostMonitor.tsx:749:15",className:"p-8 text-center text-xs text-[var(--dg-text-muted)]",children:'暂无健康探针,点击"添加探针"创建'})}):t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:754:13",className:"grid grid-cols-1 md:grid-cols-2 gap-3",children:wt.map(s=>t.jsx(C,{"code-path":"src/pages/HostMonitor.tsx:756:17",className:`bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] ${s.last_status==="down"?"border-red-700/50":""}`,children:t.jsxs(S,{"code-path":"src/pages/HostMonitor.tsx:757:19",className:"p-3",children:[t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:758:21",className:"flex items-start justify-between mb-2",children:[t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:759:23",className:"flex items-center gap-2",children:[s.last_status==="up"?t.jsx(Hs,{"code-path":"src/pages/HostMonitor.tsx:760:51",className:"w-4 h-4 text-emerald-400"}):s.last_status==="down"?t.jsx(ut,{"code-path":"src/pages/HostMonitor.tsx:761:53",className:"w-4 h-4 text-red-400"}):t.jsx(at,{"code-path":"src/pages/HostMonitor.tsx:762:26",className:"w-4 h-4 text-slate-500"}),t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:763:25",className:"text-xs font-medium text-[var(--dg-text-primary)]",children:s.name}),t.jsx(Z,{"code-path":"src/pages/HostMonitor.tsx:764:25",variant:"outline",className:"text-[10px] h-5 px-1.5 capitalize",children:s.probe_type==="http_get"?"HTTP":s.probe_type==="tcp_socket"?"TCP":"Exec"})]}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:768:23",className:"flex gap-1",children:[t.jsx(A,{"code-path":"src/pages/HostMonitor.tsx:769:25",variant:"ghost",size:"sm",className:"h-6 w-6 p-0",onClick:()=>{kt(s),N({name:s.name,hostname:s.hostname,probe_type:s.probe_type,http_url:s.http_url||"",http_method:s.http_method||"GET",http_expect_code:s.http_expect_code||200,http_expect_body:s.http_expect_body||"",tcp_host:s.tcp_host||"",tcp_port:s.tcp_port||3306,exec_command:s.exec_command||"",timeout:s.timeout||10,interval:s.interval||60,description:s.description||""}),q(!0)},children:t.jsx(_s,{"code-path":"src/pages/HostMonitor.tsx:781:27",className:"w-3 h-3"})}),t.jsx(A,{"code-path":"src/pages/HostMonitor.tsx:783:25",variant:"ghost",size:"sm",className:"h-6 w-6 p-0 text-red-400 hover:text-red-300",onClick:async()=>{confirm(`确定删除探针"${s.name}"?`)&&(await G.deleteHealthProbe(s.id),V())},children:t.jsx(ys,{"code-path":"src/pages/HostMonitor.tsx:789:27",className:"w-3 h-3"})})]})]}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:793:21",className:"space-y-1 text-[11px] text-[var(--dg-text-muted)]",children:[s.probe_type==="http_get"&&t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:795:25",className:"truncate",children:["URL: ",s.http_url]}),s.probe_type==="tcp_socket"&&t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:798:25",children:[s.tcp_host,":",s.tcp_port]}),s.probe_type==="exec_command"&&t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:801:25",className:"truncate font-mono",children:s.exec_command}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:803:23",className:"flex items-center gap-3",children:[t.jsxs("span",{"code-path":"src/pages/HostMonitor.tsx:804:25",children:["状态: ",t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:804:35",className:s.last_status==="up"?"text-emerald-400":s.last_status==="down"?"text-red-400":"text-slate-400",children:s.last_status?s.last_status.toUpperCase():"未检测"})]}),s.last_latency_ms>0&&t.jsxs("span",{"code-path":"src/pages/HostMonitor.tsx:807:51",children:["延迟: ",s.last_latency_ms,"ms"]}),s.fail_count>0&&t.jsxs("span",{"code-path":"src/pages/HostMonitor.tsx:808:46",className:"text-red-400",children:["连续失败: ",s.fail_count,"次"]}),s.last_checked_at&&t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:809:47",className:"text-[10px]",children:new Date(s.last_checked_at).toLocaleString("zh-CN")})]})]})]})},s.id))})]})]}),t.jsx(Kt,{"code-path":"src/pages/HostMonitor.tsx:821:7",open:cs,onOpenChange:q,children:t.jsxs(qt,{"code-path":"src/pages/HostMonitor.tsx:822:9",showOverlay:!1,className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] max-w-lg",children:[t.jsxs(Ut,{"code-path":"src/pages/HostMonitor.tsx:823:11",children:[t.jsx(Vt,{"code-path":"src/pages/HostMonitor.tsx:824:13",className:"text-[var(--dg-text-primary)]",children:U?"编辑探针":"添加探针"}),t.jsx(Xt,{"code-path":"src/pages/HostMonitor.tsx:827:13",className:"text-[var(--dg-text-secondary)]",children:U?"修改健康探针配置":"创建新的健康探针,Agent 在目标主机本地执行探测"})]}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:831:11",className:"space-y-3 max-h-[60vh] overflow-y-auto pr-1",children:[t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:832:13",children:[t.jsxs("label",{"code-path":"src/pages/HostMonitor.tsx:833:15",className:"text-[11px] text-[var(--dg-text-muted)] mb-1 block",children:["探针名称 ",t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:833:90",className:"text-red-400",children:"*"})]}),t.jsx("input",{"code-path":"src/pages/HostMonitor.tsx:834:15",className:"w-full h-8 bg-[var(--dg-bg-secondary)] border border-[var(--dg-border)] rounded px-2 text-xs text-[var(--dg-text-primary)]",value:a.name,onChange:s=>N({...a,name:s.target.value}),placeholder:"如:cex-agent 健康检查"})]}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:836:13",children:[t.jsx("label",{"code-path":"src/pages/HostMonitor.tsx:837:15",className:"text-[11px] text-[var(--dg-text-muted)] mb-1 block",children:"目标主机"}),t.jsx("input",{"code-path":"src/pages/HostMonitor.tsx:838:15",className:"w-full h-8 bg-[var(--dg-bg-secondary)] border border-[var(--dg-border)] rounded px-2 text-xs text-[var(--dg-text-primary)]",value:a.hostname,onChange:s=>N({...a,hostname:s.target.value})})]}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:840:13",children:[t.jsx("label",{"code-path":"src/pages/HostMonitor.tsx:841:15",className:"text-[11px] text-[var(--dg-text-muted)] mb-1 block",children:"探针类型"}),t.jsxs("select",{"code-path":"src/pages/HostMonitor.tsx:842:15",className:"w-full h-8 bg-[var(--dg-bg-secondary)] border border-[var(--dg-border)] rounded px-2 text-xs text-[var(--dg-text-primary)]",value:a.probe_type,onChange:s=>N({...a,probe_type:s.target.value}),children:[t.jsx("option",{"code-path":"src/pages/HostMonitor.tsx:843:17",value:"http_get",children:"HTTP GET"}),t.jsx("option",{"code-path":"src/pages/HostMonitor.tsx:844:17",value:"tcp_socket",children:"TCP Socket"}),t.jsx("option",{"code-path":"src/pages/HostMonitor.tsx:845:17",value:"exec_command",children:"Exec Command"})]})]}),a.probe_type==="http_get"&&t.jsxs(t.Fragment,{children:[t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:851:17",children:[t.jsxs("label",{"code-path":"src/pages/HostMonitor.tsx:851:22",className:"text-[11px] text-[var(--dg-text-muted)] mb-1 block",children:["HTTP URL ",t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:851:101",className:"text-red-400",children:"*"})]}),t.jsx("input",{"code-path":"src/pages/HostMonitor.tsx:852:19",className:"w-full h-8 bg-[var(--dg-bg-secondary)] border border-[var(--dg-border)] rounded px-2 text-xs text-[var(--dg-text-primary)]",value:a.http_url,onChange:s=>N({...a,http_url:s.target.value}),placeholder:"http://localhost:8080/health"})]}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:853:17",className:"grid grid-cols-2 gap-2",children:[t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:854:19",children:[t.jsx("label",{"code-path":"src/pages/HostMonitor.tsx:854:24",className:"text-[11px] text-[var(--dg-text-muted)] mb-1 block",children:"期望状态码"}),t.jsx("input",{"code-path":"src/pages/HostMonitor.tsx:855:21",type:"number",className:"w-full h-8 bg-[var(--dg-bg-secondary)] border border-[var(--dg-border)] rounded px-2 text-xs text-[var(--dg-text-primary)]",value:a.http_expect_code,onChange:s=>N({...a,http_expect_code:Number(s.target.value)})})]}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:856:19",children:[t.jsx("label",{"code-path":"src/pages/HostMonitor.tsx:856:24",className:"text-[11px] text-[var(--dg-text-muted)] mb-1 block",children:"期望响应内容(可选)"}),t.jsx("input",{"code-path":"src/pages/HostMonitor.tsx:857:21",className:"w-full h-8 bg-[var(--dg-bg-secondary)] border border-[var(--dg-border)] rounded px-2 text-xs text-[var(--dg-text-primary)]",value:a.http_expect_body,onChange:s=>N({...a,http_expect_body:s.target.value})})]})]})]}),a.probe_type==="tcp_socket"&&t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:863:15",className:"grid grid-cols-2 gap-2",children:[t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:864:17",children:[t.jsx("label",{"code-path":"src/pages/HostMonitor.tsx:864:22",className:"text-[11px] text-[var(--dg-text-muted)] mb-1 block",children:"TCP 目标地址"}),t.jsx("input",{"code-path":"src/pages/HostMonitor.tsx:865:19",className:"w-full h-8 bg-[var(--dg-bg-secondary)] border border-[var(--dg-border)] rounded px-2 text-xs text-[var(--dg-text-primary)]",value:a.tcp_host,onChange:s=>N({...a,tcp_host:s.target.value}),placeholder:"localhost"})]}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:866:19",children:[t.jsx("label",{"code-path":"src/pages/HostMonitor.tsx:866:24",className:"text-[11px] text-[var(--dg-text-muted)] mb-1 block",children:"TCP 端口"}),t.jsx("input",{"code-path":"src/pages/HostMonitor.tsx:867:19",type:"number",className:"w-full h-8 bg-[var(--dg-bg-secondary)] border border-[var(--dg-border)] rounded px-2 text-xs text-[var(--dg-text-primary)]",value:a.tcp_port,onChange:s=>N({...a,tcp_port:Number(s.target.value)})})]})]}),a.probe_type==="exec_command"&&t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:872:15",children:[t.jsxs("label",{"code-path":"src/pages/HostMonitor.tsx:872:20",className:"text-[11px] text-[var(--dg-text-muted)] mb-1 block",children:["执行命令 ",t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:872:95",className:"text-red-400",children:"*"})]}),t.jsx("input",{"code-path":"src/pages/HostMonitor.tsx:873:17",className:"w-full h-8 bg-[var(--dg-bg-secondary)] border border-[var(--dg-border)] rounded px-2 text-xs font-mono text-[var(--dg-text-primary)]",value:a.exec_command,onChange:s=>N({...a,exec_command:s.target.value}),placeholder:"pgrep -x mysqld"})]}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:876:13",className:"grid grid-cols-2 gap-2",children:[t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:877:15",children:[t.jsx("label",{"code-path":"src/pages/HostMonitor.tsx:877:20",className:"text-[11px] text-[var(--dg-text-muted)] mb-1 block",children:"超时(秒)"}),t.jsx("input",{"code-path":"src/pages/HostMonitor.tsx:878:17",type:"number",className:"w-full h-8 bg-[var(--dg-bg-secondary)] border border-[var(--dg-border)] rounded px-2 text-xs text-[var(--dg-text-primary)]",value:a.timeout,onChange:s=>N({...a,timeout:Number(s.target.value)})})]}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:879:15",children:[t.jsx("label",{"code-path":"src/pages/HostMonitor.tsx:879:20",className:"text-[11px] text-[var(--dg-text-muted)] mb-1 block",children:"间隔(秒)"}),t.jsx("input",{"code-path":"src/pages/HostMonitor.tsx:880:17",type:"number",className:"w-full h-8 bg-[var(--dg-bg-secondary)] border border-[var(--dg-border)] rounded px-2 text-xs text-[var(--dg-text-primary)]",value:a.interval,onChange:s=>N({...a,interval:Number(s.target.value)})})]})]}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:883:13",children:[t.jsx("label",{"code-path":"src/pages/HostMonitor.tsx:883:18",className:"text-[11px] text-[var(--dg-text-muted)] mb-1 block",children:"描述"}),t.jsx("input",{"code-path":"src/pages/HostMonitor.tsx:884:15",className:"w-full h-8 bg-[var(--dg-bg-secondary)] border border-[var(--dg-border)] rounded px-2 text-xs text-[var(--dg-text-primary)]",value:a.description,onChange:s=>N({...a,description:s.target.value})})]})]}),t.jsxs(Jt,{"code-path":"src/pages/HostMonitor.tsx:886:11",children:[t.jsx(A,{"code-path":"src/pages/HostMonitor.tsx:887:13",variant:"outline",size:"sm",className:"h-7 text-[11px]",onClick:()=>q(!1),children:"取消"}),t.jsx(A,{"code-path":"src/pages/HostMonitor.tsx:888:13",size:"sm",className:"h-7 text-[11px] bg-blue-600 hover:bg-blue-500",onClick:async()=>{if(!(!a.name||!a.hostname))try{U?await G.updateHealthProbe(U.id,a):await G.createHealthProbe(a),q(!1),V()}catch{alert("保存失败")}},disabled:!a.name||!a.hostname,children:U?"保存":"创建"})]})]})}),t.jsx(Kt,{"code-path":"src/pages/HostMonitor.tsx:907:7",open:ds,onOpenChange:st,children:t.jsxs(qt,{"code-path":"src/pages/HostMonitor.tsx:908:9",showOverlay:!1,className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] max-w-md",children:[t.jsxs(Ut,{"code-path":"src/pages/HostMonitor.tsx:909:11",children:[t.jsx(Vt,{"code-path":"src/pages/HostMonitor.tsx:910:13",className:"text-[var(--dg-text-primary)]",children:"端口监控策略"}),t.jsx(Xt,{"code-path":"src/pages/HostMonitor.tsx:911:13",className:"text-[var(--dg-text-secondary)]",children:"配置 Agent 端口上报过滤规则"})]}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:913:11",className:"space-y-4",children:[t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:915:13",children:[t.jsx("label",{"code-path":"src/pages/HostMonitor.tsx:916:15",className:"text-[11px] text-[var(--dg-text-muted)] mb-1.5 block",children:"过滤模式"}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:917:15",className:"flex gap-2",children:[t.jsx("button",{"code-path":"src/pages/HostMonitor.tsx:918:17",className:`flex-1 h-9 rounded text-xs font-medium border transition-colors ${k==="whitelist"?"bg-blue-500/20 border-blue-500 text-blue-400":"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] text-[var(--dg-text-muted)]"}`,onClick:()=>xt("whitelist"),children:"白名单 ─ 全量上报"}),t.jsx("button",{"code-path":"src/pages/HostMonitor.tsx:924:17",className:`flex-1 h-9 rounded text-xs font-medium border transition-colors ${k==="blacklist"?"bg-amber-500/20 border-amber-500 text-amber-400":"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] text-[var(--dg-text-muted)]"}`,onClick:()=>xt("blacklist"),children:"黑名单 ─ 仅上报选中"})]}),t.jsx("p",{"code-path":"src/pages/HostMonitor.tsx:931:15",className:"text-[10px] text-[var(--dg-text-muted)] mt-1.5 leading-relaxed",children:k==="whitelist"?"所有发现的端口都上报,任意端口变化都会触发告警 + 恢复通知。":"仅上报选中端口的变化,其余端口变化静默忽略(不告警)。系统进程端口(sshd/rpcbind/systemd等)永远忽略。"})]}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:939:13",children:[t.jsxs("label",{"code-path":"src/pages/HostMonitor.tsx:940:15",className:"text-[11px] text-[var(--dg-text-muted)] mb-1.5 block",children:["端口列表 ",t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:941:22",className:"text-[var(--dg-text-muted)]",children:"(逗号分隔,如: 80,443,3306,6379)"}),k==="whitelist"&&t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:942:52",className:"text-blue-400 ml-1",children:"— 白名单模式无需配置"})]}),t.jsx("textarea",{"code-path":"src/pages/HostMonitor.tsx:944:15",className:`w-full h-20 bg-[var(--dg-bg-secondary)] border border-[var(--dg-border)] rounded px-2 py-1.5 text-xs font-mono resize-none ${k==="whitelist"?"text-[var(--dg-text-muted)] opacity-50 cursor-not-allowed":"text-[var(--dg-text-primary)]"}`,value:X.join(","),onChange:s=>{if(k==="whitelist")return;const c=s.target.value.split(",").map(l=>parseInt(l.trim())).filter(l=>!isNaN(l)&&l>0&&l<=65535);Ct(c)},placeholder:k==="whitelist"?"白名单模式下所有端口自动上报":"80,443,3306,6379",readOnly:k==="whitelist"}),t.jsxs("p",{"code-path":"src/pages/HostMonitor.tsx:958:15",className:"text-[10px] text-[var(--dg-text-muted)] mt-1",children:["已输入 ",X.length," 个端口"]})]}),t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:964:13",className:"bg-amber-500/5 border border-amber-500/20 rounded p-2.5",children:t.jsxs("p",{"code-path":"src/pages/HostMonitor.tsx:965:15",className:"text-[10px] text-amber-300/80 leading-relaxed",children:["⚠️ 无论选择哪种模式,以下系统进程端口",t.jsx("b",{"code-path":"src/pages/HostMonitor.tsx:966:37",children:"永远不上报"}),":sshd、rpcbind、master、systemd、dbus-daemon、rsyslogd 等。Agent 采集时自动跳过。"]})})]}),t.jsxs(Jt,{"code-path":"src/pages/HostMonitor.tsx:970:11",children:[t.jsx(A,{"code-path":"src/pages/HostMonitor.tsx:971:13",variant:"outline",size:"sm",className:"h-7 text-[11px]",onClick:()=>st(!1),children:"取消"}),t.jsx(A,{"code-path":"src/pages/HostMonitor.tsx:972:13",size:"sm",className:"h-7 text-[11px] bg-blue-600 hover:bg-blue-500",onClick:is,disabled:St,children:St?"保存中…":"保存策略"})]})]})})]})}function H({title:r,value:T,icon:O,data:F,color:d,unit:j,domain:y,aggType:w}){const P=F.map(v=>({...v,value:v[w]}));return t.jsx(C,{"code-path":"src/pages/HostMonitor.tsx:992:5",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:t.jsxs(S,{"code-path":"src/pages/HostMonitor.tsx:993:7",className:"p-3",children:[t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:994:9",className:"flex items-center justify-between mb-1",children:t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:995:11",className:"flex items-center gap-1.5",children:[O,t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:995:60",className:"text-xs text-[var(--dg-text-primary)] font-medium truncate",children:r})]})}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:997:9",className:"mb-2",children:[t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:998:11",className:"text-xl font-bold text-[var(--dg-text-primary)] tabular-nums",children:T}),j&&t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:999:20",className:"text-xs text-[var(--dg-text-muted)] ml-1",children:j})]}),t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:1001:9",className:"h-48",children:P.length===0?t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:1003:13",className:"h-full flex items-center justify-center text-xs text-[var(--dg-text-muted)] border border-dashed border-[var(--dg-border)] rounded-md",children:"暂无数据"}):t.jsx(Mt,{"code-path":"src/pages/HostMonitor.tsx:1005:13",width:"100%",height:"100%",children:t.jsxs(Nt,{"code-path":"src/pages/HostMonitor.tsx:1006:15",data:P,margin:{top:2,right:2,bottom:0,left:-10},children:[t.jsx("defs",{"code-path":"src/pages/HostMonitor.tsx:1007:17",children:t.jsxs("linearGradient",{"code-path":"src/pages/HostMonitor.tsx:1008:19",id:`grad-${r}`,x1:"0",y1:"0",x2:"0",y2:"1",children:[t.jsx("stop",{"code-path":"src/pages/HostMonitor.tsx:1009:21",offset:"5%",stopColor:d,stopOpacity:.3}),t.jsx("stop",{"code-path":"src/pages/HostMonitor.tsx:1010:21",offset:"95%",stopColor:d,stopOpacity:0})]})}),t.jsx(Ht,{"code-path":"src/pages/HostMonitor.tsx:1013:17",strokeDasharray:"3 3",stroke:"#1e293b",strokeOpacity:.5}),t.jsx(jt,{"code-path":"src/pages/HostMonitor.tsx:1014:17",dataKey:"time",hide:!0}),t.jsx(vt,{"code-path":"src/pages/HostMonitor.tsx:1015:17",hide:!0,domain:y[1]==="auto"?[0,v=>v*1.1]:y}),t.jsx(ft,{"code-path":"src/pages/HostMonitor.tsx:1016:17",contentStyle:{backgroundColor:"#0f172a",border:"1px solid #1e293b",borderRadius:"4px",color:"#f8fafc",fontSize:"11px",padding:"4px 8px"},formatter:v=>[`${v.toFixed(2)} ${j}`,r.replace(/\(.+\)/,"")],labelFormatter:v=>`时间: ${v}`}),t.jsx(it,{"code-path":"src/pages/HostMonitor.tsx:1019:17",type:"monotone",dataKey:"value",stroke:d,strokeWidth:1.5,fill:`url(#grad-${r})`}),t.jsx(as,{"code-path":"src/pages/HostMonitor.tsx:1020:17",dataKey:"time",height:24,stroke:"#334155",fill:"#0f172a",startIndex:Math.max(0,P.length-Math.min(20,P.length))})]})})})]})})}function Ss({title:r,currentRx:T,currentTx:O,rxData:F,txData:d,aggType:j,unit:y}){const w=F.map((f,R)=>({time:f.time,timestamp:f.timestamp,rx:f[j]??0,tx:d[R]?.[j]??0})),P=`grad-rx-${r.replace(/\s/g,"")}`,v=`grad-tx-${r.replace(/\s/g,"")}`;return t.jsx(C,{"code-path":"src/pages/HostMonitor.tsx:1049:5",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:t.jsxs(S,{"code-path":"src/pages/HostMonitor.tsx:1050:7",className:"p-3",children:[t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:1051:9",className:"flex items-center justify-between mb-1",children:[t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:1052:11",className:"flex items-center gap-1.5",children:[t.jsx(dt,{"code-path":"src/pages/HostMonitor.tsx:1053:13",className:"h-4 w-4 text-blue-400"}),t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:1054:13",className:"text-xs text-[var(--dg-text-primary)] font-medium",children:r})]}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:1056:11",className:"flex items-center gap-3 text-xs",children:[t.jsxs("span",{"code-path":"src/pages/HostMonitor.tsx:1057:13",children:[t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:1057:19",className:"inline-block w-2.5 h-2.5 rounded-sm bg-blue-400 mr-1 align-middle"}),"接收 ",t.jsx("b",{"code-path":"src/pages/HostMonitor.tsx:1057:108",className:"text-blue-300",children:T})]}),t.jsxs("span",{"code-path":"src/pages/HostMonitor.tsx:1058:13",children:[t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:1058:19",className:"inline-block w-2.5 h-2.5 rounded-sm bg-emerald-400 mr-1 align-middle"}),"发送 ",t.jsx("b",{"code-path":"src/pages/HostMonitor.tsx:1058:111",className:"text-emerald-300",children:O})]})]})]}),t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:1061:9",className:"h-56",children:w.length===0?t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:1063:13",className:"h-full flex items-center justify-center text-xs text-[var(--dg-text-muted)] border border-dashed border-[var(--dg-border)] rounded-md",children:"暂无数据"}):t.jsx(Mt,{"code-path":"src/pages/HostMonitor.tsx:1065:13",width:"100%",height:"100%",children:t.jsxs(Nt,{"code-path":"src/pages/HostMonitor.tsx:1066:15",data:w,margin:{top:2,right:2,bottom:0,left:-10},children:[t.jsxs("defs",{"code-path":"src/pages/HostMonitor.tsx:1067:17",children:[t.jsxs("linearGradient",{"code-path":"src/pages/HostMonitor.tsx:1068:19",id:P,x1:"0",y1:"0",x2:"0",y2:"1",children:[t.jsx("stop",{"code-path":"src/pages/HostMonitor.tsx:1069:21",offset:"5%",stopColor:"#3b82f6",stopOpacity:.3}),t.jsx("stop",{"code-path":"src/pages/HostMonitor.tsx:1070:21",offset:"95%",stopColor:"#3b82f6",stopOpacity:0})]}),t.jsxs("linearGradient",{"code-path":"src/pages/HostMonitor.tsx:1072:19",id:v,x1:"0",y1:"0",x2:"0",y2:"1",children:[t.jsx("stop",{"code-path":"src/pages/HostMonitor.tsx:1073:21",offset:"5%",stopColor:"#10b981",stopOpacity:.3}),t.jsx("stop",{"code-path":"src/pages/HostMonitor.tsx:1074:21",offset:"95%",stopColor:"#10b981",stopOpacity:0})]})]}),t.jsx(Ht,{"code-path":"src/pages/HostMonitor.tsx:1077:17",strokeDasharray:"3 3",stroke:"#1e293b",strokeOpacity:.5}),t.jsx(jt,{"code-path":"src/pages/HostMonitor.tsx:1078:17",dataKey:"time",hide:!0}),t.jsx(vt,{"code-path":"src/pages/HostMonitor.tsx:1079:17",hide:!0,domain:[0,"auto"]}),t.jsx(ft,{"code-path":"src/pages/HostMonitor.tsx:1080:17",contentStyle:{backgroundColor:"#0f172a",border:"1px solid #1e293b",borderRadius:"4px",color:"#f8fafc",fontSize:"11px",padding:"4px 8px"},formatter:(f,R)=>[`${f.toFixed(2)} ${y}`,R==="rx"?"接收":"发送"],labelFormatter:f=>`时间: ${f}`}),t.jsx(it,{"code-path":"src/pages/HostMonitor.tsx:1083:17",type:"monotone",dataKey:"rx",stroke:"#3b82f6",strokeWidth:1.5,fill:`url(#${P})`,name:"rx"}),t.jsx(it,{"code-path":"src/pages/HostMonitor.tsx:1084:17",type:"monotone",dataKey:"tx",stroke:"#10b981",strokeWidth:1.5,fill:`url(#${v})`,name:"tx"}),t.jsx(as,{"code-path":"src/pages/HostMonitor.tsx:1085:17",dataKey:"time",height:24,stroke:"#334155",fill:"#0f172a",startIndex:Math.max(0,w.length-Math.min(20,w.length))})]})})})]})})}export{Us as HostMonitor}; diff --git a/backend/static/assets/HostMonitor-C63FMElJ.js b/backend/static/assets/HostMonitor-C63FMElJ.js deleted file mode 100644 index a227469..0000000 --- a/backend/static/assets/HostMonitor-C63FMElJ.js +++ /dev/null @@ -1 +0,0 @@ -import{g as os,ap as gs,r as n,j as t,L as ms,q as Y,B as A,aq as us,N as dt,w as bs,o as Ms,x as at,A as Wt,a3 as Hs,D as Kt,b as qt,c as Ut,d as Vt,e as Xt,f as Jt}from"./index-DfyorCky.js";import{a as R}from"./agent-DqqIRCQX.js";import{C,a as S}from"./card-C55cvSHg.js";import{S as Qt,a as Yt,b as Zt,c as ts,d as rt}from"./select-D5qUzdAs.js";import{T as js,a as vs,b as fs,c as G}from"./tabs-CIh_yD4s.js";import{B as Z}from"./badge-xNW8x0G1.js";import{H as W}from"./hard-drive-BbPmnARR.js";import{D as mt}from"./disc-EsE6x5Oh.js";import{C as ut}from"./circle-x-DK79Dhg2.js";import{R as Mt,C as Ht,X as jt,Y as vt,T as ft,q as as}from"./generateCategoricalChart-6v9BPbG2.js";import{A as Nt,a as nt}from"./AreaChart-B2zlWfdX.js";import{R as ss}from"./refresh-cw-DUB_tAG-.js";import{P as Ns}from"./plus-CUG-9kpu.js";import{S as _s}from"./square-pen-BxUFAe0F.js";import{T as ys}from"./trash-2-Dx32pOzT.js";import"./index-CWVNW_qu.js";const ws=[["path",{d:"M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5",key:"mvr1a0"}],["path",{d:"M3.22 13H9.5l.5-1 2 4.5 2-7 1.5 3.5h5.27",key:"auskq0"}]],ks=os("heart-pulse",ws);const Cs=[["path",{d:"M3 5h.01",key:"18ugdj"}],["path",{d:"M3 12h.01",key:"nlz23k"}],["path",{d:"M3 19h.01",key:"noohij"}],["path",{d:"M8 5h13",key:"1pao27"}],["path",{d:"M8 12h13",key:"1za7za"}],["path",{d:"M8 19h13",key:"m83p4d"}]],es=os("list",Cs),bt=[{label:"1小时",hours:1,window:60,buckets:60},{label:"6小时",hours:6,window:300,buckets:72},{label:"12小时",hours:12,window:600,buckets:72},{label:"1天",hours:24,window:1800,buckets:96},{label:"3天",hours:72,window:3600,buckets:72},{label:"7天",hours:168,window:10800,buckets:56},{label:"14天",hours:336,window:21600,buckets:48}];function u(r,T,O){if(!r||r.length===0)return[];const F=Math.max(1,Math.ceil(r.length/O)),d=[];for(let j=0;jit+K,0)/y.length,f=Math.max(...y),z=Math.min(...y),i=w[Math.floor(w.length/2)]||0;d.push({time:new Date(i*1e3).toLocaleTimeString("zh-CN",{hour:"2-digit",minute:"2-digit"}),timestamp:i,avg:Number(v.toFixed(2)),max:Number(f.toFixed(2)),min:Number(z.toFixed(2)),count:y.length})}return d.slice(-O)}function M(r){if(!r)return{};if(typeof r=="object")return r;try{return JSON.parse(r)}catch{return{}}}function ct(r){return r>=1024*1024*1024?`${(r/1024/1024/1024).toFixed(1)} GB/s`:r>=1024*1024?`${(r/1024/1024).toFixed(1)} MB/s`:r>=1024?`${(r/1024).toFixed(1)} KB/s`:`${r.toFixed(1)} B/s`}function qs(){const[r]=gs(),T=r.get("host")||"",[O,F]=n.useState([]),[d,j]=n.useState(T),[y,w]=n.useState(!0),[P,v]=n.useState("basic"),[f,z]=n.useState(1),[i,it]=n.useState("avg"),[K,_t]=n.useState([]),[o,yt]=n.useState(null),[b,rs]=n.useState(null),[wt,tt]=n.useState([]),[cs,q]=n.useState(!1),[U,kt]=n.useState(null),[a,N]=n.useState({name:"",hostname:"",probe_type:"http_get",http_url:"",http_method:"GET",http_expect_code:200,http_expect_body:"",tcp_host:"",tcp_port:3306,exec_command:"",timeout:10,interval:60,description:""}),V=n.useCallback(()=>{d&&R.getHealthProbes({hostname:d}).then(s=>{Array.isArray(s)?tt(s):s?.list?tt(s.list):tt([])}).catch(()=>tt([]))},[d]),[k,xt]=n.useState("whitelist"),[X,Ct]=n.useState([]),[ds,st]=n.useState(!1),[St,Tt]=n.useState(!1),pt=n.useCallback(()=>{d&&R.getPortPolicy(d).then(s=>{s?.data&&(xt(s.data.port_filter_mode||"blacklist"),Ct(s.data.port_whitelist||[]))}).catch(()=>{})},[d]);n.useEffect(()=>{pt()},[pt]);const ns=async()=>{if(d){Tt(!0);try{await R.savePortPolicy(d,{port_filter_mode:k,port_whitelist:X}),st(!1)}catch{}finally{Tt(!1)}}};n.useEffect(()=>{V()},[V]);const h=bt.find(s=>s.hours===f)||bt[0];n.useEffect(()=>{R.getLatest().then(s=>{const e=Array.isArray(s)?s:s?.data||s?.list||[];if(F(e),e.length>0&&!d){const l=T?e.find(E=>E.hostname===T):null;j(l?.hostname||e[0]?.hostname||"")}const c=e.find(l=>l.hostname===(d||T));c&&(yt(c),rs(c))}).catch(()=>{}).finally(()=>w(!1))},[d]),n.useEffect(()=>{d&&R.getHistory(d,f).then(s=>{const e=Array.isArray(s)?s:s?.data||s?.list||[];if(_t(e),e.length>0){const c=e[e.length-1];yt(l=>({...l,...c}))}}).catch(()=>_t([])).finally(()=>w(!1))},[d,f]);const g=n.useMemo(()=>{const s=[],e=[],c=[],l=[],E=[],et=[],B=[],$t=[],At=[],Ft=[],It=[],Dt=[],Et=[],Bt=[],Ot=[],Rt=[],zt=[],Gt=[],Lt=[],ht=[],m=[];for(const x of K){const is=x.report_time?new Date(x.report_time).getTime()/1e3:x.created_at?new Date(x.created_at).getTime()/1e3:0;m.push(is),s.push(x.cpu_usage||0),Bt.push(x.cpu_iowait||0),e.push(x.mem_usage||0),Ot.push(x.mem_available||0),c.push(x.load1||0),l.push(x.disk_usage||0);const ot=M(x.disk_info);if(Array.isArray(ot)&&ot.length>0){const ls=ot.find(hs=>hs.mount==="/")||ot[0];ht.push(ls?.inode_usage_pct||0)}else ht.push(0);const $=M(x.net_info);E.push($.tcp_established||0),et.push($.tcp_time_wait||0),B.push($.tcp_close_wait||0),zt.push(($.tcp_established||0)+($.tcp_time_wait||0)+($.tcp_close_wait||0)),$t.push($.net_rx_bps||0),At.push($.net_tx_bps||0),Gt.push($.net_rx_errors||0),Lt.push($.net_tx_errors||0);const gt=M(x.disk_io_info);Ft.push(gt.read_bps||0),It.push(gt.write_bps||0),Rt.push(gt.util||0);const xs=M(x.swap_info);Dt.push(xs?.usage_percent||0);const ps=M(x.fd_info);Et.push(ps?.usage_pct||0)}return{cpu:u(s,m,h.buckets),mem:u(e,m,h.buckets),load1:u(c,m,h.buckets),disk:u(l,m,h.buckets),tcpEst:u(E,m,h.buckets),tcpTW:u(et,m,h.buckets),tcpCW:u(B,m,h.buckets),rx:u($t.map(x=>x/1024),m,h.buckets),tx:u(At.map(x=>x/1024),m,h.buckets),ioRead:u(Ft.map(x=>x/1024),m,h.buckets),ioWrite:u(It.map(x=>x/1024),m,h.buckets),swap:u(Dt,m,h.buckets),fd:u(Et,m,h.buckets),iowait:u(Bt,m,h.buckets),memAvail:u(Ot,m,h.buckets),ioUtil:u(Rt,m,h.buckets),connTotal:u(zt,m,h.buckets),rxErr:u(Gt,m,h.buckets),txErr:u(Lt,m,h.buckets),inode:u(ht,m,h.buckets)}},[K,h]),p=M(o?.net_info),J=Array.isArray(o?.port_info)?o.port_info:Array.isArray(M(o?.port_info))?M(o?.port_info):[],L=M(o?.disk_io_info),Pt=M(o?.swap_info),lt=Array.isArray(M(o?.process_top_info))?M(o?.process_top_info):[],I=M(o?.fd_info),_=M(o?.cs_info),Q=M(o?.heartbeat_info),D=(s,e="--")=>o?s==="cpu"?o.cpu_usage!=null?`${o.cpu_usage.toFixed(1)}%`:e:s==="mem"?o.mem_usage!=null?`${o.mem_usage.toFixed(1)}%`:e:s==="disk"?o.disk_usage!=null?`${o.disk_usage.toFixed(1)}%`:e:s==="load1"?o.load1!=null?String(o.load1):e:s==="tcp"?p.tcp_established!=null?String(p.tcp_established):e:s==="tw"?p.tcp_time_wait!=null?String(p.tcp_time_wait):e:s==="rx"?p.net_rx_bps!=null?`${(p.net_rx_bps/1024).toFixed(1)} KB/s`:e:s==="tx"?p.net_tx_bps!=null?`${(p.net_tx_bps/1024).toFixed(1)} KB/s`:e:s==="ioR"?L.read_bps!=null?`${ct(L.read_bps)}`:e:s==="ioW"?L.write_bps!=null?`${ct(L.write_bps)}`:e:s==="swap"?Pt?.usage_percent!=null?`${Pt.usage_percent.toFixed(1)}%`:e:s==="fd"&&I?.usage_pct!=null?`${I.usage_pct.toFixed(1)}%`:e:e;return y&&!K.length?t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:278:12",className:"flex items-center justify-center h-64",children:t.jsx(ms,{"code-path":"src/pages/HostMonitor.tsx:278:67",className:"h-8 w-8 animate-spin text-slate-500"})}):t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:282:5",className:"space-y-3",children:[t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:284:7",className:"flex items-center justify-between flex-wrap gap-2",children:[t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:285:9",className:"flex items-center gap-2",children:[t.jsx(Y,{"code-path":"src/pages/HostMonitor.tsx:286:11",className:"h-4 w-4 text-blue-400"}),t.jsxs(Qt,{"code-path":"src/pages/HostMonitor.tsx:287:11",value:d,onValueChange:j,children:[t.jsx(Yt,{"code-path":"src/pages/HostMonitor.tsx:288:13",className:"w-52 h-8 text-xs bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:t.jsx(Zt,{"code-path":"src/pages/HostMonitor.tsx:289:15",placeholder:"选择主机..."})}),t.jsx(ts,{"code-path":"src/pages/HostMonitor.tsx:291:13",className:"bg-slate-800 border-slate-700 text-slate-200",children:O.map(s=>t.jsx(rt,{"code-path":"src/pages/HostMonitor.tsx:293:17",value:s.hostname,children:s.hostname},s.hostname))})]}),b&&t.jsxs("span",{"code-path":"src/pages/HostMonitor.tsx:298:13",className:"text-xs text-[var(--dg-text-muted)] ml-2",children:[b.os||"",b.cpu_cores?` | ${b.cpu_cores} 核`:"",b.mem_total?` | ${b.mem_total.toFixed(0)}GB`:""]})]}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:303:9",className:"flex items-center gap-2",children:[t.jsxs(Qt,{"code-path":"src/pages/HostMonitor.tsx:304:11",value:i,onValueChange:s=>it(s),children:[t.jsx(Yt,{"code-path":"src/pages/HostMonitor.tsx:305:13",className:"w-24 h-7 text-xs bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:t.jsx(Zt,{"code-path":"src/pages/HostMonitor.tsx:306:15"})}),t.jsxs(ts,{"code-path":"src/pages/HostMonitor.tsx:308:13",className:"bg-slate-800 border-slate-700 text-slate-200",children:[t.jsx(rt,{"code-path":"src/pages/HostMonitor.tsx:309:15",value:"avg",children:"平均值"}),t.jsx(rt,{"code-path":"src/pages/HostMonitor.tsx:310:15",value:"max",children:"最大值"}),t.jsx(rt,{"code-path":"src/pages/HostMonitor.tsx:311:15",value:"min",children:"最小值"})]})]}),t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:314:11",className:"flex items-center gap-1",children:bt.map(s=>t.jsx(A,{"code-path":"src/pages/HostMonitor.tsx:316:15",variant:f===s.hours?"default":"outline",size:"sm",className:"h-7 text-xs px-2.5",onClick:()=>z(s.hours),children:s.label},s.hours))})]})]}),t.jsxs(js,{"code-path":"src/pages/HostMonitor.tsx:324:7",value:P,onValueChange:v,children:[t.jsx(vs,{"code-path":"src/pages/HostMonitor.tsx:325:9",className:"h-8 bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] gap-0 overflow-x-auto",children:[{id:"basic",label:"基础监控",icon:t.jsx(us,{"code-path":"src/pages/HostMonitor.tsx:327:49",className:"w-3 h-3"})},{id:"disk",label:"磁盘监控",icon:t.jsx(W,{"code-path":"src/pages/HostMonitor.tsx:328:48",className:"w-3 h-3"})},{id:"network",label:"网络监控",icon:t.jsx(dt,{"code-path":"src/pages/HostMonitor.tsx:329:51",className:"w-3 h-3"})},{id:"ports",label:"端口监控",icon:t.jsx(Y,{"code-path":"src/pages/HostMonitor.tsx:330:49",className:"w-3 h-3"})},{id:"process",label:"进程监控",icon:t.jsx(es,{"code-path":"src/pages/HostMonitor.tsx:331:51",className:"w-3 h-3"})},{id:"system",label:"系统信息",icon:t.jsx(bs,{"code-path":"src/pages/HostMonitor.tsx:332:50",className:"w-3 h-3"})},{id:"health_probes",label:"健康探针",icon:t.jsx(ks,{"code-path":"src/pages/HostMonitor.tsx:333:57",className:"w-3 h-3"})}].map(s=>t.jsxs(fs,{"code-path":"src/pages/HostMonitor.tsx:335:13",value:s.id,className:"text-[11px] h-7 gap-1 data-[state=active]:bg-[var(--dg-bg-primary)]",children:[s.icon,s.label]},s.id))}),t.jsxs(G,{"code-path":"src/pages/HostMonitor.tsx:342:9",value:"basic",className:"mt-3 grid grid-cols-1 md:grid-cols-3 gap-3",children:[t.jsx(H,{"code-path":"src/pages/HostMonitor.tsx:343:11",title:"CPU 使用率(%)",value:D("cpu"),icon:t.jsx(Ms,{"code-path":"src/pages/HostMonitor.tsx:343:79",className:"h-4 w-4 text-blue-400"}),data:g.cpu,color:"#3b82f6",unit:"%",domain:[0,100],aggType:i}),t.jsx(H,{"code-path":"src/pages/HostMonitor.tsx:345:11",title:"CPU IO等待(%)",value:o?.cpu_iowait!=null?`${o.cpu_iowait.toFixed(1)}%`:"--",icon:t.jsx(at,{"code-path":"src/pages/HostMonitor.tsx:345:133",className:"h-4 w-4 text-orange-400"}),data:g.iowait,color:"#f97316",unit:"%",domain:[0,100],aggType:i}),t.jsx(H,{"code-path":"src/pages/HostMonitor.tsx:347:11",title:"内存使用率(%)",value:D("mem"),icon:t.jsx(Y,{"code-path":"src/pages/HostMonitor.tsx:347:77",className:"h-4 w-4 text-emerald-400"}),data:g.mem,color:"#10b981",unit:"%",domain:[0,100],aggType:i}),t.jsx(H,{"code-path":"src/pages/HostMonitor.tsx:349:11",title:"可用内存(GB)",value:o?.mem_available!=null?`${o.mem_available.toFixed(1)}GB`:"--",icon:t.jsx(Y,{"code-path":"src/pages/HostMonitor.tsx:349:137",className:"h-4 w-4 text-emerald-400"}),data:g.memAvail,color:"#34d399",unit:"GB",domain:[0,"auto"],aggType:i}),t.jsx(H,{"code-path":"src/pages/HostMonitor.tsx:351:11",title:"Swap 使用率(%)",value:D("swap"),icon:t.jsx(W,{"code-path":"src/pages/HostMonitor.tsx:351:81",className:"h-4 w-4 text-red-400"}),data:g.swap,color:"#ef4444",unit:"%",domain:[0,100],aggType:i}),t.jsx(H,{"code-path":"src/pages/HostMonitor.tsx:353:11",title:"系统负载(1m)",value:D("load1"),icon:t.jsx(Wt,{"code-path":"src/pages/HostMonitor.tsx:353:79",className:"h-4 w-4 text-purple-400"}),data:g.load1,color:"#8b5cf6",unit:"",domain:[0,"auto"],aggType:i})]}),t.jsx(G,{"code-path":"src/pages/HostMonitor.tsx:358:9",value:"disk",className:"mt-3 space-y-3",children:t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:359:11",className:"grid grid-cols-1 md:grid-cols-3 gap-3",children:[t.jsx(H,{"code-path":"src/pages/HostMonitor.tsx:360:13",title:"磁盘使用率(%)",value:D("disk"),icon:t.jsx(W,{"code-path":"src/pages/HostMonitor.tsx:360:80",className:"h-4 w-4 text-orange-400"}),data:g.disk,color:"#f97316",unit:"%",domain:[0,100],aggType:i}),t.jsx(H,{"code-path":"src/pages/HostMonitor.tsx:362:13",title:"Inode 使用率(%)",value:(()=>{const s=Array.isArray(M(o?.disk_info))?M(o?.disk_info):[],e=s.find(c=>c.mount==="/")||s[0];return e?.inode_usage_pct!=null?`${e.inode_usage_pct.toFixed(1)}%`:"--"})(),icon:t.jsx(W,{"code-path":"src/pages/HostMonitor.tsx:366:25",className:"h-4 w-4 text-purple-400"}),data:g.inode,color:"#8b5cf6",unit:"%",domain:[0,100],aggType:i}),t.jsx(H,{"code-path":"src/pages/HostMonitor.tsx:368:13",title:"磁盘读取(KB/s)",value:D("ioR"),icon:t.jsx(mt,{"code-path":"src/pages/HostMonitor.tsx:368:81",className:"h-4 w-4 text-blue-400"}),data:g.ioRead,color:"#3b82f6",unit:"KB/s",domain:[0,"auto"],aggType:i}),t.jsx(H,{"code-path":"src/pages/HostMonitor.tsx:370:13",title:"磁盘写入(KB/s)",value:D("ioW"),icon:t.jsx(mt,{"code-path":"src/pages/HostMonitor.tsx:370:81",className:"h-4 w-4 text-emerald-400"}),data:g.ioWrite,color:"#10b981",unit:"KB/s",domain:[0,"auto"],aggType:i}),t.jsx(H,{"code-path":"src/pages/HostMonitor.tsx:372:13",title:"磁盘IO繁忙度(%)",value:L?.util!=null?`${L.util.toFixed(1)}%`:"--",icon:t.jsx(mt,{"code-path":"src/pages/HostMonitor.tsx:372:130",className:"h-4 w-4 text-red-400"}),data:g.ioUtil,color:"#ef4444",unit:"%",domain:[0,100],aggType:i})]})}),t.jsxs(G,{"code-path":"src/pages/HostMonitor.tsx:378:9",value:"network",className:"mt-3 space-y-3",children:[t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:379:11",className:"grid grid-cols-1 md:grid-cols-4 gap-3",children:[t.jsx(H,{"code-path":"src/pages/HostMonitor.tsx:380:13",title:"TCP EST",value:D("tcp"),icon:t.jsx(dt,{"code-path":"src/pages/HostMonitor.tsx:380:78",className:"h-4 w-4 text-purple-400"}),data:g.tcpEst,color:"#8b5cf6",unit:"个",domain:[0,"auto"],aggType:i}),t.jsx(H,{"code-path":"src/pages/HostMonitor.tsx:382:13",title:"TCP TIME_WAIT",value:D("tw"),icon:t.jsx(at,{"code-path":"src/pages/HostMonitor.tsx:382:83",className:"h-4 w-4 text-amber-400"}),data:g.tcpTW,color:"#f59e0b",unit:"个",domain:[0,"auto"],aggType:i}),t.jsx(H,{"code-path":"src/pages/HostMonitor.tsx:384:13",title:"TCP CLOSE_WAIT",value:p?.tcp_close_wait!=null?String(p.tcp_close_wait):"--",icon:t.jsx(at,{"code-path":"src/pages/HostMonitor.tsx:384:139",className:"h-4 w-4 text-red-400"}),data:g.tcpCW,color:"#ef4444",unit:"个",domain:[0,"auto"],aggType:i}),t.jsx(H,{"code-path":"src/pages/HostMonitor.tsx:386:13",title:"TCP 总连接",value:p?String((p.tcp_established||0)+(p.tcp_time_wait||0)+(p.tcp_close_wait||0)):"--",icon:t.jsx(dt,{"code-path":"src/pages/HostMonitor.tsx:386:169",className:"h-4 w-4 text-cyan-400"}),data:g.connTotal,color:"#22d3ee",unit:"个",domain:[0,"auto"],aggType:i})]}),t.jsx(Ss,{"code-path":"src/pages/HostMonitor.tsx:390:11",title:"网卡带宽吞吐",currentRx:p?.net_rx_bps!=null?ct(p.net_rx_bps):"--",currentTx:p?.net_tx_bps!=null?ct(p.net_tx_bps):"--",rxData:g.rx,txData:g.tx,aggType:i,unit:"KB/s"}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:397:11",className:"grid grid-cols-1 md:grid-cols-2 gap-3 mt-3",children:[t.jsx(H,{"code-path":"src/pages/HostMonitor.tsx:398:13",title:"网卡接收错误",value:p?.net_rx_errors!=null?String(p.net_rx_errors):"--",icon:t.jsx(ut,{"code-path":"src/pages/HostMonitor.tsx:398:129",className:"h-4 w-4 text-red-400"}),data:g.rxErr,color:"#ef4444",unit:"个",domain:[0,"auto"],aggType:i}),t.jsx(H,{"code-path":"src/pages/HostMonitor.tsx:400:13",title:"网卡发送错误",value:p?.net_tx_errors!=null?String(p.net_tx_errors):"--",icon:t.jsx(ut,{"code-path":"src/pages/HostMonitor.tsx:400:129",className:"h-4 w-4 text-orange-400"}),data:g.txErr,color:"#f97316",unit:"个",domain:[0,"auto"],aggType:i})]})]}),t.jsx(G,{"code-path":"src/pages/HostMonitor.tsx:406:9",value:"ports",className:"mt-3 space-y-3",children:t.jsx(C,{"code-path":"src/pages/HostMonitor.tsx:407:11",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:t.jsxs(S,{"code-path":"src/pages/HostMonitor.tsx:408:13",className:"p-4",children:[t.jsxs("h3",{"code-path":"src/pages/HostMonitor.tsx:409:15",className:"text-xs font-medium text-[var(--dg-text-primary)] mb-3 flex items-center gap-2",children:[t.jsx(Y,{"code-path":"src/pages/HostMonitor.tsx:410:17",className:"h-4 w-4 text-emerald-400"}),"监听端口 ",J.length,t.jsxs("span",{"code-path":"src/pages/HostMonitor.tsx:411:17",className:"ml-auto flex items-center gap-2",children:[k==="blacklist"&&X.length>0&&t.jsxs(Z,{"code-path":"src/pages/HostMonitor.tsx:413:21",variant:"outline",className:"text-[10px] text-amber-400 border-amber-500/30",children:["黑名单: ",X.join(",")]}),k==="whitelist"&&t.jsx(Z,{"code-path":"src/pages/HostMonitor.tsx:418:21",variant:"outline",className:"text-[10px] text-blue-400 border-blue-500/30",children:"白名单模式"}),t.jsx(A,{"code-path":"src/pages/HostMonitor.tsx:422:19",variant:"outline",size:"sm",className:"h-6 text-[10px] px-2",onClick:()=>{pt(),st(!0)},children:"策略配置"})]})]}),J.length===0?t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:429:17",className:"text-center py-6 text-xs text-[var(--dg-text-muted)] border border-dashed border-[var(--dg-border)] rounded-lg",children:"暂无端口数据"}):t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:433:17",className:"overflow-x-auto",children:t.jsxs("table",{"code-path":"src/pages/HostMonitor.tsx:434:19",className:"w-full text-xs",children:[t.jsx("thead",{"code-path":"src/pages/HostMonitor.tsx:435:21",children:t.jsxs("tr",{"code-path":"src/pages/HostMonitor.tsx:436:23",className:"text-[var(--dg-text-muted)] border-b border-[var(--dg-border)]",children:[t.jsx("th",{"code-path":"src/pages/HostMonitor.tsx:437:25",className:"py-1.5 text-left font-medium",children:"端口"}),t.jsx("th",{"code-path":"src/pages/HostMonitor.tsx:438:25",className:"py-1.5 text-left font-medium",children:"协议"}),t.jsx("th",{"code-path":"src/pages/HostMonitor.tsx:439:25",className:"py-1.5 text-left font-medium",children:"进程"}),t.jsx("th",{"code-path":"src/pages/HostMonitor.tsx:440:25",className:"py-1.5 text-right font-medium",children:"状态"})]})}),t.jsx("tbody",{"code-path":"src/pages/HostMonitor.tsx:443:21",children:J.map((s,e)=>t.jsxs("tr",{"code-path":"src/pages/HostMonitor.tsx:445:25",className:"border-b border-[var(--dg-border)]/30 hover:bg-slate-800/30 transition-colors",children:[t.jsx("td",{"code-path":"src/pages/HostMonitor.tsx:446:27",className:"py-1.5 font-mono text-[var(--dg-text-primary)]",children:s.port}),t.jsx("td",{"code-path":"src/pages/HostMonitor.tsx:447:27",className:"py-1.5",children:t.jsx(Z,{"code-path":"src/pages/HostMonitor.tsx:448:29",variant:"outline",className:"text-[10px] font-mono",children:s.protocol||"tcp"})}),t.jsx("td",{"code-path":"src/pages/HostMonitor.tsx:452:27",className:"py-1.5 font-mono text-[var(--dg-text-muted)]",children:s.process||"—"}),t.jsx("td",{"code-path":"src/pages/HostMonitor.tsx:453:27",className:"py-1.5 text-right",children:t.jsx(Z,{"code-path":"src/pages/HostMonitor.tsx:454:29",variant:"default",className:"text-[10px] bg-emerald-500/20 text-emerald-400 border-emerald-500/30",children:"LISTEN"})})]},e))})]})})]})})}),t.jsxs(G,{"code-path":"src/pages/HostMonitor.tsx:469:9",value:"process",className:"mt-3 space-y-3",children:[t.jsx(C,{"code-path":"src/pages/HostMonitor.tsx:471:11",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:t.jsxs(S,{"code-path":"src/pages/HostMonitor.tsx:472:13",className:"p-4",children:[t.jsxs("h3",{"code-path":"src/pages/HostMonitor.tsx:473:15",className:"text-xs font-medium text-[var(--dg-text-primary)] mb-3 flex items-center gap-2",children:[t.jsx(es,{"code-path":"src/pages/HostMonitor.tsx:474:17",className:"h-4 w-4 text-cyan-400"}),"进程 TOP ",lt.length]}),lt.length===0?t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:477:17",className:"text-center py-6 text-xs text-[var(--dg-text-muted)] border border-dashed border-[var(--dg-border)] rounded-lg",children:"Agent v2.0+ 支持,等待数据上报…"}):t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:481:17",className:"overflow-x-auto",children:t.jsxs("table",{"code-path":"src/pages/HostMonitor.tsx:482:19",className:"w-full text-xs",children:[t.jsx("thead",{"code-path":"src/pages/HostMonitor.tsx:483:21",children:t.jsxs("tr",{"code-path":"src/pages/HostMonitor.tsx:484:23",className:"text-[var(--dg-text-muted)] border-b border-[var(--dg-border)]",children:[t.jsx("th",{"code-path":"src/pages/HostMonitor.tsx:485:25",className:"py-1.5 text-left font-medium w-[40%]",children:"进程名称 / CMD"}),t.jsx("th",{"code-path":"src/pages/HostMonitor.tsx:486:25",className:"py-1.5 text-right font-medium w-[8%]",children:"PID"}),t.jsx("th",{"code-path":"src/pages/HostMonitor.tsx:487:25",className:"py-1.5 text-right font-medium w-[16%]",children:"内存使用率(%)"}),t.jsx("th",{"code-path":"src/pages/HostMonitor.tsx:488:25",className:"py-1.5 text-right font-medium w-[16%]",children:"CPU使用率(%)"}),t.jsx("th",{"code-path":"src/pages/HostMonitor.tsx:489:25",className:"py-1.5 text-right font-medium w-[20%]",children:"打开文件数"})]})}),t.jsx("tbody",{"code-path":"src/pages/HostMonitor.tsx:492:21",children:lt.map((s,e)=>{const c=s.cmdline||s.name||"?",l=s.cpu_pct!=null?Number(s.cpu_pct):null,E=s.mem_pct!=null?Number(s.mem_pct):null;return t.jsxs("tr",{"code-path":"src/pages/HostMonitor.tsx:498:27",className:"border-b border-[var(--dg-border)]/30 hover:bg-slate-800/30 transition-colors",children:[t.jsx("td",{"code-path":"src/pages/HostMonitor.tsx:499:29",className:"py-1.5 pr-2",children:t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:500:31",className:"flex items-center gap-1 group/cmd",children:[t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:501:33",className:"font-mono text-[var(--dg-text-primary)] truncate max-w-[320px] inline-block align-middle",title:c,children:c}),t.jsx("button",{"code-path":"src/pages/HostMonitor.tsx:507:33",className:"opacity-0 group-hover/cmd:opacity-100 transition-opacity p-0.5 hover:text-cyan-400 shrink-0",title:"复制命令行",onClick:async et=>{et.stopPropagation();try{await navigator.clipboard.writeText(c)}catch{const B=document.createElement("textarea");B.value=c,B.style.position="fixed",B.style.opacity="0",document.body.appendChild(B),B.select(),document.execCommand("copy"),document.body.removeChild(B)}},children:t.jsxs("svg",{"code-path":"src/pages/HostMonitor.tsx:523:35",className:"w-3 h-3",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[t.jsx("rect",{"code-path":"src/pages/HostMonitor.tsx:524:37",x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),t.jsx("path",{"code-path":"src/pages/HostMonitor.tsx:525:37",d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]})})]})}),t.jsx("td",{"code-path":"src/pages/HostMonitor.tsx:530:29",className:"py-1.5 text-right font-mono text-[var(--dg-text-muted)]",children:s.pid}),t.jsx("td",{"code-path":"src/pages/HostMonitor.tsx:531:29",className:"py-1.5 text-right font-mono",children:t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:532:31",className:E!=null&&E>50?"text-rose-400":"text-cyan-400",children:E!=null?E.toFixed(2):"--"})}),t.jsx("td",{"code-path":"src/pages/HostMonitor.tsx:536:29",className:"py-1.5 text-right font-mono",children:t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:537:31",className:l!=null&&l>50?"text-rose-400":"text-[var(--dg-text-primary)]",children:l!=null?l.toFixed(2):"--"})}),t.jsx("td",{"code-path":"src/pages/HostMonitor.tsx:541:29",className:"py-1.5 text-right font-mono text-[var(--dg-text-muted)]",children:s.fd_count??"--"})]},e)})})]})})]})}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:553:11",className:"grid grid-cols-1 md:grid-cols-2 gap-3",children:[t.jsx(C,{"code-path":"src/pages/HostMonitor.tsx:555:13",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:t.jsxs(S,{"code-path":"src/pages/HostMonitor.tsx:556:15",className:"p-4",children:[t.jsxs("h3",{"code-path":"src/pages/HostMonitor.tsx:557:17",className:"text-xs font-medium text-[var(--dg-text-primary)] mb-3 flex items-center gap-2",children:[t.jsx(W,{"code-path":"src/pages/HostMonitor.tsx:558:19",className:"h-4 w-4 text-violet-400"}),"FD 文件句柄"]}),I?.allocated!=null?t.jsxs(t.Fragment,{children:[t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:562:21",className:"flex items-center gap-4 mb-3 text-xs",children:[t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:563:23",children:[t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:564:25",className:"text-[var(--dg-text-muted)]",children:"已分配 "}),t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:565:25",className:"font-mono text-[var(--dg-text-primary)] font-semibold",children:I.allocated.toLocaleString()})]}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:567:23",children:[t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:568:25",className:"text-[var(--dg-text-muted)]",children:"上限 "}),t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:569:25",className:"font-mono text-[var(--dg-text-primary)] font-semibold",children:I.max===-1?"无限制":I.max?.toLocaleString()||"—"})]}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:571:23",children:[t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:572:25",className:"text-[var(--dg-text-muted)]",children:"使用率 "}),t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:573:25",className:`font-mono font-semibold ${I.usage_pct>80?"text-rose-400":"text-violet-400"}`,children:I.usage_pct!=null?`${I.usage_pct.toFixed(1)}%`:"—"})]})]}),g.fd.length>0&&t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:579:23",className:"h-[120px]",children:t.jsx(Mt,{"code-path":"src/pages/HostMonitor.tsx:580:25",width:"100%",height:"100%",children:t.jsxs(Nt,{"code-path":"src/pages/HostMonitor.tsx:581:27",data:g.fd,children:[t.jsx(Ht,{"code-path":"src/pages/HostMonitor.tsx:582:29",strokeDasharray:"3 3",stroke:"var(--dg-border)"}),t.jsx(jt,{"code-path":"src/pages/HostMonitor.tsx:583:29",dataKey:"time",tick:{fontSize:10,fill:"var(--dg-text-muted)"},interval:"preserveStartEnd"}),t.jsx(vt,{"code-path":"src/pages/HostMonitor.tsx:584:29",tick:{fontSize:10,fill:"var(--dg-text-muted)"},unit:"%",domain:[0,"auto"]}),t.jsx(ft,{"code-path":"src/pages/HostMonitor.tsx:585:29",contentStyle:{background:"#1e293b",border:"1px solid #334155",borderRadius:6,fontSize:11}}),t.jsx("defs",{"code-path":"src/pages/HostMonitor.tsx:586:29",children:t.jsxs("linearGradient",{"code-path":"src/pages/HostMonitor.tsx:587:31",id:"fdGrad",x1:"0",y1:"0",x2:"0",y2:"1",children:[t.jsx("stop",{"code-path":"src/pages/HostMonitor.tsx:588:33",offset:"0%",stopColor:"#a78bfa",stopOpacity:.3}),t.jsx("stop",{"code-path":"src/pages/HostMonitor.tsx:589:33",offset:"100%",stopColor:"#a78bfa",stopOpacity:.05})]})}),t.jsx(nt,{"code-path":"src/pages/HostMonitor.tsx:592:29",type:"monotone",dataKey:i,stroke:"#a78bfa",strokeWidth:1.5,fill:"url(#fdGrad)",name:"FD使用率"})]})})})]}):t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:599:19",className:"text-center py-4 text-xs text-[var(--dg-text-muted)]",children:"等待数据…"})]})}),t.jsx(C,{"code-path":"src/pages/HostMonitor.tsx:605:13",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:t.jsxs(S,{"code-path":"src/pages/HostMonitor.tsx:606:15",className:"p-4",children:[t.jsxs("h3",{"code-path":"src/pages/HostMonitor.tsx:607:17",className:"text-xs font-medium text-[var(--dg-text-primary)] mb-3 flex items-center gap-2",children:[t.jsx(ss,{"code-path":"src/pages/HostMonitor.tsx:608:19",className:"h-4 w-4 text-emerald-400"}),"上下文切换"]}),_?.ctx_per_sec!=null?t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:611:19",className:"space-y-4",children:[t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:612:21",className:"grid grid-cols-2 gap-4",children:[t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:613:23",className:"bg-[var(--dg-bg-primary)] rounded-lg p-3 text-center",children:[t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:614:25",className:"text-[10px] text-[var(--dg-text-muted)] mb-1",children:"CTX 切换/秒"}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:615:25",className:"text-lg font-bold font-mono text-emerald-400",children:[(_.ctx_per_sec/1e6).toFixed(1),t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:616:66",className:"text-xs font-normal text-[var(--dg-text-muted)] ml-0.5",children:"M"})]}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:618:25",className:"text-[10px] text-[var(--dg-text-muted)] mt-1 font-mono",children:[_.ctx_per_sec?.toLocaleString()," 次"]})]}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:620:23",className:"bg-[var(--dg-bg-primary)] rounded-lg p-3 text-center",children:[t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:621:25",className:"text-[10px] text-[var(--dg-text-muted)] mb-1",children:"IRQ 中断/秒"}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:622:25",className:"text-lg font-bold font-mono text-amber-400",children:[(_.irq_per_sec/1e6).toFixed(1),t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:623:66",className:"text-xs font-normal text-[var(--dg-text-muted)] ml-0.5",children:"M"})]}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:625:25",className:"text-[10px] text-[var(--dg-text-muted)] mt-1 font-mono",children:[_.irq_per_sec?.toLocaleString()," 次"]})]})]}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:629:21",className:"space-y-1",children:[t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:630:23",className:"flex justify-between text-[10px]",children:[t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:631:25",className:"text-emerald-400",children:"CTX"}),t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:632:25",className:"text-amber-400",children:"IRQ"})]}),t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:634:23",className:"h-2 bg-[var(--dg-bg-primary)] rounded-full overflow-hidden flex",children:_.ctx_per_sec+_.irq_per_sec>0&&t.jsxs(t.Fragment,{children:[t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:637:29",className:"h-full bg-emerald-500/60 rounded-l-full transition-all",style:{width:`${(_.ctx_per_sec/(_.ctx_per_sec+_.irq_per_sec)*100).toFixed(1)}%`}}),t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:639:29",className:"h-full bg-amber-500/60 rounded-r-full transition-all",style:{width:`${(_.irq_per_sec/(_.ctx_per_sec+_.irq_per_sec)*100).toFixed(1)}%`}})]})})]})]}):t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:647:19",className:"text-center py-4 text-xs text-[var(--dg-text-muted)]",children:"等待数据…"})]})})]})]}),t.jsxs(G,{"code-path":"src/pages/HostMonitor.tsx:655:9",value:"system",className:"mt-3 space-y-3",children:[t.jsx(C,{"code-path":"src/pages/HostMonitor.tsx:656:11",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:t.jsx(S,{"code-path":"src/pages/HostMonitor.tsx:657:13",className:"p-4",children:t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:658:15",className:"grid grid-cols-2 md:grid-cols-4 gap-x-6 gap-y-3 text-xs",children:[["主机名",b?.hostname||d],["IP 地址",b?.ip||"—"],["操作系统",b?.os||"—"],["内核版本",b?.kernel||"—"],["CPU 核心数",b?.cpu_cores||"—"],["总内存",b?.mem_total?`${b.mem_total.toFixed(0)} GB`:"—"],["已用内存",b?.mem_used?`${b.mem_used.toFixed(1)} GB`:"—"],["运行时长",b?.uptime?`${Math.floor(b.uptime/86400)}天 ${Math.floor(b.uptime%86400/3600)}时`:"—"],["Agent 版本",Q?.version||b?.agent_version||"—"],["Agent 序列号",Q?.report_seq!=null?String(Q.report_seq):"—"],["监听端口数",J.length>0?`${J.length}`:"—"],["Agent RSS",Q?.self_rss_mb?`${Q.self_rss_mb.toFixed(1)} MB`:"—"]].map(([s,e])=>t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:673:19",children:[t.jsxs("span",{"code-path":"src/pages/HostMonitor.tsx:674:21",className:"text-[var(--dg-text-muted)]",children:[s,":"]}),t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:675:21",className:"text-[var(--dg-text-primary)] font-mono",children:e})]},s))})})}),o&&t.jsx(C,{"code-path":"src/pages/HostMonitor.tsx:684:13",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:t.jsxs(S,{"code-path":"src/pages/HostMonitor.tsx:685:15",className:"p-4",children:[t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:686:17",className:"flex items-center gap-2 mb-2",children:[t.jsx(Wt,{"code-path":"src/pages/HostMonitor.tsx:687:19",className:"h-4 w-4 text-[var(--dg-text-muted)]"}),t.jsx("h3",{"code-path":"src/pages/HostMonitor.tsx:688:19",className:"text-xs font-medium text-[var(--dg-text-primary)]",children:"系统负载 (Load Average)"})]}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:690:17",className:"flex items-center gap-6 text-xs",children:[t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:691:19",children:[t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:691:24",className:"text-[var(--dg-text-muted)]",children:"1min "}),t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:691:82",className:"text-sm font-bold text-slate-200",children:o.load1??"--"})]}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:692:19",children:[t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:692:24",className:"text-[var(--dg-text-muted)]",children:"5min "}),t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:692:82",className:"text-sm font-bold text-slate-200",children:o.load5??"--"})]}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:693:19",children:[t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:693:24",className:"text-[var(--dg-text-muted)]",children:"15min "}),t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:693:83",className:"text-sm font-bold text-slate-200",children:o.load15??"--"})]})]})]})}),o?.disk_info&&(()=>{const s=M(o.disk_info),e=Array.isArray(s)?s:s.partitions||[];return e.length?t.jsx(C,{"code-path":"src/pages/HostMonitor.tsx:705:15",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:t.jsxs(S,{"code-path":"src/pages/HostMonitor.tsx:706:17",className:"p-4",children:[t.jsxs("h3",{"code-path":"src/pages/HostMonitor.tsx:707:19",className:"text-xs font-medium text-[var(--dg-text-primary)] mb-2 flex items-center gap-2",children:[t.jsx(W,{"code-path":"src/pages/HostMonitor.tsx:707:114",className:"h-4 w-4"}),"磁盘分区"]}),t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:708:19",className:"space-y-1.5",children:e.map((c,l)=>t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:710:23",className:"flex items-center gap-2 text-xs",children:[t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:711:25",className:"text-[var(--dg-text-muted)] w-24 font-mono truncate",children:c.mount||c.mountpoint||c.device||`disk${l}`}),t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:712:25",className:"flex-1 h-1.5 bg-slate-700 rounded-full overflow-hidden",children:t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:713:27",className:"h-full rounded-full bg-blue-500",style:{width:`${Math.min(c.usage_percent||c.used_percent||0,100)}%`}})}),t.jsxs("span",{"code-path":"src/pages/HostMonitor.tsx:715:25",className:"text-[var(--dg-text-primary)] w-28 text-right tabular-nums whitespace-nowrap",children:[(c.used_gb??0).toFixed(1),"/",(c.total_gb??0).toFixed(0),"GB"]}),t.jsxs("span",{"code-path":"src/pages/HostMonitor.tsx:716:25",className:"text-blue-400 w-14 text-right tabular-nums whitespace-nowrap",children:[(c.usage_percent??c.used_percent??0).toFixed(1),"%"]})]},l))})]})}):null})()]}),t.jsxs(G,{"code-path":"src/pages/HostMonitor.tsx:727:9",value:"health_probes",className:"mt-3 space-y-3",children:[t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:728:11",className:"flex items-center justify-between",children:[t.jsx("h3",{"code-path":"src/pages/HostMonitor.tsx:729:13",className:"text-xs font-medium text-[var(--dg-text-primary)]",children:"探针列表(Agent 在目标主机本地执行探测)"}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:730:13",className:"flex gap-2",children:[t.jsxs(A,{"code-path":"src/pages/HostMonitor.tsx:731:15",size:"sm",variant:"outline",className:"h-7 text-[11px]",onClick:V,children:[t.jsx(ss,{"code-path":"src/pages/HostMonitor.tsx:732:17",className:"w-3 h-3 mr-1"}),"刷新"]}),t.jsxs(A,{"code-path":"src/pages/HostMonitor.tsx:734:15",size:"sm",className:"h-7 text-[11px] bg-blue-600 hover:bg-blue-500",onClick:()=>{kt(null),N({name:"",hostname:d,probe_type:"http_get",http_url:"",http_method:"GET",http_expect_code:200,http_expect_body:"",tcp_host:"localhost",tcp_port:3306,exec_command:"",timeout:10,interval:60,description:""}),q(!0)},children:[t.jsx(Ns,{"code-path":"src/pages/HostMonitor.tsx:743:17",className:"w-3 h-3 mr-1"}),"添加探针"]})]})]}),wt.length===0?t.jsx(C,{"code-path":"src/pages/HostMonitor.tsx:748:13",className:"bg-[var(--dg-bg-secondary)] border-dashed border-[var(--dg-border)]",children:t.jsx(S,{"code-path":"src/pages/HostMonitor.tsx:749:15",className:"p-8 text-center text-xs text-[var(--dg-text-muted)]",children:'暂无健康探针,点击"添加探针"创建'})}):t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:754:13",className:"grid grid-cols-1 md:grid-cols-2 gap-3",children:wt.map(s=>t.jsx(C,{"code-path":"src/pages/HostMonitor.tsx:756:17",className:`bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] ${s.last_status==="down"?"border-red-700/50":""}`,children:t.jsxs(S,{"code-path":"src/pages/HostMonitor.tsx:757:19",className:"p-3",children:[t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:758:21",className:"flex items-start justify-between mb-2",children:[t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:759:23",className:"flex items-center gap-2",children:[s.last_status==="up"?t.jsx(Hs,{"code-path":"src/pages/HostMonitor.tsx:760:51",className:"w-4 h-4 text-emerald-400"}):s.last_status==="down"?t.jsx(ut,{"code-path":"src/pages/HostMonitor.tsx:761:53",className:"w-4 h-4 text-red-400"}):t.jsx(at,{"code-path":"src/pages/HostMonitor.tsx:762:26",className:"w-4 h-4 text-slate-500"}),t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:763:25",className:"text-xs font-medium text-[var(--dg-text-primary)]",children:s.name}),t.jsx(Z,{"code-path":"src/pages/HostMonitor.tsx:764:25",variant:"outline",className:"text-[10px] h-5 px-1.5 capitalize",children:s.probe_type==="http_get"?"HTTP":s.probe_type==="tcp_socket"?"TCP":"Exec"})]}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:768:23",className:"flex gap-1",children:[t.jsx(A,{"code-path":"src/pages/HostMonitor.tsx:769:25",variant:"ghost",size:"sm",className:"h-6 w-6 p-0",onClick:()=>{kt(s),N({name:s.name,hostname:s.hostname,probe_type:s.probe_type,http_url:s.http_url||"",http_method:s.http_method||"GET",http_expect_code:s.http_expect_code||200,http_expect_body:s.http_expect_body||"",tcp_host:s.tcp_host||"",tcp_port:s.tcp_port||3306,exec_command:s.exec_command||"",timeout:s.timeout||10,interval:s.interval||60,description:s.description||""}),q(!0)},children:t.jsx(_s,{"code-path":"src/pages/HostMonitor.tsx:781:27",className:"w-3 h-3"})}),t.jsx(A,{"code-path":"src/pages/HostMonitor.tsx:783:25",variant:"ghost",size:"sm",className:"h-6 w-6 p-0 text-red-400 hover:text-red-300",onClick:async()=>{confirm(`确定删除探针"${s.name}"?`)&&(await R.deleteHealthProbe(s.id),V())},children:t.jsx(ys,{"code-path":"src/pages/HostMonitor.tsx:789:27",className:"w-3 h-3"})})]})]}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:793:21",className:"space-y-1 text-[11px] text-[var(--dg-text-muted)]",children:[s.probe_type==="http_get"&&t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:795:25",className:"truncate",children:["URL: ",s.http_url]}),s.probe_type==="tcp_socket"&&t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:798:25",children:[s.tcp_host,":",s.tcp_port]}),s.probe_type==="exec_command"&&t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:801:25",className:"truncate font-mono",children:s.exec_command}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:803:23",className:"flex items-center gap-3",children:[t.jsxs("span",{"code-path":"src/pages/HostMonitor.tsx:804:25",children:["状态: ",t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:804:35",className:s.last_status==="up"?"text-emerald-400":s.last_status==="down"?"text-red-400":"text-slate-400",children:s.last_status?s.last_status.toUpperCase():"未检测"})]}),s.last_latency_ms>0&&t.jsxs("span",{"code-path":"src/pages/HostMonitor.tsx:807:51",children:["延迟: ",s.last_latency_ms,"ms"]}),s.fail_count>0&&t.jsxs("span",{"code-path":"src/pages/HostMonitor.tsx:808:46",className:"text-red-400",children:["连续失败: ",s.fail_count,"次"]}),s.last_checked_at&&t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:809:47",className:"text-[10px]",children:new Date(s.last_checked_at).toLocaleString("zh-CN")})]})]})]})},s.id))})]})]}),t.jsx(Kt,{"code-path":"src/pages/HostMonitor.tsx:821:7",open:cs,onOpenChange:q,children:t.jsxs(qt,{"code-path":"src/pages/HostMonitor.tsx:822:9",showOverlay:!1,className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] max-w-lg",children:[t.jsxs(Ut,{"code-path":"src/pages/HostMonitor.tsx:823:11",children:[t.jsx(Vt,{"code-path":"src/pages/HostMonitor.tsx:824:13",className:"text-[var(--dg-text-primary)]",children:U?"编辑探针":"添加探针"}),t.jsx(Xt,{"code-path":"src/pages/HostMonitor.tsx:827:13",className:"text-[var(--dg-text-secondary)]",children:U?"修改健康探针配置":"创建新的健康探针,Agent 在目标主机本地执行探测"})]}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:831:11",className:"space-y-3 max-h-[60vh] overflow-y-auto pr-1",children:[t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:832:13",children:[t.jsxs("label",{"code-path":"src/pages/HostMonitor.tsx:833:15",className:"text-[11px] text-[var(--dg-text-muted)] mb-1 block",children:["探针名称 ",t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:833:90",className:"text-red-400",children:"*"})]}),t.jsx("input",{"code-path":"src/pages/HostMonitor.tsx:834:15",className:"w-full h-8 bg-[var(--dg-bg-secondary)] border border-[var(--dg-border)] rounded px-2 text-xs text-[var(--dg-text-primary)]",value:a.name,onChange:s=>N({...a,name:s.target.value}),placeholder:"如:cex-agent 健康检查"})]}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:836:13",children:[t.jsx("label",{"code-path":"src/pages/HostMonitor.tsx:837:15",className:"text-[11px] text-[var(--dg-text-muted)] mb-1 block",children:"目标主机"}),t.jsx("input",{"code-path":"src/pages/HostMonitor.tsx:838:15",className:"w-full h-8 bg-[var(--dg-bg-secondary)] border border-[var(--dg-border)] rounded px-2 text-xs text-[var(--dg-text-primary)]",value:a.hostname,onChange:s=>N({...a,hostname:s.target.value})})]}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:840:13",children:[t.jsx("label",{"code-path":"src/pages/HostMonitor.tsx:841:15",className:"text-[11px] text-[var(--dg-text-muted)] mb-1 block",children:"探针类型"}),t.jsxs("select",{"code-path":"src/pages/HostMonitor.tsx:842:15",className:"w-full h-8 bg-[var(--dg-bg-secondary)] border border-[var(--dg-border)] rounded px-2 text-xs text-[var(--dg-text-primary)]",value:a.probe_type,onChange:s=>N({...a,probe_type:s.target.value}),children:[t.jsx("option",{"code-path":"src/pages/HostMonitor.tsx:843:17",value:"http_get",children:"HTTP GET"}),t.jsx("option",{"code-path":"src/pages/HostMonitor.tsx:844:17",value:"tcp_socket",children:"TCP Socket"}),t.jsx("option",{"code-path":"src/pages/HostMonitor.tsx:845:17",value:"exec_command",children:"Exec Command"})]})]}),a.probe_type==="http_get"&&t.jsxs(t.Fragment,{children:[t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:851:17",children:[t.jsxs("label",{"code-path":"src/pages/HostMonitor.tsx:851:22",className:"text-[11px] text-[var(--dg-text-muted)] mb-1 block",children:["HTTP URL ",t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:851:101",className:"text-red-400",children:"*"})]}),t.jsx("input",{"code-path":"src/pages/HostMonitor.tsx:852:19",className:"w-full h-8 bg-[var(--dg-bg-secondary)] border border-[var(--dg-border)] rounded px-2 text-xs text-[var(--dg-text-primary)]",value:a.http_url,onChange:s=>N({...a,http_url:s.target.value}),placeholder:"http://localhost:8080/health"})]}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:853:17",className:"grid grid-cols-2 gap-2",children:[t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:854:19",children:[t.jsx("label",{"code-path":"src/pages/HostMonitor.tsx:854:24",className:"text-[11px] text-[var(--dg-text-muted)] mb-1 block",children:"期望状态码"}),t.jsx("input",{"code-path":"src/pages/HostMonitor.tsx:855:21",type:"number",className:"w-full h-8 bg-[var(--dg-bg-secondary)] border border-[var(--dg-border)] rounded px-2 text-xs text-[var(--dg-text-primary)]",value:a.http_expect_code,onChange:s=>N({...a,http_expect_code:Number(s.target.value)})})]}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:856:19",children:[t.jsx("label",{"code-path":"src/pages/HostMonitor.tsx:856:24",className:"text-[11px] text-[var(--dg-text-muted)] mb-1 block",children:"期望响应内容(可选)"}),t.jsx("input",{"code-path":"src/pages/HostMonitor.tsx:857:21",className:"w-full h-8 bg-[var(--dg-bg-secondary)] border border-[var(--dg-border)] rounded px-2 text-xs text-[var(--dg-text-primary)]",value:a.http_expect_body,onChange:s=>N({...a,http_expect_body:s.target.value})})]})]})]}),a.probe_type==="tcp_socket"&&t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:863:15",className:"grid grid-cols-2 gap-2",children:[t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:864:17",children:[t.jsx("label",{"code-path":"src/pages/HostMonitor.tsx:864:22",className:"text-[11px] text-[var(--dg-text-muted)] mb-1 block",children:"TCP 目标地址"}),t.jsx("input",{"code-path":"src/pages/HostMonitor.tsx:865:19",className:"w-full h-8 bg-[var(--dg-bg-secondary)] border border-[var(--dg-border)] rounded px-2 text-xs text-[var(--dg-text-primary)]",value:a.tcp_host,onChange:s=>N({...a,tcp_host:s.target.value}),placeholder:"localhost"})]}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:866:19",children:[t.jsx("label",{"code-path":"src/pages/HostMonitor.tsx:866:24",className:"text-[11px] text-[var(--dg-text-muted)] mb-1 block",children:"TCP 端口"}),t.jsx("input",{"code-path":"src/pages/HostMonitor.tsx:867:19",type:"number",className:"w-full h-8 bg-[var(--dg-bg-secondary)] border border-[var(--dg-border)] rounded px-2 text-xs text-[var(--dg-text-primary)]",value:a.tcp_port,onChange:s=>N({...a,tcp_port:Number(s.target.value)})})]})]}),a.probe_type==="exec_command"&&t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:872:15",children:[t.jsxs("label",{"code-path":"src/pages/HostMonitor.tsx:872:20",className:"text-[11px] text-[var(--dg-text-muted)] mb-1 block",children:["执行命令 ",t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:872:95",className:"text-red-400",children:"*"})]}),t.jsx("input",{"code-path":"src/pages/HostMonitor.tsx:873:17",className:"w-full h-8 bg-[var(--dg-bg-secondary)] border border-[var(--dg-border)] rounded px-2 text-xs font-mono text-[var(--dg-text-primary)]",value:a.exec_command,onChange:s=>N({...a,exec_command:s.target.value}),placeholder:"pgrep -x mysqld"})]}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:876:13",className:"grid grid-cols-2 gap-2",children:[t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:877:15",children:[t.jsx("label",{"code-path":"src/pages/HostMonitor.tsx:877:20",className:"text-[11px] text-[var(--dg-text-muted)] mb-1 block",children:"超时(秒)"}),t.jsx("input",{"code-path":"src/pages/HostMonitor.tsx:878:17",type:"number",className:"w-full h-8 bg-[var(--dg-bg-secondary)] border border-[var(--dg-border)] rounded px-2 text-xs text-[var(--dg-text-primary)]",value:a.timeout,onChange:s=>N({...a,timeout:Number(s.target.value)})})]}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:879:15",children:[t.jsx("label",{"code-path":"src/pages/HostMonitor.tsx:879:20",className:"text-[11px] text-[var(--dg-text-muted)] mb-1 block",children:"间隔(秒)"}),t.jsx("input",{"code-path":"src/pages/HostMonitor.tsx:880:17",type:"number",className:"w-full h-8 bg-[var(--dg-bg-secondary)] border border-[var(--dg-border)] rounded px-2 text-xs text-[var(--dg-text-primary)]",value:a.interval,onChange:s=>N({...a,interval:Number(s.target.value)})})]})]}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:883:13",children:[t.jsx("label",{"code-path":"src/pages/HostMonitor.tsx:883:18",className:"text-[11px] text-[var(--dg-text-muted)] mb-1 block",children:"描述"}),t.jsx("input",{"code-path":"src/pages/HostMonitor.tsx:884:15",className:"w-full h-8 bg-[var(--dg-bg-secondary)] border border-[var(--dg-border)] rounded px-2 text-xs text-[var(--dg-text-primary)]",value:a.description,onChange:s=>N({...a,description:s.target.value})})]})]}),t.jsxs(Jt,{"code-path":"src/pages/HostMonitor.tsx:886:11",children:[t.jsx(A,{"code-path":"src/pages/HostMonitor.tsx:887:13",variant:"outline",size:"sm",className:"h-7 text-[11px]",onClick:()=>q(!1),children:"取消"}),t.jsx(A,{"code-path":"src/pages/HostMonitor.tsx:888:13",size:"sm",className:"h-7 text-[11px] bg-blue-600 hover:bg-blue-500",onClick:async()=>{if(!(!a.name||!a.hostname))try{U?await R.updateHealthProbe(U.id,a):await R.createHealthProbe(a),q(!1),V()}catch{alert("保存失败")}},disabled:!a.name||!a.hostname,children:U?"保存":"创建"})]})]})}),t.jsx(Kt,{"code-path":"src/pages/HostMonitor.tsx:907:7",open:ds,onOpenChange:st,children:t.jsxs(qt,{"code-path":"src/pages/HostMonitor.tsx:908:9",showOverlay:!1,className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] max-w-md",children:[t.jsxs(Ut,{"code-path":"src/pages/HostMonitor.tsx:909:11",children:[t.jsx(Vt,{"code-path":"src/pages/HostMonitor.tsx:910:13",className:"text-[var(--dg-text-primary)]",children:"端口监控策略"}),t.jsx(Xt,{"code-path":"src/pages/HostMonitor.tsx:911:13",className:"text-[var(--dg-text-secondary)]",children:"配置 Agent 端口上报过滤规则"})]}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:913:11",className:"space-y-4",children:[t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:915:13",children:[t.jsx("label",{"code-path":"src/pages/HostMonitor.tsx:916:15",className:"text-[11px] text-[var(--dg-text-muted)] mb-1.5 block",children:"过滤模式"}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:917:15",className:"flex gap-2",children:[t.jsx("button",{"code-path":"src/pages/HostMonitor.tsx:918:17",className:`flex-1 h-9 rounded text-xs font-medium border transition-colors ${k==="whitelist"?"bg-blue-500/20 border-blue-500 text-blue-400":"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] text-[var(--dg-text-muted)]"}`,onClick:()=>xt("whitelist"),children:"白名单 ─ 全量上报"}),t.jsx("button",{"code-path":"src/pages/HostMonitor.tsx:924:17",className:`flex-1 h-9 rounded text-xs font-medium border transition-colors ${k==="blacklist"?"bg-amber-500/20 border-amber-500 text-amber-400":"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] text-[var(--dg-text-muted)]"}`,onClick:()=>xt("blacklist"),children:"黑名单 ─ 仅上报选中"})]}),t.jsx("p",{"code-path":"src/pages/HostMonitor.tsx:931:15",className:"text-[10px] text-[var(--dg-text-muted)] mt-1.5 leading-relaxed",children:k==="whitelist"?"所有发现的端口都上报,任意端口变化都会触发告警 + 恢复通知。":"仅上报选中端口的变化,其余端口变化静默忽略(不告警)。系统进程端口(sshd/rpcbind/systemd等)永远忽略。"})]}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:939:13",children:[t.jsxs("label",{"code-path":"src/pages/HostMonitor.tsx:940:15",className:"text-[11px] text-[var(--dg-text-muted)] mb-1.5 block",children:["端口列表 ",t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:941:22",className:"text-[var(--dg-text-muted)]",children:"(逗号分隔,如: 80,443,3306,6379)"}),k==="whitelist"&&t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:942:52",className:"text-blue-400 ml-1",children:"— 白名单模式无需配置"})]}),t.jsx("textarea",{"code-path":"src/pages/HostMonitor.tsx:944:15",className:`w-full h-20 bg-[var(--dg-bg-secondary)] border border-[var(--dg-border)] rounded px-2 py-1.5 text-xs font-mono resize-none ${k==="whitelist"?"text-[var(--dg-text-muted)] opacity-50 cursor-not-allowed":"text-[var(--dg-text-primary)]"}`,value:X.join(","),onChange:s=>{if(k==="whitelist")return;const c=s.target.value.split(",").map(l=>parseInt(l.trim())).filter(l=>!isNaN(l)&&l>0&&l<=65535);Ct(c)},placeholder:k==="whitelist"?"白名单模式下所有端口自动上报":"80,443,3306,6379",readOnly:k==="whitelist"}),t.jsxs("p",{"code-path":"src/pages/HostMonitor.tsx:958:15",className:"text-[10px] text-[var(--dg-text-muted)] mt-1",children:["已输入 ",X.length," 个端口"]})]}),t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:964:13",className:"bg-amber-500/5 border border-amber-500/20 rounded p-2.5",children:t.jsxs("p",{"code-path":"src/pages/HostMonitor.tsx:965:15",className:"text-[10px] text-amber-300/80 leading-relaxed",children:["⚠️ 无论选择哪种模式,以下系统进程端口",t.jsx("b",{"code-path":"src/pages/HostMonitor.tsx:966:37",children:"永远不上报"}),":sshd、rpcbind、master、systemd、dbus-daemon、rsyslogd 等。Agent 采集时自动跳过。"]})})]}),t.jsxs(Jt,{"code-path":"src/pages/HostMonitor.tsx:970:11",children:[t.jsx(A,{"code-path":"src/pages/HostMonitor.tsx:971:13",variant:"outline",size:"sm",className:"h-7 text-[11px]",onClick:()=>st(!1),children:"取消"}),t.jsx(A,{"code-path":"src/pages/HostMonitor.tsx:972:13",size:"sm",className:"h-7 text-[11px] bg-blue-600 hover:bg-blue-500",onClick:ns,disabled:St,children:St?"保存中…":"保存策略"})]})]})})]})}function H({title:r,value:T,icon:O,data:F,color:d,unit:j,domain:y,aggType:w}){const P=F.map(v=>({...v,value:v[w]}));return t.jsx(C,{"code-path":"src/pages/HostMonitor.tsx:992:5",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:t.jsxs(S,{"code-path":"src/pages/HostMonitor.tsx:993:7",className:"p-3",children:[t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:994:9",className:"flex items-center justify-between mb-1",children:t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:995:11",className:"flex items-center gap-1.5",children:[O,t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:995:60",className:"text-xs text-[var(--dg-text-primary)] font-medium truncate",children:r})]})}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:997:9",className:"mb-2",children:[t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:998:11",className:"text-xl font-bold text-[var(--dg-text-primary)] tabular-nums",children:T}),j&&t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:999:20",className:"text-xs text-[var(--dg-text-muted)] ml-1",children:j})]}),t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:1001:9",className:"h-48",children:P.length===0?t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:1003:13",className:"h-full flex items-center justify-center text-xs text-[var(--dg-text-muted)] border border-dashed border-[var(--dg-border)] rounded-md",children:"暂无数据"}):t.jsx(Mt,{"code-path":"src/pages/HostMonitor.tsx:1005:13",width:"100%",height:"100%",children:t.jsxs(Nt,{"code-path":"src/pages/HostMonitor.tsx:1006:15",data:P,margin:{top:2,right:2,bottom:0,left:-10},children:[t.jsx("defs",{"code-path":"src/pages/HostMonitor.tsx:1007:17",children:t.jsxs("linearGradient",{"code-path":"src/pages/HostMonitor.tsx:1008:19",id:`grad-${r}`,x1:"0",y1:"0",x2:"0",y2:"1",children:[t.jsx("stop",{"code-path":"src/pages/HostMonitor.tsx:1009:21",offset:"5%",stopColor:d,stopOpacity:.3}),t.jsx("stop",{"code-path":"src/pages/HostMonitor.tsx:1010:21",offset:"95%",stopColor:d,stopOpacity:0})]})}),t.jsx(Ht,{"code-path":"src/pages/HostMonitor.tsx:1013:17",strokeDasharray:"3 3",stroke:"#1e293b",strokeOpacity:.5}),t.jsx(jt,{"code-path":"src/pages/HostMonitor.tsx:1014:17",dataKey:"time",hide:!0}),t.jsx(vt,{"code-path":"src/pages/HostMonitor.tsx:1015:17",hide:!0,domain:y[1]==="auto"?[0,v=>v*1.1]:y}),t.jsx(ft,{"code-path":"src/pages/HostMonitor.tsx:1016:17",contentStyle:{backgroundColor:"#0f172a",border:"1px solid #1e293b",borderRadius:"4px",color:"#f8fafc",fontSize:"11px",padding:"4px 8px"},formatter:v=>[`${v.toFixed(2)} ${j}`,r.replace(/\(.+\)/,"")],labelFormatter:v=>`时间: ${v}`}),t.jsx(nt,{"code-path":"src/pages/HostMonitor.tsx:1019:17",type:"monotone",dataKey:"value",stroke:d,strokeWidth:1.5,fill:`url(#grad-${r})`}),t.jsx(as,{"code-path":"src/pages/HostMonitor.tsx:1020:17",dataKey:"time",height:24,stroke:"#334155",fill:"#0f172a",startIndex:Math.max(0,P.length-Math.min(20,P.length))})]})})})]})})}function Ss({title:r,currentRx:T,currentTx:O,rxData:F,txData:d,aggType:j,unit:y}){const w=F.map((f,z)=>({time:f.time,timestamp:f.timestamp,rx:f[j]??0,tx:d[z]?.[j]??0})),P=`grad-rx-${r.replace(/\s/g,"")}`,v=`grad-tx-${r.replace(/\s/g,"")}`;return t.jsx(C,{"code-path":"src/pages/HostMonitor.tsx:1049:5",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:t.jsxs(S,{"code-path":"src/pages/HostMonitor.tsx:1050:7",className:"p-3",children:[t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:1051:9",className:"flex items-center justify-between mb-1",children:[t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:1052:11",className:"flex items-center gap-1.5",children:[t.jsx(dt,{"code-path":"src/pages/HostMonitor.tsx:1053:13",className:"h-4 w-4 text-blue-400"}),t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:1054:13",className:"text-xs text-[var(--dg-text-primary)] font-medium",children:r})]}),t.jsxs("div",{"code-path":"src/pages/HostMonitor.tsx:1056:11",className:"flex items-center gap-3 text-xs",children:[t.jsxs("span",{"code-path":"src/pages/HostMonitor.tsx:1057:13",children:[t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:1057:19",className:"inline-block w-2.5 h-2.5 rounded-sm bg-blue-400 mr-1 align-middle"}),"接收 ",t.jsx("b",{"code-path":"src/pages/HostMonitor.tsx:1057:108",className:"text-blue-300",children:T})]}),t.jsxs("span",{"code-path":"src/pages/HostMonitor.tsx:1058:13",children:[t.jsx("span",{"code-path":"src/pages/HostMonitor.tsx:1058:19",className:"inline-block w-2.5 h-2.5 rounded-sm bg-emerald-400 mr-1 align-middle"}),"发送 ",t.jsx("b",{"code-path":"src/pages/HostMonitor.tsx:1058:111",className:"text-emerald-300",children:O})]})]})]}),t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:1061:9",className:"h-56",children:w.length===0?t.jsx("div",{"code-path":"src/pages/HostMonitor.tsx:1063:13",className:"h-full flex items-center justify-center text-xs text-[var(--dg-text-muted)] border border-dashed border-[var(--dg-border)] rounded-md",children:"暂无数据"}):t.jsx(Mt,{"code-path":"src/pages/HostMonitor.tsx:1065:13",width:"100%",height:"100%",children:t.jsxs(Nt,{"code-path":"src/pages/HostMonitor.tsx:1066:15",data:w,margin:{top:2,right:2,bottom:0,left:-10},children:[t.jsxs("defs",{"code-path":"src/pages/HostMonitor.tsx:1067:17",children:[t.jsxs("linearGradient",{"code-path":"src/pages/HostMonitor.tsx:1068:19",id:P,x1:"0",y1:"0",x2:"0",y2:"1",children:[t.jsx("stop",{"code-path":"src/pages/HostMonitor.tsx:1069:21",offset:"5%",stopColor:"#3b82f6",stopOpacity:.3}),t.jsx("stop",{"code-path":"src/pages/HostMonitor.tsx:1070:21",offset:"95%",stopColor:"#3b82f6",stopOpacity:0})]}),t.jsxs("linearGradient",{"code-path":"src/pages/HostMonitor.tsx:1072:19",id:v,x1:"0",y1:"0",x2:"0",y2:"1",children:[t.jsx("stop",{"code-path":"src/pages/HostMonitor.tsx:1073:21",offset:"5%",stopColor:"#10b981",stopOpacity:.3}),t.jsx("stop",{"code-path":"src/pages/HostMonitor.tsx:1074:21",offset:"95%",stopColor:"#10b981",stopOpacity:0})]})]}),t.jsx(Ht,{"code-path":"src/pages/HostMonitor.tsx:1077:17",strokeDasharray:"3 3",stroke:"#1e293b",strokeOpacity:.5}),t.jsx(jt,{"code-path":"src/pages/HostMonitor.tsx:1078:17",dataKey:"time",hide:!0}),t.jsx(vt,{"code-path":"src/pages/HostMonitor.tsx:1079:17",hide:!0,domain:[0,"auto"]}),t.jsx(ft,{"code-path":"src/pages/HostMonitor.tsx:1080:17",contentStyle:{backgroundColor:"#0f172a",border:"1px solid #1e293b",borderRadius:"4px",color:"#f8fafc",fontSize:"11px",padding:"4px 8px"},formatter:(f,z)=>[`${f.toFixed(2)} ${y}`,z==="rx"?"接收":"发送"],labelFormatter:f=>`时间: ${f}`}),t.jsx(nt,{"code-path":"src/pages/HostMonitor.tsx:1083:17",type:"monotone",dataKey:"rx",stroke:"#3b82f6",strokeWidth:1.5,fill:`url(#${P})`,name:"rx"}),t.jsx(nt,{"code-path":"src/pages/HostMonitor.tsx:1084:17",type:"monotone",dataKey:"tx",stroke:"#10b981",strokeWidth:1.5,fill:`url(#${v})`,name:"tx"}),t.jsx(as,{"code-path":"src/pages/HostMonitor.tsx:1085:17",dataKey:"time",height:24,stroke:"#334155",fill:"#0f172a",startIndex:Math.max(0,w.length-Math.min(20,w.length))})]})})})]})})}export{qs as HostMonitor}; diff --git a/backend/static/assets/KubernetesClusters-BfKHef0N.js b/backend/static/assets/KubernetesClusters-BfKHef0N.js new file mode 100644 index 0000000..6731bcc --- /dev/null +++ b/backend/static/assets/KubernetesClusters-BfKHef0N.js @@ -0,0 +1,10 @@ +import{r as n,j as e,s as ae,B as T,ah as ce,af as _e,ab as Re,a8 as oe,ai as Pe,aa as $,ac as X,aj as Te,ad as H,a9 as Ee,ae as Ae,a0 as E,D as le,a as ue,b as Me,c as de,d as ie,e as Ie,$ as Fe,E as Oe,L as Ge,X as Le,aJ as Be,aK as Ue,aL as ze,aM as $e,aN as Q,aO as F,O as We,y as Ve,v as qe,T as He,P as Xe}from"./index-Dmami9WE.js";import{C as O,b as U,c as z,d as xe,a as G}from"./card-CIfC-8Rh.js";import{I as B}from"./input-NsU9nXZF.js";import{B as y}from"./badge-3UzCvU7L.js";import{k as w}from"./kubernetes-D2-GnE0t.js";import{t as I}from"./index-BuEnLCjT.js";import{T as Je,a as Ye,b as A,c as M}from"./tabs-lV44z_UR.js";import{C as pe}from"./circle-x-BBQeW1R3.js";import{R as Ze,C as Qe,X as et,Y as tt,T as st}from"./generateCategoricalChart-ZqCvxO-S.js";import{A as rt,a as ee}from"./AreaChart-CrvX3B0s.js";import{T as te}from"./textarea-DHUZ6N85.js";import{L as P}from"./label-Ap_-SPYI.js";import{u as nt}from"./index-CtCQcvyh.js";import{C as at}from"./circle-CGbaa1m0.js";import{x as ct,a as ot}from"./xterm-DSqgeKvr.js";import{M as lt,a as ut}from"./minimize-2-BHcbNmdK.js";import{R as q}from"./refresh-cw-CTBERyFc.js";import{P as dt}from"./plus-O65gX7Qz.js";import{S as it}from"./search-Dd-PeBfg.js";import{E as xt}from"./ellipsis-BcWfelgl.js";import{D as pt}from"./download-Vuij9wGr.js";import{T as mt}from"./trash-2-DWVnIU6o.js";function bt({cluster:a,onClose:x}){const[r,g]=n.useState([]),[s,u]=n.useState([]),[d,K]=n.useState([]),[k,C]=n.useState([]),[b,f]=n.useState([]),h=n.useMemo(()=>{if(!r||r.length===0)return{cpuPct:0,memPct:0};let t=0,i=0,m=0;for(const j of r){const D=j.cpu||0,o=j.cpu_usage_m?parseFloat(String(j.cpu_usage_m).replace("m","")):0,l=D>0?o/1e3/D*100:0,N=j.memory_mb||0,_=j.mem_usage_mi?parseFloat(String(j.mem_usage_mi).replace("Mi","").replace("Ki","")):0,V=j.mem_usage_mi?.includes?.("Ki")?_/1024:j.mem_usage_mi?.includes?.("Gi")?_*1024:_,L=N>0?V/N*100:0;(l>0||L>0)&&(t+=l,i+=L,m++)}return{cpuPct:m>0?t/m:0,memPct:m>0?i/m:0}},[r]),p=async t=>{try{const[i,m,j,D,o]=await Promise.all([w.getNodes(t).catch(()=>[]),w.getPods(t).catch(()=>[]),w.getDeployments(t).catch(()=>[]),w.getServices(t).catch(()=>[]),w.getIngresses(t).catch(()=>[])]),l=N=>Array.isArray(N)?N:N?.list||[];g(l(i)),u(l(m)),K(l(j)),C(l(D)),f(l(o))}catch(i){console.error("加载集群详情失败:",i)}};return n.useEffect(()=>{a?.id&&p(a.id)},[a?.id]),e.jsxs(O,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:81:5",className:"bg-slate-900 border-slate-800",children:[e.jsx(U,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:82:7",children:e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:83:9",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:84:11",className:"flex items-center gap-3",children:[e.jsx(ae,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:85:13",className:"h-6 w-6 text-blue-400"}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:86:13",children:[e.jsx(z,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:87:15",className:"text-slate-100",children:a.name}),e.jsxs(xe,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:88:15",className:"text-slate-500",children:[a.version," · ",a.node_count||0," 节点 · 创建于"," ",a.created_at?new Date(a.created_at).toLocaleDateString():"-"]})]})]}),e.jsxs(T,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:94:11",variant:"ghost",size:"sm",className:"text-slate-400 hover:text-slate-100",onClick:x,children:[e.jsx(pe,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:100:13",className:"h-4 w-4 mr-2"}),"关闭"]})]})}),e.jsx(G,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:105:7",children:e.jsxs(Je,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:106:9",defaultValue:"overview",className:"w-full",children:[e.jsxs(Ye,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:107:11",className:"bg-slate-800 border border-slate-700 flex-wrap h-auto",children:[e.jsx(A,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:108:13",value:"overview",className:"data-[state=active]:bg-slate-700",children:"概览"}),e.jsxs(A,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:111:13",value:"nodes",className:"data-[state=active]:bg-slate-700",children:["节点 (",r.length,")"]}),e.jsxs(A,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:114:13",value:"pods",className:"data-[state=active]:bg-slate-700",children:["Pod (",s.length,")"]}),e.jsxs(A,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:117:13",value:"deployments",className:"data-[state=active]:bg-slate-700",children:["Deployment (",d.length,")"]}),e.jsxs(A,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:120:13",value:"services",className:"data-[state=active]:bg-slate-700",children:["Service (",k.length,")"]}),e.jsxs(A,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:123:13",value:"ingresses",className:"data-[state=active]:bg-slate-700",children:["Ingress (",b.length,")"]}),e.jsx(A,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:126:13",value:"events",className:"data-[state=active]:bg-slate-700",children:"事件"})]}),e.jsx(M,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:131:11",value:"overview",className:"mt-4 space-y-4",children:e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:132:13",className:"grid grid-cols-1 lg:grid-cols-2 gap-4",children:[e.jsxs(O,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:133:15",className:"bg-slate-800/50 border-slate-700",children:[e.jsx(U,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:134:17",className:"pb-2",children:e.jsx(z,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:135:19",className:"text-sm text-slate-400",children:"资源使用趋势"})}),e.jsxs(G,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:137:17",children:[e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:138:19",className:"h-[200px]",children:e.jsx(Ze,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:139:21",width:"100%",height:"100%",children:e.jsxs(rt,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:140:23",data:[{time:"CPU",cpu:Number(h.cpuPct.toFixed(1)),memory:Number(h.memPct.toFixed(1))}],children:[e.jsxs("defs",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:143:25",children:[e.jsxs("linearGradient",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:144:27",id:"colorCpu",x1:"0",y1:"0",x2:"0",y2:"1",children:[e.jsx("stop",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:145:29",offset:"5%",stopColor:"#3b82f6",stopOpacity:.3}),e.jsx("stop",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:146:29",offset:"95%",stopColor:"#3b82f6",stopOpacity:0})]}),e.jsxs("linearGradient",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:148:27",id:"colorMemory",x1:"0",y1:"0",x2:"0",y2:"1",children:[e.jsx("stop",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:149:29",offset:"5%",stopColor:"#10b981",stopOpacity:.3}),e.jsx("stop",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:150:29",offset:"95%",stopColor:"#10b981",stopOpacity:0})]})]}),e.jsx(Qe,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:153:25",strokeDasharray:"3 3",stroke:"#1e293b"}),e.jsx(et,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:154:25",dataKey:"time",stroke:"#475569",fontSize:12}),e.jsx(tt,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:155:25",stroke:"#475569",fontSize:12,domain:[0,100]}),e.jsx(st,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:156:25",contentStyle:{backgroundColor:"#0f172a",border:"1px solid #1e293b",borderRadius:"6px",color:"#f8fafc"}}),e.jsx(ee,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:164:25",type:"monotone",dataKey:"cpu",stroke:"#3b82f6",fillOpacity:1,fill:"url(#colorCpu)",name:"CPU(%)"}),e.jsx(ee,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:172:25",type:"monotone",dataKey:"memory",stroke:"#10b981",fillOpacity:1,fill:"url(#colorMemory)",name:"内存(%)"})]})})}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:183:19",className:"flex justify-center gap-6 mt-2 text-xs text-slate-400",children:[e.jsxs("span",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:184:21",children:["CPU: ",e.jsxs("span",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:184:32",className:"text-blue-400 font-bold",children:[h.cpuPct.toFixed(1),"%"]})]}),e.jsxs("span",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:185:21",children:["内存: ",e.jsxs("span",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:185:31",className:"text-emerald-400 font-bold",children:[h.memPct.toFixed(1),"%"]})]})]})]})]}),e.jsxs(O,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:190:15",className:"bg-slate-800/50 border-slate-700",children:[e.jsx(U,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:191:17",className:"pb-2",children:e.jsx(z,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:192:19",className:"text-sm text-slate-400",children:"资源分布"})}),e.jsx(G,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:194:17",children:e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:195:19",className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:196:21",className:"text-center p-4 rounded-lg bg-slate-800",children:[e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:197:23",className:"text-3xl font-bold text-blue-400",children:a.pod_count||0}),e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:198:23",className:"text-sm text-slate-500 mt-1",children:"Pod"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:200:21",className:"text-center p-4 rounded-lg bg-slate-800",children:[e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:201:23",className:"text-3xl font-bold text-emerald-400",children:a.service_count||0}),e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:202:23",className:"text-sm text-slate-500 mt-1",children:"Service"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:204:21",className:"text-center p-4 rounded-lg bg-slate-800",children:[e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:205:23",className:"text-3xl font-bold text-purple-400",children:a.deployment_count||0}),e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:206:23",className:"text-sm text-slate-500 mt-1",children:"Deployment"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:208:21",className:"text-center p-4 rounded-lg bg-slate-800",children:[e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:209:23",className:"text-3xl font-bold text-amber-400",children:a.node_count||0}),e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:210:23",className:"text-sm text-slate-500 mt-1",children:"节点"})]})]})})]})]})}),e.jsx(M,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:218:11",value:"nodes",className:"mt-4",children:e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:219:13",className:"border rounded-lg border-slate-700 overflow-hidden",children:e.jsxs("table",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:220:15",className:"w-full",children:[e.jsx("thead",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:221:17",className:"bg-slate-800",children:e.jsxs("tr",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:222:19",children:[e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:223:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"名称"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:224:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"角色"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:225:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"状态"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:226:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"CPU"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:227:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"内存"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:228:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"Pod"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:229:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"操作系统"})]})}),e.jsx("tbody",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:232:17",className:"divide-y divide-slate-800",children:r.length===0?e.jsx("tr",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:234:21",children:e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:235:23",colSpan:7,className:"px-4 py-8 text-center text-slate-500",children:"暂无节点数据"})}):r.map(t=>e.jsxs("tr",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:239:21",className:"hover:bg-slate-800/50",children:[e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:240:23",className:"px-4 py-3 text-sm text-slate-200",children:t.name}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:241:23",className:"px-4 py-3",children:e.jsx(y,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:242:25",variant:"outline",className:t.role==="master"?"border-purple-500/30 text-purple-400 bg-purple-500/10":"border-blue-500/30 text-blue-400 bg-blue-500/10",children:t.role==="master"?"Master":"Worker"})}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:253:23",className:"px-4 py-3",children:e.jsx(y,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:254:25",variant:"outline",className:(t.status||"").toLowerCase()==="ready"?"border-emerald-500/30 text-emerald-400 bg-emerald-500/10":"border-red-500/30 text-red-400 bg-red-500/10",children:(t.status||"").toLowerCase()==="ready"?"Ready":"NotReady"})}),e.jsxs("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:265:23",className:"px-4 py-3 text-sm text-slate-300",children:[t.cpu_usage_m||"0m"," / ",t.cpu,"核"]}),e.jsxs("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:268:23",className:"px-4 py-3 text-sm text-slate-300",children:[t.mem_usage_mi||"0Mi"," / ",t.memory_mb?(t.memory_mb/1024).toFixed(0)+"GB":"-"]}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:271:23",className:"px-4 py-3 text-sm text-slate-300",children:t.max_pods??0}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:272:23",className:"px-4 py-3 text-sm text-slate-400",children:t.os})]},t.id||t.name))})]})})}),e.jsx(M,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:281:11",value:"pods",className:"mt-4",children:e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:282:13",className:"border rounded-lg border-slate-700 overflow-hidden",children:e.jsxs("table",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:283:15",className:"w-full",children:[e.jsx("thead",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:284:17",className:"bg-slate-800",children:e.jsxs("tr",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:285:19",children:[e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:286:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"名称"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:287:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"命名空间"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:288:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"状态"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:289:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"重启次数"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:290:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"CPU"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:291:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"内存"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:292:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"节点"})]})}),e.jsx("tbody",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:295:17",className:"divide-y divide-slate-800",children:s.length===0?e.jsx("tr",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:297:21",children:e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:298:23",colSpan:7,className:"px-4 py-8 text-center text-slate-500",children:"暂无Pod数据"})}):s.map(t=>e.jsxs("tr",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:302:21",className:"hover:bg-slate-800/50",children:[e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:303:23",className:"px-4 py-3 text-sm text-slate-200",children:t.name}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:304:23",className:"px-4 py-3",children:e.jsx(y,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:305:25",variant:"outline",className:"border-slate-700 text-slate-400",children:t.namespace})}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:309:23",className:"px-4 py-3",children:e.jsx(y,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:310:25",variant:"outline",className:(t.status||"").toLowerCase()==="running"?"border-emerald-500/30 text-emerald-400 bg-emerald-500/10":(t.status||"").toLowerCase()==="pending"?"border-amber-500/30 text-amber-400 bg-amber-500/10":"border-red-500/30 text-red-400 bg-red-500/10",children:t.status})}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:323:23",className:"px-4 py-3 text-sm text-slate-300",children:t.restart_count??0}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:324:23",className:"px-4 py-3 text-sm text-slate-300",children:t.cpu_usage_m||"0m"}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:325:23",className:"px-4 py-3 text-sm text-slate-300",children:t.mem_usage_mi||"0Mi"}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:326:23",className:"px-4 py-3 text-sm text-slate-400",children:t.node_name})]},t.id||t.name))})]})})}),e.jsx(M,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:335:11",value:"deployments",className:"mt-4",children:e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:336:13",className:"border rounded-lg border-slate-700 overflow-hidden",children:e.jsxs("table",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:337:15",className:"w-full",children:[e.jsx("thead",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:338:17",className:"bg-slate-800",children:e.jsxs("tr",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:339:19",children:[e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:340:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"名称"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:341:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"命名空间"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:342:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"副本数"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:343:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"可用副本"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:344:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"镜像"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:345:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"创建时间"})]})}),e.jsx("tbody",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:348:17",className:"divide-y divide-slate-800",children:d.length===0?e.jsx("tr",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:350:21",children:e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:351:23",colSpan:6,className:"px-4 py-8 text-center text-slate-500",children:"暂无Deployment数据"})}):d.map(t=>e.jsxs("tr",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:355:21",className:"hover:bg-slate-800/50",children:[e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:356:23",className:"px-4 py-3 text-sm text-slate-200",children:t.name}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:357:23",className:"px-4 py-3",children:e.jsx(y,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:358:25",variant:"outline",className:"border-slate-700 text-slate-400",children:t.namespace})}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:362:23",className:"px-4 py-3 text-sm text-slate-300",children:t.replicas}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:363:23",className:"px-4 py-3",children:e.jsxs("span",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:364:25",className:`text-sm ${(t.available_replicas??t.availableReplicas)===t.replicas?"text-emerald-400":"text-amber-400"}`,children:[t.available_replicas??t.availableReplicas," / ",t.replicas]})}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:368:23",className:"px-4 py-3 text-sm text-slate-400 truncate max-w-[200px]",children:t.image}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:369:23",className:"px-4 py-3 text-sm text-slate-400",children:t.created_at||t.createdAt})]},t.id||t.name))})]})})}),e.jsx(M,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:378:11",value:"services",className:"mt-4",children:e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:379:13",className:"border rounded-lg border-slate-700 overflow-hidden",children:e.jsxs("table",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:380:15",className:"w-full",children:[e.jsx("thead",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:381:17",className:"bg-slate-800",children:e.jsxs("tr",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:382:19",children:[e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:383:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"名称"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:384:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"命名空间"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:385:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"类型"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:386:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"ClusterIP"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:387:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"端口"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:388:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"Selector"})]})}),e.jsx("tbody",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:391:17",className:"divide-y divide-slate-800",children:k.length===0?e.jsx("tr",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:393:21",children:e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:394:23",colSpan:6,className:"px-4 py-8 text-center text-slate-500",children:"暂无Service数据"})}):k.map(t=>e.jsxs("tr",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:398:21",className:"hover:bg-slate-800/50",children:[e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:399:23",className:"px-4 py-3 text-sm text-slate-200",children:t.name}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:400:23",className:"px-4 py-3",children:e.jsx(y,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:401:25",variant:"outline",className:"border-slate-700 text-slate-400",children:t.namespace})}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:405:23",className:"px-4 py-3",children:e.jsx(y,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:406:25",variant:"outline",className:t.type==="ClusterIP"?"border-blue-500/30 text-blue-400 bg-blue-500/10":t.type==="NodePort"?"border-purple-500/30 text-purple-400 bg-purple-500/10":"border-emerald-500/30 text-emerald-400 bg-emerald-500/10",children:t.type})}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:419:23",className:"px-4 py-3 text-sm text-slate-300",children:t.cluster_ip??t.clusterIP}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:420:23",className:"px-4 py-3 text-sm text-slate-300",children:t.ports}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:421:23",className:"px-4 py-3 text-sm text-slate-400",children:t.selector})]},t.id||t.name))})]})})}),e.jsx(M,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:430:11",value:"ingresses",className:"mt-4",children:e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:431:13",className:"border rounded-lg border-slate-700 overflow-hidden",children:e.jsxs("table",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:432:15",className:"w-full",children:[e.jsx("thead",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:433:17",className:"bg-slate-800",children:e.jsxs("tr",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:434:19",children:[e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:435:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"名称"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:436:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"命名空间"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:437:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"Hosts"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:438:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"后端服务"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:439:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"TLS"})]})}),e.jsx("tbody",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:442:17",className:"divide-y divide-slate-800",children:b.length===0?e.jsx("tr",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:444:21",children:e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:445:23",colSpan:5,className:"px-4 py-8 text-center text-slate-500",children:"暂无Ingress数据"})}):b.map(t=>e.jsxs("tr",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:449:21",className:"hover:bg-slate-800/50",children:[e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:450:23",className:"px-4 py-3 text-sm text-slate-200",children:t.name}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:451:23",className:"px-4 py-3",children:e.jsx(y,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:452:25",variant:"outline",className:"border-slate-700 text-slate-400",children:t.namespace})}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:456:23",className:"px-4 py-3 text-sm text-slate-300",children:t.hosts}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:457:23",className:"px-4 py-3 text-sm text-slate-300",children:t.backend}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:458:23",className:"px-4 py-3",children:e.jsx(y,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:459:25",variant:"outline",className:t.tls?"border-emerald-500/30 text-emerald-400 bg-emerald-500/10":"border-slate-700 text-slate-400",children:t.tls?"已启用":"未启用"})})]},t.id||t.name))})]})})}),e.jsx(M,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:478:11",value:"events",className:"mt-4",children:e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:479:13",className:"space-y-2",children:[{type:"Normal",reason:"Started",message:"Started container nginx",time:"2分钟前"},{type:"Normal",reason:"Created",message:"Created pod nginx-deployment-xxx",time:"5分钟前"},{type:"Warning",reason:"FailedScheduling",message:"0/3 nodes are available",time:"10分钟前"},{type:"Normal",reason:"Pulling",message:'Pulling image "nginx:latest"',time:"15分钟前"},{type:"Normal",reason:"Pulled",message:"Successfully pulled image",time:"12分钟前"}].map((t,i)=>e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:487:17",className:"flex items-center gap-3 p-3 rounded-lg bg-slate-800/50",children:[e.jsx(y,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:491:19",variant:"outline",className:t.type==="Normal"?"border-emerald-500/30 text-emerald-400 bg-emerald-500/10":"border-amber-500/30 text-amber-400 bg-amber-500/10",children:t.type}),e.jsx("span",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:501:19",className:"text-sm font-medium text-slate-300 min-w-[120px]",children:t.reason}),e.jsx("span",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:502:19",className:"text-sm text-slate-400 flex-1",children:t.message}),e.jsx("span",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:503:19",className:"text-xs text-slate-500",children:t.time})]},i))})})]})})]})}var J="Radio",[ht,me]=oe(J),[gt,Ct]=ht(J),be=n.forwardRef((a,x)=>{const{__scopeRadio:r,name:g,checked:s=!1,required:u,disabled:d,value:K="on",onCheck:k,form:C,...b}=a,[f,h]=n.useState(null),p=X(x,m=>h(m)),t=n.useRef(!1),i=f?C||!!f.closest("form"):!0;return e.jsxs(gt,{scope:r,checked:s,disabled:d,children:[e.jsx($.button,{type:"button",role:"radio","aria-checked":s,"data-state":ke(s),"data-disabled":d?"":void 0,disabled:d,value:K,...b,ref:p,onClick:H(a.onClick,m=>{s||k?.(),i&&(t.current=m.isPropagationStopped(),t.current||m.stopPropagation())})}),i&&e.jsx(Ce,{control:f,bubbles:!t.current,name:g,value:K,checked:s,required:u,disabled:d,form:C,style:{transform:"translateX(-100%)"}})]})});be.displayName=J;var he="RadioIndicator",ge=n.forwardRef((a,x)=>{const{__scopeRadio:r,forceMount:g,...s}=a,u=Ct(he,r);return e.jsx(Ee,{present:g||u.checked,children:e.jsx($.span,{"data-state":ke(u.checked),"data-disabled":u.disabled?"":void 0,...s,ref:x})})});ge.displayName=he;var kt="RadioBubbleInput",Ce=n.forwardRef(({__scopeRadio:a,control:x,checked:r,bubbles:g=!0,...s},u)=>{const d=n.useRef(null),K=X(d,u),k=nt(r),C=Ae(x);return n.useEffect(()=>{const b=d.current;if(!b)return;const f=window.HTMLInputElement.prototype,p=Object.getOwnPropertyDescriptor(f,"checked").set;if(k!==r&&p){const t=new Event("click",{bubbles:g});p.call(b,r),b.dispatchEvent(t)}},[k,r,g]),e.jsx($.input,{type:"radio","aria-hidden":!0,defaultChecked:r,...s,tabIndex:-1,ref:K,style:{...s.style,...C,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});Ce.displayName=kt;function ke(a){return a?"checked":"unchecked"}var ft=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],W="RadioGroup",[jt]=oe(W,[ce,me]),fe=ce(),je=me(),[Kt,vt]=jt(W),Ke=n.forwardRef((a,x)=>{const{__scopeRadioGroup:r,name:g,defaultValue:s,value:u,required:d=!1,disabled:K=!1,orientation:k,dir:C,loop:b=!0,onValueChange:f,...h}=a,p=fe(r),t=_e(C),[i,m]=Re({prop:u,defaultProp:s??null,onChange:f,caller:W});return e.jsx(Kt,{scope:r,name:g,required:d,disabled:K,value:i,onValueChange:m,children:e.jsx(Pe,{asChild:!0,...p,orientation:k,dir:t,loop:b,children:e.jsx($.div,{role:"radiogroup","aria-required":d,"aria-orientation":k,"data-disabled":K?"":void 0,dir:t,...h,ref:x})})})});Ke.displayName=W;var ve="RadioGroupItem",Ne=n.forwardRef((a,x)=>{const{__scopeRadioGroup:r,disabled:g,...s}=a,u=vt(ve,r),d=u.disabled||g,K=fe(r),k=je(r),C=n.useRef(null),b=X(x,C),f=u.value===s.value,h=n.useRef(!1);return n.useEffect(()=>{const p=i=>{ft.includes(i.key)&&(h.current=!0)},t=()=>h.current=!1;return document.addEventListener("keydown",p),document.addEventListener("keyup",t),()=>{document.removeEventListener("keydown",p),document.removeEventListener("keyup",t)}},[]),e.jsx(Te,{asChild:!0,...K,focusable:!d,active:f,children:e.jsx(be,{disabled:d,required:u.required,checked:f,...k,...s,name:u.name,ref:b,onCheck:()=>u.onValueChange(s.value),onKeyDown:H(p=>{p.key==="Enter"&&p.preventDefault()}),onFocus:H(s.onFocus,()=>{h.current&&C.current?.click()})})})});Ne.displayName=ve;var Nt="RadioGroupIndicator",De=n.forwardRef((a,x)=>{const{__scopeRadioGroup:r,...g}=a,s=je(r);return e.jsx(ge,{...s,...g,ref:x})});De.displayName=Nt;var Dt=Ke,yt=Ne,wt=De;function St({className:a,...x}){return e.jsx(Dt,{"code-path":"src/components/ui/radio-group.tsx:14:5","data-slot":"radio-group",className:E("grid gap-3",a),...x})}function se({className:a,...x}){return e.jsx(yt,{"code-path":"src/components/ui/radio-group.tsx:27:5","data-slot":"radio-group-item",className:E("border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 aspect-square size-4 shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",a),...x,children:e.jsx(wt,{"code-path":"src/components/ui/radio-group.tsx:35:7","data-slot":"radio-group-indicator",className:"relative flex items-center justify-center",children:e.jsx(at,{"code-path":"src/components/ui/radio-group.tsx:39:9",className:"fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2"})})})}const re=/^[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?$/,ne={name:"",version:"",description:"",config_type:1,api_server:"",token:"",kube_config:""};function _t({open:a,onOpenChange:x,editingCluster:r,onSaved:g}){const[s,u]=n.useState({...ne}),[d,K]=n.useState(!1),[k,C]=n.useState(!1),[b,f]=n.useState(!1),[h,p]=n.useState("");n.useEffect(()=>{a&&(r&&r.id?w.getClusterDetail(r.id).then(o=>{const l=o||{};C(!!l.has_token),f(!!l.has_kube_config),u({name:l.name||"",version:l.version||"",description:l.description||"",config_type:Number(l.config_type??1),api_server:l.api_server||"",token:"",kube_config:""}),p("")}).catch(()=>{u({name:r.name||"",version:r.version||"",description:r.description||"",config_type:Number(r.config_type??1),api_server:r.api_server||"",token:"",kube_config:""}),p("")}):(C(!1),f(!1),u({...ne}),p("")))},[a,r]);const t=o=>{u({...s,name:o}),o.trim()?re.test(o)?p(""):p("只允许英文、数字和连字符(-),首尾不能是连字符"):p("")},i=o=>{const l=o.match(/^\s*server:\s*(\S+)\s*$/m);return l?l[1]:""},m=o=>{const l=i(o);u(N=>({...N,kube_config:o,api_server:l||N.api_server}))},j=async()=>{if(!s.name.trim()||!re.test(s.name.trim())){I.error("请输入有效的集群名称(英文/数字/连字符)");return}try{K(!0);const o={name:s.name.trim(),code:s.name.trim(),version:s.version,description:s.description,config_type:s.config_type,api_server:s.api_server,token:s.config_type===0?s.token:"",kube_config:s.config_type===1?s.kube_config:""};r?await w.updateCluster(r.id,o):await w.createCluster(o),x(!1),g()}catch(o){console.error("保存集群失败:",o)}finally{K(!1)}},D=d||!s.name.trim()||!!h;return e.jsx(le,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:143:5",open:a,onOpenChange:x,children:e.jsxs(ue,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:144:7",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] max-w-2xl",children:[e.jsxs(Me,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:145:9",children:[e.jsx(de,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:146:11",className:"text-[var(--dg-text-primary)]",children:r?"编辑集群":"添加集群"}),e.jsx(ie,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:149:11",className:"text-[var(--dg-text-secondary)]",children:r?"修改集群接入配置":"配置新的 Kubernetes 集群接入信息"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:153:9",className:"space-y-4 py-2 max-h-[60vh] overflow-y-auto pr-1",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:154:11",className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:155:13",className:"space-y-2",children:[e.jsx(P,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:156:15",className:"text-[var(--dg-text-secondary)]",children:"集群名称"}),e.jsx(B,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:157:15",value:s.name,onChange:o=>t(o.target.value),placeholder:"如: prod-cluster",className:`bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] placeholder:text-[var(--dg-text-muted)] ${h?"border-red-500":""}`}),h&&e.jsx("p",{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:163:29",className:"text-xs text-red-400",children:h}),e.jsx("p",{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:164:15",className:"text-xs text-[var(--dg-text-muted)]",children:"只允许英文、数字和连字符(-),首尾不能是连字符。名称将作为集群唯一标识。"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:168:13",className:"space-y-2",children:[e.jsx(P,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:169:15",className:"text-[var(--dg-text-secondary)]",children:"版本(可选)"}),e.jsx(B,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:170:15",value:s.version,onChange:o=>u({...s,version:o.target.value}),placeholder:"如: 1.28.0",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] placeholder:text-[var(--dg-text-muted)]"})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:179:11",className:"space-y-2",children:[e.jsx(P,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:180:13",className:"text-[var(--dg-text-secondary)]",children:"描述"}),e.jsx(B,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:181:13",value:s.description,onChange:o=>u({...s,description:o.target.value}),placeholder:"集群用途描述",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] placeholder:text-[var(--dg-text-muted)]"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:189:11",className:"space-y-2",children:[e.jsx(P,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:190:13",className:"text-[var(--dg-text-secondary)]",children:"接入方式"}),e.jsxs(St,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:191:13",value:String(s.config_type),onValueChange:o=>u({...s,config_type:Number(o)}),className:"flex gap-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:196:15",className:"flex items-center gap-2 px-3 py-2 rounded-md border border-[var(--dg-border)] cursor-pointer hover:bg-[var(--dg-bg-hover)]",children:[e.jsx(se,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:197:17",value:"0",id:"ct-0"}),e.jsx(P,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:198:17",htmlFor:"ct-0",className:"cursor-pointer text-[var(--dg-text-primary)] font-normal",children:"Token"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:200:15",className:"flex items-center gap-2 px-3 py-2 rounded-md border border-[var(--dg-border)] cursor-pointer hover:bg-[var(--dg-bg-hover)]",children:[e.jsx(se,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:201:17",value:"1",id:"ct-1"}),e.jsx(P,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:202:17",htmlFor:"ct-1",className:"cursor-pointer text-[var(--dg-text-primary)] font-normal",children:"Kubeconfig"})]})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:207:11",className:"space-y-2",children:[e.jsx(P,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:208:13",className:"text-[var(--dg-text-secondary)]",children:"API Server"}),e.jsx(B,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:209:13",value:s.api_server,onChange:o=>u({...s,api_server:o.target.value}),placeholder:"https://10.0.0.1:6443",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] placeholder:text-[var(--dg-text-muted)]"})]}),s.config_type===0?e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:218:13",className:"space-y-2",children:[e.jsxs(P,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:219:15",className:"text-[var(--dg-text-secondary)]",children:["Token ",k&&e.jsx("span",{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:220:36",className:"text-emerald-400 text-xs ml-1",children:"✓ 已配置(留空不修改)"})]}),e.jsx(te,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:222:15",value:s.token,onChange:o=>u({...s,token:o.target.value}),placeholder:k?"已配置,输入新值覆盖...":"粘贴 Service Account Token...",rows:4,className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] placeholder:text-[var(--dg-text-muted)] font-mono text-xs"})]}):e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:231:13",className:"space-y-2",children:[e.jsxs(P,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:232:15",className:"text-[var(--dg-text-secondary)]",children:["Kubeconfig ",b&&e.jsx("span",{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:233:46",className:"text-emerald-400 text-xs ml-1",children:"✓ 已配置(留空不修改)"})]}),e.jsx(te,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:235:15",value:s.kube_config,onChange:o=>m(o.target.value),placeholder:b?"已配置,输入新值覆盖...":`apiVersion: v1 +kind: Config +clusters: +- cluster: + server: https://10.0.0.1:6443 + ...`,rows:10,className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] placeholder:text-[var(--dg-text-muted)] font-mono text-xs"}),!b&&e.jsx("p",{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:243:17",className:"text-xs text-[var(--dg-text-muted)]",children:"粘贴 kubeconfig 内容后将自动解析 API Server 地址"})]})]}),e.jsxs(Ie,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:250:9",children:[e.jsx(T,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:251:11",variant:"outline",onClick:()=>{x(!1)},className:"border-[var(--dg-border)] text-[var(--dg-text-secondary)] hover:text-[var(--dg-text-primary)] hover:bg-[var(--dg-bg-hover)]",children:"取消"}),e.jsx(T,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:258:11",onClick:j,disabled:D,className:"bg-[var(--dg-blue)] hover:opacity-90 text-white",children:d?"保存中...":r?"保存":"添加"})]})]})})}function Rt({open:a,onOpenChange:x,clusterId:r,clusterName:g}){const s=n.useRef(null),u=n.useRef(null),d=n.useRef(null),K=n.useRef(null),[k,C]=n.useState(!1),[b,f]=n.useState(!1),[h,p]=n.useState("");return n.useEffect(()=>{a||f(!1)},[a]),n.useEffect(()=>{if(!a||!r)return;const t=new ct.Terminal({cursorBlink:!0,fontSize:14,fontFamily:'Menlo, Monaco, "Courier New", monospace',allowProposedApi:!0,theme:{background:"#0f172a",foreground:"#e2e8f0",cursor:"#38bdf8",selectionBackground:"#1e40af",black:"#1e293b",red:"#ef4444",green:"#10b981",yellow:"#f59e0b",blue:"#3b82f6",magenta:"#a855f7",cyan:"#06b6d4",white:"#e2e8f0",brightBlack:"#475569",brightRed:"#f87171",brightGreen:"#34d399",brightYellow:"#fbbf24",brightBlue:"#60a5fa",brightMagenta:"#c084fc",brightCyan:"#22d3ee",brightWhite:"#f8fafc"}}),i=new ot.FitAddon;t.loadAddon(i),u.current=t,K.current=i;const j=`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}`,D=Fe.getState().token||"",o=`${j.replace(/^http/,"ws").replace("/api/v1","")}/ws/kubectl?token=${encodeURIComponent(D)}&id=${r}`,l=new WebSocket(o);return d.current=l,t.onData(N=>{l.readyState===WebSocket.OPEN&&l.send(JSON.stringify({status:0,data:N}))}),l.onmessage=N=>{try{const _=JSON.parse(N.data);_.status===0&&typeof _.data=="string"&&t.write(_.data)}catch{typeof N.data=="string"&&t.write(N.data)}},l.onopen=()=>{C(!0),p(""),s.current&&(t.open(s.current),requestAnimationFrame(()=>{try{i.fit()}catch{}}),setTimeout(()=>{try{t.focus()}catch{}},150))},l.onclose=()=>{C(!1),t.write(`\r +\x1B[31m[连接已断开]\x1B[0m\r +`)},l.onerror=()=>{p("WebSocket 连接失败"),t.write(`\r +\x1B[31m[连接发生错误]\x1B[0m\r +`)},()=>{try{(l.readyState===WebSocket.OPEN||l.readyState===WebSocket.CONNECTING)&&l.close(),t.dispose()}catch{}u.current=null,d.current=null,C(!1)}},[a,r]),n.useEffect(()=>{if(!a)return;const t=s.current;if(!t)return;let i;const m=new ResizeObserver(()=>{clearTimeout(i),i=setTimeout(()=>{if(K.current&&u.current&&d.current)try{K.current.fit(),u.current.focus();const{cols:j,rows:D}=u.current;d.current.readyState===WebSocket.OPEN&&d.current.send(JSON.stringify({status:1,cols:j,rows:D}))}catch{}},60)});return m.observe(t),()=>{clearTimeout(i),m.disconnect()}},[a]),e.jsx(le,{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:161:5",open:a,onOpenChange:x,children:e.jsxs(ue,{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:162:7",showCloseButton:!1,onOpenAutoFocus:t=>t.preventDefault(),className:E("bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] p-0 gap-0","!duration-0 !transition-none",b?"!max-w-none !w-screen !h-screen !rounded-none !translate-x-0 !translate-y-0 !left-0 !top-0":""),style:b?{maxWidth:"100vw",width:"100vw",height:"100vh"}:{maxWidth:"900px",width:"90vw"},children:[e.jsxs(de,{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:174:9",className:"sr-only",children:["kubectl — ",g]}),e.jsx(ie,{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:175:9",className:"sr-only",children:"Kubernetes 集群命令行终端"}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:178:9",className:"flex items-center justify-between px-4 py-2 border-b border-[var(--dg-border)]",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:179:11",className:"flex items-center gap-2 text-sm",children:[e.jsx("div",{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:180:13",className:E("w-2 h-2 rounded-full",k?"bg-emerald-400":h?"bg-red-400":"bg-yellow-400")}),e.jsx(Oe,{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:181:13",className:"h-4 w-4 text-blue-400"}),e.jsxs("span",{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:182:13",className:"text-[var(--dg-text-primary)] font-medium",children:["kubectl — ",g]}),!k&&!h&&e.jsx(Ge,{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:183:38",className:"h-3 w-3 animate-spin text-[var(--dg-text-muted)]"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:185:11",className:"flex items-center gap-1",children:[e.jsx("button",{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:186:13",onClick:()=>f(!b),className:"p-1.5 rounded hover:bg-[var(--dg-bg-hover)] text-[var(--dg-text-secondary)]",children:b?e.jsx(lt,{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:190:29",className:"h-4 w-4"}):e.jsx(ut,{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:190:65",className:"h-4 w-4"})}),e.jsx("button",{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:192:13",onClick:()=>x(!1),className:"p-1.5 rounded hover:bg-[var(--dg-bg-hover)] text-[var(--dg-text-secondary)]",children:e.jsx(Le,{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:196:15",className:"h-4 w-4"})})]})]}),e.jsx("div",{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:202:9",ref:s,className:"bg-[#0f172a]",style:{height:b?"calc(100vh - 49px)":"480px"}})]})})}function Qt(){const[a,x]=n.useState([]),[r,g]=n.useState(!0),[s,u]=n.useState(null),[d,K]=n.useState(""),[k,C]=n.useState(!1),[b,f]=n.useState(null),[h,p]=n.useState(null),[t,i]=n.useState(!1),[m,j]=n.useState(null),[D,o]=n.useState(!1),l=async()=>{try{g(!0);const c=await w.getClusters();x(c?.list||[])}catch(c){console.error("加载集群列表失败:",c),x([])}finally{g(!1)}};n.useEffect(()=>{l()},[]);const[,N]=n.useState(null),_=()=>{l().then(()=>{b||setTimeout(async()=>{const v=(await w.getClusters())?.list||[];v.length>0&&L(v[v.length-1].id,!0)},500)})},V=async c=>{try{await w.deleteCluster(c),l()}catch(v){console.error("删除集群失败:",v)}},L=async(c,v)=>{try{v||I.info("正在同步集群资源...");const R=await w.syncCluster(c);v||I.success(R?.message||"同步完成"),l()}catch(R){v||I.error(R?.message||"同步失败")}},ye=async()=>{if(!m)return;const c=m.code||String(m.id);try{o(!0),I.info(`正在导出 ${m.name} 所有命名空间的资源...`),await w.exportAllResources(c),I.success("导出完成,已开始下载"),j(null)}catch(v){I.error(v?.message||"导出失败")}finally{o(!1)}},Y=a.filter(c=>(c.name||"").toLowerCase().includes(d.toLowerCase())||(c.version||"").includes(d)),we=c=>{switch(c){case"healthy":return e.jsxs(y,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:138:11",variant:"outline",className:"border-emerald-500/30 text-emerald-400 bg-emerald-500/10",children:[e.jsx(Xe,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:139:13",className:"h-3 w-3 mr-1"}),"健康"]});case"warning":return e.jsxs(y,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:145:11",variant:"outline",className:"border-amber-500/30 text-amber-400 bg-amber-500/10",children:[e.jsx(He,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:146:13",className:"h-3 w-3 mr-1"}),"警告"]});case"error":return e.jsxs(y,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:152:11",variant:"outline",className:"border-red-500/30 text-red-400 bg-red-500/10",children:[e.jsx(pe,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:153:13",className:"h-3 w-3 mr-1"}),"异常"]});default:return null}},Z=s?a.find(c=>c.id===s):null;return e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:165:5",className:"space-y-6",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:167:7",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:168:9",children:[e.jsx("h1",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:169:11",className:"text-2xl font-bold text-slate-100",children:"集群列表"}),e.jsx("p",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:170:11",className:"text-sm text-slate-500 mt-1",children:"管理Kubernetes集群资源"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:172:9",className:"flex items-center gap-2",children:[e.jsxs(T,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:173:11",variant:"outline",className:"border-slate-700 text-slate-300 hover:text-slate-100 hover:bg-slate-800",onClick:l,children:[e.jsx(q,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:178:13",className:E("h-4 w-4 mr-2",r&&"animate-spin")}),"刷新"]}),e.jsxs(T,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:181:11",className:"bg-blue-600 hover:bg-blue-700 text-white",onClick:()=>{f(null),C(!0)},children:[e.jsx(dt,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:182:13",className:"h-4 w-4 mr-2"}),"添加集群"]})]})]}),e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:189:7",className:"flex items-center gap-3",children:e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:190:9",className:"relative w-80",children:[e.jsx(it,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:191:11",className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-slate-500"}),e.jsx(B,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:192:11",placeholder:"搜索集群名称或版本...",value:d,onChange:c=>K(c.target.value),className:"pl-9 h-9 bg-slate-800/50 border-slate-700 text-slate-200 placeholder:text-slate-500"})]})}),e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:202:7",className:"grid grid-cols-1 lg:grid-cols-2 xl:grid-cols-3 gap-4",children:r?e.jsx(O,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:204:11",className:"bg-slate-900 border-slate-800 col-span-full",children:e.jsxs(G,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:205:13",className:"p-12 text-center text-slate-500",children:[e.jsx(q,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:206:15",className:"h-6 w-6 animate-spin mx-auto mb-3"}),"加载中..."]})}):Y.length===0?e.jsx(O,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:211:11",className:"bg-slate-900 border-slate-800 col-span-full",children:e.jsx(G,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:212:13",className:"p-12 text-center text-slate-500",children:"暂无集群数据"})}):Y.map(c=>{const v=Number(c.cpu_usage||0),R=Number(c.memory_usage||0),Se=v>0||R>0;return e.jsxs(O,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:220:15",className:E("bg-slate-900 border-slate-800 cursor-pointer transition-all",s===c.id?"border-blue-500 ring-1 ring-blue-500/30":"hover:border-slate-700"),onClick:()=>u(c.id),children:[e.jsx(U,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:230:17",className:"pb-3",children:e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:231:19",className:"flex items-start justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:232:21",className:"flex items-center gap-3",children:[e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:233:23",className:"w-10 h-10 rounded-lg bg-blue-500/10 flex items-center justify-center",children:e.jsx(ae,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:234:25",className:"h-5 w-5 text-blue-400"})}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:236:23",children:[e.jsx(z,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:237:25",className:"text-base text-slate-100",children:c.name}),e.jsx(xe,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:238:25",className:"text-slate-500",children:c.version})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:241:21",className:"flex items-center gap-1",children:[we(c.status),e.jsxs(Be,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:243:23",children:[e.jsx(Ue,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:244:25",asChild:!0,children:e.jsx(T,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:245:27",variant:"ghost",size:"icon",className:"h-8 w-8 text-slate-400 hover:text-slate-100",onClick:S=>S.stopPropagation(),children:e.jsx(xt,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:251:29",className:"h-4 w-4"})})}),e.jsxs(ze,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:254:25",align:"end",className:"w-48 bg-slate-800 border-slate-700",children:[e.jsx($e,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:255:27",className:"text-slate-300",children:"操作"}),e.jsx(Q,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:256:27",className:"bg-slate-700"}),e.jsxs(F,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:257:27",className:"text-slate-300 focus:bg-slate-700 focus:text-slate-100",children:[e.jsx(We,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:258:29",className:"h-4 w-4 mr-2"}),"查看详情"]}),e.jsxs(F,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:261:27",className:"text-slate-300 focus:bg-slate-700 focus:text-slate-100",onClick:S=>{S.stopPropagation(),f(c),C(!0)},children:[e.jsx(Ve,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:269:29",className:"h-4 w-4 mr-2"}),"配置"]}),e.jsxs(F,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:272:27",className:"text-cyan-400 focus:bg-slate-700 focus:text-cyan-300",onClick:S=>{S.stopPropagation(),L(c.id)},children:[e.jsx(q,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:279:29",className:"h-4 w-4 mr-2"}),"同步"]}),e.jsxs(F,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:282:27",className:"text-emerald-400 focus:bg-slate-700 focus:text-emerald-300",onClick:S=>{S.stopPropagation(),p({id:c.id,name:c.name}),i(!0)},children:[e.jsx(qe,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:290:29",className:"h-4 w-4 mr-2"}),"kubectl"]}),e.jsxs(F,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:293:27",className:"text-blue-400 focus:bg-slate-700 focus:text-blue-300",onClick:S=>{S.stopPropagation(),j(c)},children:[e.jsx(pt,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:300:29",className:"h-4 w-4 mr-2"}),"导出资源"]}),e.jsx(Q,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:303:27",className:"bg-slate-700"}),e.jsxs(F,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:304:27",className:"text-red-400 focus:bg-slate-700 focus:text-red-400",onClick:S=>{S.stopPropagation(),V(c.id)},children:[e.jsx(mt,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:311:29",className:"h-4 w-4 mr-2"}),"删除"]})]})]})]})]})}),e.jsxs(G,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:319:17",className:"pt-0",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:320:19",className:"grid grid-cols-4 gap-2 mb-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:321:21",className:"text-center p-2 rounded-lg bg-slate-800/50",children:[e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:322:23",className:"text-lg font-semibold text-slate-200",children:c.node_count||0}),e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:323:23",className:"text-xs text-slate-500",children:"节点"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:325:21",className:"text-center p-2 rounded-lg bg-slate-800/50",children:[e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:326:23",className:"text-lg font-semibold text-slate-200",children:c.pod_count||0}),e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:327:23",className:"text-xs text-slate-500",children:"Pod"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:329:21",className:"text-center p-2 rounded-lg bg-slate-800/50",children:[e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:330:23",className:"text-lg font-semibold text-slate-200",children:c.service_count||0}),e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:331:23",className:"text-xs text-slate-500",children:"Service"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:333:21",className:"text-center p-2 rounded-lg bg-slate-800/50",children:[e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:334:23",className:"text-lg font-semibold text-slate-200",children:c.deployment_count||0}),e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:335:23",className:"text-xs text-slate-500",children:"Deployment"})]})]}),e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:338:19",className:"space-y-2",children:Se?e.jsxs(e.Fragment,{children:[e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:341:25",className:"flex items-center gap-2",children:[e.jsx("span",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:342:27",className:"text-xs text-slate-500 w-10",children:"CPU"}),e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:343:27",className:"flex-1 h-1.5 bg-slate-800 rounded-full overflow-hidden",children:e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:344:29",className:E("h-full rounded-full",v>80?"bg-red-400":v>60?"bg-amber-400":"bg-emerald-400"),style:{width:`${Math.min(v,100)}%`}})}),e.jsxs("span",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:352:27",className:"text-xs text-slate-400 w-10 text-right",children:[v.toFixed(1),"%"]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:354:25",className:"flex items-center gap-2",children:[e.jsx("span",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:355:27",className:"text-xs text-slate-500 w-10",children:"内存"}),e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:356:27",className:"flex-1 h-1.5 bg-slate-800 rounded-full overflow-hidden",children:e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:357:29",className:E("h-full rounded-full",R>80?"bg-red-400":R>60?"bg-amber-400":"bg-emerald-400"),style:{width:`${Math.min(R,100)}%`}})}),e.jsxs("span",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:365:27",className:"text-xs text-slate-400 w-10 text-right",children:[R.toFixed(1),"%"]})]})]}):e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:369:23",className:"text-xs text-slate-600 text-center",children:["已接入 ",c.node_count||0," 节点 · ",c.pod_count||0," Pod · 资源使用率待采集"]})})]})]},c.id)})}),Z&&e.jsx(bt,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:381:9",cluster:Z,onClose:()=>u(null)}),e.jsx(_t,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:385:7",open:k,onOpenChange:C,editingCluster:b,onSaved:_}),h&&e.jsx(Rt,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:394:9",open:t,onOpenChange:c=>{i(c),c||p(null)},clusterId:h.id,clusterName:h.name}),m&&e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:407:9",className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60",onClick:()=>j(null),children:e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:408:11",className:"bg-slate-900 border border-slate-700 rounded-lg p-5 w-96 shadow-xl",onClick:c=>c.stopPropagation(),children:[e.jsx("h3",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:409:13",className:"text-base font-semibold text-slate-100 mb-1",children:"导出集群资源"}),e.jsxs("p",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:410:13",className:"text-xs text-slate-400 mb-4",children:["导出 ",m.name," 所有命名空间的 Deployment、Service、Ingress、ConfigMap、Secret 为 tar.gz"]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:413:13",className:"flex justify-end gap-2",children:[e.jsx(T,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:414:15",variant:"outline",className:"border-slate-700 text-slate-300",onClick:()=>j(null),children:"取消"}),e.jsx(T,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:415:15",className:"bg-blue-600 hover:bg-blue-700 text-white",onClick:ye,disabled:D,children:D?"导出中...":"确认导出"})]})]})})]})}export{Qt as KubernetesClusters}; diff --git a/backend/static/assets/KubernetesClusters-CsRHjVkA.js b/backend/static/assets/KubernetesClusters-CsRHjVkA.js deleted file mode 100644 index b6e263a..0000000 --- a/backend/static/assets/KubernetesClusters-CsRHjVkA.js +++ /dev/null @@ -1,10 +0,0 @@ -import{r as c,j as e,s as V,B as A,al as oe,aj as Re,af as Pe,ac as le,am as Te,ae as $,ag as Y,an as Ee,ah as X,ad as Ae,ai as Me,X as M,D as ue,b as de,c as Ie,d as ie,e as xe,I as B,f as Fe,W as Ge,H as Oe,L as Le,a5 as Be,a3 as ee,q as Ue,G as ze,S as $e,aK as We,aL as qe,aM as He,aN as Ve,aO as te,aP as O,U as Xe,E as Ye,v as Je,T as Ze}from"./index-DfyorCky.js";import{C as _,b as U,c as z,d as pe,a as R}from"./card-C55cvSHg.js";import{B as y}from"./badge-xNW8x0G1.js";import{k as w}from"./kubernetes-J8O09fK7.js";import{t as G}from"./index-a3ybMjbR.js";import{T as Qe,a as et,b as I,c as F}from"./tabs-CIh_yD4s.js";import{C as me}from"./circle-x-DK79Dhg2.js";import{R as tt,C as st,X as rt,Y as nt,T as at}from"./generateCategoricalChart-6v9BPbG2.js";import{A as ct,a as se}from"./AreaChart-B2zlWfdX.js";import{T as re}from"./textarea-NXY8u32k.js";import{L as E}from"./label-BK0h2apY.js";import{u as ot}from"./index-CWVNW_qu.js";import{C as lt}from"./circle-DOZr6_68.js";import{x as ut,a as dt}from"./xterm-DSqgeKvr.js";import{M as it,a as xt}from"./minimize-2-CiCQYRfn.js";import{R as H}from"./refresh-cw-DUB_tAG-.js";import{P as pt}from"./plus-CUG-9kpu.js";import{E as mt}from"./ellipsis-DU5enAwm.js";import{D as bt}from"./download-DoZfYs2h.js";import{T as ht}from"./trash-2-Dx32pOzT.js";function gt({cluster:n,onClose:x}){const[a,g]=c.useState([]),[s,u]=c.useState([]),[d,N]=c.useState([]),[k,C]=c.useState([]),[b,f]=c.useState([]),h=c.useMemo(()=>{if(!a||a.length===0)return{cpuPct:0,memPct:0};let t=0,i=0,m=0;for(const j of a){const D=j.cpu||0,o=j.cpu_usage_m?parseFloat(String(j.cpu_usage_m).replace("m","")):0,l=D>0?o/1e3/D*100:0,v=j.memory_mb||0,P=j.mem_usage_mi?parseFloat(String(j.mem_usage_mi).replace("Mi","").replace("Ki","")):0,q=j.mem_usage_mi?.includes?.("Ki")?P/1024:j.mem_usage_mi?.includes?.("Gi")?P*1024:P,L=v>0?q/v*100:0;(l>0||L>0)&&(t+=l,i+=L,m++)}return{cpuPct:m>0?t/m:0,memPct:m>0?i/m:0}},[a]),p=async t=>{try{const[i,m,j,D,o]=await Promise.all([w.getNodes(t).catch(()=>[]),w.getPods(t).catch(()=>[]),w.getDeployments(t).catch(()=>[]),w.getServices(t).catch(()=>[]),w.getIngresses(t).catch(()=>[])]),l=v=>Array.isArray(v)?v:v?.list||[];g(l(i)),u(l(m)),N(l(j)),C(l(D)),f(l(o))}catch(i){console.error("加载集群详情失败:",i)}};return c.useEffect(()=>{n?.id&&p(n.id)},[n?.id]),e.jsxs(_,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:81:5",className:"bg-slate-900 border-slate-800",children:[e.jsx(U,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:82:7",children:e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:83:9",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:84:11",className:"flex items-center gap-3",children:[e.jsx(V,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:85:13",className:"h-6 w-6 text-blue-400"}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:86:13",children:[e.jsx(z,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:87:15",className:"text-slate-100",children:n.name}),e.jsxs(pe,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:88:15",className:"text-slate-500",children:[n.version," · ",n.node_count||0," 节点 · 创建于"," ",n.created_at?new Date(n.created_at).toLocaleDateString():"-"]})]})]}),e.jsxs(A,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:94:11",variant:"ghost",size:"sm",className:"text-slate-400 hover:text-slate-100",onClick:x,children:[e.jsx(me,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:100:13",className:"h-4 w-4 mr-2"}),"关闭"]})]})}),e.jsx(R,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:105:7",children:e.jsxs(Qe,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:106:9",defaultValue:"overview",className:"w-full",children:[e.jsxs(et,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:107:11",className:"bg-slate-800 border border-slate-700 flex-wrap h-auto",children:[e.jsx(I,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:108:13",value:"overview",className:"data-[state=active]:bg-slate-700",children:"概览"}),e.jsxs(I,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:111:13",value:"nodes",className:"data-[state=active]:bg-slate-700",children:["节点 (",a.length,")"]}),e.jsxs(I,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:114:13",value:"pods",className:"data-[state=active]:bg-slate-700",children:["Pod (",s.length,")"]}),e.jsxs(I,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:117:13",value:"deployments",className:"data-[state=active]:bg-slate-700",children:["Deployment (",d.length,")"]}),e.jsxs(I,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:120:13",value:"services",className:"data-[state=active]:bg-slate-700",children:["Service (",k.length,")"]}),e.jsxs(I,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:123:13",value:"ingresses",className:"data-[state=active]:bg-slate-700",children:["Ingress (",b.length,")"]}),e.jsx(I,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:126:13",value:"events",className:"data-[state=active]:bg-slate-700",children:"事件"})]}),e.jsx(F,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:131:11",value:"overview",className:"mt-4 space-y-4",children:e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:132:13",className:"grid grid-cols-1 lg:grid-cols-2 gap-4",children:[e.jsxs(_,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:133:15",className:"bg-slate-800/50 border-slate-700",children:[e.jsx(U,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:134:17",className:"pb-2",children:e.jsx(z,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:135:19",className:"text-sm text-slate-400",children:"资源使用趋势"})}),e.jsxs(R,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:137:17",children:[e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:138:19",className:"h-[200px]",children:e.jsx(tt,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:139:21",width:"100%",height:"100%",children:e.jsxs(ct,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:140:23",data:[{time:"CPU",cpu:Number(h.cpuPct.toFixed(1)),memory:Number(h.memPct.toFixed(1))}],children:[e.jsxs("defs",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:143:25",children:[e.jsxs("linearGradient",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:144:27",id:"colorCpu",x1:"0",y1:"0",x2:"0",y2:"1",children:[e.jsx("stop",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:145:29",offset:"5%",stopColor:"#3b82f6",stopOpacity:.3}),e.jsx("stop",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:146:29",offset:"95%",stopColor:"#3b82f6",stopOpacity:0})]}),e.jsxs("linearGradient",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:148:27",id:"colorMemory",x1:"0",y1:"0",x2:"0",y2:"1",children:[e.jsx("stop",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:149:29",offset:"5%",stopColor:"#10b981",stopOpacity:.3}),e.jsx("stop",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:150:29",offset:"95%",stopColor:"#10b981",stopOpacity:0})]})]}),e.jsx(st,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:153:25",strokeDasharray:"3 3",stroke:"#1e293b"}),e.jsx(rt,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:154:25",dataKey:"time",stroke:"#475569",fontSize:12}),e.jsx(nt,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:155:25",stroke:"#475569",fontSize:12,domain:[0,100]}),e.jsx(at,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:156:25",contentStyle:{backgroundColor:"#0f172a",border:"1px solid #1e293b",borderRadius:"6px",color:"#f8fafc"}}),e.jsx(se,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:164:25",type:"monotone",dataKey:"cpu",stroke:"#3b82f6",fillOpacity:1,fill:"url(#colorCpu)",name:"CPU(%)"}),e.jsx(se,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:172:25",type:"monotone",dataKey:"memory",stroke:"#10b981",fillOpacity:1,fill:"url(#colorMemory)",name:"内存(%)"})]})})}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:183:19",className:"flex justify-center gap-6 mt-2 text-xs text-slate-400",children:[e.jsxs("span",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:184:21",children:["CPU: ",e.jsxs("span",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:184:32",className:"text-blue-400 font-bold",children:[h.cpuPct.toFixed(1),"%"]})]}),e.jsxs("span",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:185:21",children:["内存: ",e.jsxs("span",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:185:31",className:"text-emerald-400 font-bold",children:[h.memPct.toFixed(1),"%"]})]})]})]})]}),e.jsxs(_,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:190:15",className:"bg-slate-800/50 border-slate-700",children:[e.jsx(U,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:191:17",className:"pb-2",children:e.jsx(z,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:192:19",className:"text-sm text-slate-400",children:"资源分布"})}),e.jsx(R,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:194:17",children:e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:195:19",className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:196:21",className:"text-center p-4 rounded-lg bg-slate-800",children:[e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:197:23",className:"text-3xl font-bold text-blue-400",children:n.pod_count||0}),e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:198:23",className:"text-sm text-slate-500 mt-1",children:"Pod"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:200:21",className:"text-center p-4 rounded-lg bg-slate-800",children:[e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:201:23",className:"text-3xl font-bold text-emerald-400",children:n.service_count||0}),e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:202:23",className:"text-sm text-slate-500 mt-1",children:"Service"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:204:21",className:"text-center p-4 rounded-lg bg-slate-800",children:[e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:205:23",className:"text-3xl font-bold text-purple-400",children:n.deployment_count||0}),e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:206:23",className:"text-sm text-slate-500 mt-1",children:"Deployment"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:208:21",className:"text-center p-4 rounded-lg bg-slate-800",children:[e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:209:23",className:"text-3xl font-bold text-amber-400",children:n.node_count||0}),e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:210:23",className:"text-sm text-slate-500 mt-1",children:"节点"})]})]})})]})]})}),e.jsx(F,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:218:11",value:"nodes",className:"mt-4",children:e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:219:13",className:"border rounded-lg border-slate-700 overflow-hidden",children:e.jsxs("table",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:220:15",className:"w-full",children:[e.jsx("thead",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:221:17",className:"bg-slate-800",children:e.jsxs("tr",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:222:19",children:[e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:223:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"名称"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:224:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"角色"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:225:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"状态"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:226:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"CPU"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:227:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"内存"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:228:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"Pod"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:229:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"操作系统"})]})}),e.jsx("tbody",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:232:17",className:"divide-y divide-slate-800",children:a.length===0?e.jsx("tr",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:234:21",children:e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:235:23",colSpan:7,className:"px-4 py-8 text-center text-slate-500",children:"暂无节点数据"})}):a.map(t=>e.jsxs("tr",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:239:21",className:"hover:bg-slate-800/50",children:[e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:240:23",className:"px-4 py-3 text-sm text-slate-200",children:t.name}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:241:23",className:"px-4 py-3",children:e.jsx(y,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:242:25",variant:"outline",className:t.role==="master"?"border-purple-500/30 text-purple-400 bg-purple-500/10":"border-blue-500/30 text-blue-400 bg-blue-500/10",children:t.role==="master"?"Master":"Worker"})}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:253:23",className:"px-4 py-3",children:e.jsx(y,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:254:25",variant:"outline",className:(t.status||"").toLowerCase()==="ready"?"border-emerald-500/30 text-emerald-400 bg-emerald-500/10":"border-red-500/30 text-red-400 bg-red-500/10",children:(t.status||"").toLowerCase()==="ready"?"Ready":"NotReady"})}),e.jsxs("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:265:23",className:"px-4 py-3 text-sm text-slate-300",children:[t.cpu_usage_m||"0m"," / ",t.cpu,"核"]}),e.jsxs("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:268:23",className:"px-4 py-3 text-sm text-slate-300",children:[t.mem_usage_mi||"0Mi"," / ",t.memory_mb?(t.memory_mb/1024).toFixed(0)+"GB":"-"]}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:271:23",className:"px-4 py-3 text-sm text-slate-300",children:t.max_pods??0}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:272:23",className:"px-4 py-3 text-sm text-slate-400",children:t.os})]},t.id||t.name))})]})})}),e.jsx(F,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:281:11",value:"pods",className:"mt-4",children:e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:282:13",className:"border rounded-lg border-slate-700 overflow-hidden",children:e.jsxs("table",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:283:15",className:"w-full",children:[e.jsx("thead",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:284:17",className:"bg-slate-800",children:e.jsxs("tr",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:285:19",children:[e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:286:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"名称"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:287:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"命名空间"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:288:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"状态"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:289:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"重启次数"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:290:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"CPU"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:291:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"内存"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:292:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"节点"})]})}),e.jsx("tbody",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:295:17",className:"divide-y divide-slate-800",children:s.length===0?e.jsx("tr",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:297:21",children:e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:298:23",colSpan:7,className:"px-4 py-8 text-center text-slate-500",children:"暂无Pod数据"})}):s.map(t=>e.jsxs("tr",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:302:21",className:"hover:bg-slate-800/50",children:[e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:303:23",className:"px-4 py-3 text-sm text-slate-200",children:t.name}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:304:23",className:"px-4 py-3",children:e.jsx(y,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:305:25",variant:"outline",className:"border-slate-700 text-slate-400",children:t.namespace})}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:309:23",className:"px-4 py-3",children:e.jsx(y,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:310:25",variant:"outline",className:(t.status||"").toLowerCase()==="running"?"border-emerald-500/30 text-emerald-400 bg-emerald-500/10":(t.status||"").toLowerCase()==="pending"?"border-amber-500/30 text-amber-400 bg-amber-500/10":"border-red-500/30 text-red-400 bg-red-500/10",children:t.status})}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:323:23",className:"px-4 py-3 text-sm text-slate-300",children:t.restart_count??0}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:324:23",className:"px-4 py-3 text-sm text-slate-300",children:t.cpu_usage_m||"0m"}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:325:23",className:"px-4 py-3 text-sm text-slate-300",children:t.mem_usage_mi||"0Mi"}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:326:23",className:"px-4 py-3 text-sm text-slate-400",children:t.node_name})]},t.id||t.name))})]})})}),e.jsx(F,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:335:11",value:"deployments",className:"mt-4",children:e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:336:13",className:"border rounded-lg border-slate-700 overflow-hidden",children:e.jsxs("table",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:337:15",className:"w-full",children:[e.jsx("thead",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:338:17",className:"bg-slate-800",children:e.jsxs("tr",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:339:19",children:[e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:340:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"名称"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:341:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"命名空间"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:342:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"副本数"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:343:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"可用副本"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:344:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"镜像"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:345:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"创建时间"})]})}),e.jsx("tbody",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:348:17",className:"divide-y divide-slate-800",children:d.length===0?e.jsx("tr",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:350:21",children:e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:351:23",colSpan:6,className:"px-4 py-8 text-center text-slate-500",children:"暂无Deployment数据"})}):d.map(t=>e.jsxs("tr",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:355:21",className:"hover:bg-slate-800/50",children:[e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:356:23",className:"px-4 py-3 text-sm text-slate-200",children:t.name}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:357:23",className:"px-4 py-3",children:e.jsx(y,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:358:25",variant:"outline",className:"border-slate-700 text-slate-400",children:t.namespace})}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:362:23",className:"px-4 py-3 text-sm text-slate-300",children:t.replicas}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:363:23",className:"px-4 py-3",children:e.jsxs("span",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:364:25",className:`text-sm ${(t.available_replicas??t.availableReplicas)===t.replicas?"text-emerald-400":"text-amber-400"}`,children:[t.available_replicas??t.availableReplicas," / ",t.replicas]})}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:368:23",className:"px-4 py-3 text-sm text-slate-400 truncate max-w-[200px]",children:t.image}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:369:23",className:"px-4 py-3 text-sm text-slate-400",children:t.created_at||t.createdAt})]},t.id||t.name))})]})})}),e.jsx(F,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:378:11",value:"services",className:"mt-4",children:e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:379:13",className:"border rounded-lg border-slate-700 overflow-hidden",children:e.jsxs("table",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:380:15",className:"w-full",children:[e.jsx("thead",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:381:17",className:"bg-slate-800",children:e.jsxs("tr",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:382:19",children:[e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:383:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"名称"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:384:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"命名空间"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:385:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"类型"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:386:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"ClusterIP"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:387:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"端口"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:388:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"Selector"})]})}),e.jsx("tbody",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:391:17",className:"divide-y divide-slate-800",children:k.length===0?e.jsx("tr",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:393:21",children:e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:394:23",colSpan:6,className:"px-4 py-8 text-center text-slate-500",children:"暂无Service数据"})}):k.map(t=>e.jsxs("tr",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:398:21",className:"hover:bg-slate-800/50",children:[e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:399:23",className:"px-4 py-3 text-sm text-slate-200",children:t.name}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:400:23",className:"px-4 py-3",children:e.jsx(y,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:401:25",variant:"outline",className:"border-slate-700 text-slate-400",children:t.namespace})}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:405:23",className:"px-4 py-3",children:e.jsx(y,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:406:25",variant:"outline",className:t.type==="ClusterIP"?"border-blue-500/30 text-blue-400 bg-blue-500/10":t.type==="NodePort"?"border-purple-500/30 text-purple-400 bg-purple-500/10":"border-emerald-500/30 text-emerald-400 bg-emerald-500/10",children:t.type})}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:419:23",className:"px-4 py-3 text-sm text-slate-300",children:t.cluster_ip??t.clusterIP}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:420:23",className:"px-4 py-3 text-sm text-slate-300",children:t.ports}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:421:23",className:"px-4 py-3 text-sm text-slate-400",children:t.selector})]},t.id||t.name))})]})})}),e.jsx(F,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:430:11",value:"ingresses",className:"mt-4",children:e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:431:13",className:"border rounded-lg border-slate-700 overflow-hidden",children:e.jsxs("table",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:432:15",className:"w-full",children:[e.jsx("thead",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:433:17",className:"bg-slate-800",children:e.jsxs("tr",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:434:19",children:[e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:435:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"名称"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:436:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"命名空间"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:437:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"Hosts"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:438:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"后端服务"}),e.jsx("th",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:439:21",className:"px-4 py-3 text-left text-xs font-medium text-slate-400",children:"TLS"})]})}),e.jsx("tbody",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:442:17",className:"divide-y divide-slate-800",children:b.length===0?e.jsx("tr",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:444:21",children:e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:445:23",colSpan:5,className:"px-4 py-8 text-center text-slate-500",children:"暂无Ingress数据"})}):b.map(t=>e.jsxs("tr",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:449:21",className:"hover:bg-slate-800/50",children:[e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:450:23",className:"px-4 py-3 text-sm text-slate-200",children:t.name}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:451:23",className:"px-4 py-3",children:e.jsx(y,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:452:25",variant:"outline",className:"border-slate-700 text-slate-400",children:t.namespace})}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:456:23",className:"px-4 py-3 text-sm text-slate-300",children:t.hosts}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:457:23",className:"px-4 py-3 text-sm text-slate-300",children:t.backend}),e.jsx("td",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:458:23",className:"px-4 py-3",children:e.jsx(y,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:459:25",variant:"outline",className:t.tls?"border-emerald-500/30 text-emerald-400 bg-emerald-500/10":"border-slate-700 text-slate-400",children:t.tls?"已启用":"未启用"})})]},t.id||t.name))})]})})}),e.jsx(F,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:478:11",value:"events",className:"mt-4",children:e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:479:13",className:"space-y-2",children:[{type:"Normal",reason:"Started",message:"Started container nginx",time:"2分钟前"},{type:"Normal",reason:"Created",message:"Created pod nginx-deployment-xxx",time:"5分钟前"},{type:"Warning",reason:"FailedScheduling",message:"0/3 nodes are available",time:"10分钟前"},{type:"Normal",reason:"Pulling",message:'Pulling image "nginx:latest"',time:"15分钟前"},{type:"Normal",reason:"Pulled",message:"Successfully pulled image",time:"12分钟前"}].map((t,i)=>e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:487:17",className:"flex items-center gap-3 p-3 rounded-lg bg-slate-800/50",children:[e.jsx(y,{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:491:19",variant:"outline",className:t.type==="Normal"?"border-emerald-500/30 text-emerald-400 bg-emerald-500/10":"border-amber-500/30 text-amber-400 bg-amber-500/10",children:t.type}),e.jsx("span",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:501:19",className:"text-sm font-medium text-slate-300 min-w-[120px]",children:t.reason}),e.jsx("span",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:502:19",className:"text-sm text-slate-400 flex-1",children:t.message}),e.jsx("span",{"code-path":"src/components/kubernetes/KubernetesClusterDetail.tsx:503:19",className:"text-xs text-slate-500",children:t.time})]},i))})})]})})]})}var J="Radio",[Ct,be]=le(J),[kt,ft]=Ct(J),he=c.forwardRef((n,x)=>{const{__scopeRadio:a,name:g,checked:s=!1,required:u,disabled:d,value:N="on",onCheck:k,form:C,...b}=n,[f,h]=c.useState(null),p=Y(x,m=>h(m)),t=c.useRef(!1),i=f?C||!!f.closest("form"):!0;return e.jsxs(kt,{scope:a,checked:s,disabled:d,children:[e.jsx($.button,{type:"button",role:"radio","aria-checked":s,"data-state":fe(s),"data-disabled":d?"":void 0,disabled:d,value:N,...b,ref:p,onClick:X(n.onClick,m=>{s||k?.(),i&&(t.current=m.isPropagationStopped(),t.current||m.stopPropagation())})}),i&&e.jsx(ke,{control:f,bubbles:!t.current,name:g,value:N,checked:s,required:u,disabled:d,form:C,style:{transform:"translateX(-100%)"}})]})});he.displayName=J;var ge="RadioIndicator",Ce=c.forwardRef((n,x)=>{const{__scopeRadio:a,forceMount:g,...s}=n,u=ft(ge,a);return e.jsx(Ae,{present:g||u.checked,children:e.jsx($.span,{"data-state":fe(u.checked),"data-disabled":u.disabled?"":void 0,...s,ref:x})})});Ce.displayName=ge;var jt="RadioBubbleInput",ke=c.forwardRef(({__scopeRadio:n,control:x,checked:a,bubbles:g=!0,...s},u)=>{const d=c.useRef(null),N=Y(d,u),k=ot(a),C=Me(x);return c.useEffect(()=>{const b=d.current;if(!b)return;const f=window.HTMLInputElement.prototype,p=Object.getOwnPropertyDescriptor(f,"checked").set;if(k!==a&&p){const t=new Event("click",{bubbles:g});p.call(b,a),b.dispatchEvent(t)}},[k,a,g]),e.jsx($.input,{type:"radio","aria-hidden":!0,defaultChecked:a,...s,tabIndex:-1,ref:N,style:{...s.style,...C,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});ke.displayName=jt;function fe(n){return n?"checked":"unchecked"}var Kt=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],W="RadioGroup",[Nt]=le(W,[oe,be]),je=oe(),Ke=be(),[vt,Dt]=Nt(W),Ne=c.forwardRef((n,x)=>{const{__scopeRadioGroup:a,name:g,defaultValue:s,value:u,required:d=!1,disabled:N=!1,orientation:k,dir:C,loop:b=!0,onValueChange:f,...h}=n,p=je(a),t=Re(C),[i,m]=Pe({prop:u,defaultProp:s??null,onChange:f,caller:W});return e.jsx(vt,{scope:a,name:g,required:d,disabled:N,value:i,onValueChange:m,children:e.jsx(Te,{asChild:!0,...p,orientation:k,dir:t,loop:b,children:e.jsx($.div,{role:"radiogroup","aria-required":d,"aria-orientation":k,"data-disabled":N?"":void 0,dir:t,...h,ref:x})})})});Ne.displayName=W;var ve="RadioGroupItem",De=c.forwardRef((n,x)=>{const{__scopeRadioGroup:a,disabled:g,...s}=n,u=Dt(ve,a),d=u.disabled||g,N=je(a),k=Ke(a),C=c.useRef(null),b=Y(x,C),f=u.value===s.value,h=c.useRef(!1);return c.useEffect(()=>{const p=i=>{Kt.includes(i.key)&&(h.current=!0)},t=()=>h.current=!1;return document.addEventListener("keydown",p),document.addEventListener("keyup",t),()=>{document.removeEventListener("keydown",p),document.removeEventListener("keyup",t)}},[]),e.jsx(Ee,{asChild:!0,...N,focusable:!d,active:f,children:e.jsx(he,{disabled:d,required:u.required,checked:f,...k,...s,name:u.name,ref:b,onCheck:()=>u.onValueChange(s.value),onKeyDown:X(p=>{p.key==="Enter"&&p.preventDefault()}),onFocus:X(s.onFocus,()=>{h.current&&C.current?.click()})})})});De.displayName=ve;var yt="RadioGroupIndicator",ye=c.forwardRef((n,x)=>{const{__scopeRadioGroup:a,...g}=n,s=Ke(a);return e.jsx(Ce,{...s,...g,ref:x})});ye.displayName=yt;var wt=Ne,St=De,_t=ye;function Rt({className:n,...x}){return e.jsx(wt,{"code-path":"src/components/ui/radio-group.tsx:14:5","data-slot":"radio-group",className:M("grid gap-3",n),...x})}function ne({className:n,...x}){return e.jsx(St,{"code-path":"src/components/ui/radio-group.tsx:27:5","data-slot":"radio-group-item",className:M("border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 aspect-square size-4 shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",n),...x,children:e.jsx(_t,{"code-path":"src/components/ui/radio-group.tsx:35:7","data-slot":"radio-group-indicator",className:"relative flex items-center justify-center",children:e.jsx(lt,{"code-path":"src/components/ui/radio-group.tsx:39:9",className:"fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2"})})})}const ae=/^[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?$/,ce={name:"",version:"",description:"",config_type:1,api_server:"",token:"",kube_config:""};function Pt({open:n,onOpenChange:x,editingCluster:a,onSaved:g}){const[s,u]=c.useState({...ce}),[d,N]=c.useState(!1),[k,C]=c.useState(!1),[b,f]=c.useState(!1),[h,p]=c.useState("");c.useEffect(()=>{n&&(a&&a.id?w.getClusterDetail(a.id).then(o=>{const l=o||{};C(!!l.has_token),f(!!l.has_kube_config),u({name:l.name||"",version:l.version||"",description:l.description||"",config_type:Number(l.config_type??1),api_server:l.api_server||"",token:"",kube_config:""}),p("")}).catch(()=>{u({name:a.name||"",version:a.version||"",description:a.description||"",config_type:Number(a.config_type??1),api_server:a.api_server||"",token:"",kube_config:""}),p("")}):(C(!1),f(!1),u({...ce}),p("")))},[n,a]);const t=o=>{u({...s,name:o}),o.trim()?ae.test(o)?p(""):p("只允许英文、数字和连字符(-),首尾不能是连字符"):p("")},i=o=>{const l=o.match(/^\s*server:\s*(\S+)\s*$/m);return l?l[1]:""},m=o=>{const l=i(o);u(v=>({...v,kube_config:o,api_server:l||v.api_server}))},j=async()=>{if(!s.name.trim()||!ae.test(s.name.trim())){G.error("请输入有效的集群名称(英文/数字/连字符)");return}try{N(!0);const o={name:s.name.trim(),code:s.name.trim(),version:s.version,description:s.description,config_type:s.config_type,api_server:s.api_server,token:s.config_type===0?s.token:"",kube_config:s.config_type===1?s.kube_config:""};a?await w.updateCluster(a.id,o):await w.createCluster(o),x(!1),g()}catch(o){console.error("保存集群失败:",o)}finally{N(!1)}},D=d||!s.name.trim()||!!h;return e.jsx(ue,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:143:5",open:n,onOpenChange:x,children:e.jsxs(de,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:144:7",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] max-w-2xl",children:[e.jsxs(Ie,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:145:9",children:[e.jsx(ie,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:146:11",className:"text-[var(--dg-text-primary)]",children:a?"编辑集群":"添加集群"}),e.jsx(xe,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:149:11",className:"text-[var(--dg-text-secondary)]",children:a?"修改集群接入配置":"配置新的 Kubernetes 集群接入信息"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:153:9",className:"space-y-4 py-2 max-h-[60vh] overflow-y-auto pr-1",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:154:11",className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:155:13",className:"space-y-2",children:[e.jsx(E,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:156:15",className:"text-[var(--dg-text-secondary)]",children:"集群名称"}),e.jsx(B,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:157:15",value:s.name,onChange:o=>t(o.target.value),placeholder:"如: prod-cluster",className:`bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] placeholder:text-[var(--dg-text-muted)] ${h?"border-red-500":""}`}),h&&e.jsx("p",{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:163:29",className:"text-xs text-red-400",children:h}),e.jsx("p",{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:164:15",className:"text-xs text-[var(--dg-text-muted)]",children:"只允许英文、数字和连字符(-),首尾不能是连字符。名称将作为集群唯一标识。"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:168:13",className:"space-y-2",children:[e.jsx(E,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:169:15",className:"text-[var(--dg-text-secondary)]",children:"版本(可选)"}),e.jsx(B,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:170:15",value:s.version,onChange:o=>u({...s,version:o.target.value}),placeholder:"如: 1.28.0",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] placeholder:text-[var(--dg-text-muted)]"})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:179:11",className:"space-y-2",children:[e.jsx(E,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:180:13",className:"text-[var(--dg-text-secondary)]",children:"描述"}),e.jsx(B,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:181:13",value:s.description,onChange:o=>u({...s,description:o.target.value}),placeholder:"集群用途描述",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] placeholder:text-[var(--dg-text-muted)]"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:189:11",className:"space-y-2",children:[e.jsx(E,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:190:13",className:"text-[var(--dg-text-secondary)]",children:"接入方式"}),e.jsxs(Rt,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:191:13",value:String(s.config_type),onValueChange:o=>u({...s,config_type:Number(o)}),className:"flex gap-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:196:15",className:"flex items-center gap-2 px-3 py-2 rounded-md border border-[var(--dg-border)] cursor-pointer hover:bg-[var(--dg-bg-hover)]",children:[e.jsx(ne,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:197:17",value:"0",id:"ct-0"}),e.jsx(E,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:198:17",htmlFor:"ct-0",className:"cursor-pointer text-[var(--dg-text-primary)] font-normal",children:"Token"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:200:15",className:"flex items-center gap-2 px-3 py-2 rounded-md border border-[var(--dg-border)] cursor-pointer hover:bg-[var(--dg-bg-hover)]",children:[e.jsx(ne,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:201:17",value:"1",id:"ct-1"}),e.jsx(E,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:202:17",htmlFor:"ct-1",className:"cursor-pointer text-[var(--dg-text-primary)] font-normal",children:"Kubeconfig"})]})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:207:11",className:"space-y-2",children:[e.jsx(E,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:208:13",className:"text-[var(--dg-text-secondary)]",children:"API Server"}),e.jsx(B,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:209:13",value:s.api_server,onChange:o=>u({...s,api_server:o.target.value}),placeholder:"https://10.0.0.1:6443",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] placeholder:text-[var(--dg-text-muted)]"})]}),s.config_type===0?e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:218:13",className:"space-y-2",children:[e.jsxs(E,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:219:15",className:"text-[var(--dg-text-secondary)]",children:["Token ",k&&e.jsx("span",{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:220:36",className:"text-emerald-400 text-xs ml-1",children:"✓ 已配置(留空不修改)"})]}),e.jsx(re,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:222:15",value:s.token,onChange:o=>u({...s,token:o.target.value}),placeholder:k?"已配置,输入新值覆盖...":"粘贴 Service Account Token...",rows:4,className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] placeholder:text-[var(--dg-text-muted)] font-mono text-xs"})]}):e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:231:13",className:"space-y-2",children:[e.jsxs(E,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:232:15",className:"text-[var(--dg-text-secondary)]",children:["Kubeconfig ",b&&e.jsx("span",{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:233:46",className:"text-emerald-400 text-xs ml-1",children:"✓ 已配置(留空不修改)"})]}),e.jsx(re,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:235:15",value:s.kube_config,onChange:o=>m(o.target.value),placeholder:b?"已配置,输入新值覆盖...":`apiVersion: v1 -kind: Config -clusters: -- cluster: - server: https://10.0.0.1:6443 - ...`,rows:10,className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] placeholder:text-[var(--dg-text-muted)] font-mono text-xs"}),!b&&e.jsx("p",{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:243:17",className:"text-xs text-[var(--dg-text-muted)]",children:"粘贴 kubeconfig 内容后将自动解析 API Server 地址"})]})]}),e.jsxs(Fe,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:250:9",children:[e.jsx(A,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:251:11",variant:"outline",onClick:()=>{x(!1)},className:"border-[var(--dg-border)] text-[var(--dg-text-secondary)] hover:text-[var(--dg-text-primary)] hover:bg-[var(--dg-bg-hover)]",children:"取消"}),e.jsx(A,{"code-path":"src/components/kubernetes/KubernetesClusterDialog.tsx:258:11",onClick:j,disabled:D,className:"bg-[var(--dg-blue)] hover:opacity-90 text-white",children:d?"保存中...":a?"保存":"添加"})]})]})})}function Tt({open:n,onOpenChange:x,clusterId:a,clusterName:g}){const s=c.useRef(null),u=c.useRef(null),d=c.useRef(null),N=c.useRef(null),[k,C]=c.useState(!1),[b,f]=c.useState(!1),[h,p]=c.useState("");return c.useEffect(()=>{n||f(!1)},[n]),c.useEffect(()=>{if(!n||!a)return;const t=new ut.Terminal({cursorBlink:!0,fontSize:14,fontFamily:'Menlo, Monaco, "Courier New", monospace',allowProposedApi:!0,theme:{background:"#0f172a",foreground:"#e2e8f0",cursor:"#38bdf8",selectionBackground:"#1e40af",black:"#1e293b",red:"#ef4444",green:"#10b981",yellow:"#f59e0b",blue:"#3b82f6",magenta:"#a855f7",cyan:"#06b6d4",white:"#e2e8f0",brightBlack:"#475569",brightRed:"#f87171",brightGreen:"#34d399",brightYellow:"#fbbf24",brightBlue:"#60a5fa",brightMagenta:"#c084fc",brightCyan:"#22d3ee",brightWhite:"#f8fafc"}}),i=new dt.FitAddon;t.loadAddon(i),u.current=t,N.current=i;const j=`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}`,D=Ge.getState().token||"",o=`${j.replace(/^http/,"ws").replace("/api/v1","")}/ws/kubectl?token=${encodeURIComponent(D)}&id=${a}`,l=new WebSocket(o);return d.current=l,t.onData(v=>{l.readyState===WebSocket.OPEN&&l.send(JSON.stringify({status:0,data:v}))}),l.onmessage=v=>{try{const P=JSON.parse(v.data);P.status===0&&typeof P.data=="string"&&t.write(P.data)}catch{typeof v.data=="string"&&t.write(v.data)}},l.onopen=()=>{C(!0),p(""),s.current&&(t.open(s.current),requestAnimationFrame(()=>{try{i.fit()}catch{}}),setTimeout(()=>{try{t.focus()}catch{}},150))},l.onclose=()=>{C(!1),t.write(`\r -\x1B[31m[连接已断开]\x1B[0m\r -`)},l.onerror=()=>{p("WebSocket 连接失败"),t.write(`\r -\x1B[31m[连接发生错误]\x1B[0m\r -`)},()=>{try{(l.readyState===WebSocket.OPEN||l.readyState===WebSocket.CONNECTING)&&l.close(),t.dispose()}catch{}u.current=null,d.current=null,C(!1)}},[n,a]),c.useEffect(()=>{if(!n)return;const t=s.current;if(!t)return;let i;const m=new ResizeObserver(()=>{clearTimeout(i),i=setTimeout(()=>{if(N.current&&u.current&&d.current)try{N.current.fit(),u.current.focus();const{cols:j,rows:D}=u.current;d.current.readyState===WebSocket.OPEN&&d.current.send(JSON.stringify({status:1,cols:j,rows:D}))}catch{}},60)});return m.observe(t),()=>{clearTimeout(i),m.disconnect()}},[n]),e.jsx(ue,{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:161:5",open:n,onOpenChange:x,children:e.jsxs(de,{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:162:7",showCloseButton:!1,onOpenAutoFocus:t=>t.preventDefault(),className:M("bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] p-0 gap-0","!duration-0 !transition-none",b?"!max-w-none !w-screen !h-screen !rounded-none !translate-x-0 !translate-y-0 !left-0 !top-0":""),style:b?{maxWidth:"100vw",width:"100vw",height:"100vh"}:{maxWidth:"900px",width:"90vw"},children:[e.jsxs(ie,{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:174:9",className:"sr-only",children:["kubectl — ",g]}),e.jsx(xe,{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:175:9",className:"sr-only",children:"Kubernetes 集群命令行终端"}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:178:9",className:"flex items-center justify-between px-4 py-2 border-b border-[var(--dg-border)]",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:179:11",className:"flex items-center gap-2 text-sm",children:[e.jsx("div",{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:180:13",className:M("w-2 h-2 rounded-full",k?"bg-emerald-400":h?"bg-red-400":"bg-yellow-400")}),e.jsx(Oe,{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:181:13",className:"h-4 w-4 text-blue-400"}),e.jsxs("span",{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:182:13",className:"text-[var(--dg-text-primary)] font-medium",children:["kubectl — ",g]}),!k&&!h&&e.jsx(Le,{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:183:38",className:"h-3 w-3 animate-spin text-[var(--dg-text-muted)]"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:185:11",className:"flex items-center gap-1",children:[e.jsx("button",{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:186:13",onClick:()=>f(!b),className:"p-1.5 rounded hover:bg-[var(--dg-bg-hover)] text-[var(--dg-text-secondary)]",children:b?e.jsx(it,{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:190:29",className:"h-4 w-4"}):e.jsx(xt,{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:190:65",className:"h-4 w-4"})}),e.jsx("button",{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:192:13",onClick:()=>x(!1),className:"p-1.5 rounded hover:bg-[var(--dg-bg-hover)] text-[var(--dg-text-secondary)]",children:e.jsx(Be,{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:196:15",className:"h-4 w-4"})})]})]}),e.jsx("div",{"code-path":"src/components/kubernetes/KubectlTerminal.tsx:202:9",ref:s,className:"bg-[#0f172a]",style:{height:b?"calc(100vh - 49px)":"480px"}})]})})}function Qt(){const[n,x]=c.useState([]),[a,g]=c.useState(!0),[s,u]=c.useState(null),[d,N]=c.useState(""),[k,C]=c.useState(!1),[b,f]=c.useState(null),[h,p]=c.useState(null),[t,i]=c.useState(!1),[m,j]=c.useState(null),[D,o]=c.useState(!1),l=async()=>{try{g(!0);const r=await w.getClusters();x(r?.list||[])}catch(r){console.error("加载集群列表失败:",r),x([])}finally{g(!1)}};c.useEffect(()=>{l()},[]);const[,v]=c.useState(null),P=()=>{l().then(()=>{b||setTimeout(async()=>{const K=(await w.getClusters())?.list||[];K.length>0&&L(K[K.length-1].id,!0)},500)})},q=async r=>{try{await w.deleteCluster(r),l()}catch(K){console.error("删除集群失败:",K)}},L=async(r,K)=>{try{K||G.info("正在同步集群资源...");const T=await w.syncCluster(r);K||G.success(T?.message||"同步完成"),l()}catch(T){K||G.error(T?.message||"同步失败")}},we=async()=>{if(!m)return;const r=m.code||String(m.id);try{o(!0),G.info(`正在导出 ${m.name} 所有命名空间的资源...`),await w.exportAllResources(r),G.success("导出完成,已开始下载"),j(null)}catch(K){G.error(K?.message||"导出失败")}finally{o(!1)}},Z=n.filter(r=>(r.name||"").toLowerCase().includes(d.toLowerCase())||(r.version||"").includes(d)),Se=r=>{switch(r){case"healthy":return e.jsxs(y,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:138:11",variant:"outline",className:"border-emerald-500/30 text-emerald-400 bg-emerald-500/10",children:[e.jsx(ee,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:139:13",className:"h-3 w-3 mr-1"}),"健康"]});case"warning":return e.jsxs(y,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:145:11",variant:"outline",className:"border-amber-500/30 text-amber-400 bg-amber-500/10",children:[e.jsx(Ze,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:146:13",className:"h-3 w-3 mr-1"}),"警告"]});case"error":return e.jsxs(y,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:152:11",variant:"outline",className:"border-red-500/30 text-red-400 bg-red-500/10",children:[e.jsx(me,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:153:13",className:"h-3 w-3 mr-1"}),"异常"]});default:return null}},Q=s?n.find(r=>r.id===s):null;return e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:165:5",className:"space-y-6",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:167:7",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:168:9",children:[e.jsx("h1",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:169:11",className:"text-2xl font-bold text-slate-100",children:"集群列表"}),e.jsx("p",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:170:11",className:"text-sm text-slate-500 mt-1",children:"管理Kubernetes集群资源"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:172:9",className:"flex items-center gap-2",children:[e.jsxs(A,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:173:11",variant:"outline",className:"border-slate-700 text-slate-300 hover:text-slate-100 hover:bg-slate-800",onClick:l,children:[e.jsx(H,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:178:13",className:M("h-4 w-4 mr-2",a&&"animate-spin")}),"刷新"]}),e.jsxs(A,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:181:11",className:"bg-blue-600 hover:bg-blue-700 text-white",onClick:()=>{f(null),C(!0)},children:[e.jsx(pt,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:182:13",className:"h-4 w-4 mr-2"}),"添加集群"]})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:189:7",className:"grid grid-cols-1 md:grid-cols-4 gap-4",children:[e.jsx(_,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:190:9",className:"bg-slate-900 border-slate-800",children:e.jsx(R,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:191:11",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:192:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:193:15",children:[e.jsx("p",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:194:17",className:"text-sm text-slate-500",children:"集群总数"}),e.jsx("p",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:195:17",className:"text-2xl font-bold text-slate-100",children:n.length})]}),e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:197:15",className:"p-3 rounded-lg bg-blue-500/10 text-blue-400",children:e.jsx(V,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:198:17",className:"h-5 w-5"})})]})})}),e.jsx(_,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:203:9",className:"bg-slate-900 border-slate-800",children:e.jsx(R,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:204:11",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:205:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:206:15",children:[e.jsx("p",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:207:17",className:"text-sm text-slate-500",children:"健康集群"}),e.jsx("p",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:208:17",className:"text-2xl font-bold text-emerald-400",children:n.filter(r=>r.status==="healthy").length})]}),e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:212:15",className:"p-3 rounded-lg bg-emerald-500/10 text-emerald-400",children:e.jsx(ee,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:213:17",className:"h-5 w-5"})})]})})}),e.jsx(_,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:218:9",className:"bg-slate-900 border-slate-800",children:e.jsx(R,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:219:11",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:220:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:221:15",children:[e.jsx("p",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:222:17",className:"text-sm text-slate-500",children:"总节点数"}),e.jsx("p",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:223:17",className:"text-2xl font-bold text-slate-100",children:n.reduce((r,K)=>r+(K.node_count||0),0)})]}),e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:227:15",className:"p-3 rounded-lg bg-purple-500/10 text-purple-400",children:e.jsx(Ue,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:228:17",className:"h-5 w-5"})})]})})}),e.jsx(_,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:233:9",className:"bg-slate-900 border-slate-800",children:e.jsx(R,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:234:11",className:"p-4",children:e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:235:13",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:236:15",children:[e.jsx("p",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:237:17",className:"text-sm text-slate-500",children:"总Pod数"}),e.jsx("p",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:238:17",className:"text-2xl font-bold text-slate-100",children:n.reduce((r,K)=>r+(K.pod_count||0),0)})]}),e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:242:15",className:"p-3 rounded-lg bg-cyan-500/10 text-cyan-400",children:e.jsx(ze,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:243:17",className:"h-5 w-5"})})]})})})]}),e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:251:7",className:"flex items-center gap-3",children:e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:252:9",className:"relative w-80",children:[e.jsx($e,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:253:11",className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-slate-500"}),e.jsx(B,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:254:11",placeholder:"搜索集群名称或版本...",value:d,onChange:r=>N(r.target.value),className:"pl-9 h-9 bg-slate-800/50 border-slate-700 text-slate-200 placeholder:text-slate-500"})]})}),e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:264:7",className:"grid grid-cols-1 lg:grid-cols-2 xl:grid-cols-3 gap-4",children:a?e.jsx(_,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:266:11",className:"bg-slate-900 border-slate-800 col-span-full",children:e.jsxs(R,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:267:13",className:"p-12 text-center text-slate-500",children:[e.jsx(H,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:268:15",className:"h-6 w-6 animate-spin mx-auto mb-3"}),"加载中..."]})}):Z.length===0?e.jsx(_,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:273:11",className:"bg-slate-900 border-slate-800 col-span-full",children:e.jsx(R,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:274:13",className:"p-12 text-center text-slate-500",children:"暂无集群数据"})}):Z.map(r=>{const K=Number(r.cpu_usage||0),T=Number(r.memory_usage||0),_e=K>0||T>0;return e.jsxs(_,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:282:15",className:M("bg-slate-900 border-slate-800 cursor-pointer transition-all",s===r.id?"border-blue-500 ring-1 ring-blue-500/30":"hover:border-slate-700"),onClick:()=>u(r.id),children:[e.jsx(U,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:292:17",className:"pb-3",children:e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:293:19",className:"flex items-start justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:294:21",className:"flex items-center gap-3",children:[e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:295:23",className:"w-10 h-10 rounded-lg bg-blue-500/10 flex items-center justify-center",children:e.jsx(V,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:296:25",className:"h-5 w-5 text-blue-400"})}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:298:23",children:[e.jsx(z,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:299:25",className:"text-base text-slate-100",children:r.name}),e.jsx(pe,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:300:25",className:"text-slate-500",children:r.version})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:303:21",className:"flex items-center gap-1",children:[Se(r.status),e.jsxs(We,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:305:23",children:[e.jsx(qe,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:306:25",asChild:!0,children:e.jsx(A,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:307:27",variant:"ghost",size:"icon",className:"h-8 w-8 text-slate-400 hover:text-slate-100",onClick:S=>S.stopPropagation(),children:e.jsx(mt,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:313:29",className:"h-4 w-4"})})}),e.jsxs(He,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:316:25",align:"end",className:"w-48 bg-slate-800 border-slate-700",children:[e.jsx(Ve,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:317:27",className:"text-slate-300",children:"操作"}),e.jsx(te,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:318:27",className:"bg-slate-700"}),e.jsxs(O,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:319:27",className:"text-slate-300 focus:bg-slate-700 focus:text-slate-100",children:[e.jsx(Xe,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:320:29",className:"h-4 w-4 mr-2"}),"查看详情"]}),e.jsxs(O,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:323:27",className:"text-slate-300 focus:bg-slate-700 focus:text-slate-100",onClick:S=>{S.stopPropagation(),f(r),C(!0)},children:[e.jsx(Ye,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:331:29",className:"h-4 w-4 mr-2"}),"配置"]}),e.jsxs(O,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:334:27",className:"text-cyan-400 focus:bg-slate-700 focus:text-cyan-300",onClick:S=>{S.stopPropagation(),L(r.id)},children:[e.jsx(H,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:341:29",className:"h-4 w-4 mr-2"}),"同步"]}),e.jsxs(O,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:344:27",className:"text-emerald-400 focus:bg-slate-700 focus:text-emerald-300",onClick:S=>{S.stopPropagation(),p({id:r.id,name:r.name}),i(!0)},children:[e.jsx(Je,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:352:29",className:"h-4 w-4 mr-2"}),"kubectl"]}),e.jsxs(O,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:355:27",className:"text-blue-400 focus:bg-slate-700 focus:text-blue-300",onClick:S=>{S.stopPropagation(),j(r)},children:[e.jsx(bt,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:362:29",className:"h-4 w-4 mr-2"}),"导出资源"]}),e.jsx(te,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:365:27",className:"bg-slate-700"}),e.jsxs(O,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:366:27",className:"text-red-400 focus:bg-slate-700 focus:text-red-400",onClick:S=>{S.stopPropagation(),q(r.id)},children:[e.jsx(ht,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:373:29",className:"h-4 w-4 mr-2"}),"删除"]})]})]})]})]})}),e.jsxs(R,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:381:17",className:"pt-0",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:382:19",className:"grid grid-cols-4 gap-2 mb-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:383:21",className:"text-center p-2 rounded-lg bg-slate-800/50",children:[e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:384:23",className:"text-lg font-semibold text-slate-200",children:r.node_count||0}),e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:385:23",className:"text-xs text-slate-500",children:"节点"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:387:21",className:"text-center p-2 rounded-lg bg-slate-800/50",children:[e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:388:23",className:"text-lg font-semibold text-slate-200",children:r.pod_count||0}),e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:389:23",className:"text-xs text-slate-500",children:"Pod"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:391:21",className:"text-center p-2 rounded-lg bg-slate-800/50",children:[e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:392:23",className:"text-lg font-semibold text-slate-200",children:r.service_count||0}),e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:393:23",className:"text-xs text-slate-500",children:"Service"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:395:21",className:"text-center p-2 rounded-lg bg-slate-800/50",children:[e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:396:23",className:"text-lg font-semibold text-slate-200",children:r.deployment_count||0}),e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:397:23",className:"text-xs text-slate-500",children:"Deployment"})]})]}),e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:400:19",className:"space-y-2",children:_e?e.jsxs(e.Fragment,{children:[e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:403:25",className:"flex items-center gap-2",children:[e.jsx("span",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:404:27",className:"text-xs text-slate-500 w-10",children:"CPU"}),e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:405:27",className:"flex-1 h-1.5 bg-slate-800 rounded-full overflow-hidden",children:e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:406:29",className:M("h-full rounded-full",K>80?"bg-red-400":K>60?"bg-amber-400":"bg-emerald-400"),style:{width:`${Math.min(K,100)}%`}})}),e.jsxs("span",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:414:27",className:"text-xs text-slate-400 w-10 text-right",children:[K.toFixed(1),"%"]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:416:25",className:"flex items-center gap-2",children:[e.jsx("span",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:417:27",className:"text-xs text-slate-500 w-10",children:"内存"}),e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:418:27",className:"flex-1 h-1.5 bg-slate-800 rounded-full overflow-hidden",children:e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:419:29",className:M("h-full rounded-full",T>80?"bg-red-400":T>60?"bg-amber-400":"bg-emerald-400"),style:{width:`${Math.min(T,100)}%`}})}),e.jsxs("span",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:427:27",className:"text-xs text-slate-400 w-10 text-right",children:[T.toFixed(1),"%"]})]})]}):e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:431:23",className:"text-xs text-slate-600 text-center",children:["已接入 ",r.node_count||0," 节点 · ",r.pod_count||0," Pod · 资源使用率待采集"]})})]})]},r.id)})}),Q&&e.jsx(gt,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:443:9",cluster:Q,onClose:()=>u(null)}),e.jsx(Pt,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:447:7",open:k,onOpenChange:C,editingCluster:b,onSaved:P}),h&&e.jsx(Tt,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:456:9",open:t,onOpenChange:r=>{i(r),r||p(null)},clusterId:h.id,clusterName:h.name}),m&&e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:469:9",className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60",onClick:()=>j(null),children:e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:470:11",className:"bg-slate-900 border border-slate-700 rounded-lg p-5 w-96 shadow-xl",onClick:r=>r.stopPropagation(),children:[e.jsx("h3",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:471:13",className:"text-base font-semibold text-slate-100 mb-1",children:"导出集群资源"}),e.jsxs("p",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:472:13",className:"text-xs text-slate-400 mb-4",children:["导出 ",m.name," 所有命名空间的 Deployment、Service、Ingress、ConfigMap、Secret 为 tar.gz"]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:475:13",className:"flex justify-end gap-2",children:[e.jsx(A,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:476:15",variant:"outline",className:"border-slate-700 text-slate-300",onClick:()=>j(null),children:"取消"}),e.jsx(A,{"code-path":"src/components/kubernetes/KubernetesClusters.tsx:477:15",className:"bg-blue-600 hover:bg-blue-700 text-white",onClick:we,disabled:D,children:D?"导出中...":"确认导出"})]})]})})]})}export{Qt as KubernetesClusters}; diff --git a/backend/static/assets/KubernetesNodes-DNrQwI__.js b/backend/static/assets/KubernetesNodes-DNrQwI__.js deleted file mode 100644 index 8975e55..0000000 --- a/backend/static/assets/KubernetesNodes-DNrQwI__.js +++ /dev/null @@ -1 +0,0 @@ -import{r as t,j as e,B as A,L as y,S as P,I as V,q as W}from"./index-DfyorCky.js";import{C,a as S}from"./card-C55cvSHg.js";import{B as x}from"./badge-xNW8x0G1.js";import{S as $,a as B,b as R,c as T,d as u}from"./select-D5qUzdAs.js";import{T as H,a as U,b,c as o,d as q,e as r}from"./table-5sHV4Akp.js";import{k as M}from"./kubernetes-J8O09fK7.js";import{R as z}from"./refresh-cw-DUB_tAG-.js";import"./index-CWVNW_qu.js";function ee(){const[L,i]=t.useState([]),[c,N]=t.useState(""),[a,k]=t.useState([]),[p,j]=t.useState(!1),[K,_]=t.useState(""),[m,E]=t.useState("all"),g=t.useCallback(async()=>{try{const n=(await M.getClusters())?.list||[];i(n),n.length>0&&!c&&N(String(n[0].id))}catch{i([])}},[]);t.useEffect(()=>{g()},[g]);const h=t.useCallback(async()=>{if(c){j(!0);try{const s=await M.getNodes(c);k(Array.isArray(s)?s:s?.list||[])}catch{k([])}finally{j(!1)}}},[c]);t.useEffect(()=>{h()},[h]);const f=a.filter(s=>(s.name||"").toLowerCase().includes(K.toLowerCase())&&(m==="all"||s.role===m)),F=s=>s==="master"?e.jsx(x,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:52:9",className:"bg-blue-500/20 text-blue-400 border-blue-500/30",children:"Master"}):e.jsx(x,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:53:9",className:"bg-emerald-500/20 text-emerald-400 border-emerald-500/30",children:"Worker"}),I=s=>s==="Ready"?e.jsx(x,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:57:9",className:"bg-emerald-500/20 text-emerald-400 border-emerald-500/30",children:s}):e.jsx(x,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:58:9",variant:"destructive",children:s||"Unknown"});return e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:61:5",className:"space-y-6",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:62:7",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:63:9",children:[e.jsx("h1",{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:64:11",className:"text-2xl font-bold text-slate-100",children:"节点管理"}),e.jsx("p",{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:65:11",className:"text-sm text-slate-500 mt-1",children:"Kubernetes 集群工作节点状态与资源"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:67:9",className:"flex items-center gap-2",children:[e.jsxs($,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:68:11",value:c,onValueChange:N,children:[e.jsx(B,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:69:13",className:"w-48 h-9 bg-slate-800/50 border-slate-700 text-slate-200",children:e.jsx(R,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:70:15",placeholder:"选择集群"})}),e.jsx(T,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:72:13",className:"bg-slate-800 border-slate-700",children:L.map(s=>e.jsx(u,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:74:17",value:String(s.id),children:s.name},s.id))})]}),e.jsx(A,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:78:11",variant:"outline",size:"icon",className:"h-9 w-9 border-slate-700 text-slate-400",onClick:h,disabled:p,children:p?e.jsx(y,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:79:24",className:"h-4 w-4 animate-spin"}):e.jsx(z,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:79:71",className:"h-4 w-4"})})]})]}),e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:84:7",className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[{label:"总节点",value:a.length,color:"text-blue-400"},{label:"Master",value:a.filter(s=>s.role==="master").length,color:"text-purple-400"},{label:"Worker",value:a.filter(s=>s.role==="worker").length,color:"text-emerald-400"},{label:"就绪",value:a.filter(s=>s.status==="Ready").length,color:"text-cyan-400"}].map(s=>e.jsx(C,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:91:11",className:"bg-slate-900 border-slate-800",children:e.jsxs(S,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:92:13",className:"p-4",children:[e.jsx("p",{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:93:15",className:"text-sm text-slate-500",children:s.label}),e.jsx("p",{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:94:15",className:`text-2xl font-bold ${s.color}`,children:s.value})]})},s.label))}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:100:7",className:"flex items-center gap-3",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:101:9",className:"relative w-56",children:[e.jsx(P,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:102:11",className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-slate-500"}),e.jsx(V,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:103:11",placeholder:"搜索节点...",value:K,onChange:s=>_(s.target.value),className:"pl-9 h-9 bg-slate-800/50 border-slate-700 text-slate-200"})]}),e.jsxs($,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:105:9",value:m,onValueChange:E,children:[e.jsx(B,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:106:11",className:"w-32 h-9 bg-slate-800/50 border-slate-700 text-slate-200",children:e.jsx(R,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:107:13"})}),e.jsxs(T,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:109:11",className:"bg-slate-800 border-slate-700",children:[e.jsx(u,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:110:13",value:"all",children:"全部角色"}),e.jsx(u,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:111:13",value:"master",children:"Master"}),e.jsx(u,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:112:13",value:"worker",children:"Worker"})]})]})]}),e.jsx(C,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:117:7",className:"bg-slate-900 border-slate-800",children:e.jsx(S,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:118:9",className:"p-0",children:e.jsxs(H,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:119:11",children:[e.jsx(U,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:120:13",children:e.jsxs(b,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:121:15",className:"border-slate-800 hover:bg-transparent",children:[e.jsx(o,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:122:17",className:"text-slate-400",children:"节点名称"}),e.jsx(o,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:123:17",className:"text-slate-400",children:"IP"}),e.jsx(o,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:124:17",className:"text-slate-400",children:"角色"}),e.jsx(o,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:125:17",className:"text-slate-400",children:"状态"}),e.jsx(o,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:126:17",className:"text-slate-400",children:"配置"}),e.jsx(o,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:127:17",className:"text-slate-400",children:"使用率"}),e.jsx(o,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:128:17",className:"text-slate-400",children:"Pods"}),e.jsx(o,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:129:17",className:"text-slate-400",children:"Kubelet"})]})}),e.jsx(q,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:132:13",children:p?e.jsx(b,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:134:17",children:e.jsxs(r,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:134:27",colSpan:8,className:"text-center text-slate-500 py-12",children:[e.jsx(y,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:134:95",className:"h-5 w-5 animate-spin mx-auto mb-2"}),"加载中..."]})}):f.length===0?e.jsx(b,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:136:17",children:e.jsxs(r,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:136:27",colSpan:8,className:"text-center text-slate-500 py-12",children:[e.jsx(W,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:136:95",className:"h-8 w-8 mx-auto mb-2 opacity-50"}),c?"暂无节点数据":"请选择集群"]})}):f.map(s=>e.jsxs(b,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:139:19",className:"border-slate-800 hover:bg-slate-800/30",children:[e.jsx(r,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:140:21",className:"font-medium text-slate-200",children:s.name}),e.jsx(r,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:141:21",children:e.jsx("code",{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:141:32",className:"text-sm text-slate-300 bg-slate-800 px-1.5 py-0.5 rounded",children:s.ip||"-"})}),e.jsx(r,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:142:21",children:F(s.role)}),e.jsx(r,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:143:21",children:I(s.status)}),e.jsxs(r,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:144:21",className:"text-sm text-slate-400",children:[s.cpu?`${s.cpu}核`:"-"," / ",s.memory?`${Math.round(s.memory/1024)}GB`:"-"]}),e.jsx(r,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:147:21",children:(()=>{const n=s.cpu_usage||0,d=s.memory_usage||0,v=l=>l>=85?"bg-red-500":l>=60?"bg-yellow-500":"bg-emerald-500",w=l=>l>=85?"text-red-400":l>=60?"text-yellow-400":"text-emerald-400";return e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:154:27",className:"flex flex-col gap-1 min-w-[120px]",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:155:29",className:"flex items-center gap-2",children:[e.jsx("span",{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:156:31",className:"text-xs text-slate-500 w-7",children:"CPU"}),e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:157:31",className:"flex-1 h-1.5 rounded-full bg-slate-700/50 overflow-hidden",children:e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:158:33",className:`h-full rounded-full ${v(n)}`,style:{width:`${Math.min(n,100)}%`}})}),e.jsxs("span",{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:160:31",className:`text-xs w-9 text-right ${w(n)}`,children:[n.toFixed(0),"%"]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:162:29",className:"flex items-center gap-2",children:[e.jsx("span",{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:163:31",className:"text-xs text-slate-500 w-7",children:"Mem"}),e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:164:31",className:"flex-1 h-1.5 rounded-full bg-slate-700/50 overflow-hidden",children:e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:165:33",className:`h-full rounded-full ${v(d)}`,style:{width:`${Math.min(d,100)}%`}})}),e.jsxs("span",{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:167:31",className:`text-xs w-9 text-right ${w(d)}`,children:[d.toFixed(0),"%"]})]})]})})()}),e.jsxs(r,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:173:21",className:"text-sm text-slate-400",children:[s.pod_count||0," / ",s.max_pods||"-"]}),e.jsx(r,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:174:21",className:"text-xs text-slate-500",children:s.kubelet_version||"-"})]},s.id))})]})})})]})}export{ee as KubernetesNodes}; diff --git a/backend/static/assets/KubernetesNodes-Do-N6V6R.js b/backend/static/assets/KubernetesNodes-Do-N6V6R.js new file mode 100644 index 0000000..f884efd --- /dev/null +++ b/backend/static/assets/KubernetesNodes-Do-N6V6R.js @@ -0,0 +1 @@ +import{r as t,j as e,B as F,L as w,S as I}from"./index-Dmami9WE.js";import{C as A,a as P}from"./card-CIfC-8Rh.js";import{I as V}from"./input-NsU9nXZF.js";import{B as l}from"./badge-3UzCvU7L.js";import{S as y,a as S,b as C,c as B,d as x}from"./select-DUbxjT0z.js";import{T as H,a as U,b as u,c as o,d as W,e as n}from"./table-CG4mjNfb.js";import{k as T}from"./kubernetes-D2-GnE0t.js";import{R as z}from"./refresh-cw-CTBERyFc.js";import{S as G}from"./search-Dd-PeBfg.js";import"./index-CtCQcvyh.js";import"./chevron-up-Cq4GPopa.js";function ne(){const[$,h]=t.useState([]),[c,i]=t.useState(""),[R,N]=t.useState([]),[b,k]=t.useState(!1),[j,M]=t.useState(""),[p,L]=t.useState("all"),K=t.useCallback(async()=>{try{const r=(await T.getClusters())?.list||[];h(r),r.length>0&&!c&&i(String(r[0].id))}catch{h([])}},[]);t.useEffect(()=>{K()},[K]);const m=t.useCallback(async()=>{if(c){k(!0);try{const s=await T.getNodes(c);N(Array.isArray(s)?s:s?.list||[])}catch{N([])}finally{k(!1)}}},[c]);t.useEffect(()=>{m()},[m]);const g=R.filter(s=>(s.name||"").toLowerCase().includes(j.toLowerCase())&&(p==="all"||s.role===p)),_=s=>s==="master"?e.jsx(l,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:52:9",className:"bg-blue-500/20 text-blue-400 border-blue-500/30",children:"Master"}):e.jsx(l,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:53:9",className:"bg-emerald-500/20 text-emerald-400 border-emerald-500/30",children:"Worker"}),E=s=>s==="Ready"?e.jsx(l,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:57:9",className:"bg-emerald-500/20 text-emerald-400 border-emerald-500/30",children:s}):e.jsx(l,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:58:9",variant:"destructive",children:s||"Unknown"});return e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:61:5",className:"space-y-6",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:62:7",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:63:9",children:[e.jsx("h1",{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:64:11",className:"text-2xl font-bold text-slate-100",children:"节点管理"}),e.jsx("p",{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:65:11",className:"text-sm text-slate-500 mt-1",children:"Kubernetes 集群工作节点状态与资源"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:67:9",className:"flex items-center gap-2",children:[e.jsxs(y,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:68:11",value:c,onValueChange:i,children:[e.jsx(S,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:69:13",className:"w-48 h-9 bg-slate-800/50 border-slate-700 text-slate-200",children:e.jsx(C,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:70:15",placeholder:"选择集群"})}),e.jsx(B,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:72:13",className:"bg-slate-800 border-slate-700",children:$.map(s=>e.jsx(x,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:74:17",value:String(s.id),children:s.name},s.id))})]}),e.jsx(F,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:78:11",variant:"outline",size:"icon",className:"h-9 w-9 border-slate-700 text-slate-400",onClick:m,disabled:b,children:b?e.jsx(w,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:79:24",className:"h-4 w-4 animate-spin"}):e.jsx(z,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:79:71",className:"h-4 w-4"})})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:84:7",className:"flex items-center gap-3",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:85:9",className:"relative w-56",children:[e.jsx(G,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:86:11",className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-slate-500"}),e.jsx(V,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:87:11",placeholder:"搜索节点...",value:j,onChange:s=>M(s.target.value),className:"pl-9 h-9 bg-slate-800/50 border-slate-700 text-slate-200"})]}),e.jsxs(y,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:89:9",value:p,onValueChange:L,children:[e.jsx(S,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:90:11",className:"w-32 h-9 bg-slate-800/50 border-slate-700 text-slate-200",children:e.jsx(C,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:91:13"})}),e.jsxs(B,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:93:11",className:"bg-slate-800 border-slate-700",children:[e.jsx(x,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:94:13",value:"all",children:"全部角色"}),e.jsx(x,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:95:13",value:"master",children:"Master"}),e.jsx(x,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:96:13",value:"worker",children:"Worker"})]})]})]}),e.jsx(A,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:101:7",className:"bg-slate-900 border-slate-800",children:e.jsx(P,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:102:9",className:"p-0",children:e.jsxs(H,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:103:11",children:[e.jsx(U,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:104:13",children:e.jsxs(u,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:105:15",className:"border-slate-800 hover:bg-transparent",children:[e.jsx(o,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:106:17",className:"text-slate-400",children:"节点名称"}),e.jsx(o,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:107:17",className:"text-slate-400",children:"IP"}),e.jsx(o,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:108:17",className:"text-slate-400",children:"角色"}),e.jsx(o,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:109:17",className:"text-slate-400",children:"状态"}),e.jsx(o,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:110:17",className:"text-slate-400",children:"配置"}),e.jsx(o,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:111:17",className:"text-slate-400",children:"使用率"}),e.jsx(o,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:112:17",className:"text-slate-400",children:"Pods"}),e.jsx(o,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:113:17",className:"text-slate-400",children:"Kubelet"})]})}),e.jsx(W,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:116:13",children:b?e.jsx(u,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:118:17",children:e.jsxs(n,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:118:27",colSpan:8,className:"text-center text-slate-500 py-12",children:[e.jsx(w,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:118:95",className:"h-5 w-5 animate-spin mx-auto mb-2"}),"加载中..."]})}):g.length===0?e.jsx(u,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:120:17",children:e.jsxs(n,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:120:27",colSpan:8,className:"text-center text-slate-500 py-12",children:[e.jsx(I,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:120:95",className:"h-8 w-8 mx-auto mb-2 opacity-50"}),c?"暂无节点数据":"请选择集群"]})}):g.map(s=>e.jsxs(u,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:123:19",className:"border-slate-800 hover:bg-slate-800/30",children:[e.jsx(n,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:124:21",className:"font-medium text-slate-200",children:s.name}),e.jsx(n,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:125:21",children:e.jsx("code",{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:125:32",className:"text-sm text-slate-300 bg-slate-800 px-1.5 py-0.5 rounded",children:s.ip||"-"})}),e.jsx(n,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:126:21",children:_(s.role)}),e.jsx(n,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:127:21",children:E(s.status)}),e.jsxs(n,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:128:21",className:"text-sm text-slate-400",children:[s.cpu?`${s.cpu}核`:"-"," / ",s.memory?`${Math.round(s.memory/1024)}GB`:"-"]}),e.jsx(n,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:131:21",children:(()=>{const r=s.cpu_usage||0,d=s.memory_usage||0,f=a=>a>=85?"bg-red-500":a>=60?"bg-yellow-500":"bg-emerald-500",v=a=>a>=85?"text-red-400":a>=60?"text-yellow-400":"text-emerald-400";return e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:138:27",className:"flex flex-col gap-1 min-w-[120px]",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:139:29",className:"flex items-center gap-2",children:[e.jsx("span",{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:140:31",className:"text-xs text-slate-500 w-7",children:"CPU"}),e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:141:31",className:"flex-1 h-1.5 rounded-full bg-slate-700/50 overflow-hidden",children:e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:142:33",className:`h-full rounded-full ${f(r)}`,style:{width:`${Math.min(r,100)}%`}})}),e.jsxs("span",{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:144:31",className:`text-xs w-9 text-right ${v(r)}`,children:[r.toFixed(0),"%"]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:146:29",className:"flex items-center gap-2",children:[e.jsx("span",{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:147:31",className:"text-xs text-slate-500 w-7",children:"Mem"}),e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:148:31",className:"flex-1 h-1.5 rounded-full bg-slate-700/50 overflow-hidden",children:e.jsx("div",{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:149:33",className:`h-full rounded-full ${f(d)}`,style:{width:`${Math.min(d,100)}%`}})}),e.jsxs("span",{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:151:31",className:`text-xs w-9 text-right ${v(d)}`,children:[d.toFixed(0),"%"]})]})]})})()}),e.jsxs(n,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:157:21",className:"text-sm text-slate-400",children:[s.pod_count||0," / ",s.max_pods||"-"]}),e.jsx(n,{"code-path":"src/components/kubernetes/KubernetesNodes.tsx:158:21",className:"text-xs text-slate-500",children:s.kubelet_version||"-"})]},s.id))})]})})})]})}export{ne as KubernetesNodes}; diff --git a/backend/static/assets/MetricsExplorer-Alitxgwr.js b/backend/static/assets/MetricsExplorer-Alitxgwr.js new file mode 100644 index 0000000..b504e28 --- /dev/null +++ b/backend/static/assets/MetricsExplorer-Alitxgwr.js @@ -0,0 +1 @@ +import{r as l,h as u,j as e,B as D,J as I,A as y,z as P,N as B,p as F}from"./index-Dmami9WE.js";import{C as b,a as M}from"./card-CIfC-8Rh.js";import{S as V,a as q,b as H,c as K,d as G}from"./select-DUbxjT0z.js";import{I as J}from"./input-NsU9nXZF.js";import{S as Q}from"./search-Dd-PeBfg.js";import{F as U}from"./funnel-DngS63SK.js";import{P as W}from"./plus-O65gX7Qz.js";import{H as v}from"./hard-drive-DmC04Y5r.js";import"./index-CtCQcvyh.js";import"./chevron-up-Cq4GPopa.js";const N={cpu:{label:"CPU",icon:e.jsx(F,{"code-path":"src/pages/MetricsExplorer.tsx:34:30",className:"h-4 w-4"})},memory:{label:"内存",icon:e.jsx(v,{"code-path":"src/pages/MetricsExplorer.tsx:35:32",className:"h-4 w-4"})},disk:{label:"磁盘",icon:e.jsx(v,{"code-path":"src/pages/MetricsExplorer.tsx:36:30",className:"h-4 w-4"})},network:{label:"网络",icon:e.jsx(B,{"code-path":"src/pages/MetricsExplorer.tsx:37:33",className:"h-4 w-4"})},middleware:{label:"中间件",icon:e.jsx(P,{"code-path":"src/pages/MetricsExplorer.tsx:38:37",className:"h-4 w-4"})},device:{label:"设备",icon:e.jsx(y,{"code-path":"src/pages/MetricsExplorer.tsx:39:32",className:"h-4 w-4"})}};function oe(){const[n,w]=l.useState([]),[j,S]=l.useState([]),[x,C]=l.useState(""),[o,E]=l.useState([]),[k,f]=l.useState([]),[O,T]=l.useState(!0),[m,_]=l.useState(""),L=l.useCallback(async()=>{try{const s=await u.get("/metrics/targets?page_size=200");w(s?.list||[])}catch{}finally{T(!1)}},[]),R=l.useCallback(async()=>{try{const s=await u.get("/metrics/names");S(s||[])}catch{}},[]);l.useEffect(()=>{L(),R()},[]),l.useEffect(()=>{if(!x||o.length===0||!n.find(c=>String(c.id)===x))return;const t=Math.floor(Date.now()/1e3),r=t-3600;Promise.all(o.map(c=>u.get("/metrics/query",{target_id:x,metric_name:c,from:String(r),to:String(t),limit:200}).then(a=>Array.isArray(a)?a:[]).catch(()=>[]))).then(c=>{f(c.flat())})},[x,o,n]);const $=m?j.filter(s=>s.toLowerCase().includes(m.toLowerCase())):j,g=n.find(s=>String(s.id)===x),z=$.reduce((s,t)=>{const r=t.split("_")[0]||"other";return s[r]||(s[r]=[]),s[r].push(t),s},{}),p={};k.forEach(s=>{p[s.timestamp]||(p[s.timestamp]={}),p[s.timestamp][s.metric_name]=s.value});const d=Object.keys(p).map(Number).sort((s,t)=>s-t),A=Math.max(1,...Object.values(p).flatMap(s=>Object.values(s))),h=["#3b82f6","#10b981","#f59e0b","#ef4444","#8b5cf6","#ec4899","#06b6d4","#f97316"];return e.jsxs("div",{"code-path":"src/pages/MetricsExplorer.tsx:118:5",className:"space-y-6",children:[e.jsxs("div",{"code-path":"src/pages/MetricsExplorer.tsx:120:7",className:"flex items-center gap-4 flex-wrap",children:[e.jsxs(V,{"code-path":"src/pages/MetricsExplorer.tsx:121:9",value:x,onValueChange:C,children:[e.jsx(q,{"code-path":"src/pages/MetricsExplorer.tsx:122:11",className:"w-64 bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsx(H,{"code-path":"src/pages/MetricsExplorer.tsx:123:13",placeholder:O?"加载中...":"选择监控目标..."})}),e.jsx(K,{"code-path":"src/pages/MetricsExplorer.tsx:125:11",className:"bg-slate-800 border-slate-700 text-slate-200 max-h-80",children:n.map(s=>e.jsx(G,{"code-path":"src/pages/MetricsExplorer.tsx:127:15",value:String(s.id),children:e.jsxs("span",{"code-path":"src/pages/MetricsExplorer.tsx:128:17",className:"flex items-center gap-2",children:[e.jsx("span",{"code-path":"src/pages/MetricsExplorer.tsx:129:19",className:`inline-block w-1.5 h-1.5 rounded-full ${s.status==="online"?"bg-emerald-400":"bg-slate-500"}`}),s.name," (",s.ip||s.type,")"]})},s.id))})]}),e.jsxs("div",{"code-path":"src/pages/MetricsExplorer.tsx:137:9",className:"relative flex-1 max-w-sm",children:[e.jsx(Q,{"code-path":"src/pages/MetricsExplorer.tsx:138:11",className:"absolute left-2.5 top-2 h-4 w-4 text-slate-500"}),e.jsx(J,{"code-path":"src/pages/MetricsExplorer.tsx:139:11",className:"pl-8 bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] h-9",placeholder:"搜索指标...",value:m,onChange:s=>_(s.target.value)})]}),e.jsx(D,{"code-path":"src/pages/MetricsExplorer.tsx:146:9",variant:"ghost",size:"sm",onClick:()=>{E([]),f([])},children:"清除"})]}),x?e.jsxs("div",{"code-path":"src/pages/MetricsExplorer.tsx:159:9",className:"grid grid-cols-1 lg:grid-cols-3 gap-6",children:[e.jsx(b,{"code-path":"src/pages/MetricsExplorer.tsx:161:11",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] lg:col-span-1",children:e.jsxs(M,{"code-path":"src/pages/MetricsExplorer.tsx:162:13",className:"p-4",children:[e.jsxs("div",{"code-path":"src/pages/MetricsExplorer.tsx:163:15",className:"flex items-center gap-2 mb-3",children:[e.jsx(I,{"code-path":"src/pages/MetricsExplorer.tsx:164:17",className:"h-4 w-4 text-[var(--dg-text-muted)]"}),e.jsx("h3",{"code-path":"src/pages/MetricsExplorer.tsx:165:17",className:"text-sm font-medium text-[var(--dg-text-primary)]",children:"指标列表"}),e.jsxs("span",{"code-path":"src/pages/MetricsExplorer.tsx:166:17",className:"text-xs text-[var(--dg-text-muted)] ml-auto",children:[o.length," 已选"]})]}),e.jsx("div",{"code-path":"src/pages/MetricsExplorer.tsx:168:15",className:"space-y-4 max-h-[60vh] overflow-y-auto",children:Object.entries(z).map(([s,t])=>e.jsxs("div",{"code-path":"src/pages/MetricsExplorer.tsx:170:19",children:[e.jsxs("div",{"code-path":"src/pages/MetricsExplorer.tsx:171:21",className:"flex items-center gap-1.5 mb-1.5 text-xs text-[var(--dg-text-muted)]",children:[N[s]?.icon,e.jsx("span",{"code-path":"src/pages/MetricsExplorer.tsx:173:23",children:N[s]?.label||s})]}),e.jsx("div",{"code-path":"src/pages/MetricsExplorer.tsx:175:21",className:"space-y-0.5",children:t.map(r=>{const c=o.includes(r);return e.jsxs("label",{"code-path":"src/pages/MetricsExplorer.tsx:179:27",className:`flex items-center gap-2 px-2 py-1 rounded cursor-pointer text-xs transition-colors ${c?"bg-blue-500/10 text-blue-300":"text-[var(--dg-text-secondary)] hover:bg-[var(--dg-bg-tertiary)]"}`,children:[e.jsx("input",{"code-path":"src/pages/MetricsExplorer.tsx:180:29",type:"checkbox",className:"rounded border-slate-600 bg-slate-800 accent-blue-500",checked:c,onChange:()=>{E(a=>c?a.filter(i=>i!==r):[...a,r])}}),e.jsx("span",{"code-path":"src/pages/MetricsExplorer.tsx:190:29",className:"truncate",children:r})]},r)})})]},s))})]})}),e.jsx(b,{"code-path":"src/pages/MetricsExplorer.tsx:202:11",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] lg:col-span-2",children:e.jsxs(M,{"code-path":"src/pages/MetricsExplorer.tsx:203:13",className:"p-4",children:[e.jsxs("div",{"code-path":"src/pages/MetricsExplorer.tsx:204:15",className:"flex items-center gap-2 mb-3",children:[e.jsx(y,{"code-path":"src/pages/MetricsExplorer.tsx:205:17",className:"h-4 w-4 text-[var(--dg-text-muted)]"}),e.jsxs("h3",{"code-path":"src/pages/MetricsExplorer.tsx:206:17",className:"text-sm font-medium text-[var(--dg-text-primary)]",children:[g?.name||""," — 最近 1 小时"]})]}),o.length===0?e.jsx("div",{"code-path":"src/pages/MetricsExplorer.tsx:211:17",className:"h-64 flex items-center justify-center text-sm text-[var(--dg-text-muted)] border border-dashed border-[var(--dg-border)] rounded-lg",children:e.jsxs("div",{"code-path":"src/pages/MetricsExplorer.tsx:212:19",className:"text-center",children:[e.jsx(W,{"code-path":"src/pages/MetricsExplorer.tsx:213:21",className:"h-8 w-8 text-slate-600 mx-auto mb-2"}),"请从左侧勾选指标"]})}):d.length===0?e.jsx("div",{"code-path":"src/pages/MetricsExplorer.tsx:218:17",className:"h-64 flex items-center justify-center text-sm text-[var(--dg-text-muted)] border border-dashed border-[var(--dg-border)] rounded-lg",children:"暂无数据"}):e.jsx("div",{"code-path":"src/pages/MetricsExplorer.tsx:222:17",className:"h-80 overflow-x-auto",children:e.jsxs("svg",{"code-path":"src/pages/MetricsExplorer.tsx:223:19",viewBox:`0 0 ${Math.max(d.length*4,400)} 300`,className:"w-full h-full min-w-[400px]",children:[[0,25,50,75,100].map(s=>e.jsx("line",{"code-path":"src/pages/MetricsExplorer.tsx:226:23",x1:"0",y1:300-s/100*260,x2:Math.max(d.length*4,400),y2:300-s/100*260,stroke:"#1e293b",strokeDasharray:"3 3"},s)),o.map((s,t)=>{const r=d.map((a,i)=>({x:i*4+2,y:300-(p[a][s]??0)/A*260})).filter(a=>p[d[Math.round((a.x-2)/4)]]?.[s]!=null);if(r.length<2)return null;const c=r.map((a,i)=>`${i===0?"M":"L"}${a.x} ${a.y}`).join(" ");return e.jsx("g",{"code-path":"src/pages/MetricsExplorer.tsx:236:25",children:e.jsx("path",{"code-path":"src/pages/MetricsExplorer.tsx:237:27",d:c,fill:"none",stroke:h[t%h.length],strokeWidth:"1.5"})},s)}),d.filter((s,t)=>t%15===0).map((s,t)=>e.jsx("text",{"code-path":"src/pages/MetricsExplorer.tsx:243:23",x:t*60+2,y:"295",fill:"#475569",fontSize:"9",children:new Date(s*1e3).toLocaleTimeString("zh-CN",{hour:"2-digit",minute:"2-digit"})},s))]})}),o.length>0&&e.jsx("div",{"code-path":"src/pages/MetricsExplorer.tsx:252:17",className:"flex flex-wrap gap-3 mt-3",children:o.map((s,t)=>e.jsxs("div",{"code-path":"src/pages/MetricsExplorer.tsx:254:21",className:"flex items-center gap-1.5 text-xs text-[var(--dg-text-secondary)]",children:[e.jsx("span",{"code-path":"src/pages/MetricsExplorer.tsx:255:23",className:"w-2.5 h-2.5 rounded-full",style:{backgroundColor:h[t%h.length]}}),s]},s))})]})})]}):e.jsx(b,{"code-path":"src/pages/MetricsExplorer.tsx:152:9",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsxs(M,{"code-path":"src/pages/MetricsExplorer.tsx:153:11",className:"p-12 text-center",children:[e.jsx(U,{"code-path":"src/pages/MetricsExplorer.tsx:154:13",className:"h-12 w-12 text-slate-600 mx-auto mb-4"}),e.jsx("p",{"code-path":"src/pages/MetricsExplorer.tsx:155:13",className:"text-[var(--dg-text-muted)]",children:"请先选择监控目标,然后勾选要查看的指标"})]})}),g&&Object.keys(g.latest_metrics||{}).length>0&&e.jsx("div",{"code-path":"src/pages/MetricsExplorer.tsx:268:9",className:"grid grid-cols-2 md:grid-cols-4 lg:grid-cols-6 gap-3",children:Object.entries(g.latest_metrics).map(([s,t])=>e.jsxs("div",{"code-path":"src/pages/MetricsExplorer.tsx:270:13",className:"bg-[var(--dg-bg-secondary)] rounded-lg p-3 border border-[var(--dg-border)] text-center",children:[e.jsx("p",{"code-path":"src/pages/MetricsExplorer.tsx:271:15",className:"text-[10px] text-[var(--dg-text-muted)] truncate",children:s}),e.jsx("p",{"code-path":"src/pages/MetricsExplorer.tsx:272:15",className:"text-lg font-bold text-[var(--dg-text-primary)]",children:typeof t=="number"?t.toFixed(1):"--"})]},s))})]})}export{oe as MetricsExplorer,oe as default}; diff --git a/backend/static/assets/MetricsExplorer-CQYGy4Dt.js b/backend/static/assets/MetricsExplorer-CQYGy4Dt.js deleted file mode 100644 index 7c624ce..0000000 --- a/backend/static/assets/MetricsExplorer-CQYGy4Dt.js +++ /dev/null @@ -1 +0,0 @@ -import{r as l,h as u,j as e,S as I,I as z,B as P,K as B,A as y,G as F,N as K,o as V}from"./index-DfyorCky.js";import{C as b,a as M}from"./card-C55cvSHg.js";import{S as q,a as G,b as H,c as Q,d as U}from"./select-D5qUzdAs.js";import{F as W}from"./funnel-D2FHr15I.js";import{P as J}from"./plus-CUG-9kpu.js";import{H as v}from"./hard-drive-BbPmnARR.js";import"./index-CWVNW_qu.js";const N={cpu:{label:"CPU",icon:e.jsx(V,{"code-path":"src/pages/MetricsExplorer.tsx:34:30",className:"h-4 w-4"})},memory:{label:"内存",icon:e.jsx(v,{"code-path":"src/pages/MetricsExplorer.tsx:35:32",className:"h-4 w-4"})},disk:{label:"磁盘",icon:e.jsx(v,{"code-path":"src/pages/MetricsExplorer.tsx:36:30",className:"h-4 w-4"})},network:{label:"网络",icon:e.jsx(K,{"code-path":"src/pages/MetricsExplorer.tsx:37:33",className:"h-4 w-4"})},middleware:{label:"中间件",icon:e.jsx(F,{"code-path":"src/pages/MetricsExplorer.tsx:38:37",className:"h-4 w-4"})},device:{label:"设备",icon:e.jsx(y,{"code-path":"src/pages/MetricsExplorer.tsx:39:32",className:"h-4 w-4"})}};function ae(){const[n,w]=l.useState([]),[j,S]=l.useState([]),[x,C]=l.useState(""),[o,E]=l.useState([]),[k,f]=l.useState([]),[O,T]=l.useState(!0),[m,_]=l.useState(""),L=l.useCallback(async()=>{try{const s=await u.get("/metrics/targets?page_size=200");w(s?.list||[])}catch{}finally{T(!1)}},[]),R=l.useCallback(async()=>{try{const s=await u.get("/metrics/names");S(s||[])}catch{}},[]);l.useEffect(()=>{L(),R()},[]),l.useEffect(()=>{if(!x||o.length===0||!n.find(c=>String(c.id)===x))return;const t=Math.floor(Date.now()/1e3),r=t-3600;Promise.all(o.map(c=>u.get("/metrics/query",{target_id:x,metric_name:c,from:String(r),to:String(t),limit:200}).then(a=>Array.isArray(a)?a:[]).catch(()=>[]))).then(c=>{f(c.flat())})},[x,o,n]);const $=m?j.filter(s=>s.toLowerCase().includes(m.toLowerCase())):j,g=n.find(s=>String(s.id)===x),A=$.reduce((s,t)=>{const r=t.split("_")[0]||"other";return s[r]||(s[r]=[]),s[r].push(t),s},{}),d={};k.forEach(s=>{d[s.timestamp]||(d[s.timestamp]={}),d[s.timestamp][s.metric_name]=s.value});const p=Object.keys(d).map(Number).sort((s,t)=>s-t),D=Math.max(1,...Object.values(d).flatMap(s=>Object.values(s))),h=["#3b82f6","#10b981","#f59e0b","#ef4444","#8b5cf6","#ec4899","#06b6d4","#f97316"];return e.jsxs("div",{"code-path":"src/pages/MetricsExplorer.tsx:118:5",className:"space-y-6",children:[e.jsxs("div",{"code-path":"src/pages/MetricsExplorer.tsx:120:7",className:"flex items-center gap-4 flex-wrap",children:[e.jsxs(q,{"code-path":"src/pages/MetricsExplorer.tsx:121:9",value:x,onValueChange:C,children:[e.jsx(G,{"code-path":"src/pages/MetricsExplorer.tsx:122:11",className:"w-64 bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsx(H,{"code-path":"src/pages/MetricsExplorer.tsx:123:13",placeholder:O?"加载中...":"选择监控目标..."})}),e.jsx(Q,{"code-path":"src/pages/MetricsExplorer.tsx:125:11",className:"bg-slate-800 border-slate-700 text-slate-200 max-h-80",children:n.map(s=>e.jsx(U,{"code-path":"src/pages/MetricsExplorer.tsx:127:15",value:String(s.id),children:e.jsxs("span",{"code-path":"src/pages/MetricsExplorer.tsx:128:17",className:"flex items-center gap-2",children:[e.jsx("span",{"code-path":"src/pages/MetricsExplorer.tsx:129:19",className:`inline-block w-1.5 h-1.5 rounded-full ${s.status==="online"?"bg-emerald-400":"bg-slate-500"}`}),s.name," (",s.ip||s.type,")"]})},s.id))})]}),e.jsxs("div",{"code-path":"src/pages/MetricsExplorer.tsx:137:9",className:"relative flex-1 max-w-sm",children:[e.jsx(I,{"code-path":"src/pages/MetricsExplorer.tsx:138:11",className:"absolute left-2.5 top-2 h-4 w-4 text-slate-500"}),e.jsx(z,{"code-path":"src/pages/MetricsExplorer.tsx:139:11",className:"pl-8 bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] h-9",placeholder:"搜索指标...",value:m,onChange:s=>_(s.target.value)})]}),e.jsx(P,{"code-path":"src/pages/MetricsExplorer.tsx:146:9",variant:"ghost",size:"sm",onClick:()=>{E([]),f([])},children:"清除"})]}),x?e.jsxs("div",{"code-path":"src/pages/MetricsExplorer.tsx:159:9",className:"grid grid-cols-1 lg:grid-cols-3 gap-6",children:[e.jsx(b,{"code-path":"src/pages/MetricsExplorer.tsx:161:11",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] lg:col-span-1",children:e.jsxs(M,{"code-path":"src/pages/MetricsExplorer.tsx:162:13",className:"p-4",children:[e.jsxs("div",{"code-path":"src/pages/MetricsExplorer.tsx:163:15",className:"flex items-center gap-2 mb-3",children:[e.jsx(B,{"code-path":"src/pages/MetricsExplorer.tsx:164:17",className:"h-4 w-4 text-[var(--dg-text-muted)]"}),e.jsx("h3",{"code-path":"src/pages/MetricsExplorer.tsx:165:17",className:"text-sm font-medium text-[var(--dg-text-primary)]",children:"指标列表"}),e.jsxs("span",{"code-path":"src/pages/MetricsExplorer.tsx:166:17",className:"text-xs text-[var(--dg-text-muted)] ml-auto",children:[o.length," 已选"]})]}),e.jsx("div",{"code-path":"src/pages/MetricsExplorer.tsx:168:15",className:"space-y-4 max-h-[60vh] overflow-y-auto",children:Object.entries(A).map(([s,t])=>e.jsxs("div",{"code-path":"src/pages/MetricsExplorer.tsx:170:19",children:[e.jsxs("div",{"code-path":"src/pages/MetricsExplorer.tsx:171:21",className:"flex items-center gap-1.5 mb-1.5 text-xs text-[var(--dg-text-muted)]",children:[N[s]?.icon,e.jsx("span",{"code-path":"src/pages/MetricsExplorer.tsx:173:23",children:N[s]?.label||s})]}),e.jsx("div",{"code-path":"src/pages/MetricsExplorer.tsx:175:21",className:"space-y-0.5",children:t.map(r=>{const c=o.includes(r);return e.jsxs("label",{"code-path":"src/pages/MetricsExplorer.tsx:179:27",className:`flex items-center gap-2 px-2 py-1 rounded cursor-pointer text-xs transition-colors ${c?"bg-blue-500/10 text-blue-300":"text-[var(--dg-text-secondary)] hover:bg-[var(--dg-bg-tertiary)]"}`,children:[e.jsx("input",{"code-path":"src/pages/MetricsExplorer.tsx:180:29",type:"checkbox",className:"rounded border-slate-600 bg-slate-800 accent-blue-500",checked:c,onChange:()=>{E(a=>c?a.filter(i=>i!==r):[...a,r])}}),e.jsx("span",{"code-path":"src/pages/MetricsExplorer.tsx:190:29",className:"truncate",children:r})]},r)})})]},s))})]})}),e.jsx(b,{"code-path":"src/pages/MetricsExplorer.tsx:202:11",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] lg:col-span-2",children:e.jsxs(M,{"code-path":"src/pages/MetricsExplorer.tsx:203:13",className:"p-4",children:[e.jsxs("div",{"code-path":"src/pages/MetricsExplorer.tsx:204:15",className:"flex items-center gap-2 mb-3",children:[e.jsx(y,{"code-path":"src/pages/MetricsExplorer.tsx:205:17",className:"h-4 w-4 text-[var(--dg-text-muted)]"}),e.jsxs("h3",{"code-path":"src/pages/MetricsExplorer.tsx:206:17",className:"text-sm font-medium text-[var(--dg-text-primary)]",children:[g?.name||""," — 最近 1 小时"]})]}),o.length===0?e.jsx("div",{"code-path":"src/pages/MetricsExplorer.tsx:211:17",className:"h-64 flex items-center justify-center text-sm text-[var(--dg-text-muted)] border border-dashed border-[var(--dg-border)] rounded-lg",children:e.jsxs("div",{"code-path":"src/pages/MetricsExplorer.tsx:212:19",className:"text-center",children:[e.jsx(J,{"code-path":"src/pages/MetricsExplorer.tsx:213:21",className:"h-8 w-8 text-slate-600 mx-auto mb-2"}),"请从左侧勾选指标"]})}):p.length===0?e.jsx("div",{"code-path":"src/pages/MetricsExplorer.tsx:218:17",className:"h-64 flex items-center justify-center text-sm text-[var(--dg-text-muted)] border border-dashed border-[var(--dg-border)] rounded-lg",children:"暂无数据"}):e.jsx("div",{"code-path":"src/pages/MetricsExplorer.tsx:222:17",className:"h-80 overflow-x-auto",children:e.jsxs("svg",{"code-path":"src/pages/MetricsExplorer.tsx:223:19",viewBox:`0 0 ${Math.max(p.length*4,400)} 300`,className:"w-full h-full min-w-[400px]",children:[[0,25,50,75,100].map(s=>e.jsx("line",{"code-path":"src/pages/MetricsExplorer.tsx:226:23",x1:"0",y1:300-s/100*260,x2:Math.max(p.length*4,400),y2:300-s/100*260,stroke:"#1e293b",strokeDasharray:"3 3"},s)),o.map((s,t)=>{const r=p.map((a,i)=>({x:i*4+2,y:300-(d[a][s]??0)/D*260})).filter(a=>d[p[Math.round((a.x-2)/4)]]?.[s]!=null);if(r.length<2)return null;const c=r.map((a,i)=>`${i===0?"M":"L"}${a.x} ${a.y}`).join(" ");return e.jsx("g",{"code-path":"src/pages/MetricsExplorer.tsx:236:25",children:e.jsx("path",{"code-path":"src/pages/MetricsExplorer.tsx:237:27",d:c,fill:"none",stroke:h[t%h.length],strokeWidth:"1.5"})},s)}),p.filter((s,t)=>t%15===0).map((s,t)=>e.jsx("text",{"code-path":"src/pages/MetricsExplorer.tsx:243:23",x:t*60+2,y:"295",fill:"#475569",fontSize:"9",children:new Date(s*1e3).toLocaleTimeString("zh-CN",{hour:"2-digit",minute:"2-digit"})},s))]})}),o.length>0&&e.jsx("div",{"code-path":"src/pages/MetricsExplorer.tsx:252:17",className:"flex flex-wrap gap-3 mt-3",children:o.map((s,t)=>e.jsxs("div",{"code-path":"src/pages/MetricsExplorer.tsx:254:21",className:"flex items-center gap-1.5 text-xs text-[var(--dg-text-secondary)]",children:[e.jsx("span",{"code-path":"src/pages/MetricsExplorer.tsx:255:23",className:"w-2.5 h-2.5 rounded-full",style:{backgroundColor:h[t%h.length]}}),s]},s))})]})})]}):e.jsx(b,{"code-path":"src/pages/MetricsExplorer.tsx:152:9",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsxs(M,{"code-path":"src/pages/MetricsExplorer.tsx:153:11",className:"p-12 text-center",children:[e.jsx(W,{"code-path":"src/pages/MetricsExplorer.tsx:154:13",className:"h-12 w-12 text-slate-600 mx-auto mb-4"}),e.jsx("p",{"code-path":"src/pages/MetricsExplorer.tsx:155:13",className:"text-[var(--dg-text-muted)]",children:"请先选择监控目标,然后勾选要查看的指标"})]})}),g&&Object.keys(g.latest_metrics||{}).length>0&&e.jsx("div",{"code-path":"src/pages/MetricsExplorer.tsx:268:9",className:"grid grid-cols-2 md:grid-cols-4 lg:grid-cols-6 gap-3",children:Object.entries(g.latest_metrics).map(([s,t])=>e.jsxs("div",{"code-path":"src/pages/MetricsExplorer.tsx:270:13",className:"bg-[var(--dg-bg-secondary)] rounded-lg p-3 border border-[var(--dg-border)] text-center",children:[e.jsx("p",{"code-path":"src/pages/MetricsExplorer.tsx:271:15",className:"text-[10px] text-[var(--dg-text-muted)] truncate",children:s}),e.jsx("p",{"code-path":"src/pages/MetricsExplorer.tsx:272:15",className:"text-lg font-bold text-[var(--dg-text-primary)]",children:typeof t=="number"?t.toFixed(1):"--"})]},s))})]})}export{ae as MetricsExplorer,ae as default}; diff --git a/backend/static/assets/MonitorCenter-Cdfxw79h.js b/backend/static/assets/MonitorCenter-Cdfxw79h.js deleted file mode 100644 index f6a38f6..0000000 --- a/backend/static/assets/MonitorCenter-Cdfxw79h.js +++ /dev/null @@ -1 +0,0 @@ -import{g as X,r as i,h as L,j as e,L as O,A as R,G as B,q as K,D as W,y as Ne,B as w,b as Y,c as Z,d as J,e as ee,I as y,f as te,a as ve,O as I,x as je,o as be,X as Se}from"./index-DfyorCky.js";import{HostMonitor as ye}from"./HostMonitor-C63FMElJ.js";import{C as h,a as M}from"./card-C55cvSHg.js";import{B as u}from"./badge-xNW8x0G1.js";import{C as fe}from"./circle-DOZr6_68.js";import{L as j}from"./label-BK0h2apY.js";import{S as se,a as ae,b as re,c as oe,d as A}from"./select-D5qUzdAs.js";import{T as ce,a as de,b as $,c as l,d as ie,e as p}from"./table-5sHV4Akp.js";import{H as we}from"./hard-drive-BbPmnARR.js";import{P as ne}from"./plus-CUG-9kpu.js";import{T as xe}from"./trash-2-Dx32pOzT.js";import{S as Pe}from"./switch-CGiGgOnh.js";import{t as C}from"./index-a3ybMjbR.js";import{s as F}from"./monitor-BAaBXIsC.js";import{A as Ce}from"./arrow-up-down-DnvTt5VG.js";import{R as _e}from"./refresh-cw-DUB_tAG-.js";import{C as Te}from"./circle-x-DK79Dhg2.js";import{C as ke}from"./circle-check-DWcXrx2k.js";import"./agent-DqqIRCQX.js";import"./tabs-CIh_yD4s.js";import"./disc-EsE6x5Oh.js";import"./generateCategoricalChart-6v9BPbG2.js";import"./AreaChart-B2zlWfdX.js";import"./square-pen-BxUFAe0F.js";import"./index-CWVNW_qu.js";const De=[["path",{d:"M16.247 7.761a6 6 0 0 1 0 8.478",key:"1fwjs5"}],["path",{d:"M19.075 4.933a10 10 0 0 1 0 14.134",key:"ehdyv1"}],["path",{d:"M4.925 19.067a10 10 0 0 1 0-14.134",key:"1q22gi"}],["path",{d:"M7.753 16.239a6 6 0 0 1 0-8.478",key:"r2q7qm"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]],le=X("radio",De);const qe=[["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",key:"w68u3i"}],["path",{d:"M6.01 18H6",key:"19vcac"}],["path",{d:"M10.01 18H10",key:"uamcmx"}],["path",{d:"M15 10v4",key:"qjz1xs"}],["path",{d:"M17.84 7.17a4 4 0 0 0-5.66 0",key:"1rif40"}],["path",{d:"M20.66 4.34a8 8 0 0 0-11.31 0",key:"6a5xfq"}]],U=X("router",qe);function Fe(t){return t==null||t===0?"--":t>1e9?`${(t/1e9).toFixed(1)} GB`:t>1e6?`${(t/1e6).toFixed(1)} MB`:t>1e3?`${(t/1e3).toFixed(1)} KB`:`${t} B`}function E(t){return t==null||Number.isNaN(t)?"--":`${(t*100).toFixed(1)}%`}function D(t,n=0){return t==null||Number.isNaN(t)?"--":t.toFixed(n)}function Le(t){switch(t){case"online":return"text-emerald-400";case"warning":return"text-amber-400";case"error":return"text-red-400";default:return"text-slate-500"}}function Ie(t){switch(t){case"online":return"bg-emerald-400";case"warning":return"bg-amber-400";case"error":return"bg-red-400";default:return"bg-slate-500"}}function $e(){const[t,n]=i.useState([]),[d,N]=i.useState(!0),[v,_]=i.useState(""),T=i.useCallback(async()=>{try{N(!0),_("");const r=await L.get("/metrics/targets",{type:"middleware",page_size:200});n(r?.list||[])}catch(r){_(r.message||"加载失败"),n([])}finally{N(!1)}},[]);i.useEffect(()=>{T()},[]);const b=t.filter(r=>r.type==="redis"||r.name?.toLowerCase().includes("redis")),o=t.filter(r=>r.type==="mysql"||r.name?.toLowerCase().includes("mysql")),x=b.find(r=>r.status==="online")||b[0],c=x?.latest_metrics||{},m=o.find(r=>r.status==="online")||o[0],S=m?.latest_metrics||{};return e.jsxs("div",{"code-path":"src/pages/MiddlewareMonitor.tsx:96:5",className:"space-y-6",children:[d&&e.jsxs("div",{"code-path":"src/pages/MiddlewareMonitor.tsx:98:9",className:"flex items-center justify-center py-12",children:[e.jsx(O,{"code-path":"src/pages/MiddlewareMonitor.tsx:99:11",className:"h-6 w-6 animate-spin text-slate-500 mr-2"}),e.jsx("span",{"code-path":"src/pages/MiddlewareMonitor.tsx:100:11",className:"text-sm text-[var(--dg-text-muted)]",children:"正在加载中间件指标..."})]}),v&&!d&&e.jsx(h,{"code-path":"src/pages/MiddlewareMonitor.tsx:105:9",className:"bg-[var(--dg-bg-secondary)] border-red-500/30",children:e.jsxs(M,{"code-path":"src/pages/MiddlewareMonitor.tsx:106:11",className:"p-6 text-center",children:[e.jsx(R,{"code-path":"src/pages/MiddlewareMonitor.tsx:107:13",className:"h-8 w-8 text-red-400 mx-auto mb-2"}),e.jsx("p",{"code-path":"src/pages/MiddlewareMonitor.tsx:108:13",className:"text-sm text-red-400",children:v}),e.jsx("p",{"code-path":"src/pages/MiddlewareMonitor.tsx:109:13",className:"text-xs text-[var(--dg-text-muted)] mt-2",children:"请确认后端服务可用且已配置中间件采集"})]})}),!d&&!v&&t.length===0&&e.jsx(h,{"code-path":"src/pages/MiddlewareMonitor.tsx:115:9",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsxs(M,{"code-path":"src/pages/MiddlewareMonitor.tsx:116:11",className:"p-12 text-center",children:[e.jsx(B,{"code-path":"src/pages/MiddlewareMonitor.tsx:117:13",className:"h-12 w-12 text-slate-600 mx-auto mb-4"}),e.jsx("p",{"code-path":"src/pages/MiddlewareMonitor.tsx:118:13",className:"text-sm text-[var(--dg-text-muted)]",children:"暂无中间件监控目标"}),e.jsx("p",{"code-path":"src/pages/MiddlewareMonitor.tsx:119:13",className:"text-xs text-[var(--dg-text-muted)] mt-2",children:"需在 Agent 配置 Redis / MySQL 连接信息后启用采集"})]})}),e.jsx(h,{"code-path":"src/pages/MiddlewareMonitor.tsx:125:7",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsxs(M,{"code-path":"src/pages/MiddlewareMonitor.tsx:126:9",className:"p-4",children:[e.jsxs("div",{"code-path":"src/pages/MiddlewareMonitor.tsx:127:11",className:"flex items-center gap-2 mb-4",children:[e.jsx(B,{"code-path":"src/pages/MiddlewareMonitor.tsx:128:13",className:"h-4 w-4 text-red-400"}),e.jsx("h3",{"code-path":"src/pages/MiddlewareMonitor.tsx:129:13",className:"text-sm font-medium text-[var(--dg-text-primary)]",children:"Redis 监控"}),x&&e.jsxs(u,{"code-path":"src/pages/MiddlewareMonitor.tsx:131:15",variant:"outline",className:"ml-auto text-[10px] border-[var(--dg-border)] text-[var(--dg-text-muted)]",children:[x.name," (",x.ip,")"]})]}),x?e.jsxs("div",{"code-path":"src/pages/MiddlewareMonitor.tsx:139:13",className:"grid grid-cols-2 md:grid-cols-4 gap-3",children:[e.jsx(f,{"code-path":"src/pages/MiddlewareMonitor.tsx:140:15",label:"连接数",value:D(c.redis_connected_clients)}),e.jsx(f,{"code-path":"src/pages/MiddlewareMonitor.tsx:144:15",label:"内存",value:Fe(c.redis_used_memory)}),e.jsx(f,{"code-path":"src/pages/MiddlewareMonitor.tsx:148:15",label:"命中率",value:E(c.redis_hit_rate)}),e.jsx(f,{"code-path":"src/pages/MiddlewareMonitor.tsx:152:15",label:"QPS",value:D(c.redis_qps,0)})]}):e.jsx("p",{"code-path":"src/pages/MiddlewareMonitor.tsx:137:13",className:"text-sm text-[var(--dg-text-muted)] mb-4",children:"需在 Agent 配置 Redis 连接地址和密码后启用采集。"})]})}),e.jsx(h,{"code-path":"src/pages/MiddlewareMonitor.tsx:162:7",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsxs(M,{"code-path":"src/pages/MiddlewareMonitor.tsx:163:9",className:"p-4",children:[e.jsxs("div",{"code-path":"src/pages/MiddlewareMonitor.tsx:164:11",className:"flex items-center gap-2 mb-4",children:[e.jsx(K,{"code-path":"src/pages/MiddlewareMonitor.tsx:165:13",className:"h-4 w-4 text-blue-400"}),e.jsx("h3",{"code-path":"src/pages/MiddlewareMonitor.tsx:166:13",className:"text-sm font-medium text-[var(--dg-text-primary)]",children:"MySQL 监控"}),m&&e.jsxs(u,{"code-path":"src/pages/MiddlewareMonitor.tsx:168:15",variant:"outline",className:"ml-auto text-[10px] border-[var(--dg-border)] text-[var(--dg-text-muted)]",children:[m.name," (",m.ip,")"]})]}),m?e.jsxs("div",{"code-path":"src/pages/MiddlewareMonitor.tsx:176:13",className:"grid grid-cols-2 md:grid-cols-4 gap-3",children:[e.jsx(f,{"code-path":"src/pages/MiddlewareMonitor.tsx:177:15",label:"连接数",value:D(S.mysql_connections)}),e.jsx(f,{"code-path":"src/pages/MiddlewareMonitor.tsx:181:15",label:"QPS",value:D(S.mysql_qps,1)}),e.jsx(f,{"code-path":"src/pages/MiddlewareMonitor.tsx:185:15",label:"慢查询",value:D(S.mysql_slow_queries)}),e.jsx(f,{"code-path":"src/pages/MiddlewareMonitor.tsx:189:15",label:"缓冲池命中率",value:E(S.mysql_buffer_hit_rate)})]}):e.jsx("p",{"code-path":"src/pages/MiddlewareMonitor.tsx:174:13",className:"text-sm text-[var(--dg-text-muted)] mb-4",children:"需在 Agent 配置 MySQL 连接地址、用户名和密码后启用采集。"})]})}),t.length>0&&e.jsx(h,{"code-path":"src/pages/MiddlewareMonitor.tsx:200:9",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsxs(M,{"code-path":"src/pages/MiddlewareMonitor.tsx:201:11",className:"p-4",children:[e.jsxs("div",{"code-path":"src/pages/MiddlewareMonitor.tsx:202:13",className:"flex items-center gap-2 mb-4",children:[e.jsx(R,{"code-path":"src/pages/MiddlewareMonitor.tsx:203:15",className:"h-4 w-4 text-[var(--dg-text-muted)]"}),e.jsxs("h3",{"code-path":"src/pages/MiddlewareMonitor.tsx:204:15",className:"text-sm font-medium text-[var(--dg-text-primary)]",children:["中间件实例(",t.length,")"]})]}),e.jsx("div",{"code-path":"src/pages/MiddlewareMonitor.tsx:208:13",className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-3",children:t.map(r=>e.jsx(He,{"code-path":"src/pages/MiddlewareMonitor.tsx:210:17",target:r},r.id))})]})}),t.filter(r=>!b.includes(r)&&!o.includes(r)).length>0&&e.jsx("div",{"code-path":"src/pages/MiddlewareMonitor.tsx:219:9",className:"space-y-4",children:t.filter(r=>!b.includes(r)&&!o.includes(r)).map(r=>e.jsx(h,{"code-path":"src/pages/MiddlewareMonitor.tsx:223:15",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsxs(M,{"code-path":"src/pages/MiddlewareMonitor.tsx:224:17",className:"p-4",children:[e.jsxs("div",{"code-path":"src/pages/MiddlewareMonitor.tsx:225:19",className:"flex items-center gap-2 mb-3",children:[e.jsx(fe,{"code-path":"src/pages/MiddlewareMonitor.tsx:226:21",className:`h-3 w-3 ${Le(r.status)}`}),e.jsx("h3",{"code-path":"src/pages/MiddlewareMonitor.tsx:227:21",className:"text-sm font-medium text-[var(--dg-text-primary)] capitalize",children:r.type}),e.jsxs(u,{"code-path":"src/pages/MiddlewareMonitor.tsx:228:21",variant:"outline",className:"text-[10px] border-[var(--dg-border)] text-[var(--dg-text-muted)]",children:[r.name," (",r.ip,")"]})]}),Object.keys(r.latest_metrics||{}).length>0?e.jsx("div",{"code-path":"src/pages/MiddlewareMonitor.tsx:233:21",className:"grid grid-cols-2 md:grid-cols-4 gap-3",children:Object.entries(r.latest_metrics).map(([g,k])=>e.jsx(f,{"code-path":"src/pages/MiddlewareMonitor.tsx:235:25",label:g,value:D(k,1)},g))}):e.jsx("p",{"code-path":"src/pages/MiddlewareMonitor.tsx:239:21",className:"text-xs text-[var(--dg-text-muted)]",children:"暂无指标数据"})]})},r.id))})]})}function f({label:t,value:n}){return e.jsxs("div",{"code-path":"src/pages/MiddlewareMonitor.tsx:253:5",className:"bg-[var(--dg-bg-tertiary)] rounded-lg p-3 text-center",children:[e.jsx("p",{"code-path":"src/pages/MiddlewareMonitor.tsx:254:7",className:"text-xs text-[var(--dg-text-muted)]",children:t}),e.jsx("p",{"code-path":"src/pages/MiddlewareMonitor.tsx:255:7",className:"text-lg font-bold text-[var(--dg-text-primary)]",children:n})]})}function He({target:t}){const n=t.latest_metrics||{},d=Object.keys(n).length;return e.jsxs("div",{"code-path":"src/pages/MiddlewareMonitor.tsx:266:5",className:"bg-[var(--dg-bg-tertiary)] rounded-lg p-3 border border-[var(--dg-border)] hover:border-[var(--dg-border)]/80 transition-colors",children:[e.jsxs("div",{"code-path":"src/pages/MiddlewareMonitor.tsx:267:7",className:"flex items-center justify-between mb-2",children:[e.jsxs("div",{"code-path":"src/pages/MiddlewareMonitor.tsx:268:9",className:"flex items-center gap-2 min-w-0",children:[e.jsx("span",{"code-path":"src/pages/MiddlewareMonitor.tsx:269:11",className:`inline-block w-2 h-2 rounded-full ${Ie(t.status)}`}),e.jsx("span",{"code-path":"src/pages/MiddlewareMonitor.tsx:270:11",className:"text-sm font-medium text-[var(--dg-text-primary)] truncate",children:t.name})]}),e.jsx(u,{"code-path":"src/pages/MiddlewareMonitor.tsx:272:9",variant:"outline",className:`text-[10px] capitalize ${t.status==="online"?"border-emerald-400/50 text-emerald-400":"border-[var(--dg-border)] text-[var(--dg-text-muted)]"}`,children:t.status})]}),e.jsxs("div",{"code-path":"src/pages/MiddlewareMonitor.tsx:279:7",className:"text-xs text-[var(--dg-text-muted)] mb-2",children:[t.ip," · ",t.type]}),d>0?e.jsxs("div",{"code-path":"src/pages/MiddlewareMonitor.tsx:283:9",className:"flex flex-wrap gap-1.5",children:[Object.entries(n).slice(0,4).map(([N,v])=>e.jsxs("span",{"code-path":"src/pages/MiddlewareMonitor.tsx:285:13",className:"inline-flex items-center gap-1 text-[10px] bg-[var(--dg-bg-primary)] rounded px-1.5 py-0.5 text-[var(--dg-text-secondary)]",children:[e.jsx("span",{"code-path":"src/pages/MiddlewareMonitor.tsx:286:15",className:"text-[var(--dg-text-muted)]",children:N}),e.jsx("span",{"code-path":"src/pages/MiddlewareMonitor.tsx:287:15",className:"font-mono font-medium text-[var(--dg-text-primary)]",children:typeof v=="number"?v.toFixed(1):v})]},N)),d>4&&e.jsxs("span",{"code-path":"src/pages/MiddlewareMonitor.tsx:293:13",className:"text-[10px] text-[var(--dg-text-muted)]",children:["+",d-4," 项"]})]}):e.jsx("p",{"code-path":"src/pages/MiddlewareMonitor.tsx:297:9",className:"text-[10px] text-[var(--dg-text-muted)]",children:"暂无指标"})]})}const G={name:"",ip:"",port:161,snmp_version:"v2c",community:"public",template_id:""};function Oe(){const[t,n]=i.useState({total:0,online:0,abnormal:0}),[d,N]=i.useState([]),[v,_]=i.useState(!0),[T,b]=i.useState(!1),[o,x]=i.useState({...G}),[c,m]=i.useState(!1),S=i.useCallback(async()=>{try{const a=await L.get("/snmp/stats");n(a)}catch{}},[]),r=i.useCallback(async()=>{try{const a=await L.get("/snmp/devices");N(a.list??[])}catch{N([])}finally{_(!1)}},[]),g=i.useCallback(()=>{S(),r()},[S,r]);i.useEffect(()=>{g()},[g]);const k=async()=>{if(!(!o.name.trim()||!o.ip.trim())){m(!0);try{await L.post("/snmp/devices",{name:o.name.trim(),ip:o.ip.trim(),port:Number(o.port),snmp_version:o.snmp_version,community:o.community.trim(),template_id:o.template_id?Number(o.template_id):0}),b(!1),x({...G}),g()}catch{}finally{m(!1)}}},H=async a=>{try{await L.delete(`/snmp/devices/${a}`),g()}catch{}},P=a=>a==="online"?e.jsx(u,{"code-path":"src/pages/SNMPMonitor.tsx:146:14",className:"bg-emerald-500/15 text-emerald-400 border-emerald-500/30",children:"在线"}):a==="abnormal"?e.jsx(u,{"code-path":"src/pages/SNMPMonitor.tsx:149:14",className:"bg-red-500/15 text-red-400 border-red-500/30",children:"异常"}):e.jsx(u,{"code-path":"src/pages/SNMPMonitor.tsx:151:12",className:"bg-slate-500/15 text-slate-400 border-slate-500/30",children:"离线"});return e.jsxs("div",{"code-path":"src/pages/SNMPMonitor.tsx:156:5",className:"space-y-6",children:[e.jsxs("div",{"code-path":"src/pages/SNMPMonitor.tsx:158:7",className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsx(h,{"code-path":"src/pages/SNMPMonitor.tsx:159:9",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsxs(M,{"code-path":"src/pages/SNMPMonitor.tsx:160:11",className:"p-4",children:[e.jsxs("div",{"code-path":"src/pages/SNMPMonitor.tsx:161:13",className:"flex items-center gap-2 mb-3",children:[e.jsx(U,{"code-path":"src/pages/SNMPMonitor.tsx:162:15",className:"h-4 w-4 text-cyan-400"}),e.jsx("h3",{"code-path":"src/pages/SNMPMonitor.tsx:163:15",className:"text-sm font-medium text-[var(--dg-text-primary)]",children:"网络设备"})]}),e.jsx("p",{"code-path":"src/pages/SNMPMonitor.tsx:165:13",className:"text-xs text-[var(--dg-text-muted)] mb-3",children:"交换机 / 路由器 / 防火墙"}),e.jsxs("div",{"code-path":"src/pages/SNMPMonitor.tsx:166:13",className:"space-y-2",children:[e.jsxs("div",{"code-path":"src/pages/SNMPMonitor.tsx:167:15",className:"flex justify-between text-sm",children:[e.jsx("span",{"code-path":"src/pages/SNMPMonitor.tsx:168:17",className:"text-[var(--dg-text-muted)]",children:"设备总数"}),e.jsx("span",{"code-path":"src/pages/SNMPMonitor.tsx:169:17",className:"text-[var(--dg-text-primary)] font-mono",children:t.total})]}),e.jsxs("div",{"code-path":"src/pages/SNMPMonitor.tsx:171:15",className:"flex justify-between text-sm",children:[e.jsx("span",{"code-path":"src/pages/SNMPMonitor.tsx:172:17",className:"text-[var(--dg-text-muted)]",children:"在线"}),e.jsx("span",{"code-path":"src/pages/SNMPMonitor.tsx:173:17",className:"text-emerald-400 font-mono",children:t.online})]})]})]})}),e.jsx(h,{"code-path":"src/pages/SNMPMonitor.tsx:179:9",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsxs(M,{"code-path":"src/pages/SNMPMonitor.tsx:180:11",className:"p-4",children:[e.jsxs("div",{"code-path":"src/pages/SNMPMonitor.tsx:181:13",className:"flex items-center gap-2 mb-3",children:[e.jsx(we,{"code-path":"src/pages/SNMPMonitor.tsx:182:15",className:"h-4 w-4 text-purple-400"}),e.jsx("h3",{"code-path":"src/pages/SNMPMonitor.tsx:183:15",className:"text-sm font-medium text-[var(--dg-text-primary)]",children:"服务器硬件"})]}),e.jsx("p",{"code-path":"src/pages/SNMPMonitor.tsx:185:13",className:"text-xs text-[var(--dg-text-muted)] mb-3",children:"iLO / iDRAC / IPMI"}),e.jsx("div",{"code-path":"src/pages/SNMPMonitor.tsx:186:13",className:"space-y-2",children:e.jsxs("div",{"code-path":"src/pages/SNMPMonitor.tsx:187:15",className:"flex justify-between text-sm",children:[e.jsx("span",{"code-path":"src/pages/SNMPMonitor.tsx:188:17",className:"text-[var(--dg-text-muted)]",children:"异常"}),e.jsx("span",{"code-path":"src/pages/SNMPMonitor.tsx:189:17",className:"text-red-400 font-mono",children:t.abnormal})]})})]})})]}),e.jsx(h,{"code-path":"src/pages/SNMPMonitor.tsx:197:7",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsxs(M,{"code-path":"src/pages/SNMPMonitor.tsx:198:9",className:"p-4",children:[e.jsxs("div",{"code-path":"src/pages/SNMPMonitor.tsx:199:11",className:"flex items-center gap-2 mb-3",children:[e.jsx(le,{"code-path":"src/pages/SNMPMonitor.tsx:200:13",className:"h-4 w-4 text-[var(--dg-text-muted)]"}),e.jsx("h3",{"code-path":"src/pages/SNMPMonitor.tsx:201:13",className:"text-sm font-medium text-[var(--dg-text-primary)]",children:"OID 监控模板"})]}),e.jsx("p",{"code-path":"src/pages/SNMPMonitor.tsx:203:11",className:"text-sm text-[var(--dg-text-muted)]",children:"支持 Zabbix 兼容的 SNMP OID 模板(XML 格式),内置思科/H3C/华为交换机模板、服务器硬件监控模板。"}),e.jsx("div",{"code-path":"src/pages/SNMPMonitor.tsx:206:11",className:"mt-3 grid grid-cols-2 md:grid-cols-4 gap-2 text-xs text-[var(--dg-text-secondary)]",children:["思科交换机","H3C S5000","华为交换机","iLO/Dell"].map(a=>e.jsx("div",{"code-path":"src/pages/SNMPMonitor.tsx:208:15",className:"bg-[var(--dg-bg-tertiary)] rounded px-2 py-1 text-center border border-[var(--dg-border)]",children:a},a))})]})}),e.jsx(h,{"code-path":"src/pages/SNMPMonitor.tsx:220:7",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsxs(M,{"code-path":"src/pages/SNMPMonitor.tsx:221:9",className:"p-4",children:[e.jsxs("div",{"code-path":"src/pages/SNMPMonitor.tsx:222:11",className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{"code-path":"src/pages/SNMPMonitor.tsx:223:13",className:"flex items-center gap-2",children:[e.jsx(U,{"code-path":"src/pages/SNMPMonitor.tsx:224:15",className:"h-4 w-4 text-cyan-400"}),e.jsxs("h3",{"code-path":"src/pages/SNMPMonitor.tsx:225:15",className:"text-sm font-medium text-[var(--dg-text-primary)]",children:["SNMP 设备列表",!v&&e.jsxs("span",{"code-path":"src/pages/SNMPMonitor.tsx:228:19",className:"ml-2 text-xs text-[var(--dg-text-muted)] font-normal",children:["(",d.length," 台)"]})]})]}),e.jsxs(W,{"code-path":"src/pages/SNMPMonitor.tsx:236:13",open:T,onOpenChange:b,children:[e.jsx(Ne,{"code-path":"src/pages/SNMPMonitor.tsx:237:15",asChild:!0,children:e.jsxs(w,{"code-path":"src/pages/SNMPMonitor.tsx:238:17",size:"sm",className:"bg-cyan-500/10 text-cyan-400 hover:bg-cyan-500/20 border border-cyan-500/30",children:[e.jsx(ne,{"code-path":"src/pages/SNMPMonitor.tsx:239:19",className:"h-4 w-4"}),"添加设备"]})}),e.jsxs(Y,{"code-path":"src/pages/SNMPMonitor.tsx:243:15",className:"bg-slate-900 border-[var(--dg-border)] text-[var(--dg-text-primary)] sm:max-w-md",children:[e.jsxs(Z,{"code-path":"src/pages/SNMPMonitor.tsx:244:17",children:[e.jsx(J,{"code-path":"src/pages/SNMPMonitor.tsx:245:19",className:"text-[var(--dg-text-primary)]",children:"添加 SNMP 设备"}),e.jsx(ee,{"code-path":"src/pages/SNMPMonitor.tsx:246:19",className:"text-[var(--dg-text-muted)]",children:"输入设备信息以开始 SNMP 监控采集。"})]}),e.jsxs("div",{"code-path":"src/pages/SNMPMonitor.tsx:251:17",className:"grid gap-4 py-2",children:[e.jsxs("div",{"code-path":"src/pages/SNMPMonitor.tsx:253:19",className:"grid gap-1.5",children:[e.jsx(j,{"code-path":"src/pages/SNMPMonitor.tsx:254:21",htmlFor:"snmp-name",className:"text-[var(--dg-text-muted)]",children:"设备名称"}),e.jsx(y,{"code-path":"src/pages/SNMPMonitor.tsx:257:21",id:"snmp-name",placeholder:"例如: 核心交换机",value:o.name,onChange:a=>x({...o,name:a.target.value}),className:"bg-[var(--dg-bg-primary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),e.jsxs("div",{"code-path":"src/pages/SNMPMonitor.tsx:267:19",className:"grid gap-1.5",children:[e.jsx(j,{"code-path":"src/pages/SNMPMonitor.tsx:268:21",htmlFor:"snmp-ip",className:"text-[var(--dg-text-muted)]",children:"IP 地址"}),e.jsx(y,{"code-path":"src/pages/SNMPMonitor.tsx:271:21",id:"snmp-ip",placeholder:"例如: 192.168.1.1",value:o.ip,onChange:a=>x({...o,ip:a.target.value}),className:"bg-[var(--dg-bg-primary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),e.jsxs("div",{"code-path":"src/pages/SNMPMonitor.tsx:281:19",className:"grid gap-1.5",children:[e.jsx(j,{"code-path":"src/pages/SNMPMonitor.tsx:282:21",htmlFor:"snmp-port",className:"text-[var(--dg-text-muted)]",children:"SNMP 端口"}),e.jsx(y,{"code-path":"src/pages/SNMPMonitor.tsx:285:21",id:"snmp-port",type:"number",placeholder:"161",value:o.port,onChange:a=>x({...o,port:Number(a.target.value)||161}),className:"bg-[var(--dg-bg-primary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),e.jsxs("div",{"code-path":"src/pages/SNMPMonitor.tsx:296:19",className:"grid gap-1.5",children:[e.jsx(j,{"code-path":"src/pages/SNMPMonitor.tsx:297:21",htmlFor:"snmp-version",className:"text-[var(--dg-text-muted)]",children:"SNMP 版本"}),e.jsxs(se,{"code-path":"src/pages/SNMPMonitor.tsx:300:21",value:o.snmp_version,onValueChange:a=>x({...o,snmp_version:a}),children:[e.jsx(ae,{"code-path":"src/pages/SNMPMonitor.tsx:304:23",id:"snmp-version",className:"w-full bg-[var(--dg-bg-primary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]",children:e.jsx(re,{"code-path":"src/pages/SNMPMonitor.tsx:308:25"})}),e.jsxs(oe,{"code-path":"src/pages/SNMPMonitor.tsx:310:23",className:"bg-slate-800 border-slate-700 text-slate-200",children:[e.jsx(A,{"code-path":"src/pages/SNMPMonitor.tsx:311:25",value:"v2c",children:"v2c"}),e.jsx(A,{"code-path":"src/pages/SNMPMonitor.tsx:312:25",value:"v3",children:"v3"})]})]})]}),e.jsxs("div",{"code-path":"src/pages/SNMPMonitor.tsx:318:19",className:"grid gap-1.5",children:[e.jsx(j,{"code-path":"src/pages/SNMPMonitor.tsx:319:21",htmlFor:"snmp-community",className:"text-[var(--dg-text-muted)]",children:"Community"}),e.jsx(y,{"code-path":"src/pages/SNMPMonitor.tsx:322:21",id:"snmp-community",placeholder:"public",value:o.community,onChange:a=>x({...o,community:a.target.value}),className:"bg-[var(--dg-bg-primary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),e.jsxs("div",{"code-path":"src/pages/SNMPMonitor.tsx:332:19",className:"grid gap-1.5",children:[e.jsx(j,{"code-path":"src/pages/SNMPMonitor.tsx:333:21",htmlFor:"snmp-template",className:"text-[var(--dg-text-muted)]",children:"模板 ID"}),e.jsx(y,{"code-path":"src/pages/SNMPMonitor.tsx:336:21",id:"snmp-template",type:"number",placeholder:"模板 ID",value:o.template_id,onChange:a=>x({...o,template_id:a.target.value}),className:"bg-[var(--dg-bg-primary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]})]}),e.jsxs(te,{"code-path":"src/pages/SNMPMonitor.tsx:347:17",children:[e.jsx(w,{"code-path":"src/pages/SNMPMonitor.tsx:348:19",variant:"outline",onClick:()=>b(!1),className:"border-[var(--dg-border)] text-[var(--dg-text-muted)] hover:bg-slate-800",children:"取消"}),e.jsx(w,{"code-path":"src/pages/SNMPMonitor.tsx:355:19",onClick:k,disabled:c||!o.name.trim()||!o.ip.trim(),className:"bg-cyan-500/10 text-cyan-400 hover:bg-cyan-500/20 border border-cyan-500/30",children:c?"添加中...":"确认添加"})]})]})]})]}),v?e.jsx("div",{"code-path":"src/pages/SNMPMonitor.tsx:369:13",className:"py-12 text-center text-sm text-[var(--dg-text-muted)]",children:"加载中..."}):d.length===0?e.jsx("div",{"code-path":"src/pages/SNMPMonitor.tsx:371:13",className:"py-12 text-center text-sm text-[var(--dg-text-muted)] border border-dashed border-[var(--dg-border)] rounded-lg",children:"暂无 SNMP 设备,点击「添加设备」开始监控"}):e.jsxs(ce,{"code-path":"src/pages/SNMPMonitor.tsx:375:13",children:[e.jsx(de,{"code-path":"src/pages/SNMPMonitor.tsx:376:15",children:e.jsxs($,{"code-path":"src/pages/SNMPMonitor.tsx:377:17",className:"border-[var(--dg-border)] hover:bg-transparent",children:[e.jsx(l,{"code-path":"src/pages/SNMPMonitor.tsx:378:19",className:"text-[var(--dg-text-muted)]",children:"名称"}),e.jsx(l,{"code-path":"src/pages/SNMPMonitor.tsx:379:19",className:"text-[var(--dg-text-muted)]",children:"IP 地址"}),e.jsx(l,{"code-path":"src/pages/SNMPMonitor.tsx:380:19",className:"text-[var(--dg-text-muted)]",children:"端口"}),e.jsx(l,{"code-path":"src/pages/SNMPMonitor.tsx:381:19",className:"text-[var(--dg-text-muted)]",children:"版本"}),e.jsx(l,{"code-path":"src/pages/SNMPMonitor.tsx:382:19",className:"text-[var(--dg-text-muted)]",children:"Community"}),e.jsx(l,{"code-path":"src/pages/SNMPMonitor.tsx:383:19",className:"text-[var(--dg-text-muted)]",children:"模板 ID"}),e.jsx(l,{"code-path":"src/pages/SNMPMonitor.tsx:384:19",className:"text-[var(--dg-text-muted)]",children:"状态"}),e.jsx(l,{"code-path":"src/pages/SNMPMonitor.tsx:385:19",className:"text-[var(--dg-text-muted)] w-16",children:"操作"})]})}),e.jsx(ie,{"code-path":"src/pages/SNMPMonitor.tsx:388:15",children:d.map(a=>e.jsxs($,{"code-path":"src/pages/SNMPMonitor.tsx:390:19",className:"border-[var(--dg-border)]",children:[e.jsx(p,{"code-path":"src/pages/SNMPMonitor.tsx:391:21",className:"text-[var(--dg-text-primary)] font-medium",children:a.name}),e.jsx(p,{"code-path":"src/pages/SNMPMonitor.tsx:394:21",className:"text-[var(--dg-text-muted)] font-mono text-xs",children:a.ip}),e.jsx(p,{"code-path":"src/pages/SNMPMonitor.tsx:397:21",className:"text-[var(--dg-text-muted)]",children:a.port}),e.jsx(p,{"code-path":"src/pages/SNMPMonitor.tsx:398:21",children:e.jsx(u,{"code-path":"src/pages/SNMPMonitor.tsx:399:23",variant:"outline",className:"border-[var(--dg-border)] text-[var(--dg-text-muted)]",children:a.snmp_version})}),e.jsx(p,{"code-path":"src/pages/SNMPMonitor.tsx:403:21",className:"text-[var(--dg-text-muted)] font-mono text-xs",children:a.community}),e.jsx(p,{"code-path":"src/pages/SNMPMonitor.tsx:406:21",className:"text-[var(--dg-text-muted)]",children:a.template_id||"--"}),e.jsx(p,{"code-path":"src/pages/SNMPMonitor.tsx:407:21",children:P(a.status)}),e.jsx(p,{"code-path":"src/pages/SNMPMonitor.tsx:408:21",children:e.jsx(w,{"code-path":"src/pages/SNMPMonitor.tsx:409:23",variant:"ghost",size:"icon-sm",onClick:()=>H(a.id),className:"text-slate-500 hover:text-red-400 hover:bg-red-500/10",title:"删除设备",children:e.jsx(xe,{"code-path":"src/pages/SNMPMonitor.tsx:416:25",className:"h-4 w-4"})})})]},a.id))})]})]})})]})}const Re=[{icon:I,name:"HTTP",color:"text-blue-400",desc:"HTTP URL 状态码 & 响应时间"},{icon:I,name:"HTTPS",color:"text-emerald-400",desc:"HTTPS SSL 证书 & 响应时间"},{icon:K,name:"TCP",color:"text-orange-400",desc:"TCP 端口连通性检测"},{icon:I,name:"DNS",color:"text-cyan-400",desc:"域名解析延迟 & 结果验证"},{icon:Ce,name:"PING",color:"text-purple-400",desc:"ICMP 连通性 & 延迟"}],Be=["HTTP","HTTPS","TCP","DNS","PING"],Q={name:"",url:"",type:"HTTP",frequency_sec:60,timeout_sec:10,expected_status_code:200};function Ae(t){switch(t){case"up":return e.jsx(ke,{"code-path":"src/pages/SiteMonitor.tsx:106:14",className:"h-4 w-4 text-emerald-400"});case"down":return e.jsx(Te,{"code-path":"src/pages/SiteMonitor.tsx:108:14",className:"h-4 w-4 text-red-400"});default:return e.jsx(je,{"code-path":"src/pages/SiteMonitor.tsx:110:14",className:"h-4 w-4 text-gray-400"})}}function ze(t){switch(t){case"up":return e.jsx(u,{"code-path":"src/pages/SiteMonitor.tsx:117:14",className:"bg-emerald-500/15 text-emerald-400 border-emerald-500/30",children:"正常"});case"down":return e.jsx(u,{"code-path":"src/pages/SiteMonitor.tsx:119:14",className:"bg-red-500/15 text-red-400 border-red-500/30",children:"异常"});default:return e.jsx(u,{"code-path":"src/pages/SiteMonitor.tsx:121:14",className:"bg-gray-500/15 text-gray-400 border-gray-500/30",children:"未知"})}}function Ue(t){return t==null||t===0?"--":t<1e3?`${t.toFixed(0)}ms`:`${(t/1e3).toFixed(2)}s`}function Ee(t){if(!t)return"--";const n=new Date(t),d=N=>String(N).padStart(2,"0");return`${d(n.getMonth()+1)}-${d(n.getDate())} ${d(n.getHours())}:${d(n.getMinutes())}`}function Ge(){const[t,n]=i.useState(null),[d,N]=i.useState([]),[v,_]=i.useState(!0),[T,b]=i.useState(!1),[o,x]=i.useState(!1),[c,m]=i.useState({...Q}),[S,r]=i.useState(!1),[g,k]=i.useState(null),H=ve(),P=i.useCallback(async()=>{try{const s=await F.getStats();n(s)}catch{}},[]),a=i.useCallback(async()=>{b(!0);try{const s=await F.getTasks();N(s?.list||[])}catch{}finally{b(!1),_(!1)}},[]);i.useEffect(()=>{P(),a()},[P,a]);const z=g?d.filter(s=>s.type?.toUpperCase()===g.toUpperCase()):d,pe=()=>{m({...Q}),x(!0)},me=async()=>{if(!c.name.trim()||!c.url.trim()){C.error("名称和 URL 不能为空");return}r(!0);try{await F.createTask({name:c.name.trim(),url:c.url.trim(),type:c.type.toLowerCase(),frequency_sec:Number(c.frequency_sec)||60,timeout_sec:Number(c.timeout_sec)||10,expected_status_code:Number(c.expected_status_code)||200}),C.success("拨测任务已创建"),x(!1),a(),P()}catch(s){C.error(s.message||"创建失败")}finally{r(!1)}},ge=async s=>{if(await H({title:"删除拨测任务",description:`确定删除「${s.name}」吗?此操作不可恢复。`,variant:"destructive"}))try{await F.deleteTask(s.id),C.success("任务已删除"),a(),P()}catch(ue){C.error(ue.message||"删除失败")}},he=async s=>{try{await F.toggleTask(s.id,!s.enabled),C.success(s.enabled?"已停用":"已启用"),a(),P()}catch(q){C.error(q.message||"操作失败")}},Me=t?.availability!=null?`${(t.availability*100).toFixed(1)}%`:"--";return v?e.jsx("div",{"code-path":"src/pages/SiteMonitor.tsx:249:7",className:"flex items-center justify-center py-20",children:e.jsx(O,{"code-path":"src/pages/SiteMonitor.tsx:250:9",className:"h-8 w-8 animate-spin text-[var(--dg-text-muted)]"})}):e.jsxs("div",{"code-path":"src/pages/SiteMonitor.tsx:256:5",className:"space-y-6",children:[e.jsx("div",{"code-path":"src/pages/SiteMonitor.tsx:258:7",className:"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-5 gap-3",children:Re.map(s=>{const q=g===s.name;return e.jsx(h,{"code-path":"src/pages/SiteMonitor.tsx:262:13",onClick:()=>k(q?null:s.name),className:`bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] transition-colors cursor-pointer ${q?"border-[var(--dg-blue)]/60 ring-1 ring-[var(--dg-blue)]/30":"hover:border-[var(--dg-blue)]/30"}`,children:e.jsxs(M,{"code-path":"src/pages/SiteMonitor.tsx:269:15",className:"p-3 text-center",children:[e.jsx(s.icon,{"code-path":"src/pages/SiteMonitor.tsx:270:17",className:`h-5 w-5 mx-auto mb-1.5 ${s.color}`}),e.jsx("p",{"code-path":"src/pages/SiteMonitor.tsx:271:17",className:"text-xs font-medium text-[var(--dg-text-primary)]",children:s.name}),e.jsx("p",{"code-path":"src/pages/SiteMonitor.tsx:272:17",className:"text-[10px] text-[var(--dg-text-muted)] mt-0.5",children:s.desc})]})},s.name)})}),e.jsx(h,{"code-path":"src/pages/SiteMonitor.tsx:280:7",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsxs(M,{"code-path":"src/pages/SiteMonitor.tsx:281:9",className:"p-4",children:[e.jsxs("div",{"code-path":"src/pages/SiteMonitor.tsx:282:11",className:"flex items-center justify-between mb-3",children:[e.jsxs("div",{"code-path":"src/pages/SiteMonitor.tsx:283:13",className:"flex items-center gap-2",children:[e.jsx(I,{"code-path":"src/pages/SiteMonitor.tsx:284:15",className:"h-4 w-4 text-[var(--dg-text-muted)]"}),e.jsx("h3",{"code-path":"src/pages/SiteMonitor.tsx:285:15",className:"text-sm font-medium text-[var(--dg-text-primary)]",children:"拨测任务概览"})]}),e.jsxs(w,{"code-path":"src/pages/SiteMonitor.tsx:287:13",size:"sm",variant:"ghost",className:"h-7 text-xs text-[var(--dg-text-muted)] hover:text-[var(--dg-text-primary)]",onClick:()=>{P(),a()},disabled:T,children:[e.jsx(_e,{"code-path":"src/pages/SiteMonitor.tsx:294:15",className:`h-3.5 w-3.5 ${T?"animate-spin":""}`}),"刷新"]})]}),e.jsx("div",{"code-path":"src/pages/SiteMonitor.tsx:298:11",className:"grid grid-cols-2 md:grid-cols-5 gap-3",children:[{label:"总任务数",value:t?.total_tasks??"--"},{label:"已启用",value:t?.enabled_tasks??"--"},{label:"正常",value:t?.up_count??"--",color:"text-emerald-400"},{label:"异常",value:t?.down_count??"--",color:"text-red-400"},{label:"可用率",value:Me,color:"text-blue-400"}].map(s=>e.jsxs("div",{"code-path":"src/pages/SiteMonitor.tsx:306:15",className:"bg-[var(--dg-bg-tertiary)] rounded-lg p-3 text-center",children:[e.jsx("p",{"code-path":"src/pages/SiteMonitor.tsx:307:17",className:"text-xs text-[var(--dg-text-muted)]",children:s.label}),e.jsx("p",{"code-path":"src/pages/SiteMonitor.tsx:308:17",className:`text-lg font-bold ${s.color||"text-[var(--dg-text-primary)]"}`,children:s.value})]},s.label))})]})}),e.jsx(h,{"code-path":"src/pages/SiteMonitor.tsx:318:7",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsxs(M,{"code-path":"src/pages/SiteMonitor.tsx:319:9",className:"p-4",children:[e.jsxs("div",{"code-path":"src/pages/SiteMonitor.tsx:320:11",className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{"code-path":"src/pages/SiteMonitor.tsx:321:13",className:"flex items-center gap-2",children:[e.jsx(R,{"code-path":"src/pages/SiteMonitor.tsx:322:15",className:"h-4 w-4 text-[var(--dg-text-muted)]"}),e.jsxs("h3",{"code-path":"src/pages/SiteMonitor.tsx:323:15",className:"text-sm font-medium text-[var(--dg-text-primary)]",children:["拨测任务列表",g&&e.jsxs(u,{"code-path":"src/pages/SiteMonitor.tsx:326:19",variant:"outline",className:"ml-2 text-[10px] cursor-pointer border-[var(--dg-blue)]/40 text-[var(--dg-blue)] h-5",onClick:()=>k(null),children:[g," ×"]})]})]}),e.jsxs(w,{"code-path":"src/pages/SiteMonitor.tsx:336:13",size:"sm",className:"h-8 gap-1.5",onClick:pe,children:[e.jsx(ne,{"code-path":"src/pages/SiteMonitor.tsx:341:15",className:"h-3.5 w-3.5"}),"添加任务"]})]}),z.length===0?e.jsx("div",{"code-path":"src/pages/SiteMonitor.tsx:347:13",className:"text-center py-12 text-sm text-[var(--dg-text-muted)]",children:d.length===0?"暂无拨测任务,点击「添加任务」创建第一个":"当前筛选条件下无任务"}):e.jsx("div",{"code-path":"src/pages/SiteMonitor.tsx:353:13",className:"overflow-x-auto",children:e.jsxs(ce,{"code-path":"src/pages/SiteMonitor.tsx:354:15",children:[e.jsx(de,{"code-path":"src/pages/SiteMonitor.tsx:355:17",children:e.jsxs($,{"code-path":"src/pages/SiteMonitor.tsx:356:19",className:"border-[var(--dg-border)] hover:bg-transparent",children:[e.jsx(l,{"code-path":"src/pages/SiteMonitor.tsx:357:21",className:"text-xs text-[var(--dg-text-muted)]",children:"名称"}),e.jsx(l,{"code-path":"src/pages/SiteMonitor.tsx:358:21",className:"text-xs text-[var(--dg-text-muted)]",children:"URL"}),e.jsx(l,{"code-path":"src/pages/SiteMonitor.tsx:359:21",className:"text-xs text-[var(--dg-text-muted)]",children:"类型"}),e.jsx(l,{"code-path":"src/pages/SiteMonitor.tsx:360:21",className:"text-xs text-[var(--dg-text-muted)]",children:"间隔"}),e.jsx(l,{"code-path":"src/pages/SiteMonitor.tsx:361:21",className:"text-xs text-[var(--dg-text-muted)]",children:"状态"}),e.jsx(l,{"code-path":"src/pages/SiteMonitor.tsx:362:21",className:"text-xs text-[var(--dg-text-muted)]",children:"延迟"}),e.jsx(l,{"code-path":"src/pages/SiteMonitor.tsx:363:21",className:"text-xs text-[var(--dg-text-muted)]",children:"上次检测"}),e.jsx(l,{"code-path":"src/pages/SiteMonitor.tsx:364:21",className:"text-xs text-[var(--dg-text-muted)]",children:"启用"}),e.jsx(l,{"code-path":"src/pages/SiteMonitor.tsx:365:21",className:"text-xs text-[var(--dg-text-muted)]",children:"操作"})]})}),e.jsx(ie,{"code-path":"src/pages/SiteMonitor.tsx:368:17",children:z.map(s=>e.jsxs($,{"code-path":"src/pages/SiteMonitor.tsx:370:21",className:"border-[var(--dg-border)]",children:[e.jsx(p,{"code-path":"src/pages/SiteMonitor.tsx:371:23",className:"text-sm text-[var(--dg-text-primary)] font-medium",children:s.name}),e.jsx(p,{"code-path":"src/pages/SiteMonitor.tsx:374:23",className:"text-sm text-[var(--dg-text-muted)] max-w-[200px] truncate",children:s.url}),e.jsx(p,{"code-path":"src/pages/SiteMonitor.tsx:377:23",children:e.jsx(u,{"code-path":"src/pages/SiteMonitor.tsx:378:25",variant:"outline",className:"text-[11px] border-[var(--dg-border)]",children:s.type?.toUpperCase()})}),e.jsxs(p,{"code-path":"src/pages/SiteMonitor.tsx:382:23",className:"text-sm text-[var(--dg-text-muted)]",children:[s.frequency_sec,"s"]}),e.jsx(p,{"code-path":"src/pages/SiteMonitor.tsx:385:23",children:e.jsxs("div",{"code-path":"src/pages/SiteMonitor.tsx:386:25",className:"flex items-center gap-1.5",children:[Ae(s.last_status),e.jsx("span",{"code-path":"src/pages/SiteMonitor.tsx:388:27",className:"text-sm text-[var(--dg-text-muted)]",children:ze(s.last_status)})]})}),e.jsx(p,{"code-path":"src/pages/SiteMonitor.tsx:393:23",className:"text-sm text-[var(--dg-text-muted)]",children:Ue(s.last_response_time_ms)}),e.jsx(p,{"code-path":"src/pages/SiteMonitor.tsx:396:23",className:"text-sm text-[var(--dg-text-muted)]",children:Ee(s.last_checked_at)}),e.jsx(p,{"code-path":"src/pages/SiteMonitor.tsx:399:23",children:e.jsx(Pe,{"code-path":"src/pages/SiteMonitor.tsx:400:25",checked:s.enabled,onCheckedChange:()=>he(s)})}),e.jsx(p,{"code-path":"src/pages/SiteMonitor.tsx:405:23",children:e.jsx(w,{"code-path":"src/pages/SiteMonitor.tsx:406:25",variant:"ghost",size:"icon",className:"h-8 w-8 text-red-400 hover:text-red-300 hover:bg-red-500/10",onClick:()=>ge(s),children:e.jsx(xe,{"code-path":"src/pages/SiteMonitor.tsx:412:27",className:"h-4 w-4"})})})]},s.id))})]})})]})}),e.jsx(W,{"code-path":"src/pages/SiteMonitor.tsx:425:7",open:o,onOpenChange:x,children:e.jsxs(Y,{"code-path":"src/pages/SiteMonitor.tsx:426:9",className:"sm:max-w-md bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]",children:[e.jsxs(Z,{"code-path":"src/pages/SiteMonitor.tsx:427:11",children:[e.jsx(J,{"code-path":"src/pages/SiteMonitor.tsx:428:13",children:"添加拨测任务"}),e.jsx(ee,{"code-path":"src/pages/SiteMonitor.tsx:429:13",className:"text-[var(--dg-text-muted)]",children:"配置站点探活任务,系统将按指定频率自动检测"})]}),e.jsxs("div",{"code-path":"src/pages/SiteMonitor.tsx:434:11",className:"grid gap-4 py-2",children:[e.jsxs("div",{"code-path":"src/pages/SiteMonitor.tsx:436:13",className:"grid gap-1.5",children:[e.jsx(j,{"code-path":"src/pages/SiteMonitor.tsx:437:15",htmlFor:"task-name",className:"text-[var(--dg-text-primary)]",children:"任务名称"}),e.jsx(y,{"code-path":"src/pages/SiteMonitor.tsx:438:15",id:"task-name",placeholder:"例如:官网首页检测",value:c.name,onChange:s=>m({...c,name:s.target.value})})]}),e.jsxs("div",{"code-path":"src/pages/SiteMonitor.tsx:447:13",className:"grid gap-1.5",children:[e.jsx(j,{"code-path":"src/pages/SiteMonitor.tsx:448:15",htmlFor:"task-url",className:"text-[var(--dg-text-primary)]",children:"目标 URL"}),e.jsx(y,{"code-path":"src/pages/SiteMonitor.tsx:449:15",id:"task-url",placeholder:"例如:https://example.com 或 192.168.1.1",value:c.url,onChange:s=>m({...c,url:s.target.value})})]}),e.jsxs("div",{"code-path":"src/pages/SiteMonitor.tsx:458:13",className:"grid gap-1.5",children:[e.jsx(j,{"code-path":"src/pages/SiteMonitor.tsx:459:15",className:"text-[var(--dg-text-primary)]",children:"协议类型"}),e.jsxs(se,{"code-path":"src/pages/SiteMonitor.tsx:460:15",value:c.type,onValueChange:s=>m({...c,type:s}),children:[e.jsx(ae,{"code-path":"src/pages/SiteMonitor.tsx:464:17",children:e.jsx(re,{"code-path":"src/pages/SiteMonitor.tsx:465:19"})}),e.jsx(oe,{"code-path":"src/pages/SiteMonitor.tsx:467:17",children:Be.map(s=>e.jsx(A,{"code-path":"src/pages/SiteMonitor.tsx:469:21",value:s,children:s},s))})]})]}),e.jsxs("div",{"code-path":"src/pages/SiteMonitor.tsx:476:13",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/pages/SiteMonitor.tsx:477:15",className:"grid gap-1.5",children:[e.jsx(j,{"code-path":"src/pages/SiteMonitor.tsx:478:17",htmlFor:"freq",className:"text-[var(--dg-text-primary)]",children:"检测间隔 (秒)"}),e.jsx(y,{"code-path":"src/pages/SiteMonitor.tsx:481:17",id:"freq",type:"number",min:10,max:86400,value:c.frequency_sec,onChange:s=>m({...c,frequency_sec:Number(s.target.value)||60})})]}),e.jsxs("div",{"code-path":"src/pages/SiteMonitor.tsx:492:15",className:"grid gap-1.5",children:[e.jsx(j,{"code-path":"src/pages/SiteMonitor.tsx:493:17",htmlFor:"timeout",className:"text-[var(--dg-text-primary)]",children:"超时 (秒)"}),e.jsx(y,{"code-path":"src/pages/SiteMonitor.tsx:496:17",id:"timeout",type:"number",min:1,max:300,value:c.timeout_sec,onChange:s=>m({...c,timeout_sec:Number(s.target.value)||10})})]})]}),(c.type==="HTTP"||c.type==="HTTPS")&&e.jsxs("div",{"code-path":"src/pages/SiteMonitor.tsx:511:15",className:"grid gap-1.5",children:[e.jsx(j,{"code-path":"src/pages/SiteMonitor.tsx:512:17",htmlFor:"status-code",className:"text-[var(--dg-text-primary)]",children:"期望状态码"}),e.jsx(y,{"code-path":"src/pages/SiteMonitor.tsx:515:17",id:"status-code",type:"number",min:100,max:599,value:c.expected_status_code,onChange:s=>m({...c,expected_status_code:Number(s.target.value)||200})})]})]}),e.jsxs(te,{"code-path":"src/pages/SiteMonitor.tsx:529:11",children:[e.jsx(w,{"code-path":"src/pages/SiteMonitor.tsx:530:13",variant:"outline",onClick:()=>x(!1),disabled:S,children:"取消"}),e.jsxs(w,{"code-path":"src/pages/SiteMonitor.tsx:533:13",onClick:me,disabled:S,children:[S&&e.jsx(O,{"code-path":"src/pages/SiteMonitor.tsx:534:26",className:"h-4 w-4 animate-spin mr-1"}),"创建任务"]})]})]})})]})}const V=[{id:"host",name:"主机监控",icon:be,description:"CPU / 内存 / 磁盘 / 网络 / 磁盘IO"},{id:"middleware",name:"中间件监控",icon:B,description:"Redis / MySQL 指标采集"},{id:"snmp",name:"SNMP 监控",icon:le,description:"网络设备 / 服务器硬件 (OID 模板)"},{id:"site",name:"站点拨测",icon:I,description:"HTTP / PING / DNS / TCP / WS 拨测"}];function ut(){const[t,n]=i.useState("host");return e.jsxs("div",{"code-path":"src/pages/MonitorCenter.tsx:30:5",className:"space-y-6",children:[e.jsxs("div",{"code-path":"src/pages/MonitorCenter.tsx:31:7",children:[e.jsx("h1",{"code-path":"src/pages/MonitorCenter.tsx:32:9",className:"text-2xl font-bold text-[var(--dg-text-primary)]",children:"监控中心"}),e.jsx("p",{"code-path":"src/pages/MonitorCenter.tsx:33:9",className:"text-sm text-[var(--dg-text-muted)] mt-1",children:"全面的基础设施与应用监控"})]}),e.jsx("div",{"code-path":"src/pages/MonitorCenter.tsx:37:7",className:"flex gap-1 bg-[var(--dg-bg-secondary)] p-1 rounded-lg border border-[var(--dg-border)]",children:V.map(d=>e.jsxs("button",{"code-path":"src/pages/MonitorCenter.tsx:39:11",onClick:()=>n(d.id),className:Se("flex-1 flex items-center justify-center gap-2 px-4 py-2.5 rounded-md text-sm font-medium transition-all",t===d.id?"bg-[var(--dg-bg-tertiary)] text-[var(--dg-text-primary)] shadow-sm":"text-[var(--dg-text-muted)] hover:text-[var(--dg-text-secondary)]"),children:[e.jsx(d.icon,{"code-path":"src/pages/MonitorCenter.tsx:49:13",className:"h-4 w-4"}),e.jsx("span",{"code-path":"src/pages/MonitorCenter.tsx:50:13",className:"hidden sm:inline",children:d.name})]},d.id))}),e.jsx("p",{"code-path":"src/pages/MonitorCenter.tsx:56:7",className:"text-sm text-[var(--dg-text-muted)] -mt-4",children:V.find(d=>d.id===t)?.description}),e.jsxs("div",{"code-path":"src/pages/MonitorCenter.tsx:61:7",className:"min-h-[400px]",children:[t==="host"&&e.jsx(ye,{"code-path":"src/pages/MonitorCenter.tsx:62:34"}),t==="middleware"&&e.jsx($e,{"code-path":"src/pages/MonitorCenter.tsx:63:40"}),t==="snmp"&&e.jsx(Oe,{"code-path":"src/pages/MonitorCenter.tsx:64:34"}),t==="site"&&e.jsx(Ge,{"code-path":"src/pages/MonitorCenter.tsx:65:34"})]})]})}export{ut as MonitorCenter}; diff --git a/backend/static/assets/MonitorCenter-gjLz-4P4.js b/backend/static/assets/MonitorCenter-gjLz-4P4.js new file mode 100644 index 0000000..5bed29d --- /dev/null +++ b/backend/static/assets/MonitorCenter-gjLz-4P4.js @@ -0,0 +1 @@ +import{i as X,r as i,h as L,j as e,L as O,A as R,z as B,S as K,D as W,w as Ne,B as w,a as Y,b as Z,c as J,d as ee,e as te,f as ve,G as I,C as je,p as be,a0 as Se}from"./index-Dmami9WE.js";import{HostMonitor as ye}from"./HostMonitor-BhnRAvcW.js";import{C as h,a as M}from"./card-CIfC-8Rh.js";import{B as u}from"./badge-3UzCvU7L.js";import{C as fe}from"./circle-CGbaa1m0.js";import{I as y}from"./input-NsU9nXZF.js";import{L as j}from"./label-Ap_-SPYI.js";import{S as se,a as ae,b as re,c as oe,d as A}from"./select-DUbxjT0z.js";import{T as ce,a as de,b as $,c as l,d as ie,e as p}from"./table-CG4mjNfb.js";import{H as we}from"./hard-drive-DmC04Y5r.js";import{P as ne}from"./plus-O65gX7Qz.js";import{T as xe}from"./trash-2-DWVnIU6o.js";import{S as Pe}from"./switch-TqjD2x0W.js";import{t as C}from"./index-BuEnLCjT.js";import{s as q}from"./monitor-CicbJUrQ.js";import{A as Ce}from"./arrow-up-down-Cn71rsC9.js";import{R as _e}from"./refresh-cw-CTBERyFc.js";import{C as Te}from"./circle-x-BBQeW1R3.js";import{C as ke}from"./circle-check-CVbTTFQ0.js";import"./agent-B3ElXCx8.js";import"./tabs-lV44z_UR.js";import"./disc-BPxL4arn.js";import"./generateCategoricalChart-ZqCvxO-S.js";import"./AreaChart-CrvX3B0s.js";import"./square-pen-B3dPIBrm.js";import"./index-CtCQcvyh.js";import"./chevron-up-Cq4GPopa.js";const De=[["path",{d:"M16.247 7.761a6 6 0 0 1 0 8.478",key:"1fwjs5"}],["path",{d:"M19.075 4.933a10 10 0 0 1 0 14.134",key:"ehdyv1"}],["path",{d:"M4.925 19.067a10 10 0 0 1 0-14.134",key:"1q22gi"}],["path",{d:"M7.753 16.239a6 6 0 0 1 0-8.478",key:"r2q7qm"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]],le=X("radio",De);const Fe=[["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",key:"w68u3i"}],["path",{d:"M6.01 18H6",key:"19vcac"}],["path",{d:"M10.01 18H10",key:"uamcmx"}],["path",{d:"M15 10v4",key:"qjz1xs"}],["path",{d:"M17.84 7.17a4 4 0 0 0-5.66 0",key:"1rif40"}],["path",{d:"M20.66 4.34a8 8 0 0 0-11.31 0",key:"6a5xfq"}]],U=X("router",Fe);function qe(t){return t==null||t===0?"--":t>1e9?`${(t/1e9).toFixed(1)} GB`:t>1e6?`${(t/1e6).toFixed(1)} MB`:t>1e3?`${(t/1e3).toFixed(1)} KB`:`${t} B`}function E(t){return t==null||Number.isNaN(t)?"--":`${(t*100).toFixed(1)}%`}function D(t,n=0){return t==null||Number.isNaN(t)?"--":t.toFixed(n)}function Le(t){switch(t){case"online":return"text-emerald-400";case"warning":return"text-amber-400";case"error":return"text-red-400";default:return"text-slate-500"}}function Ie(t){switch(t){case"online":return"bg-emerald-400";case"warning":return"bg-amber-400";case"error":return"bg-red-400";default:return"bg-slate-500"}}function $e(){const[t,n]=i.useState([]),[d,N]=i.useState(!0),[v,_]=i.useState(""),T=i.useCallback(async()=>{try{N(!0),_("");const r=await L.get("/metrics/targets",{type:"middleware",page_size:200});n(r?.list||[])}catch(r){_(r.message||"加载失败"),n([])}finally{N(!1)}},[]);i.useEffect(()=>{T()},[]);const b=t.filter(r=>r.type==="redis"||r.name?.toLowerCase().includes("redis")),o=t.filter(r=>r.type==="mysql"||r.name?.toLowerCase().includes("mysql")),x=b.find(r=>r.status==="online")||b[0],c=x?.latest_metrics||{},m=o.find(r=>r.status==="online")||o[0],S=m?.latest_metrics||{};return e.jsxs("div",{"code-path":"src/pages/MiddlewareMonitor.tsx:96:5",className:"space-y-6",children:[d&&e.jsxs("div",{"code-path":"src/pages/MiddlewareMonitor.tsx:98:9",className:"flex items-center justify-center py-12",children:[e.jsx(O,{"code-path":"src/pages/MiddlewareMonitor.tsx:99:11",className:"h-6 w-6 animate-spin text-slate-500 mr-2"}),e.jsx("span",{"code-path":"src/pages/MiddlewareMonitor.tsx:100:11",className:"text-sm text-[var(--dg-text-muted)]",children:"正在加载中间件指标..."})]}),v&&!d&&e.jsx(h,{"code-path":"src/pages/MiddlewareMonitor.tsx:105:9",className:"bg-[var(--dg-bg-secondary)] border-red-500/30",children:e.jsxs(M,{"code-path":"src/pages/MiddlewareMonitor.tsx:106:11",className:"p-6 text-center",children:[e.jsx(R,{"code-path":"src/pages/MiddlewareMonitor.tsx:107:13",className:"h-8 w-8 text-red-400 mx-auto mb-2"}),e.jsx("p",{"code-path":"src/pages/MiddlewareMonitor.tsx:108:13",className:"text-sm text-red-400",children:v}),e.jsx("p",{"code-path":"src/pages/MiddlewareMonitor.tsx:109:13",className:"text-xs text-[var(--dg-text-muted)] mt-2",children:"请确认后端服务可用且已配置中间件采集"})]})}),!d&&!v&&t.length===0&&e.jsx(h,{"code-path":"src/pages/MiddlewareMonitor.tsx:115:9",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsxs(M,{"code-path":"src/pages/MiddlewareMonitor.tsx:116:11",className:"p-12 text-center",children:[e.jsx(B,{"code-path":"src/pages/MiddlewareMonitor.tsx:117:13",className:"h-12 w-12 text-slate-600 mx-auto mb-4"}),e.jsx("p",{"code-path":"src/pages/MiddlewareMonitor.tsx:118:13",className:"text-sm text-[var(--dg-text-muted)]",children:"暂无中间件监控目标"}),e.jsx("p",{"code-path":"src/pages/MiddlewareMonitor.tsx:119:13",className:"text-xs text-[var(--dg-text-muted)] mt-2",children:"需在 Agent 配置 Redis / MySQL 连接信息后启用采集"})]})}),e.jsx(h,{"code-path":"src/pages/MiddlewareMonitor.tsx:125:7",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsxs(M,{"code-path":"src/pages/MiddlewareMonitor.tsx:126:9",className:"p-4",children:[e.jsxs("div",{"code-path":"src/pages/MiddlewareMonitor.tsx:127:11",className:"flex items-center gap-2 mb-4",children:[e.jsx(B,{"code-path":"src/pages/MiddlewareMonitor.tsx:128:13",className:"h-4 w-4 text-red-400"}),e.jsx("h3",{"code-path":"src/pages/MiddlewareMonitor.tsx:129:13",className:"text-sm font-medium text-[var(--dg-text-primary)]",children:"Redis 监控"}),x&&e.jsxs(u,{"code-path":"src/pages/MiddlewareMonitor.tsx:131:15",variant:"outline",className:"ml-auto text-[10px] border-[var(--dg-border)] text-[var(--dg-text-muted)]",children:[x.name," (",x.ip,")"]})]}),x?e.jsxs("div",{"code-path":"src/pages/MiddlewareMonitor.tsx:139:13",className:"grid grid-cols-2 md:grid-cols-4 gap-3",children:[e.jsx(f,{"code-path":"src/pages/MiddlewareMonitor.tsx:140:15",label:"连接数",value:D(c.redis_connected_clients)}),e.jsx(f,{"code-path":"src/pages/MiddlewareMonitor.tsx:144:15",label:"内存",value:qe(c.redis_used_memory)}),e.jsx(f,{"code-path":"src/pages/MiddlewareMonitor.tsx:148:15",label:"命中率",value:E(c.redis_hit_rate)}),e.jsx(f,{"code-path":"src/pages/MiddlewareMonitor.tsx:152:15",label:"QPS",value:D(c.redis_qps,0)})]}):e.jsx("p",{"code-path":"src/pages/MiddlewareMonitor.tsx:137:13",className:"text-sm text-[var(--dg-text-muted)] mb-4",children:"需在 Agent 配置 Redis 连接地址和密码后启用采集。"})]})}),e.jsx(h,{"code-path":"src/pages/MiddlewareMonitor.tsx:162:7",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsxs(M,{"code-path":"src/pages/MiddlewareMonitor.tsx:163:9",className:"p-4",children:[e.jsxs("div",{"code-path":"src/pages/MiddlewareMonitor.tsx:164:11",className:"flex items-center gap-2 mb-4",children:[e.jsx(K,{"code-path":"src/pages/MiddlewareMonitor.tsx:165:13",className:"h-4 w-4 text-blue-400"}),e.jsx("h3",{"code-path":"src/pages/MiddlewareMonitor.tsx:166:13",className:"text-sm font-medium text-[var(--dg-text-primary)]",children:"MySQL 监控"}),m&&e.jsxs(u,{"code-path":"src/pages/MiddlewareMonitor.tsx:168:15",variant:"outline",className:"ml-auto text-[10px] border-[var(--dg-border)] text-[var(--dg-text-muted)]",children:[m.name," (",m.ip,")"]})]}),m?e.jsxs("div",{"code-path":"src/pages/MiddlewareMonitor.tsx:176:13",className:"grid grid-cols-2 md:grid-cols-4 gap-3",children:[e.jsx(f,{"code-path":"src/pages/MiddlewareMonitor.tsx:177:15",label:"连接数",value:D(S.mysql_connections)}),e.jsx(f,{"code-path":"src/pages/MiddlewareMonitor.tsx:181:15",label:"QPS",value:D(S.mysql_qps,1)}),e.jsx(f,{"code-path":"src/pages/MiddlewareMonitor.tsx:185:15",label:"慢查询",value:D(S.mysql_slow_queries)}),e.jsx(f,{"code-path":"src/pages/MiddlewareMonitor.tsx:189:15",label:"缓冲池命中率",value:E(S.mysql_buffer_hit_rate)})]}):e.jsx("p",{"code-path":"src/pages/MiddlewareMonitor.tsx:174:13",className:"text-sm text-[var(--dg-text-muted)] mb-4",children:"需在 Agent 配置 MySQL 连接地址、用户名和密码后启用采集。"})]})}),t.length>0&&e.jsx(h,{"code-path":"src/pages/MiddlewareMonitor.tsx:200:9",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsxs(M,{"code-path":"src/pages/MiddlewareMonitor.tsx:201:11",className:"p-4",children:[e.jsxs("div",{"code-path":"src/pages/MiddlewareMonitor.tsx:202:13",className:"flex items-center gap-2 mb-4",children:[e.jsx(R,{"code-path":"src/pages/MiddlewareMonitor.tsx:203:15",className:"h-4 w-4 text-[var(--dg-text-muted)]"}),e.jsxs("h3",{"code-path":"src/pages/MiddlewareMonitor.tsx:204:15",className:"text-sm font-medium text-[var(--dg-text-primary)]",children:["中间件实例(",t.length,")"]})]}),e.jsx("div",{"code-path":"src/pages/MiddlewareMonitor.tsx:208:13",className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-3",children:t.map(r=>e.jsx(He,{"code-path":"src/pages/MiddlewareMonitor.tsx:210:17",target:r},r.id))})]})}),t.filter(r=>!b.includes(r)&&!o.includes(r)).length>0&&e.jsx("div",{"code-path":"src/pages/MiddlewareMonitor.tsx:219:9",className:"space-y-4",children:t.filter(r=>!b.includes(r)&&!o.includes(r)).map(r=>e.jsx(h,{"code-path":"src/pages/MiddlewareMonitor.tsx:223:15",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsxs(M,{"code-path":"src/pages/MiddlewareMonitor.tsx:224:17",className:"p-4",children:[e.jsxs("div",{"code-path":"src/pages/MiddlewareMonitor.tsx:225:19",className:"flex items-center gap-2 mb-3",children:[e.jsx(fe,{"code-path":"src/pages/MiddlewareMonitor.tsx:226:21",className:`h-3 w-3 ${Le(r.status)}`}),e.jsx("h3",{"code-path":"src/pages/MiddlewareMonitor.tsx:227:21",className:"text-sm font-medium text-[var(--dg-text-primary)] capitalize",children:r.type}),e.jsxs(u,{"code-path":"src/pages/MiddlewareMonitor.tsx:228:21",variant:"outline",className:"text-[10px] border-[var(--dg-border)] text-[var(--dg-text-muted)]",children:[r.name," (",r.ip,")"]})]}),Object.keys(r.latest_metrics||{}).length>0?e.jsx("div",{"code-path":"src/pages/MiddlewareMonitor.tsx:233:21",className:"grid grid-cols-2 md:grid-cols-4 gap-3",children:Object.entries(r.latest_metrics).map(([g,k])=>e.jsx(f,{"code-path":"src/pages/MiddlewareMonitor.tsx:235:25",label:g,value:D(k,1)},g))}):e.jsx("p",{"code-path":"src/pages/MiddlewareMonitor.tsx:239:21",className:"text-xs text-[var(--dg-text-muted)]",children:"暂无指标数据"})]})},r.id))})]})}function f({label:t,value:n}){return e.jsxs("div",{"code-path":"src/pages/MiddlewareMonitor.tsx:253:5",className:"bg-[var(--dg-bg-tertiary)] rounded-lg p-3 text-center",children:[e.jsx("p",{"code-path":"src/pages/MiddlewareMonitor.tsx:254:7",className:"text-xs text-[var(--dg-text-muted)]",children:t}),e.jsx("p",{"code-path":"src/pages/MiddlewareMonitor.tsx:255:7",className:"text-lg font-bold text-[var(--dg-text-primary)]",children:n})]})}function He({target:t}){const n=t.latest_metrics||{},d=Object.keys(n).length;return e.jsxs("div",{"code-path":"src/pages/MiddlewareMonitor.tsx:266:5",className:"bg-[var(--dg-bg-tertiary)] rounded-lg p-3 border border-[var(--dg-border)] hover:border-[var(--dg-border)]/80 transition-colors",children:[e.jsxs("div",{"code-path":"src/pages/MiddlewareMonitor.tsx:267:7",className:"flex items-center justify-between mb-2",children:[e.jsxs("div",{"code-path":"src/pages/MiddlewareMonitor.tsx:268:9",className:"flex items-center gap-2 min-w-0",children:[e.jsx("span",{"code-path":"src/pages/MiddlewareMonitor.tsx:269:11",className:`inline-block w-2 h-2 rounded-full ${Ie(t.status)}`}),e.jsx("span",{"code-path":"src/pages/MiddlewareMonitor.tsx:270:11",className:"text-sm font-medium text-[var(--dg-text-primary)] truncate",children:t.name})]}),e.jsx(u,{"code-path":"src/pages/MiddlewareMonitor.tsx:272:9",variant:"outline",className:`text-[10px] capitalize ${t.status==="online"?"border-emerald-400/50 text-emerald-400":"border-[var(--dg-border)] text-[var(--dg-text-muted)]"}`,children:t.status})]}),e.jsxs("div",{"code-path":"src/pages/MiddlewareMonitor.tsx:279:7",className:"text-xs text-[var(--dg-text-muted)] mb-2",children:[t.ip," · ",t.type]}),d>0?e.jsxs("div",{"code-path":"src/pages/MiddlewareMonitor.tsx:283:9",className:"flex flex-wrap gap-1.5",children:[Object.entries(n).slice(0,4).map(([N,v])=>e.jsxs("span",{"code-path":"src/pages/MiddlewareMonitor.tsx:285:13",className:"inline-flex items-center gap-1 text-[10px] bg-[var(--dg-bg-primary)] rounded px-1.5 py-0.5 text-[var(--dg-text-secondary)]",children:[e.jsx("span",{"code-path":"src/pages/MiddlewareMonitor.tsx:286:15",className:"text-[var(--dg-text-muted)]",children:N}),e.jsx("span",{"code-path":"src/pages/MiddlewareMonitor.tsx:287:15",className:"font-mono font-medium text-[var(--dg-text-primary)]",children:typeof v=="number"?v.toFixed(1):v})]},N)),d>4&&e.jsxs("span",{"code-path":"src/pages/MiddlewareMonitor.tsx:293:13",className:"text-[10px] text-[var(--dg-text-muted)]",children:["+",d-4," 项"]})]}):e.jsx("p",{"code-path":"src/pages/MiddlewareMonitor.tsx:297:9",className:"text-[10px] text-[var(--dg-text-muted)]",children:"暂无指标"})]})}const G={name:"",ip:"",port:161,snmp_version:"v2c",community:"public",template_id:""};function Oe(){const[t,n]=i.useState({total:0,online:0,abnormal:0}),[d,N]=i.useState([]),[v,_]=i.useState(!0),[T,b]=i.useState(!1),[o,x]=i.useState({...G}),[c,m]=i.useState(!1),S=i.useCallback(async()=>{try{const a=await L.get("/snmp/stats");n(a)}catch{}},[]),r=i.useCallback(async()=>{try{const a=await L.get("/snmp/devices");N(a.list??[])}catch{N([])}finally{_(!1)}},[]),g=i.useCallback(()=>{S(),r()},[S,r]);i.useEffect(()=>{g()},[g]);const k=async()=>{if(!(!o.name.trim()||!o.ip.trim())){m(!0);try{await L.post("/snmp/devices",{name:o.name.trim(),ip:o.ip.trim(),port:Number(o.port),snmp_version:o.snmp_version,community:o.community.trim(),template_id:o.template_id?Number(o.template_id):0}),b(!1),x({...G}),g()}catch{}finally{m(!1)}}},H=async a=>{try{await L.delete(`/snmp/devices/${a}`),g()}catch{}},P=a=>a==="online"?e.jsx(u,{"code-path":"src/pages/SNMPMonitor.tsx:146:14",className:"bg-emerald-500/15 text-emerald-400 border-emerald-500/30",children:"在线"}):a==="abnormal"?e.jsx(u,{"code-path":"src/pages/SNMPMonitor.tsx:149:14",className:"bg-red-500/15 text-red-400 border-red-500/30",children:"异常"}):e.jsx(u,{"code-path":"src/pages/SNMPMonitor.tsx:151:12",className:"bg-slate-500/15 text-slate-400 border-slate-500/30",children:"离线"});return e.jsxs("div",{"code-path":"src/pages/SNMPMonitor.tsx:156:5",className:"space-y-6",children:[e.jsxs("div",{"code-path":"src/pages/SNMPMonitor.tsx:158:7",className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsx(h,{"code-path":"src/pages/SNMPMonitor.tsx:159:9",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsxs(M,{"code-path":"src/pages/SNMPMonitor.tsx:160:11",className:"p-4",children:[e.jsxs("div",{"code-path":"src/pages/SNMPMonitor.tsx:161:13",className:"flex items-center gap-2 mb-3",children:[e.jsx(U,{"code-path":"src/pages/SNMPMonitor.tsx:162:15",className:"h-4 w-4 text-cyan-400"}),e.jsx("h3",{"code-path":"src/pages/SNMPMonitor.tsx:163:15",className:"text-sm font-medium text-[var(--dg-text-primary)]",children:"网络设备"})]}),e.jsx("p",{"code-path":"src/pages/SNMPMonitor.tsx:165:13",className:"text-xs text-[var(--dg-text-muted)] mb-3",children:"交换机 / 路由器 / 防火墙"}),e.jsxs("div",{"code-path":"src/pages/SNMPMonitor.tsx:166:13",className:"space-y-2",children:[e.jsxs("div",{"code-path":"src/pages/SNMPMonitor.tsx:167:15",className:"flex justify-between text-sm",children:[e.jsx("span",{"code-path":"src/pages/SNMPMonitor.tsx:168:17",className:"text-[var(--dg-text-muted)]",children:"设备总数"}),e.jsx("span",{"code-path":"src/pages/SNMPMonitor.tsx:169:17",className:"text-[var(--dg-text-primary)] font-mono",children:t.total})]}),e.jsxs("div",{"code-path":"src/pages/SNMPMonitor.tsx:171:15",className:"flex justify-between text-sm",children:[e.jsx("span",{"code-path":"src/pages/SNMPMonitor.tsx:172:17",className:"text-[var(--dg-text-muted)]",children:"在线"}),e.jsx("span",{"code-path":"src/pages/SNMPMonitor.tsx:173:17",className:"text-emerald-400 font-mono",children:t.online})]})]})]})}),e.jsx(h,{"code-path":"src/pages/SNMPMonitor.tsx:179:9",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsxs(M,{"code-path":"src/pages/SNMPMonitor.tsx:180:11",className:"p-4",children:[e.jsxs("div",{"code-path":"src/pages/SNMPMonitor.tsx:181:13",className:"flex items-center gap-2 mb-3",children:[e.jsx(we,{"code-path":"src/pages/SNMPMonitor.tsx:182:15",className:"h-4 w-4 text-purple-400"}),e.jsx("h3",{"code-path":"src/pages/SNMPMonitor.tsx:183:15",className:"text-sm font-medium text-[var(--dg-text-primary)]",children:"服务器硬件"})]}),e.jsx("p",{"code-path":"src/pages/SNMPMonitor.tsx:185:13",className:"text-xs text-[var(--dg-text-muted)] mb-3",children:"iLO / iDRAC / IPMI"}),e.jsx("div",{"code-path":"src/pages/SNMPMonitor.tsx:186:13",className:"space-y-2",children:e.jsxs("div",{"code-path":"src/pages/SNMPMonitor.tsx:187:15",className:"flex justify-between text-sm",children:[e.jsx("span",{"code-path":"src/pages/SNMPMonitor.tsx:188:17",className:"text-[var(--dg-text-muted)]",children:"异常"}),e.jsx("span",{"code-path":"src/pages/SNMPMonitor.tsx:189:17",className:"text-red-400 font-mono",children:t.abnormal})]})})]})})]}),e.jsx(h,{"code-path":"src/pages/SNMPMonitor.tsx:197:7",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsxs(M,{"code-path":"src/pages/SNMPMonitor.tsx:198:9",className:"p-4",children:[e.jsxs("div",{"code-path":"src/pages/SNMPMonitor.tsx:199:11",className:"flex items-center gap-2 mb-3",children:[e.jsx(le,{"code-path":"src/pages/SNMPMonitor.tsx:200:13",className:"h-4 w-4 text-[var(--dg-text-muted)]"}),e.jsx("h3",{"code-path":"src/pages/SNMPMonitor.tsx:201:13",className:"text-sm font-medium text-[var(--dg-text-primary)]",children:"OID 监控模板"})]}),e.jsx("p",{"code-path":"src/pages/SNMPMonitor.tsx:203:11",className:"text-sm text-[var(--dg-text-muted)]",children:"支持 Zabbix 兼容的 SNMP OID 模板(XML 格式),内置思科/H3C/华为交换机模板、服务器硬件监控模板。"}),e.jsx("div",{"code-path":"src/pages/SNMPMonitor.tsx:206:11",className:"mt-3 grid grid-cols-2 md:grid-cols-4 gap-2 text-xs text-[var(--dg-text-secondary)]",children:["思科交换机","H3C S5000","华为交换机","iLO/Dell"].map(a=>e.jsx("div",{"code-path":"src/pages/SNMPMonitor.tsx:208:15",className:"bg-[var(--dg-bg-tertiary)] rounded px-2 py-1 text-center border border-[var(--dg-border)]",children:a},a))})]})}),e.jsx(h,{"code-path":"src/pages/SNMPMonitor.tsx:220:7",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsxs(M,{"code-path":"src/pages/SNMPMonitor.tsx:221:9",className:"p-4",children:[e.jsxs("div",{"code-path":"src/pages/SNMPMonitor.tsx:222:11",className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{"code-path":"src/pages/SNMPMonitor.tsx:223:13",className:"flex items-center gap-2",children:[e.jsx(U,{"code-path":"src/pages/SNMPMonitor.tsx:224:15",className:"h-4 w-4 text-cyan-400"}),e.jsxs("h3",{"code-path":"src/pages/SNMPMonitor.tsx:225:15",className:"text-sm font-medium text-[var(--dg-text-primary)]",children:["SNMP 设备列表",!v&&e.jsxs("span",{"code-path":"src/pages/SNMPMonitor.tsx:228:19",className:"ml-2 text-xs text-[var(--dg-text-muted)] font-normal",children:["(",d.length," 台)"]})]})]}),e.jsxs(W,{"code-path":"src/pages/SNMPMonitor.tsx:236:13",open:T,onOpenChange:b,children:[e.jsx(Ne,{"code-path":"src/pages/SNMPMonitor.tsx:237:15",asChild:!0,children:e.jsxs(w,{"code-path":"src/pages/SNMPMonitor.tsx:238:17",size:"sm",className:"bg-cyan-500/10 text-cyan-400 hover:bg-cyan-500/20 border border-cyan-500/30",children:[e.jsx(ne,{"code-path":"src/pages/SNMPMonitor.tsx:239:19",className:"h-4 w-4"}),"添加设备"]})}),e.jsxs(Y,{"code-path":"src/pages/SNMPMonitor.tsx:243:15",className:"bg-slate-900 border-[var(--dg-border)] text-[var(--dg-text-primary)] sm:max-w-md",children:[e.jsxs(Z,{"code-path":"src/pages/SNMPMonitor.tsx:244:17",children:[e.jsx(J,{"code-path":"src/pages/SNMPMonitor.tsx:245:19",className:"text-[var(--dg-text-primary)]",children:"添加 SNMP 设备"}),e.jsx(ee,{"code-path":"src/pages/SNMPMonitor.tsx:246:19",className:"text-[var(--dg-text-muted)]",children:"输入设备信息以开始 SNMP 监控采集。"})]}),e.jsxs("div",{"code-path":"src/pages/SNMPMonitor.tsx:251:17",className:"grid gap-4 py-2",children:[e.jsxs("div",{"code-path":"src/pages/SNMPMonitor.tsx:253:19",className:"grid gap-1.5",children:[e.jsx(j,{"code-path":"src/pages/SNMPMonitor.tsx:254:21",htmlFor:"snmp-name",className:"text-[var(--dg-text-muted)]",children:"设备名称"}),e.jsx(y,{"code-path":"src/pages/SNMPMonitor.tsx:257:21",id:"snmp-name",placeholder:"例如: 核心交换机",value:o.name,onChange:a=>x({...o,name:a.target.value}),className:"bg-[var(--dg-bg-primary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),e.jsxs("div",{"code-path":"src/pages/SNMPMonitor.tsx:267:19",className:"grid gap-1.5",children:[e.jsx(j,{"code-path":"src/pages/SNMPMonitor.tsx:268:21",htmlFor:"snmp-ip",className:"text-[var(--dg-text-muted)]",children:"IP 地址"}),e.jsx(y,{"code-path":"src/pages/SNMPMonitor.tsx:271:21",id:"snmp-ip",placeholder:"例如: 192.168.1.1",value:o.ip,onChange:a=>x({...o,ip:a.target.value}),className:"bg-[var(--dg-bg-primary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),e.jsxs("div",{"code-path":"src/pages/SNMPMonitor.tsx:281:19",className:"grid gap-1.5",children:[e.jsx(j,{"code-path":"src/pages/SNMPMonitor.tsx:282:21",htmlFor:"snmp-port",className:"text-[var(--dg-text-muted)]",children:"SNMP 端口"}),e.jsx(y,{"code-path":"src/pages/SNMPMonitor.tsx:285:21",id:"snmp-port",type:"number",placeholder:"161",value:o.port,onChange:a=>x({...o,port:Number(a.target.value)||161}),className:"bg-[var(--dg-bg-primary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),e.jsxs("div",{"code-path":"src/pages/SNMPMonitor.tsx:296:19",className:"grid gap-1.5",children:[e.jsx(j,{"code-path":"src/pages/SNMPMonitor.tsx:297:21",htmlFor:"snmp-version",className:"text-[var(--dg-text-muted)]",children:"SNMP 版本"}),e.jsxs(se,{"code-path":"src/pages/SNMPMonitor.tsx:300:21",value:o.snmp_version,onValueChange:a=>x({...o,snmp_version:a}),children:[e.jsx(ae,{"code-path":"src/pages/SNMPMonitor.tsx:304:23",id:"snmp-version",className:"w-full bg-[var(--dg-bg-primary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]",children:e.jsx(re,{"code-path":"src/pages/SNMPMonitor.tsx:308:25"})}),e.jsxs(oe,{"code-path":"src/pages/SNMPMonitor.tsx:310:23",className:"bg-slate-800 border-slate-700 text-slate-200",children:[e.jsx(A,{"code-path":"src/pages/SNMPMonitor.tsx:311:25",value:"v2c",children:"v2c"}),e.jsx(A,{"code-path":"src/pages/SNMPMonitor.tsx:312:25",value:"v3",children:"v3"})]})]})]}),e.jsxs("div",{"code-path":"src/pages/SNMPMonitor.tsx:318:19",className:"grid gap-1.5",children:[e.jsx(j,{"code-path":"src/pages/SNMPMonitor.tsx:319:21",htmlFor:"snmp-community",className:"text-[var(--dg-text-muted)]",children:"Community"}),e.jsx(y,{"code-path":"src/pages/SNMPMonitor.tsx:322:21",id:"snmp-community",placeholder:"public",value:o.community,onChange:a=>x({...o,community:a.target.value}),className:"bg-[var(--dg-bg-primary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),e.jsxs("div",{"code-path":"src/pages/SNMPMonitor.tsx:332:19",className:"grid gap-1.5",children:[e.jsx(j,{"code-path":"src/pages/SNMPMonitor.tsx:333:21",htmlFor:"snmp-template",className:"text-[var(--dg-text-muted)]",children:"模板 ID"}),e.jsx(y,{"code-path":"src/pages/SNMPMonitor.tsx:336:21",id:"snmp-template",type:"number",placeholder:"模板 ID",value:o.template_id,onChange:a=>x({...o,template_id:a.target.value}),className:"bg-[var(--dg-bg-primary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]})]}),e.jsxs(te,{"code-path":"src/pages/SNMPMonitor.tsx:347:17",children:[e.jsx(w,{"code-path":"src/pages/SNMPMonitor.tsx:348:19",variant:"outline",onClick:()=>b(!1),className:"border-[var(--dg-border)] text-[var(--dg-text-muted)] hover:bg-slate-800",children:"取消"}),e.jsx(w,{"code-path":"src/pages/SNMPMonitor.tsx:355:19",onClick:k,disabled:c||!o.name.trim()||!o.ip.trim(),className:"bg-cyan-500/10 text-cyan-400 hover:bg-cyan-500/20 border border-cyan-500/30",children:c?"添加中...":"确认添加"})]})]})]})]}),v?e.jsx("div",{"code-path":"src/pages/SNMPMonitor.tsx:369:13",className:"py-12 text-center text-sm text-[var(--dg-text-muted)]",children:"加载中..."}):d.length===0?e.jsx("div",{"code-path":"src/pages/SNMPMonitor.tsx:371:13",className:"py-12 text-center text-sm text-[var(--dg-text-muted)] border border-dashed border-[var(--dg-border)] rounded-lg",children:"暂无 SNMP 设备,点击「添加设备」开始监控"}):e.jsxs(ce,{"code-path":"src/pages/SNMPMonitor.tsx:375:13",children:[e.jsx(de,{"code-path":"src/pages/SNMPMonitor.tsx:376:15",children:e.jsxs($,{"code-path":"src/pages/SNMPMonitor.tsx:377:17",className:"border-[var(--dg-border)] hover:bg-transparent",children:[e.jsx(l,{"code-path":"src/pages/SNMPMonitor.tsx:378:19",className:"text-[var(--dg-text-muted)]",children:"名称"}),e.jsx(l,{"code-path":"src/pages/SNMPMonitor.tsx:379:19",className:"text-[var(--dg-text-muted)]",children:"IP 地址"}),e.jsx(l,{"code-path":"src/pages/SNMPMonitor.tsx:380:19",className:"text-[var(--dg-text-muted)]",children:"端口"}),e.jsx(l,{"code-path":"src/pages/SNMPMonitor.tsx:381:19",className:"text-[var(--dg-text-muted)]",children:"版本"}),e.jsx(l,{"code-path":"src/pages/SNMPMonitor.tsx:382:19",className:"text-[var(--dg-text-muted)]",children:"Community"}),e.jsx(l,{"code-path":"src/pages/SNMPMonitor.tsx:383:19",className:"text-[var(--dg-text-muted)]",children:"模板 ID"}),e.jsx(l,{"code-path":"src/pages/SNMPMonitor.tsx:384:19",className:"text-[var(--dg-text-muted)]",children:"状态"}),e.jsx(l,{"code-path":"src/pages/SNMPMonitor.tsx:385:19",className:"text-[var(--dg-text-muted)] w-16",children:"操作"})]})}),e.jsx(ie,{"code-path":"src/pages/SNMPMonitor.tsx:388:15",children:d.map(a=>e.jsxs($,{"code-path":"src/pages/SNMPMonitor.tsx:390:19",className:"border-[var(--dg-border)]",children:[e.jsx(p,{"code-path":"src/pages/SNMPMonitor.tsx:391:21",className:"text-[var(--dg-text-primary)] font-medium",children:a.name}),e.jsx(p,{"code-path":"src/pages/SNMPMonitor.tsx:394:21",className:"text-[var(--dg-text-muted)] font-mono text-xs",children:a.ip}),e.jsx(p,{"code-path":"src/pages/SNMPMonitor.tsx:397:21",className:"text-[var(--dg-text-muted)]",children:a.port}),e.jsx(p,{"code-path":"src/pages/SNMPMonitor.tsx:398:21",children:e.jsx(u,{"code-path":"src/pages/SNMPMonitor.tsx:399:23",variant:"outline",className:"border-[var(--dg-border)] text-[var(--dg-text-muted)]",children:a.snmp_version})}),e.jsx(p,{"code-path":"src/pages/SNMPMonitor.tsx:403:21",className:"text-[var(--dg-text-muted)] font-mono text-xs",children:a.community}),e.jsx(p,{"code-path":"src/pages/SNMPMonitor.tsx:406:21",className:"text-[var(--dg-text-muted)]",children:a.template_id||"--"}),e.jsx(p,{"code-path":"src/pages/SNMPMonitor.tsx:407:21",children:P(a.status)}),e.jsx(p,{"code-path":"src/pages/SNMPMonitor.tsx:408:21",children:e.jsx(w,{"code-path":"src/pages/SNMPMonitor.tsx:409:23",variant:"ghost",size:"icon-sm",onClick:()=>H(a.id),className:"text-slate-500 hover:text-red-400 hover:bg-red-500/10",title:"删除设备",children:e.jsx(xe,{"code-path":"src/pages/SNMPMonitor.tsx:416:25",className:"h-4 w-4"})})})]},a.id))})]})]})})]})}const Re=[{icon:I,name:"HTTP",color:"text-blue-400",desc:"HTTP URL 状态码 & 响应时间"},{icon:I,name:"HTTPS",color:"text-emerald-400",desc:"HTTPS SSL 证书 & 响应时间"},{icon:K,name:"TCP",color:"text-orange-400",desc:"TCP 端口连通性检测"},{icon:I,name:"DNS",color:"text-cyan-400",desc:"域名解析延迟 & 结果验证"},{icon:Ce,name:"PING",color:"text-purple-400",desc:"ICMP 连通性 & 延迟"}],Be=["HTTP","HTTPS","TCP","DNS","PING"],Q={name:"",url:"",type:"HTTP",frequency_sec:60,timeout_sec:10,expected_status_code:200};function Ae(t){switch(t){case"up":return e.jsx(ke,{"code-path":"src/pages/SiteMonitor.tsx:106:14",className:"h-4 w-4 text-emerald-400"});case"down":return e.jsx(Te,{"code-path":"src/pages/SiteMonitor.tsx:108:14",className:"h-4 w-4 text-red-400"});default:return e.jsx(je,{"code-path":"src/pages/SiteMonitor.tsx:110:14",className:"h-4 w-4 text-gray-400"})}}function ze(t){switch(t){case"up":return e.jsx(u,{"code-path":"src/pages/SiteMonitor.tsx:117:14",className:"bg-emerald-500/15 text-emerald-400 border-emerald-500/30",children:"正常"});case"down":return e.jsx(u,{"code-path":"src/pages/SiteMonitor.tsx:119:14",className:"bg-red-500/15 text-red-400 border-red-500/30",children:"异常"});default:return e.jsx(u,{"code-path":"src/pages/SiteMonitor.tsx:121:14",className:"bg-gray-500/15 text-gray-400 border-gray-500/30",children:"未知"})}}function Ue(t){return t==null||t===0?"--":t<1e3?`${t.toFixed(0)}ms`:`${(t/1e3).toFixed(2)}s`}function Ee(t){if(!t)return"--";const n=new Date(t),d=N=>String(N).padStart(2,"0");return`${d(n.getMonth()+1)}-${d(n.getDate())} ${d(n.getHours())}:${d(n.getMinutes())}`}function Ge(){const[t,n]=i.useState(null),[d,N]=i.useState([]),[v,_]=i.useState(!0),[T,b]=i.useState(!1),[o,x]=i.useState(!1),[c,m]=i.useState({...Q}),[S,r]=i.useState(!1),[g,k]=i.useState(null),H=ve(),P=i.useCallback(async()=>{try{const s=await q.getStats();n(s)}catch{}},[]),a=i.useCallback(async()=>{b(!0);try{const s=await q.getTasks();N(s?.list||[])}catch{}finally{b(!1),_(!1)}},[]);i.useEffect(()=>{P(),a()},[P,a]);const z=g?d.filter(s=>s.type?.toUpperCase()===g.toUpperCase()):d,pe=()=>{m({...Q}),x(!0)},me=async()=>{if(!c.name.trim()||!c.url.trim()){C.error("名称和 URL 不能为空");return}r(!0);try{await q.createTask({name:c.name.trim(),url:c.url.trim(),type:c.type.toLowerCase(),frequency_sec:Number(c.frequency_sec)||60,timeout_sec:Number(c.timeout_sec)||10,expected_status_code:Number(c.expected_status_code)||200}),C.success("拨测任务已创建"),x(!1),a(),P()}catch(s){C.error(s.message||"创建失败")}finally{r(!1)}},ge=async s=>{if(await H({title:"删除拨测任务",description:`确定删除「${s.name}」吗?此操作不可恢复。`,variant:"destructive"}))try{await q.deleteTask(s.id),C.success("任务已删除"),a(),P()}catch(ue){C.error(ue.message||"删除失败")}},he=async s=>{try{await q.toggleTask(s.id,!s.enabled),C.success(s.enabled?"已停用":"已启用"),a(),P()}catch(F){C.error(F.message||"操作失败")}},Me=t?.availability!=null?`${(t.availability*100).toFixed(1)}%`:"--";return v?e.jsx("div",{"code-path":"src/pages/SiteMonitor.tsx:249:7",className:"flex items-center justify-center py-20",children:e.jsx(O,{"code-path":"src/pages/SiteMonitor.tsx:250:9",className:"h-8 w-8 animate-spin text-[var(--dg-text-muted)]"})}):e.jsxs("div",{"code-path":"src/pages/SiteMonitor.tsx:256:5",className:"space-y-6",children:[e.jsx("div",{"code-path":"src/pages/SiteMonitor.tsx:258:7",className:"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-5 gap-3",children:Re.map(s=>{const F=g===s.name;return e.jsx(h,{"code-path":"src/pages/SiteMonitor.tsx:262:13",onClick:()=>k(F?null:s.name),className:`bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] transition-colors cursor-pointer ${F?"border-[var(--dg-blue)]/60 ring-1 ring-[var(--dg-blue)]/30":"hover:border-[var(--dg-blue)]/30"}`,children:e.jsxs(M,{"code-path":"src/pages/SiteMonitor.tsx:269:15",className:"p-3 text-center",children:[e.jsx(s.icon,{"code-path":"src/pages/SiteMonitor.tsx:270:17",className:`h-5 w-5 mx-auto mb-1.5 ${s.color}`}),e.jsx("p",{"code-path":"src/pages/SiteMonitor.tsx:271:17",className:"text-xs font-medium text-[var(--dg-text-primary)]",children:s.name}),e.jsx("p",{"code-path":"src/pages/SiteMonitor.tsx:272:17",className:"text-[10px] text-[var(--dg-text-muted)] mt-0.5",children:s.desc})]})},s.name)})}),e.jsx(h,{"code-path":"src/pages/SiteMonitor.tsx:280:7",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsxs(M,{"code-path":"src/pages/SiteMonitor.tsx:281:9",className:"p-4",children:[e.jsxs("div",{"code-path":"src/pages/SiteMonitor.tsx:282:11",className:"flex items-center justify-between mb-3",children:[e.jsxs("div",{"code-path":"src/pages/SiteMonitor.tsx:283:13",className:"flex items-center gap-2",children:[e.jsx(I,{"code-path":"src/pages/SiteMonitor.tsx:284:15",className:"h-4 w-4 text-[var(--dg-text-muted)]"}),e.jsx("h3",{"code-path":"src/pages/SiteMonitor.tsx:285:15",className:"text-sm font-medium text-[var(--dg-text-primary)]",children:"拨测任务概览"})]}),e.jsxs(w,{"code-path":"src/pages/SiteMonitor.tsx:287:13",size:"sm",variant:"ghost",className:"h-7 text-xs text-[var(--dg-text-muted)] hover:text-[var(--dg-text-primary)]",onClick:()=>{P(),a()},disabled:T,children:[e.jsx(_e,{"code-path":"src/pages/SiteMonitor.tsx:294:15",className:`h-3.5 w-3.5 ${T?"animate-spin":""}`}),"刷新"]})]}),e.jsx("div",{"code-path":"src/pages/SiteMonitor.tsx:298:11",className:"grid grid-cols-2 md:grid-cols-5 gap-3",children:[{label:"总任务数",value:t?.total_tasks??"--"},{label:"已启用",value:t?.enabled_tasks??"--"},{label:"正常",value:t?.up_count??"--",color:"text-emerald-400"},{label:"异常",value:t?.down_count??"--",color:"text-red-400"},{label:"可用率",value:Me,color:"text-blue-400"}].map(s=>e.jsxs("div",{"code-path":"src/pages/SiteMonitor.tsx:306:15",className:"bg-[var(--dg-bg-tertiary)] rounded-lg p-3 text-center",children:[e.jsx("p",{"code-path":"src/pages/SiteMonitor.tsx:307:17",className:"text-xs text-[var(--dg-text-muted)]",children:s.label}),e.jsx("p",{"code-path":"src/pages/SiteMonitor.tsx:308:17",className:`text-lg font-bold ${s.color||"text-[var(--dg-text-primary)]"}`,children:s.value})]},s.label))})]})}),e.jsx(h,{"code-path":"src/pages/SiteMonitor.tsx:318:7",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsxs(M,{"code-path":"src/pages/SiteMonitor.tsx:319:9",className:"p-4",children:[e.jsxs("div",{"code-path":"src/pages/SiteMonitor.tsx:320:11",className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{"code-path":"src/pages/SiteMonitor.tsx:321:13",className:"flex items-center gap-2",children:[e.jsx(R,{"code-path":"src/pages/SiteMonitor.tsx:322:15",className:"h-4 w-4 text-[var(--dg-text-muted)]"}),e.jsxs("h3",{"code-path":"src/pages/SiteMonitor.tsx:323:15",className:"text-sm font-medium text-[var(--dg-text-primary)]",children:["拨测任务列表",g&&e.jsxs(u,{"code-path":"src/pages/SiteMonitor.tsx:326:19",variant:"outline",className:"ml-2 text-[10px] cursor-pointer border-[var(--dg-blue)]/40 text-[var(--dg-blue)] h-5",onClick:()=>k(null),children:[g," ×"]})]})]}),e.jsxs(w,{"code-path":"src/pages/SiteMonitor.tsx:336:13",size:"sm",className:"h-8 gap-1.5",onClick:pe,children:[e.jsx(ne,{"code-path":"src/pages/SiteMonitor.tsx:341:15",className:"h-3.5 w-3.5"}),"添加任务"]})]}),z.length===0?e.jsx("div",{"code-path":"src/pages/SiteMonitor.tsx:347:13",className:"text-center py-12 text-sm text-[var(--dg-text-muted)]",children:d.length===0?"暂无拨测任务,点击「添加任务」创建第一个":"当前筛选条件下无任务"}):e.jsx("div",{"code-path":"src/pages/SiteMonitor.tsx:353:13",className:"overflow-x-auto",children:e.jsxs(ce,{"code-path":"src/pages/SiteMonitor.tsx:354:15",children:[e.jsx(de,{"code-path":"src/pages/SiteMonitor.tsx:355:17",children:e.jsxs($,{"code-path":"src/pages/SiteMonitor.tsx:356:19",className:"border-[var(--dg-border)] hover:bg-transparent",children:[e.jsx(l,{"code-path":"src/pages/SiteMonitor.tsx:357:21",className:"text-xs text-[var(--dg-text-muted)]",children:"名称"}),e.jsx(l,{"code-path":"src/pages/SiteMonitor.tsx:358:21",className:"text-xs text-[var(--dg-text-muted)]",children:"URL"}),e.jsx(l,{"code-path":"src/pages/SiteMonitor.tsx:359:21",className:"text-xs text-[var(--dg-text-muted)]",children:"类型"}),e.jsx(l,{"code-path":"src/pages/SiteMonitor.tsx:360:21",className:"text-xs text-[var(--dg-text-muted)]",children:"间隔"}),e.jsx(l,{"code-path":"src/pages/SiteMonitor.tsx:361:21",className:"text-xs text-[var(--dg-text-muted)]",children:"状态"}),e.jsx(l,{"code-path":"src/pages/SiteMonitor.tsx:362:21",className:"text-xs text-[var(--dg-text-muted)]",children:"延迟"}),e.jsx(l,{"code-path":"src/pages/SiteMonitor.tsx:363:21",className:"text-xs text-[var(--dg-text-muted)]",children:"上次检测"}),e.jsx(l,{"code-path":"src/pages/SiteMonitor.tsx:364:21",className:"text-xs text-[var(--dg-text-muted)]",children:"启用"}),e.jsx(l,{"code-path":"src/pages/SiteMonitor.tsx:365:21",className:"text-xs text-[var(--dg-text-muted)]",children:"操作"})]})}),e.jsx(ie,{"code-path":"src/pages/SiteMonitor.tsx:368:17",children:z.map(s=>e.jsxs($,{"code-path":"src/pages/SiteMonitor.tsx:370:21",className:"border-[var(--dg-border)]",children:[e.jsx(p,{"code-path":"src/pages/SiteMonitor.tsx:371:23",className:"text-sm text-[var(--dg-text-primary)] font-medium",children:s.name}),e.jsx(p,{"code-path":"src/pages/SiteMonitor.tsx:374:23",className:"text-sm text-[var(--dg-text-muted)] max-w-[200px] truncate",children:s.url}),e.jsx(p,{"code-path":"src/pages/SiteMonitor.tsx:377:23",children:e.jsx(u,{"code-path":"src/pages/SiteMonitor.tsx:378:25",variant:"outline",className:"text-[11px] border-[var(--dg-border)]",children:s.type?.toUpperCase()})}),e.jsxs(p,{"code-path":"src/pages/SiteMonitor.tsx:382:23",className:"text-sm text-[var(--dg-text-muted)]",children:[s.frequency_sec,"s"]}),e.jsx(p,{"code-path":"src/pages/SiteMonitor.tsx:385:23",children:e.jsxs("div",{"code-path":"src/pages/SiteMonitor.tsx:386:25",className:"flex items-center gap-1.5",children:[Ae(s.last_status),e.jsx("span",{"code-path":"src/pages/SiteMonitor.tsx:388:27",className:"text-sm text-[var(--dg-text-muted)]",children:ze(s.last_status)})]})}),e.jsx(p,{"code-path":"src/pages/SiteMonitor.tsx:393:23",className:"text-sm text-[var(--dg-text-muted)]",children:Ue(s.last_response_time_ms)}),e.jsx(p,{"code-path":"src/pages/SiteMonitor.tsx:396:23",className:"text-sm text-[var(--dg-text-muted)]",children:Ee(s.last_checked_at)}),e.jsx(p,{"code-path":"src/pages/SiteMonitor.tsx:399:23",children:e.jsx(Pe,{"code-path":"src/pages/SiteMonitor.tsx:400:25",checked:s.enabled,onCheckedChange:()=>he(s)})}),e.jsx(p,{"code-path":"src/pages/SiteMonitor.tsx:405:23",children:e.jsx(w,{"code-path":"src/pages/SiteMonitor.tsx:406:25",variant:"ghost",size:"icon",className:"h-8 w-8 text-red-400 hover:text-red-300 hover:bg-red-500/10",onClick:()=>ge(s),children:e.jsx(xe,{"code-path":"src/pages/SiteMonitor.tsx:412:27",className:"h-4 w-4"})})})]},s.id))})]})})]})}),e.jsx(W,{"code-path":"src/pages/SiteMonitor.tsx:425:7",open:o,onOpenChange:x,children:e.jsxs(Y,{"code-path":"src/pages/SiteMonitor.tsx:426:9",className:"sm:max-w-md bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]",children:[e.jsxs(Z,{"code-path":"src/pages/SiteMonitor.tsx:427:11",children:[e.jsx(J,{"code-path":"src/pages/SiteMonitor.tsx:428:13",children:"添加拨测任务"}),e.jsx(ee,{"code-path":"src/pages/SiteMonitor.tsx:429:13",className:"text-[var(--dg-text-muted)]",children:"配置站点探活任务,系统将按指定频率自动检测"})]}),e.jsxs("div",{"code-path":"src/pages/SiteMonitor.tsx:434:11",className:"grid gap-4 py-2",children:[e.jsxs("div",{"code-path":"src/pages/SiteMonitor.tsx:436:13",className:"grid gap-1.5",children:[e.jsx(j,{"code-path":"src/pages/SiteMonitor.tsx:437:15",htmlFor:"task-name",className:"text-[var(--dg-text-primary)]",children:"任务名称"}),e.jsx(y,{"code-path":"src/pages/SiteMonitor.tsx:438:15",id:"task-name",placeholder:"例如:官网首页检测",value:c.name,onChange:s=>m({...c,name:s.target.value})})]}),e.jsxs("div",{"code-path":"src/pages/SiteMonitor.tsx:447:13",className:"grid gap-1.5",children:[e.jsx(j,{"code-path":"src/pages/SiteMonitor.tsx:448:15",htmlFor:"task-url",className:"text-[var(--dg-text-primary)]",children:"目标 URL"}),e.jsx(y,{"code-path":"src/pages/SiteMonitor.tsx:449:15",id:"task-url",placeholder:"例如:https://example.com 或 192.168.1.1",value:c.url,onChange:s=>m({...c,url:s.target.value})})]}),e.jsxs("div",{"code-path":"src/pages/SiteMonitor.tsx:458:13",className:"grid gap-1.5",children:[e.jsx(j,{"code-path":"src/pages/SiteMonitor.tsx:459:15",className:"text-[var(--dg-text-primary)]",children:"协议类型"}),e.jsxs(se,{"code-path":"src/pages/SiteMonitor.tsx:460:15",value:c.type,onValueChange:s=>m({...c,type:s}),children:[e.jsx(ae,{"code-path":"src/pages/SiteMonitor.tsx:464:17",children:e.jsx(re,{"code-path":"src/pages/SiteMonitor.tsx:465:19"})}),e.jsx(oe,{"code-path":"src/pages/SiteMonitor.tsx:467:17",children:Be.map(s=>e.jsx(A,{"code-path":"src/pages/SiteMonitor.tsx:469:21",value:s,children:s},s))})]})]}),e.jsxs("div",{"code-path":"src/pages/SiteMonitor.tsx:476:13",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/pages/SiteMonitor.tsx:477:15",className:"grid gap-1.5",children:[e.jsx(j,{"code-path":"src/pages/SiteMonitor.tsx:478:17",htmlFor:"freq",className:"text-[var(--dg-text-primary)]",children:"检测间隔 (秒)"}),e.jsx(y,{"code-path":"src/pages/SiteMonitor.tsx:481:17",id:"freq",type:"number",min:10,max:86400,value:c.frequency_sec,onChange:s=>m({...c,frequency_sec:Number(s.target.value)||60})})]}),e.jsxs("div",{"code-path":"src/pages/SiteMonitor.tsx:492:15",className:"grid gap-1.5",children:[e.jsx(j,{"code-path":"src/pages/SiteMonitor.tsx:493:17",htmlFor:"timeout",className:"text-[var(--dg-text-primary)]",children:"超时 (秒)"}),e.jsx(y,{"code-path":"src/pages/SiteMonitor.tsx:496:17",id:"timeout",type:"number",min:1,max:300,value:c.timeout_sec,onChange:s=>m({...c,timeout_sec:Number(s.target.value)||10})})]})]}),(c.type==="HTTP"||c.type==="HTTPS")&&e.jsxs("div",{"code-path":"src/pages/SiteMonitor.tsx:511:15",className:"grid gap-1.5",children:[e.jsx(j,{"code-path":"src/pages/SiteMonitor.tsx:512:17",htmlFor:"status-code",className:"text-[var(--dg-text-primary)]",children:"期望状态码"}),e.jsx(y,{"code-path":"src/pages/SiteMonitor.tsx:515:17",id:"status-code",type:"number",min:100,max:599,value:c.expected_status_code,onChange:s=>m({...c,expected_status_code:Number(s.target.value)||200})})]})]}),e.jsxs(te,{"code-path":"src/pages/SiteMonitor.tsx:529:11",children:[e.jsx(w,{"code-path":"src/pages/SiteMonitor.tsx:530:13",variant:"outline",onClick:()=>x(!1),disabled:S,children:"取消"}),e.jsxs(w,{"code-path":"src/pages/SiteMonitor.tsx:533:13",onClick:me,disabled:S,children:[S&&e.jsx(O,{"code-path":"src/pages/SiteMonitor.tsx:534:26",className:"h-4 w-4 animate-spin mr-1"}),"创建任务"]})]})]})})]})}const V=[{id:"host",name:"主机监控",icon:be,description:"CPU / 内存 / 磁盘 / 网络 / 磁盘IO"},{id:"middleware",name:"中间件监控",icon:B,description:"Redis / MySQL 指标采集"},{id:"snmp",name:"SNMP 监控",icon:le,description:"网络设备 / 服务器硬件 (OID 模板)"},{id:"site",name:"站点拨测",icon:I,description:"HTTP / PING / DNS / TCP / WS 拨测"}];function vt(){const[t,n]=i.useState("host");return e.jsxs("div",{"code-path":"src/pages/MonitorCenter.tsx:30:5",className:"space-y-6",children:[e.jsxs("div",{"code-path":"src/pages/MonitorCenter.tsx:31:7",children:[e.jsx("h1",{"code-path":"src/pages/MonitorCenter.tsx:32:9",className:"text-2xl font-bold text-[var(--dg-text-primary)]",children:"监控中心"}),e.jsx("p",{"code-path":"src/pages/MonitorCenter.tsx:33:9",className:"text-sm text-[var(--dg-text-muted)] mt-1",children:"全面的基础设施与应用监控"})]}),e.jsx("div",{"code-path":"src/pages/MonitorCenter.tsx:37:7",className:"flex gap-1 bg-[var(--dg-bg-secondary)] p-1 rounded-lg border border-[var(--dg-border)]",children:V.map(d=>e.jsxs("button",{"code-path":"src/pages/MonitorCenter.tsx:39:11",onClick:()=>n(d.id),className:Se("flex-1 flex items-center justify-center gap-2 px-4 py-2.5 rounded-md text-sm font-medium transition-all",t===d.id?"bg-[var(--dg-bg-tertiary)] text-[var(--dg-text-primary)] shadow-sm":"text-[var(--dg-text-muted)] hover:text-[var(--dg-text-secondary)]"),children:[e.jsx(d.icon,{"code-path":"src/pages/MonitorCenter.tsx:49:13",className:"h-4 w-4"}),e.jsx("span",{"code-path":"src/pages/MonitorCenter.tsx:50:13",className:"hidden sm:inline",children:d.name})]},d.id))}),e.jsx("p",{"code-path":"src/pages/MonitorCenter.tsx:56:7",className:"text-sm text-[var(--dg-text-muted)] -mt-4",children:V.find(d=>d.id===t)?.description}),e.jsxs("div",{"code-path":"src/pages/MonitorCenter.tsx:61:7",className:"min-h-[400px]",children:[t==="host"&&e.jsx(ye,{"code-path":"src/pages/MonitorCenter.tsx:62:34"}),t==="middleware"&&e.jsx($e,{"code-path":"src/pages/MonitorCenter.tsx:63:40"}),t==="snmp"&&e.jsx(Oe,{"code-path":"src/pages/MonitorCenter.tsx:64:34"}),t==="site"&&e.jsx(Ge,{"code-path":"src/pages/MonitorCenter.tsx:65:34"})]})]})}export{vt as MonitorCenter}; diff --git a/backend/static/assets/NamespaceManagementPage-D9d9jRqO.js b/backend/static/assets/NamespaceManagementPage-D9d9jRqO.js new file mode 100644 index 0000000..02d8d84 --- /dev/null +++ b/backend/static/assets/NamespaceManagementPage-D9d9jRqO.js @@ -0,0 +1 @@ +import{k as X,m as Z,r as n,j as e,n as A,o as O,q as j,B as m,L as i,D as L,w as ee,a as E,b as B,c as q,e as R,v as ae,A as se,N as te,t as H,T as $}from"./index-Dmami9WE.js";import{C as p,a as l}from"./card-CIfC-8Rh.js";import{B as z}from"./badge-3UzCvU7L.js";import{I}from"./input-NsU9nXZF.js";import{L as ne}from"./label-Ap_-SPYI.js";import{T as ce,a as re,b as N,c,d as me,e as s}from"./table-CG4mjNfb.js";import{k as P}from"./kubernetes-D2-GnE0t.js";import{R as oe}from"./refresh-cw-CTBERyFc.js";import{P as pe}from"./plus-O65gX7Qz.js";import{C as le}from"./circle-check-CVbTTFQ0.js";import{T as xe}from"./trash-2-DWVnIU6o.js";const de=new Set(["kube-system","kube-public","kube-node-lease","default","devops"]);function ye(){const{clusterCode:t}=X(),Q=Z(),[o,M]=n.useState([]),[u,f]=n.useState(!1),[b,F]=n.useState(""),[J,k]=n.useState(!1),[d,y]=n.useState(""),[v,w]=n.useState(!1),[g,h]=n.useState(null),[C,S]=n.useState(!1),x=n.useCallback(async()=>{if(t){f(!0);try{const a=await P.getNamespacesDetail(t);M(Array.isArray(a)?a:[])}catch{M([])}finally{f(!1)}}},[t]);n.useEffect(()=>{x()},[x]);const D=async()=>{if(!(!t||!d.trim())){w(!0);try{await P.createNamespace(t,d.trim()),y(""),k(!1),await x()}catch(a){alert(a?.message||"创建失败")}finally{w(!1)}}},K=async()=>{if(!(!t||!g)){S(!0);try{await P.deleteNamespace(t,g),h(null),await x()}catch(a){alert(a?.message||"删除失败")}finally{S(!1)}}},T=o.filter(a=>!b||a.name.toLowerCase().includes(b.toLowerCase())),Y=o.reduce((a,r)=>a+(r.resource_counts?.deployments||0),0),G=o.reduce((a,r)=>a+(r.resource_counts?.pods||0),0),U=o.reduce((a,r)=>a+(r.resource_counts?.services||0),0),V=o.filter(a=>a.has_resource_quota).length;return e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:108:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:110:7",className:"flex items-center gap-2 text-sm text-slate-500",children:[e.jsx(A,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:111:9",to:"/kubernetes",className:"hover:text-slate-300 transition-colors",children:"集群"}),e.jsx(O,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:112:9",className:"h-3 w-3"}),e.jsx(A,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:113:9",to:`/kubernetes/${t}`,className:"hover:text-slate-300 transition-colors",children:t}),e.jsx(O,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:114:9",className:"h-3 w-3"}),e.jsx("span",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:115:9",className:"text-slate-300",children:"命名空间管理"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:119:7",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:120:9",children:[e.jsxs("h1",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:121:11",className:"text-2xl font-bold text-slate-100 flex items-center gap-2",children:[e.jsx(j,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:122:13",className:"h-6 w-6 text-emerald-400"}),"命名空间管理"]}),e.jsx("p",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:125:11",className:"text-sm text-slate-500 mt-1",children:"命名空间资源配额与生命周期管理"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:127:9",className:"flex items-center gap-2",children:[e.jsx(m,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:128:11",variant:"outline",size:"icon",className:"h-9 w-9 border-slate-700 text-slate-400",onClick:x,disabled:u,children:u?e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:130:24",className:"h-4 w-4 animate-spin"}):e.jsx(oe,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:130:71",className:"h-4 w-4"})}),e.jsxs(L,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:132:11",open:J,onOpenChange:k,children:[e.jsx(ee,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:133:13",asChild:!0,children:e.jsxs(m,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:134:15",className:"bg-blue-600 hover:bg-blue-700",children:[e.jsx(pe,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:135:17",className:"h-4 w-4 mr-1"}),"创建命名空间"]})}),e.jsxs(E,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:138:13",children:[e.jsx(B,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:139:15",children:e.jsx(q,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:140:17",children:"创建命名空间"})}),e.jsx("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:142:15",className:"space-y-4 py-4",children:e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:143:17",className:"space-y-2",children:[e.jsx(ne,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:144:19",children:"命名空间名称"}),e.jsx(I,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:145:19",value:d,onChange:a=>y(a.target.value),placeholder:"例如: my-app",onKeyDown:a=>a.key==="Enter"&&D()}),e.jsx("p",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:151:19",className:"text-xs text-slate-500",children:"名称需符合 DNS-1123 标准(小写字母/数字/连字符)"})]})}),e.jsxs(R,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:156:15",children:[e.jsx(m,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:157:17",variant:"outline",onClick:()=>k(!1),children:"取消"}),e.jsxs(m,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:158:17",onClick:D,disabled:v||!d.trim(),children:[v?e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:159:31",className:"h-4 w-4 animate-spin mr-1"}):null,"创建"]})]})]})]})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:169:7",className:"grid grid-cols-2 md:grid-cols-5 gap-3",children:[e.jsx(p,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:170:9",className:"bg-slate-900 border-slate-800",children:e.jsxs(l,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:171:11",className:"p-4 flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:172:13",children:[e.jsx("p",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:172:18",className:"text-xs text-slate-500",children:"命名空间"}),e.jsx("p",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:172:64",className:"text-xl font-bold text-emerald-400",children:o.length})]}),e.jsx(j,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:173:13",className:"h-6 w-6 opacity-30 text-emerald-400"})]})}),e.jsx(p,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:176:9",className:"bg-slate-900 border-slate-800",children:e.jsxs(l,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:177:11",className:"p-4 flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:178:13",children:[e.jsx("p",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:178:18",className:"text-xs text-slate-500",children:"Deployments"}),e.jsx("p",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:178:71",className:"text-xl font-bold text-blue-400",children:Y})]}),e.jsx(ae,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:179:13",className:"h-6 w-6 opacity-30 text-blue-400"})]})}),e.jsx(p,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:182:9",className:"bg-slate-900 border-slate-800",children:e.jsxs(l,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:183:11",className:"p-4 flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:184:13",children:[e.jsx("p",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:184:18",className:"text-xs text-slate-500",children:"Pods"}),e.jsx("p",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:184:64",className:"text-xl font-bold text-purple-400",children:G})]}),e.jsx(se,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:185:13",className:"h-6 w-6 opacity-30 text-purple-400"})]})}),e.jsx(p,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:188:9",className:"bg-slate-900 border-slate-800",children:e.jsxs(l,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:189:11",className:"p-4 flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:190:13",children:[e.jsx("p",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:190:18",className:"text-xs text-slate-500",children:"Services"}),e.jsx("p",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:190:68",className:"text-xl font-bold text-cyan-400",children:U})]}),e.jsx(te,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:191:13",className:"h-6 w-6 opacity-30 text-cyan-400"})]})}),e.jsx(p,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:194:9",className:"bg-slate-900 border-slate-800",children:e.jsxs(l,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:195:11",className:"p-4 flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:196:13",children:[e.jsx("p",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:196:18",className:"text-xs text-slate-500",children:"配额限制"}),e.jsx("p",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:196:64",className:"text-xl font-bold text-amber-400",children:V})]}),e.jsx(H,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:197:13",className:"h-6 w-6 opacity-30 text-amber-400"})]})})]}),e.jsx("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:203:7",className:"flex items-center gap-3",children:e.jsx(I,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:204:9",value:b,onChange:a=>F(a.target.value),placeholder:"搜索命名空间...",className:"max-w-xs bg-slate-900 border-slate-700"})}),e.jsx(p,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:213:7",className:"bg-slate-900 border-slate-800",children:e.jsx(l,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:214:9",className:"p-0",children:e.jsxs(ce,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:215:11",children:[e.jsx(re,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:216:13",children:e.jsxs(N,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:217:15",className:"border-slate-800 hover:bg-transparent",children:[e.jsx(c,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:218:17",className:"text-slate-400",children:"名称"}),e.jsx(c,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:219:17",className:"text-slate-400",children:"状态"}),e.jsx(c,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:220:17",className:"text-slate-400",children:"年龄"}),e.jsx(c,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:221:17",className:"text-slate-400 text-center",children:"Deploy"}),e.jsx(c,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:222:17",className:"text-slate-400 text-center",children:"Pods"}),e.jsx(c,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:223:17",className:"text-slate-400 text-center",children:"Svc"}),e.jsx(c,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:224:17",className:"text-slate-400 text-center",children:"配额"}),e.jsx(c,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:225:17",className:"text-slate-400",children:"标签"}),e.jsx(c,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:226:17",className:"text-slate-400 text-center",children:"操作"})]})}),e.jsx(me,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:229:13",children:u?e.jsx(N,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:231:17",children:e.jsxs(s,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:231:27",colSpan:9,className:"text-center text-slate-500 py-12",children:[e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:232:19",className:"h-5 w-5 animate-spin mx-auto mb-2"}),"加载中..."]})}):T.length===0?e.jsx(N,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:235:17",children:e.jsxs(s,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:235:27",colSpan:9,className:"text-center text-slate-500 py-12",children:[e.jsx(j,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:236:19",className:"h-8 w-8 mx-auto mb-2 opacity-50"}),"暂无命名空间"]})}):T.map(a=>{const r=de.has(a.name);return e.jsxs(N,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:242:21",className:"border-slate-800 hover:bg-slate-800/30",children:[e.jsx(s,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:243:23",className:"font-medium",children:e.jsx("button",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:244:25",className:"text-blue-400 hover:text-blue-300 hover:underline text-left",onClick:()=>Q(`/kubernetes/${t}/namespace/${a.name}`),children:a.name})}),e.jsx(s,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:251:23",children:e.jsxs(z,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:252:25",className:a.status==="Active"?"bg-emerald-500/20 text-emerald-400":"bg-red-500/20 text-red-400",children:[a.status==="Active"?e.jsx(le,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:253:53",className:"h-3 w-3 mr-1"}):e.jsx($,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:253:97",className:"h-3 w-3 mr-1"}),a.status]})}),e.jsx(s,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:257:23",className:"text-sm text-slate-400",children:a.age}),e.jsx(s,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:258:23",className:"text-center text-sm text-slate-300",children:a.resource_counts?.deployments??0}),e.jsx(s,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:259:23",className:"text-center text-sm text-slate-300",children:a.resource_counts?.pods??0}),e.jsx(s,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:260:23",className:"text-center text-sm text-slate-300",children:a.resource_counts?.services??0}),e.jsx(s,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:261:23",className:"text-center",children:a.has_resource_quota?e.jsxs(z,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:263:27",className:"bg-amber-500/20 text-amber-400",title:JSON.stringify(a.resource_quotas?.[0]?.status),children:[e.jsx(H,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:264:29",className:"h-3 w-3 mr-1"}),"有"]}):e.jsx("span",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:267:27",className:"text-xs text-slate-600",children:"-"})}),e.jsx(s,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:270:23",className:"text-xs",children:a.labels&&Object.keys(a.labels).length>0?e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:272:27",className:"flex flex-wrap gap-1 max-w-[200px]",children:[Object.entries(a.labels).slice(0,3).map(([_,W])=>e.jsxs("span",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:274:31",className:"px-1.5 py-0.5 bg-slate-800 rounded text-slate-400",children:[_,"=",W]},_)),Object.keys(a.labels).length>3&&e.jsxs("span",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:277:31",className:"text-slate-600",children:["+",Object.keys(a.labels).length-3]})]}):e.jsx("span",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:281:27",className:"text-slate-600",children:"-"})}),e.jsx(s,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:284:23",className:"text-center",children:r?e.jsx("span",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:286:27",className:"text-xs text-slate-600",children:"系统"}):e.jsx(m,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:288:27",variant:"ghost",size:"icon",className:"h-7 w-7 text-red-400 hover:text-red-300 hover:bg-red-500/10",onClick:()=>h(a.name),title:"删除命名空间",children:e.jsx(xe,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:294:29",className:"h-3.5 w-3.5"})})})]},a.name)})})]})})}),e.jsx(L,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:308:7",open:!!g,onOpenChange:a=>!a&&h(null),children:e.jsxs(E,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:309:9",children:[e.jsx(B,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:310:11",children:e.jsxs(q,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:311:13",className:"text-red-400 flex items-center gap-2",children:[e.jsx($,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:312:15",className:"h-5 w-5"}),"删除命名空间"]})}),e.jsx("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:315:11",className:"space-y-3 py-4",children:e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:316:13",className:"bg-red-500/10 border border-red-500/30 rounded-lg p-3",children:[e.jsxs("p",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:317:15",className:"text-sm text-red-300",children:["⚠️ 即将删除命名空间 ",e.jsx("span",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:318:29",className:"font-bold",children:g})," 及其中所有资源。"]}),e.jsx("p",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:320:15",className:"text-xs text-red-400/70 mt-1",children:"此操作不可逆,所有 Deployment/Pod/Service/ConfigMap 等资源将被永久删除。"})]})}),e.jsxs(R,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:325:11",children:[e.jsx(m,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:326:13",variant:"outline",onClick:()=>h(null),children:"取消"}),e.jsxs(m,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:327:13",variant:"destructive",onClick:K,disabled:C,children:[C?e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:328:27",className:"h-4 w-4 animate-spin mr-1"}):null,"确认删除"]})]})]})})]})}export{ye as default}; diff --git a/backend/static/assets/NamespaceManagementPage-Do5kDmHW.js b/backend/static/assets/NamespaceManagementPage-Do5kDmHW.js deleted file mode 100644 index e18d947..0000000 --- a/backend/static/assets/NamespaceManagementPage-Do5kDmHW.js +++ /dev/null @@ -1 +0,0 @@ -import{i as X,k as Z,r as n,j as e,m as A,n as O,p as j,B as m,L as i,D as L,y as ee,b as E,c as B,d as R,I as q,f as H,v as ae,A as se,N as te,t as $,T as z}from"./index-DfyorCky.js";import{C as p,a as l}from"./card-C55cvSHg.js";import{B as I}from"./badge-xNW8x0G1.js";import{L as ne}from"./label-BK0h2apY.js";import{T as ce,a as re,b as N,c,d as me,e as s}from"./table-5sHV4Akp.js";import{k as P}from"./kubernetes-J8O09fK7.js";import{R as oe}from"./refresh-cw-DUB_tAG-.js";import{P as pe}from"./plus-CUG-9kpu.js";import{C as le}from"./circle-check-DWcXrx2k.js";import{T as xe}from"./trash-2-Dx32pOzT.js";const de=new Set(["kube-system","kube-public","kube-node-lease","default","devops"]);function fe(){const{clusterCode:t}=X(),Q=Z(),[o,M]=n.useState([]),[u,f]=n.useState(!1),[b,F]=n.useState(""),[J,k]=n.useState(!1),[d,y]=n.useState(""),[v,w]=n.useState(!1),[g,h]=n.useState(null),[C,S]=n.useState(!1),x=n.useCallback(async()=>{if(t){f(!0);try{const a=await P.getNamespacesDetail(t);M(Array.isArray(a)?a:[])}catch{M([])}finally{f(!1)}}},[t]);n.useEffect(()=>{x()},[x]);const D=async()=>{if(!(!t||!d.trim())){w(!0);try{await P.createNamespace(t,d.trim()),y(""),k(!1),await x()}catch(a){alert(a?.message||"创建失败")}finally{w(!1)}}},K=async()=>{if(!(!t||!g)){S(!0);try{await P.deleteNamespace(t,g),h(null),await x()}catch(a){alert(a?.message||"删除失败")}finally{S(!1)}}},T=o.filter(a=>!b||a.name.toLowerCase().includes(b.toLowerCase())),Y=o.reduce((a,r)=>a+(r.resource_counts?.deployments||0),0),G=o.reduce((a,r)=>a+(r.resource_counts?.pods||0),0),U=o.reduce((a,r)=>a+(r.resource_counts?.services||0),0),V=o.filter(a=>a.has_resource_quota).length;return e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:108:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:110:7",className:"flex items-center gap-2 text-sm text-slate-500",children:[e.jsx(A,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:111:9",to:"/kubernetes",className:"hover:text-slate-300 transition-colors",children:"集群"}),e.jsx(O,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:112:9",className:"h-3 w-3"}),e.jsx(A,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:113:9",to:`/kubernetes/${t}`,className:"hover:text-slate-300 transition-colors",children:t}),e.jsx(O,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:114:9",className:"h-3 w-3"}),e.jsx("span",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:115:9",className:"text-slate-300",children:"命名空间管理"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:119:7",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:120:9",children:[e.jsxs("h1",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:121:11",className:"text-2xl font-bold text-slate-100 flex items-center gap-2",children:[e.jsx(j,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:122:13",className:"h-6 w-6 text-emerald-400"}),"命名空间管理"]}),e.jsx("p",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:125:11",className:"text-sm text-slate-500 mt-1",children:"命名空间资源配额与生命周期管理"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:127:9",className:"flex items-center gap-2",children:[e.jsx(m,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:128:11",variant:"outline",size:"icon",className:"h-9 w-9 border-slate-700 text-slate-400",onClick:x,disabled:u,children:u?e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:130:24",className:"h-4 w-4 animate-spin"}):e.jsx(oe,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:130:71",className:"h-4 w-4"})}),e.jsxs(L,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:132:11",open:J,onOpenChange:k,children:[e.jsx(ee,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:133:13",asChild:!0,children:e.jsxs(m,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:134:15",className:"bg-blue-600 hover:bg-blue-700",children:[e.jsx(pe,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:135:17",className:"h-4 w-4 mr-1"}),"创建命名空间"]})}),e.jsxs(E,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:138:13",children:[e.jsx(B,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:139:15",children:e.jsx(R,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:140:17",children:"创建命名空间"})}),e.jsx("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:142:15",className:"space-y-4 py-4",children:e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:143:17",className:"space-y-2",children:[e.jsx(ne,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:144:19",children:"命名空间名称"}),e.jsx(q,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:145:19",value:d,onChange:a=>y(a.target.value),placeholder:"例如: my-app",onKeyDown:a=>a.key==="Enter"&&D()}),e.jsx("p",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:151:19",className:"text-xs text-slate-500",children:"名称需符合 DNS-1123 标准(小写字母/数字/连字符)"})]})}),e.jsxs(H,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:156:15",children:[e.jsx(m,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:157:17",variant:"outline",onClick:()=>k(!1),children:"取消"}),e.jsxs(m,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:158:17",onClick:D,disabled:v||!d.trim(),children:[v?e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:159:31",className:"h-4 w-4 animate-spin mr-1"}):null,"创建"]})]})]})]})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:169:7",className:"grid grid-cols-2 md:grid-cols-5 gap-3",children:[e.jsx(p,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:170:9",className:"bg-slate-900 border-slate-800",children:e.jsxs(l,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:171:11",className:"p-4 flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:172:13",children:[e.jsx("p",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:172:18",className:"text-xs text-slate-500",children:"命名空间"}),e.jsx("p",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:172:64",className:"text-xl font-bold text-emerald-400",children:o.length})]}),e.jsx(j,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:173:13",className:"h-6 w-6 opacity-30 text-emerald-400"})]})}),e.jsx(p,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:176:9",className:"bg-slate-900 border-slate-800",children:e.jsxs(l,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:177:11",className:"p-4 flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:178:13",children:[e.jsx("p",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:178:18",className:"text-xs text-slate-500",children:"Deployments"}),e.jsx("p",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:178:71",className:"text-xl font-bold text-blue-400",children:Y})]}),e.jsx(ae,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:179:13",className:"h-6 w-6 opacity-30 text-blue-400"})]})}),e.jsx(p,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:182:9",className:"bg-slate-900 border-slate-800",children:e.jsxs(l,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:183:11",className:"p-4 flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:184:13",children:[e.jsx("p",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:184:18",className:"text-xs text-slate-500",children:"Pods"}),e.jsx("p",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:184:64",className:"text-xl font-bold text-purple-400",children:G})]}),e.jsx(se,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:185:13",className:"h-6 w-6 opacity-30 text-purple-400"})]})}),e.jsx(p,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:188:9",className:"bg-slate-900 border-slate-800",children:e.jsxs(l,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:189:11",className:"p-4 flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:190:13",children:[e.jsx("p",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:190:18",className:"text-xs text-slate-500",children:"Services"}),e.jsx("p",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:190:68",className:"text-xl font-bold text-cyan-400",children:U})]}),e.jsx(te,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:191:13",className:"h-6 w-6 opacity-30 text-cyan-400"})]})}),e.jsx(p,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:194:9",className:"bg-slate-900 border-slate-800",children:e.jsxs(l,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:195:11",className:"p-4 flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:196:13",children:[e.jsx("p",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:196:18",className:"text-xs text-slate-500",children:"配额限制"}),e.jsx("p",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:196:64",className:"text-xl font-bold text-amber-400",children:V})]}),e.jsx($,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:197:13",className:"h-6 w-6 opacity-30 text-amber-400"})]})})]}),e.jsx("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:203:7",className:"flex items-center gap-3",children:e.jsx(q,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:204:9",value:b,onChange:a=>F(a.target.value),placeholder:"搜索命名空间...",className:"max-w-xs bg-slate-900 border-slate-700"})}),e.jsx(p,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:213:7",className:"bg-slate-900 border-slate-800",children:e.jsx(l,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:214:9",className:"p-0",children:e.jsxs(ce,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:215:11",children:[e.jsx(re,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:216:13",children:e.jsxs(N,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:217:15",className:"border-slate-800 hover:bg-transparent",children:[e.jsx(c,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:218:17",className:"text-slate-400",children:"名称"}),e.jsx(c,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:219:17",className:"text-slate-400",children:"状态"}),e.jsx(c,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:220:17",className:"text-slate-400",children:"年龄"}),e.jsx(c,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:221:17",className:"text-slate-400 text-center",children:"Deploy"}),e.jsx(c,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:222:17",className:"text-slate-400 text-center",children:"Pods"}),e.jsx(c,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:223:17",className:"text-slate-400 text-center",children:"Svc"}),e.jsx(c,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:224:17",className:"text-slate-400 text-center",children:"配额"}),e.jsx(c,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:225:17",className:"text-slate-400",children:"标签"}),e.jsx(c,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:226:17",className:"text-slate-400 text-center",children:"操作"})]})}),e.jsx(me,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:229:13",children:u?e.jsx(N,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:231:17",children:e.jsxs(s,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:231:27",colSpan:9,className:"text-center text-slate-500 py-12",children:[e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:232:19",className:"h-5 w-5 animate-spin mx-auto mb-2"}),"加载中..."]})}):T.length===0?e.jsx(N,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:235:17",children:e.jsxs(s,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:235:27",colSpan:9,className:"text-center text-slate-500 py-12",children:[e.jsx(j,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:236:19",className:"h-8 w-8 mx-auto mb-2 opacity-50"}),"暂无命名空间"]})}):T.map(a=>{const r=de.has(a.name);return e.jsxs(N,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:242:21",className:"border-slate-800 hover:bg-slate-800/30",children:[e.jsx(s,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:243:23",className:"font-medium",children:e.jsx("button",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:244:25",className:"text-blue-400 hover:text-blue-300 hover:underline text-left",onClick:()=>Q(`/kubernetes/${t}/namespace/${a.name}`),children:a.name})}),e.jsx(s,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:251:23",children:e.jsxs(I,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:252:25",className:a.status==="Active"?"bg-emerald-500/20 text-emerald-400":"bg-red-500/20 text-red-400",children:[a.status==="Active"?e.jsx(le,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:253:53",className:"h-3 w-3 mr-1"}):e.jsx(z,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:253:97",className:"h-3 w-3 mr-1"}),a.status]})}),e.jsx(s,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:257:23",className:"text-sm text-slate-400",children:a.age}),e.jsx(s,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:258:23",className:"text-center text-sm text-slate-300",children:a.resource_counts?.deployments??0}),e.jsx(s,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:259:23",className:"text-center text-sm text-slate-300",children:a.resource_counts?.pods??0}),e.jsx(s,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:260:23",className:"text-center text-sm text-slate-300",children:a.resource_counts?.services??0}),e.jsx(s,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:261:23",className:"text-center",children:a.has_resource_quota?e.jsxs(I,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:263:27",className:"bg-amber-500/20 text-amber-400",title:JSON.stringify(a.resource_quotas?.[0]?.status),children:[e.jsx($,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:264:29",className:"h-3 w-3 mr-1"}),"有"]}):e.jsx("span",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:267:27",className:"text-xs text-slate-600",children:"-"})}),e.jsx(s,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:270:23",className:"text-xs",children:a.labels&&Object.keys(a.labels).length>0?e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:272:27",className:"flex flex-wrap gap-1 max-w-[200px]",children:[Object.entries(a.labels).slice(0,3).map(([_,W])=>e.jsxs("span",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:274:31",className:"px-1.5 py-0.5 bg-slate-800 rounded text-slate-400",children:[_,"=",W]},_)),Object.keys(a.labels).length>3&&e.jsxs("span",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:277:31",className:"text-slate-600",children:["+",Object.keys(a.labels).length-3]})]}):e.jsx("span",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:281:27",className:"text-slate-600",children:"-"})}),e.jsx(s,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:284:23",className:"text-center",children:r?e.jsx("span",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:286:27",className:"text-xs text-slate-600",children:"系统"}):e.jsx(m,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:288:27",variant:"ghost",size:"icon",className:"h-7 w-7 text-red-400 hover:text-red-300 hover:bg-red-500/10",onClick:()=>h(a.name),title:"删除命名空间",children:e.jsx(xe,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:294:29",className:"h-3.5 w-3.5"})})})]},a.name)})})]})})}),e.jsx(L,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:308:7",open:!!g,onOpenChange:a=>!a&&h(null),children:e.jsxs(E,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:309:9",children:[e.jsx(B,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:310:11",children:e.jsxs(R,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:311:13",className:"text-red-400 flex items-center gap-2",children:[e.jsx(z,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:312:15",className:"h-5 w-5"}),"删除命名空间"]})}),e.jsx("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:315:11",className:"space-y-3 py-4",children:e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:316:13",className:"bg-red-500/10 border border-red-500/30 rounded-lg p-3",children:[e.jsxs("p",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:317:15",className:"text-sm text-red-300",children:["⚠️ 即将删除命名空间 ",e.jsx("span",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:318:29",className:"font-bold",children:g})," 及其中所有资源。"]}),e.jsx("p",{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:320:15",className:"text-xs text-red-400/70 mt-1",children:"此操作不可逆,所有 Deployment/Pod/Service/ConfigMap 等资源将被永久删除。"})]})}),e.jsxs(H,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:325:11",children:[e.jsx(m,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:326:13",variant:"outline",onClick:()=>h(null),children:"取消"}),e.jsxs(m,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:327:13",variant:"destructive",onClick:K,disabled:C,children:[C?e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceManagementPage.tsx:328:27",className:"h-4 w-4 animate-spin mr-1"}):null,"确认删除"]})]})]})})]})}export{fe as default}; diff --git a/backend/static/assets/NamespaceOverviewPage-qjFlj_lA.js b/backend/static/assets/NamespaceOverviewPage-jwxLBT8K.js similarity index 91% rename from backend/static/assets/NamespaceOverviewPage-qjFlj_lA.js rename to backend/static/assets/NamespaceOverviewPage-jwxLBT8K.js index 27763a3..f74afac 100644 --- a/backend/static/assets/NamespaceOverviewPage-qjFlj_lA.js +++ b/backend/static/assets/NamespaceOverviewPage-jwxLBT8K.js @@ -1 +1 @@ -import{i as g,r,j as s,m as l,n as i,s as h,p as b,v as N,x as f,N as u,t as w,A as k}from"./index-DfyorCky.js";import{k as n}from"./kubernetes-J8O09fK7.js";import{F as P}from"./file-text-C9G5abwR.js";const j=[{type:"deployments",label:"Deployments",icon:b,desc:"工作负载副本管理"},{type:"pods",label:"Pods",icon:N,desc:"容器实例运行状态"},{type:"cronjobs",label:"CronJobs",icon:f,desc:"定时任务管理"},{type:"services",label:"Services",icon:u,desc:"服务发现与负载均衡"},{type:"ingresses",label:"Ingresses",icon:u,desc:"外部流量路由规则"},{type:"configmaps",label:"ConfigMaps",icon:P,desc:"配置字典"},{type:"secrets",label:"Secrets",icon:w,desc:"密钥与凭证"},{type:"hpas",label:"HPAs",icon:k,desc:"水平自动伸缩策略"}];function S(){const{clusterCode:t,namespace:a}=g(),[x,p]=r.useState({}),[v,m]=r.useState(!1),d=r.useCallback(async()=>{if(!(!t||!a)){m(!0);try{const e=await Promise.allSettled([n.getNamespaceDeployments(t,a),n.getNamespacePods(t,a),n.getNamespaceServices(t,a),n.getNamespaceIngresses(t,a),n.getNamespaceConfigMaps(t,a),n.getNamespaceSecrets(t,a),n.getHPAs(t,a),n.getCronJobs(t,a)]),c=o=>Array.isArray(o)?o:o?.list||o?.data||[];p({deployments:c(e[0].status==="fulfilled"?e[0].value:[]).length,pods:c(e[1].status==="fulfilled"?e[1].value:[]).length,services:c(e[2].status==="fulfilled"?e[2].value:[]).length,ingresses:c(e[3].status==="fulfilled"?e[3].value:[]).length,configmaps:c(e[4].status==="fulfilled"?e[4].value:[]).length,secrets:c(e[5].status==="fulfilled"?e[5].value:[]).length,hpas:c(e[6].status==="fulfilled"?e[6].value:[]).length,cronjobs:c(e[7].status==="fulfilled"?e[7].value:[]).length})}catch{p({})}finally{m(!1)}}},[t,a]);return r.useEffect(()=>{d()},[d]),s.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceOverviewPage.tsx:65:5",className:"space-y-4",children:[s.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceOverviewPage.tsx:67:7",className:"flex items-center gap-2 text-sm text-slate-500",children:[s.jsx(l,{"code-path":"src/components/kubernetes/NamespaceOverviewPage.tsx:68:9",to:"/kubernetes",className:"hover:text-slate-300 transition-colors",children:"集群"}),s.jsx(i,{"code-path":"src/components/kubernetes/NamespaceOverviewPage.tsx:69:9",className:"h-3 w-3"}),s.jsx(l,{"code-path":"src/components/kubernetes/NamespaceOverviewPage.tsx:70:9",to:`/kubernetes/${t}`,className:"hover:text-slate-300 transition-colors",children:t}),s.jsx(i,{"code-path":"src/components/kubernetes/NamespaceOverviewPage.tsx:71:9",className:"h-3 w-3"}),s.jsx("span",{"code-path":"src/components/kubernetes/NamespaceOverviewPage.tsx:72:9",className:"text-slate-300",children:a})]}),s.jsx("div",{"code-path":"src/components/kubernetes/NamespaceOverviewPage.tsx:76:7",className:"flex items-center justify-between",children:s.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceOverviewPage.tsx:77:9",children:[s.jsxs("h1",{"code-path":"src/components/kubernetes/NamespaceOverviewPage.tsx:78:11",className:"text-2xl font-bold text-slate-100 flex items-center gap-2",children:[s.jsx(h,{"code-path":"src/components/kubernetes/NamespaceOverviewPage.tsx:79:13",className:"h-6 w-6 text-blue-400"}),a]}),s.jsx("p",{"code-path":"src/components/kubernetes/NamespaceOverviewPage.tsx:82:11",className:"text-sm text-slate-500 mt-1",children:"命名空间概览"})]})}),s.jsx("div",{"code-path":"src/components/kubernetes/NamespaceOverviewPage.tsx:87:7",className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:j.map(e=>s.jsxs(l,{"code-path":"src/components/kubernetes/NamespaceOverviewPage.tsx:89:11",to:`/kubernetes/${t}/namespace/${a}/${e.type}`,className:"bg-slate-900 border border-slate-800 rounded-lg p-4 hover:border-slate-600 hover:bg-slate-800/50 transition-all group",children:[s.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceOverviewPage.tsx:93:13",className:"flex items-center justify-between mb-2",children:[s.jsx(e.icon,{"code-path":"src/components/kubernetes/NamespaceOverviewPage.tsx:94:15",className:"h-5 w-5 text-slate-500 group-hover:text-blue-400 transition-colors"}),s.jsx(i,{"code-path":"src/components/kubernetes/NamespaceOverviewPage.tsx:95:15",className:"h-4 w-4 text-slate-600 group-hover:text-slate-400 transition-colors"})]}),s.jsx("div",{"code-path":"src/components/kubernetes/NamespaceOverviewPage.tsx:97:13",className:"text-lg font-bold text-slate-100",children:v?"-":x[e.type]??0}),s.jsx("div",{"code-path":"src/components/kubernetes/NamespaceOverviewPage.tsx:98:13",className:"text-sm text-slate-500",children:e.label}),s.jsx("div",{"code-path":"src/components/kubernetes/NamespaceOverviewPage.tsx:99:13",className:"text-xs text-slate-600 mt-1",children:e.desc})]},e.type))})]})}export{S as default}; +import{k as g,r,j as s,n as l,o as i,s as h,q as b,v as N,C as f,N as u,t as k,A as w}from"./index-Dmami9WE.js";import{k as n}from"./kubernetes-D2-GnE0t.js";import{F as P}from"./file-text-CebshSV-.js";const j=[{type:"deployments",label:"Deployments",icon:b,desc:"工作负载副本管理"},{type:"pods",label:"Pods",icon:N,desc:"容器实例运行状态"},{type:"cronjobs",label:"CronJobs",icon:f,desc:"定时任务管理"},{type:"services",label:"Services",icon:u,desc:"服务发现与负载均衡"},{type:"ingresses",label:"Ingresses",icon:u,desc:"外部流量路由规则"},{type:"configmaps",label:"ConfigMaps",icon:P,desc:"配置字典"},{type:"secrets",label:"Secrets",icon:k,desc:"密钥与凭证"},{type:"hpas",label:"HPAs",icon:w,desc:"水平自动伸缩策略"}];function S(){const{clusterCode:t,namespace:a}=g(),[x,p]=r.useState({}),[v,m]=r.useState(!1),d=r.useCallback(async()=>{if(!(!t||!a)){m(!0);try{const e=await Promise.allSettled([n.getNamespaceDeployments(t,a),n.getNamespacePods(t,a),n.getNamespaceServices(t,a),n.getNamespaceIngresses(t,a),n.getNamespaceConfigMaps(t,a),n.getNamespaceSecrets(t,a),n.getHPAs(t,a),n.getCronJobs(t,a)]),c=o=>Array.isArray(o)?o:o?.list||o?.data||[];p({deployments:c(e[0].status==="fulfilled"?e[0].value:[]).length,pods:c(e[1].status==="fulfilled"?e[1].value:[]).length,services:c(e[2].status==="fulfilled"?e[2].value:[]).length,ingresses:c(e[3].status==="fulfilled"?e[3].value:[]).length,configmaps:c(e[4].status==="fulfilled"?e[4].value:[]).length,secrets:c(e[5].status==="fulfilled"?e[5].value:[]).length,hpas:c(e[6].status==="fulfilled"?e[6].value:[]).length,cronjobs:c(e[7].status==="fulfilled"?e[7].value:[]).length})}catch{p({})}finally{m(!1)}}},[t,a]);return r.useEffect(()=>{d()},[d]),s.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceOverviewPage.tsx:65:5",className:"space-y-4",children:[s.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceOverviewPage.tsx:67:7",className:"flex items-center gap-2 text-sm text-slate-500",children:[s.jsx(l,{"code-path":"src/components/kubernetes/NamespaceOverviewPage.tsx:68:9",to:"/kubernetes",className:"hover:text-slate-300 transition-colors",children:"集群"}),s.jsx(i,{"code-path":"src/components/kubernetes/NamespaceOverviewPage.tsx:69:9",className:"h-3 w-3"}),s.jsx(l,{"code-path":"src/components/kubernetes/NamespaceOverviewPage.tsx:70:9",to:`/kubernetes/${t}`,className:"hover:text-slate-300 transition-colors",children:t}),s.jsx(i,{"code-path":"src/components/kubernetes/NamespaceOverviewPage.tsx:71:9",className:"h-3 w-3"}),s.jsx("span",{"code-path":"src/components/kubernetes/NamespaceOverviewPage.tsx:72:9",className:"text-slate-300",children:a})]}),s.jsx("div",{"code-path":"src/components/kubernetes/NamespaceOverviewPage.tsx:76:7",className:"flex items-center justify-between",children:s.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceOverviewPage.tsx:77:9",children:[s.jsxs("h1",{"code-path":"src/components/kubernetes/NamespaceOverviewPage.tsx:78:11",className:"text-2xl font-bold text-slate-100 flex items-center gap-2",children:[s.jsx(h,{"code-path":"src/components/kubernetes/NamespaceOverviewPage.tsx:79:13",className:"h-6 w-6 text-blue-400"}),a]}),s.jsx("p",{"code-path":"src/components/kubernetes/NamespaceOverviewPage.tsx:82:11",className:"text-sm text-slate-500 mt-1",children:"命名空间概览"})]})}),s.jsx("div",{"code-path":"src/components/kubernetes/NamespaceOverviewPage.tsx:87:7",className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:j.map(e=>s.jsxs(l,{"code-path":"src/components/kubernetes/NamespaceOverviewPage.tsx:89:11",to:`/kubernetes/${t}/namespace/${a}/${e.type}`,className:"bg-slate-900 border border-slate-800 rounded-lg p-4 hover:border-slate-600 hover:bg-slate-800/50 transition-all group",children:[s.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceOverviewPage.tsx:93:13",className:"flex items-center justify-between mb-2",children:[s.jsx(e.icon,{"code-path":"src/components/kubernetes/NamespaceOverviewPage.tsx:94:15",className:"h-5 w-5 text-slate-500 group-hover:text-blue-400 transition-colors"}),s.jsx(i,{"code-path":"src/components/kubernetes/NamespaceOverviewPage.tsx:95:15",className:"h-4 w-4 text-slate-600 group-hover:text-slate-400 transition-colors"})]}),s.jsx("div",{"code-path":"src/components/kubernetes/NamespaceOverviewPage.tsx:97:13",className:"text-lg font-bold text-slate-100",children:v?"-":x[e.type]??0}),s.jsx("div",{"code-path":"src/components/kubernetes/NamespaceOverviewPage.tsx:98:13",className:"text-sm text-slate-500",children:e.label}),s.jsx("div",{"code-path":"src/components/kubernetes/NamespaceOverviewPage.tsx:99:13",className:"text-xs text-slate-600 mt-1",children:e.desc})]},e.type))})]})}export{S as default}; diff --git a/backend/static/assets/NamespaceResourcePage-Byljvm8v.js b/backend/static/assets/NamespaceResourcePage-CfT-ib9i.js similarity index 96% rename from backend/static/assets/NamespaceResourcePage-Byljvm8v.js rename to backend/static/assets/NamespaceResourcePage-CfT-ib9i.js index 00408d2..b304495 100644 --- a/backend/static/assets/NamespaceResourcePage-Byljvm8v.js +++ b/backend/static/assets/NamespaceResourcePage-CfT-ib9i.js @@ -1,3 +1,3 @@ -import{r as g,G as xe,n as te,N as Q,t as T,j as e,B as i,a5 as he,L as A,I as P,i as be,z as ge,k as Ne,p as O,x as ne,A as le,v as de,m as se,S as ke,F as M,H as ve}from"./index-DfyorCky.js";import{C as Re,a as je}from"./card-C55cvSHg.js";import{B as E}from"./badge-xNW8x0G1.js";import{S as I,a as F,b as H,c as J,d as $}from"./select-D5qUzdAs.js";import{T as Pe,a as ye,b as C,c as fe,d as Ee,e as a}from"./table-5sHV4Akp.js";import{c as re,R as Ve,y as we,o as Ce,Y as Se,P as ze,a as _e}from"./PodFileBrowser-BySN2XGN.js";import{L as _}from"./label-BK0h2apY.js";import{T as $e}from"./textarea-NXY8u32k.js";import{u as ie}from"./use-toast-CrSOP4cJ.js";import{k as f}from"./kubernetes-J8O09fK7.js";import{F as ce}from"./file-text-C9G5abwR.js";import{S as W}from"./save-DoGGjfwC.js";import{P as G}from"./plus-CUG-9kpu.js";import{T as U}from"./trash-2-Dx32pOzT.js";import{R as Me}from"./refresh-cw-DUB_tAG-.js";import{D as oe}from"./download-DoZfYs2h.js";import{P as B}from"./pencil-BqUotcjf.js";import{H as Ye}from"./hard-drive-BbPmnARR.js";import"./index-CWVNW_qu.js";import"./copy-DXW4LnkN.js";import"./sparkles-Bld4NX5y.js";import"./xterm-DSqgeKvr.js";import"./box-TTGA1p57.js";import"./rotate-cw-5qcj_h_q.js";import"./minimize-2-CiCQYRfn.js";import"./arrow-left-BDgGyrD0.js";import"./upload-Ba6rlaGS.js";import"./folder-DoMwqvzv.js";function Te(s){try{return JSON.parse(s)}catch{}try{const t=s.split(` +import{r as g,z as xe,o as te,N as Q,t as T,j as e,B as i,X as he,L as A,k as be,x as ge,m as Ne,q as O,C as ne,A as le,v as de,n as se,F as M,E as ke}from"./index-Dmami9WE.js";import{C as ve,a as Re}from"./card-CIfC-8Rh.js";import{I as P}from"./input-NsU9nXZF.js";import{B as E}from"./badge-3UzCvU7L.js";import{S as I,a as F,b as H,c as J,d as $}from"./select-DUbxjT0z.js";import{T as je,a as Pe,b as C,c as ye,d as fe,e as a}from"./table-CG4mjNfb.js";import{c as re,R as Ee,y as Ve,o as we,Y as Ce,P as Se,a as ze}from"./PodFileBrowser-BLvOIIeH.js";import{L as _}from"./label-Ap_-SPYI.js";import{T as _e}from"./textarea-DHUZ6N85.js";import{u as ie}from"./use-toast-jvSbBx20.js";import{k as f}from"./kubernetes-D2-GnE0t.js";import{F as ce}from"./file-text-CebshSV-.js";import{S as W}from"./save-YtnrpTd8.js";import{P as G}from"./plus-O65gX7Qz.js";import{T as U}from"./trash-2-DWVnIU6o.js";import{R as $e}from"./refresh-cw-CTBERyFc.js";import{D as oe}from"./download-Vuij9wGr.js";import{S as Me}from"./search-Dd-PeBfg.js";import{P as B}from"./pencil-BYahlvYT.js";import{H as Ye}from"./hard-drive-DmC04Y5r.js";import"./index-CtCQcvyh.js";import"./chevron-up-Cq4GPopa.js";import"./copy-CE_T92Lk.js";import"./sparkles-rPZivnlW.js";import"./xterm-DSqgeKvr.js";import"./box-88Ol5qY-.js";import"./rotate-cw-CKCO6IKE.js";import"./minimize-2-BHcbNmdK.js";import"./arrow-left-BIbk9wFC.js";import"./upload-CRLg7Pbj.js";import"./folder-B5RGB3GG.js";function Te(s){try{return JSON.parse(s)}catch{}try{const t=s.split(` `).filter(o=>!o.trim().startsWith("#"));return JSON.parse(t.join(` -`))}catch{return null}}function Ae({clusterCode:s,namespace:t,resource:o,name:d,onClose:r,onSaved:x}){const{toast:v}=ie(),[w,V]=g.useState(!0),[R,m]=g.useState(!1),[u,b]=g.useState(""),[l,h]=g.useState(null),[N,j]=g.useState("visual"),[n,k]=g.useState(""),p=g.useCallback(async()=>{V(!0);try{const S=await f.getResourceYaml(s,t,o,d),L=re(S);b(S),k(L);const ee=Te(L);h(ee),ee||(j("yaml"),v({title:"可视化编辑不可用",description:"无法解析资源结构,已切换到 YAML 编辑模式"}))}catch(S){v({title:"加载失败",description:S.message,variant:"destructive"})}finally{V(!1)}},[s,t,o,d]);g.useEffect(()=>{p()},[p]);const y=async S=>{m(!0);try{const L=q(S);await f.updateResourceYaml(s,t,o,d,L),v({title:"保存成功",description:`${o}/${d} 已更新`}),x?.(),r()}catch(L){v({title:"保存失败",description:L.message,variant:"destructive"})}finally{m(!1)}},Z=async()=>{m(!0);try{await f.updateResourceYaml(s,t,o,d,n),v({title:"YAML 已应用",description:`${o}/${d} 更新成功`}),x?.(),r()}catch(S){v({title:"保存失败",description:S.message,variant:"destructive"})}finally{m(!1)}};function q(S){return JSON.stringify(S,null,2)}const X={configmaps:{title:"ConfigMap",icon:ce,color:"text-blue-400"},secrets:{title:"Secret",icon:T,color:"text-amber-400"},services:{title:"Service",icon:Q,color:"text-cyan-400"},ingresses:{title:"Ingress",icon:te,color:"text-purple-400"},pvcs:{title:"PersistentVolumeClaim",icon:xe,color:"text-emerald-400"}},Y=X[o]||X.configmaps,D=Y.icon;return e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:114:5",className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60",onClick:r,children:e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:115:7",className:"bg-[var(--dg-bg-primary)] border border-[var(--dg-border)] rounded-xl w-[90vw] max-w-3xl max-h-[85vh] flex flex-col shadow-2xl",onClick:S=>S.stopPropagation(),children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:117:9",className:"flex items-center justify-between p-4 border-b border-[var(--dg-border)]",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:118:11",className:"flex items-center gap-2",children:[e.jsx(D,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:119:13",className:`h-5 w-5 ${Y.color}`}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:120:13",children:[e.jsxs("h2",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:121:15",className:"text-lg font-bold text-[var(--dg-text-primary)]",children:[Y.title," 编辑器"]}),e.jsxs("p",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:122:15",className:"text-xs text-[var(--dg-text-muted)]",children:[d," · ",t," · ",s]})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:125:11",className:"flex items-center gap-2",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:127:13",className:"flex rounded-lg border border-[var(--dg-border)] overflow-hidden",children:[e.jsx("button",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:128:15",className:`px-3 py-1.5 text-xs font-medium transition-colors ${N==="visual"?"bg-blue-600 text-white":"bg-transparent text-[var(--dg-text-secondary)] hover:bg-[var(--dg-bg-tertiary)]"}`,onClick:()=>l&&j("visual"),disabled:!l,children:"可视化编辑"}),e.jsx("button",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:133:15",className:`px-3 py-1.5 text-xs font-medium transition-colors ${N==="yaml"?"bg-blue-600 text-white":"bg-transparent text-[var(--dg-text-secondary)] hover:bg-[var(--dg-bg-tertiary)]"}`,onClick:()=>j("yaml"),children:"YAML 编辑"})]}),e.jsx(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:138:13",variant:"ghost",size:"icon",className:"h-8 w-8 text-[var(--dg-text-secondary)]",onClick:r,children:e.jsx(he,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:138:119",className:"h-4 w-4"})})]})]}),e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:143:9",className:"flex-1 overflow-auto p-4",children:w?e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:145:13",className:"flex items-center justify-center h-full py-20",children:e.jsx(A,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:145:76",className:"h-6 w-6 animate-spin text-[var(--dg-text-muted)]"})}):N==="yaml"?e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:147:13",className:"space-y-3",children:[e.jsx("p",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:148:15",className:"text-xs text-amber-400/80",children:"⚠️ YAML 编辑模式 — 修改后点击保存。已自动清理只读字段(status/managedFields/uid)"}),e.jsx(Ve,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:149:15",value:n,height:"550px",theme:Ce,extensions:[we()],onChange:S=>k(S),basicSetup:{lineNumbers:!0,foldGutter:!0,highlightActiveLine:!0,autocompletion:!0},style:{fontSize:"12px"}}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:158:15",className:"flex justify-end gap-2",children:[e.jsx(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:159:17",variant:"outline",size:"sm",onClick:()=>{k(re(u))},children:"重置"}),e.jsxs(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:160:17",size:"sm",className:"bg-blue-600 hover:bg-blue-700",onClick:Z,disabled:R,children:[R?e.jsx(A,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:161:29",className:"h-3.5 w-3.5 animate-spin mr-1"}):e.jsx(W,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:161:85",className:"h-3.5 w-3.5 mr-1"}),"保存"]})]})]}):l?e.jsxs(e.Fragment,{children:[o==="configmaps"&&e.jsx(Le,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:168:45",manifest:l,onSave:y,saving:R}),o==="secrets"&&e.jsx(Oe,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:169:42",manifest:l,onSave:y,saving:R}),o==="services"&&e.jsx(Be,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:170:43",manifest:l,onSave:y,saving:R}),o==="ingresses"&&e.jsx(De,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:171:44",manifest:l,onSave:y,saving:R}),o==="pvcs"&&e.jsx(Ie,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:172:39",manifest:l,onSave:y,saving:R}),!["configmaps","secrets","services","ingresses","pvcs"].includes(o)&&e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:174:17",className:"text-center py-12 text-[var(--dg-text-muted)]",children:[e.jsx("p",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:175:19",children:"该资源类型暂不支持可视化编辑"}),e.jsx(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:176:19",variant:"outline",size:"sm",className:"mt-4",onClick:()=>j("yaml"),children:"切换到 YAML 编辑"})]})]}):e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:181:13",className:"text-center py-12 text-[var(--dg-text-muted)]",children:[e.jsx("p",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:182:15",children:"无法解析资源结构"}),e.jsx(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:183:15",variant:"outline",size:"sm",className:"mt-4",onClick:()=>j("yaml"),children:"切换到 YAML 编辑"})]})})]})})}function Le({manifest:s,onSave:t,saving:o}){const d=s?.data||{},[r,x]=g.useState(Object.entries(d).map(([m,u])=>({key:m,value:String(u)}))),v=(m,u,b)=>{const l=[...r];l[m]={...l[m],[u]:b},x(l)},w=()=>x([...r,{key:"",value:""}]),V=m=>x(r.filter((u,b)=>b!==m)),R=()=>{const m={};r.forEach(u=>{u.key.trim()&&(m[u.key.trim()]=u.value)}),t({...s,data:m})};return e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:219:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:220:7",children:[e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:221:9",className:"text-[var(--dg-text-secondary)] text-xs",children:"名称"}),e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:222:9",value:s?.metadata?.name||"",readOnly:!0,className:"mt-1 font-mono text-xs bg-[var(--dg-bg-tertiary)]"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:224:7",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:225:9",className:"flex items-center justify-between mb-2",children:[e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:226:11",className:"text-[var(--dg-text-secondary)] text-sm",children:"配置数据 (键值对)"}),e.jsxs(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:227:11",variant:"outline",size:"sm",className:"h-7 text-xs",onClick:w,children:[e.jsx(G,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:227:88",className:"h-3 w-3 mr-1"}),"添加"]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:229:9",className:"space-y-2 max-h-[45vh] overflow-y-auto pr-1",children:[r.map((m,u)=>e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:231:13",className:"flex items-start gap-2 p-2 rounded-lg border border-[var(--dg-border)] bg-[var(--dg-bg-secondary)]",children:[e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:232:15",value:m.key,onChange:b=>v(u,"key",b.target.value),placeholder:"键名 (如 LOG_LEVEL)",className:"flex-1 font-mono text-xs h-8 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"}),e.jsx($e,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:238:15",value:m.value,onChange:b=>v(u,"value",b.target.value),placeholder:"值",className:"flex-[2] font-mono text-xs min-h-[36px] max-h-[120px] bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"}),e.jsx(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:244:15",variant:"ghost",size:"icon",className:"h-8 w-8 text-red-400 hover:text-red-300 shrink-0",onClick:()=>V(u),children:e.jsx(U,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:245:17",className:"h-3.5 w-3.5"})})]},u)),r.length===0&&e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:250:13",className:"text-center py-8 text-[var(--dg-text-muted)] text-xs",children:"暂无配置数据,点击「添加」创建"})]})]}),e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:254:7",className:"flex justify-end gap-2 pt-2 border-t border-[var(--dg-border)]",children:e.jsxs(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:255:9",size:"sm",className:"bg-blue-600 hover:bg-blue-700",onClick:R,disabled:o,children:[o?e.jsx(A,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:256:21",className:"h-3.5 w-3.5 animate-spin mr-1"}):e.jsx(W,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:256:77",className:"h-3.5 w-3.5 mr-1"}),"保存配置"]})})]})}function Oe({manifest:s,onSave:t,saving:o}){const d=s?.data||{},[r,x]=g.useState(Object.entries(d).map(([m,u])=>{const b=String(u);try{const l=atob(b);return{key:m,value:l,encoded:!0}}catch{return{key:m,value:b,encoded:!1}}})),v=(m,u,b)=>{const l=[...r];l[m]={...l[m],[u]:b},x(l)},w=()=>x([...r,{key:"",value:"",encoded:!0}]),V=m=>x(r.filter((u,b)=>b!==m)),R=()=>{const m={};r.forEach(u=>{u.key.trim()&&(m[u.key.trim()]=u.encoded?btoa(u.value):u.value)}),t({...s,data:m})};return e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:304:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:305:7",children:[e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:306:9",className:"text-[var(--dg-text-secondary)] text-xs",children:"名称"}),e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:307:9",value:s?.metadata?.name||"",readOnly:!0,className:"mt-1 font-mono text-xs bg-[var(--dg-bg-tertiary)]"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:309:7",children:[e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:310:9",className:"text-[var(--dg-text-secondary)] text-xs",children:"类型"}),e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:311:9",value:s?.type||"Opaque",readOnly:!0,className:"mt-1 font-mono text-xs bg-[var(--dg-bg-tertiary)]"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:313:7",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:314:9",className:"flex items-center justify-between mb-2",children:[e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:315:11",className:"text-[var(--dg-text-secondary)] text-sm",children:"密钥数据 (已自动解码 Base64)"}),e.jsxs(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:316:11",variant:"outline",size:"sm",className:"h-7 text-xs",onClick:w,children:[e.jsx(G,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:316:88",className:"h-3 w-3 mr-1"}),"添加"]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:318:9",className:"space-y-2 max-h-[45vh] overflow-y-auto pr-1",children:[r.map((m,u)=>e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:320:13",className:"flex items-start gap-2 p-2 rounded-lg border border-[var(--dg-border)] bg-[var(--dg-bg-secondary)]",children:[e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:321:15",value:m.key,onChange:b=>v(u,"key",b.target.value),placeholder:"键名 (如 password)",className:"flex-1 font-mono text-xs h-8 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"}),e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:327:15",value:m.value,onChange:b=>v(u,"value",b.target.value),placeholder:"明文值",className:"flex-[2] font-mono text-xs h-8 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"}),e.jsx(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:333:15",variant:"ghost",size:"icon",className:"h-8 w-8 text-red-400 hover:text-red-300 shrink-0",onClick:()=>V(u),children:e.jsx(U,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:334:17",className:"h-3.5 w-3.5"})})]},u)),r.length===0&&e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:339:13",className:"text-center py-8 text-[var(--dg-text-muted)] text-xs",children:"暂无密钥数据,点击「添加」创建"})]})]}),e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:343:7",className:"flex justify-end gap-2 pt-2 border-t border-[var(--dg-border)]",children:e.jsxs(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:344:9",size:"sm",className:"bg-blue-600 hover:bg-blue-700",onClick:R,disabled:o,children:[o?e.jsx(A,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:345:21",className:"h-3.5 w-3.5 animate-spin mr-1"}):e.jsx(W,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:345:77",className:"h-3.5 w-3.5 mr-1"}),"保存密钥"]})})]})}function Be({manifest:s,onSave:t,saving:o}){const d=s?.spec||{},[r,x]=g.useState(d.type||"ClusterIP"),[v,w]=g.useState((d.ports||[]).map(n=>({name:n.name||"",port:String(n.port||""),targetPort:String(n.targetPort||""),protocol:n.protocol||"TCP",nodePort:n.nodePort?String(n.nodePort):""}))),[V,R]=g.useState(Object.entries(d.selector||{}).map(([n,k])=>({key:n,value:String(k)}))),m=(n,k,p)=>{const y=[...v];y[n]={...y[n],[k]:p},w(y)},u=()=>w([...v,{name:"",port:"",targetPort:"",protocol:"TCP",nodePort:""}]),b=n=>w(v.filter((k,p)=>p!==n)),l=(n,k,p)=>{const y=[...V];y[n]={...y[n],[k]:p},R(y)},h=()=>R([...V,{key:"",value:""}]),N=n=>R(V.filter((k,p)=>p!==n)),j=()=>{const n={...d};n.type=r,n.ports=v.map(p=>{const y={port:parseInt(p.port)||80,targetPort:parseInt(p.targetPort)||parseInt(p.port)||80,protocol:p.protocol};return p.name&&(y.name=p.name),p.nodePort&&r==="NodePort"&&(y.nodePort=parseInt(p.nodePort)),y});const k={};V.forEach(p=>{p.key.trim()&&(k[p.key.trim()]=p.value)}),n.selector=k,t({...s,spec:n})};return e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:408:5",className:"space-y-5",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:409:7",className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:410:9",children:[e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:411:11",className:"text-[var(--dg-text-secondary)] text-xs",children:"名称"}),e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:412:11",value:s?.metadata?.name||"",readOnly:!0,className:"mt-1 font-mono text-xs bg-[var(--dg-bg-tertiary)]"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:414:9",children:[e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:415:11",className:"text-[var(--dg-text-secondary)] text-xs",children:"Service 类型"}),e.jsxs(I,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:416:11",value:r,onValueChange:x,children:[e.jsx(F,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:417:13",className:"mt-1 h-8 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] text-xs",children:e.jsx(H,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:418:15"})}),e.jsxs(J,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:420:13",children:[e.jsx($,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:421:15",value:"ClusterIP",children:"ClusterIP (集群内部)"}),e.jsx($,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:422:15",value:"NodePort",children:"NodePort (节点端口)"}),e.jsx($,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:423:15",value:"LoadBalancer",children:"LoadBalancer (负载均衡)"})]})]})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:430:7",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:431:9",className:"flex items-center justify-between mb-2",children:[e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:432:11",className:"text-[var(--dg-text-secondary)] text-sm",children:"端口映射"}),e.jsxs(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:433:11",variant:"outline",size:"sm",className:"h-7 text-xs",onClick:u,children:[e.jsx(G,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:433:89",className:"h-3 w-3 mr-1"}),"添加端口"]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:435:9",className:"space-y-2",children:[v.map((n,k)=>e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:437:13",className:"grid grid-cols-[1fr_80px_80px_80px_80px_32px] gap-2 items-center",children:[e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:438:15",value:n.name,onChange:p=>m(k,"name",p.target.value),placeholder:"名称",className:"font-mono text-xs h-7 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"}),e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:439:15",value:n.port,onChange:p=>m(k,"port",p.target.value),placeholder:"端口",type:"number",className:"font-mono text-xs h-7 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"}),e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:440:15",value:n.targetPort,onChange:p=>m(k,"targetPort",p.target.value),placeholder:"目标",type:"number",className:"font-mono text-xs h-7 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"}),e.jsxs(I,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:441:15",value:n.protocol,onValueChange:p=>m(k,"protocol",p),children:[e.jsx(F,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:442:17",className:"h-7 text-xs bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]",children:e.jsx(H,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:442:139"})}),e.jsxs(J,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:443:17",children:[e.jsx($,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:443:32",value:"TCP",children:"TCP"}),e.jsx($,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:443:72",value:"UDP",children:"UDP"})]})]}),r==="NodePort"?e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:446:17",value:n.nodePort,onChange:p=>m(k,"nodePort",p.target.value),placeholder:"NodePort",type:"number",className:"font-mono text-xs h-7 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"}):e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:447:19"}),e.jsx(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:448:15",variant:"ghost",size:"icon",className:"h-7 w-7 text-red-400 hover:text-red-300",onClick:()=>b(k),children:e.jsx(U,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:448:133",className:"h-3 w-3"})})]},k)),v.length===0&&e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:451:34",className:"text-center py-4 text-[var(--dg-text-muted)] text-xs",children:"暂无端口,点击「添加端口」"})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:456:7",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:457:9",className:"flex items-center justify-between mb-2",children:[e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:458:11",className:"text-[var(--dg-text-secondary)] text-sm",children:"选择器 (Selector)"}),e.jsxs(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:459:11",variant:"outline",size:"sm",className:"h-7 text-xs",onClick:h,children:[e.jsx(G,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:459:93",className:"h-3 w-3 mr-1"}),"添加标签"]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:461:9",className:"space-y-2",children:[V.map((n,k)=>e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:463:13",className:"flex items-center gap-2",children:[e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:464:15",value:n.key,onChange:p=>l(k,"key",p.target.value),placeholder:"键 (如 app)",className:"flex-1 font-mono text-xs h-7 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"}),e.jsx("span",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:465:15",className:"text-[var(--dg-text-muted)] text-xs",children:"="}),e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:466:15",value:n.value,onChange:p=>l(k,"value",p.target.value),placeholder:"值 (如 nginx)",className:"flex-1 font-mono text-xs h-7 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"}),e.jsx(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:467:15",variant:"ghost",size:"icon",className:"h-7 w-7 text-red-400 hover:text-red-300",onClick:()=>N(k),children:e.jsx(U,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:467:137",className:"h-3 w-3"})})]},k)),V.length===0&&e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:470:37",className:"text-center py-4 text-[var(--dg-text-muted)] text-xs",children:"暂无选择器"})]})]}),e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:474:7",className:"flex justify-end gap-2 pt-2 border-t border-[var(--dg-border)]",children:e.jsxs(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:475:9",size:"sm",className:"bg-blue-600 hover:bg-blue-700",onClick:j,disabled:o,children:[o?e.jsx(A,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:476:21",className:"h-3.5 w-3.5 animate-spin mr-1"}):e.jsx(W,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:476:77",className:"h-3.5 w-3.5 mr-1"}),"保存 Service"]})})]})}function De({manifest:s,onSave:t,saving:o}){const d=s?.spec||{},[r,x]=g.useState((d.rules||[]).map(l=>({host:l.host||"",paths:l.http?.backend?.servicePort!=null?[{path:"/",pathType:"Prefix",serviceName:l.http?.backend?.serviceName||"",servicePort:String(l.http?.backend?.servicePort||"80")}]:(l.http?.paths||[]).map(h=>({path:h.path||"/",pathType:h.pathType||"Prefix",serviceName:h.backend?.service?.name||h.backend?.serviceName||"",servicePort:String(h.backend?.service?.port?.number??h.backend?.servicePort??"80")}))}))),v=(l,h)=>{const N=[...r];N[l]={...N[l],host:h},x(N)},w=()=>x([...r,{host:"",paths:[{path:"/",pathType:"Prefix",serviceName:"",servicePort:"80"}]}]),V=l=>x(r.filter((h,N)=>N!==l)),R=(l,h,N,j)=>{const n=[...r];n[l].paths[h]={...n[l].paths[h],[N]:j},x(n)},m=l=>{const h=[...r];h[l].paths.push({path:"/",pathType:"Prefix",serviceName:"",servicePort:"80"}),x(h)},u=(l,h)=>{const N=[...r];N[l].paths=N[l].paths.filter((j,n)=>n!==h),x(N)},b=()=>{const l=r.map(h=>({host:h.host,http:{paths:h.paths.map(N=>({path:N.path,pathType:N.pathType,backend:{service:{name:N.serviceName,port:{number:parseInt(N.servicePort)||80}}}}))}}));t({...s,spec:{...d,rules:l}})};return e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:544:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:545:7",children:[e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:546:9",className:"text-[var(--dg-text-secondary)] text-xs",children:"名称"}),e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:547:9",value:s?.metadata?.name||"",readOnly:!0,className:"mt-1 font-mono text-xs bg-[var(--dg-bg-tertiary)]"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:549:7",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:550:9",className:"flex items-center justify-between mb-2",children:[e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:551:11",className:"text-[var(--dg-text-secondary)] text-sm",children:"路由规则"}),e.jsxs(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:552:11",variant:"outline",size:"sm",className:"h-7 text-xs",onClick:w,children:[e.jsx(G,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:552:89",className:"h-3 w-3 mr-1"}),"添加 Host"]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:554:9",className:"space-y-3 max-h-[50vh] overflow-y-auto pr-1",children:[r.map((l,h)=>e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:556:13",className:"p-3 rounded-lg border border-[var(--dg-border)] bg-[var(--dg-bg-secondary)] space-y-2",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:557:15",className:"flex items-center gap-2",children:[e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:558:17",value:l.host,onChange:N=>v(h,N.target.value),placeholder:"域名 (如 api.example.com)",className:"flex-1 font-mono text-xs h-7 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"}),e.jsx(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:564:17",variant:"ghost",size:"icon",className:"h-7 w-7 text-red-400 hover:text-red-300",onClick:()=>V(h),children:e.jsx(U,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:564:136",className:"h-3 w-3"})})]}),l.paths.map((N,j)=>e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:567:17",className:"grid grid-cols-[1fr_100px_1fr_60px_28px] gap-1.5 items-center pl-4",children:[e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:568:19",value:N.path,onChange:n=>R(h,j,"path",n.target.value),placeholder:"路径 /",className:"font-mono text-xs h-7 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"}),e.jsxs(I,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:569:19",value:N.pathType,onValueChange:n=>R(h,j,"pathType",n),children:[e.jsx(F,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:570:21",className:"h-7 text-xs bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]",children:e.jsx(H,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:570:143"})}),e.jsxs(J,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:571:21",children:[e.jsx($,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:571:36",value:"Prefix",children:"Prefix"}),e.jsx($,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:571:82",value:"Exact",children:"Exact"})]})]}),e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:573:19",value:N.serviceName,onChange:n=>R(h,j,"serviceName",n.target.value),placeholder:"Service",className:"font-mono text-xs h-7 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"}),e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:574:19",value:N.servicePort,onChange:n=>R(h,j,"servicePort",n.target.value),placeholder:"端口",type:"number",className:"font-mono text-xs h-7 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"}),e.jsx(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:575:19",variant:"ghost",size:"icon",className:"h-7 w-7 text-red-400 hover:text-red-300",onClick:()=>u(h,j),children:e.jsx(U,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:575:142",className:"h-3 w-3"})})]},j)),e.jsxs(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:578:15",variant:"ghost",size:"sm",className:"h-6 text-xs text-[var(--dg-text-muted)]",onClick:()=>m(h),children:[e.jsx(G,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:578:129",className:"h-3 w-3 mr-1"}),"添加路径"]})]},h)),r.length===0&&e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:581:34",className:"text-center py-4 text-[var(--dg-text-muted)] text-xs",children:"暂无路由规则,点击「添加 Host」"})]})]}),e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:584:7",className:"flex justify-end gap-2 pt-2 border-t border-[var(--dg-border)]",children:e.jsxs(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:585:9",size:"sm",className:"bg-blue-600 hover:bg-blue-700",onClick:b,disabled:o,children:[o?e.jsx(A,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:586:21",className:"h-3.5 w-3.5 animate-spin mr-1"}):e.jsx(W,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:586:77",className:"h-3.5 w-3.5 mr-1"}),"保存 Ingress"]})})]})}function Ie({manifest:s,onSave:t,saving:o}){const d=s?.spec||{},r=d.resources?.requests||{},[x,v]=g.useState(r.storage||"1Gi"),[w,V]=g.useState(d.accessModes?.[0]||"ReadWriteOnce"),[R,m]=g.useState(d.storageClassName||""),u=()=>{t({...s,spec:{...d,accessModes:[w],storageClassName:R||void 0,resources:{requests:{storage:x}}}})};return e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:617:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:618:7",children:[e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:619:9",className:"text-[var(--dg-text-secondary)] text-xs",children:"名称"}),e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:620:9",value:s?.metadata?.name||"",readOnly:!0,className:"mt-1 font-mono text-xs bg-[var(--dg-bg-tertiary)]"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:622:7",className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:623:9",children:[e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:624:11",className:"text-[var(--dg-text-secondary)] text-xs",children:"存储大小"}),e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:625:11",value:x,onChange:b=>v(b.target.value),placeholder:"如 10Gi",className:"mt-1 font-mono text-xs h-8 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"}),e.jsx("p",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:631:11",className:"text-[10px] text-[var(--dg-text-muted)] mt-1",children:"单位:Gi (GiB), Mi (MiB), Ti (TiB)"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:633:9",children:[e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:634:11",className:"text-[var(--dg-text-secondary)] text-xs",children:"访问模式"}),e.jsxs(I,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:635:11",value:w,onValueChange:V,children:[e.jsx(F,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:636:13",className:"mt-1 h-8 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] text-xs",children:e.jsx(H,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:637:15"})}),e.jsxs(J,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:639:13",children:[e.jsx($,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:640:15",value:"ReadWriteOnce",children:"ReadWriteOnce (单节点读写)"}),e.jsx($,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:641:15",value:"ReadOnlyMany",children:"ReadOnlyMany (多节点只读)"}),e.jsx($,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:642:15",value:"ReadWriteMany",children:"ReadWriteMany (多节点读写)"})]})]})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:647:7",children:[e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:648:9",className:"text-[var(--dg-text-secondary)] text-xs",children:"StorageClass"}),e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:649:9",value:R,onChange:b=>m(b.target.value),placeholder:"留空使用默认 StorageClass",className:"mt-1 font-mono text-xs h-8 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:656:7",className:"flex justify-end gap-2 pt-2 border-t border-[var(--dg-border)]",children:e.jsxs(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:657:9",size:"sm",className:"bg-blue-600 hover:bg-blue-700",onClick:u,disabled:o,children:[o?e.jsx(A,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:658:21",className:"h-3.5 w-3.5 animate-spin mr-1"}):e.jsx(W,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:658:77",className:"h-3.5 w-3.5 mr-1"}),"保存 PVC"]})})]})}const ae={deployments:{title:"Deployments",subtitle:"Deployment 工作负载运行状态",icon:O,columns:["名称","命名空间","副本","镜像","操作"],renderRow:(s,t)=>e.jsxs(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:42:7",className:"border-slate-800 hover:bg-slate-800/30 cursor-pointer",onClick:()=>t.onDetail?.(s),children:[e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:43:9",className:"font-medium text-slate-200",children:s.name}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:44:9",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:44:20",variant:"outline",className:"border-slate-700 text-slate-400",children:s.namespace})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:45:9",children:(()=>{const o=s.ready_replicas||0,d=s.replicas||0,r=d>0?o/d*100:0,x=o===d;return e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:50:15",className:"flex items-center gap-2 min-w-[100px]",children:[e.jsx("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:51:17",className:"flex-1 h-1.5 rounded-full bg-slate-700/50 overflow-hidden",children:e.jsx("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:52:19",className:`h-full rounded-full ${x?"bg-emerald-500":"bg-yellow-500"}`,style:{width:`${r}%`}})}),e.jsxs("span",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:54:17",className:`text-xs ${x?"text-emerald-400":"text-yellow-400"}`,children:[o,"/",d]})]})})()}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:59:9",className:"text-xs text-slate-500 max-w-[200px] truncate",children:s.image||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:60:9",onClick:o=>o.stopPropagation(),children:e.jsx("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:61:11",className:"flex items-center gap-0.5",children:e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:62:13",variant:"ghost",size:"icon",className:"h-7 w-7 text-slate-400 hover:text-blue-400",title:"查看YAML",onClick:()=>t.onYaml?.(s.name),children:e.jsx(M,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:63:53",className:"h-3.5 w-3.5"})})})})]},s.name)},pods:{title:"Pods",subtitle:"Pod 实例运行状态",icon:de,columns:["名称","命名空间","状态","节点","CPU","内存","重启","镜像","操作"],renderRow:(s,t)=>{const o={Running:"bg-emerald-500/20 text-emerald-400 border-emerald-500/30",Pending:"bg-yellow-500/20 text-yellow-400 border-yellow-500/30",Failed:"bg-red-500/20 text-red-400 border-red-500/30"};return e.jsxs(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:75:9",className:"border-slate-800 hover:bg-slate-800/30",children:[e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:76:11",className:"font-medium text-slate-200",children:s.name}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:77:11",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:77:22",variant:"outline",className:"border-slate-700 text-slate-400",children:s.namespace})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:78:11",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:78:22",className:o[s.status]||"bg-slate-500/20 text-slate-400",children:s.status||"Unknown"})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:79:11",className:"text-sm text-slate-400",children:s.node_name||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:80:11",className:"text-sm text-cyan-400",children:s.cpu_usage_m||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:81:11",className:"text-sm text-amber-400",children:s.mem_usage_mi||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:82:11",className:s.restart_count>0?"text-yellow-400":"text-slate-500",children:s.restart_count||0}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:83:11",className:"text-xs text-slate-500 max-w-[200px] truncate",children:s.image||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:84:11",children:e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:85:13",className:"flex items-center gap-1",children:[e.jsxs(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:86:15",variant:"ghost",size:"sm",className:"h-7 px-2 text-xs text-emerald-400 hover:text-emerald-300 hover:bg-emerald-500/10",title:"终端",onClick:()=>t.onTerminal?.(s),children:[e.jsx(ve,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:87:79",className:"h-3.5 w-3.5 mr-1"}),"终端"]}),e.jsxs(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:88:15",variant:"ghost",size:"sm",className:"h-7 px-2 text-xs text-amber-400 hover:text-amber-300 hover:bg-amber-500/10",title:"文件浏览器",onClick:()=>t.onFileBrowser?.(s),children:[e.jsx(Ye,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:89:82",className:"h-3.5 w-3.5 mr-1"}),"文件浏览器"]}),e.jsxs(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:90:15",variant:"ghost",size:"sm",className:"h-7 px-2 text-xs text-blue-400 hover:text-blue-300 hover:bg-blue-500/10",title:"查看YAML",onClick:()=>t.onYaml?.(s.name),children:[e.jsx(M,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:91:55",className:"h-3.5 w-3.5 mr-1"}),"YAML"]})]})})]},s.name)}},services:{title:"Services",subtitle:"Service 网络服务",icon:Q,columns:["名称","命名空间","类型","Cluster IP","端口","操作"],renderRow:(s,t)=>e.jsxs(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:102:7",className:"border-slate-800 hover:bg-slate-800/30",children:[e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:103:9",className:"font-medium text-slate-200",children:s.name}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:104:9",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:104:20",variant:"outline",className:"border-slate-700 text-slate-400",children:s.namespace})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:105:9",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:105:20",className:"bg-blue-500/20 text-blue-400 border-blue-500/30",children:s.type||"-"})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:106:9",className:"text-sm text-slate-400",children:s.cluster_ip||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:107:9",className:"text-sm text-slate-400",children:s.ports||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:108:9",children:e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:109:11",className:"flex items-center gap-0.5",children:[e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:110:13",variant:"ghost",size:"icon",className:"h-7 w-7 text-slate-400 hover:text-blue-400",title:"查看YAML",onClick:()=>t.onYaml?.(s.name),children:e.jsx(M,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:110:157",className:"h-3.5 w-3.5"})}),e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:111:13",variant:"ghost",size:"icon",className:"h-7 w-7 text-emerald-400 hover:text-emerald-300",title:"编辑",onClick:()=>t.onEdit?.(s.name),children:e.jsx(B,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:111:158",className:"h-3.5 w-3.5"})})]})})]},s.name)},ingresses:{title:"Ingresses",subtitle:"Ingress 路由规则",icon:Q,columns:["名称","命名空间","Hosts","TLS","操作"],renderRow:(s,t)=>{const o=s.hosts||[];return e.jsxs(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:123:9",className:"border-slate-800 hover:bg-slate-800/30",children:[e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:124:11",className:"font-medium text-slate-200",children:s.name}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:125:11",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:125:22",variant:"outline",className:"border-slate-700 text-slate-400",children:s.namespace})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:126:11",className:"text-sm text-slate-400 max-w-[250px] truncate",children:o.length>0?o.join(", "):"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:127:11",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:127:22",className:s.tls?"bg-emerald-500/20 text-emerald-400":"bg-slate-500/20 text-slate-400",children:s.tls?"HTTPS":"HTTP"})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:128:11",children:e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:129:13",className:"flex items-center gap-0.5",children:[e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:130:15",variant:"ghost",size:"icon",className:"h-7 w-7 text-slate-400 hover:text-blue-400",title:"查看YAML",onClick:()=>t.onYaml?.(s.name),children:e.jsx(M,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:130:159",className:"h-3.5 w-3.5"})}),e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:131:15",variant:"ghost",size:"icon",className:"h-7 w-7 text-emerald-400 hover:text-emerald-300",title:"编辑",onClick:()=>t.onEdit?.(s.name),children:e.jsx(B,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:131:160",className:"h-3.5 w-3.5"})})]})})]},s.name)}},configmaps:{title:"ConfigMaps",subtitle:"配置字典",icon:ce,columns:["名称","命名空间","键数量","操作"],renderRow:(s,t)=>e.jsxs(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:142:7",className:"border-slate-800 hover:bg-slate-800/30",children:[e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:143:9",className:"font-medium text-slate-200",children:s.name}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:144:9",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:144:20",variant:"outline",className:"border-slate-700 text-slate-400",children:s.namespace})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:145:9",className:"text-sm text-slate-400",children:s.key_count||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:146:9",children:e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:147:11",className:"flex items-center gap-0.5",children:[e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:148:13",variant:"ghost",size:"icon",className:"h-7 w-7 text-slate-400 hover:text-blue-400",title:"查看YAML",onClick:()=>t.onYaml?.(s.name),children:e.jsx(M,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:149:53",className:"h-3.5 w-3.5"})}),e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:150:13",variant:"ghost",size:"icon",className:"h-7 w-7 text-emerald-400 hover:text-emerald-300",title:"编辑",onClick:()=>t.onEdit?.(s.name),children:e.jsx(B,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:151:53",className:"h-3.5 w-3.5"})})]})})]},s.name)},secrets:{title:"Secrets",subtitle:"密钥管理(仅名称与类型)",icon:T,columns:["名称","命名空间","类型","操作"],renderRow:(s,t)=>e.jsxs(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:161:7",className:"border-slate-800 hover:bg-slate-800/30",children:[e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:162:9",className:"font-medium text-slate-200",children:s.name}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:163:9",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:163:20",variant:"outline",className:"border-slate-700 text-slate-400",children:s.namespace})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:164:9",className:"text-sm text-slate-400",children:s.type||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:165:9",children:e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:166:11",className:"flex items-center gap-0.5",children:[e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:167:13",variant:"ghost",size:"icon",className:"h-7 w-7 text-slate-400 hover:text-blue-400",title:"查看YAML",onClick:()=>t.onYaml?.(s.name),children:e.jsx(M,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:168:53",className:"h-3.5 w-3.5"})}),e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:169:13",variant:"ghost",size:"icon",className:"h-7 w-7 text-emerald-400 hover:text-emerald-300",title:"编辑",onClick:()=>t.onEdit?.(s.name),children:e.jsx(B,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:170:53",className:"h-3.5 w-3.5"})})]})})]},s.name)},hpas:{title:"HPAs",subtitle:"水平自动伸缩",icon:le,columns:["名称","命名空间","目标","最小/最大","CPU%","Mem%"],renderRow:(s,t)=>e.jsxs(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:180:7",className:"border-slate-800 hover:bg-slate-800/30",children:[e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:181:9",className:"font-medium text-slate-200",children:s.name}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:182:9",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:182:20",variant:"outline",className:"border-slate-700 text-slate-400",children:s.namespace})}),e.jsxs(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:183:9",className:"text-sm text-slate-400",children:[s.target_kind,"/",s.target_name]}),e.jsxs(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:184:9",className:"text-sm text-slate-400",children:[s.min_replicas,"/",s.max_replicas]}),e.jsxs(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:185:9",className:"text-sm text-slate-400",children:[s.cpu_percent??"-","%"]}),e.jsxs(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:186:9",className:"text-sm text-slate-400",children:[s.mem_percent??"-","%"]})]},s.name)},cronjobs:{title:"CronJobs",subtitle:"定时任务",icon:ne,columns:["名称","命名空间","调度","状态","上次执行"],renderRow:s=>e.jsxs(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:194:7",className:"border-slate-800 hover:bg-slate-800/30",children:[e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:195:9",className:"font-medium text-slate-200",children:s.name}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:196:9",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:196:20",variant:"outline",className:"border-slate-700 text-slate-400",children:s.namespace})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:197:9",className:"text-sm font-mono text-slate-400",children:s.schedule||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:198:9",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:198:20",className:s.suspend?"bg-yellow-500/20 text-yellow-400":"bg-emerald-500/20 text-emerald-400",children:s.suspend?"已暂停":"运行中"})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:199:9",className:"text-sm text-slate-400",children:s.last_schedule||"-"})]},s.name)},pvcs:{title:"存储卷声明",subtitle:"PersistentVolumeClaim",icon:O,columns:["名称","命名空间","状态","大小","StorageClass","操作"],renderRow:(s,t)=>e.jsxs(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:207:7",className:"border-slate-800 hover:bg-slate-800/30",children:[e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:208:9",className:"font-medium text-slate-200",children:s.name}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:209:9",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:209:20",variant:"outline",className:"border-slate-700 text-slate-400",children:s.namespace})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:210:9",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:210:20",className:s.phase==="Bound"?"bg-emerald-500/20 text-emerald-400":"bg-yellow-500/20 text-yellow-400",children:s.phase||"-"})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:211:9",className:"text-sm text-slate-400",children:s.size||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:212:9",className:"text-sm text-slate-400",children:s.storage_class||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:213:9",children:e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:214:11",className:"flex items-center gap-0.5",children:[e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:215:13",variant:"ghost",size:"icon",className:"h-7 w-7 text-slate-400 hover:text-blue-400",title:"查看YAML",onClick:()=>t.onYaml?.(s.name),children:e.jsx(M,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:215:157",className:"h-3.5 w-3.5"})}),e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:216:13",variant:"ghost",size:"icon",className:"h-7 w-7 text-emerald-400 hover:text-emerald-300",title:"编辑",onClick:()=>t.onEdit?.(s.name),children:e.jsx(B,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:216:158",className:"h-3.5 w-3.5"})})]})})]},s.name)},statefulsets:{title:"StatefulSets",subtitle:"有状态应用",icon:O,columns:["名称","命名空间","副本","就绪","镜像"],renderRow:(s,t)=>e.jsxs(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:226:7",className:"border-slate-800 hover:bg-slate-800/30 cursor-pointer",onClick:()=>t.onDetail?.(s),children:[e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:227:9",className:"font-medium text-slate-200",children:s.name}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:228:9",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:228:20",variant:"outline",className:"border-slate-700 text-slate-400",children:s.namespace})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:229:9",className:"text-sm text-slate-400",children:s.replicas||0}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:230:9",className:"text-sm text-slate-400",children:s.ready||0}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:231:9",className:"text-xs text-slate-500 max-w-[200px] truncate",children:s.image||"-"})]},s.name)},daemonsets:{title:"DaemonSets",subtitle:"守护进程集",icon:O,columns:["名称","命名空间","期望","当前","就绪","镜像"],renderRow:(s,t)=>e.jsxs(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:239:7",className:"border-slate-800 hover:bg-slate-800/30 cursor-pointer",onClick:()=>t.onDetail?.(s),children:[e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:240:9",className:"font-medium text-slate-200",children:s.name}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:241:9",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:241:20",variant:"outline",className:"border-slate-700 text-slate-400",children:s.namespace})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:242:9",className:"text-sm text-slate-400",children:s.desired||0}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:243:9",className:"text-sm text-slate-400",children:s.current||0}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:244:9",className:"text-sm text-slate-400",children:s.ready||0}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:245:9",className:"text-xs text-slate-500 max-w-[200px] truncate",children:s.image||"-"})]},s.name)},serviceaccounts:{title:"ServiceAccounts",subtitle:"服务账号(RBAC 身份标识)",icon:T,columns:["名称","命名空间","Secret数","镜像拉取凭证","创建时间","操作"],renderRow:(s,t)=>e.jsxs(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:253:7",className:"border-slate-800 hover:bg-slate-800/30",children:[e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:254:9",className:"font-medium text-slate-200",children:s.name}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:255:9",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:255:20",variant:"outline",className:"border-slate-700 text-slate-400",children:s.namespace})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:256:9",className:"text-sm text-slate-400",children:s.secret_count??0}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:257:9",className:"text-xs text-slate-500 max-w-[200px] truncate",children:s.image_pull_secrets&&s.image_pull_secrets.length>0?s.image_pull_secrets.join(", "):"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:260:9",className:"text-xs text-slate-500",children:s.age||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:261:9",onClick:o=>o.stopPropagation(),children:e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:262:11",variant:"ghost",size:"icon",className:"h-7 w-7 text-slate-400 hover:text-blue-400",title:"查看YAML",onClick:()=>t.onYaml?.(s.name),children:e.jsx(M,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:263:52",className:"h-3.5 w-3.5"})})})]},s.name)},roles:{title:"Roles",subtitle:"命名空间级角色权限(RBAC)",icon:T,columns:["名称","命名空间","规则数","权限范围","创建时间","操作"],renderRow:(s,t)=>{const o=s.verbs||[],d=s.resources||[],r=o.length>4?o.slice(0,4).join(", ")+` +${o.length-4}`:o.join(", "),x=d.length>4?d.slice(0,4).join(", ")+` +${d.length-4}`:d.join(", ");return e.jsxs(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:277:9",className:"border-slate-800 hover:bg-slate-800/30",children:[e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:278:11",className:"font-medium text-slate-200",children:s.name}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:279:11",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:279:22",variant:"outline",className:"border-slate-700 text-slate-400",children:s.namespace})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:280:11",className:"text-sm text-slate-400",children:s.rule_count??0}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:281:11",className:"text-xs text-slate-500 max-w-[280px]",children:e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:282:13",className:"flex flex-col gap-0.5",children:[e.jsxs("span",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:283:15",className:"text-cyan-400 truncate",title:o.join(", "),children:["verbs: ",r||"-"]}),e.jsxs("span",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:284:15",className:"text-amber-400 truncate",title:d.join(", "),children:["resources: ",x||"-"]})]})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:287:11",className:"text-xs text-slate-500",children:s.age||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:288:11",onClick:v=>v.stopPropagation(),children:e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:289:13",className:"flex items-center gap-0.5",children:[e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:290:15",variant:"ghost",size:"icon",className:"h-7 w-7 text-slate-400 hover:text-blue-400",title:"查看YAML",onClick:()=>t.onYaml?.(s.name),children:e.jsx(M,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:291:55",className:"h-3.5 w-3.5"})}),e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:292:15",variant:"ghost",size:"icon",className:"h-7 w-7 text-emerald-400 hover:text-emerald-300",title:"编辑",onClick:()=>t.onEdit?.(s.name),children:e.jsx(B,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:293:55",className:"h-3.5 w-3.5"})})]})})]},s.name)}},rolebindings:{title:"RoleBindings",subtitle:"角色绑定关系(RBAC 授权)",icon:T,columns:["名称","命名空间","角色引用","绑定主体","创建时间","操作"],renderRow:(s,t)=>{const o=s.subjects||[],d=o.length>3?o.slice(0,3).join(", ")+` +${o.length-3}`:o.join(", ");return e.jsxs(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:307:9",className:"border-slate-800 hover:bg-slate-800/30",children:[e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:308:11",className:"font-medium text-slate-200",children:s.name}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:309:11",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:309:22",variant:"outline",className:"border-slate-700 text-slate-400",children:s.namespace})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:310:11",children:e.jsxs(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:311:13",className:"bg-purple-500/20 text-purple-400 border-purple-500/30",children:[s.role_ref_kind||"-","/",s.role_ref_name||"-"]})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:315:11",className:"text-xs text-slate-500 max-w-[200px] truncate",title:o.join(", "),children:d||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:318:11",className:"text-xs text-slate-500",children:s.age||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:319:11",onClick:r=>r.stopPropagation(),children:e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:320:13",className:"flex items-center gap-0.5",children:[e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:321:15",variant:"ghost",size:"icon",className:"h-7 w-7 text-slate-400 hover:text-blue-400",title:"查看YAML",onClick:()=>t.onYaml?.(s.name),children:e.jsx(M,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:322:56",className:"h-3.5 w-3.5"})}),e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:323:15",variant:"ghost",size:"icon",className:"h-7 w-7 text-emerald-400 hover:text-emerald-300",title:"编辑",onClick:()=>t.onEdit?.(s.name),children:e.jsx(B,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:324:56",className:"h-3.5 w-3.5"})})]})})]},s.name)}}};function gs(){const{clusterCode:s,namespace:t}=be(),o=ge(),d=Ne();ie();const r=g.useMemo(()=>{const c=o.pathname.split("/"),z=c[c.length-1];if(z&&ae[z])return z;if(c.length>=2){const K=c[c.length-2];if(K&&ae[K])return K}return"deployments"},[o.pathname]),x=ae[r],[v,w]=g.useState([]),[V,R]=g.useState([]),[m,u]=g.useState([]),[b,l]=g.useState(!1),[h,N]=g.useState(""),[j,n]=g.useState(null),[k,p]=g.useState(null),[y,Z]=g.useState(null),[q,X]=g.useState(null);g.useEffect(()=>{f.getClusters().then(c=>{const z=c?.list||[];if(w(z),!s&&z.length>0){const K=z[0].code||String(z[0].id);d(`/kubernetes/${K}/namespace/${t||"default"}/${r}`,{replace:!0})}}).catch(()=>w([]))},[]),g.useEffect(()=>{s&&f.getNamespaces(s).then(c=>{const z=Array.isArray(c)?c:c?.list||c?.data||[];R(z),!t&&z.length>0&&d(`/kubernetes/${s}/namespace/${z[0]}/${r}`,{replace:!0})}).catch(()=>R([]))},[s]);const Y=g.useCallback(async()=>{if(!(!s||!t)){l(!0);try{let c=[];switch(r){case"deployments":c=await f.getNamespaceDeployments(s,t).catch(()=>[]);break;case"pods":c=await f.getNamespacePods(s,t).catch(()=>[]);break;case"services":c=await f.getNamespaceServices(s,t).catch(()=>[]);break;case"ingresses":c=await f.getNamespaceIngresses(s,t).catch(()=>[]);break;case"configmaps":c=await f.getNamespaceConfigMaps(s,t).catch(()=>[]);break;case"secrets":c=await f.getNamespaceSecrets(s,t).catch(()=>[]);break;case"hpas":c=await f.getHPAs(s,t).catch(()=>[]);break;case"cronjobs":c=await f.getCronJobs(s,t).catch(()=>[]);break;case"pvcs":c=await f.getPVCs(s,t).catch(()=>[]);break;case"statefulsets":c=await f.getStatefulSets(s,t).catch(()=>[]);break;case"daemonsets":c=await f.getDaemonSets(s,t).catch(()=>[]);break;case"serviceaccounts":c=await f.getServiceAccounts(s,t).catch(()=>[]);break;case"roles":c=await f.getRoles(s,t).catch(()=>[]);break;case"rolebindings":c=await f.getRoleBindings(s,t).catch(()=>[]);break}u(Array.isArray(c)?c:c?.list||c?.data||[])}catch{u([])}finally{l(!1)}}},[s,t,r]);g.useEffect(()=>{Y()},[Y]);const D=m.filter(c=>(c.name||"").toLowerCase().includes(h.toLowerCase())),S=c=>{r==="deployments"?d(`/kubernetes/${s}/namespace/${t}/workload/view/Deployment/${c.name}`):r==="statefulsets"?d(`/kubernetes/${s}/namespace/${t}/workload/view/StatefulSet/${c.name}`):r==="daemonsets"&&d(`/kubernetes/${s}/namespace/${t}/workload/view/DaemonSet/${c.name}`)},L=c=>n({resource:r,name:c}),ee=c=>{["configmaps","secrets","services","ingresses","pvcs"].includes(r)?p({resource:r,name:c}):n({resource:r,name:c,editMode:!0})},me=()=>f.exportAsCSV(`${r}-${s}-${t}.csv`,D),ue=()=>f.exportAsJSON(`${r}-${s}-${t}.json`,D),pe=g.useMemo(()=>[{type:"deployments",label:"Deployments",icon:O},{type:"statefulsets",label:"StatefulSets",icon:O},{type:"daemonsets",label:"DaemonSets",icon:O},{type:"pods",label:"Pods",icon:de},{type:"cronjobs",label:"CronJobs",icon:ne},{type:"services",label:"Services",icon:Q},{type:"ingresses",label:"Ingresses",icon:Q},{type:"configmaps",label:"ConfigMaps",icon:ce},{type:"secrets",label:"Secrets",icon:T},{type:"hpas",label:"HPAs",icon:le},{type:"pvcs",label:"存储卷",icon:O},{type:"serviceaccounts",label:"ServiceAccounts",icon:T},{type:"roles",label:"Roles",icon:T},{type:"rolebindings",label:"RoleBindings",icon:T}],[]);return x?e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:454:5",className:"space-y-4",children:[j&&e.jsx(Se,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:456:9",clusterCode:s||"",namespace:t||"",resource:j.resource,name:j.name,onClose:()=>n(null),onSaved:Y,cleanBeforeEdit:!0,autoEdit:j.editMode===!0}),k&&e.jsx(Ae,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:468:9",clusterCode:s||"",namespace:t||"",resource:k.resource,name:k.name,onClose:()=>p(null),onSaved:Y}),e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:477:7",className:"flex items-center gap-2 text-sm text-slate-500",children:[e.jsx(se,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:478:9",to:"/kubernetes",className:"hover:text-slate-300 transition-colors",children:"集群"}),s&&e.jsxs(e.Fragment,{children:[e.jsx(te,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:479:27",className:"h-3 w-3"}),e.jsx(se,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:479:63",to:`/kubernetes/${s}`,className:"hover:text-slate-300 transition-colors",children:s})]}),t&&e.jsxs(e.Fragment,{children:[e.jsx(te,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:480:25",className:"h-3 w-3"}),e.jsx(se,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:480:61",to:`/kubernetes/${s}/namespace/${t}`,className:"hover:text-slate-300 transition-colors",children:t})]}),e.jsx(te,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:481:9",className:"h-3 w-3"}),e.jsx("span",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:481:45",className:"text-slate-300",children:x.title})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:483:7",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:484:9",children:[e.jsx("h1",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:485:11",className:"text-2xl font-bold text-slate-100",children:x.title}),e.jsx("p",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:486:11",className:"text-sm text-slate-500 mt-1",children:x.subtitle})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:488:9",className:"flex items-center gap-2",children:[e.jsxs(I,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:489:11",value:s||"",onValueChange:c=>d(`/kubernetes/${c}/namespace/${t||"default"}/${r}`),children:[e.jsx(F,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:490:13",className:"w-48 h-9 bg-slate-800/50 border-slate-700 text-slate-200",children:e.jsx(H,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:490:97",placeholder:"选择集群"})}),e.jsx(J,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:491:13",className:"bg-slate-800 border-slate-700",children:v.map(c=>e.jsx($,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:491:91",value:c.code||String(c.id),children:c.name},c.id))})]}),e.jsxs(I,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:493:11",value:t||"",onValueChange:c=>d(`/kubernetes/${s}/namespace/${c}/${r}`),children:[e.jsx(F,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:494:13",className:"w-40 h-9 bg-slate-800/50 border-slate-700 text-slate-200",children:e.jsx(H,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:494:97",placeholder:"命名空间"})}),e.jsx(J,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:495:13",className:"bg-slate-800 border-slate-700 max-h-[300px]",children:V.map(c=>e.jsx($,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:495:108",value:c,children:c},c))})]}),e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:497:11",variant:"outline",size:"icon",className:"h-9 w-9 border-slate-700 text-slate-400",onClick:Y,disabled:b,children:b?e.jsx(A,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:498:24",className:"h-4 w-4 animate-spin"}):e.jsx(Me,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:498:71",className:"h-4 w-4"})}),e.jsxs(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:500:11",variant:"outline",size:"sm",className:"h-9 border-slate-700 text-slate-400 text-xs",onClick:me,title:"导出CSV",children:[e.jsx(oe,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:501:13",className:"h-3 w-3 mr-1"}),"CSV"]}),e.jsxs(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:503:11",variant:"outline",size:"sm",className:"h-9 border-slate-700 text-slate-400 text-xs",onClick:ue,title:"导出JSON",children:[e.jsx(oe,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:504:13",className:"h-3 w-3 mr-1"}),"JSON"]})]})]}),e.jsx("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:508:7",className:"flex items-center gap-1 bg-slate-900/50 border border-slate-800 rounded-lg p-1 overflow-x-auto",children:pe.map(c=>e.jsxs(se,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:510:11",to:`/kubernetes/${s}/namespace/${t}/${c.type}`,className:`flex items-center gap-1.5 px-3 py-1.5 text-xs rounded-md transition-colors whitespace-nowrap ${c.type===r?"bg-blue-600/20 text-blue-400":"text-slate-400 hover:text-slate-200 hover:bg-slate-800/50"}`,children:[e.jsx(c.icon,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:512:13",className:"h-3 w-3"}),c.label]},c.type))}),e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:516:7",className:"relative w-56",children:[e.jsx(ke,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:517:9",className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-slate-500"}),e.jsx(P,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:518:9",placeholder:"搜索...",value:h,onChange:c=>N(c.target.value),className:"pl-9 h-9 bg-slate-800/50 border-slate-700 text-slate-200"})]}),e.jsx(Re,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:520:7",className:"bg-slate-900 border-slate-800",children:e.jsx(je,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:521:9",className:"p-0",children:e.jsxs(Pe,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:522:11",children:[e.jsx(ye,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:523:13",children:e.jsx(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:523:26",className:"border-slate-800 hover:bg-transparent",children:x.columns.map(c=>e.jsx(fe,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:523:115",className:"text-slate-400",children:c},c))})}),e.jsx(Ee,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:524:13",children:b?e.jsx(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:526:17",children:e.jsxs(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:526:27",colSpan:x.columns.length,className:"text-center text-slate-500 py-12",children:[e.jsx(A,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:526:115",className:"h-5 w-5 animate-spin mx-auto mb-2"}),"加载中..."]})}):D.length===0?e.jsx(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:528:17",children:e.jsxs(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:528:27",colSpan:x.columns.length,className:"text-center text-slate-500 py-12",children:[e.jsx(x.icon,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:528:115",className:"h-8 w-8 mx-auto mb-2 opacity-50"}),"暂无 ",x.title]})}):D.map(c=>x.renderRow(c,{clusterCode:s||"",namespace:t||"",onDetail:S,onYaml:L,onEdit:ee,onTerminal:z=>Z(z),onFileBrowser:z=>X(z)}))})]})})}),e.jsx(ze,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:538:7",open:!!y,onOpenChange:c=>{c||Z(null)},clusterId:v[0]?.id||v[0]?.code||s||"",namespace:t||"",podName:y?.name||"",containers:(y?.containers||[]).map(c=>c.name).filter(Boolean)}),e.jsx(_e,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:547:7",open:!!q,onOpenChange:c=>{c||X(null)},clusterCode:s||"",namespace:t||"",podName:q?.name||"",containers:(q?.containers||[]).map(c=>c.name).filter(Boolean)})]}):e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:451:23",className:"text-slate-400 p-8 text-center",children:["未知资源类型: ",r]})}export{gs as default}; +`))}catch{return null}}function Ae({clusterCode:s,namespace:t,resource:o,name:d,onClose:r,onSaved:x}){const{toast:v}=ie(),[w,V]=g.useState(!0),[R,m]=g.useState(!1),[u,b]=g.useState(""),[l,h]=g.useState(null),[N,j]=g.useState("visual"),[n,k]=g.useState(""),p=g.useCallback(async()=>{V(!0);try{const S=await f.getResourceYaml(s,t,o,d),L=re(S);b(S),k(L);const ee=Te(L);h(ee),ee||(j("yaml"),v({title:"可视化编辑不可用",description:"无法解析资源结构,已切换到 YAML 编辑模式"}))}catch(S){v({title:"加载失败",description:S.message,variant:"destructive"})}finally{V(!1)}},[s,t,o,d]);g.useEffect(()=>{p()},[p]);const y=async S=>{m(!0);try{const L=q(S);await f.updateResourceYaml(s,t,o,d,L),v({title:"保存成功",description:`${o}/${d} 已更新`}),x?.(),r()}catch(L){v({title:"保存失败",description:L.message,variant:"destructive"})}finally{m(!1)}},Z=async()=>{m(!0);try{await f.updateResourceYaml(s,t,o,d,n),v({title:"YAML 已应用",description:`${o}/${d} 更新成功`}),x?.(),r()}catch(S){v({title:"保存失败",description:S.message,variant:"destructive"})}finally{m(!1)}};function q(S){return JSON.stringify(S,null,2)}const X={configmaps:{title:"ConfigMap",icon:ce,color:"text-blue-400"},secrets:{title:"Secret",icon:T,color:"text-amber-400"},services:{title:"Service",icon:Q,color:"text-cyan-400"},ingresses:{title:"Ingress",icon:te,color:"text-purple-400"},pvcs:{title:"PersistentVolumeClaim",icon:xe,color:"text-emerald-400"}},Y=X[o]||X.configmaps,D=Y.icon;return e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:114:5",className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60",onClick:r,children:e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:115:7",className:"bg-[var(--dg-bg-primary)] border border-[var(--dg-border)] rounded-xl w-[90vw] max-w-3xl max-h-[85vh] flex flex-col shadow-2xl",onClick:S=>S.stopPropagation(),children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:117:9",className:"flex items-center justify-between p-4 border-b border-[var(--dg-border)]",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:118:11",className:"flex items-center gap-2",children:[e.jsx(D,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:119:13",className:`h-5 w-5 ${Y.color}`}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:120:13",children:[e.jsxs("h2",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:121:15",className:"text-lg font-bold text-[var(--dg-text-primary)]",children:[Y.title," 编辑器"]}),e.jsxs("p",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:122:15",className:"text-xs text-[var(--dg-text-muted)]",children:[d," · ",t," · ",s]})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:125:11",className:"flex items-center gap-2",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:127:13",className:"flex rounded-lg border border-[var(--dg-border)] overflow-hidden",children:[e.jsx("button",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:128:15",className:`px-3 py-1.5 text-xs font-medium transition-colors ${N==="visual"?"bg-blue-600 text-white":"bg-transparent text-[var(--dg-text-secondary)] hover:bg-[var(--dg-bg-tertiary)]"}`,onClick:()=>l&&j("visual"),disabled:!l,children:"可视化编辑"}),e.jsx("button",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:133:15",className:`px-3 py-1.5 text-xs font-medium transition-colors ${N==="yaml"?"bg-blue-600 text-white":"bg-transparent text-[var(--dg-text-secondary)] hover:bg-[var(--dg-bg-tertiary)]"}`,onClick:()=>j("yaml"),children:"YAML 编辑"})]}),e.jsx(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:138:13",variant:"ghost",size:"icon",className:"h-8 w-8 text-[var(--dg-text-secondary)]",onClick:r,children:e.jsx(he,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:138:119",className:"h-4 w-4"})})]})]}),e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:143:9",className:"flex-1 overflow-auto p-4",children:w?e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:145:13",className:"flex items-center justify-center h-full py-20",children:e.jsx(A,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:145:76",className:"h-6 w-6 animate-spin text-[var(--dg-text-muted)]"})}):N==="yaml"?e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:147:13",className:"space-y-3",children:[e.jsx("p",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:148:15",className:"text-xs text-amber-400/80",children:"⚠️ YAML 编辑模式 — 修改后点击保存。已自动清理只读字段(status/managedFields/uid)"}),e.jsx(Ee,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:149:15",value:n,height:"550px",theme:we,extensions:[Ve()],onChange:S=>k(S),basicSetup:{lineNumbers:!0,foldGutter:!0,highlightActiveLine:!0,autocompletion:!0},style:{fontSize:"12px"}}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:158:15",className:"flex justify-end gap-2",children:[e.jsx(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:159:17",variant:"outline",size:"sm",onClick:()=>{k(re(u))},children:"重置"}),e.jsxs(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:160:17",size:"sm",className:"bg-blue-600 hover:bg-blue-700",onClick:Z,disabled:R,children:[R?e.jsx(A,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:161:29",className:"h-3.5 w-3.5 animate-spin mr-1"}):e.jsx(W,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:161:85",className:"h-3.5 w-3.5 mr-1"}),"保存"]})]})]}):l?e.jsxs(e.Fragment,{children:[o==="configmaps"&&e.jsx(Le,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:168:45",manifest:l,onSave:y,saving:R}),o==="secrets"&&e.jsx(Oe,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:169:42",manifest:l,onSave:y,saving:R}),o==="services"&&e.jsx(Be,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:170:43",manifest:l,onSave:y,saving:R}),o==="ingresses"&&e.jsx(De,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:171:44",manifest:l,onSave:y,saving:R}),o==="pvcs"&&e.jsx(Ie,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:172:39",manifest:l,onSave:y,saving:R}),!["configmaps","secrets","services","ingresses","pvcs"].includes(o)&&e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:174:17",className:"text-center py-12 text-[var(--dg-text-muted)]",children:[e.jsx("p",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:175:19",children:"该资源类型暂不支持可视化编辑"}),e.jsx(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:176:19",variant:"outline",size:"sm",className:"mt-4",onClick:()=>j("yaml"),children:"切换到 YAML 编辑"})]})]}):e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:181:13",className:"text-center py-12 text-[var(--dg-text-muted)]",children:[e.jsx("p",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:182:15",children:"无法解析资源结构"}),e.jsx(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:183:15",variant:"outline",size:"sm",className:"mt-4",onClick:()=>j("yaml"),children:"切换到 YAML 编辑"})]})})]})})}function Le({manifest:s,onSave:t,saving:o}){const d=s?.data||{},[r,x]=g.useState(Object.entries(d).map(([m,u])=>({key:m,value:String(u)}))),v=(m,u,b)=>{const l=[...r];l[m]={...l[m],[u]:b},x(l)},w=()=>x([...r,{key:"",value:""}]),V=m=>x(r.filter((u,b)=>b!==m)),R=()=>{const m={};r.forEach(u=>{u.key.trim()&&(m[u.key.trim()]=u.value)}),t({...s,data:m})};return e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:219:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:220:7",children:[e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:221:9",className:"text-[var(--dg-text-secondary)] text-xs",children:"名称"}),e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:222:9",value:s?.metadata?.name||"",readOnly:!0,className:"mt-1 font-mono text-xs bg-[var(--dg-bg-tertiary)]"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:224:7",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:225:9",className:"flex items-center justify-between mb-2",children:[e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:226:11",className:"text-[var(--dg-text-secondary)] text-sm",children:"配置数据 (键值对)"}),e.jsxs(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:227:11",variant:"outline",size:"sm",className:"h-7 text-xs",onClick:w,children:[e.jsx(G,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:227:88",className:"h-3 w-3 mr-1"}),"添加"]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:229:9",className:"space-y-2 max-h-[45vh] overflow-y-auto pr-1",children:[r.map((m,u)=>e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:231:13",className:"flex items-start gap-2 p-2 rounded-lg border border-[var(--dg-border)] bg-[var(--dg-bg-secondary)]",children:[e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:232:15",value:m.key,onChange:b=>v(u,"key",b.target.value),placeholder:"键名 (如 LOG_LEVEL)",className:"flex-1 font-mono text-xs h-8 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"}),e.jsx(_e,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:238:15",value:m.value,onChange:b=>v(u,"value",b.target.value),placeholder:"值",className:"flex-[2] font-mono text-xs min-h-[36px] max-h-[120px] bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"}),e.jsx(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:244:15",variant:"ghost",size:"icon",className:"h-8 w-8 text-red-400 hover:text-red-300 shrink-0",onClick:()=>V(u),children:e.jsx(U,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:245:17",className:"h-3.5 w-3.5"})})]},u)),r.length===0&&e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:250:13",className:"text-center py-8 text-[var(--dg-text-muted)] text-xs",children:"暂无配置数据,点击「添加」创建"})]})]}),e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:254:7",className:"flex justify-end gap-2 pt-2 border-t border-[var(--dg-border)]",children:e.jsxs(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:255:9",size:"sm",className:"bg-blue-600 hover:bg-blue-700",onClick:R,disabled:o,children:[o?e.jsx(A,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:256:21",className:"h-3.5 w-3.5 animate-spin mr-1"}):e.jsx(W,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:256:77",className:"h-3.5 w-3.5 mr-1"}),"保存配置"]})})]})}function Oe({manifest:s,onSave:t,saving:o}){const d=s?.data||{},[r,x]=g.useState(Object.entries(d).map(([m,u])=>{const b=String(u);try{const l=atob(b);return{key:m,value:l,encoded:!0}}catch{return{key:m,value:b,encoded:!1}}})),v=(m,u,b)=>{const l=[...r];l[m]={...l[m],[u]:b},x(l)},w=()=>x([...r,{key:"",value:"",encoded:!0}]),V=m=>x(r.filter((u,b)=>b!==m)),R=()=>{const m={};r.forEach(u=>{u.key.trim()&&(m[u.key.trim()]=u.encoded?btoa(u.value):u.value)}),t({...s,data:m})};return e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:304:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:305:7",children:[e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:306:9",className:"text-[var(--dg-text-secondary)] text-xs",children:"名称"}),e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:307:9",value:s?.metadata?.name||"",readOnly:!0,className:"mt-1 font-mono text-xs bg-[var(--dg-bg-tertiary)]"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:309:7",children:[e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:310:9",className:"text-[var(--dg-text-secondary)] text-xs",children:"类型"}),e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:311:9",value:s?.type||"Opaque",readOnly:!0,className:"mt-1 font-mono text-xs bg-[var(--dg-bg-tertiary)]"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:313:7",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:314:9",className:"flex items-center justify-between mb-2",children:[e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:315:11",className:"text-[var(--dg-text-secondary)] text-sm",children:"密钥数据 (已自动解码 Base64)"}),e.jsxs(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:316:11",variant:"outline",size:"sm",className:"h-7 text-xs",onClick:w,children:[e.jsx(G,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:316:88",className:"h-3 w-3 mr-1"}),"添加"]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:318:9",className:"space-y-2 max-h-[45vh] overflow-y-auto pr-1",children:[r.map((m,u)=>e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:320:13",className:"flex items-start gap-2 p-2 rounded-lg border border-[var(--dg-border)] bg-[var(--dg-bg-secondary)]",children:[e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:321:15",value:m.key,onChange:b=>v(u,"key",b.target.value),placeholder:"键名 (如 password)",className:"flex-1 font-mono text-xs h-8 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"}),e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:327:15",value:m.value,onChange:b=>v(u,"value",b.target.value),placeholder:"明文值",className:"flex-[2] font-mono text-xs h-8 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"}),e.jsx(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:333:15",variant:"ghost",size:"icon",className:"h-8 w-8 text-red-400 hover:text-red-300 shrink-0",onClick:()=>V(u),children:e.jsx(U,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:334:17",className:"h-3.5 w-3.5"})})]},u)),r.length===0&&e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:339:13",className:"text-center py-8 text-[var(--dg-text-muted)] text-xs",children:"暂无密钥数据,点击「添加」创建"})]})]}),e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:343:7",className:"flex justify-end gap-2 pt-2 border-t border-[var(--dg-border)]",children:e.jsxs(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:344:9",size:"sm",className:"bg-blue-600 hover:bg-blue-700",onClick:R,disabled:o,children:[o?e.jsx(A,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:345:21",className:"h-3.5 w-3.5 animate-spin mr-1"}):e.jsx(W,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:345:77",className:"h-3.5 w-3.5 mr-1"}),"保存密钥"]})})]})}function Be({manifest:s,onSave:t,saving:o}){const d=s?.spec||{},[r,x]=g.useState(d.type||"ClusterIP"),[v,w]=g.useState((d.ports||[]).map(n=>({name:n.name||"",port:String(n.port||""),targetPort:String(n.targetPort||""),protocol:n.protocol||"TCP",nodePort:n.nodePort?String(n.nodePort):""}))),[V,R]=g.useState(Object.entries(d.selector||{}).map(([n,k])=>({key:n,value:String(k)}))),m=(n,k,p)=>{const y=[...v];y[n]={...y[n],[k]:p},w(y)},u=()=>w([...v,{name:"",port:"",targetPort:"",protocol:"TCP",nodePort:""}]),b=n=>w(v.filter((k,p)=>p!==n)),l=(n,k,p)=>{const y=[...V];y[n]={...y[n],[k]:p},R(y)},h=()=>R([...V,{key:"",value:""}]),N=n=>R(V.filter((k,p)=>p!==n)),j=()=>{const n={...d};n.type=r,n.ports=v.map(p=>{const y={port:parseInt(p.port)||80,targetPort:parseInt(p.targetPort)||parseInt(p.port)||80,protocol:p.protocol};return p.name&&(y.name=p.name),p.nodePort&&r==="NodePort"&&(y.nodePort=parseInt(p.nodePort)),y});const k={};V.forEach(p=>{p.key.trim()&&(k[p.key.trim()]=p.value)}),n.selector=k,t({...s,spec:n})};return e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:408:5",className:"space-y-5",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:409:7",className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:410:9",children:[e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:411:11",className:"text-[var(--dg-text-secondary)] text-xs",children:"名称"}),e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:412:11",value:s?.metadata?.name||"",readOnly:!0,className:"mt-1 font-mono text-xs bg-[var(--dg-bg-tertiary)]"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:414:9",children:[e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:415:11",className:"text-[var(--dg-text-secondary)] text-xs",children:"Service 类型"}),e.jsxs(I,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:416:11",value:r,onValueChange:x,children:[e.jsx(F,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:417:13",className:"mt-1 h-8 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] text-xs",children:e.jsx(H,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:418:15"})}),e.jsxs(J,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:420:13",children:[e.jsx($,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:421:15",value:"ClusterIP",children:"ClusterIP (集群内部)"}),e.jsx($,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:422:15",value:"NodePort",children:"NodePort (节点端口)"}),e.jsx($,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:423:15",value:"LoadBalancer",children:"LoadBalancer (负载均衡)"})]})]})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:430:7",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:431:9",className:"flex items-center justify-between mb-2",children:[e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:432:11",className:"text-[var(--dg-text-secondary)] text-sm",children:"端口映射"}),e.jsxs(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:433:11",variant:"outline",size:"sm",className:"h-7 text-xs",onClick:u,children:[e.jsx(G,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:433:89",className:"h-3 w-3 mr-1"}),"添加端口"]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:435:9",className:"space-y-2",children:[v.map((n,k)=>e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:437:13",className:"grid grid-cols-[1fr_80px_80px_80px_80px_32px] gap-2 items-center",children:[e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:438:15",value:n.name,onChange:p=>m(k,"name",p.target.value),placeholder:"名称",className:"font-mono text-xs h-7 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"}),e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:439:15",value:n.port,onChange:p=>m(k,"port",p.target.value),placeholder:"端口",type:"number",className:"font-mono text-xs h-7 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"}),e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:440:15",value:n.targetPort,onChange:p=>m(k,"targetPort",p.target.value),placeholder:"目标",type:"number",className:"font-mono text-xs h-7 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"}),e.jsxs(I,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:441:15",value:n.protocol,onValueChange:p=>m(k,"protocol",p),children:[e.jsx(F,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:442:17",className:"h-7 text-xs bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]",children:e.jsx(H,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:442:139"})}),e.jsxs(J,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:443:17",children:[e.jsx($,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:443:32",value:"TCP",children:"TCP"}),e.jsx($,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:443:72",value:"UDP",children:"UDP"})]})]}),r==="NodePort"?e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:446:17",value:n.nodePort,onChange:p=>m(k,"nodePort",p.target.value),placeholder:"NodePort",type:"number",className:"font-mono text-xs h-7 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"}):e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:447:19"}),e.jsx(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:448:15",variant:"ghost",size:"icon",className:"h-7 w-7 text-red-400 hover:text-red-300",onClick:()=>b(k),children:e.jsx(U,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:448:133",className:"h-3 w-3"})})]},k)),v.length===0&&e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:451:34",className:"text-center py-4 text-[var(--dg-text-muted)] text-xs",children:"暂无端口,点击「添加端口」"})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:456:7",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:457:9",className:"flex items-center justify-between mb-2",children:[e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:458:11",className:"text-[var(--dg-text-secondary)] text-sm",children:"选择器 (Selector)"}),e.jsxs(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:459:11",variant:"outline",size:"sm",className:"h-7 text-xs",onClick:h,children:[e.jsx(G,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:459:93",className:"h-3 w-3 mr-1"}),"添加标签"]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:461:9",className:"space-y-2",children:[V.map((n,k)=>e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:463:13",className:"flex items-center gap-2",children:[e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:464:15",value:n.key,onChange:p=>l(k,"key",p.target.value),placeholder:"键 (如 app)",className:"flex-1 font-mono text-xs h-7 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"}),e.jsx("span",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:465:15",className:"text-[var(--dg-text-muted)] text-xs",children:"="}),e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:466:15",value:n.value,onChange:p=>l(k,"value",p.target.value),placeholder:"值 (如 nginx)",className:"flex-1 font-mono text-xs h-7 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"}),e.jsx(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:467:15",variant:"ghost",size:"icon",className:"h-7 w-7 text-red-400 hover:text-red-300",onClick:()=>N(k),children:e.jsx(U,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:467:137",className:"h-3 w-3"})})]},k)),V.length===0&&e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:470:37",className:"text-center py-4 text-[var(--dg-text-muted)] text-xs",children:"暂无选择器"})]})]}),e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:474:7",className:"flex justify-end gap-2 pt-2 border-t border-[var(--dg-border)]",children:e.jsxs(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:475:9",size:"sm",className:"bg-blue-600 hover:bg-blue-700",onClick:j,disabled:o,children:[o?e.jsx(A,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:476:21",className:"h-3.5 w-3.5 animate-spin mr-1"}):e.jsx(W,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:476:77",className:"h-3.5 w-3.5 mr-1"}),"保存 Service"]})})]})}function De({manifest:s,onSave:t,saving:o}){const d=s?.spec||{},[r,x]=g.useState((d.rules||[]).map(l=>({host:l.host||"",paths:l.http?.backend?.servicePort!=null?[{path:"/",pathType:"Prefix",serviceName:l.http?.backend?.serviceName||"",servicePort:String(l.http?.backend?.servicePort||"80")}]:(l.http?.paths||[]).map(h=>({path:h.path||"/",pathType:h.pathType||"Prefix",serviceName:h.backend?.service?.name||h.backend?.serviceName||"",servicePort:String(h.backend?.service?.port?.number??h.backend?.servicePort??"80")}))}))),v=(l,h)=>{const N=[...r];N[l]={...N[l],host:h},x(N)},w=()=>x([...r,{host:"",paths:[{path:"/",pathType:"Prefix",serviceName:"",servicePort:"80"}]}]),V=l=>x(r.filter((h,N)=>N!==l)),R=(l,h,N,j)=>{const n=[...r];n[l].paths[h]={...n[l].paths[h],[N]:j},x(n)},m=l=>{const h=[...r];h[l].paths.push({path:"/",pathType:"Prefix",serviceName:"",servicePort:"80"}),x(h)},u=(l,h)=>{const N=[...r];N[l].paths=N[l].paths.filter((j,n)=>n!==h),x(N)},b=()=>{const l=r.map(h=>({host:h.host,http:{paths:h.paths.map(N=>({path:N.path,pathType:N.pathType,backend:{service:{name:N.serviceName,port:{number:parseInt(N.servicePort)||80}}}}))}}));t({...s,spec:{...d,rules:l}})};return e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:544:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:545:7",children:[e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:546:9",className:"text-[var(--dg-text-secondary)] text-xs",children:"名称"}),e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:547:9",value:s?.metadata?.name||"",readOnly:!0,className:"mt-1 font-mono text-xs bg-[var(--dg-bg-tertiary)]"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:549:7",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:550:9",className:"flex items-center justify-between mb-2",children:[e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:551:11",className:"text-[var(--dg-text-secondary)] text-sm",children:"路由规则"}),e.jsxs(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:552:11",variant:"outline",size:"sm",className:"h-7 text-xs",onClick:w,children:[e.jsx(G,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:552:89",className:"h-3 w-3 mr-1"}),"添加 Host"]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:554:9",className:"space-y-3 max-h-[50vh] overflow-y-auto pr-1",children:[r.map((l,h)=>e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:556:13",className:"p-3 rounded-lg border border-[var(--dg-border)] bg-[var(--dg-bg-secondary)] space-y-2",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:557:15",className:"flex items-center gap-2",children:[e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:558:17",value:l.host,onChange:N=>v(h,N.target.value),placeholder:"域名 (如 api.example.com)",className:"flex-1 font-mono text-xs h-7 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"}),e.jsx(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:564:17",variant:"ghost",size:"icon",className:"h-7 w-7 text-red-400 hover:text-red-300",onClick:()=>V(h),children:e.jsx(U,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:564:136",className:"h-3 w-3"})})]}),l.paths.map((N,j)=>e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:567:17",className:"grid grid-cols-[1fr_100px_1fr_60px_28px] gap-1.5 items-center pl-4",children:[e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:568:19",value:N.path,onChange:n=>R(h,j,"path",n.target.value),placeholder:"路径 /",className:"font-mono text-xs h-7 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"}),e.jsxs(I,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:569:19",value:N.pathType,onValueChange:n=>R(h,j,"pathType",n),children:[e.jsx(F,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:570:21",className:"h-7 text-xs bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]",children:e.jsx(H,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:570:143"})}),e.jsxs(J,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:571:21",children:[e.jsx($,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:571:36",value:"Prefix",children:"Prefix"}),e.jsx($,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:571:82",value:"Exact",children:"Exact"})]})]}),e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:573:19",value:N.serviceName,onChange:n=>R(h,j,"serviceName",n.target.value),placeholder:"Service",className:"font-mono text-xs h-7 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"}),e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:574:19",value:N.servicePort,onChange:n=>R(h,j,"servicePort",n.target.value),placeholder:"端口",type:"number",className:"font-mono text-xs h-7 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"}),e.jsx(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:575:19",variant:"ghost",size:"icon",className:"h-7 w-7 text-red-400 hover:text-red-300",onClick:()=>u(h,j),children:e.jsx(U,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:575:142",className:"h-3 w-3"})})]},j)),e.jsxs(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:578:15",variant:"ghost",size:"sm",className:"h-6 text-xs text-[var(--dg-text-muted)]",onClick:()=>m(h),children:[e.jsx(G,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:578:129",className:"h-3 w-3 mr-1"}),"添加路径"]})]},h)),r.length===0&&e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:581:34",className:"text-center py-4 text-[var(--dg-text-muted)] text-xs",children:"暂无路由规则,点击「添加 Host」"})]})]}),e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:584:7",className:"flex justify-end gap-2 pt-2 border-t border-[var(--dg-border)]",children:e.jsxs(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:585:9",size:"sm",className:"bg-blue-600 hover:bg-blue-700",onClick:b,disabled:o,children:[o?e.jsx(A,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:586:21",className:"h-3.5 w-3.5 animate-spin mr-1"}):e.jsx(W,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:586:77",className:"h-3.5 w-3.5 mr-1"}),"保存 Ingress"]})})]})}function Ie({manifest:s,onSave:t,saving:o}){const d=s?.spec||{},r=d.resources?.requests||{},[x,v]=g.useState(r.storage||"1Gi"),[w,V]=g.useState(d.accessModes?.[0]||"ReadWriteOnce"),[R,m]=g.useState(d.storageClassName||""),u=()=>{t({...s,spec:{...d,accessModes:[w],storageClassName:R||void 0,resources:{requests:{storage:x}}}})};return e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:617:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:618:7",children:[e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:619:9",className:"text-[var(--dg-text-secondary)] text-xs",children:"名称"}),e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:620:9",value:s?.metadata?.name||"",readOnly:!0,className:"mt-1 font-mono text-xs bg-[var(--dg-bg-tertiary)]"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:622:7",className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:623:9",children:[e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:624:11",className:"text-[var(--dg-text-secondary)] text-xs",children:"存储大小"}),e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:625:11",value:x,onChange:b=>v(b.target.value),placeholder:"如 10Gi",className:"mt-1 font-mono text-xs h-8 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"}),e.jsx("p",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:631:11",className:"text-[10px] text-[var(--dg-text-muted)] mt-1",children:"单位:Gi (GiB), Mi (MiB), Ti (TiB)"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:633:9",children:[e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:634:11",className:"text-[var(--dg-text-secondary)] text-xs",children:"访问模式"}),e.jsxs(I,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:635:11",value:w,onValueChange:V,children:[e.jsx(F,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:636:13",className:"mt-1 h-8 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] text-xs",children:e.jsx(H,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:637:15"})}),e.jsxs(J,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:639:13",children:[e.jsx($,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:640:15",value:"ReadWriteOnce",children:"ReadWriteOnce (单节点读写)"}),e.jsx($,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:641:15",value:"ReadOnlyMany",children:"ReadOnlyMany (多节点只读)"}),e.jsx($,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:642:15",value:"ReadWriteMany",children:"ReadWriteMany (多节点读写)"})]})]})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:647:7",children:[e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:648:9",className:"text-[var(--dg-text-secondary)] text-xs",children:"StorageClass"}),e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:649:9",value:R,onChange:b=>m(b.target.value),placeholder:"留空使用默认 StorageClass",className:"mt-1 font-mono text-xs h-8 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:656:7",className:"flex justify-end gap-2 pt-2 border-t border-[var(--dg-border)]",children:e.jsxs(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:657:9",size:"sm",className:"bg-blue-600 hover:bg-blue-700",onClick:u,disabled:o,children:[o?e.jsx(A,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:658:21",className:"h-3.5 w-3.5 animate-spin mr-1"}):e.jsx(W,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:658:77",className:"h-3.5 w-3.5 mr-1"}),"保存 PVC"]})})]})}const ae={deployments:{title:"Deployments",subtitle:"Deployment 工作负载运行状态",icon:O,columns:["名称","命名空间","副本","镜像","操作"],renderRow:(s,t)=>e.jsxs(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:42:7",className:"border-slate-800 hover:bg-slate-800/30 cursor-pointer",onClick:()=>t.onDetail?.(s),children:[e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:43:9",className:"font-medium text-slate-200",children:s.name}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:44:9",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:44:20",variant:"outline",className:"border-slate-700 text-slate-400",children:s.namespace})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:45:9",children:(()=>{const o=s.ready_replicas||0,d=s.replicas||0,r=d>0?o/d*100:0,x=o===d;return e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:50:15",className:"flex items-center gap-2 min-w-[100px]",children:[e.jsx("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:51:17",className:"flex-1 h-1.5 rounded-full bg-slate-700/50 overflow-hidden",children:e.jsx("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:52:19",className:`h-full rounded-full ${x?"bg-emerald-500":"bg-yellow-500"}`,style:{width:`${r}%`}})}),e.jsxs("span",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:54:17",className:`text-xs ${x?"text-emerald-400":"text-yellow-400"}`,children:[o,"/",d]})]})})()}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:59:9",className:"text-xs text-slate-500 max-w-[200px] truncate",children:s.image||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:60:9",onClick:o=>o.stopPropagation(),children:e.jsx("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:61:11",className:"flex items-center gap-0.5",children:e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:62:13",variant:"ghost",size:"icon",className:"h-7 w-7 text-slate-400 hover:text-blue-400",title:"查看YAML",onClick:()=>t.onYaml?.(s.name),children:e.jsx(M,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:63:53",className:"h-3.5 w-3.5"})})})})]},s.name)},pods:{title:"Pods",subtitle:"Pod 实例运行状态",icon:de,columns:["名称","命名空间","状态","节点","CPU","内存","重启","镜像","操作"],renderRow:(s,t)=>{const o={Running:"bg-emerald-500/20 text-emerald-400 border-emerald-500/30",Pending:"bg-yellow-500/20 text-yellow-400 border-yellow-500/30",Failed:"bg-red-500/20 text-red-400 border-red-500/30"};return e.jsxs(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:75:9",className:"border-slate-800 hover:bg-slate-800/30",children:[e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:76:11",className:"font-medium text-slate-200",children:s.name}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:77:11",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:77:22",variant:"outline",className:"border-slate-700 text-slate-400",children:s.namespace})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:78:11",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:78:22",className:o[s.status]||"bg-slate-500/20 text-slate-400",children:s.status||"Unknown"})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:79:11",className:"text-sm text-slate-400",children:s.node_name||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:80:11",className:"text-sm text-cyan-400",children:s.cpu_usage_m||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:81:11",className:"text-sm text-amber-400",children:s.mem_usage_mi||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:82:11",className:s.restart_count>0?"text-yellow-400":"text-slate-500",children:s.restart_count||0}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:83:11",className:"text-xs text-slate-500 max-w-[200px] truncate",children:s.image||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:84:11",children:e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:85:13",className:"flex items-center gap-1",children:[e.jsxs(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:86:15",variant:"ghost",size:"sm",className:"h-7 px-2 text-xs text-emerald-400 hover:text-emerald-300 hover:bg-emerald-500/10",title:"终端",onClick:()=>t.onTerminal?.(s),children:[e.jsx(ke,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:87:79",className:"h-3.5 w-3.5 mr-1"}),"终端"]}),e.jsxs(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:88:15",variant:"ghost",size:"sm",className:"h-7 px-2 text-xs text-amber-400 hover:text-amber-300 hover:bg-amber-500/10",title:"文件浏览器",onClick:()=>t.onFileBrowser?.(s),children:[e.jsx(Ye,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:89:82",className:"h-3.5 w-3.5 mr-1"}),"文件浏览器"]}),e.jsxs(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:90:15",variant:"ghost",size:"sm",className:"h-7 px-2 text-xs text-blue-400 hover:text-blue-300 hover:bg-blue-500/10",title:"查看YAML",onClick:()=>t.onYaml?.(s.name),children:[e.jsx(M,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:91:55",className:"h-3.5 w-3.5 mr-1"}),"YAML"]})]})})]},s.name)}},services:{title:"Services",subtitle:"Service 网络服务",icon:Q,columns:["名称","命名空间","类型","Cluster IP","端口","操作"],renderRow:(s,t)=>e.jsxs(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:102:7",className:"border-slate-800 hover:bg-slate-800/30",children:[e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:103:9",className:"font-medium text-slate-200",children:s.name}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:104:9",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:104:20",variant:"outline",className:"border-slate-700 text-slate-400",children:s.namespace})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:105:9",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:105:20",className:"bg-blue-500/20 text-blue-400 border-blue-500/30",children:s.type||"-"})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:106:9",className:"text-sm text-slate-400",children:s.cluster_ip||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:107:9",className:"text-sm text-slate-400",children:s.ports||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:108:9",children:e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:109:11",className:"flex items-center gap-0.5",children:[e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:110:13",variant:"ghost",size:"icon",className:"h-7 w-7 text-slate-400 hover:text-blue-400",title:"查看YAML",onClick:()=>t.onYaml?.(s.name),children:e.jsx(M,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:110:157",className:"h-3.5 w-3.5"})}),e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:111:13",variant:"ghost",size:"icon",className:"h-7 w-7 text-emerald-400 hover:text-emerald-300",title:"编辑",onClick:()=>t.onEdit?.(s.name),children:e.jsx(B,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:111:158",className:"h-3.5 w-3.5"})})]})})]},s.name)},ingresses:{title:"Ingresses",subtitle:"Ingress 路由规则",icon:Q,columns:["名称","命名空间","Hosts","TLS","操作"],renderRow:(s,t)=>{const o=s.hosts||[];return e.jsxs(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:123:9",className:"border-slate-800 hover:bg-slate-800/30",children:[e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:124:11",className:"font-medium text-slate-200",children:s.name}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:125:11",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:125:22",variant:"outline",className:"border-slate-700 text-slate-400",children:s.namespace})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:126:11",className:"text-sm text-slate-400 max-w-[250px] truncate",children:o.length>0?o.join(", "):"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:127:11",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:127:22",className:s.tls?"bg-emerald-500/20 text-emerald-400":"bg-slate-500/20 text-slate-400",children:s.tls?"HTTPS":"HTTP"})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:128:11",children:e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:129:13",className:"flex items-center gap-0.5",children:[e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:130:15",variant:"ghost",size:"icon",className:"h-7 w-7 text-slate-400 hover:text-blue-400",title:"查看YAML",onClick:()=>t.onYaml?.(s.name),children:e.jsx(M,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:130:159",className:"h-3.5 w-3.5"})}),e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:131:15",variant:"ghost",size:"icon",className:"h-7 w-7 text-emerald-400 hover:text-emerald-300",title:"编辑",onClick:()=>t.onEdit?.(s.name),children:e.jsx(B,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:131:160",className:"h-3.5 w-3.5"})})]})})]},s.name)}},configmaps:{title:"ConfigMaps",subtitle:"配置字典",icon:ce,columns:["名称","命名空间","键数量","操作"],renderRow:(s,t)=>e.jsxs(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:142:7",className:"border-slate-800 hover:bg-slate-800/30",children:[e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:143:9",className:"font-medium text-slate-200",children:s.name}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:144:9",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:144:20",variant:"outline",className:"border-slate-700 text-slate-400",children:s.namespace})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:145:9",className:"text-sm text-slate-400",children:s.key_count||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:146:9",children:e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:147:11",className:"flex items-center gap-0.5",children:[e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:148:13",variant:"ghost",size:"icon",className:"h-7 w-7 text-slate-400 hover:text-blue-400",title:"查看YAML",onClick:()=>t.onYaml?.(s.name),children:e.jsx(M,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:149:53",className:"h-3.5 w-3.5"})}),e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:150:13",variant:"ghost",size:"icon",className:"h-7 w-7 text-emerald-400 hover:text-emerald-300",title:"编辑",onClick:()=>t.onEdit?.(s.name),children:e.jsx(B,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:151:53",className:"h-3.5 w-3.5"})})]})})]},s.name)},secrets:{title:"Secrets",subtitle:"密钥管理(仅名称与类型)",icon:T,columns:["名称","命名空间","类型","操作"],renderRow:(s,t)=>e.jsxs(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:161:7",className:"border-slate-800 hover:bg-slate-800/30",children:[e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:162:9",className:"font-medium text-slate-200",children:s.name}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:163:9",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:163:20",variant:"outline",className:"border-slate-700 text-slate-400",children:s.namespace})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:164:9",className:"text-sm text-slate-400",children:s.type||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:165:9",children:e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:166:11",className:"flex items-center gap-0.5",children:[e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:167:13",variant:"ghost",size:"icon",className:"h-7 w-7 text-slate-400 hover:text-blue-400",title:"查看YAML",onClick:()=>t.onYaml?.(s.name),children:e.jsx(M,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:168:53",className:"h-3.5 w-3.5"})}),e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:169:13",variant:"ghost",size:"icon",className:"h-7 w-7 text-emerald-400 hover:text-emerald-300",title:"编辑",onClick:()=>t.onEdit?.(s.name),children:e.jsx(B,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:170:53",className:"h-3.5 w-3.5"})})]})})]},s.name)},hpas:{title:"HPAs",subtitle:"水平自动伸缩",icon:le,columns:["名称","命名空间","目标","最小/最大","CPU%","Mem%"],renderRow:(s,t)=>e.jsxs(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:180:7",className:"border-slate-800 hover:bg-slate-800/30",children:[e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:181:9",className:"font-medium text-slate-200",children:s.name}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:182:9",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:182:20",variant:"outline",className:"border-slate-700 text-slate-400",children:s.namespace})}),e.jsxs(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:183:9",className:"text-sm text-slate-400",children:[s.target_kind,"/",s.target_name]}),e.jsxs(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:184:9",className:"text-sm text-slate-400",children:[s.min_replicas,"/",s.max_replicas]}),e.jsxs(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:185:9",className:"text-sm text-slate-400",children:[s.cpu_percent??"-","%"]}),e.jsxs(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:186:9",className:"text-sm text-slate-400",children:[s.mem_percent??"-","%"]})]},s.name)},cronjobs:{title:"CronJobs",subtitle:"定时任务",icon:ne,columns:["名称","命名空间","调度","状态","上次执行"],renderRow:s=>e.jsxs(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:194:7",className:"border-slate-800 hover:bg-slate-800/30",children:[e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:195:9",className:"font-medium text-slate-200",children:s.name}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:196:9",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:196:20",variant:"outline",className:"border-slate-700 text-slate-400",children:s.namespace})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:197:9",className:"text-sm font-mono text-slate-400",children:s.schedule||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:198:9",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:198:20",className:s.suspend?"bg-yellow-500/20 text-yellow-400":"bg-emerald-500/20 text-emerald-400",children:s.suspend?"已暂停":"运行中"})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:199:9",className:"text-sm text-slate-400",children:s.last_schedule||"-"})]},s.name)},pvcs:{title:"存储卷声明",subtitle:"PersistentVolumeClaim",icon:O,columns:["名称","命名空间","状态","大小","StorageClass","操作"],renderRow:(s,t)=>e.jsxs(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:207:7",className:"border-slate-800 hover:bg-slate-800/30",children:[e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:208:9",className:"font-medium text-slate-200",children:s.name}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:209:9",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:209:20",variant:"outline",className:"border-slate-700 text-slate-400",children:s.namespace})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:210:9",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:210:20",className:s.phase==="Bound"?"bg-emerald-500/20 text-emerald-400":"bg-yellow-500/20 text-yellow-400",children:s.phase||"-"})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:211:9",className:"text-sm text-slate-400",children:s.size||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:212:9",className:"text-sm text-slate-400",children:s.storage_class||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:213:9",children:e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:214:11",className:"flex items-center gap-0.5",children:[e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:215:13",variant:"ghost",size:"icon",className:"h-7 w-7 text-slate-400 hover:text-blue-400",title:"查看YAML",onClick:()=>t.onYaml?.(s.name),children:e.jsx(M,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:215:157",className:"h-3.5 w-3.5"})}),e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:216:13",variant:"ghost",size:"icon",className:"h-7 w-7 text-emerald-400 hover:text-emerald-300",title:"编辑",onClick:()=>t.onEdit?.(s.name),children:e.jsx(B,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:216:158",className:"h-3.5 w-3.5"})})]})})]},s.name)},statefulsets:{title:"StatefulSets",subtitle:"有状态应用",icon:O,columns:["名称","命名空间","副本","就绪","镜像"],renderRow:(s,t)=>e.jsxs(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:226:7",className:"border-slate-800 hover:bg-slate-800/30 cursor-pointer",onClick:()=>t.onDetail?.(s),children:[e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:227:9",className:"font-medium text-slate-200",children:s.name}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:228:9",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:228:20",variant:"outline",className:"border-slate-700 text-slate-400",children:s.namespace})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:229:9",className:"text-sm text-slate-400",children:s.replicas||0}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:230:9",className:"text-sm text-slate-400",children:s.ready||0}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:231:9",className:"text-xs text-slate-500 max-w-[200px] truncate",children:s.image||"-"})]},s.name)},daemonsets:{title:"DaemonSets",subtitle:"守护进程集",icon:O,columns:["名称","命名空间","期望","当前","就绪","镜像"],renderRow:(s,t)=>e.jsxs(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:239:7",className:"border-slate-800 hover:bg-slate-800/30 cursor-pointer",onClick:()=>t.onDetail?.(s),children:[e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:240:9",className:"font-medium text-slate-200",children:s.name}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:241:9",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:241:20",variant:"outline",className:"border-slate-700 text-slate-400",children:s.namespace})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:242:9",className:"text-sm text-slate-400",children:s.desired||0}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:243:9",className:"text-sm text-slate-400",children:s.current||0}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:244:9",className:"text-sm text-slate-400",children:s.ready||0}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:245:9",className:"text-xs text-slate-500 max-w-[200px] truncate",children:s.image||"-"})]},s.name)},serviceaccounts:{title:"ServiceAccounts",subtitle:"服务账号(RBAC 身份标识)",icon:T,columns:["名称","命名空间","Secret数","镜像拉取凭证","创建时间","操作"],renderRow:(s,t)=>e.jsxs(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:253:7",className:"border-slate-800 hover:bg-slate-800/30",children:[e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:254:9",className:"font-medium text-slate-200",children:s.name}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:255:9",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:255:20",variant:"outline",className:"border-slate-700 text-slate-400",children:s.namespace})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:256:9",className:"text-sm text-slate-400",children:s.secret_count??0}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:257:9",className:"text-xs text-slate-500 max-w-[200px] truncate",children:s.image_pull_secrets&&s.image_pull_secrets.length>0?s.image_pull_secrets.join(", "):"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:260:9",className:"text-xs text-slate-500",children:s.age||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:261:9",onClick:o=>o.stopPropagation(),children:e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:262:11",variant:"ghost",size:"icon",className:"h-7 w-7 text-slate-400 hover:text-blue-400",title:"查看YAML",onClick:()=>t.onYaml?.(s.name),children:e.jsx(M,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:263:52",className:"h-3.5 w-3.5"})})})]},s.name)},roles:{title:"Roles",subtitle:"命名空间级角色权限(RBAC)",icon:T,columns:["名称","命名空间","规则数","权限范围","创建时间","操作"],renderRow:(s,t)=>{const o=s.verbs||[],d=s.resources||[],r=o.length>4?o.slice(0,4).join(", ")+` +${o.length-4}`:o.join(", "),x=d.length>4?d.slice(0,4).join(", ")+` +${d.length-4}`:d.join(", ");return e.jsxs(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:277:9",className:"border-slate-800 hover:bg-slate-800/30",children:[e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:278:11",className:"font-medium text-slate-200",children:s.name}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:279:11",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:279:22",variant:"outline",className:"border-slate-700 text-slate-400",children:s.namespace})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:280:11",className:"text-sm text-slate-400",children:s.rule_count??0}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:281:11",className:"text-xs text-slate-500 max-w-[280px]",children:e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:282:13",className:"flex flex-col gap-0.5",children:[e.jsxs("span",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:283:15",className:"text-cyan-400 truncate",title:o.join(", "),children:["verbs: ",r||"-"]}),e.jsxs("span",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:284:15",className:"text-amber-400 truncate",title:d.join(", "),children:["resources: ",x||"-"]})]})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:287:11",className:"text-xs text-slate-500",children:s.age||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:288:11",onClick:v=>v.stopPropagation(),children:e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:289:13",className:"flex items-center gap-0.5",children:[e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:290:15",variant:"ghost",size:"icon",className:"h-7 w-7 text-slate-400 hover:text-blue-400",title:"查看YAML",onClick:()=>t.onYaml?.(s.name),children:e.jsx(M,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:291:55",className:"h-3.5 w-3.5"})}),e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:292:15",variant:"ghost",size:"icon",className:"h-7 w-7 text-emerald-400 hover:text-emerald-300",title:"编辑",onClick:()=>t.onEdit?.(s.name),children:e.jsx(B,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:293:55",className:"h-3.5 w-3.5"})})]})})]},s.name)}},rolebindings:{title:"RoleBindings",subtitle:"角色绑定关系(RBAC 授权)",icon:T,columns:["名称","命名空间","角色引用","绑定主体","创建时间","操作"],renderRow:(s,t)=>{const o=s.subjects||[],d=o.length>3?o.slice(0,3).join(", ")+` +${o.length-3}`:o.join(", ");return e.jsxs(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:307:9",className:"border-slate-800 hover:bg-slate-800/30",children:[e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:308:11",className:"font-medium text-slate-200",children:s.name}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:309:11",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:309:22",variant:"outline",className:"border-slate-700 text-slate-400",children:s.namespace})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:310:11",children:e.jsxs(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:311:13",className:"bg-purple-500/20 text-purple-400 border-purple-500/30",children:[s.role_ref_kind||"-","/",s.role_ref_name||"-"]})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:315:11",className:"text-xs text-slate-500 max-w-[200px] truncate",title:o.join(", "),children:d||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:318:11",className:"text-xs text-slate-500",children:s.age||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:319:11",onClick:r=>r.stopPropagation(),children:e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:320:13",className:"flex items-center gap-0.5",children:[e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:321:15",variant:"ghost",size:"icon",className:"h-7 w-7 text-slate-400 hover:text-blue-400",title:"查看YAML",onClick:()=>t.onYaml?.(s.name),children:e.jsx(M,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:322:56",className:"h-3.5 w-3.5"})}),e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:323:15",variant:"ghost",size:"icon",className:"h-7 w-7 text-emerald-400 hover:text-emerald-300",title:"编辑",onClick:()=>t.onEdit?.(s.name),children:e.jsx(B,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:324:56",className:"h-3.5 w-3.5"})})]})})]},s.name)}}};function vs(){const{clusterCode:s,namespace:t}=be(),o=ge(),d=Ne();ie();const r=g.useMemo(()=>{const c=o.pathname.split("/"),z=c[c.length-1];if(z&&ae[z])return z;if(c.length>=2){const K=c[c.length-2];if(K&&ae[K])return K}return"deployments"},[o.pathname]),x=ae[r],[v,w]=g.useState([]),[V,R]=g.useState([]),[m,u]=g.useState([]),[b,l]=g.useState(!1),[h,N]=g.useState(""),[j,n]=g.useState(null),[k,p]=g.useState(null),[y,Z]=g.useState(null),[q,X]=g.useState(null);g.useEffect(()=>{f.getClusters().then(c=>{const z=c?.list||[];if(w(z),!s&&z.length>0){const K=z[0].code||String(z[0].id);d(`/kubernetes/${K}/namespace/${t||"default"}/${r}`,{replace:!0})}}).catch(()=>w([]))},[]),g.useEffect(()=>{s&&f.getNamespaces(s).then(c=>{const z=Array.isArray(c)?c:c?.list||c?.data||[];R(z),!t&&z.length>0&&d(`/kubernetes/${s}/namespace/${z[0]}/${r}`,{replace:!0})}).catch(()=>R([]))},[s]);const Y=g.useCallback(async()=>{if(!(!s||!t)){l(!0);try{let c=[];switch(r){case"deployments":c=await f.getNamespaceDeployments(s,t).catch(()=>[]);break;case"pods":c=await f.getNamespacePods(s,t).catch(()=>[]);break;case"services":c=await f.getNamespaceServices(s,t).catch(()=>[]);break;case"ingresses":c=await f.getNamespaceIngresses(s,t).catch(()=>[]);break;case"configmaps":c=await f.getNamespaceConfigMaps(s,t).catch(()=>[]);break;case"secrets":c=await f.getNamespaceSecrets(s,t).catch(()=>[]);break;case"hpas":c=await f.getHPAs(s,t).catch(()=>[]);break;case"cronjobs":c=await f.getCronJobs(s,t).catch(()=>[]);break;case"pvcs":c=await f.getPVCs(s,t).catch(()=>[]);break;case"statefulsets":c=await f.getStatefulSets(s,t).catch(()=>[]);break;case"daemonsets":c=await f.getDaemonSets(s,t).catch(()=>[]);break;case"serviceaccounts":c=await f.getServiceAccounts(s,t).catch(()=>[]);break;case"roles":c=await f.getRoles(s,t).catch(()=>[]);break;case"rolebindings":c=await f.getRoleBindings(s,t).catch(()=>[]);break}u(Array.isArray(c)?c:c?.list||c?.data||[])}catch{u([])}finally{l(!1)}}},[s,t,r]);g.useEffect(()=>{Y()},[Y]);const D=m.filter(c=>(c.name||"").toLowerCase().includes(h.toLowerCase())),S=c=>{r==="deployments"?d(`/kubernetes/${s}/namespace/${t}/workload/view/Deployment/${c.name}`):r==="statefulsets"?d(`/kubernetes/${s}/namespace/${t}/workload/view/StatefulSet/${c.name}`):r==="daemonsets"&&d(`/kubernetes/${s}/namespace/${t}/workload/view/DaemonSet/${c.name}`)},L=c=>n({resource:r,name:c}),ee=c=>{["configmaps","secrets","services","ingresses","pvcs"].includes(r)?p({resource:r,name:c}):n({resource:r,name:c,editMode:!0})},me=()=>f.exportAsCSV(`${r}-${s}-${t}.csv`,D),ue=()=>f.exportAsJSON(`${r}-${s}-${t}.json`,D),pe=g.useMemo(()=>[{type:"deployments",label:"Deployments",icon:O},{type:"statefulsets",label:"StatefulSets",icon:O},{type:"daemonsets",label:"DaemonSets",icon:O},{type:"pods",label:"Pods",icon:de},{type:"cronjobs",label:"CronJobs",icon:ne},{type:"services",label:"Services",icon:Q},{type:"ingresses",label:"Ingresses",icon:Q},{type:"configmaps",label:"ConfigMaps",icon:ce},{type:"secrets",label:"Secrets",icon:T},{type:"hpas",label:"HPAs",icon:le},{type:"pvcs",label:"存储卷",icon:O},{type:"serviceaccounts",label:"ServiceAccounts",icon:T},{type:"roles",label:"Roles",icon:T},{type:"rolebindings",label:"RoleBindings",icon:T}],[]);return x?e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:454:5",className:"space-y-4",children:[j&&e.jsx(Ce,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:456:9",clusterCode:s||"",namespace:t||"",resource:j.resource,name:j.name,onClose:()=>n(null),onSaved:Y,cleanBeforeEdit:!0,autoEdit:j.editMode===!0}),k&&e.jsx(Ae,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:468:9",clusterCode:s||"",namespace:t||"",resource:k.resource,name:k.name,onClose:()=>p(null),onSaved:Y}),e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:477:7",className:"flex items-center gap-2 text-sm text-slate-500",children:[e.jsx(se,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:478:9",to:"/kubernetes",className:"hover:text-slate-300 transition-colors",children:"集群"}),s&&e.jsxs(e.Fragment,{children:[e.jsx(te,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:479:27",className:"h-3 w-3"}),e.jsx(se,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:479:63",to:`/kubernetes/${s}`,className:"hover:text-slate-300 transition-colors",children:s})]}),t&&e.jsxs(e.Fragment,{children:[e.jsx(te,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:480:25",className:"h-3 w-3"}),e.jsx(se,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:480:61",to:`/kubernetes/${s}/namespace/${t}`,className:"hover:text-slate-300 transition-colors",children:t})]}),e.jsx(te,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:481:9",className:"h-3 w-3"}),e.jsx("span",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:481:45",className:"text-slate-300",children:x.title})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:483:7",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:484:9",children:[e.jsx("h1",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:485:11",className:"text-2xl font-bold text-slate-100",children:x.title}),e.jsx("p",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:486:11",className:"text-sm text-slate-500 mt-1",children:x.subtitle})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:488:9",className:"flex items-center gap-2",children:[e.jsxs(I,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:489:11",value:s||"",onValueChange:c=>d(`/kubernetes/${c}/namespace/${t||"default"}/${r}`),children:[e.jsx(F,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:490:13",className:"w-48 h-9 bg-slate-800/50 border-slate-700 text-slate-200",children:e.jsx(H,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:490:97",placeholder:"选择集群"})}),e.jsx(J,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:491:13",className:"bg-slate-800 border-slate-700",children:v.map(c=>e.jsx($,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:491:91",value:c.code||String(c.id),children:c.name},c.id))})]}),e.jsxs(I,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:493:11",value:t||"",onValueChange:c=>d(`/kubernetes/${s}/namespace/${c}/${r}`),children:[e.jsx(F,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:494:13",className:"w-40 h-9 bg-slate-800/50 border-slate-700 text-slate-200",children:e.jsx(H,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:494:97",placeholder:"命名空间"})}),e.jsx(J,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:495:13",className:"bg-slate-800 border-slate-700 max-h-[300px]",children:V.map(c=>e.jsx($,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:495:108",value:c,children:c},c))})]}),e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:497:11",variant:"outline",size:"icon",className:"h-9 w-9 border-slate-700 text-slate-400",onClick:Y,disabled:b,children:b?e.jsx(A,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:498:24",className:"h-4 w-4 animate-spin"}):e.jsx($e,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:498:71",className:"h-4 w-4"})}),e.jsxs(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:500:11",variant:"outline",size:"sm",className:"h-9 border-slate-700 text-slate-400 text-xs",onClick:me,title:"导出CSV",children:[e.jsx(oe,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:501:13",className:"h-3 w-3 mr-1"}),"CSV"]}),e.jsxs(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:503:11",variant:"outline",size:"sm",className:"h-9 border-slate-700 text-slate-400 text-xs",onClick:ue,title:"导出JSON",children:[e.jsx(oe,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:504:13",className:"h-3 w-3 mr-1"}),"JSON"]})]})]}),e.jsx("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:508:7",className:"flex items-center gap-1 bg-slate-900/50 border border-slate-800 rounded-lg p-1 overflow-x-auto",children:pe.map(c=>e.jsxs(se,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:510:11",to:`/kubernetes/${s}/namespace/${t}/${c.type}`,className:`flex items-center gap-1.5 px-3 py-1.5 text-xs rounded-md transition-colors whitespace-nowrap ${c.type===r?"bg-blue-600/20 text-blue-400":"text-slate-400 hover:text-slate-200 hover:bg-slate-800/50"}`,children:[e.jsx(c.icon,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:512:13",className:"h-3 w-3"}),c.label]},c.type))}),e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:516:7",className:"relative w-56",children:[e.jsx(Me,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:517:9",className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-slate-500"}),e.jsx(P,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:518:9",placeholder:"搜索...",value:h,onChange:c=>N(c.target.value),className:"pl-9 h-9 bg-slate-800/50 border-slate-700 text-slate-200"})]}),e.jsx(ve,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:520:7",className:"bg-slate-900 border-slate-800",children:e.jsx(Re,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:521:9",className:"p-0",children:e.jsxs(je,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:522:11",children:[e.jsx(Pe,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:523:13",children:e.jsx(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:523:26",className:"border-slate-800 hover:bg-transparent",children:x.columns.map(c=>e.jsx(ye,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:523:115",className:"text-slate-400",children:c},c))})}),e.jsx(fe,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:524:13",children:b?e.jsx(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:526:17",children:e.jsxs(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:526:27",colSpan:x.columns.length,className:"text-center text-slate-500 py-12",children:[e.jsx(A,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:526:115",className:"h-5 w-5 animate-spin mx-auto mb-2"}),"加载中..."]})}):D.length===0?e.jsx(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:528:17",children:e.jsxs(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:528:27",colSpan:x.columns.length,className:"text-center text-slate-500 py-12",children:[e.jsx(x.icon,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:528:115",className:"h-8 w-8 mx-auto mb-2 opacity-50"}),"暂无 ",x.title]})}):D.map(c=>x.renderRow(c,{clusterCode:s||"",namespace:t||"",onDetail:S,onYaml:L,onEdit:ee,onTerminal:z=>Z(z),onFileBrowser:z=>X(z)}))})]})})}),e.jsx(Se,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:538:7",open:!!y,onOpenChange:c=>{c||Z(null)},clusterId:v[0]?.id||v[0]?.code||s||"",namespace:t||"",podName:y?.name||"",containers:(y?.containers||[]).map(c=>c.name).filter(Boolean)}),e.jsx(ze,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:547:7",open:!!q,onOpenChange:c=>{c||X(null)},clusterCode:s||"",namespace:t||"",podName:q?.name||"",containers:(q?.containers||[]).map(c=>c.name).filter(Boolean)})]}):e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:451:23",className:"text-slate-400 p-8 text-center",children:["未知资源类型: ",r]})}export{vs as default}; diff --git a/backend/static/assets/NodeDetailPage-DKs9P1ic.js b/backend/static/assets/NodeDetailPage-DKs9P1ic.js new file mode 100644 index 0000000..2030113 --- /dev/null +++ b/backend/static/assets/NodeDetailPage-DKs9P1ic.js @@ -0,0 +1 @@ +import{k as R,m as M,r as p,j as e,n as g,o as k,S,B as q,L as j,T as P,I as B,A as F,N as L,v as U}from"./index-Dmami9WE.js";import{C as c,a as o}from"./card-CIfC-8Rh.js";import{B as l}from"./badge-3UzCvU7L.js";import{T as A,a as E,b as D,c as n,d as I,e as r}from"./table-CG4mjNfb.js";import{k as z}from"./kubernetes-D2-GnE0t.js";import{R as H}from"./refresh-cw-CTBERyFc.js";import{C as f}from"./circle-check-CVbTTFQ0.js";function X(){const{clusterCode:d,nodeName:i}=R();M();const[s,N]=p.useState(null),[h,u]=p.useState(!1),b=p.useCallback(async()=>{if(!(!d||!i)){u(!0);try{const t=await z.getNodeDetail(d,i);N(t)}catch{N(null)}finally{u(!1)}}},[d,i]);p.useEffect(()=>{b()},[b]);const x=({label:t,used:a,total:v,unit:w,pct:C,color:$})=>{const m=Math.min(Math.max(C||0,0),100),T=m>80?"bg-red-500":m>60?"bg-amber-500":"bg-emerald-500";return e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:53:7",className:"space-y-1.5",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:54:9",className:"flex items-center justify-between text-xs",children:[e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:55:11",className:"text-slate-400",children:t}),e.jsxs("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:56:11",className:"text-slate-300 font-medium",children:[a," / ",v," ",w]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:60:9",className:"flex items-center gap-2",children:[e.jsx("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:61:11",className:"flex-1 h-2 rounded-full bg-slate-700/50 overflow-hidden",children:e.jsx("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:62:13",className:`h-full rounded-full ${T} transition-all duration-500`,style:{width:`${m}%`}})}),e.jsxs("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:64:11",className:`text-xs font-semibold min-w-[40px] text-right ${$}`,children:[m.toFixed(0),"%"]})]})]})},_=(t,a)=>a==="True"?t==="Ready"?"bg-emerald-500/20 text-emerald-400":"bg-red-500/20 text-red-400":"bg-slate-500/20 text-slate-400",y=t=>t==="NoSchedule"?"bg-red-500/20 text-red-400 border-red-500/30":t==="NoExecute"?"bg-red-600/20 text-red-300 border-red-600/30":t==="PreferNoSchedule"?"bg-amber-500/20 text-amber-400 border-amber-500/30":"bg-slate-500/20 text-slate-400 border-slate-500/30";return e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:89:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:91:7",className:"flex items-center gap-2 text-sm text-slate-500",children:[e.jsx(g,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:92:9",to:"/kubernetes",className:"hover:text-slate-300 transition-colors",children:"集群"}),e.jsx(k,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:93:9",className:"h-3 w-3"}),e.jsx(g,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:94:9",to:`/kubernetes/${d}`,className:"hover:text-slate-300 transition-colors",children:d}),e.jsx(k,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:95:9",className:"h-3 w-3"}),e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:96:9",className:"text-slate-300",children:i})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:100:7",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:101:9",className:"flex items-center gap-3",children:[e.jsx("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:102:11",className:"flex items-center justify-center w-12 h-12 rounded-xl bg-slate-800 border border-slate-700",children:e.jsx(S,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:103:13",className:"h-6 w-6 text-blue-400"})}),e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:105:11",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:106:13",className:"flex items-center gap-2",children:[e.jsx("h1",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:107:15",className:"text-2xl font-bold text-slate-100",children:i}),e.jsx(l,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:108:15",className:s?.role==="master"?"bg-blue-500/20 text-blue-400 border-blue-500/30":"bg-slate-500/20 text-slate-400 border-slate-500/30",children:s?.role||"worker"}),e.jsx(l,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:111:15",className:s?.status==="Ready"?"bg-emerald-500/20 text-emerald-400":"bg-red-500/20 text-red-400",children:s?.status||"Unknown"})]}),e.jsxs("p",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:115:13",className:"text-sm text-slate-500 mt-0.5",children:[s?.internal_ip&&`${s.internal_ip}`,s?.hostname&&` · ${s.hostname}`]})]})]}),e.jsx(q,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:121:9",variant:"outline",size:"icon",className:"h-9 w-9 border-slate-700 text-slate-400",onClick:b,disabled:h,children:h?e.jsx(j,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:123:22",className:"h-4 w-4 animate-spin"}):e.jsx(H,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:123:69",className:"h-4 w-4"})})]}),h&&!s?e.jsx(c,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:128:9",className:"bg-slate-900 border-slate-800",children:e.jsx(o,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:129:11",className:"py-16 flex items-center justify-center",children:e.jsx(j,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:130:13",className:"h-6 w-6 animate-spin text-slate-500"})})}):s?e.jsxs(e.Fragment,{children:[e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:143:11",className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsx(c,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:145:13",className:"bg-slate-900 border-slate-800",children:e.jsxs(o,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:146:15",className:"p-4",children:[e.jsxs("h2",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:147:17",className:"text-sm font-semibold text-slate-200 mb-3 flex items-center gap-2",children:[e.jsx(B,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:148:19",className:"h-4 w-4 text-cyan-400"}),"系统信息"]}),e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:150:17",className:"space-y-2 text-xs",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:151:19",className:"flex items-center justify-between py-1.5 border-b border-slate-800/50",children:[e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:152:21",className:"text-slate-500",children:"容器运行时"}),e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:153:21",className:"text-slate-300 font-mono",children:s.container_runtime||"-"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:155:19",className:"flex items-center justify-between py-1.5 border-b border-slate-800/50",children:[e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:156:21",className:"text-slate-500",children:"Kubelet"}),e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:157:21",className:"text-slate-300 font-mono",children:s.kubelet_version||"-"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:159:19",className:"flex items-center justify-between py-1.5 border-b border-slate-800/50",children:[e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:160:21",className:"text-slate-500",children:"操作系统"}),e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:161:21",className:"text-slate-300",children:s.os_image||"-"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:163:19",className:"flex items-center justify-between py-1.5 border-b border-slate-800/50",children:[e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:164:21",className:"text-slate-500",children:"内核版本"}),e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:165:21",className:"text-slate-300 font-mono",children:s.kernel_version||"-"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:167:19",className:"flex items-center justify-between py-1.5 border-b border-slate-800/50",children:[e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:168:21",className:"text-slate-500",children:"架构"}),e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:169:21",className:"text-slate-300 font-mono",children:s.architecture||"-"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:171:19",className:"flex items-center justify-between py-1.5 border-b border-slate-800/50",children:[e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:172:21",className:"text-slate-500",children:"创建时间"}),e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:173:21",className:"text-slate-300",children:s.creation_time?new Date(s.creation_time).toLocaleString("zh-CN"):"-"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:175:19",className:"flex items-center justify-between py-1.5",children:[e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:176:21",className:"text-slate-500",children:"Pod CIDR"}),e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:177:21",className:"text-slate-300 font-mono",children:s.pod_cidr||"-"})]})]})]})}),e.jsx(c,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:184:13",className:"bg-slate-900 border-slate-800",children:e.jsxs(o,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:185:15",className:"p-4",children:[e.jsxs("h2",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:186:17",className:"text-sm font-semibold text-slate-200 mb-3 flex items-center gap-2",children:[e.jsx(F,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:187:19",className:"h-4 w-4 text-emerald-400"}),"资源分配率"]}),e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:189:17",className:"space-y-4 mt-4",children:[e.jsx(x,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:191:19",label:"CPU 已分配",used:`${(s.cpu_request_m/1e3).toFixed(2)} 核`,total:`${s.cpu_allocatable} 核`,unit:"",pct:s.cpu_alloc_pct,color:"text-emerald-400"}),s.cpu_usage_m&&e.jsx(x,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:201:21",label:"CPU 实时使用",used:s.cpu_usage_m,total:`${s.cpu_capacity} 核`,unit:"",pct:parseFloat(s.cpu_usage_m.replace("m",""))/(s.cpu_capacity*1e3)*100,color:"text-blue-400"}),e.jsx(x,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:211:19",label:"内存已分配",used:`${s.mem_request_mi} Mi`,total:`${s.mem_allocatable_mb} Mi`,unit:"",pct:s.mem_alloc_pct,color:"text-emerald-400"}),s.mem_usage_mi&&e.jsx(x,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:221:21",label:"内存实时使用",used:s.mem_usage_mi,total:`${s.mem_capacity_mb} Mi`,unit:"",pct:parseFloat(s.mem_usage_mi.replace("Mi","").replace("Ki","").replace("Gi",""))/s.mem_capacity_mb*100,color:"text-blue-400"}),e.jsx(x,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:231:19",label:"Pod 数量",used:`${s.pod_count}`,total:`${s.pod_allocatable}`,unit:"",pct:s.pod_alloc_pct,color:"text-emerald-400"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:241:17",className:"mt-4 pt-3 border-t border-slate-800/50 space-y-1 text-[11px] text-slate-500",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:242:19",className:"flex justify-between",children:[e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:243:21",children:"CPU 容量 / 可分配"}),e.jsxs("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:244:21",className:"font-mono",children:[s.cpu_capacity," / ",s.cpu_allocatable," 核"]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:246:19",className:"flex justify-between",children:[e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:247:21",children:"内存容量 / 可分配"}),e.jsxs("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:248:21",className:"font-mono",children:[s.mem_capacity_mb," / ",s.mem_allocatable_mb," Mi"]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:250:19",className:"flex justify-between",children:[e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:251:21",children:"Pod 容量 / 可分配"}),e.jsxs("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:252:21",className:"font-mono",children:[s.pod_capacity," / ",s.pod_allocatable]})]})]})]})})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:260:11",className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsx(c,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:262:13",className:"bg-slate-900 border-slate-800",children:e.jsxs(o,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:263:15",className:"p-4",children:[e.jsxs("h2",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:264:17",className:"text-sm font-semibold text-slate-200 mb-3 flex items-center gap-2",children:[e.jsx(f,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:265:19",className:"h-4 w-4 text-blue-400"}),"节点条件"]}),!s.conditions||s.conditions.length===0?e.jsx("p",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:268:19",className:"text-xs text-slate-500 py-4 text-center",children:"无条件数据"}):e.jsx("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:270:19",className:"space-y-2",children:s.conditions.map((t,a)=>e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:272:23",className:"flex items-start gap-2 text-xs py-1.5 border-b border-slate-800/30 last:border-0",children:[e.jsxs(l,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:273:25",className:_(t.type,t.status),children:[t.status==="True"?e.jsx(f,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:274:53",className:"h-3 w-3 mr-1"}):null,t.type]}),e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:277:25",className:"flex-1 min-w-0",children:[t.reason&&e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:278:43",className:"text-slate-400 block",children:t.reason}),t.message&&e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:279:44",className:"text-slate-600 text-[11px] block truncate",children:t.message})]})]},a))})]})}),e.jsx(c,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:289:13",className:"bg-slate-900 border-slate-800",children:e.jsxs(o,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:290:15",className:"p-4",children:[e.jsxs("h2",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:291:17",className:"text-sm font-semibold text-slate-200 mb-3 flex items-center gap-2",children:[e.jsx(P,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:292:19",className:"h-4 w-4 text-amber-400"}),"污点 (Taints)"]}),!s.taints||s.taints.length===0?e.jsx("p",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:295:19",className:"text-xs text-slate-500 py-4 text-center",children:"无污点"}):e.jsx("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:297:19",className:"space-y-2",children:s.taints.map((t,a)=>e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:299:23",className:"flex items-center gap-2 text-xs",children:[e.jsx(l,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:300:25",className:y(t.effect),children:t.effect}),e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:301:25",className:"text-slate-300 font-mono",children:t.key}),t.value&&e.jsxs("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:302:37",className:"text-slate-500",children:["= ",t.value]})]},a))})]})})]}),s.labels&&s.labels.length>0&&e.jsx(c,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:313:13",className:"bg-slate-900 border-slate-800",children:e.jsxs(o,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:314:15",className:"p-4",children:[e.jsxs("h2",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:315:17",className:"text-sm font-semibold text-slate-200 mb-3 flex items-center gap-2",children:[e.jsx(L,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:316:19",className:"h-4 w-4 text-slate-400"}),"标签 (",s.labels.length,")"]}),e.jsx("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:318:17",className:"flex flex-wrap gap-1.5",children:s.labels.map((t,a)=>e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:320:21",className:"flex items-center gap-1 bg-slate-800/50 border border-slate-700/50 rounded px-2 py-0.5 text-[11px]",children:[e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:321:23",className:"text-slate-400",children:t.key}),e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:322:23",className:"text-slate-600",children:":"}),e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:323:23",className:"text-slate-300",children:t.value})]},a))})]})}),e.jsx(c,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:332:11",className:"bg-slate-900 border-slate-800",children:e.jsxs(o,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:333:13",className:"p-0",children:[e.jsx("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:334:15",className:"px-4 py-3 border-b border-slate-800",children:e.jsxs("h2",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:335:17",className:"text-sm font-semibold text-slate-200 flex items-center gap-2",children:[e.jsx(U,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:336:19",className:"h-4 w-4 text-cyan-400"}),"节点上的 Pod",e.jsx(l,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:338:19",className:"bg-slate-700/50 text-slate-300",children:s.pods?.length||0})]})}),!s.pods||s.pods.length===0?e.jsx("p",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:342:17",className:"text-xs text-slate-500 py-8 text-center",children:"该节点上暂无 Pod"}):e.jsxs(A,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:344:17",children:[e.jsx(E,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:345:19",children:e.jsxs(D,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:346:21",className:"border-slate-800 hover:bg-transparent",children:[e.jsx(n,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:347:23",className:"text-slate-400",children:"命名空间"}),e.jsx(n,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:348:23",className:"text-slate-400",children:"名称"}),e.jsx(n,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:349:23",className:"text-slate-400",children:"状态"}),e.jsx(n,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:350:23",className:"text-slate-400",children:"IP"}),e.jsx(n,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:351:23",className:"text-slate-400",children:"CPU 请求"}),e.jsx(n,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:352:23",className:"text-slate-400",children:"内存请求"}),e.jsx(n,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:353:23",className:"text-slate-400",children:"重启次数"})]})}),e.jsx(I,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:356:19",children:s.pods.map((t,a)=>e.jsxs(D,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:358:23",className:"border-slate-800 hover:bg-slate-800/30",children:[e.jsx(r,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:359:25",className:"text-sm text-slate-400",children:t.namespace}),e.jsx(r,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:360:25",className:"text-sm font-medium text-slate-200",children:t.name}),e.jsx(r,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:361:25",children:e.jsx(l,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:362:27",className:t.status==="Running"?"bg-emerald-500/20 text-emerald-400":t.status==="Pending"?"bg-amber-500/20 text-amber-400":"bg-red-500/20 text-red-400",children:t.status})}),e.jsx(r,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:368:25",className:"text-xs text-slate-400 font-mono",children:t.ip||"-"}),e.jsx(r,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:369:25",className:"text-xs text-slate-400",children:t.cpu_request_m>0?`${t.cpu_request_m}m`:"-"}),e.jsx(r,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:372:25",className:"text-xs text-slate-400",children:t.mem_request_mi>0?`${t.mem_request_mi}Mi`:"-"}),e.jsx(r,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:375:25",className:"text-xs",children:t.restart_count>0?e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:377:29",className:"text-amber-400",children:t.restart_count}):e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:379:29",className:"text-slate-600",children:"0"})})]},a))})]})]})})]}):e.jsx(c,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:134:9",className:"bg-slate-900 border-slate-800",children:e.jsxs(o,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:135:11",className:"py-16 text-center text-slate-500",children:[e.jsx(P,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:136:13",className:"h-8 w-8 mx-auto mb-2 opacity-50"}),"无法加载节点详情"]})})]})}export{X as default}; diff --git a/backend/static/assets/NodeDetailPage-MBEvAdV0.js b/backend/static/assets/NodeDetailPage-MBEvAdV0.js deleted file mode 100644 index 82fe2e4..0000000 --- a/backend/static/assets/NodeDetailPage-MBEvAdV0.js +++ /dev/null @@ -1 +0,0 @@ -import{i as R,k as M,r as p,j as e,m as g,n as k,q,B,L as j,T as P,w as S,A as F,N as L,v as U}from"./index-DfyorCky.js";import{C as c,a as o}from"./card-C55cvSHg.js";import{B as l}from"./badge-xNW8x0G1.js";import{T as A,a as E,b as D,c as n,d as I,e as r}from"./table-5sHV4Akp.js";import{k as z}from"./kubernetes-J8O09fK7.js";import{R as H}from"./refresh-cw-DUB_tAG-.js";import{C as f}from"./circle-check-DWcXrx2k.js";function X(){const{clusterCode:d,nodeName:i}=R();M();const[s,N]=p.useState(null),[h,u]=p.useState(!1),b=p.useCallback(async()=>{if(!(!d||!i)){u(!0);try{const t=await z.getNodeDetail(d,i);N(t)}catch{N(null)}finally{u(!1)}}},[d,i]);p.useEffect(()=>{b()},[b]);const x=({label:t,used:a,total:v,unit:w,pct:C,color:$})=>{const m=Math.min(Math.max(C||0,0),100),T=m>80?"bg-red-500":m>60?"bg-amber-500":"bg-emerald-500";return e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:53:7",className:"space-y-1.5",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:54:9",className:"flex items-center justify-between text-xs",children:[e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:55:11",className:"text-slate-400",children:t}),e.jsxs("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:56:11",className:"text-slate-300 font-medium",children:[a," / ",v," ",w]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:60:9",className:"flex items-center gap-2",children:[e.jsx("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:61:11",className:"flex-1 h-2 rounded-full bg-slate-700/50 overflow-hidden",children:e.jsx("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:62:13",className:`h-full rounded-full ${T} transition-all duration-500`,style:{width:`${m}%`}})}),e.jsxs("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:64:11",className:`text-xs font-semibold min-w-[40px] text-right ${$}`,children:[m.toFixed(0),"%"]})]})]})},_=(t,a)=>a==="True"?t==="Ready"?"bg-emerald-500/20 text-emerald-400":"bg-red-500/20 text-red-400":"bg-slate-500/20 text-slate-400",y=t=>t==="NoSchedule"?"bg-red-500/20 text-red-400 border-red-500/30":t==="NoExecute"?"bg-red-600/20 text-red-300 border-red-600/30":t==="PreferNoSchedule"?"bg-amber-500/20 text-amber-400 border-amber-500/30":"bg-slate-500/20 text-slate-400 border-slate-500/30";return e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:89:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:91:7",className:"flex items-center gap-2 text-sm text-slate-500",children:[e.jsx(g,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:92:9",to:"/kubernetes",className:"hover:text-slate-300 transition-colors",children:"集群"}),e.jsx(k,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:93:9",className:"h-3 w-3"}),e.jsx(g,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:94:9",to:`/kubernetes/${d}`,className:"hover:text-slate-300 transition-colors",children:d}),e.jsx(k,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:95:9",className:"h-3 w-3"}),e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:96:9",className:"text-slate-300",children:i})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:100:7",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:101:9",className:"flex items-center gap-3",children:[e.jsx("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:102:11",className:"flex items-center justify-center w-12 h-12 rounded-xl bg-slate-800 border border-slate-700",children:e.jsx(q,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:103:13",className:"h-6 w-6 text-blue-400"})}),e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:105:11",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:106:13",className:"flex items-center gap-2",children:[e.jsx("h1",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:107:15",className:"text-2xl font-bold text-slate-100",children:i}),e.jsx(l,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:108:15",className:s?.role==="master"?"bg-blue-500/20 text-blue-400 border-blue-500/30":"bg-slate-500/20 text-slate-400 border-slate-500/30",children:s?.role||"worker"}),e.jsx(l,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:111:15",className:s?.status==="Ready"?"bg-emerald-500/20 text-emerald-400":"bg-red-500/20 text-red-400",children:s?.status||"Unknown"})]}),e.jsxs("p",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:115:13",className:"text-sm text-slate-500 mt-0.5",children:[s?.internal_ip&&`${s.internal_ip}`,s?.hostname&&` · ${s.hostname}`]})]})]}),e.jsx(B,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:121:9",variant:"outline",size:"icon",className:"h-9 w-9 border-slate-700 text-slate-400",onClick:b,disabled:h,children:h?e.jsx(j,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:123:22",className:"h-4 w-4 animate-spin"}):e.jsx(H,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:123:69",className:"h-4 w-4"})})]}),h&&!s?e.jsx(c,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:128:9",className:"bg-slate-900 border-slate-800",children:e.jsx(o,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:129:11",className:"py-16 flex items-center justify-center",children:e.jsx(j,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:130:13",className:"h-6 w-6 animate-spin text-slate-500"})})}):s?e.jsxs(e.Fragment,{children:[e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:143:11",className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsx(c,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:145:13",className:"bg-slate-900 border-slate-800",children:e.jsxs(o,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:146:15",className:"p-4",children:[e.jsxs("h2",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:147:17",className:"text-sm font-semibold text-slate-200 mb-3 flex items-center gap-2",children:[e.jsx(S,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:148:19",className:"h-4 w-4 text-cyan-400"}),"系统信息"]}),e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:150:17",className:"space-y-2 text-xs",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:151:19",className:"flex items-center justify-between py-1.5 border-b border-slate-800/50",children:[e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:152:21",className:"text-slate-500",children:"容器运行时"}),e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:153:21",className:"text-slate-300 font-mono",children:s.container_runtime||"-"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:155:19",className:"flex items-center justify-between py-1.5 border-b border-slate-800/50",children:[e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:156:21",className:"text-slate-500",children:"Kubelet"}),e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:157:21",className:"text-slate-300 font-mono",children:s.kubelet_version||"-"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:159:19",className:"flex items-center justify-between py-1.5 border-b border-slate-800/50",children:[e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:160:21",className:"text-slate-500",children:"操作系统"}),e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:161:21",className:"text-slate-300",children:s.os_image||"-"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:163:19",className:"flex items-center justify-between py-1.5 border-b border-slate-800/50",children:[e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:164:21",className:"text-slate-500",children:"内核版本"}),e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:165:21",className:"text-slate-300 font-mono",children:s.kernel_version||"-"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:167:19",className:"flex items-center justify-between py-1.5 border-b border-slate-800/50",children:[e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:168:21",className:"text-slate-500",children:"架构"}),e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:169:21",className:"text-slate-300 font-mono",children:s.architecture||"-"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:171:19",className:"flex items-center justify-between py-1.5 border-b border-slate-800/50",children:[e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:172:21",className:"text-slate-500",children:"创建时间"}),e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:173:21",className:"text-slate-300",children:s.creation_time?new Date(s.creation_time).toLocaleString("zh-CN"):"-"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:175:19",className:"flex items-center justify-between py-1.5",children:[e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:176:21",className:"text-slate-500",children:"Pod CIDR"}),e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:177:21",className:"text-slate-300 font-mono",children:s.pod_cidr||"-"})]})]})]})}),e.jsx(c,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:184:13",className:"bg-slate-900 border-slate-800",children:e.jsxs(o,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:185:15",className:"p-4",children:[e.jsxs("h2",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:186:17",className:"text-sm font-semibold text-slate-200 mb-3 flex items-center gap-2",children:[e.jsx(F,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:187:19",className:"h-4 w-4 text-emerald-400"}),"资源分配率"]}),e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:189:17",className:"space-y-4 mt-4",children:[e.jsx(x,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:191:19",label:"CPU 已分配",used:`${(s.cpu_request_m/1e3).toFixed(2)} 核`,total:`${s.cpu_allocatable} 核`,unit:"",pct:s.cpu_alloc_pct,color:"text-emerald-400"}),s.cpu_usage_m&&e.jsx(x,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:201:21",label:"CPU 实时使用",used:s.cpu_usage_m,total:`${s.cpu_capacity} 核`,unit:"",pct:parseFloat(s.cpu_usage_m.replace("m",""))/(s.cpu_capacity*1e3)*100,color:"text-blue-400"}),e.jsx(x,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:211:19",label:"内存已分配",used:`${s.mem_request_mi} Mi`,total:`${s.mem_allocatable_mb} Mi`,unit:"",pct:s.mem_alloc_pct,color:"text-emerald-400"}),s.mem_usage_mi&&e.jsx(x,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:221:21",label:"内存实时使用",used:s.mem_usage_mi,total:`${s.mem_capacity_mb} Mi`,unit:"",pct:parseFloat(s.mem_usage_mi.replace("Mi","").replace("Ki","").replace("Gi",""))/s.mem_capacity_mb*100,color:"text-blue-400"}),e.jsx(x,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:231:19",label:"Pod 数量",used:`${s.pod_count}`,total:`${s.pod_allocatable}`,unit:"",pct:s.pod_alloc_pct,color:"text-emerald-400"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:241:17",className:"mt-4 pt-3 border-t border-slate-800/50 space-y-1 text-[11px] text-slate-500",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:242:19",className:"flex justify-between",children:[e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:243:21",children:"CPU 容量 / 可分配"}),e.jsxs("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:244:21",className:"font-mono",children:[s.cpu_capacity," / ",s.cpu_allocatable," 核"]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:246:19",className:"flex justify-between",children:[e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:247:21",children:"内存容量 / 可分配"}),e.jsxs("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:248:21",className:"font-mono",children:[s.mem_capacity_mb," / ",s.mem_allocatable_mb," Mi"]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:250:19",className:"flex justify-between",children:[e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:251:21",children:"Pod 容量 / 可分配"}),e.jsxs("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:252:21",className:"font-mono",children:[s.pod_capacity," / ",s.pod_allocatable]})]})]})]})})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:260:11",className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsx(c,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:262:13",className:"bg-slate-900 border-slate-800",children:e.jsxs(o,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:263:15",className:"p-4",children:[e.jsxs("h2",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:264:17",className:"text-sm font-semibold text-slate-200 mb-3 flex items-center gap-2",children:[e.jsx(f,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:265:19",className:"h-4 w-4 text-blue-400"}),"节点条件"]}),!s.conditions||s.conditions.length===0?e.jsx("p",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:268:19",className:"text-xs text-slate-500 py-4 text-center",children:"无条件数据"}):e.jsx("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:270:19",className:"space-y-2",children:s.conditions.map((t,a)=>e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:272:23",className:"flex items-start gap-2 text-xs py-1.5 border-b border-slate-800/30 last:border-0",children:[e.jsxs(l,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:273:25",className:_(t.type,t.status),children:[t.status==="True"?e.jsx(f,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:274:53",className:"h-3 w-3 mr-1"}):null,t.type]}),e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:277:25",className:"flex-1 min-w-0",children:[t.reason&&e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:278:43",className:"text-slate-400 block",children:t.reason}),t.message&&e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:279:44",className:"text-slate-600 text-[11px] block truncate",children:t.message})]})]},a))})]})}),e.jsx(c,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:289:13",className:"bg-slate-900 border-slate-800",children:e.jsxs(o,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:290:15",className:"p-4",children:[e.jsxs("h2",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:291:17",className:"text-sm font-semibold text-slate-200 mb-3 flex items-center gap-2",children:[e.jsx(P,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:292:19",className:"h-4 w-4 text-amber-400"}),"污点 (Taints)"]}),!s.taints||s.taints.length===0?e.jsx("p",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:295:19",className:"text-xs text-slate-500 py-4 text-center",children:"无污点"}):e.jsx("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:297:19",className:"space-y-2",children:s.taints.map((t,a)=>e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:299:23",className:"flex items-center gap-2 text-xs",children:[e.jsx(l,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:300:25",className:y(t.effect),children:t.effect}),e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:301:25",className:"text-slate-300 font-mono",children:t.key}),t.value&&e.jsxs("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:302:37",className:"text-slate-500",children:["= ",t.value]})]},a))})]})})]}),s.labels&&s.labels.length>0&&e.jsx(c,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:313:13",className:"bg-slate-900 border-slate-800",children:e.jsxs(o,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:314:15",className:"p-4",children:[e.jsxs("h2",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:315:17",className:"text-sm font-semibold text-slate-200 mb-3 flex items-center gap-2",children:[e.jsx(L,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:316:19",className:"h-4 w-4 text-slate-400"}),"标签 (",s.labels.length,")"]}),e.jsx("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:318:17",className:"flex flex-wrap gap-1.5",children:s.labels.map((t,a)=>e.jsxs("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:320:21",className:"flex items-center gap-1 bg-slate-800/50 border border-slate-700/50 rounded px-2 py-0.5 text-[11px]",children:[e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:321:23",className:"text-slate-400",children:t.key}),e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:322:23",className:"text-slate-600",children:":"}),e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:323:23",className:"text-slate-300",children:t.value})]},a))})]})}),e.jsx(c,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:332:11",className:"bg-slate-900 border-slate-800",children:e.jsxs(o,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:333:13",className:"p-0",children:[e.jsx("div",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:334:15",className:"px-4 py-3 border-b border-slate-800",children:e.jsxs("h2",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:335:17",className:"text-sm font-semibold text-slate-200 flex items-center gap-2",children:[e.jsx(U,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:336:19",className:"h-4 w-4 text-cyan-400"}),"节点上的 Pod",e.jsx(l,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:338:19",className:"bg-slate-700/50 text-slate-300",children:s.pods?.length||0})]})}),!s.pods||s.pods.length===0?e.jsx("p",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:342:17",className:"text-xs text-slate-500 py-8 text-center",children:"该节点上暂无 Pod"}):e.jsxs(A,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:344:17",children:[e.jsx(E,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:345:19",children:e.jsxs(D,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:346:21",className:"border-slate-800 hover:bg-transparent",children:[e.jsx(n,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:347:23",className:"text-slate-400",children:"命名空间"}),e.jsx(n,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:348:23",className:"text-slate-400",children:"名称"}),e.jsx(n,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:349:23",className:"text-slate-400",children:"状态"}),e.jsx(n,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:350:23",className:"text-slate-400",children:"IP"}),e.jsx(n,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:351:23",className:"text-slate-400",children:"CPU 请求"}),e.jsx(n,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:352:23",className:"text-slate-400",children:"内存请求"}),e.jsx(n,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:353:23",className:"text-slate-400",children:"重启次数"})]})}),e.jsx(I,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:356:19",children:s.pods.map((t,a)=>e.jsxs(D,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:358:23",className:"border-slate-800 hover:bg-slate-800/30",children:[e.jsx(r,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:359:25",className:"text-sm text-slate-400",children:t.namespace}),e.jsx(r,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:360:25",className:"text-sm font-medium text-slate-200",children:t.name}),e.jsx(r,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:361:25",children:e.jsx(l,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:362:27",className:t.status==="Running"?"bg-emerald-500/20 text-emerald-400":t.status==="Pending"?"bg-amber-500/20 text-amber-400":"bg-red-500/20 text-red-400",children:t.status})}),e.jsx(r,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:368:25",className:"text-xs text-slate-400 font-mono",children:t.ip||"-"}),e.jsx(r,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:369:25",className:"text-xs text-slate-400",children:t.cpu_request_m>0?`${t.cpu_request_m}m`:"-"}),e.jsx(r,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:372:25",className:"text-xs text-slate-400",children:t.mem_request_mi>0?`${t.mem_request_mi}Mi`:"-"}),e.jsx(r,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:375:25",className:"text-xs",children:t.restart_count>0?e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:377:29",className:"text-amber-400",children:t.restart_count}):e.jsx("span",{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:379:29",className:"text-slate-600",children:"0"})})]},a))})]})]})})]}):e.jsx(c,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:134:9",className:"bg-slate-900 border-slate-800",children:e.jsxs(o,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:135:11",className:"py-16 text-center text-slate-500",children:[e.jsx(P,{"code-path":"src/components/kubernetes/NodeDetailPage.tsx:136:13",className:"h-8 w-8 mx-auto mb-2 opacity-50"}),"无法加载节点详情"]})})]})}export{X as default}; diff --git a/backend/static/assets/PipelineEditor-DrEZIuvh.js b/backend/static/assets/PipelineEditor-DrEZIuvh.js deleted file mode 100644 index 482ad39..0000000 --- a/backend/static/assets/PipelineEditor-DrEZIuvh.js +++ /dev/null @@ -1 +0,0 @@ -import{g as B,i as Ke,r as i,a as Xe,j as e,L as J,a0 as V,B as p,t as Pe,a4 as Ee,n as ve,I as v,x as ue,a9 as Ye,a5 as Qe,aa as es,v as ss,F as ts,H as os,q as ns,D as cs,b as ds,c as is,d as rs}from"./index-DfyorCky.js";import{C as P,a as E}from"./card-C55cvSHg.js";import{B as j}from"./badge-xNW8x0G1.js";import{T as as,a as ps,b as k,c as C}from"./tabs-CIh_yD4s.js";import{S as $,a as R,b as O,c as I,d as h,C as ls}from"./select-D5qUzdAs.js";import{T as xs}from"./textarea-NXY8u32k.js";import{S as G}from"./switch-CGiGgOnh.js";import{L as y}from"./label-BK0h2apY.js";import{t as m}from"./index-a3ybMjbR.js";import{d as ms,p as g}from"./deploy-B3Sg3N1U.js";import{S as hs}from"./save-DoGGjfwC.js";import{P as ys}from"./play-cdPayOtJ.js";import{P as D}from"./plus-CUG-9kpu.js";import{T as S}from"./trash-2-Dx32pOzT.js";import{C as Ne}from"./circle-stop-s4wxdTEV.js";import{F as gs}from"./file-text-C9G5abwR.js";import{U as js}from"./user-plus-BwUWtcQl.js";import{Z as Ps}from"./zap-D2uWSK32.js";import{W as we}from"./wrench-KfbhOOJm.js";import"./index-CWVNW_qu.js";const Es=[["path",{d:"M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2",key:"18mbvz"}],["path",{d:"M6.453 15h11.094",key:"3shlmq"}],["path",{d:"M8.5 2h7",key:"csnxdl"}]],vs=B("flask-conical",Es);const us=[["path",{d:"M18 11V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2",key:"1fvzgz"}],["path",{d:"M14 10V4a2 2 0 0 0-2-2a2 2 0 0 0-2 2v2",key:"1kc0my"}],["path",{d:"M10 10.5V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2v8",key:"10h0bg"}],["path",{d:"M18 8a2 2 0 1 1 4 0v6a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15",key:"1s1gnw"}]],be=B("hand",us);const Ns=[["path",{d:"M15 12h-5",key:"r7krc0"}],["path",{d:"M15 8h-5",key:"1khuty"}],["path",{d:"M19 17V5a2 2 0 0 0-2-2H4",key:"zz82l3"}],["path",{d:"M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3",key:"1ph1d7"}]],bs=B("scroll-text",Ns);const fs=[["path",{d:"M18 16.98h-5.99c-1.1 0-1.95.94-2.48 1.9A4 4 0 0 1 2 17c.01-.7.2-1.4.57-2",key:"q3hayz"}],["path",{d:"m6 17 3.13-5.78c.53-.97.1-2.18-.5-3.1a4 4 0 1 1 6.89-4.06",key:"1go1hn"}],["path",{d:"m12 6 3.13 5.73C15.66 12.7 16.9 13 18 13a4 4 0 0 1 0 8",key:"qlwsc0"}]],fe=B("webhook",fs),ws={source:"拉取代码",build:"构建",deploy:"部署",test:"测试",custom:"自定义"},ke={GitBranch:V,Wrench:we,Server:ns,FlaskConical:vs,Zap:Ps,Terminal:os,FileCode:ts,Container:ss};function ks(){return`tsk-${Date.now()}-${Math.random().toString(36).slice(2,7)}`}function Ce(r){if(!r)return"-";if(r<60)return`${r}s`;const d=Math.floor(r/60),c=r%60;return c>0?`${d}分${c}秒`:`${d}分`}function Cs({task:r,selected:d,onSelect:c,onDelete:u}){const a=ke[r.icon]||we;return e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:75:5",onClick:c,className:`flex items-center gap-3 p-3 rounded-md border cursor-pointer transition-all group ${d?"border-blue-500 bg-blue-500/10":"border-[var(--dg-border)] hover:border-slate-400 bg-[var(--dg-bg-secondary)]"}`,children:[e.jsx("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:81:7",className:`p-1.5 rounded ${d?"bg-blue-100":"bg-slate-100 dark:bg-slate-800"}`,children:e.jsx(a,{"code-path":"src/components/deploy/PipelineEditor.tsx:82:9",className:`w-4 h-4 ${d?"text-blue-600":"text-[var(--dg-text-secondary)]"}`})}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:84:7",className:"flex-1 min-w-0",children:[e.jsx("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:85:9",className:"text-sm font-medium text-[var(--dg-text-primary)] truncate",children:r.name}),e.jsx("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:86:9",className:"text-xs text-[var(--dg-text-secondary)]",children:r.type})]}),e.jsx(p,{"code-path":"src/components/deploy/PipelineEditor.tsx:88:7",variant:"ghost",size:"icon",className:"h-6 w-6 opacity-0 group-hover:opacity-100",onClick:x=>{x.stopPropagation(),u()},children:e.jsx(S,{"code-path":"src/components/deploy/PipelineEditor.tsx:89:9",className:"w-3.5 h-3.5 text-red-500"})})]})}function Ss({task:r,onUpdate:d}){return r?e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:99:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:100:7",className:"space-y-1",children:[e.jsx(y,{"code-path":"src/components/deploy/PipelineEditor.tsx:100:34",className:"text-xs",children:"任务名称"}),e.jsx(v,{"code-path":"src/components/deploy/PipelineEditor.tsx:100:73",value:r.name,onChange:c=>d({...r,name:c.target.value}),className:"h-8 text-sm"})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:101:7",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:102:9",className:"space-y-1",children:[e.jsx(y,{"code-path":"src/components/deploy/PipelineEditor.tsx:102:36",className:"text-xs",children:"类型"}),e.jsxs($,{"code-path":"src/components/deploy/PipelineEditor.tsx:103:11",value:r.type,onValueChange:c=>d({...r,type:c}),children:[e.jsx(R,{"code-path":"src/components/deploy/PipelineEditor.tsx:103:89",className:"h-8 text-sm",children:e.jsx(O,{"code-path":"src/components/deploy/PipelineEditor.tsx:103:128"})}),e.jsxs(I,{"code-path":"src/components/deploy/PipelineEditor.tsx:104:13",children:[e.jsx(h,{"code-path":"src/components/deploy/PipelineEditor.tsx:104:28",value:"build",children:"构建"}),e.jsx(h,{"code-path":"src/components/deploy/PipelineEditor.tsx:104:69",value:"deploy",children:"部署"}),e.jsx(h,{"code-path":"src/components/deploy/PipelineEditor.tsx:104:111",value:"test",children:"测试"}),e.jsx(h,{"code-path":"src/components/deploy/PipelineEditor.tsx:104:151",value:"custom",children:"自定义"})]})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:106:9",className:"space-y-1",children:[e.jsx(y,{"code-path":"src/components/deploy/PipelineEditor.tsx:106:36",className:"text-xs",children:"图标"}),e.jsxs($,{"code-path":"src/components/deploy/PipelineEditor.tsx:107:11",value:r.icon,onValueChange:c=>d({...r,icon:c}),children:[e.jsx(R,{"code-path":"src/components/deploy/PipelineEditor.tsx:107:89",className:"h-8 text-sm",children:e.jsx(O,{"code-path":"src/components/deploy/PipelineEditor.tsx:107:128"})}),e.jsx(I,{"code-path":"src/components/deploy/PipelineEditor.tsx:108:13",children:Object.entries(ke).map(([c])=>e.jsx(h,{"code-path":"src/components/deploy/PipelineEditor.tsx:108:69",value:c,children:c},c))})]})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:111:7",className:"space-y-1",children:[e.jsx(y,{"code-path":"src/components/deploy/PipelineEditor.tsx:111:34",className:"text-xs",children:"脚本类型"}),e.jsx("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:112:9",className:"flex gap-2",children:["shell","python"].map(c=>e.jsx(j,{"code-path":"src/components/deploy/PipelineEditor.tsx:112:68",variant:r.script_type===c?"default":"outline",className:"cursor-pointer text-xs",onClick:()=>d({...r,script_type:c}),children:c},c))})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:114:7",className:"space-y-1",children:[e.jsx(y,{"code-path":"src/components/deploy/PipelineEditor.tsx:114:34",className:"text-xs",children:"脚本内容"}),e.jsx(xs,{"code-path":"src/components/deploy/PipelineEditor.tsx:115:9",value:r.script,onChange:c=>d({...r,script:c.target.value}),className:"font-mono text-xs min-h-[200px] bg-slate-950 text-green-400",placeholder:"#!/bin/bash\\nset -e\\necho 'hello'"})]})]}):e.jsx("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:97:21",className:"p-6 text-center text-[var(--dg-text-secondary)] text-sm",children:"选择一个任务开始编辑"})}function _s({open:r,onClose:d,run:c,logs:u}){return e.jsx(cs,{"code-path":"src/components/deploy/PipelineEditor.tsx:124:5",open:r,onOpenChange:d,children:e.jsxs(ds,{"code-path":"src/components/deploy/PipelineEditor.tsx:125:7",className:"max-w-3xl max-h-[80vh] overflow-y-auto",children:[e.jsx(is,{"code-path":"src/components/deploy/PipelineEditor.tsx:126:9",children:e.jsxs(rs,{"code-path":"src/components/deploy/PipelineEditor.tsx:126:23",className:"flex items-center gap-2",children:[e.jsx(bs,{"code-path":"src/components/deploy/PipelineEditor.tsx:126:72",className:"w-5 h-5"}),"执行日志 #",c?.build_number||c?.id]})}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:127:9",className:"space-y-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:128:11",className:"flex flex-wrap gap-3 text-sm text-[var(--dg-text-secondary)]",children:[e.jsxs("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:129:13",children:["触发方式: ",c?.triggered_by||"manual"]}),e.jsxs("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:130:13",children:["分支: ",c?.branch||"-"]}),e.jsxs("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:131:13",children:["耗时: ",Ce(c?.duration)]}),e.jsx("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:132:13",children:c?.created_at?new Date(c.created_at).toLocaleString("zh-CN"):"-"})]}),e.jsx("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:134:11",className:"bg-slate-950 rounded-md p-3 max-h-[50vh] overflow-y-auto font-mono text-xs",children:u.length===0?e.jsx("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:136:15",className:"text-slate-500 py-4 text-center",children:"暂无日志"}):u.map((a,x)=>e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:139:17",className:"flex gap-2 py-0.5",children:[e.jsxs("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:140:19",className:"text-slate-500 shrink-0",children:["[",a.time,"]"]}),e.jsxs("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:141:19",className:a.level==="error"?"text-red-400":a.level==="warn"?"text-yellow-400":a.level==="success"?"text-green-400":"text-slate-300",children:[a.level==="success"?"✓":a.level==="error"?"✗":a.level==="warn"?"!":">"," ",a.message]})]},x))})]})]})})}function Ks(){const{code:r}=Ke(),d=r||"",[c,u]=i.useState(null),[a,x]=i.useState([]),[_,T]=i.useState(null),[Se,W]=i.useState({}),[_e,Te]=i.useState("flow"),[Me,F]=i.useState(!0),[Z,K]=i.useState(!1),[H,X]=i.useState([]),[Y,ze]=i.useState([]),[U,Q]=i.useState([]),[Le,ee]=i.useState(!1),[N,M]=i.useState("manual"),[se,te]=i.useState(""),[oe,ne]=i.useState(""),[ce,de]=i.useState(""),[b,f]=i.useState([]),[z,ie]=i.useState(""),[q,re]=i.useState(""),[ae,Ae]=i.useState("editor"),[De,pe]=i.useState(!1),[Ve,$e]=i.useState(null),[Re,le]=i.useState([]),xe=Xe(),me=i.useCallback(async()=>{try{const s=await ms.getEnvironments();ze(Array.isArray(s)?s:s?.list||[])}catch{}},[]),L=i.useCallback(async()=>{ee(!0);try{const s=await g.getMembers(d);Q(Array.isArray(s)?s:s?.data||[])}catch{Q([])}finally{ee(!1)}},[d]),A=i.useCallback(async()=>{try{const s=await g.getRuns(d);X(Array.isArray(s)?s:s?.list||[])}catch{X([])}},[d]);i.useEffect(()=>{(async()=>{F(!0);try{const s=await g.getPipelineDetail(d);if(!s||!s.id){u(null),F(!1);return}u(s),M(s.trigger_mode||"manual"),te(s.watch_branches||""),ne(s.cron_expr||""),de(s.webhook_token||""),ie(s.environment_id||"");try{const n=s.variables?JSON.parse(s.variables):{};f(Object.entries(n).map(([o,t])=>[o,String(t)]))}catch{f([])}try{const n=s.stages?JSON.parse(s.stages):[],o=Array.isArray(n)?n:[];x(o);const t={};o.forEach(l=>{t[l.id]=!0}),W(t)}catch{x([])}}catch{m.error("加载失败")}finally{F(!1)}})(),me(),L(),A()},[d,me,L,A]);const he=a.flatMap(s=>s.tasks).find(s=>s.id===_)||null,Oe=s=>{x(n=>n.map(o=>({...o,tasks:o.tasks.map(t=>t.id===s.id?s:t)})))},Ie=s=>{const n={id:ks(),name:"新任务",type:"build",icon:"Wrench",config:{},script:"",script_type:"shell"};x(o=>o.map((t,l)=>l===s?{...t,tasks:[...t.tasks,n]}:t))},Be=s=>{x(n=>n.map(o=>({...o,tasks:o.tasks.filter(t=>t.id!==s)}))),_===s&&T(null)},We=()=>{const s={id:`stg-${Date.now()}`,name:"新阶段",type:"custom",tasks:[]};x(n=>[...n,s])},Fe=s=>{x(n=>n.filter((o,t)=>t!==s))},ye=(s,n)=>{const o=s+n;if(o<0||o>=a.length)return;const t=[...a];[t[s],t[o]]=[t[o],t[s]],x(t)},He=async()=>{K(!0);try{await g.updatePipeline(d,{stages:JSON.stringify(a),trigger_mode:N,watch_branches:se,cron_expr:oe,webhook_token:ce,environment_id:z?Number(z):null,variables:JSON.stringify(Object.fromEntries(b.filter(([s])=>s.trim())))}),m.success("已保存")}catch{m.error("保存失败")}finally{K(!1)}},Ue=async()=>{try{await g.triggerPipeline(d),m.success("已触发"),A()}catch{m.error("触发失败")}},qe=async s=>{if(await xe({title:"停止运行",description:"确定要停止此运行吗?",variant:"destructive"}))try{await g.stopRun(d,s),m.success("已停止"),A()}catch{m.error("停止失败")}},Je=async s=>{$e(s),pe(!0);try{const n=await g.getRunLog(d,s.id);le(n?.logs||[])}catch{le([])}},Ge=async()=>{if(!q.trim()){m.error("请输入用户名");return}try{await g.addMember(d,{username:q.trim(),role:ae}),m.success("已添加成员"),re(""),L()}catch(s){m.error(s?.message||"添加失败")}},ge=async s=>{if(await xe({title:"移除成员",description:"确定要移除此成员吗?",variant:"destructive"}))try{await g.removeMember(d,s),m.success("已移除"),L()}catch{m.error("移除失败")}},w=Y.find(s=>String(s.id)===String(z));return Me?e.jsx("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:325:23",className:"flex items-center justify-center py-20",children:e.jsx(J,{"code-path":"src/components/deploy/PipelineEditor.tsx:325:79",className:"w-6 h-6 animate-spin"})}):c?e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:329:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:331:7",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:332:9",children:[e.jsxs("h1",{"code-path":"src/components/deploy/PipelineEditor.tsx:333:11",className:"text-xl font-bold flex items-center gap-2 text-[var(--dg-text-primary)]",children:[e.jsx(V,{"code-path":"src/components/deploy/PipelineEditor.tsx:334:13",className:"w-5 h-5 text-blue-500"}),c.name,w&&e.jsx(j,{"code-path":"src/components/deploy/PipelineEditor.tsx:336:26",style:{backgroundColor:w.color+"20",color:w.color,borderColor:w.color+"40"},className:"text-xs ml-2",children:w.display_name})]}),e.jsxs("p",{"code-path":"src/components/deploy/PipelineEditor.tsx:338:11",className:"text-sm text-[var(--dg-text-secondary)] mt-1",children:["code: ",c.code," · ",c.description]})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:340:9",className:"flex items-center gap-2",children:[e.jsxs(p,{"code-path":"src/components/deploy/PipelineEditor.tsx:341:11",variant:"outline",onClick:He,disabled:Z,children:[e.jsx(hs,{"code-path":"src/components/deploy/PipelineEditor.tsx:341:76",className:"w-4 h-4 mr-1"}),Z?"保存中...":"保存"]}),e.jsxs(p,{"code-path":"src/components/deploy/PipelineEditor.tsx:342:11",variant:"default",onClick:Ue,children:[e.jsx(ys,{"code-path":"src/components/deploy/PipelineEditor.tsx:342:61",className:"w-4 h-4 mr-1"}),"运行"]})]})]}),e.jsx(P,{"code-path":"src/components/deploy/PipelineEditor.tsx:347:7",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsxs(E,{"code-path":"src/components/deploy/PipelineEditor.tsx:348:9",className:"p-3 flex items-center gap-3",children:[e.jsx(Pe,{"code-path":"src/components/deploy/PipelineEditor.tsx:349:11",className:"w-4 h-4 text-[var(--dg-text-secondary)]"}),e.jsx("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:350:11",className:"text-sm text-[var(--dg-text-secondary)]",children:"部署环境:"}),e.jsxs($,{"code-path":"src/components/deploy/PipelineEditor.tsx:351:11",value:String(z),onValueChange:s=>ie(s==="__none"?"":s),children:[e.jsx(R,{"code-path":"src/components/deploy/PipelineEditor.tsx:352:13",className:"w-40 h-8 text-sm",children:e.jsx(O,{"code-path":"src/components/deploy/PipelineEditor.tsx:352:57",placeholder:"选择环境"})}),e.jsxs(I,{"code-path":"src/components/deploy/PipelineEditor.tsx:353:13",children:[e.jsx(h,{"code-path":"src/components/deploy/PipelineEditor.tsx:354:15",value:"__none",children:"未指定"}),Y.map(s=>e.jsx(h,{"code-path":"src/components/deploy/PipelineEditor.tsx:356:17",value:String(s.id),children:e.jsxs("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:357:19",className:"flex items-center gap-1.5",children:[e.jsx("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:358:21",className:"w-2 h-2 rounded-full inline-block",style:{backgroundColor:s.color}}),s.display_name]})},s.id))]})]}),e.jsx("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:365:11",className:"text-xs text-[var(--dg-text-secondary)] opacity-70",children:"选择后流水线执行记录会关联到对应环境"})]})}),e.jsxs(as,{"code-path":"src/components/deploy/PipelineEditor.tsx:369:7",value:_e,onValueChange:Te,children:[e.jsxs(ps,{"code-path":"src/components/deploy/PipelineEditor.tsx:370:9",children:[e.jsx(k,{"code-path":"src/components/deploy/PipelineEditor.tsx:371:11",value:"flow",children:"流程配置"}),e.jsx(k,{"code-path":"src/components/deploy/PipelineEditor.tsx:372:11",value:"triggers",children:"触发设置"}),e.jsx(k,{"code-path":"src/components/deploy/PipelineEditor.tsx:373:11",value:"variables",children:"变量"}),e.jsxs(k,{"code-path":"src/components/deploy/PipelineEditor.tsx:374:11",value:"runs",children:["发布记录 (",H.length,")"]}),e.jsxs(k,{"code-path":"src/components/deploy/PipelineEditor.tsx:375:11",value:"members",children:["成员管理 (",U.length,")"]})]}),e.jsx(C,{"code-path":"src/components/deploy/PipelineEditor.tsx:379:9",value:"flow",className:"mt-3",children:e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:380:11",className:"flex gap-4",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:381:13",className:"flex-1 space-y-2",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:382:15",className:"flex items-center justify-between mb-2",children:[e.jsxs("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:383:17",className:"text-sm font-medium text-[var(--dg-text-primary)]",children:["流水线阶段 (",a.length,")"]}),e.jsxs(p,{"code-path":"src/components/deploy/PipelineEditor.tsx:384:17",size:"sm",onClick:We,children:[e.jsx(D,{"code-path":"src/components/deploy/PipelineEditor.tsx:384:60",className:"w-3.5 h-3.5 mr-1"}),"添加阶段"]})]}),a.length===0?e.jsx("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:387:17",className:"text-center py-12 border-2 border-dashed rounded-lg text-[var(--dg-text-secondary)]",children:"点击「添加阶段」开始"}):a.map((s,n)=>{const o=Se[s.id]!==!1;return e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:392:19",className:"space-y-1",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:393:21",className:"flex items-center gap-2 px-3 py-2 bg-[var(--dg-bg-tertiary)] rounded-t-md border border-b-0 border-[var(--dg-border)] cursor-pointer",onClick:()=>W(t=>({...t,[s.id]:!o})),children:[e.jsx(p,{"code-path":"src/components/deploy/PipelineEditor.tsx:397:23",variant:"ghost",size:"icon",className:"h-5 w-5 p-0",onClick:t=>{t.stopPropagation(),W(l=>({...l,[s.id]:!o}))},children:o?e.jsx(Ee,{"code-path":"src/components/deploy/PipelineEditor.tsx:398:39",className:"w-3.5 h-3.5"}):e.jsx(ve,{"code-path":"src/components/deploy/PipelineEditor.tsx:398:81",className:"w-3.5 h-3.5"})}),e.jsx(v,{"code-path":"src/components/deploy/PipelineEditor.tsx:400:23",value:s.name,onChange:t=>x(l=>l.map((je,Ze)=>Ze===n?{...je,name:t.target.value}:je)),className:"h-7 text-sm font-medium border-none bg-transparent shadow-none flex-1 px-1",onClick:t=>t.stopPropagation()}),e.jsxs("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:406:23",className:"text-xs text-[var(--dg-text-secondary)]",children:[s.tasks.length," 任务"]}),e.jsx(j,{"code-path":"src/components/deploy/PipelineEditor.tsx:407:23",variant:"secondary",className:"text-xs",children:ws[s.type]||s.type}),e.jsx(p,{"code-path":"src/components/deploy/PipelineEditor.tsx:408:23",variant:"ghost",size:"icon",className:"h-6 w-6",onClick:t=>{t.stopPropagation(),ye(n,-1)},disabled:n===0,children:e.jsx(ls,{"code-path":"src/components/deploy/PipelineEditor.tsx:408:168",className:"w-3.5 h-3.5"})}),e.jsx(p,{"code-path":"src/components/deploy/PipelineEditor.tsx:409:23",variant:"ghost",size:"icon",className:"h-6 w-6",onClick:t=>{t.stopPropagation(),ye(n,1)},disabled:n===a.length-1,children:e.jsx(Ee,{"code-path":"src/components/deploy/PipelineEditor.tsx:409:183",className:"w-3.5 h-3.5"})}),e.jsx(p,{"code-path":"src/components/deploy/PipelineEditor.tsx:410:23",variant:"ghost",size:"icon",className:"h-6 w-6 text-red-500",onClick:t=>{t.stopPropagation(),Fe(n)},children:e.jsx(S,{"code-path":"src/components/deploy/PipelineEditor.tsx:410:158",className:"w-3.5 h-3.5"})})]}),o&&e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:413:21",className:"border border-[var(--dg-border)] rounded-b-md p-3 space-y-2",children:[s.tasks.map(t=>e.jsx(Cs,{"code-path":"src/components/deploy/PipelineEditor.tsx:414:46",task:t,selected:_===t.id,onSelect:()=>T(_===t.id?null:t.id),onDelete:()=>Be(t.id)},t.id)),e.jsxs(p,{"code-path":"src/components/deploy/PipelineEditor.tsx:415:23",variant:"outline",size:"sm",className:"w-full h-8 text-xs",onClick:()=>Ie(n),children:[e.jsx(D,{"code-path":"src/components/deploy/PipelineEditor.tsx:415:125",className:"w-3 h-3 mr-1"}),"添加任务"]})]}),nT(null),children:"关闭"})]}),e.jsx(Ss,{"code-path":"src/components/deploy/PipelineEditor.tsx:426:15",task:he,onUpdate:Oe,onClose:()=>T(null)})]})]})}),e.jsx(C,{"code-path":"src/components/deploy/PipelineEditor.tsx:432:9",value:"triggers",className:"mt-3",children:e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:433:11",className:"space-y-4 max-w-lg",children:[e.jsx(P,{"code-path":"src/components/deploy/PipelineEditor.tsx:434:13",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsxs(E,{"code-path":"src/components/deploy/PipelineEditor.tsx:434:85",className:"pt-6 space-y-4",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:435:15",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:435:66",className:"flex items-center gap-2 text-[var(--dg-text-primary)]",children:[e.jsx(V,{"code-path":"src/components/deploy/PipelineEditor.tsx:435:137",className:"w-5 h-5 text-blue-500"}),e.jsx("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:435:184",className:"font-medium",children:"Git Push 触发"})]}),e.jsx(G,{"code-path":"src/components/deploy/PipelineEditor.tsx:435:238",checked:N==="git_push",onCheckedChange:s=>M(s?"git_push":"manual")})]}),N==="git_push"&&e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:436:46",className:"space-y-1",children:[e.jsx(y,{"code-path":"src/components/deploy/PipelineEditor.tsx:436:73",children:"监听分支"}),e.jsx(v,{"code-path":"src/components/deploy/PipelineEditor.tsx:436:92",value:se,onChange:s=>te(s.target.value),placeholder:"master, release/*",className:"h-9"})]})]})}),e.jsx(P,{"code-path":"src/components/deploy/PipelineEditor.tsx:438:13",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsxs(E,{"code-path":"src/components/deploy/PipelineEditor.tsx:438:85",className:"pt-6 space-y-4",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:439:15",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:439:66",className:"flex items-center gap-2 text-[var(--dg-text-primary)]",children:[e.jsx(ue,{"code-path":"src/components/deploy/PipelineEditor.tsx:439:137",className:"w-5 h-5 text-blue-500"}),e.jsx("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:439:180",className:"font-medium",children:"定时触发"})]}),e.jsx(G,{"code-path":"src/components/deploy/PipelineEditor.tsx:439:227",checked:N==="cron",onCheckedChange:s=>M(s?"cron":"manual")})]}),N==="cron"&&e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:440:42",className:"space-y-1",children:[e.jsx(y,{"code-path":"src/components/deploy/PipelineEditor.tsx:440:69",children:"Cron 表达式"}),e.jsx(v,{"code-path":"src/components/deploy/PipelineEditor.tsx:440:92",value:oe,onChange:s=>ne(s.target.value),placeholder:"0 2 * * *",className:"h-9 font-mono"})]})]})}),e.jsx(P,{"code-path":"src/components/deploy/PipelineEditor.tsx:442:13",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsxs(E,{"code-path":"src/components/deploy/PipelineEditor.tsx:442:85",className:"pt-6 space-y-4",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:443:15",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:443:66",className:"flex items-center gap-2 text-[var(--dg-text-primary)]",children:[e.jsx(fe,{"code-path":"src/components/deploy/PipelineEditor.tsx:443:137",className:"w-5 h-5 text-blue-500"}),e.jsx("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:443:182",className:"font-medium",children:"Webhook 触发"})]}),e.jsx(G,{"code-path":"src/components/deploy/PipelineEditor.tsx:443:235",checked:N==="webhook",onCheckedChange:s=>M(s?"webhook":"manual")})]}),N==="webhook"&&e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:444:45",className:"space-y-1",children:[e.jsx(y,{"code-path":"src/components/deploy/PipelineEditor.tsx:444:72",children:"Secret Token"}),e.jsx(v,{"code-path":"src/components/deploy/PipelineEditor.tsx:444:99",value:ce,onChange:s=>de(s.target.value),type:"password",placeholder:"输入签名密钥",className:"h-9"})]})]})}),e.jsx(P,{"code-path":"src/components/deploy/PipelineEditor.tsx:446:13",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsx(E,{"code-path":"src/components/deploy/PipelineEditor.tsx:446:85",className:"pt-6",children:e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:446:115",className:"flex items-center gap-2 text-[var(--dg-text-primary)]",children:[e.jsx(be,{"code-path":"src/components/deploy/PipelineEditor.tsx:446:186",className:"w-5 h-5 text-blue-500"}),e.jsx("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:446:228",className:"font-medium",children:"手动触发"}),e.jsx(j,{"code-path":"src/components/deploy/PipelineEditor.tsx:446:269",variant:"secondary",className:"text-xs",children:"默认启用"})]})})})]})}),e.jsx(C,{"code-path":"src/components/deploy/PipelineEditor.tsx:451:9",value:"variables",className:"mt-3",children:e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:452:11",className:"max-w-lg space-y-3",children:[b.map(([s,n],o)=>e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:454:15",className:"flex gap-2 items-center",children:[e.jsx(v,{"code-path":"src/components/deploy/PipelineEditor.tsx:455:17",value:s,onChange:t=>{const l=[...b];l[o][0]=t.target.value,f(l)},placeholder:"KEY",className:"h-9 w-40 font-mono text-sm"}),e.jsx("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:456:17",className:"text-[var(--dg-text-secondary)]",children:"="}),e.jsx(v,{"code-path":"src/components/deploy/PipelineEditor.tsx:457:17",value:n,onChange:t=>{const l=[...b];l[o][1]=t.target.value,f(l)},placeholder:"VALUE",className:"h-9 flex-1"}),e.jsx(p,{"code-path":"src/components/deploy/PipelineEditor.tsx:458:17",variant:"ghost",size:"icon",className:"h-8 w-8 text-red-500",onClick:()=>f(b.filter((t,l)=>l!==o)),children:e.jsx(S,{"code-path":"src/components/deploy/PipelineEditor.tsx:458:152",className:"w-3.5 h-3.5"})})]},o)),e.jsxs(p,{"code-path":"src/components/deploy/PipelineEditor.tsx:461:13",variant:"outline",size:"sm",onClick:()=>f([...b,["",""]]),children:[e.jsx(D,{"code-path":"src/components/deploy/PipelineEditor.tsx:461:104",className:"w-3.5 h-3.5 mr-1"}),"添加变量"]})]})}),e.jsx(C,{"code-path":"src/components/deploy/PipelineEditor.tsx:466:9",value:"runs",className:"mt-3",children:H.length===0?e.jsx("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:468:13",className:"text-center py-12 text-[var(--dg-text-secondary)]",children:"暂无执行记录"}):e.jsx("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:470:13",className:"rounded-md border border-[var(--dg-border)] overflow-hidden",children:e.jsxs("table",{"code-path":"src/components/deploy/PipelineEditor.tsx:471:15",className:"w-full text-sm",children:[e.jsx("thead",{"code-path":"src/components/deploy/PipelineEditor.tsx:472:17",className:"bg-[var(--dg-bg-tertiary)] border-b border-[var(--dg-border)]",children:e.jsxs("tr",{"code-path":"src/components/deploy/PipelineEditor.tsx:473:19",children:[e.jsx("th",{"code-path":"src/components/deploy/PipelineEditor.tsx:474:21",className:"px-3 py-2 text-left text-[var(--dg-text-secondary)]",children:"#"}),e.jsx("th",{"code-path":"src/components/deploy/PipelineEditor.tsx:475:21",className:"px-3 py-2 text-left text-[var(--dg-text-secondary)]",children:"状态"}),e.jsx("th",{"code-path":"src/components/deploy/PipelineEditor.tsx:476:21",className:"px-3 py-2 text-left text-[var(--dg-text-secondary)]",children:"触发方式"}),e.jsx("th",{"code-path":"src/components/deploy/PipelineEditor.tsx:477:21",className:"px-3 py-2 text-left text-[var(--dg-text-secondary)]",children:"触发人"}),e.jsx("th",{"code-path":"src/components/deploy/PipelineEditor.tsx:478:21",className:"px-3 py-2 text-left text-[var(--dg-text-secondary)]",children:"分支"}),e.jsx("th",{"code-path":"src/components/deploy/PipelineEditor.tsx:479:21",className:"px-3 py-2 text-left text-[var(--dg-text-secondary)]",children:"耗时"}),e.jsx("th",{"code-path":"src/components/deploy/PipelineEditor.tsx:480:21",className:"px-3 py-2 text-left text-[var(--dg-text-secondary)]",children:"时间"}),e.jsx("th",{"code-path":"src/components/deploy/PipelineEditor.tsx:481:21",className:"px-3 py-2 text-right text-[var(--dg-text-secondary)]",children:"操作"})]})}),e.jsx("tbody",{"code-path":"src/components/deploy/PipelineEditor.tsx:484:17",children:H.map(s=>e.jsxs("tr",{"code-path":"src/components/deploy/PipelineEditor.tsx:486:21",className:"border-b border-[var(--dg-border)] hover:bg-[var(--dg-bg-tertiary)]/50",children:[e.jsxs("td",{"code-path":"src/components/deploy/PipelineEditor.tsx:487:23",className:"px-3 py-2 font-medium text-[var(--dg-text-primary)]",children:["#",s.build_number||s.id]}),e.jsx("td",{"code-path":"src/components/deploy/PipelineEditor.tsx:488:23",className:"px-3 py-2",children:s.status==="success"?e.jsxs(j,{"code-path":"src/components/deploy/PipelineEditor.tsx:489:51",className:"bg-emerald-500/20 text-emerald-400 border-emerald-500/30",children:[e.jsx(Ye,{"code-path":"src/components/deploy/PipelineEditor.tsx:489:127",className:"w-3 h-3 mr-0.5"}),"成功"]}):s.status==="failed"?e.jsxs(j,{"code-path":"src/components/deploy/PipelineEditor.tsx:490:50",className:"bg-red-500/20 text-red-400 border-red-500/30",children:[e.jsx(Qe,{"code-path":"src/components/deploy/PipelineEditor.tsx:490:114",className:"w-3 h-3 mr-0.5"}),"失败"]}):s.status==="running"?e.jsxs(j,{"code-path":"src/components/deploy/PipelineEditor.tsx:491:51",className:"bg-blue-500/20 text-blue-400 border-blue-500/30",children:[e.jsx(J,{"code-path":"src/components/deploy/PipelineEditor.tsx:491:118",className:"w-3 h-3 animate-spin mr-0.5"}),"执行中"]}):s.status==="cancelled"?e.jsxs(j,{"code-path":"src/components/deploy/PipelineEditor.tsx:492:53",className:"bg-yellow-500/20 text-yellow-400 border-yellow-500/30",children:[e.jsx(Ne,{"code-path":"src/components/deploy/PipelineEditor.tsx:492:126",className:"w-3 h-3 mr-0.5"}),"已停止"]}):e.jsx(j,{"code-path":"src/components/deploy/PipelineEditor.tsx:493:26",variant:"secondary",className:"text-[var(--dg-text-secondary)]",children:s.status})}),e.jsxs("td",{"code-path":"src/components/deploy/PipelineEditor.tsx:495:23",className:"px-3 py-2 text-[var(--dg-text-secondary)] text-xs",children:[s.trigger_mode==="manual"&&e.jsxs("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:496:57",className:"flex items-center gap-1",children:[e.jsx(be,{"code-path":"src/components/deploy/PipelineEditor.tsx:496:99",className:"w-3 h-3"}),"手动"]}),s.trigger_mode==="cron"&&e.jsxs("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:497:55",className:"flex items-center gap-1",children:[e.jsx(ue,{"code-path":"src/components/deploy/PipelineEditor.tsx:497:97",className:"w-3 h-3"}),"定时"]}),s.trigger_mode==="webhook"&&e.jsxs("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:498:58",className:"flex items-center gap-1",children:[e.jsx(fe,{"code-path":"src/components/deploy/PipelineEditor.tsx:498:100",className:"w-3 h-3"}),"Webhook"]}),s.trigger_mode==="git_push"&&e.jsxs("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:499:59",className:"flex items-center gap-1",children:[e.jsx(V,{"code-path":"src/components/deploy/PipelineEditor.tsx:499:101",className:"w-3 h-3"}),"Git Push"]}),!s.trigger_mode&&(s.triggered_by||"手动")]}),e.jsx("td",{"code-path":"src/components/deploy/PipelineEditor.tsx:502:23",className:"px-3 py-2 text-[var(--dg-text-secondary)] text-xs",children:s.triggered_by||"admin"}),e.jsx("td",{"code-path":"src/components/deploy/PipelineEditor.tsx:503:23",className:"px-3 py-2 text-[var(--dg-text-secondary)] font-mono text-xs",children:s.branch||"-"}),e.jsx("td",{"code-path":"src/components/deploy/PipelineEditor.tsx:504:23",className:"px-3 py-2 text-[var(--dg-text-secondary)]",children:Ce(s.duration)}),e.jsx("td",{"code-path":"src/components/deploy/PipelineEditor.tsx:505:23",className:"px-3 py-2 text-[var(--dg-text-secondary)] text-xs",children:s.created_at?new Date(s.created_at).toLocaleString("zh-CN"):"-"}),e.jsx("td",{"code-path":"src/components/deploy/PipelineEditor.tsx:506:23",className:"px-3 py-2 text-right",children:e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:507:25",className:"flex items-center justify-end gap-1",children:[e.jsxs(p,{"code-path":"src/components/deploy/PipelineEditor.tsx:508:27",variant:"ghost",size:"sm",className:"h-7 text-xs text-blue-400 hover:text-blue-300",onClick:()=>Je(s),children:[e.jsx(gs,{"code-path":"src/components/deploy/PipelineEditor.tsx:508:152",className:"w-3.5 h-3.5 mr-1"}),"日志"]}),(s.status==="running"||s.status==="pending")&&e.jsxs(p,{"code-path":"src/components/deploy/PipelineEditor.tsx:510:29",variant:"ghost",size:"sm",className:"h-7 text-xs text-red-400 hover:text-red-300",onClick:()=>qe(s.id),children:[e.jsx(Ne,{"code-path":"src/components/deploy/PipelineEditor.tsx:510:152",className:"w-3.5 h-3.5 mr-1"}),"停止"]})]})})]},s.id))})]})})}),e.jsx(C,{"code-path":"src/components/deploy/PipelineEditor.tsx:523:9",value:"members",className:"mt-3",children:e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:524:11",className:"max-w-xl space-y-4",children:[e.jsx(P,{"code-path":"src/components/deploy/PipelineEditor.tsx:526:13",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsxs(E,{"code-path":"src/components/deploy/PipelineEditor.tsx:527:15",className:"p-4",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:528:17",className:"flex items-center gap-3",children:[e.jsx(js,{"code-path":"src/components/deploy/PipelineEditor.tsx:529:19",className:"w-4 h-4 text-blue-500"}),e.jsx("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:530:19",className:"text-sm font-medium text-[var(--dg-text-primary)]",children:"添加用户"})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:532:17",className:"flex items-end gap-3 mt-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:533:19",className:"flex-1 space-y-1",children:[e.jsx(y,{"code-path":"src/components/deploy/PipelineEditor.tsx:534:21",className:"text-xs",children:"用户名"}),e.jsx(v,{"code-path":"src/components/deploy/PipelineEditor.tsx:535:21",value:q,onChange:s=>re(s.target.value),placeholder:"输入用户名",className:"h-9"})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:537:19",className:"space-y-1",children:[e.jsx(y,{"code-path":"src/components/deploy/PipelineEditor.tsx:538:21",className:"text-xs",children:"角色"}),e.jsxs($,{"code-path":"src/components/deploy/PipelineEditor.tsx:539:21",value:ae,onValueChange:Ae,children:[e.jsx(R,{"code-path":"src/components/deploy/PipelineEditor.tsx:540:23",className:"h-9 w-28",children:e.jsx(O,{"code-path":"src/components/deploy/PipelineEditor.tsx:540:59"})}),e.jsxs(I,{"code-path":"src/components/deploy/PipelineEditor.tsx:541:23",children:[e.jsx(h,{"code-path":"src/components/deploy/PipelineEditor.tsx:542:25",value:"owner",children:"拥有者"}),e.jsx(h,{"code-path":"src/components/deploy/PipelineEditor.tsx:543:25",value:"editor",children:"编辑者"}),e.jsx(h,{"code-path":"src/components/deploy/PipelineEditor.tsx:544:25",value:"viewer",children:"查看者"})]})]})]}),e.jsxs(p,{"code-path":"src/components/deploy/PipelineEditor.tsx:548:19",onClick:Ge,className:"h-9",children:[e.jsx(D,{"code-path":"src/components/deploy/PipelineEditor.tsx:548:69",className:"w-4 h-4 mr-1"}),"添加"]})]})]})}),(()=>{const s=U.filter(o=>o.username),n=U.filter(o=>o.group_id);return e.jsxs(e.Fragment,{children:[e.jsx(P,{"code-path":"src/components/deploy/PipelineEditor.tsx:560:19",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsxs(E,{"code-path":"src/components/deploy/PipelineEditor.tsx:561:21",className:"p-0",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:562:23",className:"px-4 py-2 text-xs font-medium text-[var(--dg-text-secondary)] border-b border-[var(--dg-border)]",children:["👤 直接用户授权 (",s.length,")"]}),Le?e.jsx("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:566:25",className:"flex items-center justify-center py-6",children:e.jsx(J,{"code-path":"src/components/deploy/PipelineEditor.tsx:566:80",className:"w-5 h-5 animate-spin text-[var(--dg-text-secondary)]"})}):s.length===0?e.jsx("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:568:25",className:"py-4 text-center text-[var(--dg-text-secondary)] text-xs",children:"暂无直接用户"}):e.jsx("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:570:25",className:"divide-y divide-[var(--dg-border)]",children:s.map(o=>e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:572:29",className:"flex items-center justify-between px-4 py-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:573:31",className:"flex items-center gap-3",children:[e.jsx("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:574:33",className:"w-8 h-8 rounded-full bg-blue-500/20 flex items-center justify-center",children:e.jsx(es,{"code-path":"src/components/deploy/PipelineEditor.tsx:574:119",className:"w-4 h-4 text-blue-400"})}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:575:33",children:[e.jsx("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:576:35",className:"text-sm font-medium text-[var(--dg-text-primary)]",children:o.username}),e.jsx("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:577:35",className:"text-xs text-[var(--dg-text-secondary)]",children:o.role==="owner"?e.jsx("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:577:114",className:"text-amber-400",children:"拥有者"}):o.role==="editor"?e.jsx("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:577:182",className:"text-blue-400",children:"编辑者"}):e.jsx("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:577:227",className:"text-slate-400",children:"查看者"})})]})]}),e.jsxs(p,{"code-path":"src/components/deploy/PipelineEditor.tsx:580:31",variant:"ghost",size:"sm",className:"h-7 text-xs text-red-400 hover:text-red-300",onClick:()=>ge(o.id),children:[e.jsx(S,{"code-path":"src/components/deploy/PipelineEditor.tsx:580:162",className:"w-3.5 h-3.5 mr-1"}),"移除"]})]},o.id))})]})}),e.jsx(P,{"code-path":"src/components/deploy/PipelineEditor.tsx:589:19",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsxs(E,{"code-path":"src/components/deploy/PipelineEditor.tsx:590:21",className:"p-0",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:591:23",className:"px-4 py-2 text-xs font-medium text-[var(--dg-text-secondary)] border-b border-[var(--dg-border)]",children:["👥 用户组授权 (",n.length,")"]}),n.length===0?e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:595:25",className:"py-4 text-center text-[var(--dg-text-secondary)] text-xs",children:["暂无组授权 — 在「",e.jsx("a",{"code-path":"src/components/deploy/PipelineEditor.tsx:596:37",href:"/deploy/groups",className:"text-blue-400 underline",children:"用户组管理"}),"」页面创建组后,可在此授权"]}):e.jsx("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:599:25",className:"divide-y divide-[var(--dg-border)]",children:n.map(o=>e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:601:29",className:"flex items-center justify-between px-4 py-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:602:31",className:"flex items-center gap-3",children:[e.jsx("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:603:33",className:"w-8 h-8 rounded-full bg-purple-500/20 flex items-center justify-center",children:e.jsx(Pe,{"code-path":"src/components/deploy/PipelineEditor.tsx:603:121",className:"w-4 h-4 text-purple-400"})}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:604:33",children:[e.jsx("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:605:35",className:"text-sm font-medium text-[var(--dg-text-primary)]",children:o.group?.name||`组 #${o.group_id}`}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:606:35",className:"text-xs text-[var(--dg-text-secondary)]",children:[o.role==="owner"?e.jsx("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:606:114",className:"text-amber-400",children:"拥有者"}):o.role==="editor"?e.jsx("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:606:182",className:"text-blue-400",children:"编辑者"}):e.jsx("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:606:227",className:"text-slate-400",children:"查看者"})," · 组内全体成员"]})]})]}),e.jsxs(p,{"code-path":"src/components/deploy/PipelineEditor.tsx:609:31",variant:"ghost",size:"sm",className:"h-7 text-xs text-red-400 hover:text-red-300",onClick:()=>ge(o.id),children:[e.jsx(S,{"code-path":"src/components/deploy/PipelineEditor.tsx:609:162",className:"w-3.5 h-3.5 mr-1"}),"撤销授权"]})]},o.id))})]})})]})})()]})})]}),e.jsx(_s,{"code-path":"src/components/deploy/PipelineEditor.tsx:624:7",open:De,onClose:()=>pe(!1),run:Ve,logs:Re})]}):e.jsx("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:326:25",className:"text-center py-20 text-[var(--dg-text-secondary)]",children:"流水线不存在"})}export{Ks as default}; diff --git a/backend/static/assets/PipelineEditor-DxhAKo4j.js b/backend/static/assets/PipelineEditor-DxhAKo4j.js new file mode 100644 index 0000000..599387b --- /dev/null +++ b/backend/static/assets/PipelineEditor-DxhAKo4j.js @@ -0,0 +1 @@ +import{i as W,k as Ze,r as i,f as Qe,j as e,L as q,Q as V,B as p,t as Pe,V as Ee,o as ve,C as ue,K as Xe,X as Ye,W as es,v as ss,F as ts,E as os,S as ns,D as cs,a as ds,b as is,c as rs}from"./index-Dmami9WE.js";import{C as P,a as E}from"./card-CIfC-8Rh.js";import{I as v}from"./input-NsU9nXZF.js";import{B as j}from"./badge-3UzCvU7L.js";import{T as as,a as ps,b as k,c as C}from"./tabs-lV44z_UR.js";import{S as $,a as R,b as O,c as I,d as h}from"./select-DUbxjT0z.js";import{T as ls}from"./textarea-DHUZ6N85.js";import{S as G}from"./switch-TqjD2x0W.js";import{L as y}from"./label-Ap_-SPYI.js";import{t as m}from"./index-BuEnLCjT.js";import{d as xs,p as g}from"./deploy-CD5bEXt-.js";import{S as ms}from"./save-YtnrpTd8.js";import{P as hs}from"./play-0EwQQJX_.js";import{P as D}from"./plus-O65gX7Qz.js";import{C as ys}from"./chevron-up-Cq4GPopa.js";import{T as S}from"./trash-2-DWVnIU6o.js";import{C as Ne}from"./circle-stop-DadQKvNg.js";import{F as gs}from"./file-text-CebshSV-.js";import{U as js}from"./user-plus-DKeca2Dx.js";import{Z as Ps}from"./zap-CocSkPPl.js";import{W as we}from"./wrench-DMCGQEzN.js";import"./index-CtCQcvyh.js";const Es=[["path",{d:"M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2",key:"18mbvz"}],["path",{d:"M6.453 15h11.094",key:"3shlmq"}],["path",{d:"M8.5 2h7",key:"csnxdl"}]],vs=W("flask-conical",Es);const us=[["path",{d:"M18 11V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2",key:"1fvzgz"}],["path",{d:"M14 10V4a2 2 0 0 0-2-2a2 2 0 0 0-2 2v2",key:"1kc0my"}],["path",{d:"M10 10.5V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2v8",key:"10h0bg"}],["path",{d:"M18 8a2 2 0 1 1 4 0v6a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15",key:"1s1gnw"}]],be=W("hand",us);const Ns=[["path",{d:"M15 12h-5",key:"r7krc0"}],["path",{d:"M15 8h-5",key:"1khuty"}],["path",{d:"M19 17V5a2 2 0 0 0-2-2H4",key:"zz82l3"}],["path",{d:"M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3",key:"1ph1d7"}]],bs=W("scroll-text",Ns);const fs=[["path",{d:"M18 16.98h-5.99c-1.1 0-1.95.94-2.48 1.9A4 4 0 0 1 2 17c.01-.7.2-1.4.57-2",key:"q3hayz"}],["path",{d:"m6 17 3.13-5.78c.53-.97.1-2.18-.5-3.1a4 4 0 1 1 6.89-4.06",key:"1go1hn"}],["path",{d:"m12 6 3.13 5.73C15.66 12.7 16.9 13 18 13a4 4 0 0 1 0 8",key:"qlwsc0"}]],fe=W("webhook",fs),ws={source:"拉取代码",build:"构建",deploy:"部署",test:"测试",custom:"自定义"},ke={GitBranch:V,Wrench:we,Server:ns,FlaskConical:vs,Zap:Ps,Terminal:os,FileCode:ts,Container:ss};function ks(){return`tsk-${Date.now()}-${Math.random().toString(36).slice(2,7)}`}function Ce(r){if(!r)return"-";if(r<60)return`${r}s`;const d=Math.floor(r/60),c=r%60;return c>0?`${d}分${c}秒`:`${d}分`}function Cs({task:r,selected:d,onSelect:c,onDelete:u}){const a=ke[r.icon]||we;return e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:75:5",onClick:c,className:`flex items-center gap-3 p-3 rounded-md border cursor-pointer transition-all group ${d?"border-blue-500 bg-blue-500/10":"border-[var(--dg-border)] hover:border-slate-400 bg-[var(--dg-bg-secondary)]"}`,children:[e.jsx("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:81:7",className:`p-1.5 rounded ${d?"bg-blue-100":"bg-slate-100 dark:bg-slate-800"}`,children:e.jsx(a,{"code-path":"src/components/deploy/PipelineEditor.tsx:82:9",className:`w-4 h-4 ${d?"text-blue-600":"text-[var(--dg-text-secondary)]"}`})}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:84:7",className:"flex-1 min-w-0",children:[e.jsx("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:85:9",className:"text-sm font-medium text-[var(--dg-text-primary)] truncate",children:r.name}),e.jsx("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:86:9",className:"text-xs text-[var(--dg-text-secondary)]",children:r.type})]}),e.jsx(p,{"code-path":"src/components/deploy/PipelineEditor.tsx:88:7",variant:"ghost",size:"icon",className:"h-6 w-6 opacity-0 group-hover:opacity-100",onClick:x=>{x.stopPropagation(),u()},children:e.jsx(S,{"code-path":"src/components/deploy/PipelineEditor.tsx:89:9",className:"w-3.5 h-3.5 text-red-500"})})]})}function Ss({task:r,onUpdate:d}){return r?e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:99:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:100:7",className:"space-y-1",children:[e.jsx(y,{"code-path":"src/components/deploy/PipelineEditor.tsx:100:34",className:"text-xs",children:"任务名称"}),e.jsx(v,{"code-path":"src/components/deploy/PipelineEditor.tsx:100:73",value:r.name,onChange:c=>d({...r,name:c.target.value}),className:"h-8 text-sm"})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:101:7",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:102:9",className:"space-y-1",children:[e.jsx(y,{"code-path":"src/components/deploy/PipelineEditor.tsx:102:36",className:"text-xs",children:"类型"}),e.jsxs($,{"code-path":"src/components/deploy/PipelineEditor.tsx:103:11",value:r.type,onValueChange:c=>d({...r,type:c}),children:[e.jsx(R,{"code-path":"src/components/deploy/PipelineEditor.tsx:103:89",className:"h-8 text-sm",children:e.jsx(O,{"code-path":"src/components/deploy/PipelineEditor.tsx:103:128"})}),e.jsxs(I,{"code-path":"src/components/deploy/PipelineEditor.tsx:104:13",children:[e.jsx(h,{"code-path":"src/components/deploy/PipelineEditor.tsx:104:28",value:"build",children:"构建"}),e.jsx(h,{"code-path":"src/components/deploy/PipelineEditor.tsx:104:69",value:"deploy",children:"部署"}),e.jsx(h,{"code-path":"src/components/deploy/PipelineEditor.tsx:104:111",value:"test",children:"测试"}),e.jsx(h,{"code-path":"src/components/deploy/PipelineEditor.tsx:104:151",value:"custom",children:"自定义"})]})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:106:9",className:"space-y-1",children:[e.jsx(y,{"code-path":"src/components/deploy/PipelineEditor.tsx:106:36",className:"text-xs",children:"图标"}),e.jsxs($,{"code-path":"src/components/deploy/PipelineEditor.tsx:107:11",value:r.icon,onValueChange:c=>d({...r,icon:c}),children:[e.jsx(R,{"code-path":"src/components/deploy/PipelineEditor.tsx:107:89",className:"h-8 text-sm",children:e.jsx(O,{"code-path":"src/components/deploy/PipelineEditor.tsx:107:128"})}),e.jsx(I,{"code-path":"src/components/deploy/PipelineEditor.tsx:108:13",children:Object.entries(ke).map(([c])=>e.jsx(h,{"code-path":"src/components/deploy/PipelineEditor.tsx:108:69",value:c,children:c},c))})]})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:111:7",className:"space-y-1",children:[e.jsx(y,{"code-path":"src/components/deploy/PipelineEditor.tsx:111:34",className:"text-xs",children:"脚本类型"}),e.jsx("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:112:9",className:"flex gap-2",children:["shell","python"].map(c=>e.jsx(j,{"code-path":"src/components/deploy/PipelineEditor.tsx:112:68",variant:r.script_type===c?"default":"outline",className:"cursor-pointer text-xs",onClick:()=>d({...r,script_type:c}),children:c},c))})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:114:7",className:"space-y-1",children:[e.jsx(y,{"code-path":"src/components/deploy/PipelineEditor.tsx:114:34",className:"text-xs",children:"脚本内容"}),e.jsx(ls,{"code-path":"src/components/deploy/PipelineEditor.tsx:115:9",value:r.script,onChange:c=>d({...r,script:c.target.value}),className:"font-mono text-xs min-h-[200px] bg-slate-950 text-green-400",placeholder:"#!/bin/bash\\nset -e\\necho 'hello'"})]})]}):e.jsx("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:97:21",className:"p-6 text-center text-[var(--dg-text-secondary)] text-sm",children:"选择一个任务开始编辑"})}function _s({open:r,onClose:d,run:c,logs:u}){return e.jsx(cs,{"code-path":"src/components/deploy/PipelineEditor.tsx:124:5",open:r,onOpenChange:d,children:e.jsxs(ds,{"code-path":"src/components/deploy/PipelineEditor.tsx:125:7",className:"max-w-3xl max-h-[80vh] overflow-y-auto",children:[e.jsx(is,{"code-path":"src/components/deploy/PipelineEditor.tsx:126:9",children:e.jsxs(rs,{"code-path":"src/components/deploy/PipelineEditor.tsx:126:23",className:"flex items-center gap-2",children:[e.jsx(bs,{"code-path":"src/components/deploy/PipelineEditor.tsx:126:72",className:"w-5 h-5"}),"执行日志 #",c?.build_number||c?.id]})}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:127:9",className:"space-y-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:128:11",className:"flex flex-wrap gap-3 text-sm text-[var(--dg-text-secondary)]",children:[e.jsxs("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:129:13",children:["触发方式: ",c?.triggered_by||"manual"]}),e.jsxs("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:130:13",children:["分支: ",c?.branch||"-"]}),e.jsxs("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:131:13",children:["耗时: ",Ce(c?.duration)]}),e.jsx("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:132:13",children:c?.created_at?new Date(c.created_at).toLocaleString("zh-CN"):"-"})]}),e.jsx("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:134:11",className:"bg-slate-950 rounded-md p-3 max-h-[50vh] overflow-y-auto font-mono text-xs",children:u.length===0?e.jsx("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:136:15",className:"text-slate-500 py-4 text-center",children:"暂无日志"}):u.map((a,x)=>e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:139:17",className:"flex gap-2 py-0.5",children:[e.jsxs("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:140:19",className:"text-slate-500 shrink-0",children:["[",a.time,"]"]}),e.jsxs("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:141:19",className:a.level==="error"?"text-red-400":a.level==="warn"?"text-yellow-400":a.level==="success"?"text-green-400":"text-slate-300",children:[a.level==="success"?"✓":a.level==="error"?"✗":a.level==="warn"?"!":">"," ",a.message]})]},x))})]})]})})}function Xs(){const{code:r}=Ze(),d=r||"",[c,u]=i.useState(null),[a,x]=i.useState([]),[_,T]=i.useState(null),[Se,B]=i.useState({}),[_e,Te]=i.useState("flow"),[Me,F]=i.useState(!0),[K,Z]=i.useState(!1),[U,Q]=i.useState([]),[X,ze]=i.useState([]),[H,Y]=i.useState([]),[Le,ee]=i.useState(!1),[N,M]=i.useState("manual"),[se,te]=i.useState(""),[oe,ne]=i.useState(""),[ce,de]=i.useState(""),[b,f]=i.useState([]),[z,ie]=i.useState(""),[J,re]=i.useState(""),[ae,Ae]=i.useState("editor"),[De,pe]=i.useState(!1),[Ve,$e]=i.useState(null),[Re,le]=i.useState([]),xe=Qe(),me=i.useCallback(async()=>{try{const s=await xs.getEnvironments();ze(Array.isArray(s)?s:s?.list||[])}catch{}},[]),L=i.useCallback(async()=>{ee(!0);try{const s=await g.getMembers(d);Y(Array.isArray(s)?s:s?.data||[])}catch{Y([])}finally{ee(!1)}},[d]),A=i.useCallback(async()=>{try{const s=await g.getRuns(d);Q(Array.isArray(s)?s:s?.list||[])}catch{Q([])}},[d]);i.useEffect(()=>{(async()=>{F(!0);try{const s=await g.getPipelineDetail(d);if(!s||!s.id){u(null),F(!1);return}u(s),M(s.trigger_mode||"manual"),te(s.watch_branches||""),ne(s.cron_expr||""),de(s.webhook_token||""),ie(s.environment_id||"");try{const n=s.variables?JSON.parse(s.variables):{};f(Object.entries(n).map(([o,t])=>[o,String(t)]))}catch{f([])}try{const n=s.stages?JSON.parse(s.stages):[],o=Array.isArray(n)?n:[];x(o);const t={};o.forEach(l=>{t[l.id]=!0}),B(t)}catch{x([])}}catch{m.error("加载失败")}finally{F(!1)}})(),me(),L(),A()},[d,me,L,A]);const he=a.flatMap(s=>s.tasks).find(s=>s.id===_)||null,Oe=s=>{x(n=>n.map(o=>({...o,tasks:o.tasks.map(t=>t.id===s.id?s:t)})))},Ie=s=>{const n={id:ks(),name:"新任务",type:"build",icon:"Wrench",config:{},script:"",script_type:"shell"};x(o=>o.map((t,l)=>l===s?{...t,tasks:[...t.tasks,n]}:t))},We=s=>{x(n=>n.map(o=>({...o,tasks:o.tasks.filter(t=>t.id!==s)}))),_===s&&T(null)},Be=()=>{const s={id:`stg-${Date.now()}`,name:"新阶段",type:"custom",tasks:[]};x(n=>[...n,s])},Fe=s=>{x(n=>n.filter((o,t)=>t!==s))},ye=(s,n)=>{const o=s+n;if(o<0||o>=a.length)return;const t=[...a];[t[s],t[o]]=[t[o],t[s]],x(t)},Ue=async()=>{Z(!0);try{await g.updatePipeline(d,{stages:JSON.stringify(a),trigger_mode:N,watch_branches:se,cron_expr:oe,webhook_token:ce,environment_id:z?Number(z):null,variables:JSON.stringify(Object.fromEntries(b.filter(([s])=>s.trim())))}),m.success("已保存")}catch{m.error("保存失败")}finally{Z(!1)}},He=async()=>{try{await g.triggerPipeline(d),m.success("已触发"),A()}catch{m.error("触发失败")}},Je=async s=>{if(await xe({title:"停止运行",description:"确定要停止此运行吗?",variant:"destructive"}))try{await g.stopRun(d,s),m.success("已停止"),A()}catch{m.error("停止失败")}},qe=async s=>{$e(s),pe(!0);try{const n=await g.getRunLog(d,s.id);le(n?.logs||[])}catch{le([])}},Ge=async()=>{if(!J.trim()){m.error("请输入用户名");return}try{await g.addMember(d,{username:J.trim(),role:ae}),m.success("已添加成员"),re(""),L()}catch(s){m.error(s?.message||"添加失败")}},ge=async s=>{if(await xe({title:"移除成员",description:"确定要移除此成员吗?",variant:"destructive"}))try{await g.removeMember(d,s),m.success("已移除"),L()}catch{m.error("移除失败")}},w=X.find(s=>String(s.id)===String(z));return Me?e.jsx("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:325:23",className:"flex items-center justify-center py-20",children:e.jsx(q,{"code-path":"src/components/deploy/PipelineEditor.tsx:325:79",className:"w-6 h-6 animate-spin"})}):c?e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:329:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:331:7",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:332:9",children:[e.jsxs("h1",{"code-path":"src/components/deploy/PipelineEditor.tsx:333:11",className:"text-xl font-bold flex items-center gap-2 text-[var(--dg-text-primary)]",children:[e.jsx(V,{"code-path":"src/components/deploy/PipelineEditor.tsx:334:13",className:"w-5 h-5 text-blue-500"}),c.name,w&&e.jsx(j,{"code-path":"src/components/deploy/PipelineEditor.tsx:336:26",style:{backgroundColor:w.color+"20",color:w.color,borderColor:w.color+"40"},className:"text-xs ml-2",children:w.display_name})]}),e.jsxs("p",{"code-path":"src/components/deploy/PipelineEditor.tsx:338:11",className:"text-sm text-[var(--dg-text-secondary)] mt-1",children:["code: ",c.code," · ",c.description]})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:340:9",className:"flex items-center gap-2",children:[e.jsxs(p,{"code-path":"src/components/deploy/PipelineEditor.tsx:341:11",variant:"outline",onClick:Ue,disabled:K,children:[e.jsx(ms,{"code-path":"src/components/deploy/PipelineEditor.tsx:341:76",className:"w-4 h-4 mr-1"}),K?"保存中...":"保存"]}),e.jsxs(p,{"code-path":"src/components/deploy/PipelineEditor.tsx:342:11",variant:"default",onClick:He,children:[e.jsx(hs,{"code-path":"src/components/deploy/PipelineEditor.tsx:342:61",className:"w-4 h-4 mr-1"}),"运行"]})]})]}),e.jsx(P,{"code-path":"src/components/deploy/PipelineEditor.tsx:347:7",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsxs(E,{"code-path":"src/components/deploy/PipelineEditor.tsx:348:9",className:"p-3 flex items-center gap-3",children:[e.jsx(Pe,{"code-path":"src/components/deploy/PipelineEditor.tsx:349:11",className:"w-4 h-4 text-[var(--dg-text-secondary)]"}),e.jsx("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:350:11",className:"text-sm text-[var(--dg-text-secondary)]",children:"部署环境:"}),e.jsxs($,{"code-path":"src/components/deploy/PipelineEditor.tsx:351:11",value:String(z),onValueChange:s=>ie(s==="__none"?"":s),children:[e.jsx(R,{"code-path":"src/components/deploy/PipelineEditor.tsx:352:13",className:"w-40 h-8 text-sm",children:e.jsx(O,{"code-path":"src/components/deploy/PipelineEditor.tsx:352:57",placeholder:"选择环境"})}),e.jsxs(I,{"code-path":"src/components/deploy/PipelineEditor.tsx:353:13",children:[e.jsx(h,{"code-path":"src/components/deploy/PipelineEditor.tsx:354:15",value:"__none",children:"未指定"}),X.map(s=>e.jsx(h,{"code-path":"src/components/deploy/PipelineEditor.tsx:356:17",value:String(s.id),children:e.jsxs("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:357:19",className:"flex items-center gap-1.5",children:[e.jsx("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:358:21",className:"w-2 h-2 rounded-full inline-block",style:{backgroundColor:s.color}}),s.display_name]})},s.id))]})]}),e.jsx("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:365:11",className:"text-xs text-[var(--dg-text-secondary)] opacity-70",children:"选择后流水线执行记录会关联到对应环境"})]})}),e.jsxs(as,{"code-path":"src/components/deploy/PipelineEditor.tsx:369:7",value:_e,onValueChange:Te,children:[e.jsxs(ps,{"code-path":"src/components/deploy/PipelineEditor.tsx:370:9",children:[e.jsx(k,{"code-path":"src/components/deploy/PipelineEditor.tsx:371:11",value:"flow",children:"流程配置"}),e.jsx(k,{"code-path":"src/components/deploy/PipelineEditor.tsx:372:11",value:"triggers",children:"触发设置"}),e.jsx(k,{"code-path":"src/components/deploy/PipelineEditor.tsx:373:11",value:"variables",children:"变量"}),e.jsxs(k,{"code-path":"src/components/deploy/PipelineEditor.tsx:374:11",value:"runs",children:["发布记录 (",U.length,")"]}),e.jsxs(k,{"code-path":"src/components/deploy/PipelineEditor.tsx:375:11",value:"members",children:["成员管理 (",H.length,")"]})]}),e.jsx(C,{"code-path":"src/components/deploy/PipelineEditor.tsx:379:9",value:"flow",className:"mt-3",children:e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:380:11",className:"flex gap-4",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:381:13",className:"flex-1 space-y-2",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:382:15",className:"flex items-center justify-between mb-2",children:[e.jsxs("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:383:17",className:"text-sm font-medium text-[var(--dg-text-primary)]",children:["流水线阶段 (",a.length,")"]}),e.jsxs(p,{"code-path":"src/components/deploy/PipelineEditor.tsx:384:17",size:"sm",onClick:Be,children:[e.jsx(D,{"code-path":"src/components/deploy/PipelineEditor.tsx:384:60",className:"w-3.5 h-3.5 mr-1"}),"添加阶段"]})]}),a.length===0?e.jsx("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:387:17",className:"text-center py-12 border-2 border-dashed rounded-lg text-[var(--dg-text-secondary)]",children:"点击「添加阶段」开始"}):a.map((s,n)=>{const o=Se[s.id]!==!1;return e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:392:19",className:"space-y-1",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:393:21",className:"flex items-center gap-2 px-3 py-2 bg-[var(--dg-bg-tertiary)] rounded-t-md border border-b-0 border-[var(--dg-border)] cursor-pointer",onClick:()=>B(t=>({...t,[s.id]:!o})),children:[e.jsx(p,{"code-path":"src/components/deploy/PipelineEditor.tsx:397:23",variant:"ghost",size:"icon",className:"h-5 w-5 p-0",onClick:t=>{t.stopPropagation(),B(l=>({...l,[s.id]:!o}))},children:o?e.jsx(Ee,{"code-path":"src/components/deploy/PipelineEditor.tsx:398:39",className:"w-3.5 h-3.5"}):e.jsx(ve,{"code-path":"src/components/deploy/PipelineEditor.tsx:398:81",className:"w-3.5 h-3.5"})}),e.jsx(v,{"code-path":"src/components/deploy/PipelineEditor.tsx:400:23",value:s.name,onChange:t=>x(l=>l.map((je,Ke)=>Ke===n?{...je,name:t.target.value}:je)),className:"h-7 text-sm font-medium border-none bg-transparent shadow-none flex-1 px-1",onClick:t=>t.stopPropagation()}),e.jsxs("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:406:23",className:"text-xs text-[var(--dg-text-secondary)]",children:[s.tasks.length," 任务"]}),e.jsx(j,{"code-path":"src/components/deploy/PipelineEditor.tsx:407:23",variant:"secondary",className:"text-xs",children:ws[s.type]||s.type}),e.jsx(p,{"code-path":"src/components/deploy/PipelineEditor.tsx:408:23",variant:"ghost",size:"icon",className:"h-6 w-6",onClick:t=>{t.stopPropagation(),ye(n,-1)},disabled:n===0,children:e.jsx(ys,{"code-path":"src/components/deploy/PipelineEditor.tsx:408:168",className:"w-3.5 h-3.5"})}),e.jsx(p,{"code-path":"src/components/deploy/PipelineEditor.tsx:409:23",variant:"ghost",size:"icon",className:"h-6 w-6",onClick:t=>{t.stopPropagation(),ye(n,1)},disabled:n===a.length-1,children:e.jsx(Ee,{"code-path":"src/components/deploy/PipelineEditor.tsx:409:183",className:"w-3.5 h-3.5"})}),e.jsx(p,{"code-path":"src/components/deploy/PipelineEditor.tsx:410:23",variant:"ghost",size:"icon",className:"h-6 w-6 text-red-500",onClick:t=>{t.stopPropagation(),Fe(n)},children:e.jsx(S,{"code-path":"src/components/deploy/PipelineEditor.tsx:410:158",className:"w-3.5 h-3.5"})})]}),o&&e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:413:21",className:"border border-[var(--dg-border)] rounded-b-md p-3 space-y-2",children:[s.tasks.map(t=>e.jsx(Cs,{"code-path":"src/components/deploy/PipelineEditor.tsx:414:46",task:t,selected:_===t.id,onSelect:()=>T(_===t.id?null:t.id),onDelete:()=>We(t.id)},t.id)),e.jsxs(p,{"code-path":"src/components/deploy/PipelineEditor.tsx:415:23",variant:"outline",size:"sm",className:"w-full h-8 text-xs",onClick:()=>Ie(n),children:[e.jsx(D,{"code-path":"src/components/deploy/PipelineEditor.tsx:415:125",className:"w-3 h-3 mr-1"}),"添加任务"]})]}),nT(null),children:"关闭"})]}),e.jsx(Ss,{"code-path":"src/components/deploy/PipelineEditor.tsx:426:15",task:he,onUpdate:Oe,onClose:()=>T(null)})]})]})}),e.jsx(C,{"code-path":"src/components/deploy/PipelineEditor.tsx:432:9",value:"triggers",className:"mt-3",children:e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:433:11",className:"space-y-4 max-w-lg",children:[e.jsx(P,{"code-path":"src/components/deploy/PipelineEditor.tsx:434:13",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsxs(E,{"code-path":"src/components/deploy/PipelineEditor.tsx:434:85",className:"pt-6 space-y-4",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:435:15",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:435:66",className:"flex items-center gap-2 text-[var(--dg-text-primary)]",children:[e.jsx(V,{"code-path":"src/components/deploy/PipelineEditor.tsx:435:137",className:"w-5 h-5 text-blue-500"}),e.jsx("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:435:184",className:"font-medium",children:"Git Push 触发"})]}),e.jsx(G,{"code-path":"src/components/deploy/PipelineEditor.tsx:435:238",checked:N==="git_push",onCheckedChange:s=>M(s?"git_push":"manual")})]}),N==="git_push"&&e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:436:46",className:"space-y-1",children:[e.jsx(y,{"code-path":"src/components/deploy/PipelineEditor.tsx:436:73",children:"监听分支"}),e.jsx(v,{"code-path":"src/components/deploy/PipelineEditor.tsx:436:92",value:se,onChange:s=>te(s.target.value),placeholder:"master, release/*",className:"h-9"})]})]})}),e.jsx(P,{"code-path":"src/components/deploy/PipelineEditor.tsx:438:13",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsxs(E,{"code-path":"src/components/deploy/PipelineEditor.tsx:438:85",className:"pt-6 space-y-4",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:439:15",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:439:66",className:"flex items-center gap-2 text-[var(--dg-text-primary)]",children:[e.jsx(ue,{"code-path":"src/components/deploy/PipelineEditor.tsx:439:137",className:"w-5 h-5 text-blue-500"}),e.jsx("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:439:180",className:"font-medium",children:"定时触发"})]}),e.jsx(G,{"code-path":"src/components/deploy/PipelineEditor.tsx:439:227",checked:N==="cron",onCheckedChange:s=>M(s?"cron":"manual")})]}),N==="cron"&&e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:440:42",className:"space-y-1",children:[e.jsx(y,{"code-path":"src/components/deploy/PipelineEditor.tsx:440:69",children:"Cron 表达式"}),e.jsx(v,{"code-path":"src/components/deploy/PipelineEditor.tsx:440:92",value:oe,onChange:s=>ne(s.target.value),placeholder:"0 2 * * *",className:"h-9 font-mono"})]})]})}),e.jsx(P,{"code-path":"src/components/deploy/PipelineEditor.tsx:442:13",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsxs(E,{"code-path":"src/components/deploy/PipelineEditor.tsx:442:85",className:"pt-6 space-y-4",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:443:15",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:443:66",className:"flex items-center gap-2 text-[var(--dg-text-primary)]",children:[e.jsx(fe,{"code-path":"src/components/deploy/PipelineEditor.tsx:443:137",className:"w-5 h-5 text-blue-500"}),e.jsx("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:443:182",className:"font-medium",children:"Webhook 触发"})]}),e.jsx(G,{"code-path":"src/components/deploy/PipelineEditor.tsx:443:235",checked:N==="webhook",onCheckedChange:s=>M(s?"webhook":"manual")})]}),N==="webhook"&&e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:444:45",className:"space-y-1",children:[e.jsx(y,{"code-path":"src/components/deploy/PipelineEditor.tsx:444:72",children:"Secret Token"}),e.jsx(v,{"code-path":"src/components/deploy/PipelineEditor.tsx:444:99",value:ce,onChange:s=>de(s.target.value),type:"password",placeholder:"输入签名密钥",className:"h-9"})]})]})}),e.jsx(P,{"code-path":"src/components/deploy/PipelineEditor.tsx:446:13",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsx(E,{"code-path":"src/components/deploy/PipelineEditor.tsx:446:85",className:"pt-6",children:e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:446:115",className:"flex items-center gap-2 text-[var(--dg-text-primary)]",children:[e.jsx(be,{"code-path":"src/components/deploy/PipelineEditor.tsx:446:186",className:"w-5 h-5 text-blue-500"}),e.jsx("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:446:228",className:"font-medium",children:"手动触发"}),e.jsx(j,{"code-path":"src/components/deploy/PipelineEditor.tsx:446:269",variant:"secondary",className:"text-xs",children:"默认启用"})]})})})]})}),e.jsx(C,{"code-path":"src/components/deploy/PipelineEditor.tsx:451:9",value:"variables",className:"mt-3",children:e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:452:11",className:"max-w-lg space-y-3",children:[b.map(([s,n],o)=>e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:454:15",className:"flex gap-2 items-center",children:[e.jsx(v,{"code-path":"src/components/deploy/PipelineEditor.tsx:455:17",value:s,onChange:t=>{const l=[...b];l[o][0]=t.target.value,f(l)},placeholder:"KEY",className:"h-9 w-40 font-mono text-sm"}),e.jsx("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:456:17",className:"text-[var(--dg-text-secondary)]",children:"="}),e.jsx(v,{"code-path":"src/components/deploy/PipelineEditor.tsx:457:17",value:n,onChange:t=>{const l=[...b];l[o][1]=t.target.value,f(l)},placeholder:"VALUE",className:"h-9 flex-1"}),e.jsx(p,{"code-path":"src/components/deploy/PipelineEditor.tsx:458:17",variant:"ghost",size:"icon",className:"h-8 w-8 text-red-500",onClick:()=>f(b.filter((t,l)=>l!==o)),children:e.jsx(S,{"code-path":"src/components/deploy/PipelineEditor.tsx:458:152",className:"w-3.5 h-3.5"})})]},o)),e.jsxs(p,{"code-path":"src/components/deploy/PipelineEditor.tsx:461:13",variant:"outline",size:"sm",onClick:()=>f([...b,["",""]]),children:[e.jsx(D,{"code-path":"src/components/deploy/PipelineEditor.tsx:461:104",className:"w-3.5 h-3.5 mr-1"}),"添加变量"]})]})}),e.jsx(C,{"code-path":"src/components/deploy/PipelineEditor.tsx:466:9",value:"runs",className:"mt-3",children:U.length===0?e.jsx("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:468:13",className:"text-center py-12 text-[var(--dg-text-secondary)]",children:"暂无执行记录"}):e.jsx("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:470:13",className:"rounded-md border border-[var(--dg-border)] overflow-hidden",children:e.jsxs("table",{"code-path":"src/components/deploy/PipelineEditor.tsx:471:15",className:"w-full text-sm",children:[e.jsx("thead",{"code-path":"src/components/deploy/PipelineEditor.tsx:472:17",className:"bg-[var(--dg-bg-tertiary)] border-b border-[var(--dg-border)]",children:e.jsxs("tr",{"code-path":"src/components/deploy/PipelineEditor.tsx:473:19",children:[e.jsx("th",{"code-path":"src/components/deploy/PipelineEditor.tsx:474:21",className:"px-3 py-2 text-left text-[var(--dg-text-secondary)]",children:"#"}),e.jsx("th",{"code-path":"src/components/deploy/PipelineEditor.tsx:475:21",className:"px-3 py-2 text-left text-[var(--dg-text-secondary)]",children:"状态"}),e.jsx("th",{"code-path":"src/components/deploy/PipelineEditor.tsx:476:21",className:"px-3 py-2 text-left text-[var(--dg-text-secondary)]",children:"触发方式"}),e.jsx("th",{"code-path":"src/components/deploy/PipelineEditor.tsx:477:21",className:"px-3 py-2 text-left text-[var(--dg-text-secondary)]",children:"触发人"}),e.jsx("th",{"code-path":"src/components/deploy/PipelineEditor.tsx:478:21",className:"px-3 py-2 text-left text-[var(--dg-text-secondary)]",children:"分支"}),e.jsx("th",{"code-path":"src/components/deploy/PipelineEditor.tsx:479:21",className:"px-3 py-2 text-left text-[var(--dg-text-secondary)]",children:"耗时"}),e.jsx("th",{"code-path":"src/components/deploy/PipelineEditor.tsx:480:21",className:"px-3 py-2 text-left text-[var(--dg-text-secondary)]",children:"时间"}),e.jsx("th",{"code-path":"src/components/deploy/PipelineEditor.tsx:481:21",className:"px-3 py-2 text-right text-[var(--dg-text-secondary)]",children:"操作"})]})}),e.jsx("tbody",{"code-path":"src/components/deploy/PipelineEditor.tsx:484:17",children:U.map(s=>e.jsxs("tr",{"code-path":"src/components/deploy/PipelineEditor.tsx:486:21",className:"border-b border-[var(--dg-border)] hover:bg-[var(--dg-bg-tertiary)]/50",children:[e.jsxs("td",{"code-path":"src/components/deploy/PipelineEditor.tsx:487:23",className:"px-3 py-2 font-medium text-[var(--dg-text-primary)]",children:["#",s.build_number||s.id]}),e.jsx("td",{"code-path":"src/components/deploy/PipelineEditor.tsx:488:23",className:"px-3 py-2",children:s.status==="success"?e.jsxs(j,{"code-path":"src/components/deploy/PipelineEditor.tsx:489:51",className:"bg-emerald-500/20 text-emerald-400 border-emerald-500/30",children:[e.jsx(Xe,{"code-path":"src/components/deploy/PipelineEditor.tsx:489:127",className:"w-3 h-3 mr-0.5"}),"成功"]}):s.status==="failed"?e.jsxs(j,{"code-path":"src/components/deploy/PipelineEditor.tsx:490:50",className:"bg-red-500/20 text-red-400 border-red-500/30",children:[e.jsx(Ye,{"code-path":"src/components/deploy/PipelineEditor.tsx:490:114",className:"w-3 h-3 mr-0.5"}),"失败"]}):s.status==="running"?e.jsxs(j,{"code-path":"src/components/deploy/PipelineEditor.tsx:491:51",className:"bg-blue-500/20 text-blue-400 border-blue-500/30",children:[e.jsx(q,{"code-path":"src/components/deploy/PipelineEditor.tsx:491:118",className:"w-3 h-3 animate-spin mr-0.5"}),"执行中"]}):s.status==="cancelled"?e.jsxs(j,{"code-path":"src/components/deploy/PipelineEditor.tsx:492:53",className:"bg-yellow-500/20 text-yellow-400 border-yellow-500/30",children:[e.jsx(Ne,{"code-path":"src/components/deploy/PipelineEditor.tsx:492:126",className:"w-3 h-3 mr-0.5"}),"已停止"]}):e.jsx(j,{"code-path":"src/components/deploy/PipelineEditor.tsx:493:26",variant:"secondary",className:"text-[var(--dg-text-secondary)]",children:s.status})}),e.jsxs("td",{"code-path":"src/components/deploy/PipelineEditor.tsx:495:23",className:"px-3 py-2 text-[var(--dg-text-secondary)] text-xs",children:[s.trigger_mode==="manual"&&e.jsxs("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:496:57",className:"flex items-center gap-1",children:[e.jsx(be,{"code-path":"src/components/deploy/PipelineEditor.tsx:496:99",className:"w-3 h-3"}),"手动"]}),s.trigger_mode==="cron"&&e.jsxs("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:497:55",className:"flex items-center gap-1",children:[e.jsx(ue,{"code-path":"src/components/deploy/PipelineEditor.tsx:497:97",className:"w-3 h-3"}),"定时"]}),s.trigger_mode==="webhook"&&e.jsxs("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:498:58",className:"flex items-center gap-1",children:[e.jsx(fe,{"code-path":"src/components/deploy/PipelineEditor.tsx:498:100",className:"w-3 h-3"}),"Webhook"]}),s.trigger_mode==="git_push"&&e.jsxs("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:499:59",className:"flex items-center gap-1",children:[e.jsx(V,{"code-path":"src/components/deploy/PipelineEditor.tsx:499:101",className:"w-3 h-3"}),"Git Push"]}),!s.trigger_mode&&(s.triggered_by||"手动")]}),e.jsx("td",{"code-path":"src/components/deploy/PipelineEditor.tsx:502:23",className:"px-3 py-2 text-[var(--dg-text-secondary)] text-xs",children:s.triggered_by||"admin"}),e.jsx("td",{"code-path":"src/components/deploy/PipelineEditor.tsx:503:23",className:"px-3 py-2 text-[var(--dg-text-secondary)] font-mono text-xs",children:s.branch||"-"}),e.jsx("td",{"code-path":"src/components/deploy/PipelineEditor.tsx:504:23",className:"px-3 py-2 text-[var(--dg-text-secondary)]",children:Ce(s.duration)}),e.jsx("td",{"code-path":"src/components/deploy/PipelineEditor.tsx:505:23",className:"px-3 py-2 text-[var(--dg-text-secondary)] text-xs",children:s.created_at?new Date(s.created_at).toLocaleString("zh-CN"):"-"}),e.jsx("td",{"code-path":"src/components/deploy/PipelineEditor.tsx:506:23",className:"px-3 py-2 text-right",children:e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:507:25",className:"flex items-center justify-end gap-1",children:[e.jsxs(p,{"code-path":"src/components/deploy/PipelineEditor.tsx:508:27",variant:"ghost",size:"sm",className:"h-7 text-xs text-blue-400 hover:text-blue-300",onClick:()=>qe(s),children:[e.jsx(gs,{"code-path":"src/components/deploy/PipelineEditor.tsx:508:152",className:"w-3.5 h-3.5 mr-1"}),"日志"]}),(s.status==="running"||s.status==="pending")&&e.jsxs(p,{"code-path":"src/components/deploy/PipelineEditor.tsx:510:29",variant:"ghost",size:"sm",className:"h-7 text-xs text-red-400 hover:text-red-300",onClick:()=>Je(s.id),children:[e.jsx(Ne,{"code-path":"src/components/deploy/PipelineEditor.tsx:510:152",className:"w-3.5 h-3.5 mr-1"}),"停止"]})]})})]},s.id))})]})})}),e.jsx(C,{"code-path":"src/components/deploy/PipelineEditor.tsx:523:9",value:"members",className:"mt-3",children:e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:524:11",className:"max-w-xl space-y-4",children:[e.jsx(P,{"code-path":"src/components/deploy/PipelineEditor.tsx:526:13",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsxs(E,{"code-path":"src/components/deploy/PipelineEditor.tsx:527:15",className:"p-4",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:528:17",className:"flex items-center gap-3",children:[e.jsx(js,{"code-path":"src/components/deploy/PipelineEditor.tsx:529:19",className:"w-4 h-4 text-blue-500"}),e.jsx("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:530:19",className:"text-sm font-medium text-[var(--dg-text-primary)]",children:"添加用户"})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:532:17",className:"flex items-end gap-3 mt-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:533:19",className:"flex-1 space-y-1",children:[e.jsx(y,{"code-path":"src/components/deploy/PipelineEditor.tsx:534:21",className:"text-xs",children:"用户名"}),e.jsx(v,{"code-path":"src/components/deploy/PipelineEditor.tsx:535:21",value:J,onChange:s=>re(s.target.value),placeholder:"输入用户名",className:"h-9"})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:537:19",className:"space-y-1",children:[e.jsx(y,{"code-path":"src/components/deploy/PipelineEditor.tsx:538:21",className:"text-xs",children:"角色"}),e.jsxs($,{"code-path":"src/components/deploy/PipelineEditor.tsx:539:21",value:ae,onValueChange:Ae,children:[e.jsx(R,{"code-path":"src/components/deploy/PipelineEditor.tsx:540:23",className:"h-9 w-28",children:e.jsx(O,{"code-path":"src/components/deploy/PipelineEditor.tsx:540:59"})}),e.jsxs(I,{"code-path":"src/components/deploy/PipelineEditor.tsx:541:23",children:[e.jsx(h,{"code-path":"src/components/deploy/PipelineEditor.tsx:542:25",value:"owner",children:"拥有者"}),e.jsx(h,{"code-path":"src/components/deploy/PipelineEditor.tsx:543:25",value:"editor",children:"编辑者"}),e.jsx(h,{"code-path":"src/components/deploy/PipelineEditor.tsx:544:25",value:"viewer",children:"查看者"})]})]})]}),e.jsxs(p,{"code-path":"src/components/deploy/PipelineEditor.tsx:548:19",onClick:Ge,className:"h-9",children:[e.jsx(D,{"code-path":"src/components/deploy/PipelineEditor.tsx:548:69",className:"w-4 h-4 mr-1"}),"添加"]})]})]})}),(()=>{const s=H.filter(o=>o.username),n=H.filter(o=>o.group_id);return e.jsxs(e.Fragment,{children:[e.jsx(P,{"code-path":"src/components/deploy/PipelineEditor.tsx:560:19",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsxs(E,{"code-path":"src/components/deploy/PipelineEditor.tsx:561:21",className:"p-0",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:562:23",className:"px-4 py-2 text-xs font-medium text-[var(--dg-text-secondary)] border-b border-[var(--dg-border)]",children:["👤 直接用户授权 (",s.length,")"]}),Le?e.jsx("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:566:25",className:"flex items-center justify-center py-6",children:e.jsx(q,{"code-path":"src/components/deploy/PipelineEditor.tsx:566:80",className:"w-5 h-5 animate-spin text-[var(--dg-text-secondary)]"})}):s.length===0?e.jsx("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:568:25",className:"py-4 text-center text-[var(--dg-text-secondary)] text-xs",children:"暂无直接用户"}):e.jsx("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:570:25",className:"divide-y divide-[var(--dg-border)]",children:s.map(o=>e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:572:29",className:"flex items-center justify-between px-4 py-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:573:31",className:"flex items-center gap-3",children:[e.jsx("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:574:33",className:"w-8 h-8 rounded-full bg-blue-500/20 flex items-center justify-center",children:e.jsx(es,{"code-path":"src/components/deploy/PipelineEditor.tsx:574:119",className:"w-4 h-4 text-blue-400"})}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:575:33",children:[e.jsx("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:576:35",className:"text-sm font-medium text-[var(--dg-text-primary)]",children:o.username}),e.jsx("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:577:35",className:"text-xs text-[var(--dg-text-secondary)]",children:o.role==="owner"?e.jsx("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:577:114",className:"text-amber-400",children:"拥有者"}):o.role==="editor"?e.jsx("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:577:182",className:"text-blue-400",children:"编辑者"}):e.jsx("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:577:227",className:"text-slate-400",children:"查看者"})})]})]}),e.jsxs(p,{"code-path":"src/components/deploy/PipelineEditor.tsx:580:31",variant:"ghost",size:"sm",className:"h-7 text-xs text-red-400 hover:text-red-300",onClick:()=>ge(o.id),children:[e.jsx(S,{"code-path":"src/components/deploy/PipelineEditor.tsx:580:162",className:"w-3.5 h-3.5 mr-1"}),"移除"]})]},o.id))})]})}),e.jsx(P,{"code-path":"src/components/deploy/PipelineEditor.tsx:589:19",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsxs(E,{"code-path":"src/components/deploy/PipelineEditor.tsx:590:21",className:"p-0",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:591:23",className:"px-4 py-2 text-xs font-medium text-[var(--dg-text-secondary)] border-b border-[var(--dg-border)]",children:["👥 用户组授权 (",n.length,")"]}),n.length===0?e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:595:25",className:"py-4 text-center text-[var(--dg-text-secondary)] text-xs",children:["暂无组授权 — 在「",e.jsx("a",{"code-path":"src/components/deploy/PipelineEditor.tsx:596:37",href:"/deploy/groups",className:"text-blue-400 underline",children:"用户组管理"}),"」页面创建组后,可在此授权"]}):e.jsx("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:599:25",className:"divide-y divide-[var(--dg-border)]",children:n.map(o=>e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:601:29",className:"flex items-center justify-between px-4 py-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:602:31",className:"flex items-center gap-3",children:[e.jsx("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:603:33",className:"w-8 h-8 rounded-full bg-purple-500/20 flex items-center justify-center",children:e.jsx(Pe,{"code-path":"src/components/deploy/PipelineEditor.tsx:603:121",className:"w-4 h-4 text-purple-400"})}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:604:33",children:[e.jsx("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:605:35",className:"text-sm font-medium text-[var(--dg-text-primary)]",children:o.group?.name||`组 #${o.group_id}`}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:606:35",className:"text-xs text-[var(--dg-text-secondary)]",children:[o.role==="owner"?e.jsx("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:606:114",className:"text-amber-400",children:"拥有者"}):o.role==="editor"?e.jsx("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:606:182",className:"text-blue-400",children:"编辑者"}):e.jsx("span",{"code-path":"src/components/deploy/PipelineEditor.tsx:606:227",className:"text-slate-400",children:"查看者"})," · 组内全体成员"]})]})]}),e.jsxs(p,{"code-path":"src/components/deploy/PipelineEditor.tsx:609:31",variant:"ghost",size:"sm",className:"h-7 text-xs text-red-400 hover:text-red-300",onClick:()=>ge(o.id),children:[e.jsx(S,{"code-path":"src/components/deploy/PipelineEditor.tsx:609:162",className:"w-3.5 h-3.5 mr-1"}),"撤销授权"]})]},o.id))})]})})]})})()]})})]}),e.jsx(_s,{"code-path":"src/components/deploy/PipelineEditor.tsx:624:7",open:De,onClose:()=>pe(!1),run:Ve,logs:Re})]}):e.jsx("div",{"code-path":"src/components/deploy/PipelineEditor.tsx:326:25",className:"text-center py-20 text-[var(--dg-text-secondary)]",children:"流水线不存在"})}export{Xs as default}; diff --git a/backend/static/assets/PipelineManager-C1vaTQ2Z.js b/backend/static/assets/PipelineManager-C1vaTQ2Z.js deleted file mode 100644 index eddd5c1..0000000 --- a/backend/static/assets/PipelineManager-C1vaTQ2Z.js +++ /dev/null @@ -1 +0,0 @@ -import{g as bs,j as e,L as w,a3 as B,r as n,a as Js,k as Hs,h as fe,B as p,x as W,a0 as E,a7 as I,q as ye,v as ne,N as ue,S as Qs,I as g,O as ve,a4 as Ks,n as be,D as ds,b as ps,c as is,d as xs}from"./index-DfyorCky.js";import{C as ms,a as hs}from"./card-C55cvSHg.js";import{B as y}from"./badge-xNW8x0G1.js";import{T as Us}from"./textarea-NXY8u32k.js";import{L as d}from"./label-BK0h2apY.js";import{S as Z,a as ee,b as se,c as ae,d as v}from"./select-D5qUzdAs.js";import{d as je,p as P}from"./deploy-B3Sg3N1U.js";import{t as x}from"./index-a3ybMjbR.js";import{C as D}from"./circle-x-DK79Dhg2.js";import{P as Pe}from"./plus-CUG-9kpu.js";import{A as R}from"./arrow-right-DyIltvNZ.js";import{L as Xs}from"./layers-FW4KKJMi.js";import{S as js}from"./shield-check-Dcx486cW.js";import{C as Ys}from"./code-L62jFLTC.js";import{C as Me}from"./circle-stop-s4wxdTEV.js";import{P as Zs}from"./play-cdPayOtJ.js";import{H as ea}from"./history-D_9jPUQg.js";import{T as gs}from"./trash-2-Dx32pOzT.js";import{B as sa}from"./box-TTGA1p57.js";import{T as ys}from"./tag-0HCfq8kH.js";import{F as us}from"./file-text-C9G5abwR.js";import"./index-CWVNW_qu.js";const aa=[["path",{d:"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z",key:"1a0edw"}],["path",{d:"M12 22V12",key:"d0xqtd"}],["polyline",{points:"3.29 7 12 12 20.71 7",key:"ousv84"}],["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}]],ta=bs("package",aa);const na=[["rect",{width:"8",height:"8",x:"3",y:"3",rx:"2",key:"by2w9f"}],["path",{d:"M7 11v4a2 2 0 0 0 2 2h4",key:"xkn7yn"}],["rect",{width:"8",height:"8",x:"13",y:"13",rx:"2",key:"1cgmvn"}]],vs=bs("workflow",na);function oa(c){return c.toLowerCase().replace(/[^a-z0-9]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"")||`pipeline-${Date.now()}`}function ca(c){switch(c){case"success":return e.jsxs(y,{"code-path":"src/components/deploy/pipeline-helpers.tsx:49:9",variant:"outline",className:"border-emerald-500/30 text-emerald-400 bg-emerald-500/10",children:[e.jsx(B,{"code-path":"src/components/deploy/pipeline-helpers.tsx:50:11",className:"h-3 w-3 mr-1"}),"成功"]});case"failed":return e.jsxs(y,{"code-path":"src/components/deploy/pipeline-helpers.tsx:56:9",variant:"outline",className:"border-red-500/30 text-red-400 bg-red-500/10",children:[e.jsx(D,{"code-path":"src/components/deploy/pipeline-helpers.tsx:57:11",className:"h-3 w-3 mr-1"}),"失败"]});case"running":return e.jsxs(y,{"code-path":"src/components/deploy/pipeline-helpers.tsx:63:9",variant:"outline",className:"border-blue-500/30 text-blue-400 bg-blue-500/10 animate-pulse",children:[e.jsx(w,{"code-path":"src/components/deploy/pipeline-helpers.tsx:64:11",className:"h-3 w-3 mr-1 animate-spin"}),"运行中"]});default:return e.jsx(y,{"code-path":"src/components/deploy/pipeline-helpers.tsx:70:9",variant:"outline",className:"border-[var(--dg-border)] text-[var(--dg-text-secondary)]",children:"从未运行"})}}const te=[{key:"checkout",label:"代码检出",icon:E,color:"#6366F1",order:1,needs:["repo"],desc:"从 Git 仓库拉取代码"},{key:"build",label:"构建",icon:sa,color:"#F59E0B",order:2,needs:[],desc:"编译/打包项目"},{key:"test",label:"测试",icon:B,color:"#10B981",order:3,needs:[],desc:"运行单元/集成测试"},{key:"image",label:"镜像打包",icon:ne,color:"#06B6D4",order:4,needs:["registry"],desc:"Docker 构建 & 推送"},{key:"deploy",label:"部署",icon:I,color:"#EF4444",order:5,needs:[],desc:"部署到目标环境"},{key:"verify",label:"验证",icon:js,color:"#3B82F6",order:6,needs:[],desc:"部署后健康检查"}].sort((c,b)=>c.order-b.order);function Ne(c){if(!c)return"-";if(c<60)return`${c}s`;const b=Math.floor(c/60),i=c%60;return i>0?`${b}分${i}秒`:`${b}分`}function ra(c){if(!c)return[];try{const b=typeof c=="string"?JSON.parse(c):c;return Array.isArray(b)?b:[]}catch{return[]}}function La(){const[c,b]=n.useState(""),[i,q]=n.useState([]),[J,L]=n.useState(!0),[M,k]=n.useState({}),[H,T]=n.useState({}),[N,A]=n.useState({}),[F,$]=n.useState("all"),[r,we]=n.useState({}),[Ps,z]=n.useState(!1),[Q,ke]=n.useState(""),[_,_e]=n.useState(""),[Ce,Se]=n.useState(""),[oe,Re]=n.useState(""),[Ee,Be]=n.useState("main"),[De,Le]=n.useState(""),[m,Te]=n.useState(["checkout","build","image","deploy"]),[,Ms]=n.useState(""),[,Ns]=n.useState(""),[ce,Ae]=n.useState("branch"),[Fe,$e]=n.useState("ssh"),[re,ze]=n.useState(""),[le,Oe]=n.useState(!1),[fs,ws]=n.useState([]),[ks,_s]=n.useState([]),[K,Ve]=n.useState(""),[C,Ge]=n.useState(""),[O,Ie]=n.useState("manual"),[We,qe]=n.useState(""),[Je,He]=n.useState(""),[Qe,de]=n.useState(""),[Ke,Ue]=n.useState(""),[j,S]=n.useState([]),[Xe,Ye]=n.useState(""),[Ze,Cs]=n.useState(2),[,Ss]=n.useState([]),[,Rs]=n.useState([]),[Es,Bs]=n.useState([]),[,da]=n.useState([]),[,pa]=n.useState([]),[Ds,es]=n.useState(!1),[V,Ls]=n.useState(null),[ss,as]=n.useState([]),ts=Js(),ns=Hs(),Ts=[{key:"all",label:"全部",icon:Xs,color:"#6B7280"},{key:"production",label:"生产",icon:js,color:"#EF4444"},{key:"testing",label:"测试",icon:B,color:"#F59E0B"},{key:"staging",label:"预发布",icon:ve,color:"#8B5CF6"},{key:"development",label:"开发",icon:Ys,color:"#3B82F6"}],As=n.useCallback(async()=>{try{const[s,a,t,o]=await Promise.all([je.getRepos().catch(()=>({list:[]})),je.getRegistries().catch(()=>({list:[]})),je.getEnvironments().catch(()=>({list:[]})),fe.get("/credentials",{page_size:100}).catch(()=>({list:[]}))]);Ss(Array.isArray(s?.list)?s.list:[]),Rs(Array.isArray(a?.list)?a.list:[]),Bs(Array.isArray(t?.list)?t.list:[]);const h=o?.list||[];ws(h.filter(u=>u.secret_type==="api")),_s(h.filter(u=>u.secret_type==="docker"))}catch{}},[]),G=n.useCallback(async()=>{L(!0);try{const s=await P.getPipelines();q(Array.isArray(s?.list)?s.list:[])}catch{x.error("获取流水线列表失败")}finally{L(!1)}},[]);n.useEffect(()=>{As(),G()},[]),n.useEffect(()=>{i.forEach(s=>{s.last_status==="running"&&!r[s.id]&&P.getRuns(s.id).then(a=>{const o=(a?.list||[]).find(h=>h.status==="running"||h.status==="pending");o&&we(h=>({...h,[s.id]:o}))}).catch(()=>{})})},[i]);const pe=async(s,a)=>{A(t=>({...t,[s]:!0}));try{const t=await P.getRuns(a);T(o=>({...o,[s]:t?.list||[]}))}catch{T(t=>({...t,[s]:[]}))}finally{A(t=>({...t,[s]:!1}))}},Fs=(s,a)=>{M[s]?k(t=>({...t,[s]:!1})):(pe(s,a),k(t=>({...t,[s]:!0})))},$s=async()=>{if(!Q.trim()){x.error("请输入流水线名称");return}if(m.includes("checkout")&&!oe.trim()){x.error("代码检出阶段需要填写 Git URL");return}if(m.includes("image")&&!C){x.error("镜像打包阶段需要关联 Docker 凭证");return}Oe(!0);try{const s=m.map(t=>te.find(o=>o.key===t)?.label||t),a=JSON.stringify(s.map((t,o)=>({id:`stage-${o+1}`,name:t,type:m[o]||"custom",tasks:[]})));await P.createPipeline({name:Q,code:oa(Q),job_name:_||void 0,description:Ce,source:oe,branch:Ee,dockerfile:De,type:"deploy",stages:a,deploy_mode:ce,deploy_target:Fe,environment_id:re?Number(re):null,repo_id:null,registry_id:null,git_credential_id:K?Number(K):null,registry_credential_id:C?Number(C):null,trigger_mode:O,watch_branches:We||void 0,exclude_branch:Je||void 0,cron_expr:Qe||void 0,webhook_token:Ke||void 0,variables:j.length>0?JSON.stringify(j):void 0,cache_paths:Xe||void 0,max_executors:Ze}),x.success("流水线已创建"),z(!1),zs(),G()}catch{x.error("创建失败")}finally{Oe(!1)}},zs=()=>{ke(""),_e(""),Se(""),Re(""),Be("main"),Le(""),Te(["checkout","build","image","deploy"]),Ms(""),Ns(""),Ae("branch"),$e("ssh"),ze(""),Ve(""),Ge(""),Ie("manual"),qe(""),He(""),de(""),Ue(""),S([]),Ye("")},Os=async(s,a)=>{try{await P.triggerPipeline(a),x.success("已触发"),pe(s,a),G()}catch{x.error("触发失败")}},ie=async(s,a,t)=>{if(await ts({title:"停止运行",description:"确定要停止此运行吗?",variant:"destructive"}))try{await P.stopRun(a,t),x.success("已停止"),pe(s,a),we(h=>{const u={...h};return delete u[s],u})}catch{x.error("停止失败")}},Vs=async(s,a)=>{const t=r[s];if(!t){try{const h=((await P.getRuns(a))?.list||[]).find(u=>u.status==="running"||u.status==="pending");h?await ie(s,a,h.id):x.error("未找到运行中的任务")}catch{x.error("停止失败")}return}await ie(s,a,t.id)},Gs=async(s,a)=>{Ls(a),es(!0);try{const t=await P.getRunLog(s,a.id);as(t?.logs||[])}catch{as([])}},Is=async s=>{if(await ts({title:"删除流水线",description:`确定删除「${s.name}」?`,variant:"destructive"}))try{await P.deletePipeline(s.code),x.success("已删除"),G()}catch{x.error("删除失败")}},os=i.filter(s=>{const a=(s.name||"").toLowerCase().includes(c.toLowerCase())||(s.description||"").toLowerCase().includes(c.toLowerCase()),t=F==="all"||(s.environment?.type||"")===F;return a&&t}),U={total:i.length,running:i.filter(s=>s.last_status==="running").length,success:i.filter(s=>s.last_status==="success").length,failed:i.filter(s=>s.last_status==="failed").length};return e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:285:5",className:"space-y-5",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:286:7",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:287:9",children:[e.jsx("h1",{"code-path":"src/components/deploy/PipelineManager.tsx:288:11",className:"text-2xl font-bold text-[var(--dg-text-primary)]",children:"流水线"}),e.jsx("p",{"code-path":"src/components/deploy/PipelineManager.tsx:289:11",className:"text-sm text-[var(--dg-text-secondary)] mt-1",children:"CI/CD 构建 · 部署 · 发布一体化"})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:291:9",className:"flex items-center gap-2",children:[e.jsxs(p,{"code-path":"src/components/deploy/PipelineManager.tsx:292:11",variant:"outline",className:"border-[var(--dg-border)] text-[var(--dg-text-secondary)]",onClick:G,children:[e.jsx(W,{"code-path":"src/components/deploy/PipelineManager.tsx:293:13",className:`h-4 w-4 mr-2 ${J?"animate-spin":""}`}),"刷新"]}),e.jsxs(p,{"code-path":"src/components/deploy/PipelineManager.tsx:295:11",onClick:()=>z(!0),children:[e.jsx(Pe,{"code-path":"src/components/deploy/PipelineManager.tsx:295:52",className:"h-4 w-4 mr-2"}),"新建流水线"]})]})]}),e.jsx("div",{"code-path":"src/components/deploy/PipelineManager.tsx:299:7",className:"grid grid-cols-4 gap-4",children:[{label:"流水线总数",val:U.total,icon:vs,color:"#3B82F6"},{label:"运行中",val:U.running,icon:w,color:"#3B82F6"},{label:"成功",val:U.success,icon:B,color:"#10B981"},{label:"失败",val:U.failed,icon:D,color:"#EF4444"}].map((s,a)=>e.jsx(ms,{"code-path":"src/components/deploy/PipelineManager.tsx:306:11",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsxs(hs,{"code-path":"src/components/deploy/PipelineManager.tsx:307:13",className:"p-4 flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:308:15",children:[e.jsx("p",{"code-path":"src/components/deploy/PipelineManager.tsx:308:20",className:"text-[var(--dg-text-secondary)] text-sm",children:s.label}),e.jsx("p",{"code-path":"src/components/deploy/PipelineManager.tsx:308:88",className:"text-2xl font-bold text-[var(--dg-text-primary)]",children:s.val})]}),e.jsx("div",{"code-path":"src/components/deploy/PipelineManager.tsx:309:15",className:"w-10 h-10 rounded-lg flex items-center justify-center",style:{backgroundColor:s.color+"20"},children:e.jsx(s.icon,{"code-path":"src/components/deploy/PipelineManager.tsx:309:130",className:"h-5 w-5",style:{color:s.color}})})]})},a))}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:316:7",className:"flex items-stretch gap-3 px-4 py-3 rounded-lg bg-[var(--dg-bg-secondary)] border border-[var(--dg-border)]",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:318:9",className:"flex-1 space-y-1.5",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:319:11",className:"flex items-center gap-1.5",children:[e.jsx(E,{"code-path":"src/components/deploy/PipelineManager.tsx:320:13",className:"h-3 w-3 text-indigo-400"}),e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:321:13",className:"text-[10px] font-semibold text-indigo-400",children:"构建"}),e.jsx(R,{"code-path":"src/components/deploy/PipelineManager.tsx:322:13",className:"h-2.5 w-2.5 text-[var(--dg-text-secondary)] opacity-30"}),e.jsx(I,{"code-path":"src/components/deploy/PipelineManager.tsx:323:13",className:"h-3 w-3 text-red-400"}),e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:324:13",className:"text-[10px] font-semibold text-red-400",children:"部署"}),e.jsx(R,{"code-path":"src/components/deploy/PipelineManager.tsx:325:13",className:"h-2.5 w-2.5 text-[var(--dg-text-secondary)] opacity-30"}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:326:13",className:"flex items-center gap-1 px-2 py-0.5 rounded bg-blue-400/10 border border-blue-400/20",children:[e.jsx(ye,{"code-path":"src/components/deploy/PipelineManager.tsx:327:15",className:"h-3 w-3 text-blue-400"}),e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:328:15",className:"text-[10px] font-medium text-blue-400",children:"SSH 主机"})]})]}),e.jsx("p",{"code-path":"src/components/deploy/PipelineManager.tsx:331:11",className:"text-[9px] text-[var(--dg-text-secondary)] opacity-40 pl-1",children:"传统主机 SCP 部署 · 无需镜像仓库"})]}),e.jsx("div",{"code-path":"src/components/deploy/PipelineManager.tsx:334:9",className:"w-px bg-[var(--dg-border)]"}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:336:9",className:"flex-1 space-y-1.5",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:337:11",className:"flex items-center gap-1.5",children:[e.jsx(E,{"code-path":"src/components/deploy/PipelineManager.tsx:338:13",className:"h-3 w-3 text-indigo-400"}),e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:339:13",className:"text-[10px] font-semibold text-indigo-400",children:"构建"}),e.jsx(R,{"code-path":"src/components/deploy/PipelineManager.tsx:340:13",className:"h-2.5 w-2.5 text-[var(--dg-text-secondary)] opacity-30"}),e.jsx(ne,{"code-path":"src/components/deploy/PipelineManager.tsx:341:13",className:"h-3 w-3 text-cyan-400"}),e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:342:13",className:"text-[10px] font-semibold text-cyan-400",children:"镜像仓库"}),e.jsx(R,{"code-path":"src/components/deploy/PipelineManager.tsx:343:13",className:"h-2.5 w-2.5 text-[var(--dg-text-secondary)] opacity-30"}),e.jsx(I,{"code-path":"src/components/deploy/PipelineManager.tsx:344:13",className:"h-3 w-3 text-red-400"}),e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:345:13",className:"text-[10px] font-semibold text-red-400",children:"部署"}),e.jsx(R,{"code-path":"src/components/deploy/PipelineManager.tsx:346:13",className:"h-2.5 w-2.5 text-[var(--dg-text-secondary)] opacity-30"}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:347:13",className:"flex items-center gap-1 px-2 py-0.5 rounded bg-emerald-400/10 border border-emerald-400/20",children:[e.jsx(ue,{"code-path":"src/components/deploy/PipelineManager.tsx:348:15",className:"h-3 w-3 text-emerald-400"}),e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:349:15",className:"text-[10px] font-medium text-emerald-400",children:"Kubernetes"})]})]}),e.jsx("p",{"code-path":"src/components/deploy/PipelineManager.tsx:352:11",className:"text-[9px] text-[var(--dg-text-secondary)] opacity-40 pl-1",children:"容器化部署 · 需镜像仓库推送"})]}),e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:354:9",className:"self-center ml-2 text-[10px] text-[var(--dg-text-secondary)] opacity-30 tracking-wide whitespace-nowrap",children:"全流程可视化"})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:357:7",className:"flex items-center gap-4",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:358:9",className:"relative max-w-md flex-1",children:[e.jsx(Qs,{"code-path":"src/components/deploy/PipelineManager.tsx:359:11",className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-[var(--dg-text-secondary)]"}),e.jsx(g,{"code-path":"src/components/deploy/PipelineManager.tsx:360:11",placeholder:"搜索流水线...",value:c,onChange:s=>b(s.target.value),className:"pl-10 bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),e.jsx("div",{"code-path":"src/components/deploy/PipelineManager.tsx:363:9",className:"flex items-center gap-1 bg-[var(--dg-bg-secondary)] rounded-lg p-1 border border-[var(--dg-border)]",children:Ts.map(s=>{const a=F===s.key,t=s.icon;return e.jsxs("button",{"code-path":"src/components/deploy/PipelineManager.tsx:368:15",onClick:()=>$(s.key),className:`flex items-center gap-1.5 px-3 py-1.5 rounded-md text-xs font-medium transition-all ${a?"text-white shadow-sm":"text-[var(--dg-text-secondary)] hover:text-[var(--dg-text-primary)]"}`,style:a?{backgroundColor:s.color}:{},children:[e.jsx(t,{"code-path":"src/components/deploy/PipelineManager.tsx:372:17",className:"h-3.5 w-3.5"}),s.label]},s.key)})})]}),J?e.jsx("div",{"code-path":"src/components/deploy/PipelineManager.tsx:380:9",className:"flex items-center justify-center py-12",children:e.jsx(w,{"code-path":"src/components/deploy/PipelineManager.tsx:380:65",className:"h-6 w-6 text-[var(--dg-text-secondary)] animate-spin"})}):os.length===0?e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:382:9",className:"text-center py-16 text-[var(--dg-text-secondary)]",children:[e.jsx(vs,{"code-path":"src/components/deploy/PipelineManager.tsx:383:11",className:"h-10 w-10 mx-auto mb-3 opacity-30"}),e.jsx("p",{"code-path":"src/components/deploy/PipelineManager.tsx:384:11",className:"text-sm",children:"暂无流水线"}),e.jsxs(p,{"code-path":"src/components/deploy/PipelineManager.tsx:385:11",variant:"outline",className:"mt-4",onClick:()=>z(!0),children:[e.jsx(Pe,{"code-path":"src/components/deploy/PipelineManager.tsx:385:87",className:"h-4 w-4 mr-1"}),"创建第一个流水线"]})]}):e.jsx("div",{"code-path":"src/components/deploy/PipelineManager.tsx:388:9",className:"space-y-3",children:os.map(s=>{const a=ra(s.stages),t=H[s.id]||[],o=M[s.id],h=N[s.id],u=s.repo,cs=s.registry;return e.jsx(ms,{"code-path":"src/components/deploy/PipelineManager.tsx:396:15",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] overflow-hidden",children:e.jsxs(hs,{"code-path":"src/components/deploy/PipelineManager.tsx:397:17",className:"p-0",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:398:19",className:"px-4 py-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:399:21",className:"flex items-start justify-between",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:400:23",className:"flex-1 min-w-0",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:401:25",className:"flex items-center gap-2 flex-wrap",children:[e.jsx("h3",{"code-path":"src/components/deploy/PipelineManager.tsx:402:27",className:"font-semibold text-[var(--dg-text-primary)]",children:s.name}),s.run_count>0&&e.jsxs(y,{"code-path":"src/components/deploy/PipelineManager.tsx:403:54",variant:"outline",className:"text-[11px] text-[var(--dg-text-secondary)] border-[var(--dg-border)]",children:["#",s.run_count]}),ca(s.last_status),s.environment&&e.jsx(y,{"code-path":"src/components/deploy/PipelineManager.tsx:405:52",style:{backgroundColor:s.environment.color+"20",color:s.environment.color},className:"text-xs",children:s.environment.display_name}),s.job_name&&e.jsx(y,{"code-path":"src/components/deploy/PipelineManager.tsx:406:49",variant:"secondary",className:"text-xs font-mono opacity-60",children:s.job_name})]}),e.jsx("p",{"code-path":"src/components/deploy/PipelineManager.tsx:408:25",className:"text-xs text-[var(--dg-text-secondary)] mt-1 line-clamp-1",children:s.description||"暂无描述"}),(s.last_run_branch||s.last_commit_id||s.last_image_tag)&&e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:411:27",className:"flex items-center gap-1 mt-1.5 text-xs font-mono",children:[s.last_run_branch&&e.jsxs("span",{"code-path":"src/components/deploy/PipelineManager.tsx:413:31",className:"flex items-center gap-0.5 text-indigo-400",children:[e.jsx(E,{"code-path":"src/components/deploy/PipelineManager.tsx:414:33",className:"h-3 w-3"}),s.last_run_branch]}),s.last_run_branch&&s.last_commit_id&&e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:418:31",className:"text-[var(--dg-text-secondary)] opacity-50 text-[10px] mx-0.5",children:"+"}),s.last_commit_id&&e.jsx("code",{"code-path":"src/components/deploy/PipelineManager.tsx:421:31",className:"text-amber-400 bg-amber-400/10 px-1 py-0.5 rounded text-[11px]",children:s.last_commit_id.slice(0,8)}),(s.last_run_branch||s.last_commit_id)&&s.last_image_tag&&e.jsx(R,{"code-path":"src/components/deploy/PipelineManager.tsx:424:31",className:"h-3 w-3 text-[var(--dg-text-secondary)] opacity-40 mx-0.5"}),s.last_image_tag&&e.jsxs("span",{"code-path":"src/components/deploy/PipelineManager.tsx:427:31",className:"flex items-center gap-0.5 text-cyan-400",children:[e.jsx(ta,{"code-path":"src/components/deploy/PipelineManager.tsx:428:33",className:"h-3 w-3"}),e.jsx("code",{"code-path":"src/components/deploy/PipelineManager.tsx:429:33",className:"bg-cyan-400/10 px-1 py-0.5 rounded text-[11px]",children:s.last_image_tag})]}),s.last_duration>0&&e.jsxs("span",{"code-path":"src/components/deploy/PipelineManager.tsx:433:31",className:"flex items-center gap-0.5 ml-auto text-[var(--dg-text-secondary)] opacity-50",children:[e.jsx(W,{"code-path":"src/components/deploy/PipelineManager.tsx:434:33",className:"h-3 w-3"}),Ne(s.last_duration)]})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:439:25",className:"flex items-center gap-3 mt-1.5 text-xs text-[var(--dg-text-secondary)] opacity-60",children:[e.jsxs("span",{"code-path":"src/components/deploy/PipelineManager.tsx:440:27",className:"flex items-center gap-1",children:[e.jsx(E,{"code-path":"src/components/deploy/PipelineManager.tsx:440:69",className:"h-3 w-3"}),s.deploy_mode==="tag"?"Tag发版":s.branch||"main"]}),e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:441:27",className:"flex items-center gap-1",children:(s.deploy_target||"ssh")==="k8s"?e.jsxs(e.Fragment,{children:[e.jsx(ue,{"code-path":"src/components/deploy/PipelineManager.tsx:441:118",className:"h-3 w-3"}),"Kubernetes"]}):e.jsxs(e.Fragment,{children:[e.jsx(ye,{"code-path":"src/components/deploy/PipelineManager.tsx:441:167",className:"h-3 w-3"}),"SSH 主机"]})}),u&&e.jsxs("span",{"code-path":"src/components/deploy/PipelineManager.tsx:442:36",className:"flex items-center gap-1",children:[e.jsx(ve,{"code-path":"src/components/deploy/PipelineManager.tsx:442:78",className:"h-3 w-3"}),u.name]}),cs&&e.jsxs("span",{"code-path":"src/components/deploy/PipelineManager.tsx:443:40",className:"flex items-center gap-1",children:[e.jsx(ne,{"code-path":"src/components/deploy/PipelineManager.tsx:443:82",className:"h-3 w-3"}),cs.name]}),s.last_run_at&&e.jsxs("span",{"code-path":"src/components/deploy/PipelineManager.tsx:444:52",children:[e.jsx(W,{"code-path":"src/components/deploy/PipelineManager.tsx:444:58",className:"h-3 w-3 inline mr-0.5"}),new Date(s.last_run_at).toLocaleString("zh-CN")]})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:447:23",className:"flex items-center gap-1 ml-4 shrink-0",children:[s.last_status==="running"?e.jsxs(p,{"code-path":"src/components/deploy/PipelineManager.tsx:449:27",variant:"destructive",size:"sm",className:"h-8",onClick:()=>Vs(s.id,s.code),children:[e.jsx(Me,{"code-path":"src/components/deploy/PipelineManager.tsx:450:29",className:"h-3.5 w-3.5 mr-1"}),"停止"]}):e.jsxs(p,{"code-path":"src/components/deploy/PipelineManager.tsx:453:27",variant:"default",size:"sm",className:"h-8",onClick:()=>Os(s.id,s.code),children:[e.jsx(Zs,{"code-path":"src/components/deploy/PipelineManager.tsx:454:29",className:"h-3.5 w-3.5 mr-1"}),"执行"]}),e.jsx(p,{"code-path":"src/components/deploy/PipelineManager.tsx:457:25",variant:"outline",size:"sm",className:"h-8",onClick:()=>ns(`/pipelines/${s.code||s.id}`),children:"编辑"}),e.jsxs(p,{"code-path":"src/components/deploy/PipelineManager.tsx:458:25",variant:"outline",size:"sm",className:"h-8",onClick:()=>ns(`/pipelines/${s.code||s.id}/runs`),children:[e.jsx(ea,{"code-path":"src/components/deploy/PipelineManager.tsx:459:27",className:"h-3.5 w-3.5 mr-1"}),"记录"]}),e.jsx(p,{"code-path":"src/components/deploy/PipelineManager.tsx:460:25",variant:"ghost",size:"sm",className:"h-8",onClick:()=>Fs(s.id,s.code),children:o?e.jsx(Ks,{"code-path":"src/components/deploy/PipelineManager.tsx:461:41",className:"h-4 w-4"}):e.jsx(be,{"code-path":"src/components/deploy/PipelineManager.tsx:461:79",className:"h-4 w-4"})}),e.jsx(p,{"code-path":"src/components/deploy/PipelineManager.tsx:463:25",variant:"ghost",size:"icon",className:"h-8 w-8 text-red-500",onClick:()=>Is(s),children:e.jsx(gs,{"code-path":"src/components/deploy/PipelineManager.tsx:463:133",className:"h-4 w-4"})})]})]}),a.length>0&&e.jsx("div",{"code-path":"src/components/deploy/PipelineManager.tsx:467:23",className:"flex items-center mt-2.5",children:a.map((l,X)=>{const rs=te.find(Y=>Y.label===l.name);rs?.icon||ys;let f="";if(s.last_run_stages)try{const Y=typeof s.last_run_stages=="string"?JSON.parse(s.last_run_stages):s.last_run_stages;f=(Array.isArray(Y)?Y.find(ls=>ls.name===l.name||ls.type===rs?.key):null)?.status||""}catch{}const xe=f==="success"||f==="completed",me=f==="running"||f==="in_progress",he=f==="failed"||f==="error",ge=he?"#EF4444":me?"#3B82F6":xe?"#10B981":"#6B7280",Ws=he?"#EF444528":me?"#3B82F628":xe?"#10B98128":"#6B728018",qs=he?e.jsx(D,{"code-path":"src/components/deploy/PipelineManager.tsx:485:51",className:"h-3 w-3"}):me?e.jsx(w,{"code-path":"src/components/deploy/PipelineManager.tsx:485:97",className:"h-3 w-3 animate-spin"}):xe?e.jsx(B,{"code-path":"src/components/deploy/PipelineManager.tsx:485:156",className:"h-3 w-3"}):e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:485:194",className:"text-[10px] opacity-40",children:"○"});return e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:487:29",className:"flex items-center",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:488:31",className:"flex items-center gap-1.5 px-2.5 py-1.5 text-[11px] font-semibold border shadow-sm",style:{backgroundColor:Ws,borderColor:ge+"70",color:ge,borderRadius:X===0?"8px 0 0 8px":X===a.length-1?"0 8px 8px 0":"0"},children:[qs,l.name]}),Xe.jsxs("tr",{"code-path":"src/components/deploy/PipelineManager.tsx:522:31",className:"border-b border-[var(--dg-border)] hover:bg-[var(--dg-bg-tertiary)]/50",children:[e.jsxs("td",{"code-path":"src/components/deploy/PipelineManager.tsx:523:33",className:"px-4 py-2 font-medium text-[var(--dg-text-primary)]",children:["#",l.build_number||l.id]}),e.jsx("td",{"code-path":"src/components/deploy/PipelineManager.tsx:524:33",className:"px-4 py-2",children:l.status==="success"?e.jsxs(y,{"code-path":"src/components/deploy/PipelineManager.tsx:525:61",className:"bg-emerald-500/20 text-emerald-400 border-emerald-500/30 text-[11px]",children:[e.jsx(B,{"code-path":"src/components/deploy/PipelineManager.tsx:525:149",className:"h-3 w-3 mr-0.5"}),"成功"]}):l.status==="failed"?e.jsxs(y,{"code-path":"src/components/deploy/PipelineManager.tsx:526:60",className:"bg-red-500/20 text-red-400 border-red-500/30 text-[11px]",children:[e.jsx(D,{"code-path":"src/components/deploy/PipelineManager.tsx:526:136",className:"h-3 w-3 mr-0.5"}),"失败"]}):l.status==="running"?e.jsxs(y,{"code-path":"src/components/deploy/PipelineManager.tsx:527:61",className:"bg-blue-500/20 text-blue-400 border-blue-500/30 text-[11px]",children:[e.jsx(w,{"code-path":"src/components/deploy/PipelineManager.tsx:527:140",className:"h-3 w-3 animate-spin mr-0.5"}),"执行中"]}):l.status==="cancelled"?e.jsxs(y,{"code-path":"src/components/deploy/PipelineManager.tsx:528:63",className:"bg-yellow-500/20 text-yellow-400 border-yellow-500/30 text-[11px]",children:[e.jsx(Me,{"code-path":"src/components/deploy/PipelineManager.tsx:528:148",className:"h-3 w-3 mr-0.5"}),"已停止"]}):e.jsx(y,{"code-path":"src/components/deploy/PipelineManager.tsx:529:36",variant:"secondary",className:"text-[11px]",children:l.status})}),e.jsx("td",{"code-path":"src/components/deploy/PipelineManager.tsx:531:33",className:"px-4 py-2 text-[var(--dg-text-secondary)] text-xs",children:l.triggered_by||"admin"}),e.jsx("td",{"code-path":"src/components/deploy/PipelineManager.tsx:532:33",className:"px-4 py-2 text-[var(--dg-text-secondary)] text-xs",children:Ne(l.duration)}),e.jsx("td",{"code-path":"src/components/deploy/PipelineManager.tsx:533:33",className:"px-4 py-2 text-[var(--dg-text-secondary)] text-xs",children:l.created_at?new Date(l.created_at).toLocaleString("zh-CN"):"-"}),e.jsx("td",{"code-path":"src/components/deploy/PipelineManager.tsx:534:33",className:"px-4 py-2 text-right",children:e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:535:35",className:"flex items-center justify-end gap-1",children:[e.jsxs(p,{"code-path":"src/components/deploy/PipelineManager.tsx:536:37",variant:"ghost",size:"sm",className:"h-7 text-xs text-blue-400 hover:text-blue-300",onClick:()=>Gs(s.code,l),children:[e.jsx(us,{"code-path":"src/components/deploy/PipelineManager.tsx:536:177",className:"h-3.5 w-3.5 mr-1"}),"日志"]}),(l.status==="running"||l.status==="pending")&&e.jsxs(p,{"code-path":"src/components/deploy/PipelineManager.tsx:538:39",variant:"ghost",size:"sm",className:"h-7 text-xs text-red-400 hover:text-red-300",onClick:()=>ie(s.id,s.code,l.id),children:[e.jsx(Me,{"code-path":"src/components/deploy/PipelineManager.tsx:538:190",className:"h-3.5 w-3.5 mr-1"}),"停止"]})]})})]},l.id))})]})]})]})},s.id)})}),e.jsx(ds,{"code-path":"src/components/deploy/PipelineManager.tsx:557:7",open:Ps,onOpenChange:z,children:e.jsxs(ps,{"code-path":"src/components/deploy/PipelineManager.tsx:558:9",className:"max-w-2xl max-h-[85vh] overflow-y-auto bg-[var(--dg-bg-primary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]",children:[e.jsx(is,{"code-path":"src/components/deploy/PipelineManager.tsx:559:11",children:e.jsxs(xs,{"code-path":"src/components/deploy/PipelineManager.tsx:559:25",className:"flex items-center gap-2",children:[e.jsx(I,{"code-path":"src/components/deploy/PipelineManager.tsx:559:74",className:"h-5 w-5"}),"新建流水线"]})}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:560:11",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:562:13",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:563:15",className:"space-y-1",children:[e.jsxs(d,{"code-path":"src/components/deploy/PipelineManager.tsx:564:17",children:["名称 ",e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:564:27",className:"text-red-400",children:"*"})]}),e.jsx(g,{"code-path":"src/components/deploy/PipelineManager.tsx:565:17",value:Q,onChange:s=>ke(s.target.value),placeholder:"例如: demo-jar 后端部署",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] h-9"})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:567:15",className:"space-y-1",children:[e.jsxs(d,{"code-path":"src/components/deploy/PipelineManager.tsx:568:17",children:["Job 名称 ",e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:568:31",className:"text-xs text-[var(--dg-text-secondary)]",children:"(Webhook URL)"})]}),e.jsx(g,{"code-path":"src/components/deploy/PipelineManager.tsx:569:17",value:_,onChange:s=>_e(s.target.value),placeholder:"cex-admin-server",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] h-9 font-mono text-sm"}),_&&e.jsxs("p",{"code-path":"src/components/deploy/PipelineManager.tsx:570:32",className:"text-[10px] text-[var(--dg-text-secondary)] opacity-60",children:["Webhook: POST .../webhook/job/",e.jsx("b",{"code-path":"src/components/deploy/PipelineManager.tsx:570:132",children:_})]})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:573:13",className:"space-y-1",children:[e.jsx(d,{"code-path":"src/components/deploy/PipelineManager.tsx:573:40",children:"描述"}),e.jsx(Us,{"code-path":"src/components/deploy/PipelineManager.tsx:573:57",value:Ce,onChange:s=>Se(s.target.value),placeholder:"流水线描述...",rows:2,className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]"})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:576:13",className:"grid grid-cols-3 gap-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:577:15",className:"space-y-1",children:[e.jsx(d,{"code-path":"src/components/deploy/PipelineManager.tsx:578:17",children:"部署模式"}),e.jsx("div",{"code-path":"src/components/deploy/PipelineManager.tsx:579:17",className:"flex gap-1 bg-[var(--dg-bg-secondary)] rounded-lg p-1 border border-[var(--dg-border)]",children:[{key:"branch",label:"分支",icon:E},{key:"tag",label:"Tag 发版",icon:ys}].map(s=>{const a=ce===s.key;return e.jsxs("button",{"code-path":"src/components/deploy/PipelineManager.tsx:586:23",onClick:()=>Ae(s.key),className:`flex-1 flex items-center justify-center gap-1 px-2 py-1.5 rounded-md text-xs font-medium transition-all ${a?"bg-blue-500 text-white":"text-[var(--dg-text-secondary)] hover:text-[var(--dg-text-primary)]"}`,children:[e.jsx(s.icon,{"code-path":"src/components/deploy/PipelineManager.tsx:589:25",className:"h-3.5 w-3.5"}),s.label]},s.key)})})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:595:15",className:"space-y-1",children:[e.jsx(d,{"code-path":"src/components/deploy/PipelineManager.tsx:596:17",children:"部署目标"}),e.jsx("div",{"code-path":"src/components/deploy/PipelineManager.tsx:597:17",className:"flex gap-1 bg-[var(--dg-bg-secondary)] rounded-lg p-1 border border-[var(--dg-border)]",children:[{key:"ssh",label:"SSH 主机",icon:ye},{key:"k8s",label:"Kubernetes 集群",icon:ue}].map(s=>{const a=Fe===s.key;return e.jsxs("button",{"code-path":"src/components/deploy/PipelineManager.tsx:604:23",onClick:()=>$e(s.key),className:`flex-1 flex items-center justify-center gap-1 px-2 py-1.5 rounded-md text-xs font-medium transition-all ${a?"bg-green-500 text-white":"text-[var(--dg-text-secondary)] hover:text-[var(--dg-text-primary)]"}`,children:[e.jsx(s.icon,{"code-path":"src/components/deploy/PipelineManager.tsx:607:25",className:"h-3.5 w-3.5"}),s.label]},s.key)})})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:613:15",className:"space-y-1",children:[e.jsx(d,{"code-path":"src/components/deploy/PipelineManager.tsx:614:17",children:"环境分组"}),e.jsxs(Z,{"code-path":"src/components/deploy/PipelineManager.tsx:615:17",value:String(re),onValueChange:s=>ze(s==="__none"?"":s),children:[e.jsx(ee,{"code-path":"src/components/deploy/PipelineManager.tsx:616:19",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] h-9",children:e.jsx(se,{"code-path":"src/components/deploy/PipelineManager.tsx:616:104",placeholder:"选择环境"})}),e.jsxs(ae,{"code-path":"src/components/deploy/PipelineManager.tsx:617:19",children:[e.jsx(v,{"code-path":"src/components/deploy/PipelineManager.tsx:618:21",value:"__none",children:"不指定"}),Es.map(s=>e.jsx(v,{"code-path":"src/components/deploy/PipelineManager.tsx:620:23",value:String(s.id),children:e.jsxs("span",{"code-path":"src/components/deploy/PipelineManager.tsx:621:25",className:"flex items-center gap-1.5",children:[e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:622:27",className:"w-2 h-2 rounded-full inline-block",style:{backgroundColor:s.color}}),s.display_name]})},s.id))]})]})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:633:13",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:634:15",className:"space-y-1",children:[e.jsxs(d,{"code-path":"src/components/deploy/PipelineManager.tsx:635:17",children:["Git URL ",m.includes("checkout")&&e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:635:72",className:"text-red-400",children:"*"})]}),e.jsx(g,{"code-path":"src/components/deploy/PipelineManager.tsx:636:17",value:oe,onChange:s=>Re(s.target.value),placeholder:"https://gitee.com/user/repo.git",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] h-9 font-mono text-xs"})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:639:15",className:"space-y-1",children:[e.jsx(d,{"code-path":"src/components/deploy/PipelineManager.tsx:640:17",children:"分支 / Tag"}),e.jsx(g,{"code-path":"src/components/deploy/PipelineManager.tsx:641:17",value:Ee,onChange:s=>Be(s.target.value),placeholder:ce==="tag"?"v1.0.0":"main",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] h-9"})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:644:15",className:"space-y-1",children:[e.jsxs(d,{"code-path":"src/components/deploy/PipelineManager.tsx:645:17",children:["Git 凭证 ",e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:645:31",className:"text-xs text-[var(--dg-text-secondary)] opacity-60",children:"(API Token)"})]}),e.jsxs(Z,{"code-path":"src/components/deploy/PipelineManager.tsx:646:17",value:String(K),onValueChange:s=>Ve(s==="__none"?"":s),children:[e.jsx(ee,{"code-path":"src/components/deploy/PipelineManager.tsx:647:19",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] h-9",children:e.jsx(se,{"code-path":"src/components/deploy/PipelineManager.tsx:647:104",placeholder:"选择凭证"})}),e.jsxs(ae,{"code-path":"src/components/deploy/PipelineManager.tsx:648:19",children:[e.jsx(v,{"code-path":"src/components/deploy/PipelineManager.tsx:649:21",value:"__none",children:"不关联"}),fs.map(s=>e.jsx(v,{"code-path":"src/components/deploy/PipelineManager.tsx:651:23",value:String(s.id),children:e.jsxs("span",{"code-path":"src/components/deploy/PipelineManager.tsx:652:25",className:"flex items-center gap-1.5",children:[e.jsx(ve,{"code-path":"src/components/deploy/PipelineManager.tsx:652:69",className:"h-3 w-3 opacity-60"}),s.name," ",s.summary&&e.jsxs("span",{"code-path":"src/components/deploy/PipelineManager.tsx:652:132",className:"text-[10px] opacity-50",children:["(",s.summary,")"]})]})},s.id))]})]}),!K&&m.includes("checkout")&&e.jsx("p",{"code-path":"src/components/deploy/PipelineManager.tsx:657:80",className:"text-xs text-amber-400",children:"建议关联凭证"})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:659:15",className:"space-y-1",children:[e.jsxs(d,{"code-path":"src/components/deploy/PipelineManager.tsx:660:17",children:["镜像仓库凭证 ",m.includes("image")&&e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:660:68",className:"text-red-400",children:"*"})]}),e.jsxs(Z,{"code-path":"src/components/deploy/PipelineManager.tsx:661:17",value:String(C),onValueChange:s=>Ge(s==="__none"?"":s),children:[e.jsx(ee,{"code-path":"src/components/deploy/PipelineManager.tsx:662:19",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] h-9",children:e.jsx(se,{"code-path":"src/components/deploy/PipelineManager.tsx:662:104",placeholder:"选择 Docker 凭证"})}),e.jsxs(ae,{"code-path":"src/components/deploy/PipelineManager.tsx:663:19",children:[e.jsx(v,{"code-path":"src/components/deploy/PipelineManager.tsx:664:21",value:"__none",children:"不关联"}),ks.map(s=>e.jsx(v,{"code-path":"src/components/deploy/PipelineManager.tsx:666:23",value:String(s.id),children:e.jsxs("span",{"code-path":"src/components/deploy/PipelineManager.tsx:667:25",className:"flex items-center gap-1.5",children:[e.jsx(ne,{"code-path":"src/components/deploy/PipelineManager.tsx:667:69",className:"h-3 w-3 opacity-60"}),s.name," ",s.summary&&e.jsxs("span",{"code-path":"src/components/deploy/PipelineManager.tsx:667:136",className:"text-[10px] opacity-50",children:["(",s.summary,")"]})]})},s.id))]})]}),!C&&m.includes("image")&&e.jsx("p",{"code-path":"src/components/deploy/PipelineManager.tsx:672:82",className:"text-xs text-amber-400",children:"需要关联 Docker 凭证"})]})]}),C&&_&&e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:677:15",className:"p-2.5 rounded-md bg-blue-500/5 border border-blue-500/20 text-xs text-[var(--dg-text-secondary)]",children:[e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:678:17",className:"text-blue-400",children:"镜像命名:"}),e.jsxs("code",{"code-path":"src/components/deploy/PipelineManager.tsx:679:17",className:"text-[var(--dg-text-primary)]",children:["{registry}","/","{namespace}","/","{","{JOB_BASE_NAME}","}",":","{","{tag}","}"]}),e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:680:17",className:"ml-2 opacity-60",children:"例:"}),e.jsxs("code",{"code-path":"src/components/deploy/PipelineManager.tsx:681:17",className:"opacity-60",children:["harbor.ast1001.com/test/",_,":latest"]})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:684:13",className:"space-y-1",children:[e.jsx(d,{"code-path":"src/components/deploy/PipelineManager.tsx:684:40",children:"Dockerfile 路径"}),e.jsx(g,{"code-path":"src/components/deploy/PipelineManager.tsx:684:68",value:De,onChange:s=>Le(s.target.value),placeholder:"jar/Dockerfile",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] h-9 font-mono text-xs"})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:687:13",className:"space-y-2",children:[e.jsxs(d,{"code-path":"src/components/deploy/PipelineManager.tsx:688:15",children:["发布流程 ",e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:688:27",className:"text-xs text-[var(--dg-text-secondary)] opacity-70 ml-1",children:"按顺序选择阶段"})]}),e.jsx("div",{"code-path":"src/components/deploy/PipelineManager.tsx:689:15",className:"flex flex-wrap gap-2",children:te.map(s=>{const a=m.includes(s.key);return e.jsxs(y,{"code-path":"src/components/deploy/PipelineManager.tsx:693:21",className:`cursor-pointer transition-all text-xs px-3 py-1.5 ${a?"border-current":"border-[var(--dg-border)] opacity-50 hover:opacity-80"}`,style:a?{backgroundColor:s.color+"20",color:s.color,borderColor:s.color}:{},onClick:()=>Te(a?m.filter(t=>t!==s.key):[...m,s.key]),title:s.desc,children:[e.jsx(s.icon,{"code-path":"src/components/deploy/PipelineManager.tsx:698:23",className:"h-3 w-3 mr-1"}),s.label," ",s.needs.includes("repo")?"🔗":"",s.needs.includes("registry")?"📦":""]},s.key)})}),m.length>0&&e.jsx("div",{"code-path":"src/components/deploy/PipelineManager.tsx:704:17",className:"flex items-center mt-2",children:m.map((s,a)=>{const t=te.find(o=>o.key===s);return e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:708:23",className:"flex items-center",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:709:25",className:"flex items-center gap-1 px-2 py-1 text-[11px] font-medium border",style:{backgroundColor:t.color+"20",borderColor:t.color+"40",color:t.color,borderRadius:a===0?"6px 0 0 6px":a===m.length-1?"0 6px 6px 0":"0"},children:[e.jsx(t.icon,{"code-path":"src/components/deploy/PipelineManager.tsx:711:27",className:"h-3 w-3"}),t.label]}),a{const a=O===s.key;return e.jsx("button",{"code-path":"src/components/deploy/PipelineManager.tsx:737:21",onClick:()=>Ie(s.key),className:`flex-1 flex flex-col items-center gap-0.5 px-2 py-2 rounded-md text-xs font-medium transition-all ${a?"bg-blue-500 text-white":"text-[var(--dg-text-secondary)] hover:text-[var(--dg-text-primary)]"}`,title:s.desc,children:s.label},s.key)})}),O==="git_push"&&e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:749:17",className:"mt-3 space-y-2 p-3 rounded-md bg-[var(--dg-bg-secondary)] border border-[var(--dg-border)]",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:750:19",className:"space-y-1",children:[e.jsxs(d,{"code-path":"src/components/deploy/PipelineManager.tsx:751:21",className:"text-xs",children:["监听分支 ",e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:751:53",className:"text-[var(--dg-text-secondary)] opacity-60",children:"(逗号分隔,支持 * 通配)"})]}),e.jsx(g,{"code-path":"src/components/deploy/PipelineManager.tsx:752:21",value:We,onChange:s=>qe(s.target.value),placeholder:"release/*, main",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] h-8 font-mono text-xs"})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:755:19",className:"space-y-1",children:[e.jsxs(d,{"code-path":"src/components/deploy/PipelineManager.tsx:756:21",className:"text-xs",children:["排除分支 ",e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:756:53",className:"text-[var(--dg-text-secondary)] opacity-60",children:"(不触发构建)"})]}),e.jsx(g,{"code-path":"src/components/deploy/PipelineManager.tsx:757:21",value:Je,onChange:s=>He(s.target.value),placeholder:"wip/*, draft/*",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] h-8 font-mono text-xs"})]})]}),O==="cron"&&e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:765:17",className:"mt-3 space-y-2 p-3 rounded-md bg-[var(--dg-bg-secondary)] border border-[var(--dg-border)]",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:766:19",className:"space-y-1",children:[e.jsxs(d,{"code-path":"src/components/deploy/PipelineManager.tsx:767:21",className:"text-xs",children:["Cron 表达式 ",e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:767:57",className:"text-[var(--dg-text-secondary)] opacity-60",children:"(标准 5 位)"})]}),e.jsx(g,{"code-path":"src/components/deploy/PipelineManager.tsx:768:21",value:Qe,onChange:s=>de(s.target.value),placeholder:"0 2 * * *",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] h-8 font-mono text-xs"})]}),e.jsx("div",{"code-path":"src/components/deploy/PipelineManager.tsx:771:19",className:"flex flex-wrap gap-1.5",children:[{expr:"*/5 * * * *",label:"每5分钟"},{expr:"0 * * * *",label:"每小时"},{expr:"0 2 * * *",label:"每天2点"},{expr:"0 0 * * 0",label:"每周日"}].map(s=>e.jsx(y,{"code-path":"src/components/deploy/PipelineManager.tsx:778:23",variant:"outline",className:"cursor-pointer text-[10px] hover:bg-blue-500/10",onClick:()=>de(s.expr),children:s.label},s.expr))})]}),O==="webhook"&&e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:787:17",className:"mt-3 space-y-2 p-3 rounded-md bg-[var(--dg-bg-secondary)] border border-[var(--dg-border)]",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:788:19",className:"space-y-1",children:[e.jsxs(d,{"code-path":"src/components/deploy/PipelineManager.tsx:789:21",className:"text-xs",children:["Webhook Token ",e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:789:62",className:"text-[var(--dg-text-secondary)] opacity-60",children:"(签名验证,可选)"})]}),e.jsx(g,{"code-path":"src/components/deploy/PipelineManager.tsx:790:21",value:Ke,onChange:s=>Ue(s.target.value),placeholder:"随机字符串",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] h-8 font-mono text-xs"})]}),e.jsxs("p",{"code-path":"src/components/deploy/PipelineManager.tsx:793:19",className:"text-[10px] text-[var(--dg-text-secondary)] opacity-60",children:["Webhook URL: ",e.jsxs("code",{"code-path":"src/components/deploy/PipelineManager.tsx:794:34",className:"text-[var(--dg-blue)]",children:["POST /api/v1/webhook/pipeline/","{code}"]})]})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:801:13",className:"border-t border-[var(--dg-border)] pt-4",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:802:15",className:"flex items-center justify-between mb-2",children:[e.jsxs(d,{"code-path":"src/components/deploy/PipelineManager.tsx:803:17",children:["环境变量 ",e.jsxs("span",{"code-path":"src/components/deploy/PipelineManager.tsx:803:29",className:"text-xs text-[var(--dg-text-secondary)] opacity-60",children:["($","{VAR_NAME}"," 引用)"]})]}),e.jsxs(p,{"code-path":"src/components/deploy/PipelineManager.tsx:804:17",variant:"ghost",size:"sm",className:"h-7 text-xs",onClick:()=>S([...j,{key:"",value:"",desc:""}]),children:[e.jsx(Pe,{"code-path":"src/components/deploy/PipelineManager.tsx:806:19",className:"h-3 w-3 mr-1"}),"添加变量"]})]}),j.length===0?e.jsx("p",{"code-path":"src/components/deploy/PipelineManager.tsx:810:17",className:"text-xs text-[var(--dg-text-muted)] py-2",children:'暂无变量,点击"添加变量"新增'}):e.jsx("div",{"code-path":"src/components/deploy/PipelineManager.tsx:812:17",className:"space-y-2",children:j.map((s,a)=>e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:814:21",className:"grid grid-cols-12 gap-2 items-start p-2 rounded-md bg-[var(--dg-bg-secondary)] border border-[var(--dg-border)]",children:[e.jsx(g,{"code-path":"src/components/deploy/PipelineManager.tsx:815:23",value:s.key,onChange:t=>{const o=[...j];o[a]={...o[a],key:t.target.value},S(o)},placeholder:"变量名",className:"col-span-3 h-8 text-xs font-mono bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)]"}),e.jsx(g,{"code-path":"src/components/deploy/PipelineManager.tsx:818:23",value:s.value,onChange:t=>{const o=[...j];o[a]={...o[a],value:t.target.value},S(o)},placeholder:"变量值",className:"col-span-4 h-8 text-xs font-mono bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)]"}),e.jsx(g,{"code-path":"src/components/deploy/PipelineManager.tsx:821:23",value:s.desc,onChange:t=>{const o=[...j];o[a]={...o[a],desc:t.target.value},S(o)},placeholder:"说明",className:"col-span-4 h-8 text-xs bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)]"}),e.jsx(p,{"code-path":"src/components/deploy/PipelineManager.tsx:824:23",variant:"ghost",size:"icon",className:"col-span-1 h-8 w-8 text-red-400",onClick:()=>S(j.filter((t,o)=>o!==a)),children:e.jsx(gs,{"code-path":"src/components/deploy/PipelineManager.tsx:826:25",className:"h-3.5 w-3.5"})})]},a))})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:835:13",className:"border-t border-[var(--dg-border)] pt-4",children:[e.jsxs(d,{"code-path":"src/components/deploy/PipelineManager.tsx:836:15",className:"mb-2 block",children:["构建缓存 ",e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:836:50",className:"text-xs text-[var(--dg-text-secondary)] opacity-60",children:"(加速后续构建)"})]}),e.jsx(g,{"code-path":"src/components/deploy/PipelineManager.tsx:837:15",value:Xe,onChange:s=>Ye(s.target.value),placeholder:"node_modules, .m2, target",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] h-8 text-xs font-mono"}),e.jsx("p",{"code-path":"src/components/deploy/PipelineManager.tsx:839:15",className:"text-[10px] text-[var(--dg-text-secondary)] opacity-50 mt-1",children:"多个路径用逗号分隔,相同的 Key 会命中已有缓存"})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:843:13",className:"border-t border-[var(--dg-border)] pt-4",children:[e.jsxs(d,{"code-path":"src/components/deploy/PipelineManager.tsx:844:15",className:"mb-2 block",children:["并发执行数 ",e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:844:51",className:"text-xs text-[var(--dg-text-secondary)] opacity-60",children:"(Number of executors)"})]}),e.jsx("div",{"code-path":"src/components/deploy/PipelineManager.tsx:845:15",className:"flex items-center gap-2",children:e.jsxs(Z,{"code-path":"src/components/deploy/PipelineManager.tsx:846:17",value:String(Ze),onValueChange:s=>Cs(Number(s)),children:[e.jsx(ee,{"code-path":"src/components/deploy/PipelineManager.tsx:847:19",className:"w-32 h-8 text-xs bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsx(se,{"code-path":"src/components/deploy/PipelineManager.tsx:848:21"})}),e.jsxs(ae,{"code-path":"src/components/deploy/PipelineManager.tsx:850:19",children:[e.jsx(v,{"code-path":"src/components/deploy/PipelineManager.tsx:851:21",value:"1",children:"1 — 串行"}),e.jsx(v,{"code-path":"src/components/deploy/PipelineManager.tsx:852:21",value:"2",children:"2"}),e.jsx(v,{"code-path":"src/components/deploy/PipelineManager.tsx:853:21",value:"3",children:"3"}),e.jsx(v,{"code-path":"src/components/deploy/PipelineManager.tsx:854:21",value:"4",children:"4"}),e.jsx(v,{"code-path":"src/components/deploy/PipelineManager.tsx:855:21",value:"5",children:"5"})]})]})}),e.jsx("p",{"code-path":"src/components/deploy/PipelineManager.tsx:859:15",className:"text-[10px] text-[var(--dg-text-secondary)] opacity-50 mt-1",children:"设为 1 则按顺序串行执行,默认 2 可并发构建"})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:862:11",className:"flex justify-end gap-2 mt-4 pt-4 border-t border-[var(--dg-border)]",children:[e.jsx(p,{"code-path":"src/components/deploy/PipelineManager.tsx:863:13",variant:"outline",onClick:()=>z(!1),children:"取消"}),e.jsxs(p,{"code-path":"src/components/deploy/PipelineManager.tsx:864:13",onClick:$s,disabled:le,children:[le?e.jsx(w,{"code-path":"src/components/deploy/PipelineManager.tsx:865:25",className:"h-4 w-4 animate-spin mr-1"}):e.jsx(I,{"code-path":"src/components/deploy/PipelineManager.tsx:865:77",className:"h-4 w-4 mr-1"}),le?"创建中...":"创建流水线"]})]})]})}),e.jsx(ds,{"code-path":"src/components/deploy/PipelineManager.tsx:873:7",open:Ds,onOpenChange:es,children:e.jsxs(ps,{"code-path":"src/components/deploy/PipelineManager.tsx:874:9",className:"max-w-3xl max-h-[85vh] overflow-y-auto bg-[var(--dg-bg-primary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]",children:[e.jsx(is,{"code-path":"src/components/deploy/PipelineManager.tsx:875:11",children:e.jsxs(xs,{"code-path":"src/components/deploy/PipelineManager.tsx:875:25",className:"flex items-center gap-2",children:[e.jsx(us,{"code-path":"src/components/deploy/PipelineManager.tsx:875:74",className:"h-5 w-5"}),"执行日志 #",V?.build_number||V?.id]})}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:876:11",className:"space-y-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:877:13",className:"flex flex-wrap gap-3 text-sm text-[var(--dg-text-secondary)]",children:[e.jsxs("span",{"code-path":"src/components/deploy/PipelineManager.tsx:878:15",children:["触发方式: ",V?.triggered_by||"manual"]}),e.jsxs("span",{"code-path":"src/components/deploy/PipelineManager.tsx:879:15",children:["分支: ",V?.branch||"-"]}),e.jsxs("span",{"code-path":"src/components/deploy/PipelineManager.tsx:880:15",children:["耗时: ",Ne(V?.duration)]})]}),e.jsx("div",{"code-path":"src/components/deploy/PipelineManager.tsx:882:13",className:"bg-slate-950 rounded-md p-3 max-h-[50vh] overflow-y-auto font-mono text-xs",children:ss.length===0?e.jsx("div",{"code-path":"src/components/deploy/PipelineManager.tsx:883:36",className:"text-slate-500 py-4 text-center",children:"暂无日志"}):ss.map((s,a)=>e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:885:19",className:"flex gap-2 py-0.5",children:[e.jsxs("span",{"code-path":"src/components/deploy/PipelineManager.tsx:886:21",className:"text-slate-500 shrink-0",children:["[",s.time,"]"]}),e.jsxs("span",{"code-path":"src/components/deploy/PipelineManager.tsx:887:21",className:s.level==="error"?"text-red-400":s.level==="warn"?"text-yellow-400":s.level==="success"?"text-green-400":"text-slate-300",children:[s.level==="success"?"✓":s.level==="error"?"✗":s.level==="warn"?"!":">"," ",s.message]})]},a))})]})]})})]})}function la({pipeline:c,clusterId:b}){const[i,q]=n.useState(null),[J,L]=n.useState(!1),M=c.code||c.id,k=async()=>{if(M){L(!0);try{const r=await fe.get(`/pipelines/${M}/queue`);q(r?.data||r)}catch{q(null)}finally{L(!1)}}};n.useEffect(()=>{k();const r=setInterval(k,1e4);return()=>clearInterval(r)},[M]);const H=async r=>{try{await fe.delete(`/pipelines/${M}/queue/${r}`),x.success("已取消"),k()}catch{x.error("取消失败")}},T=i?.running||0,N=i?.queued||0,A=i?.queue_ids||[],F=c.max_executors||2,$=i?.pending_runs||[];return J&&!i||T===0&&N===0?null:e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:936:5",className:"px-4 py-2 space-y-2",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:938:7",className:"flex items-center gap-2 text-xs",children:[e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:939:9",className:"text-[var(--dg-text-secondary)]",children:"构建执行状态"}),e.jsxs("span",{"code-path":"src/components/deploy/PipelineManager.tsx:940:9",className:"font-bold text-[var(--dg-text-primary)]",children:[T,"/",F]}),N>0&&e.jsxs("span",{"code-path":"src/components/deploy/PipelineManager.tsx:942:11",className:"text-[var(--dg-text-secondary)] ml-2",children:["构建队列 ",e.jsxs("span",{"code-path":"src/components/deploy/PipelineManager.tsx:943:18",className:"font-bold text-amber-400",children:["(",N,")"]})]})]}),N>0&&$.length>0&&e.jsx("div",{"code-path":"src/components/deploy/PipelineManager.tsx:950:9",className:"space-y-1",children:$.map(r=>e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:952:13",className:"flex items-center justify-between bg-[var(--dg-bg-tertiary)] rounded px-3 py-1.5",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:953:15",className:"flex items-center gap-2 text-xs",children:[e.jsx(W,{"code-path":"src/components/deploy/PipelineManager.tsx:954:17",className:"h-3 w-3 text-amber-400"}),e.jsxs("span",{"code-path":"src/components/deploy/PipelineManager.tsx:955:17",className:"text-[var(--dg-text-secondary)] font-mono",children:["#",r.build_number||r.id]}),e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:956:17",className:"text-[var(--dg-text-secondary)]",children:r.branch||"-"}),e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:957:17",className:"text-[var(--dg-text-secondary)] opacity-50",children:r.triggered_by||"-"})]}),e.jsxs(p,{"code-path":"src/components/deploy/PipelineManager.tsx:959:15",variant:"ghost",size:"sm",className:"h-6 text-xs text-red-400 hover:text-red-300",onClick:()=>H(r.id),children:[e.jsx(D,{"code-path":"src/components/deploy/PipelineManager.tsx:960:17",className:"h-3 w-3 mr-1"}),"取消"]})]},r.id))}),N>0&&$.length===0&&A.length>0&&e.jsx("div",{"code-path":"src/components/deploy/PipelineManager.tsx:969:9",className:"space-y-1",children:A.map(r=>e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:971:13",className:"flex items-center justify-between bg-[var(--dg-bg-tertiary)] rounded px-3 py-1.5",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:972:15",className:"flex items-center gap-2 text-xs",children:[e.jsx(W,{"code-path":"src/components/deploy/PipelineManager.tsx:973:17",className:"h-3 w-3 text-amber-400"}),e.jsxs("span",{"code-path":"src/components/deploy/PipelineManager.tsx:974:17",className:"text-[var(--dg-text-muted)] font-mono",children:["Run #",r]})]}),e.jsxs(p,{"code-path":"src/components/deploy/PipelineManager.tsx:976:15",variant:"ghost",size:"sm",className:"h-6 text-xs text-red-400 hover:text-red-300",onClick:()=>H(r),children:[e.jsx(D,{"code-path":"src/components/deploy/PipelineManager.tsx:977:17",className:"h-3 w-3 mr-1"}),"取消"]})]},r))})]})}export{La as PipelineManager}; diff --git a/backend/static/assets/PipelineManager-fXDTWBx3.js b/backend/static/assets/PipelineManager-fXDTWBx3.js new file mode 100644 index 0000000..85f1357 --- /dev/null +++ b/backend/static/assets/PipelineManager-fXDTWBx3.js @@ -0,0 +1 @@ +import{i as gs,j as e,L as R,P as G,r as n,f as Gs,m as Is,h as Ne,B as p,C as I,Q as E,al as V,S as ge,v as te,N as ye,am as ys,G as ue,V as Ws,o as ve,D as ls,a as ds,b as ps,c as is}from"./index-Dmami9WE.js";import{C as qs,a as Js}from"./card-CIfC-8Rh.js";import{I as g}from"./input-NsU9nXZF.js";import{B as y}from"./badge-3UzCvU7L.js";import{T as Hs}from"./textarea-DHUZ6N85.js";import{L as d}from"./label-Ap_-SPYI.js";import{S as Y,a as Z,b as ee,c as se,d as v}from"./select-DUbxjT0z.js";import{d as be,p as P}from"./deploy-CD5bEXt-.js";import{t as x}from"./index-BuEnLCjT.js";import{C as W}from"./circle-x-BBQeW1R3.js";import{P as je}from"./plus-O65gX7Qz.js";import{A as S}from"./arrow-right-CkKR0P0R.js";import{S as Qs}from"./search-Dd-PeBfg.js";import{L as Ks}from"./layers-Dv4yGMGm.js";import{C as Us}from"./code-BAhZJUYV.js";import{C as Pe}from"./circle-stop-DadQKvNg.js";import{P as Xs}from"./play-0EwQQJX_.js";import{H as Ys}from"./history-CbX6uocL.js";import{T as xs}from"./trash-2-DWVnIU6o.js";import{B as Zs}from"./box-88Ol5qY-.js";import{T as ms}from"./tag-utZ9-UQ0.js";import{F as hs}from"./file-text-CebshSV-.js";import"./index-CtCQcvyh.js";import"./chevron-up-Cq4GPopa.js";const ea=[["path",{d:"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z",key:"1a0edw"}],["path",{d:"M12 22V12",key:"d0xqtd"}],["polyline",{points:"3.29 7 12 12 20.71 7",key:"ousv84"}],["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}]],sa=gs("package",ea);const aa=[["rect",{width:"8",height:"8",x:"3",y:"3",rx:"2",key:"by2w9f"}],["path",{d:"M7 11v4a2 2 0 0 0 2 2h4",key:"xkn7yn"}],["rect",{width:"8",height:"8",x:"13",y:"13",rx:"2",key:"1cgmvn"}]],ta=gs("workflow",aa);function na(c){return c.toLowerCase().replace(/[^a-z0-9]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"")||`pipeline-${Date.now()}`}function oa(c){switch(c){case"success":return e.jsxs(y,{"code-path":"src/components/deploy/pipeline-helpers.tsx:49:9",variant:"outline",className:"border-emerald-500/30 text-emerald-400 bg-emerald-500/10",children:[e.jsx(G,{"code-path":"src/components/deploy/pipeline-helpers.tsx:50:11",className:"h-3 w-3 mr-1"}),"成功"]});case"failed":return e.jsxs(y,{"code-path":"src/components/deploy/pipeline-helpers.tsx:56:9",variant:"outline",className:"border-red-500/30 text-red-400 bg-red-500/10",children:[e.jsx(W,{"code-path":"src/components/deploy/pipeline-helpers.tsx:57:11",className:"h-3 w-3 mr-1"}),"失败"]});case"running":return e.jsxs(y,{"code-path":"src/components/deploy/pipeline-helpers.tsx:63:9",variant:"outline",className:"border-blue-500/30 text-blue-400 bg-blue-500/10 animate-pulse",children:[e.jsx(R,{"code-path":"src/components/deploy/pipeline-helpers.tsx:64:11",className:"h-3 w-3 mr-1 animate-spin"}),"运行中"]});default:return e.jsx(y,{"code-path":"src/components/deploy/pipeline-helpers.tsx:70:9",variant:"outline",className:"border-[var(--dg-border)] text-[var(--dg-text-secondary)]",children:"从未运行"})}}const ae=[{key:"checkout",label:"代码检出",icon:E,color:"#6366F1",order:1,needs:["repo"],desc:"从 Git 仓库拉取代码"},{key:"build",label:"构建",icon:Zs,color:"#F59E0B",order:2,needs:[],desc:"编译/打包项目"},{key:"test",label:"测试",icon:G,color:"#10B981",order:3,needs:[],desc:"运行单元/集成测试"},{key:"image",label:"镜像打包",icon:te,color:"#06B6D4",order:4,needs:["registry"],desc:"Docker 构建 & 推送"},{key:"deploy",label:"部署",icon:V,color:"#EF4444",order:5,needs:[],desc:"部署到目标环境"},{key:"verify",label:"验证",icon:ys,color:"#3B82F6",order:6,needs:[],desc:"部署后健康检查"}].sort((c,b)=>c.order-b.order);function Me(c){if(!c)return"-";if(c<60)return`${c}s`;const b=Math.floor(c/60),i=c%60;return i>0?`${b}分${i}秒`:`${b}分`}function ca(c){if(!c)return[];try{const b=typeof c=="string"?JSON.parse(c):c;return Array.isArray(b)?b:[]}catch{return[]}}function Ta(){const[c,b]=n.useState(""),[i,q]=n.useState([]),[J,B]=n.useState(!0),[M,w]=n.useState({}),[H,D]=n.useState({}),[N,L]=n.useState({}),[T,A]=n.useState("all"),[r,fe]=n.useState({}),[us,F]=n.useState(!1),[Q,we]=n.useState(""),[k,ke]=n.useState(""),[_e,Ce]=n.useState(""),[ne,Se]=n.useState(""),[Re,Ee]=n.useState("main"),[Be,De]=n.useState(""),[m,Le]=n.useState(["checkout","build","image","deploy"]),[,vs]=n.useState(""),[,bs]=n.useState(""),[oe,Te]=n.useState("branch"),[Ae,Fe]=n.useState("ssh"),[ce,$e]=n.useState(""),[re,ze]=n.useState(!1),[js,Ps]=n.useState([]),[Ms,Ns]=n.useState([]),[K,Oe]=n.useState(""),[_,Ve]=n.useState(""),[$,Ge]=n.useState("manual"),[Ie,We]=n.useState(""),[qe,Je]=n.useState(""),[He,le]=n.useState(""),[Qe,Ke]=n.useState(""),[j,C]=n.useState([]),[Ue,Xe]=n.useState(""),[Ye,fs]=n.useState(2),[,ws]=n.useState([]),[,ks]=n.useState([]),[_s,Cs]=n.useState([]),[,la]=n.useState([]),[,da]=n.useState([]),[Ss,Ze]=n.useState(!1),[z,Rs]=n.useState(null),[es,ss]=n.useState([]),as=Gs(),ts=Is(),Es=[{key:"all",label:"全部",icon:Ks,color:"#6B7280"},{key:"production",label:"生产",icon:ys,color:"#EF4444"},{key:"testing",label:"测试",icon:G,color:"#F59E0B"},{key:"staging",label:"预发布",icon:ue,color:"#8B5CF6"},{key:"development",label:"开发",icon:Us,color:"#3B82F6"}],Bs=n.useCallback(async()=>{try{const[s,a,t,o]=await Promise.all([be.getRepos().catch(()=>({list:[]})),be.getRegistries().catch(()=>({list:[]})),be.getEnvironments().catch(()=>({list:[]})),Ne.get("/credentials",{page_size:100}).catch(()=>({list:[]}))]);ws(Array.isArray(s?.list)?s.list:[]),ks(Array.isArray(a?.list)?a.list:[]),Cs(Array.isArray(t?.list)?t.list:[]);const h=o?.list||[];Ps(h.filter(u=>u.secret_type==="api")),Ns(h.filter(u=>u.secret_type==="docker"))}catch{}},[]),O=n.useCallback(async()=>{B(!0);try{const s=await P.getPipelines();q(Array.isArray(s?.list)?s.list:[])}catch{x.error("获取流水线列表失败")}finally{B(!1)}},[]);n.useEffect(()=>{Bs(),O()},[]),n.useEffect(()=>{i.forEach(s=>{s.last_status==="running"&&!r[s.id]&&P.getRuns(s.id).then(a=>{const o=(a?.list||[]).find(h=>h.status==="running"||h.status==="pending");o&&fe(h=>({...h,[s.id]:o}))}).catch(()=>{})})},[i]);const de=async(s,a)=>{L(t=>({...t,[s]:!0}));try{const t=await P.getRuns(a);D(o=>({...o,[s]:t?.list||[]}))}catch{D(t=>({...t,[s]:[]}))}finally{L(t=>({...t,[s]:!1}))}},Ds=(s,a)=>{M[s]?w(t=>({...t,[s]:!1})):(de(s,a),w(t=>({...t,[s]:!0})))},Ls=async()=>{if(!Q.trim()){x.error("请输入流水线名称");return}if(m.includes("checkout")&&!ne.trim()){x.error("代码检出阶段需要填写 Git URL");return}if(m.includes("image")&&!_){x.error("镜像打包阶段需要关联 Docker 凭证");return}ze(!0);try{const s=m.map(t=>ae.find(o=>o.key===t)?.label||t),a=JSON.stringify(s.map((t,o)=>({id:`stage-${o+1}`,name:t,type:m[o]||"custom",tasks:[]})));await P.createPipeline({name:Q,code:na(Q),job_name:k||void 0,description:_e,source:ne,branch:Re,dockerfile:Be,type:"deploy",stages:a,deploy_mode:oe,deploy_target:Ae,environment_id:ce?Number(ce):null,repo_id:null,registry_id:null,git_credential_id:K?Number(K):null,registry_credential_id:_?Number(_):null,trigger_mode:$,watch_branches:Ie||void 0,exclude_branch:qe||void 0,cron_expr:He||void 0,webhook_token:Qe||void 0,variables:j.length>0?JSON.stringify(j):void 0,cache_paths:Ue||void 0,max_executors:Ye}),x.success("流水线已创建"),F(!1),Ts(),O()}catch{x.error("创建失败")}finally{ze(!1)}},Ts=()=>{we(""),ke(""),Ce(""),Se(""),Ee("main"),De(""),Le(["checkout","build","image","deploy"]),vs(""),bs(""),Te("branch"),Fe("ssh"),$e(""),Oe(""),Ve(""),Ge("manual"),We(""),Je(""),le(""),Ke(""),C([]),Xe("")},As=async(s,a)=>{try{await P.triggerPipeline(a),x.success("已触发"),de(s,a),O()}catch{x.error("触发失败")}},pe=async(s,a,t)=>{if(await as({title:"停止运行",description:"确定要停止此运行吗?",variant:"destructive"}))try{await P.stopRun(a,t),x.success("已停止"),de(s,a),fe(h=>{const u={...h};return delete u[s],u})}catch{x.error("停止失败")}},Fs=async(s,a)=>{const t=r[s];if(!t){try{const h=((await P.getRuns(a))?.list||[]).find(u=>u.status==="running"||u.status==="pending");h?await pe(s,a,h.id):x.error("未找到运行中的任务")}catch{x.error("停止失败")}return}await pe(s,a,t.id)},$s=async(s,a)=>{Rs(a),Ze(!0);try{const t=await P.getRunLog(s,a.id);ss(t?.logs||[])}catch{ss([])}},zs=async s=>{if(await as({title:"删除流水线",description:`确定删除「${s.name}」?`,variant:"destructive"}))try{await P.deletePipeline(s.code),x.success("已删除"),O()}catch{x.error("删除失败")}},ns=i.filter(s=>{const a=(s.name||"").toLowerCase().includes(c.toLowerCase())||(s.description||"").toLowerCase().includes(c.toLowerCase()),t=T==="all"||(s.environment?.type||"")===T;return a&&t});return i.length,i.filter(s=>s.last_status==="running").length,i.filter(s=>s.last_status==="success").length,i.filter(s=>s.last_status==="failed").length,e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:285:5",className:"space-y-5",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:286:7",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:287:9",children:[e.jsx("h1",{"code-path":"src/components/deploy/PipelineManager.tsx:288:11",className:"text-2xl font-bold text-[var(--dg-text-primary)]",children:"流水线"}),e.jsx("p",{"code-path":"src/components/deploy/PipelineManager.tsx:289:11",className:"text-sm text-[var(--dg-text-secondary)] mt-1",children:"CI/CD 构建 · 部署 · 发布一体化"})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:291:9",className:"flex items-center gap-2",children:[e.jsxs(p,{"code-path":"src/components/deploy/PipelineManager.tsx:292:11",variant:"outline",className:"border-[var(--dg-border)] text-[var(--dg-text-secondary)]",onClick:O,children:[e.jsx(I,{"code-path":"src/components/deploy/PipelineManager.tsx:293:13",className:`h-4 w-4 mr-2 ${J?"animate-spin":""}`}),"刷新"]}),e.jsxs(p,{"code-path":"src/components/deploy/PipelineManager.tsx:295:11",onClick:()=>F(!0),children:[e.jsx(je,{"code-path":"src/components/deploy/PipelineManager.tsx:295:52",className:"h-4 w-4 mr-2"}),"新建流水线"]})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:300:7",className:"flex items-stretch gap-3 px-4 py-3 rounded-lg bg-[var(--dg-bg-secondary)] border border-[var(--dg-border)]",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:302:9",className:"flex-1 space-y-1.5",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:303:11",className:"flex items-center gap-1.5",children:[e.jsx(E,{"code-path":"src/components/deploy/PipelineManager.tsx:304:13",className:"h-3 w-3 text-indigo-400"}),e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:305:13",className:"text-[10px] font-semibold text-indigo-400",children:"构建"}),e.jsx(S,{"code-path":"src/components/deploy/PipelineManager.tsx:306:13",className:"h-2.5 w-2.5 text-[var(--dg-text-secondary)] opacity-30"}),e.jsx(V,{"code-path":"src/components/deploy/PipelineManager.tsx:307:13",className:"h-3 w-3 text-red-400"}),e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:308:13",className:"text-[10px] font-semibold text-red-400",children:"部署"}),e.jsx(S,{"code-path":"src/components/deploy/PipelineManager.tsx:309:13",className:"h-2.5 w-2.5 text-[var(--dg-text-secondary)] opacity-30"}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:310:13",className:"flex items-center gap-1 px-2 py-0.5 rounded bg-blue-400/10 border border-blue-400/20",children:[e.jsx(ge,{"code-path":"src/components/deploy/PipelineManager.tsx:311:15",className:"h-3 w-3 text-blue-400"}),e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:312:15",className:"text-[10px] font-medium text-blue-400",children:"SSH 主机"})]})]}),e.jsx("p",{"code-path":"src/components/deploy/PipelineManager.tsx:315:11",className:"text-[9px] text-[var(--dg-text-secondary)] opacity-40 pl-1",children:"传统主机 SCP 部署 · 无需镜像仓库"})]}),e.jsx("div",{"code-path":"src/components/deploy/PipelineManager.tsx:318:9",className:"w-px bg-[var(--dg-border)]"}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:320:9",className:"flex-1 space-y-1.5",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:321:11",className:"flex items-center gap-1.5",children:[e.jsx(E,{"code-path":"src/components/deploy/PipelineManager.tsx:322:13",className:"h-3 w-3 text-indigo-400"}),e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:323:13",className:"text-[10px] font-semibold text-indigo-400",children:"构建"}),e.jsx(S,{"code-path":"src/components/deploy/PipelineManager.tsx:324:13",className:"h-2.5 w-2.5 text-[var(--dg-text-secondary)] opacity-30"}),e.jsx(te,{"code-path":"src/components/deploy/PipelineManager.tsx:325:13",className:"h-3 w-3 text-cyan-400"}),e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:326:13",className:"text-[10px] font-semibold text-cyan-400",children:"镜像仓库"}),e.jsx(S,{"code-path":"src/components/deploy/PipelineManager.tsx:327:13",className:"h-2.5 w-2.5 text-[var(--dg-text-secondary)] opacity-30"}),e.jsx(V,{"code-path":"src/components/deploy/PipelineManager.tsx:328:13",className:"h-3 w-3 text-red-400"}),e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:329:13",className:"text-[10px] font-semibold text-red-400",children:"部署"}),e.jsx(S,{"code-path":"src/components/deploy/PipelineManager.tsx:330:13",className:"h-2.5 w-2.5 text-[var(--dg-text-secondary)] opacity-30"}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:331:13",className:"flex items-center gap-1 px-2 py-0.5 rounded bg-emerald-400/10 border border-emerald-400/20",children:[e.jsx(ye,{"code-path":"src/components/deploy/PipelineManager.tsx:332:15",className:"h-3 w-3 text-emerald-400"}),e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:333:15",className:"text-[10px] font-medium text-emerald-400",children:"Kubernetes"})]})]}),e.jsx("p",{"code-path":"src/components/deploy/PipelineManager.tsx:336:11",className:"text-[9px] text-[var(--dg-text-secondary)] opacity-40 pl-1",children:"容器化部署 · 需镜像仓库推送"})]}),e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:338:9",className:"self-center ml-2 text-[10px] text-[var(--dg-text-secondary)] opacity-30 tracking-wide whitespace-nowrap",children:"全流程可视化"})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:341:7",className:"flex items-center gap-4",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:342:9",className:"relative max-w-md flex-1",children:[e.jsx(Qs,{"code-path":"src/components/deploy/PipelineManager.tsx:343:11",className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-[var(--dg-text-secondary)]"}),e.jsx(g,{"code-path":"src/components/deploy/PipelineManager.tsx:344:11",placeholder:"搜索流水线...",value:c,onChange:s=>b(s.target.value),className:"pl-10 bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),e.jsx("div",{"code-path":"src/components/deploy/PipelineManager.tsx:347:9",className:"flex items-center gap-1 bg-[var(--dg-bg-secondary)] rounded-lg p-1 border border-[var(--dg-border)]",children:Es.map(s=>{const a=T===s.key,t=s.icon;return e.jsxs("button",{"code-path":"src/components/deploy/PipelineManager.tsx:352:15",onClick:()=>A(s.key),className:`flex items-center gap-1.5 px-3 py-1.5 rounded-md text-xs font-medium transition-all ${a?"text-white shadow-sm":"text-[var(--dg-text-secondary)] hover:text-[var(--dg-text-primary)]"}`,style:a?{backgroundColor:s.color}:{},children:[e.jsx(t,{"code-path":"src/components/deploy/PipelineManager.tsx:356:17",className:"h-3.5 w-3.5"}),s.label]},s.key)})})]}),J?e.jsx("div",{"code-path":"src/components/deploy/PipelineManager.tsx:364:9",className:"flex items-center justify-center py-12",children:e.jsx(R,{"code-path":"src/components/deploy/PipelineManager.tsx:364:65",className:"h-6 w-6 text-[var(--dg-text-secondary)] animate-spin"})}):ns.length===0?e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:366:9",className:"text-center py-16 text-[var(--dg-text-secondary)]",children:[e.jsx(ta,{"code-path":"src/components/deploy/PipelineManager.tsx:367:11",className:"h-10 w-10 mx-auto mb-3 opacity-30"}),e.jsx("p",{"code-path":"src/components/deploy/PipelineManager.tsx:368:11",className:"text-sm",children:"暂无流水线"}),e.jsxs(p,{"code-path":"src/components/deploy/PipelineManager.tsx:369:11",variant:"outline",className:"mt-4",onClick:()=>F(!0),children:[e.jsx(je,{"code-path":"src/components/deploy/PipelineManager.tsx:369:87",className:"h-4 w-4 mr-1"}),"创建第一个流水线"]})]}):e.jsx("div",{"code-path":"src/components/deploy/PipelineManager.tsx:372:9",className:"space-y-3",children:ns.map(s=>{const a=ca(s.stages),t=H[s.id]||[],o=M[s.id],h=N[s.id],u=s.repo,os=s.registry;return e.jsx(qs,{"code-path":"src/components/deploy/PipelineManager.tsx:380:15",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] overflow-hidden",children:e.jsxs(Js,{"code-path":"src/components/deploy/PipelineManager.tsx:381:17",className:"p-0",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:382:19",className:"px-4 py-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:383:21",className:"flex items-start justify-between",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:384:23",className:"flex-1 min-w-0",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:385:25",className:"flex items-center gap-2 flex-wrap",children:[e.jsx("h3",{"code-path":"src/components/deploy/PipelineManager.tsx:386:27",className:"font-semibold text-[var(--dg-text-primary)]",children:s.name}),s.run_count>0&&e.jsxs(y,{"code-path":"src/components/deploy/PipelineManager.tsx:387:54",variant:"outline",className:"text-[11px] text-[var(--dg-text-secondary)] border-[var(--dg-border)]",children:["#",s.run_count]}),oa(s.last_status),s.environment&&e.jsx(y,{"code-path":"src/components/deploy/PipelineManager.tsx:389:52",style:{backgroundColor:s.environment.color+"20",color:s.environment.color},className:"text-xs",children:s.environment.display_name}),s.job_name&&e.jsx(y,{"code-path":"src/components/deploy/PipelineManager.tsx:390:49",variant:"secondary",className:"text-xs font-mono opacity-60",children:s.job_name})]}),e.jsx("p",{"code-path":"src/components/deploy/PipelineManager.tsx:392:25",className:"text-xs text-[var(--dg-text-secondary)] mt-1 line-clamp-1",children:s.description||"暂无描述"}),(s.last_run_branch||s.last_commit_id||s.last_image_tag)&&e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:395:27",className:"flex items-center gap-1 mt-1.5 text-xs font-mono",children:[s.last_run_branch&&e.jsxs("span",{"code-path":"src/components/deploy/PipelineManager.tsx:397:31",className:"flex items-center gap-0.5 text-indigo-400",children:[e.jsx(E,{"code-path":"src/components/deploy/PipelineManager.tsx:398:33",className:"h-3 w-3"}),s.last_run_branch]}),s.last_run_branch&&s.last_commit_id&&e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:402:31",className:"text-[var(--dg-text-secondary)] opacity-50 text-[10px] mx-0.5",children:"+"}),s.last_commit_id&&e.jsx("code",{"code-path":"src/components/deploy/PipelineManager.tsx:405:31",className:"text-amber-400 bg-amber-400/10 px-1 py-0.5 rounded text-[11px]",children:s.last_commit_id.slice(0,8)}),(s.last_run_branch||s.last_commit_id)&&s.last_image_tag&&e.jsx(S,{"code-path":"src/components/deploy/PipelineManager.tsx:408:31",className:"h-3 w-3 text-[var(--dg-text-secondary)] opacity-40 mx-0.5"}),s.last_image_tag&&e.jsxs("span",{"code-path":"src/components/deploy/PipelineManager.tsx:411:31",className:"flex items-center gap-0.5 text-cyan-400",children:[e.jsx(sa,{"code-path":"src/components/deploy/PipelineManager.tsx:412:33",className:"h-3 w-3"}),e.jsx("code",{"code-path":"src/components/deploy/PipelineManager.tsx:413:33",className:"bg-cyan-400/10 px-1 py-0.5 rounded text-[11px]",children:s.last_image_tag})]}),s.last_duration>0&&e.jsxs("span",{"code-path":"src/components/deploy/PipelineManager.tsx:417:31",className:"flex items-center gap-0.5 ml-auto text-[var(--dg-text-secondary)] opacity-50",children:[e.jsx(I,{"code-path":"src/components/deploy/PipelineManager.tsx:418:33",className:"h-3 w-3"}),Me(s.last_duration)]})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:423:25",className:"flex items-center gap-3 mt-1.5 text-xs text-[var(--dg-text-secondary)] opacity-60",children:[e.jsxs("span",{"code-path":"src/components/deploy/PipelineManager.tsx:424:27",className:"flex items-center gap-1",children:[e.jsx(E,{"code-path":"src/components/deploy/PipelineManager.tsx:424:69",className:"h-3 w-3"}),s.deploy_mode==="tag"?"Tag发版":s.branch||"main"]}),e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:425:27",className:"flex items-center gap-1",children:(s.deploy_target||"ssh")==="k8s"?e.jsxs(e.Fragment,{children:[e.jsx(ye,{"code-path":"src/components/deploy/PipelineManager.tsx:425:118",className:"h-3 w-3"}),"Kubernetes"]}):e.jsxs(e.Fragment,{children:[e.jsx(ge,{"code-path":"src/components/deploy/PipelineManager.tsx:425:167",className:"h-3 w-3"}),"SSH 主机"]})}),u&&e.jsxs("span",{"code-path":"src/components/deploy/PipelineManager.tsx:426:36",className:"flex items-center gap-1",children:[e.jsx(ue,{"code-path":"src/components/deploy/PipelineManager.tsx:426:78",className:"h-3 w-3"}),u.name]}),os&&e.jsxs("span",{"code-path":"src/components/deploy/PipelineManager.tsx:427:40",className:"flex items-center gap-1",children:[e.jsx(te,{"code-path":"src/components/deploy/PipelineManager.tsx:427:82",className:"h-3 w-3"}),os.name]}),s.last_run_at&&e.jsxs("span",{"code-path":"src/components/deploy/PipelineManager.tsx:428:52",children:[e.jsx(I,{"code-path":"src/components/deploy/PipelineManager.tsx:428:58",className:"h-3 w-3 inline mr-0.5"}),new Date(s.last_run_at).toLocaleString("zh-CN")]})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:431:23",className:"flex items-center gap-1 ml-4 shrink-0",children:[s.last_status==="running"?e.jsxs(p,{"code-path":"src/components/deploy/PipelineManager.tsx:433:27",variant:"destructive",size:"sm",className:"h-8",onClick:()=>Fs(s.id,s.code),children:[e.jsx(Pe,{"code-path":"src/components/deploy/PipelineManager.tsx:434:29",className:"h-3.5 w-3.5 mr-1"}),"停止"]}):e.jsxs(p,{"code-path":"src/components/deploy/PipelineManager.tsx:437:27",variant:"default",size:"sm",className:"h-8",onClick:()=>As(s.id,s.code),children:[e.jsx(Xs,{"code-path":"src/components/deploy/PipelineManager.tsx:438:29",className:"h-3.5 w-3.5 mr-1"}),"执行"]}),e.jsx(p,{"code-path":"src/components/deploy/PipelineManager.tsx:441:25",variant:"outline",size:"sm",className:"h-8",onClick:()=>ts(`/pipelines/${s.code||s.id}`),children:"编辑"}),e.jsxs(p,{"code-path":"src/components/deploy/PipelineManager.tsx:442:25",variant:"outline",size:"sm",className:"h-8",onClick:()=>ts(`/pipelines/${s.code||s.id}/runs`),children:[e.jsx(Ys,{"code-path":"src/components/deploy/PipelineManager.tsx:443:27",className:"h-3.5 w-3.5 mr-1"}),"记录"]}),e.jsx(p,{"code-path":"src/components/deploy/PipelineManager.tsx:444:25",variant:"ghost",size:"sm",className:"h-8",onClick:()=>Ds(s.id,s.code),children:o?e.jsx(Ws,{"code-path":"src/components/deploy/PipelineManager.tsx:445:41",className:"h-4 w-4"}):e.jsx(ve,{"code-path":"src/components/deploy/PipelineManager.tsx:445:79",className:"h-4 w-4"})}),e.jsx(p,{"code-path":"src/components/deploy/PipelineManager.tsx:447:25",variant:"ghost",size:"icon",className:"h-8 w-8 text-red-500",onClick:()=>zs(s),children:e.jsx(xs,{"code-path":"src/components/deploy/PipelineManager.tsx:447:133",className:"h-4 w-4"})})]})]}),a.length>0&&e.jsx("div",{"code-path":"src/components/deploy/PipelineManager.tsx:451:23",className:"flex items-center mt-2.5",children:a.map((l,U)=>{const cs=ae.find(X=>X.label===l.name);cs?.icon||ms;let f="";if(s.last_run_stages)try{const X=typeof s.last_run_stages=="string"?JSON.parse(s.last_run_stages):s.last_run_stages;f=(Array.isArray(X)?X.find(rs=>rs.name===l.name||rs.type===cs?.key):null)?.status||""}catch{}const ie=f==="success"||f==="completed",xe=f==="running"||f==="in_progress",me=f==="failed"||f==="error",he=me?"#EF4444":xe?"#3B82F6":ie?"#10B981":"#6B7280",Os=me?"#EF444528":xe?"#3B82F628":ie?"#10B98128":"#6B728018",Vs=me?e.jsx(W,{"code-path":"src/components/deploy/PipelineManager.tsx:469:51",className:"h-3 w-3"}):xe?e.jsx(R,{"code-path":"src/components/deploy/PipelineManager.tsx:469:97",className:"h-3 w-3 animate-spin"}):ie?e.jsx(G,{"code-path":"src/components/deploy/PipelineManager.tsx:469:156",className:"h-3 w-3"}):e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:469:194",className:"text-[10px] opacity-40",children:"○"});return e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:471:29",className:"flex items-center",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:472:31",className:"flex items-center gap-1.5 px-2.5 py-1.5 text-[11px] font-semibold border shadow-sm",style:{backgroundColor:Os,borderColor:he+"70",color:he,borderRadius:U===0?"8px 0 0 8px":U===a.length-1?"0 8px 8px 0":"0"},children:[Vs,l.name]}),Ue.jsxs("tr",{"code-path":"src/components/deploy/PipelineManager.tsx:506:31",className:"border-b border-[var(--dg-border)] hover:bg-[var(--dg-bg-tertiary)]/50",children:[e.jsxs("td",{"code-path":"src/components/deploy/PipelineManager.tsx:507:33",className:"px-4 py-2 font-medium text-[var(--dg-text-primary)]",children:["#",l.build_number||l.id]}),e.jsx("td",{"code-path":"src/components/deploy/PipelineManager.tsx:508:33",className:"px-4 py-2",children:l.status==="success"?e.jsxs(y,{"code-path":"src/components/deploy/PipelineManager.tsx:509:61",className:"bg-emerald-500/20 text-emerald-400 border-emerald-500/30 text-[11px]",children:[e.jsx(G,{"code-path":"src/components/deploy/PipelineManager.tsx:509:149",className:"h-3 w-3 mr-0.5"}),"成功"]}):l.status==="failed"?e.jsxs(y,{"code-path":"src/components/deploy/PipelineManager.tsx:510:60",className:"bg-red-500/20 text-red-400 border-red-500/30 text-[11px]",children:[e.jsx(W,{"code-path":"src/components/deploy/PipelineManager.tsx:510:136",className:"h-3 w-3 mr-0.5"}),"失败"]}):l.status==="running"?e.jsxs(y,{"code-path":"src/components/deploy/PipelineManager.tsx:511:61",className:"bg-blue-500/20 text-blue-400 border-blue-500/30 text-[11px]",children:[e.jsx(R,{"code-path":"src/components/deploy/PipelineManager.tsx:511:140",className:"h-3 w-3 animate-spin mr-0.5"}),"执行中"]}):l.status==="cancelled"?e.jsxs(y,{"code-path":"src/components/deploy/PipelineManager.tsx:512:63",className:"bg-yellow-500/20 text-yellow-400 border-yellow-500/30 text-[11px]",children:[e.jsx(Pe,{"code-path":"src/components/deploy/PipelineManager.tsx:512:148",className:"h-3 w-3 mr-0.5"}),"已停止"]}):e.jsx(y,{"code-path":"src/components/deploy/PipelineManager.tsx:513:36",variant:"secondary",className:"text-[11px]",children:l.status})}),e.jsx("td",{"code-path":"src/components/deploy/PipelineManager.tsx:515:33",className:"px-4 py-2 text-[var(--dg-text-secondary)] text-xs",children:l.triggered_by||"admin"}),e.jsx("td",{"code-path":"src/components/deploy/PipelineManager.tsx:516:33",className:"px-4 py-2 text-[var(--dg-text-secondary)] text-xs",children:Me(l.duration)}),e.jsx("td",{"code-path":"src/components/deploy/PipelineManager.tsx:517:33",className:"px-4 py-2 text-[var(--dg-text-secondary)] text-xs",children:l.created_at?new Date(l.created_at).toLocaleString("zh-CN"):"-"}),e.jsx("td",{"code-path":"src/components/deploy/PipelineManager.tsx:518:33",className:"px-4 py-2 text-right",children:e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:519:35",className:"flex items-center justify-end gap-1",children:[e.jsxs(p,{"code-path":"src/components/deploy/PipelineManager.tsx:520:37",variant:"ghost",size:"sm",className:"h-7 text-xs text-blue-400 hover:text-blue-300",onClick:()=>$s(s.code,l),children:[e.jsx(hs,{"code-path":"src/components/deploy/PipelineManager.tsx:520:177",className:"h-3.5 w-3.5 mr-1"}),"日志"]}),(l.status==="running"||l.status==="pending")&&e.jsxs(p,{"code-path":"src/components/deploy/PipelineManager.tsx:522:39",variant:"ghost",size:"sm",className:"h-7 text-xs text-red-400 hover:text-red-300",onClick:()=>pe(s.id,s.code,l.id),children:[e.jsx(Pe,{"code-path":"src/components/deploy/PipelineManager.tsx:522:190",className:"h-3.5 w-3.5 mr-1"}),"停止"]})]})})]},l.id))})]})]})]})},s.id)})}),e.jsx(ls,{"code-path":"src/components/deploy/PipelineManager.tsx:541:7",open:us,onOpenChange:F,children:e.jsxs(ds,{"code-path":"src/components/deploy/PipelineManager.tsx:542:9",className:"max-w-2xl max-h-[85vh] overflow-y-auto bg-[var(--dg-bg-primary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]",children:[e.jsx(ps,{"code-path":"src/components/deploy/PipelineManager.tsx:543:11",children:e.jsxs(is,{"code-path":"src/components/deploy/PipelineManager.tsx:543:25",className:"flex items-center gap-2",children:[e.jsx(V,{"code-path":"src/components/deploy/PipelineManager.tsx:543:74",className:"h-5 w-5"}),"新建流水线"]})}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:544:11",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:546:13",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:547:15",className:"space-y-1",children:[e.jsxs(d,{"code-path":"src/components/deploy/PipelineManager.tsx:548:17",children:["名称 ",e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:548:27",className:"text-red-400",children:"*"})]}),e.jsx(g,{"code-path":"src/components/deploy/PipelineManager.tsx:549:17",value:Q,onChange:s=>we(s.target.value),placeholder:"例如: demo-jar 后端部署",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] h-9"})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:551:15",className:"space-y-1",children:[e.jsxs(d,{"code-path":"src/components/deploy/PipelineManager.tsx:552:17",children:["Job 名称 ",e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:552:31",className:"text-xs text-[var(--dg-text-secondary)]",children:"(Webhook URL)"})]}),e.jsx(g,{"code-path":"src/components/deploy/PipelineManager.tsx:553:17",value:k,onChange:s=>ke(s.target.value),placeholder:"cex-admin-server",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] h-9 font-mono text-sm"}),k&&e.jsxs("p",{"code-path":"src/components/deploy/PipelineManager.tsx:554:32",className:"text-[10px] text-[var(--dg-text-secondary)] opacity-60",children:["Webhook: POST .../webhook/job/",e.jsx("b",{"code-path":"src/components/deploy/PipelineManager.tsx:554:132",children:k})]})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:557:13",className:"space-y-1",children:[e.jsx(d,{"code-path":"src/components/deploy/PipelineManager.tsx:557:40",children:"描述"}),e.jsx(Hs,{"code-path":"src/components/deploy/PipelineManager.tsx:557:57",value:_e,onChange:s=>Ce(s.target.value),placeholder:"流水线描述...",rows:2,className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]"})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:560:13",className:"grid grid-cols-3 gap-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:561:15",className:"space-y-1",children:[e.jsx(d,{"code-path":"src/components/deploy/PipelineManager.tsx:562:17",children:"部署模式"}),e.jsx("div",{"code-path":"src/components/deploy/PipelineManager.tsx:563:17",className:"flex gap-1 bg-[var(--dg-bg-secondary)] rounded-lg p-1 border border-[var(--dg-border)]",children:[{key:"branch",label:"分支",icon:E},{key:"tag",label:"Tag 发版",icon:ms}].map(s=>{const a=oe===s.key;return e.jsxs("button",{"code-path":"src/components/deploy/PipelineManager.tsx:570:23",onClick:()=>Te(s.key),className:`flex-1 flex items-center justify-center gap-1 px-2 py-1.5 rounded-md text-xs font-medium transition-all ${a?"bg-blue-500 text-white":"text-[var(--dg-text-secondary)] hover:text-[var(--dg-text-primary)]"}`,children:[e.jsx(s.icon,{"code-path":"src/components/deploy/PipelineManager.tsx:573:25",className:"h-3.5 w-3.5"}),s.label]},s.key)})})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:579:15",className:"space-y-1",children:[e.jsx(d,{"code-path":"src/components/deploy/PipelineManager.tsx:580:17",children:"部署目标"}),e.jsx("div",{"code-path":"src/components/deploy/PipelineManager.tsx:581:17",className:"flex gap-1 bg-[var(--dg-bg-secondary)] rounded-lg p-1 border border-[var(--dg-border)]",children:[{key:"ssh",label:"SSH 主机",icon:ge},{key:"k8s",label:"Kubernetes 集群",icon:ye}].map(s=>{const a=Ae===s.key;return e.jsxs("button",{"code-path":"src/components/deploy/PipelineManager.tsx:588:23",onClick:()=>Fe(s.key),className:`flex-1 flex items-center justify-center gap-1 px-2 py-1.5 rounded-md text-xs font-medium transition-all ${a?"bg-green-500 text-white":"text-[var(--dg-text-secondary)] hover:text-[var(--dg-text-primary)]"}`,children:[e.jsx(s.icon,{"code-path":"src/components/deploy/PipelineManager.tsx:591:25",className:"h-3.5 w-3.5"}),s.label]},s.key)})})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:597:15",className:"space-y-1",children:[e.jsx(d,{"code-path":"src/components/deploy/PipelineManager.tsx:598:17",children:"环境分组"}),e.jsxs(Y,{"code-path":"src/components/deploy/PipelineManager.tsx:599:17",value:String(ce),onValueChange:s=>$e(s==="__none"?"":s),children:[e.jsx(Z,{"code-path":"src/components/deploy/PipelineManager.tsx:600:19",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] h-9",children:e.jsx(ee,{"code-path":"src/components/deploy/PipelineManager.tsx:600:104",placeholder:"选择环境"})}),e.jsxs(se,{"code-path":"src/components/deploy/PipelineManager.tsx:601:19",children:[e.jsx(v,{"code-path":"src/components/deploy/PipelineManager.tsx:602:21",value:"__none",children:"不指定"}),_s.map(s=>e.jsx(v,{"code-path":"src/components/deploy/PipelineManager.tsx:604:23",value:String(s.id),children:e.jsxs("span",{"code-path":"src/components/deploy/PipelineManager.tsx:605:25",className:"flex items-center gap-1.5",children:[e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:606:27",className:"w-2 h-2 rounded-full inline-block",style:{backgroundColor:s.color}}),s.display_name]})},s.id))]})]})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:617:13",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:618:15",className:"space-y-1",children:[e.jsxs(d,{"code-path":"src/components/deploy/PipelineManager.tsx:619:17",children:["Git URL ",m.includes("checkout")&&e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:619:72",className:"text-red-400",children:"*"})]}),e.jsx(g,{"code-path":"src/components/deploy/PipelineManager.tsx:620:17",value:ne,onChange:s=>Se(s.target.value),placeholder:"https://gitee.com/user/repo.git",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] h-9 font-mono text-xs"})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:623:15",className:"space-y-1",children:[e.jsx(d,{"code-path":"src/components/deploy/PipelineManager.tsx:624:17",children:"分支 / Tag"}),e.jsx(g,{"code-path":"src/components/deploy/PipelineManager.tsx:625:17",value:Re,onChange:s=>Ee(s.target.value),placeholder:oe==="tag"?"v1.0.0":"main",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] h-9"})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:628:15",className:"space-y-1",children:[e.jsxs(d,{"code-path":"src/components/deploy/PipelineManager.tsx:629:17",children:["Git 凭证 ",e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:629:31",className:"text-xs text-[var(--dg-text-secondary)] opacity-60",children:"(API Token)"})]}),e.jsxs(Y,{"code-path":"src/components/deploy/PipelineManager.tsx:630:17",value:String(K),onValueChange:s=>Oe(s==="__none"?"":s),children:[e.jsx(Z,{"code-path":"src/components/deploy/PipelineManager.tsx:631:19",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] h-9",children:e.jsx(ee,{"code-path":"src/components/deploy/PipelineManager.tsx:631:104",placeholder:"选择凭证"})}),e.jsxs(se,{"code-path":"src/components/deploy/PipelineManager.tsx:632:19",children:[e.jsx(v,{"code-path":"src/components/deploy/PipelineManager.tsx:633:21",value:"__none",children:"不关联"}),js.map(s=>e.jsx(v,{"code-path":"src/components/deploy/PipelineManager.tsx:635:23",value:String(s.id),children:e.jsxs("span",{"code-path":"src/components/deploy/PipelineManager.tsx:636:25",className:"flex items-center gap-1.5",children:[e.jsx(ue,{"code-path":"src/components/deploy/PipelineManager.tsx:636:69",className:"h-3 w-3 opacity-60"}),s.name," ",s.summary&&e.jsxs("span",{"code-path":"src/components/deploy/PipelineManager.tsx:636:132",className:"text-[10px] opacity-50",children:["(",s.summary,")"]})]})},s.id))]})]}),!K&&m.includes("checkout")&&e.jsx("p",{"code-path":"src/components/deploy/PipelineManager.tsx:641:80",className:"text-xs text-amber-400",children:"建议关联凭证"})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:643:15",className:"space-y-1",children:[e.jsxs(d,{"code-path":"src/components/deploy/PipelineManager.tsx:644:17",children:["镜像仓库凭证 ",m.includes("image")&&e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:644:68",className:"text-red-400",children:"*"})]}),e.jsxs(Y,{"code-path":"src/components/deploy/PipelineManager.tsx:645:17",value:String(_),onValueChange:s=>Ve(s==="__none"?"":s),children:[e.jsx(Z,{"code-path":"src/components/deploy/PipelineManager.tsx:646:19",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] h-9",children:e.jsx(ee,{"code-path":"src/components/deploy/PipelineManager.tsx:646:104",placeholder:"选择 Docker 凭证"})}),e.jsxs(se,{"code-path":"src/components/deploy/PipelineManager.tsx:647:19",children:[e.jsx(v,{"code-path":"src/components/deploy/PipelineManager.tsx:648:21",value:"__none",children:"不关联"}),Ms.map(s=>e.jsx(v,{"code-path":"src/components/deploy/PipelineManager.tsx:650:23",value:String(s.id),children:e.jsxs("span",{"code-path":"src/components/deploy/PipelineManager.tsx:651:25",className:"flex items-center gap-1.5",children:[e.jsx(te,{"code-path":"src/components/deploy/PipelineManager.tsx:651:69",className:"h-3 w-3 opacity-60"}),s.name," ",s.summary&&e.jsxs("span",{"code-path":"src/components/deploy/PipelineManager.tsx:651:136",className:"text-[10px] opacity-50",children:["(",s.summary,")"]})]})},s.id))]})]}),!_&&m.includes("image")&&e.jsx("p",{"code-path":"src/components/deploy/PipelineManager.tsx:656:82",className:"text-xs text-amber-400",children:"需要关联 Docker 凭证"})]})]}),_&&k&&e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:661:15",className:"p-2.5 rounded-md bg-blue-500/5 border border-blue-500/20 text-xs text-[var(--dg-text-secondary)]",children:[e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:662:17",className:"text-blue-400",children:"镜像命名:"}),e.jsxs("code",{"code-path":"src/components/deploy/PipelineManager.tsx:663:17",className:"text-[var(--dg-text-primary)]",children:["{registry}","/","{namespace}","/","{","{JOB_BASE_NAME}","}",":","{","{tag}","}"]}),e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:664:17",className:"ml-2 opacity-60",children:"例:"}),e.jsxs("code",{"code-path":"src/components/deploy/PipelineManager.tsx:665:17",className:"opacity-60",children:["harbor.ast1001.com/test/",k,":latest"]})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:668:13",className:"space-y-1",children:[e.jsx(d,{"code-path":"src/components/deploy/PipelineManager.tsx:668:40",children:"Dockerfile 路径"}),e.jsx(g,{"code-path":"src/components/deploy/PipelineManager.tsx:668:68",value:Be,onChange:s=>De(s.target.value),placeholder:"jar/Dockerfile",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] h-9 font-mono text-xs"})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:671:13",className:"space-y-2",children:[e.jsxs(d,{"code-path":"src/components/deploy/PipelineManager.tsx:672:15",children:["发布流程 ",e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:672:27",className:"text-xs text-[var(--dg-text-secondary)] opacity-70 ml-1",children:"按顺序选择阶段"})]}),e.jsx("div",{"code-path":"src/components/deploy/PipelineManager.tsx:673:15",className:"flex flex-wrap gap-2",children:ae.map(s=>{const a=m.includes(s.key);return e.jsxs(y,{"code-path":"src/components/deploy/PipelineManager.tsx:677:21",className:`cursor-pointer transition-all text-xs px-3 py-1.5 ${a?"border-current":"border-[var(--dg-border)] opacity-50 hover:opacity-80"}`,style:a?{backgroundColor:s.color+"20",color:s.color,borderColor:s.color}:{},onClick:()=>Le(a?m.filter(t=>t!==s.key):[...m,s.key]),title:s.desc,children:[e.jsx(s.icon,{"code-path":"src/components/deploy/PipelineManager.tsx:682:23",className:"h-3 w-3 mr-1"}),s.label," ",s.needs.includes("repo")?"🔗":"",s.needs.includes("registry")?"📦":""]},s.key)})}),m.length>0&&e.jsx("div",{"code-path":"src/components/deploy/PipelineManager.tsx:688:17",className:"flex items-center mt-2",children:m.map((s,a)=>{const t=ae.find(o=>o.key===s);return e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:692:23",className:"flex items-center",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:693:25",className:"flex items-center gap-1 px-2 py-1 text-[11px] font-medium border",style:{backgroundColor:t.color+"20",borderColor:t.color+"40",color:t.color,borderRadius:a===0?"6px 0 0 6px":a===m.length-1?"0 6px 6px 0":"0"},children:[e.jsx(t.icon,{"code-path":"src/components/deploy/PipelineManager.tsx:695:27",className:"h-3 w-3"}),t.label]}),a{const a=$===s.key;return e.jsx("button",{"code-path":"src/components/deploy/PipelineManager.tsx:721:21",onClick:()=>Ge(s.key),className:`flex-1 flex flex-col items-center gap-0.5 px-2 py-2 rounded-md text-xs font-medium transition-all ${a?"bg-blue-500 text-white":"text-[var(--dg-text-secondary)] hover:text-[var(--dg-text-primary)]"}`,title:s.desc,children:s.label},s.key)})}),$==="git_push"&&e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:733:17",className:"mt-3 space-y-2 p-3 rounded-md bg-[var(--dg-bg-secondary)] border border-[var(--dg-border)]",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:734:19",className:"space-y-1",children:[e.jsxs(d,{"code-path":"src/components/deploy/PipelineManager.tsx:735:21",className:"text-xs",children:["监听分支 ",e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:735:53",className:"text-[var(--dg-text-secondary)] opacity-60",children:"(逗号分隔,支持 * 通配)"})]}),e.jsx(g,{"code-path":"src/components/deploy/PipelineManager.tsx:736:21",value:Ie,onChange:s=>We(s.target.value),placeholder:"release/*, main",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] h-8 font-mono text-xs"})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:739:19",className:"space-y-1",children:[e.jsxs(d,{"code-path":"src/components/deploy/PipelineManager.tsx:740:21",className:"text-xs",children:["排除分支 ",e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:740:53",className:"text-[var(--dg-text-secondary)] opacity-60",children:"(不触发构建)"})]}),e.jsx(g,{"code-path":"src/components/deploy/PipelineManager.tsx:741:21",value:qe,onChange:s=>Je(s.target.value),placeholder:"wip/*, draft/*",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] h-8 font-mono text-xs"})]})]}),$==="cron"&&e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:749:17",className:"mt-3 space-y-2 p-3 rounded-md bg-[var(--dg-bg-secondary)] border border-[var(--dg-border)]",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:750:19",className:"space-y-1",children:[e.jsxs(d,{"code-path":"src/components/deploy/PipelineManager.tsx:751:21",className:"text-xs",children:["Cron 表达式 ",e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:751:57",className:"text-[var(--dg-text-secondary)] opacity-60",children:"(标准 5 位)"})]}),e.jsx(g,{"code-path":"src/components/deploy/PipelineManager.tsx:752:21",value:He,onChange:s=>le(s.target.value),placeholder:"0 2 * * *",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] h-8 font-mono text-xs"})]}),e.jsx("div",{"code-path":"src/components/deploy/PipelineManager.tsx:755:19",className:"flex flex-wrap gap-1.5",children:[{expr:"*/5 * * * *",label:"每5分钟"},{expr:"0 * * * *",label:"每小时"},{expr:"0 2 * * *",label:"每天2点"},{expr:"0 0 * * 0",label:"每周日"}].map(s=>e.jsx(y,{"code-path":"src/components/deploy/PipelineManager.tsx:762:23",variant:"outline",className:"cursor-pointer text-[10px] hover:bg-blue-500/10",onClick:()=>le(s.expr),children:s.label},s.expr))})]}),$==="webhook"&&e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:771:17",className:"mt-3 space-y-2 p-3 rounded-md bg-[var(--dg-bg-secondary)] border border-[var(--dg-border)]",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:772:19",className:"space-y-1",children:[e.jsxs(d,{"code-path":"src/components/deploy/PipelineManager.tsx:773:21",className:"text-xs",children:["Webhook Token ",e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:773:62",className:"text-[var(--dg-text-secondary)] opacity-60",children:"(签名验证,可选)"})]}),e.jsx(g,{"code-path":"src/components/deploy/PipelineManager.tsx:774:21",value:Qe,onChange:s=>Ke(s.target.value),placeholder:"随机字符串",className:"bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] h-8 font-mono text-xs"})]}),e.jsxs("p",{"code-path":"src/components/deploy/PipelineManager.tsx:777:19",className:"text-[10px] text-[var(--dg-text-secondary)] opacity-60",children:["Webhook URL: ",e.jsxs("code",{"code-path":"src/components/deploy/PipelineManager.tsx:778:34",className:"text-[var(--dg-blue)]",children:["POST /api/v1/webhook/pipeline/","{code}"]})]})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:785:13",className:"border-t border-[var(--dg-border)] pt-4",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:786:15",className:"flex items-center justify-between mb-2",children:[e.jsxs(d,{"code-path":"src/components/deploy/PipelineManager.tsx:787:17",children:["环境变量 ",e.jsxs("span",{"code-path":"src/components/deploy/PipelineManager.tsx:787:29",className:"text-xs text-[var(--dg-text-secondary)] opacity-60",children:["($","{VAR_NAME}"," 引用)"]})]}),e.jsxs(p,{"code-path":"src/components/deploy/PipelineManager.tsx:788:17",variant:"ghost",size:"sm",className:"h-7 text-xs",onClick:()=>C([...j,{key:"",value:"",desc:""}]),children:[e.jsx(je,{"code-path":"src/components/deploy/PipelineManager.tsx:790:19",className:"h-3 w-3 mr-1"}),"添加变量"]})]}),j.length===0?e.jsx("p",{"code-path":"src/components/deploy/PipelineManager.tsx:794:17",className:"text-xs text-[var(--dg-text-muted)] py-2",children:'暂无变量,点击"添加变量"新增'}):e.jsx("div",{"code-path":"src/components/deploy/PipelineManager.tsx:796:17",className:"space-y-2",children:j.map((s,a)=>e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:798:21",className:"grid grid-cols-12 gap-2 items-start p-2 rounded-md bg-[var(--dg-bg-secondary)] border border-[var(--dg-border)]",children:[e.jsx(g,{"code-path":"src/components/deploy/PipelineManager.tsx:799:23",value:s.key,onChange:t=>{const o=[...j];o[a]={...o[a],key:t.target.value},C(o)},placeholder:"变量名",className:"col-span-3 h-8 text-xs font-mono bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)]"}),e.jsx(g,{"code-path":"src/components/deploy/PipelineManager.tsx:802:23",value:s.value,onChange:t=>{const o=[...j];o[a]={...o[a],value:t.target.value},C(o)},placeholder:"变量值",className:"col-span-4 h-8 text-xs font-mono bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)]"}),e.jsx(g,{"code-path":"src/components/deploy/PipelineManager.tsx:805:23",value:s.desc,onChange:t=>{const o=[...j];o[a]={...o[a],desc:t.target.value},C(o)},placeholder:"说明",className:"col-span-4 h-8 text-xs bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)]"}),e.jsx(p,{"code-path":"src/components/deploy/PipelineManager.tsx:808:23",variant:"ghost",size:"icon",className:"col-span-1 h-8 w-8 text-red-400",onClick:()=>C(j.filter((t,o)=>o!==a)),children:e.jsx(xs,{"code-path":"src/components/deploy/PipelineManager.tsx:810:25",className:"h-3.5 w-3.5"})})]},a))})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:819:13",className:"border-t border-[var(--dg-border)] pt-4",children:[e.jsxs(d,{"code-path":"src/components/deploy/PipelineManager.tsx:820:15",className:"mb-2 block",children:["构建缓存 ",e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:820:50",className:"text-xs text-[var(--dg-text-secondary)] opacity-60",children:"(加速后续构建)"})]}),e.jsx(g,{"code-path":"src/components/deploy/PipelineManager.tsx:821:15",value:Ue,onChange:s=>Xe(s.target.value),placeholder:"node_modules, .m2, target",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] h-8 text-xs font-mono"}),e.jsx("p",{"code-path":"src/components/deploy/PipelineManager.tsx:823:15",className:"text-[10px] text-[var(--dg-text-secondary)] opacity-50 mt-1",children:"多个路径用逗号分隔,相同的 Key 会命中已有缓存"})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:827:13",className:"border-t border-[var(--dg-border)] pt-4",children:[e.jsxs(d,{"code-path":"src/components/deploy/PipelineManager.tsx:828:15",className:"mb-2 block",children:["并发执行数 ",e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:828:51",className:"text-xs text-[var(--dg-text-secondary)] opacity-60",children:"(Number of executors)"})]}),e.jsx("div",{"code-path":"src/components/deploy/PipelineManager.tsx:829:15",className:"flex items-center gap-2",children:e.jsxs(Y,{"code-path":"src/components/deploy/PipelineManager.tsx:830:17",value:String(Ye),onValueChange:s=>fs(Number(s)),children:[e.jsx(Z,{"code-path":"src/components/deploy/PipelineManager.tsx:831:19",className:"w-32 h-8 text-xs bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]",children:e.jsx(ee,{"code-path":"src/components/deploy/PipelineManager.tsx:832:21"})}),e.jsxs(se,{"code-path":"src/components/deploy/PipelineManager.tsx:834:19",children:[e.jsx(v,{"code-path":"src/components/deploy/PipelineManager.tsx:835:21",value:"1",children:"1 — 串行"}),e.jsx(v,{"code-path":"src/components/deploy/PipelineManager.tsx:836:21",value:"2",children:"2"}),e.jsx(v,{"code-path":"src/components/deploy/PipelineManager.tsx:837:21",value:"3",children:"3"}),e.jsx(v,{"code-path":"src/components/deploy/PipelineManager.tsx:838:21",value:"4",children:"4"}),e.jsx(v,{"code-path":"src/components/deploy/PipelineManager.tsx:839:21",value:"5",children:"5"})]})]})}),e.jsx("p",{"code-path":"src/components/deploy/PipelineManager.tsx:843:15",className:"text-[10px] text-[var(--dg-text-secondary)] opacity-50 mt-1",children:"设为 1 则按顺序串行执行,默认 2 可并发构建"})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:846:11",className:"flex justify-end gap-2 mt-4 pt-4 border-t border-[var(--dg-border)]",children:[e.jsx(p,{"code-path":"src/components/deploy/PipelineManager.tsx:847:13",variant:"outline",onClick:()=>F(!1),children:"取消"}),e.jsxs(p,{"code-path":"src/components/deploy/PipelineManager.tsx:848:13",onClick:Ls,disabled:re,children:[re?e.jsx(R,{"code-path":"src/components/deploy/PipelineManager.tsx:849:25",className:"h-4 w-4 animate-spin mr-1"}):e.jsx(V,{"code-path":"src/components/deploy/PipelineManager.tsx:849:77",className:"h-4 w-4 mr-1"}),re?"创建中...":"创建流水线"]})]})]})}),e.jsx(ls,{"code-path":"src/components/deploy/PipelineManager.tsx:857:7",open:Ss,onOpenChange:Ze,children:e.jsxs(ds,{"code-path":"src/components/deploy/PipelineManager.tsx:858:9",className:"max-w-3xl max-h-[85vh] overflow-y-auto bg-[var(--dg-bg-primary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]",children:[e.jsx(ps,{"code-path":"src/components/deploy/PipelineManager.tsx:859:11",children:e.jsxs(is,{"code-path":"src/components/deploy/PipelineManager.tsx:859:25",className:"flex items-center gap-2",children:[e.jsx(hs,{"code-path":"src/components/deploy/PipelineManager.tsx:859:74",className:"h-5 w-5"}),"执行日志 #",z?.build_number||z?.id]})}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:860:11",className:"space-y-3",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:861:13",className:"flex flex-wrap gap-3 text-sm text-[var(--dg-text-secondary)]",children:[e.jsxs("span",{"code-path":"src/components/deploy/PipelineManager.tsx:862:15",children:["触发方式: ",z?.triggered_by||"manual"]}),e.jsxs("span",{"code-path":"src/components/deploy/PipelineManager.tsx:863:15",children:["分支: ",z?.branch||"-"]}),e.jsxs("span",{"code-path":"src/components/deploy/PipelineManager.tsx:864:15",children:["耗时: ",Me(z?.duration)]})]}),e.jsx("div",{"code-path":"src/components/deploy/PipelineManager.tsx:866:13",className:"bg-slate-950 rounded-md p-3 max-h-[50vh] overflow-y-auto font-mono text-xs",children:es.length===0?e.jsx("div",{"code-path":"src/components/deploy/PipelineManager.tsx:867:36",className:"text-slate-500 py-4 text-center",children:"暂无日志"}):es.map((s,a)=>e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:869:19",className:"flex gap-2 py-0.5",children:[e.jsxs("span",{"code-path":"src/components/deploy/PipelineManager.tsx:870:21",className:"text-slate-500 shrink-0",children:["[",s.time,"]"]}),e.jsxs("span",{"code-path":"src/components/deploy/PipelineManager.tsx:871:21",className:s.level==="error"?"text-red-400":s.level==="warn"?"text-yellow-400":s.level==="success"?"text-green-400":"text-slate-300",children:[s.level==="success"?"✓":s.level==="error"?"✗":s.level==="warn"?"!":">"," ",s.message]})]},a))})]})]})})]})}function ra({pipeline:c,clusterId:b}){const[i,q]=n.useState(null),[J,B]=n.useState(!1),M=c.code||c.id,w=async()=>{if(M){B(!0);try{const r=await Ne.get(`/pipelines/${M}/queue`);q(r?.data||r)}catch{q(null)}finally{B(!1)}}};n.useEffect(()=>{w();const r=setInterval(w,1e4);return()=>clearInterval(r)},[M]);const H=async r=>{try{await Ne.delete(`/pipelines/${M}/queue/${r}`),x.success("已取消"),w()}catch{x.error("取消失败")}},D=i?.running||0,N=i?.queued||0,L=i?.queue_ids||[],T=c.max_executors||2,A=i?.pending_runs||[];return J&&!i||D===0&&N===0?null:e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:920:5",className:"px-4 py-2 space-y-2",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:922:7",className:"flex items-center gap-2 text-xs",children:[e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:923:9",className:"text-[var(--dg-text-secondary)]",children:"构建执行状态"}),e.jsxs("span",{"code-path":"src/components/deploy/PipelineManager.tsx:924:9",className:"font-bold text-[var(--dg-text-primary)]",children:[D,"/",T]}),N>0&&e.jsxs("span",{"code-path":"src/components/deploy/PipelineManager.tsx:926:11",className:"text-[var(--dg-text-secondary)] ml-2",children:["构建队列 ",e.jsxs("span",{"code-path":"src/components/deploy/PipelineManager.tsx:927:18",className:"font-bold text-amber-400",children:["(",N,")"]})]})]}),N>0&&A.length>0&&e.jsx("div",{"code-path":"src/components/deploy/PipelineManager.tsx:934:9",className:"space-y-1",children:A.map(r=>e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:936:13",className:"flex items-center justify-between bg-[var(--dg-bg-tertiary)] rounded px-3 py-1.5",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:937:15",className:"flex items-center gap-2 text-xs",children:[e.jsx(I,{"code-path":"src/components/deploy/PipelineManager.tsx:938:17",className:"h-3 w-3 text-amber-400"}),e.jsxs("span",{"code-path":"src/components/deploy/PipelineManager.tsx:939:17",className:"text-[var(--dg-text-secondary)] font-mono",children:["#",r.build_number||r.id]}),e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:940:17",className:"text-[var(--dg-text-secondary)]",children:r.branch||"-"}),e.jsx("span",{"code-path":"src/components/deploy/PipelineManager.tsx:941:17",className:"text-[var(--dg-text-secondary)] opacity-50",children:r.triggered_by||"-"})]}),e.jsxs(p,{"code-path":"src/components/deploy/PipelineManager.tsx:943:15",variant:"ghost",size:"sm",className:"h-6 text-xs text-red-400 hover:text-red-300",onClick:()=>H(r.id),children:[e.jsx(W,{"code-path":"src/components/deploy/PipelineManager.tsx:944:17",className:"h-3 w-3 mr-1"}),"取消"]})]},r.id))}),N>0&&A.length===0&&L.length>0&&e.jsx("div",{"code-path":"src/components/deploy/PipelineManager.tsx:953:9",className:"space-y-1",children:L.map(r=>e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:955:13",className:"flex items-center justify-between bg-[var(--dg-bg-tertiary)] rounded px-3 py-1.5",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:956:15",className:"flex items-center gap-2 text-xs",children:[e.jsx(I,{"code-path":"src/components/deploy/PipelineManager.tsx:957:17",className:"h-3 w-3 text-amber-400"}),e.jsxs("span",{"code-path":"src/components/deploy/PipelineManager.tsx:958:17",className:"text-[var(--dg-text-muted)] font-mono",children:["Run #",r]})]}),e.jsxs(p,{"code-path":"src/components/deploy/PipelineManager.tsx:960:15",variant:"ghost",size:"sm",className:"h-6 text-xs text-red-400 hover:text-red-300",onClick:()=>H(r),children:[e.jsx(W,{"code-path":"src/components/deploy/PipelineManager.tsx:961:17",className:"h-3 w-3 mr-1"}),"取消"]})]},r))})]})}export{Ta as PipelineManager}; diff --git a/backend/static/assets/PipelineRunDetail-CwWLRhgo.js b/backend/static/assets/PipelineRunDetail-CwWLRhgo.js deleted file mode 100644 index fc5fda4..0000000 --- a/backend/static/assets/PipelineRunDetail-CwWLRhgo.js +++ /dev/null @@ -1,3 +0,0 @@ -import{r as n,j as e,D as me,b as he,X as ue,d as ge,e as ye,a5 as be,a6 as fe,n as ee,h as C,W as De,i as je,B as E,a0 as Ne,v as ve,a7 as we,L as $,$ as Re,x as te,a8 as Pe,_ as Be}from"./index-DfyorCky.js";import{B as A}from"./badge-xNW8x0G1.js";import{C as Fe,b as ke,c as Se,a as Ce}from"./card-C55cvSHg.js";import{t as S}from"./index-a3ybMjbR.js";import{F as H}from"./folder-open-IMBifk-r.js";import{M as $e,a as _e}from"./minimize-2-CiCQYRfn.js";import{A as ze}from"./arrow-left-BDgGyrD0.js";import{F as Ee}from"./file-text-C9G5abwR.js";import{D as Ae}from"./download-DoZfYs2h.js";import{H as Z}from"./history-D_9jPUQg.js";import{T as Le}from"./trash-2-Dx32pOzT.js";import{R as Ie}from"./refresh-cw-DUB_tAG-.js";import{P as Te}from"./play-cdPayOtJ.js";import{B as Oe}from"./box-TTGA1p57.js";import{C as I}from"./circle-check-DWcXrx2k.js";import{S as Me}from"./shield-check-Dcx486cW.js";import{C as G}from"./circle-x-DK79Dhg2.js";import{S as Ue}from"./square-9TIYDO_t.js";function We(s){return s===0?"-":s<1024?s+" B":s<1024*1024?(s/1024).toFixed(1)+" KB":(s/(1024*1024)).toFixed(1)+" MB"}function He({open:s,onOpenChange:o,runId:u,buildNumber:r}){const[x,a]=n.useState(null),[P,B]=n.useState(!1),[N,L]=n.useState(""),[v,i]=n.useState(""),[w,_]=n.useState(!1),F=async c=>{if(u){B(!0),L("");try{const h=c?`?path=${encodeURIComponent(c)}`:"",g=await C.get(`/pipelines/runs/${u}/files${h}`);a(g),i(g?.current||"")}catch(h){L(h?.message||"加载失败"),a(null)}finally{B(!1)}}};n.useEffect(()=>{s&&u&&(i(""),F(""))},[s,u]);const b=async c=>{const h=De.getState().token||"",g=`${location.protocol}//${location.host}/api/v1/pipelines/runs/${u}/files/download?path=${encodeURIComponent(c.path)}&token=${encodeURIComponent(h)}`;window.open(g,"_blank")},R=v?v.split("/").filter(Boolean):[],T=[""].concat(R.map((c,h)=>"/"+R.slice(0,h+1).join("/")));return e.jsx(me,{"code-path":"src/components/deploy/FileBrowserDialog.tsx:105:5",open:s,onOpenChange:o,children:e.jsxs(he,{"code-path":"src/components/deploy/FileBrowserDialog.tsx:106:7",showCloseButton:!1,className:ue("bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] p-0 gap-0","!duration-0 !transition-none",w?"!max-w-none !w-screen !h-screen !rounded-none":""),style:w?{maxWidth:"100vw",width:"100vw",height:"100vh"}:{maxWidth:"700px",width:"85vw"},children:[e.jsxs(ge,{"code-path":"src/components/deploy/FileBrowserDialog.tsx:117:9",className:"sr-only",children:["文件浏览器 #",r]}),e.jsx(ye,{"code-path":"src/components/deploy/FileBrowserDialog.tsx:118:9",className:"sr-only",children:"流水线构建目录文件浏览"}),e.jsxs("div",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:121:9",className:"flex items-center justify-between px-4 py-2.5 border-b border-[var(--dg-border)] shrink-0",children:[e.jsxs("div",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:122:11",className:"flex items-center gap-2 min-w-0",children:[e.jsx(H,{"code-path":"src/components/deploy/FileBrowserDialog.tsx:123:13",className:"h-4 w-4 text-[var(--dg-text-secondary)] shrink-0"}),e.jsxs("span",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:124:13",className:"text-[var(--dg-text-primary)] font-medium text-sm",children:["#",r," 工作区文件"]})]}),e.jsxs("div",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:128:11",className:"flex items-center gap-1",children:[e.jsx("button",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:129:13",onClick:()=>_(!w),className:"p-1.5 rounded hover:bg-[var(--dg-bg-hover)] text-[var(--dg-text-secondary)]",children:w?e.jsx($e,{"code-path":"src/components/deploy/FileBrowserDialog.tsx:133:29",className:"h-4 w-4"}):e.jsx(_e,{"code-path":"src/components/deploy/FileBrowserDialog.tsx:133:65",className:"h-4 w-4"})}),e.jsx("button",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:135:13",onClick:()=>o(!1),className:"p-1.5 rounded hover:bg-[var(--dg-bg-hover)] text-[var(--dg-text-secondary)]",children:e.jsx(be,{"code-path":"src/components/deploy/FileBrowserDialog.tsx:139:15",className:"h-4 w-4"})})]})]}),e.jsx("div",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:145:9",className:"flex items-center gap-0.5 px-4 py-2 text-xs border-b border-[var(--dg-border)] bg-[var(--dg-bg-primary)] overflow-x-auto shrink-0",children:T.map((c,h)=>e.jsx("span",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:147:13",className:"flex items-center gap-0.5",children:h===0?e.jsx("button",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:149:17",onClick:()=>F(""),className:"text-[var(--dg-text-secondary)] hover:text-[var(--dg-text-primary)] p-0.5",children:e.jsx(fe,{"code-path":"src/components/deploy/FileBrowserDialog.tsx:153:19",className:"h-3.5 w-3.5"})}):e.jsxs(e.Fragment,{children:[e.jsx(ee,{"code-path":"src/components/deploy/FileBrowserDialog.tsx:157:19",className:"h-3 w-3 text-[var(--dg-text-muted)] shrink-0"}),e.jsx("button",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:158:19",onClick:()=>F(c),className:"text-[var(--dg-text-secondary)] hover:text-[var(--dg-text-primary)] truncate max-w-[120px]",children:R[h-1]})]})},c))}),e.jsxs("div",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:171:9",className:"overflow-y-auto",style:{height:w?"calc(100vh - 110px)":"420px"},children:[P&&e.jsx("div",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:173:13",className:"flex items-center justify-center h-full text-[var(--dg-text-muted)] text-sm",children:"加载中..."}),N&&e.jsx("div",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:179:13",className:"flex items-center justify-center h-full text-red-400 text-sm",children:N}),x&&!P&&e.jsxs("table",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:185:13",className:"w-full text-sm",children:[e.jsx("thead",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:186:15",className:"sticky top-0 bg-[var(--dg-bg-primary)] border-b border-[var(--dg-border)]",children:e.jsxs("tr",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:187:17",className:"text-left text-[var(--dg-text-muted)] text-xs",children:[e.jsx("th",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:188:19",className:"py-2 pl-4 pr-2 font-medium",children:"名称"}),e.jsx("th",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:189:19",className:"py-2 px-2 font-medium w-24 text-right",children:"大小"}),e.jsx("th",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:190:19",className:"py-2 pr-4 pl-2 font-medium w-40 hidden sm:table-cell",children:"修改时间"}),e.jsx("th",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:191:19",className:"py-2 pr-4 pl-2 font-medium w-16"})]})}),e.jsxs("tbody",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:194:15",children:[v&&e.jsxs("tr",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:197:19",className:"border-b border-[var(--dg-border)] hover:bg-[var(--dg-bg-hover)] cursor-pointer",onClick:()=>{const c=v.split("/").slice(0,-1).join("/");F(c)},children:[e.jsxs("td",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:204:21",className:"py-2 pl-4 pr-2 flex items-center gap-2",children:[e.jsx(ze,{"code-path":"src/components/deploy/FileBrowserDialog.tsx:205:23",className:"h-4 w-4 text-[var(--dg-text-secondary)]"}),e.jsx("span",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:206:23",className:"text-[var(--dg-text-secondary)]",children:".."})]}),e.jsx("td",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:208:21",className:"py-2 px-2 text-right"}),e.jsx("td",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:209:21",className:"py-2 pr-4 pl-2 hidden sm:table-cell"}),e.jsx("td",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:210:21",className:"py-2 pr-4 pl-2"})]}),x.dirs?.map(c=>e.jsxs("tr",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:216:19",className:"border-b border-[var(--dg-border)] hover:bg-[var(--dg-bg-hover)] cursor-pointer",onClick:()=>F(c.path),children:[e.jsxs("td",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:221:21",className:"py-2 pl-4 pr-2 flex items-center gap-2",children:[e.jsx(H,{"code-path":"src/components/deploy/FileBrowserDialog.tsx:222:23",className:"h-4 w-4 text-amber-400 shrink-0"}),e.jsx("span",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:223:23",className:"text-[var(--dg-text-primary)]",children:c.name})]}),e.jsx("td",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:225:21",className:"py-2 px-2 text-right text-[var(--dg-text-muted)]",children:"-"}),e.jsx("td",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:226:21",className:"py-2 pr-4 pl-2 text-[var(--dg-text-muted)] hidden sm:table-cell",children:c.mod_time}),e.jsx("td",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:227:21",className:"py-2 pr-4 pl-2"})]},c.path)),x.files?.map(c=>e.jsxs("tr",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:233:19",className:"border-b border-[var(--dg-border)] hover:bg-[var(--dg-bg-hover)]",children:[e.jsxs("td",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:237:21",className:"py-2 pl-4 pr-2 flex items-center gap-2",children:[e.jsx(Ee,{"code-path":"src/components/deploy/FileBrowserDialog.tsx:238:23",className:"h-4 w-4 text-sky-400 shrink-0"}),e.jsx("span",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:239:23",className:"text-[var(--dg-text-primary)]",children:c.name})]}),e.jsx("td",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:241:21",className:"py-2 px-2 text-right text-[var(--dg-text-muted)]",children:We(c.size)}),e.jsx("td",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:242:21",className:"py-2 pr-4 pl-2 text-[var(--dg-text-muted)] hidden sm:table-cell",children:c.mod_time}),e.jsx("td",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:243:21",className:"py-2 pr-4 pl-2",children:e.jsx("button",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:244:23",onClick:h=>{h.stopPropagation(),b(c)},className:"p-1 rounded hover:bg-[var(--dg-bg-hover)] text-[var(--dg-text-secondary)] hover:text-white",title:"下载",children:e.jsx(Ae,{"code-path":"src/components/deploy/FileBrowserDialog.tsx:249:25",className:"h-3.5 w-3.5"})})})]},c.path)),x.dirs?.length===0&&x.files?.length===0&&!v&&e.jsx("tr",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:257:19",children:e.jsx("td",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:258:21",colSpan:4,className:"py-8 text-center text-[var(--dg-text-muted)]",children:P?"加载中...":"目录为空"})})]})]})]})]})})}const j=[{key:"checkout",label:"代码检出",icon:Ne,color:"#6366F1",order:1},{key:"build",label:"构建",icon:Oe,color:"#F59E0B",order:2},{key:"test",label:"测试",icon:I,color:"#10B981",order:3},{key:"image",label:"镜像打包",icon:ve,color:"#06B6D4",order:4},{key:"deploy",label:"部署",icon:we,color:"#EF4444",order:5},{key:"verify",label:"验证",icon:Me,color:"#3B82F6",order:6}].sort((s,o)=>s.order-o.order),Ge={success:"bg-emerald-500/20 text-emerald-400 border-emerald-500/30",failed:"bg-red-500/20 text-red-400 border-red-500/30",running:"bg-blue-500/20 text-blue-400 border-blue-500/30",pending:"bg-slate-500/20 text-slate-400 border-slate-500/30",cancelled:"bg-amber-500/20 text-amber-400 border-amber-500/30"},Je={success:I,failed:G,running:$,pending:te,cancelled:Re};function Xe(s){if(!s)return"-";if(s<60)return`${s}秒`;const o=Math.floor(s/60),u=s%60;return`${o}分${u}秒`}function qe(s){return s?new Date(s).toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}):"-"}function Ke(s){if(!s)return[];try{const o=typeof s=="string"?JSON.parse(s):s;return Array.isArray(o)?o:[]}catch{return[]}}function Ve(s){const o=new Map;return s&&(Ke(s.stages).forEach(r=>{if(r.name||r.type){const x=r.type||j.find(a=>a.label===r.name)?.key;x&&o.set(x,r.status)}}),o.size===0&&s.status==="success"?j.forEach(r=>o.set(r.key,"success")):o.size===0&&s.status==="failed"?j.forEach((r,x)=>o.set(r.key,x===0?"success":"pending")):o.size===0&&s.status==="running"&&o.set("checkout","running")),o}function Qe(s,o){const u=s.find(x=>x.stage===o);if(u)return u.message;const r=j.find(x=>x.key===o);return r?`${r.label}...`:""}function gt(){const{code:s}=je(),[o,u]=n.useState(null),[r,x]=n.useState([]),[a,P]=n.useState(null),[B,N]=n.useState([]),[L,v]=n.useState(!1),[i,w]=n.useState(null),[_,F]=n.useState(10),[b,R]=n.useState(new Set),[T,c]=n.useState(!1),h=n.useRef(null),g=n.useRef(null),[se,J]=n.useState(!1),[X,oe]=n.useState(null),ne=n.useCallback(async()=>{try{const t=await C.get(`/pipelines/${s}`);u(t?.data||t)}catch{}},[s]),f=n.useCallback(async()=>{v(!0);try{const p=(await C.get(`/pipelines/${s}/runs?page_size=${_}`))?.list||[];x(p),!a&&p.length>0&&P(p[0])}catch{S.error("获取执行记录失败")}finally{v(!1)}},[s,_]);n.useEffect(()=>{ne(),f()},[]),n.useEffect(()=>{f()},[_]),n.useEffect(()=>{if(!r.some(l=>l.status==="running"))return;const p=setInterval(f,5e3);return()=>clearInterval(p)},[r,f]);const q=n.useCallback(async t=>{try{const p=await C.get(`/pipelines/runs/${t.id}/log-stream`);if(p?.logs){const l=typeof p.logs=="string"?JSON.parse(p.logs):p.logs;N(Array.isArray(l)?l:[])}else N([]);t.status==="running"&&ae(t.id)}catch{N([])}},[]),ae=t=>{g.current&&g.current.close();const p=window.location.protocol==="https:"?"wss:":"ws:",l=localStorage.getItem("token"),d=new WebSocket(`${p}//${window.location.host}/ws/pipeline/${t}/log?token=${l}`);d.onmessage=k=>{try{const m=JSON.parse(k.data);if(m.type==="init"&&m.logs){const y=typeof m.logs=="string"?JSON.parse(m.logs):m.logs;N(Array.isArray(y)?y:[])}else m.type==="done"?(d.close(),f()):m.time&&m.level&&N(y=>[...y,m])}catch{}},d.onclose=()=>{g.current=null},d.onerror=()=>{g.current=null},g.current=d};n.useEffect(()=>(a&&(q(a),w(null)),()=>{g.current&&g.current.close()}),[a,q]),n.useEffect(()=>{h.current?.scrollIntoView({behavior:"smooth"})},[B]);const le=async()=>{try{await C.post(`/pipelines/${s}/trigger`,{}),S.success("已触发"),f()}catch{S.error("触发失败")}},re=async t=>{try{await C.post(`/pipelines/${s}/runs/${t}/stop`,{}),S.success("已停止"),f()}catch{S.error("停止失败")}},ce=async()=>{if(b.size!==0){c(!0);try{await C.post(`/pipelines/${s}/runs/batch-delete`,{ids:Array.from(b)}),S.success(`已删除 ${b.size} 条记录`),R(new Set),f()}catch{S.error("批量删除失败")}finally{c(!1)}}},ie=t=>{R(p=>{const l=new Set(p);return l.has(t)?l.delete(t):l.add(t),l})},pe=()=>{b.size===r.length?R(new Set):R(new Set(r.map(t=>t.id)))},K=t=>t.triggered_by==="system"?"Cron":t.triggered_by==="git"?"Git Push":t.triggered_by||"Manual",O=Ve(a),V=i?B.filter(t=>t.stage===i):B,Q=i?Qe(B,i):"";return e.jsxs("div",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:293:5",className:"space-y-4 h-full flex flex-col",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:295:7",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:296:9",children:[e.jsxs("h2",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:297:11",className:"text-lg font-semibold text-[var(--dg-text-primary)]",children:[e.jsx(Z,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:298:13",className:"w-5 h-5 inline mr-2"}),"流水线详情"]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:301:11",className:"flex items-center gap-2 mt-0.5 flex-wrap",children:[o?.name&&e.jsx("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:303:15",className:"text-sm font-medium text-[var(--dg-text-primary)]",children:o.name}),o?.environment&&e.jsx(A,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:308:15",className:"text-xs",style:{backgroundColor:o.environment.color+"20",color:o.environment.color},children:o.environment.display_name}),a&&e.jsxs("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:316:15",className:"text-sm text-[var(--dg-text-secondary)]",children:["发布 #",a.build_number]})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:322:9",className:"flex gap-2 items-center",children:[b.size>0&&e.jsxs(E,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:324:13",variant:"destructive",size:"sm",onClick:ce,disabled:T,children:[e.jsx(Le,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:325:15",className:"w-4 h-4 mr-1"}),"删除 (",b.size,")"]}),e.jsxs("select",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:328:11",value:_,onChange:t=>F(Number(t.target.value)),className:"h-8 px-2 text-xs rounded border border-[var(--dg-border)] bg-[var(--dg-bg-secondary)] text-[var(--dg-text-primary)]",children:[e.jsx("option",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:333:13",value:10,children:"10条/页"}),e.jsx("option",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:334:13",value:20,children:"20条/页"}),e.jsx("option",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:335:13",value:30,children:"30条/页"})]}),e.jsxs(E,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:337:11",variant:"outline",size:"sm",onClick:f,children:[e.jsx(Ie,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:338:13",className:"w-4 h-4 mr-1"}),"刷新"]}),e.jsxs(E,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:340:11",size:"sm",onClick:le,children:[e.jsx(Te,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:341:13",className:"w-4 h-4 mr-1"}),"立即执行"]})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:347:7",className:"flex items-center gap-0 px-4 py-3 rounded-lg bg-[var(--dg-bg-secondary)] border border-[var(--dg-border)] overflow-x-auto",children:[j.map((t,p)=>{const l=O.get(t.key)||"",d=l==="success"||l==="completed",k=l==="running"||l==="in_progress",m=l==="failed"||l==="error",y=i===t.key;t.key;const z=O.size>0,D=m?"#EF4444":k?"#3B82F6":d?"#207060":"#6B7280",M=m?"#EF444420":k?"#3B82F620":d?"#20706020":"#6B728010",U=y?D:D+"50",W=t.icon,de=m?e.jsx(G,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:369:35",className:"h-3.5 w-3.5"}):k?e.jsx($,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:370:27",className:"h-3.5 w-3.5 animate-spin"}):d?e.jsx(I,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:371:27",className:"h-3.5 w-3.5"}):z?e.jsx("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:372:25",className:"text-[10px] opacity-40",children:"○"}):e.jsx(W,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:373:15",className:"h-3.5 w-3.5 opacity-40"}),Y=p===j.length-1,xe=p===0?"8px 0 0 8px":Y?"0 8px 8px 0":"0";return e.jsxs("div",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:379:13",className:"flex items-center",children:[e.jsxs("button",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:380:15",onClick:()=>w(i===t.key?null:t.key),title:`${t.label}${l?` (${l})`:""} — 点击查看日志`,className:`flex items-center gap-1.5 px-3 py-2 text-[12px] font-semibold border shadow-sm transition-all cursor-pointer - ${y?"ring-1 ring-offset-0 scale-[1.02]":"hover:brightness-110"}`,style:{backgroundColor:M,borderColor:U,color:D,borderRadius:xe},children:[de,e.jsx("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:393:17",children:t.label})]}),!Y&&e.jsx("div",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:396:17",className:"flex items-center justify-center w-5 h-5 -mx-px z-10",children:e.jsx(ee,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:397:19",className:"h-3.5 w-3.5",style:{color:D+"99"}})})]},t.key)}),a&&e.jsx("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:404:11",className:"ml-auto text-[10px] text-[var(--dg-text-secondary)] opacity-40 shrink-0 pl-3 whitespace-nowrap",children:i?j.find(t=>t.key===i)?.label:"全阶段"})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:411:7",className:"flex-1 flex flex-col min-h-0",children:[e.jsx("div",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:413:9",className:"rounded-md border border-[var(--dg-border)] overflow-hidden mb-4",children:L&&r.length===0?e.jsxs("div",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:415:13",className:"text-center py-12",children:[e.jsx($,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:416:15",className:"w-6 h-6 animate-spin mx-auto mb-2 text-[var(--dg-text-muted)]"}),"加载中..."]}):r.length===0?e.jsxs("div",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:420:13",className:"text-center py-12 border border-dashed border-[var(--dg-border)] rounded-lg m-4",children:[e.jsx(Z,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:421:15",className:"w-10 h-10 mx-auto mb-3 text-[var(--dg-text-muted)]"}),e.jsx("p",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:422:15",className:"text-[var(--dg-text-secondary)]",children:'暂无执行记录,点击"立即执行"触发构建'})]}):e.jsxs("table",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:425:13",className:"w-full text-sm",children:[e.jsx("thead",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:426:15",className:"bg-[var(--dg-bg-tertiary)] border-b border-[var(--dg-border)]",children:e.jsxs("tr",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:427:17",children:[e.jsx("th",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:428:19",className:"px-2 py-2.5 w-10",children:e.jsx("input",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:429:21",type:"checkbox",checked:b.size===r.length&&r.length>0,onChange:pe,className:"rounded"})}),e.jsx("th",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:432:19",className:"px-3 py-2.5 text-left font-medium text-[var(--dg-text-secondary)] w-16",children:"构建"}),e.jsx("th",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:433:19",className:"px-3 py-2.5 text-left font-medium text-[var(--dg-text-secondary)] w-20",children:"状态"}),e.jsx("th",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:434:19",className:"px-3 py-2.5 text-left font-medium text-[var(--dg-text-secondary)]",children:"触发方式"}),e.jsx("th",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:435:19",className:"px-3 py-2.5 text-left font-medium text-[var(--dg-text-secondary)]",children:"用户"}),e.jsx("th",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:436:19",className:"px-3 py-2.5 text-left font-medium text-[var(--dg-text-secondary)]",children:"耗时"}),e.jsx("th",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:437:19",className:"px-3 py-2.5 text-left font-medium text-[var(--dg-text-secondary)] hidden md:table-cell",children:"时间"}),e.jsx("th",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:438:19",className:"px-3 py-2.5 text-right font-medium text-[var(--dg-text-secondary)] w-32",children:"操作"})]})}),e.jsx("tbody",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:441:15",children:r.map(t=>{const p=Je[t.status]||te;return e.jsxs("tr",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:445:21",className:`border-b border-[var(--dg-border)] cursor-pointer transition-colors - ${a?.id===t.id?"bg-[var(--dg-blue)]/10":"hover:bg-[var(--dg-bg-tertiary)]/50"}`,onClick:()=>{P(t)},children:[e.jsx("td",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:449:23",className:"px-2 py-2.5",onClick:l=>l.stopPropagation(),children:e.jsx("input",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:450:25",type:"checkbox",checked:b.has(t.id),onChange:()=>ie(t.id),className:"rounded"})}),e.jsxs("td",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:453:23",className:"px-3 py-2.5 font-mono font-semibold text-[var(--dg-text-primary)]",children:["#",t.build_number]}),e.jsx("td",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:456:23",className:"px-3 py-2.5",children:e.jsxs(A,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:457:25",className:`text-xs ${Ge[t.status]||""} flex items-center gap-1 w-fit`,children:[e.jsx(p,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:458:27",className:`w-3 h-3 ${t.status==="running"?"animate-spin":""}`}),t.status==="success"?"成功":t.status==="failed"?"失败":t.status==="running"?"执行中":t.status==="cancelled"?"已取消":"待执行"]})}),e.jsx("td",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:466:23",className:"px-3 py-2.5",children:e.jsx(A,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:467:25",variant:"outline",className:"text-xs",children:K(t)})}),e.jsxs("td",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:469:23",className:"px-3 py-2.5 text-[var(--dg-text-secondary)] flex items-center gap-1",children:[e.jsx(Pe,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:470:25",className:"w-3 h-3"}),t.triggered_by||"admin"]}),e.jsx("td",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:473:23",className:"px-3 py-2.5 text-[var(--dg-text-secondary)] font-mono text-xs",children:t.status==="running"?e.jsxs("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:475:27",className:"flex items-center gap-1 text-blue-400",children:[e.jsx($,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:476:29",className:"w-3 h-3 animate-spin"}),"执行中..."]}):Xe(t.duration)}),e.jsx("td",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:480:23",className:"px-3 py-2.5 text-[var(--dg-text-muted)] text-xs hidden md:table-cell",children:qe(t.created_at)}),e.jsx("td",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:483:23",className:"px-3 py-2.5 text-right",onClick:l=>l.stopPropagation(),children:e.jsxs("div",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:484:25",className:"flex justify-end gap-1",children:[e.jsx(E,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:485:27",variant:"ghost",size:"sm",className:"h-7 text-xs",onClick:()=>P(t),children:"日志"}),e.jsxs(E,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:489:27",variant:"ghost",size:"sm",className:"h-7 text-xs",onClick:()=>{oe({id:t.id,buildNumber:t.build_number}),J(!0)},children:[e.jsx(H,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:491:29",className:"w-3.5 h-3.5 mr-1"}),"浏览"]}),t.status==="running"&&e.jsx(E,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:494:29",variant:"ghost",size:"icon",className:"h-7 w-7 text-red-500",onClick:()=>re(t.id),children:e.jsx(Ue,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:496:31",className:"w-3.5 h-3.5"})})]})})]},t.id)})})]})}),a&&e.jsxs(Fe,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:511:11",className:"flex-1 flex flex-col min-h-0 border-[var(--dg-border)] bg-[var(--dg-bg-secondary)]",children:[e.jsxs(ke,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:512:13",className:"py-3 px-4 flex flex-row items-center justify-between border-b border-[var(--dg-border)]",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:513:15",className:"flex items-center gap-3",children:[e.jsxs(Se,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:514:17",className:"text-sm font-mono",children:[o?.name||`#${s}`," #",a.build_number]}),a.status==="running"&&e.jsxs(A,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:518:19",className:"bg-blue-500/20 text-blue-400 border-blue-500/30 text-xs",children:[e.jsx($,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:519:21",className:"w-3 h-3 animate-spin mr-1"}),"实时"]}),i&&e.jsx(A,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:523:19",className:"text-xs border-[var(--dg-border)]",variant:"outline",children:j.find(t=>t.key===i)?.label||i})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:528:15",className:"flex items-center gap-2 text-xs text-[var(--dg-text-muted)]",children:[e.jsxs("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:529:17",children:["触发: ",K(a)," (",a.triggered_by||"admin",")"]}),e.jsx("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:530:17",className:"opacity-40",children:"|"}),e.jsxs("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:531:17",children:["分支: ",a.branch||"-"]}),a.commit_id&&e.jsxs(e.Fragment,{children:[e.jsx("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:534:21",className:"opacity-40",children:"|"}),e.jsx("code",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:535:21",className:"bg-amber-400/10 text-amber-400 px-1 py-0.5 rounded text-[10px]",children:a.commit_id.slice(0,8)})]}),a.image_tag&&e.jsxs(e.Fragment,{children:[e.jsx("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:542:21",className:"opacity-40",children:"|"}),e.jsxs("code",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:543:21",className:"bg-cyan-400/10 text-cyan-400 px-1 py-0.5 rounded text-[10px]",children:["📦 ",a.image_tag]})]})]})]}),e.jsxs(Ce,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:550:13",className:"flex-1 p-0 overflow-hidden min-h-0",children:[i&&Q&&e.jsx("div",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:553:17",className:"px-4 py-2 border-b border-[var(--dg-border)] bg-[var(--dg-bg-tertiary)]/30",children:e.jsxs("div",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:554:19",className:"flex items-center gap-2",children:[e.jsxs("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:555:21",className:"text-[11px] font-semibold text-[var(--dg-text-secondary)]",children:["[",j.find(t=>t.key===i)?.label||i,"]"]}),(()=>{const t=O.get(i);return t==="success"||t==="completed"?e.jsx(I,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:560:74",className:"h-3.5 w-3.5 text-emerald-400"}):t==="failed"||t==="error"?e.jsx(G,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:561:69",className:"h-3.5 w-3.5 text-red-400"}):t==="running"||t==="in_progress"?e.jsx($,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:562:76",className:"h-3.5 w-3.5 text-blue-400 animate-spin"}):null})(),e.jsx("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:565:21",className:"text-xs text-[var(--dg-text-muted)] truncate font-mono",children:Q})]})}),e.jsx("div",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:571:15",className:"h-full overflow-y-auto bg-[#0d1117] font-mono text-xs leading-5 p-4",style:{minHeight:280},children:V.length===0&&a.status!=="running"?e.jsx("div",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:573:19",className:"text-center py-12 text-slate-500",children:i?"该阶段暂无日志输出":"暂无日志输出"}):e.jsxs(e.Fragment,{children:[(()=>{let t="";const p={checkout:"border-indigo-500 bg-indigo-500/10",build:"border-amber-500 bg-amber-500/10",test:"border-emerald-500 bg-emerald-500/10",image:"border-cyan-500 bg-cyan-500/10",deploy:"border-red-500 bg-red-500/10",verify:"border-blue-500 bg-blue-500/10"},l={checkout:"⬇",build:"⚙",test:"✓",image:"📦",deploy:"🚀",verify:"🛡"};return V.map((d,k)=>{const m=!i&&d.stage&&d.stage!==t;m&&(t=d.stage||"");const y=d.level==="error",z=d.level==="warn",D=d.level==="success",M=y?"border-l-2 border-red-500 bg-red-500/10":z?"border-l-2 border-amber-500 bg-amber-500/10":D?"border-l-2 border-emerald-500 bg-emerald-500/5":"",U=y?"text-red-200":z?"text-amber-200":D?"text-emerald-200":"text-slate-300",W=y?e.jsx("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:605:29",className:"shrink-0 px-1.5 py-px rounded text-[10px] font-bold bg-red-600/40 text-red-200",children:"ERR"}):z?e.jsx("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:607:29",className:"shrink-0 px-1.5 py-px rounded text-[10px] font-bold bg-amber-600/40 text-amber-200",children:"WARN"}):D?e.jsx("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:609:29",className:"shrink-0 px-1.5 py-px rounded text-[10px] font-bold bg-emerald-600/30 text-emerald-200",children:" OK "}):e.jsx("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:610:29",className:"shrink-0 px-1.5 py-px rounded text-[10px] bg-slate-600/30 text-slate-400",children:"INFO"});return e.jsxs(Be.Fragment,{children:[m&&e.jsxs("div",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:614:31",className:`flex items-center gap-2 my-2 py-1 px-2 border-l-4 rounded-r ${p[d.stage||""]||"border-slate-500 bg-slate-500/10"}`,children:[e.jsx("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:615:33",className:"text-xs",children:l[d.stage||""]||"▸"}),e.jsx("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:616:33",className:"text-[11px] font-semibold tracking-wider text-slate-200",children:d.stage}),e.jsx("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:617:33",className:"flex-1 border-t border-slate-700/50"})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:620:29",className:`flex items-start gap-2 px-2 py-0.5 -mx-1 rounded-sm ${M} ${!y&&!z&&!D?"hover:bg-white/[0.03]":""}`,children:[e.jsx("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:621:31",className:"text-slate-600 shrink-0 w-14 text-right text-[10px] pt-px",children:d.time}),W,e.jsx("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:623:31",className:`break-all ${U}`,children:d.message})]})]},k)})})(),a.status==="running"&&e.jsxs("div",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:630:23",className:"flex items-center gap-2 mt-2 py-1.5 px-3 bg-blue-500/10 border-l-4 border-blue-500 rounded-r",children:[e.jsx($,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:631:25",className:"w-3 h-3 animate-spin text-blue-400 shrink-0"}),e.jsx("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:632:25",className:"text-[11px] text-blue-300 font-medium",children:"流水线执行中,实时输出..."}),e.jsxs("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:633:25",className:"flex gap-1 ml-1",children:[e.jsx("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:634:27",className:"w-1 h-1 rounded-full bg-blue-400 animate-bounce",style:{animationDelay:"0ms"}}),e.jsx("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:635:27",className:"w-1 h-1 rounded-full bg-blue-400 animate-bounce",style:{animationDelay:"150ms"}}),e.jsx("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:636:27",className:"w-1 h-1 rounded-full bg-blue-400 animate-bounce",style:{animationDelay:"300ms"}})]})]}),e.jsx("div",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:640:21",ref:h})]})})]})]})]}),e.jsx(He,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:650:7",open:se,onOpenChange:J,runId:X?.id??null,buildNumber:X?.buildNumber??0})]})}export{gt as default}; diff --git a/backend/static/assets/PipelineRunDetail-aZ8f25ZY.js b/backend/static/assets/PipelineRunDetail-aZ8f25ZY.js new file mode 100644 index 0000000..76e933d --- /dev/null +++ b/backend/static/assets/PipelineRunDetail-aZ8f25ZY.js @@ -0,0 +1,3 @@ +import{r as n,j as e,D as me,a as he,a0 as ue,c as ge,d as ye,X as be,ak as fe,o as ee,h as C,$ as De,k as je,B as E,Q as Ne,v as ve,al as we,am as Re,L as $,a6 as Pe,C as te,U as ke,a3 as Be}from"./index-Dmami9WE.js";import{B as A}from"./badge-3UzCvU7L.js";import{C as Fe,b as Se,c as Ce,a as $e}from"./card-CIfC-8Rh.js";import{t as S}from"./index-BuEnLCjT.js";import{F as H}from"./folder-open-CjMh_m_2.js";import{M as ze,a as _e}from"./minimize-2-BHcbNmdK.js";import{A as Ee}from"./arrow-left-BIbk9wFC.js";import{F as Ae}from"./file-text-CebshSV-.js";import{D as Le}from"./download-Vuij9wGr.js";import{H as Z}from"./history-CbX6uocL.js";import{T as Ie}from"./trash-2-DWVnIU6o.js";import{R as Te}from"./refresh-cw-CTBERyFc.js";import{P as Oe}from"./play-0EwQQJX_.js";import{B as Ue}from"./box-88Ol5qY-.js";import{C as I}from"./circle-check-CVbTTFQ0.js";import{C as G}from"./circle-x-BBQeW1R3.js";import{S as Me}from"./square-NjJOra_E.js";function We(s){return s===0?"-":s<1024?s+" B":s<1024*1024?(s/1024).toFixed(1)+" KB":(s/(1024*1024)).toFixed(1)+" MB"}function He({open:s,onOpenChange:o,runId:u,buildNumber:r}){const[x,a]=n.useState(null),[P,k]=n.useState(!1),[N,L]=n.useState(""),[v,i]=n.useState(""),[w,z]=n.useState(!1),B=async c=>{if(u){k(!0),L("");try{const h=c?`?path=${encodeURIComponent(c)}`:"",g=await C.get(`/pipelines/runs/${u}/files${h}`);a(g),i(g?.current||"")}catch(h){L(h?.message||"加载失败"),a(null)}finally{k(!1)}}};n.useEffect(()=>{s&&u&&(i(""),B(""))},[s,u]);const b=async c=>{const h=De.getState().token||"",g=`${location.protocol}//${location.host}/api/v1/pipelines/runs/${u}/files/download?path=${encodeURIComponent(c.path)}&token=${encodeURIComponent(h)}`;window.open(g,"_blank")},R=v?v.split("/").filter(Boolean):[],T=[""].concat(R.map((c,h)=>"/"+R.slice(0,h+1).join("/")));return e.jsx(me,{"code-path":"src/components/deploy/FileBrowserDialog.tsx:105:5",open:s,onOpenChange:o,children:e.jsxs(he,{"code-path":"src/components/deploy/FileBrowserDialog.tsx:106:7",showCloseButton:!1,className:ue("bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] p-0 gap-0","!duration-0 !transition-none",w?"!max-w-none !w-screen !h-screen !rounded-none":""),style:w?{maxWidth:"100vw",width:"100vw",height:"100vh"}:{maxWidth:"700px",width:"85vw"},children:[e.jsxs(ge,{"code-path":"src/components/deploy/FileBrowserDialog.tsx:117:9",className:"sr-only",children:["文件浏览器 #",r]}),e.jsx(ye,{"code-path":"src/components/deploy/FileBrowserDialog.tsx:118:9",className:"sr-only",children:"流水线构建目录文件浏览"}),e.jsxs("div",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:121:9",className:"flex items-center justify-between px-4 py-2.5 border-b border-[var(--dg-border)] shrink-0",children:[e.jsxs("div",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:122:11",className:"flex items-center gap-2 min-w-0",children:[e.jsx(H,{"code-path":"src/components/deploy/FileBrowserDialog.tsx:123:13",className:"h-4 w-4 text-[var(--dg-text-secondary)] shrink-0"}),e.jsxs("span",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:124:13",className:"text-[var(--dg-text-primary)] font-medium text-sm",children:["#",r," 工作区文件"]})]}),e.jsxs("div",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:128:11",className:"flex items-center gap-1",children:[e.jsx("button",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:129:13",onClick:()=>z(!w),className:"p-1.5 rounded hover:bg-[var(--dg-bg-hover)] text-[var(--dg-text-secondary)]",children:w?e.jsx(ze,{"code-path":"src/components/deploy/FileBrowserDialog.tsx:133:29",className:"h-4 w-4"}):e.jsx(_e,{"code-path":"src/components/deploy/FileBrowserDialog.tsx:133:65",className:"h-4 w-4"})}),e.jsx("button",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:135:13",onClick:()=>o(!1),className:"p-1.5 rounded hover:bg-[var(--dg-bg-hover)] text-[var(--dg-text-secondary)]",children:e.jsx(be,{"code-path":"src/components/deploy/FileBrowserDialog.tsx:139:15",className:"h-4 w-4"})})]})]}),e.jsx("div",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:145:9",className:"flex items-center gap-0.5 px-4 py-2 text-xs border-b border-[var(--dg-border)] bg-[var(--dg-bg-primary)] overflow-x-auto shrink-0",children:T.map((c,h)=>e.jsx("span",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:147:13",className:"flex items-center gap-0.5",children:h===0?e.jsx("button",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:149:17",onClick:()=>B(""),className:"text-[var(--dg-text-secondary)] hover:text-[var(--dg-text-primary)] p-0.5",children:e.jsx(fe,{"code-path":"src/components/deploy/FileBrowserDialog.tsx:153:19",className:"h-3.5 w-3.5"})}):e.jsxs(e.Fragment,{children:[e.jsx(ee,{"code-path":"src/components/deploy/FileBrowserDialog.tsx:157:19",className:"h-3 w-3 text-[var(--dg-text-muted)] shrink-0"}),e.jsx("button",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:158:19",onClick:()=>B(c),className:"text-[var(--dg-text-secondary)] hover:text-[var(--dg-text-primary)] truncate max-w-[120px]",children:R[h-1]})]})},c))}),e.jsxs("div",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:171:9",className:"overflow-y-auto",style:{height:w?"calc(100vh - 110px)":"420px"},children:[P&&e.jsx("div",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:173:13",className:"flex items-center justify-center h-full text-[var(--dg-text-muted)] text-sm",children:"加载中..."}),N&&e.jsx("div",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:179:13",className:"flex items-center justify-center h-full text-red-400 text-sm",children:N}),x&&!P&&e.jsxs("table",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:185:13",className:"w-full text-sm",children:[e.jsx("thead",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:186:15",className:"sticky top-0 bg-[var(--dg-bg-primary)] border-b border-[var(--dg-border)]",children:e.jsxs("tr",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:187:17",className:"text-left text-[var(--dg-text-muted)] text-xs",children:[e.jsx("th",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:188:19",className:"py-2 pl-4 pr-2 font-medium",children:"名称"}),e.jsx("th",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:189:19",className:"py-2 px-2 font-medium w-24 text-right",children:"大小"}),e.jsx("th",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:190:19",className:"py-2 pr-4 pl-2 font-medium w-40 hidden sm:table-cell",children:"修改时间"}),e.jsx("th",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:191:19",className:"py-2 pr-4 pl-2 font-medium w-16"})]})}),e.jsxs("tbody",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:194:15",children:[v&&e.jsxs("tr",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:197:19",className:"border-b border-[var(--dg-border)] hover:bg-[var(--dg-bg-hover)] cursor-pointer",onClick:()=>{const c=v.split("/").slice(0,-1).join("/");B(c)},children:[e.jsxs("td",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:204:21",className:"py-2 pl-4 pr-2 flex items-center gap-2",children:[e.jsx(Ee,{"code-path":"src/components/deploy/FileBrowserDialog.tsx:205:23",className:"h-4 w-4 text-[var(--dg-text-secondary)]"}),e.jsx("span",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:206:23",className:"text-[var(--dg-text-secondary)]",children:".."})]}),e.jsx("td",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:208:21",className:"py-2 px-2 text-right"}),e.jsx("td",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:209:21",className:"py-2 pr-4 pl-2 hidden sm:table-cell"}),e.jsx("td",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:210:21",className:"py-2 pr-4 pl-2"})]}),x.dirs?.map(c=>e.jsxs("tr",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:216:19",className:"border-b border-[var(--dg-border)] hover:bg-[var(--dg-bg-hover)] cursor-pointer",onClick:()=>B(c.path),children:[e.jsxs("td",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:221:21",className:"py-2 pl-4 pr-2 flex items-center gap-2",children:[e.jsx(H,{"code-path":"src/components/deploy/FileBrowserDialog.tsx:222:23",className:"h-4 w-4 text-amber-400 shrink-0"}),e.jsx("span",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:223:23",className:"text-[var(--dg-text-primary)]",children:c.name})]}),e.jsx("td",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:225:21",className:"py-2 px-2 text-right text-[var(--dg-text-muted)]",children:"-"}),e.jsx("td",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:226:21",className:"py-2 pr-4 pl-2 text-[var(--dg-text-muted)] hidden sm:table-cell",children:c.mod_time}),e.jsx("td",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:227:21",className:"py-2 pr-4 pl-2"})]},c.path)),x.files?.map(c=>e.jsxs("tr",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:233:19",className:"border-b border-[var(--dg-border)] hover:bg-[var(--dg-bg-hover)]",children:[e.jsxs("td",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:237:21",className:"py-2 pl-4 pr-2 flex items-center gap-2",children:[e.jsx(Ae,{"code-path":"src/components/deploy/FileBrowserDialog.tsx:238:23",className:"h-4 w-4 text-sky-400 shrink-0"}),e.jsx("span",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:239:23",className:"text-[var(--dg-text-primary)]",children:c.name})]}),e.jsx("td",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:241:21",className:"py-2 px-2 text-right text-[var(--dg-text-muted)]",children:We(c.size)}),e.jsx("td",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:242:21",className:"py-2 pr-4 pl-2 text-[var(--dg-text-muted)] hidden sm:table-cell",children:c.mod_time}),e.jsx("td",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:243:21",className:"py-2 pr-4 pl-2",children:e.jsx("button",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:244:23",onClick:h=>{h.stopPropagation(),b(c)},className:"p-1 rounded hover:bg-[var(--dg-bg-hover)] text-[var(--dg-text-secondary)] hover:text-white",title:"下载",children:e.jsx(Le,{"code-path":"src/components/deploy/FileBrowserDialog.tsx:249:25",className:"h-3.5 w-3.5"})})})]},c.path)),x.dirs?.length===0&&x.files?.length===0&&!v&&e.jsx("tr",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:257:19",children:e.jsx("td",{"code-path":"src/components/deploy/FileBrowserDialog.tsx:258:21",colSpan:4,className:"py-8 text-center text-[var(--dg-text-muted)]",children:P?"加载中...":"目录为空"})})]})]})]})]})})}const j=[{key:"checkout",label:"代码检出",icon:Ne,color:"#6366F1",order:1},{key:"build",label:"构建",icon:Ue,color:"#F59E0B",order:2},{key:"test",label:"测试",icon:I,color:"#10B981",order:3},{key:"image",label:"镜像打包",icon:ve,color:"#06B6D4",order:4},{key:"deploy",label:"部署",icon:we,color:"#EF4444",order:5},{key:"verify",label:"验证",icon:Re,color:"#3B82F6",order:6}].sort((s,o)=>s.order-o.order),Ge={success:"bg-emerald-500/20 text-emerald-400 border-emerald-500/30",failed:"bg-red-500/20 text-red-400 border-red-500/30",running:"bg-blue-500/20 text-blue-400 border-blue-500/30",pending:"bg-slate-500/20 text-slate-400 border-slate-500/30",cancelled:"bg-amber-500/20 text-amber-400 border-amber-500/30"},Je={success:I,failed:G,running:$,pending:te,cancelled:Pe};function Xe(s){if(!s)return"-";if(s<60)return`${s}秒`;const o=Math.floor(s/60),u=s%60;return`${o}分${u}秒`}function qe(s){return s?new Date(s).toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}):"-"}function Ke(s){if(!s)return[];try{const o=typeof s=="string"?JSON.parse(s):s;return Array.isArray(o)?o:[]}catch{return[]}}function Qe(s){const o=new Map;return s&&(Ke(s.stages).forEach(r=>{if(r.name||r.type){const x=r.type||j.find(a=>a.label===r.name)?.key;x&&o.set(x,r.status)}}),o.size===0&&s.status==="success"?j.forEach(r=>o.set(r.key,"success")):o.size===0&&s.status==="failed"?j.forEach((r,x)=>o.set(r.key,x===0?"success":"pending")):o.size===0&&s.status==="running"&&o.set("checkout","running")),o}function Ve(s,o){const u=s.find(x=>x.stage===o);if(u)return u.message;const r=j.find(x=>x.key===o);return r?`${r.label}...`:""}function ut(){const{code:s}=je(),[o,u]=n.useState(null),[r,x]=n.useState([]),[a,P]=n.useState(null),[k,N]=n.useState([]),[L,v]=n.useState(!1),[i,w]=n.useState(null),[z,B]=n.useState(10),[b,R]=n.useState(new Set),[T,c]=n.useState(!1),h=n.useRef(null),g=n.useRef(null),[se,J]=n.useState(!1),[X,oe]=n.useState(null),ne=n.useCallback(async()=>{try{const t=await C.get(`/pipelines/${s}`);u(t?.data||t)}catch{}},[s]),f=n.useCallback(async()=>{v(!0);try{const p=(await C.get(`/pipelines/${s}/runs?page_size=${z}`))?.list||[];x(p),!a&&p.length>0&&P(p[0])}catch{S.error("获取执行记录失败")}finally{v(!1)}},[s,z]);n.useEffect(()=>{ne(),f()},[]),n.useEffect(()=>{f()},[z]),n.useEffect(()=>{if(!r.some(l=>l.status==="running"))return;const p=setInterval(f,5e3);return()=>clearInterval(p)},[r,f]);const q=n.useCallback(async t=>{try{const p=await C.get(`/pipelines/runs/${t.id}/log-stream`);if(p?.logs){const l=typeof p.logs=="string"?JSON.parse(p.logs):p.logs;N(Array.isArray(l)?l:[])}else N([]);t.status==="running"&&ae(t.id)}catch{N([])}},[]),ae=t=>{g.current&&g.current.close();const p=window.location.protocol==="https:"?"wss:":"ws:",l=localStorage.getItem("token"),d=new WebSocket(`${p}//${window.location.host}/ws/pipeline/${t}/log?token=${l}`);d.onmessage=F=>{try{const m=JSON.parse(F.data);if(m.type==="init"&&m.logs){const y=typeof m.logs=="string"?JSON.parse(m.logs):m.logs;N(Array.isArray(y)?y:[])}else m.type==="done"?(d.close(),f()):m.time&&m.level&&N(y=>[...y,m])}catch{}},d.onclose=()=>{g.current=null},d.onerror=()=>{g.current=null},g.current=d};n.useEffect(()=>(a&&(q(a),w(null)),()=>{g.current&&g.current.close()}),[a,q]),n.useEffect(()=>{h.current?.scrollIntoView({behavior:"smooth"})},[k]);const le=async()=>{try{await C.post(`/pipelines/${s}/trigger`,{}),S.success("已触发"),f()}catch{S.error("触发失败")}},re=async t=>{try{await C.post(`/pipelines/${s}/runs/${t}/stop`,{}),S.success("已停止"),f()}catch{S.error("停止失败")}},ce=async()=>{if(b.size!==0){c(!0);try{await C.post(`/pipelines/${s}/runs/batch-delete`,{ids:Array.from(b)}),S.success(`已删除 ${b.size} 条记录`),R(new Set),f()}catch{S.error("批量删除失败")}finally{c(!1)}}},ie=t=>{R(p=>{const l=new Set(p);return l.has(t)?l.delete(t):l.add(t),l})},pe=()=>{b.size===r.length?R(new Set):R(new Set(r.map(t=>t.id)))},K=t=>t.triggered_by==="system"?"Cron":t.triggered_by==="git"?"Git Push":t.triggered_by||"Manual",O=Qe(a),Q=i?k.filter(t=>t.stage===i):k,V=i?Ve(k,i):"";return e.jsxs("div",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:293:5",className:"space-y-4 h-full flex flex-col",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:295:7",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:296:9",children:[e.jsxs("h2",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:297:11",className:"text-lg font-semibold text-[var(--dg-text-primary)]",children:[e.jsx(Z,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:298:13",className:"w-5 h-5 inline mr-2"}),"流水线详情"]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:301:11",className:"flex items-center gap-2 mt-0.5 flex-wrap",children:[o?.name&&e.jsx("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:303:15",className:"text-sm font-medium text-[var(--dg-text-primary)]",children:o.name}),o?.environment&&e.jsx(A,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:308:15",className:"text-xs",style:{backgroundColor:o.environment.color+"20",color:o.environment.color},children:o.environment.display_name}),a&&e.jsxs("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:316:15",className:"text-sm text-[var(--dg-text-secondary)]",children:["发布 #",a.build_number]})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:322:9",className:"flex gap-2 items-center",children:[b.size>0&&e.jsxs(E,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:324:13",variant:"destructive",size:"sm",onClick:ce,disabled:T,children:[e.jsx(Ie,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:325:15",className:"w-4 h-4 mr-1"}),"删除 (",b.size,")"]}),e.jsxs("select",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:328:11",value:z,onChange:t=>B(Number(t.target.value)),className:"h-8 px-2 text-xs rounded border border-[var(--dg-border)] bg-[var(--dg-bg-secondary)] text-[var(--dg-text-primary)]",children:[e.jsx("option",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:333:13",value:10,children:"10条/页"}),e.jsx("option",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:334:13",value:20,children:"20条/页"}),e.jsx("option",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:335:13",value:30,children:"30条/页"})]}),e.jsxs(E,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:337:11",variant:"outline",size:"sm",onClick:f,children:[e.jsx(Te,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:338:13",className:"w-4 h-4 mr-1"}),"刷新"]}),e.jsxs(E,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:340:11",size:"sm",onClick:le,children:[e.jsx(Oe,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:341:13",className:"w-4 h-4 mr-1"}),"立即执行"]})]})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:347:7",className:"flex items-center gap-0 px-4 py-3 rounded-lg bg-[var(--dg-bg-secondary)] border border-[var(--dg-border)] overflow-x-auto",children:[j.map((t,p)=>{const l=O.get(t.key)||"",d=l==="success"||l==="completed",F=l==="running"||l==="in_progress",m=l==="failed"||l==="error",y=i===t.key;t.key;const _=O.size>0,D=m?"#EF4444":F?"#3B82F6":d?"#207060":"#6B7280",U=m?"#EF444420":F?"#3B82F620":d?"#20706020":"#6B728010",M=y?D:D+"50",W=t.icon,de=m?e.jsx(G,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:369:35",className:"h-3.5 w-3.5"}):F?e.jsx($,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:370:27",className:"h-3.5 w-3.5 animate-spin"}):d?e.jsx(I,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:371:27",className:"h-3.5 w-3.5"}):_?e.jsx("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:372:25",className:"text-[10px] opacity-40",children:"○"}):e.jsx(W,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:373:15",className:"h-3.5 w-3.5 opacity-40"}),Y=p===j.length-1,xe=p===0?"8px 0 0 8px":Y?"0 8px 8px 0":"0";return e.jsxs("div",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:379:13",className:"flex items-center",children:[e.jsxs("button",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:380:15",onClick:()=>w(i===t.key?null:t.key),title:`${t.label}${l?` (${l})`:""} — 点击查看日志`,className:`flex items-center gap-1.5 px-3 py-2 text-[12px] font-semibold border shadow-sm transition-all cursor-pointer + ${y?"ring-1 ring-offset-0 scale-[1.02]":"hover:brightness-110"}`,style:{backgroundColor:U,borderColor:M,color:D,borderRadius:xe},children:[de,e.jsx("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:393:17",children:t.label})]}),!Y&&e.jsx("div",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:396:17",className:"flex items-center justify-center w-5 h-5 -mx-px z-10",children:e.jsx(ee,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:397:19",className:"h-3.5 w-3.5",style:{color:D+"99"}})})]},t.key)}),a&&e.jsx("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:404:11",className:"ml-auto text-[10px] text-[var(--dg-text-secondary)] opacity-40 shrink-0 pl-3 whitespace-nowrap",children:i?j.find(t=>t.key===i)?.label:"全阶段"})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:411:7",className:"flex-1 flex flex-col min-h-0",children:[e.jsx("div",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:413:9",className:"rounded-md border border-[var(--dg-border)] overflow-hidden mb-4",children:L&&r.length===0?e.jsxs("div",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:415:13",className:"text-center py-12",children:[e.jsx($,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:416:15",className:"w-6 h-6 animate-spin mx-auto mb-2 text-[var(--dg-text-muted)]"}),"加载中..."]}):r.length===0?e.jsxs("div",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:420:13",className:"text-center py-12 border border-dashed border-[var(--dg-border)] rounded-lg m-4",children:[e.jsx(Z,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:421:15",className:"w-10 h-10 mx-auto mb-3 text-[var(--dg-text-muted)]"}),e.jsx("p",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:422:15",className:"text-[var(--dg-text-secondary)]",children:'暂无执行记录,点击"立即执行"触发构建'})]}):e.jsxs("table",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:425:13",className:"w-full text-sm",children:[e.jsx("thead",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:426:15",className:"bg-[var(--dg-bg-tertiary)] border-b border-[var(--dg-border)]",children:e.jsxs("tr",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:427:17",children:[e.jsx("th",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:428:19",className:"px-2 py-2.5 w-10",children:e.jsx("input",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:429:21",type:"checkbox",checked:b.size===r.length&&r.length>0,onChange:pe,className:"rounded"})}),e.jsx("th",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:432:19",className:"px-3 py-2.5 text-left font-medium text-[var(--dg-text-secondary)] w-16",children:"构建"}),e.jsx("th",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:433:19",className:"px-3 py-2.5 text-left font-medium text-[var(--dg-text-secondary)] w-20",children:"状态"}),e.jsx("th",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:434:19",className:"px-3 py-2.5 text-left font-medium text-[var(--dg-text-secondary)]",children:"触发方式"}),e.jsx("th",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:435:19",className:"px-3 py-2.5 text-left font-medium text-[var(--dg-text-secondary)]",children:"用户"}),e.jsx("th",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:436:19",className:"px-3 py-2.5 text-left font-medium text-[var(--dg-text-secondary)]",children:"耗时"}),e.jsx("th",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:437:19",className:"px-3 py-2.5 text-left font-medium text-[var(--dg-text-secondary)] hidden md:table-cell",children:"时间"}),e.jsx("th",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:438:19",className:"px-3 py-2.5 text-right font-medium text-[var(--dg-text-secondary)] w-32",children:"操作"})]})}),e.jsx("tbody",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:441:15",children:r.map(t=>{const p=Je[t.status]||te;return e.jsxs("tr",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:445:21",className:`border-b border-[var(--dg-border)] cursor-pointer transition-colors + ${a?.id===t.id?"bg-[var(--dg-blue)]/10":"hover:bg-[var(--dg-bg-tertiary)]/50"}`,onClick:()=>{P(t)},children:[e.jsx("td",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:449:23",className:"px-2 py-2.5",onClick:l=>l.stopPropagation(),children:e.jsx("input",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:450:25",type:"checkbox",checked:b.has(t.id),onChange:()=>ie(t.id),className:"rounded"})}),e.jsxs("td",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:453:23",className:"px-3 py-2.5 font-mono font-semibold text-[var(--dg-text-primary)]",children:["#",t.build_number]}),e.jsx("td",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:456:23",className:"px-3 py-2.5",children:e.jsxs(A,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:457:25",className:`text-xs ${Ge[t.status]||""} flex items-center gap-1 w-fit`,children:[e.jsx(p,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:458:27",className:`w-3 h-3 ${t.status==="running"?"animate-spin":""}`}),t.status==="success"?"成功":t.status==="failed"?"失败":t.status==="running"?"执行中":t.status==="cancelled"?"已取消":"待执行"]})}),e.jsx("td",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:466:23",className:"px-3 py-2.5",children:e.jsx(A,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:467:25",variant:"outline",className:"text-xs",children:K(t)})}),e.jsxs("td",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:469:23",className:"px-3 py-2.5 text-[var(--dg-text-secondary)] flex items-center gap-1",children:[e.jsx(ke,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:470:25",className:"w-3 h-3"}),t.triggered_by||"admin"]}),e.jsx("td",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:473:23",className:"px-3 py-2.5 text-[var(--dg-text-secondary)] font-mono text-xs",children:t.status==="running"?e.jsxs("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:475:27",className:"flex items-center gap-1 text-blue-400",children:[e.jsx($,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:476:29",className:"w-3 h-3 animate-spin"}),"执行中..."]}):Xe(t.duration)}),e.jsx("td",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:480:23",className:"px-3 py-2.5 text-[var(--dg-text-muted)] text-xs hidden md:table-cell",children:qe(t.created_at)}),e.jsx("td",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:483:23",className:"px-3 py-2.5 text-right",onClick:l=>l.stopPropagation(),children:e.jsxs("div",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:484:25",className:"flex justify-end gap-1",children:[e.jsx(E,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:485:27",variant:"ghost",size:"sm",className:"h-7 text-xs",onClick:()=>P(t),children:"日志"}),e.jsxs(E,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:489:27",variant:"ghost",size:"sm",className:"h-7 text-xs",onClick:()=>{oe({id:t.id,buildNumber:t.build_number}),J(!0)},children:[e.jsx(H,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:491:29",className:"w-3.5 h-3.5 mr-1"}),"浏览"]}),t.status==="running"&&e.jsx(E,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:494:29",variant:"ghost",size:"icon",className:"h-7 w-7 text-red-500",onClick:()=>re(t.id),children:e.jsx(Me,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:496:31",className:"w-3.5 h-3.5"})})]})})]},t.id)})})]})}),a&&e.jsxs(Fe,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:511:11",className:"flex-1 flex flex-col min-h-0 border-[var(--dg-border)] bg-[var(--dg-bg-secondary)]",children:[e.jsxs(Se,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:512:13",className:"py-3 px-4 flex flex-row items-center justify-between border-b border-[var(--dg-border)]",children:[e.jsxs("div",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:513:15",className:"flex items-center gap-3",children:[e.jsxs(Ce,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:514:17",className:"text-sm font-mono",children:[o?.name||`#${s}`," #",a.build_number]}),a.status==="running"&&e.jsxs(A,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:518:19",className:"bg-blue-500/20 text-blue-400 border-blue-500/30 text-xs",children:[e.jsx($,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:519:21",className:"w-3 h-3 animate-spin mr-1"}),"实时"]}),i&&e.jsx(A,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:523:19",className:"text-xs border-[var(--dg-border)]",variant:"outline",children:j.find(t=>t.key===i)?.label||i})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:528:15",className:"flex items-center gap-2 text-xs text-[var(--dg-text-muted)]",children:[e.jsxs("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:529:17",children:["触发: ",K(a)," (",a.triggered_by||"admin",")"]}),e.jsx("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:530:17",className:"opacity-40",children:"|"}),e.jsxs("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:531:17",children:["分支: ",a.branch||"-"]}),a.commit_id&&e.jsxs(e.Fragment,{children:[e.jsx("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:534:21",className:"opacity-40",children:"|"}),e.jsx("code",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:535:21",className:"bg-amber-400/10 text-amber-400 px-1 py-0.5 rounded text-[10px]",children:a.commit_id.slice(0,8)})]}),a.image_tag&&e.jsxs(e.Fragment,{children:[e.jsx("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:542:21",className:"opacity-40",children:"|"}),e.jsxs("code",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:543:21",className:"bg-cyan-400/10 text-cyan-400 px-1 py-0.5 rounded text-[10px]",children:["📦 ",a.image_tag]})]})]})]}),e.jsxs($e,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:550:13",className:"flex-1 p-0 overflow-hidden min-h-0",children:[i&&V&&e.jsx("div",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:553:17",className:"px-4 py-2 border-b border-[var(--dg-border)] bg-[var(--dg-bg-tertiary)]/30",children:e.jsxs("div",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:554:19",className:"flex items-center gap-2",children:[e.jsxs("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:555:21",className:"text-[11px] font-semibold text-[var(--dg-text-secondary)]",children:["[",j.find(t=>t.key===i)?.label||i,"]"]}),(()=>{const t=O.get(i);return t==="success"||t==="completed"?e.jsx(I,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:560:74",className:"h-3.5 w-3.5 text-emerald-400"}):t==="failed"||t==="error"?e.jsx(G,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:561:69",className:"h-3.5 w-3.5 text-red-400"}):t==="running"||t==="in_progress"?e.jsx($,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:562:76",className:"h-3.5 w-3.5 text-blue-400 animate-spin"}):null})(),e.jsx("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:565:21",className:"text-xs text-[var(--dg-text-muted)] truncate font-mono",children:V})]})}),e.jsx("div",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:571:15",className:"h-full overflow-y-auto bg-[#0d1117] font-mono text-xs leading-5 p-4",style:{minHeight:280},children:Q.length===0&&a.status!=="running"?e.jsx("div",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:573:19",className:"text-center py-12 text-slate-500",children:i?"该阶段暂无日志输出":"暂无日志输出"}):e.jsxs(e.Fragment,{children:[(()=>{let t="";const p={checkout:"border-indigo-500 bg-indigo-500/10",build:"border-amber-500 bg-amber-500/10",test:"border-emerald-500 bg-emerald-500/10",image:"border-cyan-500 bg-cyan-500/10",deploy:"border-red-500 bg-red-500/10",verify:"border-blue-500 bg-blue-500/10"},l={checkout:"⬇",build:"⚙",test:"✓",image:"📦",deploy:"🚀",verify:"🛡"};return Q.map((d,F)=>{const m=!i&&d.stage&&d.stage!==t;m&&(t=d.stage||"");const y=d.level==="error",_=d.level==="warn",D=d.level==="success",U=y?"border-l-2 border-red-500 bg-red-500/10":_?"border-l-2 border-amber-500 bg-amber-500/10":D?"border-l-2 border-emerald-500 bg-emerald-500/5":"",M=y?"text-red-200":_?"text-amber-200":D?"text-emerald-200":"text-slate-300",W=y?e.jsx("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:605:29",className:"shrink-0 px-1.5 py-px rounded text-[10px] font-bold bg-red-600/40 text-red-200",children:"ERR"}):_?e.jsx("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:607:29",className:"shrink-0 px-1.5 py-px rounded text-[10px] font-bold bg-amber-600/40 text-amber-200",children:"WARN"}):D?e.jsx("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:609:29",className:"shrink-0 px-1.5 py-px rounded text-[10px] font-bold bg-emerald-600/30 text-emerald-200",children:" OK "}):e.jsx("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:610:29",className:"shrink-0 px-1.5 py-px rounded text-[10px] bg-slate-600/30 text-slate-400",children:"INFO"});return e.jsxs(Be.Fragment,{children:[m&&e.jsxs("div",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:614:31",className:`flex items-center gap-2 my-2 py-1 px-2 border-l-4 rounded-r ${p[d.stage||""]||"border-slate-500 bg-slate-500/10"}`,children:[e.jsx("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:615:33",className:"text-xs",children:l[d.stage||""]||"▸"}),e.jsx("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:616:33",className:"text-[11px] font-semibold tracking-wider text-slate-200",children:d.stage}),e.jsx("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:617:33",className:"flex-1 border-t border-slate-700/50"})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:620:29",className:`flex items-start gap-2 px-2 py-0.5 -mx-1 rounded-sm ${U} ${!y&&!_&&!D?"hover:bg-white/[0.03]":""}`,children:[e.jsx("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:621:31",className:"text-slate-600 shrink-0 w-14 text-right text-[10px] pt-px",children:d.time}),W,e.jsx("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:623:31",className:`break-all ${M}`,children:d.message})]})]},F)})})(),a.status==="running"&&e.jsxs("div",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:630:23",className:"flex items-center gap-2 mt-2 py-1.5 px-3 bg-blue-500/10 border-l-4 border-blue-500 rounded-r",children:[e.jsx($,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:631:25",className:"w-3 h-3 animate-spin text-blue-400 shrink-0"}),e.jsx("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:632:25",className:"text-[11px] text-blue-300 font-medium",children:"流水线执行中,实时输出..."}),e.jsxs("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:633:25",className:"flex gap-1 ml-1",children:[e.jsx("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:634:27",className:"w-1 h-1 rounded-full bg-blue-400 animate-bounce",style:{animationDelay:"0ms"}}),e.jsx("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:635:27",className:"w-1 h-1 rounded-full bg-blue-400 animate-bounce",style:{animationDelay:"150ms"}}),e.jsx("span",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:636:27",className:"w-1 h-1 rounded-full bg-blue-400 animate-bounce",style:{animationDelay:"300ms"}})]})]}),e.jsx("div",{"code-path":"src/components/deploy/PipelineRunDetail.tsx:640:21",ref:h})]})})]})]})]}),e.jsx(He,{"code-path":"src/components/deploy/PipelineRunDetail.tsx:650:7",open:se,onOpenChange:J,runId:X?.id??null,buildNumber:X?.buildNumber??0})]})}export{ut as default}; diff --git a/backend/static/assets/PlatformManager-BZql1FCs.js b/backend/static/assets/PlatformManager-BZql1FCs.js new file mode 100644 index 0000000..0adedd0 --- /dev/null +++ b/backend/static/assets/PlatformManager-BZql1FCs.js @@ -0,0 +1 @@ +import{r as t,j as e,B as d,L as k,g as L,D as E,a as I,b as T,c as B,d as O,e as V}from"./index-Dmami9WE.js";import{I as m}from"./input-NsU9nXZF.js";import{L as r}from"./label-Ap_-SPYI.js";import{B as j}from"./badge-3UzCvU7L.js";import{S as P,a as M,b as v,c as b,d as o}from"./select-DUbxjT0z.js";import{p as x}from"./cloud-Dq4kl-JO.js";import{S as K}from"./search-Dd-PeBfg.js";import{P as U}from"./plus-O65gX7Qz.js";import{E as W}from"./external-link-2hCYo_Ng.js";import{P as Y}from"./pencil-BYahlvYT.js";import{T as Z}from"./trash-2-DWVnIU6o.js";import{C as $}from"./circle-check-CVbTTFQ0.js";import{C as ee}from"./circle-x-BBQeW1R3.js";import"./index-CtCQcvyh.js";import"./chevron-up-Cq4GPopa.js";const ae={public:"公有云",private:"私有云",hybrid:"混合云"},se={public:"text-blue-400",private:"text-purple-400",hybrid:"text-cyan-400"};function je(){const[F,N]=t.useState([]),[Q,y]=t.useState(!0),[h,A]=t.useState(""),[u,H]=t.useState("all"),[R,l]=t.useState(!1),[n,w]=t.useState(null),[C,S]=t.useState(!1),[s,c]=t.useState({name:"",code:"",type:"public",status:"active",website:"",description:""}),p=t.useCallback(async()=>{y(!0);try{const f=(await x.list())?.list||[];N(f)}catch{N([])}finally{y(!1)}},[]);t.useEffect(()=>{p()},[p]);const D=F.filter(a=>{const f=a.name?.toLowerCase().includes(h.toLowerCase())||a.code?.toLowerCase().includes(h.toLowerCase()),J=u==="all"||a.type===u;return f&&J}),X=()=>{w(null),c({name:"",code:"",type:"public",status:"active",website:"",description:""}),l(!0)},_=a=>{w(a),c({name:a.name||"",code:a.code||"",type:a.type||"public",status:a.status||"active",website:a.website||"",description:a.description||""}),l(!0)},q=async()=>{if(!(!s.name.trim()||!s.code.trim())){S(!0);try{n?await x.update(n.id,s):await x.create(s),l(!1),p()}catch{}finally{S(!1)}}},[g,i]=t.useState(null),z=a=>i(a),G=async()=>{g!==null&&(await x.delete(g),i(null),p())};return e.jsxs("div",{"code-path":"src/components/cloud/PlatformManager.tsx:124:5",className:"p-6 space-y-4",children:[e.jsxs("div",{"code-path":"src/components/cloud/PlatformManager.tsx:126:7",className:"flex items-center justify-between gap-4",children:[e.jsxs("div",{"code-path":"src/components/cloud/PlatformManager.tsx:127:9",className:"flex items-center gap-3 flex-1",children:[e.jsxs("div",{"code-path":"src/components/cloud/PlatformManager.tsx:128:11",className:"relative w-72",children:[e.jsx(K,{"code-path":"src/components/cloud/PlatformManager.tsx:129:13",className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-slate-500"}),e.jsx(m,{"code-path":"src/components/cloud/PlatformManager.tsx:130:13",placeholder:"搜索平台名称或编码...",value:h,onChange:a=>A(a.target.value),className:"pl-9 h-9 bg-slate-800/50 border-slate-700"})]}),e.jsxs(P,{"code-path":"src/components/cloud/PlatformManager.tsx:137:11",value:u,onValueChange:H,children:[e.jsx(M,{"code-path":"src/components/cloud/PlatformManager.tsx:138:13",className:"w-32 h-9 bg-slate-800/50 border-slate-700",children:e.jsx(v,{"code-path":"src/components/cloud/PlatformManager.tsx:139:15"})}),e.jsxs(b,{"code-path":"src/components/cloud/PlatformManager.tsx:141:13",children:[e.jsx(o,{"code-path":"src/components/cloud/PlatformManager.tsx:142:15",value:"all",children:"全部类型"}),e.jsx(o,{"code-path":"src/components/cloud/PlatformManager.tsx:143:15",value:"public",children:"公有云"}),e.jsx(o,{"code-path":"src/components/cloud/PlatformManager.tsx:144:15",value:"private",children:"私有云"}),e.jsx(o,{"code-path":"src/components/cloud/PlatformManager.tsx:145:15",value:"hybrid",children:"混合云"})]})]})]}),e.jsxs(d,{"code-path":"src/components/cloud/PlatformManager.tsx:149:9",onClick:X,className:"gap-2",children:[e.jsx(U,{"code-path":"src/components/cloud/PlatformManager.tsx:150:11",className:"h-4 w-4"}),"添加平台"]})]}),Q?e.jsx("div",{"code-path":"src/components/cloud/PlatformManager.tsx:157:9",className:"flex justify-center py-20",children:e.jsx(k,{"code-path":"src/components/cloud/PlatformManager.tsx:158:11",className:"h-6 w-6 animate-spin text-slate-500"})}):D.length===0?e.jsxs("div",{"code-path":"src/components/cloud/PlatformManager.tsx:161:9",className:"text-center py-20 text-slate-500",children:[e.jsx(L,{"code-path":"src/components/cloud/PlatformManager.tsx:162:11",className:"h-12 w-12 mx-auto mb-3 opacity-40"}),e.jsx("p",{"code-path":"src/components/cloud/PlatformManager.tsx:163:11",children:"暂无云平台数据"})]}):e.jsx("div",{"code-path":"src/components/cloud/PlatformManager.tsx:166:9",className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",children:D.map(a=>e.jsxs("div",{"code-path":"src/components/cloud/PlatformManager.tsx:168:13",className:"bg-slate-800/30 rounded-lg p-4 hover:bg-slate-800/50 transition-colors group",children:[e.jsxs("div",{"code-path":"src/components/cloud/PlatformManager.tsx:172:15",className:"flex items-start justify-between mb-3",children:[e.jsxs("div",{"code-path":"src/components/cloud/PlatformManager.tsx:173:17",className:"flex items-center gap-3",children:[e.jsx("div",{"code-path":"src/components/cloud/PlatformManager.tsx:174:19",className:"w-10 h-10 rounded-lg bg-blue-500/20 flex items-center justify-center",children:e.jsx(L,{"code-path":"src/components/cloud/PlatformManager.tsx:175:21",className:"h-5 w-5 text-blue-400"})}),e.jsxs("div",{"code-path":"src/components/cloud/PlatformManager.tsx:177:19",children:[e.jsx("h3",{"code-path":"src/components/cloud/PlatformManager.tsx:178:21",className:"font-medium text-slate-100",children:a.name}),e.jsx("span",{"code-path":"src/components/cloud/PlatformManager.tsx:179:21",className:"text-xs text-slate-500 font-mono",children:a.code})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/PlatformManager.tsx:182:17",className:"flex gap-1 opacity-0 group-hover:opacity-100 transition-opacity",children:[a.website&&e.jsx("a",{"code-path":"src/components/cloud/PlatformManager.tsx:184:21",href:a.website,target:"_blank",rel:"noreferrer",className:"p-1.5 rounded hover:bg-slate-700 text-slate-400 hover:text-slate-200",children:e.jsx(W,{"code-path":"src/components/cloud/PlatformManager.tsx:185:23",className:"h-3.5 w-3.5"})}),e.jsx("button",{"code-path":"src/components/cloud/PlatformManager.tsx:188:19",onClick:()=>_(a),className:"p-1.5 rounded hover:bg-slate-700 text-slate-400 hover:text-slate-200",children:e.jsx(Y,{"code-path":"src/components/cloud/PlatformManager.tsx:189:21",className:"h-3.5 w-3.5"})}),e.jsx("button",{"code-path":"src/components/cloud/PlatformManager.tsx:191:19",onClick:()=>z(a.id),className:"p-1.5 rounded hover:bg-slate-700 text-slate-400 hover:text-red-400",children:e.jsx(Z,{"code-path":"src/components/cloud/PlatformManager.tsx:192:21",className:"h-3.5 w-3.5"})})]})]}),a.description&&e.jsx("p",{"code-path":"src/components/cloud/PlatformManager.tsx:198:17",className:"text-sm text-slate-400 mb-3 line-clamp-2",children:a.description}),e.jsxs("div",{"code-path":"src/components/cloud/PlatformManager.tsx:201:15",className:"flex items-center gap-2 flex-wrap",children:[e.jsx(j,{"code-path":"src/components/cloud/PlatformManager.tsx:202:17",variant:"outline",className:se[a.type]||"text-slate-400",children:ae[a.type]||a.type}),a.status==="active"?e.jsxs(j,{"code-path":"src/components/cloud/PlatformManager.tsx:206:19",className:"bg-emerald-500/20 text-emerald-400 gap-1",children:[e.jsx($,{"code-path":"src/components/cloud/PlatformManager.tsx:207:21",className:"h-3 w-3"})," 启用"]}):e.jsxs(j,{"code-path":"src/components/cloud/PlatformManager.tsx:210:19",className:"bg-slate-500/20 text-slate-400 gap-1",children:[e.jsx(ee,{"code-path":"src/components/cloud/PlatformManager.tsx:211:21",className:"h-3 w-3"})," 禁用"]})]})]},a.id))}),e.jsx(E,{"code-path":"src/components/cloud/PlatformManager.tsx:221:7",open:R,onOpenChange:l,children:e.jsxs(I,{"code-path":"src/components/cloud/PlatformManager.tsx:222:9",children:[e.jsxs(T,{"code-path":"src/components/cloud/PlatformManager.tsx:223:11",children:[e.jsx(B,{"code-path":"src/components/cloud/PlatformManager.tsx:224:13",children:n?"编辑云平台":"添加云平台"}),e.jsx(O,{"code-path":"src/components/cloud/PlatformManager.tsx:225:13",className:"sr-only",children:"描述"})]}),e.jsxs("div",{"code-path":"src/components/cloud/PlatformManager.tsx:227:11",className:"space-y-4 py-2",children:[e.jsxs("div",{"code-path":"src/components/cloud/PlatformManager.tsx:228:13",className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{"code-path":"src/components/cloud/PlatformManager.tsx:229:15",className:"space-y-1.5",children:[e.jsx(r,{"code-path":"src/components/cloud/PlatformManager.tsx:230:17",children:"平台名称 *"}),e.jsx(m,{"code-path":"src/components/cloud/PlatformManager.tsx:231:17",value:s.name,onChange:a=>c({...s,name:a.target.value}),placeholder:"如:阿里云",className:"bg-slate-800/50 border-slate-700"})]}),e.jsxs("div",{"code-path":"src/components/cloud/PlatformManager.tsx:238:15",className:"space-y-1.5",children:[e.jsx(r,{"code-path":"src/components/cloud/PlatformManager.tsx:239:17",children:"编码 *"}),e.jsx(m,{"code-path":"src/components/cloud/PlatformManager.tsx:240:17",value:s.code,onChange:a=>c({...s,code:a.target.value}),placeholder:"如:aliyun",className:"bg-slate-800/50 border-slate-700",disabled:!!n})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/PlatformManager.tsx:249:13",className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{"code-path":"src/components/cloud/PlatformManager.tsx:250:15",className:"space-y-1.5",children:[e.jsx(r,{"code-path":"src/components/cloud/PlatformManager.tsx:251:17",children:"类型"}),e.jsxs(P,{"code-path":"src/components/cloud/PlatformManager.tsx:252:17",value:s.type,onValueChange:a=>c({...s,type:a}),children:[e.jsx(M,{"code-path":"src/components/cloud/PlatformManager.tsx:253:19",className:"bg-slate-800/50 border-slate-700",children:e.jsx(v,{"code-path":"src/components/cloud/PlatformManager.tsx:254:21"})}),e.jsxs(b,{"code-path":"src/components/cloud/PlatformManager.tsx:256:19",children:[e.jsx(o,{"code-path":"src/components/cloud/PlatformManager.tsx:257:21",value:"public",children:"公有云"}),e.jsx(o,{"code-path":"src/components/cloud/PlatformManager.tsx:258:21",value:"private",children:"私有云"}),e.jsx(o,{"code-path":"src/components/cloud/PlatformManager.tsx:259:21",value:"hybrid",children:"混合云"})]})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/PlatformManager.tsx:263:15",className:"space-y-1.5",children:[e.jsx(r,{"code-path":"src/components/cloud/PlatformManager.tsx:264:17",children:"状态"}),e.jsxs(P,{"code-path":"src/components/cloud/PlatformManager.tsx:265:17",value:s.status,onValueChange:a=>c({...s,status:a}),children:[e.jsx(M,{"code-path":"src/components/cloud/PlatformManager.tsx:266:19",className:"bg-slate-800/50 border-slate-700",children:e.jsx(v,{"code-path":"src/components/cloud/PlatformManager.tsx:267:21"})}),e.jsxs(b,{"code-path":"src/components/cloud/PlatformManager.tsx:269:19",children:[e.jsx(o,{"code-path":"src/components/cloud/PlatformManager.tsx:270:21",value:"active",children:"启用"}),e.jsx(o,{"code-path":"src/components/cloud/PlatformManager.tsx:271:21",value:"inactive",children:"禁用"})]})]})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/PlatformManager.tsx:276:13",className:"space-y-1.5",children:[e.jsx(r,{"code-path":"src/components/cloud/PlatformManager.tsx:277:15",children:"官网地址"}),e.jsx(m,{"code-path":"src/components/cloud/PlatformManager.tsx:278:15",value:s.website,onChange:a=>c({...s,website:a.target.value}),placeholder:"https://...",className:"bg-slate-800/50 border-slate-700"})]}),e.jsxs("div",{"code-path":"src/components/cloud/PlatformManager.tsx:285:13",className:"space-y-1.5",children:[e.jsx(r,{"code-path":"src/components/cloud/PlatformManager.tsx:286:15",children:"描述"}),e.jsx(m,{"code-path":"src/components/cloud/PlatformManager.tsx:287:15",value:s.description,onChange:a=>c({...s,description:a.target.value}),placeholder:"平台描述...",className:"bg-slate-800/50 border-slate-700"})]})]}),e.jsxs(V,{"code-path":"src/components/cloud/PlatformManager.tsx:295:11",children:[e.jsx(d,{"code-path":"src/components/cloud/PlatformManager.tsx:296:13",variant:"ghost",onClick:()=>l(!1),children:"取消"}),e.jsxs(d,{"code-path":"src/components/cloud/PlatformManager.tsx:297:13",onClick:q,disabled:C||!s.name.trim()||!s.code.trim(),children:[C&&e.jsx(k,{"code-path":"src/components/cloud/PlatformManager.tsx:298:30",className:"h-4 w-4 mr-1 animate-spin"}),n?"保存":"创建"]})]})]})}),e.jsx(E,{"code-path":"src/components/cloud/PlatformManager.tsx:306:7",open:g!==null,onOpenChange:a=>!a&&i(null),children:e.jsxs(I,{"code-path":"src/components/cloud/PlatformManager.tsx:307:9",className:"max-w-sm",children:[e.jsxs(T,{"code-path":"src/components/cloud/PlatformManager.tsx:308:11",children:[e.jsx(B,{"code-path":"src/components/cloud/PlatformManager.tsx:309:13",children:"确认删除"}),e.jsx(O,{"code-path":"src/components/cloud/PlatformManager.tsx:310:13",className:"sr-only",children:"描述"})]}),e.jsx("p",{"code-path":"src/components/cloud/PlatformManager.tsx:312:11",className:"text-sm text-slate-400",children:"确定删除此云平台?此操作不可撤销。"}),e.jsxs(V,{"code-path":"src/components/cloud/PlatformManager.tsx:313:11",children:[e.jsx(d,{"code-path":"src/components/cloud/PlatformManager.tsx:314:13",variant:"ghost",onClick:()=>i(null),children:"取消"}),e.jsx(d,{"code-path":"src/components/cloud/PlatformManager.tsx:315:13",variant:"destructive",onClick:G,children:"删除"})]})]})})]})}export{je as PlatformManager}; diff --git a/backend/static/assets/PlatformManager-DvSL1hbm.js b/backend/static/assets/PlatformManager-DvSL1hbm.js deleted file mode 100644 index 8677b3d..0000000 --- a/backend/static/assets/PlatformManager-DvSL1hbm.js +++ /dev/null @@ -1 +0,0 @@ -import{r as t,j as e,S as K,I as d,B as m,L as k,C as L,D as E,b as I,c as T,d as B,e as O,f as V}from"./index-DfyorCky.js";import{L as r}from"./label-BK0h2apY.js";import{B as j}from"./badge-xNW8x0G1.js";import{S as P,a as M,b as v,c as b,d as o}from"./select-D5qUzdAs.js";import{p as x}from"./cloud-Dzoer-2i.js";import{P as U}from"./plus-CUG-9kpu.js";import{E as W}from"./external-link-CzIpMNu1.js";import{P as Y}from"./pencil-BqUotcjf.js";import{T as Z}from"./trash-2-Dx32pOzT.js";import{C as $}from"./circle-check-DWcXrx2k.js";import{C as ee}from"./circle-x-DK79Dhg2.js";import"./index-CWVNW_qu.js";const ae={public:"公有云",private:"私有云",hybrid:"混合云"},se={public:"text-blue-400",private:"text-purple-400",hybrid:"text-cyan-400"};function ue(){const[F,N]=t.useState([]),[Q,y]=t.useState(!0),[h,A]=t.useState(""),[u,H]=t.useState("all"),[R,l]=t.useState(!1),[n,C]=t.useState(null),[w,S]=t.useState(!1),[s,c]=t.useState({name:"",code:"",type:"public",status:"active",website:"",description:""}),p=t.useCallback(async()=>{y(!0);try{const f=(await x.list())?.list||[];N(f)}catch{N([])}finally{y(!1)}},[]);t.useEffect(()=>{p()},[p]);const D=F.filter(a=>{const f=a.name?.toLowerCase().includes(h.toLowerCase())||a.code?.toLowerCase().includes(h.toLowerCase()),J=u==="all"||a.type===u;return f&&J}),X=()=>{C(null),c({name:"",code:"",type:"public",status:"active",website:"",description:""}),l(!0)},_=a=>{C(a),c({name:a.name||"",code:a.code||"",type:a.type||"public",status:a.status||"active",website:a.website||"",description:a.description||""}),l(!0)},q=async()=>{if(!(!s.name.trim()||!s.code.trim())){S(!0);try{n?await x.update(n.id,s):await x.create(s),l(!1),p()}catch{}finally{S(!1)}}},[g,i]=t.useState(null),z=a=>i(a),G=async()=>{g!==null&&(await x.delete(g),i(null),p())};return e.jsxs("div",{"code-path":"src/components/cloud/PlatformManager.tsx:124:5",className:"p-6 space-y-4",children:[e.jsxs("div",{"code-path":"src/components/cloud/PlatformManager.tsx:126:7",className:"flex items-center justify-between gap-4",children:[e.jsxs("div",{"code-path":"src/components/cloud/PlatformManager.tsx:127:9",className:"flex items-center gap-3 flex-1",children:[e.jsxs("div",{"code-path":"src/components/cloud/PlatformManager.tsx:128:11",className:"relative w-72",children:[e.jsx(K,{"code-path":"src/components/cloud/PlatformManager.tsx:129:13",className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-slate-500"}),e.jsx(d,{"code-path":"src/components/cloud/PlatformManager.tsx:130:13",placeholder:"搜索平台名称或编码...",value:h,onChange:a=>A(a.target.value),className:"pl-9 h-9 bg-slate-800/50 border-slate-700"})]}),e.jsxs(P,{"code-path":"src/components/cloud/PlatformManager.tsx:137:11",value:u,onValueChange:H,children:[e.jsx(M,{"code-path":"src/components/cloud/PlatformManager.tsx:138:13",className:"w-32 h-9 bg-slate-800/50 border-slate-700",children:e.jsx(v,{"code-path":"src/components/cloud/PlatformManager.tsx:139:15"})}),e.jsxs(b,{"code-path":"src/components/cloud/PlatformManager.tsx:141:13",children:[e.jsx(o,{"code-path":"src/components/cloud/PlatformManager.tsx:142:15",value:"all",children:"全部类型"}),e.jsx(o,{"code-path":"src/components/cloud/PlatformManager.tsx:143:15",value:"public",children:"公有云"}),e.jsx(o,{"code-path":"src/components/cloud/PlatformManager.tsx:144:15",value:"private",children:"私有云"}),e.jsx(o,{"code-path":"src/components/cloud/PlatformManager.tsx:145:15",value:"hybrid",children:"混合云"})]})]})]}),e.jsxs(m,{"code-path":"src/components/cloud/PlatformManager.tsx:149:9",onClick:X,className:"gap-2",children:[e.jsx(U,{"code-path":"src/components/cloud/PlatformManager.tsx:150:11",className:"h-4 w-4"}),"添加平台"]})]}),Q?e.jsx("div",{"code-path":"src/components/cloud/PlatformManager.tsx:157:9",className:"flex justify-center py-20",children:e.jsx(k,{"code-path":"src/components/cloud/PlatformManager.tsx:158:11",className:"h-6 w-6 animate-spin text-slate-500"})}):D.length===0?e.jsxs("div",{"code-path":"src/components/cloud/PlatformManager.tsx:161:9",className:"text-center py-20 text-slate-500",children:[e.jsx(L,{"code-path":"src/components/cloud/PlatformManager.tsx:162:11",className:"h-12 w-12 mx-auto mb-3 opacity-40"}),e.jsx("p",{"code-path":"src/components/cloud/PlatformManager.tsx:163:11",children:"暂无云平台数据"})]}):e.jsx("div",{"code-path":"src/components/cloud/PlatformManager.tsx:166:9",className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",children:D.map(a=>e.jsxs("div",{"code-path":"src/components/cloud/PlatformManager.tsx:168:13",className:"bg-slate-800/30 rounded-lg p-4 hover:bg-slate-800/50 transition-colors group",children:[e.jsxs("div",{"code-path":"src/components/cloud/PlatformManager.tsx:172:15",className:"flex items-start justify-between mb-3",children:[e.jsxs("div",{"code-path":"src/components/cloud/PlatformManager.tsx:173:17",className:"flex items-center gap-3",children:[e.jsx("div",{"code-path":"src/components/cloud/PlatformManager.tsx:174:19",className:"w-10 h-10 rounded-lg bg-blue-500/20 flex items-center justify-center",children:e.jsx(L,{"code-path":"src/components/cloud/PlatformManager.tsx:175:21",className:"h-5 w-5 text-blue-400"})}),e.jsxs("div",{"code-path":"src/components/cloud/PlatformManager.tsx:177:19",children:[e.jsx("h3",{"code-path":"src/components/cloud/PlatformManager.tsx:178:21",className:"font-medium text-slate-100",children:a.name}),e.jsx("span",{"code-path":"src/components/cloud/PlatformManager.tsx:179:21",className:"text-xs text-slate-500 font-mono",children:a.code})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/PlatformManager.tsx:182:17",className:"flex gap-1 opacity-0 group-hover:opacity-100 transition-opacity",children:[a.website&&e.jsx("a",{"code-path":"src/components/cloud/PlatformManager.tsx:184:21",href:a.website,target:"_blank",rel:"noreferrer",className:"p-1.5 rounded hover:bg-slate-700 text-slate-400 hover:text-slate-200",children:e.jsx(W,{"code-path":"src/components/cloud/PlatformManager.tsx:185:23",className:"h-3.5 w-3.5"})}),e.jsx("button",{"code-path":"src/components/cloud/PlatformManager.tsx:188:19",onClick:()=>_(a),className:"p-1.5 rounded hover:bg-slate-700 text-slate-400 hover:text-slate-200",children:e.jsx(Y,{"code-path":"src/components/cloud/PlatformManager.tsx:189:21",className:"h-3.5 w-3.5"})}),e.jsx("button",{"code-path":"src/components/cloud/PlatformManager.tsx:191:19",onClick:()=>z(a.id),className:"p-1.5 rounded hover:bg-slate-700 text-slate-400 hover:text-red-400",children:e.jsx(Z,{"code-path":"src/components/cloud/PlatformManager.tsx:192:21",className:"h-3.5 w-3.5"})})]})]}),a.description&&e.jsx("p",{"code-path":"src/components/cloud/PlatformManager.tsx:198:17",className:"text-sm text-slate-400 mb-3 line-clamp-2",children:a.description}),e.jsxs("div",{"code-path":"src/components/cloud/PlatformManager.tsx:201:15",className:"flex items-center gap-2 flex-wrap",children:[e.jsx(j,{"code-path":"src/components/cloud/PlatformManager.tsx:202:17",variant:"outline",className:se[a.type]||"text-slate-400",children:ae[a.type]||a.type}),a.status==="active"?e.jsxs(j,{"code-path":"src/components/cloud/PlatformManager.tsx:206:19",className:"bg-emerald-500/20 text-emerald-400 gap-1",children:[e.jsx($,{"code-path":"src/components/cloud/PlatformManager.tsx:207:21",className:"h-3 w-3"})," 启用"]}):e.jsxs(j,{"code-path":"src/components/cloud/PlatformManager.tsx:210:19",className:"bg-slate-500/20 text-slate-400 gap-1",children:[e.jsx(ee,{"code-path":"src/components/cloud/PlatformManager.tsx:211:21",className:"h-3 w-3"})," 禁用"]})]})]},a.id))}),e.jsx(E,{"code-path":"src/components/cloud/PlatformManager.tsx:221:7",open:R,onOpenChange:l,children:e.jsxs(I,{"code-path":"src/components/cloud/PlatformManager.tsx:222:9",children:[e.jsxs(T,{"code-path":"src/components/cloud/PlatformManager.tsx:223:11",children:[e.jsx(B,{"code-path":"src/components/cloud/PlatformManager.tsx:224:13",children:n?"编辑云平台":"添加云平台"}),e.jsx(O,{"code-path":"src/components/cloud/PlatformManager.tsx:225:13",className:"sr-only",children:"描述"})]}),e.jsxs("div",{"code-path":"src/components/cloud/PlatformManager.tsx:227:11",className:"space-y-4 py-2",children:[e.jsxs("div",{"code-path":"src/components/cloud/PlatformManager.tsx:228:13",className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{"code-path":"src/components/cloud/PlatformManager.tsx:229:15",className:"space-y-1.5",children:[e.jsx(r,{"code-path":"src/components/cloud/PlatformManager.tsx:230:17",children:"平台名称 *"}),e.jsx(d,{"code-path":"src/components/cloud/PlatformManager.tsx:231:17",value:s.name,onChange:a=>c({...s,name:a.target.value}),placeholder:"如:阿里云",className:"bg-slate-800/50 border-slate-700"})]}),e.jsxs("div",{"code-path":"src/components/cloud/PlatformManager.tsx:238:15",className:"space-y-1.5",children:[e.jsx(r,{"code-path":"src/components/cloud/PlatformManager.tsx:239:17",children:"编码 *"}),e.jsx(d,{"code-path":"src/components/cloud/PlatformManager.tsx:240:17",value:s.code,onChange:a=>c({...s,code:a.target.value}),placeholder:"如:aliyun",className:"bg-slate-800/50 border-slate-700",disabled:!!n})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/PlatformManager.tsx:249:13",className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{"code-path":"src/components/cloud/PlatformManager.tsx:250:15",className:"space-y-1.5",children:[e.jsx(r,{"code-path":"src/components/cloud/PlatformManager.tsx:251:17",children:"类型"}),e.jsxs(P,{"code-path":"src/components/cloud/PlatformManager.tsx:252:17",value:s.type,onValueChange:a=>c({...s,type:a}),children:[e.jsx(M,{"code-path":"src/components/cloud/PlatformManager.tsx:253:19",className:"bg-slate-800/50 border-slate-700",children:e.jsx(v,{"code-path":"src/components/cloud/PlatformManager.tsx:254:21"})}),e.jsxs(b,{"code-path":"src/components/cloud/PlatformManager.tsx:256:19",children:[e.jsx(o,{"code-path":"src/components/cloud/PlatformManager.tsx:257:21",value:"public",children:"公有云"}),e.jsx(o,{"code-path":"src/components/cloud/PlatformManager.tsx:258:21",value:"private",children:"私有云"}),e.jsx(o,{"code-path":"src/components/cloud/PlatformManager.tsx:259:21",value:"hybrid",children:"混合云"})]})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/PlatformManager.tsx:263:15",className:"space-y-1.5",children:[e.jsx(r,{"code-path":"src/components/cloud/PlatformManager.tsx:264:17",children:"状态"}),e.jsxs(P,{"code-path":"src/components/cloud/PlatformManager.tsx:265:17",value:s.status,onValueChange:a=>c({...s,status:a}),children:[e.jsx(M,{"code-path":"src/components/cloud/PlatformManager.tsx:266:19",className:"bg-slate-800/50 border-slate-700",children:e.jsx(v,{"code-path":"src/components/cloud/PlatformManager.tsx:267:21"})}),e.jsxs(b,{"code-path":"src/components/cloud/PlatformManager.tsx:269:19",children:[e.jsx(o,{"code-path":"src/components/cloud/PlatformManager.tsx:270:21",value:"active",children:"启用"}),e.jsx(o,{"code-path":"src/components/cloud/PlatformManager.tsx:271:21",value:"inactive",children:"禁用"})]})]})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/PlatformManager.tsx:276:13",className:"space-y-1.5",children:[e.jsx(r,{"code-path":"src/components/cloud/PlatformManager.tsx:277:15",children:"官网地址"}),e.jsx(d,{"code-path":"src/components/cloud/PlatformManager.tsx:278:15",value:s.website,onChange:a=>c({...s,website:a.target.value}),placeholder:"https://...",className:"bg-slate-800/50 border-slate-700"})]}),e.jsxs("div",{"code-path":"src/components/cloud/PlatformManager.tsx:285:13",className:"space-y-1.5",children:[e.jsx(r,{"code-path":"src/components/cloud/PlatformManager.tsx:286:15",children:"描述"}),e.jsx(d,{"code-path":"src/components/cloud/PlatformManager.tsx:287:15",value:s.description,onChange:a=>c({...s,description:a.target.value}),placeholder:"平台描述...",className:"bg-slate-800/50 border-slate-700"})]})]}),e.jsxs(V,{"code-path":"src/components/cloud/PlatformManager.tsx:295:11",children:[e.jsx(m,{"code-path":"src/components/cloud/PlatformManager.tsx:296:13",variant:"ghost",onClick:()=>l(!1),children:"取消"}),e.jsxs(m,{"code-path":"src/components/cloud/PlatformManager.tsx:297:13",onClick:q,disabled:w||!s.name.trim()||!s.code.trim(),children:[w&&e.jsx(k,{"code-path":"src/components/cloud/PlatformManager.tsx:298:30",className:"h-4 w-4 mr-1 animate-spin"}),n?"保存":"创建"]})]})]})}),e.jsx(E,{"code-path":"src/components/cloud/PlatformManager.tsx:306:7",open:g!==null,onOpenChange:a=>!a&&i(null),children:e.jsxs(I,{"code-path":"src/components/cloud/PlatformManager.tsx:307:9",className:"max-w-sm",children:[e.jsxs(T,{"code-path":"src/components/cloud/PlatformManager.tsx:308:11",children:[e.jsx(B,{"code-path":"src/components/cloud/PlatformManager.tsx:309:13",children:"确认删除"}),e.jsx(O,{"code-path":"src/components/cloud/PlatformManager.tsx:310:13",className:"sr-only",children:"描述"})]}),e.jsx("p",{"code-path":"src/components/cloud/PlatformManager.tsx:312:11",className:"text-sm text-slate-400",children:"确定删除此云平台?此操作不可撤销。"}),e.jsxs(V,{"code-path":"src/components/cloud/PlatformManager.tsx:313:11",children:[e.jsx(m,{"code-path":"src/components/cloud/PlatformManager.tsx:314:13",variant:"ghost",onClick:()=>i(null),children:"取消"}),e.jsx(m,{"code-path":"src/components/cloud/PlatformManager.tsx:315:13",variant:"destructive",onClick:G,children:"删除"})]})]})})]})}export{ue as PlatformManager}; diff --git a/backend/static/assets/PodFileBrowser-BySN2XGN.js b/backend/static/assets/PodFileBrowser-BLvOIIeH.js similarity index 99% rename from backend/static/assets/PodFileBrowser-BySN2XGN.js rename to backend/static/assets/PodFileBrowser-BLvOIIeH.js index 10904bd..8354f7f 100644 --- a/backend/static/assets/PodFileBrowser-BySN2XGN.js +++ b/backend/static/assets/PodFileBrowser-BLvOIIeH.js @@ -1,4 +1,4 @@ -import{r as H,j as y,B as le,a9 as gl,L as St,a5 as Zs,D as Iu,b as Wu,X as xl,d as Fu,e as Vu,H as Hu,n as zu}from"./index-DfyorCky.js";import{u as Ah}from"./use-toast-CrSOP4cJ.js";import{k as wt}from"./kubernetes-J8O09fK7.js";import{C as bl}from"./copy-DXW4LnkN.js";import{S as xs}from"./sparkles-Bld4NX5y.js";import{S as yl}from"./save-DoGGjfwC.js";import{S as kl,a as wl,b as vl,c as Sl,d as Ol}from"./select-D5qUzdAs.js";import{x as Qu,a as $u}from"./xterm-DSqgeKvr.js";import{B as ju}from"./box-TTGA1p57.js";import{R as qu}from"./rotate-cw-5qcj_h_q.js";import{M as Xu,a as Uu}from"./minimize-2-CiCQYRfn.js";import{B as Yu}from"./badge-xNW8x0G1.js";import{H as _u}from"./hard-drive-BbPmnARR.js";import{A as Ku}from"./arrow-left-BDgGyrD0.js";import{U as Gu}from"./upload-Ba6rlaGS.js";import{R as Ju}from"./refresh-cw-DUB_tAG-.js";import{a as Zu,F as ed}from"./folder-DoMwqvzv.js";import{D as td}from"./download-DoZfYs2h.js";function Tr(){return Tr=Object.assign?Object.assign.bind():function(s){for(var e=1;e|]/.test(P)}function A(N){for(i++;iP.startsWith(D)):!1}for(;i=2&&D<=4&&P.startsWith("pod-template-hash")&&P.includes(":")){i++;continue}if(D===2&&M&&n.has(M)){S(N)?i++:A(2);continue}if(D===2&&M&&r.has(M)){A(2);continue}if(f&&D>2&&M&&a.has(M)){if(S(N))i++;else{const R=P.split(":").slice(1).join(":").trim();/^[>|]/.test(R)?A(D):i++}continue}}if(u){if(D===2&&M==="template"){t.push(N),i++;continue}if(D===2&&M&&o[M]){const F=P.split(":").slice(1).join(":").trim();if(o[M].includes(F)){i++;continue}}if(D===2&&M==="nodeName"){i++;continue}if(D===2&&M==="spec"){d=!0,k=D,t.push(N),i++;continue}}if(d&&D>k){if(M==="containers"){p=!0,m=!1,t.push(N),i++;continue}if(M==="initContainers"){m=!0,p=!1,t.push(N),i++;continue}if(M==="volumes"){x=!0,t.push(N),i++;continue}if(M&&o[M]){const F=P.split(":").slice(1).join(":").trim();if(o[M].includes(F)){i++;continue}}if(M==="nodeName"){i++;continue}if(M==="serviceAccount"&&P.endsWith(":")){S(N)?i++:A(D);continue}}if((p||m)&&D>=6){if(M&&l[M]){const F=P.split(":").slice(1).join(":").trim();if(l[M].includes(F)){i++;continue}}if(M==="volumeMounts"&&(g=!0),g&&P.startsWith("- name:")){let F=[N],R=i+1,C=!1;for(;R=4&&P.startsWith("- name:")&&O(P)){const F=D;for(i++;i0&&t[t.length-1].trim()===""){i++;continue}t.push(N),i++}return t.join(` `).replace(/\n{3,}/g,` diff --git a/backend/static/assets/PodMetricsPage-D3yVmBoF.js b/backend/static/assets/PodMetricsPage-D3yVmBoF.js new file mode 100644 index 0000000..151a491 --- /dev/null +++ b/backend/static/assets/PodMetricsPage-D3yVmBoF.js @@ -0,0 +1 @@ +import{k as H,m as U,r as c,j as e,n as N,o as f,A as V,B as W,p as F}from"./index-Dmami9WE.js";import{C as i,a as x}from"./card-CIfC-8Rh.js";import{B as L}from"./badge-3UzCvU7L.js";import{S as v,a as C,b as y,c as S,d as P}from"./select-DUbxjT0z.js";import{T as z,a as D,b as u,c as d,d as G,e as n}from"./table-CG4mjNfb.js";import{k as b}from"./kubernetes-D2-GnE0t.js";import{R as K}from"./refresh-cw-CTBERyFc.js";import{H as q}from"./hard-drive-DmC04Y5r.js";import"./index-CtCQcvyh.js";import"./chevron-up-Cq4GPopa.js";function ce(){const{clusterCode:w}=H(),g=U(),[m,M]=c.useState(!1),[p,k]=c.useState([]),[A,T]=c.useState([]),[$,E]=c.useState([]),[l,B]=c.useState("all"),[a,j]=c.useState(w||"");c.useEffect(()=>{b.getClusters().then(s=>{const t=s?.list||[];if(T(t),!a&&t.length>0){const r=t[0].code||String(t[0].id);j(r),g(`/kubernetes/${r}/metrics/pods`,{replace:!0})}}).catch(()=>{})},[]),c.useEffect(()=>{a&&b.getNamespaces(a).then(s=>{E(Array.isArray(s)?s:s?.list||s?.data||[])}).catch(()=>{})},[a]);const h=c.useCallback(async()=>{if(a){M(!0);try{const s=l==="all"?void 0:l,t=await b.getPodMetrics(a,s);k(Array.isArray(t)?t:t?.list||[])}catch{k([])}finally{M(!1)}}},[a,l]);c.useEffect(()=>{h()},[h]);const o=c.useMemo(()=>p.flatMap(s=>(s.containers||[]).map(t=>({pod:s.name,namespace:s.namespace,container:t.name,cpu:t.cpu||"0m",memory:t.memory||"0Mi"}))),[p]),I=c.useMemo(()=>o.reduce((s,t)=>s+(parseInt(t.cpu)||0),0),[o]),R=c.useMemo(()=>{let s=0;return o.forEach(t=>{const r=t.memory;r.endsWith("Mi")?s+=parseInt(r):r.endsWith("Ki")?s+=parseInt(r)/1024:r.endsWith("Gi")&&(s+=parseInt(r)*1024)}),s},[o]);return e.jsxs("div",{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:81:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:82:7",className:"flex items-center gap-2 text-sm text-slate-500",children:[e.jsx(N,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:83:9",to:"/kubernetes",className:"hover:text-slate-300",children:"集群"}),a&&e.jsxs(e.Fragment,{children:[e.jsx(f,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:84:29",className:"h-3 w-3"}),e.jsx(N,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:84:65",to:`/kubernetes/${a}`,className:"hover:text-slate-300",children:a})]}),e.jsx(f,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:85:9",className:"h-3 w-3"}),e.jsx("span",{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:85:45",className:"text-slate-300",children:"Pod 资源用量"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:88:7",className:"flex items-center justify-between flex-wrap gap-3",children:[e.jsxs("h2",{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:89:9",className:"text-lg font-semibold text-slate-100 flex items-center gap-2",children:[e.jsx(V,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:89:86",className:"h-5 w-5 text-blue-400"}),"Pod 资源用量"]}),e.jsxs("div",{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:90:9",className:"flex items-center gap-2",children:[e.jsxs(v,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:91:11",value:a,onValueChange:s=>{j(s),g(`/kubernetes/${s}/metrics/pods`)},children:[e.jsx(C,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:92:13",className:"w-44 h-8 text-xs bg-slate-800 border-slate-700",children:e.jsx(y,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:92:87"})}),e.jsx(S,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:93:13",className:"bg-slate-800 border-slate-700",children:A.map(s=>e.jsx(P,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:94:42",value:s.code||String(s.id),className:"text-xs",children:s.name||s.code},s.id))})]}),e.jsxs(v,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:97:11",value:l,onValueChange:B,children:[e.jsx(C,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:98:13",className:"w-36 h-8 text-xs bg-slate-800 border-slate-700",children:e.jsx(y,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:98:87",placeholder:"所有命名空间"})}),e.jsxs(S,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:99:13",className:"bg-slate-800 border-slate-700",children:[e.jsx(P,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:100:15",value:"all",className:"text-xs",children:"所有命名空间"}),$.map(s=>e.jsx(P,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:101:36",value:s,className:"text-xs",children:s},s))]})]}),e.jsxs(W,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:104:11",variant:"outline",size:"sm",className:"h-8 border-slate-700 text-slate-300 text-xs",onClick:h,disabled:m,children:[e.jsx(K,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:105:13",className:`h-3 w-3 mr-1 ${m?"animate-spin":""}`}),"刷新"]})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:111:7",className:"grid grid-cols-3 gap-3",children:[e.jsx(i,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:112:9",className:"bg-slate-900 border-slate-800",children:e.jsxs(x,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:112:57",className:"p-3 text-center",children:[e.jsx("p",{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:113:11",className:"text-xs text-slate-500",children:"Pod 数"}),e.jsx("p",{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:113:58",className:"text-xl font-bold text-slate-200",children:p.length})]})}),e.jsx(i,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:115:9",className:"bg-slate-900 border-slate-800",children:e.jsxs(x,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:115:57",className:"p-3 text-center",children:[e.jsx("p",{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:116:11",className:"text-xs text-slate-500",children:"总 CPU"}),e.jsxs("p",{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:116:58",className:"text-xl font-bold text-blue-400",children:[I,"m"]})]})}),e.jsx(i,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:118:9",className:"bg-slate-900 border-slate-800",children:e.jsxs(x,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:118:57",className:"p-3 text-center",children:[e.jsx("p",{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:119:11",className:"text-xs text-slate-500",children:"总内存"}),e.jsxs("p",{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:119:56",className:"text-xl font-bold text-emerald-400",children:[R.toFixed(0),"Mi"]})]})})]}),e.jsx(i,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:123:7",className:"bg-slate-900 border-slate-800",children:e.jsx(x,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:124:9",className:"p-0",children:e.jsxs(z,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:125:11",children:[e.jsx(D,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:126:13",children:e.jsxs(u,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:126:26",className:"border-slate-800 hover:bg-transparent",children:[e.jsx(d,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:127:15",className:"text-slate-400",children:"Pod"}),e.jsx(d,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:128:15",className:"text-slate-400",children:"命名空间"}),e.jsx(d,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:129:15",className:"text-slate-400",children:"容器"}),e.jsxs(d,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:130:15",className:"text-slate-400",children:[e.jsx(F,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:130:53",className:"h-3 w-3 inline mr-1"}),"CPU"]}),e.jsxs(d,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:131:15",className:"text-slate-400",children:[e.jsx(q,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:131:53",className:"h-3 w-3 inline mr-1"}),"Memory"]})]})}),e.jsx(G,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:133:13",children:o.length===0?e.jsx(u,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:135:17",children:e.jsxs(n,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:135:27",colSpan:5,className:"text-center text-slate-500 py-8",children:["暂无数据",m?e.jsx("span",{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:135:109",className:"animate-spin inline-block ml-2",children:"⏳"}):""]})}):o.map((s,t)=>e.jsxs(u,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:137:17",className:"border-slate-800 hover:bg-slate-800/30",children:[e.jsx(n,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:138:19",className:"font-medium text-slate-200 text-sm",children:s.pod}),e.jsx(n,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:139:19",children:e.jsx(L,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:139:30",variant:"outline",className:"border-slate-700 text-slate-400 text-xs",children:s.namespace})}),e.jsx(n,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:140:19",className:"text-sm text-slate-400",children:s.container}),e.jsx(n,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:141:19",className:"text-sm text-blue-400",children:s.cpu}),e.jsx(n,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:142:19",className:"text-sm text-emerald-400",children:s.memory})]},`${s.pod}-${s.container}-${t}`))})]})})})]})}export{ce as default}; diff --git a/backend/static/assets/PodMetricsPage-DjvvN_IG.js b/backend/static/assets/PodMetricsPage-DjvvN_IG.js deleted file mode 100644 index 8db2c97..0000000 --- a/backend/static/assets/PodMetricsPage-DjvvN_IG.js +++ /dev/null @@ -1 +0,0 @@ -import{i as H,k as U,r as c,j as e,m as N,n as f,A as V,B as W,o as F}from"./index-DfyorCky.js";import{C as i,a as x}from"./card-C55cvSHg.js";import{B as L}from"./badge-xNW8x0G1.js";import{S as v,a as C,b as y,c as S,d as P}from"./select-D5qUzdAs.js";import{T as z,a as D,b as u,c as d,d as G,e as n}from"./table-5sHV4Akp.js";import{k as b}from"./kubernetes-J8O09fK7.js";import{R as K}from"./refresh-cw-DUB_tAG-.js";import{H as q}from"./hard-drive-BbPmnARR.js";import"./index-CWVNW_qu.js";function te(){const{clusterCode:w}=H(),g=U(),[m,M]=c.useState(!1),[p,k]=c.useState([]),[A,T]=c.useState([]),[$,E]=c.useState([]),[l,B]=c.useState("all"),[a,j]=c.useState(w||"");c.useEffect(()=>{b.getClusters().then(s=>{const t=s?.list||[];if(T(t),!a&&t.length>0){const r=t[0].code||String(t[0].id);j(r),g(`/kubernetes/${r}/metrics/pods`,{replace:!0})}}).catch(()=>{})},[]),c.useEffect(()=>{a&&b.getNamespaces(a).then(s=>{E(Array.isArray(s)?s:s?.list||s?.data||[])}).catch(()=>{})},[a]);const h=c.useCallback(async()=>{if(a){M(!0);try{const s=l==="all"?void 0:l,t=await b.getPodMetrics(a,s);k(Array.isArray(t)?t:t?.list||[])}catch{k([])}finally{M(!1)}}},[a,l]);c.useEffect(()=>{h()},[h]);const o=c.useMemo(()=>p.flatMap(s=>(s.containers||[]).map(t=>({pod:s.name,namespace:s.namespace,container:t.name,cpu:t.cpu||"0m",memory:t.memory||"0Mi"}))),[p]),I=c.useMemo(()=>o.reduce((s,t)=>s+(parseInt(t.cpu)||0),0),[o]),R=c.useMemo(()=>{let s=0;return o.forEach(t=>{const r=t.memory;r.endsWith("Mi")?s+=parseInt(r):r.endsWith("Ki")?s+=parseInt(r)/1024:r.endsWith("Gi")&&(s+=parseInt(r)*1024)}),s},[o]);return e.jsxs("div",{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:81:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:82:7",className:"flex items-center gap-2 text-sm text-slate-500",children:[e.jsx(N,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:83:9",to:"/kubernetes",className:"hover:text-slate-300",children:"集群"}),a&&e.jsxs(e.Fragment,{children:[e.jsx(f,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:84:29",className:"h-3 w-3"}),e.jsx(N,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:84:65",to:`/kubernetes/${a}`,className:"hover:text-slate-300",children:a})]}),e.jsx(f,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:85:9",className:"h-3 w-3"}),e.jsx("span",{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:85:45",className:"text-slate-300",children:"Pod 资源用量"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:88:7",className:"flex items-center justify-between flex-wrap gap-3",children:[e.jsxs("h2",{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:89:9",className:"text-lg font-semibold text-slate-100 flex items-center gap-2",children:[e.jsx(V,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:89:86",className:"h-5 w-5 text-blue-400"}),"Pod 资源用量"]}),e.jsxs("div",{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:90:9",className:"flex items-center gap-2",children:[e.jsxs(v,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:91:11",value:a,onValueChange:s=>{j(s),g(`/kubernetes/${s}/metrics/pods`)},children:[e.jsx(C,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:92:13",className:"w-44 h-8 text-xs bg-slate-800 border-slate-700",children:e.jsx(y,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:92:87"})}),e.jsx(S,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:93:13",className:"bg-slate-800 border-slate-700",children:A.map(s=>e.jsx(P,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:94:42",value:s.code||String(s.id),className:"text-xs",children:s.name||s.code},s.id))})]}),e.jsxs(v,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:97:11",value:l,onValueChange:B,children:[e.jsx(C,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:98:13",className:"w-36 h-8 text-xs bg-slate-800 border-slate-700",children:e.jsx(y,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:98:87",placeholder:"所有命名空间"})}),e.jsxs(S,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:99:13",className:"bg-slate-800 border-slate-700",children:[e.jsx(P,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:100:15",value:"all",className:"text-xs",children:"所有命名空间"}),$.map(s=>e.jsx(P,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:101:36",value:s,className:"text-xs",children:s},s))]})]}),e.jsxs(W,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:104:11",variant:"outline",size:"sm",className:"h-8 border-slate-700 text-slate-300 text-xs",onClick:h,disabled:m,children:[e.jsx(K,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:105:13",className:`h-3 w-3 mr-1 ${m?"animate-spin":""}`}),"刷新"]})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:111:7",className:"grid grid-cols-3 gap-3",children:[e.jsx(i,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:112:9",className:"bg-slate-900 border-slate-800",children:e.jsxs(x,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:112:57",className:"p-3 text-center",children:[e.jsx("p",{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:113:11",className:"text-xs text-slate-500",children:"Pod 数"}),e.jsx("p",{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:113:58",className:"text-xl font-bold text-slate-200",children:p.length})]})}),e.jsx(i,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:115:9",className:"bg-slate-900 border-slate-800",children:e.jsxs(x,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:115:57",className:"p-3 text-center",children:[e.jsx("p",{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:116:11",className:"text-xs text-slate-500",children:"总 CPU"}),e.jsxs("p",{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:116:58",className:"text-xl font-bold text-blue-400",children:[I,"m"]})]})}),e.jsx(i,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:118:9",className:"bg-slate-900 border-slate-800",children:e.jsxs(x,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:118:57",className:"p-3 text-center",children:[e.jsx("p",{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:119:11",className:"text-xs text-slate-500",children:"总内存"}),e.jsxs("p",{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:119:56",className:"text-xl font-bold text-emerald-400",children:[R.toFixed(0),"Mi"]})]})})]}),e.jsx(i,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:123:7",className:"bg-slate-900 border-slate-800",children:e.jsx(x,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:124:9",className:"p-0",children:e.jsxs(z,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:125:11",children:[e.jsx(D,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:126:13",children:e.jsxs(u,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:126:26",className:"border-slate-800 hover:bg-transparent",children:[e.jsx(d,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:127:15",className:"text-slate-400",children:"Pod"}),e.jsx(d,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:128:15",className:"text-slate-400",children:"命名空间"}),e.jsx(d,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:129:15",className:"text-slate-400",children:"容器"}),e.jsxs(d,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:130:15",className:"text-slate-400",children:[e.jsx(F,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:130:53",className:"h-3 w-3 inline mr-1"}),"CPU"]}),e.jsxs(d,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:131:15",className:"text-slate-400",children:[e.jsx(q,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:131:53",className:"h-3 w-3 inline mr-1"}),"Memory"]})]})}),e.jsx(G,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:133:13",children:o.length===0?e.jsx(u,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:135:17",children:e.jsxs(n,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:135:27",colSpan:5,className:"text-center text-slate-500 py-8",children:["暂无数据",m?e.jsx("span",{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:135:109",className:"animate-spin inline-block ml-2",children:"⏳"}):""]})}):o.map((s,t)=>e.jsxs(u,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:137:17",className:"border-slate-800 hover:bg-slate-800/30",children:[e.jsx(n,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:138:19",className:"font-medium text-slate-200 text-sm",children:s.pod}),e.jsx(n,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:139:19",children:e.jsx(L,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:139:30",variant:"outline",className:"border-slate-700 text-slate-400 text-xs",children:s.namespace})}),e.jsx(n,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:140:19",className:"text-sm text-slate-400",children:s.container}),e.jsx(n,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:141:19",className:"text-sm text-blue-400",children:s.cpu}),e.jsx(n,{"code-path":"src/components/kubernetes/PodMetricsPage.tsx:142:19",className:"text-sm text-emerald-400",children:s.memory})]},`${s.pod}-${s.container}-${t}`))})]})})})]})}export{te as default}; diff --git a/backend/static/assets/RegionManager-Bj8EPK6w.js b/backend/static/assets/RegionManager-Bj8EPK6w.js deleted file mode 100644 index ca162c2..0000000 --- a/backend/static/assets/RegionManager-Bj8EPK6w.js +++ /dev/null @@ -1 +0,0 @@ -import{a as ee,r as t,j as e,S as se,I as u,B as j,L as O,M as ae,D as oe,b as te,c as ce,d as ne,e as re,f as le}from"./index-DfyorCky.js";import{L as i}from"./label-BK0h2apY.js";import{B as A}from"./badge-xNW8x0G1.js";import{C as V}from"./checkbox-CH0bpj6b.js";import{T as de,a as ie,b as H,c as r,d as pe,e as l}from"./table-5sHV4Akp.js";import{S as y,a as C,b as w,c as S,d as R}from"./select-D5qUzdAs.js";import{r as M}from"./server-CjDPBaTN.js";import{t as N}from"./index-a3ybMjbR.js";import{P as ge}from"./plus-CUG-9kpu.js";import{T as $}from"./trash-2-Dx32pOzT.js";import{C as xe}from"./circle-check-DWcXrx2k.js";import{C as he}from"./circle-x-DK79Dhg2.js";import{P as me}from"./pencil-BqUotcjf.js";import"./index-CWVNW_qu.js";const k={aws:"AWS",aliyun:"阿里云",tencent:"腾讯云",huawei:"华为云",azure:"Azure"},ue={aws:"text-orange-400",aliyun:"text-orange-400",tencent:"text-blue-400",huawei:"text-red-400",azure:"text-blue-400"};function Le(){const D=ee(),[T,L]=t.useState([]),[F,P]=t.useState(!0),[f,Q]=t.useState(""),[b,W]=t.useState("all"),[c,d]=t.useState([]),[X,p]=t.useState(!1),[g,I]=t.useState(null),[B,z]=t.useState(!1),[a,n]=t.useState({name:"",code:"",provider:"aliyun",location:"",status:"active",endpoint:""}),x=t.useCallback(async()=>{P(!0);try{const o=(await M.list())?.list||[];L(o)}catch{L([])}finally{P(!1)}},[]);t.useEffect(()=>{x()},[x]);const h=T.filter(s=>{const o=s.name?.toLowerCase().includes(f.toLowerCase())||s.code?.toLowerCase().includes(f.toLowerCase()),v=b==="all"||s.provider===b;return o&&v}),E=h.length>0&&h.every(s=>c.includes(s.id)),q=()=>{d(E?[]:h.map(s=>s.id))},G=s=>{d(o=>o.includes(s)?o.filter(v=>v!==s):[...o,s])},J=()=>{I(null),n({name:"",code:"",provider:"aliyun",location:"",status:"active",endpoint:""}),p(!0)},K=s=>{I(s),n({name:s.name||"",code:s.code||"",provider:s.provider||"aliyun",location:s.location||"",status:s.status||"active",endpoint:s.endpoint||""}),p(!0)},U=async()=>{if(!(!a.name.trim()||!a.code.trim())){z(!0);try{g?await M.update(g.id,a):await M.create(a),p(!1),x()}catch{}finally{z(!1)}}},Y=async s=>{const o=T.find(m=>m.id===s);if(await D({title:"删除区域",description:`确定删除「${o?.name||s}」吗?此操作不可撤销。`,confirmText:"删除",variant:"destructive"}))try{await M.delete(s),N.success("区域已删除"),d(m=>m.filter(_=>_!==s)),x()}catch(m){console.error("删除区域失败:",m),N.error("删除失败")}},Z=async()=>{if(!(c.length===0||!await D({title:"批量删除区域",description:`确定删除选中的 ${c.length} 个区域吗?此操作不可撤销。`,confirmText:"批量删除",variant:"destructive"})))try{await M.batchDelete(c),N.success(`已删除 ${c.length} 个区域`),d([]),x()}catch(o){console.error("批量删除失败:",o),N.error("批量删除失败")}};return e.jsxs("div",{"code-path":"src/components/cloud/RegionManager.tsx:185:5",className:"p-6 space-y-4",children:[e.jsxs("div",{"code-path":"src/components/cloud/RegionManager.tsx:187:7",className:"flex items-center justify-between gap-4",children:[e.jsxs("div",{"code-path":"src/components/cloud/RegionManager.tsx:188:9",className:"flex items-center gap-3 flex-1",children:[e.jsxs("div",{"code-path":"src/components/cloud/RegionManager.tsx:189:11",className:"relative w-72",children:[e.jsx(se,{"code-path":"src/components/cloud/RegionManager.tsx:190:13",className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-slate-500"}),e.jsx(u,{"code-path":"src/components/cloud/RegionManager.tsx:191:13",placeholder:"搜索区域名称或编码...",value:f,onChange:s=>Q(s.target.value),className:"pl-9 h-9 bg-slate-800/50 border-slate-700"})]}),e.jsxs(y,{"code-path":"src/components/cloud/RegionManager.tsx:198:11",value:b,onValueChange:W,children:[e.jsx(C,{"code-path":"src/components/cloud/RegionManager.tsx:199:13",className:"w-32 h-9 bg-slate-800/50 border-slate-700",children:e.jsx(w,{"code-path":"src/components/cloud/RegionManager.tsx:200:15"})}),e.jsxs(S,{"code-path":"src/components/cloud/RegionManager.tsx:202:13",children:[e.jsx(R,{"code-path":"src/components/cloud/RegionManager.tsx:203:15",value:"all",children:"全部云商"}),Object.entries(k).map(([s,o])=>e.jsx(R,{"code-path":"src/components/cloud/RegionManager.tsx:205:17",value:s,children:o},s))]})]})]}),e.jsxs(j,{"code-path":"src/components/cloud/RegionManager.tsx:210:9",onClick:J,className:"gap-2",children:[e.jsx(ge,{"code-path":"src/components/cloud/RegionManager.tsx:211:11",className:"h-4 w-4"}),"添加区域"]})]}),c.length>0&&e.jsxs("div",{"code-path":"src/components/cloud/RegionManager.tsx:218:9",className:"flex items-center justify-between gap-4 px-4 py-2.5 rounded-lg bg-slate-800/50 border border-slate-700",children:[e.jsxs("span",{"code-path":"src/components/cloud/RegionManager.tsx:219:11",className:"text-sm text-slate-300",children:["已选择 ",e.jsx("span",{"code-path":"src/components/cloud/RegionManager.tsx:220:17",className:"font-semibold text-slate-100",children:c.length})," 个区域"]}),e.jsxs("div",{"code-path":"src/components/cloud/RegionManager.tsx:222:11",className:"flex items-center gap-2",children:[e.jsx(j,{"code-path":"src/components/cloud/RegionManager.tsx:223:13",variant:"ghost",size:"sm",onClick:()=>d([]),className:"text-slate-400 hover:text-slate-200",children:"取消选择"}),e.jsxs(j,{"code-path":"src/components/cloud/RegionManager.tsx:226:13",variant:"outline",size:"sm",className:"border-red-500/30 text-red-400 hover:bg-red-500/10",onClick:Z,children:[e.jsx($,{"code-path":"src/components/cloud/RegionManager.tsx:232:15",className:"h-4 w-4 mr-1.5"}),"批量删除"]})]})]}),F?e.jsx("div",{"code-path":"src/components/cloud/RegionManager.tsx:241:9",className:"flex justify-center py-20",children:e.jsx(O,{"code-path":"src/components/cloud/RegionManager.tsx:242:11",className:"h-6 w-6 animate-spin text-slate-500"})}):h.length===0?e.jsxs("div",{"code-path":"src/components/cloud/RegionManager.tsx:245:9",className:"text-center py-20 text-slate-500",children:[e.jsx(ae,{"code-path":"src/components/cloud/RegionManager.tsx:246:11",className:"h-12 w-12 mx-auto mb-3 opacity-40"}),e.jsx("p",{"code-path":"src/components/cloud/RegionManager.tsx:247:11",children:"暂无区域数据"})]}):e.jsx("div",{"code-path":"src/components/cloud/RegionManager.tsx:250:9",className:"rounded-lg overflow-hidden",children:e.jsxs(de,{"code-path":"src/components/cloud/RegionManager.tsx:251:11",children:[e.jsx(ie,{"code-path":"src/components/cloud/RegionManager.tsx:252:13",children:e.jsxs(H,{"code-path":"src/components/cloud/RegionManager.tsx:253:15",className:"border-slate-800 hover:bg-transparent",children:[e.jsx(r,{"code-path":"src/components/cloud/RegionManager.tsx:254:17",className:"w-10",children:e.jsx(V,{"code-path":"src/components/cloud/RegionManager.tsx:255:19",checked:E,onCheckedChange:q,className:"border-slate-600"})}),e.jsx(r,{"code-path":"src/components/cloud/RegionManager.tsx:261:17",className:"text-slate-400",children:"区域名称"}),e.jsx(r,{"code-path":"src/components/cloud/RegionManager.tsx:262:17",className:"text-slate-400",children:"编码"}),e.jsx(r,{"code-path":"src/components/cloud/RegionManager.tsx:263:17",className:"text-slate-400",children:"云商"}),e.jsx(r,{"code-path":"src/components/cloud/RegionManager.tsx:264:17",className:"text-slate-400",children:"位置"}),e.jsx(r,{"code-path":"src/components/cloud/RegionManager.tsx:265:17",className:"text-slate-400",children:"接入端点"}),e.jsx(r,{"code-path":"src/components/cloud/RegionManager.tsx:266:17",className:"text-slate-400",children:"状态"}),e.jsx(r,{"code-path":"src/components/cloud/RegionManager.tsx:267:17",className:"text-slate-400 text-right",children:"操作"})]})}),e.jsx(pe,{"code-path":"src/components/cloud/RegionManager.tsx:270:13",children:h.map(s=>e.jsxs(H,{"code-path":"src/components/cloud/RegionManager.tsx:272:17",className:"border-slate-800/50 group",children:[e.jsx(l,{"code-path":"src/components/cloud/RegionManager.tsx:273:19",children:e.jsx(V,{"code-path":"src/components/cloud/RegionManager.tsx:274:21",checked:c.includes(s.id),onCheckedChange:()=>G(s.id),className:"border-slate-600"})}),e.jsx(l,{"code-path":"src/components/cloud/RegionManager.tsx:280:19",className:"font-medium text-slate-200",children:s.name}),e.jsx(l,{"code-path":"src/components/cloud/RegionManager.tsx:281:19",className:"font-mono text-sm text-slate-400",children:s.code}),e.jsx(l,{"code-path":"src/components/cloud/RegionManager.tsx:282:19",children:e.jsx("span",{"code-path":"src/components/cloud/RegionManager.tsx:283:21",className:ue[s.provider]||"text-slate-400",children:k[s.provider]||s.provider})}),e.jsx(l,{"code-path":"src/components/cloud/RegionManager.tsx:287:19",className:"text-slate-400",children:s.location||"-"}),e.jsx(l,{"code-path":"src/components/cloud/RegionManager.tsx:288:19",className:"max-w-[200px] truncate font-mono text-xs text-slate-400",title:s.endpoint,children:s.endpoint||"-"}),e.jsx(l,{"code-path":"src/components/cloud/RegionManager.tsx:289:19",children:s.status==="active"?e.jsxs(A,{"code-path":"src/components/cloud/RegionManager.tsx:291:23",className:"bg-emerald-500/20 text-emerald-400 gap-1",children:[e.jsx(xe,{"code-path":"src/components/cloud/RegionManager.tsx:292:25",className:"h-3 w-3"})," 启用"]}):e.jsxs(A,{"code-path":"src/components/cloud/RegionManager.tsx:295:23",className:"bg-slate-500/20 text-slate-400 gap-1",children:[e.jsx(he,{"code-path":"src/components/cloud/RegionManager.tsx:296:25",className:"h-3 w-3"})," 禁用"]})}),e.jsx(l,{"code-path":"src/components/cloud/RegionManager.tsx:300:19",children:e.jsxs("div",{"code-path":"src/components/cloud/RegionManager.tsx:301:21",className:"flex justify-end gap-1 opacity-0 group-hover:opacity-100 transition-opacity",children:[e.jsx("button",{"code-path":"src/components/cloud/RegionManager.tsx:302:23",onClick:()=>K(s),className:"p-1.5 rounded hover:bg-slate-700 text-slate-400 hover:text-slate-200",children:e.jsx(me,{"code-path":"src/components/cloud/RegionManager.tsx:303:25",className:"h-3.5 w-3.5"})}),e.jsx("button",{"code-path":"src/components/cloud/RegionManager.tsx:305:23",onClick:()=>Y(s.id),className:"p-1.5 rounded hover:bg-slate-700 text-slate-400 hover:text-red-400",children:e.jsx($,{"code-path":"src/components/cloud/RegionManager.tsx:306:25",className:"h-3.5 w-3.5"})})]})})]},s.id))})]})}),e.jsx(oe,{"code-path":"src/components/cloud/RegionManager.tsx:318:7",open:X,onOpenChange:p,children:e.jsxs(te,{"code-path":"src/components/cloud/RegionManager.tsx:319:9",children:[e.jsxs(ce,{"code-path":"src/components/cloud/RegionManager.tsx:320:11",children:[e.jsx(ne,{"code-path":"src/components/cloud/RegionManager.tsx:321:13",children:g?"编辑区域":"添加区域"}),e.jsx(re,{"code-path":"src/components/cloud/RegionManager.tsx:322:13",className:"sr-only",children:"描述"})]}),e.jsxs("div",{"code-path":"src/components/cloud/RegionManager.tsx:324:11",className:"space-y-4 py-2",children:[e.jsxs("div",{"code-path":"src/components/cloud/RegionManager.tsx:325:13",className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{"code-path":"src/components/cloud/RegionManager.tsx:326:15",className:"space-y-1.5",children:[e.jsx(i,{"code-path":"src/components/cloud/RegionManager.tsx:327:17",children:"区域名称 *"}),e.jsx(u,{"code-path":"src/components/cloud/RegionManager.tsx:328:17",value:a.name,onChange:s=>n({...a,name:s.target.value}),placeholder:"如:华北-北京",className:"bg-slate-800/50 border-slate-700"})]}),e.jsxs("div",{"code-path":"src/components/cloud/RegionManager.tsx:335:15",className:"space-y-1.5",children:[e.jsx(i,{"code-path":"src/components/cloud/RegionManager.tsx:336:17",children:"编码 *"}),e.jsx(u,{"code-path":"src/components/cloud/RegionManager.tsx:337:17",value:a.code,onChange:s=>n({...a,code:s.target.value}),placeholder:"如:cn-north-1",className:"bg-slate-800/50 border-slate-700 font-mono",disabled:!!g})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/RegionManager.tsx:346:13",className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{"code-path":"src/components/cloud/RegionManager.tsx:347:15",className:"space-y-1.5",children:[e.jsx(i,{"code-path":"src/components/cloud/RegionManager.tsx:348:17",children:"云商"}),e.jsxs(y,{"code-path":"src/components/cloud/RegionManager.tsx:349:17",value:a.provider,onValueChange:s=>n({...a,provider:s}),children:[e.jsx(C,{"code-path":"src/components/cloud/RegionManager.tsx:350:19",className:"bg-slate-800/50 border-slate-700",children:e.jsx(w,{"code-path":"src/components/cloud/RegionManager.tsx:351:21"})}),e.jsx(S,{"code-path":"src/components/cloud/RegionManager.tsx:353:19",children:Object.entries(k).map(([s,o])=>e.jsx(R,{"code-path":"src/components/cloud/RegionManager.tsx:355:23",value:s,children:o},s))})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/RegionManager.tsx:360:15",className:"space-y-1.5",children:[e.jsx(i,{"code-path":"src/components/cloud/RegionManager.tsx:361:17",children:"状态"}),e.jsxs(y,{"code-path":"src/components/cloud/RegionManager.tsx:362:17",value:a.status,onValueChange:s=>n({...a,status:s}),children:[e.jsx(C,{"code-path":"src/components/cloud/RegionManager.tsx:363:19",className:"bg-slate-800/50 border-slate-700",children:e.jsx(w,{"code-path":"src/components/cloud/RegionManager.tsx:364:21"})}),e.jsxs(S,{"code-path":"src/components/cloud/RegionManager.tsx:366:19",children:[e.jsx(R,{"code-path":"src/components/cloud/RegionManager.tsx:367:21",value:"active",children:"启用"}),e.jsx(R,{"code-path":"src/components/cloud/RegionManager.tsx:368:21",value:"inactive",children:"禁用"})]})]})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/RegionManager.tsx:373:13",className:"space-y-1.5",children:[e.jsx(i,{"code-path":"src/components/cloud/RegionManager.tsx:374:15",children:"地理位置"}),e.jsx(u,{"code-path":"src/components/cloud/RegionManager.tsx:375:15",value:a.location,onChange:s=>n({...a,location:s.target.value}),placeholder:"如:中国北京",className:"bg-slate-800/50 border-slate-700"})]}),e.jsxs("div",{"code-path":"src/components/cloud/RegionManager.tsx:382:13",className:"space-y-1.5",children:[e.jsx(i,{"code-path":"src/components/cloud/RegionManager.tsx:383:15",children:"接入端点"}),e.jsx(u,{"code-path":"src/components/cloud/RegionManager.tsx:384:15",value:a.endpoint,onChange:s=>n({...a,endpoint:s.target.value}),placeholder:"如:ecs.cn-north-1.aliyuncs.com",className:"bg-slate-800/50 border-slate-700 font-mono text-sm"})]})]}),e.jsxs(le,{"code-path":"src/components/cloud/RegionManager.tsx:392:11",children:[e.jsx(j,{"code-path":"src/components/cloud/RegionManager.tsx:393:13",variant:"ghost",onClick:()=>p(!1),children:"取消"}),e.jsxs(j,{"code-path":"src/components/cloud/RegionManager.tsx:394:13",onClick:U,disabled:B||!a.name.trim()||!a.code.trim(),children:[B&&e.jsx(O,{"code-path":"src/components/cloud/RegionManager.tsx:395:30",className:"h-4 w-4 mr-1 animate-spin"}),g?"保存":"创建"]})]})]})})]})}export{Le as RegionManager}; diff --git a/backend/static/assets/RegionManager-CsYUUvfT.js b/backend/static/assets/RegionManager-CsYUUvfT.js new file mode 100644 index 0000000..53f14be --- /dev/null +++ b/backend/static/assets/RegionManager-CsYUUvfT.js @@ -0,0 +1 @@ +import{f as ee,r as t,j as e,B as u,L as O,M as se,D as oe,a as ae,b as te,c as ce,d as ne,e as re}from"./index-Dmami9WE.js";import{I as j}from"./input-NsU9nXZF.js";import{L as i}from"./label-Ap_-SPYI.js";import{B as A}from"./badge-3UzCvU7L.js";import{C as V}from"./checkbox-DoAtRzQj.js";import{T as le,a as de,b as H,c as r,d as ie,e as l}from"./table-CG4mjNfb.js";import{S as y,a as C,b as w,c as S,d as R}from"./select-DUbxjT0z.js";import{r as M}from"./server-3HmnhxQB.js";import{t as N}from"./index-BuEnLCjT.js";import{S as pe}from"./search-Dd-PeBfg.js";import{P as ge}from"./plus-O65gX7Qz.js";import{T as $}from"./trash-2-DWVnIU6o.js";import{C as xe}from"./circle-check-CVbTTFQ0.js";import{C as he}from"./circle-x-BBQeW1R3.js";import{P as me}from"./pencil-BYahlvYT.js";import"./index-CtCQcvyh.js";import"./chevron-up-Cq4GPopa.js";const k={aws:"AWS",aliyun:"阿里云",tencent:"腾讯云",huawei:"华为云",azure:"Azure"},ue={aws:"text-orange-400",aliyun:"text-orange-400",tencent:"text-blue-400",huawei:"text-red-400",azure:"text-blue-400"};function Be(){const D=ee(),[T,L]=t.useState([]),[F,P]=t.useState(!0),[f,Q]=t.useState(""),[b,W]=t.useState("all"),[c,d]=t.useState([]),[X,p]=t.useState(!1),[g,I]=t.useState(null),[B,z]=t.useState(!1),[o,n]=t.useState({name:"",code:"",provider:"aliyun",location:"",status:"active",endpoint:""}),x=t.useCallback(async()=>{P(!0);try{const a=(await M.list())?.list||[];L(a)}catch{L([])}finally{P(!1)}},[]);t.useEffect(()=>{x()},[x]);const h=T.filter(s=>{const a=s.name?.toLowerCase().includes(f.toLowerCase())||s.code?.toLowerCase().includes(f.toLowerCase()),v=b==="all"||s.provider===b;return a&&v}),E=h.length>0&&h.every(s=>c.includes(s.id)),q=()=>{d(E?[]:h.map(s=>s.id))},G=s=>{d(a=>a.includes(s)?a.filter(v=>v!==s):[...a,s])},J=()=>{I(null),n({name:"",code:"",provider:"aliyun",location:"",status:"active",endpoint:""}),p(!0)},K=s=>{I(s),n({name:s.name||"",code:s.code||"",provider:s.provider||"aliyun",location:s.location||"",status:s.status||"active",endpoint:s.endpoint||""}),p(!0)},U=async()=>{if(!(!o.name.trim()||!o.code.trim())){z(!0);try{g?await M.update(g.id,o):await M.create(o),p(!1),x()}catch{}finally{z(!1)}}},Y=async s=>{const a=T.find(m=>m.id===s);if(await D({title:"删除区域",description:`确定删除「${a?.name||s}」吗?此操作不可撤销。`,confirmText:"删除",variant:"destructive"}))try{await M.delete(s),N.success("区域已删除"),d(m=>m.filter(_=>_!==s)),x()}catch(m){console.error("删除区域失败:",m),N.error("删除失败")}},Z=async()=>{if(!(c.length===0||!await D({title:"批量删除区域",description:`确定删除选中的 ${c.length} 个区域吗?此操作不可撤销。`,confirmText:"批量删除",variant:"destructive"})))try{await M.batchDelete(c),N.success(`已删除 ${c.length} 个区域`),d([]),x()}catch(a){console.error("批量删除失败:",a),N.error("批量删除失败")}};return e.jsxs("div",{"code-path":"src/components/cloud/RegionManager.tsx:185:5",className:"p-6 space-y-4",children:[e.jsxs("div",{"code-path":"src/components/cloud/RegionManager.tsx:187:7",className:"flex items-center justify-between gap-4",children:[e.jsxs("div",{"code-path":"src/components/cloud/RegionManager.tsx:188:9",className:"flex items-center gap-3 flex-1",children:[e.jsxs("div",{"code-path":"src/components/cloud/RegionManager.tsx:189:11",className:"relative w-72",children:[e.jsx(pe,{"code-path":"src/components/cloud/RegionManager.tsx:190:13",className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-slate-500"}),e.jsx(j,{"code-path":"src/components/cloud/RegionManager.tsx:191:13",placeholder:"搜索区域名称或编码...",value:f,onChange:s=>Q(s.target.value),className:"pl-9 h-9 bg-slate-800/50 border-slate-700"})]}),e.jsxs(y,{"code-path":"src/components/cloud/RegionManager.tsx:198:11",value:b,onValueChange:W,children:[e.jsx(C,{"code-path":"src/components/cloud/RegionManager.tsx:199:13",className:"w-32 h-9 bg-slate-800/50 border-slate-700",children:e.jsx(w,{"code-path":"src/components/cloud/RegionManager.tsx:200:15"})}),e.jsxs(S,{"code-path":"src/components/cloud/RegionManager.tsx:202:13",children:[e.jsx(R,{"code-path":"src/components/cloud/RegionManager.tsx:203:15",value:"all",children:"全部云商"}),Object.entries(k).map(([s,a])=>e.jsx(R,{"code-path":"src/components/cloud/RegionManager.tsx:205:17",value:s,children:a},s))]})]})]}),e.jsxs(u,{"code-path":"src/components/cloud/RegionManager.tsx:210:9",onClick:J,className:"gap-2",children:[e.jsx(ge,{"code-path":"src/components/cloud/RegionManager.tsx:211:11",className:"h-4 w-4"}),"添加区域"]})]}),c.length>0&&e.jsxs("div",{"code-path":"src/components/cloud/RegionManager.tsx:218:9",className:"flex items-center justify-between gap-4 px-4 py-2.5 rounded-lg bg-slate-800/50 border border-slate-700",children:[e.jsxs("span",{"code-path":"src/components/cloud/RegionManager.tsx:219:11",className:"text-sm text-slate-300",children:["已选择 ",e.jsx("span",{"code-path":"src/components/cloud/RegionManager.tsx:220:17",className:"font-semibold text-slate-100",children:c.length})," 个区域"]}),e.jsxs("div",{"code-path":"src/components/cloud/RegionManager.tsx:222:11",className:"flex items-center gap-2",children:[e.jsx(u,{"code-path":"src/components/cloud/RegionManager.tsx:223:13",variant:"ghost",size:"sm",onClick:()=>d([]),className:"text-slate-400 hover:text-slate-200",children:"取消选择"}),e.jsxs(u,{"code-path":"src/components/cloud/RegionManager.tsx:226:13",variant:"outline",size:"sm",className:"border-red-500/30 text-red-400 hover:bg-red-500/10",onClick:Z,children:[e.jsx($,{"code-path":"src/components/cloud/RegionManager.tsx:232:15",className:"h-4 w-4 mr-1.5"}),"批量删除"]})]})]}),F?e.jsx("div",{"code-path":"src/components/cloud/RegionManager.tsx:241:9",className:"flex justify-center py-20",children:e.jsx(O,{"code-path":"src/components/cloud/RegionManager.tsx:242:11",className:"h-6 w-6 animate-spin text-slate-500"})}):h.length===0?e.jsxs("div",{"code-path":"src/components/cloud/RegionManager.tsx:245:9",className:"text-center py-20 text-slate-500",children:[e.jsx(se,{"code-path":"src/components/cloud/RegionManager.tsx:246:11",className:"h-12 w-12 mx-auto mb-3 opacity-40"}),e.jsx("p",{"code-path":"src/components/cloud/RegionManager.tsx:247:11",children:"暂无区域数据"})]}):e.jsx("div",{"code-path":"src/components/cloud/RegionManager.tsx:250:9",className:"rounded-lg overflow-hidden",children:e.jsxs(le,{"code-path":"src/components/cloud/RegionManager.tsx:251:11",children:[e.jsx(de,{"code-path":"src/components/cloud/RegionManager.tsx:252:13",children:e.jsxs(H,{"code-path":"src/components/cloud/RegionManager.tsx:253:15",className:"border-slate-800 hover:bg-transparent",children:[e.jsx(r,{"code-path":"src/components/cloud/RegionManager.tsx:254:17",className:"w-10",children:e.jsx(V,{"code-path":"src/components/cloud/RegionManager.tsx:255:19",checked:E,onCheckedChange:q,className:"border-slate-600"})}),e.jsx(r,{"code-path":"src/components/cloud/RegionManager.tsx:261:17",className:"text-slate-400",children:"区域名称"}),e.jsx(r,{"code-path":"src/components/cloud/RegionManager.tsx:262:17",className:"text-slate-400",children:"编码"}),e.jsx(r,{"code-path":"src/components/cloud/RegionManager.tsx:263:17",className:"text-slate-400",children:"云商"}),e.jsx(r,{"code-path":"src/components/cloud/RegionManager.tsx:264:17",className:"text-slate-400",children:"位置"}),e.jsx(r,{"code-path":"src/components/cloud/RegionManager.tsx:265:17",className:"text-slate-400",children:"接入端点"}),e.jsx(r,{"code-path":"src/components/cloud/RegionManager.tsx:266:17",className:"text-slate-400",children:"状态"}),e.jsx(r,{"code-path":"src/components/cloud/RegionManager.tsx:267:17",className:"text-slate-400 text-right",children:"操作"})]})}),e.jsx(ie,{"code-path":"src/components/cloud/RegionManager.tsx:270:13",children:h.map(s=>e.jsxs(H,{"code-path":"src/components/cloud/RegionManager.tsx:272:17",className:"border-slate-800/50 group",children:[e.jsx(l,{"code-path":"src/components/cloud/RegionManager.tsx:273:19",children:e.jsx(V,{"code-path":"src/components/cloud/RegionManager.tsx:274:21",checked:c.includes(s.id),onCheckedChange:()=>G(s.id),className:"border-slate-600"})}),e.jsx(l,{"code-path":"src/components/cloud/RegionManager.tsx:280:19",className:"font-medium text-slate-200",children:s.name}),e.jsx(l,{"code-path":"src/components/cloud/RegionManager.tsx:281:19",className:"font-mono text-sm text-slate-400",children:s.code}),e.jsx(l,{"code-path":"src/components/cloud/RegionManager.tsx:282:19",children:e.jsx("span",{"code-path":"src/components/cloud/RegionManager.tsx:283:21",className:ue[s.provider]||"text-slate-400",children:k[s.provider]||s.provider})}),e.jsx(l,{"code-path":"src/components/cloud/RegionManager.tsx:287:19",className:"text-slate-400",children:s.location||"-"}),e.jsx(l,{"code-path":"src/components/cloud/RegionManager.tsx:288:19",className:"max-w-[200px] truncate font-mono text-xs text-slate-400",title:s.endpoint,children:s.endpoint||"-"}),e.jsx(l,{"code-path":"src/components/cloud/RegionManager.tsx:289:19",children:s.status==="active"?e.jsxs(A,{"code-path":"src/components/cloud/RegionManager.tsx:291:23",className:"bg-emerald-500/20 text-emerald-400 gap-1",children:[e.jsx(xe,{"code-path":"src/components/cloud/RegionManager.tsx:292:25",className:"h-3 w-3"})," 启用"]}):e.jsxs(A,{"code-path":"src/components/cloud/RegionManager.tsx:295:23",className:"bg-slate-500/20 text-slate-400 gap-1",children:[e.jsx(he,{"code-path":"src/components/cloud/RegionManager.tsx:296:25",className:"h-3 w-3"})," 禁用"]})}),e.jsx(l,{"code-path":"src/components/cloud/RegionManager.tsx:300:19",children:e.jsxs("div",{"code-path":"src/components/cloud/RegionManager.tsx:301:21",className:"flex justify-end gap-1 opacity-0 group-hover:opacity-100 transition-opacity",children:[e.jsx("button",{"code-path":"src/components/cloud/RegionManager.tsx:302:23",onClick:()=>K(s),className:"p-1.5 rounded hover:bg-slate-700 text-slate-400 hover:text-slate-200",children:e.jsx(me,{"code-path":"src/components/cloud/RegionManager.tsx:303:25",className:"h-3.5 w-3.5"})}),e.jsx("button",{"code-path":"src/components/cloud/RegionManager.tsx:305:23",onClick:()=>Y(s.id),className:"p-1.5 rounded hover:bg-slate-700 text-slate-400 hover:text-red-400",children:e.jsx($,{"code-path":"src/components/cloud/RegionManager.tsx:306:25",className:"h-3.5 w-3.5"})})]})})]},s.id))})]})}),e.jsx(oe,{"code-path":"src/components/cloud/RegionManager.tsx:318:7",open:X,onOpenChange:p,children:e.jsxs(ae,{"code-path":"src/components/cloud/RegionManager.tsx:319:9",children:[e.jsxs(te,{"code-path":"src/components/cloud/RegionManager.tsx:320:11",children:[e.jsx(ce,{"code-path":"src/components/cloud/RegionManager.tsx:321:13",children:g?"编辑区域":"添加区域"}),e.jsx(ne,{"code-path":"src/components/cloud/RegionManager.tsx:322:13",className:"sr-only",children:"描述"})]}),e.jsxs("div",{"code-path":"src/components/cloud/RegionManager.tsx:324:11",className:"space-y-4 py-2",children:[e.jsxs("div",{"code-path":"src/components/cloud/RegionManager.tsx:325:13",className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{"code-path":"src/components/cloud/RegionManager.tsx:326:15",className:"space-y-1.5",children:[e.jsx(i,{"code-path":"src/components/cloud/RegionManager.tsx:327:17",children:"区域名称 *"}),e.jsx(j,{"code-path":"src/components/cloud/RegionManager.tsx:328:17",value:o.name,onChange:s=>n({...o,name:s.target.value}),placeholder:"如:华北-北京",className:"bg-slate-800/50 border-slate-700"})]}),e.jsxs("div",{"code-path":"src/components/cloud/RegionManager.tsx:335:15",className:"space-y-1.5",children:[e.jsx(i,{"code-path":"src/components/cloud/RegionManager.tsx:336:17",children:"编码 *"}),e.jsx(j,{"code-path":"src/components/cloud/RegionManager.tsx:337:17",value:o.code,onChange:s=>n({...o,code:s.target.value}),placeholder:"如:cn-north-1",className:"bg-slate-800/50 border-slate-700 font-mono",disabled:!!g})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/RegionManager.tsx:346:13",className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{"code-path":"src/components/cloud/RegionManager.tsx:347:15",className:"space-y-1.5",children:[e.jsx(i,{"code-path":"src/components/cloud/RegionManager.tsx:348:17",children:"云商"}),e.jsxs(y,{"code-path":"src/components/cloud/RegionManager.tsx:349:17",value:o.provider,onValueChange:s=>n({...o,provider:s}),children:[e.jsx(C,{"code-path":"src/components/cloud/RegionManager.tsx:350:19",className:"bg-slate-800/50 border-slate-700",children:e.jsx(w,{"code-path":"src/components/cloud/RegionManager.tsx:351:21"})}),e.jsx(S,{"code-path":"src/components/cloud/RegionManager.tsx:353:19",children:Object.entries(k).map(([s,a])=>e.jsx(R,{"code-path":"src/components/cloud/RegionManager.tsx:355:23",value:s,children:a},s))})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/RegionManager.tsx:360:15",className:"space-y-1.5",children:[e.jsx(i,{"code-path":"src/components/cloud/RegionManager.tsx:361:17",children:"状态"}),e.jsxs(y,{"code-path":"src/components/cloud/RegionManager.tsx:362:17",value:o.status,onValueChange:s=>n({...o,status:s}),children:[e.jsx(C,{"code-path":"src/components/cloud/RegionManager.tsx:363:19",className:"bg-slate-800/50 border-slate-700",children:e.jsx(w,{"code-path":"src/components/cloud/RegionManager.tsx:364:21"})}),e.jsxs(S,{"code-path":"src/components/cloud/RegionManager.tsx:366:19",children:[e.jsx(R,{"code-path":"src/components/cloud/RegionManager.tsx:367:21",value:"active",children:"启用"}),e.jsx(R,{"code-path":"src/components/cloud/RegionManager.tsx:368:21",value:"inactive",children:"禁用"})]})]})]})]}),e.jsxs("div",{"code-path":"src/components/cloud/RegionManager.tsx:373:13",className:"space-y-1.5",children:[e.jsx(i,{"code-path":"src/components/cloud/RegionManager.tsx:374:15",children:"地理位置"}),e.jsx(j,{"code-path":"src/components/cloud/RegionManager.tsx:375:15",value:o.location,onChange:s=>n({...o,location:s.target.value}),placeholder:"如:中国北京",className:"bg-slate-800/50 border-slate-700"})]}),e.jsxs("div",{"code-path":"src/components/cloud/RegionManager.tsx:382:13",className:"space-y-1.5",children:[e.jsx(i,{"code-path":"src/components/cloud/RegionManager.tsx:383:15",children:"接入端点"}),e.jsx(j,{"code-path":"src/components/cloud/RegionManager.tsx:384:15",value:o.endpoint,onChange:s=>n({...o,endpoint:s.target.value}),placeholder:"如:ecs.cn-north-1.aliyuncs.com",className:"bg-slate-800/50 border-slate-700 font-mono text-sm"})]})]}),e.jsxs(re,{"code-path":"src/components/cloud/RegionManager.tsx:392:11",children:[e.jsx(u,{"code-path":"src/components/cloud/RegionManager.tsx:393:13",variant:"ghost",onClick:()=>p(!1),children:"取消"}),e.jsxs(u,{"code-path":"src/components/cloud/RegionManager.tsx:394:13",onClick:U,disabled:B||!o.name.trim()||!o.code.trim(),children:[B&&e.jsx(O,{"code-path":"src/components/cloud/RegionManager.tsx:395:30",className:"h-4 w-4 mr-1 animate-spin"}),g?"保存":"创建"]})]})]})})]})}export{Be as RegionManager}; diff --git a/backend/static/assets/ScriptManager-BFWlhlzw.js b/backend/static/assets/ScriptManager-BzFK-CZd.js similarity index 91% rename from backend/static/assets/ScriptManager-BFWlhlzw.js rename to backend/static/assets/ScriptManager-BzFK-CZd.js index a3600bd..62988c4 100644 --- a/backend/static/assets/ScriptManager-BFWlhlzw.js +++ b/backend/static/assets/ScriptManager-BzFK-CZd.js @@ -1,4 +1,4 @@ -import{j as t,a3 as Z,L as $,x as Lt,D as P,b as B,c as O,d as A,e as I,I as D,f as V,B as p,F as tt,a2 as et,U as _t,R as ot,H as zt,a as $t,r as i,S as Pt}from"./index-DfyorCky.js";import{S as st,a as at,b as ct,c as nt,d as z}from"./select-D5qUzdAs.js";import{T as Bt,a as Ot,b as J,c as K}from"./tabs-CIh_yD4s.js";import{C as rt}from"./checkbox-CH0bpj6b.js";import{t as l}from"./index-a3ybMjbR.js";import{s as j,t as At}from"./automation-mtL167W_.js";import{B as N}from"./badge-xNW8x0G1.js";import{C as It}from"./circle-x-DK79Dhg2.js";import{L as b}from"./label-BK0h2apY.js";import{T as Vt}from"./textarea-NXY8u32k.js";import{S as it}from"./square-pen-BxUFAe0F.js";import{C as pt,b as Rt,c as Ht,d as qt,a as lt}from"./card-C55cvSHg.js";import{P as Qt}from"./play-cdPayOtJ.js";import{C as Ut}from"./copy-DXW4LnkN.js";import{T as mt}from"./trash-2-Dx32pOzT.js";import{P as Xt}from"./plus-CUG-9kpu.js";import"./index-CWVNW_qu.js";function Gt(o){return{id:o.id,name:o.name,code:o.code||"",description:o.description||"",type:o.type||"shell",content:o.content||"",timeout:o.timeout||300,version:o.version||1,run_count:o.run_count||0,created_at:o.created_at,updated_at:o.updated_at}}const w=[{value:"shell",label:"Shell",sample:`#!/bin/bash +import{j as t,P as Z,L as $,C as Lt,D as P,a as B,b as O,c as A,d as I,e as V,B as p,F as tt,a5 as et,O as _t,R as ot,E as zt,f as $t,r as i}from"./index-Dmami9WE.js";import{I as D}from"./input-NsU9nXZF.js";import{S as st,a as at,b as ct,c as nt,d as z}from"./select-DUbxjT0z.js";import{T as Pt,a as Bt,b as J,c as K}from"./tabs-lV44z_UR.js";import{C as rt}from"./checkbox-DoAtRzQj.js";import{t as l}from"./index-BuEnLCjT.js";import{s as j,t as Ot}from"./automation-WG-s4QEv.js";import{B as N}from"./badge-3UzCvU7L.js";import{C as At}from"./circle-x-BBQeW1R3.js";import{L as b}from"./label-Ap_-SPYI.js";import{T as It}from"./textarea-DHUZ6N85.js";import{S as it}from"./square-pen-B3dPIBrm.js";import{C as pt,b as Vt,c as Rt,d as qt,a as lt}from"./card-CIfC-8Rh.js";import{P as Ht}from"./play-0EwQQJX_.js";import{C as Qt}from"./copy-CE_T92Lk.js";import{T as mt}from"./trash-2-DWVnIU6o.js";import{S as Ut}from"./search-Dd-PeBfg.js";import{P as Xt}from"./plus-O65gX7Qz.js";import"./index-CtCQcvyh.js";import"./chevron-up-Cq4GPopa.js";function Gt(o){return{id:o.id,name:o.name,code:o.code||"",description:o.description||"",type:o.type||"shell",content:o.content||"",timeout:o.timeout||300,version:o.version||1,run_count:o.run_count||0,created_at:o.created_at,updated_at:o.updated_at}}const w=[{value:"shell",label:"Shell",sample:`#!/bin/bash # 系统巡检脚本 echo "===== 系统信息 =====" uname -a @@ -14,4 +14,4 @@ import platform, socket print("主机名:", socket.gethostname()) print("系统:", platform.platform()) print("Python:", platform.python_version()) -`}],W={shell:"border-green-500/30 text-green-500 bg-green-500/10",bash:"border-green-500/30 text-green-500 bg-green-500/10",python:"border-blue-500/30 text-blue-500 bg-blue-500/10",powershell:"border-cyan-500/30 text-cyan-500 bg-cyan-500/10",yaml:"border-purple-500/30 text-purple-500 bg-purple-500/10"},dt=o=>t.jsx(N,{"code-path":"src/components/automation/script-helpers.tsx:66:3",variant:"outline",className:W[o]||W.shell,children:(o||"shell").toUpperCase()}),Y=()=>`sc-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,6)}`;function xt(o){switch(o){case"pending":return t.jsxs(N,{"code-path":"src/components/automation/script-helpers.tsx:78:14",variant:"outline",className:"gap-1",children:[t.jsx(Lt,{"code-path":"src/components/automation/script-helpers.tsx:78:57",className:"w-3 h-3"}),"等待中"]});case"running":return t.jsxs(N,{"code-path":"src/components/automation/script-helpers.tsx:80:14",variant:"default",className:"bg-blue-500 gap-1",children:[t.jsx($,{"code-path":"src/components/automation/script-helpers.tsx:80:69",className:"w-3 h-3 animate-spin"}),"执行中"]});case"success":return t.jsxs(N,{"code-path":"src/components/automation/script-helpers.tsx:82:14",variant:"default",className:"bg-green-600 gap-1",children:[t.jsx(Z,{"code-path":"src/components/automation/script-helpers.tsx:82:70",className:"w-3 h-3"}),"成功"]});case"failed":return t.jsxs(N,{"code-path":"src/components/automation/script-helpers.tsx:84:14",variant:"destructive",className:"gap-1",children:[t.jsx(It,{"code-path":"src/components/automation/script-helpers.tsx:84:61",className:"w-3 h-3"}),"失败"]});default:return t.jsx(N,{"code-path":"src/components/automation/script-helpers.tsx:86:14",variant:"secondary",children:o||"未知"})}}const Jt=o=>{if(!o)return"-";const a=new Date(o);return Number.isNaN(a.getTime())?"-":a.toLocaleString("zh-CN",{hour12:!1})},Kt=({open:o,onOpenChange:a,editingId:s,editingCode:n,formData:m,setFormData:x,onTypeChange:f,onSave:C})=>t.jsx(P,{"code-path":"src/components/automation/ScriptFormDialog.tsx:38:5",open:o,onOpenChange:a,children:t.jsxs(B,{"code-path":"src/components/automation/ScriptFormDialog.tsx:39:7",className:"max-w-4xl max-h-[90vh]",children:[t.jsxs(O,{"code-path":"src/components/automation/ScriptFormDialog.tsx:40:9",children:[t.jsx(A,{"code-path":"src/components/automation/ScriptFormDialog.tsx:41:11",children:s!==null?"编辑脚本":"新建脚本"}),t.jsx(I,{"code-path":"src/components/automation/ScriptFormDialog.tsx:42:11",children:"编写运维脚本,支持 Shell / Python / PowerShell"})]}),t.jsxs("div",{"code-path":"src/components/automation/ScriptFormDialog.tsx:44:9",className:"space-y-4 overflow-y-auto max-h-[60vh] pr-1",children:[t.jsxs("div",{"code-path":"src/components/automation/ScriptFormDialog.tsx:45:11",className:"grid grid-cols-2 gap-4",children:[t.jsxs("div",{"code-path":"src/components/automation/ScriptFormDialog.tsx:46:13",children:[t.jsx(b,{"code-path":"src/components/automation/ScriptFormDialog.tsx:47:15",children:"名称"}),t.jsx(D,{"code-path":"src/components/automation/ScriptFormDialog.tsx:48:15",value:m.name,onChange:r=>x({...m,name:r.target.value}),placeholder:"如:系统巡检脚本"})]}),t.jsxs("div",{"code-path":"src/components/automation/ScriptFormDialog.tsx:54:13",children:[t.jsx(b,{"code-path":"src/components/automation/ScriptFormDialog.tsx:55:15",children:"类型"}),t.jsxs(st,{"code-path":"src/components/automation/ScriptFormDialog.tsx:56:15",value:m.type,onValueChange:f,children:[t.jsx(at,{"code-path":"src/components/automation/ScriptFormDialog.tsx:57:17",children:t.jsx(ct,{"code-path":"src/components/automation/ScriptFormDialog.tsx:57:32"})}),t.jsx(nt,{"code-path":"src/components/automation/ScriptFormDialog.tsx:58:17",children:w.map(r=>t.jsx(z,{"code-path":"src/components/automation/ScriptFormDialog.tsx:60:21",value:r.value,children:r.label},r.value))})]})]})]}),t.jsxs("div",{"code-path":"src/components/automation/ScriptFormDialog.tsx:66:11",children:[t.jsx(b,{"code-path":"src/components/automation/ScriptFormDialog.tsx:67:13",children:"描述"}),t.jsx(D,{"code-path":"src/components/automation/ScriptFormDialog.tsx:68:13",value:m.description,onChange:r=>x({...m,description:r.target.value}),placeholder:"脚本用途说明"})]}),t.jsxs("div",{"code-path":"src/components/automation/ScriptFormDialog.tsx:74:11",className:"grid grid-cols-2 gap-4",children:[t.jsxs("div",{"code-path":"src/components/automation/ScriptFormDialog.tsx:75:13",children:[t.jsx(b,{"code-path":"src/components/automation/ScriptFormDialog.tsx:76:15",children:"超时(秒)"}),t.jsx(D,{"code-path":"src/components/automation/ScriptFormDialog.tsx:77:15",type:"number",value:m.timeout,onChange:r=>x({...m,timeout:Number(r.target.value)}),placeholder:"300"})]}),s!==null&&t.jsxs("div",{"code-path":"src/components/automation/ScriptFormDialog.tsx:85:15",children:[t.jsx(b,{"code-path":"src/components/automation/ScriptFormDialog.tsx:86:17",children:"编码"}),t.jsx(D,{"code-path":"src/components/automation/ScriptFormDialog.tsx:87:17",value:n,disabled:!0,className:"font-mono text-xs"})]})]}),t.jsxs("div",{"code-path":"src/components/automation/ScriptFormDialog.tsx:91:11",children:[t.jsx(b,{"code-path":"src/components/automation/ScriptFormDialog.tsx:92:13",children:"脚本内容"}),t.jsx(Vt,{"code-path":"src/components/automation/ScriptFormDialog.tsx:93:13",value:m.content,onChange:r=>x({...m,content:r.target.value}),className:"min-h-[360px] font-mono text-sm",placeholder:"在此编写脚本内容..."})]})]}),t.jsxs(V,{"code-path":"src/components/automation/ScriptFormDialog.tsx:101:9",children:[t.jsx(p,{"code-path":"src/components/automation/ScriptFormDialog.tsx:102:11",variant:"outline",onClick:()=>a(!1),children:"取消"}),t.jsxs(p,{"code-path":"src/components/automation/ScriptFormDialog.tsx:103:11",onClick:C,children:[t.jsx(Z,{"code-path":"src/components/automation/ScriptFormDialog.tsx:104:13",className:"w-4 h-4 mr-2"}),s!==null?"保存":"创建"]})]})]})}),Wt=({open:o,onOpenChange:a,script:s,onEdit:n})=>t.jsx(P,{"code-path":"src/components/automation/ScriptDetailDialog.tsx:20:5",open:o,onOpenChange:a,children:t.jsxs(B,{"code-path":"src/components/automation/ScriptDetailDialog.tsx:21:7",className:"max-w-4xl max-h-[90vh]",children:[t.jsxs(O,{"code-path":"src/components/automation/ScriptDetailDialog.tsx:22:9",children:[t.jsxs(A,{"code-path":"src/components/automation/ScriptDetailDialog.tsx:23:11",className:"flex items-center gap-2",children:[t.jsx(tt,{"code-path":"src/components/automation/ScriptDetailDialog.tsx:24:13",className:"w-5 h-5 text-purple-500"}),s?.name,s&&dt(s.type)]}),t.jsx(I,{"code-path":"src/components/automation/ScriptDetailDialog.tsx:28:11",children:s?.description})]}),t.jsx(et,{"code-path":"src/components/automation/ScriptDetailDialog.tsx:30:9",className:"h-[500px] w-full rounded-md border bg-black",children:t.jsx("pre",{"code-path":"src/components/automation/ScriptDetailDialog.tsx:31:11",className:"p-4 font-mono text-sm text-green-400 whitespace-pre-wrap",children:s?.content||"(空)"})}),t.jsxs(V,{"code-path":"src/components/automation/ScriptDetailDialog.tsx:35:9",children:[t.jsx(p,{"code-path":"src/components/automation/ScriptDetailDialog.tsx:36:11",variant:"outline",onClick:()=>a(!1),children:"关闭"}),s&&t.jsxs(p,{"code-path":"src/components/automation/ScriptDetailDialog.tsx:38:13",onClick:()=>n(s),children:[t.jsx(it,{"code-path":"src/components/automation/ScriptDetailDialog.tsx:39:15",className:"w-4 h-4 mr-2"}),"编辑"]})]})]})}),Yt=({open:o,onOpenChange:a,exec:s})=>t.jsx(P,{"code-path":"src/components/automation/ScriptLogsDialog.tsx:18:5",open:o,onOpenChange:a,children:t.jsxs(B,{"code-path":"src/components/automation/ScriptLogsDialog.tsx:19:7",className:"max-w-4xl max-h-[90vh]",children:[t.jsxs(O,{"code-path":"src/components/automation/ScriptLogsDialog.tsx:20:9",children:[t.jsx(A,{"code-path":"src/components/automation/ScriptLogsDialog.tsx:21:11",children:"执行日志"}),t.jsxs(I,{"code-path":"src/components/automation/ScriptLogsDialog.tsx:22:11",children:[s?.task_name," · ",xt(s?.status||"")]})]}),t.jsx(et,{"code-path":"src/components/automation/ScriptLogsDialog.tsx:26:9",className:"h-[480px] w-full rounded-md border bg-black",children:t.jsx("pre",{"code-path":"src/components/automation/ScriptLogsDialog.tsx:27:11",className:"p-4 font-mono text-sm text-green-400 whitespace-pre-wrap",children:s?.output||"暂无日志输出..."})}),t.jsx(V,{"code-path":"src/components/automation/ScriptLogsDialog.tsx:31:9",children:t.jsx(p,{"code-path":"src/components/automation/ScriptLogsDialog.tsx:32:11",variant:"outline",onClick:()=>a(!1),children:"关闭"})})]})});function Zt({script:o,selected:a,executing:s,onToggleSelect:n,onView:m,onExecute:x,onEdit:f,onClone:C,onDelete:r}){return t.jsxs(pt,{"code-path":"src/components/automation/ScriptCard.tsx:26:5",className:"hover:shadow-md transition-shadow",children:[t.jsxs(Rt,{"code-path":"src/components/automation/ScriptCard.tsx:27:7",className:"pb-3",children:[t.jsxs("div",{"code-path":"src/components/automation/ScriptCard.tsx:28:9",className:"flex items-start justify-between gap-2",children:[t.jsxs("div",{"code-path":"src/components/automation/ScriptCard.tsx:29:11",className:"flex items-center gap-2 min-w-0",children:[t.jsx(rt,{"code-path":"src/components/automation/ScriptCard.tsx:30:13",checked:a,onCheckedChange:n,className:"border-[var(--dg-border)]"}),t.jsx(tt,{"code-path":"src/components/automation/ScriptCard.tsx:35:13",className:"w-5 h-5 text-purple-500 shrink-0"}),t.jsx(Ht,{"code-path":"src/components/automation/ScriptCard.tsx:36:13",className:"text-base truncate",children:o.name})]}),dt(o.type)]}),t.jsx(qt,{"code-path":"src/components/automation/ScriptCard.tsx:40:9",className:"line-clamp-2",children:o.description||"暂无描述"})]}),t.jsxs(lt,{"code-path":"src/components/automation/ScriptCard.tsx:42:7",className:"pt-0",children:[t.jsx("div",{"code-path":"src/components/automation/ScriptCard.tsx:43:9",className:"bg-muted/40 rounded-md p-2 mb-3 font-mono text-xs text-muted-foreground overflow-hidden",children:t.jsx("pre",{"code-path":"src/components/automation/ScriptCard.tsx:44:11",className:"whitespace-pre-wrap line-clamp-3",children:o.content})}),t.jsxs("div",{"code-path":"src/components/automation/ScriptCard.tsx:46:9",className:"flex items-center justify-between text-xs text-muted-foreground mb-3",children:[t.jsxs("span",{"code-path":"src/components/automation/ScriptCard.tsx:47:11",children:["执行 ",o.run_count," 次 · v",o.version]}),t.jsxs("span",{"code-path":"src/components/automation/ScriptCard.tsx:48:11",children:["超时 ",o.timeout,"s"]})]}),t.jsxs("div",{"code-path":"src/components/automation/ScriptCard.tsx:50:9",className:"flex items-center gap-1",children:[t.jsx(p,{"code-path":"src/components/automation/ScriptCard.tsx:51:11",variant:"ghost",size:"sm",title:"查看内容",onClick:m,children:t.jsx(_t,{"code-path":"src/components/automation/ScriptCard.tsx:52:13",className:"w-4 h-4"})}),t.jsx(p,{"code-path":"src/components/automation/ScriptCard.tsx:54:11",variant:"ghost",size:"sm",title:"执行",disabled:s,onClick:x,children:s?t.jsx($,{"code-path":"src/components/automation/ScriptCard.tsx:56:17",className:"w-4 h-4 animate-spin text-blue-600"}):t.jsx(Qt,{"code-path":"src/components/automation/ScriptCard.tsx:57:17",className:"w-4 h-4 text-green-600"})}),t.jsx(p,{"code-path":"src/components/automation/ScriptCard.tsx:59:11",variant:"ghost",size:"sm",title:"编辑",onClick:f,children:t.jsx(it,{"code-path":"src/components/automation/ScriptCard.tsx:60:13",className:"w-4 h-4"})}),t.jsx(p,{"code-path":"src/components/automation/ScriptCard.tsx:62:11",variant:"ghost",size:"sm",title:"复制",onClick:C,children:t.jsx(Ut,{"code-path":"src/components/automation/ScriptCard.tsx:63:13",className:"w-4 h-4"})}),t.jsx(p,{"code-path":"src/components/automation/ScriptCard.tsx:65:11",variant:"ghost",size:"sm",title:"删除",onClick:r,children:t.jsx(mt,{"code-path":"src/components/automation/ScriptCard.tsx:66:13",className:"w-4 h-4 text-red-600"})})]})]})]})}function te({executions:o,onRefresh:a,onViewLogs:s}){return t.jsxs("div",{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:16:5",className:"space-y-4",children:[t.jsx("div",{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:17:7",className:"flex justify-end",children:t.jsxs(p,{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:18:9",variant:"outline",onClick:a,children:[t.jsx(ot,{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:19:11",className:"w-4 h-4 mr-2"}),"刷新"]})}),t.jsx(pt,{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:23:7",children:t.jsx(lt,{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:24:9",className:"p-0",children:t.jsx("div",{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:25:11",className:"overflow-x-auto",children:t.jsxs("table",{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:26:13",className:"w-full",children:[t.jsx("thead",{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:27:15",className:"bg-muted/50",children:t.jsxs("tr",{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:28:17",children:[t.jsx("th",{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:29:19",className:"px-4 py-3 text-left text-sm font-medium",children:"#"}),t.jsx("th",{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:30:19",className:"px-4 py-3 text-left text-sm font-medium",children:"脚本"}),t.jsx("th",{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:31:19",className:"px-4 py-3 text-left text-sm font-medium",children:"状态"}),t.jsx("th",{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:32:19",className:"px-4 py-3 text-left text-sm font-medium",children:"开始时间"}),t.jsx("th",{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:33:19",className:"px-4 py-3 text-left text-sm font-medium",children:"耗时"}),t.jsx("th",{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:34:19",className:"px-4 py-3 text-left text-sm font-medium",children:"操作"})]})}),t.jsx("tbody",{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:37:15",className:"divide-y",children:o.length===0?t.jsx("tr",{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:39:19",children:t.jsx("td",{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:40:21",colSpan:6,className:"px-4 py-8 text-center text-muted-foreground",children:"暂无执行记录"})}):o.map(n=>t.jsxs("tr",{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:46:21",className:"hover:bg-muted/50",children:[t.jsx("td",{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:47:23",className:"px-4 py-3 text-sm text-muted-foreground",children:n.id}),t.jsx("td",{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:48:23",className:"px-4 py-3 text-sm",children:n.task_name}),t.jsx("td",{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:49:23",className:"px-4 py-3",children:xt(n.status)}),t.jsx("td",{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:50:23",className:"px-4 py-3 text-sm text-muted-foreground",children:Jt(n.started_at)}),t.jsx("td",{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:51:23",className:"px-4 py-3 text-sm",children:n.duration?`${(n.duration/1e3).toFixed(1)}s`:"-"}),t.jsx("td",{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:54:23",className:"px-4 py-3",children:t.jsx(p,{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:55:25",variant:"ghost",size:"sm",title:"查看日志",onClick:()=>s(n),children:t.jsx(zt,{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:56:27",className:"w-4 h-4"})})})]},n.id))})]})})})})]})}function je(){const o=$t(),[a,s]=i.useState([]),[n,m]=i.useState([]),[x,f]=i.useState(!1),[C,r]=i.useState(!1),[R,ht]=i.useState(""),[k,ut]=i.useState("all"),[gt,St]=i.useState("scripts"),[h,T]=i.useState([]),[jt,E]=i.useState(!1),[ft,L]=i.useState(!1),[vt,H]=i.useState(!1),[y,q]=i.useState(null),[Q,U]=i.useState(null),[bt,Nt]=i.useState(null),[u,M]=i.useState({name:"",description:"",content:"",type:"shell",timeout:300}),S=async()=>{f(!0);try{const c=(await j.getScripts({page_size:100}))?.list||[];s(c.map(Gt))}catch{l.error("获取脚本列表失败")}finally{f(!1)}},F=async()=>{try{const c=(await At.getExecutions({task_type:"script",page_size:50}))?.list||[];m(c)}catch{}};i.useEffect(()=>{S(),F()},[]);const Ct=()=>{q(null),M({name:"",description:"",content:w[0].sample,type:"shell",timeout:300}),E(!0)},X=e=>{q(e.id),U(e),M({name:e.name,description:e.description,content:e.content,type:e.type,timeout:e.timeout}),E(!0),L(!1)},yt=e=>{M(c=>{const g=w.some(_=>_.sample===c.content)||c.content==="",d=w.find(_=>_.value===e);return{...c,type:e,content:y===null&&g&&d?d.sample:c.content}})},Dt=async()=>{if(!u.name.trim()||!u.content.trim()){l.error("请填写名称和脚本内容");return}const e={name:u.name.trim(),code:Y(),description:u.description,type:u.type,content:u.content,timeout:Number(u.timeout)||300};try{y!==null?(await j.updateScript(y,e),l.success("脚本更新成功")):(await j.createScript(e),l.success("脚本创建成功")),E(!1),S()}catch{l.error(y!==null?"更新失败":"创建失败")}},wt=async e=>{try{await j.createScript({name:`${e.name} (副本)`,code:Y(),description:e.description,type:e.type,content:e.content,timeout:e.timeout}),l.success("复制成功"),S()}catch{l.error("复制失败")}},Tt=async e=>{if(await o({title:"删除脚本",description:`确定删除「${e.name}」吗?此操作不可恢复。`,confirmText:"删除",variant:"destructive"}))try{await j.deleteScript(e.id),l.success("删除成功"),S()}catch{l.error("删除失败")}},Et=async e=>{if(await o({title:"执行脚本",description:`将在 AIOps 主机上本地执行「${e.name}」(${e.type})。`,confirmText:"开始执行"})){r(!0);try{const g=await j.executeScript(e.id),d=g?.data??g;d?.status==="success"?l.success(`执行成功,耗时 ${d.duration??0}ms`):l.error(`执行失败,耗时 ${d?.duration??0}ms`,{description:(d?.output||"").slice(0,120)}),S(),F()}catch{l.error("执行请求失败")}finally{r(!1)}}},v=a.filter(e=>{const c=R.toLowerCase(),g=e.name.toLowerCase().includes(c)||e.description.toLowerCase().includes(c)||e.code.toLowerCase().includes(c),d=k==="all"||e.type===k;return g&&d}),Mt=e=>{T(c=>c.includes(e)?c.filter(g=>g!==e):[...c,e])},G=v.length>0&&h.length===v.length,Ft=()=>{T(G?[]:v.map(e=>e.id))},kt=async()=>{if(!(h.length===0||!await o({title:"批量删除脚本",description:`确定删除选中的 ${h.length} 个脚本吗?此操作不可恢复。`,confirmText:"批量删除",variant:"destructive"})))try{await j.batchDelete(h),l.success(`已删除 ${h.length} 个脚本`),T([]),S()}catch{l.error("批量删除失败")}};return t.jsxs("div",{"code-path":"src/components/automation/ScriptManager.tsx:252:5",className:"space-y-6",children:[t.jsxs(Bt,{"code-path":"src/components/automation/ScriptManager.tsx:254:7",value:gt,onValueChange:e=>{St(e),e==="jobs"&&F()},children:[t.jsxs(Ot,{"code-path":"src/components/automation/ScriptManager.tsx:255:9",className:"grid w-full grid-cols-2 lg:w-[360px]",children:[t.jsx(J,{"code-path":"src/components/automation/ScriptManager.tsx:256:11",value:"scripts",children:"脚本库"}),t.jsx(J,{"code-path":"src/components/automation/ScriptManager.tsx:257:11",value:"jobs",children:"执行记录"})]}),t.jsxs(K,{"code-path":"src/components/automation/ScriptManager.tsx:261:9",value:"scripts",className:"space-y-4",children:[t.jsxs("div",{"code-path":"src/components/automation/ScriptManager.tsx:262:11",className:"flex flex-wrap items-center justify-between gap-4",children:[t.jsxs("div",{"code-path":"src/components/automation/ScriptManager.tsx:263:13",className:"flex items-center gap-2 flex-1 min-w-[300px]",children:[t.jsxs("div",{"code-path":"src/components/automation/ScriptManager.tsx:264:15",className:"relative flex-1",children:[t.jsx(Pt,{"code-path":"src/components/automation/ScriptManager.tsx:265:17",className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-muted-foreground"}),t.jsx(D,{"code-path":"src/components/automation/ScriptManager.tsx:266:17",placeholder:"搜索名称、编码、描述...",value:R,onChange:e=>ht(e.target.value),className:"pl-10"})]}),t.jsxs(st,{"code-path":"src/components/automation/ScriptManager.tsx:273:15",value:k,onValueChange:ut,children:[t.jsx(at,{"code-path":"src/components/automation/ScriptManager.tsx:274:17",className:"w-[140px]",children:t.jsx(ct,{"code-path":"src/components/automation/ScriptManager.tsx:275:19",placeholder:"类型"})}),t.jsxs(nt,{"code-path":"src/components/automation/ScriptManager.tsx:277:17",children:[t.jsx(z,{"code-path":"src/components/automation/ScriptManager.tsx:278:19",value:"all",children:"全部类型"}),w.map(e=>t.jsx(z,{"code-path":"src/components/automation/ScriptManager.tsx:280:21",value:e.value,children:e.label},e.value))]})]})]}),t.jsxs("div",{"code-path":"src/components/automation/ScriptManager.tsx:285:13",className:"flex items-center gap-2",children:[t.jsxs(p,{"code-path":"src/components/automation/ScriptManager.tsx:286:15",variant:"outline",onClick:S,children:[t.jsx(ot,{"code-path":"src/components/automation/ScriptManager.tsx:287:17",className:"w-4 h-4 mr-2"}),"刷新"]}),t.jsxs(p,{"code-path":"src/components/automation/ScriptManager.tsx:290:15",onClick:Ct,children:[t.jsx(Xt,{"code-path":"src/components/automation/ScriptManager.tsx:291:17",className:"w-4 h-4 mr-2"}),"新建脚本"]})]})]}),h.length>0&&t.jsxs("div",{"code-path":"src/components/automation/ScriptManager.tsx:299:13",className:"flex items-center justify-between gap-4 px-4 py-2.5 rounded-lg border border-[var(--dg-border)] bg-[var(--dg-bg-secondary)]",children:[t.jsxs("div",{"code-path":"src/components/automation/ScriptManager.tsx:300:15",className:"flex items-center gap-3",children:[t.jsx(rt,{"code-path":"src/components/automation/ScriptManager.tsx:301:17",checked:G,onCheckedChange:Ft,className:"border-[var(--dg-border)]"}),t.jsxs("span",{"code-path":"src/components/automation/ScriptManager.tsx:306:17",className:"text-sm text-[var(--dg-text-secondary)]",children:["已选择 ",h.length," 项 / 共 ",v.length," 项"]})]}),t.jsxs("div",{"code-path":"src/components/automation/ScriptManager.tsx:310:15",className:"flex items-center gap-2",children:[t.jsx(p,{"code-path":"src/components/automation/ScriptManager.tsx:311:17",variant:"outline",size:"sm",onClick:()=>T([]),children:"取消选择"}),t.jsxs(p,{"code-path":"src/components/automation/ScriptManager.tsx:314:17",variant:"outline",size:"sm",className:"border-red-500/30 text-red-400 hover:bg-red-500/10",onClick:kt,children:[t.jsx(mt,{"code-path":"src/components/automation/ScriptManager.tsx:320:19",className:"w-4 h-4 mr-2"}),"批量删除"]})]})]}),t.jsx("div",{"code-path":"src/components/automation/ScriptManager.tsx:328:11",className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",children:x?t.jsxs("div",{"code-path":"src/components/automation/ScriptManager.tsx:330:15",className:"col-span-full text-center py-8 text-muted-foreground",children:[t.jsx($,{"code-path":"src/components/automation/ScriptManager.tsx:331:17",className:"w-5 h-5 animate-spin inline mr-2"}),"加载中..."]}):v.length===0?t.jsx("div",{"code-path":"src/components/automation/ScriptManager.tsx:335:15",className:"col-span-full text-center py-8 text-muted-foreground",children:a.length===0?"暂无脚本,点击「新建脚本」创建第一个":"未匹配到符合条件的脚本"}):v.map(e=>t.jsx(Zt,{"code-path":"src/components/automation/ScriptManager.tsx:340:17",script:e,selected:h.includes(e.id),executing:C,onToggleSelect:()=>Mt(e.id),onView:()=>{U(e),L(!0)},onExecute:()=>Et(e),onEdit:()=>X(e),onClone:()=>wt(e),onDelete:()=>Tt(e)},e.id))})]}),t.jsx(K,{"code-path":"src/components/automation/ScriptManager.tsx:358:9",value:"jobs",children:t.jsx(te,{"code-path":"src/components/automation/ScriptManager.tsx:359:11",executions:n,onRefresh:F,onViewLogs:e=>{Nt(e),H(!0)}})})]}),t.jsx(Kt,{"code-path":"src/components/automation/ScriptManager.tsx:368:7",open:jt,onOpenChange:E,editingId:y,editingCode:Q?.code||"",formData:u,setFormData:M,onTypeChange:yt,onSave:Dt}),t.jsx(Wt,{"code-path":"src/components/automation/ScriptManager.tsx:380:7",open:ft,onOpenChange:L,script:Q,onEdit:X}),t.jsx(Yt,{"code-path":"src/components/automation/ScriptManager.tsx:388:7",open:vt,onOpenChange:H,exec:bt})]})}export{je as ScriptManager}; +`}],W={shell:"border-green-500/30 text-green-500 bg-green-500/10",bash:"border-green-500/30 text-green-500 bg-green-500/10",python:"border-blue-500/30 text-blue-500 bg-blue-500/10",powershell:"border-cyan-500/30 text-cyan-500 bg-cyan-500/10",yaml:"border-purple-500/30 text-purple-500 bg-purple-500/10"},dt=o=>t.jsx(N,{"code-path":"src/components/automation/script-helpers.tsx:66:3",variant:"outline",className:W[o]||W.shell,children:(o||"shell").toUpperCase()}),Y=()=>`sc-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,6)}`;function xt(o){switch(o){case"pending":return t.jsxs(N,{"code-path":"src/components/automation/script-helpers.tsx:78:14",variant:"outline",className:"gap-1",children:[t.jsx(Lt,{"code-path":"src/components/automation/script-helpers.tsx:78:57",className:"w-3 h-3"}),"等待中"]});case"running":return t.jsxs(N,{"code-path":"src/components/automation/script-helpers.tsx:80:14",variant:"default",className:"bg-blue-500 gap-1",children:[t.jsx($,{"code-path":"src/components/automation/script-helpers.tsx:80:69",className:"w-3 h-3 animate-spin"}),"执行中"]});case"success":return t.jsxs(N,{"code-path":"src/components/automation/script-helpers.tsx:82:14",variant:"default",className:"bg-green-600 gap-1",children:[t.jsx(Z,{"code-path":"src/components/automation/script-helpers.tsx:82:70",className:"w-3 h-3"}),"成功"]});case"failed":return t.jsxs(N,{"code-path":"src/components/automation/script-helpers.tsx:84:14",variant:"destructive",className:"gap-1",children:[t.jsx(At,{"code-path":"src/components/automation/script-helpers.tsx:84:61",className:"w-3 h-3"}),"失败"]});default:return t.jsx(N,{"code-path":"src/components/automation/script-helpers.tsx:86:14",variant:"secondary",children:o||"未知"})}}const Jt=o=>{if(!o)return"-";const a=new Date(o);return Number.isNaN(a.getTime())?"-":a.toLocaleString("zh-CN",{hour12:!1})},Kt=({open:o,onOpenChange:a,editingId:s,editingCode:n,formData:m,setFormData:x,onTypeChange:f,onSave:C})=>t.jsx(P,{"code-path":"src/components/automation/ScriptFormDialog.tsx:38:5",open:o,onOpenChange:a,children:t.jsxs(B,{"code-path":"src/components/automation/ScriptFormDialog.tsx:39:7",className:"max-w-4xl max-h-[90vh]",children:[t.jsxs(O,{"code-path":"src/components/automation/ScriptFormDialog.tsx:40:9",children:[t.jsx(A,{"code-path":"src/components/automation/ScriptFormDialog.tsx:41:11",children:s!==null?"编辑脚本":"新建脚本"}),t.jsx(I,{"code-path":"src/components/automation/ScriptFormDialog.tsx:42:11",children:"编写运维脚本,支持 Shell / Python / PowerShell"})]}),t.jsxs("div",{"code-path":"src/components/automation/ScriptFormDialog.tsx:44:9",className:"space-y-4 overflow-y-auto max-h-[60vh] pr-1",children:[t.jsxs("div",{"code-path":"src/components/automation/ScriptFormDialog.tsx:45:11",className:"grid grid-cols-2 gap-4",children:[t.jsxs("div",{"code-path":"src/components/automation/ScriptFormDialog.tsx:46:13",children:[t.jsx(b,{"code-path":"src/components/automation/ScriptFormDialog.tsx:47:15",children:"名称"}),t.jsx(D,{"code-path":"src/components/automation/ScriptFormDialog.tsx:48:15",value:m.name,onChange:r=>x({...m,name:r.target.value}),placeholder:"如:系统巡检脚本"})]}),t.jsxs("div",{"code-path":"src/components/automation/ScriptFormDialog.tsx:54:13",children:[t.jsx(b,{"code-path":"src/components/automation/ScriptFormDialog.tsx:55:15",children:"类型"}),t.jsxs(st,{"code-path":"src/components/automation/ScriptFormDialog.tsx:56:15",value:m.type,onValueChange:f,children:[t.jsx(at,{"code-path":"src/components/automation/ScriptFormDialog.tsx:57:17",children:t.jsx(ct,{"code-path":"src/components/automation/ScriptFormDialog.tsx:57:32"})}),t.jsx(nt,{"code-path":"src/components/automation/ScriptFormDialog.tsx:58:17",children:w.map(r=>t.jsx(z,{"code-path":"src/components/automation/ScriptFormDialog.tsx:60:21",value:r.value,children:r.label},r.value))})]})]})]}),t.jsxs("div",{"code-path":"src/components/automation/ScriptFormDialog.tsx:66:11",children:[t.jsx(b,{"code-path":"src/components/automation/ScriptFormDialog.tsx:67:13",children:"描述"}),t.jsx(D,{"code-path":"src/components/automation/ScriptFormDialog.tsx:68:13",value:m.description,onChange:r=>x({...m,description:r.target.value}),placeholder:"脚本用途说明"})]}),t.jsxs("div",{"code-path":"src/components/automation/ScriptFormDialog.tsx:74:11",className:"grid grid-cols-2 gap-4",children:[t.jsxs("div",{"code-path":"src/components/automation/ScriptFormDialog.tsx:75:13",children:[t.jsx(b,{"code-path":"src/components/automation/ScriptFormDialog.tsx:76:15",children:"超时(秒)"}),t.jsx(D,{"code-path":"src/components/automation/ScriptFormDialog.tsx:77:15",type:"number",value:m.timeout,onChange:r=>x({...m,timeout:Number(r.target.value)}),placeholder:"300"})]}),s!==null&&t.jsxs("div",{"code-path":"src/components/automation/ScriptFormDialog.tsx:85:15",children:[t.jsx(b,{"code-path":"src/components/automation/ScriptFormDialog.tsx:86:17",children:"编码"}),t.jsx(D,{"code-path":"src/components/automation/ScriptFormDialog.tsx:87:17",value:n,disabled:!0,className:"font-mono text-xs"})]})]}),t.jsxs("div",{"code-path":"src/components/automation/ScriptFormDialog.tsx:91:11",children:[t.jsx(b,{"code-path":"src/components/automation/ScriptFormDialog.tsx:92:13",children:"脚本内容"}),t.jsx(It,{"code-path":"src/components/automation/ScriptFormDialog.tsx:93:13",value:m.content,onChange:r=>x({...m,content:r.target.value}),className:"min-h-[360px] font-mono text-sm",placeholder:"在此编写脚本内容..."})]})]}),t.jsxs(V,{"code-path":"src/components/automation/ScriptFormDialog.tsx:101:9",children:[t.jsx(p,{"code-path":"src/components/automation/ScriptFormDialog.tsx:102:11",variant:"outline",onClick:()=>a(!1),children:"取消"}),t.jsxs(p,{"code-path":"src/components/automation/ScriptFormDialog.tsx:103:11",onClick:C,children:[t.jsx(Z,{"code-path":"src/components/automation/ScriptFormDialog.tsx:104:13",className:"w-4 h-4 mr-2"}),s!==null?"保存":"创建"]})]})]})}),Wt=({open:o,onOpenChange:a,script:s,onEdit:n})=>t.jsx(P,{"code-path":"src/components/automation/ScriptDetailDialog.tsx:20:5",open:o,onOpenChange:a,children:t.jsxs(B,{"code-path":"src/components/automation/ScriptDetailDialog.tsx:21:7",className:"max-w-4xl max-h-[90vh]",children:[t.jsxs(O,{"code-path":"src/components/automation/ScriptDetailDialog.tsx:22:9",children:[t.jsxs(A,{"code-path":"src/components/automation/ScriptDetailDialog.tsx:23:11",className:"flex items-center gap-2",children:[t.jsx(tt,{"code-path":"src/components/automation/ScriptDetailDialog.tsx:24:13",className:"w-5 h-5 text-purple-500"}),s?.name,s&&dt(s.type)]}),t.jsx(I,{"code-path":"src/components/automation/ScriptDetailDialog.tsx:28:11",children:s?.description})]}),t.jsx(et,{"code-path":"src/components/automation/ScriptDetailDialog.tsx:30:9",className:"h-[500px] w-full rounded-md border bg-black",children:t.jsx("pre",{"code-path":"src/components/automation/ScriptDetailDialog.tsx:31:11",className:"p-4 font-mono text-sm text-green-400 whitespace-pre-wrap",children:s?.content||"(空)"})}),t.jsxs(V,{"code-path":"src/components/automation/ScriptDetailDialog.tsx:35:9",children:[t.jsx(p,{"code-path":"src/components/automation/ScriptDetailDialog.tsx:36:11",variant:"outline",onClick:()=>a(!1),children:"关闭"}),s&&t.jsxs(p,{"code-path":"src/components/automation/ScriptDetailDialog.tsx:38:13",onClick:()=>n(s),children:[t.jsx(it,{"code-path":"src/components/automation/ScriptDetailDialog.tsx:39:15",className:"w-4 h-4 mr-2"}),"编辑"]})]})]})}),Yt=({open:o,onOpenChange:a,exec:s})=>t.jsx(P,{"code-path":"src/components/automation/ScriptLogsDialog.tsx:18:5",open:o,onOpenChange:a,children:t.jsxs(B,{"code-path":"src/components/automation/ScriptLogsDialog.tsx:19:7",className:"max-w-4xl max-h-[90vh]",children:[t.jsxs(O,{"code-path":"src/components/automation/ScriptLogsDialog.tsx:20:9",children:[t.jsx(A,{"code-path":"src/components/automation/ScriptLogsDialog.tsx:21:11",children:"执行日志"}),t.jsxs(I,{"code-path":"src/components/automation/ScriptLogsDialog.tsx:22:11",children:[s?.task_name," · ",xt(s?.status||"")]})]}),t.jsx(et,{"code-path":"src/components/automation/ScriptLogsDialog.tsx:26:9",className:"h-[480px] w-full rounded-md border bg-black",children:t.jsx("pre",{"code-path":"src/components/automation/ScriptLogsDialog.tsx:27:11",className:"p-4 font-mono text-sm text-green-400 whitespace-pre-wrap",children:s?.output||"暂无日志输出..."})}),t.jsx(V,{"code-path":"src/components/automation/ScriptLogsDialog.tsx:31:9",children:t.jsx(p,{"code-path":"src/components/automation/ScriptLogsDialog.tsx:32:11",variant:"outline",onClick:()=>a(!1),children:"关闭"})})]})});function Zt({script:o,selected:a,executing:s,onToggleSelect:n,onView:m,onExecute:x,onEdit:f,onClone:C,onDelete:r}){return t.jsxs(pt,{"code-path":"src/components/automation/ScriptCard.tsx:26:5",className:"hover:shadow-md transition-shadow",children:[t.jsxs(Vt,{"code-path":"src/components/automation/ScriptCard.tsx:27:7",className:"pb-3",children:[t.jsxs("div",{"code-path":"src/components/automation/ScriptCard.tsx:28:9",className:"flex items-start justify-between gap-2",children:[t.jsxs("div",{"code-path":"src/components/automation/ScriptCard.tsx:29:11",className:"flex items-center gap-2 min-w-0",children:[t.jsx(rt,{"code-path":"src/components/automation/ScriptCard.tsx:30:13",checked:a,onCheckedChange:n,className:"border-[var(--dg-border)]"}),t.jsx(tt,{"code-path":"src/components/automation/ScriptCard.tsx:35:13",className:"w-5 h-5 text-purple-500 shrink-0"}),t.jsx(Rt,{"code-path":"src/components/automation/ScriptCard.tsx:36:13",className:"text-base truncate",children:o.name})]}),dt(o.type)]}),t.jsx(qt,{"code-path":"src/components/automation/ScriptCard.tsx:40:9",className:"line-clamp-2",children:o.description||"暂无描述"})]}),t.jsxs(lt,{"code-path":"src/components/automation/ScriptCard.tsx:42:7",className:"pt-0",children:[t.jsx("div",{"code-path":"src/components/automation/ScriptCard.tsx:43:9",className:"bg-muted/40 rounded-md p-2 mb-3 font-mono text-xs text-muted-foreground overflow-hidden",children:t.jsx("pre",{"code-path":"src/components/automation/ScriptCard.tsx:44:11",className:"whitespace-pre-wrap line-clamp-3",children:o.content})}),t.jsxs("div",{"code-path":"src/components/automation/ScriptCard.tsx:46:9",className:"flex items-center justify-between text-xs text-muted-foreground mb-3",children:[t.jsxs("span",{"code-path":"src/components/automation/ScriptCard.tsx:47:11",children:["执行 ",o.run_count," 次 · v",o.version]}),t.jsxs("span",{"code-path":"src/components/automation/ScriptCard.tsx:48:11",children:["超时 ",o.timeout,"s"]})]}),t.jsxs("div",{"code-path":"src/components/automation/ScriptCard.tsx:50:9",className:"flex items-center gap-1",children:[t.jsx(p,{"code-path":"src/components/automation/ScriptCard.tsx:51:11",variant:"ghost",size:"sm",title:"查看内容",onClick:m,children:t.jsx(_t,{"code-path":"src/components/automation/ScriptCard.tsx:52:13",className:"w-4 h-4"})}),t.jsx(p,{"code-path":"src/components/automation/ScriptCard.tsx:54:11",variant:"ghost",size:"sm",title:"执行",disabled:s,onClick:x,children:s?t.jsx($,{"code-path":"src/components/automation/ScriptCard.tsx:56:17",className:"w-4 h-4 animate-spin text-blue-600"}):t.jsx(Ht,{"code-path":"src/components/automation/ScriptCard.tsx:57:17",className:"w-4 h-4 text-green-600"})}),t.jsx(p,{"code-path":"src/components/automation/ScriptCard.tsx:59:11",variant:"ghost",size:"sm",title:"编辑",onClick:f,children:t.jsx(it,{"code-path":"src/components/automation/ScriptCard.tsx:60:13",className:"w-4 h-4"})}),t.jsx(p,{"code-path":"src/components/automation/ScriptCard.tsx:62:11",variant:"ghost",size:"sm",title:"复制",onClick:C,children:t.jsx(Qt,{"code-path":"src/components/automation/ScriptCard.tsx:63:13",className:"w-4 h-4"})}),t.jsx(p,{"code-path":"src/components/automation/ScriptCard.tsx:65:11",variant:"ghost",size:"sm",title:"删除",onClick:r,children:t.jsx(mt,{"code-path":"src/components/automation/ScriptCard.tsx:66:13",className:"w-4 h-4 text-red-600"})})]})]})]})}function te({executions:o,onRefresh:a,onViewLogs:s}){return t.jsxs("div",{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:16:5",className:"space-y-4",children:[t.jsx("div",{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:17:7",className:"flex justify-end",children:t.jsxs(p,{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:18:9",variant:"outline",onClick:a,children:[t.jsx(ot,{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:19:11",className:"w-4 h-4 mr-2"}),"刷新"]})}),t.jsx(pt,{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:23:7",children:t.jsx(lt,{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:24:9",className:"p-0",children:t.jsx("div",{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:25:11",className:"overflow-x-auto",children:t.jsxs("table",{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:26:13",className:"w-full",children:[t.jsx("thead",{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:27:15",className:"bg-muted/50",children:t.jsxs("tr",{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:28:17",children:[t.jsx("th",{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:29:19",className:"px-4 py-3 text-left text-sm font-medium",children:"#"}),t.jsx("th",{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:30:19",className:"px-4 py-3 text-left text-sm font-medium",children:"脚本"}),t.jsx("th",{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:31:19",className:"px-4 py-3 text-left text-sm font-medium",children:"状态"}),t.jsx("th",{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:32:19",className:"px-4 py-3 text-left text-sm font-medium",children:"开始时间"}),t.jsx("th",{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:33:19",className:"px-4 py-3 text-left text-sm font-medium",children:"耗时"}),t.jsx("th",{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:34:19",className:"px-4 py-3 text-left text-sm font-medium",children:"操作"})]})}),t.jsx("tbody",{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:37:15",className:"divide-y",children:o.length===0?t.jsx("tr",{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:39:19",children:t.jsx("td",{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:40:21",colSpan:6,className:"px-4 py-8 text-center text-muted-foreground",children:"暂无执行记录"})}):o.map(n=>t.jsxs("tr",{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:46:21",className:"hover:bg-muted/50",children:[t.jsx("td",{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:47:23",className:"px-4 py-3 text-sm text-muted-foreground",children:n.id}),t.jsx("td",{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:48:23",className:"px-4 py-3 text-sm",children:n.task_name}),t.jsx("td",{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:49:23",className:"px-4 py-3",children:xt(n.status)}),t.jsx("td",{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:50:23",className:"px-4 py-3 text-sm text-muted-foreground",children:Jt(n.started_at)}),t.jsx("td",{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:51:23",className:"px-4 py-3 text-sm",children:n.duration?`${(n.duration/1e3).toFixed(1)}s`:"-"}),t.jsx("td",{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:54:23",className:"px-4 py-3",children:t.jsx(p,{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:55:25",variant:"ghost",size:"sm",title:"查看日志",onClick:()=>s(n),children:t.jsx(zt,{"code-path":"src/components/automation/ScriptExecutionsTable.tsx:56:27",className:"w-4 h-4"})})})]},n.id))})]})})})})]})}function be(){const o=$t(),[a,s]=i.useState([]),[n,m]=i.useState([]),[x,f]=i.useState(!1),[C,r]=i.useState(!1),[R,ht]=i.useState(""),[k,ut]=i.useState("all"),[gt,St]=i.useState("scripts"),[h,T]=i.useState([]),[jt,E]=i.useState(!1),[ft,L]=i.useState(!1),[vt,q]=i.useState(!1),[y,H]=i.useState(null),[Q,U]=i.useState(null),[bt,Nt]=i.useState(null),[u,M]=i.useState({name:"",description:"",content:"",type:"shell",timeout:300}),S=async()=>{f(!0);try{const c=(await j.getScripts({page_size:100}))?.list||[];s(c.map(Gt))}catch{l.error("获取脚本列表失败")}finally{f(!1)}},F=async()=>{try{const c=(await Ot.getExecutions({task_type:"script",page_size:50}))?.list||[];m(c)}catch{}};i.useEffect(()=>{S(),F()},[]);const Ct=()=>{H(null),M({name:"",description:"",content:w[0].sample,type:"shell",timeout:300}),E(!0)},X=e=>{H(e.id),U(e),M({name:e.name,description:e.description,content:e.content,type:e.type,timeout:e.timeout}),E(!0),L(!1)},yt=e=>{M(c=>{const g=w.some(_=>_.sample===c.content)||c.content==="",d=w.find(_=>_.value===e);return{...c,type:e,content:y===null&&g&&d?d.sample:c.content}})},Dt=async()=>{if(!u.name.trim()||!u.content.trim()){l.error("请填写名称和脚本内容");return}const e={name:u.name.trim(),code:Y(),description:u.description,type:u.type,content:u.content,timeout:Number(u.timeout)||300};try{y!==null?(await j.updateScript(y,e),l.success("脚本更新成功")):(await j.createScript(e),l.success("脚本创建成功")),E(!1),S()}catch{l.error(y!==null?"更新失败":"创建失败")}},wt=async e=>{try{await j.createScript({name:`${e.name} (副本)`,code:Y(),description:e.description,type:e.type,content:e.content,timeout:e.timeout}),l.success("复制成功"),S()}catch{l.error("复制失败")}},Tt=async e=>{if(await o({title:"删除脚本",description:`确定删除「${e.name}」吗?此操作不可恢复。`,confirmText:"删除",variant:"destructive"}))try{await j.deleteScript(e.id),l.success("删除成功"),S()}catch{l.error("删除失败")}},Et=async e=>{if(await o({title:"执行脚本",description:`将在 AIOps 主机上本地执行「${e.name}」(${e.type})。`,confirmText:"开始执行"})){r(!0);try{const g=await j.executeScript(e.id),d=g?.data??g;d?.status==="success"?l.success(`执行成功,耗时 ${d.duration??0}ms`):l.error(`执行失败,耗时 ${d?.duration??0}ms`,{description:(d?.output||"").slice(0,120)}),S(),F()}catch{l.error("执行请求失败")}finally{r(!1)}}},v=a.filter(e=>{const c=R.toLowerCase(),g=e.name.toLowerCase().includes(c)||e.description.toLowerCase().includes(c)||e.code.toLowerCase().includes(c),d=k==="all"||e.type===k;return g&&d}),Mt=e=>{T(c=>c.includes(e)?c.filter(g=>g!==e):[...c,e])},G=v.length>0&&h.length===v.length,Ft=()=>{T(G?[]:v.map(e=>e.id))},kt=async()=>{if(!(h.length===0||!await o({title:"批量删除脚本",description:`确定删除选中的 ${h.length} 个脚本吗?此操作不可恢复。`,confirmText:"批量删除",variant:"destructive"})))try{await j.batchDelete(h),l.success(`已删除 ${h.length} 个脚本`),T([]),S()}catch{l.error("批量删除失败")}};return t.jsxs("div",{"code-path":"src/components/automation/ScriptManager.tsx:252:5",className:"space-y-6",children:[t.jsxs(Pt,{"code-path":"src/components/automation/ScriptManager.tsx:254:7",value:gt,onValueChange:e=>{St(e),e==="jobs"&&F()},children:[t.jsxs(Bt,{"code-path":"src/components/automation/ScriptManager.tsx:255:9",className:"grid w-full grid-cols-2 lg:w-[360px]",children:[t.jsx(J,{"code-path":"src/components/automation/ScriptManager.tsx:256:11",value:"scripts",children:"脚本库"}),t.jsx(J,{"code-path":"src/components/automation/ScriptManager.tsx:257:11",value:"jobs",children:"执行记录"})]}),t.jsxs(K,{"code-path":"src/components/automation/ScriptManager.tsx:261:9",value:"scripts",className:"space-y-4",children:[t.jsxs("div",{"code-path":"src/components/automation/ScriptManager.tsx:262:11",className:"flex flex-wrap items-center justify-between gap-4",children:[t.jsxs("div",{"code-path":"src/components/automation/ScriptManager.tsx:263:13",className:"flex items-center gap-2 flex-1 min-w-[300px]",children:[t.jsxs("div",{"code-path":"src/components/automation/ScriptManager.tsx:264:15",className:"relative flex-1",children:[t.jsx(Ut,{"code-path":"src/components/automation/ScriptManager.tsx:265:17",className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-muted-foreground"}),t.jsx(D,{"code-path":"src/components/automation/ScriptManager.tsx:266:17",placeholder:"搜索名称、编码、描述...",value:R,onChange:e=>ht(e.target.value),className:"pl-10"})]}),t.jsxs(st,{"code-path":"src/components/automation/ScriptManager.tsx:273:15",value:k,onValueChange:ut,children:[t.jsx(at,{"code-path":"src/components/automation/ScriptManager.tsx:274:17",className:"w-[140px]",children:t.jsx(ct,{"code-path":"src/components/automation/ScriptManager.tsx:275:19",placeholder:"类型"})}),t.jsxs(nt,{"code-path":"src/components/automation/ScriptManager.tsx:277:17",children:[t.jsx(z,{"code-path":"src/components/automation/ScriptManager.tsx:278:19",value:"all",children:"全部类型"}),w.map(e=>t.jsx(z,{"code-path":"src/components/automation/ScriptManager.tsx:280:21",value:e.value,children:e.label},e.value))]})]})]}),t.jsxs("div",{"code-path":"src/components/automation/ScriptManager.tsx:285:13",className:"flex items-center gap-2",children:[t.jsxs(p,{"code-path":"src/components/automation/ScriptManager.tsx:286:15",variant:"outline",onClick:S,children:[t.jsx(ot,{"code-path":"src/components/automation/ScriptManager.tsx:287:17",className:"w-4 h-4 mr-2"}),"刷新"]}),t.jsxs(p,{"code-path":"src/components/automation/ScriptManager.tsx:290:15",onClick:Ct,children:[t.jsx(Xt,{"code-path":"src/components/automation/ScriptManager.tsx:291:17",className:"w-4 h-4 mr-2"}),"新建脚本"]})]})]}),h.length>0&&t.jsxs("div",{"code-path":"src/components/automation/ScriptManager.tsx:299:13",className:"flex items-center justify-between gap-4 px-4 py-2.5 rounded-lg border border-[var(--dg-border)] bg-[var(--dg-bg-secondary)]",children:[t.jsxs("div",{"code-path":"src/components/automation/ScriptManager.tsx:300:15",className:"flex items-center gap-3",children:[t.jsx(rt,{"code-path":"src/components/automation/ScriptManager.tsx:301:17",checked:G,onCheckedChange:Ft,className:"border-[var(--dg-border)]"}),t.jsxs("span",{"code-path":"src/components/automation/ScriptManager.tsx:306:17",className:"text-sm text-[var(--dg-text-secondary)]",children:["已选择 ",h.length," 项 / 共 ",v.length," 项"]})]}),t.jsxs("div",{"code-path":"src/components/automation/ScriptManager.tsx:310:15",className:"flex items-center gap-2",children:[t.jsx(p,{"code-path":"src/components/automation/ScriptManager.tsx:311:17",variant:"outline",size:"sm",onClick:()=>T([]),children:"取消选择"}),t.jsxs(p,{"code-path":"src/components/automation/ScriptManager.tsx:314:17",variant:"outline",size:"sm",className:"border-red-500/30 text-red-400 hover:bg-red-500/10",onClick:kt,children:[t.jsx(mt,{"code-path":"src/components/automation/ScriptManager.tsx:320:19",className:"w-4 h-4 mr-2"}),"批量删除"]})]})]}),t.jsx("div",{"code-path":"src/components/automation/ScriptManager.tsx:328:11",className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",children:x?t.jsxs("div",{"code-path":"src/components/automation/ScriptManager.tsx:330:15",className:"col-span-full text-center py-8 text-muted-foreground",children:[t.jsx($,{"code-path":"src/components/automation/ScriptManager.tsx:331:17",className:"w-5 h-5 animate-spin inline mr-2"}),"加载中..."]}):v.length===0?t.jsx("div",{"code-path":"src/components/automation/ScriptManager.tsx:335:15",className:"col-span-full text-center py-8 text-muted-foreground",children:a.length===0?"暂无脚本,点击「新建脚本」创建第一个":"未匹配到符合条件的脚本"}):v.map(e=>t.jsx(Zt,{"code-path":"src/components/automation/ScriptManager.tsx:340:17",script:e,selected:h.includes(e.id),executing:C,onToggleSelect:()=>Mt(e.id),onView:()=>{U(e),L(!0)},onExecute:()=>Et(e),onEdit:()=>X(e),onClone:()=>wt(e),onDelete:()=>Tt(e)},e.id))})]}),t.jsx(K,{"code-path":"src/components/automation/ScriptManager.tsx:358:9",value:"jobs",children:t.jsx(te,{"code-path":"src/components/automation/ScriptManager.tsx:359:11",executions:n,onRefresh:F,onViewLogs:e=>{Nt(e),q(!0)}})})]}),t.jsx(Kt,{"code-path":"src/components/automation/ScriptManager.tsx:368:7",open:jt,onOpenChange:E,editingId:y,editingCode:Q?.code||"",formData:u,setFormData:M,onTypeChange:yt,onSave:Dt}),t.jsx(Wt,{"code-path":"src/components/automation/ScriptManager.tsx:380:7",open:ft,onOpenChange:L,script:Q,onEdit:X}),t.jsx(Yt,{"code-path":"src/components/automation/ScriptManager.tsx:388:7",open:vt,onOpenChange:q,exec:bt})]})}export{be as ScriptManager}; diff --git a/backend/static/assets/ServerManager-D9wclMZP.js b/backend/static/assets/ServerManager-D9wclMZP.js new file mode 100644 index 0000000..130b0d0 --- /dev/null +++ b/backend/static/assets/ServerManager-D9wclMZP.js @@ -0,0 +1,11 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./index-l6TwDTR3.js","./index-Dmami9WE.js","./index-C8L7RhXS.css","./dashboard-BHNKEvkq.js","./server-3HmnhxQB.js","./kubernetes-D2-GnE0t.js","./deploy-CD5bEXt-.js","./automation-WG-s4QEv.js","./monitor-CicbJUrQ.js","./agent-B3ElXCx8.js","./cloud-Dq4kl-JO.js","./system-C3cYTuQH.js","./ai-2t1T1OeI.js"])))=>i.map(i=>d[i]); +import{i as Ke,j as e,r as t,aU as Tr,D as _e,a as Te,b as Je,c as Re,d as Me,s as xr,Y as Ae,M as Ve,P as cr,K as ve,o as Fe,B as N,a6 as $e,S as ze,e as qe,$ as ir,a0 as xe,X as ue,t as vr,L as Le,ak as Rr,ab as Mr,a8 as Br,ag as Pr,aa as Qe,ad as Ar,a9 as $r,ac as Or,as as zr,h as Lr,V as Hr,aQ as hr,N as Ur,E as ar,aJ as gr,aK as ur,aL as br,aM as Sr,aN as We,aO as he,f as Dr}from"./index-Dmami9WE.js";import{C as ke,a as Ee}from"./card-CIfC-8Rh.js";import{I as V}from"./input-NsU9nXZF.js";import{C as ge}from"./checkbox-DoAtRzQj.js";import{b as Oe,e as se,T as Vr,a as Wr,c as de,d as Gr}from"./table-CG4mjNfb.js";import{S as fe,a as we,b as Ce,c as Ie,d as H}from"./select-DUbxjT0z.js";import{s as te,r as Kr}from"./server-3HmnhxQB.js";import{S as Jr}from"./stat-strip-BteRU1Iu.js";import{t as J}from"./index-BuEnLCjT.js";import{B as $}from"./badge-3UzCvU7L.js";import{c as ye}from"./cloud-Dq4kl-JO.js";import{R as le}from"./refresh-cw-CTBERyFc.js";import{S as jr}from"./search-Dd-PeBfg.js";import{x as qr,a as Qr}from"./xterm-DSqgeKvr.js";import{c as Nr,s as Xr}from"./deploy-CD5bEXt-.js";import{M as yr,a as fr}from"./minimize-2-BHcbNmdK.js";import{F as wr}from"./folder-open-CjMh_m_2.js";import{U as Xe}from"./upload-CRLg7Pbj.js";import{a as nr,F as Yr}from"./folder-B5RGB3GG.js";import{A as Zr}from"./arrow-left-BIbk9wFC.js";import{D as Ye}from"./download-Vuij9wGr.js";import{T as Ze}from"./trash-2-DWVnIU6o.js";import{L as D}from"./label-Ap_-SPYI.js";import{T as dr}from"./textarea-DHUZ6N85.js";import{S as es}from"./save-YtnrpTd8.js";import{H as rs}from"./hard-drive-DmC04Y5r.js";import{E as ss}from"./ellipsis-BcWfelgl.js";import{S as ts}from"./square-pen-B3dPIBrm.js";import{P as os}from"./plus-O65gX7Qz.js";import"./index-CtCQcvyh.js";import"./chevron-up-Cq4GPopa.js";const cs=[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]],er=Ke("chevron-left",cs);const as=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M8 13h2",key:"yr2amv"}],["path",{d:"M14 13h2",key:"un5t4a"}],["path",{d:"M8 17h2",key:"2yhykz"}],["path",{d:"M14 17h2",key:"10kma7"}]],Ge=Ke("file-spreadsheet",as);const ns=[["path",{d:"M12 10v6",key:"1bos4e"}],["path",{d:"M9 13h6",key:"1uhe8q"}],["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]],ds=Ke("folder-plus",ns);function ls({servers:s}){const x=s.filter(c=>c.status==="running").length,o=s.filter(c=>c.status==="maintenance").length,a=s.filter(c=>c.status==="stopped").length;return e.jsx(Jr,{"code-path":"src/components/server/ServerStatsStrip.tsx:14:5",items:[{label:"服务器",value:s.length,color:"blue"},{label:"运行中",value:x,color:"emerald"},{label:"维护中",value:o,color:"amber"},{label:"已停止",value:a,color:"muted"}]})}const ps=[{id:"aws",name:"AWS",color:"bg-orange-500",icon:"AWS"},{id:"aliyun",name:"阿里云",color:"bg-orange-600",icon:"AL"},{id:"tencent",name:"腾讯云",color:"bg-blue-500",icon:"TX"},{id:"huawei",name:"华为云",color:"bg-red-500",icon:"HW"},{id:"azure",name:"Azure",color:"bg-blue-600",icon:"AZ"}];function ms({open:s,onClose:x}){const[o,a]=t.useState([]),[c,u]=t.useState(1),[h,g]=t.useState(""),[m,F]=t.useState(null),[S,k]=t.useState([]),[n,y]=t.useState([]),[E,R]=t.useState(""),[w,f]=t.useState(!1),[v,C]=t.useState([]),[i,O]=t.useState([]),[W,j]=t.useState(!1),[z,p]=t.useState([]),[b,B]=t.useState(!1),[T,G]=t.useState(null),[ee,re]=t.useState("22"),[pe,l]=t.useState([]),[M,K]=t.useState(""),U=async()=>{try{const r=await ye.getAccounts();a(r?.list||[])}catch(r){console.error("加载云账号失败:",r)}};t.useEffect(()=>{s&&(U(),Tr(async()=>{const{credentialApi:r}=await import("./index-l6TwDTR3.js");return{credentialApi:r}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12]),import.meta.url).then(({credentialApi:r})=>{r.list().then(_=>l(_?.list||[])).catch(()=>l([]))}))},[s]);const P=o.filter(r=>r.provider===h&&r.status==="active"),X=t.useCallback(async r=>{try{return(await ye.getAccountRegions(r))?.list||[]}catch{return[]}},[]),q=t.useCallback(async r=>{f(!0);try{await ye.syncRegions(r);const _=await X(r);k(_)}catch(_){throw console.error("同步区域失败:",_),_}finally{f(!1)}},[X]),A=t.useCallback(async()=>{if(!m)return;const r=await X(m.id);if(k(r),r.length===0)try{await q(m.id)}catch{}},[m,X,q]),me=t.useCallback(async()=>{if(!(!m||n.length===0)){j(!0),p([]),C([]),O([]);try{const r=await ye.discoverInstances(m.id,n);C(r?.list||[]),p(r?.errors||[])}catch(r){console.error("发现主机失败:",r),p([r?.message||"发现主机失败"])}finally{j(!1)}}},[m,n]),L=async()=>{if(!(!m||i.length===0)){B(!0);try{const r=v.filter(ae=>i.includes(ae.instance_id)),_=await ye.importInstances(m.id,r,{default_port:Number(ee)||22,credential_id:M?Number(M):void 0});G(_||{imported:0,skipped:0})}catch(r){console.error("导入失败:",r)}finally{B(!1)}}},ie=()=>{c===2&&m&&c<4?(u(3),A()):c<4&&u(c+1)},Ue=()=>{c>1&&u(c-1)},oe=()=>{n.length===S.length&&S.length>0?y([]):y(S.map(r=>r.code))},be=r=>{O(_=>_.includes(r)?_.filter(ae=>ae!==r):[..._,r])},Be=()=>{i.length===v.length&&v.length>0?O([]):O(v.map(r=>r.instance_id))},Se=()=>{x(),u(1),g(""),F(null),y([]),k([]),C([]),O([]),R(""),p([]),G(null),re("22"),K("")},De=S.filter(r=>!E||r.name?.toLowerCase().includes(E.toLowerCase())||r.code?.toLowerCase().includes(E.toLowerCase())),Pe=[{id:1,title:"公有云",icon:xr},{id:2,title:"访问凭据",icon:Ae},{id:3,title:"选择区域",icon:Ve},{id:4,title:"导入确认",icon:cr}];return e.jsx(_e,{"code-path":"src/components/server/CloudServerImport.tsx:232:5",open:s,onOpenChange:Se,children:e.jsxs(Te,{"code-path":"src/components/server/CloudServerImport.tsx:233:7",className:"max-w-3xl bg-[var(--dg-bg-primary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]",children:[e.jsxs(Je,{"code-path":"src/components/server/CloudServerImport.tsx:234:9",children:[e.jsx(Re,{"code-path":"src/components/server/CloudServerImport.tsx:235:11",className:"text-xl",children:"导入云主机"}),e.jsx(Me,{"code-path":"src/components/server/CloudServerImport.tsx:236:11",className:"sr-only",children:"从云平台批量导入主机资产"})]}),e.jsx("div",{"code-path":"src/components/server/CloudServerImport.tsx:240:9",className:"flex items-center justify-center mb-6 flex-wrap gap-1",children:Pe.map((r,_)=>e.jsxs("div",{"code-path":"src/components/server/CloudServerImport.tsx:242:13",className:"flex items-center",children:[e.jsxs("div",{"code-path":"src/components/server/CloudServerImport.tsx:243:15",className:`flex items-center gap-2 px-3 py-2 rounded-lg text-sm ${c===r.id?"bg-blue-600 text-white":c>r.id?"bg-emerald-600/20 text-emerald-400":"bg-[var(--dg-bg-secondary)] text-[var(--dg-text-muted)]"}`,children:[e.jsx(r.icon,{"code-path":"src/components/server/CloudServerImport.tsx:250:17",className:"h-4 w-4"}),e.jsx("span",{"code-path":"src/components/server/CloudServerImport.tsx:251:17",className:"font-medium hidden sm:inline",children:r.title}),c>r.id&&e.jsx(ve,{"code-path":"src/components/server/CloudServerImport.tsx:252:33",className:"h-3 w-3 ml-1"})]}),_e.jsx(ke,{"code-path":"src/components/server/CloudServerImport.tsx:267:17",className:`cursor-pointer transition-all ${h===r.id?"border-blue-500 ring-2 ring-blue-500/30 bg-[var(--dg-bg-secondary)]":"border-[var(--dg-border)] hover:border-blue-500 bg-[var(--dg-bg-secondary)]"}`,onClick:()=>g(r.id),children:e.jsxs(Ee,{"code-path":"src/components/server/CloudServerImport.tsx:276:19",className:"p-4 flex items-center gap-3",children:[e.jsx("div",{"code-path":"src/components/server/CloudServerImport.tsx:277:21",className:`w-10 h-10 rounded-lg ${r.color} flex items-center justify-center text-white font-bold text-sm`,children:r.icon}),e.jsx("span",{"code-path":"src/components/server/CloudServerImport.tsx:280:21",className:"font-medium text-[var(--dg-text-primary)]",children:r.name})]})},r.id))})]}),c===2&&e.jsxs("div",{"code-path":"src/components/server/CloudServerImport.tsx:290:11",className:"space-y-4",children:[e.jsx("p",{"code-path":"src/components/server/CloudServerImport.tsx:291:13",className:"text-[var(--dg-text-secondary)] text-sm",children:"请选择访问凭据(AccessKey)"}),P.length>0?e.jsx("div",{"code-path":"src/components/server/CloudServerImport.tsx:293:15",className:"space-y-2 max-h-[300px] overflow-y-auto",children:P.map(r=>e.jsx(ke,{"code-path":"src/components/server/CloudServerImport.tsx:295:19",className:`cursor-pointer transition-all ${m?.id===r.id?"border-blue-500 ring-1 ring-blue-500/30 bg-[var(--dg-bg-secondary)]":"border-[var(--dg-border)] hover:border-blue-500 bg-[var(--dg-bg-secondary)]"}`,onClick:()=>F(r),children:e.jsxs(Ee,{"code-path":"src/components/server/CloudServerImport.tsx:304:21",className:"p-3 flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/server/CloudServerImport.tsx:305:23",className:"flex items-center gap-3",children:[e.jsx(Ae,{"code-path":"src/components/server/CloudServerImport.tsx:306:25",className:"h-5 w-5 text-blue-400"}),e.jsxs("div",{"code-path":"src/components/server/CloudServerImport.tsx:307:25",children:[e.jsx("p",{"code-path":"src/components/server/CloudServerImport.tsx:308:27",className:"font-medium text-[var(--dg-text-primary)]",children:r.name}),e.jsxs("p",{"code-path":"src/components/server/CloudServerImport.tsx:309:27",className:"text-xs text-[var(--dg-text-muted)]",children:[(r.access_key||r.accessKey||"******").slice(0,20),"..."]})]})]}),e.jsxs("div",{"code-path":"src/components/server/CloudServerImport.tsx:314:23",className:"text-right",children:[e.jsxs($,{"code-path":"src/components/server/CloudServerImport.tsx:315:25",className:"bg-emerald-500/20 text-emerald-400 border-0",children:[r.region_count??r.regionCount??0," 区域"]}),e.jsxs("p",{"code-path":"src/components/server/CloudServerImport.tsx:318:25",className:"text-xs text-[var(--dg-text-muted)] mt-1",children:[r.server_count??r.serverCount??0," 服务器"]})]})]})},r.id))}):e.jsxs("div",{"code-path":"src/components/server/CloudServerImport.tsx:325:15",className:"text-center py-8 text-[var(--dg-text-muted)]",children:[e.jsx(Ae,{"code-path":"src/components/server/CloudServerImport.tsx:326:17",className:"h-12 w-12 mx-auto mb-3 opacity-50"}),e.jsx("p",{"code-path":"src/components/server/CloudServerImport.tsx:327:17",children:"该云平台暂无有效的访问凭据"})]})]}),c===3&&e.jsxs("div",{"code-path":"src/components/server/CloudServerImport.tsx:335:11",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/server/CloudServerImport.tsx:336:13",className:"flex items-center justify-between",children:[e.jsxs("p",{"code-path":"src/components/server/CloudServerImport.tsx:337:15",className:"text-[var(--dg-text-secondary)] text-sm",children:["请选择要同步的区域",S.length>0&&e.jsxs("span",{"code-path":"src/components/server/CloudServerImport.tsx:340:19",className:"ml-2 text-[var(--dg-text-muted)]",children:["(共 ",S.length," 个区域,已选 ",n.length," 个)"]})]}),e.jsxs(N,{"code-path":"src/components/server/CloudServerImport.tsx:343:15",variant:"outline",size:"sm",className:"border-[var(--dg-border)] text-[var(--dg-text-secondary)]",onClick:()=>m&&q(m.id),disabled:w,children:[e.jsx(le,{"code-path":"src/components/server/CloudServerImport.tsx:350:17",className:`h-3 w-3 mr-1 ${w?"animate-spin":""}`}),w?"同步中...":"刷新区域"]})]}),w?e.jsxs("div",{"code-path":"src/components/server/CloudServerImport.tsx:356:15",className:"text-center py-12",children:[e.jsx(le,{"code-path":"src/components/server/CloudServerImport.tsx:357:17",className:"h-8 w-8 mx-auto mb-3 animate-spin text-blue-400"}),e.jsx("p",{"code-path":"src/components/server/CloudServerImport.tsx:358:17",className:"text-[var(--dg-text-secondary)]",children:"正在从云平台同步区域列表..."})]}):S.length===0?e.jsxs("div",{"code-path":"src/components/server/CloudServerImport.tsx:361:15",className:"text-center py-8 text-[var(--dg-text-muted)]",children:[e.jsx(Ve,{"code-path":"src/components/server/CloudServerImport.tsx:362:17",className:"h-10 w-10 mx-auto mb-3 opacity-50"}),e.jsx("p",{"code-path":"src/components/server/CloudServerImport.tsx:363:17",children:"暂无区域数据"}),e.jsxs(N,{"code-path":"src/components/server/CloudServerImport.tsx:364:17",variant:"outline",size:"sm",className:"mt-3 border-[var(--dg-border)] text-blue-400",onClick:()=>m&&q(m.id),children:[e.jsx(le,{"code-path":"src/components/server/CloudServerImport.tsx:370:19",className:"h-3 w-3 mr-1"}),"立即同步"]})]}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{"code-path":"src/components/server/CloudServerImport.tsx:377:17",className:"flex items-center gap-2",children:[e.jsxs("div",{"code-path":"src/components/server/CloudServerImport.tsx:378:19",className:"relative flex-1",children:[e.jsx(jr,{"code-path":"src/components/server/CloudServerImport.tsx:379:21",className:"h-4 w-4 absolute left-3 top-1/2 -translate-y-1/2 text-[var(--dg-text-muted)]"}),e.jsx(V,{"code-path":"src/components/server/CloudServerImport.tsx:380:21",placeholder:"搜索区域名称或编码...",value:E,onChange:r=>R(r.target.value),className:"pl-9 bg-[var(--dg-bg-secondary)] border-[var(--dg-border)]"})]}),e.jsx(N,{"code-path":"src/components/server/CloudServerImport.tsx:387:19",variant:"outline",size:"sm",onClick:oe,className:"border-[var(--dg-border)]",children:n.length===S.length&&S.length>0?"取消全选":"全选"})]}),e.jsx("div",{"code-path":"src/components/server/CloudServerImport.tsx:393:17",className:"border rounded-lg border-[var(--dg-border)] overflow-hidden max-h-[300px] overflow-y-auto",children:e.jsxs("table",{"code-path":"src/components/server/CloudServerImport.tsx:394:19",className:"w-full",children:[e.jsx("thead",{"code-path":"src/components/server/CloudServerImport.tsx:395:21",className:"bg-[var(--dg-bg-secondary)] sticky top-0",children:e.jsxs("tr",{"code-path":"src/components/server/CloudServerImport.tsx:396:23",children:[e.jsx("th",{"code-path":"src/components/server/CloudServerImport.tsx:397:25",className:"px-3 py-2 text-left text-xs font-medium text-[var(--dg-text-secondary)] w-10",children:e.jsx(ge,{"code-path":"src/components/server/CloudServerImport.tsx:398:27",checked:n.length===S.length&&S.length>0,onCheckedChange:oe})}),e.jsx("th",{"code-path":"src/components/server/CloudServerImport.tsx:403:25",className:"px-3 py-2 text-left text-xs font-medium text-[var(--dg-text-secondary)]",children:"区域编码"}),e.jsx("th",{"code-path":"src/components/server/CloudServerImport.tsx:404:25",className:"px-3 py-2 text-left text-xs font-medium text-[var(--dg-text-secondary)]",children:"区域名称"}),e.jsx("th",{"code-path":"src/components/server/CloudServerImport.tsx:405:25",className:"px-3 py-2 text-left text-xs font-medium text-[var(--dg-text-secondary)]",children:"Endpoint"})]})}),e.jsx("tbody",{"code-path":"src/components/server/CloudServerImport.tsx:408:21",className:"divide-y divide-[var(--dg-border)]",children:De.map(r=>e.jsxs("tr",{"code-path":"src/components/server/CloudServerImport.tsx:410:25",className:`cursor-pointer hover:bg-[var(--dg-bg-hover)] ${n.includes(r.code)?"bg-blue-500/10":""}`,onClick:()=>{y(_=>_.includes(r.code)?_.filter(ae=>ae!==r.code):[..._,r.code])},children:[e.jsx("td",{"code-path":"src/components/server/CloudServerImport.tsx:421:27",className:"px-3 py-2",children:e.jsx(ge,{"code-path":"src/components/server/CloudServerImport.tsx:422:29",checked:n.includes(r.code)})}),e.jsx("td",{"code-path":"src/components/server/CloudServerImport.tsx:424:27",className:"px-3 py-2 text-sm text-blue-400 font-mono",children:r.code}),e.jsx("td",{"code-path":"src/components/server/CloudServerImport.tsx:425:27",className:"px-3 py-2 text-sm text-[var(--dg-text-primary)]",children:r.name}),e.jsx("td",{"code-path":"src/components/server/CloudServerImport.tsx:426:27",className:"px-3 py-2 text-xs text-[var(--dg-text-muted)] font-mono truncate max-w-[200px]",children:r.endpoint||"-"})]},r.id||r.code))})]})})]})]}),c===4&&e.jsx("div",{"code-path":"src/components/server/CloudServerImport.tsx:439:11",className:"space-y-4",children:T?e.jsxs("div",{"code-path":"src/components/server/CloudServerImport.tsx:442:15",className:"text-center py-12",children:[e.jsx(cr,{"code-path":"src/components/server/CloudServerImport.tsx:443:17",className:"h-12 w-12 mx-auto mb-3 text-emerald-400"}),e.jsx("p",{"code-path":"src/components/server/CloudServerImport.tsx:444:17",className:"text-lg font-medium text-[var(--dg-text-primary)]",children:"导入完成"}),e.jsxs("div",{"code-path":"src/components/server/CloudServerImport.tsx:445:17",className:"flex items-center justify-center gap-6 mt-4",children:[e.jsxs($,{"code-path":"src/components/server/CloudServerImport.tsx:446:19",className:"bg-emerald-500/20 text-emerald-400 border-0 text-base px-4 py-1",children:["成功导入 ",T.imported," 台"]}),T.skipped>0&&e.jsxs($,{"code-path":"src/components/server/CloudServerImport.tsx:450:21",className:"bg-amber-500/20 text-amber-400 border-0 text-base px-4 py-1",children:["跳过 ",T.skipped," 台(已存在)"]})]})]}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{"code-path":"src/components/server/CloudServerImport.tsx:458:17",className:"flex items-center justify-between",children:[e.jsxs("p",{"code-path":"src/components/server/CloudServerImport.tsx:459:19",className:"text-[var(--dg-text-secondary)] text-sm",children:["已选 ",n.length," 个区域",v.length>0&&e.jsxs("span",{"code-path":"src/components/server/CloudServerImport.tsx:462:23",className:"ml-2",children:["· 发现 ",v.length," 台主机"]})]}),e.jsxs("div",{"code-path":"src/components/server/CloudServerImport.tsx:465:19",className:"flex items-center gap-2",children:[v.length>0&&e.jsxs(e.Fragment,{children:[e.jsx(N,{"code-path":"src/components/server/CloudServerImport.tsx:468:25",variant:"outline",size:"sm",onClick:Be,className:"border-[var(--dg-border)]",children:i.length===v.length&&v.length>0?"取消全选":"全选"}),e.jsxs($,{"code-path":"src/components/server/CloudServerImport.tsx:471:25",className:"bg-blue-500/20 text-blue-400 border-0",children:["已选 ",i.length," 台"]})]}),e.jsxs(N,{"code-path":"src/components/server/CloudServerImport.tsx:476:21",variant:"outline",size:"sm",onClick:me,disabled:W||n.length===0,className:"border-[var(--dg-border)] text-blue-400",children:[e.jsx(le,{"code-path":"src/components/server/CloudServerImport.tsx:483:23",className:`h-3 w-3 mr-1 ${W?"animate-spin":""}`}),W?"发现中...":v.length>0?"重新发现":"发现主机"]})]})]}),e.jsx("div",{"code-path":"src/components/server/CloudServerImport.tsx:490:17",className:"flex flex-wrap gap-1",children:n.map(r=>{const _=S.find(ae=>ae.code===r);return e.jsxs($,{"code-path":"src/components/server/CloudServerImport.tsx:494:23",className:"bg-[var(--dg-bg-secondary)] text-[var(--dg-text-muted)] border border-[var(--dg-border)] text-xs",children:[e.jsx(Ve,{"code-path":"src/components/server/CloudServerImport.tsx:495:25",className:"h-3 w-3 mr-1"}),_?.name||r]},r)})}),z.length>0&&e.jsxs("div",{"code-path":"src/components/server/CloudServerImport.tsx:504:19",className:"flex items-start gap-2 p-3 rounded-lg bg-amber-500/10 border border-amber-500/30 text-amber-400 text-sm",children:[e.jsx($e,{"code-path":"src/components/server/CloudServerImport.tsx:505:21",className:"h-4 w-4 mt-0.5 flex-shrink-0"}),e.jsxs("div",{"code-path":"src/components/server/CloudServerImport.tsx:506:21",children:[e.jsx("p",{"code-path":"src/components/server/CloudServerImport.tsx:507:23",className:"font-medium",children:"部分区域发现失败:"}),z.map((r,_)=>e.jsx("p",{"code-path":"src/components/server/CloudServerImport.tsx:509:25",className:"text-xs mt-1 opacity-80",children:r},_))]})]}),W?e.jsxs("div",{"code-path":"src/components/server/CloudServerImport.tsx:517:19",className:"text-center py-12",children:[e.jsx(le,{"code-path":"src/components/server/CloudServerImport.tsx:518:21",className:"h-8 w-8 mx-auto mb-3 animate-spin text-blue-400"}),e.jsx("p",{"code-path":"src/components/server/CloudServerImport.tsx:519:21",className:"text-[var(--dg-text-secondary)]",children:"正在发现云主机,请稍候..."}),e.jsx("p",{"code-path":"src/components/server/CloudServerImport.tsx:520:21",className:"text-xs text-[var(--dg-text-muted)] mt-1",children:"正在逐区域查询,可能需要数秒"})]}):v.length===0&&!W?e.jsxs("div",{"code-path":"src/components/server/CloudServerImport.tsx:523:19",className:"text-center py-8 text-[var(--dg-text-muted)]",children:[e.jsx(ze,{"code-path":"src/components/server/CloudServerImport.tsx:524:21",className:"h-10 w-10 mx-auto mb-3 opacity-50"}),e.jsx("p",{"code-path":"src/components/server/CloudServerImport.tsx:525:21",children:'点击"发现主机"按钮,开始扫描所选区域'})]}):e.jsx("div",{"code-path":"src/components/server/CloudServerImport.tsx:528:19",className:"border rounded-lg border-[var(--dg-border)] overflow-hidden max-h-[300px] overflow-y-auto",children:e.jsxs("table",{"code-path":"src/components/server/CloudServerImport.tsx:529:21",className:"w-full",children:[e.jsx("thead",{"code-path":"src/components/server/CloudServerImport.tsx:530:23",className:"bg-[var(--dg-bg-secondary)] sticky top-0",children:e.jsxs("tr",{"code-path":"src/components/server/CloudServerImport.tsx:531:25",children:[e.jsx("th",{"code-path":"src/components/server/CloudServerImport.tsx:532:27",className:"px-3 py-2 text-left text-xs font-medium text-[var(--dg-text-secondary)] w-10",children:e.jsx(ge,{"code-path":"src/components/server/CloudServerImport.tsx:533:29",checked:i.length===v.length&&v.length>0,onCheckedChange:Be})}),e.jsx("th",{"code-path":"src/components/server/CloudServerImport.tsx:538:27",className:"px-3 py-2 text-left text-xs font-medium text-[var(--dg-text-secondary)]",children:"主机名"}),e.jsx("th",{"code-path":"src/components/server/CloudServerImport.tsx:539:27",className:"px-3 py-2 text-left text-xs font-medium text-[var(--dg-text-secondary)]",children:"IP地址"})]})}),e.jsx("tbody",{"code-path":"src/components/server/CloudServerImport.tsx:542:23",className:"divide-y divide-[var(--dg-border)]",children:v.map(r=>e.jsxs("tr",{"code-path":"src/components/server/CloudServerImport.tsx:544:27",className:`cursor-pointer hover:bg-[var(--dg-bg-hover)] ${i.includes(r.instance_id)?"bg-blue-500/10":""}`,onClick:()=>be(r.instance_id),children:[e.jsx("td",{"code-path":"src/components/server/CloudServerImport.tsx:549:29",className:"px-3 py-2",children:e.jsx(ge,{"code-path":"src/components/server/CloudServerImport.tsx:550:31",checked:i.includes(r.instance_id)})}),e.jsx("td",{"code-path":"src/components/server/CloudServerImport.tsx:552:29",className:"px-3 py-2 text-sm text-[var(--dg-text-primary)]",children:r.instance_name||r.hostname||"-"}),e.jsx("td",{"code-path":"src/components/server/CloudServerImport.tsx:553:29",className:"px-3 py-2 text-sm text-[var(--dg-text-secondary)]",children:r.private_ip||r.public_ip||"-"})]},r.instance_id))})]})}),v.length>0&&i.length>0&&e.jsxs("div",{"code-path":"src/components/server/CloudServerImport.tsx:565:19",className:"grid grid-cols-2 gap-4 p-4 rounded-lg bg-[var(--dg-bg-secondary)] border border-[var(--dg-border)]",children:[e.jsxs("div",{"code-path":"src/components/server/CloudServerImport.tsx:566:21",children:[e.jsxs("label",{"code-path":"src/components/server/CloudServerImport.tsx:567:23",className:"block text-xs font-medium text-[var(--dg-text-secondary)] mb-1",children:["SSH 端口",e.jsx("span",{"code-path":"src/components/server/CloudServerImport.tsx:569:25",className:"text-[var(--dg-text-muted)] ml-1",children:"(导入时统一设置)"})]}),e.jsx(V,{"code-path":"src/components/server/CloudServerImport.tsx:571:23",type:"number",placeholder:"22",value:ee,onChange:r=>re(r.target.value),className:"w-32 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),e.jsxs("div",{"code-path":"src/components/server/CloudServerImport.tsx:579:21",children:[e.jsxs("label",{"code-path":"src/components/server/CloudServerImport.tsx:580:23",className:"block text-xs font-medium text-[var(--dg-text-secondary)] mb-1",children:["关联凭证",e.jsx("span",{"code-path":"src/components/server/CloudServerImport.tsx:582:25",className:"text-[var(--dg-text-muted)] ml-1",children:"(可选,用于SSH远程管理)"})]}),e.jsxs("select",{"code-path":"src/components/server/CloudServerImport.tsx:584:23",value:M,onChange:r=>K(r.target.value),className:"w-full px-3 py-1.5 bg-[var(--dg-bg-tertiary)] border border-[var(--dg-border)] rounded-md text-[var(--dg-text-primary)] text-xs",children:[e.jsx("option",{"code-path":"src/components/server/CloudServerImport.tsx:589:25",value:"",children:"不使用凭据"}),pe.map(r=>e.jsxs("option",{"code-path":"src/components/server/CloudServerImport.tsx:591:27",value:String(r.id),children:[r.type==="ssh_key"?"🔑":"🔒"," ",r.name]},r.id))]})]})]})]})}),e.jsxs(qe,{"code-path":"src/components/server/CloudServerImport.tsx:605:9",className:"flex justify-between items-center",children:[e.jsx("div",{"code-path":"src/components/server/CloudServerImport.tsx:606:11",children:c>1&&!T&&e.jsxs(N,{"code-path":"src/components/server/CloudServerImport.tsx:608:15",variant:"outline",onClick:Ue,className:"border-[var(--dg-border)] text-[var(--dg-text-secondary)]",children:[e.jsx(er,{"code-path":"src/components/server/CloudServerImport.tsx:609:17",className:"h-4 w-4 mr-1"}),"上一步"]})}),e.jsx("div",{"code-path":"src/components/server/CloudServerImport.tsx:614:11",className:"flex gap-2",children:T?e.jsx(N,{"code-path":"src/components/server/CloudServerImport.tsx:616:15",onClick:Se,className:"bg-blue-600 hover:bg-blue-700",children:"完成"}):e.jsxs(e.Fragment,{children:[e.jsx(N,{"code-path":"src/components/server/CloudServerImport.tsx:621:17",variant:"outline",onClick:Se,className:"border-[var(--dg-border)] text-[var(--dg-text-secondary)]",children:"取消"}),c<4?e.jsxs(N,{"code-path":"src/components/server/CloudServerImport.tsx:625:19",onClick:ie,disabled:c===1&&!h||c===2&&!m||c===3&&n.length===0,className:"bg-blue-600 hover:bg-blue-700",children:["下一步",e.jsx(Fe,{"code-path":"src/components/server/CloudServerImport.tsx:635:21",className:"h-4 w-4 ml-1"})]}):e.jsx(N,{"code-path":"src/components/server/CloudServerImport.tsx:638:19",onClick:L,disabled:i.length===0||b,className:"bg-emerald-600 hover:bg-emerald-700",children:b?e.jsxs(e.Fragment,{children:[e.jsx(le,{"code-path":"src/components/server/CloudServerImport.tsx:645:25",className:"h-4 w-4 mr-1 animate-spin"}),"导入中..."]}):e.jsxs(e.Fragment,{children:[e.jsx(ve,{"code-path":"src/components/server/CloudServerImport.tsx:650:25",className:"h-4 w-4 mr-1"}),"确认导入 (",i.length,")"]})})]})})]})]})})}function xs({open:s,onOpenChange:x,serverId:o,serverName:a,serverIp:c,hasAuth:u=!0}){const h=t.useRef(null),g=t.useRef(null),m=t.useRef(null),F=t.useRef(null),[S,k]=t.useState(!1),[n,y]=t.useState(!1),[E,R]=t.useState([]),[w,f]=t.useState(""),[v,C]=t.useState(!1),[i,O]=t.useState(u);t.useEffect(()=>{!s||u||Nr.list().then(j=>R(j?.list||[])).catch(()=>{})},[s,u]);const W=async()=>{if(!(!w||!o))try{C(!0),await Xr.assign(o,Number(w)),J.success("凭据已关联"),O(!0)}catch(j){J.error(j?.message||"关联失败")}finally{C(!1)}};return t.useEffect(()=>{s||(O(u),f(""))},[s,u]),t.useEffect(()=>{if(!s||!o||!i)return;const j=new qr.Terminal({cursorBlink:!0,fontSize:13,fontFamily:'Menlo, Monaco, "Courier New", monospace',allowProposedApi:!0,theme:{background:"#0a0e14",foreground:"#d6d6d6",cursor:"#d6d6d6",selectionBackground:"rgba(255,255,255,0.2)"}}),z=new Qr.FitAddon;j.loadAddon(z),g.current=j,F.current=z;const p=location.protocol==="https:"?"wss":"ws",b=ir.getState().token||"",B=`${p}://${location.host}/ws/terminal?id=${o}&cols=80&rows=24&token=${encodeURIComponent(b)}`,T=new WebSocket(B);return m.current=T,j.onData(G=>{T.readyState===WebSocket.OPEN&&T.send(JSON.stringify({status:0,data:G}))}),T.onmessage=G=>{try{const ee=JSON.parse(G.data);ee.status===0&&typeof ee.data=="string"&&j.write(ee.data)}catch{j.write(typeof G.data=="string"?G.data:"")}},T.onopen=()=>{k(!0),h.current&&(j.open(h.current),requestAnimationFrame(()=>{try{z.fit(),j.focus()}catch{}}))},T.onclose=()=>{k(!1),j.write(`\r +\x1B[31m[连接已关闭]\x1B[0m\r +`)},T.onerror=()=>{j.write(`\r +\x1B[31m[连接发生错误]\x1B[0m\r +`)},()=>{try{T.close(),j.dispose()}catch{}g.current=null,m.current=null,k(!1)}},[s,o,i]),t.useEffect(()=>{if(!s)return;const j=h.current;if(!j)return;let z;const p=new ResizeObserver(()=>{clearTimeout(z),z=setTimeout(()=>{if(F.current&&g.current&&m.current)try{F.current.fit(),g.current.focus();const{cols:b,rows:B}=g.current;m.current.readyState===WebSocket.OPEN&&m.current.send(JSON.stringify({status:1,cols:b,rows:B}))}catch{}},60)});return p.observe(j),()=>{clearTimeout(z),p.disconnect()}},[s]),e.jsx(_e,{"code-path":"src/components/server/TerminalDialog.tsx:196:5",open:s,onOpenChange:x,children:e.jsxs(Te,{"code-path":"src/components/server/TerminalDialog.tsx:197:7",showCloseButton:!1,className:xe("bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] p-0 gap-0","!duration-0 !transition-none",n?"!max-w-none !w-screen !h-screen !rounded-none !translate-x-0 !translate-y-0 !left-0 !top-0":""),style:n?{maxWidth:"100vw",width:"100vw",height:"100vh"}:{maxWidth:"900px",width:"90vw"},children:[e.jsxs(Re,{"code-path":"src/components/server/TerminalDialog.tsx:209:9",className:"sr-only",children:["终端 - ",a]}),e.jsx(Me,{"code-path":"src/components/server/TerminalDialog.tsx:210:9",className:"sr-only",children:"SSH 终端连接"}),e.jsxs("div",{"code-path":"src/components/server/TerminalDialog.tsx:212:9",className:"flex items-center justify-between px-4 py-2 border-b border-[var(--dg-border)]",children:[e.jsxs("div",{"code-path":"src/components/server/TerminalDialog.tsx:213:11",className:"flex items-center gap-2 text-sm",children:[e.jsx("div",{"code-path":"src/components/server/TerminalDialog.tsx:214:13",className:xe("w-2 h-2 rounded-full",S?"bg-emerald-400":"bg-red-400")}),e.jsx("span",{"code-path":"src/components/server/TerminalDialog.tsx:215:13",className:"text-[var(--dg-text-primary)] font-medium",children:a}),e.jsxs("span",{"code-path":"src/components/server/TerminalDialog.tsx:216:13",className:"text-[var(--dg-text-muted)]",children:["(",c,")"]})]}),e.jsxs("div",{"code-path":"src/components/server/TerminalDialog.tsx:218:11",className:"flex items-center gap-1",children:[e.jsx("button",{"code-path":"src/components/server/TerminalDialog.tsx:219:13",onClick:()=>y(!n),className:"p-1.5 rounded hover:bg-[var(--dg-bg-hover)] text-[var(--dg-text-secondary)]",children:n?e.jsx(yr,{"code-path":"src/components/server/TerminalDialog.tsx:223:29",className:"h-4 w-4"}):e.jsx(fr,{"code-path":"src/components/server/TerminalDialog.tsx:223:65",className:"h-4 w-4"})}),e.jsx("button",{"code-path":"src/components/server/TerminalDialog.tsx:225:13",onClick:()=>x(!1),className:"p-1.5 rounded hover:bg-[var(--dg-bg-hover)] text-[var(--dg-text-secondary)]",children:e.jsx(ue,{"code-path":"src/components/server/TerminalDialog.tsx:229:15",className:"h-4 w-4"})})]})]}),!i&&e.jsxs("div",{"code-path":"src/components/server/TerminalDialog.tsx:235:11",className:"p-6 flex flex-col items-center justify-center gap-4",style:{height:"480px"},children:[e.jsx(vr,{"code-path":"src/components/server/TerminalDialog.tsx:236:13",className:"h-12 w-12 text-amber-400"}),e.jsxs("div",{"code-path":"src/components/server/TerminalDialog.tsx:237:13",className:"text-center",children:[e.jsx("p",{"code-path":"src/components/server/TerminalDialog.tsx:238:15",className:"text-[var(--dg-text-primary)] font-medium mb-1",children:"服务器未配置认证凭据"}),e.jsx("p",{"code-path":"src/components/server/TerminalDialog.tsx:239:15",className:"text-sm text-[var(--dg-text-muted)]",children:"请选择一个凭据用于 SSH 连接"})]}),E.length===0?e.jsx("p",{"code-path":"src/components/server/TerminalDialog.tsx:242:15",className:"text-xs text-[var(--dg-text-muted)]",children:"暂无可用凭据,请先去「凭证配置」添加"}):e.jsxs("select",{"code-path":"src/components/server/TerminalDialog.tsx:244:15",value:w,onChange:j=>f(j.target.value),className:"w-64 px-3 py-2 bg-[var(--dg-bg-tertiary)] border border-[var(--dg-border)] rounded-md text-[var(--dg-text-primary)] text-sm",children:[e.jsx("option",{"code-path":"src/components/server/TerminalDialog.tsx:249:17",value:"",children:"-- 选择凭据 --"}),E.map(j=>e.jsxs("option",{"code-path":"src/components/server/TerminalDialog.tsx:251:19",value:String(j.id),children:[j.type==="ssh_key"?"🔑":"🔒"," ",j.name]},j.id))]}),e.jsx(N,{"code-path":"src/components/server/TerminalDialog.tsx:257:13",onClick:W,disabled:!w||v,className:"bg-[var(--dg-blue)] hover:opacity-90 text-white",children:v?"关联中...":"确认连接"})]}),i&&e.jsx("div",{"code-path":"src/components/server/TerminalDialog.tsx:268:11",ref:h,className:"bg-[#0a0e14]",style:{height:n?"calc(100vh - 49px)":"480px"}})]})})}const is=s=>s<1024?`${s} B`:s<1048576?`${(s/1024).toFixed(1)} KB`:`${(s/1048576).toFixed(2)} MB`;function vs({open:s,onOpenChange:x,serverId:o,serverName:a}){const[c,u]=t.useState([]),[h,g]=t.useState([]),[m,F]=t.useState("/"),[S,k]=t.useState(!1),[n,y]=t.useState(""),[E,R]=t.useState(!1),[w,f]=t.useState(!1),v=t.useRef(null),C=t.useCallback(async p=>{if(o){k(!0),y("");try{const b=await te.listFiles(o,p),B=b?.data||b;u(B.items||[]),g(B.breadcrumbs||[]),F(B.path||p)}catch(b){y(b?.message||"加载目录失败"),u([])}finally{k(!1)}}},[o]);t.useEffect(()=>{s&&o&&(f(!1),C("/"))},[s,o,C]);const i=async p=>{if(o)try{await te.downloadFile(o,p)}catch(b){y("下载失败: "+(b?.message||""))}},O=async p=>{const b=p.target.files?.[0];if(!(!b||!o)){R(!0);try{await te.uploadFile(o,m,b),await C(m)}catch(B){y(B?.message||"上传失败")}finally{R(!1),v.current&&(v.current.value="")}}},W=async(p,b)=>{if(!(!o||!confirm(`确认删除 ${b?"目录":"文件"} "${p}"?`)))try{await te.deleteFile(o,p),await C(m)}catch(B){y(B?.message||"删除失败")}},j=async()=>{const p=prompt("输入目录名:");if(!p||!o)return;const b=m==="/"?`/${p}`:`${m}/${p}`;try{await te.mkdir(o,b),await C(m)}catch(B){y(B?.message||"创建失败")}},z=[...c].sort((p,b)=>p.is_dir!==b.is_dir?p.is_dir?-1:1:p.name.localeCompare(b.name));return e.jsx(_e,{"code-path":"src/components/server/ServerFileBrowser.tsx:145:5",open:s,onOpenChange:x,children:e.jsxs(Te,{"code-path":"src/components/server/ServerFileBrowser.tsx:146:7",showCloseButton:!1,onInteractOutside:p=>{E&&p.preventDefault()},className:xe("bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] p-0 gap-0","!duration-0 !transition-none",w?"!max-w-none !w-screen !h-screen !rounded-none":""),style:w?{maxWidth:"100vw",width:"100vw",height:"100vh"}:{maxWidth:"95vw",width:"1100px",maxHeight:"92vh"},children:[e.jsxs(Re,{"code-path":"src/components/server/ServerFileBrowser.tsx:164:9",className:"sr-only",children:["文件浏览 — ",a]}),e.jsx(Me,{"code-path":"src/components/server/ServerFileBrowser.tsx:165:9",className:"sr-only",children:"SFTP 文件管理 · 上传 · 下载 · 删除"}),e.jsxs("div",{"code-path":"src/components/server/ServerFileBrowser.tsx:168:9",className:"flex items-center justify-between px-4 py-2.5 border-b border-[var(--dg-border)] shrink-0",children:[e.jsxs("div",{"code-path":"src/components/server/ServerFileBrowser.tsx:169:11",className:"flex items-center gap-2 min-w-0",children:[e.jsx(wr,{"code-path":"src/components/server/ServerFileBrowser.tsx:170:13",className:"h-4 w-4 text-[var(--dg-blue)] shrink-0"}),e.jsx("span",{"code-path":"src/components/server/ServerFileBrowser.tsx:171:13",className:"text-[var(--dg-text-primary)] font-medium text-sm truncate",children:a}),e.jsx("span",{"code-path":"src/components/server/ServerFileBrowser.tsx:174:13",className:"text-[var(--dg-text-muted)] text-xs",children:"· SFTP 文件管理"})]}),e.jsxs("div",{"code-path":"src/components/server/ServerFileBrowser.tsx:176:11",className:"flex items-center gap-1",children:[e.jsx("button",{"code-path":"src/components/server/ServerFileBrowser.tsx:177:13",onClick:()=>f(!w),className:"p-1.5 rounded hover:bg-[var(--dg-bg-hover)] text-[var(--dg-text-secondary)]",title:w?"退出全屏":"全屏",children:w?e.jsx(yr,{"code-path":"src/components/server/ServerFileBrowser.tsx:182:29",className:"h-4 w-4"}):e.jsx(fr,{"code-path":"src/components/server/ServerFileBrowser.tsx:182:65",className:"h-4 w-4"})}),e.jsx("button",{"code-path":"src/components/server/ServerFileBrowser.tsx:184:13",onClick:()=>x(!1),className:"p-1.5 rounded hover:bg-[var(--dg-bg-hover)] text-[var(--dg-text-secondary)]",children:e.jsx(ue,{"code-path":"src/components/server/ServerFileBrowser.tsx:188:15",className:"h-4 w-4"})})]})]}),e.jsxs("div",{"code-path":"src/components/server/ServerFileBrowser.tsx:194:9",className:"flex items-center gap-2 px-4 py-2 border-b border-[var(--dg-border)] bg-[var(--dg-bg-primary)] shrink-0",children:[e.jsxs(N,{"code-path":"src/components/server/ServerFileBrowser.tsx:195:11",variant:"outline",size:"sm",className:"border-[var(--dg-border)] h-8",onClick:()=>C(m),children:[e.jsx(le,{"code-path":"src/components/server/ServerFileBrowser.tsx:197:13",className:"h-3.5 w-3.5 mr-1"}),"刷新"]}),e.jsxs("label",{"code-path":"src/components/server/ServerFileBrowser.tsx:199:11",children:[e.jsxs(N,{"code-path":"src/components/server/ServerFileBrowser.tsx:200:13",variant:"outline",size:"sm",className:"border-[var(--dg-border)] h-8 cursor-pointer",onClick:()=>v.current?.click(),disabled:E,children:[E?e.jsx(Le,{"code-path":"src/components/server/ServerFileBrowser.tsx:202:28",className:"h-3.5 w-3.5 mr-1 animate-spin"}):e.jsx(Xe,{"code-path":"src/components/server/ServerFileBrowser.tsx:202:84",className:"h-3.5 w-3.5 mr-1"}),"上传"]}),e.jsx("input",{"code-path":"src/components/server/ServerFileBrowser.tsx:205:13",ref:v,type:"file",className:"hidden",onChange:O})]}),e.jsxs(N,{"code-path":"src/components/server/ServerFileBrowser.tsx:207:11",variant:"outline",size:"sm",className:"border-[var(--dg-border)] h-8",onClick:j,children:[e.jsx(ds,{"code-path":"src/components/server/ServerFileBrowser.tsx:209:13",className:"h-3.5 w-3.5 mr-1"}),"新建目录"]}),n&&e.jsxs($,{"code-path":"src/components/server/ServerFileBrowser.tsx:212:13",variant:"outline",className:"border-red-500/30 text-red-400 ml-auto",children:[e.jsx(ue,{"code-path":"src/components/server/ServerFileBrowser.tsx:213:15",className:"h-3 w-3 mr-1 cursor-pointer",onClick:()=>y("")}),n]})]}),e.jsx("div",{"code-path":"src/components/server/ServerFileBrowser.tsx:220:9",className:"flex items-center gap-0.5 px-4 py-2 text-xs border-b border-[var(--dg-border)] bg-[var(--dg-bg-tertiary)] overflow-x-auto shrink-0",children:h.map((p,b)=>e.jsxs("span",{"code-path":"src/components/server/ServerFileBrowser.tsx:222:13",className:"flex items-center gap-0.5",children:[b===0?e.jsx("button",{"code-path":"src/components/server/ServerFileBrowser.tsx:224:17",onClick:()=>C("/"),className:"text-[var(--dg-text-secondary)] hover:text-[var(--dg-text-primary)] p-0.5",children:e.jsx(Rr,{"code-path":"src/components/server/ServerFileBrowser.tsx:228:19",className:"h-3.5 w-3.5"})}):e.jsx("button",{"code-path":"src/components/server/ServerFileBrowser.tsx:231:17",onClick:()=>C(p.path),className:"text-[var(--dg-blue)] hover:underline truncate max-w-[150px]",children:p.name}),b