chainlesschain 0.162.133 → 0.162.135
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.
- package/package.json +2 -2
- package/src/assets/web-panel/assets/{AIOps-D5PYXgpS.js → AIOps-C8GPdDdA.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-DA4ysdbh.js → ActionButton-l3wm1drb.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-BFWqU0kU.js → Analytics-BDqrmGFj.js} +2 -2
- package/src/assets/web-panel/assets/{AppLayout-DJaMA8zM.js → AppLayout-Brv_8SYm.js} +5 -5
- package/src/assets/web-panel/assets/{Audit-Cu5EdUNw.js → Audit-CP-tplVO.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-CHqoN1Wn.js → Backup-zEeifjos.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-D7sHv5k5.js → BaseInput-BTIoNJtV.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-DwIEoXul.js → Chat-DRyq2zME.js} +5 -5
- package/src/assets/web-panel/assets/ChatBubbleRenderer-BKkD07Ou.js +1 -0
- package/src/assets/web-panel/assets/{Checkbox-0Q3R3OKe.js → Checkbox-CpyOwOBw.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-EuxRN2jc.js → Codegen-Ch-9tABk.js} +1 -1
- package/src/assets/web-panel/assets/{Col-C88Gc81T.js → Col-DTQBKMaX.js} +1 -1
- package/src/assets/web-panel/assets/{Community-DRD-Qbgo.js → Community-dCaZxTkr.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-EQRtnWqU.js → Compact-j49AW-_C.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-DAkQntzW.js → Compliance-CZDScEfD.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-BjhQndo0.js → Cowork-D77z7nsK.js} +2 -2
- package/src/assets/web-panel/assets/{Cron-BNVidRa8.js → Cron-DTUUkbYr.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-CwaR5TR4.js → Crosschain-UpAAnl37.js} +1 -1
- package/src/assets/web-panel/assets/{DID-CnZ2v2_Q.js → DID-J3DHNGdv.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-DgjhReMB.js → Dashboard-CMhAYpbr.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-BeoYnFbZ.js → Dropdown-E4ecORvY.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-D5YKi_uf.js → EmailListRenderer-C0JfIVnx.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-Df1K_Gd7.js → FamilyGuardDashboard-BuANd_x-.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-BSTYpp26.js → Federation-BoL0NWre.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-C2fTmnPv.js → FormItemContext-CuwP6Yl4.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-BGWqXdu1.js → GenericCardRenderer-BddFKuox.js} +1 -1
- package/src/assets/web-panel/assets/{Git-DG8u5Uhq.js → Git-jkdzP07a.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-Curqpb82.js → Governance-Xp6Z3HQ_.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-oOFhrj8m.js → Inference-BkIfl0oN.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-CBb6KH38.js → KnowledgeGraph-D4KjmcCK.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-BXuwdD41.js → Logs-BvIzUdZr.js} +2 -2
- package/src/assets/web-panel/assets/{Marketplace-BTpRCkiA.js → Marketplace-CIIW5sre.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-DxCN3sKG.js → McpTools-B4koRE-u.js} +3 -3
- package/src/assets/web-panel/assets/{Memory-BI8gDlyk.js → Memory-B_wZnNsC.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-BxSOiRDO.js → MobileBridge-DXFo2Q24.js} +1 -1
- package/src/assets/web-panel/assets/{MobileProjects-BFiakxnr.js → MobileProjects-CVPdCW9B.js} +1 -1
- package/src/assets/web-panel/assets/{Mtc-TUKC17XK.js → Mtc-154O648I.js} +4 -4
- package/src/assets/web-panel/assets/{MtcAudit-D2RX-5pT.js → MtcAudit-De0n8SH_.js} +2 -2
- package/src/assets/web-panel/assets/{Multisig-vzRlWX2F.js → Multisig-D3oia9D9.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-CV7gTVMx.js → NLProgramming-Cs6kl63I.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-BRwckEQP.js → Notes-BwPZuNQa.js} +3 -3
- package/src/assets/web-panel/assets/{NotificationSettings-D_epSpxf.js → NotificationSettings-BnD26DK4.js} +1 -1
- package/src/assets/web-panel/assets/{OrderTableRenderer-DiUZoZMw.js → OrderTableRenderer-BVOPWrWc.js} +1 -1
- package/src/assets/web-panel/assets/{Organization-BXMDLOZv.js → Organization-H3pMdcBb.js} +2 -2
- package/src/assets/web-panel/assets/{Overflow-D7cCvX6c.js → Overflow-Bq325sof.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-DTHILhe0.js → P2P-WW4ZOjbm.js} +2 -2
- package/src/assets/web-panel/assets/PdhVaultBrowser-C1gzHyUT.js +7 -0
- package/src/assets/web-panel/assets/{Permissions-CabXm5TU.js → Permissions-B6UgMKSQ.js} +3 -3
- package/src/assets/web-panel/assets/{PersonalDataHub-CT27ryRx.js → PersonalDataHub-C6G2G_eC.js} +3 -3
- package/src/assets/web-panel/assets/{Pipeline-Ckplz3m9.js → Pipeline-o4bOsiOg.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-V4TD__ts.js → Privacy-TwX37lFt.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-Cic8jcbW.js → ProjectInit-BgFvgULF.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-DHvk9hwH.js → ProjectSettings-BJgJb6wi.js} +2 -2
- package/src/assets/web-panel/assets/{Projects-CT9QWjwR.js → Projects-DSzrqJda.js} +1 -1
- package/src/assets/web-panel/assets/{Providers-CBiYQ8Mw.js → Providers-C6HWa3ZD.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-VPI7xb2Z.js → QuickAsk-Bz1g3Ie6.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-D0v1ViOX.js → Recommend-C_e2qe6f.js} +1 -1
- package/src/assets/web-panel/assets/{Reputation-Dpr8cUji.js → Reputation-C66IgdUQ.js} +1 -1
- package/src/assets/web-panel/assets/{Row-L5Z6GXFI.js → Row-CVgo4aH_.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-kwLpn9aV.js → RssFeed-5ASYwDim.js} +2 -2
- package/src/assets/web-panel/assets/{Search-D_sra3g-.js → Search-DBOPqd_k.js} +1 -1
- package/src/assets/web-panel/assets/{Security-CWb06MeE.js → Security-BPUlVa_U.js} +2 -2
- package/src/assets/web-panel/assets/{Services-A4Ti0exb.js → Services-BtH8pNyu.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-CH6Lp6zL.js → Skeleton-FQBcWIgc.js} +1 -1
- package/src/assets/web-panel/assets/Skills-B5SKs0R5.js +1 -0
- package/src/assets/web-panel/assets/{Sla-D7MyrxMq.js → Sla-DvynKWyz.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-bZzSxulW.js → SpeechSettings-3kg5311F.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-Be4oJLRb.js → SyncSettings-Djoam0op.js} +2 -2
- package/src/assets/web-panel/assets/Tasks-CfFSgWDg.js +1 -0
- package/src/assets/web-panel/assets/{Templates-BnaCTa7n.js → Templates-DoJV7D56.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-04JgqZFj.js → Tenant-eb1uEcsf.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-PvO7VD-K.js → Terminal-CrQBDamW.js} +2 -2
- package/src/assets/web-panel/assets/{TimelineRenderer-C5PpCHFb.js → TimelineRenderer-Cf4PL9u2.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-Cxk8RTXc.js → Tokens-Zhct1l0_.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-D8GKqHE7.js → Trigger-C_bhjD7t.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-6Xuh2TaD.js → Trust-D2qYYQ91.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-SnjOTe6A.js → UkeySign-FgbfqaRh.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-D4mh67r1.js → VideoEditing-Qf9TjR_b.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-DLG1owId.js → Wallet-DwrafyCn.js} +4 -4
- package/src/assets/web-panel/assets/{WebAuthn-2lPtuboR.js → WebAuthn-BlQdPSoZ.js} +5 -5
- package/src/assets/web-panel/assets/{WorkflowEditor-JNAuaMXq.js → WorkflowEditor-B6I7YgRJ.js} +1 -1
- package/src/assets/web-panel/assets/{chat-C_VzV_CQ.js → chat-BZ3QdktE.js} +1 -1
- package/src/assets/web-panel/assets/{colors-D4Nk10ju.js → colors-mH7WpOfg.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-DF3mC45s.js → compact-item-D3hDjv9f.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-DYPL7lov.js → createContext-Dl_7Nkr4.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-C1-v3bP6.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-D5flAJ52.js → hasIn-wvip0tzR.js} +1 -1
- package/src/assets/web-panel/assets/{index-BM2OBesL.js → index-0HVD1mxo.js} +1 -1
- package/src/assets/web-panel/assets/{index-mxl2Tk9N.js → index-B2YeO806.js} +1 -1
- package/src/assets/web-panel/assets/{index-QfqrYch4.js → index-B6czSkzN.js} +1 -1
- package/src/assets/web-panel/assets/{index-Y1PuU7dA.js → index-B9t7LEJ8.js} +1 -1
- package/src/assets/web-panel/assets/index-BDvfsM83.js +1 -0
- package/src/assets/web-panel/assets/{index-CwL5VIal.js → index-BZ14Q7jH.js} +1 -1
- package/src/assets/web-panel/assets/{index-BP_RJr7h.js → index-B_I8UbJc.js} +1 -1
- package/src/assets/web-panel/assets/{index-DIWcJ5_g.js → index-BeiskTuI.js} +1 -1
- package/src/assets/web-panel/assets/{index-DoVbiVLl.js → index-Bn1rellA.js} +1 -1
- package/src/assets/web-panel/assets/{index-D6kjxouA.js → index-Bpj16jRB.js} +1 -1
- package/src/assets/web-panel/assets/{index-CmmTTeI_.js → index-C5f0C4Cf.js} +1 -1
- package/src/assets/web-panel/assets/{index-DBrnQlVj.js → index-C7f9b3uD.js} +1 -1
- package/src/assets/web-panel/assets/{index-DB6Gfmbd.js → index-CEVQx1A1.js} +1 -1
- package/src/assets/web-panel/assets/{index-CQRTZCRK.js → index-CIjhZpoP.js} +1 -1
- package/src/assets/web-panel/assets/{index-BbqlP-0x.js → index-CQg64FhB.js} +1 -1
- package/src/assets/web-panel/assets/{index-B6HB1nYU.js → index-CTN0el_7.js} +1 -1
- package/src/assets/web-panel/assets/{index-DAB3Q_nF.js → index-CVU-sWbI.js} +1 -1
- package/src/assets/web-panel/assets/{index-CxOMN1eP.js → index-CbjJ6juC.js} +1 -1
- package/src/assets/web-panel/assets/{index-DlaUWCOV.js → index-CcFVwuKS.js} +1 -1
- package/src/assets/web-panel/assets/{index-u7jSAnE5.js → index-CdcubLNT.js} +1 -1
- package/src/assets/web-panel/assets/{index-eP13aFQA.js → index-CjD-wNN0.js} +1 -1
- package/src/assets/web-panel/assets/{index-DdSPhjdJ.js → index-Cnaz0Asm.js} +1 -1
- package/src/assets/web-panel/assets/{index-B18cp3n9.js → index-Cu82OYmb.js} +1 -1
- package/src/assets/web-panel/assets/{index-CYGcdwPp.js → index-CxDUhU5g.js} +1 -1
- package/src/assets/web-panel/assets/{index-BrhQVZvQ.js → index-D5Wuku7c.js} +1 -1
- package/src/assets/web-panel/assets/{index-B50bPMUj.js → index-D6OdgJy6.js} +1 -1
- package/src/assets/web-panel/assets/index-DC0SwdNf.js +1 -0
- package/src/assets/web-panel/assets/{index-CBQKNqZw.js → index-DCXZLI19.js} +1 -1
- package/src/assets/web-panel/assets/{index-_I4YISHL.js → index-DDBuc-Id.js} +3 -3
- package/src/assets/web-panel/assets/{index-CXgtLdeP.js → index-Db1XY8N-.js} +1 -1
- package/src/assets/web-panel/assets/{index-DFGgPqGL.js → index-DcCWULRq.js} +1 -1
- package/src/assets/web-panel/assets/{index-DLK7Yseu.js → index-DjnC31Yx.js} +1 -1
- package/src/assets/web-panel/assets/{index-BvX4TP6v.js → index-DpMNZhdq.js} +1 -1
- package/src/assets/web-panel/assets/{index-RJ5RP6OB.js → index-DxzxIwGc.js} +1 -1
- package/src/assets/web-panel/assets/{index-NJplJRk0.js → index-Jr_h0z1G.js} +1 -1
- package/src/assets/web-panel/assets/{index-BVYugqQ_.js → index-fpkVqY3Y.js} +1 -1
- package/src/assets/web-panel/assets/{index-BGEz_rsH.js → index-gZUcbNri.js} +1 -1
- package/src/assets/web-panel/assets/{index-D6yet1u8.js → index-ipake_aQ.js} +1 -1
- package/src/assets/web-panel/assets/{index-D-ZudNpP.js → index-r6tial0Z.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-BYpzEQJR.js → initDefaultProps-CGh7iY6x.js} +1 -1
- package/src/assets/web-panel/assets/{motion-BwoBDSTB.js → motion-Bm1X_QyP.js} +1 -1
- package/src/assets/web-panel/assets/{move-ECqdofgP.js → move-BuIY8ECm.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-BwJBczVR.js → mtc-parser-DRWHeLRG.js} +1 -1
- package/src/assets/web-panel/assets/{omit-C05k2QvJ.js → omit-lTzSMFbB.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-yEaymbc3.js → pickAttrs-Ci02C2So.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-BolUzOwE.js → placementArrow-B3tYnC80.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-6k5y4DzK.js → responsiveObserve-wN6_3_hR.js} +1 -1
- package/src/assets/web-panel/assets/{slide-DDkfGVnC.js → slide-Dy1pMd8P.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-CuQEwQEu.js → statusUtils-CmPmxXZF.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-CbIXhlWn.js → styleChecker-CEKdg6Qs.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-BRzWzevU.js → useFlexGapSupport-B2md7qB4.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-AItSJ9F5.js → useFs-fOz_rVnu.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-Btpt6GeK.js → usePersonalDataHub-B54wsK9k.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-DTq_TuIb.js → vnode-B4xa3bk5.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-2A1jrVbU.js → zoom-DIUKjYvp.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/assets/web-panel/assets/ChatBubbleRenderer-87TM5pDY.js +0 -1
- package/src/assets/web-panel/assets/PdhVaultBrowser-DrOiphKi.js +0 -7
- package/src/assets/web-panel/assets/Skills-XQQG90xL.js +0 -1
- package/src/assets/web-panel/assets/Tasks-vP1RiLQe.js +0 -1
- package/src/assets/web-panel/assets/devWarning-H7hgiUpq.js +0 -1
- package/src/assets/web-panel/assets/index-BCILPdOo.js +0 -1
- package/src/assets/web-panel/assets/index-fgHY0FSb.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{I as p,J as f,U as b,R as c,c as l,K as r,V as m,S as h,o as ve,a as ce,b as U,r as g,P as d,Q as y,F as O,Z as M,$ as tt}from"./vendor-BvqAck49.js";import{Y as at,t as N,_ as ot,u as pe,b as be,E as ge,d as k}from"./index-_I4YISHL.js";import{aC as lt,am as rt,J as nt,f as it,aX as st,aY as ct,as as dt,R as ut}from"./icons-DP3uiYxy.js";const Fe=Object.freeze(["gold","silver","bronze"]),Oe=Object.freeze(["active","expired","terminated"]),de=Object.freeze(["availability","response_time","throughput","error_rate"]),ue=Object.freeze(["minor","moderate","major","critical"]),mt=Object.freeze(["open","acknowledged","resolved","waived"]);function v(t,o=0){return typeof t=="number"&&Number.isFinite(t)?t:o}function K(t){if(!t)return{noDb:!1,error:""};const o=at(t),i=/Database not available/i.test(o);return{noDb:i,error:i?"Database not available":""}}function ft(t,o=0){if(!t||typeof t!="object")return null;const i=t.name||"";return i?{key:i,name:i,availability:v(t.availability,0),maxResponseTime:v(t.maxResponseTime,0),minThroughput:v(t.minThroughput,0),maxErrorRate:v(t.maxErrorRate,0),compensationRate:v(t.compensationRate,0),_idx:o}:null}function _e(t){const o=N(t);return Array.isArray(o)?o.map(ft).filter(Boolean):[]}function yt(t){const o={availability:0,maxResponseTime:0,minThroughput:0,maxErrorRate:0,compensationRate:0};return!t||typeof t!="object"||Array.isArray(t)?o:{availability:v(t.availability,0),maxResponseTime:v(t.maxResponseTime,0),minThroughput:v(t.minThroughput,0),maxErrorRate:v(t.maxErrorRate,0),compensationRate:v(t.compensationRate,0)}}function Re(t,o=0){if(!t||typeof t!="object")return null;const i=t.slaId||t.sla_id||"";return i?{key:i,slaId:i,orgId:String(t.orgId??t.org_id??""),tier:String(t.tier||"").toLowerCase(),terms:yt(t.terms),monthlyFee:v(t.monthlyFee??t.monthly_fee,0),startDate:t.startDate??t.start_date??null,endDate:t.endDate??t.end_date??null,status:String(t.status||"active").toLowerCase(),createdAt:t.createdAt??t.created_at??null,updatedAt:t.updatedAt??t.updated_at??null,_idx:o}:null}function ke(t){const o=N(t);return Array.isArray(o)?o.map(Re).filter(Boolean):[]}function Ce(t){const o=N(t);return!o||typeof o!="object"||Array.isArray(o)?null:Re(o,0)}function we(t){return!t||typeof t!="object"?null:{count:v(t.count,0),mean:v(t.mean,0),min:v(t.min,0),max:v(t.max,0),p95:v(t.p95,0)}}function he(t){const o=N(t);if(!o||typeof o!="object"||Array.isArray(o))return{slaId:"",totalSamples:0,byTerm:{}};const i={};if(o.byTerm&&typeof o.byTerm=="object")for(const[e,_]of Object.entries(o.byTerm)){const T=we(_);T&&(i[e]=T)}return{slaId:String(o.slaId||""),totalSamples:v(o.totalSamples,0),byTerm:i}}function ze(t,o=0){if(!t||typeof t!="object")return null;const i=t.violationId||t.violation_id||"";return i?{key:i,violationId:i,slaId:String(t.slaId??t.sla_id??""),term:String(t.term||"").toLowerCase(),severity:String(t.severity||"minor").toLowerCase(),expectedValue:v(t.expectedValue??t.expected_value,0),actualValue:v(t.actualValue??t.actual_value,0),deviationPercent:v(t.deviationPercent??t.deviation_percent,0),compensationAmount:typeof t.compensationAmount=="number"?t.compensationAmount:typeof t.compensation_amount=="number"?t.compensation_amount:null,occurredAt:t.occurredAt??t.occurred_at??null,resolvedAt:t.resolvedAt??t.resolved_at??null,v2Status:t.v2Status?String(t.v2Status).toLowerCase():"open",v2Note:t.v2Note??"",_idx:o}:null}function Se(t){const o=N(t);return Array.isArray(o)?o.map(ze).filter(Boolean):[]}function xe(t){const o=N(t);return!o||typeof o!="object"||Array.isArray(o)?{slaId:"",checkedAt:null,totalViolations:0,violations:[]}:{slaId:String(o.slaId||""),checkedAt:o.checkedAt??null,totalViolations:v(o.totalViolations,0),violations:Array.isArray(o.violations)?o.violations.map(ze).filter(Boolean):[]}}function Te(t){const o=N(t);return!o||typeof o!="object"||Array.isArray(o)?null:{violationId:String(o.violationId||""),slaId:String(o.slaId||""),severity:String(o.severity||""),base:v(o.base,0),multiplier:v(o.multiplier,0),amount:v(o.amount,0)}}const vt={slaId:"",tier:"",compliance:0,startDate:null,endDate:null,metricsByTerm:{},violations:{total:0,byTerm:{},bySeverity:{},totalCompensation:0}};function Ie(t){const o=JSON.parse(JSON.stringify(vt));for(const e of de)o.violations.byTerm[e]=0;for(const e of ue)o.violations.bySeverity[e]=0;const i=N(t);if(!i||typeof i!="object"||Array.isArray(i))return o;if(o.slaId=String(i.slaId||""),o.tier=String(i.tier||"").toLowerCase(),o.compliance=v(i.compliance,0),o.startDate=i.startDate??null,o.endDate=i.endDate??null,i.metricsByTerm&&typeof i.metricsByTerm=="object")for(const[e,_]of Object.entries(i.metricsByTerm)){const T=we(_);T&&(o.metricsByTerm[e]=T)}if(i.violations&&typeof i.violations=="object"){if(o.violations.total=v(i.violations.total,0),o.violations.totalCompensation=v(i.violations.totalCompensation,0),i.violations.byTerm&&typeof i.violations.byTerm=="object")for(const[e,_]of Object.entries(i.violations.byTerm))typeof _=="number"&&Number.isFinite(_)&&(o.violations.byTerm[e]=_);if(i.violations.bySeverity&&typeof i.violations.bySeverity=="object")for(const[e,_]of Object.entries(i.violations.bySeverity))typeof _=="number"&&Number.isFinite(_)&&(o.violations.bySeverity[e]=_)}return o}const pt={totalContracts:0,activeContracts:0,activeOrgs:0,maxActiveSlasPerOrg:0,byStatus:{},byTier:{},violations:{total:0,byTerm:{},bySeverity:{},byStatus:{},totalCompensation:0}};function Ae(t){const o=JSON.parse(JSON.stringify(pt));for(const e of Oe)o.byStatus[e]=0;for(const e of Fe)o.byTier[e]=0;for(const e of de)o.violations.byTerm[e]=0;for(const e of ue)o.violations.bySeverity[e]=0;for(const e of mt)o.violations.byStatus[e]=0;const i=N(t);if(!i||typeof i!="object"||Array.isArray(i))return o;if(o.totalContracts=v(i.totalContracts,0),o.activeContracts=v(i.activeContracts,0),o.activeOrgs=v(i.activeOrgs,0),o.maxActiveSlasPerOrg=v(i.maxActiveSlasPerOrg,0),i.byStatus&&typeof i.byStatus=="object")for(const[e,_]of Object.entries(i.byStatus))typeof _=="number"&&Number.isFinite(_)&&(o.byStatus[e]=_);if(i.byTier&&typeof i.byTier=="object")for(const[e,_]of Object.entries(i.byTier))typeof _=="number"&&Number.isFinite(_)&&(o.byTier[e]=_);if(i.violations&&typeof i.violations=="object"){o.violations.total=v(i.violations.total,0),o.violations.totalCompensation=v(i.violations.totalCompensation,0);for(const e of["byTerm","bySeverity","byStatus"])if(i.violations[e]&&typeof i.violations[e]=="object")for(const[_,T]of Object.entries(i.violations[e]))typeof T=="number"&&Number.isFinite(T)&&(o.violations[e][_]=T)}return o}function bt(t){if(t==null||t==="")return"—";const o=typeof t=="number"?new Date(t):new Date(String(t));return isNaN(o.getTime())?String(t):o.toLocaleString("zh-CN",{hour12:!1})}const gt={__name:"Sla",setup(t,{expose:o}){o();const i=pe(),{t:e}=be(),_=ge.PRESENTED_IMAGE_SIMPLE,T=g(!1),R=g(!1),X=g(!1),ee=g([]),z=g([]),I=g([]),A=g({totalContracts:0,activeContracts:0,activeOrgs:0,maxActiveSlasPerOrg:0,byStatus:{},byTier:{},violations:{total:0,byTerm:{},bySeverity:{},byStatus:{},totalCompensation:0}}),B=g({noDb:!1,error:""}),S=g("contracts"),j=g(""),P=g(""),Z=g(""),J=g(!1),Y=g(!1),D=g(!1),te=g(!1),ae=g(!1),E=g(!1),w=ce({orgId:"",tier:"silver",monthlyFee:1e3,durationDays:30}),F=ce({slaId:null,term:"availability",value:null}),L=g(null),q=g({slaId:"",totalSamples:0,byTerm:{}}),V=g(null),x=g(null),G=g(null),H=g(null),oe=U(()=>[{title:e("sla.contractCols.slaId"),key:"slaId",width:"120px"},{title:e("sla.contractCols.orgId"),key:"orgId",width:"160px"},{title:e("sla.contractCols.tier"),key:"tier",width:"90px"},{title:e("sla.contractCols.status"),key:"status",width:"100px"},{title:e("sla.contractCols.monthlyFee"),key:"monthlyFee",width:"110px"},{title:e("sla.contractCols.endDate"),key:"endDate",width:"160px"},{title:e("sla.contractCols.action"),key:"action",width:"260px"}]),le=U(()=>[{title:e("sla.violationCols.id"),key:"violationId",width:"120px"},{title:e("sla.violationCols.term"),key:"term",width:"140px"},{title:e("sla.violationCols.severity"),key:"severity",width:"100px"},{title:e("sla.violationCols.deviation"),key:"deviation",width:"180px"},{title:e("sla.violationCols.expected"),key:"expected",width:"110px"},{title:e("sla.violationCols.actual"),key:"actual",width:"110px"},{title:e("sla.violationCols.compensation"),key:"compensation",width:"110px"},{title:e("sla.violationCols.occurredAt"),key:"occurredAt",width:"160px"},{title:e("sla.violationCols.action"),key:"action",width:"120px"}]),re=U(()=>[{title:e("sla.aggCols.term"),key:"term",width:"140px"},{title:e("sla.aggCols.expected"),key:"expected",width:"110px"},{title:e("sla.aggCols.mean"),key:"mean",width:"110px"},{title:e("sla.aggCols.p95"),key:"p95",width:"110px"},{title:e("sla.aggCols.min"),key:"min",width:"110px"},{title:e("sla.aggCols.max"),key:"max",width:"110px"},{title:e("sla.aggCols.count"),key:"count",width:"90px"}]),a=U(()=>{let n=z.value;return j.value&&(n=n.filter(s=>s.tier===j.value)),P.value&&(n=n.filter(s=>s.status===P.value)),n}),u=U(()=>{let n=I.value;return Z.value&&(n=n.filter(s=>s.severity===Z.value)),n}),W=U(()=>L.value?Object.entries(q.value.byTerm).map(([n,s])=>({key:n,term:n,expected:ne(L.value.terms,n),...s})):[]),Le=U(()=>!x.value||!L.value?[]:Object.entries(x.value.metricsByTerm).map(([n,s])=>({key:n,term:n,expected:ne(L.value.terms,n),...s})));function ne(n,s){if(!n)return 0;switch(s){case"availability":return n.availability;case"response_time":return n.maxResponseTime;case"throughput":return n.minThroughput;case"error_rate":return n.maxErrorRate;default:return 0}}function Ee(n){return{gold:"gold",silver:"default",bronze:"orange"}[n]||"default"}function Ve(n){return{gold:"#faad14",silver:"#8c8c8c",bronze:"#d4a373"}[n]||"#888"}function Me(n){const s=`sla.statusLabels.${n}`,C=e(s);return C===s?n:C}function je(n){return{active:"green",expired:"default",terminated:"red"}[n]||"default"}function De(n){return{active:"#52c41a",expired:"#888",terminated:"#ff4d4f"}[n]||"#888"}function Ne(n){const s=`sla.termLabels.${n}`,C=e(s);return C===s?n:C}function Be(n){if(!n)return"";const s=`sla.termHints.${n}`,C=e(s);return C===s?"":C}function Ue(n,s){return typeof s!="number"||!Number.isFinite(s)?"—":n==="availability"||n==="error_rate"?(s*100).toFixed(3)+"%":n==="response_time"?s.toFixed(1)+"ms":n==="throughput"?s.toFixed(0)+" rps":s.toFixed(4)}function Pe(n){const s=`sla.severityLabels.${n}`,C=e(s);return C===s?n:C}function Je(n){return{minor:"default",moderate:"gold",major:"orange",critical:"red"}[n]||"default"}function qe(n){return{minor:"#888",moderate:"#faad14",major:"#fa8c16",critical:"#ff4d4f"}[n]||"#888"}function He(n){return n>=.99?"#52c41a":n>=.9?"#1677ff":n>=.7?"#faad14":"#ff4d4f"}function We(n,s){return s?Math.round(n/s*100):0}async function Q(){T.value=!0,B.value={noDb:!1,error:""};try{const[n,s,C,ie]=await Promise.all([i.execute("sla tiers --json",8e3).catch(()=>({output:""})),i.execute("sla list --limit 200 --json",1e4).catch(()=>({output:""})),i.execute("sla violations --limit 200 --json",1e4).catch(()=>({output:""})),i.execute("sla stats-v2",8e3).catch(()=>({output:""}))]),$=[s,C,ie].map(se=>K(se.output)).find(se=>se.noDb);$&&(B.value=$),ee.value=_e(n.output),z.value=ke(s.output),I.value=Se(C.output),A.value=Ae(ie.output)}catch(n){k.error(e("sla.msg.loadFailed")+": "+(n?.message||n))}finally{T.value=!1}}async function Ke(){if(!w.orgId.trim()){k.warning(e("sla.msg.orgEmpty"));return}R.value=!0;try{const n=w.durationDays*24*60*60*1e3,s=[`sla create "${w.orgId.trim().replace(/"/g,'\\"')}"`,`-t ${w.tier}`,`-d ${n}`,`-f ${w.monthlyFee||0}`,"--json"],{output:C}=await i.execute(s.join(" "),1e4);if(K(C).noDb){k.error(e("sla.msg.needCcInit"));return}const $=Ce(C);if(!$){k.error(e("sla.msg.createFailed")+": "+C.slice(0,120));return}k.success(e("sla.msg.createSuccess",{id:$.slaId.slice(0,8)})),J.value=!1,me(),await Q()}catch(n){k.error(e("sla.msg.createFailed")+": "+(n?.message||n))}finally{R.value=!1}}async function Ye(){if(!F.slaId){k.warning(e("sla.msg.slaEmpty"));return}if(F.value===null||F.value===void 0){k.warning(e("sla.msg.valueEmpty"));return}X.value=!0;try{const{output:n}=await i.execute(`sla record ${F.slaId} ${F.term} ${F.value} --json`,8e3);if(K(n).noDb){k.error(e("sla.msg.needCcInit"));return}if(!/"metricId"|"term"/.test(n)){k.error(e("sla.msg.recordFailed")+": "+n.slice(0,120));return}k.success(e("sla.msg.recordSuccess")),Y.value=!1,fe()}catch(n){k.error(e("sla.msg.recordFailed")+": "+(n?.message||n))}finally{X.value=!1}}async function Ge(n){try{const{output:s}=await i.execute(`sla terminate ${n.slaId}`,8e3);if(K(s).noDb){k.error(e("sla.msg.needCcInit"));return}if(/Failed/i.test(s)&&!/terminated/i.test(s)){k.error(e("sla.msg.terminateFailed")+": "+s.slice(0,120));return}k.success(e("sla.msg.terminateSuccess")),await Q()}catch(s){k.error(e("sla.msg.terminateFailed")+": "+(s?.message||s))}}async function Qe(n){L.value=n,q.value={slaId:"",totalSamples:0,byTerm:{}},D.value=!0;try{const{output:s}=await i.execute(`sla metrics ${n.slaId} --json`,8e3);q.value=he(s)}catch(s){k.error(e("sla.msg.loadMetricsFailed")+": "+(s?.message||s))}}async function Xe(n){L.value=n,V.value=null,te.value=!0;try{const{output:s}=await i.execute(`sla check ${n.slaId} --json`,1e4);if(K(s).noDb){k.error(e("sla.msg.needCcInit"));return}V.value=xe(s),V.value.totalViolations>0&&await Q()}catch(s){k.error(e("sla.msg.checkFailed")+": "+(s?.message||s))}}async function Ze(n){L.value=n,x.value=null,ae.value=!0;try{const{output:s}=await i.execute(`sla report ${n.slaId} --json`,1e4);x.value=Ie(s)}catch(s){k.error(e("sla.msg.loadReportFailed")+": "+(s?.message||s))}}async function $e(n){G.value=n,H.value=null;try{const{output:s}=await i.execute(`sla compensate ${n.violationId} --json`,8e3);if(K(s).noDb){k.error(e("sla.msg.needCcInit"));return}if(H.value=Te(s),!H.value){k.error(e("sla.msg.compFailed")+": "+s.slice(0,120));return}E.value=!0,await Q()}catch(s){k.error(e("sla.msg.compFailed")+": "+(s?.message||s))}}function et(n){G.value=n,H.value={violationId:n.violationId,slaId:n.slaId,severity:n.severity,base:0,multiplier:0,amount:n.compensationAmount||0},E.value=!0}function me(){w.orgId="",w.tier="silver",w.monthlyFee=1e3,w.durationDays=30}function fe(){F.slaId=null,F.term="availability",F.value=null}ve(Q);const ye={ws:i,t:e,EMPTY_IMG:_,loading:T,creating:R,recording:X,tiers:ee,contracts:z,violations:I,stats:A,errorState:B,activeTab:S,tierFilter:j,statusFilter:P,severityFilter:Z,showCreateModal:J,showRecordModal:Y,showMetricsModal:D,showCheckModal:te,showReportModal:ae,showCompensationModal:E,createForm:w,recordForm:F,currentContract:L,currentMetrics:q,currentCheck:V,currentReport:x,currentViolation:G,currentCompensation:H,contractColumns:oe,violationColumns:le,aggColumns:re,filteredContracts:a,filteredViolations:u,aggDataSource:W,reportAggDataSource:Le,expectedFor:ne,tierColor:Ee,tierBarColor:Ve,statusLabel:Me,statusColor:je,statusBarColor:De,termLabel:Ne,termHint:Be,formatTermValue:Ue,severityLabel:Pe,severityColor:Je,severityBarColor:qe,complianceColor:He,pctOfTotal:We,loadAll:Q,submitCreate:Ke,submitRecord:Ye,terminateContract:Ge,viewMetrics:Qe,checkContract:Xe,viewReport:Ze,computeCompensation:$e,viewCompensation:et,resetCreateForm:me,resetRecordForm:fe,ref:g,computed:U,onMounted:ve,reactive:ce,get ReloadOutlined(){return ut},get PlusOutlined(){return dt},get LineChartOutlined(){return ct},get FileProtectOutlined(){return st},get CheckCircleOutlined(){return it},get TeamOutlined(){return nt},get WarningOutlined(){return rt},get DollarOutlined(){return lt},get message(){return k},get Empty(){return ge},get useI18n(){return be},get useWsStore(){return pe},get parseTiers(){return _e},get parseContracts(){return ke},get parseMetrics(){return he},get parseViolations(){return Se},get parseCheckResult(){return xe},get parseCompensation(){return Te},get parseReport(){return Ie},get parseStatsV2(){return Ae},get parseContract(){return Ce},get detectSlaError(){return K},get formatSlaTime(){return bt},get SLA_TIER_NAMES(){return Fe},get SLA_STATUSES(){return Oe},get SLA_TERMS_LIST(){return de},get VIOLATION_SEVERITIES(){return ue}};return Object.defineProperty(ye,"__isScriptSetup",{enumerable:!1,value:!0}),ye}},_t={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},kt={class:"page-title"},Ct={class:"page-sub"},ht={class:"tier-head"},St={class:"tier-comp"},xt={class:"tier-terms"},Tt={class:"tier-term"},It={class:"tier-term"},At={class:"tier-term"},Ft={class:"tier-term"},Ot={class:"filter-bar"},Rt={key:0,style:{color:"var(--text-primary)","font-family":"monospace","font-size":"12px"}},wt={key:1,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},zt={key:4,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},Lt={key:5,style:{color:"var(--text-secondary)","font-size":"11px"}},Et={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},Vt={class:"filter-bar"},Mt={key:0,style:{color:"var(--text-primary)","font-family":"monospace","font-size":"12px"}},jt={key:4,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},Dt={key:5,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},Nt={key:0,style:{color:"#faad14","font-weight":"500"}},Bt={key:1,style:{color:"var(--text-muted)"}},Ut={key:7,style:{color:"var(--text-secondary)","font-size":"11px"}},Pt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},Jt={style:{"margin-left":"8px",color:"var(--text-muted)","font-size":"12px"}},qt={style:{color:"var(--text-muted)","font-size":"11px","margin-top":"4px"}},Ht={key:0,style:{"padding-top":"8px"}},Wt={style:{color:"var(--text-primary)","font-size":"13px",margin:"16px 0 10px"}},Kt={key:1,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},Yt={key:2,style:{"font-family":"monospace","font-size":"12px"}},Gt={key:0,style:{"padding-top":"8px"}},Qt={style:{"margin-left":"8px","font-family":"monospace","font-size":"12px"}},Xt={style:{"margin-left":"8px",color:"var(--text-secondary)","font-size":"12px"}},Zt={style:{"margin-left":"auto",color:"#ff4d4f","font-weight":"500"}},$t={key:0,style:{"padding-top":"8px"}},ea={style:{color:"var(--text-primary)","font-size":"13px",margin:"16px 0 8px"}},ta={key:0,style:{color:"var(--text-primary)","font-size":"13px",margin:"16px 0 8px"}},aa={key:1,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},oa={key:2,style:{"font-family":"monospace","font-size":"12px"}},la={key:0,style:{"padding-top":"8px"}},ra={style:{"font-family":"monospace","font-size":"12px"}},na={style:{"font-family":"monospace"}},ia={style:{"font-family":"monospace"}},sa={style:{color:"#faad14","font-weight":"600","font-family":"monospace","font-size":"14px"}};function ca(t,o,i,e,_,T){const R=p("a-button"),X=p("a-space"),ee=p("a-alert"),z=p("a-statistic"),I=p("a-card"),A=p("a-col"),B=p("a-row"),S=p("a-tag"),j=p("a-radio-button"),P=p("a-radio-group"),Z=p("a-popconfirm"),J=p("a-table"),Y=p("a-tab-pane"),D=p("a-progress"),te=p("a-tabs"),ae=p("a-input"),E=p("a-form-item"),w=p("a-select-option"),F=p("a-select"),L=p("a-input-number"),q=p("a-form"),V=p("a-modal"),x=p("a-descriptions-item"),G=p("a-descriptions"),H=p("a-empty"),oe=p("a-result"),le=p("a-list-item"),re=p("a-list");return d(),f("div",null,[b("div",_t,[b("div",null,[b("h2",kt,c(t.$t("sla.title")),1),b("p",Ct,c(t.$t("sla.subtitle")),1)]),l(X,null,{default:r(()=>[l(R,{loading:e.loading,onClick:e.loadAll},{icon:r(()=>[l(e.ReloadOutlined)]),default:r(()=>[y(" "+c(t.$t("sla.refresh")),1)]),_:1},8,["loading"]),l(R,{onClick:o[0]||(o[0]=a=>e.showRecordModal=!0)},{icon:r(()=>[l(e.LineChartOutlined)]),default:r(()=>[y(" "+c(t.$t("sla.recordMetric")),1)]),_:1}),l(R,{type:"primary",onClick:o[1]||(o[1]=a=>e.showCreateModal=!0)},{icon:r(()=>[l(e.PlusOutlined)]),default:r(()=>[y(" "+c(t.$t("sla.create")),1)]),_:1})]),_:1})]),m(" noDb banner "),e.errorState.noDb?(d(),h(ee,{key:0,type:"info","show-icon":"",message:t.$t("sla.noDb.message"),description:t.$t("sla.noDb.description"),style:{"margin-bottom":"16px"}},null,8,["message","description"])):m("v-if",!0),m(" Stat cards "),l(B,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:r(()=>[l(A,{xs:12,sm:8,lg:5},{default:r(()=>[l(I,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[l(z,{title:t.$t("sla.stats.totalContracts"),value:e.stats.totalContracts,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:r(()=>[l(e.FileProtectOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),l(A,{xs:12,sm:8,lg:5},{default:r(()=>[l(I,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[l(z,{title:t.$t("sla.stats.active"),value:e.stats.activeContracts,"value-style":{color:e.stats.activeContracts>0?"#52c41a":"#888",fontSize:"20px"}},{prefix:r(()=>[l(e.CheckCircleOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),l(A,{xs:12,sm:8,lg:5},{default:r(()=>[l(I,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[l(z,{title:t.$t("sla.stats.orgs"),value:e.stats.activeOrgs,"value-style":{color:"#722ed1",fontSize:"20px"},suffix:e.stats.maxActiveSlasPerOrg?`· cap=${e.stats.maxActiveSlasPerOrg}`:""},{prefix:r(()=>[l(e.TeamOutlined)]),_:1},8,["title","value","suffix"])]),_:1})]),_:1}),l(A,{xs:12,sm:8,lg:5},{default:r(()=>[l(I,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[l(z,{title:t.$t("sla.stats.violations"),value:e.stats.violations.total,"value-style":{color:e.stats.violations.total>0?"#ff4d4f":"#888",fontSize:"20px"}},{prefix:r(()=>[l(e.WarningOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),l(A,{xs:24,sm:8,lg:4},{default:r(()=>[l(I,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[l(z,{title:t.$t("sla.stats.compensation"),value:e.stats.violations.totalCompensation,precision:2,"value-style":{color:"#faad14",fontSize:"20px"}},{prefix:r(()=>[l(e.DollarOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),m(" Tier catalogue "),l(I,{title:t.$t("sla.tierCard"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:r(()=>[l(B,{gutter:[12,12]},{default:r(()=>[(d(!0),f(O,null,M(e.tiers,a=>(d(),h(A,{key:a.name,xs:24,sm:8},{default:r(()=>[b("div",{class:"tier-pill",style:tt({borderLeftColor:e.tierBarColor(a.name)})},[b("div",ht,[l(S,{color:e.tierColor(a.name),style:{"font-family":"monospace","font-size":"13px"}},{default:r(()=>[y(c(a.name.toUpperCase()),1)]),_:2},1032,["color"]),b("span",St,c(t.$t("sla.tierCompRate",{pct:(a.compensationRate*100).toFixed(1)})),1)]),b("div",xt,[b("span",Tt,c(t.$t("sla.tierTerms.availability",{pct:(a.availability*100).toFixed(2)})),1),b("span",It,c(t.$t("sla.tierTerms.p95",{ms:a.maxResponseTime})),1),b("span",At,c(t.$t("sla.tierTerms.rps",{n:a.minThroughput})),1),b("span",Ft,c(t.$t("sla.tierTerms.errorRate",{pct:(a.maxErrorRate*100).toFixed(2)})),1)])],4)]),_:2},1024))),128))]),_:1})]),_:1},8,["title"]),m(" Tabs "),l(te,{activeKey:e.activeTab,"onUpdate:activeKey":o[5]||(o[5]=a=>e.activeTab=a),class:"sla-tabs"},{default:r(()=>[m(" ── Contracts tab ────────────────────────────────────── "),l(Y,{key:"contracts",tab:t.$t("sla.tabs.contracts")},{default:r(()=>[b("div",Ot,[l(P,{value:e.tierFilter,"onUpdate:value":o[2]||(o[2]=a=>e.tierFilter=a),size:"small","button-style":"solid"},{default:r(()=>[l(j,{value:""},{default:r(()=>[y(c(t.$t("sla.filter.allTiers")),1)]),_:1}),(d(!0),f(O,null,M(e.SLA_TIER_NAMES,a=>(d(),h(j,{key:a,value:a},{default:r(()=>[y(c(a.toUpperCase()),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),l(P,{value:e.statusFilter,"onUpdate:value":o[3]||(o[3]=a=>e.statusFilter=a),size:"small"},{default:r(()=>[l(j,{value:""},{default:r(()=>[y(c(t.$t("sla.filter.allStatuses")),1)]),_:1}),(d(!0),f(O,null,M(e.SLA_STATUSES,a=>(d(),h(j,{key:a,value:a},{default:r(()=>[y(c(e.statusLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),l(J,{columns:e.contractColumns,"data-source":e.filteredContracts,pagination:{pageSize:20,showTotal:a=>t.$t("sla.table.contractsSuffix",{n:a})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:r(({column:a,record:u})=>[a.key==="slaId"?(d(),f("span",Rt,c(u.slaId.slice(0,12)),1)):m("v-if",!0),a.key==="orgId"?(d(),f("span",wt,c(u.orgId),1)):m("v-if",!0),a.key==="tier"?(d(),h(S,{key:2,color:e.tierColor(u.tier),style:{"font-family":"monospace"}},{default:r(()=>[y(c(u.tier.toUpperCase()),1)]),_:2},1032,["color"])):m("v-if",!0),a.key==="status"?(d(),h(S,{key:3,color:e.statusColor(u.status)},{default:r(()=>[y(c(e.statusLabel(u.status)),1)]),_:2},1032,["color"])):m("v-if",!0),a.key==="monthlyFee"?(d(),f("span",zt,c(u.monthlyFee.toFixed(2)),1)):m("v-if",!0),a.key==="endDate"?(d(),f("span",Lt,c(e.formatSlaTime(u.endDate)),1)):m("v-if",!0),a.key==="action"?(d(),f(O,{key:6},[l(R,{size:"small",type:"link",onClick:W=>e.viewMetrics(u)},{default:r(()=>[y(c(t.$t("sla.table.actionMetrics")),1)]),_:1},8,["onClick"]),l(R,{size:"small",type:"link",onClick:W=>e.checkContract(u)},{default:r(()=>[y(c(t.$t("sla.table.actionCheck")),1)]),_:1},8,["onClick"]),l(R,{size:"small",type:"link",onClick:W=>e.viewReport(u)},{default:r(()=>[y(c(t.$t("sla.table.actionReport")),1)]),_:1},8,["onClick"]),u.status==="active"?(d(),h(Z,{key:0,title:t.$t("sla.terminateConfirm.title"),"ok-text":t.$t("sla.terminateConfirm.ok"),"cancel-text":t.$t("sla.terminateConfirm.cancel"),onConfirm:W=>e.terminateContract(u)},{default:r(()=>[l(R,{size:"small",type:"link",danger:""},{default:r(()=>[y(c(t.$t("sla.terminateConfirm.ok")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])):m("v-if",!0)],64)):m("v-if",!0)]),emptyText:r(()=>[b("div",Et,[l(e.FileProtectOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),y(" "+c(e.tierFilter||e.statusFilter?t.$t("sla.table.emptyContractsFiltered"):t.$t("sla.table.emptyContracts")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),m(" ── Violations tab ───────────────────────────────────── "),l(Y,{key:"violations",tab:t.$t("sla.tabs.violations")},{default:r(()=>[b("div",Vt,[l(P,{value:e.severityFilter,"onUpdate:value":o[4]||(o[4]=a=>e.severityFilter=a),size:"small","button-style":"solid"},{default:r(()=>[l(j,{value:""},{default:r(()=>[y(c(t.$t("sla.filter.allSeverities")),1)]),_:1}),(d(!0),f(O,null,M(e.VIOLATION_SEVERITIES,a=>(d(),h(j,{key:a,value:a},{default:r(()=>[y(c(e.severityLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),l(J,{columns:e.violationColumns,"data-source":e.filteredViolations,pagination:{pageSize:20,showTotal:a=>t.$t("sla.table.totalSuffix",{n:a})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:r(({column:a,record:u})=>[a.key==="violationId"?(d(),f("span",Mt,c(u.violationId.slice(0,12)),1)):m("v-if",!0),a.key==="term"?(d(),h(S,{key:1,color:"default",style:{"font-family":"monospace"}},{default:r(()=>[y(c(e.termLabel(u.term)),1)]),_:2},1024)):m("v-if",!0),a.key==="severity"?(d(),h(S,{key:2,color:e.severityColor(u.severity)},{default:r(()=>[y(c(e.severityLabel(u.severity)),1)]),_:2},1032,["color"])):m("v-if",!0),a.key==="deviation"?(d(),h(D,{key:3,percent:Math.min(100,Math.round(u.deviationPercent)),"stroke-color":e.severityBarColor(u.severity),size:"small",format:()=>`${u.deviationPercent.toFixed(1)}%`},null,8,["percent","stroke-color","format"])):m("v-if",!0),a.key==="expected"?(d(),f("span",jt,c(e.formatTermValue(u.term,u.expectedValue)),1)):m("v-if",!0),a.key==="actual"?(d(),f("span",Dt,c(e.formatTermValue(u.term,u.actualValue)),1)):m("v-if",!0),a.key==="compensation"?(d(),f(O,{key:6},[u.compensationAmount!==null?(d(),f("span",Nt,c(u.compensationAmount.toFixed(2)),1)):(d(),f("span",Bt,c(t.$t("sla.table.uncomputed")),1))],64)):m("v-if",!0),a.key==="occurredAt"?(d(),f("span",Ut,c(e.formatSlaTime(u.occurredAt)),1)):m("v-if",!0),a.key==="action"?(d(),f(O,{key:8},[u.compensationAmount===null?(d(),h(R,{key:0,size:"small",type:"link",onClick:W=>e.computeCompensation(u)},{default:r(()=>[y(c(t.$t("sla.table.actionComputeComp")),1)]),_:1},8,["onClick"])):(d(),h(R,{key:1,size:"small",type:"link",onClick:W=>e.viewCompensation(u)},{default:r(()=>[y(c(t.$t("sla.table.actionView")),1)]),_:1},8,["onClick"]))],64)):m("v-if",!0)]),emptyText:r(()=>[b("div",Pt,[l(e.CheckCircleOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block",color:"#52c41a"}}),y(" "+c(e.severityFilter?t.$t("sla.table.emptyViolationsFiltered"):t.$t("sla.table.emptyViolations")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),m(" ── Breakdown tab ────────────────────────────────────── "),l(Y,{key:"breakdown",tab:t.$t("sla.tabs.breakdown")},{default:r(()=>[l(B,{gutter:[16,16]},{default:r(()=>[l(A,{xs:24,lg:12},{default:r(()=>[l(I,{title:t.$t("sla.breakdown.contractsByStatus"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"12px"}},{default:r(()=>[(d(!0),f(O,null,M(e.SLA_STATUSES,a=>(d(),f("div",{key:a,class:"bd-row"},[l(S,{color:e.statusColor(a),style:{"min-width":"80px","text-align":"center"}},{default:r(()=>[y(c(e.statusLabel(a)),1)]),_:2},1032,["color"]),l(D,{percent:e.pctOfTotal(e.stats.byStatus[a]||0,e.stats.totalContracts),"stroke-color":e.statusBarColor(a),format:()=>`${e.stats.byStatus[a]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))]),_:1},8,["title"]),l(I,{title:t.$t("sla.breakdown.contractsByTier"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[(d(!0),f(O,null,M(e.SLA_TIER_NAMES,a=>(d(),f("div",{key:a,class:"bd-row"},[l(S,{color:e.tierColor(a),style:{"min-width":"80px","text-align":"center","font-family":"monospace"}},{default:r(()=>[y(c(a.toUpperCase()),1)]),_:2},1032,["color"]),l(D,{percent:e.pctOfTotal(e.stats.byTier[a]||0,e.stats.totalContracts),"stroke-color":e.tierBarColor(a),format:()=>`${e.stats.byTier[a]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))]),_:1},8,["title"])]),_:1}),l(A,{xs:24,lg:12},{default:r(()=>[l(I,{title:t.$t("sla.breakdown.violationsBySeverity"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"12px"}},{default:r(()=>[(d(!0),f(O,null,M(e.VIOLATION_SEVERITIES,a=>(d(),f("div",{key:a,class:"bd-row"},[l(S,{color:e.severityColor(a),style:{"min-width":"80px","text-align":"center"}},{default:r(()=>[y(c(e.severityLabel(a)),1)]),_:2},1032,["color"]),l(D,{percent:e.pctOfTotal(e.stats.violations.bySeverity[a]||0,e.stats.violations.total),"stroke-color":e.severityBarColor(a),format:()=>`${e.stats.violations.bySeverity[a]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))]),_:1},8,["title"]),l(I,{title:t.$t("sla.breakdown.violationsByTerm"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[(d(!0),f(O,null,M(e.SLA_TERMS_LIST,a=>(d(),f("div",{key:a,class:"bd-row"},[l(S,{color:"default",style:{"min-width":"110px","text-align":"center","font-family":"monospace","font-size":"11px"}},{default:r(()=>[y(c(e.termLabel(a)),1)]),_:2},1024),l(D,{percent:e.pctOfTotal(e.stats.violations.byTerm[a]||0,e.stats.violations.total),"stroke-color":"#fa8c16",format:()=>`${e.stats.violations.byTerm[a]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","format"])]))),128))]),_:1},8,["title"])]),_:1})]),_:1})]),_:1},8,["tab"])]),_:1},8,["activeKey"]),m(" ── Create contract modal ──────────────────────────────── "),l(V,{open:e.showCreateModal,"onUpdate:open":o[10]||(o[10]=a=>e.showCreateModal=a),title:t.$t("sla.create_modal.title"),"confirm-loading":e.creating,width:540,"ok-text":t.$t("sla.create_modal.ok"),"cancel-text":t.$t("sla.create_modal.cancel"),onOk:e.submitCreate,onCancel:e.resetCreateForm},{default:r(()=>[l(q,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:r(()=>[l(E,{label:t.$t("sla.create_modal.orgLabel"),required:""},{default:r(()=>[l(ae,{value:e.createForm.orgId,"onUpdate:value":o[6]||(o[6]=a=>e.createForm.orgId=a),placeholder:t.$t("sla.create_modal.orgPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),l(E,{label:t.$t("sla.create_modal.tierLabel"),required:""},{default:r(()=>[l(F,{value:e.createForm.tier,"onUpdate:value":o[7]||(o[7]=a=>e.createForm.tier=a)},{default:r(()=>[(d(!0),f(O,null,M(e.SLA_TIER_NAMES,a=>(d(),h(w,{key:a,value:a},{default:r(()=>[y(c(a.toUpperCase()),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),l(E,{label:t.$t("sla.create_modal.feeLabel")},{default:r(()=>[l(L,{value:e.createForm.monthlyFee,"onUpdate:value":o[8]||(o[8]=a=>e.createForm.monthlyFee=a),min:0,step:100,style:{width:"160px"}},null,8,["value"])]),_:1},8,["label"]),l(E,{label:t.$t("sla.create_modal.durationLabel")},{default:r(()=>[l(L,{value:e.createForm.durationDays,"onUpdate:value":o[9]||(o[9]=a=>e.createForm.durationDays=a),min:1,step:30,style:{width:"160px"}},null,8,["value"]),b("span",Jt,c(t.$t("sla.create_modal.durationHint")),1)]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),m(" ── Record metric modal ────────────────────────────────── "),l(V,{open:e.showRecordModal,"onUpdate:open":o[14]||(o[14]=a=>e.showRecordModal=a),title:t.$t("sla.record_modal.title"),"confirm-loading":e.recording,width:540,"ok-text":t.$t("sla.record_modal.ok"),"cancel-text":t.$t("sla.record_modal.cancel"),onOk:e.submitRecord,onCancel:e.resetRecordForm},{default:r(()=>[l(q,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:r(()=>[l(E,{label:t.$t("sla.record_modal.slaLabel"),required:""},{default:r(()=>[l(F,{value:e.recordForm.slaId,"onUpdate:value":o[11]||(o[11]=a=>e.recordForm.slaId=a),placeholder:t.$t("sla.record_modal.slaPlaceholder"),options:e.contracts.map(a=>({value:a.slaId,label:`${a.slaId.slice(0,8)} · ${a.orgId} [${a.tier}]`})),"show-search":""},null,8,["value","placeholder","options"])]),_:1},8,["label"]),l(E,{label:t.$t("sla.record_modal.termLabel"),required:""},{default:r(()=>[l(F,{value:e.recordForm.term,"onUpdate:value":o[12]||(o[12]=a=>e.recordForm.term=a)},{default:r(()=>[(d(!0),f(O,null,M(e.SLA_TERMS_LIST,a=>(d(),h(w,{key:a,value:a},{default:r(()=>[y(c(e.termLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),l(E,{label:t.$t("sla.record_modal.valueLabel"),required:""},{default:r(()=>[l(L,{value:e.recordForm.value,"onUpdate:value":o[13]||(o[13]=a=>e.recordForm.value=a),step:.01,style:{width:"200px"}},null,8,["value"]),b("div",qt,c(e.termHint(e.recordForm.term)),1)]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),m(" ── Metrics modal ──────────────────────────────────────── "),l(V,{open:e.showMetricsModal,"onUpdate:open":o[15]||(o[15]=a=>e.showMetricsModal=a),title:t.$t("sla.metrics_modal.title",{id:e.currentContract?.slaId?.slice(0,12)||""}),width:640,footer:null},{default:r(()=>[e.currentContract?(d(),f("div",Ht,[l(G,{column:2,size:"small",bordered:""},{default:r(()=>[l(x,{label:t.$t("sla.metrics_modal.org")},{default:r(()=>[y(c(e.currentContract.orgId),1)]),_:1},8,["label"]),l(x,{label:t.$t("sla.metrics_modal.tier")},{default:r(()=>[l(S,{color:e.tierColor(e.currentContract.tier)},{default:r(()=>[y(c(e.currentContract.tier.toUpperCase()),1)]),_:1},8,["color"])]),_:1},8,["label"]),l(x,{label:t.$t("sla.metrics_modal.samples")},{default:r(()=>[y(c(e.currentMetrics.totalSamples),1)]),_:1},8,["label"]),l(x,{label:t.$t("sla.metrics_modal.monthlyFee")},{default:r(()=>[y(c(e.currentContract.monthlyFee.toFixed(2)),1)]),_:1},8,["label"])]),_:1}),b("h4",Wt,c(t.$t("sla.metrics_modal.byTerm")),1),Object.keys(e.currentMetrics.byTerm).length?(d(),h(J,{key:1,columns:e.aggColumns,"data-source":e.aggDataSource,size:"small",pagination:!1,style:{background:"var(--bg-card)"}},{bodyCell:r(({column:a,record:u})=>[a.key==="term"?(d(),h(S,{key:0,color:"default",style:{"font-family":"monospace"}},{default:r(()=>[y(c(e.termLabel(u.term)),1)]),_:2},1024)):m("v-if",!0),a.key==="expected"?(d(),f("span",Kt,c(e.formatTermValue(u.term,u.expected)),1)):["mean","p95","min","max"].includes(a.key)?(d(),f("span",Yt,c(e.formatTermValue(u.term,u[a.key])),1)):m("v-if",!0)]),_:1},8,["columns","data-source"])):(d(),h(H,{key:0,description:t.$t("sla.metrics_modal.empty"),image:e.EMPTY_IMG},null,8,["description","image"]))])):m("v-if",!0)]),_:1},8,["open","title"]),m(" ── Check result modal ─────────────────────────────────── "),l(V,{open:e.showCheckModal,"onUpdate:open":o[16]||(o[16]=a=>e.showCheckModal=a),title:t.$t("sla.check_modal.title",{id:e.currentContract?.slaId?.slice(0,12)||""}),width:640,footer:null},{default:r(()=>[e.currentCheck?(d(),f("div",Gt,[l(oe,{status:e.currentCheck.totalViolations===0?"success":"warning",title:e.currentCheck.totalViolations===0?t.$t("sla.check_modal.noViolations"):t.$t("sla.check_modal.withViolations",{n:e.currentCheck.totalViolations}),"sub-title":t.$t("sla.check_modal.checkedAt",{time:e.formatSlaTime(e.currentCheck.checkedAt)})},null,8,["status","title","sub-title"]),e.currentCheck.totalViolations>0?(d(),h(re,{key:0,size:"small","data-source":e.currentCheck.violations},{renderItem:r(({item:a})=>[l(le,null,{default:r(()=>[l(S,{color:e.severityColor(a.severity),style:{"min-width":"50px","text-align":"center"}},{default:r(()=>[y(c(e.severityLabel(a.severity)),1)]),_:2},1032,["color"]),b("span",Qt,c(e.termLabel(a.term)),1),b("span",Xt,c(t.$t("sla.check_modal.expectedActual",{expected:e.formatTermValue(a.term,a.expectedValue),actual:e.formatTermValue(a.term,a.actualValue)})),1),b("span",Zt,c(a.deviationPercent.toFixed(2))+"%",1)]),_:2},1024)]),_:1},8,["data-source"])):m("v-if",!0)])):m("v-if",!0)]),_:1},8,["open","title"]),m(" ── Report modal ───────────────────────────────────────── "),l(V,{open:e.showReportModal,"onUpdate:open":o[17]||(o[17]=a=>e.showReportModal=a),title:t.$t("sla.report_modal.title",{id:e.currentContract?.slaId?.slice(0,12)||""}),width:720,footer:null},{default:r(()=>[e.currentReport?(d(),f("div",$t,[l(B,{gutter:12,style:{"margin-bottom":"16px"}},{default:r(()=>[l(A,{span:8},{default:r(()=>[l(z,{title:t.$t("sla.report_modal.compliance"),value:e.currentReport.compliance*100,suffix:"%",precision:2,"value-style":{color:e.complianceColor(e.currentReport.compliance),fontSize:"20px"}},null,8,["title","value","value-style"])]),_:1}),l(A,{span:8},{default:r(()=>[l(z,{title:t.$t("sla.report_modal.violations"),value:e.currentReport.violations.total,"value-style":{color:"#ff4d4f",fontSize:"20px"}},null,8,["title","value"])]),_:1}),l(A,{span:8},{default:r(()=>[l(z,{title:t.$t("sla.report_modal.compensation"),value:e.currentReport.violations.totalCompensation,precision:2,"value-style":{color:"#faad14",fontSize:"20px"}},null,8,["title","value"])]),_:1})]),_:1}),b("h4",ea,c(t.$t("sla.breakdown.violationsBySeverityHeader")),1),(d(!0),f(O,null,M(e.VIOLATION_SEVERITIES,a=>(d(),f("div",{key:a,class:"bd-row"},[l(S,{color:e.severityColor(a),style:{"min-width":"80px","text-align":"center"}},{default:r(()=>[y(c(e.severityLabel(a)),1)]),_:2},1032,["color"]),l(D,{percent:e.pctOfTotal(e.currentReport.violations.bySeverity[a]||0,e.currentReport.violations.total),"stroke-color":e.severityBarColor(a),format:()=>`${e.currentReport.violations.bySeverity[a]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128)),Object.keys(e.currentReport.metricsByTerm).length?(d(),f("h4",ta,c(t.$t("sla.breakdown.metricsAggregation")),1)):m("v-if",!0),Object.keys(e.currentReport.metricsByTerm).length?(d(),h(J,{key:1,columns:e.aggColumns,"data-source":e.reportAggDataSource,size:"small",pagination:!1,style:{background:"var(--bg-card)"}},{bodyCell:r(({column:a,record:u})=>[a.key==="term"?(d(),h(S,{key:0,color:"default",style:{"font-family":"monospace"}},{default:r(()=>[y(c(e.termLabel(u.term)),1)]),_:2},1024)):m("v-if",!0),a.key==="expected"?(d(),f("span",aa,c(e.formatTermValue(u.term,u.expected)),1)):["mean","p95","min","max"].includes(a.key)?(d(),f("span",oa,c(e.formatTermValue(u.term,u[a.key])),1)):m("v-if",!0)]),_:1},8,["columns","data-source"])):m("v-if",!0)])):m("v-if",!0)]),_:1},8,["open","title"]),m(" ── Compensation modal ─────────────────────────────────── "),l(V,{open:e.showCompensationModal,"onUpdate:open":o[18]||(o[18]=a=>e.showCompensationModal=a),title:t.$t("sla.compensation_modal.title",{id:e.currentViolation?.violationId?.slice(0,12)||""}),width:540,footer:null},{default:r(()=>[e.currentCompensation?(d(),f("div",la,[l(G,{column:2,size:"small",bordered:""},{default:r(()=>[l(x,{label:t.$t("sla.compensation_modal.violationId"),span:2},{default:r(()=>[b("span",ra,c(e.currentCompensation.violationId),1)]),_:1},8,["label"]),l(x,{label:t.$t("sla.compensation_modal.severity")},{default:r(()=>[l(S,{color:e.severityColor(e.currentCompensation.severity)},{default:r(()=>[y(c(e.severityLabel(e.currentCompensation.severity)),1)]),_:1},8,["color"])]),_:1},8,["label"]),l(x,{label:t.$t("sla.compensation_modal.base")},{default:r(()=>[b("span",na,c(e.currentCompensation.base.toFixed(4)),1)]),_:1},8,["label"]),l(x,{label:t.$t("sla.compensation_modal.multiplier")},{default:r(()=>[b("span",ia,"×"+c(e.currentCompensation.multiplier.toFixed(2)),1)]),_:1},8,["label"]),l(x,{label:t.$t("sla.compensation_modal.amount")},{default:r(()=>[b("span",sa,c(e.currentCompensation.amount.toFixed(2)),1)]),_:1},8,["label"])]),_:1})])):m("v-if",!0)]),_:1},8,["open","title"])])}const fa=ot(gt,[["render",ca],["__scopeId","data-v-76f93f7e"],["__file","/tmp/cc-web-panel-50dnka/repo/packages/web-panel/src/views/Sla.vue"]]);export{fa as default};
|
|
1
|
+
import{I as p,J as f,U as b,R as c,c as l,K as r,V as m,S as h,o as ve,a as ce,b as U,r as g,P as d,Q as y,F as O,Z as M,$ as tt}from"./vendor-BvqAck49.js";import{Y as at,t as N,_ as ot,u as pe,b as be,E as ge,d as k}from"./index-DDBuc-Id.js";import{aC as lt,am as rt,J as nt,f as it,aX as st,aY as ct,as as dt,R as ut}from"./icons-DP3uiYxy.js";const Fe=Object.freeze(["gold","silver","bronze"]),Oe=Object.freeze(["active","expired","terminated"]),de=Object.freeze(["availability","response_time","throughput","error_rate"]),ue=Object.freeze(["minor","moderate","major","critical"]),mt=Object.freeze(["open","acknowledged","resolved","waived"]);function v(t,o=0){return typeof t=="number"&&Number.isFinite(t)?t:o}function K(t){if(!t)return{noDb:!1,error:""};const o=at(t),i=/Database not available/i.test(o);return{noDb:i,error:i?"Database not available":""}}function ft(t,o=0){if(!t||typeof t!="object")return null;const i=t.name||"";return i?{key:i,name:i,availability:v(t.availability,0),maxResponseTime:v(t.maxResponseTime,0),minThroughput:v(t.minThroughput,0),maxErrorRate:v(t.maxErrorRate,0),compensationRate:v(t.compensationRate,0),_idx:o}:null}function _e(t){const o=N(t);return Array.isArray(o)?o.map(ft).filter(Boolean):[]}function yt(t){const o={availability:0,maxResponseTime:0,minThroughput:0,maxErrorRate:0,compensationRate:0};return!t||typeof t!="object"||Array.isArray(t)?o:{availability:v(t.availability,0),maxResponseTime:v(t.maxResponseTime,0),minThroughput:v(t.minThroughput,0),maxErrorRate:v(t.maxErrorRate,0),compensationRate:v(t.compensationRate,0)}}function Re(t,o=0){if(!t||typeof t!="object")return null;const i=t.slaId||t.sla_id||"";return i?{key:i,slaId:i,orgId:String(t.orgId??t.org_id??""),tier:String(t.tier||"").toLowerCase(),terms:yt(t.terms),monthlyFee:v(t.monthlyFee??t.monthly_fee,0),startDate:t.startDate??t.start_date??null,endDate:t.endDate??t.end_date??null,status:String(t.status||"active").toLowerCase(),createdAt:t.createdAt??t.created_at??null,updatedAt:t.updatedAt??t.updated_at??null,_idx:o}:null}function ke(t){const o=N(t);return Array.isArray(o)?o.map(Re).filter(Boolean):[]}function Ce(t){const o=N(t);return!o||typeof o!="object"||Array.isArray(o)?null:Re(o,0)}function we(t){return!t||typeof t!="object"?null:{count:v(t.count,0),mean:v(t.mean,0),min:v(t.min,0),max:v(t.max,0),p95:v(t.p95,0)}}function he(t){const o=N(t);if(!o||typeof o!="object"||Array.isArray(o))return{slaId:"",totalSamples:0,byTerm:{}};const i={};if(o.byTerm&&typeof o.byTerm=="object")for(const[e,_]of Object.entries(o.byTerm)){const T=we(_);T&&(i[e]=T)}return{slaId:String(o.slaId||""),totalSamples:v(o.totalSamples,0),byTerm:i}}function ze(t,o=0){if(!t||typeof t!="object")return null;const i=t.violationId||t.violation_id||"";return i?{key:i,violationId:i,slaId:String(t.slaId??t.sla_id??""),term:String(t.term||"").toLowerCase(),severity:String(t.severity||"minor").toLowerCase(),expectedValue:v(t.expectedValue??t.expected_value,0),actualValue:v(t.actualValue??t.actual_value,0),deviationPercent:v(t.deviationPercent??t.deviation_percent,0),compensationAmount:typeof t.compensationAmount=="number"?t.compensationAmount:typeof t.compensation_amount=="number"?t.compensation_amount:null,occurredAt:t.occurredAt??t.occurred_at??null,resolvedAt:t.resolvedAt??t.resolved_at??null,v2Status:t.v2Status?String(t.v2Status).toLowerCase():"open",v2Note:t.v2Note??"",_idx:o}:null}function Se(t){const o=N(t);return Array.isArray(o)?o.map(ze).filter(Boolean):[]}function xe(t){const o=N(t);return!o||typeof o!="object"||Array.isArray(o)?{slaId:"",checkedAt:null,totalViolations:0,violations:[]}:{slaId:String(o.slaId||""),checkedAt:o.checkedAt??null,totalViolations:v(o.totalViolations,0),violations:Array.isArray(o.violations)?o.violations.map(ze).filter(Boolean):[]}}function Te(t){const o=N(t);return!o||typeof o!="object"||Array.isArray(o)?null:{violationId:String(o.violationId||""),slaId:String(o.slaId||""),severity:String(o.severity||""),base:v(o.base,0),multiplier:v(o.multiplier,0),amount:v(o.amount,0)}}const vt={slaId:"",tier:"",compliance:0,startDate:null,endDate:null,metricsByTerm:{},violations:{total:0,byTerm:{},bySeverity:{},totalCompensation:0}};function Ie(t){const o=JSON.parse(JSON.stringify(vt));for(const e of de)o.violations.byTerm[e]=0;for(const e of ue)o.violations.bySeverity[e]=0;const i=N(t);if(!i||typeof i!="object"||Array.isArray(i))return o;if(o.slaId=String(i.slaId||""),o.tier=String(i.tier||"").toLowerCase(),o.compliance=v(i.compliance,0),o.startDate=i.startDate??null,o.endDate=i.endDate??null,i.metricsByTerm&&typeof i.metricsByTerm=="object")for(const[e,_]of Object.entries(i.metricsByTerm)){const T=we(_);T&&(o.metricsByTerm[e]=T)}if(i.violations&&typeof i.violations=="object"){if(o.violations.total=v(i.violations.total,0),o.violations.totalCompensation=v(i.violations.totalCompensation,0),i.violations.byTerm&&typeof i.violations.byTerm=="object")for(const[e,_]of Object.entries(i.violations.byTerm))typeof _=="number"&&Number.isFinite(_)&&(o.violations.byTerm[e]=_);if(i.violations.bySeverity&&typeof i.violations.bySeverity=="object")for(const[e,_]of Object.entries(i.violations.bySeverity))typeof _=="number"&&Number.isFinite(_)&&(o.violations.bySeverity[e]=_)}return o}const pt={totalContracts:0,activeContracts:0,activeOrgs:0,maxActiveSlasPerOrg:0,byStatus:{},byTier:{},violations:{total:0,byTerm:{},bySeverity:{},byStatus:{},totalCompensation:0}};function Ae(t){const o=JSON.parse(JSON.stringify(pt));for(const e of Oe)o.byStatus[e]=0;for(const e of Fe)o.byTier[e]=0;for(const e of de)o.violations.byTerm[e]=0;for(const e of ue)o.violations.bySeverity[e]=0;for(const e of mt)o.violations.byStatus[e]=0;const i=N(t);if(!i||typeof i!="object"||Array.isArray(i))return o;if(o.totalContracts=v(i.totalContracts,0),o.activeContracts=v(i.activeContracts,0),o.activeOrgs=v(i.activeOrgs,0),o.maxActiveSlasPerOrg=v(i.maxActiveSlasPerOrg,0),i.byStatus&&typeof i.byStatus=="object")for(const[e,_]of Object.entries(i.byStatus))typeof _=="number"&&Number.isFinite(_)&&(o.byStatus[e]=_);if(i.byTier&&typeof i.byTier=="object")for(const[e,_]of Object.entries(i.byTier))typeof _=="number"&&Number.isFinite(_)&&(o.byTier[e]=_);if(i.violations&&typeof i.violations=="object"){o.violations.total=v(i.violations.total,0),o.violations.totalCompensation=v(i.violations.totalCompensation,0);for(const e of["byTerm","bySeverity","byStatus"])if(i.violations[e]&&typeof i.violations[e]=="object")for(const[_,T]of Object.entries(i.violations[e]))typeof T=="number"&&Number.isFinite(T)&&(o.violations[e][_]=T)}return o}function bt(t){if(t==null||t==="")return"—";const o=typeof t=="number"?new Date(t):new Date(String(t));return isNaN(o.getTime())?String(t):o.toLocaleString("zh-CN",{hour12:!1})}const gt={__name:"Sla",setup(t,{expose:o}){o();const i=pe(),{t:e}=be(),_=ge.PRESENTED_IMAGE_SIMPLE,T=g(!1),R=g(!1),X=g(!1),ee=g([]),z=g([]),I=g([]),A=g({totalContracts:0,activeContracts:0,activeOrgs:0,maxActiveSlasPerOrg:0,byStatus:{},byTier:{},violations:{total:0,byTerm:{},bySeverity:{},byStatus:{},totalCompensation:0}}),B=g({noDb:!1,error:""}),S=g("contracts"),j=g(""),P=g(""),Z=g(""),J=g(!1),Y=g(!1),D=g(!1),te=g(!1),ae=g(!1),E=g(!1),w=ce({orgId:"",tier:"silver",monthlyFee:1e3,durationDays:30}),F=ce({slaId:null,term:"availability",value:null}),L=g(null),q=g({slaId:"",totalSamples:0,byTerm:{}}),V=g(null),x=g(null),G=g(null),H=g(null),oe=U(()=>[{title:e("sla.contractCols.slaId"),key:"slaId",width:"120px"},{title:e("sla.contractCols.orgId"),key:"orgId",width:"160px"},{title:e("sla.contractCols.tier"),key:"tier",width:"90px"},{title:e("sla.contractCols.status"),key:"status",width:"100px"},{title:e("sla.contractCols.monthlyFee"),key:"monthlyFee",width:"110px"},{title:e("sla.contractCols.endDate"),key:"endDate",width:"160px"},{title:e("sla.contractCols.action"),key:"action",width:"260px"}]),le=U(()=>[{title:e("sla.violationCols.id"),key:"violationId",width:"120px"},{title:e("sla.violationCols.term"),key:"term",width:"140px"},{title:e("sla.violationCols.severity"),key:"severity",width:"100px"},{title:e("sla.violationCols.deviation"),key:"deviation",width:"180px"},{title:e("sla.violationCols.expected"),key:"expected",width:"110px"},{title:e("sla.violationCols.actual"),key:"actual",width:"110px"},{title:e("sla.violationCols.compensation"),key:"compensation",width:"110px"},{title:e("sla.violationCols.occurredAt"),key:"occurredAt",width:"160px"},{title:e("sla.violationCols.action"),key:"action",width:"120px"}]),re=U(()=>[{title:e("sla.aggCols.term"),key:"term",width:"140px"},{title:e("sla.aggCols.expected"),key:"expected",width:"110px"},{title:e("sla.aggCols.mean"),key:"mean",width:"110px"},{title:e("sla.aggCols.p95"),key:"p95",width:"110px"},{title:e("sla.aggCols.min"),key:"min",width:"110px"},{title:e("sla.aggCols.max"),key:"max",width:"110px"},{title:e("sla.aggCols.count"),key:"count",width:"90px"}]),a=U(()=>{let n=z.value;return j.value&&(n=n.filter(s=>s.tier===j.value)),P.value&&(n=n.filter(s=>s.status===P.value)),n}),u=U(()=>{let n=I.value;return Z.value&&(n=n.filter(s=>s.severity===Z.value)),n}),W=U(()=>L.value?Object.entries(q.value.byTerm).map(([n,s])=>({key:n,term:n,expected:ne(L.value.terms,n),...s})):[]),Le=U(()=>!x.value||!L.value?[]:Object.entries(x.value.metricsByTerm).map(([n,s])=>({key:n,term:n,expected:ne(L.value.terms,n),...s})));function ne(n,s){if(!n)return 0;switch(s){case"availability":return n.availability;case"response_time":return n.maxResponseTime;case"throughput":return n.minThroughput;case"error_rate":return n.maxErrorRate;default:return 0}}function Ee(n){return{gold:"gold",silver:"default",bronze:"orange"}[n]||"default"}function Ve(n){return{gold:"#faad14",silver:"#8c8c8c",bronze:"#d4a373"}[n]||"#888"}function Me(n){const s=`sla.statusLabels.${n}`,C=e(s);return C===s?n:C}function je(n){return{active:"green",expired:"default",terminated:"red"}[n]||"default"}function De(n){return{active:"#52c41a",expired:"#888",terminated:"#ff4d4f"}[n]||"#888"}function Ne(n){const s=`sla.termLabels.${n}`,C=e(s);return C===s?n:C}function Be(n){if(!n)return"";const s=`sla.termHints.${n}`,C=e(s);return C===s?"":C}function Ue(n,s){return typeof s!="number"||!Number.isFinite(s)?"—":n==="availability"||n==="error_rate"?(s*100).toFixed(3)+"%":n==="response_time"?s.toFixed(1)+"ms":n==="throughput"?s.toFixed(0)+" rps":s.toFixed(4)}function Pe(n){const s=`sla.severityLabels.${n}`,C=e(s);return C===s?n:C}function Je(n){return{minor:"default",moderate:"gold",major:"orange",critical:"red"}[n]||"default"}function qe(n){return{minor:"#888",moderate:"#faad14",major:"#fa8c16",critical:"#ff4d4f"}[n]||"#888"}function He(n){return n>=.99?"#52c41a":n>=.9?"#1677ff":n>=.7?"#faad14":"#ff4d4f"}function We(n,s){return s?Math.round(n/s*100):0}async function Q(){T.value=!0,B.value={noDb:!1,error:""};try{const[n,s,C,ie]=await Promise.all([i.execute("sla tiers --json",8e3).catch(()=>({output:""})),i.execute("sla list --limit 200 --json",1e4).catch(()=>({output:""})),i.execute("sla violations --limit 200 --json",1e4).catch(()=>({output:""})),i.execute("sla stats-v2",8e3).catch(()=>({output:""}))]),$=[s,C,ie].map(se=>K(se.output)).find(se=>se.noDb);$&&(B.value=$),ee.value=_e(n.output),z.value=ke(s.output),I.value=Se(C.output),A.value=Ae(ie.output)}catch(n){k.error(e("sla.msg.loadFailed")+": "+(n?.message||n))}finally{T.value=!1}}async function Ke(){if(!w.orgId.trim()){k.warning(e("sla.msg.orgEmpty"));return}R.value=!0;try{const n=w.durationDays*24*60*60*1e3,s=[`sla create "${w.orgId.trim().replace(/"/g,'\\"')}"`,`-t ${w.tier}`,`-d ${n}`,`-f ${w.monthlyFee||0}`,"--json"],{output:C}=await i.execute(s.join(" "),1e4);if(K(C).noDb){k.error(e("sla.msg.needCcInit"));return}const $=Ce(C);if(!$){k.error(e("sla.msg.createFailed")+": "+C.slice(0,120));return}k.success(e("sla.msg.createSuccess",{id:$.slaId.slice(0,8)})),J.value=!1,me(),await Q()}catch(n){k.error(e("sla.msg.createFailed")+": "+(n?.message||n))}finally{R.value=!1}}async function Ye(){if(!F.slaId){k.warning(e("sla.msg.slaEmpty"));return}if(F.value===null||F.value===void 0){k.warning(e("sla.msg.valueEmpty"));return}X.value=!0;try{const{output:n}=await i.execute(`sla record ${F.slaId} ${F.term} ${F.value} --json`,8e3);if(K(n).noDb){k.error(e("sla.msg.needCcInit"));return}if(!/"metricId"|"term"/.test(n)){k.error(e("sla.msg.recordFailed")+": "+n.slice(0,120));return}k.success(e("sla.msg.recordSuccess")),Y.value=!1,fe()}catch(n){k.error(e("sla.msg.recordFailed")+": "+(n?.message||n))}finally{X.value=!1}}async function Ge(n){try{const{output:s}=await i.execute(`sla terminate ${n.slaId}`,8e3);if(K(s).noDb){k.error(e("sla.msg.needCcInit"));return}if(/Failed/i.test(s)&&!/terminated/i.test(s)){k.error(e("sla.msg.terminateFailed")+": "+s.slice(0,120));return}k.success(e("sla.msg.terminateSuccess")),await Q()}catch(s){k.error(e("sla.msg.terminateFailed")+": "+(s?.message||s))}}async function Qe(n){L.value=n,q.value={slaId:"",totalSamples:0,byTerm:{}},D.value=!0;try{const{output:s}=await i.execute(`sla metrics ${n.slaId} --json`,8e3);q.value=he(s)}catch(s){k.error(e("sla.msg.loadMetricsFailed")+": "+(s?.message||s))}}async function Xe(n){L.value=n,V.value=null,te.value=!0;try{const{output:s}=await i.execute(`sla check ${n.slaId} --json`,1e4);if(K(s).noDb){k.error(e("sla.msg.needCcInit"));return}V.value=xe(s),V.value.totalViolations>0&&await Q()}catch(s){k.error(e("sla.msg.checkFailed")+": "+(s?.message||s))}}async function Ze(n){L.value=n,x.value=null,ae.value=!0;try{const{output:s}=await i.execute(`sla report ${n.slaId} --json`,1e4);x.value=Ie(s)}catch(s){k.error(e("sla.msg.loadReportFailed")+": "+(s?.message||s))}}async function $e(n){G.value=n,H.value=null;try{const{output:s}=await i.execute(`sla compensate ${n.violationId} --json`,8e3);if(K(s).noDb){k.error(e("sla.msg.needCcInit"));return}if(H.value=Te(s),!H.value){k.error(e("sla.msg.compFailed")+": "+s.slice(0,120));return}E.value=!0,await Q()}catch(s){k.error(e("sla.msg.compFailed")+": "+(s?.message||s))}}function et(n){G.value=n,H.value={violationId:n.violationId,slaId:n.slaId,severity:n.severity,base:0,multiplier:0,amount:n.compensationAmount||0},E.value=!0}function me(){w.orgId="",w.tier="silver",w.monthlyFee=1e3,w.durationDays=30}function fe(){F.slaId=null,F.term="availability",F.value=null}ve(Q);const ye={ws:i,t:e,EMPTY_IMG:_,loading:T,creating:R,recording:X,tiers:ee,contracts:z,violations:I,stats:A,errorState:B,activeTab:S,tierFilter:j,statusFilter:P,severityFilter:Z,showCreateModal:J,showRecordModal:Y,showMetricsModal:D,showCheckModal:te,showReportModal:ae,showCompensationModal:E,createForm:w,recordForm:F,currentContract:L,currentMetrics:q,currentCheck:V,currentReport:x,currentViolation:G,currentCompensation:H,contractColumns:oe,violationColumns:le,aggColumns:re,filteredContracts:a,filteredViolations:u,aggDataSource:W,reportAggDataSource:Le,expectedFor:ne,tierColor:Ee,tierBarColor:Ve,statusLabel:Me,statusColor:je,statusBarColor:De,termLabel:Ne,termHint:Be,formatTermValue:Ue,severityLabel:Pe,severityColor:Je,severityBarColor:qe,complianceColor:He,pctOfTotal:We,loadAll:Q,submitCreate:Ke,submitRecord:Ye,terminateContract:Ge,viewMetrics:Qe,checkContract:Xe,viewReport:Ze,computeCompensation:$e,viewCompensation:et,resetCreateForm:me,resetRecordForm:fe,ref:g,computed:U,onMounted:ve,reactive:ce,get ReloadOutlined(){return ut},get PlusOutlined(){return dt},get LineChartOutlined(){return ct},get FileProtectOutlined(){return st},get CheckCircleOutlined(){return it},get TeamOutlined(){return nt},get WarningOutlined(){return rt},get DollarOutlined(){return lt},get message(){return k},get Empty(){return ge},get useI18n(){return be},get useWsStore(){return pe},get parseTiers(){return _e},get parseContracts(){return ke},get parseMetrics(){return he},get parseViolations(){return Se},get parseCheckResult(){return xe},get parseCompensation(){return Te},get parseReport(){return Ie},get parseStatsV2(){return Ae},get parseContract(){return Ce},get detectSlaError(){return K},get formatSlaTime(){return bt},get SLA_TIER_NAMES(){return Fe},get SLA_STATUSES(){return Oe},get SLA_TERMS_LIST(){return de},get VIOLATION_SEVERITIES(){return ue}};return Object.defineProperty(ye,"__isScriptSetup",{enumerable:!1,value:!0}),ye}},_t={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},kt={class:"page-title"},Ct={class:"page-sub"},ht={class:"tier-head"},St={class:"tier-comp"},xt={class:"tier-terms"},Tt={class:"tier-term"},It={class:"tier-term"},At={class:"tier-term"},Ft={class:"tier-term"},Ot={class:"filter-bar"},Rt={key:0,style:{color:"var(--text-primary)","font-family":"monospace","font-size":"12px"}},wt={key:1,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},zt={key:4,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},Lt={key:5,style:{color:"var(--text-secondary)","font-size":"11px"}},Et={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},Vt={class:"filter-bar"},Mt={key:0,style:{color:"var(--text-primary)","font-family":"monospace","font-size":"12px"}},jt={key:4,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},Dt={key:5,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},Nt={key:0,style:{color:"#faad14","font-weight":"500"}},Bt={key:1,style:{color:"var(--text-muted)"}},Ut={key:7,style:{color:"var(--text-secondary)","font-size":"11px"}},Pt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},Jt={style:{"margin-left":"8px",color:"var(--text-muted)","font-size":"12px"}},qt={style:{color:"var(--text-muted)","font-size":"11px","margin-top":"4px"}},Ht={key:0,style:{"padding-top":"8px"}},Wt={style:{color:"var(--text-primary)","font-size":"13px",margin:"16px 0 10px"}},Kt={key:1,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},Yt={key:2,style:{"font-family":"monospace","font-size":"12px"}},Gt={key:0,style:{"padding-top":"8px"}},Qt={style:{"margin-left":"8px","font-family":"monospace","font-size":"12px"}},Xt={style:{"margin-left":"8px",color:"var(--text-secondary)","font-size":"12px"}},Zt={style:{"margin-left":"auto",color:"#ff4d4f","font-weight":"500"}},$t={key:0,style:{"padding-top":"8px"}},ea={style:{color:"var(--text-primary)","font-size":"13px",margin:"16px 0 8px"}},ta={key:0,style:{color:"var(--text-primary)","font-size":"13px",margin:"16px 0 8px"}},aa={key:1,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},oa={key:2,style:{"font-family":"monospace","font-size":"12px"}},la={key:0,style:{"padding-top":"8px"}},ra={style:{"font-family":"monospace","font-size":"12px"}},na={style:{"font-family":"monospace"}},ia={style:{"font-family":"monospace"}},sa={style:{color:"#faad14","font-weight":"600","font-family":"monospace","font-size":"14px"}};function ca(t,o,i,e,_,T){const R=p("a-button"),X=p("a-space"),ee=p("a-alert"),z=p("a-statistic"),I=p("a-card"),A=p("a-col"),B=p("a-row"),S=p("a-tag"),j=p("a-radio-button"),P=p("a-radio-group"),Z=p("a-popconfirm"),J=p("a-table"),Y=p("a-tab-pane"),D=p("a-progress"),te=p("a-tabs"),ae=p("a-input"),E=p("a-form-item"),w=p("a-select-option"),F=p("a-select"),L=p("a-input-number"),q=p("a-form"),V=p("a-modal"),x=p("a-descriptions-item"),G=p("a-descriptions"),H=p("a-empty"),oe=p("a-result"),le=p("a-list-item"),re=p("a-list");return d(),f("div",null,[b("div",_t,[b("div",null,[b("h2",kt,c(t.$t("sla.title")),1),b("p",Ct,c(t.$t("sla.subtitle")),1)]),l(X,null,{default:r(()=>[l(R,{loading:e.loading,onClick:e.loadAll},{icon:r(()=>[l(e.ReloadOutlined)]),default:r(()=>[y(" "+c(t.$t("sla.refresh")),1)]),_:1},8,["loading"]),l(R,{onClick:o[0]||(o[0]=a=>e.showRecordModal=!0)},{icon:r(()=>[l(e.LineChartOutlined)]),default:r(()=>[y(" "+c(t.$t("sla.recordMetric")),1)]),_:1}),l(R,{type:"primary",onClick:o[1]||(o[1]=a=>e.showCreateModal=!0)},{icon:r(()=>[l(e.PlusOutlined)]),default:r(()=>[y(" "+c(t.$t("sla.create")),1)]),_:1})]),_:1})]),m(" noDb banner "),e.errorState.noDb?(d(),h(ee,{key:0,type:"info","show-icon":"",message:t.$t("sla.noDb.message"),description:t.$t("sla.noDb.description"),style:{"margin-bottom":"16px"}},null,8,["message","description"])):m("v-if",!0),m(" Stat cards "),l(B,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:r(()=>[l(A,{xs:12,sm:8,lg:5},{default:r(()=>[l(I,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[l(z,{title:t.$t("sla.stats.totalContracts"),value:e.stats.totalContracts,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:r(()=>[l(e.FileProtectOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),l(A,{xs:12,sm:8,lg:5},{default:r(()=>[l(I,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[l(z,{title:t.$t("sla.stats.active"),value:e.stats.activeContracts,"value-style":{color:e.stats.activeContracts>0?"#52c41a":"#888",fontSize:"20px"}},{prefix:r(()=>[l(e.CheckCircleOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),l(A,{xs:12,sm:8,lg:5},{default:r(()=>[l(I,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[l(z,{title:t.$t("sla.stats.orgs"),value:e.stats.activeOrgs,"value-style":{color:"#722ed1",fontSize:"20px"},suffix:e.stats.maxActiveSlasPerOrg?`· cap=${e.stats.maxActiveSlasPerOrg}`:""},{prefix:r(()=>[l(e.TeamOutlined)]),_:1},8,["title","value","suffix"])]),_:1})]),_:1}),l(A,{xs:12,sm:8,lg:5},{default:r(()=>[l(I,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[l(z,{title:t.$t("sla.stats.violations"),value:e.stats.violations.total,"value-style":{color:e.stats.violations.total>0?"#ff4d4f":"#888",fontSize:"20px"}},{prefix:r(()=>[l(e.WarningOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),l(A,{xs:24,sm:8,lg:4},{default:r(()=>[l(I,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[l(z,{title:t.$t("sla.stats.compensation"),value:e.stats.violations.totalCompensation,precision:2,"value-style":{color:"#faad14",fontSize:"20px"}},{prefix:r(()=>[l(e.DollarOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),m(" Tier catalogue "),l(I,{title:t.$t("sla.tierCard"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:r(()=>[l(B,{gutter:[12,12]},{default:r(()=>[(d(!0),f(O,null,M(e.tiers,a=>(d(),h(A,{key:a.name,xs:24,sm:8},{default:r(()=>[b("div",{class:"tier-pill",style:tt({borderLeftColor:e.tierBarColor(a.name)})},[b("div",ht,[l(S,{color:e.tierColor(a.name),style:{"font-family":"monospace","font-size":"13px"}},{default:r(()=>[y(c(a.name.toUpperCase()),1)]),_:2},1032,["color"]),b("span",St,c(t.$t("sla.tierCompRate",{pct:(a.compensationRate*100).toFixed(1)})),1)]),b("div",xt,[b("span",Tt,c(t.$t("sla.tierTerms.availability",{pct:(a.availability*100).toFixed(2)})),1),b("span",It,c(t.$t("sla.tierTerms.p95",{ms:a.maxResponseTime})),1),b("span",At,c(t.$t("sla.tierTerms.rps",{n:a.minThroughput})),1),b("span",Ft,c(t.$t("sla.tierTerms.errorRate",{pct:(a.maxErrorRate*100).toFixed(2)})),1)])],4)]),_:2},1024))),128))]),_:1})]),_:1},8,["title"]),m(" Tabs "),l(te,{activeKey:e.activeTab,"onUpdate:activeKey":o[5]||(o[5]=a=>e.activeTab=a),class:"sla-tabs"},{default:r(()=>[m(" ── Contracts tab ────────────────────────────────────── "),l(Y,{key:"contracts",tab:t.$t("sla.tabs.contracts")},{default:r(()=>[b("div",Ot,[l(P,{value:e.tierFilter,"onUpdate:value":o[2]||(o[2]=a=>e.tierFilter=a),size:"small","button-style":"solid"},{default:r(()=>[l(j,{value:""},{default:r(()=>[y(c(t.$t("sla.filter.allTiers")),1)]),_:1}),(d(!0),f(O,null,M(e.SLA_TIER_NAMES,a=>(d(),h(j,{key:a,value:a},{default:r(()=>[y(c(a.toUpperCase()),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),l(P,{value:e.statusFilter,"onUpdate:value":o[3]||(o[3]=a=>e.statusFilter=a),size:"small"},{default:r(()=>[l(j,{value:""},{default:r(()=>[y(c(t.$t("sla.filter.allStatuses")),1)]),_:1}),(d(!0),f(O,null,M(e.SLA_STATUSES,a=>(d(),h(j,{key:a,value:a},{default:r(()=>[y(c(e.statusLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),l(J,{columns:e.contractColumns,"data-source":e.filteredContracts,pagination:{pageSize:20,showTotal:a=>t.$t("sla.table.contractsSuffix",{n:a})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:r(({column:a,record:u})=>[a.key==="slaId"?(d(),f("span",Rt,c(u.slaId.slice(0,12)),1)):m("v-if",!0),a.key==="orgId"?(d(),f("span",wt,c(u.orgId),1)):m("v-if",!0),a.key==="tier"?(d(),h(S,{key:2,color:e.tierColor(u.tier),style:{"font-family":"monospace"}},{default:r(()=>[y(c(u.tier.toUpperCase()),1)]),_:2},1032,["color"])):m("v-if",!0),a.key==="status"?(d(),h(S,{key:3,color:e.statusColor(u.status)},{default:r(()=>[y(c(e.statusLabel(u.status)),1)]),_:2},1032,["color"])):m("v-if",!0),a.key==="monthlyFee"?(d(),f("span",zt,c(u.monthlyFee.toFixed(2)),1)):m("v-if",!0),a.key==="endDate"?(d(),f("span",Lt,c(e.formatSlaTime(u.endDate)),1)):m("v-if",!0),a.key==="action"?(d(),f(O,{key:6},[l(R,{size:"small",type:"link",onClick:W=>e.viewMetrics(u)},{default:r(()=>[y(c(t.$t("sla.table.actionMetrics")),1)]),_:1},8,["onClick"]),l(R,{size:"small",type:"link",onClick:W=>e.checkContract(u)},{default:r(()=>[y(c(t.$t("sla.table.actionCheck")),1)]),_:1},8,["onClick"]),l(R,{size:"small",type:"link",onClick:W=>e.viewReport(u)},{default:r(()=>[y(c(t.$t("sla.table.actionReport")),1)]),_:1},8,["onClick"]),u.status==="active"?(d(),h(Z,{key:0,title:t.$t("sla.terminateConfirm.title"),"ok-text":t.$t("sla.terminateConfirm.ok"),"cancel-text":t.$t("sla.terminateConfirm.cancel"),onConfirm:W=>e.terminateContract(u)},{default:r(()=>[l(R,{size:"small",type:"link",danger:""},{default:r(()=>[y(c(t.$t("sla.terminateConfirm.ok")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])):m("v-if",!0)],64)):m("v-if",!0)]),emptyText:r(()=>[b("div",Et,[l(e.FileProtectOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),y(" "+c(e.tierFilter||e.statusFilter?t.$t("sla.table.emptyContractsFiltered"):t.$t("sla.table.emptyContracts")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),m(" ── Violations tab ───────────────────────────────────── "),l(Y,{key:"violations",tab:t.$t("sla.tabs.violations")},{default:r(()=>[b("div",Vt,[l(P,{value:e.severityFilter,"onUpdate:value":o[4]||(o[4]=a=>e.severityFilter=a),size:"small","button-style":"solid"},{default:r(()=>[l(j,{value:""},{default:r(()=>[y(c(t.$t("sla.filter.allSeverities")),1)]),_:1}),(d(!0),f(O,null,M(e.VIOLATION_SEVERITIES,a=>(d(),h(j,{key:a,value:a},{default:r(()=>[y(c(e.severityLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),l(J,{columns:e.violationColumns,"data-source":e.filteredViolations,pagination:{pageSize:20,showTotal:a=>t.$t("sla.table.totalSuffix",{n:a})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:r(({column:a,record:u})=>[a.key==="violationId"?(d(),f("span",Mt,c(u.violationId.slice(0,12)),1)):m("v-if",!0),a.key==="term"?(d(),h(S,{key:1,color:"default",style:{"font-family":"monospace"}},{default:r(()=>[y(c(e.termLabel(u.term)),1)]),_:2},1024)):m("v-if",!0),a.key==="severity"?(d(),h(S,{key:2,color:e.severityColor(u.severity)},{default:r(()=>[y(c(e.severityLabel(u.severity)),1)]),_:2},1032,["color"])):m("v-if",!0),a.key==="deviation"?(d(),h(D,{key:3,percent:Math.min(100,Math.round(u.deviationPercent)),"stroke-color":e.severityBarColor(u.severity),size:"small",format:()=>`${u.deviationPercent.toFixed(1)}%`},null,8,["percent","stroke-color","format"])):m("v-if",!0),a.key==="expected"?(d(),f("span",jt,c(e.formatTermValue(u.term,u.expectedValue)),1)):m("v-if",!0),a.key==="actual"?(d(),f("span",Dt,c(e.formatTermValue(u.term,u.actualValue)),1)):m("v-if",!0),a.key==="compensation"?(d(),f(O,{key:6},[u.compensationAmount!==null?(d(),f("span",Nt,c(u.compensationAmount.toFixed(2)),1)):(d(),f("span",Bt,c(t.$t("sla.table.uncomputed")),1))],64)):m("v-if",!0),a.key==="occurredAt"?(d(),f("span",Ut,c(e.formatSlaTime(u.occurredAt)),1)):m("v-if",!0),a.key==="action"?(d(),f(O,{key:8},[u.compensationAmount===null?(d(),h(R,{key:0,size:"small",type:"link",onClick:W=>e.computeCompensation(u)},{default:r(()=>[y(c(t.$t("sla.table.actionComputeComp")),1)]),_:1},8,["onClick"])):(d(),h(R,{key:1,size:"small",type:"link",onClick:W=>e.viewCompensation(u)},{default:r(()=>[y(c(t.$t("sla.table.actionView")),1)]),_:1},8,["onClick"]))],64)):m("v-if",!0)]),emptyText:r(()=>[b("div",Pt,[l(e.CheckCircleOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block",color:"#52c41a"}}),y(" "+c(e.severityFilter?t.$t("sla.table.emptyViolationsFiltered"):t.$t("sla.table.emptyViolations")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),m(" ── Breakdown tab ────────────────────────────────────── "),l(Y,{key:"breakdown",tab:t.$t("sla.tabs.breakdown")},{default:r(()=>[l(B,{gutter:[16,16]},{default:r(()=>[l(A,{xs:24,lg:12},{default:r(()=>[l(I,{title:t.$t("sla.breakdown.contractsByStatus"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"12px"}},{default:r(()=>[(d(!0),f(O,null,M(e.SLA_STATUSES,a=>(d(),f("div",{key:a,class:"bd-row"},[l(S,{color:e.statusColor(a),style:{"min-width":"80px","text-align":"center"}},{default:r(()=>[y(c(e.statusLabel(a)),1)]),_:2},1032,["color"]),l(D,{percent:e.pctOfTotal(e.stats.byStatus[a]||0,e.stats.totalContracts),"stroke-color":e.statusBarColor(a),format:()=>`${e.stats.byStatus[a]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))]),_:1},8,["title"]),l(I,{title:t.$t("sla.breakdown.contractsByTier"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[(d(!0),f(O,null,M(e.SLA_TIER_NAMES,a=>(d(),f("div",{key:a,class:"bd-row"},[l(S,{color:e.tierColor(a),style:{"min-width":"80px","text-align":"center","font-family":"monospace"}},{default:r(()=>[y(c(a.toUpperCase()),1)]),_:2},1032,["color"]),l(D,{percent:e.pctOfTotal(e.stats.byTier[a]||0,e.stats.totalContracts),"stroke-color":e.tierBarColor(a),format:()=>`${e.stats.byTier[a]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))]),_:1},8,["title"])]),_:1}),l(A,{xs:24,lg:12},{default:r(()=>[l(I,{title:t.$t("sla.breakdown.violationsBySeverity"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"12px"}},{default:r(()=>[(d(!0),f(O,null,M(e.VIOLATION_SEVERITIES,a=>(d(),f("div",{key:a,class:"bd-row"},[l(S,{color:e.severityColor(a),style:{"min-width":"80px","text-align":"center"}},{default:r(()=>[y(c(e.severityLabel(a)),1)]),_:2},1032,["color"]),l(D,{percent:e.pctOfTotal(e.stats.violations.bySeverity[a]||0,e.stats.violations.total),"stroke-color":e.severityBarColor(a),format:()=>`${e.stats.violations.bySeverity[a]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))]),_:1},8,["title"]),l(I,{title:t.$t("sla.breakdown.violationsByTerm"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[(d(!0),f(O,null,M(e.SLA_TERMS_LIST,a=>(d(),f("div",{key:a,class:"bd-row"},[l(S,{color:"default",style:{"min-width":"110px","text-align":"center","font-family":"monospace","font-size":"11px"}},{default:r(()=>[y(c(e.termLabel(a)),1)]),_:2},1024),l(D,{percent:e.pctOfTotal(e.stats.violations.byTerm[a]||0,e.stats.violations.total),"stroke-color":"#fa8c16",format:()=>`${e.stats.violations.byTerm[a]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","format"])]))),128))]),_:1},8,["title"])]),_:1})]),_:1})]),_:1},8,["tab"])]),_:1},8,["activeKey"]),m(" ── Create contract modal ──────────────────────────────── "),l(V,{open:e.showCreateModal,"onUpdate:open":o[10]||(o[10]=a=>e.showCreateModal=a),title:t.$t("sla.create_modal.title"),"confirm-loading":e.creating,width:540,"ok-text":t.$t("sla.create_modal.ok"),"cancel-text":t.$t("sla.create_modal.cancel"),onOk:e.submitCreate,onCancel:e.resetCreateForm},{default:r(()=>[l(q,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:r(()=>[l(E,{label:t.$t("sla.create_modal.orgLabel"),required:""},{default:r(()=>[l(ae,{value:e.createForm.orgId,"onUpdate:value":o[6]||(o[6]=a=>e.createForm.orgId=a),placeholder:t.$t("sla.create_modal.orgPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),l(E,{label:t.$t("sla.create_modal.tierLabel"),required:""},{default:r(()=>[l(F,{value:e.createForm.tier,"onUpdate:value":o[7]||(o[7]=a=>e.createForm.tier=a)},{default:r(()=>[(d(!0),f(O,null,M(e.SLA_TIER_NAMES,a=>(d(),h(w,{key:a,value:a},{default:r(()=>[y(c(a.toUpperCase()),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),l(E,{label:t.$t("sla.create_modal.feeLabel")},{default:r(()=>[l(L,{value:e.createForm.monthlyFee,"onUpdate:value":o[8]||(o[8]=a=>e.createForm.monthlyFee=a),min:0,step:100,style:{width:"160px"}},null,8,["value"])]),_:1},8,["label"]),l(E,{label:t.$t("sla.create_modal.durationLabel")},{default:r(()=>[l(L,{value:e.createForm.durationDays,"onUpdate:value":o[9]||(o[9]=a=>e.createForm.durationDays=a),min:1,step:30,style:{width:"160px"}},null,8,["value"]),b("span",Jt,c(t.$t("sla.create_modal.durationHint")),1)]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),m(" ── Record metric modal ────────────────────────────────── "),l(V,{open:e.showRecordModal,"onUpdate:open":o[14]||(o[14]=a=>e.showRecordModal=a),title:t.$t("sla.record_modal.title"),"confirm-loading":e.recording,width:540,"ok-text":t.$t("sla.record_modal.ok"),"cancel-text":t.$t("sla.record_modal.cancel"),onOk:e.submitRecord,onCancel:e.resetRecordForm},{default:r(()=>[l(q,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:r(()=>[l(E,{label:t.$t("sla.record_modal.slaLabel"),required:""},{default:r(()=>[l(F,{value:e.recordForm.slaId,"onUpdate:value":o[11]||(o[11]=a=>e.recordForm.slaId=a),placeholder:t.$t("sla.record_modal.slaPlaceholder"),options:e.contracts.map(a=>({value:a.slaId,label:`${a.slaId.slice(0,8)} · ${a.orgId} [${a.tier}]`})),"show-search":""},null,8,["value","placeholder","options"])]),_:1},8,["label"]),l(E,{label:t.$t("sla.record_modal.termLabel"),required:""},{default:r(()=>[l(F,{value:e.recordForm.term,"onUpdate:value":o[12]||(o[12]=a=>e.recordForm.term=a)},{default:r(()=>[(d(!0),f(O,null,M(e.SLA_TERMS_LIST,a=>(d(),h(w,{key:a,value:a},{default:r(()=>[y(c(e.termLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),l(E,{label:t.$t("sla.record_modal.valueLabel"),required:""},{default:r(()=>[l(L,{value:e.recordForm.value,"onUpdate:value":o[13]||(o[13]=a=>e.recordForm.value=a),step:.01,style:{width:"200px"}},null,8,["value"]),b("div",qt,c(e.termHint(e.recordForm.term)),1)]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),m(" ── Metrics modal ──────────────────────────────────────── "),l(V,{open:e.showMetricsModal,"onUpdate:open":o[15]||(o[15]=a=>e.showMetricsModal=a),title:t.$t("sla.metrics_modal.title",{id:e.currentContract?.slaId?.slice(0,12)||""}),width:640,footer:null},{default:r(()=>[e.currentContract?(d(),f("div",Ht,[l(G,{column:2,size:"small",bordered:""},{default:r(()=>[l(x,{label:t.$t("sla.metrics_modal.org")},{default:r(()=>[y(c(e.currentContract.orgId),1)]),_:1},8,["label"]),l(x,{label:t.$t("sla.metrics_modal.tier")},{default:r(()=>[l(S,{color:e.tierColor(e.currentContract.tier)},{default:r(()=>[y(c(e.currentContract.tier.toUpperCase()),1)]),_:1},8,["color"])]),_:1},8,["label"]),l(x,{label:t.$t("sla.metrics_modal.samples")},{default:r(()=>[y(c(e.currentMetrics.totalSamples),1)]),_:1},8,["label"]),l(x,{label:t.$t("sla.metrics_modal.monthlyFee")},{default:r(()=>[y(c(e.currentContract.monthlyFee.toFixed(2)),1)]),_:1},8,["label"])]),_:1}),b("h4",Wt,c(t.$t("sla.metrics_modal.byTerm")),1),Object.keys(e.currentMetrics.byTerm).length?(d(),h(J,{key:1,columns:e.aggColumns,"data-source":e.aggDataSource,size:"small",pagination:!1,style:{background:"var(--bg-card)"}},{bodyCell:r(({column:a,record:u})=>[a.key==="term"?(d(),h(S,{key:0,color:"default",style:{"font-family":"monospace"}},{default:r(()=>[y(c(e.termLabel(u.term)),1)]),_:2},1024)):m("v-if",!0),a.key==="expected"?(d(),f("span",Kt,c(e.formatTermValue(u.term,u.expected)),1)):["mean","p95","min","max"].includes(a.key)?(d(),f("span",Yt,c(e.formatTermValue(u.term,u[a.key])),1)):m("v-if",!0)]),_:1},8,["columns","data-source"])):(d(),h(H,{key:0,description:t.$t("sla.metrics_modal.empty"),image:e.EMPTY_IMG},null,8,["description","image"]))])):m("v-if",!0)]),_:1},8,["open","title"]),m(" ── Check result modal ─────────────────────────────────── "),l(V,{open:e.showCheckModal,"onUpdate:open":o[16]||(o[16]=a=>e.showCheckModal=a),title:t.$t("sla.check_modal.title",{id:e.currentContract?.slaId?.slice(0,12)||""}),width:640,footer:null},{default:r(()=>[e.currentCheck?(d(),f("div",Gt,[l(oe,{status:e.currentCheck.totalViolations===0?"success":"warning",title:e.currentCheck.totalViolations===0?t.$t("sla.check_modal.noViolations"):t.$t("sla.check_modal.withViolations",{n:e.currentCheck.totalViolations}),"sub-title":t.$t("sla.check_modal.checkedAt",{time:e.formatSlaTime(e.currentCheck.checkedAt)})},null,8,["status","title","sub-title"]),e.currentCheck.totalViolations>0?(d(),h(re,{key:0,size:"small","data-source":e.currentCheck.violations},{renderItem:r(({item:a})=>[l(le,null,{default:r(()=>[l(S,{color:e.severityColor(a.severity),style:{"min-width":"50px","text-align":"center"}},{default:r(()=>[y(c(e.severityLabel(a.severity)),1)]),_:2},1032,["color"]),b("span",Qt,c(e.termLabel(a.term)),1),b("span",Xt,c(t.$t("sla.check_modal.expectedActual",{expected:e.formatTermValue(a.term,a.expectedValue),actual:e.formatTermValue(a.term,a.actualValue)})),1),b("span",Zt,c(a.deviationPercent.toFixed(2))+"%",1)]),_:2},1024)]),_:1},8,["data-source"])):m("v-if",!0)])):m("v-if",!0)]),_:1},8,["open","title"]),m(" ── Report modal ───────────────────────────────────────── "),l(V,{open:e.showReportModal,"onUpdate:open":o[17]||(o[17]=a=>e.showReportModal=a),title:t.$t("sla.report_modal.title",{id:e.currentContract?.slaId?.slice(0,12)||""}),width:720,footer:null},{default:r(()=>[e.currentReport?(d(),f("div",$t,[l(B,{gutter:12,style:{"margin-bottom":"16px"}},{default:r(()=>[l(A,{span:8},{default:r(()=>[l(z,{title:t.$t("sla.report_modal.compliance"),value:e.currentReport.compliance*100,suffix:"%",precision:2,"value-style":{color:e.complianceColor(e.currentReport.compliance),fontSize:"20px"}},null,8,["title","value","value-style"])]),_:1}),l(A,{span:8},{default:r(()=>[l(z,{title:t.$t("sla.report_modal.violations"),value:e.currentReport.violations.total,"value-style":{color:"#ff4d4f",fontSize:"20px"}},null,8,["title","value"])]),_:1}),l(A,{span:8},{default:r(()=>[l(z,{title:t.$t("sla.report_modal.compensation"),value:e.currentReport.violations.totalCompensation,precision:2,"value-style":{color:"#faad14",fontSize:"20px"}},null,8,["title","value"])]),_:1})]),_:1}),b("h4",ea,c(t.$t("sla.breakdown.violationsBySeverityHeader")),1),(d(!0),f(O,null,M(e.VIOLATION_SEVERITIES,a=>(d(),f("div",{key:a,class:"bd-row"},[l(S,{color:e.severityColor(a),style:{"min-width":"80px","text-align":"center"}},{default:r(()=>[y(c(e.severityLabel(a)),1)]),_:2},1032,["color"]),l(D,{percent:e.pctOfTotal(e.currentReport.violations.bySeverity[a]||0,e.currentReport.violations.total),"stroke-color":e.severityBarColor(a),format:()=>`${e.currentReport.violations.bySeverity[a]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128)),Object.keys(e.currentReport.metricsByTerm).length?(d(),f("h4",ta,c(t.$t("sla.breakdown.metricsAggregation")),1)):m("v-if",!0),Object.keys(e.currentReport.metricsByTerm).length?(d(),h(J,{key:1,columns:e.aggColumns,"data-source":e.reportAggDataSource,size:"small",pagination:!1,style:{background:"var(--bg-card)"}},{bodyCell:r(({column:a,record:u})=>[a.key==="term"?(d(),h(S,{key:0,color:"default",style:{"font-family":"monospace"}},{default:r(()=>[y(c(e.termLabel(u.term)),1)]),_:2},1024)):m("v-if",!0),a.key==="expected"?(d(),f("span",aa,c(e.formatTermValue(u.term,u.expected)),1)):["mean","p95","min","max"].includes(a.key)?(d(),f("span",oa,c(e.formatTermValue(u.term,u[a.key])),1)):m("v-if",!0)]),_:1},8,["columns","data-source"])):m("v-if",!0)])):m("v-if",!0)]),_:1},8,["open","title"]),m(" ── Compensation modal ─────────────────────────────────── "),l(V,{open:e.showCompensationModal,"onUpdate:open":o[18]||(o[18]=a=>e.showCompensationModal=a),title:t.$t("sla.compensation_modal.title",{id:e.currentViolation?.violationId?.slice(0,12)||""}),width:540,footer:null},{default:r(()=>[e.currentCompensation?(d(),f("div",la,[l(G,{column:2,size:"small",bordered:""},{default:r(()=>[l(x,{label:t.$t("sla.compensation_modal.violationId"),span:2},{default:r(()=>[b("span",ra,c(e.currentCompensation.violationId),1)]),_:1},8,["label"]),l(x,{label:t.$t("sla.compensation_modal.severity")},{default:r(()=>[l(S,{color:e.severityColor(e.currentCompensation.severity)},{default:r(()=>[y(c(e.severityLabel(e.currentCompensation.severity)),1)]),_:1},8,["color"])]),_:1},8,["label"]),l(x,{label:t.$t("sla.compensation_modal.base")},{default:r(()=>[b("span",na,c(e.currentCompensation.base.toFixed(4)),1)]),_:1},8,["label"]),l(x,{label:t.$t("sla.compensation_modal.multiplier")},{default:r(()=>[b("span",ia,"×"+c(e.currentCompensation.multiplier.toFixed(2)),1)]),_:1},8,["label"]),l(x,{label:t.$t("sla.compensation_modal.amount")},{default:r(()=>[b("span",sa,c(e.currentCompensation.amount.toFixed(2)),1)]),_:1},8,["label"])]),_:1})])):m("v-if",!0)]),_:1},8,["open","title"])])}const fa=ot(gt,[["render",ca],["__scopeId","data-v-76f93f7e"],["__file","/tmp/cc-web-panel-wxwyEA/repo/packages/web-panel/src/views/Sla.vue"]]);export{fa as default};
|
package/src/assets/web-panel/assets/{SpeechSettings-bZzSxulW.js → SpeechSettings-3kg5311F.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{I as u,J as j,U as b,R as c,c as a,K as i,a as R,r as k,o as F,b as E,P as O,Q as p,S as z,V as C}from"./vendor-BvqAck49.js";import{t as M,_ as Q,b as K,u as T,d as S}from"./index-_I4YISHL.js";import{i as q,R as X}from"./icons-DP3uiYxy.js";const v=Object.freeze({defaultEngine:"webspeech",webSpeech:{lang:"zh-CN"},whisperAPI:{apiKey:"",baseURL:"https://api.openai.com/v1",model:"whisper-1",language:"zh",timeout:6e4},whisperLocal:{serverUrl:"http://localhost:8002",modelSize:"base",device:"auto",timeout:12e4}}),Y=["webspeech","whisper-api","whisper-local"];function B(g,t){if(typeof g=="number"&&Number.isFinite(g))return g;const s=parseFloat(g);return Number.isFinite(s)?s:t}function Z(g){return JSON.parse(JSON.stringify(g))}function D(g){const t=Z(v);if(!g)return t;const s=g.trim();if(!s||/key not found/i.test(s))return t;const e=M(s);if(!e||typeof e!="object"||Array.isArray(e))return t;if(typeof e.defaultEngine=="string"&&Y.includes(e.defaultEngine)&&(t.defaultEngine=e.defaultEngine),e.webSpeech&&typeof e.webSpeech=="object"&&typeof e.webSpeech.lang=="string"&&e.webSpeech.lang&&(t.webSpeech.lang=e.webSpeech.lang),e.whisperAPI&&typeof e.whisperAPI=="object"){const l=e.whisperAPI;typeof l.apiKey=="string"&&(t.whisperAPI.apiKey=l.apiKey),typeof l.baseURL=="string"&&l.baseURL&&(t.whisperAPI.baseURL=l.baseURL),typeof l.model=="string"&&l.model&&(t.whisperAPI.model=l.model),typeof l.language=="string"&&l.language&&(t.whisperAPI.language=l.language),l.timeout!==void 0&&(t.whisperAPI.timeout=B(l.timeout,v.whisperAPI.timeout))}if(e.whisperLocal&&typeof e.whisperLocal=="object"){const l=e.whisperLocal;typeof l.serverUrl=="string"&&l.serverUrl&&(t.whisperLocal.serverUrl=l.serverUrl),typeof l.modelSize=="string"&&l.modelSize&&(t.whisperLocal.modelSize=l.modelSize),typeof l.device=="string"&&l.device&&(t.whisperLocal.device=l.device),l.timeout!==void 0&&(t.whisperLocal.timeout=B(l.timeout,v.whisperLocal.timeout))}return t}function J(g,t){const s={};g.defaultEngine!==t.defaultEngine&&(s.defaultEngine=t.defaultEngine);for(const e of["webSpeech","whisperAPI","whisperLocal"]){const l=g[e]||{},w=t[e]||{};for(const o of Object.keys(v[e]))l[o]!==w[o]&&(s[`${e}.${o}`]=w[o])}return s}const $={__name:"SpeechSettings",setup(g,{expose:t}){t();const{t:s}=K(),e=T(),l=k(!1),w=k(!1),o=R(JSON.parse(JSON.stringify(v))),h=k(JSON.parse(JSON.stringify(v))),y=E(()=>[{value:"webspeech",label:s("speechSettings.engineOptions.webspeech")},{value:"whisper-api",label:s("speechSettings.engineOptions.whisper-api")},{value:"whisper-local",label:s("speechSettings.engineOptions.whisper-local")}]),f=E(()=>{const d=`speechSettings.engineHint.${o.defaultEngine}`,n=s(d);return n===d?"":n}),_=E(()=>Object.keys(J(h.value,o)).length>0);function m(d){o.defaultEngine=d.defaultEngine,Object.assign(o.webSpeech,d.webSpeech),Object.assign(o.whisperAPI,d.whisperAPI),Object.assign(o.whisperLocal,d.whisperLocal),h.value=JSON.parse(JSON.stringify(d))}async function r(){l.value=!0;try{const{output:d}=await e.execute("config get speech",1e4);m(D(d))}catch(d){/key not found/i.test(d.message)?m(JSON.parse(JSON.stringify(v))):S.error(s("speechSettings.messages.loadFailed",{err:d.message}))}finally{l.value=!1}}function N(){m(h.value)}async function L(){const d=J(h.value,o),n=Object.keys(d);if(n.length===0){S.info(s("speechSettings.messages.noChanges"));return}w.value=!0;let P=0,I=0;for(const A of n){const H=d[A],V=String(H).replace(/"/g,'\\"'),W=`config set speech.${A} "${V}"`;try{const{output:U,exitCode:G}=await e.execute(W,1e4);G!==0||/error|failed|失败/i.test(U)?(I++,S.error(s("speechSettings.messages.saveItemFailed",{key:A,err:U.slice(0,80)}))):P++}catch(U){I++,S.error(s("speechSettings.messages.saveItemFailed",{key:A,err:U.message}))}}w.value=!1,I===0?(S.success(s("speechSettings.messages.saveOk",{count:P})),h.value=JSON.parse(JSON.stringify(o))):P>0&&(S.warning(s("speechSettings.messages.savePartial",{ok:P,fail:I})),await r())}F(()=>{r()});const x={t:s,ws:e,loading:l,saving:w,form:o,baseline:h,engineOptions:y,engineHint:f,isDirty:_,applyConfig:m,loadConfig:r,resetForm:N,saveConfig:L,reactive:R,ref:k,computed:E,onMounted:F,get useI18n(){return K},get ReloadOutlined(){return X},get SoundOutlined(){return q},get message(){return S},get useWsStore(){return T},get parseSpeechConfig(){return D},get diffSpeechConfig(){return J},get SPEECH_DEFAULTS(){return v}};return Object.defineProperty(x,"__isScriptSetup",{enumerable:!1,value:!0}),x}},ee={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},te={class:"page-title"},ae={class:"page-sub"},ie={style:{color:"var(--text-primary)"}},le={style:{color:"var(--text-muted)","font-size":"11px"}},ne={style:{color:"var(--text-primary)"}},se={style:{color:"var(--text-primary)"}},oe={style:{color:"var(--text-primary)"}},re={style:{display:"flex",gap:"12px","align-items":"center"}},de={key:0,style:{color:"#faad14","font-size":"12px"}};function pe(g,t,s,e,l,w){const o=u("a-button"),h=u("a-alert"),y=u("a-select"),f=u("a-form-item"),_=u("a-form"),m=u("a-card"),r=u("a-select-option"),N=u("a-input-password"),L=u("a-input"),x=u("a-input-number"),d=u("a-spin");return O(),j("div",null,[b("div",ee,[b("div",null,[b("h2",te,c(e.t("speechSettings.title")),1),b("p",ae,c(e.t("speechSettings.subtitle")),1)]),a(o,{loading:e.loading,onClick:e.loadConfig},{icon:i(()=>[a(e.ReloadOutlined)]),default:i(()=>[p(" "+c(e.t("speechSettings.refresh")),1)]),_:1},8,["loading"])]),a(h,{message:e.t("speechSettings.alert.message"),description:e.t("speechSettings.alert.description"),type:"info","show-icon":"",closable:"",style:{"margin-bottom":"16px"}},null,8,["message","description"]),a(d,{spinning:e.loading},{default:i(()=>[a(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{title:i(()=>[b("span",ie,[a(e.SoundOutlined,{style:{"margin-right":"8px"}}),p(c(e.t("speechSettings.engineCardTitle")),1)])]),default:i(()=>[a(_,{"label-col":{span:6},"wrapper-col":{span:18},style:{"max-width":"720px"}},{default:i(()=>[a(f,{label:e.t("speechSettings.engineLabel")},{extra:i(()=>[b("span",le,c(e.engineHint),1)]),default:i(()=>[a(y,{value:e.form.defaultEngine,"onUpdate:value":t[0]||(t[0]=n=>e.form.defaultEngine=n),style:{width:"320px"},disabled:e.saving,options:e.engineOptions},null,8,["value","disabled","options"])]),_:1},8,["label"])]),_:1})]),_:1}),e.form.defaultEngine==="webspeech"?(O(),z(m,{key:0,style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{title:i(()=>[b("span",ne,c(e.t("speechSettings.webSpeech.cardTitle")),1)]),default:i(()=>[a(_,{"label-col":{span:6},"wrapper-col":{span:18},style:{"max-width":"720px"}},{default:i(()=>[a(f,{label:e.t("speechSettings.webSpeech.langLabel")},{default:i(()=>[a(y,{value:e.form.webSpeech.lang,"onUpdate:value":t[1]||(t[1]=n=>e.form.webSpeech.lang=n),style:{width:"240px"},disabled:e.saving},{default:i(()=>[a(r,{value:"zh-CN"},{default:i(()=>[p(c(e.t("speechSettings.webSpeech.langOptions.zh-CN")),1)]),_:1}),a(r,{value:"zh-TW"},{default:i(()=>[p(c(e.t("speechSettings.webSpeech.langOptions.zh-TW")),1)]),_:1}),a(r,{value:"en-US"},{default:i(()=>[p(c(e.t("speechSettings.webSpeech.langOptions.en-US")),1)]),_:1}),a(r,{value:"en-GB"},{default:i(()=>[p(c(e.t("speechSettings.webSpeech.langOptions.en-GB")),1)]),_:1}),a(r,{value:"ja-JP"},{default:i(()=>[p(c(e.t("speechSettings.webSpeech.langOptions.ja-JP")),1)]),_:1}),a(r,{value:"ko-KR"},{default:i(()=>[p(c(e.t("speechSettings.webSpeech.langOptions.ko-KR")),1)]),_:1})]),_:1},8,["value","disabled"])]),_:1},8,["label"])]),_:1})]),_:1})):C("v-if",!0),e.form.defaultEngine==="whisper-api"?(O(),z(m,{key:1,style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{title:i(()=>[b("span",se,c(e.t("speechSettings.whisperAPI.cardTitle")),1)]),default:i(()=>[a(_,{"label-col":{span:6},"wrapper-col":{span:18},style:{"max-width":"720px"}},{default:i(()=>[a(f,{label:e.t("speechSettings.whisperAPI.apiKeyLabel")},{default:i(()=>[a(N,{value:e.form.whisperAPI.apiKey,"onUpdate:value":t[2]||(t[2]=n=>e.form.whisperAPI.apiKey=n),placeholder:"sk-...",disabled:e.saving},null,8,["value","disabled"])]),_:1},8,["label"]),a(f,{label:e.t("speechSettings.whisperAPI.baseUrlLabel")},{default:i(()=>[a(L,{value:e.form.whisperAPI.baseURL,"onUpdate:value":t[3]||(t[3]=n=>e.form.whisperAPI.baseURL=n),disabled:e.saving},null,8,["value","disabled"])]),_:1},8,["label"]),a(f,{label:e.t("speechSettings.whisperAPI.modelLabel")},{default:i(()=>[a(L,{value:e.form.whisperAPI.model,"onUpdate:value":t[4]||(t[4]=n=>e.form.whisperAPI.model=n),disabled:e.saving},null,8,["value","disabled"])]),_:1},8,["label"]),a(f,{label:e.t("speechSettings.whisperAPI.languageLabel")},{default:i(()=>[a(L,{value:e.form.whisperAPI.language,"onUpdate:value":t[5]||(t[5]=n=>e.form.whisperAPI.language=n),disabled:e.saving},null,8,["value","disabled"])]),_:1},8,["label"]),a(f,{label:e.t("speechSettings.whisperAPI.timeoutLabel")},{default:i(()=>[a(x,{value:e.form.whisperAPI.timeout,"onUpdate:value":t[6]||(t[6]=n=>e.form.whisperAPI.timeout=n),min:1e3,max:6e5,step:1e3,style:{width:"200px"},disabled:e.saving},null,8,["value","disabled"])]),_:1},8,["label"])]),_:1})]),_:1})):C("v-if",!0),e.form.defaultEngine==="whisper-local"?(O(),z(m,{key:2,style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{title:i(()=>[b("span",oe,c(e.t("speechSettings.whisperLocal.cardTitle")),1)]),default:i(()=>[a(_,{"label-col":{span:6},"wrapper-col":{span:18},style:{"max-width":"720px"}},{default:i(()=>[a(f,{label:e.t("speechSettings.whisperLocal.serverUrlLabel")},{default:i(()=>[a(L,{value:e.form.whisperLocal.serverUrl,"onUpdate:value":t[7]||(t[7]=n=>e.form.whisperLocal.serverUrl=n),placeholder:"http://localhost:8002",disabled:e.saving},null,8,["value","disabled"])]),_:1},8,["label"]),a(f,{label:e.t("speechSettings.whisperLocal.modelSizeLabel")},{default:i(()=>[a(y,{value:e.form.whisperLocal.modelSize,"onUpdate:value":t[8]||(t[8]=n=>e.form.whisperLocal.modelSize=n),style:{width:"180px"},disabled:e.saving},{default:i(()=>[a(r,{value:"tiny"},{default:i(()=>[...t[11]||(t[11]=[p("tiny",-1)])]),_:1}),a(r,{value:"base"},{default:i(()=>[...t[12]||(t[12]=[p("base",-1)])]),_:1}),a(r,{value:"small"},{default:i(()=>[...t[13]||(t[13]=[p("small",-1)])]),_:1}),a(r,{value:"medium"},{default:i(()=>[...t[14]||(t[14]=[p("medium",-1)])]),_:1}),a(r,{value:"large"},{default:i(()=>[...t[15]||(t[15]=[p("large",-1)])]),_:1})]),_:1},8,["value","disabled"])]),_:1},8,["label"]),a(f,{label:e.t("speechSettings.whisperLocal.deviceLabel")},{default:i(()=>[a(y,{value:e.form.whisperLocal.device,"onUpdate:value":t[9]||(t[9]=n=>e.form.whisperLocal.device=n),style:{width:"180px"},disabled:e.saving},{default:i(()=>[a(r,{value:"auto"},{default:i(()=>[...t[16]||(t[16]=[p("auto",-1)])]),_:1}),a(r,{value:"cpu"},{default:i(()=>[...t[17]||(t[17]=[p("cpu",-1)])]),_:1}),a(r,{value:"cuda"},{default:i(()=>[...t[18]||(t[18]=[p("cuda",-1)])]),_:1})]),_:1},8,["value","disabled"])]),_:1},8,["label"]),a(f,{label:e.t("speechSettings.whisperLocal.timeoutLabel")},{default:i(()=>[a(x,{value:e.form.whisperLocal.timeout,"onUpdate:value":t[10]||(t[10]=n=>e.form.whisperLocal.timeout=n),min:1e3,max:6e5,step:1e3,style:{width:"200px"},disabled:e.saving},null,8,["value","disabled"])]),_:1},8,["label"])]),_:1})]),_:1})):C("v-if",!0),b("div",re,[a(o,{onClick:e.resetForm,disabled:e.saving||e.loading},{default:i(()=>[p(c(e.t("speechSettings.buttons.reset")),1)]),_:1},8,["disabled"]),a(o,{type:"primary",loading:e.saving,disabled:!e.isDirty,onClick:e.saveConfig},{default:i(()=>[p(c(e.t("speechSettings.buttons.save")),1)]),_:1},8,["loading","disabled"]),e.isDirty?(O(),j("span",de,c(e.t("speechSettings.dirtyHint")),1)):C("v-if",!0)])]),_:1},8,["spinning"])])}const ue=Q($,[["render",pe],["__scopeId","data-v-2b18ccaa"],["__file","/tmp/cc-web-panel-50dnka/repo/packages/web-panel/src/views/SpeechSettings.vue"]]);export{ue as default};
|
|
1
|
+
import{I as u,J as j,U as b,R as c,c as a,K as i,a as R,r as k,o as F,b as E,P as O,Q as p,S as z,V as C}from"./vendor-BvqAck49.js";import{t as M,_ as Q,b as K,u as T,d as S}from"./index-DDBuc-Id.js";import{i as q,R as X}from"./icons-DP3uiYxy.js";const v=Object.freeze({defaultEngine:"webspeech",webSpeech:{lang:"zh-CN"},whisperAPI:{apiKey:"",baseURL:"https://api.openai.com/v1",model:"whisper-1",language:"zh",timeout:6e4},whisperLocal:{serverUrl:"http://localhost:8002",modelSize:"base",device:"auto",timeout:12e4}}),Y=["webspeech","whisper-api","whisper-local"];function B(g,t){if(typeof g=="number"&&Number.isFinite(g))return g;const s=parseFloat(g);return Number.isFinite(s)?s:t}function Z(g){return JSON.parse(JSON.stringify(g))}function D(g){const t=Z(v);if(!g)return t;const s=g.trim();if(!s||/key not found/i.test(s))return t;const e=M(s);if(!e||typeof e!="object"||Array.isArray(e))return t;if(typeof e.defaultEngine=="string"&&Y.includes(e.defaultEngine)&&(t.defaultEngine=e.defaultEngine),e.webSpeech&&typeof e.webSpeech=="object"&&typeof e.webSpeech.lang=="string"&&e.webSpeech.lang&&(t.webSpeech.lang=e.webSpeech.lang),e.whisperAPI&&typeof e.whisperAPI=="object"){const l=e.whisperAPI;typeof l.apiKey=="string"&&(t.whisperAPI.apiKey=l.apiKey),typeof l.baseURL=="string"&&l.baseURL&&(t.whisperAPI.baseURL=l.baseURL),typeof l.model=="string"&&l.model&&(t.whisperAPI.model=l.model),typeof l.language=="string"&&l.language&&(t.whisperAPI.language=l.language),l.timeout!==void 0&&(t.whisperAPI.timeout=B(l.timeout,v.whisperAPI.timeout))}if(e.whisperLocal&&typeof e.whisperLocal=="object"){const l=e.whisperLocal;typeof l.serverUrl=="string"&&l.serverUrl&&(t.whisperLocal.serverUrl=l.serverUrl),typeof l.modelSize=="string"&&l.modelSize&&(t.whisperLocal.modelSize=l.modelSize),typeof l.device=="string"&&l.device&&(t.whisperLocal.device=l.device),l.timeout!==void 0&&(t.whisperLocal.timeout=B(l.timeout,v.whisperLocal.timeout))}return t}function J(g,t){const s={};g.defaultEngine!==t.defaultEngine&&(s.defaultEngine=t.defaultEngine);for(const e of["webSpeech","whisperAPI","whisperLocal"]){const l=g[e]||{},w=t[e]||{};for(const o of Object.keys(v[e]))l[o]!==w[o]&&(s[`${e}.${o}`]=w[o])}return s}const $={__name:"SpeechSettings",setup(g,{expose:t}){t();const{t:s}=K(),e=T(),l=k(!1),w=k(!1),o=R(JSON.parse(JSON.stringify(v))),h=k(JSON.parse(JSON.stringify(v))),y=E(()=>[{value:"webspeech",label:s("speechSettings.engineOptions.webspeech")},{value:"whisper-api",label:s("speechSettings.engineOptions.whisper-api")},{value:"whisper-local",label:s("speechSettings.engineOptions.whisper-local")}]),f=E(()=>{const d=`speechSettings.engineHint.${o.defaultEngine}`,n=s(d);return n===d?"":n}),_=E(()=>Object.keys(J(h.value,o)).length>0);function m(d){o.defaultEngine=d.defaultEngine,Object.assign(o.webSpeech,d.webSpeech),Object.assign(o.whisperAPI,d.whisperAPI),Object.assign(o.whisperLocal,d.whisperLocal),h.value=JSON.parse(JSON.stringify(d))}async function r(){l.value=!0;try{const{output:d}=await e.execute("config get speech",1e4);m(D(d))}catch(d){/key not found/i.test(d.message)?m(JSON.parse(JSON.stringify(v))):S.error(s("speechSettings.messages.loadFailed",{err:d.message}))}finally{l.value=!1}}function N(){m(h.value)}async function x(){const d=J(h.value,o),n=Object.keys(d);if(n.length===0){S.info(s("speechSettings.messages.noChanges"));return}w.value=!0;let P=0,I=0;for(const A of n){const H=d[A],V=String(H).replace(/"/g,'\\"'),W=`config set speech.${A} "${V}"`;try{const{output:U,exitCode:G}=await e.execute(W,1e4);G!==0||/error|failed|失败/i.test(U)?(I++,S.error(s("speechSettings.messages.saveItemFailed",{key:A,err:U.slice(0,80)}))):P++}catch(U){I++,S.error(s("speechSettings.messages.saveItemFailed",{key:A,err:U.message}))}}w.value=!1,I===0?(S.success(s("speechSettings.messages.saveOk",{count:P})),h.value=JSON.parse(JSON.stringify(o))):P>0&&(S.warning(s("speechSettings.messages.savePartial",{ok:P,fail:I})),await r())}F(()=>{r()});const L={t:s,ws:e,loading:l,saving:w,form:o,baseline:h,engineOptions:y,engineHint:f,isDirty:_,applyConfig:m,loadConfig:r,resetForm:N,saveConfig:x,reactive:R,ref:k,computed:E,onMounted:F,get useI18n(){return K},get ReloadOutlined(){return X},get SoundOutlined(){return q},get message(){return S},get useWsStore(){return T},get parseSpeechConfig(){return D},get diffSpeechConfig(){return J},get SPEECH_DEFAULTS(){return v}};return Object.defineProperty(L,"__isScriptSetup",{enumerable:!1,value:!0}),L}},ee={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},te={class:"page-title"},ae={class:"page-sub"},ie={style:{color:"var(--text-primary)"}},le={style:{color:"var(--text-muted)","font-size":"11px"}},ne={style:{color:"var(--text-primary)"}},se={style:{color:"var(--text-primary)"}},oe={style:{color:"var(--text-primary)"}},re={style:{display:"flex",gap:"12px","align-items":"center"}},de={key:0,style:{color:"#faad14","font-size":"12px"}};function pe(g,t,s,e,l,w){const o=u("a-button"),h=u("a-alert"),y=u("a-select"),f=u("a-form-item"),_=u("a-form"),m=u("a-card"),r=u("a-select-option"),N=u("a-input-password"),x=u("a-input"),L=u("a-input-number"),d=u("a-spin");return O(),j("div",null,[b("div",ee,[b("div",null,[b("h2",te,c(e.t("speechSettings.title")),1),b("p",ae,c(e.t("speechSettings.subtitle")),1)]),a(o,{loading:e.loading,onClick:e.loadConfig},{icon:i(()=>[a(e.ReloadOutlined)]),default:i(()=>[p(" "+c(e.t("speechSettings.refresh")),1)]),_:1},8,["loading"])]),a(h,{message:e.t("speechSettings.alert.message"),description:e.t("speechSettings.alert.description"),type:"info","show-icon":"",closable:"",style:{"margin-bottom":"16px"}},null,8,["message","description"]),a(d,{spinning:e.loading},{default:i(()=>[a(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{title:i(()=>[b("span",ie,[a(e.SoundOutlined,{style:{"margin-right":"8px"}}),p(c(e.t("speechSettings.engineCardTitle")),1)])]),default:i(()=>[a(_,{"label-col":{span:6},"wrapper-col":{span:18},style:{"max-width":"720px"}},{default:i(()=>[a(f,{label:e.t("speechSettings.engineLabel")},{extra:i(()=>[b("span",le,c(e.engineHint),1)]),default:i(()=>[a(y,{value:e.form.defaultEngine,"onUpdate:value":t[0]||(t[0]=n=>e.form.defaultEngine=n),style:{width:"320px"},disabled:e.saving,options:e.engineOptions},null,8,["value","disabled","options"])]),_:1},8,["label"])]),_:1})]),_:1}),e.form.defaultEngine==="webspeech"?(O(),z(m,{key:0,style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{title:i(()=>[b("span",ne,c(e.t("speechSettings.webSpeech.cardTitle")),1)]),default:i(()=>[a(_,{"label-col":{span:6},"wrapper-col":{span:18},style:{"max-width":"720px"}},{default:i(()=>[a(f,{label:e.t("speechSettings.webSpeech.langLabel")},{default:i(()=>[a(y,{value:e.form.webSpeech.lang,"onUpdate:value":t[1]||(t[1]=n=>e.form.webSpeech.lang=n),style:{width:"240px"},disabled:e.saving},{default:i(()=>[a(r,{value:"zh-CN"},{default:i(()=>[p(c(e.t("speechSettings.webSpeech.langOptions.zh-CN")),1)]),_:1}),a(r,{value:"zh-TW"},{default:i(()=>[p(c(e.t("speechSettings.webSpeech.langOptions.zh-TW")),1)]),_:1}),a(r,{value:"en-US"},{default:i(()=>[p(c(e.t("speechSettings.webSpeech.langOptions.en-US")),1)]),_:1}),a(r,{value:"en-GB"},{default:i(()=>[p(c(e.t("speechSettings.webSpeech.langOptions.en-GB")),1)]),_:1}),a(r,{value:"ja-JP"},{default:i(()=>[p(c(e.t("speechSettings.webSpeech.langOptions.ja-JP")),1)]),_:1}),a(r,{value:"ko-KR"},{default:i(()=>[p(c(e.t("speechSettings.webSpeech.langOptions.ko-KR")),1)]),_:1})]),_:1},8,["value","disabled"])]),_:1},8,["label"])]),_:1})]),_:1})):C("v-if",!0),e.form.defaultEngine==="whisper-api"?(O(),z(m,{key:1,style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{title:i(()=>[b("span",se,c(e.t("speechSettings.whisperAPI.cardTitle")),1)]),default:i(()=>[a(_,{"label-col":{span:6},"wrapper-col":{span:18},style:{"max-width":"720px"}},{default:i(()=>[a(f,{label:e.t("speechSettings.whisperAPI.apiKeyLabel")},{default:i(()=>[a(N,{value:e.form.whisperAPI.apiKey,"onUpdate:value":t[2]||(t[2]=n=>e.form.whisperAPI.apiKey=n),placeholder:"sk-...",disabled:e.saving},null,8,["value","disabled"])]),_:1},8,["label"]),a(f,{label:e.t("speechSettings.whisperAPI.baseUrlLabel")},{default:i(()=>[a(x,{value:e.form.whisperAPI.baseURL,"onUpdate:value":t[3]||(t[3]=n=>e.form.whisperAPI.baseURL=n),disabled:e.saving},null,8,["value","disabled"])]),_:1},8,["label"]),a(f,{label:e.t("speechSettings.whisperAPI.modelLabel")},{default:i(()=>[a(x,{value:e.form.whisperAPI.model,"onUpdate:value":t[4]||(t[4]=n=>e.form.whisperAPI.model=n),disabled:e.saving},null,8,["value","disabled"])]),_:1},8,["label"]),a(f,{label:e.t("speechSettings.whisperAPI.languageLabel")},{default:i(()=>[a(x,{value:e.form.whisperAPI.language,"onUpdate:value":t[5]||(t[5]=n=>e.form.whisperAPI.language=n),disabled:e.saving},null,8,["value","disabled"])]),_:1},8,["label"]),a(f,{label:e.t("speechSettings.whisperAPI.timeoutLabel")},{default:i(()=>[a(L,{value:e.form.whisperAPI.timeout,"onUpdate:value":t[6]||(t[6]=n=>e.form.whisperAPI.timeout=n),min:1e3,max:6e5,step:1e3,style:{width:"200px"},disabled:e.saving},null,8,["value","disabled"])]),_:1},8,["label"])]),_:1})]),_:1})):C("v-if",!0),e.form.defaultEngine==="whisper-local"?(O(),z(m,{key:2,style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{title:i(()=>[b("span",oe,c(e.t("speechSettings.whisperLocal.cardTitle")),1)]),default:i(()=>[a(_,{"label-col":{span:6},"wrapper-col":{span:18},style:{"max-width":"720px"}},{default:i(()=>[a(f,{label:e.t("speechSettings.whisperLocal.serverUrlLabel")},{default:i(()=>[a(x,{value:e.form.whisperLocal.serverUrl,"onUpdate:value":t[7]||(t[7]=n=>e.form.whisperLocal.serverUrl=n),placeholder:"http://localhost:8002",disabled:e.saving},null,8,["value","disabled"])]),_:1},8,["label"]),a(f,{label:e.t("speechSettings.whisperLocal.modelSizeLabel")},{default:i(()=>[a(y,{value:e.form.whisperLocal.modelSize,"onUpdate:value":t[8]||(t[8]=n=>e.form.whisperLocal.modelSize=n),style:{width:"180px"},disabled:e.saving},{default:i(()=>[a(r,{value:"tiny"},{default:i(()=>[...t[11]||(t[11]=[p("tiny",-1)])]),_:1}),a(r,{value:"base"},{default:i(()=>[...t[12]||(t[12]=[p("base",-1)])]),_:1}),a(r,{value:"small"},{default:i(()=>[...t[13]||(t[13]=[p("small",-1)])]),_:1}),a(r,{value:"medium"},{default:i(()=>[...t[14]||(t[14]=[p("medium",-1)])]),_:1}),a(r,{value:"large"},{default:i(()=>[...t[15]||(t[15]=[p("large",-1)])]),_:1})]),_:1},8,["value","disabled"])]),_:1},8,["label"]),a(f,{label:e.t("speechSettings.whisperLocal.deviceLabel")},{default:i(()=>[a(y,{value:e.form.whisperLocal.device,"onUpdate:value":t[9]||(t[9]=n=>e.form.whisperLocal.device=n),style:{width:"180px"},disabled:e.saving},{default:i(()=>[a(r,{value:"auto"},{default:i(()=>[...t[16]||(t[16]=[p("auto",-1)])]),_:1}),a(r,{value:"cpu"},{default:i(()=>[...t[17]||(t[17]=[p("cpu",-1)])]),_:1}),a(r,{value:"cuda"},{default:i(()=>[...t[18]||(t[18]=[p("cuda",-1)])]),_:1})]),_:1},8,["value","disabled"])]),_:1},8,["label"]),a(f,{label:e.t("speechSettings.whisperLocal.timeoutLabel")},{default:i(()=>[a(L,{value:e.form.whisperLocal.timeout,"onUpdate:value":t[10]||(t[10]=n=>e.form.whisperLocal.timeout=n),min:1e3,max:6e5,step:1e3,style:{width:"200px"},disabled:e.saving},null,8,["value","disabled"])]),_:1},8,["label"])]),_:1})]),_:1})):C("v-if",!0),b("div",re,[a(o,{onClick:e.resetForm,disabled:e.saving||e.loading},{default:i(()=>[p(c(e.t("speechSettings.buttons.reset")),1)]),_:1},8,["disabled"]),a(o,{type:"primary",loading:e.saving,disabled:!e.isDirty,onClick:e.saveConfig},{default:i(()=>[p(c(e.t("speechSettings.buttons.save")),1)]),_:1},8,["loading","disabled"]),e.isDirty?(O(),j("span",de,c(e.t("speechSettings.dirtyHint")),1)):C("v-if",!0)])]),_:1},8,["spinning"])])}const ue=Q($,[["render",pe],["__scopeId","data-v-2b18ccaa"],["__file","/tmp/cc-web-panel-wxwyEA/repo/packages/web-panel/src/views/SpeechSettings.vue"]]);export{ue as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{I as f,J as C,U as p,c as a,K as o,V as b,S as P,o as Q,b as G,a as q,r as k,P as u,Q as g,R as x}from"./vendor-BvqAck49.js";import{_ as te,u as X,d as i}from"./index-
|
|
2
|
-
WebDAV 已在下面单独段独立支持,由 web-shell 的 sync.webdav.* WS topic 直连主进程)`),a(N,{type:"info","show-icon":"",message:"本页 status / push / pull 通过 web-shell sync.* WS topic 直连 main 进程;WebDAV 在下方独立段",description:"其它 provider(Git / P2P / S3 等)的细粒度配置仍在 V5/V6 桌面 shell。",style:{"margin-bottom":"16px"}}),b(" WebDAV 同步段 (Phase 3c.4 — web-shell parity) "),a(L,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{title:o(()=>[a(_,null,{default:o(()=>[a(e.CloudSyncOutlined),r[14]||(r[14]=p("span",null,"WebDAV 网盘同步",-1))]),_:1})]),extra:o(()=>[e.webdav.configured?(u(),P(R,{key:0,color:e.webdavStatusColor},{default:o(()=>[g(x(e.webdavStatusLabel),1)]),_:1},8,["color"])):(u(),P(R,{key:1,color:"default"},{default:o(()=>[...r[15]||(r[15]=[g("未配置",-1)])]),_:1}))]),default:o(()=>[a(U,{model:e.webdav.form,layout:"vertical",disabled:e.webdav.busy},{default:o(()=>[a(m,{label:"服务器 URL",required:""},{default:o(()=>[a(h,{value:e.webdav.form.url,"onUpdate:value":r[0]||(r[0]=s=>e.webdav.form.url=s),placeholder:"https://dav.jianguoyun.com/dav/","allow-clear":""},null,8,["value"])]),_:1}),a(S,{gutter:16},{default:o(()=>[a(y,{xs:24,sm:12},{default:o(()=>[a(m,{label:"用户名"},{default:o(()=>[a(h,{value:e.webdav.form.username,"onUpdate:value":r[1]||(r[1]=s=>e.webdav.form.username=s),placeholder:"user@example.com","allow-clear":""},null,8,["value"])]),_:1})]),_:1}),a(y,{xs:24,sm:12},{default:o(()=>[a(m,{label:"密码"},{default:o(()=>[a(A,{value:e.webdav.form.password,"onUpdate:value":r[2]||(r[2]=s=>e.webdav.form.password=s),placeholder:e.webdav.configured?e.webdav.maskedPassword||"(已保存,留空保持不变)":"请输入密码",autocomplete:"new-password"},null,8,["value","placeholder"])]),_:1})]),_:1})]),_:1}),a(m,{label:"远端路径"},{default:o(()=>[a(h,{value:e.webdav.form.remotePath,"onUpdate:value":r[3]||(r[3]=s=>e.webdav.form.remotePath=s),placeholder:"/chainlesschain","allow-clear":""},null,8,["value"])]),_:1}),a(_,{wrap:""},{default:o(()=>[a(w,{type:"primary",loading:e.webdav.saving,onClick:e.webdavSave},{default:o(()=>[...r[16]||(r[16]=[g("保存",-1)])]),_:1},8,["loading"]),a(w,{loading:e.webdav.testing,onClick:e.webdavTest},{default:o(()=>[...r[17]||(r[17]=[g("测试连接",-1)])]),_:1},8,["loading"]),a(w,{type:"primary",loading:e.webdav.running,disabled:!e.webdav.configured,onClick:e.webdavRun},{icon:o(()=>[a(e.CloudUploadOutlined)]),default:o(()=>[r[18]||(r[18]=g(" 立即同步 ",-1))]),_:1},8,["loading","disabled"]),e.webdav.configured?(u(),P(E,{key:0,title:"确定要清除 WebDAV 凭证吗?已推送到远端的文件不会被删除。","ok-text":"清除","cancel-text":"取消",onConfirm:e.webdavClear},{default:o(()=>[a(w,{danger:""},{default:o(()=>[...r[19]||(r[19]=[g("断开连接",-1)])]),_:1})]),_:1})):b("v-if",!0)]),_:1})]),_:1},8,["model","disabled"]),e.webdav.status?(u(),C("div",ue,[a(T,{column:2,size:"small",bordered:""},{default:o(()=>[a(O,{label:"上次同步"},{default:o(()=>[e.webdav.status.lastSyncAt?(u(),C("span",fe,x(e.formatTime(e.webdav.status.lastSyncAt)),1)):(u(),C("span",me,"未同步过"))]),_:1}),a(O,{label:"耗时"},{default:o(()=>[e.webdav.status.lastRunDurationMs!=null?(u(),C("span",ge,x(e.webdav.status.lastRunDurationMs)+" ms",1)):(u(),C("span",ye,"—"))]),_:1}),a(O,{label:"累积推送",span:2},{default:o(()=>[r[20]||(r[20]=g(" 已推送 ",-1)),p("b",null,x(e.webdav.status.itemsPushed),1),r[21]||(r[21]=g(" · 已跳过 ",-1)),p("b",null,x(e.webdav.status.itemsSkipped),1),r[22]||(r[22]=g(" · 已删除 ",-1)),p("b",null,x(e.webdav.status.itemsDeleted),1)]),_:1}),e.webdav.status.lastRunError?(u(),P(O,{key:0,label:"错误",span:2},{default:o(()=>[p("span",ve,x(e.webdav.status.lastRunError),1)]),_:1})):b("v-if",!0)]),_:1})])):b("v-if",!0)]),_:1}),b(" Git 仓库配置段 (Phase 3c.5) "),a(L,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{title:o(()=>[a(_,null,{default:o(()=>[a(e.BranchesOutlined),r[23]||(r[23]=p("span",null,"Git 仓库",-1))]),_:1})]),extra:o(()=>[a(R,{color:e.gitcfg.configured&&e.gitcfg.form.enabled?"green":"default"},{default:o(()=>[g(x(e.gitcfg.configured?e.gitcfg.form.enabled?"已启用":"已配置未启用":"未配置"),1)]),_:1},8,["color"])]),default:o(()=>[a(U,{model:e.gitcfg.form,layout:"vertical",disabled:e.gitcfg.saving},{default:o(()=>[a(S,{gutter:16},{default:o(()=>[a(y,{xs:24,sm:12},{default:o(()=>[a(m,{label:"启用 Git 同步"},{default:o(()=>[a(z,{checked:e.gitcfg.form.enabled,"onUpdate:checked":r[4]||(r[4]=s=>e.gitcfg.form.enabled=s)},null,8,["checked"])]),_:1})]),_:1}),a(y,{xs:24,sm:12},{default:o(()=>[a(m,{label:"自动同步"},{default:o(()=>[a(z,{checked:e.gitcfg.form.autoSync,"onUpdate:checked":r[5]||(r[5]=s=>e.gitcfg.form.autoSync=s)},null,8,["checked"])]),_:1})]),_:1})]),_:1}),a(m,{label:"远程仓库 URL"},{default:o(()=>[a(h,{value:e.gitcfg.form.remoteUrl,"onUpdate:value":r[6]||(r[6]=s=>e.gitcfg.form.remoteUrl=s),placeholder:"https://github.com/user/repo.git","allow-clear":""},null,8,["value"])]),_:1}),a(m,{label:"本地仓库路径"},{default:o(()=>[a(h,{value:e.gitcfg.form.repoPath,"onUpdate:value":r[7]||(r[7]=s=>e.gitcfg.form.repoPath=s),placeholder:"留空使用默认 (userData/git-repo)","allow-clear":""},null,8,["value"])]),_:1}),a(S,{gutter:16},{default:o(()=>[a(y,{xs:24,sm:12},{default:o(()=>[a(m,{label:"作者名"},{default:o(()=>[a(h,{value:e.gitcfg.form.authorName,"onUpdate:value":r[8]||(r[8]=s=>e.gitcfg.form.authorName=s),placeholder:"ChainlessChain User","allow-clear":""},null,8,["value"])]),_:1})]),_:1}),a(y,{xs:24,sm:12},{default:o(()=>[a(m,{label:"作者邮箱"},{default:o(()=>[a(h,{value:e.gitcfg.form.authorEmail,"onUpdate:value":r[9]||(r[9]=s=>e.gitcfg.form.authorEmail=s),placeholder:"user@chainlesschain.com","allow-clear":""},null,8,["value"])]),_:1})]),_:1})]),_:1}),a(S,{gutter:16},{default:o(()=>[a(y,{xs:24,sm:12},{default:o(()=>[a(m,{label:"用户名"},{default:o(()=>[a(h,{value:e.gitcfg.form.username,"onUpdate:value":r[10]||(r[10]=s=>e.gitcfg.form.username=s),placeholder:"GitHub 用户名 / 邮箱","allow-clear":""},null,8,["value"])]),_:1})]),_:1}),a(y,{xs:24,sm:12},{default:o(()=>[a(m,{label:"密码 / Token",help:e.gitcfg.configured&&!e.gitcfg.form.password?"留空则沿用已保存的值":""},{default:o(()=>[a(A,{value:e.gitcfg.form.password,"onUpdate:value":r[11]||(r[11]=s=>e.gitcfg.form.password=s),placeholder:e.gitcfg.configured?e.gitcfg.maskedPassword||"(已保存,留空保持不变)":"Personal Access Token 或密码",autocomplete:"new-password"},null,8,["value","placeholder"])]),_:1},8,["help"])]),_:1})]),_:1}),a(N,{type:"warning","show-icon":"",message:"Git 凭证当前以明文存储在 git-config.json — 建议使用 Personal Access Token 而非账号密码,且 token 范围尽量收敛 (repo 即可)。",style:{"margin-bottom":"16px"}}),a(_,{wrap:""},{default:o(()=>[a(w,{type:"primary",loading:e.gitcfg.saving,onClick:e.gitConfigSave},{default:o(()=>[...r[24]||(r[24]=[g("保存",-1)])]),_:1},8,["loading"]),e.gitcfg.configured?(u(),P(E,{key:0,title:"确定要清除 Git 凭证吗?远程仓库 URL / 路径会保留。","ok-text":"清除","cancel-text":"取消",onConfirm:e.gitConfigClear},{default:o(()=>[a(w,{danger:""},{default:o(()=>[...r[25]||(r[25]=[g("清除凭证",-1)])]),_:1})]),_:1})):b("v-if",!0)]),_:1})]),_:1},8,["model","disabled"])]),_:1}),b(" 状态卡片 "),a(L,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{title:o(()=>[a(_,null,{default:o(()=>[a(e.CloudSyncOutlined),r[26]||(r[26]=p("span",null,"同步状态",-1))]),_:1})]),extra:o(()=>[a(R,{color:e.conflicts>0?"red":e.synced>0?"green":"default"},{default:o(()=>[g(x(e.conflicts>0?`${e.conflicts} 个冲突`:e.totalResources===0?"无资源":"正常"),1)]),_:1},8,["color"])]),default:o(()=>[e.statusLoading?(u(),C("div",pe,[a(n)])):(u(),P(S,{key:1,gutter:[16,16]},{default:o(()=>[a(y,{xs:12,sm:6},{default:o(()=>[a(D,{title:"资源总数",value:e.totalResources,"value-style":{fontSize:"20px"}},null,8,["value"])]),_:1}),a(y,{xs:12,sm:6},{default:o(()=>[a(D,{title:"待同步",value:e.pending,"value-style":{color:e.pending>0?"#faad14":"#888",fontSize:"20px"}},null,8,["value","value-style"])]),_:1}),a(y,{xs:12,sm:6},{default:o(()=>[a(D,{title:"已同步",value:e.synced,"value-style":{color:e.synced>0?"#52c41a":"#888",fontSize:"20px"}},null,8,["value","value-style"])]),_:1}),a(y,{xs:12,sm:6},{default:o(()=>[a(D,{title:"冲突",value:e.conflicts,"value-style":{color:e.conflicts>0?"#ff4d4f":"#888",fontSize:"20px"}},null,8,["value","value-style"])]),_:1})]),_:1})),e.statusError?(u(),C("div",we,x(e.statusError),1)):b("v-if",!0)]),_:1}),b(" 操作 "),a(L,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{title:o(()=>[a(_,null,{default:o(()=>[a(e.CloudUploadOutlined),r[27]||(r[27]=p("span",null,"同步操作",-1))]),_:1})]),default:o(()=>[a(_,null,{default:o(()=>[a(w,{type:"primary",loading:e.pushLoading,onClick:e.doPush},{icon:o(()=>[a(e.CloudUploadOutlined)]),default:o(()=>[r[28]||(r[28]=g(" 推送本地变更 (push) ",-1))]),_:1},8,["loading"]),a(w,{loading:e.pullLoading,onClick:e.doPull},{icon:o(()=>[a(e.CloudDownloadOutlined)]),default:o(()=>[r[29]||(r[29]=g(" 拉取远程变更 (pull) ",-1))]),_:1},8,["loading"])]),_:1}),e.lastActionResult?(u(),C("div",be,[p("div",_e," 最近一次操作 ("+x(e.lastActionLabel)+") ",1),p("pre",ke,x(e.lastActionResult),1)])):b("v-if",!0)]),_:1}),b(" 冲突列表 "),e.conflicts>0?(u(),P(L,{key:0,style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{title:o(()=>[a(_,null,{default:o(()=>[a(e.WarningOutlined,{style:{color:"#ff4d4f"}}),r[30]||(r[30]=p("span",null,"待解决冲突",-1))]),_:1})]),default:o(()=>[e.conflictsLoading?(u(),C("div",he,[a(n)])):e.conflictList.length===0?(u(),P(B,{key:1,description:"没有详细冲突数据"})):(u(),P(j,{key:2,columns:e.conflictColumns,"data-source":e.conflictList,pagination:{pageSize:10},size:"small","row-key":"id"},{bodyCell:o(({column:s,record:W})=>[s.key==="action"?(u(),P(_,{key:0},{default:o(()=>[a(w,{size:"small",type:"link",onClick:J=>e.resolveOne(W.id,"local")},{default:o(()=>[...r[31]||(r[31]=[g("用本地版本",-1)])]),_:1},8,["onClick"]),a(w,{size:"small",type:"link",onClick:J=>e.resolveOne(W.id,"remote")},{default:o(()=>[...r[32]||(r[32]=[g("用远程版本",-1)])]),_:1},8,["onClick"])]),_:2},1024)):b("v-if",!0)]),_:1},8,["data-source"]))]),_:1})):b("v-if",!0)])}const Re=te(de,[["render",xe],["__scopeId","data-v-0e30ca29"],["__file","/tmp/cc-web-panel-50dnka/repo/packages/web-panel/src/views/SyncSettings.vue"]]);export{Re as default};
|
|
1
|
+
import{I as f,J as C,U as p,c as a,K as o,V as b,S as P,o as Q,b as G,a as q,r as k,P as u,Q as g,R as x}from"./vendor-BvqAck49.js";import{_ as te,u as X,d as i}from"./index-DDBuc-Id.js";import{a1 as oe,am as re,au as le,z as ne,av as se,R as ie}from"./icons-DP3uiYxy.js";const de={__name:"SyncSettings",setup(Y,{expose:r}){r();const v=X(),e=k(!1),V=k(""),I=k(0),w=k(0),N=k(0),_=k(0),R=k(!1),h=k(!1),m=k(""),y=k(""),A=k(!1),S=k([]),E=[{title:"ID",dataIndex:"id",key:"id",width:220,ellipsis:!0},{title:"资源 ID",dataIndex:"resource_id",key:"resource_id",ellipsis:!0},{title:"类型",dataIndex:"resource_type",key:"resource_type",width:120},{title:"操作",key:"action",width:200}];async function U(){e.value=!0,V.value="";try{const t=await v.sendRaw({type:"sync.status"},15e3),l=t?.result;if(!t?.ok||!l?.success)throw new Error(l?.error||t?.error||"获取失败");I.value=Number(l.totalResources??0),w.value=Number(l.pending??0),N.value=Number(l.synced??0),_.value=Number(l.conflicts??0),_.value>0?await O():S.value=[]}catch(t){V.value="获取状态失败:"+(t?.message||String(t))}finally{e.value=!1}}async function O(){A.value=!0;try{const t=await v.sendRaw({type:"sync.conflicts"},15e3),l=Array.isArray(t?.result?.conflicts)?t.result.conflicts:[];S.value=l}catch{S.value=[]}finally{A.value=!1}}async function T(){R.value=!0,y.value="sync.push";try{const t=await v.sendRaw({type:"sync.push"},6e4),l=t?.result;m.value=JSON.stringify(l,null,2),t?.ok&&l?.success?(i.success(`推送完成 (${l.pushed??0} / ${l.total??0})`),await U()):i.error("推送失败:"+(l?.error||t?.error||""))}catch(t){m.value=t?.message||String(t),i.error("推送失败:"+(t?.message||""))}finally{R.value=!1}}async function L(){h.value=!0,y.value="sync.pull";try{const t=await v.sendRaw({type:"sync.pull"},6e4),l=t?.result;m.value=JSON.stringify(l,null,2),t?.ok&&l?.success?(i.success(`拉取完成 (检查 ${l.checked??0}, 更新 ${l.updated??0})`),await U()):i.error("拉取失败:"+(l?.error||t?.error||""))}catch(t){m.value=t?.message||String(t),i.error("拉取失败:"+(t?.message||""))}finally{h.value=!1}}async function z(t,l){try{const c=await v.sendRaw({type:"sync.resolve",conflictId:t,side:l},3e4),K=c?.result;c?.ok&&K?.success?(i.success(`已用${l==="local"?"本地":"远程"}版本解决`),await U()):i.error("解决失败:"+(K?.error||c?.error||""))}catch(c){i.error("解决失败:"+(c?.message||""))}}const n=q({configured:!1,maskedPassword:"",form:{url:"",username:"",password:"",remotePath:"/chainlesschain"},status:null,saving:!1,testing:!1,running:!1,busy:G(()=>n.saving||n.testing||n.running)}),D=G(()=>{const t=n.status?.lastRunStatus;return t==="success"?"green":t==="conflict"?"orange":t==="failed"?"red":"default"}),B=G(()=>{const t=n.status?.lastRunStatus;return t?t==="success"?"成功":t==="conflict"?"有冲突跳过":t==="failed"?"失败":t:n.configured?"已配置":"未配置"});function j(t){const l=new Date(t);return`${l.toLocaleDateString()} ${l.toLocaleTimeString()}`}async function s(){try{const t=await v.sendRaw({type:"sync.webdav.config-get"},1e4);if(!t||t.ok===!1)return;const l=t.result?.data||{};n.form.url=l.url||"",n.form.username=l.username||"",n.form.remotePath=l.remotePath||"/chainlesschain",n.form.password="",n.maskedPassword=l.password||"",n.configured=!!l.configured,n.status=l.status||null}catch(t){console.warn("[SyncSettings] webdav.config-get failed:",t?.message)}}async function W(){n.saving=!0;try{const t=await v.sendRaw({type:"sync.webdav.config-set",payload:{url:n.form.url.trim(),username:n.form.username,password:n.form.password,remotePath:n.form.remotePath||"/"}},15e3),l=t?.result;t?.ok&&l?.success?(i.success("WebDAV 配置已保存"),n.form.password="",await s()):i.error("保存失败:"+(l?.error||t?.error||"未知错误"))}catch(t){i.error("保存失败:"+(t?.message||""))}finally{n.saving=!1}}async function J(){n.form.url&&n.form.password&&!n.configured&&await W(),n.testing=!0;try{const t=await v.sendRaw({type:"sync.webdav.test"},3e4),l=t?.result;t?.ok&&l?.success?i.success("WebDAV 连接成功"):i.error("连接失败:"+(l?.error||t?.error||"未知错误"))}catch(t){i.error("连接失败:"+(t?.message||""))}finally{n.testing=!1}}async function Z(){n.running=!0;try{const t=await v.sendRaw({type:"sync.webdav.run"},3e5),l=t?.result;if(t?.ok&&l?.success){const c=`推送 ${l.pushed} / 跳过 ${l.skipped} / 删除 ${l.deleted}`;l.status==="conflict"?i.warning("同步完成(有跳过):"+c):i.success("同步完成:"+c)}else i.error("同步失败:"+(l?.error||t?.error||"未知错误"));await s()}catch(t){i.error("同步失败:"+(t?.message||""))}finally{n.running=!1}}async function $(){try{const t=await v.sendRaw({type:"sync.webdav.config-clear"},5e3),l=t?.result;t?.ok&&l?.success?(i.success("已清除 WebDAV 凭证"),n.form.url="",n.form.username="",n.form.password="",n.form.remotePath="/chainlesschain",n.configured=!1,n.maskedPassword="",n.status=null):i.error("清除失败:"+(l?.error||t?.error||"未知错误"))}catch(t){i.error("清除失败:"+(t?.message||""))}}const d=q({configured:!1,maskedPassword:"",saving:!1,form:{enabled:!1,autoSync:!1,remoteUrl:"",repoPath:"",authorName:"",authorEmail:"",username:"",password:""}});async function M(){try{const t=await v.sendRaw({type:"git.config-get"},1e4);if(!t||t.ok===!1)return;const l=t.result;if(!l?.success)return;const c=l.data||{};d.form.enabled=!!c.enabled,d.form.autoSync=!!c.autoSync,d.form.remoteUrl=c.remoteUrl||"",d.form.repoPath=c.repoPath||"",d.form.authorName=c.authorName||"",d.form.authorEmail=c.authorEmail||"",d.form.username=c.auth?.username||"",d.form.password="",d.maskedPassword=c.auth?.password||c.auth?.token||"",d.configured=!!c.configured}catch(t){console.warn("[SyncSettings] git.config-get failed:",t?.message)}}async function ee(){d.saving=!0;try{const t={enabled:d.form.enabled,autoSync:d.form.autoSync,remoteUrl:d.form.remoteUrl.trim(),repoPath:d.form.repoPath.trim(),authorName:d.form.authorName,authorEmail:d.form.authorEmail,auth:{username:d.form.username,password:d.form.password}},l=await v.sendRaw({type:"git.config-set",payload:t},15e3),c=l?.result;l?.ok&&c?.success?(i.success("Git 配置已保存"),d.form.password="",await M()):i.error("保存失败:"+(c?.error||l?.error||"未知错误"))}catch(t){i.error("保存失败:"+(t?.message||""))}finally{d.saving=!1}}async function ae(){try{const t=await v.sendRaw({type:"git.config-clear"},5e3),l=t?.result;t?.ok&&l?.success?(i.success("已清除 Git 凭证"),d.form.username="",d.form.password="",d.form.enabled=!1,d.maskedPassword="",d.configured=!1):i.error("清除失败:"+(l?.error||t?.error||"未知错误"))}catch(t){i.error("清除失败:"+(t?.message||""))}}async function F(){await Promise.all([U(),s(),M()])}Q(F);const H={ws:v,statusLoading:e,statusError:V,totalResources:I,pending:w,synced:N,conflicts:_,pushLoading:R,pullLoading:h,lastActionResult:m,lastActionLabel:y,conflictsLoading:A,conflictList:S,conflictColumns:E,fetchStatus:U,fetchConflicts:O,doPush:T,doPull:L,resolveOne:z,webdav:n,webdavStatusColor:D,webdavStatusLabel:B,formatTime:j,webdavLoad:s,webdavSave:W,webdavTest:J,webdavRun:Z,webdavClear:$,gitcfg:d,gitConfigLoad:M,gitConfigSave:ee,gitConfigClear:ae,refreshAll:F,ref:k,reactive:q,computed:G,onMounted:Q,get message(){return i},get ReloadOutlined(){return ie},get CloudSyncOutlined(){return se},get CloudUploadOutlined(){return ne},get CloudDownloadOutlined(){return le},get WarningOutlined(){return re},get BranchesOutlined(){return oe},get useWsStore(){return X}};return Object.defineProperty(H,"__isScriptSetup",{enumerable:!1,value:!0}),H}},ce={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},ue={key:0,style:{"margin-top":"16px"}},fe={key:0},me={key:1,style:{color:"var(--text-secondary)"}},ge={key:0},ye={key:1,style:{color:"var(--text-secondary)"}},ve={style:{color:"#ff4d4f","word-break":"break-all"}},pe={key:0,style:{"text-align":"center",padding:"30px"}},we={key:2,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},be={key:0,style:{"margin-top":"16px"}},_e={style:{color:"var(--text-secondary)","font-size":"11px","margin-bottom":"6px"}},ke={style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px",color:"var(--text-primary)","font-size":"12px","max-height":"200px","overflow-y":"auto","white-space":"pre-wrap","font-family":"'Cascadia Code', 'Fira Code', Consolas, monospace"}},he={key:0,style:{"text-align":"center",padding:"30px"}};function xe(Y,r,v,e,V,I){const w=f("a-button"),N=f("a-alert"),_=f("a-space"),R=f("a-tag"),h=f("a-input"),m=f("a-form-item"),y=f("a-col"),A=f("a-input-password"),S=f("a-row"),E=f("a-popconfirm"),U=f("a-form"),O=f("a-descriptions-item"),T=f("a-descriptions"),L=f("a-card"),z=f("a-switch"),n=f("a-spin"),D=f("a-statistic"),B=f("a-empty"),j=f("a-table");return u(),C("div",null,[p("div",ce,[r[13]||(r[13]=p("div",null,[p("h2",{class:"page-title"},"同步设置"),p("p",{class:"page-sub"},"通过 web-shell sync.* WS topic 直连主进程同步引擎")],-1)),a(w,{type:"primary",ghost:"",loading:e.statusLoading,onClick:e.refreshAll},{icon:o(()=>[a(e.ReloadOutlined)]),default:o(()=>[r[12]||(r[12]=g(" 刷新 ",-1))]),_:1},8,["loading"])]),b(` 多 provider / WebDAV 提示(保留:本页 push/pull 仍是 cc CLI 桥;
|
|
2
|
+
WebDAV 已在下面单独段独立支持,由 web-shell 的 sync.webdav.* WS topic 直连主进程)`),a(N,{type:"info","show-icon":"",message:"本页 status / push / pull 通过 web-shell sync.* WS topic 直连 main 进程;WebDAV 在下方独立段",description:"其它 provider(Git / P2P / S3 等)的细粒度配置仍在 V5/V6 桌面 shell。",style:{"margin-bottom":"16px"}}),b(" WebDAV 同步段 (Phase 3c.4 — web-shell parity) "),a(L,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{title:o(()=>[a(_,null,{default:o(()=>[a(e.CloudSyncOutlined),r[14]||(r[14]=p("span",null,"WebDAV 网盘同步",-1))]),_:1})]),extra:o(()=>[e.webdav.configured?(u(),P(R,{key:0,color:e.webdavStatusColor},{default:o(()=>[g(x(e.webdavStatusLabel),1)]),_:1},8,["color"])):(u(),P(R,{key:1,color:"default"},{default:o(()=>[...r[15]||(r[15]=[g("未配置",-1)])]),_:1}))]),default:o(()=>[a(U,{model:e.webdav.form,layout:"vertical",disabled:e.webdav.busy},{default:o(()=>[a(m,{label:"服务器 URL",required:""},{default:o(()=>[a(h,{value:e.webdav.form.url,"onUpdate:value":r[0]||(r[0]=s=>e.webdav.form.url=s),placeholder:"https://dav.jianguoyun.com/dav/","allow-clear":""},null,8,["value"])]),_:1}),a(S,{gutter:16},{default:o(()=>[a(y,{xs:24,sm:12},{default:o(()=>[a(m,{label:"用户名"},{default:o(()=>[a(h,{value:e.webdav.form.username,"onUpdate:value":r[1]||(r[1]=s=>e.webdav.form.username=s),placeholder:"user@example.com","allow-clear":""},null,8,["value"])]),_:1})]),_:1}),a(y,{xs:24,sm:12},{default:o(()=>[a(m,{label:"密码"},{default:o(()=>[a(A,{value:e.webdav.form.password,"onUpdate:value":r[2]||(r[2]=s=>e.webdav.form.password=s),placeholder:e.webdav.configured?e.webdav.maskedPassword||"(已保存,留空保持不变)":"请输入密码",autocomplete:"new-password"},null,8,["value","placeholder"])]),_:1})]),_:1})]),_:1}),a(m,{label:"远端路径"},{default:o(()=>[a(h,{value:e.webdav.form.remotePath,"onUpdate:value":r[3]||(r[3]=s=>e.webdav.form.remotePath=s),placeholder:"/chainlesschain","allow-clear":""},null,8,["value"])]),_:1}),a(_,{wrap:""},{default:o(()=>[a(w,{type:"primary",loading:e.webdav.saving,onClick:e.webdavSave},{default:o(()=>[...r[16]||(r[16]=[g("保存",-1)])]),_:1},8,["loading"]),a(w,{loading:e.webdav.testing,onClick:e.webdavTest},{default:o(()=>[...r[17]||(r[17]=[g("测试连接",-1)])]),_:1},8,["loading"]),a(w,{type:"primary",loading:e.webdav.running,disabled:!e.webdav.configured,onClick:e.webdavRun},{icon:o(()=>[a(e.CloudUploadOutlined)]),default:o(()=>[r[18]||(r[18]=g(" 立即同步 ",-1))]),_:1},8,["loading","disabled"]),e.webdav.configured?(u(),P(E,{key:0,title:"确定要清除 WebDAV 凭证吗?已推送到远端的文件不会被删除。","ok-text":"清除","cancel-text":"取消",onConfirm:e.webdavClear},{default:o(()=>[a(w,{danger:""},{default:o(()=>[...r[19]||(r[19]=[g("断开连接",-1)])]),_:1})]),_:1})):b("v-if",!0)]),_:1})]),_:1},8,["model","disabled"]),e.webdav.status?(u(),C("div",ue,[a(T,{column:2,size:"small",bordered:""},{default:o(()=>[a(O,{label:"上次同步"},{default:o(()=>[e.webdav.status.lastSyncAt?(u(),C("span",fe,x(e.formatTime(e.webdav.status.lastSyncAt)),1)):(u(),C("span",me,"未同步过"))]),_:1}),a(O,{label:"耗时"},{default:o(()=>[e.webdav.status.lastRunDurationMs!=null?(u(),C("span",ge,x(e.webdav.status.lastRunDurationMs)+" ms",1)):(u(),C("span",ye,"—"))]),_:1}),a(O,{label:"累积推送",span:2},{default:o(()=>[r[20]||(r[20]=g(" 已推送 ",-1)),p("b",null,x(e.webdav.status.itemsPushed),1),r[21]||(r[21]=g(" · 已跳过 ",-1)),p("b",null,x(e.webdav.status.itemsSkipped),1),r[22]||(r[22]=g(" · 已删除 ",-1)),p("b",null,x(e.webdav.status.itemsDeleted),1)]),_:1}),e.webdav.status.lastRunError?(u(),P(O,{key:0,label:"错误",span:2},{default:o(()=>[p("span",ve,x(e.webdav.status.lastRunError),1)]),_:1})):b("v-if",!0)]),_:1})])):b("v-if",!0)]),_:1}),b(" Git 仓库配置段 (Phase 3c.5) "),a(L,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{title:o(()=>[a(_,null,{default:o(()=>[a(e.BranchesOutlined),r[23]||(r[23]=p("span",null,"Git 仓库",-1))]),_:1})]),extra:o(()=>[a(R,{color:e.gitcfg.configured&&e.gitcfg.form.enabled?"green":"default"},{default:o(()=>[g(x(e.gitcfg.configured?e.gitcfg.form.enabled?"已启用":"已配置未启用":"未配置"),1)]),_:1},8,["color"])]),default:o(()=>[a(U,{model:e.gitcfg.form,layout:"vertical",disabled:e.gitcfg.saving},{default:o(()=>[a(S,{gutter:16},{default:o(()=>[a(y,{xs:24,sm:12},{default:o(()=>[a(m,{label:"启用 Git 同步"},{default:o(()=>[a(z,{checked:e.gitcfg.form.enabled,"onUpdate:checked":r[4]||(r[4]=s=>e.gitcfg.form.enabled=s)},null,8,["checked"])]),_:1})]),_:1}),a(y,{xs:24,sm:12},{default:o(()=>[a(m,{label:"自动同步"},{default:o(()=>[a(z,{checked:e.gitcfg.form.autoSync,"onUpdate:checked":r[5]||(r[5]=s=>e.gitcfg.form.autoSync=s)},null,8,["checked"])]),_:1})]),_:1})]),_:1}),a(m,{label:"远程仓库 URL"},{default:o(()=>[a(h,{value:e.gitcfg.form.remoteUrl,"onUpdate:value":r[6]||(r[6]=s=>e.gitcfg.form.remoteUrl=s),placeholder:"https://github.com/user/repo.git","allow-clear":""},null,8,["value"])]),_:1}),a(m,{label:"本地仓库路径"},{default:o(()=>[a(h,{value:e.gitcfg.form.repoPath,"onUpdate:value":r[7]||(r[7]=s=>e.gitcfg.form.repoPath=s),placeholder:"留空使用默认 (userData/git-repo)","allow-clear":""},null,8,["value"])]),_:1}),a(S,{gutter:16},{default:o(()=>[a(y,{xs:24,sm:12},{default:o(()=>[a(m,{label:"作者名"},{default:o(()=>[a(h,{value:e.gitcfg.form.authorName,"onUpdate:value":r[8]||(r[8]=s=>e.gitcfg.form.authorName=s),placeholder:"ChainlessChain User","allow-clear":""},null,8,["value"])]),_:1})]),_:1}),a(y,{xs:24,sm:12},{default:o(()=>[a(m,{label:"作者邮箱"},{default:o(()=>[a(h,{value:e.gitcfg.form.authorEmail,"onUpdate:value":r[9]||(r[9]=s=>e.gitcfg.form.authorEmail=s),placeholder:"user@chainlesschain.com","allow-clear":""},null,8,["value"])]),_:1})]),_:1})]),_:1}),a(S,{gutter:16},{default:o(()=>[a(y,{xs:24,sm:12},{default:o(()=>[a(m,{label:"用户名"},{default:o(()=>[a(h,{value:e.gitcfg.form.username,"onUpdate:value":r[10]||(r[10]=s=>e.gitcfg.form.username=s),placeholder:"GitHub 用户名 / 邮箱","allow-clear":""},null,8,["value"])]),_:1})]),_:1}),a(y,{xs:24,sm:12},{default:o(()=>[a(m,{label:"密码 / Token",help:e.gitcfg.configured&&!e.gitcfg.form.password?"留空则沿用已保存的值":""},{default:o(()=>[a(A,{value:e.gitcfg.form.password,"onUpdate:value":r[11]||(r[11]=s=>e.gitcfg.form.password=s),placeholder:e.gitcfg.configured?e.gitcfg.maskedPassword||"(已保存,留空保持不变)":"Personal Access Token 或密码",autocomplete:"new-password"},null,8,["value","placeholder"])]),_:1},8,["help"])]),_:1})]),_:1}),a(N,{type:"warning","show-icon":"",message:"Git 凭证当前以明文存储在 git-config.json — 建议使用 Personal Access Token 而非账号密码,且 token 范围尽量收敛 (repo 即可)。",style:{"margin-bottom":"16px"}}),a(_,{wrap:""},{default:o(()=>[a(w,{type:"primary",loading:e.gitcfg.saving,onClick:e.gitConfigSave},{default:o(()=>[...r[24]||(r[24]=[g("保存",-1)])]),_:1},8,["loading"]),e.gitcfg.configured?(u(),P(E,{key:0,title:"确定要清除 Git 凭证吗?远程仓库 URL / 路径会保留。","ok-text":"清除","cancel-text":"取消",onConfirm:e.gitConfigClear},{default:o(()=>[a(w,{danger:""},{default:o(()=>[...r[25]||(r[25]=[g("清除凭证",-1)])]),_:1})]),_:1})):b("v-if",!0)]),_:1})]),_:1},8,["model","disabled"])]),_:1}),b(" 状态卡片 "),a(L,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{title:o(()=>[a(_,null,{default:o(()=>[a(e.CloudSyncOutlined),r[26]||(r[26]=p("span",null,"同步状态",-1))]),_:1})]),extra:o(()=>[a(R,{color:e.conflicts>0?"red":e.synced>0?"green":"default"},{default:o(()=>[g(x(e.conflicts>0?`${e.conflicts} 个冲突`:e.totalResources===0?"无资源":"正常"),1)]),_:1},8,["color"])]),default:o(()=>[e.statusLoading?(u(),C("div",pe,[a(n)])):(u(),P(S,{key:1,gutter:[16,16]},{default:o(()=>[a(y,{xs:12,sm:6},{default:o(()=>[a(D,{title:"资源总数",value:e.totalResources,"value-style":{fontSize:"20px"}},null,8,["value"])]),_:1}),a(y,{xs:12,sm:6},{default:o(()=>[a(D,{title:"待同步",value:e.pending,"value-style":{color:e.pending>0?"#faad14":"#888",fontSize:"20px"}},null,8,["value","value-style"])]),_:1}),a(y,{xs:12,sm:6},{default:o(()=>[a(D,{title:"已同步",value:e.synced,"value-style":{color:e.synced>0?"#52c41a":"#888",fontSize:"20px"}},null,8,["value","value-style"])]),_:1}),a(y,{xs:12,sm:6},{default:o(()=>[a(D,{title:"冲突",value:e.conflicts,"value-style":{color:e.conflicts>0?"#ff4d4f":"#888",fontSize:"20px"}},null,8,["value","value-style"])]),_:1})]),_:1})),e.statusError?(u(),C("div",we,x(e.statusError),1)):b("v-if",!0)]),_:1}),b(" 操作 "),a(L,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{title:o(()=>[a(_,null,{default:o(()=>[a(e.CloudUploadOutlined),r[27]||(r[27]=p("span",null,"同步操作",-1))]),_:1})]),default:o(()=>[a(_,null,{default:o(()=>[a(w,{type:"primary",loading:e.pushLoading,onClick:e.doPush},{icon:o(()=>[a(e.CloudUploadOutlined)]),default:o(()=>[r[28]||(r[28]=g(" 推送本地变更 (push) ",-1))]),_:1},8,["loading"]),a(w,{loading:e.pullLoading,onClick:e.doPull},{icon:o(()=>[a(e.CloudDownloadOutlined)]),default:o(()=>[r[29]||(r[29]=g(" 拉取远程变更 (pull) ",-1))]),_:1},8,["loading"])]),_:1}),e.lastActionResult?(u(),C("div",be,[p("div",_e," 最近一次操作 ("+x(e.lastActionLabel)+") ",1),p("pre",ke,x(e.lastActionResult),1)])):b("v-if",!0)]),_:1}),b(" 冲突列表 "),e.conflicts>0?(u(),P(L,{key:0,style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{title:o(()=>[a(_,null,{default:o(()=>[a(e.WarningOutlined,{style:{color:"#ff4d4f"}}),r[30]||(r[30]=p("span",null,"待解决冲突",-1))]),_:1})]),default:o(()=>[e.conflictsLoading?(u(),C("div",he,[a(n)])):e.conflictList.length===0?(u(),P(B,{key:1,description:"没有详细冲突数据"})):(u(),P(j,{key:2,columns:e.conflictColumns,"data-source":e.conflictList,pagination:{pageSize:10},size:"small","row-key":"id"},{bodyCell:o(({column:s,record:W})=>[s.key==="action"?(u(),P(_,{key:0},{default:o(()=>[a(w,{size:"small",type:"link",onClick:J=>e.resolveOne(W.id,"local")},{default:o(()=>[...r[31]||(r[31]=[g("用本地版本",-1)])]),_:1},8,["onClick"]),a(w,{size:"small",type:"link",onClick:J=>e.resolveOne(W.id,"remote")},{default:o(()=>[...r[32]||(r[32]=[g("用远程版本",-1)])]),_:1},8,["onClick"])]),_:2},1024)):b("v-if",!0)]),_:1},8,["data-source"]))]),_:1})):b("v-if",!0)])}const Re=te(de,[["render",xe],["__scopeId","data-v-0e30ca29"],["__file","/tmp/cc-web-panel-wxwyEA/repo/packages/web-panel/src/views/SyncSettings.vue"]]);export{Re as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{E,b as D,r as R,I as p,J as c,U as _,c as n,K as a,S as C,V as x,o as I,x as V,P as i,Q as k,R as r,F as T,Z as F}from"./vendor-BvqAck49.js";import{u as P,_ as O}from"./index-DDBuc-Id.js";import{R as U}from"./icons-DP3uiYxy.js";const B=E("tasks",()=>{const y=R([]),l=R(!1);let u=null,t=null,d=null;const b=D(()=>y.value.filter(e=>e.status==="running")),v=D(()=>y.value.filter(e=>e.status==="pending")),w=D(()=>y.value.filter(e=>e.status==="completed"||e.status==="failed"||e.status==="timeout"));async function s(){const e=P();l.value=!0;try{const g=await e.sendRaw({type:"tasks-list"});g&&Array.isArray(g.tasks)&&(y.value=g.tasks)}catch{}finally{l.value=!1}}async function m(e){const g=P();try{await g.sendRaw({type:"tasks-stop",taskId:e})}catch{}finally{await s()}}const f=R(null);function h(e=5e3){N(),s(),u=setInterval(s,e),S()}function N(){u&&(clearInterval(u),u=null),t&&(t(),t=null),d&&(clearTimeout(d),d=null)}function S(){const e=P();if(t)return;const g=z=>{z.type==="task:notification"&&z.payload?.task&&(f.value=z.payload.task,s(),d&&clearTimeout(d),d=setTimeout(()=>{f.value=null,d=null},8e3))};t=e.onRuntimeEvent(g)}function A(e){return!e||e<0?"-":e<1e3?`${e}ms`:e<6e4?`${(e/1e3).toFixed(1)}s`:`${(e/6e4).toFixed(1)}m`}function o(e){switch(e){case"running":return"processing";case"pending":return"default";case"completed":return"success";case"failed":return"error";case"timeout":return"warning";default:return"default"}}return{tasks:y,loading:l,running:b,pending:v,completed:w,lastNotification:f,fetchTasks:s,stopTask:m,startPolling:h,stopPolling:N,formatDuration:A,getStatusColor:o}}),L={__name:"Tasks",setup(y,{expose:l}){l();const u=B(),t=[{title:"状态",key:"status",width:90},{title:"描述",key:"description",ellipsis:!0},{title:"类型",dataIndex:"type",width:100},{title:"耗时",key:"duration",width:90},{title:"创建时间",key:"createdAt",width:180},{title:"结果",key:"result",ellipsis:!0},{title:"操作",key:"action",width:80}];function d(s){return s.status==="running"&&s.startedAt?u.formatDuration(Date.now()-s.startedAt):s.completedAt&&s.startedAt?u.formatDuration(s.completedAt-s.startedAt):"-"}function b(s){return s?new Date(s).toLocaleString():"-"}function v(s,m){return s?s.length>m?`${s.slice(0,m)}...`:s:""}I(()=>u.startPolling(5e3)),V(()=>u.stopPolling());const w={store:u,columns:t,getDuration:d,formatTime:b,truncate:v,onMounted:I,onUnmounted:V,get ReloadOutlined(){return U},get useTasksStore(){return B}};return Object.defineProperty(w,"__isScriptSetup",{enumerable:!1,value:!0}),w}},j={class:"page-header"},J={key:0,class:"error-text"},K={key:1},M={class:"task-header"},Q={class:"task-desc"},W={class:"task-id"},Z={class:"task-meta"},q=["title"],G={key:0,class:"error-text"},H={key:1,class:"success-text"},X={key:2,class:"muted-text"};function Y(y,l,u,t,d,b){const v=p("a-button"),w=p("a-space"),s=p("a-alert"),m=p("a-statistic"),f=p("a-card"),h=p("a-col"),N=p("a-row"),S=p("a-tag"),A=p("a-table");return i(),c("div",null,[_("div",j,[l[3]||(l[3]=_("div",null,[_("h2",{class:"page-title"},"后台任务"),_("p",{class:"page-sub"},"查看后台任务队列、实时通知和任务执行结果。")],-1)),n(w,null,{default:a(()=>[n(v,{ghost:"",loading:t.store.loading,onClick:l[0]||(l[0]=o=>t.store.fetchTasks())},{icon:a(()=>[n(t.ReloadOutlined)]),default:a(()=>[l[2]||(l[2]=k(" 刷新 ",-1))]),_:1},8,["loading"])]),_:1})]),t.store.lastNotification?(i(),C(s,{key:0,type:t.store.lastNotification.status==="completed"?"success":"error","show-icon":"",closable:"",class:"banner",onClose:l[1]||(l[1]=o=>t.store.lastNotification=null)},{message:a(()=>[k(" 任务"+r(t.store.lastNotification.status==="completed"?"完成":"结束")+": "+r(t.store.lastNotification.description||t.store.lastNotification.id.slice(0,16)),1)]),description:a(()=>[t.store.lastNotification.error?(i(),c("span",J,r(t.store.lastNotification.error),1)):t.store.lastNotification.result?(i(),c("span",K,r(t.truncate(String(t.store.lastNotification.result),120)),1)):x("v-if",!0)]),_:1},8,["type"])):x("v-if",!0),n(N,{gutter:[16,16],class:"stats-row"},{default:a(()=>[n(h,{xs:12,sm:6},{default:a(()=>[n(f,{class:"stat-card",size:"small"},{default:a(()=>[n(m,{title:"全部任务",value:t.store.tasks.length},null,8,["value"])]),_:1})]),_:1}),n(h,{xs:12,sm:6},{default:a(()=>[n(f,{class:"stat-card",size:"small"},{default:a(()=>[n(m,{title:"运行中",value:t.store.running.length},null,8,["value"])]),_:1})]),_:1}),n(h,{xs:12,sm:6},{default:a(()=>[n(f,{class:"stat-card",size:"small"},{default:a(()=>[n(m,{title:"等待中",value:t.store.pending.length},null,8,["value"])]),_:1})]),_:1}),n(h,{xs:12,sm:6},{default:a(()=>[n(f,{class:"stat-card",size:"small"},{default:a(()=>[n(m,{title:"已完成",value:t.store.completed.length},null,8,["value"])]),_:1})]),_:1})]),_:1}),t.store.running.length>0?(i(),C(f,{key:1,title:"运行中的任务",class:"panel-card",size:"small"},{default:a(()=>[(i(!0),c(T,null,F(t.store.running,o=>(i(),c("div",{key:o.id,class:"task-item running"},[_("div",M,[n(S,{color:t.store.getStatusColor(o.status)},{default:a(()=>[k(r(o.status.toUpperCase()),1)]),_:2},1032,["color"]),_("span",Q,r(o.description),1),_("span",W,r(o.id.slice(0,16)),1)]),_("div",Z,[_("span",null,"类型: "+r(o.type||"-"),1),_("span",null,"已运行: "+r(t.store.formatDuration(Date.now()-o.startedAt)),1),n(v,{size:"small",danger:"",onClick:e=>t.store.stopTask(o.id)},{default:a(()=>[...l[4]||(l[4]=[k("停止",-1)])]),_:1},8,["onClick"])])]))),128))]),_:1})):x("v-if",!0),n(f,{class:"panel-card"},{default:a(()=>[n(A,{columns:t.columns,"data-source":t.store.tasks,pagination:{pageSize:15,size:"small"},loading:t.store.loading,"row-key":"id",size:"small"},{bodyCell:a(({column:o,record:e})=>[o.key==="status"?(i(),C(S,{key:0,color:t.store.getStatusColor(e.status)},{default:a(()=>[k(r(e.status),1)]),_:2},1032,["color"])):o.key==="description"?(i(),c("span",{key:1,title:e.command},r(e.description),9,q)):o.key==="duration"?(i(),c(T,{key:2},[k(r(t.getDuration(e)),1)],64)):o.key==="createdAt"?(i(),c(T,{key:3},[k(r(t.formatTime(e.createdAt)),1)],64)):o.key==="result"?(i(),c(T,{key:4},[e.error?(i(),c("span",G,r(t.truncate(e.error,60)),1)):e.result?(i(),c("span",H,r(t.truncate(String(e.result),60)),1)):(i(),c("span",X,"-"))],64)):o.key==="action"?(i(),c(T,{key:5},[e.status==="running"?(i(),C(v,{key:0,size:"small",danger:"",onClick:g=>t.store.stopTask(e.id)},{default:a(()=>[...l[5]||(l[5]=[k(" 停止 ",-1)])]),_:1},8,["onClick"])):x("v-if",!0)],64)):x("v-if",!0)]),_:1},8,["data-source","loading"])]),_:1})])}const st=O(L,[["render",Y],["__scopeId","data-v-da5ff6a2"],["__file","/tmp/cc-web-panel-wxwyEA/repo/packages/web-panel/src/views/Tasks.vue"]]);export{st as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{I as m,J as I,U as s,R as r,c as a,K as o,V as b,N as G,o as Y,a as Z,b as X,r as u,P as d,F as K,Z as V,S as v,Q as c}from"./vendor-BvqAck49.js";import{_ as me,b as $,u as ee,t as te,d as g}from"./index-_I4YISHL.js";import{u as oe}from"./useFs-AItSJ9F5.js";import{aL as de,aK as ue,ap as ge,aa as fe,aQ as ye,aR as _e,as as ve,a4 as xe,H as be,a9 as he}from"./icons-DP3uiYxy.js";import"./useShellMode-CgR0wCYM.js";const q="cc_prompt_templates",we={__name:"Templates",setup(ae,{expose:l}){l();const{t:i}=$(),e=ee(),J=G(),A=oe(),f=u(!1),h=u(!1),R=u("project"),w=u(""),k=u(null),P=u(!1),S=u(""),F=["code-project","data-science","devops","medical-triage","agriculture-expert","general-assistant","ai-media-creator","ai-doc-creator","empty"],E=X(()=>F.map(n=>({name:n,description:i(`templates.project.items.${n}`)})));function M(n){S.value=n,P.value=!0}async function L(){P.value=!1;const n=S.value;if(n){w.value=n,k.value=null;try{const p=`init --template ${n} --yes`,{output:z,exitCode:T}=await e.execute(p,3e4);k.value={success:T===0,output:z}}catch(p){k.value={success:!1,output:i("templates.messages.initFailed",{err:p.message})}}finally{w.value=""}}}const B=u(!1),O=u([]),x=u(""),j=u(null);async function N(){B.value=!0;try{const{output:n}=await e.execute("bi templates --json",15e3),p=te(n);O.value=Array.isArray(p)?p:p?.templates||[]}catch{O.value=[]}finally{B.value=!1}}async function U(n){x.value=n,j.value=null;try{const p=`bi dashboard create --template ${n} --json`,{output:z,exitCode:T}=await e.execute(p,3e4);j.value={success:T===0,output:z}}catch(p){j.value={success:!1,output:i("templates.messages.createFailed",{err:p.message})}}finally{x.value=""}}const t=u([]),C=u(!1),y=Z({name:"",category:"general",content:""});function H(){try{const n=localStorage.getItem(q);t.value=n?JSON.parse(n):[]}catch{t.value=[]}}function D(){localStorage.setItem(q,JSON.stringify(t.value))}function ne(){!y.name||!y.content||(t.value.push({name:y.name,category:y.category,content:y.content}),D(),Q(),g.success(i("templates.messages.promptSaved")))}function Q(){C.value=!1,y.name="",y.category="general",y.content=""}async function le(){if(t.value.length){f.value=!0;try{const n=await A.saveJson({schema:1,prompts:t.value},{defaultPath:`prompt-templates-${new Date().toISOString().slice(0,10)}.json`});if(n.canceled)return;g.success(n.path?i("templates.messages.exportOk",{count:t.value.length,path:n.path}):i("templates.messages.exportOkDefault"))}catch(n){g.error(i("templates.messages.exportFailed",{err:n.message||n}))}finally{f.value=!1}}}async function re(){h.value=!0;try{const n=await A.pickFileText({title:i("templates.prompts.filePickerTitle"),filters:[{name:"JSON",extensions:["json"]}]});if(!n||n.canceled)return;if(n.reason==="too_large"){g.error(i("templates.messages.fileTooLarge"));return}let p;try{p=JSON.parse(n.content||"")}catch(_){g.error(i("templates.messages.jsonParseFailed",{err:_.message}));return}const z=Array.isArray(p)?p:Array.isArray(p?.prompts)?p.prompts:null;if(!z){g.error(i("templates.messages.fileShapeUnknown",{expected:"prompts: [...]"}));return}let T=0;for(const _ of z)!_||typeof _!="object"||typeof _.name!="string"||typeof _.content!="string"||(t.value.push({name:_.name,category:typeof _.category=="string"?_.category:"general",content:_.content}),T++);T?(D(),g.success(i("templates.messages.importedCount",{count:T}))):g.warning(i("templates.messages.importEmpty"))}catch(n){g.error(i("templates.messages.importFailed",{err:n.message||n}))}finally{h.value=!1}}function se(n){t.value.splice(n,1),D(),g.success(i("templates.messages.promptDeleted"))}function ie(n){navigator.clipboard.writeText(n.content).then(()=>{g.success(i("templates.messages.copiedClipboard"))}).catch(()=>{g.error(i("templates.messages.copyFailed"))})}function ce(n){J.push({path:"/chat",query:{prompt:n.content}})}function pe(n){return{general:"blue",code:"green",writing:"orange",analysis:"purple"}[n]||"default"}Y(()=>{H(),N()});const W={t:i,ws:e,router:J,fs:A,exportingPrompts:f,importingPrompts:h,activeTab:R,initLoading:w,initResult:k,showInitConfirm:P,pendingTemplate:S,PROJECT_TEMPLATE_NAMES:F,projectTemplates:E,confirmInit:M,doInit:L,biLoading:B,biTemplates:O,biCreating:x,biResult:j,loadBiTemplates:N,createBiDashboard:U,STORAGE_KEY:q,promptTemplates:t,showPromptModal:C,newPrompt:y,loadPromptTemplates:H,persistPrompts:D,savePrompt:ne,resetPromptForm:Q,exportPrompts:le,importPrompts:re,deletePrompt:se,copyPrompt:ie,usePrompt:ce,categoryColor:pe,ref:u,computed:X,reactive:Z,onMounted:Y,get useI18n(){return $},get useRouter(){return G},get AppstoreOutlined(){return he},get BarChartOutlined(){return be},get FileTextOutlined(){return xe},get PlusOutlined(){return ve},get CopyOutlined(){return _e},get DeleteOutlined(){return ye},get RocketOutlined(){return fe},get PlayCircleOutlined(){return ge},get ExportOutlined(){return ue},get ImportOutlined(){return de},get message(){return g},get useWsStore(){return ee},get useFs(){return oe},get tryParseJson(){return te}};return Object.defineProperty(W,"__isScriptSetup",{enumerable:!1,value:!0}),W}},ke={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Pe={class:"page-title"},Oe={class:"page-sub"},Ce={style:{display:"flex","align-items":"flex-start",gap:"10px"}},Te={style:{flex:"1","min-width":"0"}},je={style:{"font-weight":"500",color:"#e0e0e0","font-size":"14px","font-family":"monospace","margin-bottom":"4px"}},ze={style:{color:"var(--text-secondary)","font-size":"12px","line-height":"1.5"}},Ie={style:{"margin-top":"12px","text-align":"right"}},Re={style:{margin:"0","font-size":"12px","white-space":"pre-wrap","max-height":"200px","overflow-y":"auto"}},Se={key:0,style:{"text-align":"center",padding:"40px"}},Fe={style:{color:"var(--text-muted)","margin-top":"8px"}},Be={style:{display:"flex","align-items":"flex-start",gap:"10px"}},Ae={style:{flex:"1","min-width":"0"}},Ee={style:{"font-weight":"500",color:"#e0e0e0","font-size":"14px","margin-bottom":"4px"}},Le={style:{color:"var(--text-secondary)","font-size":"12px","line-height":"1.5"}},Ne={key:0,style:{"margin-top":"4px"}},De={style:{"margin-top":"12px","text-align":"right"}},Je={style:{margin:"0","font-size":"12px","white-space":"pre-wrap","max-height":"200px","overflow-y":"auto"}},Me={style:{"margin-bottom":"16px",display:"flex",gap:"8px"}},Ue={style:{display:"flex","align-items":"center",gap:"8px","margin-bottom":"8px"}},Ke={style:{"font-weight":"500",color:"#e0e0e0","font-size":"14px",flex:"1",overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"}},Ve={style:{color:"var(--text-secondary)","font-size":"12px","line-height":"1.5","max-height":"60px",overflow:"hidden","text-overflow":"ellipsis","white-space":"pre-wrap"}},qe={style:{"margin-top":"12px",display:"flex",gap:"8px","justify-content":"flex-end"}},He={style:{color:"var(--text-muted)","font-size":"12px"}};function Qe(ae,l,i,e,J,A){const f=m("a-button"),h=m("a-card"),R=m("a-col"),w=m("a-row"),k=m("a-alert"),P=m("a-tab-pane"),S=m("a-spin"),F=m("a-empty"),E=m("a-tag"),M=m("a-tabs"),L=m("a-modal"),B=m("a-input"),O=m("a-form-item"),x=m("a-select-option"),j=m("a-select"),N=m("a-textarea"),U=m("a-form");return d(),I("div",null,[s("div",ke,[s("div",null,[s("h2",Pe,r(e.t("templates.title")),1),s("p",Oe,r(e.t("templates.subtitle")),1)])]),a(M,{activeKey:e.activeTab,"onUpdate:activeKey":l[3]||(l[3]=t=>e.activeTab=t),type:"card"},{default:o(()=>[b(" Tab 1: Project templates "),a(P,{key:"project"},{tab:o(()=>[a(e.AppstoreOutlined),c(" "+r(e.t("templates.tabs.project")),1)]),default:o(()=>[a(w,{gutter:[16,16]},{default:o(()=>[(d(!0),I(K,null,V(e.projectTemplates,t=>(d(),v(R,{key:t.name,xs:24,sm:12,lg:8},{default:o(()=>[a(h,{size:"small",hoverable:"",class:"template-card",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[s("div",Ce,[a(e.RocketOutlined,{style:{"font-size":"24px",color:"#1677ff","flex-shrink":"0","margin-top":"2px"}}),s("div",Te,[s("div",je,r(t.name),1),s("div",ze,r(t.description),1)])]),s("div",Ie,[a(f,{type:"primary",size:"small",loading:e.initLoading===t.name,onClick:C=>e.confirmInit(t.name)},{icon:o(()=>[a(e.PlayCircleOutlined)]),default:o(()=>[c(" "+r(e.t("templates.project.initButton")),1)]),_:1},8,["loading","onClick"])])]),_:2},1024)]),_:2},1024))),128))]),_:1}),e.initResult?(d(),v(k,{key:0,message:e.initResult.success?e.t("templates.project.initSuccessAlert"):e.t("templates.project.initFailureAlert"),type:e.initResult.success?"success":"error","show-icon":"",closable:"",style:{"margin-top":"16px"},onClose:l[0]||(l[0]=t=>e.initResult=null)},{description:o(()=>[s("pre",Re,r(e.initResult.output),1)]),_:1},8,["message","type"])):b("v-if",!0)]),_:1}),b(" Tab 2: BI templates "),a(P,{key:"bi"},{tab:o(()=>[a(e.BarChartOutlined),c(" "+r(e.t("templates.tabs.bi")),1)]),default:o(()=>[e.biLoading?(d(),I("div",Se,[a(S),s("div",Fe,r(e.t("templates.bi.loadingHint")),1)])):e.biTemplates.length?(d(),v(w,{key:2,gutter:[16,16]},{default:o(()=>[(d(!0),I(K,null,V(e.biTemplates,t=>(d(),v(R,{key:t.id,xs:24,sm:12,lg:8},{default:o(()=>[a(h,{size:"small",hoverable:"",class:"template-card",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[s("div",Be,[a(e.BarChartOutlined,{style:{"font-size":"24px",color:"#722ed1","flex-shrink":"0","margin-top":"2px"}}),s("div",Ae,[s("div",Ee,r(t.name),1),s("div",Le,r(t.description||e.t("templates.bi.noDescription")),1),t.id?(d(),I("div",Ne,[a(E,{size:"small",color:"purple"},{default:o(()=>[c(r(t.id),1)]),_:2},1024)])):b("v-if",!0)])]),s("div",De,[a(f,{type:"primary",size:"small",loading:e.biCreating===t.id,onClick:C=>e.createBiDashboard(t.id)},{icon:o(()=>[a(e.PlayCircleOutlined)]),default:o(()=>[c(" "+r(e.t("templates.bi.createButton")),1)]),_:1},8,["loading","onClick"])])]),_:2},1024)]),_:2},1024))),128))]),_:1})):(d(),v(F,{key:1,description:e.t("templates.bi.emptyText")},null,8,["description"])),e.biResult?(d(),v(k,{key:3,message:e.biResult.success?e.t("templates.bi.createSuccessAlert"):e.t("templates.bi.createFailureAlert"),type:e.biResult.success?"success":"error","show-icon":"",closable:"",style:{"margin-top":"16px"},onClose:l[1]||(l[1]=t=>e.biResult=null)},{description:o(()=>[s("pre",Je,r(e.biResult.output),1)]),_:1},8,["message","type"])):b("v-if",!0)]),_:1}),b(" Tab 3: Prompt templates "),a(P,{key:"prompts"},{tab:o(()=>[a(e.FileTextOutlined),c(" "+r(e.t("templates.tabs.prompts")),1)]),default:o(()=>[s("div",Me,[a(f,{type:"primary",onClick:l[2]||(l[2]=t=>e.showPromptModal=!0)},{icon:o(()=>[a(e.PlusOutlined)]),default:o(()=>[c(" "+r(e.t("templates.prompts.newButton")),1)]),_:1}),a(f,{disabled:!e.promptTemplates.length,loading:e.exportingPrompts,onClick:e.exportPrompts},{icon:o(()=>[a(e.ExportOutlined)]),default:o(()=>[c(" "+r(e.t("templates.prompts.exportAll")),1)]),_:1},8,["disabled","loading"]),a(f,{loading:e.importingPrompts,onClick:e.importPrompts},{icon:o(()=>[a(e.ImportOutlined)]),default:o(()=>[c(" "+r(e.t("templates.prompts.import")),1)]),_:1},8,["loading"])]),e.promptTemplates.length?(d(),v(w,{key:1,gutter:[16,16]},{default:o(()=>[(d(!0),I(K,null,V(e.promptTemplates,(t,C)=>(d(),v(R,{key:C,xs:24,sm:12,lg:8},{default:o(()=>[a(h,{size:"small",class:"template-card",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[s("div",Ue,[a(e.FileTextOutlined,{style:{"font-size":"18px",color:"#52c41a"}}),s("span",Ke,r(t.name),1),a(E,{color:e.categoryColor(t.category),size:"small"},{default:o(()=>[c(r(t.category),1)]),_:2},1032,["color"])]),s("div",Ve,r(t.content.length>120?t.content.slice(0,120)+"...":t.content),1),s("div",qe,[a(f,{size:"small",onClick:y=>e.usePrompt(t)},{icon:o(()=>[a(e.RocketOutlined)]),default:o(()=>[c(" "+r(e.t("templates.prompts.useButton")),1)]),_:1},8,["onClick"]),a(f,{size:"small",onClick:y=>e.copyPrompt(t)},{icon:o(()=>[a(e.CopyOutlined)]),default:o(()=>[c(" "+r(e.t("templates.prompts.copyButton")),1)]),_:1},8,["onClick"]),a(f,{size:"small",danger:"",onClick:y=>e.deletePrompt(C)},{icon:o(()=>[a(e.DeleteOutlined)]),default:o(()=>[c(" "+r(e.t("templates.prompts.deleteButton")),1)]),_:1},8,["onClick"])])]),_:2},1024)]),_:2},1024))),128))]),_:1})):(d(),v(F,{key:0,description:e.t("templates.prompts.emptyText")},null,8,["description"]))]),_:1})]),_:1},8,["activeKey"]),b(" Init Confirmation Modal "),a(L,{open:e.showInitConfirm,"onUpdate:open":l[4]||(l[4]=t=>e.showInitConfirm=t),title:e.t("templates.project.confirmTitle"),onOk:e.doInit,onCancel:l[5]||(l[5]=t=>e.showInitConfirm=!1),"ok-text":e.t("templates.project.confirmOk"),"cancel-text":e.t("common.cancel")},{default:o(()=>[s("p",null,[c(r(e.t("templates.project.confirmIntro"))+" ",1),s("strong",null,r(e.pendingTemplate),1),c(" "+r(e.t("templates.project.confirmIntroSuffix")),1)]),s("p",He,r(e.t("templates.project.confirmHint")),1)]),_:1},8,["open","title","ok-text","cancel-text"]),b(" New Prompt Modal "),a(L,{open:e.showPromptModal,"onUpdate:open":l[9]||(l[9]=t=>e.showPromptModal=t),title:e.t("templates.prompts.modalTitle"),onOk:e.savePrompt,onCancel:e.resetPromptForm,"ok-text":e.t("templates.prompts.modalOk"),"cancel-text":e.t("common.cancel"),"ok-button-props":{disabled:!e.newPrompt.name||!e.newPrompt.content}},{default:o(()=>[a(U,{layout:"vertical"},{default:o(()=>[a(O,{label:e.t("templates.prompts.nameLabel"),required:""},{default:o(()=>[a(B,{value:e.newPrompt.name,"onUpdate:value":l[6]||(l[6]=t=>e.newPrompt.name=t),placeholder:e.t("templates.prompts.namePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(O,{label:e.t("templates.prompts.categoryLabel")},{default:o(()=>[a(j,{value:e.newPrompt.category,"onUpdate:value":l[7]||(l[7]=t=>e.newPrompt.category=t),style:{width:"100%"}},{default:o(()=>[a(x,{value:"general"},{default:o(()=>[...l[10]||(l[10]=[c("general",-1)])]),_:1}),a(x,{value:"code"},{default:o(()=>[...l[11]||(l[11]=[c("code",-1)])]),_:1}),a(x,{value:"writing"},{default:o(()=>[...l[12]||(l[12]=[c("writing",-1)])]),_:1}),a(x,{value:"analysis"},{default:o(()=>[...l[13]||(l[13]=[c("analysis",-1)])]),_:1})]),_:1},8,["value"])]),_:1},8,["label"]),a(O,{label:e.t("templates.prompts.contentLabel"),required:""},{default:o(()=>[a(N,{value:e.newPrompt.content,"onUpdate:value":l[8]||(l[8]=t=>e.newPrompt.content=t),rows:6,placeholder:e.t("templates.prompts.contentPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","ok-text","cancel-text","ok-button-props"])])}const $e=me(we,[["render",Qe],["__scopeId","data-v-82f40809"],["__file","/tmp/cc-web-panel-50dnka/repo/packages/web-panel/src/views/Templates.vue"]]);export{$e as default};
|
|
1
|
+
import{I as m,J as I,U as s,R as r,c as a,K as o,V as b,N as G,o as Y,a as Z,b as X,r as u,P as d,F as K,Z as V,S as v,Q as c}from"./vendor-BvqAck49.js";import{_ as me,b as $,u as ee,t as te,d as g}from"./index-DDBuc-Id.js";import{u as oe}from"./useFs-fOz_rVnu.js";import{aL as de,aK as ue,ap as ge,aa as fe,aQ as ye,aR as _e,as as ve,a4 as xe,H as be,a9 as he}from"./icons-DP3uiYxy.js";import"./useShellMode-CgR0wCYM.js";const q="cc_prompt_templates",we={__name:"Templates",setup(ae,{expose:l}){l();const{t:i}=$(),e=ee(),J=G(),B=oe(),f=u(!1),h=u(!1),R=u("project"),w=u(""),k=u(null),P=u(!1),S=u(""),F=["code-project","data-science","devops","medical-triage","agriculture-expert","general-assistant","ai-media-creator","ai-doc-creator","empty"],E=X(()=>F.map(n=>({name:n,description:i(`templates.project.items.${n}`)})));function M(n){S.value=n,P.value=!0}async function L(){P.value=!1;const n=S.value;if(n){w.value=n,k.value=null;try{const p=`init --template ${n} --yes`,{output:z,exitCode:T}=await e.execute(p,3e4);k.value={success:T===0,output:z}}catch(p){k.value={success:!1,output:i("templates.messages.initFailed",{err:p.message})}}finally{w.value=""}}}const A=u(!1),O=u([]),x=u(""),j=u(null);async function N(){A.value=!0;try{const{output:n}=await e.execute("bi templates --json",15e3),p=te(n);O.value=Array.isArray(p)?p:p?.templates||[]}catch{O.value=[]}finally{A.value=!1}}async function U(n){x.value=n,j.value=null;try{const p=`bi dashboard create --template ${n} --json`,{output:z,exitCode:T}=await e.execute(p,3e4);j.value={success:T===0,output:z}}catch(p){j.value={success:!1,output:i("templates.messages.createFailed",{err:p.message})}}finally{x.value=""}}const t=u([]),C=u(!1),y=Z({name:"",category:"general",content:""});function H(){try{const n=localStorage.getItem(q);t.value=n?JSON.parse(n):[]}catch{t.value=[]}}function D(){localStorage.setItem(q,JSON.stringify(t.value))}function ne(){!y.name||!y.content||(t.value.push({name:y.name,category:y.category,content:y.content}),D(),Q(),g.success(i("templates.messages.promptSaved")))}function Q(){C.value=!1,y.name="",y.category="general",y.content=""}async function le(){if(t.value.length){f.value=!0;try{const n=await B.saveJson({schema:1,prompts:t.value},{defaultPath:`prompt-templates-${new Date().toISOString().slice(0,10)}.json`});if(n.canceled)return;g.success(n.path?i("templates.messages.exportOk",{count:t.value.length,path:n.path}):i("templates.messages.exportOkDefault"))}catch(n){g.error(i("templates.messages.exportFailed",{err:n.message||n}))}finally{f.value=!1}}}async function re(){h.value=!0;try{const n=await B.pickFileText({title:i("templates.prompts.filePickerTitle"),filters:[{name:"JSON",extensions:["json"]}]});if(!n||n.canceled)return;if(n.reason==="too_large"){g.error(i("templates.messages.fileTooLarge"));return}let p;try{p=JSON.parse(n.content||"")}catch(_){g.error(i("templates.messages.jsonParseFailed",{err:_.message}));return}const z=Array.isArray(p)?p:Array.isArray(p?.prompts)?p.prompts:null;if(!z){g.error(i("templates.messages.fileShapeUnknown",{expected:"prompts: [...]"}));return}let T=0;for(const _ of z)!_||typeof _!="object"||typeof _.name!="string"||typeof _.content!="string"||(t.value.push({name:_.name,category:typeof _.category=="string"?_.category:"general",content:_.content}),T++);T?(D(),g.success(i("templates.messages.importedCount",{count:T}))):g.warning(i("templates.messages.importEmpty"))}catch(n){g.error(i("templates.messages.importFailed",{err:n.message||n}))}finally{h.value=!1}}function se(n){t.value.splice(n,1),D(),g.success(i("templates.messages.promptDeleted"))}function ie(n){navigator.clipboard.writeText(n.content).then(()=>{g.success(i("templates.messages.copiedClipboard"))}).catch(()=>{g.error(i("templates.messages.copyFailed"))})}function ce(n){J.push({path:"/chat",query:{prompt:n.content}})}function pe(n){return{general:"blue",code:"green",writing:"orange",analysis:"purple"}[n]||"default"}Y(()=>{H(),N()});const W={t:i,ws:e,router:J,fs:B,exportingPrompts:f,importingPrompts:h,activeTab:R,initLoading:w,initResult:k,showInitConfirm:P,pendingTemplate:S,PROJECT_TEMPLATE_NAMES:F,projectTemplates:E,confirmInit:M,doInit:L,biLoading:A,biTemplates:O,biCreating:x,biResult:j,loadBiTemplates:N,createBiDashboard:U,STORAGE_KEY:q,promptTemplates:t,showPromptModal:C,newPrompt:y,loadPromptTemplates:H,persistPrompts:D,savePrompt:ne,resetPromptForm:Q,exportPrompts:le,importPrompts:re,deletePrompt:se,copyPrompt:ie,usePrompt:ce,categoryColor:pe,ref:u,computed:X,reactive:Z,onMounted:Y,get useI18n(){return $},get useRouter(){return G},get AppstoreOutlined(){return he},get BarChartOutlined(){return be},get FileTextOutlined(){return xe},get PlusOutlined(){return ve},get CopyOutlined(){return _e},get DeleteOutlined(){return ye},get RocketOutlined(){return fe},get PlayCircleOutlined(){return ge},get ExportOutlined(){return ue},get ImportOutlined(){return de},get message(){return g},get useWsStore(){return ee},get useFs(){return oe},get tryParseJson(){return te}};return Object.defineProperty(W,"__isScriptSetup",{enumerable:!1,value:!0}),W}},ke={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Pe={class:"page-title"},Oe={class:"page-sub"},Ce={style:{display:"flex","align-items":"flex-start",gap:"10px"}},Te={style:{flex:"1","min-width":"0"}},je={style:{"font-weight":"500",color:"#e0e0e0","font-size":"14px","font-family":"monospace","margin-bottom":"4px"}},ze={style:{color:"var(--text-secondary)","font-size":"12px","line-height":"1.5"}},Ie={style:{"margin-top":"12px","text-align":"right"}},Re={style:{margin:"0","font-size":"12px","white-space":"pre-wrap","max-height":"200px","overflow-y":"auto"}},Se={key:0,style:{"text-align":"center",padding:"40px"}},Fe={style:{color:"var(--text-muted)","margin-top":"8px"}},Ae={style:{display:"flex","align-items":"flex-start",gap:"10px"}},Be={style:{flex:"1","min-width":"0"}},Ee={style:{"font-weight":"500",color:"#e0e0e0","font-size":"14px","margin-bottom":"4px"}},Le={style:{color:"var(--text-secondary)","font-size":"12px","line-height":"1.5"}},Ne={key:0,style:{"margin-top":"4px"}},De={style:{"margin-top":"12px","text-align":"right"}},Je={style:{margin:"0","font-size":"12px","white-space":"pre-wrap","max-height":"200px","overflow-y":"auto"}},Me={style:{"margin-bottom":"16px",display:"flex",gap:"8px"}},Ue={style:{display:"flex","align-items":"center",gap:"8px","margin-bottom":"8px"}},Ke={style:{"font-weight":"500",color:"#e0e0e0","font-size":"14px",flex:"1",overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"}},Ve={style:{color:"var(--text-secondary)","font-size":"12px","line-height":"1.5","max-height":"60px",overflow:"hidden","text-overflow":"ellipsis","white-space":"pre-wrap"}},qe={style:{"margin-top":"12px",display:"flex",gap:"8px","justify-content":"flex-end"}},He={style:{color:"var(--text-muted)","font-size":"12px"}};function Qe(ae,l,i,e,J,B){const f=m("a-button"),h=m("a-card"),R=m("a-col"),w=m("a-row"),k=m("a-alert"),P=m("a-tab-pane"),S=m("a-spin"),F=m("a-empty"),E=m("a-tag"),M=m("a-tabs"),L=m("a-modal"),A=m("a-input"),O=m("a-form-item"),x=m("a-select-option"),j=m("a-select"),N=m("a-textarea"),U=m("a-form");return d(),I("div",null,[s("div",ke,[s("div",null,[s("h2",Pe,r(e.t("templates.title")),1),s("p",Oe,r(e.t("templates.subtitle")),1)])]),a(M,{activeKey:e.activeTab,"onUpdate:activeKey":l[3]||(l[3]=t=>e.activeTab=t),type:"card"},{default:o(()=>[b(" Tab 1: Project templates "),a(P,{key:"project"},{tab:o(()=>[a(e.AppstoreOutlined),c(" "+r(e.t("templates.tabs.project")),1)]),default:o(()=>[a(w,{gutter:[16,16]},{default:o(()=>[(d(!0),I(K,null,V(e.projectTemplates,t=>(d(),v(R,{key:t.name,xs:24,sm:12,lg:8},{default:o(()=>[a(h,{size:"small",hoverable:"",class:"template-card",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[s("div",Ce,[a(e.RocketOutlined,{style:{"font-size":"24px",color:"#1677ff","flex-shrink":"0","margin-top":"2px"}}),s("div",Te,[s("div",je,r(t.name),1),s("div",ze,r(t.description),1)])]),s("div",Ie,[a(f,{type:"primary",size:"small",loading:e.initLoading===t.name,onClick:C=>e.confirmInit(t.name)},{icon:o(()=>[a(e.PlayCircleOutlined)]),default:o(()=>[c(" "+r(e.t("templates.project.initButton")),1)]),_:1},8,["loading","onClick"])])]),_:2},1024)]),_:2},1024))),128))]),_:1}),e.initResult?(d(),v(k,{key:0,message:e.initResult.success?e.t("templates.project.initSuccessAlert"):e.t("templates.project.initFailureAlert"),type:e.initResult.success?"success":"error","show-icon":"",closable:"",style:{"margin-top":"16px"},onClose:l[0]||(l[0]=t=>e.initResult=null)},{description:o(()=>[s("pre",Re,r(e.initResult.output),1)]),_:1},8,["message","type"])):b("v-if",!0)]),_:1}),b(" Tab 2: BI templates "),a(P,{key:"bi"},{tab:o(()=>[a(e.BarChartOutlined),c(" "+r(e.t("templates.tabs.bi")),1)]),default:o(()=>[e.biLoading?(d(),I("div",Se,[a(S),s("div",Fe,r(e.t("templates.bi.loadingHint")),1)])):e.biTemplates.length?(d(),v(w,{key:2,gutter:[16,16]},{default:o(()=>[(d(!0),I(K,null,V(e.biTemplates,t=>(d(),v(R,{key:t.id,xs:24,sm:12,lg:8},{default:o(()=>[a(h,{size:"small",hoverable:"",class:"template-card",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[s("div",Ae,[a(e.BarChartOutlined,{style:{"font-size":"24px",color:"#722ed1","flex-shrink":"0","margin-top":"2px"}}),s("div",Be,[s("div",Ee,r(t.name),1),s("div",Le,r(t.description||e.t("templates.bi.noDescription")),1),t.id?(d(),I("div",Ne,[a(E,{size:"small",color:"purple"},{default:o(()=>[c(r(t.id),1)]),_:2},1024)])):b("v-if",!0)])]),s("div",De,[a(f,{type:"primary",size:"small",loading:e.biCreating===t.id,onClick:C=>e.createBiDashboard(t.id)},{icon:o(()=>[a(e.PlayCircleOutlined)]),default:o(()=>[c(" "+r(e.t("templates.bi.createButton")),1)]),_:1},8,["loading","onClick"])])]),_:2},1024)]),_:2},1024))),128))]),_:1})):(d(),v(F,{key:1,description:e.t("templates.bi.emptyText")},null,8,["description"])),e.biResult?(d(),v(k,{key:3,message:e.biResult.success?e.t("templates.bi.createSuccessAlert"):e.t("templates.bi.createFailureAlert"),type:e.biResult.success?"success":"error","show-icon":"",closable:"",style:{"margin-top":"16px"},onClose:l[1]||(l[1]=t=>e.biResult=null)},{description:o(()=>[s("pre",Je,r(e.biResult.output),1)]),_:1},8,["message","type"])):b("v-if",!0)]),_:1}),b(" Tab 3: Prompt templates "),a(P,{key:"prompts"},{tab:o(()=>[a(e.FileTextOutlined),c(" "+r(e.t("templates.tabs.prompts")),1)]),default:o(()=>[s("div",Me,[a(f,{type:"primary",onClick:l[2]||(l[2]=t=>e.showPromptModal=!0)},{icon:o(()=>[a(e.PlusOutlined)]),default:o(()=>[c(" "+r(e.t("templates.prompts.newButton")),1)]),_:1}),a(f,{disabled:!e.promptTemplates.length,loading:e.exportingPrompts,onClick:e.exportPrompts},{icon:o(()=>[a(e.ExportOutlined)]),default:o(()=>[c(" "+r(e.t("templates.prompts.exportAll")),1)]),_:1},8,["disabled","loading"]),a(f,{loading:e.importingPrompts,onClick:e.importPrompts},{icon:o(()=>[a(e.ImportOutlined)]),default:o(()=>[c(" "+r(e.t("templates.prompts.import")),1)]),_:1},8,["loading"])]),e.promptTemplates.length?(d(),v(w,{key:1,gutter:[16,16]},{default:o(()=>[(d(!0),I(K,null,V(e.promptTemplates,(t,C)=>(d(),v(R,{key:C,xs:24,sm:12,lg:8},{default:o(()=>[a(h,{size:"small",class:"template-card",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[s("div",Ue,[a(e.FileTextOutlined,{style:{"font-size":"18px",color:"#52c41a"}}),s("span",Ke,r(t.name),1),a(E,{color:e.categoryColor(t.category),size:"small"},{default:o(()=>[c(r(t.category),1)]),_:2},1032,["color"])]),s("div",Ve,r(t.content.length>120?t.content.slice(0,120)+"...":t.content),1),s("div",qe,[a(f,{size:"small",onClick:y=>e.usePrompt(t)},{icon:o(()=>[a(e.RocketOutlined)]),default:o(()=>[c(" "+r(e.t("templates.prompts.useButton")),1)]),_:1},8,["onClick"]),a(f,{size:"small",onClick:y=>e.copyPrompt(t)},{icon:o(()=>[a(e.CopyOutlined)]),default:o(()=>[c(" "+r(e.t("templates.prompts.copyButton")),1)]),_:1},8,["onClick"]),a(f,{size:"small",danger:"",onClick:y=>e.deletePrompt(C)},{icon:o(()=>[a(e.DeleteOutlined)]),default:o(()=>[c(" "+r(e.t("templates.prompts.deleteButton")),1)]),_:1},8,["onClick"])])]),_:2},1024)]),_:2},1024))),128))]),_:1})):(d(),v(F,{key:0,description:e.t("templates.prompts.emptyText")},null,8,["description"]))]),_:1})]),_:1},8,["activeKey"]),b(" Init Confirmation Modal "),a(L,{open:e.showInitConfirm,"onUpdate:open":l[4]||(l[4]=t=>e.showInitConfirm=t),title:e.t("templates.project.confirmTitle"),onOk:e.doInit,onCancel:l[5]||(l[5]=t=>e.showInitConfirm=!1),"ok-text":e.t("templates.project.confirmOk"),"cancel-text":e.t("common.cancel")},{default:o(()=>[s("p",null,[c(r(e.t("templates.project.confirmIntro"))+" ",1),s("strong",null,r(e.pendingTemplate),1),c(" "+r(e.t("templates.project.confirmIntroSuffix")),1)]),s("p",He,r(e.t("templates.project.confirmHint")),1)]),_:1},8,["open","title","ok-text","cancel-text"]),b(" New Prompt Modal "),a(L,{open:e.showPromptModal,"onUpdate:open":l[9]||(l[9]=t=>e.showPromptModal=t),title:e.t("templates.prompts.modalTitle"),onOk:e.savePrompt,onCancel:e.resetPromptForm,"ok-text":e.t("templates.prompts.modalOk"),"cancel-text":e.t("common.cancel"),"ok-button-props":{disabled:!e.newPrompt.name||!e.newPrompt.content}},{default:o(()=>[a(U,{layout:"vertical"},{default:o(()=>[a(O,{label:e.t("templates.prompts.nameLabel"),required:""},{default:o(()=>[a(A,{value:e.newPrompt.name,"onUpdate:value":l[6]||(l[6]=t=>e.newPrompt.name=t),placeholder:e.t("templates.prompts.namePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(O,{label:e.t("templates.prompts.categoryLabel")},{default:o(()=>[a(j,{value:e.newPrompt.category,"onUpdate:value":l[7]||(l[7]=t=>e.newPrompt.category=t),style:{width:"100%"}},{default:o(()=>[a(x,{value:"general"},{default:o(()=>[...l[10]||(l[10]=[c("general",-1)])]),_:1}),a(x,{value:"code"},{default:o(()=>[...l[11]||(l[11]=[c("code",-1)])]),_:1}),a(x,{value:"writing"},{default:o(()=>[...l[12]||(l[12]=[c("writing",-1)])]),_:1}),a(x,{value:"analysis"},{default:o(()=>[...l[13]||(l[13]=[c("analysis",-1)])]),_:1})]),_:1},8,["value"])]),_:1},8,["label"]),a(O,{label:e.t("templates.prompts.contentLabel"),required:""},{default:o(()=>[a(N,{value:e.newPrompt.content,"onUpdate:value":l[8]||(l[8]=t=>e.newPrompt.content=t),rows:6,placeholder:e.t("templates.prompts.contentPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","ok-text","cancel-text","ok-button-props"])])}const $e=me(we,[["render",Qe],["__scopeId","data-v-82f40809"],["__file","/tmp/cc-web-panel-wxwyEA/repo/packages/web-panel/src/views/Templates.vue"]]);export{$e as default};
|