Files
aiops/backend/static/assets/PipelineManager-C1vaTQ2Z.js
T
attacker 77c234b060 feat(audit): F1+F2 告警静默规则标记完成 + 审计日志CSV导出实现
F1 告警静默规则 [done]:
- 后端 alert_silence.go: CRUD + Toggle (onetime/daily/weekly 三模式)
- 告警引擎 isSilenced 集成 (alert_engine.go)
- 前端 SilenceRuleTab + SilenceDialog
- 路由 /alerts/silences 已注册

F2 审计日志导出 [done]:
- 重写 ExportAuditLogs: 真正的 CSV 导出 (encoding/csv + UTF-8 BOM)
- 支持 module/action/username/startTime/endTime 筛选
- 导出限制 10000 条防溢出,自动记录审计日志
- JSON 格式向后兼容 (format=json)
- 前端 exportLogs 传递查询参数

同时包含累积的前期工作:
- 目录重构 internal/ -> controller/model/router (v0.55-v0.57)
- 后端分层架构 dto/repository/service/utils
- 审计模块全功能 (终端审计/操作审计/登录日志)
- asciicast v2 录制格式
- SFTP 文件浏览器
- StatStrip 紧凑统计条
- 在线会话自动刷新
- LiveMonitor WebSocket 诊断修复

验证: go build ✅ | npm run build ✅ | Docker 部署 ✅ | 10 回归端点 ✅ | CSV 导出 ✅ | 静默 CRUD ✅
2026-06-25 20:16:30 +08:00

2 lines
62 KiB
JavaScript

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]}),X<a.length-1&&e.jsx("div",{"code-path":"src/components/deploy/PipelineManager.tsx:493:33",className:"flex items-center justify-center w-5 h-5 -mx-px z-10",children:e.jsx(be,{"code-path":"src/components/deploy/PipelineManager.tsx:494:35",className:"h-3.5 w-3.5",style:{color:ge+"CC"}})})]},X)})})]}),o&&e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:504:21",className:"border-t border-[var(--dg-border)]",children:[e.jsx(la,{"code-path":"src/components/deploy/PipelineManager.tsx:505:23",pipeline:s,clusterId:""}),h?e.jsx("div",{"code-path":"src/components/deploy/PipelineManager.tsx:507:25",className:"flex items-center justify-center py-6",children:e.jsx(w,{"code-path":"src/components/deploy/PipelineManager.tsx:507:80",className:"h-5 w-5 animate-spin text-[var(--dg-text-secondary)]"})}):t.length===0?e.jsx("div",{"code-path":"src/components/deploy/PipelineManager.tsx:509:25",className:"py-6 text-center text-[var(--dg-text-secondary)] text-sm",children:"暂无执行记录"}):e.jsxs("table",{"code-path":"src/components/deploy/PipelineManager.tsx:511:25",className:"w-full text-sm",children:[e.jsx("thead",{"code-path":"src/components/deploy/PipelineManager.tsx:512:27",className:"border-b border-[var(--dg-border)]",children:e.jsxs("tr",{"code-path":"src/components/deploy/PipelineManager.tsx:512:81",className:"bg-[var(--dg-bg-tertiary)]",children:[e.jsx("th",{"code-path":"src/components/deploy/PipelineManager.tsx:513:29",className:"px-4 py-2 text-left text-xs font-medium text-[var(--dg-text-secondary)]",children:"#"}),e.jsx("th",{"code-path":"src/components/deploy/PipelineManager.tsx:514:29",className:"px-4 py-2 text-left text-xs font-medium text-[var(--dg-text-secondary)]",children:"状态"}),e.jsx("th",{"code-path":"src/components/deploy/PipelineManager.tsx:515:29",className:"px-4 py-2 text-left text-xs font-medium text-[var(--dg-text-secondary)]",children:"触发人"}),e.jsx("th",{"code-path":"src/components/deploy/PipelineManager.tsx:516:29",className:"px-4 py-2 text-left text-xs font-medium text-[var(--dg-text-secondary)]",children:"耗时"}),e.jsx("th",{"code-path":"src/components/deploy/PipelineManager.tsx:517:29",className:"px-4 py-2 text-left text-xs font-medium text-[var(--dg-text-secondary)]",children:"时间"}),e.jsx("th",{"code-path":"src/components/deploy/PipelineManager.tsx:518:29",className:"px-4 py-2 text-right text-xs font-medium text-[var(--dg-text-secondary)]",children:"操作"})]})}),e.jsx("tbody",{"code-path":"src/components/deploy/PipelineManager.tsx:520:27",children:t.map(l=>e.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<m.length-1&&e.jsx("div",{"code-path":"src/components/deploy/PipelineManager.tsx:714:27",className:"flex items-center justify-center w-4 h-5 -mx-px z-10",children:e.jsx(be,{"code-path":"src/components/deploy/PipelineManager.tsx:715:29",className:"h-3 w-3",style:{color:t.color}})})]},a)})})]}),e.jsxs("div",{"code-path":"src/components/deploy/PipelineManager.tsx:726:13",className:"border-t border-[var(--dg-border)] pt-4",children:[e.jsx(d,{"code-path":"src/components/deploy/PipelineManager.tsx:727:15",className:"mb-2 block",children:"触发方式"}),e.jsx("div",{"code-path":"src/components/deploy/PipelineManager.tsx:728:15",className:"flex gap-1 bg-[var(--dg-bg-secondary)] rounded-lg p-1 border border-[var(--dg-border)]",children:[{key:"manual",label:"手动",desc:"手动触发执行"},{key:"git_push",label:"代码推送",desc:"Git Push 自动触发"},{key:"cron",label:"定时",desc:"Cron 定时执行"},{key:"webhook",label:"Webhook",desc:"外部 Webhook 调用"}].map(s=>{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};