chainlesschain 0.157.8 → 0.158.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/bin/chainlesschain.js +0 -0
  2. package/package.json +1 -1
  3. package/src/assets/web-panel/.build-hash +1 -1
  4. package/src/assets/web-panel/assets/{AIOps-Dmur24hV.js → AIOps-9QEKGr43.js} +1 -1
  5. package/src/assets/web-panel/assets/{ActionButton-BiXQ5MCX.js → ActionButton-BQElVBgD.js} +1 -1
  6. package/src/assets/web-panel/assets/{Analytics-BrBdBLPi.js → Analytics-DbZbFR_a.js} +2 -2
  7. package/src/assets/web-panel/assets/AppLayout-BbfBwVfE.js +1 -0
  8. package/src/assets/web-panel/assets/AppLayout-CKMl4NLf.css +1 -0
  9. package/src/assets/web-panel/assets/{Audit-DLYnWfX_.js → Audit-DzddAZVx.js} +1 -1
  10. package/src/assets/web-panel/assets/{Backup-CKHLFZZS.js → Backup-D46qSgzQ.js} +1 -1
  11. package/src/assets/web-panel/assets/{BaseInput-B7lryLAY.js → BaseInput-60t9IMEz.js} +1 -1
  12. package/src/assets/web-panel/assets/Chat-3Kj2JQP4.js +2 -0
  13. package/src/assets/web-panel/assets/{Checkbox-DAqCmQtS.js → Checkbox-Ba1Rf2Ea.js} +1 -1
  14. package/src/assets/web-panel/assets/Codegen-AVAcL7NA.css +1 -0
  15. package/src/assets/web-panel/assets/Codegen-WiYmL3oB.js +1 -0
  16. package/src/assets/web-panel/assets/{Col-BxNojt4A.js → Col-D2zhpSqE.js} +1 -1
  17. package/src/assets/web-panel/assets/{Community-BG7vSQg7.js → Community-DgqmUGwT.js} +1 -1
  18. package/src/assets/web-panel/assets/{Compact-Bl_FTVcP.js → Compact-D_dbJDbi.js} +1 -1
  19. package/src/assets/web-panel/assets/{Compliance-CL6jUiTf.js → Compliance-BVcVb-e2.js} +1 -1
  20. package/src/assets/web-panel/assets/{Cowork-Q37C8zUh.js → Cowork-pgKzBNDo.js} +4 -4
  21. package/src/assets/web-panel/assets/{Cron-Kq3eJC0L.js → Cron-Cs5QaKTP.js} +2 -2
  22. package/src/assets/web-panel/assets/{Crosschain-CvI5bEH8.js → Crosschain-pjWfIM8s.js} +1 -1
  23. package/src/assets/web-panel/assets/{DID-BD9PovRf.js → DID-DQtsjz3X.js} +2 -2
  24. package/src/assets/web-panel/assets/{Dashboard-BXSj5-OS.js → Dashboard-sqj42zKx.js} +2 -2
  25. package/src/assets/web-panel/assets/{Dropdown-BcEYFA4h.js → Dropdown-BM_ljd87.js} +1 -1
  26. package/src/assets/web-panel/assets/Federation-BftELHDw.css +1 -0
  27. package/src/assets/web-panel/assets/Federation-CId-3zn6.js +1 -0
  28. package/src/assets/web-panel/assets/{FormItemContext-C_8M0L9X.js → FormItemContext-CnzbixSE.js} +1 -1
  29. package/src/assets/web-panel/assets/{Git-DW9KmRrN.js → Git-B38QeOPF.js} +2 -2
  30. package/src/assets/web-panel/assets/{Governance--0gVd3YR.js → Governance-DrGkAjd1.js} +1 -1
  31. package/src/assets/web-panel/assets/{Inference-CSuaikJO.js → Inference-BjkHB4sD.js} +1 -1
  32. package/src/assets/web-panel/assets/{KnowledgeGraph-Bz8-Uh6r.js → KnowledgeGraph-Trs1XJFK.js} +1 -1
  33. package/src/assets/web-panel/assets/{Logs-BMTqVPem.js → Logs-B39LUZs9.js} +2 -2
  34. package/src/assets/web-panel/assets/{Marketplace-CTZqO_RV.js → Marketplace-BnpOoITi.js} +1 -1
  35. package/src/assets/web-panel/assets/{McpTools-IN5l2BCN.js → McpTools-DbwkdBUE.js} +2 -2
  36. package/src/assets/web-panel/assets/{Memory-DEJ96vkh.js → Memory-BHXHpldt.js} +2 -2
  37. package/src/assets/web-panel/assets/NLProgramming-B3BALajs.js +1 -0
  38. package/src/assets/web-panel/assets/{Notes-DAP1s6Bg.js → Notes-u6lLTv0t.js} +2 -2
  39. package/src/assets/web-panel/assets/{Organization-CutzdziK.js → Organization-CQ1X722j.js} +4 -4
  40. package/src/assets/web-panel/assets/{Overflow-CFLJpWAb.js → Overflow-DHKu8e8g.js} +1 -1
  41. package/src/assets/web-panel/assets/{P2P-H7hLODDc.js → P2P-BflX74Hm.js} +2 -2
  42. package/src/assets/web-panel/assets/{Permissions-B7UejC3D.js → Permissions-B2XrAUBW.js} +3 -3
  43. package/src/assets/web-panel/assets/Pipeline-C0K9-DnR.js +1 -0
  44. package/src/assets/web-panel/assets/Privacy-BKPoZngH.js +1 -0
  45. package/src/assets/web-panel/assets/{ProjectSettings-BiKBzbRF.js → ProjectSettings-C34C7hFt.js} +2 -2
  46. package/src/assets/web-panel/assets/{Projects-asWgm0Iz.js → Projects-DLvUzeIB.js} +2 -2
  47. package/src/assets/web-panel/assets/{Providers-C2eO_XrC.js → Providers-BFiMVWaM.js} +2 -2
  48. package/src/assets/web-panel/assets/{Recommend-CIZjeClx.js → Recommend-BmUhysGC.js} +1 -1
  49. package/src/assets/web-panel/assets/Reputation-BlfSvJww.js +1 -0
  50. package/src/assets/web-panel/assets/{Row-BBRGnkyd.js → Row-Dl74576S.js} +1 -1
  51. package/src/assets/web-panel/assets/{RssFeed-B4jpCYCI.js → RssFeed-9_MkDUxZ.js} +3 -3
  52. package/src/assets/web-panel/assets/Search-BTk9rglb.css +1 -0
  53. package/src/assets/web-panel/assets/Search-CSRY_TYa.js +1 -0
  54. package/src/assets/web-panel/assets/{Security-D2BQD7tk.js → Security-DfDoKfkl.js} +4 -4
  55. package/src/assets/web-panel/assets/{Services-VasZTmqN.js → Services-7Blny0Jc.js} +2 -2
  56. package/src/assets/web-panel/assets/{Skeleton-1joyz4wO.js → Skeleton-6CF_3QUY.js} +1 -1
  57. package/src/assets/web-panel/assets/Skills-DowQcRe1.js +1 -0
  58. package/src/assets/web-panel/assets/{Sla-DTbGerEL.js → Sla-B93c8j92.js} +1 -1
  59. package/src/assets/web-panel/assets/{Tasks-DI3oKTDz.js → Tasks-Db9TRjE7.js} +1 -1
  60. package/src/assets/web-panel/assets/{Templates-C9Z_82IH.js → Templates-DJ_hvs5c.js} +1 -1
  61. package/src/assets/web-panel/assets/{Tenant-kLu9x3Ty.js → Tenant-BXS8s6vl.js} +1 -1
  62. package/src/assets/web-panel/assets/Tokens-CvmTVU7E.js +1 -0
  63. package/src/assets/web-panel/assets/Tokens-KvJRHQcl.css +1 -0
  64. package/src/assets/web-panel/assets/{Trigger-BIXZjkDZ.js → Trigger-BenSsaoN.js} +1 -1
  65. package/src/assets/web-panel/assets/Trust-BLI308Ik.css +1 -0
  66. package/src/assets/web-panel/assets/Trust-HMz40LfZ.js +1 -0
  67. package/src/assets/web-panel/assets/{VideoEditing-nIRTUjK_.js → VideoEditing-DEhH42sI.js} +1 -1
  68. package/src/assets/web-panel/assets/{Wallet-bO-fXxBx.js → Wallet-AGwfOdTM.js} +4 -4
  69. package/src/assets/web-panel/assets/{WebAuthn-uNwYx1Yn.js → WebAuthn-DK5tKWul.js} +4 -4
  70. package/src/assets/web-panel/assets/{WorkflowEditor-Bw6cIw_h.js → WorkflowEditor-vlujdL6I.js} +1 -1
  71. package/src/assets/web-panel/assets/{colors-WgDc41S9.js → colors-BiB5aDao.js} +1 -1
  72. package/src/assets/web-panel/assets/{compact-item-BI2RK_Ub.js → compact-item-CHderV9n.js} +1 -1
  73. package/src/assets/web-panel/assets/{createContext-gy9ZhS49.js → createContext-DMZ-5dy2.js} +1 -1
  74. package/src/assets/web-panel/assets/{hasIn-BeuofWqK.js → hasIn-BKDBYP3s.js} +1 -1
  75. package/src/assets/web-panel/assets/icons-ukMaZ3tx.js +57 -0
  76. package/src/assets/web-panel/assets/{index-B1KhJnQM.js → index-7fxCGMoL.js} +1 -1
  77. package/src/assets/web-panel/assets/{index-CUV4Xqwc.js → index-7pqZqPD2.js} +1 -1
  78. package/src/assets/web-panel/assets/{index-BhwkejpN.js → index-A4RpHMOa.js} +1 -1
  79. package/src/assets/web-panel/assets/{index--V8HSAh9.js → index-AIdelwOe.js} +1 -1
  80. package/src/assets/web-panel/assets/index-B5oebI6W.js +1 -0
  81. package/src/assets/web-panel/assets/{index-BIlQFerH.js → index-B7fivpG2.js} +1 -1
  82. package/src/assets/web-panel/assets/{index-ChQfosO1.js → index-BBWUR4u4.js} +1 -1
  83. package/src/assets/web-panel/assets/{index-bpC7BiFY.js → index-BBk2e7vJ.js} +2 -2
  84. package/src/assets/web-panel/assets/{index-CCe5JJYI.js → index-BRRFK-im.js} +1 -1
  85. package/src/assets/web-panel/assets/{index-t8Iy1rHD.js → index-BVOI707f.js} +1 -1
  86. package/src/assets/web-panel/assets/{index-Cwuee4M2.js → index-BadelvSE.js} +1 -1
  87. package/src/assets/web-panel/assets/{index-DLcTmwiN.js → index-BfKFNptm.js} +3 -3
  88. package/src/assets/web-panel/assets/{index-BSrnzqkD.js → index-BgDX-tzO.js} +1 -1
  89. package/src/assets/web-panel/assets/{index-CFjz2AoU.js → index-BjSojphX.js} +1 -1
  90. package/src/assets/web-panel/assets/{index-vwTt5gIV.js → index-BlXskar6.js} +1 -1
  91. package/src/assets/web-panel/assets/{index-D3LHutKn.js → index-BryAkWUJ.js} +1 -1
  92. package/src/assets/web-panel/assets/{index-Q7v4BZgp.js → index-C1p_dZw0.js} +3 -3
  93. package/src/assets/web-panel/assets/{index-BhSfMAk_.js → index-CBYNsy51.js} +1 -1
  94. package/src/assets/web-panel/assets/{index-IXyQceyp.js → index-CEpcKl17.js} +2 -2
  95. package/src/assets/web-panel/assets/{index-B_Jn0gUS.js → index-CUT3Nmzx.js} +1 -1
  96. package/src/assets/web-panel/assets/{index-Ct1YvTCX.js → index-CbpCY2ch.js} +2 -2
  97. package/src/assets/web-panel/assets/index-D3PGpBPm.js +1 -0
  98. package/src/assets/web-panel/assets/{index-CwzHos3n.js → index-D3lD9wgX.js} +1 -1
  99. package/src/assets/web-panel/assets/index-D5Beu9ZA.js +1 -0
  100. package/src/assets/web-panel/assets/{index-Dxy2NQqS.js → index-DRRzH4Ge.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-BeI4fOXN.js → index-DRcTAUJA.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-CndKqpaA.js → index-DZ8MjPLC.js} +1 -1
  103. package/src/assets/web-panel/assets/index-DfcXDy2A.js +36 -0
  104. package/src/assets/web-panel/assets/index-DtDFSCfE.js +12 -0
  105. package/src/assets/web-panel/assets/{index-BVg8Wf40.js → index-DvI8Xtzv.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-pGLDMYoo.js → index-DvfAkHw8.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-DhwwIcoT.js → index-DyXslU_B.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-CBI2Y4Kj.js → index-MoLxDrkb.js} +2 -2
  109. package/src/assets/web-panel/assets/{index-D_bHyAnC.js → index-Ncxqj2UN.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-t5BUMwJ1.js → index-YgC7QI1N.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-BqUqxSm3.js → index-_sntSncx.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-CBfv-ndK.js → index-uujjC_4g.js} +1 -1
  113. package/src/assets/web-panel/assets/index-yMt4C1Gh.js +1 -0
  114. package/src/assets/web-panel/assets/{initDefaultProps-C1zn_AKT.js → initDefaultProps-B2vQoQga.js} +1 -1
  115. package/src/assets/web-panel/assets/{motion-BflWvLDD.js → motion-D2eluOJu.js} +1 -1
  116. package/src/assets/web-panel/assets/{move-TfXJb-sS.js → move-CgcvSoZ7.js} +1 -1
  117. package/src/assets/web-panel/assets/{omit-COjrlUIA.js → omit-DvLh7wH1.js} +1 -1
  118. package/src/assets/web-panel/assets/{pickAttrs-1WCywewt.js → pickAttrs-BsseBclw.js} +1 -1
  119. package/src/assets/web-panel/assets/{placementArrow-y75Pew0G.js → placementArrow-XLLtr9qD.js} +1 -1
  120. package/src/assets/web-panel/assets/{responsiveObserve-BDt6Mlnb.js → responsiveObserve-ByCb5zZK.js} +1 -1
  121. package/src/assets/web-panel/assets/{slide-B1oHu6JW.js → slide-CeP5JCiZ.js} +1 -1
  122. package/src/assets/web-panel/assets/{statusUtils-CO9QQaYQ.js → statusUtils-DMVoo96t.js} +1 -1
  123. package/src/assets/web-panel/assets/{styleChecker-C2ONfKU2.js → styleChecker-Cz5mJgc8.js} +1 -1
  124. package/src/assets/web-panel/assets/{transition-atE2sWdv.js → transition-DSe9CgZe.js} +1 -1
  125. package/src/assets/web-panel/assets/{useConfigInject-DIKG5Y4I.js → useConfigInject-DCcT0grw.js} +1 -1
  126. package/src/assets/web-panel/assets/{useFlexGapSupport-C0OopxrG.js → useFlexGapSupport-BZkoDuF3.js} +1 -1
  127. package/src/assets/web-panel/assets/{vnode-Cryb4eNl.js → vnode-Dexy2NN9.js} +1 -1
  128. package/src/assets/web-panel/assets/{zoom-zuDCIwwE.js → zoom-CDfM_sRk.js} +1 -1
  129. package/src/assets/web-panel/index.html +2 -2
  130. package/src/commands/nlprog.js +25 -15
  131. package/src/gateways/ws/ws-server.js +12 -1
  132. package/src/lib/web-ui-server.js +33 -0
  133. package/src/assets/web-panel/assets/AppLayout-DCrLKryi.css +0 -1
  134. package/src/assets/web-panel/assets/AppLayout-DGosvMBr.js +0 -1
  135. package/src/assets/web-panel/assets/Chat-Ga0oUawB.js +0 -2
  136. package/src/assets/web-panel/assets/NLProgramming-BMftRM4D.js +0 -1
  137. package/src/assets/web-panel/assets/Pipeline-DhmIDzq5.js +0 -1
  138. package/src/assets/web-panel/assets/Privacy-D98lbFiD.js +0 -1
  139. package/src/assets/web-panel/assets/Reputation-Dq21I6NZ.js +0 -1
  140. package/src/assets/web-panel/assets/Skills-BkTmE8SJ.js +0 -1
  141. package/src/assets/web-panel/assets/icons-E3MGhN6s.js +0 -57
  142. package/src/assets/web-panel/assets/index-B4FsQ2CI.js +0 -1
  143. package/src/assets/web-panel/assets/index-CK4CCFyw.js +0 -1
  144. package/src/assets/web-panel/assets/index-CapUO117.js +0 -12
  145. package/src/assets/web-panel/assets/index-CsESExuO.js +0 -1
  146. package/src/assets/web-panel/assets/index-DPaLf3-g.js +0 -36
  147. package/src/assets/web-panel/assets/index-TpCAHpWv.js +0 -1
@@ -1 +1 @@
1
- import{u as tt}from"./ws-Bv7YH0VB.js";import{s as Pe}from"./community-parser-CO25nZFt.js";import{_ as ot}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{E as at}from"./useConfigInject-DIKG5Y4I.js";import{a as _}from"./index-DLcTmwiN.js";import{O as lt,aa as nt,a as we,a7 as rt,a8 as st,au as it,at as ut,av as pt}from"./icons-E3MGhN6s.js";import{l as ct,F as y,D as d,c as e,x as o,m as g,G as b,q as f,r as S,v as s,J as u,u as x,H as N,L as M,N as dt,I as i,j as ft,a as he}from"./vendor-BVetwVfk.js";import"./index-DPaLf3-g.js";import"./transition-atE2sWdv.js";import"./Keyframes-C7fCrnlS.js";import"./Portal-CHsntPCQ.js";import"./index-U4Zd5IK6.js";function R(r){const n=Pe(r);if(!n)return null;try{return JSON.parse(n)}catch{}const p=n.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!p)return null;try{return JSON.parse(p[0])}catch{return null}}const fe=Object.freeze(["draft","active","passed","rejected","expired"]),ae=Object.freeze(["parameter_change","feature_request","policy_update","budget_allocation"]),vt=Object.freeze(["yes","no","abstain"]);function O(r,n=0){return typeof r=="number"&&Number.isFinite(r)?r:n}function q(r){if(!r)return{noDb:!1,error:""};const n=Pe(r),p=/Database not available/i.test(n);return{noDb:p,error:p?"Database not available":""}}function yt(r,n=0){if(!r||typeof r!="object")return null;const p=r.id||"";return p?{key:p,id:p,name:String(r.name||""),description:String(r.description||""),_idx:n}:null}function mt(r){const n=R(r);return Array.isArray(n)?n.map(yt).filter(Boolean):[]}function _t(r,n=0){if(!r||typeof r!="object")return null;const p=r.id||"";return p?{key:p,id:p,title:String(r.title||""),description:r.description??"",type:String(r.type||"feature_request"),proposerDid:r.proposerDid??"",status:String(r.status||"draft").toLowerCase(),impactLevel:r.impactLevel??"",impactAnalysis:r.impactAnalysis??null,voteYes:O(r.voteYes,0),voteNo:O(r.voteNo,0),voteAbstain:O(r.voteAbstain,0),votingStartsAt:r.votingStartsAt??null,votingEndsAt:r.votingEndsAt??null,metadata:r.metadata??null,createdAt:r.createdAt??null,_idx:n}:null}function bt(r){const n=R(r);return Array.isArray(n)?n.map(_t).filter(Boolean):[]}function gt(r,n=0){if(!r||typeof r!="object")return null;const p=r.id||"";if(!p)return null;const C=String(r.vote||"").toLowerCase();return{key:p,id:p,proposalId:String(r.proposalId||""),voterDid:String(r.voterDid||""),vote:(vt.includes(C),C),reason:r.reason??"",weight:O(r.weight,1),createdAt:r.createdAt??null,_idx:n}}function xt(r){const n=R(r);return Array.isArray(n)?n.map(gt).filter(Boolean):[]}function kt(r){const n=R(r);return!n||typeof n!="object"||Array.isArray(n)?null:{impactLevel:String(n.impactLevel||""),affectedComponents:Array.isArray(n.affectedComponents)?n.affectedComponents.filter(p=>typeof p=="string"):[],riskScore:O(n.riskScore,0),benefitScore:O(n.benefitScore,0),estimatedEffort:String(n.estimatedEffort||""),communitySentiment:String(n.communitySentiment||""),recommendations:Array.isArray(n.recommendations)?n.recommendations.filter(p=>typeof p=="string"):[],analyzedAt:n.analyzedAt??null}}function St(r){const n=R(r);return!n||typeof n!="object"||Array.isArray(n)?null:{proposalId:String(n.proposalId||""),predictedOutcome:String(n.predictedOutcome||""),confidence:O(n.confidence,0),yesProb:O(n.yesProb,0),noProb:O(n.noProb,0),abstainProb:O(n.abstainProb,0),basedOn:String(n.basedOn||""),sampleSize:O(n.sampleSize,0)}}const zt={proposalCount:0,voteCount:0,byStatus:{},byType:{}};function Ct(r){const n=JSON.parse(JSON.stringify(zt));for(const C of fe)n.byStatus[C]=0;for(const C of ae)n.byType[C]=0;const p=R(r);if(!p||typeof p!="object"||Array.isArray(p))return n;if(n.proposalCount=O(p.proposalCount,0),n.voteCount=O(p.voteCount,0),p.byStatus&&typeof p.byStatus=="object")for(const[C,L]of Object.entries(p.byStatus))typeof L=="number"&&Number.isFinite(L)&&(n.byStatus[C]=L);if(p.byType&&typeof p.byType=="object")for(const[C,L]of Object.entries(p.byType))typeof L=="number"&&Number.isFinite(L)&&(n.byType[C]=L);return n}function Q(r){if(r==null||r==="")return"—";const n=typeof r=="number"?new Date(r):new Date(String(r));return isNaN(n.getTime())?String(r):n.toLocaleString("zh-CN",{hour12:!1})}const At={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Dt={class:"type-head"},wt={class:"type-count"},ht={class:"type-name"},Pt={class:"type-desc"},Ot={class:"filter-bar"},jt={style:{color:"var(--text-primary)","font-weight":"500"}},Lt={style:{color:"var(--text-secondary)","font-size":"11px","font-family":"monospace","margin-top":"2px"}},Tt={style:{"font-family":"monospace","font-size":"12px"}},$t={style:{color:"#52c41a"}},Nt={style:{color:"#ff4d4f"}},Et={style:{color:"var(--text-muted)"}},Ut={key:1,style:{color:"var(--text-muted)"}},It={key:5,style:{color:"var(--text-secondary)","font-size":"11px"}},Mt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},Ft={key:0,style:{"padding-top":"8px"}},qt={style:{"font-family":"monospace","font-size":"12px"}},Rt={key:0,style:{"font-family":"monospace","font-size":"12px"}},Vt={key:1,style:{color:"var(--text-muted)"}},Bt={key:0,style:{"white-space":"pre-wrap"}},Yt={key:1,style:{color:"var(--text-muted)"}},Gt={style:{"margin-left":"8px",color:"var(--text-muted)","font-size":"11px"}},Jt={style:{"margin-left":"8px","font-family":"monospace","font-size":"11px",color:"var(--text-secondary)"}},Kt={key:0,style:{"margin-left":"8px",color:"var(--text-secondary)","font-size":"12px"}},Ht={style:{"margin-left":"auto",color:"var(--text-muted)","font-size":"11px"}},Wt={key:0,style:{"padding-top":"8px"}},Qt={style:{"margin-bottom":"8px"}},Xt={key:0,style:{"padding-top":"8px"}},Zt={style:{"text-align":"center","margin-bottom":"20px"}},eo={style:{color:"#52c41a"}},to={style:{color:"#ff4d4f"}},oo={style:{color:"var(--text-muted)"}},ao={__name:"Governance",setup(r){const n=tt(),p=at.PRESENTED_IMAGE_SIMPLE,C=S(!1),L=S(!1),le=S(!1),ve=S([]),ye=S([]),w=S({proposalCount:0,voteCount:0,byStatus:{},byType:{}}),ne=S({noDb:!1,error:""}),me=S("proposals"),V=S(""),B=S(""),X=S(!1),Z=S(!1),re=S(!1),se=S(!1),ie=S(!1),k=he({title:"",type:"feature_request",proposerDid:"",description:""}),z=he({voterDid:"",value:"yes",weight:1,reason:""}),c=S(null),ee=S([]),h=S(null),P=S(null),Oe=[{title:"标题",key:"title"},{title:"类型",key:"type",width:"130px"},{title:"状态",key:"status",width:"100px"},{title:"票数",key:"tally",width:"180px"},{title:"影响",key:"impact",width:"100px"},{title:"创建时间",key:"createdAt",width:"160px"},{title:"操作",key:"action",width:"320px"}],je=ft(()=>{let l=ve.value;return V.value&&(l=l.filter(t=>t.status===V.value)),B.value&&(l=l.filter(t=>t.type===B.value)),l});function te(l){return{draft:"草稿",active:"进行中",passed:"已通过",rejected:"已否决",expired:"已过期"}[l]||l}function ue(l){return{draft:"default",active:"processing",passed:"green",rejected:"red",expired:"default"}[l]||"default"}function Le(l){return{draft:"#888",active:"#1677ff",passed:"#52c41a",rejected:"#ff4d4f",expired:"#888"}[l]||"#888"}function Y(l){return{parameter_change:"参数变更",feature_request:"功能请求",policy_update:"策略更新",budget_allocation:"预算分配"}[l]||l}function G(l){return{parameter_change:"cyan",feature_request:"blue",policy_update:"purple",budget_allocation:"gold"}[l]||"default"}function Te(l){return{parameter_change:"#13c2c2",feature_request:"#1677ff",policy_update:"#722ed1",budget_allocation:"#faad14"}[l]||"#888"}function pe(l){return{low:"低",medium:"中",high:"高",critical:"关键"}[l]||l}function _e(l){return{low:"default",medium:"blue",high:"orange",critical:"red"}[l]||"default"}function $e(l){return{low:"#888",medium:"#1677ff",high:"#faad14",critical:"#ff4d4f"}[l]||"#888"}function Ne(l){return{yes:"赞成",no:"反对",abstain:"弃权"}[l]||l}function Ee(l){return{yes:"green",no:"red",abstain:"default"}[l]||"default"}function Ue(l){return{small:"小",medium:"中",large:"大"}[l]||l||"—"}function Ie(l){return{positive:"积极",cautious:"谨慎",negative:"负面"}[l]||l||"—"}function Me(l){const t=l.voteYes+l.voteNo;return t?Math.round(l.voteYes/t*100):0}function be(l,t){return t?Math.round(l/t*100):0}async function J(){C.value=!0,ne.value={noDb:!1,error:""};try{const[l,t,m]=await Promise.all([n.execute("governance types --json",8e3).catch(()=>({output:""})),n.execute("governance list --json",1e4).catch(()=>({output:""})),n.execute("governance stats --json",8e3).catch(()=>({output:""}))]),j=[t,m].map(K=>q(K.output)).find(K=>K.noDb);j&&(ne.value=j),ye.value=mt(l.output),ve.value=bt(t.output),w.value=Ct(m.output)}catch(l){_.error("加载治理数据失败: "+(l?.message||l))}finally{C.value=!1}}async function Fe(){if(!k.title.trim()){_.warning("请填写标题");return}L.value=!0;try{const l=[`governance create "${k.title.trim().replace(/"/g,'\\"')}"`];l.push(`-t ${k.type}`),k.proposerDid.trim()&&l.push(`-p "${k.proposerDid.trim().replace(/"/g,'\\"')}"`),k.description.trim()&&l.push(`-d "${k.description.trim().replace(/"/g,'\\"')}"`),l.push("--json");const{output:t}=await n.execute(l.join(" "),1e4);if(q(t).noDb){_.error("需要先 cc init 初始化项目");return}if(!/"id"/.test(t)){_.error("创建失败: "+t.slice(0,120));return}_.success("提案已创建(草稿)"),X.value=!1,xe(),await J()}catch(l){_.error("创建失败: "+(l?.message||l))}finally{L.value=!1}}async function qe(l){await ge(`governance activate ${l.id} --json`,"已启动投票")}async function Re(l){await ge(`governance close ${l.id} --json`,"投票已关闭")}async function ge(l,t){try{const{output:m}=await n.execute(l,1e4);if(q(m).noDb){_.error("需要先 cc init 初始化项目");return}if(!/"id"|"proposalId"|"passed"/.test(m)){_.error("操作失败: "+m.slice(0,120));return}_.success(t),await J()}catch(m){_.error("操作失败: "+(m?.message||m))}}function Ve(l){c.value=l,z.voterDid="",z.value="yes",z.weight=1,z.reason="",Z.value=!0}async function Be(){if(c.value){if(!z.voterDid.trim()){_.warning("请填写投票人 DID");return}le.value=!0;try{const l=[`governance vote ${c.value.id}`,`"${z.voterDid.trim().replace(/"/g,'\\"')}"`,z.value,`-w ${z.weight}`];z.reason.trim()&&l.push(`-r "${z.reason.trim().replace(/"/g,'\\"')}"`),l.push("--json");const{output:t}=await n.execute(l.join(" "),8e3);if(q(t).noDb){_.error("需要先 cc init 初始化项目");return}if(!/"id"/.test(t)){_.error("投票失败: "+t.slice(0,120));return}_.success("投票已记录"),Z.value=!1,await J()}catch(l){_.error("投票失败: "+(l?.message||l))}finally{le.value=!1}}}async function Ye(l){c.value=l,ee.value=[],re.value=!0;try{const{output:t}=await n.execute(`governance votes ${l.id} --json`,8e3);ee.value=xt(t)}catch{}}async function Ge(l){c.value=l,h.value=null;try{const{output:t}=await n.execute(`governance analyze ${l.id} --json`,8e3);if(q(t).noDb){_.error("需要先 cc init 初始化项目");return}const j=kt(t);if(!j){_.error("分析失败: "+t.slice(0,120));return}h.value=j,se.value=!0}catch(t){_.error("分析失败: "+(t?.message||t))}}async function Je(l){c.value=l,P.value=null;try{const{output:t}=await n.execute(`governance predict ${l.id} --json`,8e3);if(q(t).noDb){_.error("需要先 cc init 初始化项目");return}const j=St(t);if(!j){_.error("预测失败: "+t.slice(0,120));return}P.value=j,ie.value=!0}catch(t){_.error("预测失败: "+(t?.message||t))}}function xe(){k.title="",k.type="feature_request",k.proposerDid="",k.description=""}return ct(J),(l,t)=>{const m=f("a-button"),j=f("a-space"),K=f("a-alert"),E=f("a-statistic"),T=f("a-card"),$=f("a-col"),oe=f("a-row"),A=f("a-tag"),I=f("a-radio-button"),ce=f("a-radio-group"),F=f("a-progress"),Ke=f("a-popconfirm"),He=f("a-table"),ke=f("a-tab-pane"),We=f("a-tabs"),de=f("a-input"),U=f("a-form-item"),Qe=f("a-select-option"),Xe=f("a-select"),Se=f("a-textarea"),ze=f("a-form"),H=f("a-modal"),Ze=f("a-input-number"),D=f("a-descriptions-item"),Ce=f("a-descriptions"),et=f("a-empty"),Ae=f("a-list-item"),De=f("a-list");return s(),y("div",null,[d("div",At,[t[19]||(t[19]=d("div",null,[d("h2",{class:"page-title"},"社区治理"),d("p",{class:"page-sub"},"提案 · 加权投票 · 启发式影响分析 · 投票预测")],-1)),e(j,null,{default:o(()=>[e(m,{loading:C.value,onClick:J},{icon:o(()=>[e(x(lt))]),default:o(()=>[t[17]||(t[17]=u(" 刷新 ",-1))]),_:1},8,["loading"]),e(m,{type:"primary",onClick:t[0]||(t[0]=a=>X.value=!0)},{icon:o(()=>[e(x(nt))]),default:o(()=>[t[18]||(t[18]=u(" 创建提案 ",-1))]),_:1})]),_:1})]),ne.value.noDb?(s(),g(K,{key:0,type:"info","show-icon":"",message:"该模块需要项目级数据库",description:"`cc governance ...` 命令仅在 chainlesschain 项目目录下可用。请先运行 `cc init` 初始化项目,或在已初始化的目录启动 `cc serve`。",style:{"margin-bottom":"16px"}})):b("",!0),e(oe,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:o(()=>[e($,{xs:12,sm:8,lg:5},{default:o(()=>[e(T,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[e(E,{title:"提案总数",value:w.value.proposalCount,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:o(()=>[e(x(we))]),_:1},8,["value"])]),_:1})]),_:1}),e($,{xs:12,sm:8,lg:5},{default:o(()=>[e(T,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[e(E,{title:"进行中",value:w.value.byStatus.active||0,"value-style":{color:(w.value.byStatus.active||0)>0?"#1677ff":"#888",fontSize:"20px"}},{prefix:o(()=>[e(x(rt))]),_:1},8,["value","value-style"])]),_:1})]),_:1}),e($,{xs:12,sm:8,lg:5},{default:o(()=>[e(T,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[e(E,{title:"已通过",value:w.value.byStatus.passed||0,"value-style":{color:"#52c41a",fontSize:"20px"}},{prefix:o(()=>[e(x(st))]),_:1},8,["value"])]),_:1})]),_:1}),e($,{xs:12,sm:8,lg:5},{default:o(()=>[e(T,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[e(E,{title:"被否决",value:w.value.byStatus.rejected||0,"value-style":{color:"#ff4d4f",fontSize:"20px"}},{prefix:o(()=>[e(x(it))]),_:1},8,["value"])]),_:1})]),_:1}),e($,{xs:24,sm:8,lg:4},{default:o(()=>[e(T,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[e(E,{title:"投票总数",value:w.value.voteCount,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:o(()=>[e(x(ut))]),_:1},8,["value"])]),_:1})]),_:1})]),_:1}),e(T,{title:"提案类型",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:o(()=>[e(oe,{gutter:[12,12]},{default:o(()=>[(s(!0),y(N,null,M(ye.value,a=>(s(),g($,{key:a.id,xs:12,sm:12,lg:6},{default:o(()=>[d("div",{class:"type-pill",style:dt({borderLeftColor:G(a.id)})},[d("div",Dt,[e(A,{color:G(a.id),style:{"font-family":"monospace"}},{default:o(()=>[u(i(a.id),1)]),_:2},1032,["color"]),d("span",wt,i(w.value.byType[a.id]||0),1)]),d("div",ht,i(a.name),1),d("div",Pt,i(a.description),1)],4)]),_:2},1024))),128))]),_:1})]),_:1}),e(We,{activeKey:me.value,"onUpdate:activeKey":t[3]||(t[3]=a=>me.value=a),class:"governance-tabs"},{default:o(()=>[e(ke,{key:"proposals",tab:"提案"},{default:o(()=>[d("div",Ot,[e(ce,{value:V.value,"onUpdate:value":t[1]||(t[1]=a=>V.value=a),size:"small","button-style":"solid"},{default:o(()=>[e(I,{value:""},{default:o(()=>[...t[20]||(t[20]=[u("全部状态",-1)])]),_:1}),(s(!0),y(N,null,M(x(fe),a=>(s(),g(I,{key:a,value:a},{default:o(()=>[u(i(te(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),e(ce,{value:B.value,"onUpdate:value":t[2]||(t[2]=a=>B.value=a),size:"small"},{default:o(()=>[e(I,{value:""},{default:o(()=>[...t[21]||(t[21]=[u("全部类型",-1)])]),_:1}),(s(!0),y(N,null,M(x(ae),a=>(s(),g(I,{key:a,value:a},{default:o(()=>[u(i(Y(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),e(He,{columns:Oe,"data-source":je.value,pagination:{pageSize:20,showTotal:a=>`共 ${a} 条`},size:"small",loading:C.value,style:{background:"var(--bg-card)"}},{bodyCell:o(({column:a,record:v})=>[a.key==="title"?(s(),y(N,{key:0},[d("span",jt,i(v.title||"(未命名)"),1),d("div",Lt,i(v.id.slice(0,16)),1)],64)):b("",!0),a.key==="type"?(s(),g(A,{key:1,color:G(v.type),style:{"font-family":"monospace"}},{default:o(()=>[u(i(Y(v.type)),1)]),_:2},1032,["color"])):b("",!0),a.key==="status"?(s(),g(A,{key:2,color:ue(v.status)},{default:o(()=>[u(i(te(v.status)),1)]),_:2},1032,["color"])):b("",!0),a.key==="tally"?(s(),y(N,{key:3},[d("span",Tt,[d("span",$t,"+"+i(v.voteYes),1),t[22]||(t[22]=u(" / ",-1)),d("span",Nt,"-"+i(v.voteNo),1),t[23]||(t[23]=u(" / ",-1)),d("span",Et,"~"+i(v.voteAbstain),1)]),v.voteYes+v.voteNo>0?(s(),g(F,{key:0,percent:Me(v),size:"small","show-info":!1,"stroke-color":v.voteYes>=v.voteNo?"#52c41a":"#ff4d4f",style:{"margin-top":"4px"}},null,8,["percent","stroke-color"])):b("",!0)],64)):b("",!0),a.key==="impact"?(s(),y(N,{key:4},[v.impactLevel?(s(),g(A,{key:0,color:_e(v.impactLevel)},{default:o(()=>[u(i(pe(v.impactLevel)),1)]),_:2},1032,["color"])):(s(),y("span",Ut,"—"))],64)):b("",!0),a.key==="createdAt"?(s(),y("span",It,i(x(Q)(v.createdAt)),1)):b("",!0),a.key==="action"?(s(),y(N,{key:6},[e(m,{size:"small",type:"link",onClick:W=>Ye(v)},{default:o(()=>[...t[24]||(t[24]=[u("详情",-1)])]),_:1},8,["onClick"]),v.status==="draft"?(s(),g(m,{key:0,size:"small",type:"link",onClick:W=>qe(v)},{default:o(()=>[...t[25]||(t[25]=[u("启动投票",-1)])]),_:1},8,["onClick"])):b("",!0),v.status==="active"?(s(),g(m,{key:1,size:"small",type:"link",style:{color:"#52c41a"},onClick:W=>Ve(v)},{default:o(()=>[...t[26]||(t[26]=[u("投票",-1)])]),_:1},8,["onClick"])):b("",!0),v.status==="active"?(s(),g(Ke,{key:2,title:"关闭投票并按当前票数结算?","ok-text":"关闭","cancel-text":"返回",onConfirm:W=>Re(v)},{default:o(()=>[e(m,{size:"small",type:"link",danger:""},{default:o(()=>[...t[27]||(t[27]=[u("关闭",-1)])]),_:1})]),_:1},8,["onConfirm"])):b("",!0),e(m,{size:"small",type:"link",onClick:W=>Ge(v)},{default:o(()=>[...t[28]||(t[28]=[u("影响分析",-1)])]),_:1},8,["onClick"]),e(m,{size:"small",type:"link",onClick:W=>Je(v)},{default:o(()=>[...t[29]||(t[29]=[u("预测",-1)])]),_:1},8,["onClick"])],64)):b("",!0)]),emptyText:o(()=>[d("div",Mt,[e(x(we),{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),u(" "+i(V.value||B.value?"没有符合条件的提案":'暂无提案,点"创建提案"创建第一条'),1)])]),_:1},8,["data-source","pagination","loading"])]),_:1}),e(ke,{key:"breakdown",tab:"状态分布"},{default:o(()=>[e(oe,{gutter:[16,16]},{default:o(()=>[e($,{xs:24,lg:12},{default:o(()=>[e(T,{title:"按状态",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[(s(!0),y(N,null,M(x(fe),a=>(s(),y("div",{key:a,class:"bd-row"},[e(A,{color:ue(a),style:{"min-width":"60px","text-align":"center"}},{default:o(()=>[u(i(te(a)),1)]),_:2},1032,["color"]),e(F,{percent:be(w.value.byStatus[a]||0,w.value.proposalCount),"stroke-color":Le(a),format:()=>`${w.value.byStatus[a]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))]),_:1})]),_:1}),e($,{xs:24,lg:12},{default:o(()=>[e(T,{title:"按类型",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[(s(!0),y(N,null,M(x(ae),a=>(s(),y("div",{key:a,class:"bd-row"},[e(A,{color:G(a),style:{"min-width":"90px","text-align":"center"}},{default:o(()=>[u(i(Y(a)),1)]),_:2},1032,["color"]),e(F,{percent:be(w.value.byType[a]||0,w.value.proposalCount),"stroke-color":Te(a),format:()=>`${w.value.byType[a]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,["activeKey"]),e(H,{open:X.value,"onUpdate:open":t[8]||(t[8]=a=>X.value=a),title:"创建提案","confirm-loading":L.value,width:560,"ok-text":"创建","cancel-text":"取消",onOk:Fe,onCancel:xe},{default:o(()=>[e(ze,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:o(()=>[e(U,{label:"标题",required:""},{default:o(()=>[e(de,{value:k.title,"onUpdate:value":t[4]||(t[4]=a=>k.title=a),placeholder:"例如: 增加深色模式支持"},null,8,["value"])]),_:1}),e(U,{label:"类型",required:""},{default:o(()=>[e(Xe,{value:k.type,"onUpdate:value":t[5]||(t[5]=a=>k.type=a)},{default:o(()=>[(s(!0),y(N,null,M(x(ae),a=>(s(),g(Qe,{key:a,value:a},{default:o(()=>[u(i(Y(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1}),e(U,{label:"提案人 DID"},{default:o(()=>[e(de,{value:k.proposerDid,"onUpdate:value":t[6]||(t[6]=a=>k.proposerDid=a),placeholder:"可选,例如 did:key:z6Mk..."},null,8,["value"])]),_:1}),e(U,{label:"描述"},{default:o(()=>[e(Se,{value:k.description,"onUpdate:value":t[7]||(t[7]=a=>k.description=a),placeholder:"提案的背景、动机、范围(描述越详细,影响分析的 benefit 评分越高)","auto-size":{minRows:3,maxRows:8}},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"]),e(H,{open:Z.value,"onUpdate:open":t[13]||(t[13]=a=>Z.value=a),title:`对提案投票:${c.value?.title||""}`,"confirm-loading":le.value,width:540,"ok-text":"投票","cancel-text":"取消",onOk:Be},{default:o(()=>[e(ze,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:o(()=>[e(U,{label:"投票人 DID",required:""},{default:o(()=>[e(de,{value:z.voterDid,"onUpdate:value":t[9]||(t[9]=a=>z.voterDid=a),placeholder:"did:key:..."},null,8,["value"])]),_:1}),e(U,{label:"选项",required:""},{default:o(()=>[e(ce,{value:z.value,"onUpdate:value":t[10]||(t[10]=a=>z.value=a),"button-style":"solid"},{default:o(()=>[e(I,{value:"yes",style:{color:"#52c41a"}},{default:o(()=>[...t[30]||(t[30]=[u("赞成",-1)])]),_:1}),e(I,{value:"no",style:{color:"#ff4d4f"}},{default:o(()=>[...t[31]||(t[31]=[u("反对",-1)])]),_:1}),e(I,{value:"abstain"},{default:o(()=>[...t[32]||(t[32]=[u("弃权",-1)])]),_:1})]),_:1},8,["value"])]),_:1}),e(U,{label:"权重"},{default:o(()=>[e(Ze,{value:z.weight,"onUpdate:value":t[11]||(t[11]=a=>z.weight=a),min:.1,step:.1,style:{width:"120px"}},null,8,["value"]),t[33]||(t[33]=d("span",{style:{"margin-left":"8px",color:"var(--text-muted)","font-size":"12px"}},"默认 1.0",-1))]),_:1}),e(U,{label:"理由"},{default:o(()=>[e(Se,{value:z.reason,"onUpdate:value":t[12]||(t[12]=a=>z.reason=a),placeholder:"可选,说明投票理由","auto-size":{minRows:2,maxRows:5}},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","title","confirm-loading"]),e(H,{open:re.value,"onUpdate:open":t[14]||(t[14]=a=>re.value=a),title:`提案详情:${c.value?.title||""}`,width:780,footer:null},{default:o(()=>[c.value?(s(),y("div",Ft,[e(Ce,{column:2,size:"small",bordered:""},{default:o(()=>[e(D,{label:"ID",span:2},{default:o(()=>[d("span",qt,i(c.value.id),1)]),_:1}),e(D,{label:"类型"},{default:o(()=>[e(A,{color:G(c.value.type)},{default:o(()=>[u(i(Y(c.value.type)),1)]),_:1},8,["color"])]),_:1}),e(D,{label:"状态"},{default:o(()=>[e(A,{color:ue(c.value.status)},{default:o(()=>[u(i(te(c.value.status)),1)]),_:1},8,["color"])]),_:1}),e(D,{label:"提案人",span:2},{default:o(()=>[c.value.proposerDid?(s(),y("span",Rt,i(c.value.proposerDid),1)):(s(),y("span",Vt,"未指定"))]),_:1}),e(D,{label:"描述",span:2},{default:o(()=>[c.value.description?(s(),y("div",Bt,i(c.value.description),1)):(s(),y("span",Yt,"—"))]),_:1}),e(D,{label:"投票汇总",span:2},{default:o(()=>[e(j,null,{default:o(()=>[e(A,{color:"green"},{default:o(()=>[u("赞成: "+i(c.value.voteYes),1)]),_:1}),e(A,{color:"red"},{default:o(()=>[u("反对: "+i(c.value.voteNo),1)]),_:1}),e(A,null,{default:o(()=>[u("弃权: "+i(c.value.voteAbstain),1)]),_:1})]),_:1})]),_:1}),c.value.impactLevel?(s(),g(D,{key:0,label:"影响等级"},{default:o(()=>[e(A,{color:_e(c.value.impactLevel)},{default:o(()=>[u(i(pe(c.value.impactLevel)),1)]),_:1},8,["color"])]),_:1})):b("",!0),e(D,{label:"创建时间"},{default:o(()=>[u(i(x(Q)(c.value.createdAt)),1)]),_:1}),c.value.votingStartsAt?(s(),g(D,{key:1,label:"投票开始"},{default:o(()=>[u(i(x(Q)(c.value.votingStartsAt)),1)]),_:1})):b("",!0),c.value.votingEndsAt?(s(),g(D,{key:2,label:"投票结束"},{default:o(()=>[u(i(x(Q)(c.value.votingEndsAt)),1)]),_:1})):b("",!0)]),_:1}),t[34]||(t[34]=d("h4",{style:{color:"var(--text-primary)","font-size":"13px",margin:"20px 0 10px"}},"投票记录",-1)),ee.value.length?(s(),g(De,{key:1,size:"small","data-source":ee.value,pagination:{pageSize:8}},{renderItem:o(({item:a})=>[e(Ae,null,{default:o(()=>[e(A,{color:Ee(a.vote),style:{"min-width":"50px","text-align":"center"}},{default:o(()=>[u(i(Ne(a.vote)),1)]),_:2},1032,["color"]),d("span",Gt,"w="+i(a.weight),1),d("span",Jt,i(a.voterDid),1),a.reason?(s(),y("span",Kt,"— "+i(a.reason),1)):b("",!0),d("span",Ht,i(x(Q)(a.createdAt)),1)]),_:2},1024)]),_:1},8,["data-source"])):(s(),g(et,{key:0,description:"暂无投票",image:x(p)},null,8,["image"]))])):b("",!0)]),_:1},8,["open","title"]),e(H,{open:se.value,"onUpdate:open":t[15]||(t[15]=a=>se.value=a),title:`影响分析:${c.value?.title||""}`,width:640,footer:null},{default:o(()=>[h.value?(s(),y("div",Wt,[e(oe,{gutter:[12,12],style:{"margin-bottom":"16px"}},{default:o(()=>[e($,{span:8},{default:o(()=>[e(E,{title:"影响等级",value:pe(h.value.impactLevel),"value-style":{color:$e(h.value.impactLevel),fontSize:"16px"}},null,8,["value","value-style"])]),_:1}),e($,{span:8},{default:o(()=>[e(E,{title:"工作量",value:Ue(h.value.estimatedEffort),"value-style":{fontSize:"16px"}},null,8,["value"])]),_:1}),e($,{span:8},{default:o(()=>[e(E,{title:"社区情绪",value:Ie(h.value.communitySentiment),"value-style":{fontSize:"16px"}},null,8,["value"])]),_:1})]),_:1}),e(T,{title:"风险 / 收益",size:"small",style:{"margin-bottom":"12px"}},{default:o(()=>[d("div",Qt,[t[35]||(t[35]=d("span",{style:{color:"var(--text-secondary)","font-size":"12px"}},"风险评分",-1)),e(F,{percent:Math.round(h.value.riskScore*100),"stroke-color":"#ff4d4f"},null,8,["percent"])]),d("div",null,[t[36]||(t[36]=d("span",{style:{color:"var(--text-secondary)","font-size":"12px"}},"收益评分",-1)),e(F,{percent:Math.round(h.value.benefitScore*100),"stroke-color":"#52c41a"},null,8,["percent"])])]),_:1}),h.value.affectedComponents.length?(s(),g(T,{key:0,title:"影响组件",size:"small",style:{"margin-bottom":"12px"}},{default:o(()=>[(s(!0),y(N,null,M(h.value.affectedComponents,a=>(s(),g(A,{key:a,color:"blue"},{default:o(()=>[u(i(a),1)]),_:2},1024))),128))]),_:1})):b("",!0),h.value.recommendations.length?(s(),g(T,{key:1,title:"建议",size:"small"},{default:o(()=>[e(De,{size:"small","data-source":h.value.recommendations},{renderItem:o(({item:a})=>[e(Ae,null,{default:o(()=>[e(x(pt),{style:{color:"#faad14","margin-right":"8px"}}),u(" "+i(a),1)]),_:2},1024)]),_:1},8,["data-source"])]),_:1})):b("",!0)])):b("",!0)]),_:1},8,["open","title"]),e(H,{open:ie.value,"onUpdate:open":t[16]||(t[16]=a=>ie.value=a),title:`投票预测:${c.value?.title||""}`,width:540,footer:null},{default:o(()=>[P.value?(s(),y("div",Xt,[d("div",Zt,[e(A,{color:P.value.predictedOutcome==="pass"?"green":"red",style:{"font-size":"16px",padding:"6px 14px"}},{default:o(()=>[u(i(P.value.predictedOutcome==="pass"?"预计通过":"预计否决"),1)]),_:1},8,["color"])]),e(Ce,{column:2,size:"small",bordered:""},{default:o(()=>[e(D,{label:"置信度",span:2},{default:o(()=>[e(F,{percent:Math.round(P.value.confidence*100),"stroke-color":P.value.confidence>=.6?"#52c41a":"#faad14"},null,8,["percent","stroke-color"])]),_:1}),e(D,{label:"预测依据"},{default:o(()=>[e(A,{color:P.value.basedOn==="votes"?"blue":"orange"},{default:o(()=>[u(i(P.value.basedOn==="votes"?"已有投票":"启发式(无投票)"),1)]),_:1},8,["color"])]),_:1}),e(D,{label:"样本数"},{default:o(()=>[u(i(P.value.sampleSize),1)]),_:1}),e(D,{label:"赞成概率"},{default:o(()=>[d("span",eo,i((P.value.yesProb*100).toFixed(1))+"%",1)]),_:1}),e(D,{label:"反对概率"},{default:o(()=>[d("span",to,i((P.value.noProb*100).toFixed(1))+"%",1)]),_:1}),e(D,{label:"弃权概率",span:2},{default:o(()=>[d("span",oo,i((P.value.abstainProb*100).toFixed(1))+"%",1)]),_:1})]),_:1})])):b("",!0)]),_:1},8,["open","title"])])}}},_o=ot(ao,[["__scopeId","data-v-0524a699"]]);export{_o as default};
1
+ import{u as tt}from"./ws-Bv7YH0VB.js";import{s as Pe}from"./community-parser-CO25nZFt.js";import{_ as ot}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{E as at}from"./useConfigInject-DCcT0grw.js";import{a as _}from"./index-BfKFNptm.js";import{Y as lt,ac as nt,a as we,a9 as rt,aa as st,aw as it,av as ut,ax as pt}from"./icons-ukMaZ3tx.js";import{l as ct,F as y,D as d,c as e,x as o,m as g,G as b,q as f,r as S,v as s,J as u,u as x,H as N,L as M,N as dt,I as i,j as ft,a as he}from"./vendor-BVetwVfk.js";import"./index-DfcXDy2A.js";import"./transition-DSe9CgZe.js";import"./Keyframes-C7fCrnlS.js";import"./Portal-CHsntPCQ.js";import"./index-U4Zd5IK6.js";function R(r){const n=Pe(r);if(!n)return null;try{return JSON.parse(n)}catch{}const p=n.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!p)return null;try{return JSON.parse(p[0])}catch{return null}}const fe=Object.freeze(["draft","active","passed","rejected","expired"]),ae=Object.freeze(["parameter_change","feature_request","policy_update","budget_allocation"]),vt=Object.freeze(["yes","no","abstain"]);function O(r,n=0){return typeof r=="number"&&Number.isFinite(r)?r:n}function q(r){if(!r)return{noDb:!1,error:""};const n=Pe(r),p=/Database not available/i.test(n);return{noDb:p,error:p?"Database not available":""}}function yt(r,n=0){if(!r||typeof r!="object")return null;const p=r.id||"";return p?{key:p,id:p,name:String(r.name||""),description:String(r.description||""),_idx:n}:null}function mt(r){const n=R(r);return Array.isArray(n)?n.map(yt).filter(Boolean):[]}function _t(r,n=0){if(!r||typeof r!="object")return null;const p=r.id||"";return p?{key:p,id:p,title:String(r.title||""),description:r.description??"",type:String(r.type||"feature_request"),proposerDid:r.proposerDid??"",status:String(r.status||"draft").toLowerCase(),impactLevel:r.impactLevel??"",impactAnalysis:r.impactAnalysis??null,voteYes:O(r.voteYes,0),voteNo:O(r.voteNo,0),voteAbstain:O(r.voteAbstain,0),votingStartsAt:r.votingStartsAt??null,votingEndsAt:r.votingEndsAt??null,metadata:r.metadata??null,createdAt:r.createdAt??null,_idx:n}:null}function bt(r){const n=R(r);return Array.isArray(n)?n.map(_t).filter(Boolean):[]}function gt(r,n=0){if(!r||typeof r!="object")return null;const p=r.id||"";if(!p)return null;const C=String(r.vote||"").toLowerCase();return{key:p,id:p,proposalId:String(r.proposalId||""),voterDid:String(r.voterDid||""),vote:(vt.includes(C),C),reason:r.reason??"",weight:O(r.weight,1),createdAt:r.createdAt??null,_idx:n}}function xt(r){const n=R(r);return Array.isArray(n)?n.map(gt).filter(Boolean):[]}function kt(r){const n=R(r);return!n||typeof n!="object"||Array.isArray(n)?null:{impactLevel:String(n.impactLevel||""),affectedComponents:Array.isArray(n.affectedComponents)?n.affectedComponents.filter(p=>typeof p=="string"):[],riskScore:O(n.riskScore,0),benefitScore:O(n.benefitScore,0),estimatedEffort:String(n.estimatedEffort||""),communitySentiment:String(n.communitySentiment||""),recommendations:Array.isArray(n.recommendations)?n.recommendations.filter(p=>typeof p=="string"):[],analyzedAt:n.analyzedAt??null}}function St(r){const n=R(r);return!n||typeof n!="object"||Array.isArray(n)?null:{proposalId:String(n.proposalId||""),predictedOutcome:String(n.predictedOutcome||""),confidence:O(n.confidence,0),yesProb:O(n.yesProb,0),noProb:O(n.noProb,0),abstainProb:O(n.abstainProb,0),basedOn:String(n.basedOn||""),sampleSize:O(n.sampleSize,0)}}const zt={proposalCount:0,voteCount:0,byStatus:{},byType:{}};function Ct(r){const n=JSON.parse(JSON.stringify(zt));for(const C of fe)n.byStatus[C]=0;for(const C of ae)n.byType[C]=0;const p=R(r);if(!p||typeof p!="object"||Array.isArray(p))return n;if(n.proposalCount=O(p.proposalCount,0),n.voteCount=O(p.voteCount,0),p.byStatus&&typeof p.byStatus=="object")for(const[C,L]of Object.entries(p.byStatus))typeof L=="number"&&Number.isFinite(L)&&(n.byStatus[C]=L);if(p.byType&&typeof p.byType=="object")for(const[C,L]of Object.entries(p.byType))typeof L=="number"&&Number.isFinite(L)&&(n.byType[C]=L);return n}function Q(r){if(r==null||r==="")return"—";const n=typeof r=="number"?new Date(r):new Date(String(r));return isNaN(n.getTime())?String(r):n.toLocaleString("zh-CN",{hour12:!1})}const At={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Dt={class:"type-head"},wt={class:"type-count"},ht={class:"type-name"},Pt={class:"type-desc"},Ot={class:"filter-bar"},jt={style:{color:"var(--text-primary)","font-weight":"500"}},Lt={style:{color:"var(--text-secondary)","font-size":"11px","font-family":"monospace","margin-top":"2px"}},Tt={style:{"font-family":"monospace","font-size":"12px"}},$t={style:{color:"#52c41a"}},Nt={style:{color:"#ff4d4f"}},Et={style:{color:"var(--text-muted)"}},Ut={key:1,style:{color:"var(--text-muted)"}},It={key:5,style:{color:"var(--text-secondary)","font-size":"11px"}},Mt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},Ft={key:0,style:{"padding-top":"8px"}},qt={style:{"font-family":"monospace","font-size":"12px"}},Rt={key:0,style:{"font-family":"monospace","font-size":"12px"}},Vt={key:1,style:{color:"var(--text-muted)"}},Yt={key:0,style:{"white-space":"pre-wrap"}},Bt={key:1,style:{color:"var(--text-muted)"}},Gt={style:{"margin-left":"8px",color:"var(--text-muted)","font-size":"11px"}},Jt={style:{"margin-left":"8px","font-family":"monospace","font-size":"11px",color:"var(--text-secondary)"}},Kt={key:0,style:{"margin-left":"8px",color:"var(--text-secondary)","font-size":"12px"}},Ht={style:{"margin-left":"auto",color:"var(--text-muted)","font-size":"11px"}},Wt={key:0,style:{"padding-top":"8px"}},Qt={style:{"margin-bottom":"8px"}},Xt={key:0,style:{"padding-top":"8px"}},Zt={style:{"text-align":"center","margin-bottom":"20px"}},eo={style:{color:"#52c41a"}},to={style:{color:"#ff4d4f"}},oo={style:{color:"var(--text-muted)"}},ao={__name:"Governance",setup(r){const n=tt(),p=at.PRESENTED_IMAGE_SIMPLE,C=S(!1),L=S(!1),le=S(!1),ve=S([]),ye=S([]),w=S({proposalCount:0,voteCount:0,byStatus:{},byType:{}}),ne=S({noDb:!1,error:""}),me=S("proposals"),V=S(""),Y=S(""),X=S(!1),Z=S(!1),re=S(!1),se=S(!1),ie=S(!1),k=he({title:"",type:"feature_request",proposerDid:"",description:""}),z=he({voterDid:"",value:"yes",weight:1,reason:""}),c=S(null),ee=S([]),h=S(null),P=S(null),Oe=[{title:"标题",key:"title"},{title:"类型",key:"type",width:"130px"},{title:"状态",key:"status",width:"100px"},{title:"票数",key:"tally",width:"180px"},{title:"影响",key:"impact",width:"100px"},{title:"创建时间",key:"createdAt",width:"160px"},{title:"操作",key:"action",width:"320px"}],je=ft(()=>{let l=ve.value;return V.value&&(l=l.filter(t=>t.status===V.value)),Y.value&&(l=l.filter(t=>t.type===Y.value)),l});function te(l){return{draft:"草稿",active:"进行中",passed:"已通过",rejected:"已否决",expired:"已过期"}[l]||l}function ue(l){return{draft:"default",active:"processing",passed:"green",rejected:"red",expired:"default"}[l]||"default"}function Le(l){return{draft:"#888",active:"#1677ff",passed:"#52c41a",rejected:"#ff4d4f",expired:"#888"}[l]||"#888"}function B(l){return{parameter_change:"参数变更",feature_request:"功能请求",policy_update:"策略更新",budget_allocation:"预算分配"}[l]||l}function G(l){return{parameter_change:"cyan",feature_request:"blue",policy_update:"purple",budget_allocation:"gold"}[l]||"default"}function Te(l){return{parameter_change:"#13c2c2",feature_request:"#1677ff",policy_update:"#722ed1",budget_allocation:"#faad14"}[l]||"#888"}function pe(l){return{low:"低",medium:"中",high:"高",critical:"关键"}[l]||l}function _e(l){return{low:"default",medium:"blue",high:"orange",critical:"red"}[l]||"default"}function $e(l){return{low:"#888",medium:"#1677ff",high:"#faad14",critical:"#ff4d4f"}[l]||"#888"}function Ne(l){return{yes:"赞成",no:"反对",abstain:"弃权"}[l]||l}function Ee(l){return{yes:"green",no:"red",abstain:"default"}[l]||"default"}function Ue(l){return{small:"小",medium:"中",large:"大"}[l]||l||"—"}function Ie(l){return{positive:"积极",cautious:"谨慎",negative:"负面"}[l]||l||"—"}function Me(l){const t=l.voteYes+l.voteNo;return t?Math.round(l.voteYes/t*100):0}function be(l,t){return t?Math.round(l/t*100):0}async function J(){C.value=!0,ne.value={noDb:!1,error:""};try{const[l,t,m]=await Promise.all([n.execute("governance types --json",8e3).catch(()=>({output:""})),n.execute("governance list --json",1e4).catch(()=>({output:""})),n.execute("governance stats --json",8e3).catch(()=>({output:""}))]),j=[t,m].map(K=>q(K.output)).find(K=>K.noDb);j&&(ne.value=j),ye.value=mt(l.output),ve.value=bt(t.output),w.value=Ct(m.output)}catch(l){_.error("加载治理数据失败: "+(l?.message||l))}finally{C.value=!1}}async function Fe(){if(!k.title.trim()){_.warning("请填写标题");return}L.value=!0;try{const l=[`governance create "${k.title.trim().replace(/"/g,'\\"')}"`];l.push(`-t ${k.type}`),k.proposerDid.trim()&&l.push(`-p "${k.proposerDid.trim().replace(/"/g,'\\"')}"`),k.description.trim()&&l.push(`-d "${k.description.trim().replace(/"/g,'\\"')}"`),l.push("--json");const{output:t}=await n.execute(l.join(" "),1e4);if(q(t).noDb){_.error("需要先 cc init 初始化项目");return}if(!/"id"/.test(t)){_.error("创建失败: "+t.slice(0,120));return}_.success("提案已创建(草稿)"),X.value=!1,xe(),await J()}catch(l){_.error("创建失败: "+(l?.message||l))}finally{L.value=!1}}async function qe(l){await ge(`governance activate ${l.id} --json`,"已启动投票")}async function Re(l){await ge(`governance close ${l.id} --json`,"投票已关闭")}async function ge(l,t){try{const{output:m}=await n.execute(l,1e4);if(q(m).noDb){_.error("需要先 cc init 初始化项目");return}if(!/"id"|"proposalId"|"passed"/.test(m)){_.error("操作失败: "+m.slice(0,120));return}_.success(t),await J()}catch(m){_.error("操作失败: "+(m?.message||m))}}function Ve(l){c.value=l,z.voterDid="",z.value="yes",z.weight=1,z.reason="",Z.value=!0}async function Ye(){if(c.value){if(!z.voterDid.trim()){_.warning("请填写投票人 DID");return}le.value=!0;try{const l=[`governance vote ${c.value.id}`,`"${z.voterDid.trim().replace(/"/g,'\\"')}"`,z.value,`-w ${z.weight}`];z.reason.trim()&&l.push(`-r "${z.reason.trim().replace(/"/g,'\\"')}"`),l.push("--json");const{output:t}=await n.execute(l.join(" "),8e3);if(q(t).noDb){_.error("需要先 cc init 初始化项目");return}if(!/"id"/.test(t)){_.error("投票失败: "+t.slice(0,120));return}_.success("投票已记录"),Z.value=!1,await J()}catch(l){_.error("投票失败: "+(l?.message||l))}finally{le.value=!1}}}async function Be(l){c.value=l,ee.value=[],re.value=!0;try{const{output:t}=await n.execute(`governance votes ${l.id} --json`,8e3);ee.value=xt(t)}catch{}}async function Ge(l){c.value=l,h.value=null;try{const{output:t}=await n.execute(`governance analyze ${l.id} --json`,8e3);if(q(t).noDb){_.error("需要先 cc init 初始化项目");return}const j=kt(t);if(!j){_.error("分析失败: "+t.slice(0,120));return}h.value=j,se.value=!0}catch(t){_.error("分析失败: "+(t?.message||t))}}async function Je(l){c.value=l,P.value=null;try{const{output:t}=await n.execute(`governance predict ${l.id} --json`,8e3);if(q(t).noDb){_.error("需要先 cc init 初始化项目");return}const j=St(t);if(!j){_.error("预测失败: "+t.slice(0,120));return}P.value=j,ie.value=!0}catch(t){_.error("预测失败: "+(t?.message||t))}}function xe(){k.title="",k.type="feature_request",k.proposerDid="",k.description=""}return ct(J),(l,t)=>{const m=f("a-button"),j=f("a-space"),K=f("a-alert"),E=f("a-statistic"),T=f("a-card"),$=f("a-col"),oe=f("a-row"),A=f("a-tag"),I=f("a-radio-button"),ce=f("a-radio-group"),F=f("a-progress"),Ke=f("a-popconfirm"),He=f("a-table"),ke=f("a-tab-pane"),We=f("a-tabs"),de=f("a-input"),U=f("a-form-item"),Qe=f("a-select-option"),Xe=f("a-select"),Se=f("a-textarea"),ze=f("a-form"),H=f("a-modal"),Ze=f("a-input-number"),D=f("a-descriptions-item"),Ce=f("a-descriptions"),et=f("a-empty"),Ae=f("a-list-item"),De=f("a-list");return s(),y("div",null,[d("div",At,[t[19]||(t[19]=d("div",null,[d("h2",{class:"page-title"},"社区治理"),d("p",{class:"page-sub"},"提案 · 加权投票 · 启发式影响分析 · 投票预测")],-1)),e(j,null,{default:o(()=>[e(m,{loading:C.value,onClick:J},{icon:o(()=>[e(x(lt))]),default:o(()=>[t[17]||(t[17]=u(" 刷新 ",-1))]),_:1},8,["loading"]),e(m,{type:"primary",onClick:t[0]||(t[0]=a=>X.value=!0)},{icon:o(()=>[e(x(nt))]),default:o(()=>[t[18]||(t[18]=u(" 创建提案 ",-1))]),_:1})]),_:1})]),ne.value.noDb?(s(),g(K,{key:0,type:"info","show-icon":"",message:"该模块需要项目级数据库",description:"`cc governance ...` 命令仅在 chainlesschain 项目目录下可用。请先运行 `cc init` 初始化项目,或在已初始化的目录启动 `cc serve`。",style:{"margin-bottom":"16px"}})):b("",!0),e(oe,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:o(()=>[e($,{xs:12,sm:8,lg:5},{default:o(()=>[e(T,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[e(E,{title:"提案总数",value:w.value.proposalCount,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:o(()=>[e(x(we))]),_:1},8,["value"])]),_:1})]),_:1}),e($,{xs:12,sm:8,lg:5},{default:o(()=>[e(T,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[e(E,{title:"进行中",value:w.value.byStatus.active||0,"value-style":{color:(w.value.byStatus.active||0)>0?"#1677ff":"#888",fontSize:"20px"}},{prefix:o(()=>[e(x(rt))]),_:1},8,["value","value-style"])]),_:1})]),_:1}),e($,{xs:12,sm:8,lg:5},{default:o(()=>[e(T,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[e(E,{title:"已通过",value:w.value.byStatus.passed||0,"value-style":{color:"#52c41a",fontSize:"20px"}},{prefix:o(()=>[e(x(st))]),_:1},8,["value"])]),_:1})]),_:1}),e($,{xs:12,sm:8,lg:5},{default:o(()=>[e(T,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[e(E,{title:"被否决",value:w.value.byStatus.rejected||0,"value-style":{color:"#ff4d4f",fontSize:"20px"}},{prefix:o(()=>[e(x(it))]),_:1},8,["value"])]),_:1})]),_:1}),e($,{xs:24,sm:8,lg:4},{default:o(()=>[e(T,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[e(E,{title:"投票总数",value:w.value.voteCount,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:o(()=>[e(x(ut))]),_:1},8,["value"])]),_:1})]),_:1})]),_:1}),e(T,{title:"提案类型",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:o(()=>[e(oe,{gutter:[12,12]},{default:o(()=>[(s(!0),y(N,null,M(ye.value,a=>(s(),g($,{key:a.id,xs:12,sm:12,lg:6},{default:o(()=>[d("div",{class:"type-pill",style:dt({borderLeftColor:G(a.id)})},[d("div",Dt,[e(A,{color:G(a.id),style:{"font-family":"monospace"}},{default:o(()=>[u(i(a.id),1)]),_:2},1032,["color"]),d("span",wt,i(w.value.byType[a.id]||0),1)]),d("div",ht,i(a.name),1),d("div",Pt,i(a.description),1)],4)]),_:2},1024))),128))]),_:1})]),_:1}),e(We,{activeKey:me.value,"onUpdate:activeKey":t[3]||(t[3]=a=>me.value=a),class:"governance-tabs"},{default:o(()=>[e(ke,{key:"proposals",tab:"提案"},{default:o(()=>[d("div",Ot,[e(ce,{value:V.value,"onUpdate:value":t[1]||(t[1]=a=>V.value=a),size:"small","button-style":"solid"},{default:o(()=>[e(I,{value:""},{default:o(()=>[...t[20]||(t[20]=[u("全部状态",-1)])]),_:1}),(s(!0),y(N,null,M(x(fe),a=>(s(),g(I,{key:a,value:a},{default:o(()=>[u(i(te(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),e(ce,{value:Y.value,"onUpdate:value":t[2]||(t[2]=a=>Y.value=a),size:"small"},{default:o(()=>[e(I,{value:""},{default:o(()=>[...t[21]||(t[21]=[u("全部类型",-1)])]),_:1}),(s(!0),y(N,null,M(x(ae),a=>(s(),g(I,{key:a,value:a},{default:o(()=>[u(i(B(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),e(He,{columns:Oe,"data-source":je.value,pagination:{pageSize:20,showTotal:a=>`共 ${a} 条`},size:"small",loading:C.value,style:{background:"var(--bg-card)"}},{bodyCell:o(({column:a,record:v})=>[a.key==="title"?(s(),y(N,{key:0},[d("span",jt,i(v.title||"(未命名)"),1),d("div",Lt,i(v.id.slice(0,16)),1)],64)):b("",!0),a.key==="type"?(s(),g(A,{key:1,color:G(v.type),style:{"font-family":"monospace"}},{default:o(()=>[u(i(B(v.type)),1)]),_:2},1032,["color"])):b("",!0),a.key==="status"?(s(),g(A,{key:2,color:ue(v.status)},{default:o(()=>[u(i(te(v.status)),1)]),_:2},1032,["color"])):b("",!0),a.key==="tally"?(s(),y(N,{key:3},[d("span",Tt,[d("span",$t,"+"+i(v.voteYes),1),t[22]||(t[22]=u(" / ",-1)),d("span",Nt,"-"+i(v.voteNo),1),t[23]||(t[23]=u(" / ",-1)),d("span",Et,"~"+i(v.voteAbstain),1)]),v.voteYes+v.voteNo>0?(s(),g(F,{key:0,percent:Me(v),size:"small","show-info":!1,"stroke-color":v.voteYes>=v.voteNo?"#52c41a":"#ff4d4f",style:{"margin-top":"4px"}},null,8,["percent","stroke-color"])):b("",!0)],64)):b("",!0),a.key==="impact"?(s(),y(N,{key:4},[v.impactLevel?(s(),g(A,{key:0,color:_e(v.impactLevel)},{default:o(()=>[u(i(pe(v.impactLevel)),1)]),_:2},1032,["color"])):(s(),y("span",Ut,"—"))],64)):b("",!0),a.key==="createdAt"?(s(),y("span",It,i(x(Q)(v.createdAt)),1)):b("",!0),a.key==="action"?(s(),y(N,{key:6},[e(m,{size:"small",type:"link",onClick:W=>Be(v)},{default:o(()=>[...t[24]||(t[24]=[u("详情",-1)])]),_:1},8,["onClick"]),v.status==="draft"?(s(),g(m,{key:0,size:"small",type:"link",onClick:W=>qe(v)},{default:o(()=>[...t[25]||(t[25]=[u("启动投票",-1)])]),_:1},8,["onClick"])):b("",!0),v.status==="active"?(s(),g(m,{key:1,size:"small",type:"link",style:{color:"#52c41a"},onClick:W=>Ve(v)},{default:o(()=>[...t[26]||(t[26]=[u("投票",-1)])]),_:1},8,["onClick"])):b("",!0),v.status==="active"?(s(),g(Ke,{key:2,title:"关闭投票并按当前票数结算?","ok-text":"关闭","cancel-text":"返回",onConfirm:W=>Re(v)},{default:o(()=>[e(m,{size:"small",type:"link",danger:""},{default:o(()=>[...t[27]||(t[27]=[u("关闭",-1)])]),_:1})]),_:1},8,["onConfirm"])):b("",!0),e(m,{size:"small",type:"link",onClick:W=>Ge(v)},{default:o(()=>[...t[28]||(t[28]=[u("影响分析",-1)])]),_:1},8,["onClick"]),e(m,{size:"small",type:"link",onClick:W=>Je(v)},{default:o(()=>[...t[29]||(t[29]=[u("预测",-1)])]),_:1},8,["onClick"])],64)):b("",!0)]),emptyText:o(()=>[d("div",Mt,[e(x(we),{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),u(" "+i(V.value||Y.value?"没有符合条件的提案":'暂无提案,点"创建提案"创建第一条'),1)])]),_:1},8,["data-source","pagination","loading"])]),_:1}),e(ke,{key:"breakdown",tab:"状态分布"},{default:o(()=>[e(oe,{gutter:[16,16]},{default:o(()=>[e($,{xs:24,lg:12},{default:o(()=>[e(T,{title:"按状态",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[(s(!0),y(N,null,M(x(fe),a=>(s(),y("div",{key:a,class:"bd-row"},[e(A,{color:ue(a),style:{"min-width":"60px","text-align":"center"}},{default:o(()=>[u(i(te(a)),1)]),_:2},1032,["color"]),e(F,{percent:be(w.value.byStatus[a]||0,w.value.proposalCount),"stroke-color":Le(a),format:()=>`${w.value.byStatus[a]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))]),_:1})]),_:1}),e($,{xs:24,lg:12},{default:o(()=>[e(T,{title:"按类型",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[(s(!0),y(N,null,M(x(ae),a=>(s(),y("div",{key:a,class:"bd-row"},[e(A,{color:G(a),style:{"min-width":"90px","text-align":"center"}},{default:o(()=>[u(i(B(a)),1)]),_:2},1032,["color"]),e(F,{percent:be(w.value.byType[a]||0,w.value.proposalCount),"stroke-color":Te(a),format:()=>`${w.value.byType[a]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,["activeKey"]),e(H,{open:X.value,"onUpdate:open":t[8]||(t[8]=a=>X.value=a),title:"创建提案","confirm-loading":L.value,width:560,"ok-text":"创建","cancel-text":"取消",onOk:Fe,onCancel:xe},{default:o(()=>[e(ze,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:o(()=>[e(U,{label:"标题",required:""},{default:o(()=>[e(de,{value:k.title,"onUpdate:value":t[4]||(t[4]=a=>k.title=a),placeholder:"例如: 增加深色模式支持"},null,8,["value"])]),_:1}),e(U,{label:"类型",required:""},{default:o(()=>[e(Xe,{value:k.type,"onUpdate:value":t[5]||(t[5]=a=>k.type=a)},{default:o(()=>[(s(!0),y(N,null,M(x(ae),a=>(s(),g(Qe,{key:a,value:a},{default:o(()=>[u(i(B(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1}),e(U,{label:"提案人 DID"},{default:o(()=>[e(de,{value:k.proposerDid,"onUpdate:value":t[6]||(t[6]=a=>k.proposerDid=a),placeholder:"可选,例如 did:key:z6Mk..."},null,8,["value"])]),_:1}),e(U,{label:"描述"},{default:o(()=>[e(Se,{value:k.description,"onUpdate:value":t[7]||(t[7]=a=>k.description=a),placeholder:"提案的背景、动机、范围(描述越详细,影响分析的 benefit 评分越高)","auto-size":{minRows:3,maxRows:8}},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"]),e(H,{open:Z.value,"onUpdate:open":t[13]||(t[13]=a=>Z.value=a),title:`对提案投票:${c.value?.title||""}`,"confirm-loading":le.value,width:540,"ok-text":"投票","cancel-text":"取消",onOk:Ye},{default:o(()=>[e(ze,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:o(()=>[e(U,{label:"投票人 DID",required:""},{default:o(()=>[e(de,{value:z.voterDid,"onUpdate:value":t[9]||(t[9]=a=>z.voterDid=a),placeholder:"did:key:..."},null,8,["value"])]),_:1}),e(U,{label:"选项",required:""},{default:o(()=>[e(ce,{value:z.value,"onUpdate:value":t[10]||(t[10]=a=>z.value=a),"button-style":"solid"},{default:o(()=>[e(I,{value:"yes",style:{color:"#52c41a"}},{default:o(()=>[...t[30]||(t[30]=[u("赞成",-1)])]),_:1}),e(I,{value:"no",style:{color:"#ff4d4f"}},{default:o(()=>[...t[31]||(t[31]=[u("反对",-1)])]),_:1}),e(I,{value:"abstain"},{default:o(()=>[...t[32]||(t[32]=[u("弃权",-1)])]),_:1})]),_:1},8,["value"])]),_:1}),e(U,{label:"权重"},{default:o(()=>[e(Ze,{value:z.weight,"onUpdate:value":t[11]||(t[11]=a=>z.weight=a),min:.1,step:.1,style:{width:"120px"}},null,8,["value"]),t[33]||(t[33]=d("span",{style:{"margin-left":"8px",color:"var(--text-muted)","font-size":"12px"}},"默认 1.0",-1))]),_:1}),e(U,{label:"理由"},{default:o(()=>[e(Se,{value:z.reason,"onUpdate:value":t[12]||(t[12]=a=>z.reason=a),placeholder:"可选,说明投票理由","auto-size":{minRows:2,maxRows:5}},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","title","confirm-loading"]),e(H,{open:re.value,"onUpdate:open":t[14]||(t[14]=a=>re.value=a),title:`提案详情:${c.value?.title||""}`,width:780,footer:null},{default:o(()=>[c.value?(s(),y("div",Ft,[e(Ce,{column:2,size:"small",bordered:""},{default:o(()=>[e(D,{label:"ID",span:2},{default:o(()=>[d("span",qt,i(c.value.id),1)]),_:1}),e(D,{label:"类型"},{default:o(()=>[e(A,{color:G(c.value.type)},{default:o(()=>[u(i(B(c.value.type)),1)]),_:1},8,["color"])]),_:1}),e(D,{label:"状态"},{default:o(()=>[e(A,{color:ue(c.value.status)},{default:o(()=>[u(i(te(c.value.status)),1)]),_:1},8,["color"])]),_:1}),e(D,{label:"提案人",span:2},{default:o(()=>[c.value.proposerDid?(s(),y("span",Rt,i(c.value.proposerDid),1)):(s(),y("span",Vt,"未指定"))]),_:1}),e(D,{label:"描述",span:2},{default:o(()=>[c.value.description?(s(),y("div",Yt,i(c.value.description),1)):(s(),y("span",Bt,"—"))]),_:1}),e(D,{label:"投票汇总",span:2},{default:o(()=>[e(j,null,{default:o(()=>[e(A,{color:"green"},{default:o(()=>[u("赞成: "+i(c.value.voteYes),1)]),_:1}),e(A,{color:"red"},{default:o(()=>[u("反对: "+i(c.value.voteNo),1)]),_:1}),e(A,null,{default:o(()=>[u("弃权: "+i(c.value.voteAbstain),1)]),_:1})]),_:1})]),_:1}),c.value.impactLevel?(s(),g(D,{key:0,label:"影响等级"},{default:o(()=>[e(A,{color:_e(c.value.impactLevel)},{default:o(()=>[u(i(pe(c.value.impactLevel)),1)]),_:1},8,["color"])]),_:1})):b("",!0),e(D,{label:"创建时间"},{default:o(()=>[u(i(x(Q)(c.value.createdAt)),1)]),_:1}),c.value.votingStartsAt?(s(),g(D,{key:1,label:"投票开始"},{default:o(()=>[u(i(x(Q)(c.value.votingStartsAt)),1)]),_:1})):b("",!0),c.value.votingEndsAt?(s(),g(D,{key:2,label:"投票结束"},{default:o(()=>[u(i(x(Q)(c.value.votingEndsAt)),1)]),_:1})):b("",!0)]),_:1}),t[34]||(t[34]=d("h4",{style:{color:"var(--text-primary)","font-size":"13px",margin:"20px 0 10px"}},"投票记录",-1)),ee.value.length?(s(),g(De,{key:1,size:"small","data-source":ee.value,pagination:{pageSize:8}},{renderItem:o(({item:a})=>[e(Ae,null,{default:o(()=>[e(A,{color:Ee(a.vote),style:{"min-width":"50px","text-align":"center"}},{default:o(()=>[u(i(Ne(a.vote)),1)]),_:2},1032,["color"]),d("span",Gt,"w="+i(a.weight),1),d("span",Jt,i(a.voterDid),1),a.reason?(s(),y("span",Kt,"— "+i(a.reason),1)):b("",!0),d("span",Ht,i(x(Q)(a.createdAt)),1)]),_:2},1024)]),_:1},8,["data-source"])):(s(),g(et,{key:0,description:"暂无投票",image:x(p)},null,8,["image"]))])):b("",!0)]),_:1},8,["open","title"]),e(H,{open:se.value,"onUpdate:open":t[15]||(t[15]=a=>se.value=a),title:`影响分析:${c.value?.title||""}`,width:640,footer:null},{default:o(()=>[h.value?(s(),y("div",Wt,[e(oe,{gutter:[12,12],style:{"margin-bottom":"16px"}},{default:o(()=>[e($,{span:8},{default:o(()=>[e(E,{title:"影响等级",value:pe(h.value.impactLevel),"value-style":{color:$e(h.value.impactLevel),fontSize:"16px"}},null,8,["value","value-style"])]),_:1}),e($,{span:8},{default:o(()=>[e(E,{title:"工作量",value:Ue(h.value.estimatedEffort),"value-style":{fontSize:"16px"}},null,8,["value"])]),_:1}),e($,{span:8},{default:o(()=>[e(E,{title:"社区情绪",value:Ie(h.value.communitySentiment),"value-style":{fontSize:"16px"}},null,8,["value"])]),_:1})]),_:1}),e(T,{title:"风险 / 收益",size:"small",style:{"margin-bottom":"12px"}},{default:o(()=>[d("div",Qt,[t[35]||(t[35]=d("span",{style:{color:"var(--text-secondary)","font-size":"12px"}},"风险评分",-1)),e(F,{percent:Math.round(h.value.riskScore*100),"stroke-color":"#ff4d4f"},null,8,["percent"])]),d("div",null,[t[36]||(t[36]=d("span",{style:{color:"var(--text-secondary)","font-size":"12px"}},"收益评分",-1)),e(F,{percent:Math.round(h.value.benefitScore*100),"stroke-color":"#52c41a"},null,8,["percent"])])]),_:1}),h.value.affectedComponents.length?(s(),g(T,{key:0,title:"影响组件",size:"small",style:{"margin-bottom":"12px"}},{default:o(()=>[(s(!0),y(N,null,M(h.value.affectedComponents,a=>(s(),g(A,{key:a,color:"blue"},{default:o(()=>[u(i(a),1)]),_:2},1024))),128))]),_:1})):b("",!0),h.value.recommendations.length?(s(),g(T,{key:1,title:"建议",size:"small"},{default:o(()=>[e(De,{size:"small","data-source":h.value.recommendations},{renderItem:o(({item:a})=>[e(Ae,null,{default:o(()=>[e(x(pt),{style:{color:"#faad14","margin-right":"8px"}}),u(" "+i(a),1)]),_:2},1024)]),_:1},8,["data-source"])]),_:1})):b("",!0)])):b("",!0)]),_:1},8,["open","title"]),e(H,{open:ie.value,"onUpdate:open":t[16]||(t[16]=a=>ie.value=a),title:`投票预测:${c.value?.title||""}`,width:540,footer:null},{default:o(()=>[P.value?(s(),y("div",Xt,[d("div",Zt,[e(A,{color:P.value.predictedOutcome==="pass"?"green":"red",style:{"font-size":"16px",padding:"6px 14px"}},{default:o(()=>[u(i(P.value.predictedOutcome==="pass"?"预计通过":"预计否决"),1)]),_:1},8,["color"])]),e(Ce,{column:2,size:"small",bordered:""},{default:o(()=>[e(D,{label:"置信度",span:2},{default:o(()=>[e(F,{percent:Math.round(P.value.confidence*100),"stroke-color":P.value.confidence>=.6?"#52c41a":"#faad14"},null,8,["percent","stroke-color"])]),_:1}),e(D,{label:"预测依据"},{default:o(()=>[e(A,{color:P.value.basedOn==="votes"?"blue":"orange"},{default:o(()=>[u(i(P.value.basedOn==="votes"?"已有投票":"启发式(无投票)"),1)]),_:1},8,["color"])]),_:1}),e(D,{label:"样本数"},{default:o(()=>[u(i(P.value.sampleSize),1)]),_:1}),e(D,{label:"赞成概率"},{default:o(()=>[d("span",eo,i((P.value.yesProb*100).toFixed(1))+"%",1)]),_:1}),e(D,{label:"反对概率"},{default:o(()=>[d("span",to,i((P.value.noProb*100).toFixed(1))+"%",1)]),_:1}),e(D,{label:"弃权概率",span:2},{default:o(()=>[d("span",oo,i((P.value.abstainProb*100).toFixed(1))+"%",1)]),_:1})]),_:1})])):b("",!0)]),_:1},8,["open","title"])])}}},_o=ot(ao,[["__scopeId","data-v-0524a699"]]);export{_o as default};
@@ -1 +1 @@
1
- import{u as He}from"./ws-Bv7YH0VB.js";import{s as Je}from"./community-parser-CO25nZFt.js";import{_ as Pe}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{a as y}from"./index-DLcTmwiN.js";import{O as Ee,aa as Ge,d as Q,k as X,a8 as Ve,i as Ke}from"./icons-E3MGhN6s.js";import{l as We,F as c,D as M,c as a,x as t,m as x,G as m,q as v,r as S,v as i,J as d,u as k,I as p,H as C,L as w,N as Ye,j as ye,a as me}from"./vendor-BVetwVfk.js";import"./index-DPaLf3-g.js";import"./useConfigInject-DIKG5Y4I.js";import"./transition-atE2sWdv.js";import"./Keyframes-C7fCrnlS.js";import"./Portal-CHsntPCQ.js";import"./index-U4Zd5IK6.js";function Z(l){const s=Je(l);if(!s)return null;try{return JSON.parse(s)}catch{}const u=s.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!u)return null;try{return JSON.parse(u[0])}catch{return null}}const ve=Object.freeze(["online","offline","busy","degraded"]),Qe=Object.freeze(["queued","dispatched","running","complete","failed"]),ge=Object.freeze(["standard","encrypted","federated"]);function h(l,s=0){return typeof l=="number"&&Number.isFinite(l)?l:s}function Xe(l){if(Array.isArray(l))return l.filter(s=>typeof s=="string");if(typeof l=="string")try{const s=JSON.parse(l);if(Array.isArray(s))return s.filter(u=>typeof u=="string")}catch{}return[]}function Ze(l,s=0){if(!l||typeof l!="object")return null;const u=l.id||"";return u?{key:u,id:u,nodeId:l.nodeId??l.node_id??"",endpoint:l.endpoint||"",capabilities:Xe(l.capabilities),gpuMemoryMb:h(l.gpuMemoryMb??l.gpu_memory_mb,0),status:String(l.status||"offline").toLowerCase(),lastHeartbeat:l.lastHeartbeat??l.last_heartbeat??null,taskCount:h(l.taskCount??l.task_count,0),createdAt:l.createdAt??l.created_at??null,_idx:s}:null}function et(l){const s=Z(l);return Array.isArray(s)?s.map(Ze).filter(Boolean):[]}function tt(l,s=0){if(!l||typeof l!="object")return null;const u=l.id||"";return u?{key:u,id:u,model:String(l.model||""),input:l.input??"",output:l.output??"",privacyMode:String(l.privacyMode??l.privacy_mode??"standard").toLowerCase(),priority:h(l.priority,5),assignedNode:l.assignedNode??l.assigned_node??null,status:String(l.status||"queued").toLowerCase(),durationMs:l.durationMs??l.duration_ms??null,createdAt:l.createdAt??l.created_at??null,completedAt:l.completedAt??l.completed_at??null,_idx:s}:null}function at(l){const s=Z(l);return Array.isArray(s)?s.map(tt).filter(Boolean):[]}const ot={nodes:{total:0,online:0,offline:0,busy:0},tasks:{total:0,queued:0,completed:0,failed:0,avgDurationMs:0}};function nt(l){const s=JSON.parse(JSON.stringify(ot)),u=Z(l);return!u||typeof u!="object"||Array.isArray(u)||(u.nodes&&typeof u.nodes=="object"&&(s.nodes.total=h(u.nodes.total,0),s.nodes.online=h(u.nodes.online,0),s.nodes.offline=h(u.nodes.offline,0),s.nodes.busy=h(u.nodes.busy,0)),u.tasks&&typeof u.tasks=="object"&&(s.tasks.total=h(u.tasks.total,0),s.tasks.queued=h(u.tasks.queued,0),s.tasks.completed=h(u.tasks.completed,0),s.tasks.failed=h(u.tasks.failed,0),s.tasks.avgDurationMs=h(u.tasks.avgDurationMs??u.tasks.avg_duration_ms,0))),s}function _e(l){if(l==null||l==="")return"—";const s=typeof l=="number"?new Date(l):new Date(String(l));return isNaN(s.getTime())?String(l):s.toLocaleString("zh-CN",{hour12:!1})}const lt={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},st={style:{color:"var(--text-secondary)","font-size":"12px","margin-left":"8px"}},it={class:"filter-bar"},rt={style:{color:"var(--text-primary)","font-family":"monospace","font-weight":"500"}},ut={key:0,style:{color:"var(--text-secondary)","font-size":"11px","margin-top":"2px"}},dt={key:1,style:{color:"var(--text-muted)"}},pt={key:0,style:{color:"var(--text-secondary)","font-family":"monospace"}},ct={key:1,style:{color:"var(--text-muted)"}},ft={key:5,style:{color:"var(--text-secondary)","font-size":"11px"}},yt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},mt={class:"filter-bar"},vt={style:{color:"var(--text-primary)","font-family":"monospace","font-weight":"500"}},gt={key:0,style:{color:"var(--text-secondary)","font-size":"11px","margin-top":"2px"}},_t={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"11px"}},kt={key:1,style:{color:"var(--text-muted)"}},bt={key:0,style:{"font-family":"monospace",color:"var(--text-secondary)","font-size":"12px"}},xt={key:1,style:{color:"var(--text-muted)"}},St={key:6,style:{color:"var(--text-secondary)","font-size":"11px"}},Ct={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},zt={__name:"Inference",setup(l){const s=He(),u=S(!1),E=S(!1),G=S(!1),V=S(""),K=S(""),L=S([]),ee=S([]),b=S({nodes:{total:0,online:0,offline:0,busy:0},tasks:{total:0,queued:0,completed:0,failed:0,avgDurationMs:0}}),W=S("nodes"),U=S(""),O=S(""),D=S(""),B=S(!1),R=S(!1),g=me({nodeId:"",endpoint:"",capabilities:"",gpuMemory:null}),_=me({model:"",input:"",priority:5,mode:"standard"}),ke=[{title:"节点 ID",key:"nodeId"},{title:"能力",key:"capabilities",width:"220px"},{title:"GPU",key:"gpu",width:"100px"},{title:"状态",key:"status",width:"100px"},{title:"任务数",key:"taskCount",width:"90px"},{title:"最近心跳",key:"lastHeartbeat",width:"160px"},{title:"操作",key:"action",width:"210px"}],be=[{title:"模型",key:"model"},{title:"隐私",key:"privacyMode",width:"110px"},{title:"优先级",key:"priority",width:"80px"},{title:"执行节点",key:"assignedNode",width:"140px"},{title:"状态",key:"status",width:"110px"},{title:"耗时",key:"duration",width:"110px"},{title:"提交时间",key:"createdAt",width:"160px"},{title:"操作",key:"action",width:"140px"}],xe=ye(()=>U.value?L.value.filter(o=>o.status===U.value):L.value),Se=ye(()=>{let o=ee.value;return O.value&&(o=o.filter(e=>e.status===O.value)),D.value&&(o=o.filter(e=>e.privacyMode===D.value)),o});function H(o){return{online:"在线",offline:"离线",busy:"忙碌",degraded:"降级"}[o]||o}function Ce(o){return{online:"green",offline:"default",busy:"orange",degraded:"red"}[o]||"default"}function te(o){return{queued:"排队中",dispatched:"已派发",running:"运行中",complete:"已完成",failed:"失败"}[o]||o}function ze(o){return{queued:"default",dispatched:"processing",running:"cyan",complete:"green",failed:"red"}[o]||"default"}function Y(o){return{standard:"标准",encrypted:"加密",federated:"联邦"}[o]||o}function he(o){return{standard:"default",encrypted:"purple",federated:"cyan"}[o]||"default"}function Me(o){return o>=8?"#ff4d4f":o>=5?"#faad14":"#52c41a"}function Ne(o){const e=L.value.find(f=>f.id===o);return e?e.nodeId:o.slice(0,8)}function ae(o,e){return o?o.length>e?o.slice(0,e)+"...":o:""}function Ae(o){return o>=1024?`${(o/1024).toFixed(1)} GB`:`${o} MB`}function Ie(o){return o.status==="queued"||o.status==="dispatched"||o.status==="running"}function je(o){return o.status!=="complete"&&o.status!=="failed"}function Te({key:o}){o==="register"?B.value=!0:o==="submit"&&(R.value=!0)}async function N(){u.value=!0;try{const[o,e,f]=await Promise.all([s.execute("inference nodes --limit 200 --json",1e4).catch(()=>({output:""})),s.execute("inference tasks --limit 200 --json",1e4).catch(()=>({output:""})),s.execute("inference stats --json",8e3).catch(()=>({output:""}))]);L.value=et(o.output),ee.value=at(e.output),b.value=nt(f.output)}catch(o){y.error("加载推理网络数据失败: "+(o?.message||o))}finally{u.value=!1}}async function $e(){const o=g.nodeId.trim();if(!o){y.warning("请填写节点 ID");return}E.value=!0;try{const e=[`inference register "${o.replace(/"/g,'\\"')}"`];if(g.endpoint.trim()&&e.push(`--endpoint "${g.endpoint.trim().replace(/"/g,'\\"')}"`),g.capabilities.trim()){const T=g.capabilities.split(/[,\s]+/).filter(Boolean).join(",");T&&e.push(`--capabilities "${T}"`)}g.gpuMemory!=null&&e.push(`--gpu ${g.gpuMemory}`),e.push("--json");const{output:f}=await s.execute(e.join(" "),1e4);if(/error|failed|失败/i.test(f)&&!/"nodeId"/.test(f)){y.error("注册失败: "+f.slice(0,120));return}y.success("节点已注册"),B.value=!1,oe(),await N()}catch(e){y.error("注册失败: "+(e?.message||e))}finally{E.value=!1}}async function we(){const o=_.model.trim();if(!o){y.warning("请填写模型名");return}G.value=!0;try{const e=[`inference submit "${o.replace(/"/g,'\\"')}"`];_.input.trim()&&e.push(`--input "${_.input.trim().replace(/"/g,'\\"')}"`),_.priority!=null&&e.push(`--priority ${_.priority}`),e.push(`--mode ${_.mode}`),e.push("--json");const{output:f}=await s.execute(e.join(" "),12e3);if(/error|failed|失败/i.test(f)&&!/"taskId"/.test(f)){y.error("提交失败: "+f.slice(0,120));return}y.success("任务已提交"),R.value=!1,ne(),W.value="tasks",await N()}catch(e){y.error("提交失败: "+(e?.message||e))}finally{G.value=!1}}async function Ue(o){V.value=o.id;try{const{output:e}=await s.execute(`inference heartbeat ${o.id} --json`,8e3);if(/error/i.test(e)&&!/"updated"/.test(e)){y.error("心跳失败: "+e.slice(0,120));return}y.success("心跳已更新"),await N()}catch(e){y.error("心跳失败: "+(e?.message||e))}finally{V.value=""}}async function Oe(o,e){if(e!==o.status)try{const{output:f}=await s.execute(`inference node-status ${o.id} ${e} --json`,8e3);if(/error|invalid/i.test(f)&&!/"updated"/.test(f)){y.error("状态转换失败: "+f.slice(0,120));return}y.success(`节点状态已更新为 ${H(e)}`),await N()}catch(f){y.error("状态转换失败: "+(f?.message||f))}}async function De(o){try{const{output:e}=await s.execute(`inference unregister ${o.id} --json`,8e3);if(/error/i.test(e)&&!/"removed"/.test(e)){y.error("注销失败: "+e.slice(0,120));return}y.success("节点已注销"),await N()}catch(e){y.error("注销失败: "+(e?.message||e))}}async function qe(o){K.value=o.id;try{const{output:e}=await s.execute(`inference complete ${o.id} --json`,1e4);if(/error|failed/i.test(e)&&!/"completed"/.test(e)){y.error("完成失败: "+e.slice(0,120));return}y.success("任务已完成"),await N()}catch(e){y.error("完成失败: "+(e?.message||e))}finally{K.value=""}}async function Fe(o){try{const{output:e}=await s.execute(`inference fail-task ${o.id} --json`,8e3);if(/error/i.test(e)&&!/"failed"/.test(e)){y.error("标记失败: "+e.slice(0,120));return}y.success("已标记为失败"),await N()}catch(e){y.error("标记失败: "+(e?.message||e))}}function oe(){g.nodeId="",g.endpoint="",g.capabilities="",g.gpuMemory=null}function ne(){_.model="",_.input="",_.priority=5,_.mode="standard"}return We(N),(o,e)=>{const f=v("a-button"),T=v("a-menu-item"),le=v("a-menu"),se=v("a-dropdown"),ie=v("a-space"),q=v("a-statistic"),$=v("a-card"),F=v("a-col"),Le=v("a-row"),A=v("a-tag"),j=v("a-radio-button"),J=v("a-radio-group"),re=v("a-popconfirm"),ue=v("a-table"),de=v("a-tab-pane"),Be=v("a-tabs"),P=v("a-input"),I=v("a-form-item"),pe=v("a-input-number"),ce=v("a-form"),fe=v("a-modal"),Re=v("a-textarea");return i(),c("div",null,[M("div",lt,[e[18]||(e[18]=M("div",null,[M("h2",{class:"page-title"},"推理网络"),M("p",{class:"page-sub"},"去中心化推理节点 · 任务调度 · 隐私模式")],-1)),a(ie,null,{default:t(()=>[a(f,{loading:u.value,onClick:N},{icon:t(()=>[a(k(Ee))]),default:t(()=>[e[14]||(e[14]=d(" 刷新 ",-1))]),_:1},8,["loading"]),a(se,{trigger:["click"]},{overlay:t(()=>[a(le,{onClick:Te},{default:t(()=>[a(T,{key:"register"},{default:t(()=>[a(k(Q)),e[16]||(e[16]=d(" 注册节点",-1))]),_:1}),a(T,{key:"submit"},{default:t(()=>[a(k(X)),e[17]||(e[17]=d(" 提交推理任务",-1))]),_:1})]),_:1})]),default:t(()=>[a(f,{type:"primary"},{icon:t(()=>[a(k(Ge))]),default:t(()=>[e[15]||(e[15]=d(" 操作 ▼ ",-1))]),_:1})]),_:1})]),_:1})]),a(Le,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:t(()=>[a(F,{xs:12,sm:8,lg:5},{default:t(()=>[a($,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(q,{title:"节点总数",value:b.value.nodes.total,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:t(()=>[a(k(Q))]),_:1},8,["value"])]),_:1})]),_:1}),a(F,{xs:12,sm:8,lg:5},{default:t(()=>[a($,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(q,{title:"在线节点",value:b.value.nodes.online,"value-style":{color:b.value.nodes.online>0?"#52c41a":"#888",fontSize:"20px"}},{prefix:t(()=>[a(k(Ve))]),_:1},8,["value","value-style"])]),_:1})]),_:1}),a(F,{xs:12,sm:8,lg:5},{default:t(()=>[a($,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(q,{title:"任务总数",value:b.value.tasks.total,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:t(()=>[a(k(X))]),_:1},8,["value"])]),_:1})]),_:1}),a(F,{xs:12,sm:8,lg:5},{default:t(()=>[a($,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(q,{title:"排队中",value:b.value.tasks.queued,"value-style":{color:b.value.tasks.queued>0?"#faad14":"#52c41a",fontSize:"20px"}},{prefix:t(()=>[a(k(Ke))]),_:1},8,["value","value-style"])]),_:1})]),_:1}),a(F,{xs:24,sm:8,lg:4},{default:t(()=>[a($,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(q,{title:"平均耗时",value:b.value.tasks.avgDurationMs,suffix:"ms","value-style":{color:"#13c2c2",fontSize:"20px"}},null,8,["value"])]),_:1})]),_:1})]),_:1}),b.value.nodes.total>0?(i(),x($,{key:0,title:"节点状态分布",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:t(()=>[a(ie,{size:[12,8],wrap:""},{default:t(()=>[a(A,{color:"green"},{default:t(()=>[d("在线 "+p(b.value.nodes.online),1)]),_:1}),a(A,{color:"orange"},{default:t(()=>[d("忙碌 "+p(b.value.nodes.busy),1)]),_:1}),a(A,{color:"default"},{default:t(()=>[d("离线 "+p(b.value.nodes.offline),1)]),_:1}),M("span",st," 完成: "+p(b.value.tasks.completed)+" · 失败: "+p(b.value.tasks.failed),1)]),_:1})]),_:1})):m("",!0),a(Be,{activeKey:W.value,"onUpdate:activeKey":e[3]||(e[3]=n=>W.value=n),class:"inference-tabs"},{default:t(()=>[a(de,{key:"nodes",tab:"节点"},{default:t(()=>[M("div",it,[a(J,{value:U.value,"onUpdate:value":e[0]||(e[0]=n=>U.value=n),size:"small","button-style":"solid"},{default:t(()=>[a(j,{value:""},{default:t(()=>[...e[19]||(e[19]=[d("全部",-1)])]),_:1}),(i(!0),c(C,null,w(k(ve),n=>(i(),x(j,{key:n,value:n},{default:t(()=>[d(p(H(n)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),a(ue,{columns:ke,"data-source":xe.value,pagination:{pageSize:20,showTotal:n=>`共 ${n} 条`},size:"small",loading:u.value,style:{background:"var(--bg-card)"}},{bodyCell:t(({column:n,record:r})=>[n.key==="nodeId"?(i(),c(C,{key:0},[M("span",rt,p(r.nodeId),1),r.endpoint?(i(),c("div",ut,p(ae(r.endpoint,50)),1)):m("",!0)],64)):m("",!0),n.key==="capabilities"?(i(),c(C,{key:1},[(i(!0),c(C,null,w(r.capabilities.slice(0,4),z=>(i(),x(A,{key:z,color:"blue",style:{"font-size":"10px",margin:"1px"}},{default:t(()=>[d(p(z),1)]),_:2},1024))),128)),r.capabilities.length>4?(i(),x(A,{key:0,color:"default",style:{"font-size":"10px"}},{default:t(()=>[d("+"+p(r.capabilities.length-4),1)]),_:2},1024)):m("",!0),r.capabilities.length?m("",!0):(i(),c("span",dt,"—"))],64)):m("",!0),n.key==="gpu"?(i(),c(C,{key:2},[r.gpuMemoryMb>0?(i(),c("span",pt,p(Ae(r.gpuMemoryMb)),1)):(i(),c("span",ct,"—"))],64)):m("",!0),n.key==="status"?(i(),x(A,{key:3,color:Ce(r.status)},{default:t(()=>[d(p(H(r.status)),1)]),_:2},1032,["color"])):m("",!0),n.key==="taskCount"?(i(),x(A,{key:4,color:"purple",style:{"font-size":"11px"}},{default:t(()=>[d(p(r.taskCount),1)]),_:2},1024)):m("",!0),n.key==="lastHeartbeat"?(i(),c("span",ft,p(k(_e)(r.lastHeartbeat)),1)):m("",!0),n.key==="action"?(i(),c(C,{key:6},[a(f,{size:"small",type:"link",loading:V.value===r.id,onClick:z=>Ue(r)},{default:t(()=>[...e[20]||(e[20]=[d("心跳",-1)])]),_:1},8,["loading","onClick"]),a(se,{trigger:["click"]},{overlay:t(()=>[a(le,{onClick:z=>Oe(r,z.key)},{default:t(()=>[(i(!0),c(C,null,w(k(ve),z=>(i(),x(T,{key:z,disabled:z===r.status},{default:t(()=>[d(p(H(z)),1)]),_:2},1032,["disabled"]))),128))]),_:2},1032,["onClick"])]),default:t(()=>[a(f,{size:"small",type:"link"},{default:t(()=>[...e[21]||(e[21]=[d("状态 ▼",-1)])]),_:1})]),_:2},1024),a(re,{title:"注销该节点?","ok-text":"注销","cancel-text":"取消",onConfirm:z=>De(r)},{default:t(()=>[a(f,{size:"small",type:"link",danger:""},{default:t(()=>[...e[22]||(e[22]=[d("注销",-1)])]),_:1})]),_:1},8,["onConfirm"])],64)):m("",!0)]),emptyText:t(()=>[M("div",yt,[a(k(Q),{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),d(" "+p(U.value?"没有符合条件的节点":'暂无节点,点"操作 → 注册节点"添加第一个'),1)])]),_:1},8,["data-source","pagination","loading"])]),_:1}),a(de,{key:"tasks",tab:"任务"},{default:t(()=>[M("div",mt,[a(J,{value:O.value,"onUpdate:value":e[1]||(e[1]=n=>O.value=n),size:"small"},{default:t(()=>[a(j,{value:""},{default:t(()=>[...e[23]||(e[23]=[d("全部状态",-1)])]),_:1}),(i(!0),c(C,null,w(k(Qe),n=>(i(),x(j,{key:n,value:n},{default:t(()=>[d(p(te(n)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),a(J,{value:D.value,"onUpdate:value":e[2]||(e[2]=n=>D.value=n),size:"small"},{default:t(()=>[a(j,{value:""},{default:t(()=>[...e[24]||(e[24]=[d("全部模式",-1)])]),_:1}),(i(!0),c(C,null,w(k(ge),n=>(i(),x(j,{key:n,value:n},{default:t(()=>[d(p(Y(n)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),a(ue,{columns:be,"data-source":Se.value,pagination:{pageSize:20,showTotal:n=>`共 ${n} 条`},size:"small",loading:u.value,style:{background:"var(--bg-card)"}},{bodyCell:t(({column:n,record:r})=>[n.key==="model"?(i(),c(C,{key:0},[M("span",vt,p(r.model),1),r.input?(i(),c("div",gt,p(ae(r.input,60)),1)):m("",!0)],64)):m("",!0),n.key==="privacyMode"?(i(),x(A,{key:1,color:he(r.privacyMode)},{default:t(()=>[d(p(Y(r.privacyMode)),1)]),_:2},1032,["color"])):m("",!0),n.key==="priority"?(i(),c("span",{key:2,style:Ye({color:Me(r.priority),fontWeight:500})},p(r.priority),5)):m("",!0),n.key==="assignedNode"?(i(),c(C,{key:3},[r.assignedNode?(i(),c("span",_t,p(Ne(r.assignedNode)),1)):(i(),c("span",kt,"—"))],64)):m("",!0),n.key==="status"?(i(),x(A,{key:4,color:ze(r.status)},{default:t(()=>[d(p(te(r.status)),1)]),_:2},1032,["color"])):m("",!0),n.key==="duration"?(i(),c(C,{key:5},[r.durationMs!=null?(i(),c("span",bt,p(r.durationMs)+" ms ",1)):(i(),c("span",xt,"—"))],64)):m("",!0),n.key==="createdAt"?(i(),c("span",St,p(k(_e)(r.createdAt)),1)):m("",!0),n.key==="action"?(i(),c(C,{key:7},[Ie(r)?(i(),x(f,{key:0,size:"small",type:"link",loading:K.value===r.id,onClick:z=>qe(r)},{default:t(()=>[...e[25]||(e[25]=[d(" 完成 ",-1)])]),_:1},8,["loading","onClick"])):m("",!0),je(r)?(i(),x(re,{key:1,title:"标记任务失败?","ok-text":"确认","cancel-text":"取消",onConfirm:z=>Fe(r)},{default:t(()=>[a(f,{size:"small",type:"link",danger:""},{default:t(()=>[...e[26]||(e[26]=[d("失败",-1)])]),_:1})]),_:1},8,["onConfirm"])):m("",!0)],64)):m("",!0)]),emptyText:t(()=>[M("div",Ct,[a(k(X),{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),d(" "+p(O.value||D.value?"没有符合条件的任务":'暂无任务,点"操作 → 提交推理任务"创建第一个'),1)])]),_:1},8,["data-source","pagination","loading"])]),_:1})]),_:1},8,["activeKey"]),a(fe,{open:B.value,"onUpdate:open":e[8]||(e[8]=n=>B.value=n),title:"注册推理节点","confirm-loading":E.value,width:520,"ok-text":"注册","cancel-text":"取消",onOk:$e,onCancel:oe},{default:t(()=>[a(ce,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:t(()=>[a(I,{label:"节点 ID",required:""},{default:t(()=>[a(P,{value:g.nodeId,"onUpdate:value":e[4]||(e[4]=n=>g.nodeId=n),placeholder:"例如: gpu-host-1"},null,8,["value"])]),_:1}),a(I,{label:"端点 URL"},{default:t(()=>[a(P,{value:g.endpoint,"onUpdate:value":e[5]||(e[5]=n=>g.endpoint=n),placeholder:"https://node.example.com(可选)"},null,8,["value"])]),_:1}),a(I,{label:"能力列表"},{default:t(()=>[a(P,{value:g.capabilities,"onUpdate:value":e[6]||(e[6]=n=>g.capabilities=n),placeholder:"逗号分隔,例如: llama2,mistral,gpt-4"},null,8,["value"])]),_:1}),a(I,{label:"GPU 内存 (MB)"},{default:t(()=>[a(pe,{value:g.gpuMemory,"onUpdate:value":e[7]||(e[7]=n=>g.gpuMemory=n),min:0,max:2e5,style:{width:"100%"}},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"]),a(fe,{open:R.value,"onUpdate:open":e[13]||(e[13]=n=>R.value=n),title:"提交推理任务","confirm-loading":G.value,width:520,"ok-text":"提交","cancel-text":"取消",onOk:we,onCancel:ne},{default:t(()=>[a(ce,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:t(()=>[a(I,{label:"模型",required:""},{default:t(()=>[a(P,{value:_.model,"onUpdate:value":e[9]||(e[9]=n=>_.model=n),placeholder:"例如: llama2-7b"},null,8,["value"])]),_:1}),a(I,{label:"输入"},{default:t(()=>[a(Re,{value:_.input,"onUpdate:value":e[10]||(e[10]=n=>_.input=n),"auto-size":{minRows:3,maxRows:6}},null,8,["value"])]),_:1}),a(I,{label:"优先级"},{default:t(()=>[a(pe,{value:_.priority,"onUpdate:value":e[11]||(e[11]=n=>_.priority=n),min:1,max:10,style:{width:"100%"}},null,8,["value"])]),_:1}),a(I,{label:"隐私模式"},{default:t(()=>[a(J,{value:_.mode,"onUpdate:value":e[12]||(e[12]=n=>_.mode=n)},{default:t(()=>[(i(!0),c(C,null,w(k(ge),n=>(i(),x(j,{key:n,value:n},{default:t(()=>[d(p(Y(n)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"])])}}},qt=Pe(zt,[["__scopeId","data-v-cd24d62b"]]);export{qt as default};
1
+ import{u as He}from"./ws-Bv7YH0VB.js";import{s as Je}from"./community-parser-CO25nZFt.js";import{_ as Pe}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{a as y}from"./index-BfKFNptm.js";import{Y as Ee,ac as Ge,d as Q,m as X,aa as Ve,k as Ke}from"./icons-ukMaZ3tx.js";import{l as We,F as c,D as M,c as a,x as t,m as x,G as m,q as v,r as S,v as i,J as d,u as k,I as p,H as C,L as w,N as Ye,j as ye,a as me}from"./vendor-BVetwVfk.js";import"./index-DfcXDy2A.js";import"./useConfigInject-DCcT0grw.js";import"./transition-DSe9CgZe.js";import"./Keyframes-C7fCrnlS.js";import"./Portal-CHsntPCQ.js";import"./index-U4Zd5IK6.js";function Z(l){const s=Je(l);if(!s)return null;try{return JSON.parse(s)}catch{}const u=s.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!u)return null;try{return JSON.parse(u[0])}catch{return null}}const ve=Object.freeze(["online","offline","busy","degraded"]),Qe=Object.freeze(["queued","dispatched","running","complete","failed"]),ge=Object.freeze(["standard","encrypted","federated"]);function h(l,s=0){return typeof l=="number"&&Number.isFinite(l)?l:s}function Xe(l){if(Array.isArray(l))return l.filter(s=>typeof s=="string");if(typeof l=="string")try{const s=JSON.parse(l);if(Array.isArray(s))return s.filter(u=>typeof u=="string")}catch{}return[]}function Ze(l,s=0){if(!l||typeof l!="object")return null;const u=l.id||"";return u?{key:u,id:u,nodeId:l.nodeId??l.node_id??"",endpoint:l.endpoint||"",capabilities:Xe(l.capabilities),gpuMemoryMb:h(l.gpuMemoryMb??l.gpu_memory_mb,0),status:String(l.status||"offline").toLowerCase(),lastHeartbeat:l.lastHeartbeat??l.last_heartbeat??null,taskCount:h(l.taskCount??l.task_count,0),createdAt:l.createdAt??l.created_at??null,_idx:s}:null}function et(l){const s=Z(l);return Array.isArray(s)?s.map(Ze).filter(Boolean):[]}function tt(l,s=0){if(!l||typeof l!="object")return null;const u=l.id||"";return u?{key:u,id:u,model:String(l.model||""),input:l.input??"",output:l.output??"",privacyMode:String(l.privacyMode??l.privacy_mode??"standard").toLowerCase(),priority:h(l.priority,5),assignedNode:l.assignedNode??l.assigned_node??null,status:String(l.status||"queued").toLowerCase(),durationMs:l.durationMs??l.duration_ms??null,createdAt:l.createdAt??l.created_at??null,completedAt:l.completedAt??l.completed_at??null,_idx:s}:null}function at(l){const s=Z(l);return Array.isArray(s)?s.map(tt).filter(Boolean):[]}const ot={nodes:{total:0,online:0,offline:0,busy:0},tasks:{total:0,queued:0,completed:0,failed:0,avgDurationMs:0}};function nt(l){const s=JSON.parse(JSON.stringify(ot)),u=Z(l);return!u||typeof u!="object"||Array.isArray(u)||(u.nodes&&typeof u.nodes=="object"&&(s.nodes.total=h(u.nodes.total,0),s.nodes.online=h(u.nodes.online,0),s.nodes.offline=h(u.nodes.offline,0),s.nodes.busy=h(u.nodes.busy,0)),u.tasks&&typeof u.tasks=="object"&&(s.tasks.total=h(u.tasks.total,0),s.tasks.queued=h(u.tasks.queued,0),s.tasks.completed=h(u.tasks.completed,0),s.tasks.failed=h(u.tasks.failed,0),s.tasks.avgDurationMs=h(u.tasks.avgDurationMs??u.tasks.avg_duration_ms,0))),s}function _e(l){if(l==null||l==="")return"—";const s=typeof l=="number"?new Date(l):new Date(String(l));return isNaN(s.getTime())?String(l):s.toLocaleString("zh-CN",{hour12:!1})}const lt={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},st={style:{color:"var(--text-secondary)","font-size":"12px","margin-left":"8px"}},it={class:"filter-bar"},rt={style:{color:"var(--text-primary)","font-family":"monospace","font-weight":"500"}},ut={key:0,style:{color:"var(--text-secondary)","font-size":"11px","margin-top":"2px"}},dt={key:1,style:{color:"var(--text-muted)"}},pt={key:0,style:{color:"var(--text-secondary)","font-family":"monospace"}},ct={key:1,style:{color:"var(--text-muted)"}},ft={key:5,style:{color:"var(--text-secondary)","font-size":"11px"}},yt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},mt={class:"filter-bar"},vt={style:{color:"var(--text-primary)","font-family":"monospace","font-weight":"500"}},gt={key:0,style:{color:"var(--text-secondary)","font-size":"11px","margin-top":"2px"}},_t={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"11px"}},kt={key:1,style:{color:"var(--text-muted)"}},bt={key:0,style:{"font-family":"monospace",color:"var(--text-secondary)","font-size":"12px"}},xt={key:1,style:{color:"var(--text-muted)"}},St={key:6,style:{color:"var(--text-secondary)","font-size":"11px"}},Ct={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},zt={__name:"Inference",setup(l){const s=He(),u=S(!1),E=S(!1),G=S(!1),V=S(""),K=S(""),L=S([]),ee=S([]),b=S({nodes:{total:0,online:0,offline:0,busy:0},tasks:{total:0,queued:0,completed:0,failed:0,avgDurationMs:0}}),W=S("nodes"),U=S(""),O=S(""),D=S(""),B=S(!1),R=S(!1),g=me({nodeId:"",endpoint:"",capabilities:"",gpuMemory:null}),_=me({model:"",input:"",priority:5,mode:"standard"}),ke=[{title:"节点 ID",key:"nodeId"},{title:"能力",key:"capabilities",width:"220px"},{title:"GPU",key:"gpu",width:"100px"},{title:"状态",key:"status",width:"100px"},{title:"任务数",key:"taskCount",width:"90px"},{title:"最近心跳",key:"lastHeartbeat",width:"160px"},{title:"操作",key:"action",width:"210px"}],be=[{title:"模型",key:"model"},{title:"隐私",key:"privacyMode",width:"110px"},{title:"优先级",key:"priority",width:"80px"},{title:"执行节点",key:"assignedNode",width:"140px"},{title:"状态",key:"status",width:"110px"},{title:"耗时",key:"duration",width:"110px"},{title:"提交时间",key:"createdAt",width:"160px"},{title:"操作",key:"action",width:"140px"}],xe=ye(()=>U.value?L.value.filter(o=>o.status===U.value):L.value),Se=ye(()=>{let o=ee.value;return O.value&&(o=o.filter(e=>e.status===O.value)),D.value&&(o=o.filter(e=>e.privacyMode===D.value)),o});function H(o){return{online:"在线",offline:"离线",busy:"忙碌",degraded:"降级"}[o]||o}function Ce(o){return{online:"green",offline:"default",busy:"orange",degraded:"red"}[o]||"default"}function te(o){return{queued:"排队中",dispatched:"已派发",running:"运行中",complete:"已完成",failed:"失败"}[o]||o}function ze(o){return{queued:"default",dispatched:"processing",running:"cyan",complete:"green",failed:"red"}[o]||"default"}function Y(o){return{standard:"标准",encrypted:"加密",federated:"联邦"}[o]||o}function he(o){return{standard:"default",encrypted:"purple",federated:"cyan"}[o]||"default"}function Me(o){return o>=8?"#ff4d4f":o>=5?"#faad14":"#52c41a"}function Ne(o){const e=L.value.find(f=>f.id===o);return e?e.nodeId:o.slice(0,8)}function ae(o,e){return o?o.length>e?o.slice(0,e)+"...":o:""}function Ae(o){return o>=1024?`${(o/1024).toFixed(1)} GB`:`${o} MB`}function Ie(o){return o.status==="queued"||o.status==="dispatched"||o.status==="running"}function je(o){return o.status!=="complete"&&o.status!=="failed"}function Te({key:o}){o==="register"?B.value=!0:o==="submit"&&(R.value=!0)}async function N(){u.value=!0;try{const[o,e,f]=await Promise.all([s.execute("inference nodes --limit 200 --json",1e4).catch(()=>({output:""})),s.execute("inference tasks --limit 200 --json",1e4).catch(()=>({output:""})),s.execute("inference stats --json",8e3).catch(()=>({output:""}))]);L.value=et(o.output),ee.value=at(e.output),b.value=nt(f.output)}catch(o){y.error("加载推理网络数据失败: "+(o?.message||o))}finally{u.value=!1}}async function $e(){const o=g.nodeId.trim();if(!o){y.warning("请填写节点 ID");return}E.value=!0;try{const e=[`inference register "${o.replace(/"/g,'\\"')}"`];if(g.endpoint.trim()&&e.push(`--endpoint "${g.endpoint.trim().replace(/"/g,'\\"')}"`),g.capabilities.trim()){const T=g.capabilities.split(/[,\s]+/).filter(Boolean).join(",");T&&e.push(`--capabilities "${T}"`)}g.gpuMemory!=null&&e.push(`--gpu ${g.gpuMemory}`),e.push("--json");const{output:f}=await s.execute(e.join(" "),1e4);if(/error|failed|失败/i.test(f)&&!/"nodeId"/.test(f)){y.error("注册失败: "+f.slice(0,120));return}y.success("节点已注册"),B.value=!1,oe(),await N()}catch(e){y.error("注册失败: "+(e?.message||e))}finally{E.value=!1}}async function we(){const o=_.model.trim();if(!o){y.warning("请填写模型名");return}G.value=!0;try{const e=[`inference submit "${o.replace(/"/g,'\\"')}"`];_.input.trim()&&e.push(`--input "${_.input.trim().replace(/"/g,'\\"')}"`),_.priority!=null&&e.push(`--priority ${_.priority}`),e.push(`--mode ${_.mode}`),e.push("--json");const{output:f}=await s.execute(e.join(" "),12e3);if(/error|failed|失败/i.test(f)&&!/"taskId"/.test(f)){y.error("提交失败: "+f.slice(0,120));return}y.success("任务已提交"),R.value=!1,ne(),W.value="tasks",await N()}catch(e){y.error("提交失败: "+(e?.message||e))}finally{G.value=!1}}async function Ue(o){V.value=o.id;try{const{output:e}=await s.execute(`inference heartbeat ${o.id} --json`,8e3);if(/error/i.test(e)&&!/"updated"/.test(e)){y.error("心跳失败: "+e.slice(0,120));return}y.success("心跳已更新"),await N()}catch(e){y.error("心跳失败: "+(e?.message||e))}finally{V.value=""}}async function Oe(o,e){if(e!==o.status)try{const{output:f}=await s.execute(`inference node-status ${o.id} ${e} --json`,8e3);if(/error|invalid/i.test(f)&&!/"updated"/.test(f)){y.error("状态转换失败: "+f.slice(0,120));return}y.success(`节点状态已更新为 ${H(e)}`),await N()}catch(f){y.error("状态转换失败: "+(f?.message||f))}}async function De(o){try{const{output:e}=await s.execute(`inference unregister ${o.id} --json`,8e3);if(/error/i.test(e)&&!/"removed"/.test(e)){y.error("注销失败: "+e.slice(0,120));return}y.success("节点已注销"),await N()}catch(e){y.error("注销失败: "+(e?.message||e))}}async function qe(o){K.value=o.id;try{const{output:e}=await s.execute(`inference complete ${o.id} --json`,1e4);if(/error|failed/i.test(e)&&!/"completed"/.test(e)){y.error("完成失败: "+e.slice(0,120));return}y.success("任务已完成"),await N()}catch(e){y.error("完成失败: "+(e?.message||e))}finally{K.value=""}}async function Fe(o){try{const{output:e}=await s.execute(`inference fail-task ${o.id} --json`,8e3);if(/error/i.test(e)&&!/"failed"/.test(e)){y.error("标记失败: "+e.slice(0,120));return}y.success("已标记为失败"),await N()}catch(e){y.error("标记失败: "+(e?.message||e))}}function oe(){g.nodeId="",g.endpoint="",g.capabilities="",g.gpuMemory=null}function ne(){_.model="",_.input="",_.priority=5,_.mode="standard"}return We(N),(o,e)=>{const f=v("a-button"),T=v("a-menu-item"),le=v("a-menu"),se=v("a-dropdown"),ie=v("a-space"),q=v("a-statistic"),$=v("a-card"),F=v("a-col"),Le=v("a-row"),A=v("a-tag"),j=v("a-radio-button"),J=v("a-radio-group"),re=v("a-popconfirm"),ue=v("a-table"),de=v("a-tab-pane"),Be=v("a-tabs"),P=v("a-input"),I=v("a-form-item"),pe=v("a-input-number"),ce=v("a-form"),fe=v("a-modal"),Re=v("a-textarea");return i(),c("div",null,[M("div",lt,[e[18]||(e[18]=M("div",null,[M("h2",{class:"page-title"},"推理网络"),M("p",{class:"page-sub"},"去中心化推理节点 · 任务调度 · 隐私模式")],-1)),a(ie,null,{default:t(()=>[a(f,{loading:u.value,onClick:N},{icon:t(()=>[a(k(Ee))]),default:t(()=>[e[14]||(e[14]=d(" 刷新 ",-1))]),_:1},8,["loading"]),a(se,{trigger:["click"]},{overlay:t(()=>[a(le,{onClick:Te},{default:t(()=>[a(T,{key:"register"},{default:t(()=>[a(k(Q)),e[16]||(e[16]=d(" 注册节点",-1))]),_:1}),a(T,{key:"submit"},{default:t(()=>[a(k(X)),e[17]||(e[17]=d(" 提交推理任务",-1))]),_:1})]),_:1})]),default:t(()=>[a(f,{type:"primary"},{icon:t(()=>[a(k(Ge))]),default:t(()=>[e[15]||(e[15]=d(" 操作 ▼ ",-1))]),_:1})]),_:1})]),_:1})]),a(Le,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:t(()=>[a(F,{xs:12,sm:8,lg:5},{default:t(()=>[a($,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(q,{title:"节点总数",value:b.value.nodes.total,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:t(()=>[a(k(Q))]),_:1},8,["value"])]),_:1})]),_:1}),a(F,{xs:12,sm:8,lg:5},{default:t(()=>[a($,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(q,{title:"在线节点",value:b.value.nodes.online,"value-style":{color:b.value.nodes.online>0?"#52c41a":"#888",fontSize:"20px"}},{prefix:t(()=>[a(k(Ve))]),_:1},8,["value","value-style"])]),_:1})]),_:1}),a(F,{xs:12,sm:8,lg:5},{default:t(()=>[a($,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(q,{title:"任务总数",value:b.value.tasks.total,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:t(()=>[a(k(X))]),_:1},8,["value"])]),_:1})]),_:1}),a(F,{xs:12,sm:8,lg:5},{default:t(()=>[a($,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(q,{title:"排队中",value:b.value.tasks.queued,"value-style":{color:b.value.tasks.queued>0?"#faad14":"#52c41a",fontSize:"20px"}},{prefix:t(()=>[a(k(Ke))]),_:1},8,["value","value-style"])]),_:1})]),_:1}),a(F,{xs:24,sm:8,lg:4},{default:t(()=>[a($,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(q,{title:"平均耗时",value:b.value.tasks.avgDurationMs,suffix:"ms","value-style":{color:"#13c2c2",fontSize:"20px"}},null,8,["value"])]),_:1})]),_:1})]),_:1}),b.value.nodes.total>0?(i(),x($,{key:0,title:"节点状态分布",size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:t(()=>[a(ie,{size:[12,8],wrap:""},{default:t(()=>[a(A,{color:"green"},{default:t(()=>[d("在线 "+p(b.value.nodes.online),1)]),_:1}),a(A,{color:"orange"},{default:t(()=>[d("忙碌 "+p(b.value.nodes.busy),1)]),_:1}),a(A,{color:"default"},{default:t(()=>[d("离线 "+p(b.value.nodes.offline),1)]),_:1}),M("span",st," 完成: "+p(b.value.tasks.completed)+" · 失败: "+p(b.value.tasks.failed),1)]),_:1})]),_:1})):m("",!0),a(Be,{activeKey:W.value,"onUpdate:activeKey":e[3]||(e[3]=n=>W.value=n),class:"inference-tabs"},{default:t(()=>[a(de,{key:"nodes",tab:"节点"},{default:t(()=>[M("div",it,[a(J,{value:U.value,"onUpdate:value":e[0]||(e[0]=n=>U.value=n),size:"small","button-style":"solid"},{default:t(()=>[a(j,{value:""},{default:t(()=>[...e[19]||(e[19]=[d("全部",-1)])]),_:1}),(i(!0),c(C,null,w(k(ve),n=>(i(),x(j,{key:n,value:n},{default:t(()=>[d(p(H(n)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),a(ue,{columns:ke,"data-source":xe.value,pagination:{pageSize:20,showTotal:n=>`共 ${n} 条`},size:"small",loading:u.value,style:{background:"var(--bg-card)"}},{bodyCell:t(({column:n,record:r})=>[n.key==="nodeId"?(i(),c(C,{key:0},[M("span",rt,p(r.nodeId),1),r.endpoint?(i(),c("div",ut,p(ae(r.endpoint,50)),1)):m("",!0)],64)):m("",!0),n.key==="capabilities"?(i(),c(C,{key:1},[(i(!0),c(C,null,w(r.capabilities.slice(0,4),z=>(i(),x(A,{key:z,color:"blue",style:{"font-size":"10px",margin:"1px"}},{default:t(()=>[d(p(z),1)]),_:2},1024))),128)),r.capabilities.length>4?(i(),x(A,{key:0,color:"default",style:{"font-size":"10px"}},{default:t(()=>[d("+"+p(r.capabilities.length-4),1)]),_:2},1024)):m("",!0),r.capabilities.length?m("",!0):(i(),c("span",dt,"—"))],64)):m("",!0),n.key==="gpu"?(i(),c(C,{key:2},[r.gpuMemoryMb>0?(i(),c("span",pt,p(Ae(r.gpuMemoryMb)),1)):(i(),c("span",ct,"—"))],64)):m("",!0),n.key==="status"?(i(),x(A,{key:3,color:Ce(r.status)},{default:t(()=>[d(p(H(r.status)),1)]),_:2},1032,["color"])):m("",!0),n.key==="taskCount"?(i(),x(A,{key:4,color:"purple",style:{"font-size":"11px"}},{default:t(()=>[d(p(r.taskCount),1)]),_:2},1024)):m("",!0),n.key==="lastHeartbeat"?(i(),c("span",ft,p(k(_e)(r.lastHeartbeat)),1)):m("",!0),n.key==="action"?(i(),c(C,{key:6},[a(f,{size:"small",type:"link",loading:V.value===r.id,onClick:z=>Ue(r)},{default:t(()=>[...e[20]||(e[20]=[d("心跳",-1)])]),_:1},8,["loading","onClick"]),a(se,{trigger:["click"]},{overlay:t(()=>[a(le,{onClick:z=>Oe(r,z.key)},{default:t(()=>[(i(!0),c(C,null,w(k(ve),z=>(i(),x(T,{key:z,disabled:z===r.status},{default:t(()=>[d(p(H(z)),1)]),_:2},1032,["disabled"]))),128))]),_:2},1032,["onClick"])]),default:t(()=>[a(f,{size:"small",type:"link"},{default:t(()=>[...e[21]||(e[21]=[d("状态 ▼",-1)])]),_:1})]),_:2},1024),a(re,{title:"注销该节点?","ok-text":"注销","cancel-text":"取消",onConfirm:z=>De(r)},{default:t(()=>[a(f,{size:"small",type:"link",danger:""},{default:t(()=>[...e[22]||(e[22]=[d("注销",-1)])]),_:1})]),_:1},8,["onConfirm"])],64)):m("",!0)]),emptyText:t(()=>[M("div",yt,[a(k(Q),{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),d(" "+p(U.value?"没有符合条件的节点":'暂无节点,点"操作 → 注册节点"添加第一个'),1)])]),_:1},8,["data-source","pagination","loading"])]),_:1}),a(de,{key:"tasks",tab:"任务"},{default:t(()=>[M("div",mt,[a(J,{value:O.value,"onUpdate:value":e[1]||(e[1]=n=>O.value=n),size:"small"},{default:t(()=>[a(j,{value:""},{default:t(()=>[...e[23]||(e[23]=[d("全部状态",-1)])]),_:1}),(i(!0),c(C,null,w(k(Qe),n=>(i(),x(j,{key:n,value:n},{default:t(()=>[d(p(te(n)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),a(J,{value:D.value,"onUpdate:value":e[2]||(e[2]=n=>D.value=n),size:"small"},{default:t(()=>[a(j,{value:""},{default:t(()=>[...e[24]||(e[24]=[d("全部模式",-1)])]),_:1}),(i(!0),c(C,null,w(k(ge),n=>(i(),x(j,{key:n,value:n},{default:t(()=>[d(p(Y(n)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),a(ue,{columns:be,"data-source":Se.value,pagination:{pageSize:20,showTotal:n=>`共 ${n} 条`},size:"small",loading:u.value,style:{background:"var(--bg-card)"}},{bodyCell:t(({column:n,record:r})=>[n.key==="model"?(i(),c(C,{key:0},[M("span",vt,p(r.model),1),r.input?(i(),c("div",gt,p(ae(r.input,60)),1)):m("",!0)],64)):m("",!0),n.key==="privacyMode"?(i(),x(A,{key:1,color:he(r.privacyMode)},{default:t(()=>[d(p(Y(r.privacyMode)),1)]),_:2},1032,["color"])):m("",!0),n.key==="priority"?(i(),c("span",{key:2,style:Ye({color:Me(r.priority),fontWeight:500})},p(r.priority),5)):m("",!0),n.key==="assignedNode"?(i(),c(C,{key:3},[r.assignedNode?(i(),c("span",_t,p(Ne(r.assignedNode)),1)):(i(),c("span",kt,"—"))],64)):m("",!0),n.key==="status"?(i(),x(A,{key:4,color:ze(r.status)},{default:t(()=>[d(p(te(r.status)),1)]),_:2},1032,["color"])):m("",!0),n.key==="duration"?(i(),c(C,{key:5},[r.durationMs!=null?(i(),c("span",bt,p(r.durationMs)+" ms ",1)):(i(),c("span",xt,"—"))],64)):m("",!0),n.key==="createdAt"?(i(),c("span",St,p(k(_e)(r.createdAt)),1)):m("",!0),n.key==="action"?(i(),c(C,{key:7},[Ie(r)?(i(),x(f,{key:0,size:"small",type:"link",loading:K.value===r.id,onClick:z=>qe(r)},{default:t(()=>[...e[25]||(e[25]=[d(" 完成 ",-1)])]),_:1},8,["loading","onClick"])):m("",!0),je(r)?(i(),x(re,{key:1,title:"标记任务失败?","ok-text":"确认","cancel-text":"取消",onConfirm:z=>Fe(r)},{default:t(()=>[a(f,{size:"small",type:"link",danger:""},{default:t(()=>[...e[26]||(e[26]=[d("失败",-1)])]),_:1})]),_:1},8,["onConfirm"])):m("",!0)],64)):m("",!0)]),emptyText:t(()=>[M("div",Ct,[a(k(X),{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),d(" "+p(O.value||D.value?"没有符合条件的任务":'暂无任务,点"操作 → 提交推理任务"创建第一个'),1)])]),_:1},8,["data-source","pagination","loading"])]),_:1})]),_:1},8,["activeKey"]),a(fe,{open:B.value,"onUpdate:open":e[8]||(e[8]=n=>B.value=n),title:"注册推理节点","confirm-loading":E.value,width:520,"ok-text":"注册","cancel-text":"取消",onOk:$e,onCancel:oe},{default:t(()=>[a(ce,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:t(()=>[a(I,{label:"节点 ID",required:""},{default:t(()=>[a(P,{value:g.nodeId,"onUpdate:value":e[4]||(e[4]=n=>g.nodeId=n),placeholder:"例如: gpu-host-1"},null,8,["value"])]),_:1}),a(I,{label:"端点 URL"},{default:t(()=>[a(P,{value:g.endpoint,"onUpdate:value":e[5]||(e[5]=n=>g.endpoint=n),placeholder:"https://node.example.com(可选)"},null,8,["value"])]),_:1}),a(I,{label:"能力列表"},{default:t(()=>[a(P,{value:g.capabilities,"onUpdate:value":e[6]||(e[6]=n=>g.capabilities=n),placeholder:"逗号分隔,例如: llama2,mistral,gpt-4"},null,8,["value"])]),_:1}),a(I,{label:"GPU 内存 (MB)"},{default:t(()=>[a(pe,{value:g.gpuMemory,"onUpdate:value":e[7]||(e[7]=n=>g.gpuMemory=n),min:0,max:2e5,style:{width:"100%"}},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"]),a(fe,{open:R.value,"onUpdate:open":e[13]||(e[13]=n=>R.value=n),title:"提交推理任务","confirm-loading":G.value,width:520,"ok-text":"提交","cancel-text":"取消",onOk:we,onCancel:ne},{default:t(()=>[a(ce,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:t(()=>[a(I,{label:"模型",required:""},{default:t(()=>[a(P,{value:_.model,"onUpdate:value":e[9]||(e[9]=n=>_.model=n),placeholder:"例如: llama2-7b"},null,8,["value"])]),_:1}),a(I,{label:"输入"},{default:t(()=>[a(Re,{value:_.input,"onUpdate:value":e[10]||(e[10]=n=>_.input=n),"auto-size":{minRows:3,maxRows:6}},null,8,["value"])]),_:1}),a(I,{label:"优先级"},{default:t(()=>[a(pe,{value:_.priority,"onUpdate:value":e[11]||(e[11]=n=>_.priority=n),min:1,max:10,style:{width:"100%"}},null,8,["value"])]),_:1}),a(I,{label:"隐私模式"},{default:t(()=>[a(J,{value:_.mode,"onUpdate:value":e[12]||(e[12]=n=>_.mode=n)},{default:t(()=>[(i(!0),c(C,null,w(k(ge),n=>(i(),x(j,{key:n,value:n},{default:t(()=>[d(p(Y(n)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"])])}}},qt=Pe(zt,[["__scopeId","data-v-cd24d62b"]]);export{qt as default};