chainlesschain 0.162.122 → 0.162.124
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 +1 -1
- package/src/assets/web-panel/.build-hash +1 -1
- package/src/assets/web-panel/assets/AIOps-BsDJlD_l.js +1 -0
- package/src/assets/web-panel/assets/{ActionButton-Bqvaz1Yj.js → ActionButton-COjZZKWG.js} +1 -1
- package/src/assets/web-panel/assets/Analytics-4ZDZE7lc.js +3 -0
- package/src/assets/web-panel/assets/{AppLayout-cs0TRZya.js → AppLayout-CYH5k2Rp.js} +5 -5
- package/src/assets/web-panel/assets/Audit-BKlFbLdl.js +1 -0
- package/src/assets/web-panel/assets/Backup-CiX61Qc2.js +1 -0
- package/src/assets/web-panel/assets/{BaseInput-4qhQiJfI.js → BaseInput-CDxIQokd.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-DUFX3Mv4.js → Chat-CaKgdRab.js} +6 -6
- package/src/assets/web-panel/assets/ChatBubbleRenderer-DgvpwU5o.js +1 -0
- package/src/assets/web-panel/assets/{Checkbox-C4eyD_nB.js → Checkbox-CjiWfu4s.js} +1 -1
- package/src/assets/web-panel/assets/Codegen-tKWGzajw.js +1 -0
- package/src/assets/web-panel/assets/{Col-3eHStfvJ.js → Col-ZKWREyNs.js} +1 -1
- package/src/assets/web-panel/assets/{Community-DFbKjEgh.js → Community-CmLuPBUU.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-D5str1h-.js → Compact-DqknM98n.js} +1 -1
- package/src/assets/web-panel/assets/Compliance-PZw0aBLI.js +1 -0
- package/src/assets/web-panel/assets/{Cowork-Cdliboj6.js → Cowork-Dp29kHsC.js} +2 -2
- package/src/assets/web-panel/assets/{Cron-Bfmwl6iZ.js → Cron-zmEJAetz.js} +2 -2
- package/src/assets/web-panel/assets/Crosschain-Sb-uM7Ty.js +1 -0
- package/src/assets/web-panel/assets/{DID-xqi72kjo.js → DID-D_UFNzJ5.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-4l68QdSQ.js → Dashboard-Btag698v.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-C2wsZOdn.js → Dropdown-CH7l3KCs.js} +1 -1
- package/src/assets/web-panel/assets/EmailListRenderer-Bud2M3XX.js +1 -0
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-CHK5rapA.js → FamilyGuardDashboard-Bd2_8uME.js} +1 -1
- package/src/assets/web-panel/assets/Federation-1jhstF5P.js +1 -0
- package/src/assets/web-panel/assets/{FormItemContext-lLOEHvAb.js → FormItemContext-CpSH464Y.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-CaDh2XiY.js → GenericCardRenderer-CANo8O-y.js} +1 -1
- package/src/assets/web-panel/assets/{Git-B9SmGPMU.js → Git-hvuZVoD3.js} +2 -2
- package/src/assets/web-panel/assets/Governance-BQrWksKt.js +1 -0
- package/src/assets/web-panel/assets/Inference-jEBTp12v.js +1 -0
- package/src/assets/web-panel/assets/KnowledgeGraph-tDiV2taf.js +1 -0
- package/src/assets/web-panel/assets/Logs-DDkTnedu.js +2 -0
- package/src/assets/web-panel/assets/Marketplace-9Yi32avt.js +1 -0
- package/src/assets/web-panel/assets/{McpTools-Dxlypa0R.js → McpTools-Qx78XyOT.js} +5 -5
- package/src/assets/web-panel/assets/{Memory-BxBHR7eW.js → Memory-CXYDO1oT.js} +2 -2
- package/src/assets/web-panel/assets/MobileBridge-MfUfkHA0.js +1 -0
- package/src/assets/web-panel/assets/{MobileProjects-59gyfK6T.js → MobileProjects-DEDbWNIk.js} +1 -1
- package/src/assets/web-panel/assets/{Mtc-2YBBawFi.js → Mtc-Dwa_vlR8.js} +2 -2
- package/src/assets/web-panel/assets/{MtcAudit-DczAeHfM.js → MtcAudit-DAVkxhJv.js} +2 -2
- package/src/assets/web-panel/assets/{Multisig-CPxyt7a-.js → Multisig-C3upmgPN.js} +3 -3
- package/src/assets/web-panel/assets/NLProgramming-DO3CZ0_z.js +1 -0
- package/src/assets/web-panel/assets/{Notes-tHRMLOQ3.js → Notes-B1Oy3FbC.js} +4 -4
- package/src/assets/web-panel/assets/{NotificationSettings-DxIYUWPW.js → NotificationSettings-Bs4-Fc6b.js} +1 -1
- package/src/assets/web-panel/assets/OrderTableRenderer-CEy1pIeq.js +1 -0
- package/src/assets/web-panel/assets/Organization-D4cJ1UNo.js +4 -0
- package/src/assets/web-panel/assets/{Overflow-DrdVw_fC.js → Overflow-fdzvlF7x.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-CMBYxejX.js → P2P-Y13PwXBA.js} +2 -2
- package/src/assets/web-panel/assets/PdhVaultBrowser-Ck1zCLe6.js +7 -0
- package/src/assets/web-panel/assets/Permissions-CvEXP6LC.js +4 -0
- package/src/assets/web-panel/assets/{PersonalDataHub-nuqNTK2w.js → PersonalDataHub-JeP7IWMW.js} +3 -3
- package/src/assets/web-panel/assets/Pipeline-BZ7wRzG1.js +1 -0
- package/src/assets/web-panel/assets/Privacy-BJ6qj9Hv.js +1 -0
- package/src/assets/web-panel/assets/{ProjectInit-hCWXNnGJ.js → ProjectInit-DeWd9UcS.js} +2 -2
- package/src/assets/web-panel/assets/ProjectSettings-DUpVuU9F.js +2 -0
- package/src/assets/web-panel/assets/{Projects-C6l6z4Mo.js → Projects-y1WbI337.js} +1 -1
- package/src/assets/web-panel/assets/{Providers-kEifEWLb.js → Providers-DECW00ek.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-B6oLUYKR.js → QuickAsk-Dl-pK9Io.js} +1 -1
- package/src/assets/web-panel/assets/Recommend-Bju04wTd.js +1 -0
- package/src/assets/web-panel/assets/Reputation-BUPa3nEk.js +1 -0
- package/src/assets/web-panel/assets/{Row-W6LSmdzh.js → Row-WYqqaq_5.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-DJi97lWh.js → RssFeed-iyQT5q9l.js} +3 -3
- package/src/assets/web-panel/assets/Search-CrfwJF0R.js +1 -0
- package/src/assets/web-panel/assets/{Security-BtawKhmm.js → Security-c4Jxf5Ih.js} +4 -4
- package/src/assets/web-panel/assets/{Services-BdCe11of.js → Services-CRuisolj.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-C_wcDxpN.js → Skeleton-CCnzJkb-.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-n2GgEfQ1.js → Skills-CZURCwZg.js} +1 -1
- package/src/assets/web-panel/assets/Sla-CrMzaEi2.js +1 -0
- package/src/assets/web-panel/assets/SpeechSettings-jTDOM5eY.js +1 -0
- package/src/assets/web-panel/assets/{SyncSettings-BBbldyeR.js → SyncSettings-CJWVtd87.js} +2 -2
- package/src/assets/web-panel/assets/{Tasks-DMkBOCW-.js → Tasks-61lrQ_lS.js} +1 -1
- package/src/assets/web-panel/assets/Templates-Cg-iF2g1.js +1 -0
- package/src/assets/web-panel/assets/Tenant-DrDv1FFc.js +1 -0
- package/src/assets/web-panel/assets/Terminal-CP15hcNS.js +3 -0
- package/src/assets/web-panel/assets/{TimelineRenderer-Drf_B0al.js → TimelineRenderer-Sl5uXrkN.js} +1 -1
- package/src/assets/web-panel/assets/Tokens-yRIZTVsR.js +1 -0
- package/src/assets/web-panel/assets/{Trigger-CNUB_qRQ.js → Trigger-BLCQEOF2.js} +1 -1
- package/src/assets/web-panel/assets/Trust-D5xq8z6s.js +1 -0
- package/src/assets/web-panel/assets/{UkeySign-7o1O51qV.js → UkeySign-Dwp0zXQ6.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-Ccb1cTxo.js → VideoEditing-CIHA55Sx.js} +1 -1
- package/src/assets/web-panel/assets/Wallet-Hjajvnto.js +4 -0
- package/src/assets/web-panel/assets/WebAuthn-DqSURUvI.js +5 -0
- package/src/assets/web-panel/assets/{WorkflowEditor-BcFvWc2d.js → WorkflowEditor-B5bHRwUG.js} +1 -1
- package/src/assets/web-panel/assets/{chat-CPvCSHY4.js → chat-DsheLKkG.js} +1 -1
- package/src/assets/web-panel/assets/{colors-Ca7MoLtb.js → colors-CST2UkgL.js} +1 -1
- package/src/assets/web-panel/assets/community-parser-Cuyslaku.js +3 -0
- package/src/assets/web-panel/assets/{compact-item-B9AUAVCQ.js → compact-item-yqEoy1L7.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-CnMJHqHw.js → createContext-Jwp78HFY.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-C8to6gQk.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-Bevd8pXd.js → hasIn-CVS5mFEP.js} +1 -1
- package/src/assets/web-panel/assets/{index-gR1xGRvy.js → index-AnW25bEq.js} +1 -1
- package/src/assets/web-panel/assets/{index-B3zlqc60.js → index-BCHAUdel.js} +1 -1
- package/src/assets/web-panel/assets/{index-BzmhHe0m.js → index-BLTUVd0V.js} +1 -1
- package/src/assets/web-panel/assets/{index-BM1tI3g5.js → index-BeblNJDH.js} +1 -1
- package/src/assets/web-panel/assets/{index-CAKYScOz.js → index-BuI27WSx.js} +1 -1
- package/src/assets/web-panel/assets/{index-PidVLx0u.js → index-BzetOasL.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dnk8TOm3.js → index-C0FZScMe.js} +1 -1
- package/src/assets/web-panel/assets/{index-CvhLkwFR.js → index-C130LLPq.js} +1 -1
- package/src/assets/web-panel/assets/{index-0DtNS6oi.js → index-C8rq85gu.js} +1 -1
- package/src/assets/web-panel/assets/{index-BUlsrbu2.js → index-CDAPnZUs.js} +1 -1
- package/src/assets/web-panel/assets/{index-HdGuA1pS.js → index-CIE2n8k_.js} +1 -1
- package/src/assets/web-panel/assets/{index-ecThTNhE.js → index-CRBbVS43.js} +1 -1
- package/src/assets/web-panel/assets/{index-DW3rTBy_.js → index-CSBPc-sI.js} +1 -1
- package/src/assets/web-panel/assets/{index-C5i4gKvN.js → index-CTd3lDxp.js} +1 -1
- package/src/assets/web-panel/assets/index-CUWj5L2s.js +1 -0
- package/src/assets/web-panel/assets/{index-B619_m_T.js → index-ChRL6rgA.js} +1 -1
- package/src/assets/web-panel/assets/{index-tUD_CWx-.js → index-CjfN2CpJ.js} +1 -1
- package/src/assets/web-panel/assets/{index-BcRDjaEi.js → index-Cjig5i3a.js} +3 -3
- package/src/assets/web-panel/assets/{index-Ct3wP67S.js → index-Crk4KWLW.js} +1 -1
- package/src/assets/web-panel/assets/{index-p1rI3d66.js → index-CrlRa054.js} +1 -1
- package/src/assets/web-panel/assets/{index-DPk2HXTA.js → index-CtyEOGuj.js} +1 -1
- package/src/assets/web-panel/assets/{index-aB7GLimB.js → index-Cu6Ql64n.js} +1 -1
- package/src/assets/web-panel/assets/{index-BFkrnvs_.js → index-Cx_t5rWw.js} +1 -1
- package/src/assets/web-panel/assets/{index-ienIjr7_.js → index-Cy0dNzkp.js} +1 -1
- package/src/assets/web-panel/assets/{index-DAjYLhik.js → index-CzsKK0tQ.js} +1 -1
- package/src/assets/web-panel/assets/{index-CGEc6vlv.js → index-DDAigsel.js} +1 -1
- package/src/assets/web-panel/assets/index-DZfnYE6e.js +1 -0
- package/src/assets/web-panel/assets/{index-C3biz3RB.js → index-D_1b7uh6.js} +1 -1
- package/src/assets/web-panel/assets/{index-D9VR1tES.js → index-D_e9gwfn.js} +1 -1
- package/src/assets/web-panel/assets/{index-BGBbFzIJ.js → index-DbxAlpPC.js} +1 -1
- package/src/assets/web-panel/assets/{index-CVxhWXMd.js → index-De600Jjm.js} +1 -1
- package/src/assets/web-panel/assets/{index-2KMpdEzs.js → index-Dgyn8-wN.js} +1 -1
- package/src/assets/web-panel/assets/{index-CQKVKyjf.js → index-DiK4vSZa.js} +1 -1
- package/src/assets/web-panel/assets/{index-CtIv89mI.js → index-DpYn5v2k.js} +1 -1
- package/src/assets/web-panel/assets/{index-DTxmgfz2.js → index-DxaU_lza.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cd62bwRd.js → index-Dxljh9Fu.js} +1 -1
- package/src/assets/web-panel/assets/{index-kUeSjyHt.js → index-R-VGFpi6.js} +1 -1
- package/src/assets/web-panel/assets/{index-BwDJvHfR.js → index-SjxCCf5h.js} +1 -1
- package/src/assets/web-panel/assets/{index-BV1U7tR6.js → index-diWkx2Wq.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-dsKHYCPH.js → initDefaultProps-ClAjrsQ-.js} +1 -1
- package/src/assets/web-panel/assets/{motion-DdPCK2zh.js → motion-BalXv_60.js} +1 -1
- package/src/assets/web-panel/assets/{move-Bi0bmOjg.js → move-DMelzIW-.js} +1 -1
- package/src/assets/web-panel/assets/mtc-parser-CEQffxds.js +1 -0
- package/src/assets/web-panel/assets/{omit-DCrBiySU.js → omit-oxecfU3b.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-CcJuqfya.js → pickAttrs-DJ5F5M6x.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-DFGuzth-.js → placementArrow-DdbKsant.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-B_WDlgvI.js → responsiveObserve-BUuM5cmS.js} +1 -1
- package/src/assets/web-panel/assets/{slide-BSFabVgO.js → slide-DSV0ccvR.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-CebvsGH8.js → statusUtils-B-6oLAXf.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-CMuE7NWy.js → styleChecker-DdCAHtsZ.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-RWGVgZNu.js → useFlexGapSupport-ZORkcoZd.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-srxzzfG_.js → useFs-BFp46LoP.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-B5OwxZuK.js → usePersonalDataHub-H7rxgbdW.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-CXOEebAH.js → vnode-eIq4Tk0J.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-DKNwqG2v.js → zoom-CTNrv8-H.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/commands/ask.js +24 -1
- package/src/commands/init.js +5 -4
- package/src/commands/instinct.js +18 -5
- package/src/commands/mcp.js +30 -3
- package/src/commands/memory.js +18 -5
- package/src/gateways/http/envelope-http-server.js +17 -2
- package/src/gateways/terminal/PtyManager.js +15 -2
- package/src/gateways/ws/ws-server.js +20 -0
- package/src/gateways/ws/ws-session-gateway.js +16 -0
- package/src/harness/mcp-client.js +124 -6
- package/src/harness/worktree-isolator.js +20 -9
- package/src/lib/agent-core.js +3 -0
- package/src/lib/autonomous-agent.js +7 -6
- package/src/lib/chat-intent-service.js +4 -2
- package/src/lib/checkpoint-store.js +23 -0
- package/src/lib/credential-guard.js +291 -0
- package/src/lib/ensure-utf8.js +6 -1
- package/src/lib/git-integration.js +57 -1
- package/src/lib/hook-manager.js +15 -6
- package/src/lib/hook-runner.cjs +11 -1
- package/src/lib/interactive-planner.js +4 -3
- package/src/lib/json-schema-output.js +47 -0
- package/src/lib/learning/reflection-engine.js +4 -3
- package/src/lib/learning/skill-improver.js +4 -3
- package/src/lib/learning/skill-synthesizer.js +4 -3
- package/src/lib/mcp-client.js +1 -0
- package/src/lib/mcp-oauth.js +243 -24
- package/src/lib/mcp-serve.js +56 -6
- package/src/lib/orchestrator.js +4 -2
- package/src/lib/process-manager.js +31 -3
- package/src/lib/repl-completer.js +29 -0
- package/src/lib/repl-rewind.js +58 -0
- package/src/lib/repl-vim.js +13 -1
- package/src/lib/settings-hooks.cjs +12 -3
- package/src/lib/slot-filler.js +4 -3
- package/src/lib/sub-agent-context.js +6 -0
- package/src/lib/web-fetch.js +54 -3
- package/src/lib/workflow-engine.js +35 -11
- package/src/repl/agent-repl.js +52 -2
- package/src/runtime/agent-core.js +324 -26
- package/src/runtime/headless-stream.js +124 -17
- package/src/assets/web-panel/assets/AIOps-BmS46GrQ.js +0 -1
- package/src/assets/web-panel/assets/Analytics-BhCnMbKz.js +0 -3
- package/src/assets/web-panel/assets/Audit-AwLNQzvX.js +0 -1
- package/src/assets/web-panel/assets/Backup-BOglo5g6.js +0 -1
- package/src/assets/web-panel/assets/ChatBubbleRenderer-LWgyWUF_.js +0 -1
- package/src/assets/web-panel/assets/Codegen-B9SRqAqh.js +0 -1
- package/src/assets/web-panel/assets/Compliance-DDYPQDiG.js +0 -1
- package/src/assets/web-panel/assets/Crosschain-Bfo6RvSg.js +0 -1
- package/src/assets/web-panel/assets/EmailListRenderer-CWh_fKmI.js +0 -1
- package/src/assets/web-panel/assets/Federation-JpiE2iKR.js +0 -1
- package/src/assets/web-panel/assets/Governance-B3ODoSO2.js +0 -1
- package/src/assets/web-panel/assets/Inference-C_jP_nlz.js +0 -1
- package/src/assets/web-panel/assets/KnowledgeGraph-zYwypnwu.js +0 -1
- package/src/assets/web-panel/assets/Logs-D6owai5o.js +0 -2
- package/src/assets/web-panel/assets/Marketplace-umRB80w4.js +0 -1
- package/src/assets/web-panel/assets/MobileBridge-Car9kLtE.js +0 -3
- package/src/assets/web-panel/assets/NLProgramming-DvKJ8imu.js +0 -1
- package/src/assets/web-panel/assets/OrderTableRenderer-BMpVfQkg.js +0 -1
- package/src/assets/web-panel/assets/Organization-BBsie-kN.js +0 -4
- package/src/assets/web-panel/assets/PdhVaultBrowser-BBHzSaeq.js +0 -7
- package/src/assets/web-panel/assets/Permissions-W4kD06Cj.js +0 -4
- package/src/assets/web-panel/assets/Pipeline-DzCX3yHy.js +0 -1
- package/src/assets/web-panel/assets/Privacy-9ENAJQOC.js +0 -1
- package/src/assets/web-panel/assets/ProjectSettings--BzvEaxE.js +0 -2
- package/src/assets/web-panel/assets/Recommend-BIEMGN0q.js +0 -1
- package/src/assets/web-panel/assets/Reputation-D-9AEaRr.js +0 -1
- package/src/assets/web-panel/assets/Search-DOEB2utf.js +0 -1
- package/src/assets/web-panel/assets/Sla-D5WfrvLP.js +0 -1
- package/src/assets/web-panel/assets/SpeechSettings-D6qCWpan.js +0 -1
- package/src/assets/web-panel/assets/Templates-DbLImR1I.js +0 -1
- package/src/assets/web-panel/assets/Tenant-B0qM4w6Z.js +0 -1
- package/src/assets/web-panel/assets/Terminal-BjKUkiR1.js +0 -3
- package/src/assets/web-panel/assets/Tokens-DgCx2Bfa.js +0 -1
- package/src/assets/web-panel/assets/Trust-JQUTjXXI.js +0 -1
- package/src/assets/web-panel/assets/Wallet-EMf9MlLK.js +0 -4
- package/src/assets/web-panel/assets/WebAuthn-DOYoaCmi.js +0 -5
- package/src/assets/web-panel/assets/community-parser-CO25nZFt.js +0 -3
- package/src/assets/web-panel/assets/devWarning-vFgm_Ssk.js +0 -1
- package/src/assets/web-panel/assets/index-BGUjPh7h.js +0 -1
- package/src/assets/web-panel/assets/index-Cx-wP5XE.js +0 -1
- package/src/assets/web-panel/assets/mtc-parser-BbAbUB-9.js +0 -1
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{I as z,J as f,U as S,R as d,c as t,K as l,o as be,b as F,r as m,P as c,Q as _,V as y,S as O,F as _e,a2 as we}from"./vendor-BvqAck49.js";import{_ as Fe,b as ze,u as xe,d as p}from"./index-BcRDjaEi.js";import{b as Ne,aj as qe,as as De,R as Re,A as Be,aP as Ve,J as Je}from"./icons-DP3uiYxy.js";const We={__name:"Organization",setup(ke,{expose:s}){s();const{t:r}=ze(),e=xe(),D=m("orgs"),V=m(!1);async function T(){V.value=!0;try{D.value==="orgs"?await A():D.value==="members"?(await A(),j.value&&(await K(),await E())):D.value==="approvals"&&await q()}finally{V.value=!1}}function R(o){o==="orgs"&&k.value.length===0&&A(),o==="members"&&k.value.length===0&&A(),o==="approvals"&&Q.value.length===0&&q()}function x(o){try{const i=o.trim(),n=i.indexOf("["),g=i.indexOf("{"),v=n>=0&&(g<0||n<g)?n:g;return v>=0?JSON.parse(i.slice(v)):null}catch{return null}}const M=m(!1),k=m([]),P=m(!1),C=m(!1),N=m(""),I=m(""),h=m(!1),w=m(!1),U=m({}),L=m(""),B=F(()=>[{title:r("organization.orgColumns.id"),key:"id",dataIndex:"id",width:"100px"},{title:r("organization.orgColumns.name"),key:"name",dataIndex:"name",width:"180px"},{title:r("organization.orgColumns.owner"),key:"owner",dataIndex:"owner",width:"140px"},{title:r("organization.orgColumns.description"),key:"description",dataIndex:"description",ellipsis:!0},{title:r("organization.orgColumns.memberCount"),key:"memberCount",dataIndex:"memberCount",width:"90px"}]),H=F(()=>k.value.map(o=>({label:o.name,value:o.id})));async function A(){M.value=!0;try{const{output:o}=await e.execute("org list --json",15e3),i=x(o);Array.isArray(i)?k.value=i.map((n,g)=>({key:n.id||g,id:n.id||"-",name:n.name||"-",owner:n.owner||"-",description:n.description||"",memberCount:n.memberCount??n.members??0})):k.value=a(o)}catch(o){p.error(r("organization.messages.loadOrgsFailed",{err:o.message}))}finally{M.value=!1}}function a(o){const i=[],n=o.split(`
|
|
2
|
-
`);for(const g of n){const v=g.trim();if(!v||v.startsWith("─")||v.match(/^\d+ org/i))continue;const b=v.split(/\s*[|│]\s*/);b.length>=3&&i.push({key:i.length,id:b[0]||"-",name:b[1]||"-",owner:b[2]||"-",description:b[3]||"",memberCount:parseInt(b[4],10)||0})}return i}async function u(){if(!N.value.trim()){p.warning(r("organization.messages.orgNameRequired"));return}C.value=!0;try{const o=N.value.trim().replace(/"/g,'\\"'),i=I.value.trim().replace(/"/g,'\\"');let n=`org create "${o}" --json`;i&&(n=`org create "${o}" --description "${i}" --json`);const{output:g}=await e.execute(n,2e4);g.includes("error")||g.includes("失败")?p.error(r("organization.messages.orgCreateFailed",{err:g.slice(0,120)})):(p.success(r("organization.messages.orgCreateOk")),P.value=!1,N.value="",I.value="",await A())}catch(o){p.error(r("organization.messages.orgCreateFailed",{err:o.message}))}finally{C.value=!1}}async function X(o){U.value={...o},L.value="",h.value=!0,w.value=!0;try{const{output:i}=await e.execute(`org show ${o.id} --json`,15e3),n=x(i);n&&typeof n=="object"?(U.value={id:n.id||o.id,name:n.name||o.name,owner:n.owner||o.owner,description:n.description||o.description,memberCount:n.memberCount??n.members??o.memberCount,createdAt:n.createdAt||n.created||""},L.value=JSON.stringify(n,null,2)):L.value=i}catch(i){L.value=r("organization.messages.loadDetailFailed",{err:i.message})}finally{w.value=!1}}const j=m(null),Y=m(!1),$=m([]),ee=m(!1),ae=m([]),ge=m(!1),te=m(!1),J=m(""),oe=m(""),ne=m("member"),ue=m(!1),le=m(!1),W=m(""),ie=m(""),re=m(""),he=F(()=>[{label:r("organization.members.roleAdmin"),value:"admin"},{label:r("organization.members.roleMember"),value:"member"},{label:r("organization.members.roleViewer"),value:"viewer"}]),Oe=F(()=>[{title:r("organization.memberColumns.userId"),key:"userId",dataIndex:"userId",width:"160px"},{title:r("organization.memberColumns.name"),key:"name",dataIndex:"name",width:"140px"},{title:r("organization.memberColumns.role"),key:"role",dataIndex:"role",width:"100px"},{title:r("organization.memberColumns.joinedAt"),key:"joinedAt",dataIndex:"joinedAt",width:"180px"}]),Ce=F(()=>[{title:r("organization.teamColumns.name"),key:"name",dataIndex:"name",width:"180px"},{title:r("organization.teamColumns.description"),key:"description",dataIndex:"description",ellipsis:!0},{title:r("organization.teamColumns.lead"),key:"lead",dataIndex:"lead",width:"140px"}]);function Te(o){return{admin:"gold",member:"blue",viewer:"default",owner:"purple"}[(o||"").toLowerCase()]||"default"}async function Ie(){j.value&&await Promise.all([K(),E()])}async function K(){if(j.value){Y.value=!0;try{const{output:o}=await e.execute(`org members ${j.value} --json`,15e3),i=x(o);Array.isArray(i)?$.value=i.map((n,g)=>({key:n.userId||n.id||g,userId:n.userId||n.id||"-",name:n.name||n.displayName||"-",role:n.role||"member",joinedAt:n.joinedAt||n.joined||"-"})):$.value=pe(o)}catch(o){p.error(r("organization.messages.loadMembersFailed",{err:o.message}))}finally{Y.value=!1}}}function pe(o){const i=[],n=o.split(`
|
|
3
|
-
`);for(const g of n){const v=g.trim();if(!v||v.startsWith("─")||v.match(/^\d+ member/i))continue;const b=v.split(/\s*[|│]\s*/);b.length>=3&&i.push({key:i.length,userId:b[0]||"-",name:b[1]||"-",role:b[2]||"member",joinedAt:b[3]||"-"})}return i}async function E(){if(j.value){ee.value=!0;try{const{output:o}=await e.execute(`org teams ${j.value} --json`,15e3),i=x(o);Array.isArray(i)?ae.value=i.map((n,g)=>({key:n.id||n.name||g,name:n.name||"-",description:n.description||"",lead:n.lead||n.leader||"-"})):ae.value=[]}catch(o){p.error(r("organization.messages.loadTeamsFailed",{err:o.message}))}finally{ee.value=!1}}}async function Le(){if(!J.value.trim()){p.warning(r("organization.messages.userIdRequired"));return}te.value=!0;try{const o=J.value.trim().replace(/"/g,'\\"'),i=oe.value.trim().replace(/"/g,'\\"');let n=`org invite ${j.value} ${o} --role ${ne.value}`;i&&(n+=` --name "${i}"`);const{output:g}=await e.execute(n,2e4);g.includes("error")||g.includes("失败")?p.error(r("organization.messages.inviteFailed",{err:g.slice(0,120)})):(p.success(r("organization.messages.inviteOk")),ge.value=!1,J.value="",oe.value="",ne.value="member",await K())}catch(o){p.error(r("organization.messages.inviteFailed",{err:o.message}))}finally{te.value=!1}}async function Ae(){if(!W.value.trim()){p.warning(r("organization.messages.teamNameRequired"));return}le.value=!0;try{const o=W.value.trim().replace(/"/g,'\\"'),i=ie.value.trim().replace(/"/g,'\\"'),n=re.value.trim().replace(/"/g,'\\"');let g=`org teams ${j.value} create "${o}"`;i&&(g+=` --description "${i}"`),n&&(g+=` --lead "${n}"`);const{output:v}=await e.execute(g,2e4);v.includes("error")||v.includes("失败")?p.error(r("organization.messages.teamCreateFailed",{err:v.slice(0,120)})):(p.success(r("organization.messages.teamCreateOk")),ue.value=!1,W.value="",ie.value="",re.value="",await E())}catch(o){p.error(r("organization.messages.teamCreateFailed",{err:o.message}))}finally{le.value=!1}}const se=m(!1),Q=m([]),ve=m(!1),de=m(!1),Z=m(null),G=m(""),me=m(""),ce=m(""),je=F(()=>[{title:r("organization.approvalColumns.id"),key:"id",dataIndex:"id",width:"100px"},{title:r("organization.approvalColumns.title"),key:"title",dataIndex:"title",width:"200px"},{title:r("organization.approvalColumns.type"),key:"type",dataIndex:"type",width:"120px"},{title:r("organization.approvalColumns.requester"),key:"requester",dataIndex:"requester",width:"140px"},{title:r("organization.approvalColumns.status"),key:"status",dataIndex:"status",width:"100px"},{title:r("organization.approvalColumns.actions"),key:"actions",width:"180px"}]);function Me(o){return{pending:"orange",approved:"green",rejected:"red"}[(o||"").toLowerCase()]||"default"}async function q(){se.value=!0;try{const{output:o}=await e.execute("org approvals --json",15e3),i=x(o);Array.isArray(i)?Q.value=i.map((n,g)=>({key:n.id||g,id:n.id||"-",title:n.title||"-",type:n.type||"-",requester:n.requester||n.requestedBy||"-",status:n.status||"pending",_approving:!1,_rejecting:!1})):Q.value=fe(o)}catch(o){p.error(r("organization.messages.loadApprovalsFailed",{err:o.message}))}finally{se.value=!1}}function fe(o){const i=[],n=o.split(`
|
|
4
|
-
`);for(const g of n){const v=g.trim();if(!v||v.startsWith("─")||v.match(/^\d+ approval/i))continue;const b=v.split(/\s*[|│]\s*/);b.length>=4&&i.push({key:i.length,id:b[0]||"-",title:b[1]||"-",type:b[2]||"-",requester:b[3]||"-",status:b[4]||"pending",_approving:!1,_rejecting:!1})}return i}async function Ue(o){o._approving=!0;try{const{output:i}=await e.execute(`org approve ${o.id}`,15e3);i.includes("error")||i.includes("失败")?p.error(r("organization.messages.approveFailed",{err:i.slice(0,120)})):(p.success(r("organization.messages.approveOk")),await q())}catch(i){p.error(r("organization.messages.approveFailed",{err:i.message}))}finally{o._approving=!1}}async function Se(o){o._rejecting=!0;try{const{output:i}=await e.execute(`org reject ${o.id}`,15e3);i.includes("error")||i.includes("失败")?p.error(r("organization.messages.rejectFailed",{err:i.slice(0,120)})):(p.success(r("organization.messages.rejectOk")),await q())}catch(i){p.error(r("organization.messages.rejectFailed",{err:i.message}))}finally{o._rejecting=!1}}async function Pe(){if(!Z.value){p.warning(r("organization.messages.orgRequired"));return}if(!G.value.trim()){p.warning(r("organization.messages.approvalTitleRequired"));return}de.value=!0;try{const o=G.value.trim().replace(/"/g,'\\"'),i=me.value.trim().replace(/"/g,'\\"'),n=ce.value.trim().replace(/"/g,'\\"');let g=`org approve --submit --org ${Z.value} --title "${o}"`;i&&(g+=` --type "${i}"`),n&&(g+=` --description "${n}"`);const{output:v}=await e.execute(g,2e4);v.includes("error")||v.includes("失败")?p.error(r("organization.messages.submitFailed",{err:v.slice(0,120)})):(p.success(r("organization.messages.submitOk")),ve.value=!1,Z.value=null,G.value="",me.value="",ce.value="",await q())}catch(o){p.error(r("organization.messages.submitFailed",{err:o.message}))}finally{de.value=!1}}be(()=>{A()});const ye={t:r,ws:e,activeTab:D,refreshing:V,refreshCurrentTab:T,onTabChange:R,tryParseJson:x,orgLoading:M,orgList:k,showCreateOrgModal:P,creatingOrg:C,newOrgName:N,newOrgDesc:I,showDetailModal:h,detailLoading:w,detailOrg:U,detailRaw:L,orgColumns:B,orgSelectOptions:H,loadOrgList:A,parseOrgListText:a,createOrg:u,showOrgDetail:X,selectedOrgId:j,memberLoading:Y,memberList:$,teamLoading:ee,teamList:ae,showInviteModal:ge,inviting:te,inviteUserId:J,inviteName:oe,inviteRole:ne,showCreateTeamModal:ue,creatingTeam:le,newTeamName:W,newTeamDesc:ie,newTeamLead:re,roleOptions:he,memberColumns:Oe,teamColumns:Ce,roleColor:Te,onOrgSelected:Ie,loadMembers:K,parseMemberListText:pe,loadTeams:E,inviteMember:Le,createTeam:Ae,approvalLoading:se,approvalList:Q,showSubmitApprovalModal:ve,submittingApproval:de,approvalOrgId:Z,approvalTitle:G,approvalType:me,approvalDescription:ce,approvalColumns:je,approvalStatusColor:Me,loadApprovals:q,parseApprovalListText:fe,approveItem:Ue,rejectItem:Se,submitApproval:Pe,ref:m,computed:F,onMounted:be,get useI18n(){return ze},get TeamOutlined(){return Je},get UserAddOutlined(){return Ve},get AuditOutlined(){return Be},get ReloadOutlined(){return Re},get PlusOutlined(){return De},get CheckOutlined(){return qe},get CloseOutlined(){return Ne},get message(){return p},get useWsStore(){return xe}};return Object.defineProperty(ye,"__isScriptSetup",{enumerable:!1,value:!0}),ye}},Ke={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Ee={class:"page-title"},Qe={class:"page-sub"},Ze={key:0,style:{"text-align":"center",padding:"60px"}},Ge={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},He={key:1,style:{color:"#1677ff"}},Xe={key:2,style:{color:"var(--text-secondary)"}},Ye={key:3,style:{color:"var(--text-muted)","font-size":"12px"}},$e={key:0,style:{"text-align":"center",padding:"40px"}},ea={key:1},aa={style:{"font-family":"monospace",color:"#ccc"}},ta={key:0,style:{"white-space":"pre-wrap","word-break":"break-all",color:"var(--text-secondary)","font-size":"11px",background:"var(--bg-base)",padding:"12px","border-radius":"6px",border:"1px solid var(--border-color)","max-height":"300px","overflow-y":"auto"}},oa={style:{"margin-bottom":"16px",display:"flex","align-items":"center",gap:"12px"}},na={key:0,style:{"text-align":"center",padding:"60px"}},la={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},ia={key:1,style:{color:"#e0e0e0"}},ra={key:3,style:{color:"var(--text-secondary)","font-size":"12px"}},sa={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"12px"}},da={style:{color:"var(--text-primary)",margin:"0","font-size":"15px"}},ma={key:0,style:{"text-align":"center",padding:"40px"}},ca={key:0,style:{color:"#e0e0e0"}},ga={key:1,style:{color:"var(--text-muted)","font-size":"12px"}},ua={key:2,style:{color:"var(--text-secondary)"}},pa={key:0,style:{"text-align":"center",padding:"60px"}},va={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},fa={key:1,style:{color:"#e0e0e0"}},ya={key:3,style:{color:"var(--text-secondary)"}},ba={key:1,style:{color:"var(--text-muted)","font-size":"12px"}};function _a(ke,s,r,e,D,V){const T=z("a-button"),R=z("a-space"),x=z("a-spin"),M=z("a-tag"),k=z("a-empty"),P=z("a-table"),C=z("a-descriptions-item"),N=z("a-descriptions"),I=z("a-modal"),h=z("a-input"),w=z("a-form-item"),U=z("a-form"),L=z("a-tab-pane"),B=z("a-select"),H=z("a-textarea"),A=z("a-tabs");return c(),f("div",null,[S("div",Ke,[S("div",null,[S("h2",Ee,d(e.t("organization.title")),1),S("p",Qe,d(e.t("organization.subtitle")),1)]),t(T,{type:"primary",ghost:"",loading:e.refreshing,onClick:e.refreshCurrentTab},{icon:l(()=>[t(e.ReloadOutlined)]),default:l(()=>[_(" "+d(e.t("organization.refresh")),1)]),_:1},8,["loading"])]),t(A,{activeKey:e.activeTab,"onUpdate:activeKey":s[22]||(s[22]=a=>e.activeTab=a),type:"card",onChange:e.onTabChange},{default:l(()=>[y(" Tab 1: Organization List "),t(L,{key:"orgs"},{tab:l(()=>[t(e.TeamOutlined),_(" "+d(e.t("organization.tabs.orgs")),1)]),default:l(()=>[t(R,{style:{"margin-bottom":"16px"}},{default:l(()=>[t(T,{type:"primary",onClick:s[0]||(s[0]=a=>e.showCreateOrgModal=!0)},{icon:l(()=>[t(e.PlusOutlined)]),default:l(()=>[_(" "+d(e.t("organization.orgs.createButton")),1)]),_:1})]),_:1}),e.orgLoading?(c(),f("div",Ze,[t(x,{size:"large"})])):(c(),O(P,{key:1,columns:e.orgColumns,"data-source":e.orgList,pagination:{pageSize:20,showTotal:a=>e.t("organization.totals.rows",{count:a})},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"org-row","custom-row":a=>({onClick:()=>e.showOrgDetail(a)})},{bodyCell:l(({column:a,record:u})=>[a.key==="id"?(c(),f("span",Ge,d(u.id),1)):y("v-if",!0),a.key==="name"?(c(),f("a",He,d(u.name),1)):y("v-if",!0),a.key==="owner"?(c(),f("span",Xe,d(u.owner),1)):y("v-if",!0),a.key==="description"?(c(),f("span",Ye,d(u.description),1)):y("v-if",!0),a.key==="memberCount"?(c(),O(M,{key:4,color:"blue"},{default:l(()=>[_(d(u.memberCount),1)]),_:2},1024)):y("v-if",!0)]),emptyText:l(()=>[t(k,{description:e.t("organization.orgs.emptyText")},null,8,["description"])]),_:1},8,["columns","data-source","pagination","custom-row"])),t(I,{open:e.showDetailModal,"onUpdate:open":s[1]||(s[1]=a=>e.showDetailModal=a),title:e.t("organization.orgs.detailTitle",{name:e.detailOrg.name||""}),footer:null,width:"640px"},{default:l(()=>[e.detailLoading?(c(),f("div",$e,[t(x)])):(c(),f("div",ea,[t(N,{column:1,bordered:"",size:"small",style:{"margin-bottom":"16px"}},{default:l(()=>[t(C,{label:e.t("organization.orgs.detailLabels.id")},{default:l(()=>[S("span",aa,d(e.detailOrg.id),1)]),_:1},8,["label"]),t(C,{label:e.t("organization.orgs.detailLabels.name")},{default:l(()=>[_(d(e.detailOrg.name),1)]),_:1},8,["label"]),t(C,{label:e.t("organization.orgs.detailLabels.owner")},{default:l(()=>[_(d(e.detailOrg.owner),1)]),_:1},8,["label"]),t(C,{label:e.t("organization.orgs.detailLabels.description")},{default:l(()=>[_(d(e.detailOrg.description||"-"),1)]),_:1},8,["label"]),t(C,{label:e.t("organization.orgs.detailLabels.memberCount")},{default:l(()=>[_(d(e.detailOrg.memberCount),1)]),_:1},8,["label"]),e.detailOrg.createdAt?(c(),O(C,{key:0,label:e.t("organization.orgs.detailLabels.createdAt")},{default:l(()=>[_(d(e.detailOrg.createdAt),1)]),_:1},8,["label"])):y("v-if",!0)]),_:1}),e.detailRaw?(c(),f("pre",ta,d(e.detailRaw),1)):y("v-if",!0)]))]),_:1},8,["open","title"]),t(I,{open:e.showCreateOrgModal,"onUpdate:open":s[4]||(s[4]=a=>e.showCreateOrgModal=a),title:e.t("organization.orgs.createTitle"),"confirm-loading":e.creatingOrg,onOk:e.createOrg,"ok-text":e.t("organization.orgs.createOk"),"cancel-text":e.t("common.cancel")},{default:l(()=>[t(U,{"label-col":{span:4},"wrapper-col":{span:20},style:{"margin-top":"16px"}},{default:l(()=>[t(w,{label:e.t("organization.orgs.nameLabel"),required:""},{default:l(()=>[t(h,{value:e.newOrgName,"onUpdate:value":s[2]||(s[2]=a=>e.newOrgName=a),placeholder:e.t("organization.orgs.namePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),t(w,{label:e.t("organization.orgs.descriptionLabel")},{default:l(()=>[t(h,{value:e.newOrgDesc,"onUpdate:value":s[3]||(s[3]=a=>e.newOrgDesc=a),placeholder:e.t("organization.orgs.descriptionPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])]),_:1}),y(" Tab 2: Member Management "),t(L,{key:"members"},{tab:l(()=>[t(e.UserAddOutlined),_(" "+d(e.t("organization.tabs.members")),1)]),default:l(()=>[S("div",oa,[t(B,{value:e.selectedOrgId,"onUpdate:value":s[5]||(s[5]=a=>e.selectedOrgId=a),placeholder:e.t("organization.members.selectPlaceholder"),style:{width:"280px"},options:e.orgSelectOptions,onChange:e.onOrgSelected},null,8,["value","placeholder","options"]),t(T,{type:"primary",disabled:!e.selectedOrgId,onClick:s[6]||(s[6]=a=>e.showInviteModal=!0)},{icon:l(()=>[t(e.UserAddOutlined)]),default:l(()=>[_(" "+d(e.t("organization.members.inviteButton")),1)]),_:1},8,["disabled"])]),e.memberLoading?(c(),f("div",na,[t(x,{size:"large"})])):e.selectedOrgId?(c(),O(P,{key:1,columns:e.memberColumns,"data-source":e.memberList,pagination:{pageSize:20,showTotal:a=>e.t("organization.totals.rows",{count:a})},size:"small",style:{background:"var(--bg-card)","margin-bottom":"24px"},"row-class-name":()=>"org-row"},{bodyCell:l(({column:a,record:u})=>[a.key==="userId"?(c(),f("span",la,d(u.userId),1)):y("v-if",!0),a.key==="name"?(c(),f("span",ia,d(u.name),1)):y("v-if",!0),a.key==="role"?(c(),O(M,{key:2,color:e.roleColor(u.role)},{default:l(()=>[_(d(u.role),1)]),_:2},1032,["color"])):y("v-if",!0),a.key==="joinedAt"?(c(),f("span",ra,d(u.joinedAt),1)):y("v-if",!0)]),emptyText:l(()=>[t(k,{description:e.t("organization.members.emptyMembers")},null,8,["description"])]),_:1},8,["columns","data-source","pagination"])):(c(),O(k,{key:2,description:e.t("organization.members.selectFirst"),style:{padding:"60px 0"}},null,8,["description"])),e.selectedOrgId?(c(),f(_e,{key:3},[S("div",sa,[S("h3",da,d(e.t("organization.members.teamsTitle")),1),t(T,{size:"small",onClick:s[7]||(s[7]=a=>e.showCreateTeamModal=!0)},{icon:l(()=>[t(e.PlusOutlined)]),default:l(()=>[_(" "+d(e.t("organization.members.createTeamButton")),1)]),_:1})]),e.teamLoading?(c(),f("div",ma,[t(x)])):(c(),O(P,{key:1,columns:e.teamColumns,"data-source":e.teamList,pagination:!1,size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"org-row"},{bodyCell:l(({column:a,record:u})=>[a.key==="name"?(c(),f("span",ca,d(u.name),1)):y("v-if",!0),a.key==="description"?(c(),f("span",ga,d(u.description),1)):y("v-if",!0),a.key==="lead"?(c(),f("span",ua,d(u.lead),1)):y("v-if",!0)]),emptyText:l(()=>[t(k,{description:e.t("organization.members.emptyTeams")},null,8,["description"])]),_:1},8,["columns","data-source"]))],64)):y("v-if",!0),t(I,{open:e.showInviteModal,"onUpdate:open":s[11]||(s[11]=a=>e.showInviteModal=a),title:e.t("organization.members.inviteTitle"),"confirm-loading":e.inviting,onOk:e.inviteMember,"ok-text":e.t("organization.members.inviteOk"),"cancel-text":e.t("common.cancel")},{default:l(()=>[t(U,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:l(()=>[t(w,{label:e.t("organization.members.userIdLabel"),required:""},{default:l(()=>[t(h,{value:e.inviteUserId,"onUpdate:value":s[8]||(s[8]=a=>e.inviteUserId=a),placeholder:e.t("organization.members.userIdPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),t(w,{label:e.t("organization.members.nameLabel")},{default:l(()=>[t(h,{value:e.inviteName,"onUpdate:value":s[9]||(s[9]=a=>e.inviteName=a),placeholder:e.t("organization.members.namePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),t(w,{label:e.t("organization.members.roleLabel")},{default:l(()=>[t(B,{value:e.inviteRole,"onUpdate:value":s[10]||(s[10]=a=>e.inviteRole=a),options:e.roleOptions},null,8,["value","options"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),t(I,{open:e.showCreateTeamModal,"onUpdate:open":s[15]||(s[15]=a=>e.showCreateTeamModal=a),title:e.t("organization.members.createTeamTitle"),"confirm-loading":e.creatingTeam,onOk:e.createTeam,"ok-text":e.t("organization.members.createTeamOk"),"cancel-text":e.t("common.cancel")},{default:l(()=>[t(U,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:l(()=>[t(w,{label:e.t("organization.members.teamNameLabel"),required:""},{default:l(()=>[t(h,{value:e.newTeamName,"onUpdate:value":s[12]||(s[12]=a=>e.newTeamName=a),placeholder:e.t("organization.members.teamNamePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),t(w,{label:e.t("organization.members.teamDescLabel")},{default:l(()=>[t(h,{value:e.newTeamDesc,"onUpdate:value":s[13]||(s[13]=a=>e.newTeamDesc=a),placeholder:e.t("organization.members.teamDescPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),t(w,{label:e.t("organization.members.teamLeadLabel")},{default:l(()=>[t(h,{value:e.newTeamLead,"onUpdate:value":s[14]||(s[14]=a=>e.newTeamLead=a),placeholder:e.t("organization.members.teamLeadPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])]),_:1}),y(" Tab 3: Approval Management "),t(L,{key:"approvals"},{tab:l(()=>[t(e.AuditOutlined),_(" "+d(e.t("organization.tabs.approvals")),1)]),default:l(()=>[t(R,{style:{"margin-bottom":"16px"}},{default:l(()=>[t(T,{type:"primary",onClick:s[16]||(s[16]=a=>e.showSubmitApprovalModal=!0)},{icon:l(()=>[t(e.PlusOutlined)]),default:l(()=>[_(" "+d(e.t("organization.approvals.submitButton")),1)]),_:1})]),_:1}),e.approvalLoading?(c(),f("div",pa,[t(x,{size:"large"})])):(c(),O(P,{key:1,columns:e.approvalColumns,"data-source":e.approvalList,pagination:{pageSize:20,showTotal:a=>e.t("organization.totals.rows",{count:a})},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"org-row"},{bodyCell:l(({column:a,record:u})=>[a.key==="id"?(c(),f("span",va,d(u.id),1)):y("v-if",!0),a.key==="title"?(c(),f("span",fa,d(u.title),1)):y("v-if",!0),a.key==="type"?(c(),O(M,{key:2,color:"blue"},{default:l(()=>[_(d(u.type),1)]),_:2},1024)):y("v-if",!0),a.key==="requester"?(c(),f("span",ya,d(u.requester),1)):y("v-if",!0),a.key==="status"?(c(),O(M,{key:4,color:e.approvalStatusColor(u.status)},{default:l(()=>[_(d(u.status),1)]),_:2},1032,["color"])):y("v-if",!0),a.key==="actions"?(c(),f(_e,{key:5},[(u.status||"").toLowerCase()==="pending"?(c(),O(R,{key:0},{default:l(()=>[t(T,{type:"primary",size:"small",loading:u._approving,onClick:we(X=>e.approveItem(u),["stop"])},{icon:l(()=>[t(e.CheckOutlined)]),default:l(()=>[_(" "+d(e.t("organization.approvals.approve")),1)]),_:1},8,["loading","onClick"]),t(T,{danger:"",size:"small",loading:u._rejecting,onClick:we(X=>e.rejectItem(u),["stop"])},{icon:l(()=>[t(e.CloseOutlined)]),default:l(()=>[_(" "+d(e.t("organization.approvals.reject")),1)]),_:1},8,["loading","onClick"])]),_:2},1024)):(c(),f("span",ba,"-"))],64)):y("v-if",!0)]),emptyText:l(()=>[t(k,{description:e.t("organization.approvals.emptyText")},null,8,["description"])]),_:1},8,["columns","data-source","pagination"])),t(I,{open:e.showSubmitApprovalModal,"onUpdate:open":s[21]||(s[21]=a=>e.showSubmitApprovalModal=a),title:e.t("organization.approvals.submitTitle"),"confirm-loading":e.submittingApproval,onOk:e.submitApproval,"ok-text":e.t("organization.approvals.submitOk"),"cancel-text":e.t("common.cancel")},{default:l(()=>[t(U,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:l(()=>[t(w,{label:e.t("organization.approvals.orgLabel"),required:""},{default:l(()=>[t(B,{value:e.approvalOrgId,"onUpdate:value":s[17]||(s[17]=a=>e.approvalOrgId=a),placeholder:e.t("organization.approvals.orgPlaceholder"),options:e.orgSelectOptions},null,8,["value","placeholder","options"])]),_:1},8,["label"]),t(w,{label:e.t("organization.approvals.titleLabel"),required:""},{default:l(()=>[t(h,{value:e.approvalTitle,"onUpdate:value":s[18]||(s[18]=a=>e.approvalTitle=a),placeholder:e.t("organization.approvals.titlePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),t(w,{label:e.t("organization.approvals.typeLabel")},{default:l(()=>[t(h,{value:e.approvalType,"onUpdate:value":s[19]||(s[19]=a=>e.approvalType=a),placeholder:e.t("organization.approvals.typePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),t(w,{label:e.t("organization.approvals.descLabel")},{default:l(()=>[t(H,{value:e.approvalDescription,"onUpdate:value":s[20]||(s[20]=a=>e.approvalDescription=a),placeholder:e.t("organization.approvals.descPlaceholder"),rows:3},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])]),_:1})]),_:1},8,["activeKey"])])}const ka=Fe(We,[["render",_a],["__scopeId","data-v-4900dc74"],["__file","/tmp/cc-web-panel-heolxZ/repo/packages/web-panel/src/views/Organization.vue"]]);export{ka as default};
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./ChatBubbleRenderer-LWgyWUF_.js","./vendor-BvqAck49.js","./index-BcRDjaEi.js","./icons-DP3uiYxy.js","./index-Cq93VfoF.css","./ChatBubbleRenderer-gy5SDGw2.css","./OrderTableRenderer-BMpVfQkg.js","./OrderTableRenderer-CfrDjSHT.css","./TimelineRenderer-Drf_B0al.js","./TimelineRenderer-BlTAtkOc.css","./EmailListRenderer-CWh_fKmI.js","./EmailListRenderer-DTPZPx_S.css","./GenericCardRenderer-CaDh2XiY.js","./GenericCardRenderer-o85VDYQS.css"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{E as ue,r as E,b as w,I as y,P as u,J as O,U as v,c,S as C,V as x,_ as M,F as V,Z as se,a0 as le,R,K as m,Q as b,W as L,o as J}from"./vendor-BvqAck49.js";import{u as U}from"./usePersonalDataHub-B5OwxZuK.js";import{_ as D,e as F,d as P}from"./index-BcRDjaEi.js";import{a9 as q,af as z,M as Q,aH as G,u as Z,aG as H,ap as K,ab as W,e as de,d as fe,k as pe,ah as me,az as _e,R as ge}from"./icons-DP3uiYxy.js";const I=Object.freeze({q:"",category:null,adapter:null,subtype:null,since:null,until:null}),B=50,Y=300,X=ue("pdhBrowser",()=>{const r=E({...I}),t=E([]),n=E(null),e=E(!1),o=E(!1),l=E(null),a=E(null),s=E(!1),i=E({byCategory:{},byAdapter:{},bySubtype:{},total:0});let d=0,_=null;const j=w(()=>t.value.length>0),A=w(()=>n.value!=null);function h(S={}){const p={},f=r.value;return f.q&&f.q.trim()&&(p.q=f.q.trim()),f.category&&(p.category=f.category),f.adapter&&(p.adapter=f.adapter),f.subtype&&(p.subtype=f.subtype),Number.isFinite(f.since)&&(p.since=f.since),Number.isFinite(f.until)&&(p.until=f.until),{...p,...S}}async function g(){const S=++d;e.value=!0,l.value=null;const p=U();try{const[f,T]=await Promise.all([p.searchEvents(h({limit:B})),p.facetCounts({...r.value.q&&r.value.q.trim()?{q:r.value.q.trim()}:{},...Number.isFinite(r.value.since)?{since:r.value.since}:{},...Number.isFinite(r.value.until)?{until:r.value.until}:{}})]);if(S!==d)return;t.value=f.rows||[],n.value=f.nextCursor||null,a.value=f.mode||"like",s.value=!!f.shortQuery,i.value={byCategory:T.byCategory||{},byAdapter:T.byAdapter||{},bySubtype:T.bySubtype||{},total:T.total||0}}catch(f){if(S!==d)return;l.value=f&&f.message?f.message:String(f),t.value=[],n.value=null}finally{S===d&&(e.value=!1)}}async function k(){if(!n.value||o.value)return;o.value=!0,l.value=null;const S=U();try{const p=await S.searchEvents(h({cursor:n.value,limit:B}));t.value=t.value.concat(p.rows||[]),n.value=p.nextCursor||null,a.value=p.mode||a.value}catch(p){l.value=p&&p.message?p.message:String(p)}finally{o.value=!1}}function ae(S,p){if(!(S in I))throw new Error(`pdhBrowser.setFilter: unknown key "${S}"`);r.value={...r.value,[S]:p},_&&clearTimeout(_),_=setTimeout(()=>{_=null,g()},Y)}function ie(S){return r.value={...I,...S},_&&(clearTimeout(_),_=null),g()}function ce(){r.value={...I},t.value=[],n.value=null,l.value=null,i.value={byCategory:{},byAdapter:{},bySubtype:{},total:0}}return{filters:r,results:t,cursor:n,isLoading:e,isAppending:o,error:l,mode:a,shortQuery:s,facets:i,hasResults:j,canLoadMore:A,search:g,loadMore:k,setFilter:ae,setFilters:ie,reset:ce,PAGE_SIZE:B,SEARCH_DEBOUNCE_MS:Y}}),ye=Object.freeze(["chat","social","email","shopping","travel","system","ai-chat","other"]),ve=Object.freeze({chat:"社交聊天",social:"内容平台",email:"邮件",shopping:"支付订单",travel:"出行",system:"系统数据","ai-chat":"AI 对话",other:"其他"});function N(r){return ve[r]||r||"未知"}const be=Object.freeze([["wechat","chat"],["messaging-","chat"],["social-","social"],["email-","email"],["shopping-","shopping"],["alipay-","shopping"],["travel-","travel"],["system-data","system"],["browser-","system"],["vscode","system"],["win-recent","system"],["git-activity","system"],["shell-history","system"],["local-files","system"],["ai-chat-","ai-chat"]]);function $(r){if(typeof r!="string"||r.length===0)return"other";for(const[t,n]of be)if(t.endsWith("-")||t==="system-data"){if(r.startsWith(t))return n}else if(r===t)return n;return"other"}const he={__name:"CategorySidebar",props:{selected:{type:String,default:null},facets:{type:Object,default:()=>({byCategory:{},total:0})}},emits:["select"],setup(r,{expose:t}){t();const n=r,e=w(()=>n.facets.total||0),o={chat:W,social:K,email:H,shopping:Z,travel:G,system:Q,"ai-chat":z,other:q};function l(i){return o[i]||q}function a(i){return i?{backgroundColor:"#fff",color:"#1677ff"}:{backgroundColor:"#f0f0f0",color:"#666"}}const s={props:n,total:e,ICONS:o,iconFor:l,badgeStyle:a,computed:w,get AppstoreOutlined(){return q},get MessageOutlined(){return W},get PlayCircleOutlined(){return K},get MailOutlined(){return H},get ShoppingOutlined(){return Z},get CarOutlined(){return G},get MobileOutlined(){return Q},get RobotOutlined(){return z},get CATEGORIES(){return ye},get categoryLabel(){return N}};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}},Se={class:"pdh-sidebar"},Oe=["onClick"],we={class:"label"};function Ce(r,t,n,e,o,l){const a=y("a-badge");return u(),O("div",Se,[t[2]||(t[2]=v("div",{class:"sidebar-title"},"数据类型",-1)),v("div",{class:M(["cat-item",{active:n.selected===null}]),onClick:t[0]||(t[0]=s=>r.$emit("select",null))},[c(e.AppstoreOutlined,{class:"icon"}),t[1]||(t[1]=v("span",{class:"label"},"全部",-1)),e.total>0?(u(),C(a,{key:0,count:e.total,"number-style":e.badgeStyle(n.selected===null),"overflow-count":9999},null,8,["count","number-style"])):x("v-if",!0)],2),(u(!0),O(V,null,se(e.CATEGORIES,s=>(u(),O("div",{key:s,class:M(["cat-item",{active:n.selected===s,dim:!n.facets.byCategory[s]}]),onClick:i=>r.$emit("select",s)},[(u(),C(le(e.iconFor(s)),{class:"icon"})),v("span",we,R(e.categoryLabel(s)),1),n.facets.byCategory[s]?(u(),C(a,{key:0,count:n.facets.byCategory[s],"number-style":e.badgeStyle(n.selected===s),"overflow-count":9999},null,8,["count","number-style"])):x("v-if",!0)],10,Oe))),128))])}const ke=D(he,[["render",Ce],["__scopeId","data-v-6b62a22e"],["__file","/tmp/cc-web-panel-heolxZ/repo/packages/web-panel/src/components/pdh/CategorySidebar.vue"]]),xe={__name:"SearchFilterBar",props:{filters:{type:Object,required:!0},facets:{type:Object,default:()=>({byAdapter:{}})},isLoading:{type:Boolean,default:!1},mode:{type:String,default:null},shortQuery:{type:Boolean,default:!1}},emits:["set-filter","reset"],setup(r,{expose:t,emit:n}){t();const e=r,o=n,l=w(()=>e.filters.category?`在「${e.filters.category}」类目内搜索…`:"搜索关键词(如:支付宝、罗技、Kotlin)…"),a=w(()=>Object.entries(e.facets.byAdapter||{}).sort((g,k)=>k[1]-g[1]).map(([g,k])=>({value:g,label:`${g} (${k})`}))),s=w(()=>!e.filters.since&&!e.filters.until?null:[e.filters.since?new Date(e.filters.since):null,e.filters.until?new Date(e.filters.until):null]),i=w(()=>!!(e.filters.q||e.filters.adapter||e.filters.subtype||e.filters.since||e.filters.until));function d(h){o("set-filter","q",h||"")}function _(h){o("set-filter","q",h||"")}function j(h){if(!h||h.length===0){o("set-filter","since",null),o("set-filter","until",null);return}const[g,k]=h;o("set-filter","since",g?+g:null),o("set-filter","until",k?+k:null)}const A={props:e,emit:o,placeholderText:l,adapterOptions:a,dateRangeValue:s,hasActiveFilters:i,onQInput:d,onSearch:_,onDateChange:j,computed:w,get SearchOutlined(){return pe},get CloseCircleOutlined(){return fe},get InfoCircleOutlined(){return de}};return Object.defineProperty(A,"__isScriptSetup",{enumerable:!1,value:!0}),A}},Ee={class:"pdh-filter-bar"},Re={key:1,class:"hint"},je={key:2,class:"hint"};function Ae(r,t,n,e,o,l){const a=y("a-input-search"),s=y("a-select"),i=y("a-range-picker"),d=y("a-button");return u(),O("div",Ee,[c(a,{value:n.filters.q,placeholder:e.placeholderText,"enter-button":"搜索","allow-clear":"",loading:n.isLoading,style:{flex:"1","max-width":"480px"},"onUpdate:value":e.onQInput,onSearch:e.onSearch},{prefix:m(()=>[c(e.SearchOutlined)]),_:1},8,["value","placeholder","loading"]),c(s,{value:n.filters.adapter,placeholder:"所有 adapter","allow-clear":"",options:e.adapterOptions,style:{width:"200px"},"onUpdate:value":t[0]||(t[0]=_=>r.$emit("set-filter","adapter",_||null))},null,8,["value","options"]),c(i,{value:e.dateRangeValue,placeholder:["开始日期","结束日期"],style:{width:"280px"},"onUpdate:value":e.onDateChange},null,8,["value"]),e.hasActiveFilters?(u(),C(d,{key:0,type:"link",danger:"",onClick:t[1]||(t[1]=_=>r.$emit("reset"))},{icon:m(()=>[c(e.CloseCircleOutlined)]),default:m(()=>[t[2]||(t[2]=b(" 清空筛选 ",-1))]),_:1})):x("v-if",!0),n.shortQuery?(u(),O("span",Re,[c(e.InfoCircleOutlined),t[3]||(t[3]=b(" 关键词需至少 3 字 (FTS5 trigram 限制) ",-1))])):n.mode==="like"?(u(),O("span",je,[c(e.InfoCircleOutlined),t[4]||(t[4]=b(" 当前为 LIKE 兜底模式 ",-1))])):x("v-if",!0)])}const Le=D(xe,[["render",Ae],["__scopeId","data-v-d7cce6e9"],["__file","/tmp/cc-web-panel-heolxZ/repo/packages/web-panel/src/components/pdh/SearchFilterBar.vue"]]),Fe={__name:"RendererDispatcher",props:{event:{type:Object,required:!0}},setup(r,{expose:t}){t();const n=L(()=>F(()=>import("./ChatBubbleRenderer-LWgyWUF_.js"),__vite__mapDeps([0,1,2,3,4,5]),import.meta.url)),e=L(()=>F(()=>import("./OrderTableRenderer-BMpVfQkg.js"),__vite__mapDeps([6,1,2,3,4,7]),import.meta.url)),o=L(()=>F(()=>import("./TimelineRenderer-Drf_B0al.js"),__vite__mapDeps([8,1,2,3,4,9]),import.meta.url)),l=L(()=>F(()=>import("./EmailListRenderer-CWh_fKmI.js"),__vite__mapDeps([10,1,2,3,4,11]),import.meta.url)),a=L(()=>F(()=>import("./GenericCardRenderer-CaDh2XiY.js"),__vite__mapDeps([12,1,2,3,4,13]),import.meta.url));function s(d){const _=d&&d.source&&d.source.adapter;switch($(_)){case"chat":case"ai-chat":return n;case"shopping":return e;case"travel":return o;case"email":return l;default:return a}}const i={ChatBubbleRenderer:n,OrderTableRenderer:e,TimelineRenderer:o,EmailListRenderer:l,GenericCardRenderer:a,rendererFor:s,defineAsyncComponent:L,get getCategory(){return $}};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}};function De(r,t,n,e,o,l){return u(),C(le(e.rendererFor(n.event)),{event:n.event},null,8,["event"])}const Te=D(Fe,[["render",De],["__file","/tmp/cc-web-panel-heolxZ/repo/packages/web-panel/src/components/pdh/renderers/RendererDispatcher.vue"]]);function ee(r){return JSON.stringify(r,null,2)}function te(r){return r.map(t=>JSON.stringify(t)).join(`
|
|
3
|
-
`)+`
|
|
4
|
-
`}function ne(r){const n=["id","subtype","occurredAt","occurredAtIso","actor","place","adapter","summary","contentJson","extraJson"].join(","),e=r.map(o=>{const l=Number.isFinite(o.occurredAt)?o.occurredAt:null,a=l?new Date(l).toISOString():"",s=o.source&&o.source.adapter||"",i=o.content&&(o.content.text||o.content.title||o.content.subject)||"";return[o.id||"",o.subtype||"",l!=null?String(l):"",a,o.actor||"",o.place||"",s,i,o.content?JSON.stringify(o.content):"",o.extra?JSON.stringify(o.extra):""].map(Ie).join(",")});return[n,...e].join(`
|
|
5
|
-
`)+`
|
|
6
|
-
`}function Ie(r){const t=String(r??"");return t.includes(",")||t.includes('"')||t.includes(`
|
|
7
|
-
`)||t.includes("\r")?'"'+t.replace(/"/g,'""')+'"':t}function re(r,t,n="application/octet-stream"){if(typeof window>"u"||typeof document>"u")return t;const e=new Blob([r],{type:n}),o=URL.createObjectURL(e),l=document.createElement("a");return l.href=o,l.download=t,document.body.appendChild(l),l.click(),document.body.removeChild(l),setTimeout(()=>URL.revokeObjectURL(o),1e3),t}function oe(r,t=null){const n=new Date,e=n.getFullYear(),o=String(n.getMonth()+1).padStart(2,"0"),l=String(n.getDate()).padStart(2,"0"),a=r==="ndjson"?"ndjson":r,s=t?`-${t}`:"";return`pdh-events-${e}-${o}-${l}${s}.${a}`}const Pe={__name:"ExportDropdown",props:{events:{type:Array,required:!0},category:{type:String,default:null}},setup(r,{expose:t}){t();const n=r,e=w(()=>n.events.length>0),o={json:"application/json;charset=utf-8",ndjson:"application/x-ndjson;charset=utf-8",csv:"text/csv;charset=utf-8"};function l(i){switch(i){case"json":return ee(n.events);case"ndjson":return te(n.events);case"csv":return ne(n.events);default:throw new Error(`unknown format: ${i}`)}}function a({key:i}){try{const d=l(i),_=oe(i,n.category);re(d,_,o[i]),P.success(`已导出 ${n.events.length} 条到 ${_}`)}catch(d){P.error(`导出失败: ${d.message||d}`)}}const s={props:n,hasResults:e,MIME:o,serialize:l,onClick:a,computed:w,get DownloadOutlined(){return _e},get DownOutlined(){return me},get message(){return P},get eventsToJson(){return ee},get eventsToNdjson(){return te},get eventsToCsv(){return ne},get downloadAs(){return re},get suggestFilename(){return oe}};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}};function qe(r,t,n,e,o,l){const a=y("a-button"),s=y("a-menu-item"),i=y("a-menu"),d=y("a-dropdown");return u(),C(d,{disabled:!e.hasResults},{overlay:m(()=>[c(i,{onClick:e.onClick},{default:m(()=>[c(s,{key:"json"},{default:m(()=>[...t[0]||(t[0]=[b("JSON (.json)",-1)])]),_:1}),c(s,{key:"ndjson"},{default:m(()=>[...t[1]||(t[1]=[b("NDJSON (.ndjson)",-1)])]),_:1}),c(s,{key:"csv"},{default:m(()=>[...t[2]||(t[2]=[b("CSV (.csv)",-1)])]),_:1})]),_:1})]),default:m(()=>[c(a,{disabled:!e.hasResults},{icon:m(()=>[c(e.DownloadOutlined)]),default:m(()=>[b(" 导出 ("+R(n.events.length)+") ",1),c(e.DownOutlined)]),_:1},8,["disabled"])]),_:1},8,["disabled"])}const Be=D(Pe,[["render",qe],["__file","/tmp/cc-web-panel-heolxZ/repo/packages/web-panel/src/components/pdh/ExportDropdown.vue"]]),Ve={__name:"PdhVaultBrowser",setup(r,{expose:t}){t();const n=X(),e=w(()=>n.filters.q?`没有匹配 "${n.filters.q}" 的事件 — 试试更短的关键词或换个类目`:n.filters.category?`「${N(n.filters.category)}」类目下还没有数据 — 去采集页同步对应 adapter`:"Vault 里还没有数据 — 去「个人数据中台」页面同步任意 adapter");function o(s){n.filters.category=s,n.search()}function l(s,i){n.setFilter(s,i)}J(()=>{!n.hasResults&&!n.isLoading&&n.search()});const a={store:n,emptyHint:e,onCategorySelect:o,onSetFilter:l,onMounted:J,computed:w,get ReloadOutlined(){return ge},get usePdhBrowserStore(){return X},get categoryLabel(){return N},CategorySidebar:ke,SearchFilterBar:Le,RendererDispatcher:Te,ExportDropdown:Be};return Object.defineProperty(a,"__isScriptSetup",{enumerable:!1,value:!0}),a}},Ne={class:"pdh-browser-page"},Me={class:"page-header"},Je={class:"main-pane"},Ue={class:"results-summary"},ze={key:0},Qe={key:0},Ge={key:1},Ze={class:"loaded-of"},He={class:"results-list"},Ke={key:2,class:"load-more"};function We(r,t,n,e,o,l){const a=y("a-tag"),s=y("a-button"),i=y("a-space"),d=y("a-col"),_=y("a-spin"),j=y("a-alert"),A=y("a-empty"),h=y("a-row");return u(),O("div",Ne,[v("div",Me,[t[6]||(t[6]=v("div",null,[v("h2",{class:"page-title"},"数据浏览器"),v("p",{class:"page-sub"}," Vault 里所有已采集的数据,按类目浏览 / 全文检索 / 时间窗口筛选。 完全离线,不外传。 ")],-1)),c(i,null,{default:m(()=>[e.store.mode==="fts5"?(u(),C(a,{key:0,color:"green"},{default:m(()=>[...t[3]||(t[3]=[b("FTS5 trigram",-1)])]),_:1})):e.store.mode==="like"?(u(),C(a,{key:1,color:"orange"},{default:m(()=>[...t[4]||(t[4]=[b("LIKE 兜底",-1)])]),_:1})):x("v-if",!0),c(e.ExportDropdown,{events:e.store.results,category:e.store.filters.category},null,8,["events","category"]),c(s,{onClick:t[0]||(t[0]=g=>e.store.search()),loading:e.store.isLoading},{icon:m(()=>[c(e.ReloadOutlined)]),default:m(()=>[t[5]||(t[5]=b(" 刷新 ",-1))]),_:1},8,["loading"])]),_:1})]),c(h,{gutter:16,class:"browser-layout"},{default:m(()=>[c(d,{xs:24,sm:24,md:6,lg:5,xl:4},{default:m(()=>[c(e.CategorySidebar,{selected:e.store.filters.category,facets:e.store.facets,onSelect:e.onCategorySelect},null,8,["selected","facets"])]),_:1}),c(d,{xs:24,sm:24,md:18,lg:19,xl:20},{default:m(()=>[v("div",Je,[c(e.SearchFilterBar,{filters:e.store.filters,facets:e.store.facets,"is-loading":e.store.isLoading,mode:e.store.mode,"short-query":e.store.shortQuery,onSetFilter:e.onSetFilter,onReset:t[1]||(t[1]=g=>{e.store.reset(),e.store.search()})},null,8,["filters","facets","is-loading","mode","short-query"]),v("div",Ue,[e.store.isLoading&&e.store.results.length===0?(u(),O("span",ze,[c(_,{size:"small"}),t[7]||(t[7]=b(" 载入中… ",-1))])):(u(),O(V,{key:1},[v("strong",null,R(e.store.facets.total),1),t[11]||(t[11]=b(" 条事件 ",-1)),e.store.filters.category?(u(),O("span",Qe,[t[8]||(t[8]=b(" / 当前类目 ",-1)),v("strong",null,R(e.categoryLabel(e.store.filters.category)),1),v("strong",null,R(e.store.facets.byCategory[e.store.filters.category]||0),1)])):x("v-if",!0),e.store.filters.q?(u(),O("span",Ge,[t[9]||(t[9]=b(' / 关键词 "',-1)),v("em",null,R(e.store.filters.q),1),t[10]||(t[10]=b('"',-1))])):x("v-if",!0),v("span",Ze," / 已显示 "+R(e.store.results.length),1)],64))]),e.store.error?(u(),C(j,{key:0,type:"error","show-icon":"",message:e.store.error,closable:"",style:{margin:"12px 0"}},null,8,["message"])):x("v-if",!0),!e.store.isLoading&&e.store.results.length===0&&!e.store.error?(u(),C(A,{key:1,description:e.emptyHint,style:{"margin-top":"40px"}},null,8,["description"])):x("v-if",!0),v("div",He,[(u(!0),O(V,null,se(e.store.results,(g,k)=>(u(),C(e.RendererDispatcher,{key:`r-${k}-${g.id}`,event:g},null,8,["event"]))),128))]),e.store.canLoadMore?(u(),O("div",Ke,[c(s,{loading:e.store.isAppending,onClick:t[2]||(t[2]=g=>e.store.loadMore()),block:""},{default:m(()=>[...t[12]||(t[12]=[b(" 加载下一页 (50 条) ",-1)])]),_:1},8,["loading"])])):x("v-if",!0)])]),_:1})]),_:1})])}const tt=D(Ve,[["render",We],["__scopeId","data-v-0f7c02cd"],["__file","/tmp/cc-web-panel-heolxZ/repo/packages/web-panel/src/views/PdhVaultBrowser.vue"]]);export{tt as default};
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{I as m,J as f,U as B,c as o,K as s,o as ee,r as y,P as r,Q as h,V as p,S as I,R as _,F as M,Z as G}from"./vendor-BvqAck49.js";import{_ as ae,u as te,d as Z}from"./index-BcRDjaEi.js";import{R as se,A as oe,f as le,Y as ie}from"./icons-DP3uiYxy.js";const re={__name:"Permissions",setup(ne,{expose:c}){c();const R=te(),e=y("roles"),z=y(!1);async function Q(){z.value=!0;try{e.value==="roles"?await w():e.value==="audit"&&await u()}finally{z.value=!1}}function S(t){t==="roles"&&b.value.length===0&&w(),t==="audit"&&P.value.length===0&&u()}const O=y(!1),b=y([]),U=[{title:"角色名",key:"name",dataIndex:"name",width:"160px"},{title:"描述",key:"description",dataIndex:"description",width:"240px"},{title:"权限",key:"permissions",dataIndex:"permissions"},{title:"用户数",key:"userCount",dataIndex:"userCount",width:"100px"}];async function w(){O.value=!0;try{const{output:t}=await R.execute("auth roles --json",15e3);b.value=D(t,A)}catch(t){Z.error("加载角色列表失败: "+t.message)}finally{O.value=!1}}function A(t){const a=[],i=t.split(`
|
|
2
|
-
`);for(const v of i){const l=v.trim();if(!l||l.startsWith("─")||l.match(/^Role/i))continue;const d=l.split(/\s*[|│]\s*/);d.length>=2?a.push({key:a.length,name:d[0]||"-",description:d[1]||"",permissions:d[2]?d[2].split(/[,;\s]+/).filter(Boolean):[],userCount:d[3]&&parseInt(d[3],10)||0}):l.length>2&&a.push({key:a.length,name:l.slice(0,60),description:"",permissions:[],userCount:0})}return a}const T=y(""),C=y(""),j=y(!1),L=y(null),F=["note:read","note:write","admin:*","skill:execute"];async function E(){if(!(!T.value.trim()||!C.value.trim())){j.value=!0,L.value=null;try{const t=`auth check ${T.value.trim()} "${C.value.trim()}"`,{output:a}=await R.execute(t,15e3),i=a.toLowerCase(),v=i.includes("allow")||i.includes("granted")||i.includes("true")||i.includes("yes"),l=i.includes("denied")||i.includes("reject")||i.includes("false")||i.includes("no permission");L.value={allowed:v&&!l,detail:a.trim()||(v?"用户拥有该权限":"用户没有该权限")}}catch(t){L.value={allowed:!1,detail:"检查失败: "+t.message}}finally{j.value=!1}}}const N=y(!1),P=y([]),V=y([]),J=[{title:"时间",key:"timestamp",dataIndex:"timestamp",width:"180px"},{title:"事件",key:"event",dataIndex:"event",width:"200px"},{title:"用户",key:"user",dataIndex:"user",width:"120px"},{title:"级别",key:"level",dataIndex:"level",width:"80px"},{title:"详情",key:"detail",dataIndex:"detail",ellipsis:!0}];function n(t){return{info:"blue",warn:"orange",warning:"orange",error:"red",critical:"red"}[(t||"").toLowerCase()]||"default"}async function u(){N.value=!0;try{const[t,a]=await Promise.all([R.execute("audit log --json",15e3),R.execute("audit stats --json",15e3)]);P.value=D(t.output,W),V.value=Y(a.output)}catch(t){Z.error("加载审计日志失败: "+t.message)}finally{N.value=!1}}function W(t){const a=[],i=t.split(`
|
|
3
|
-
`);for(const v of i){const l=v.trim();if(!l||l.startsWith("─")||l.startsWith("Audit")||l.startsWith("Recent"))continue;const d=l.split(/\s*[|│]\s*/);if(d.length>=3){a.push({key:a.length,timestamp:d[0]||"-",event:d[1]||"-",user:d[2]||"-",level:d[3]||"info",detail:d.slice(4).join(" ")||""});continue}const x=l.match(/^(\d{4}-\d{2}-\d{2}[\sT]\d{2}:\d{2}(?::\d{2})?)\s+(.+)/);if(x){const k=x[2],g=k.match(/\b(INFO|WARN|WARNING|ERROR|CRITICAL)\b/i);a.push({key:a.length,timestamp:x[1],event:k.replace(/\b(INFO|WARN|WARNING|ERROR|CRITICAL)\b/i,"").trim().slice(0,80),user:"-",level:g?g[1].toLowerCase():"info",detail:""})}else l.length>3&&!l.match(/^\d+ event/i)&&a.push({key:a.length,timestamp:"-",event:l.slice(0,80),user:"-",level:"info",detail:""})}return a}function Y(t){const a=K(t);if(a&&typeof a=="object"&&!Array.isArray(a)){const x=["#1677ff","#52c41a","#faad14","#ff4d4f"];return Object.entries(a).slice(0,4).map(([k,g],q)=>({label:k,value:typeof g=="number"?g:String(g),color:x[q%x.length]}))}const i=[],v=t.split(`
|
|
4
|
-
`),l=["#1677ff","#52c41a","#faad14","#ff4d4f"];let d=0;for(const x of v){const k=x.trim();if(!k||k.startsWith("─")||k.startsWith("Audit"))continue;const g=k.match(/^(.+?)\s*[:=]\s*(.+)$/);if(g){const q=g[1].trim(),X=g[2].trim(),$=X.match(/^(\d+)/);i.push({label:q,value:$?parseInt($[1],10):X,color:l[d%l.length]}),d++}}return i.length===0&&i.push({label:"总事件数",value:P.value.length,color:"#1677ff"},{label:"状态",value:"就绪",color:"#52c41a"}),i}function K(t){try{const a=t.indexOf("[")!==-1?t.indexOf("["):t.indexOf("{");if(a===-1)return null;const i=t.lastIndexOf("]")!==-1?t.lastIndexOf("]")+1:t.lastIndexOf("}")+1;return JSON.parse(t.slice(a,i))}catch{return null}}function D(t,a){const i=K(t);return Array.isArray(i)?i.map((v,l)=>({key:l,...v})):a(t)}ee(()=>{w()});const H={ws:R,activeTab:e,refreshing:z,refreshCurrentTab:Q,onTabChange:S,rolesLoading:O,rolesList:b,rolesColumns:U,loadRoles:w,parseRolesText:A,checkUserId:T,checkPermission:C,checking:j,checkResult:L,quickPermissions:F,doCheck:E,auditLoading:N,auditEvents:P,auditStats:V,auditColumns:J,levelColor:n,loadAudit:u,parseAuditLogText:W,parseAuditStatsOutput:Y,tryParseJson:K,parseJsonOutput:D,ref:y,onMounted:ee,get LockOutlined(){return ie},get CheckCircleOutlined(){return le},get AuditOutlined(){return oe},get ReloadOutlined(){return se},get message(){return Z},get useWsStore(){return te}};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:{"text-align":"center",padding:"60px"}},de={key:0,style:{color:"#e0e0e0","font-weight":"500"}},me={key:1,style:{color:"var(--text-secondary)"}},fe={key:0,style:{"margin-top":"16px"}},pe={key:0,style:{"text-align":"center",padding:"60px"}},ye={key:0,style:{color:"var(--text-secondary)","font-size":"12px","font-family":"monospace"}},_e={key:1,style:{color:"#e0e0e0"}},ve={key:2,style:{color:"var(--text-secondary)"}},ge={key:4,style:{color:"var(--text-muted)","font-size":"12px"}};function he(ne,c,R,e,z,Q){const S=m("a-button"),O=m("a-spin"),b=m("a-tag"),U=m("a-empty"),w=m("a-table"),A=m("a-tab-pane"),T=m("a-input"),C=m("a-form-item"),j=m("a-space"),L=m("a-form"),F=m("a-alert"),E=m("a-card"),N=m("a-statistic"),P=m("a-col"),V=m("a-row"),J=m("a-tabs");return r(),f("div",null,[B("div",ce,[c[4]||(c[4]=B("div",null,[B("h2",{class:"page-title"},"权限管理"),B("p",{class:"page-sub"},"角色 / 权限检查 / 审计")],-1)),o(S,{type:"primary",ghost:"",loading:e.refreshing,onClick:e.refreshCurrentTab},{icon:s(()=>[o(e.ReloadOutlined)]),default:s(()=>[c[3]||(c[3]=h(" 刷新 ",-1))]),_:1},8,["loading"])]),o(J,{activeKey:e.activeTab,"onUpdate:activeKey":c[2]||(c[2]=n=>e.activeTab=n),type:"card",onChange:e.onTabChange},{default:s(()=>[p(" Tab 1: Roles "),o(A,{key:"roles"},{tab:s(()=>[o(e.LockOutlined),c[5]||(c[5]=h(" 角色列表 ",-1))]),default:s(()=>[e.rolesLoading?(r(),f("div",ue,[o(O,{size:"large"})])):(r(),I(w,{key:1,columns:e.rolesColumns,"data-source":e.rolesList,pagination:{pageSize:20,showTotal:n=>`共 ${n} 条`},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"perm-row"},{bodyCell:s(({column:n,record:u})=>[n.key==="name"?(r(),f("span",de,_(u.name),1)):p("v-if",!0),n.key==="description"?(r(),f("span",me,_(u.description),1)):p("v-if",!0),n.key==="permissions"?(r(),f(M,{key:2},[(r(!0),f(M,null,G((u.permissions||[]).slice(0,5),W=>(r(),I(b,{key:W,color:"blue",style:{"margin-bottom":"2px"}},{default:s(()=>[h(_(W),1)]),_:2},1024))),128)),(u.permissions||[]).length>5?(r(),I(b,{key:0,color:"default"},{default:s(()=>[h(" +"+_(u.permissions.length-5),1)]),_:2},1024)):p("v-if",!0)],64)):p("v-if",!0),n.key==="userCount"?(r(),I(b,{key:3,color:u.userCount>0?"green":"default"},{default:s(()=>[h(_(u.userCount??0),1)]),_:2},1032,["color"])):p("v-if",!0)]),emptyText:s(()=>[o(U,{description:"暂无角色数据"})]),_:1},8,["data-source","pagination"]))]),_:1}),p(" Tab 2: Permission Check "),o(A,{key:"check"},{tab:s(()=>[o(e.CheckCircleOutlined),c[6]||(c[6]=h(" 权限检查 ",-1))]),default:s(()=>[o(E,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","max-width":"640px"}},{default:s(()=>[o(L,{"label-col":{span:5},"wrapper-col":{span:19}},{default:s(()=>[o(C,{label:"用户 ID",required:""},{default:s(()=>[o(T,{value:e.checkUserId,"onUpdate:value":c[0]||(c[0]=n=>e.checkUserId=n),placeholder:"输入用户 ID"},null,8,["value"])]),_:1}),o(C,{label:"权限",required:""},{default:s(()=>[o(T,{value:e.checkPermission,"onUpdate:value":c[1]||(c[1]=n=>e.checkPermission=n),placeholder:"note:read"},null,8,["value"])]),_:1}),o(C,{"wrapper-col":{offset:5,span:19}},{default:s(()=>[o(j,{wrap:""},{default:s(()=>[o(S,{type:"primary",loading:e.checking,disabled:!e.checkUserId.trim()||!e.checkPermission.trim(),onClick:e.doCheck},{icon:s(()=>[o(e.CheckCircleOutlined)]),default:s(()=>[c[7]||(c[7]=h(" 检查权限 ",-1))]),_:1},8,["loading","disabled"]),(r(),f(M,null,G(e.quickPermissions,n=>o(S,{key:n,size:"small",onClick:u=>e.checkPermission=n},{default:s(()=>[h(_(n),1)]),_:2},1032,["onClick"])),64))]),_:1})]),_:1})]),_:1}),e.checkResult!==null?(r(),f("div",fe,[o(F,{message:e.checkResult.allowed?"权限允许":"权限拒绝",description:e.checkResult.detail,type:e.checkResult.allowed?"success":"error","show-icon":""},null,8,["message","description","type"])])):p("v-if",!0)]),_:1})]),_:1}),p(" Tab 3: Audit Logs "),o(A,{key:"audit"},{tab:s(()=>[o(e.AuditOutlined),c[8]||(c[8]=h(" 审计日志 ",-1))]),default:s(()=>[o(V,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:s(()=>[(r(!0),f(M,null,G(e.auditStats,n=>(r(),I(P,{xs:12,sm:6,key:n.label},{default:s(()=>[o(E,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"},size:"small"},{default:s(()=>[o(N,{title:n.label,value:n.value,"value-style":{color:n.color,fontSize:"20px"}},null,8,["title","value","value-style"])]),_:2},1024)]),_:2},1024))),128))]),_:1}),e.auditLoading?(r(),f("div",pe,[o(O,{size:"large"})])):(r(),I(w,{key:1,columns:e.auditColumns,"data-source":e.auditEvents,pagination:{pageSize:20,showTotal:n=>`共 ${n} 条`},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"perm-row"},{bodyCell:s(({column:n,record:u})=>[n.key==="timestamp"?(r(),f("span",ye,_(u.timestamp),1)):p("v-if",!0),n.key==="event"?(r(),f("span",_e,_(u.event),1)):p("v-if",!0),n.key==="user"?(r(),f("span",ve,_(u.user),1)):p("v-if",!0),n.key==="level"?(r(),I(b,{key:3,color:e.levelColor(u.level)},{default:s(()=>[h(_(u.level),1)]),_:2},1032,["color"])):p("v-if",!0),n.key==="detail"?(r(),f("span",ge,_(u.detail),1)):p("v-if",!0)]),emptyText:s(()=>[o(U,{description:"暂无审计日志"})]),_:1},8,["data-source","pagination"]))]),_:1})]),_:1},8,["activeKey"])])}const we=ae(re,[["render",he],["__scopeId","data-v-73bcb987"],["__file","/tmp/cc-web-panel-heolxZ/repo/packages/web-panel/src/views/Permissions.vue"]]);export{we as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as m,J as b,U as v,R as p,c as i,K as n,V as d,S as g,o as pe,a as ce,b as W,r as A,P as s,Q as f,F as h,Z as F,_ as Oe}from"./vendor-BvqAck49.js";import{_ as Le,u as ue,b as de,d as x}from"./index-BcRDjaEi.js";import{s as be}from"./community-parser-CO25nZFt.js";import{a0 as ze,d as Be,L as Ee,f as Fe,Y as De,aU as Re,z as Ne,a4 as Me,G as je,ap as we,_ as Ie,as as Ue,R as Ge}from"./icons-DP3uiYxy.js";function Y(t){const o=be(t);if(!o)return null;try{return JSON.parse(o)}catch{}const r=o.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!r)return null;try{return JSON.parse(r[0])}catch{return null}}const _e=Object.freeze(["pending","running","paused","completed","failed","cancelled"]),Je=Object.freeze(["pending","running","gate-waiting","completed","failed","skipped"]),qe=Object.freeze(["requirement","architecture","code-generation","testing","code-review","deploy","monitoring"]),ve=Object.freeze(["feature","bugfix","refactor","security-audit"]),Ve=Object.freeze(["git-pr","docker","npm-publish","local","staging","custom"]),Ke=Object.freeze(["code-review","deploy"]);function N(t,o=0){return typeof t=="number"&&Number.isFinite(t)?t:o}function ie(t){if(!t)return{noDb:!1,error:""};const o=be(t),r=/No database/i.test(o);return{noDb:r,error:r?"No database":""}}function We(t,o=0){if(!t||typeof t!="object")return null;const r=t.id||"";return r?{key:r,id:r,pipelineId:String(t.pipelineId||""),stageIndex:N(t.stageIndex,o),name:String(t.name||""),status:String(t.status||"pending").toLowerCase(),gateRequired:!!t.gateRequired,gateApproved:!!t.gateApproved,gateRejectReason:t.gateRejectReason||"",input:t.input??null,output:t.output??null,errorMessage:t.errorMessage||"",startedAt:t.startedAt??null,completedAt:t.completedAt??null,_idx:o}:null}function Ye(t,o=0){if(!t||typeof t!="object")return null;const r=t.id||"";if(!r)return null;const e=Array.isArray(t.stages)?t.stages.map(We).filter(Boolean):[];return{key:r,id:r,name:t.name||"",template:String(t.template||""),config:t.config??null,status:String(t.status||"pending").toLowerCase(),currentStage:N(t.currentStage,0),result:t.result??null,errorMessage:t.errorMessage||"",createdAt:t.createdAt??null,updatedAt:t.updatedAt??null,startedAt:t.startedAt??null,completedAt:t.completedAt??null,stages:e,_idx:o}}function fe(t){const o=Y(t);return Array.isArray(o)?o.map(Ye).filter(Boolean):[]}function Ze(t,o=0){if(!t||typeof t!="object")return null;const r=t.id||"";return r?{key:r,id:r,pipelineId:String(t.pipelineId||""),strategy:String(t.strategy||"").toLowerCase(),config:t.config??null,status:String(t.status||"pending").toLowerCase(),result:t.result??null,errorMessage:t.errorMessage||"",rolledBackAt:t.rolledBackAt??null,rollbackReason:t.rollbackReason||"",createdAt:t.createdAt??null,completedAt:t.completedAt??null,_idx:o}:null}function ge(t){const o=Y(t);return Array.isArray(o)?o.map(Ze).filter(Boolean):[]}function He(t,o=0){if(!t||typeof t!="object")return null;const r=t.name||"";return r?{key:r,name:r,description:String(t.description||""),stages:Array.isArray(t.stages)?t.stages.filter(e=>typeof e=="string"):[],gateStages:Array.isArray(t.gateStages)?t.gateStages.filter(e=>typeof e=="string"):[],_idx:o}:null}function me(t){const o=Y(t);return Array.isArray(o)?o.map(He).filter(Boolean):[]}const Qe={totalPipelines:0,pipelinesByTemplate:{},pipelinesByStatus:{},totalStages:0,stagesByStatus:{},totalArtifacts:0,totalDeploys:0,deploysByStrategy:{}};function ye(t){const o=JSON.parse(JSON.stringify(Qe));for(const e of ve)o.pipelinesByTemplate[e]=0;for(const e of _e)o.pipelinesByStatus[e]=0;for(const e of Je)o.stagesByStatus[e]=0;for(const e of Ve)o.deploysByStrategy[e]=0;const r=Y(t);if(!r||typeof r!="object"||Array.isArray(r))return o;if(o.totalPipelines=N(r.totalPipelines,0),o.totalStages=N(r.totalStages,0),o.totalArtifacts=N(r.totalArtifacts,0),o.totalDeploys=N(r.totalDeploys,0),r.pipelinesByTemplate&&typeof r.pipelinesByTemplate=="object")for(const[e,_]of Object.entries(r.pipelinesByTemplate))typeof _=="number"&&Number.isFinite(_)&&(o.pipelinesByTemplate[e]=_);if(r.pipelinesByStatus&&typeof r.pipelinesByStatus=="object")for(const[e,_]of Object.entries(r.pipelinesByStatus))typeof _=="number"&&Number.isFinite(_)&&(o.pipelinesByStatus[e]=_);if(r.stagesByStatus&&typeof r.stagesByStatus=="object")for(const[e,_]of Object.entries(r.stagesByStatus))typeof _=="number"&&Number.isFinite(_)&&(o.stagesByStatus[e]=_);if(r.deploysByStrategy&&typeof r.deploysByStrategy=="object")for(const[e,_]of Object.entries(r.deploysByStrategy))typeof _=="number"&&Number.isFinite(_)&&(o.deploysByStrategy[e]=_);return o}function Xe(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 $e={__name:"Pipeline",setup(t,{expose:o}){o();const r=ue(),{t:e}=de(),_=A(!1),I=A(!1),C=A([]),U=A([]),G=A([]),L=A({totalPipelines:0,pipelinesByTemplate:{},pipelinesByStatus:{},totalStages:0,stagesByStatus:{},totalArtifacts:0,totalDeploys:0,deploysByStrategy:{}}),P=A({noDb:!1,error:""}),z=A("pipelines"),D=A(""),B=A(""),M=A(!1),k=A(!1),S=ce({template:"feature",name:"",configJson:""}),J=A(null),q=W(()=>[{title:e("pipeline.cols.name"),key:"name"},{title:e("pipeline.cols.template"),key:"template",width:"110px"},{title:e("pipeline.cols.progress"),key:"progress",width:"160px"},{title:e("pipeline.cols.currentStage"),key:"currentStage",width:"140px"},{title:e("pipeline.cols.status"),key:"status",width:"110px"},{title:e("pipeline.cols.createdAt"),key:"createdAt",width:"160px"},{title:e("pipeline.cols.action"),key:"action",width:"260px"}]),j=W(()=>[{title:e("pipeline.cols.pipeline"),key:"pipeline",width:"180px"},{title:e("pipeline.cols.strategy"),key:"strategy",width:"120px"},{title:e("pipeline.cols.status"),key:"status",width:"110px"},{title:e("pipeline.cols.createdAt"),key:"createdAt"}]),Z=W(()=>{let a=C.value;return D.value&&(a=a.filter(u=>u.template===D.value)),B.value&&(a=a.filter(u=>u.status===B.value)),a});function H(a){const u=`pipeline.templateLabels.${a}`,y=e(u);return y===u?a:y}function Q(a){return{feature:"green",bugfix:"red",refactor:"purple","security-audit":"volcano"}[a]||"default"}function w(a){const u=`pipeline.stageLabels.${a}`,y=e(u);return y===u?a:y}function X(a){const u=`pipeline.pipelineStatusLabels.${a}`,y=e(u);return y===u?a:y}function $(a){return{pending:"default",running:"processing",paused:"orange",completed:"green",failed:"red",cancelled:"default"}[a]||"default"}function ee(a){const u=`pipeline.stageStatusLabels.${a}`,y=e(u);return y===u?a:y}function V(a){return{pending:"default",running:"processing","gate-waiting":"gold",completed:"green",failed:"red",skipped:"default"}[a]||"default"}function E(a){const u=`pipeline.deployStatusLabels.${a}`,y=e(u);return y===u?a:y}function te(a){return{pending:"default",running:"processing",succeeded:"green",failed:"red","rolled-back":"orange"}[a]||"default"}function le(a){return{"git-pr":"blue",docker:"cyan","npm-publish":"magenta",local:"default",staging:"orange",custom:"purple"}[a]||"default"}function ae(a){return{pending:"gray",running:"blue","gate-waiting":"gold",completed:"green",failed:"red",skipped:"gray"}[a]||"gray"}function l(a){if(!a.stages.length)return 0;const u=a.stages.filter(y=>y.status==="completed").length;return Math.round(100*u/a.stages.length)}function c(a){if(!a.stages.length)return null;const u=Math.min(a.currentStage,a.stages.length-1);return a.stages[u]||null}function T(a){if(a.status!=="running")return!1;const u=c(a);return u&&u.status==="gate-waiting"&&u.gateRequired&&!u.gateApproved}function Se(a){return a.status==="pending"||a.status==="running"||a.status==="paused"}async function K(){_.value=!0,P.value={noDb:!1,error:""};try{const[a,u,y,O]=await Promise.all([r.execute("pipeline list",1e4).catch(()=>({output:""})),r.execute("pipeline deploys",1e4).catch(()=>({output:""})),r.execute("pipeline templates",8e3).catch(()=>({output:""})),r.execute("pipeline stats",8e3).catch(()=>({output:""}))]),se=[a,u,O].map(ne=>ie(ne.output)).find(ne=>ne.noDb);se&&(P.value=se),C.value=fe(a.output),U.value=ge(u.output),G.value=me(y.output),L.value=ye(O.output)}catch(a){x.error(e("pipeline.msg.loadFailed")+": "+(a?.message||a))}finally{_.value=!1}}async function ke(){if(!S.template){x.warning(e("pipeline.msg.selectTemplate"));return}if(S.configJson.trim())try{JSON.parse(S.configJson)}catch{x.warning(e("pipeline.msg.badConfigJson"));return}I.value=!0;try{const a=[`pipeline create --template ${S.template}`];S.name.trim()&&a.push(`--name "${S.name.trim().replace(/"/g,'\\"')}"`),S.configJson.trim()&&a.push(`--config '${S.configJson.trim().replace(/'/g,"'\\''")}'`);const{output:u}=await r.execute(a.join(" "),1e4);if(ie(u).noDb){x.error(e("pipeline.msg.needCcInit"));return}if(/error|Error|失败/i.test(u)&&!/"id"/.test(u)){x.error(e("pipeline.msg.createFailed")+": "+u.slice(0,120));return}x.success(e("pipeline.msg.createSuccess")),M.value=!1,oe(),await K()}catch(a){x.error(e("pipeline.msg.createFailed")+": "+(a?.message||a))}finally{I.value=!1}}async function Ae(a){await R(a,`pipeline start ${a.id}`,e("pipeline.msg.started"))}async function Ce(a){await R(a,`pipeline pause ${a.id}`,e("pipeline.msg.paused"))}async function Pe(a){await R(a,`pipeline resume ${a.id}`,e("pipeline.msg.resumed"))}async function he(a){await R(a,`pipeline approve ${a.id}`,e("pipeline.msg.gateApproved"))}async function xe(a){await R(a,`pipeline cancel ${a.id}`,e("pipeline.msg.cancelled"))}async function R(a,u,y){try{const{output:O}=await r.execute(u,8e3);if(/error|Error|失败/i.test(O)&&!/"id"/.test(O)){x.error(e("pipeline.msg.actionFailed")+": "+O.slice(0,120));return}x.success(y),await K()}catch(O){x.error(e("pipeline.msg.actionFailed")+": "+(O?.message||O))}}function Te(a){J.value=a,k.value=!0}function oe(){S.template="feature",S.name="",S.configJson=""}pe(K);const re={ws:r,t:e,loading:_,creating:I,pipelines:C,deploys:U,templates:G,stats:L,errorState:P,activeTab:z,templateFilter:D,statusFilter:B,showCreateModal:M,showDetailsModal:k,createForm:S,currentPipeline:J,pipelineColumns:q,deployColumns:j,filteredPipelines:Z,templateLabel:H,templateColor:Q,stageLabel:w,pipelineStatusLabel:X,pipelineStatusColor:$,stageStatusLabel:ee,stageStatusColor:V,deployStatusLabel:E,deployStatusColor:te,strategyColor:le,timelineColor:ae,pipelineProgress:l,currentStageRecord:c,needsApproval:T,canCancel:Se,loadAll:K,createPipeline:ke,startPipeline:Ae,pausePipeline:Ce,resumePipeline:Pe,approveGate:he,cancelPipeline:xe,runPipelineAction:R,viewPipelineDetails:Te,resetCreateForm:oe,ref:A,computed:W,onMounted:pe,reactive:ce,get ReloadOutlined(){return Ge},get PlusOutlined(){return Ue},get ApartmentOutlined(){return Ie},get PlayCircleOutlined(){return we},get BlockOutlined(){return je},get FileTextOutlined(){return Me},get CloudUploadOutlined(){return Ne},get ArrowRightOutlined(){return Re},get LockOutlined(){return De},get CheckCircleOutlined(){return Fe},get LoadingOutlined(){return Ee},get CloseCircleOutlined(){return Be},get ClockCircleOutlined(){return ze},get message(){return x},get useI18n(){return de},get useWsStore(){return ue},get parsePipelines(){return fe},get parseDeploys(){return ge},get parseTemplates(){return me},get parseStats(){return ye},get detectPipelineError(){return ie},get formatPipelineTime(){return Xe},get PIPELINE_STATUSES(){return _e},get STAGE_NAMES(){return qe},get TEMPLATES(){return ve},get GATE_STAGES(){return Ke}};return Object.defineProperty(re,"__isScriptSetup",{enumerable:!1,value:!0}),re}},et={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},tt={class:"page-title"},lt={class:"page-sub"},at={class:"stage-flow"},nt={class:"stage-idx"},it={class:"filter-bar"},ot={style:{color:"var(--text-primary)","font-weight":"500"}},rt={style:{color:"var(--text-secondary)","font-size":"11px","font-family":"monospace","margin-top":"2px"}},st={key:1,style:{color:"var(--text-muted)"}},pt={key:5,style:{color:"var(--text-secondary)","font-size":"11px"}},ct={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},ut={key:0,style:{color:"var(--text-primary)","font-family":"monospace","font-size":"12px"}},dt={key:3,style:{color:"var(--text-secondary)","font-size":"11px"}},ft={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},gt={style:{color:"var(--text-secondary)","font-size":"12px",margin:"0 0 10px"}},mt={class:"tpl-stages"},yt={key:0,style:{"padding-top":"8px"}},bt={style:{color:"var(--text-primary)","font-size":"13px",margin:"20px 0 10px"}},_t={style:{display:"flex","align-items":"center",gap:"8px","flex-wrap":"wrap"}},vt={style:{color:"var(--text-primary)","font-weight":"500"}},St={key:0,style:{color:"#52c41a","margin-left":"4px"}},kt={key:0,style:{color:"#ff4d4f","font-size":"11px","margin-top":"4px"}},At={key:1,style:{color:"var(--text-secondary)","font-size":"11px","margin-top":"2px"}},Ct={key:0};function Pt(t,o,r,e,_,I){const C=m("a-button"),U=m("a-space"),G=m("a-alert"),L=m("a-statistic"),P=m("a-card"),z=m("a-col"),D=m("a-row"),B=m("a-radio-button"),M=m("a-radio-group"),k=m("a-tag"),S=m("a-progress"),J=m("a-popconfirm"),q=m("a-table"),j=m("a-tab-pane"),Z=m("a-tabs"),H=m("a-select-option"),Q=m("a-select"),w=m("a-form-item"),X=m("a-input"),$=m("a-textarea"),ee=m("a-form"),V=m("a-modal"),E=m("a-descriptions-item"),te=m("a-descriptions"),le=m("a-timeline-item"),ae=m("a-timeline");return s(),b("div",null,[v("div",et,[v("div",null,[v("h2",tt,p(t.$t("pipeline.title")),1),v("p",lt,p(t.$t("pipeline.subtitle")),1)]),i(U,null,{default:n(()=>[i(C,{loading:e.loading,onClick:e.loadAll},{icon:n(()=>[i(e.ReloadOutlined)]),default:n(()=>[f(" "+p(t.$t("pipeline.refresh")),1)]),_:1},8,["loading"]),i(C,{type:"primary",onClick:o[0]||(o[0]=l=>e.showCreateModal=!0)},{icon:n(()=>[i(e.PlusOutlined)]),default:n(()=>[f(" "+p(t.$t("pipeline.create")),1)]),_:1})]),_:1})]),d(" noDb banner "),e.errorState.noDb?(s(),g(G,{key:0,type:"info","show-icon":"",message:t.$t("pipeline.noDb.message"),description:t.$t("pipeline.noDb.description"),style:{"margin-bottom":"16px"}},null,8,["message","description"])):d("v-if",!0),d(" Stat cards "),i(D,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:n(()=>[i(z,{xs:12,sm:8,lg:5},{default:n(()=>[i(P,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[i(L,{title:t.$t("pipeline.stats.totalPipelines"),value:e.stats.totalPipelines,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:n(()=>[i(e.ApartmentOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),i(z,{xs:12,sm:8,lg:5},{default:n(()=>[i(P,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[i(L,{title:t.$t("pipeline.stats.running"),value:e.stats.pipelinesByStatus.running||0,"value-style":{color:(e.stats.pipelinesByStatus.running||0)>0?"#52c41a":"#888",fontSize:"20px"}},{prefix:n(()=>[i(e.PlayCircleOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),i(z,{xs:12,sm:8,lg:5},{default:n(()=>[i(P,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[i(L,{title:t.$t("pipeline.stats.totalStages"),value:e.stats.totalStages,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:n(()=>[i(e.BlockOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),i(z,{xs:12,sm:8,lg:5},{default:n(()=>[i(P,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[i(L,{title:t.$t("pipeline.stats.totalArtifacts"),value:e.stats.totalArtifacts,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:n(()=>[i(e.FileTextOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),i(z,{xs:24,sm:8,lg:4},{default:n(()=>[i(P,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[i(L,{title:t.$t("pipeline.stats.totalDeploys"),value:e.stats.totalDeploys,"value-style":{color:"#faad14",fontSize:"20px"}},{prefix:n(()=>[i(e.CloudUploadOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),d(" Stages catalogue "),i(P,{title:t.$t("pipeline.stagesCardTitle"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:n(()=>[v("div",at,[(s(!0),b(h,null,F(e.STAGE_NAMES,(l,c)=>(s(),b(h,{key:l},[v("span",{class:Oe(["stage-pill",{"is-gate":e.GATE_STAGES.includes(l)}])},[v("span",nt,p(c+1),1),f(" "+p(e.stageLabel(l))+" ",1),e.GATE_STAGES.includes(l)?(s(),g(e.LockOutlined,{key:0,class:"gate-icon"})):d("v-if",!0)],2),c<e.STAGE_NAMES.length-1?(s(),g(e.ArrowRightOutlined,{key:0,class:"stage-arrow"})):d("v-if",!0)],64))),128))])]),_:1},8,["title"]),d(" Tabs "),i(Z,{activeKey:e.activeTab,"onUpdate:activeKey":o[3]||(o[3]=l=>e.activeTab=l),class:"pipeline-tabs"},{default:n(()=>[d(" ── Pipelines tab ─────────────────────────────────────────── "),i(j,{key:"pipelines",tab:t.$t("pipeline.tabs.pipelines")},{default:n(()=>[v("div",it,[i(M,{value:e.templateFilter,"onUpdate:value":o[1]||(o[1]=l=>e.templateFilter=l),size:"small","button-style":"solid"},{default:n(()=>[i(B,{value:""},{default:n(()=>[f(p(t.$t("pipeline.filters.allTemplates")),1)]),_:1}),(s(!0),b(h,null,F(e.TEMPLATES,l=>(s(),g(B,{key:l,value:l},{default:n(()=>[f(p(e.templateLabel(l)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),i(M,{value:e.statusFilter,"onUpdate:value":o[2]||(o[2]=l=>e.statusFilter=l),size:"small"},{default:n(()=>[i(B,{value:""},{default:n(()=>[f(p(t.$t("pipeline.filters.allStatuses")),1)]),_:1}),(s(!0),b(h,null,F(e.PIPELINE_STATUSES,l=>(s(),g(B,{key:l,value:l},{default:n(()=>[f(p(e.pipelineStatusLabel(l)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),i(q,{columns:e.pipelineColumns,"data-source":e.filteredPipelines,pagination:{pageSize:20,showTotal:l=>t.$t("pipeline.table.totalSuffix",{n:l})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:n(({column:l,record:c})=>[l.key==="name"?(s(),b(h,{key:0},[v("span",ot,p(c.name||t.$t("pipeline.table.unnamed")),1),v("div",rt,p(c.id.slice(0,16)),1)],64)):d("v-if",!0),l.key==="template"?(s(),g(k,{key:1,color:e.templateColor(c.template)},{default:n(()=>[f(p(e.templateLabel(c.template)),1)]),_:2},1032,["color"])):d("v-if",!0),l.key==="progress"?(s(),g(S,{key:2,percent:e.pipelineProgress(c),size:"small",status:c.status==="failed"?"exception":c.status==="completed"?"success":"active",format:()=>`${c.currentStage}/${c.stages.length}`},null,8,["percent","status","format"])):d("v-if",!0),l.key==="currentStage"?(s(),b(h,{key:3},[e.currentStageRecord(c)?(s(),g(k,{key:0,color:e.stageStatusColor(e.currentStageRecord(c).status)},{default:n(()=>[f(p(e.stageLabel(e.currentStageRecord(c).name)),1)]),_:2},1032,["color"])):(s(),b("span",st,"—"))],64)):d("v-if",!0),l.key==="status"?(s(),g(k,{key:4,color:e.pipelineStatusColor(c.status)},{default:n(()=>[f(p(e.pipelineStatusLabel(c.status)),1)]),_:2},1032,["color"])):d("v-if",!0),l.key==="createdAt"?(s(),b("span",pt,p(e.formatPipelineTime(c.createdAt)),1)):d("v-if",!0),l.key==="action"?(s(),b(h,{key:6},[i(C,{size:"small",type:"link",onClick:T=>e.viewPipelineDetails(c)},{default:n(()=>[f(p(t.$t("pipeline.table.actions.details")),1)]),_:1},8,["onClick"]),c.status==="pending"?(s(),g(C,{key:0,size:"small",type:"link",onClick:T=>e.startPipeline(c)},{default:n(()=>[f(p(t.$t("pipeline.table.actions.start")),1)]),_:1},8,["onClick"])):d("v-if",!0),c.status==="running"?(s(),g(C,{key:1,size:"small",type:"link",onClick:T=>e.pausePipeline(c)},{default:n(()=>[f(p(t.$t("pipeline.table.actions.pause")),1)]),_:1},8,["onClick"])):d("v-if",!0),c.status==="paused"?(s(),g(C,{key:2,size:"small",type:"link",onClick:T=>e.resumePipeline(c)},{default:n(()=>[f(p(t.$t("pipeline.table.actions.resume")),1)]),_:1},8,["onClick"])):d("v-if",!0),e.needsApproval(c)?(s(),g(C,{key:3,size:"small",type:"link",style:{color:"#52c41a"},onClick:T=>e.approveGate(c)},{default:n(()=>[f(p(t.$t("pipeline.table.actions.approveGate")),1)]),_:1},8,["onClick"])):d("v-if",!0),e.canCancel(c)?(s(),g(J,{key:4,title:t.$t("pipeline.table.cancelConfirm"),"ok-text":t.$t("pipeline.table.cancelOk"),"cancel-text":t.$t("pipeline.table.cancelBack"),onConfirm:T=>e.cancelPipeline(c)},{default:n(()=>[i(C,{size:"small",type:"link",danger:""},{default:n(()=>[f(p(t.$t("pipeline.table.actions.cancel")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])):d("v-if",!0)],64)):d("v-if",!0)]),emptyText:n(()=>[v("div",ct,[i(e.ApartmentOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),f(" "+p(e.templateFilter||e.statusFilter?t.$t("pipeline.table.emptyFiltered"):t.$t("pipeline.table.empty")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),d(" ── Deploys tab ───────────────────────────────────────────── "),i(j,{key:"deploys",tab:t.$t("pipeline.tabs.deploys")},{default:n(()=>[i(q,{columns:e.deployColumns,"data-source":e.deploys,pagination:{pageSize:20,showTotal:l=>t.$t("pipeline.table.totalSuffix",{n:l})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:n(({column:l,record:c})=>[l.key==="pipeline"?(s(),b("span",ut,p(c.pipelineId.slice(0,12)),1)):d("v-if",!0),l.key==="strategy"?(s(),g(k,{key:1,color:e.strategyColor(c.strategy),style:{"font-family":"monospace"}},{default:n(()=>[f(p(c.strategy),1)]),_:2},1032,["color"])):d("v-if",!0),l.key==="status"?(s(),g(k,{key:2,color:e.deployStatusColor(c.status)},{default:n(()=>[f(p(e.deployStatusLabel(c.status)),1)]),_:2},1032,["color"])):d("v-if",!0),l.key==="createdAt"?(s(),b("span",dt,p(e.formatPipelineTime(c.createdAt)),1)):d("v-if",!0)]),emptyText:n(()=>[v("div",ft,[i(e.CloudUploadOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),f(" "+p(t.$t("pipeline.table.emptyDeploys")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),d(" ── Templates tab ─────────────────────────────────────────── "),i(j,{key:"templates",tab:t.$t("pipeline.tabs.templates")},{default:n(()=>[i(D,{gutter:[16,16]},{default:n(()=>[(s(!0),b(h,null,F(e.templates,l=>(s(),g(z,{key:l.name,xs:24,sm:12,lg:12},{default:n(()=>[i(P,{title:e.templateLabel(l.name),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{extra:n(()=>[i(k,{color:e.templateColor(l.name)},{default:n(()=>[f(p(l.name),1)]),_:2},1032,["color"])]),default:n(()=>[v("p",gt,p(l.description),1),v("div",mt,[(s(!0),b(h,null,F(l.stages,(c,T)=>(s(),g(k,{key:c,color:l.gateStages.includes(c)?"gold":"blue",style:{"font-size":"11px"}},{default:n(()=>[f(p(T+1)+". "+p(e.stageLabel(c))+" ",1),l.gateStages.includes(c)?(s(),g(e.LockOutlined,{key:0,style:{"font-size":"10px","margin-left":"2px"}})):d("v-if",!0)]),_:2},1032,["color"]))),128))])]),_:2},1032,["title"])]),_:2},1024))),128))]),_:1})]),_:1},8,["tab"])]),_:1},8,["activeKey"]),d(" ── Create pipeline modal ────────────────────────────────── "),i(V,{open:e.showCreateModal,"onUpdate:open":o[7]||(o[7]=l=>e.showCreateModal=l),title:t.$t("pipeline.create_modal.title"),"confirm-loading":e.creating,width:540,"ok-text":t.$t("pipeline.create_modal.ok"),"cancel-text":t.$t("pipeline.create_modal.cancel"),onOk:e.createPipeline,onCancel:e.resetCreateForm},{default:n(()=>[i(ee,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:n(()=>[i(w,{label:t.$t("pipeline.create_modal.templateLabel"),required:""},{default:n(()=>[i(Q,{value:e.createForm.template,"onUpdate:value":o[4]||(o[4]=l=>e.createForm.template=l)},{default:n(()=>[(s(!0),b(h,null,F(e.TEMPLATES,l=>(s(),g(H,{key:l,value:l},{default:n(()=>[f(p(e.templateLabel(l)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),i(w,{label:t.$t("pipeline.create_modal.nameLabel")},{default:n(()=>[i(X,{value:e.createForm.name,"onUpdate:value":o[5]||(o[5]=l=>e.createForm.name=l),placeholder:t.$t("pipeline.create_modal.namePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),i(w,{label:t.$t("pipeline.create_modal.configLabel")},{default:n(()=>[i($,{value:e.createForm.configJson,"onUpdate:value":o[6]||(o[6]=l=>e.createForm.configJson=l),placeholder:t.$t("pipeline.create_modal.configPlaceholder"),"auto-size":{minRows:2,maxRows:5}},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),d(" ── Pipeline details modal ───────────────────────────────── "),i(V,{open:e.showDetailsModal,"onUpdate:open":o[8]||(o[8]=l=>e.showDetailsModal=l),title:t.$t("pipeline.details.title",{label:e.currentPipeline?.name||e.currentPipeline?.id?.slice(0,12)||""}),width:780,footer:null},{default:n(()=>[e.currentPipeline?(s(),b("div",yt,[i(te,{column:2,size:"small",bordered:""},{default:n(()=>[i(E,{label:t.$t("pipeline.details.template")},{default:n(()=>[i(k,{color:e.templateColor(e.currentPipeline.template)},{default:n(()=>[f(p(e.templateLabel(e.currentPipeline.template)),1)]),_:1},8,["color"])]),_:1},8,["label"]),i(E,{label:t.$t("pipeline.details.status")},{default:n(()=>[i(k,{color:e.pipelineStatusColor(e.currentPipeline.status)},{default:n(()=>[f(p(e.pipelineStatusLabel(e.currentPipeline.status)),1)]),_:1},8,["color"])]),_:1},8,["label"]),i(E,{label:t.$t("pipeline.details.progress"),span:2},{default:n(()=>[i(S,{percent:e.pipelineProgress(e.currentPipeline),status:e.currentPipeline.status==="failed"?"exception":e.currentPipeline.status==="completed"?"success":"active",size:"small"},null,8,["percent","status"])]),_:1},8,["label"]),i(E,{label:t.$t("pipeline.details.createdAt")},{default:n(()=>[f(p(e.formatPipelineTime(e.currentPipeline.createdAt)),1)]),_:1},8,["label"]),i(E,{label:t.$t("pipeline.details.startedAt")},{default:n(()=>[f(p(e.formatPipelineTime(e.currentPipeline.startedAt)),1)]),_:1},8,["label"])]),_:1}),v("h4",bt,p(t.$t("pipeline.details.stagesHeader")),1),i(ae,{mode:"left"},{default:n(()=>[(s(!0),b(h,null,F(e.currentPipeline.stages,l=>(s(),g(le,{key:l.id,color:e.timelineColor(l.status)},{dot:n(()=>[l.status==="completed"?(s(),g(e.CheckCircleOutlined,{key:0,style:{color:"#52c41a"}})):l.status==="running"?(s(),g(e.LoadingOutlined,{key:1,style:{color:"#1677ff"}})):l.status==="failed"?(s(),g(e.CloseCircleOutlined,{key:2,style:{color:"#ff4d4f"}})):l.status==="gate-waiting"?(s(),g(e.LockOutlined,{key:3,style:{color:"#faad14"}})):(s(),g(e.ClockCircleOutlined,{key:4,style:{color:"var(--text-muted)"}}))]),default:n(()=>[v("div",_t,[v("span",vt,p(l.stageIndex+1)+". "+p(e.stageLabel(l.name)),1),i(k,{color:e.stageStatusColor(l.status),style:{"font-size":"11px"}},{default:n(()=>[f(p(e.stageStatusLabel(l.status)),1)]),_:2},1032,["color"]),l.gateRequired?(s(),g(k,{key:0,color:"gold",style:{"font-size":"10px"}},{default:n(()=>[i(e.LockOutlined),f(" "+p(t.$t("pipeline.details.needsApproval"))+" ",1),l.gateApproved?(s(),b("span",St,p(t.$t("pipeline.details.approved")),1)):d("v-if",!0)]),_:2},1024)):d("v-if",!0)]),l.errorMessage?(s(),b("div",kt,p(t.$t("pipeline.details.errorPrefix"))+" "+p(l.errorMessage),1)):d("v-if",!0),l.startedAt?(s(),b("div",At,[f(p(e.formatPipelineTime(l.startedAt))+" ",1),l.completedAt?(s(),b("span",Ct," → "+p(e.formatPipelineTime(l.completedAt)),1)):d("v-if",!0)])):d("v-if",!0)]),_:2},1032,["color"]))),128))]),_:1})])):d("v-if",!0)]),_:1},8,["open","title"])])}const Lt=Le($e,[["render",Pt],["__scopeId","data-v-ee23c547"],["__file","/tmp/cc-web-panel-heolxZ/repo/packages/web-panel/src/views/Pipeline.vue"]]);export{Lt as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as b,J as y,U as g,R as r,c as o,K as i,V as m,o as ne,a as G,b as N,r as k,P as c,Q as v,F,Z as z,S as C,$ as ze}from"./vendor-BvqAck49.js";import{_ as Ee,u as re,b as se,d as f}from"./index-BcRDjaEi.js";import{s as je}from"./community-parser-CO25nZFt.js";import{a$ as we,r as Ue,Y as Be,_ as Ne,q as He,as as Ie,R as qe}from"./icons-DP3uiYxy.js";function W(t){const a=je(t);if(!a)return null;try{return JSON.parse(a)}catch{}const s=a.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!s)return null;try{return JSON.parse(s[0])}catch{return null}}const De=Object.freeze(["initializing","training","aggregating","completed","failed"]),Je=Object.freeze(["pending","computing","completed"]),Ve=Object.freeze(["shamir","beaver","gmw"]),Ke=Object.freeze(["laplace","gaussian","exponential"]),We=Object.freeze(["paillier","bfv","ckks"]),Ze=Object.freeze(["sum","product","mean","count"]);function h(t,a=0){return typeof t=="number"&&Number.isFinite(t)?t:a}function Qe(t,a=0){if(!t||typeof t!="object")return null;const s=t.id||"";return s?{key:s,id:s,name:String(t.name||s),description:String(t.description||""),_idx:a}:null}function ae(t){const a=W(t);return Array.isArray(a)?a.map(Qe).filter(Boolean):[]}function Ye(t,a=0){if(!t||typeof t!="object")return null;const s=t.id||"";return s?{key:s,id:s,name:String(t.name||""),modelType:t.modelType??t.model_type??"neural_network",architecture:String(t.architecture||""),status:String(t.status||"initializing").toLowerCase(),currentRound:h(t.currentRound??t.current_round,0),totalRounds:h(t.totalRounds??t.total_rounds,0),participantCount:h(t.participantCount??t.participant_count,0),accuracy:h(t.accuracy,0),loss:t.loss==null?null:h(t.loss,null),learningRate:h(t.learningRate??t.learning_rate,0),aggregationStrategy:t.aggregationStrategy??t.aggregation_strategy??"",privacyBudgetSpent:h(t.privacyBudgetSpent??t.privacy_budget_spent,0),createdAt:t.createdAt??t.created_at??null,updatedAt:t.updatedAt??t.updated_at??null,_idx:a}:null}function ue(t){const a=W(t);return Array.isArray(a)?a.map(Ye).filter(Boolean):[]}function Ge(t,a=0){if(!t||typeof t!="object")return null;const s=t.id||"";if(!s)return null;let e=t.participantIds??t.participant_ids??[];if(typeof e=="string")try{e=JSON.parse(e)}catch{e=[]}return Array.isArray(e)||(e=[]),{key:s,id:s,computationType:t.computationType??t.computation_type??"",protocol:String(t.protocol||"shamir").toLowerCase(),participantCount:h(t.participantCount??t.participant_count,0),participantIds:e,resultHash:t.resultHash??t.result_hash??null,status:String(t.status||"pending").toLowerCase(),sharesReceived:h(t.sharesReceived??t.shares_received,0),sharesRequired:h(t.sharesRequired??t.shares_required,0),computationTimeMs:t.computationTimeMs??t.computation_time_ms??null,errorMessage:t.errorMessage??t.error_message??"",createdAt:t.createdAt??t.created_at??null,completedAt:t.completedAt??t.completed_at??null,_idx:a}}function ce(t){const a=W(t);return Array.isArray(a)?a.map(Ge).filter(Boolean):[]}function de(t){const a=W(t);return!a||typeof a!="object"||Array.isArray(a)?null:{published:!!a.published,reason:a.reason||null,data:a.data??null,epsilon:h(a.epsilon,0),delta:h(a.delta,0),mechanism:String(a.mechanism||""),budgetSpent:h(a.budgetSpent??a.budget_spent,0),budgetRemaining:h(a.budgetRemaining??a.budget_remaining,0)}}function pe(t){const a=W(t);return!a||typeof a!="object"||Array.isArray(a)?null:{result:a.result??null,operation:String(a.operation||""),scheme:String(a.scheme||""),inputCount:h(a.inputCount??a.input_count,0),encrypted:a.encrypted!==!1}}const Xe={privacyBudget:{spent:0,limit:0,remaining:0,exhausted:!1},federatedLearning:{totalModels:0,completed:0,training:0,avgAccuracy:0},mpc:{totalComputations:0,completed:0,pending:0,byProtocol:{}}};function me(t){const a=JSON.parse(JSON.stringify(Xe)),s=W(t);if(!s||typeof s!="object"||Array.isArray(s))return a;if(s.privacyBudget&&typeof s.privacyBudget=="object"&&(a.privacyBudget.spent=h(s.privacyBudget.spent,0),a.privacyBudget.limit=h(s.privacyBudget.limit,0),a.privacyBudget.remaining=h(s.privacyBudget.remaining,0),a.privacyBudget.exhausted=!!s.privacyBudget.exhausted),s.federatedLearning&&typeof s.federatedLearning=="object"&&(a.federatedLearning.totalModels=h(s.federatedLearning.totalModels,0),a.federatedLearning.completed=h(s.federatedLearning.completed,0),a.federatedLearning.training=h(s.federatedLearning.training,0),a.federatedLearning.avgAccuracy=h(s.federatedLearning.avgAccuracy,0)),s.mpc&&typeof s.mpc=="object"&&(a.mpc.totalComputations=h(s.mpc.totalComputations,0),a.mpc.completed=h(s.mpc.completed,0),a.mpc.pending=h(s.mpc.pending,0),s.mpc.byProtocol&&typeof s.mpc.byProtocol=="object"))for(const[e,j]of Object.entries(s.mpc.byProtocol))typeof j=="number"&&Number.isFinite(j)&&(a.mpc.byProtocol[e]=j);return a}function $e(t){if(t==null||t==="")return"—";const a=typeof t=="number"?new Date(t):new Date(String(t));return isNaN(a.getTime())?String(t):a.toLocaleString("zh-CN",{hour12:!1})}const et={__name:"Privacy",setup(t,{expose:a}){a();const s=re(),{t:e}=se(),j=k(!1),H=k(!1),E=k(!1),w=k(!1),Z=k(""),Q=k(""),X=k([]),P=k([]),O=k([]),L=k([]),I=k([]),R=k({privacyBudget:{spent:0,limit:0,remaining:0,exhausted:!1},federatedLearning:{totalModels:0,completed:0,training:0,avgAccuracy:0},mpc:{totalComputations:0,completed:0,pending:0,byProtocol:{}}}),M=k("models"),T=k(""),q=k(""),Y=k(""),D=k(!1),J=k(!1),$=k(!1),U=k(!1),p=G({name:"",modelType:"",architecture:"",rounds:10,lr:.01,participants:0}),S=G({type:"",protocol:"shamir",participants:"",threshold:null}),x=G({data:"",mechanism:"laplace",epsilon:.1,delta:1e-5,sensitivity:1}),A=G({data:"",operation:"sum",scheme:"paillier"}),V=k(null),K=k(null),ee=N(()=>[{title:e("privacy.modelCols.name"),key:"name"},{title:e("privacy.modelCols.status"),key:"status",width:"120px"},{title:e("privacy.modelCols.progress"),key:"progress",width:"160px"},{title:e("privacy.modelCols.accuracy"),key:"accuracy",width:"110px"},{title:e("privacy.modelCols.participants"),key:"participants",width:"90px"},{title:e("privacy.modelCols.budget"),key:"budget",width:"100px"},{title:e("privacy.modelCols.updatedAt"),key:"updatedAt",width:"160px"},{title:e("privacy.modelCols.action"),key:"action",width:"180px"}]),l=N(()=>[{title:e("privacy.computationCols.type"),key:"type",width:"160px"},{title:e("privacy.computationCols.protocol"),key:"protocol",width:"100px"},{title:e("privacy.computationCols.progress"),key:"progress"},{title:e("privacy.computationCols.status"),key:"status",width:"110px"},{title:e("privacy.computationCols.time"),key:"time",width:"110px"},{title:e("privacy.computationCols.createdAt"),key:"createdAt",width:"160px"},{title:e("privacy.computationCols.action"),key:"action",width:"160px"}]),d=N(()=>R.value.federatedLearning.avgAccuracy*100),te=N(()=>{const n=R.value.privacyBudget.remaining,u=R.value.privacyBudget.limit;if(u===0)return"#888";const _=n/u;return _<.2?"#ff4d4f":_<.5?"#faad14":"#52c41a"}),ye=N(()=>T.value?L.value.filter(n=>n.status===T.value):L.value),ve=N(()=>{let n=I.value;return q.value&&(n=n.filter(u=>u.protocol===q.value)),Y.value&&(n=n.filter(u=>u.status===Y.value)),n});function fe(n){const u=`privacy.flStatusLabels.${n}`,_=e(u);return _===u?n:_}function ge(n){return{initializing:"default",training:"processing",aggregating:"cyan",completed:"green",failed:"red"}[n]||"default"}function be(n){const u=`privacy.mpcStatusLabels.${n}`,_=e(u);return _===u?n:_}function he(n){return{pending:"default",computing:"processing",completed:"green"}[n]||"default"}function _e(n){return n>=.85?"#52c41a":n>=.6?"#faad14":"#ff4d4f"}function ke(n){return n.status==="initializing"||n.status==="training"||n.status==="aggregating"}function Se({key:n}){n==="model"?D.value=!0:n==="computation"?J.value=!0:n==="dp"?(V.value=null,$.value=!0):n==="he"&&(K.value=null,U.value=!0)}async function B(){j.value=!0;try{const[n,u,_,Pe,Ae,Te]=await Promise.all([s.execute("privacy protocols --json",8e3).catch(()=>({output:""})),s.execute("privacy dp-mechanisms --json",8e3).catch(()=>({output:""})),s.execute("privacy he-schemes --json",8e3).catch(()=>({output:""})),s.execute("privacy models --limit 100 --json",1e4).catch(()=>({output:""})),s.execute("privacy computations --limit 100 --json",1e4).catch(()=>({output:""})),s.execute("privacy report --json",8e3).catch(()=>({output:""}))]);X.value=ae(n.output),P.value=ae(u.output),O.value=ae(_.output),L.value=ue(Pe.output),I.value=ce(Ae.output),R.value=me(Te.output)}catch(n){f.error(e("privacy.msg.loadFailed")+": "+(n?.message||n))}finally{j.value=!1}}async function Ce(){if(!p.name.trim()){f.warning(e("privacy.msg.modelNameEmpty"));return}H.value=!0;try{const n=[`privacy create-model "${p.name.trim().replace(/"/g,'\\"')}"`];p.modelType.trim()&&n.push(`--type "${p.modelType.trim().replace(/"/g,'\\"')}"`),p.architecture.trim()&&n.push(`--arch "${p.architecture.trim().replace(/"/g,'\\"')}"`),p.rounds!=null&&n.push(`--rounds ${p.rounds}`),p.lr!=null&&n.push(`--lr ${p.lr}`),p.participants!=null&&n.push(`--participants ${p.participants}`),n.push("--json");const{output:u}=await s.execute(n.join(" "),12e3);if(/error|失败/i.test(u)&&!/"modelId"/.test(u)){f.error(e("privacy.msg.modelCreateFailed")+": "+u.slice(0,120));return}f.success(e("privacy.msg.modelCreateSuccess")),D.value=!1,le(),await B()}catch(n){f.error(e("privacy.msg.modelCreateFailed")+": "+(n?.message||n))}finally{H.value=!1}}async function Fe(){if(!S.type.trim()){f.warning(e("privacy.msg.computationTypeEmpty"));return}H.value=!0;try{const n=[`privacy create-computation "${S.type.trim().replace(/"/g,'\\"')}"`];if(n.push(`--protocol ${S.protocol}`),S.participants.trim()){const _=S.participants.split(/[,\s]+/).filter(Boolean).join(",");_&&n.push(`--participants "${_}"`)}S.threshold!=null&&n.push(`--threshold ${S.threshold}`),n.push("--json");const{output:u}=await s.execute(n.join(" "),1e4);if(/error|失败|invalid/i.test(u)&&!/"computationId"/.test(u)){f.error(e("privacy.msg.computationCreateFailed")+": "+u.slice(0,120));return}f.success(e("privacy.msg.computationCreateSuccess")),J.value=!1,oe(),M.value="computations",await B()}catch(n){f.error(e("privacy.msg.computationCreateFailed")+": "+(n?.message||n))}finally{H.value=!1}}async function xe(n){Z.value=n.id;try{const{output:u}=await s.execute(`privacy train ${n.id} --json`,12e3);if(/error|失败/i.test(u)&&!/"trained"/.test(u)){f.error(e("privacy.msg.trainFailed")+": "+u.slice(0,120));return}f.success(e("privacy.msg.trainSuccess")),await B()}catch(u){f.error(e("privacy.msg.trainFailed")+": "+(u?.message||u))}finally{Z.value=""}}async function Re(n){try{const{output:u}=await s.execute(`privacy fail-model ${n.id} --json`,8e3);if(/error/i.test(u)&&!/"failed"/.test(u)){f.error(e("privacy.msg.failMarkFailed")+": "+u.slice(0,120));return}f.success(e("privacy.msg.failMarkSuccess")),await B()}catch(u){f.error(e("privacy.msg.failMarkFailed")+": "+(u?.message||u))}}async function Oe(n){Q.value=n.id;try{const{output:u}=await s.execute(`privacy submit-share ${n.id} --json`,1e4);if(/error|失败/i.test(u)&&!/"submitted"/.test(u)){f.error(e("privacy.msg.submitFailed")+": "+u.slice(0,120));return}f.success(e("privacy.msg.submitSuccess")),await B()}catch(u){f.error(e("privacy.msg.submitFailed")+": "+(u?.message||u))}finally{Q.value=""}}async function Le(){if(!x.data.trim()){f.warning(e("privacy.msg.dataEmpty"));return}E.value=!0,V.value=null;try{const n=["privacy dp-publish"];n.push(`--data ${JSON.stringify(x.data.trim())}`),n.push(`--mechanism ${x.mechanism}`),x.epsilon!=null&&n.push(`--epsilon ${x.epsilon}`),x.delta!=null&&n.push(`--delta ${x.delta}`),x.sensitivity!=null&&n.push(`--sensitivity ${x.sensitivity}`),n.push("--json");const{output:u}=await s.execute(n.join(" "),1e4),_=de(u);if(!_){f.error(e("privacy.msg.dpFailed")+": "+u.slice(0,120));return}V.value=_,_.published?(f.success(e("privacy.msg.dpSuccess")),await B()):f.warning(e("privacy.msg.dpRejected",{reason:_.reason||"unknown"}))}catch(n){f.error(e("privacy.msg.dpFailed")+": "+(n?.message||n))}finally{E.value=!1}}async function Me(){if(!A.data.trim()){f.warning(e("privacy.msg.dataEmpty"));return}try{JSON.parse(A.data)}catch{f.warning(e("privacy.msg.dataInvalidJson"));return}w.value=!0,K.value=null;try{const n=["privacy he-query"];n.push(`--data ${JSON.stringify(A.data.trim())}`),n.push(`--operation ${A.operation}`),n.push(`--scheme ${A.scheme}`),n.push("--json");const{output:u}=await s.execute(n.join(" "),1e4),_=pe(u);if(!_){f.error(e("privacy.msg.heFailed")+": "+u.slice(0,120));return}K.value=_,f.success(e("privacy.msg.heSuccess",{scheme:_.scheme,op:_.operation}))}catch(n){f.error(e("privacy.msg.heFailed")+": "+(n?.message||n))}finally{w.value=!1}}function le(){p.name="",p.modelType="",p.architecture="",p.rounds=10,p.lr=.01,p.participants=0}function oe(){S.type="",S.protocol="shamir",S.participants="",S.threshold=null}ne(B);const ie={ws:s,t:e,loading:j,creating:H,publishing:E,querying:w,trainingId:Z,submittingShareId:Q,protocols:X,dpMechanisms:P,heSchemes:O,models:L,computations:I,report:R,activeTab:M,modelStatusFilter:T,mpcProtocolFilter:q,mpcStatusFilter:Y,showModelModal:D,showComputationModal:J,showDPModal:$,showHEModal:U,modelForm:p,computationForm:S,dpForm:x,heForm:A,dpResult:V,heResult:K,modelColumns:ee,computationColumns:l,avgAccuracyPct:d,budgetColor:te,filteredModels:ye,filteredComputations:ve,flStatusLabel:fe,flStatusColor:ge,mpcStatusLabel:be,mpcStatusColor:he,accuracyColor:_e,canTrain:ke,handleNewClick:Se,loadAll:B,createModel:Ce,createComputation:Fe,trainOne:xe,failModel:Re,submitShare:Oe,publishDP:Le,queryHE:Me,resetModelForm:le,resetComputationForm:oe,ref:k,computed:N,onMounted:ne,reactive:G,get ReloadOutlined(){return qe},get PlusOutlined(){return Ie},get ExperimentOutlined(){return He},get ApartmentOutlined(){return Ne},get LockOutlined(){return Be},get SafetyOutlined(){return Ue},get RiseOutlined(){return we},get message(){return f},get useI18n(){return se},get useWsStore(){return re},get parseCatalog(){return ae},get parseModels(){return ue},get parseComputations(){return ce},get parseDPResult(){return de},get parseHEResult(){return pe},get parseReport(){return me},get formatPrivacyTime(){return $e},get FL_STATUSES(){return De},get MPC_STATUSES(){return Je},get MPC_PROTOCOLS(){return Ve},get DP_MECHANISMS(){return Ke},get HE_SCHEMES(){return We},get HE_OPERATIONS(){return Ze}};return Object.defineProperty(ie,"__isScriptSetup",{enumerable:!1,value:!0}),ie}},tt={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},at={class:"page-title"},lt={class:"page-sub"},ot={style:{"font-size":"11px",color:"var(--text-secondary)"}},it={class:"catalog-name"},nt={class:"catalog-desc"},rt={class:"catalog-name"},st={class:"catalog-desc"},ut={class:"catalog-name"},ct={class:"catalog-desc"},dt={class:"filter-bar"},pt={style:{color:"var(--text-primary)","font-weight":"500"}},mt={style:{color:"var(--text-secondary)","font-size":"11px","margin-top":"2px"}},yt={style:{"font-size":"11px",color:"var(--text-secondary)"}},vt={key:0,style:{"font-size":"11px",color:"var(--text-secondary)"}},ft={key:5,style:{"font-family":"monospace",color:"var(--text-secondary)"}},gt={key:6,style:{color:"var(--text-secondary)","font-size":"11px"}},bt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},ht={class:"filter-bar"},_t={key:0,style:{color:"var(--text-primary)","font-family":"monospace","font-weight":"500"}},kt={key:0,style:{"font-family":"monospace",color:"var(--text-secondary)","font-size":"12px"}},St={key:1,style:{color:"var(--text-muted)"}},Ct={key:5,style:{color:"var(--text-secondary)","font-size":"11px"}},Ft={key:1,style:{color:"var(--text-muted)","font-size":"11px","font-family":"monospace"}},xt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},Rt={style:{"margin-top":"12px","font-size":"12px",color:"var(--text-secondary)"}},Ot={style:{"margin-top":"12px","font-size":"12px",color:"var(--text-secondary)"}};function Lt(t,a,s,e,j,H){const E=b("a-button"),w=b("a-menu-item"),Z=b("a-menu"),Q=b("a-dropdown"),X=b("a-space"),P=b("a-statistic"),O=b("a-card"),L=b("a-col"),I=b("a-row"),R=b("a-tag"),M=b("a-radio-button"),T=b("a-radio-group"),q=b("a-progress"),Y=b("a-popconfirm"),D=b("a-table"),J=b("a-tab-pane"),$=b("a-tabs"),U=b("a-input"),p=b("a-form-item"),S=b("a-input-number"),x=b("a-form"),A=b("a-modal"),V=b("a-select-option"),K=b("a-select"),ee=b("a-textarea");return c(),y("div",null,[g("div",tt,[g("div",null,[g("h2",at,r(t.$t("privacy.title")),1),g("p",lt,r(t.$t("privacy.subtitle")),1)]),o(X,null,{default:i(()=>[o(E,{loading:e.loading,onClick:e.loadAll},{icon:i(()=>[o(e.ReloadOutlined)]),default:i(()=>[v(" "+r(t.$t("privacy.refresh")),1)]),_:1},8,["loading"]),o(Q,{trigger:["click"]},{overlay:i(()=>[o(Z,{onClick:e.handleNewClick},{default:i(()=>[o(w,{key:"model"},{default:i(()=>[o(e.ExperimentOutlined),v(" "+r(t.$t("privacy.actions.model")),1)]),_:1}),o(w,{key:"computation"},{default:i(()=>[o(e.ApartmentOutlined),v(" "+r(t.$t("privacy.actions.computation")),1)]),_:1}),o(w,{key:"dp"},{default:i(()=>[o(e.LockOutlined),v(" "+r(t.$t("privacy.actions.dp")),1)]),_:1}),o(w,{key:"he"},{default:i(()=>[o(e.SafetyOutlined),v(" "+r(t.$t("privacy.actions.he")),1)]),_:1})]),_:1})]),default:i(()=>[o(E,{type:"primary"},{icon:i(()=>[o(e.PlusOutlined)]),default:i(()=>[v(" "+r(t.$t("privacy.actionDropdown")),1)]),_:1})]),_:1})]),_:1})]),m(" Stat cards "),o(I,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:i(()=>[o(L,{xs:12,sm:8,lg:5},{default:i(()=>[o(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:i(()=>[o(P,{title:t.$t("privacy.stats.models"),value:e.report.federatedLearning.totalModels,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:i(()=>[o(e.ExperimentOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(L,{xs:12,sm:8,lg:5},{default:i(()=>[o(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:i(()=>[o(P,{title:t.$t("privacy.stats.avgAccuracy"),value:e.avgAccuracyPct,precision:1,suffix:"%","value-style":{color:e.report.federatedLearning.avgAccuracy>=.8?"#52c41a":"#faad14",fontSize:"20px"}},{prefix:i(()=>[o(e.RiseOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),o(L,{xs:12,sm:8,lg:5},{default:i(()=>[o(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:i(()=>[o(P,{title:t.$t("privacy.stats.computations"),value:e.report.mpc.totalComputations,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:i(()=>[o(e.ApartmentOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(L,{xs:12,sm:8,lg:5},{default:i(()=>[o(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:i(()=>[o(P,{title:t.$t("privacy.stats.budget"),value:e.report.privacyBudget.remaining,precision:2,"value-style":{color:e.budgetColor,fontSize:"20px"}},{prefix:i(()=>[o(e.LockOutlined)]),suffix:i(()=>[g("span",ot,"/ "+r(e.report.privacyBudget.limit),1)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),o(L,{xs:24,sm:8,lg:4},{default:i(()=>[o(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:i(()=>[o(P,{title:t.$t("privacy.stats.budgetState"),value:e.report.privacyBudget.exhausted?t.$t("privacy.stats.exhausted"):t.$t("privacy.stats.ample"),"value-style":{color:e.report.privacyBudget.exhausted?"#ff4d4f":"#52c41a",fontSize:"20px"}},null,8,["title","value","value-style"])]),_:1})]),_:1})]),_:1}),m(" Catalogue cards "),o(I,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:i(()=>[o(L,{xs:24,md:8},{default:i(()=>[o(O,{title:t.$t("privacy.catalog.protocols"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"},"body-style":{padding:"12px 16px"}},{default:i(()=>[(c(!0),y(F,null,z(e.protocols,l=>(c(),y("div",{key:l.id,class:"catalog-item"},[o(R,{color:"purple",style:{"font-family":"monospace"}},{default:i(()=>[v(r(l.id),1)]),_:2},1024),g("span",it,r(l.name),1),g("span",nt,r(l.description),1)]))),128))]),_:1},8,["title"])]),_:1}),o(L,{xs:24,md:8},{default:i(()=>[o(O,{title:t.$t("privacy.catalog.dp"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"},"body-style":{padding:"12px 16px"}},{default:i(()=>[(c(!0),y(F,null,z(e.dpMechanisms,l=>(c(),y("div",{key:l.id,class:"catalog-item"},[o(R,{color:"orange",style:{"font-family":"monospace"}},{default:i(()=>[v(r(l.id),1)]),_:2},1024),g("span",rt,r(l.name),1),g("span",st,r(l.description),1)]))),128))]),_:1},8,["title"])]),_:1}),o(L,{xs:24,md:8},{default:i(()=>[o(O,{title:t.$t("privacy.catalog.he"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"},"body-style":{padding:"12px 16px"}},{default:i(()=>[(c(!0),y(F,null,z(e.heSchemes,l=>(c(),y("div",{key:l.id,class:"catalog-item"},[o(R,{color:"cyan",style:{"font-family":"monospace"}},{default:i(()=>[v(r(l.id),1)]),_:2},1024),g("span",ut,r(l.name),1),g("span",ct,r(l.description),1)]))),128))]),_:1},8,["title"])]),_:1})]),_:1}),m(" Tabs "),o($,{activeKey:e.activeTab,"onUpdate:activeKey":a[3]||(a[3]=l=>e.activeTab=l),class:"privacy-tabs"},{default:i(()=>[m(" ── FL models tab ─────────────────────────────────────────── "),o(J,{key:"models",tab:t.$t("privacy.tabs.models")},{default:i(()=>[g("div",dt,[o(T,{value:e.modelStatusFilter,"onUpdate:value":a[0]||(a[0]=l=>e.modelStatusFilter=l),size:"small","button-style":"solid"},{default:i(()=>[o(M,{value:""},{default:i(()=>[v(r(t.$t("privacy.filter.all")),1)]),_:1}),(c(!0),y(F,null,z(e.FL_STATUSES,l=>(c(),C(M,{key:l,value:l},{default:i(()=>[v(r(e.flStatusLabel(l)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),o(D,{columns:e.modelColumns,"data-source":e.filteredModels,pagination:{pageSize:20,showTotal:l=>t.$t("privacy.table.totalSuffix",{n:l})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:i(({column:l,record:d})=>[l.key==="name"?(c(),y(F,{key:0},[g("span",pt,r(d.name),1),g("div",mt,r(d.modelType)+" / "+r(d.architecture),1)],64)):m("v-if",!0),l.key==="status"?(c(),C(R,{key:1,color:e.flStatusColor(d.status)},{default:i(()=>[v(r(e.flStatusLabel(d.status)),1)]),_:2},1032,["color"])):m("v-if",!0),l.key==="progress"?(c(),y(F,{key:2},[o(q,{percent:d.totalRounds?Math.round(100*d.currentRound/d.totalRounds):0,size:"small",status:d.status==="failed"?"exception":d.status==="completed"?"success":"active"},null,8,["percent","status"]),g("div",yt,r(t.$t("privacy.table.rounds",{cur:d.currentRound,total:d.totalRounds})),1)],64)):m("v-if",!0),l.key==="accuracy"?(c(),y(F,{key:3},[g("span",{style:ze({color:e.accuracyColor(d.accuracy),fontFamily:"monospace"})},r((d.accuracy*100).toFixed(1))+"% ",5),d.loss!=null?(c(),y("div",vt," loss "+r(d.loss.toFixed(3)),1)):m("v-if",!0)],64)):m("v-if",!0),l.key==="participants"?(c(),C(R,{key:4,color:"blue",style:{"font-size":"11px"}},{default:i(()=>[v(r(d.participantCount),1)]),_:2},1024)):m("v-if",!0),l.key==="budget"?(c(),y("span",ft,r(d.privacyBudgetSpent.toFixed(3)),1)):m("v-if",!0),l.key==="updatedAt"?(c(),y("span",gt,r(e.formatPrivacyTime(d.updatedAt)),1)):m("v-if",!0),l.key==="action"?(c(),y(F,{key:7},[e.canTrain(d)?(c(),C(E,{key:0,size:"small",type:"link",loading:e.trainingId===d.id,onClick:te=>e.trainOne(d)},{default:i(()=>[v(r(t.$t("privacy.table.trainOne")),1)]),_:1},8,["loading","onClick"])):m("v-if",!0),d.status!=="failed"&&d.status!=="completed"?(c(),C(Y,{key:1,title:t.$t("privacy.table.failConfirm"),"ok-text":t.$t("privacy.table.failOk"),"cancel-text":t.$t("privacy.table.failCancel"),onConfirm:te=>e.failModel(d)},{default:i(()=>[o(E,{size:"small",type:"link",danger:""},{default:i(()=>[v(r(t.$t("privacy.table.failMark")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])):m("v-if",!0)],64)):m("v-if",!0)]),emptyText:i(()=>[g("div",bt,[o(e.ExperimentOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),v(" "+r(e.modelStatusFilter?t.$t("privacy.table.emptyModelsFiltered"):t.$t("privacy.table.emptyModels")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),m(" ── MPC computations tab ──────────────────────────────────── "),o(J,{key:"computations",tab:t.$t("privacy.tabs.computations")},{default:i(()=>[g("div",ht,[o(T,{value:e.mpcProtocolFilter,"onUpdate:value":a[1]||(a[1]=l=>e.mpcProtocolFilter=l),size:"small"},{default:i(()=>[o(M,{value:""},{default:i(()=>[v(r(t.$t("privacy.filter.allProtocols")),1)]),_:1}),(c(!0),y(F,null,z(e.MPC_PROTOCOLS,l=>(c(),C(M,{key:l,value:l},{default:i(()=>[v(r(l),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),o(T,{value:e.mpcStatusFilter,"onUpdate:value":a[2]||(a[2]=l=>e.mpcStatusFilter=l),size:"small"},{default:i(()=>[o(M,{value:""},{default:i(()=>[v(r(t.$t("privacy.filter.allStatuses")),1)]),_:1}),(c(!0),y(F,null,z(e.MPC_STATUSES,l=>(c(),C(M,{key:l,value:l},{default:i(()=>[v(r(e.mpcStatusLabel(l)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),o(D,{columns:e.computationColumns,"data-source":e.filteredComputations,pagination:{pageSize:20,showTotal:l=>t.$t("privacy.table.totalSuffix",{n:l})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:i(({column:l,record:d})=>[l.key==="type"?(c(),y("span",_t,r(d.computationType),1)):m("v-if",!0),l.key==="protocol"?(c(),C(R,{key:1,color:"purple",style:{"font-family":"monospace"}},{default:i(()=>[v(r(d.protocol),1)]),_:2},1024)):m("v-if",!0),l.key==="progress"?(c(),C(q,{key:2,percent:d.sharesRequired?Math.round(100*d.sharesReceived/d.sharesRequired):0,size:"small",status:d.status==="completed"?"success":"active",format:()=>`${d.sharesReceived}/${d.sharesRequired}`},null,8,["percent","status","format"])):m("v-if",!0),l.key==="status"?(c(),C(R,{key:3,color:e.mpcStatusColor(d.status)},{default:i(()=>[v(r(e.mpcStatusLabel(d.status)),1)]),_:2},1032,["color"])):m("v-if",!0),l.key==="time"?(c(),y(F,{key:4},[d.computationTimeMs!=null?(c(),y("span",kt,r(d.computationTimeMs)+" ms ",1)):(c(),y("span",St,"—"))],64)):m("v-if",!0),l.key==="createdAt"?(c(),y("span",Ct,r(e.formatPrivacyTime(d.createdAt)),1)):m("v-if",!0),l.key==="action"?(c(),y(F,{key:6},[d.status!=="completed"?(c(),C(E,{key:0,size:"small",type:"link",loading:e.submittingShareId===d.id,onClick:te=>e.submitShare(d)},{default:i(()=>[v(r(t.$t("privacy.table.submitShare")),1)]),_:1},8,["loading","onClick"])):(c(),y("span",Ft," hash "+r(d.resultHash?.slice(0,8)||"—"),1))],64)):m("v-if",!0)]),emptyText:i(()=>[g("div",xt,[o(e.ApartmentOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),v(" "+r(t.$t("privacy.table.emptyComputations")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"])]),_:1},8,["activeKey"]),m(" ── Create FL model modal ─────────────────────────────────── "),o(A,{open:e.showModelModal,"onUpdate:open":a[10]||(a[10]=l=>e.showModelModal=l),title:t.$t("privacy.model_modal.title"),"confirm-loading":e.creating,width:540,"ok-text":t.$t("privacy.model_modal.ok"),"cancel-text":t.$t("privacy.model_modal.cancel"),onOk:e.createModel,onCancel:e.resetModelForm},{default:i(()=>[o(x,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:i(()=>[o(p,{label:t.$t("privacy.model_modal.nameLabel"),required:""},{default:i(()=>[o(U,{value:e.modelForm.name,"onUpdate:value":a[4]||(a[4]=l=>e.modelForm.name=l),placeholder:t.$t("privacy.model_modal.namePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(p,{label:t.$t("privacy.model_modal.typeLabel")},{default:i(()=>[o(U,{value:e.modelForm.modelType,"onUpdate:value":a[5]||(a[5]=l=>e.modelForm.modelType=l),placeholder:t.$t("privacy.model_modal.typePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(p,{label:t.$t("privacy.model_modal.archLabel")},{default:i(()=>[o(U,{value:e.modelForm.architecture,"onUpdate:value":a[6]||(a[6]=l=>e.modelForm.architecture=l),placeholder:t.$t("privacy.model_modal.archPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(p,{label:t.$t("privacy.model_modal.roundsLabel")},{default:i(()=>[o(S,{value:e.modelForm.rounds,"onUpdate:value":a[7]||(a[7]=l=>e.modelForm.rounds=l),min:1,max:1e3,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"]),o(p,{label:t.$t("privacy.model_modal.lrLabel")},{default:i(()=>[o(S,{value:e.modelForm.lr,"onUpdate:value":a[8]||(a[8]=l=>e.modelForm.lr=l),min:0,max:1,step:.001,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"]),o(p,{label:t.$t("privacy.model_modal.participantsLabel")},{default:i(()=>[o(S,{value:e.modelForm.participants,"onUpdate:value":a[9]||(a[9]=l=>e.modelForm.participants=l),min:0,max:1e3,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),m(" ── Create MPC computation modal ─────────────────────────── "),o(A,{open:e.showComputationModal,"onUpdate:open":a[15]||(a[15]=l=>e.showComputationModal=l),title:t.$t("privacy.computation_modal.title"),"confirm-loading":e.creating,width:520,"ok-text":t.$t("privacy.computation_modal.ok"),"cancel-text":t.$t("privacy.computation_modal.cancel"),onOk:e.createComputation,onCancel:e.resetComputationForm},{default:i(()=>[o(x,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:i(()=>[o(p,{label:t.$t("privacy.computation_modal.typeLabel"),required:""},{default:i(()=>[o(U,{value:e.computationForm.type,"onUpdate:value":a[11]||(a[11]=l=>e.computationForm.type=l),placeholder:t.$t("privacy.computation_modal.typePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(p,{label:t.$t("privacy.computation_modal.protocolLabel")},{default:i(()=>[o(K,{value:e.computationForm.protocol,"onUpdate:value":a[12]||(a[12]=l=>e.computationForm.protocol=l)},{default:i(()=>[(c(!0),y(F,null,z(e.MPC_PROTOCOLS,l=>(c(),C(V,{key:l,value:l},{default:i(()=>[v(r(l),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),o(p,{label:t.$t("privacy.computation_modal.participantsLabel")},{default:i(()=>[o(ee,{value:e.computationForm.participants,"onUpdate:value":a[13]||(a[13]=l=>e.computationForm.participants=l),placeholder:t.$t("privacy.computation_modal.participantsPlaceholder"),"auto-size":{minRows:2,maxRows:4}},null,8,["value","placeholder"])]),_:1},8,["label"]),o(p,{label:t.$t("privacy.computation_modal.thresholdLabel")},{default:i(()=>[o(S,{value:e.computationForm.threshold,"onUpdate:value":a[14]||(a[14]=l=>e.computationForm.threshold=l),min:2,max:100,placeholder:t.$t("privacy.computation_modal.thresholdPlaceholder"),style:{width:"100%"}},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),m(" ── DP publish modal ─────────────────────────────────────── "),o(A,{open:e.showDPModal,"onUpdate:open":a[21]||(a[21]=l=>e.showDPModal=l),title:t.$t("privacy.dp_modal.title"),"confirm-loading":e.publishing,width:520,"ok-text":t.$t("privacy.dp_modal.ok"),"cancel-text":t.$t("privacy.dp_modal.cancel"),onOk:e.publishDP},{default:i(()=>[o(x,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:i(()=>[o(p,{label:t.$t("privacy.dp_modal.dataLabel"),required:""},{default:i(()=>[o(U,{value:e.dpForm.data,"onUpdate:value":a[16]||(a[16]=l=>e.dpForm.data=l),placeholder:t.$t("privacy.dp_modal.dataPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(p,{label:t.$t("privacy.dp_modal.mechanismLabel")},{default:i(()=>[o(T,{value:e.dpForm.mechanism,"onUpdate:value":a[17]||(a[17]=l=>e.dpForm.mechanism=l)},{default:i(()=>[(c(!0),y(F,null,z(e.DP_MECHANISMS,l=>(c(),C(M,{key:l,value:l},{default:i(()=>[v(r(l),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),o(p,{label:t.$t("privacy.dp_modal.epsilonLabel")},{default:i(()=>[o(S,{value:e.dpForm.epsilon,"onUpdate:value":a[18]||(a[18]=l=>e.dpForm.epsilon=l),min:0,step:.01,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"]),o(p,{label:t.$t("privacy.dp_modal.deltaLabel")},{default:i(()=>[o(S,{value:e.dpForm.delta,"onUpdate:value":a[19]||(a[19]=l=>e.dpForm.delta=l),min:0,step:1e-6,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"]),o(p,{label:t.$t("privacy.dp_modal.sensitivityLabel")},{default:i(()=>[o(S,{value:e.dpForm.sensitivity,"onUpdate:value":a[20]||(a[20]=l=>e.dpForm.sensitivity=l),min:0,step:.1,style:{width:"100%"}},null,8,["value"])]),_:1},8,["label"])]),_:1}),e.dpResult?(c(),C(O,{key:0,size:"small",style:{background:"var(--bg-base)","margin-top":"8px"}},{default:i(()=>[e.dpResult.published?(c(),y(F,{key:0},[o(P,{title:t.$t("privacy.dp_modal.noisedTitle"),value:e.dpResult.data,precision:3,"value-style":{color:"#52c41a"}},null,8,["title","value"]),g("div",Rt,[g("div",null,r(t.$t("privacy.dp_modal.spentLine",{n:e.dpResult.budgetSpent.toFixed(3)})),1),g("div",null,r(t.$t("privacy.dp_modal.remainingLine",{n:e.dpResult.budgetRemaining.toFixed(3)})),1),g("div",null,r(t.$t("privacy.dp_modal.mechanismLine",{name:e.dpResult.mechanism,epsilon:e.dpResult.epsilon})),1)])],64)):(c(),C(P,{key:1,title:t.$t("privacy.dp_modal.failedTitle"),value:e.dpResult.reason||"unknown","value-style":{color:"#ff4d4f"}},null,8,["title","value"]))]),_:1})):m("v-if",!0)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),m(" ── HE query modal ───────────────────────────────────────── "),o(A,{open:e.showHEModal,"onUpdate:open":a[25]||(a[25]=l=>e.showHEModal=l),title:t.$t("privacy.he_modal.title"),"confirm-loading":e.querying,width:500,"ok-text":t.$t("privacy.he_modal.ok"),"cancel-text":t.$t("privacy.he_modal.cancel"),onOk:e.queryHE},{default:i(()=>[o(x,{"label-col":{span:6},"wrapper-col":{span:18},style:{"margin-top":"16px"}},{default:i(()=>[o(p,{label:t.$t("privacy.he_modal.dataLabel"),required:""},{default:i(()=>[o(ee,{value:e.heForm.data,"onUpdate:value":a[22]||(a[22]=l=>e.heForm.data=l),placeholder:t.$t("privacy.he_modal.dataPlaceholder"),"auto-size":{minRows:2,maxRows:4}},null,8,["value","placeholder"])]),_:1},8,["label"]),o(p,{label:t.$t("privacy.he_modal.operationLabel")},{default:i(()=>[o(T,{value:e.heForm.operation,"onUpdate:value":a[23]||(a[23]=l=>e.heForm.operation=l)},{default:i(()=>[(c(!0),y(F,null,z(e.HE_OPERATIONS,l=>(c(),C(M,{key:l,value:l},{default:i(()=>[v(r(l),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),o(p,{label:t.$t("privacy.he_modal.schemeLabel")},{default:i(()=>[o(T,{value:e.heForm.scheme,"onUpdate:value":a[24]||(a[24]=l=>e.heForm.scheme=l)},{default:i(()=>[(c(!0),y(F,null,z(e.HE_SCHEMES,l=>(c(),C(M,{key:l,value:l},{default:i(()=>[v(r(l),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"])]),_:1}),e.heResult?(c(),C(O,{key:0,size:"small",style:{background:"var(--bg-base)","margin-top":"8px"}},{default:i(()=>[o(P,{title:t.$t("privacy.he_modal.resultTitle"),value:e.heResult.result,"value-style":{color:"#1677ff"}},null,8,["title","value"]),g("div",Ot,[g("div",null,r(t.$t("privacy.he_modal.schemeLine",{name:e.heResult.scheme})),1),g("div",null,r(t.$t("privacy.he_modal.operationLine",{name:e.heResult.operation})),1),g("div",null,r(t.$t("privacy.he_modal.inputCountLine",{n:e.heResult.inputCount})),1),e.heResult.encrypted?(c(),C(R,{key:0,color:"green",style:{"margin-top":"4px","font-size":"10px"}},{default:i(()=>[v(r(t.$t("privacy.he_modal.encrypted")),1)]),_:1})):m("v-if",!0)])]),_:1})):m("v-if",!0)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])])}const zt=Ee(et,[["render",Lt],["__scopeId","data-v-f7af818f"],["__file","/tmp/cc-web-panel-heolxZ/repo/packages/web-panel/src/views/Privacy.vue"]]);export{zt as default};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{I as u,J as h,U as g,c as a,K as r,a as z,r as j,o as I,b as M,P as O,Q as w,S as V,V as F}from"./vendor-BvqAck49.js";import{_ as A,u as N,d as _}from"./index-BcRDjaEi.js";import{a7 as L,R as W}from"./icons-DP3uiYxy.js";const c=Object.freeze({rootPath:"",maxSizeMB:1e3,autoSync:!1,syncIntervalSeconds:300});function K(n){if(!n)return null;const e=n.trim();try{return JSON.parse(e)}catch{const o=e.match(/(\{[\s\S]*\}|\[[\s\S]*\])/);if(!o)return null;try{return JSON.parse(o[1])}catch{return null}}}function U(n){if(typeof n=="boolean")return n;const e=String(n).trim().toLowerCase();return e==="true"||e==="1"||e==="yes"||e==="on"}function C(n,e){if(typeof n=="number"&&Number.isFinite(n))return n;const o=parseFloat(n);return Number.isFinite(o)?o:e}function J(n){const e={...c};if(!n)return e;const o=n.trim();if(!o||/key not found/i.test(o))return e;const t=K(o);if(t&&typeof t=="object"&&!Array.isArray(t))return t.rootPath!==void 0&&(e.rootPath=String(t.rootPath||"")),t.maxSizeMB!==void 0&&(e.maxSizeMB=C(t.maxSizeMB,c.maxSizeMB)),t.autoSync!==void 0&&(e.autoSync=U(t.autoSync)),t.syncIntervalSeconds!==void 0&&(e.syncIntervalSeconds=C(t.syncIntervalSeconds,c.syncIntervalSeconds)),e;const v=o.split(`
|
|
2
|
-
`);for(const d of v){const p=d.trim().match(/^(?:project\.)?(rootPath|maxSizeMB|autoSync|syncIntervalSeconds)\s*[=:]\s*(.+)$/i);if(!p)continue;const f=p[1],i=p[2].trim();f==="rootPath"?e.rootPath=i:f==="maxSizeMB"?e.maxSizeMB=C(i,c.maxSizeMB):f==="autoSync"?e.autoSync=U(i):f==="syncIntervalSeconds"&&(e.syncIntervalSeconds=C(i,c.syncIntervalSeconds))}return e}function B(n,e){const o={};for(const t of Object.keys(c))n[t]!==e[t]&&(o[t]=e[t]);return o}const Q={__name:"ProjectSettings",setup(n,{expose:e}){e();const o=N(),t=j(!1),v=j(!1),d=z({...c}),s=j({...c}),p=M(()=>Object.keys(B(s.value,d)).length>0);async function f(){t.value=!0;try{const{output:m}=await o.execute("config get project",1e4),y=J(m);Object.assign(d,y),s.value={...y}}catch(m){/key not found/i.test(m.message)?(Object.assign(d,c),s.value={...c}):_.error("加载配置失败: "+m.message)}finally{t.value=!1}}function i(){Object.assign(d,s.value)}async function x(){const m=B(s.value,d),y=Object.keys(m);if(y.length===0){_.info("没有需要保存的修改");return}v.value=!0;let b=0,S=0;for(const l of y){const R=m[l],D=String(R).replace(/"/g,'\\"'),E=`config set project.${l} "${D}"`;try{const{output:P,exitCode:T}=await o.execute(E,1e4);T!==0||/error|failed|失败/i.test(P)?(S++,_.error(`保存 ${l} 失败: ${P.slice(0,80)}`)):b++}catch(P){S++,_.error(`保存 ${l} 失败: ${P.message}`)}}v.value=!1,S===0?(_.success(`保存成功(${b} 项)`),s.value={...d}):b>0&&(_.warning(`部分保存成功:${b} 成功 / ${S} 失败`),await f())}I(()=>{f()});const k={ws:o,loading:t,saving:v,form:d,baseline:s,isDirty:p,loadConfig:f,resetForm:i,saveConfig:x,reactive:z,ref:j,computed:M,onMounted:I,get ReloadOutlined(){return W},get FolderOutlined(){return L},get message(){return _},get useWsStore(){return N},get parseProjectConfig(){return J},get diffProjectConfig(){return B},get PROJECT_DEFAULTS(){return c}};return Object.defineProperty(k,"__isScriptSetup",{enumerable:!1,value:!0}),k}},Z={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},q={style:{color:"var(--text-primary)"}},G={key:0,style:{color:"#faad14","font-size":"12px","margin-left":"8px"}};function H(n,e,o,t,v,d){const s=u("a-button"),p=u("a-alert"),f=u("a-input"),i=u("a-form-item"),x=u("a-input-number"),k=u("a-switch"),m=u("a-space"),y=u("a-form"),b=u("a-spin"),S=u("a-card");return O(),h("div",null,[g("div",Z,[e[5]||(e[5]=g("div",null,[g("h2",{class:"page-title"},"项目存储配置"),g("p",{class:"page-sub"},"根目录 / 配额 / 自动同步")],-1)),a(s,{loading:t.loading,onClick:t.loadConfig},{icon:r(()=>[a(t.ReloadOutlined)]),default:r(()=>[e[4]||(e[4]=w(" 刷新 ",-1))]),_:1},8,["loading"])]),a(p,{message:"仅 Web 模式",description:"目录选择器(原生文件对话框)仅在桌面端可用,本页面需手动输入路径。修改根目录后需重启桌面应用生效;web 端只影响后端配置文件。",type:"info","show-icon":"",closable:"",style:{"margin-bottom":"16px"}}),a(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{title:r(()=>[g("span",q,[a(t.FolderOutlined,{style:{"margin-right":"8px"}}),e[6]||(e[6]=w("项目存储 ",-1))])]),default:r(()=>[a(b,{spinning:t.loading},{default:r(()=>[a(y,{"label-col":{span:6},"wrapper-col":{span:18},style:{"max-width":"720px"}},{default:r(()=>[a(i,{label:"项目根目录"},{extra:r(()=>[...e[7]||(e[7]=[g("span",{style:{color:"var(--text-muted)","font-size":"11px"}}," 需绝对路径;修改后重启桌面应用生效 ",-1)])]),default:r(()=>[a(f,{value:t.form.rootPath,"onUpdate:value":e[0]||(e[0]=l=>t.form.rootPath=l),placeholder:"项目文件存储的根目录绝对路径",disabled:t.saving},null,8,["value","disabled"])]),_:1}),a(i,{label:"最大项目大小"},{default:r(()=>[a(x,{value:t.form.maxSizeMB,"onUpdate:value":e[1]||(e[1]=l=>t.form.maxSizeMB=l),min:100,max:1e4,step:100,"addon-after":"MB",style:{width:"220px"},disabled:t.saving},null,8,["value","disabled"])]),_:1}),a(i,{label:"自动同步"},{default:r(()=>[a(k,{checked:t.form.autoSync,"onUpdate:checked":e[2]||(e[2]=l=>t.form.autoSync=l),disabled:t.saving},null,8,["checked","disabled"]),e[8]||(e[8]=g("span",{style:{"margin-left":"12px",color:"var(--text-secondary)","font-size":"12px"}}," 自动同步项目到后端服务器 ",-1))]),_:1}),t.form.autoSync?(O(),V(i,{key:0,label:"同步间隔"},{default:r(()=>[a(x,{value:t.form.syncIntervalSeconds,"onUpdate:value":e[3]||(e[3]=l=>t.form.syncIntervalSeconds=l),min:60,max:3600,step:60,"addon-after":"秒",style:{width:"220px"},disabled:t.saving},null,8,["value","disabled"])]),_:1})):F("v-if",!0),a(i,{"wrapper-col":{offset:6,span:18}},{default:r(()=>[a(m,null,{default:r(()=>[a(s,{onClick:t.resetForm,disabled:t.saving||t.loading},{default:r(()=>[...e[9]||(e[9]=[w(" 重置 ",-1)])]),_:1},8,["disabled"]),a(s,{type:"primary",loading:t.saving,disabled:!t.isDirty,onClick:t.saveConfig},{default:r(()=>[...e[10]||(e[10]=[w(" 保存配置 ",-1)])]),_:1},8,["loading","disabled"]),t.isDirty?(O(),h("span",G," 有未保存的修改 ")):F("v-if",!0)]),_:1})]),_:1})]),_:1})]),_:1},8,["spinning"])]),_:1})])}const ee=A(Q,[["render",H],["__scopeId","data-v-f4cc2f66"],["__file","/tmp/cc-web-panel-heolxZ/repo/packages/web-panel/src/views/ProjectSettings.vue"]]);export{ee as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as y,J as _,U as b,R as i,c as a,K as r,V as u,o as ce,a as de,b as K,r as h,P as d,Q as p,S as k,F as A,Z as q,$ as Pe}from"./vendor-BvqAck49.js";import{_ as Ae,b as me,u as ue,E as fe,d as g}from"./index-BcRDjaEi.js";import{s as Ue}from"./community-parser-CO25nZFt.js";import{o as ze,aV as Re,aA as Ee,aT as Me,aW as Ne,F as je,ak as Je,aP as De,R as Le}from"./icons-DP3uiYxy.js";function W(s){const n=Ue(s);if(!n)return null;try{return JSON.parse(n)}catch{}const t=n.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!t)return null;try{return JSON.parse(t[0])}catch{return null}}const Be=Object.freeze(["note","post","article","document"]),We=Object.freeze(["pending","viewed","dismissed"]);function I(s,n=0){return typeof s=="number"&&Number.isFinite(s)?s:n}function pe(s){if(!s||typeof s!="object"||Array.isArray(s))return{};const n={};for(const[t,e]of Object.entries(s))typeof e=="number"&&Number.isFinite(e)&&(n[t]=e);return n}function Ye(s,n=0){if(!s||typeof s!="object")return null;const t=s.user_id??s.userId??"";if(!t)return null;const e=s.topics&&typeof s.topics=="object"&&!Array.isArray(s.topics)?pe(s.topics):{},z=s.interaction_weights??s.interactionWeights,M=z&&typeof z=="object"&&!Array.isArray(z)?pe(z):{};return{key:t,id:String(s.id||""),userId:t,topics:e,topicCount:Object.keys(e).length,interactionWeights:M,decayFactor:I(s.decay_factor??s.decayFactor,.9),lastUpdated:s.last_updated??s.lastUpdated??null,updateCount:I(s.update_count??s.updateCount,0),_idx:n}}function ye(s){const n=W(s);return Array.isArray(n)?n.map(Ye).filter(Boolean):[]}function Ve(s,n=0){if(!s||typeof s!="object")return null;const t=s.id||"";return t?{key:t,id:t,userId:s.user_id??s.userId??"",contentId:s.content_id??s.contentId??"",contentType:String(s.content_type??s.contentType??"note").toLowerCase(),title:String(s.title||""),score:I(s.score,0),reason:String(s.reason||""),source:String(s.source||"heuristic"),status:String(s.status||"pending").toLowerCase(),feedback:s.feedback??null,createdAt:s.created_at??s.createdAt??null,viewedAt:s.viewed_at??s.viewedAt??null,_idx:n}:null}function ge(s){const n=W(s);return Array.isArray(n)?n.map(Ve).filter(Boolean):[]}const Ge={total:0,pending:0,viewed:0,dismissed:0,feedbackCount:0,feedbackRate:0,avgScore:0};function _e(s){const n={...Ge},t=W(s);return!t||typeof t!="object"||Array.isArray(t)||(n.total=I(t.total,0),n.pending=I(t.pending,0),n.viewed=I(t.viewed,0),n.dismissed=I(t.dismissed,0),n.feedbackCount=I(t.feedbackCount,0),n.feedbackRate=I(t.feedbackRate,0),n.avgScore=I(t.avgScore,0)),n}function ve(s){const n=W(s);return Array.isArray(n)?n.filter(t=>t&&typeof t=="object"&&typeof t.topic=="string").map((t,e)=>({key:`${t.topic}-${e}`,topic:t.topic,weight:I(t.weight,0)})):[]}function ke(s){const n=W(s);return Array.isArray(n)?n.filter(t=>t&&typeof t=="object"&&typeof t.topic=="string"&&typeof t.action=="string").map((t,e)=>({key:`${t.topic}-${e}`,topic:t.topic,action:t.action,amount:I(t.amount,0)})):[]}function E(s){const n=W(s);return!n||typeof n!="object"||Array.isArray(n)?{ok:!1,reason:"",profileId:null,topicCount:null}:{ok:!!(n.updated||n.deleted||n.marked||n.dismissed||n.recorded||n.applied||n.profileId),reason:n.reason?String(n.reason):"",profileId:n.profileId?String(n.profileId):null,topicCount:typeof n.topicCount=="number"?n.topicCount:null}}function Ke(s){if(s==null||s==="")return"—";const n=typeof s=="number"?new Date(s):new Date(String(s));return isNaN(n.getTime())?String(s):n.toLocaleString("zh-CN",{hour12:!1})}const qe={__name:"Recommend",setup(s,{expose:n}){n();const{t}=me(),e=ue(),z=fe.PRESENTED_IMAGE_SIMPLE,M=h(!1),w=h(!1),Y=h(!1),N=h([]),S=h([]),O=h({total:0,pending:0,viewed:0,dismissed:0,feedbackCount:0,feedbackRate:0,avgScore:0}),T=h([]),F=h([]),v=h(null),U=h("recs"),j=h(""),P=h(""),J=h(!1),D=h(!1),x=de({userId:"",topicsJson:"",weightsJson:""}),Q=h(null),Z=K(()=>N.value.map(o=>({value:o.userId,label:`${o.userId} (${t("recommend.userBar.topicSuffix",{count:o.topicCount})})`}))),H=K(()=>[{title:t("recommend.recColumns.title"),key:"title"},{title:t("recommend.recColumns.contentType"),key:"contentType",width:"110px"},{title:t("recommend.recColumns.score"),key:"score",width:"180px"},{title:t("recommend.recColumns.reason"),key:"reason",width:"220px"},{title:t("recommend.recColumns.status"),key:"status",width:"100px"},{title:t("recommend.recColumns.feedback"),key:"feedback",width:"90px"},{title:t("recommend.recColumns.action"),key:"action",width:"210px"}]),V=K(()=>[{title:t("recommend.profileColumns.userId"),key:"userId"},{title:t("recommend.profileColumns.topicCount"),key:"topicCount",width:"110px"},{title:t("recommend.profileColumns.decayFactor"),key:"decayFactor",width:"110px"},{title:t("recommend.profileColumns.updateCount"),key:"updateCount",width:"110px"},{title:t("recommend.profileColumns.lastUpdated"),key:"lastUpdated",width:"180px"},{title:t("recommend.profileColumns.action"),key:"action",width:"200px"}]),ee=K(()=>{let o=S.value;return j.value&&(o=o.filter(c=>c.status===j.value)),P.value&&(o=o.filter(c=>c.contentType===P.value)),o});function te(o){const c=`recommend.type.${o}`,f=t(c);return f===c?o:f}function oe(o){return{note:"blue",post:"green",article:"purple",document:"orange"}[o]||"default"}function re(o){return{note:"#1677ff",post:"#52c41a",article:"#722ed1",document:"#fa8c16"}[o]||"#888"}function G(o){const c=`recommend.status.${o}`,f=t(c);return f===c?o:f}function X(o){return{pending:"processing",viewed:"green",dismissed:"default"}[o]||"default"}function ne(o){const c=`recommend.feedbackLabel.${o}`,f=t(c);return f===c?o:f}function $(o){return{like:"green",dislike:"red",later:"gold"}[o]||"default"}function R(o){return o>=.7?"#52c41a":o>=.4?"#1677ff":o>=.2?"#faad14":"#ff4d4f"}function ae(o){return o>=.7?"#52c41a":o>=.4?"#1677ff":o>=.2?"#faad14":"#888"}function l(o){try{return JSON.stringify(o,null,2)}catch{return String(o)}}async function m(){M.value=!0;try{const{output:o}=await e.execute("recommend profiles --json",1e4).catch(()=>({output:""}));N.value=ye(o),v.value&&!N.value.find(c=>c.userId===v.value)&&(v.value=null),v.value&&await C()}catch(o){g.error(t("recommend.messages.loadProfilesFailed",{err:o?.message||o}))}finally{M.value=!1}}async function C(){if(!v.value){S.value=[],O.value={total:0,pending:0,viewed:0,dismissed:0,feedbackCount:0,feedbackRate:0,avgScore:0},T.value=[];return}w.value=!0;try{const o=L(v.value),[c,f,B]=await Promise.all([e.execute(`recommend list ${o} --limit 200 --json`,1e4).catch(()=>({output:""})),e.execute(`recommend stats ${o} --json`,8e3).catch(()=>({output:""})),e.execute(`recommend top-interests ${o} --limit 30 --json`,8e3).catch(()=>({output:""}))]);S.value=ge(c.output),O.value=_e(f.output),T.value=ve(B.output)}catch(o){g.error(t("recommend.messages.loadUserFailed",{err:o?.message||o}))}finally{w.value=!1}}function L(o){return`"${String(o).replace(/"/g,'\\"')}"`}function be(){F.value=[],C()}function xe(o){v.value=o,U.value="recs",C()}async function he(){if(!x.userId.trim()){g.warning(t("recommend.messages.userIdRequired"));return}if(x.topicsJson.trim())try{JSON.parse(x.topicsJson)}catch{g.warning(t("recommend.messages.topicsJsonInvalid"));return}if(x.weightsJson.trim())try{JSON.parse(x.weightsJson)}catch{g.warning(t("recommend.messages.weightsJsonInvalid"));return}Y.value=!0;try{const o=[`recommend create-profile ${L(x.userId.trim())}`];x.topicsJson.trim()&&o.push(`-t ${se(x.topicsJson.trim())}`),x.weightsJson.trim()&&o.push(`-w ${se(x.weightsJson.trim())}`),o.push("--json");const{output:c}=await e.execute(o.join(" "),1e4),f=E(c);if(!f.ok){g.error(t("recommend.messages.createFailed",{err:f.reason||c.slice(0,120)}));return}g.success(t("recommend.messages.createOk",{id:f.profileId?.slice(0,8)||""})),J.value=!1;const B=x.userId.trim();le(),await m(),v.value=B,await C()}catch(o){g.error(t("recommend.messages.createFailed",{err:o?.message||o}))}finally{Y.value=!1}}function se(o){return`'${String(o).replace(/'/g,"'\\''")}'`}async function Ce(){if(v.value)try{const{output:o}=await e.execute(`recommend decay ${L(v.value)} --json`,8e3),c=E(o);if(!c.ok){g.error(t("recommend.messages.decayFailed",{err:c.reason||o.slice(0,120)}));return}g.success(c.topicCount!==null?t("recommend.messages.decayOkTopics",{count:c.topicCount}):t("recommend.messages.decayOk")),await m()}catch(o){g.error(t("recommend.messages.decayFailed",{err:o?.message||o}))}}async function we(){if(v.value)try{const{output:o}=await e.execute(`recommend suggest ${L(v.value)} --json`,8e3);F.value=ke(o),U.value="interests",F.value.length?g.success(t("recommend.messages.suggestFound",{count:F.value.length})):g.info(t("recommend.messages.suggestNone"))}catch(o){g.error(t("recommend.messages.loadSuggestFailed",{err:o?.message||o}))}}async function Se(o){try{const{output:c}=await e.execute(`recommend delete-profile ${L(o.userId)} --json`,8e3),f=E(c);if(!f.ok){g.error(t("recommend.messages.deleteFailed",{err:f.reason||c.slice(0,120)}));return}g.success(t("recommend.messages.deleteOk")),v.value===o.userId&&(v.value=null),await m()}catch(c){g.error(t("recommend.messages.deleteFailed",{err:c?.message||c}))}}function Te(o){Q.value=o,D.value=!0}async function Ie(o){try{const{output:c}=await e.execute(`recommend view ${o.id} --json`,8e3),f=E(c);if(!f.ok){g.error(t("recommend.messages.viewFailed",{err:f.reason||c.slice(0,120)}));return}g.success(t("recommend.messages.viewOk")),await C()}catch(c){g.error(t("recommend.messages.viewFailed",{err:c?.message||c}))}}async function Oe(o,c){try{const{output:f}=await e.execute(`recommend feedback ${o.id} ${c} --json`,8e3),B=E(f);if(!B.ok){g.error(t("recommend.messages.feedbackFailed",{err:B.reason||f.slice(0,120)}));return}g.success(t("recommend.messages.feedbackOk")),await C()}catch(f){g.error(t("recommend.messages.feedbackFailed",{err:f?.message||f}))}}async function Fe(o){try{const{output:c}=await e.execute(`recommend dismiss ${o.id} --json`,8e3),f=E(c);if(!f.ok){g.error(t("recommend.messages.dismissFailed",{err:f.reason||c.slice(0,120)}));return}g.success(t("recommend.messages.dismissOk")),await C()}catch(c){g.error(t("recommend.messages.dismissFailed",{err:c?.message||c}))}}function le(){x.userId="",x.topicsJson="",x.weightsJson=""}ce(m);const ie={t,ws:e,EMPTY_IMG:z,loading:M,loadingRecs:w,creating:Y,profiles:N,recs:S,userStats:O,topInterests:T,suggestions:F,selectedUser:v,activeTab:U,statusFilter:j,typeFilter:P,showCreateProfileModal:J,showDetailsModal:D,createForm:x,currentProfile:Q,userOptions:Z,recColumns:H,profileColumns:V,filteredRecs:ee,typeLabel:te,typeColor:oe,typeBarColor:re,statusLabel:G,statusColor:X,feedbackLabel:ne,feedbackColor:$,scoreColor:R,weightColor:ae,formatJson:l,loadAll:m,loadUserData:C,encodeArg:L,onUserChange:be,selectAndSwitch:xe,submitCreateProfile:he,shellQuote:se,applyDecay:Ce,loadSuggestions:we,deleteProfile:Se,viewProfileDetails:Te,markViewed:Ie,provideFeedback:Oe,dismissRec:Fe,resetCreateForm:le,ref:h,computed:K,onMounted:ce,reactive:de,get useI18n(){return me},get ReloadOutlined(){return Le},get UserAddOutlined(){return De},get UserOutlined(){return Je},get FireOutlined(){return je},get EyeInvisibleOutlined(){return Ne},get LikeOutlined(){return Me},get StarOutlined(){return Ee},get FieldTimeOutlined(){return Re},get BulbOutlined(){return ze},get message(){return g},get Empty(){return fe},get useWsStore(){return ue},get parseProfiles(){return ye},get parseRecommendations(){return ge},get parseUserStats(){return _e},get parseTopInterests(){return ve},get parseSuggestions(){return ke},get parseActionResult(){return E},get formatRecommendTime(){return Ke},get CONTENT_TYPE_IDS(){return Be},get RECOMMENDATION_STATUSES(){return We}};return Object.defineProperty(ie,"__isScriptSetup",{enumerable:!1,value:!0}),ie}},Qe={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Ze={class:"page-title"},He={class:"page-sub"},Xe={style:{display:"flex","align-items":"center",gap:"12px","flex-wrap":"wrap"}},$e={style:{color:"var(--text-secondary)","font-size":"12px"}},et={class:"type-name"},tt={class:"filter-bar"},ot={style:{color:"var(--text-primary)","font-weight":"500"}},rt={style:{color:"var(--text-muted)","font-size":"11px","margin-top":"2px"}},nt={key:3,style:{color:"var(--text-secondary)","font-size":"12px"}},at={key:1,style:{color:"var(--text-muted)"}},st={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},lt={key:0,style:{color:"var(--text-primary)","font-family":"monospace","font-weight":"500"}},it={key:2,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},ct={key:3,style:{color:"var(--text-secondary)"}},dt={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},mt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},ut={key:1},ft={class:"interest-topic"},pt={style:{"margin-left":"8px","font-family":"monospace",color:"var(--text-primary)"}},yt={style:{"margin-left":"auto",color:"var(--text-secondary)","font-size":"12px"}},gt={key:0,style:{"padding-top":"8px"}},_t={style:{"font-family":"monospace","font-size":"12px"}},vt={style:{color:"var(--text-primary)","font-size":"13px",margin:"16px 0 8px"}},kt={key:1},bt={class:"interest-topic"},xt={key:2,style:{color:"var(--text-primary)","font-size":"13px",margin:"16px 0 8px"}},ht={key:3,class:"weights-pre"};function Ct(s,n,t,e,z,M){const w=y("a-button"),Y=y("a-space"),N=y("a-select"),S=y("a-card"),O=y("a-statistic"),T=y("a-col"),F=y("a-row"),v=y("a-tag"),U=y("a-radio-button"),j=y("a-radio-group"),P=y("a-empty"),J=y("a-progress"),D=y("a-menu-item"),x=y("a-menu"),Q=y("a-dropdown"),Z=y("a-popconfirm"),H=y("a-table"),V=y("a-tab-pane"),ee=y("a-list-item"),te=y("a-list"),oe=y("a-tabs"),re=y("a-input"),G=y("a-form-item"),X=y("a-textarea"),ne=y("a-form"),$=y("a-modal"),R=y("a-descriptions-item"),ae=y("a-descriptions");return d(),_("div",null,[b("div",Qe,[b("div",null,[b("h2",Ze,i(e.t("recommend.title")),1),b("p",He,i(e.t("recommend.subtitle")),1)]),a(Y,null,{default:r(()=>[a(w,{loading:e.loading,onClick:e.loadAll},{icon:r(()=>[a(e.ReloadOutlined)]),default:r(()=>[p(" "+i(e.t("recommend.refresh")),1)]),_:1},8,["loading"]),a(w,{type:"primary",onClick:n[0]||(n[0]=l=>e.showCreateProfileModal=!0)},{icon:r(()=>[a(e.UserAddOutlined)]),default:r(()=>[p(" "+i(e.t("recommend.createProfile")),1)]),_:1})]),_:1})]),u(" User selector "),a(S,{size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"},"body-style":{padding:"10px 16px"}},{default:r(()=>[b("div",Xe,[b("span",$e,i(e.t("recommend.userBar.currentUser")),1),a(N,{value:e.selectedUser,"onUpdate:value":n[1]||(n[1]=l=>e.selectedUser=l),options:e.userOptions,placeholder:e.t("recommend.userBar.selectPlaceholder"),style:{"min-width":"280px"},"allow-clear":"","show-search":"",onChange:e.onUserChange},null,8,["value","options","placeholder"]),e.selectedUser?(d(),k(w,{key:0,size:"small",onClick:e.applyDecay},{icon:r(()=>[a(e.FieldTimeOutlined)]),default:r(()=>[p(" "+i(e.t("recommend.userBar.applyDecay")),1)]),_:1})):u("v-if",!0),e.selectedUser?(d(),k(w,{key:1,size:"small",onClick:e.loadSuggestions},{icon:r(()=>[a(e.BulbOutlined)]),default:r(()=>[p(" "+i(e.t("recommend.userBar.suggest")),1)]),_:1})):u("v-if",!0)])]),_:1}),u(" Stat cards "),a(F,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:r(()=>[a(T,{xs:12,sm:8,lg:5},{default:r(()=>[a(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[a(O,{title:e.t("recommend.stats.profiles"),value:e.profiles.length,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:r(()=>[a(e.UserOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),a(T,{xs:12,sm:8,lg:5},{default:r(()=>[a(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[a(O,{title:e.t("recommend.stats.totalRecs"),value:e.userStats.total,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:r(()=>[a(e.FireOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),a(T,{xs:12,sm:8,lg:5},{default:r(()=>[a(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[a(O,{title:e.t("recommend.stats.pending"),value:e.userStats.pending,"value-style":{color:e.userStats.pending>0?"#faad14":"#888",fontSize:"20px"}},{prefix:r(()=>[a(e.EyeInvisibleOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),a(T,{xs:12,sm:8,lg:5},{default:r(()=>[a(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[a(O,{title:e.t("recommend.stats.feedbackRate"),value:e.userStats.feedbackRate*100,suffix:"%",precision:1,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:r(()=>[a(e.LikeOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),a(T,{xs:24,sm:8,lg:4},{default:r(()=>[a(S,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[a(O,{title:e.t("recommend.stats.avgScore"),value:e.userStats.avgScore,precision:3,"value-style":{color:e.scoreColor(e.userStats.avgScore),fontSize:"20px"}},{prefix:r(()=>[a(e.StarOutlined)]),_:1},8,["title","value","value-style"])]),_:1})]),_:1})]),_:1}),u(" Content type catalogue "),a(S,{title:e.t("recommend.typeCatalogue"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:r(()=>[a(F,{gutter:[12,12]},{default:r(()=>[(d(!0),_(A,null,q(e.CONTENT_TYPE_IDS,l=>(d(),k(T,{key:l,xs:12,sm:6},{default:r(()=>[b("div",{class:"type-pill",style:Pe({borderLeftColor:e.typeBarColor(l)})},[a(v,{color:e.typeColor(l),style:{"font-family":"monospace"}},{default:r(()=>[p(i(l),1)]),_:2},1032,["color"]),b("div",et,i(e.typeLabel(l)),1)],4)]),_:2},1024))),128))]),_:1})]),_:1},8,["title"]),u(" Tabs "),a(oe,{activeKey:e.activeTab,"onUpdate:activeKey":n[4]||(n[4]=l=>e.activeTab=l),class:"recommend-tabs"},{default:r(()=>[u(" ── Recommendations tab ────────────────────────────────── "),a(V,{key:"recs",tab:e.t("recommend.tabs.recs")},{default:r(()=>[b("div",tt,[a(j,{value:e.statusFilter,"onUpdate:value":n[2]||(n[2]=l=>e.statusFilter=l),size:"small","button-style":"solid"},{default:r(()=>[a(U,{value:""},{default:r(()=>[p(i(e.t("recommend.filter.allStatuses")),1)]),_:1}),(d(!0),_(A,null,q(e.RECOMMENDATION_STATUSES,l=>(d(),k(U,{key:l,value:l},{default:r(()=>[p(i(e.statusLabel(l)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),a(j,{value:e.typeFilter,"onUpdate:value":n[3]||(n[3]=l=>e.typeFilter=l),size:"small"},{default:r(()=>[a(U,{value:""},{default:r(()=>[p(i(e.t("recommend.filter.allTypes")),1)]),_:1}),(d(!0),_(A,null,q(e.CONTENT_TYPE_IDS,l=>(d(),k(U,{key:l,value:l},{default:r(()=>[p(i(e.typeLabel(l)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),e.selectedUser?(d(),k(H,{key:1,columns:e.recColumns,"data-source":e.filteredRecs,pagination:{pageSize:20,showTotal:l=>e.t("recommend.totals.rows",{count:l})},size:"small",loading:e.loadingRecs,style:{background:"var(--bg-card)"}},{bodyCell:r(({column:l,record:m})=>[l.key==="title"?(d(),_(A,{key:0},[b("span",ot,i(m.title||e.t("recommend.noTitle")),1),b("div",rt,i(m.contentId),1)],64)):u("v-if",!0),l.key==="contentType"?(d(),k(v,{key:1,color:e.typeColor(m.contentType),style:{"font-family":"monospace"}},{default:r(()=>[p(i(m.contentType),1)]),_:2},1032,["color"])):u("v-if",!0),l.key==="score"?(d(),k(J,{key:2,percent:Math.round(m.score*100),"stroke-color":e.scoreColor(m.score),size:"small",format:()=>m.score.toFixed(3)},null,8,["percent","stroke-color","format"])):u("v-if",!0),l.key==="reason"?(d(),_("span",nt,i(m.reason),1)):u("v-if",!0),l.key==="status"?(d(),k(v,{key:4,color:e.statusColor(m.status)},{default:r(()=>[p(i(e.statusLabel(m.status)),1)]),_:2},1032,["color"])):u("v-if",!0),l.key==="feedback"?(d(),_(A,{key:5},[m.feedback?(d(),k(v,{key:0,color:e.feedbackColor(m.feedback)},{default:r(()=>[p(i(e.feedbackLabel(m.feedback)),1)]),_:2},1032,["color"])):(d(),_("span",at,"—"))],64)):u("v-if",!0),l.key==="action"?(d(),_(A,{key:6},[m.status==="pending"?(d(),k(w,{key:0,size:"small",type:"link",onClick:C=>e.markViewed(m)},{default:r(()=>[p(i(e.t("recommend.rowActions.view")),1)]),_:1},8,["onClick"])):u("v-if",!0),m.status!=="dismissed"?(d(),k(Q,{key:1},{overlay:r(()=>[a(x,{onClick:({key:C})=>e.provideFeedback(m,C)},{default:r(()=>[a(D,{key:"like",style:{color:"#52c41a"}},{default:r(()=>[p(i(e.t("recommend.feedbackMenu.like")),1)]),_:1}),a(D,{key:"dislike",style:{color:"#ff4d4f"}},{default:r(()=>[p(i(e.t("recommend.feedbackMenu.dislike")),1)]),_:1}),a(D,{key:"later"},{default:r(()=>[p(i(e.t("recommend.feedbackMenu.later")),1)]),_:1})]),_:1},8,["onClick"])]),default:r(()=>[a(w,{size:"small",type:"link"},{default:r(()=>[p(i(e.t("recommend.feedbackDropdown")),1)]),_:1})]),_:2},1024)):u("v-if",!0),m.status!=="dismissed"?(d(),k(Z,{key:2,title:e.t("recommend.rowActions.dismissConfirmTitle"),"ok-text":e.t("recommend.rowActions.dismissOk"),"cancel-text":e.t("common.cancel"),onConfirm:C=>e.dismissRec(m)},{default:r(()=>[a(w,{size:"small",type:"link",danger:""},{default:r(()=>[p(i(e.t("recommend.rowActions.dismiss")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])):u("v-if",!0)],64)):u("v-if",!0)]),emptyText:r(()=>[b("div",st,[a(e.FireOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),p(" "+i(e.statusFilter||e.typeFilter?e.t("recommend.empty.filtered"):e.t("recommend.empty.noRecsHint")),1)])]),_:1},8,["columns","data-source","pagination","loading"])):(d(),k(P,{key:0,description:e.t("recommend.empty.selectUser"),image:e.EMPTY_IMG,style:{padding:"40px 0"}},null,8,["description","image"]))]),_:1},8,["tab"]),u(" ── Profiles tab ───────────────────────────────────────── "),a(V,{key:"profiles",tab:e.t("recommend.tabs.profiles")},{default:r(()=>[a(H,{columns:e.profileColumns,"data-source":e.profiles,pagination:{pageSize:20,showTotal:l=>e.t("recommend.totals.profiles",{count:l})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:r(({column:l,record:m})=>[l.key==="userId"?(d(),_("span",lt,i(m.userId),1)):u("v-if",!0),l.key==="topicCount"?(d(),k(v,{key:1,color:"blue"},{default:r(()=>[p(i(e.t("recommend.topicTagSuffix",{count:m.topicCount})),1)]),_:2},1024)):u("v-if",!0),l.key==="decayFactor"?(d(),_("span",it,i(m.decayFactor.toFixed(2)),1)):u("v-if",!0),l.key==="updateCount"?(d(),_("span",ct,i(m.updateCount),1)):u("v-if",!0),l.key==="lastUpdated"?(d(),_("span",dt,i(e.formatRecommendTime(m.lastUpdated)),1)):u("v-if",!0),l.key==="action"?(d(),_(A,{key:5},[a(w,{size:"small",type:"link",onClick:C=>e.viewProfileDetails(m)},{default:r(()=>[p(i(e.t("recommend.rowActions.details")),1)]),_:1},8,["onClick"]),a(w,{size:"small",type:"link",onClick:C=>e.selectAndSwitch(m.userId)},{default:r(()=>[p(i(e.t("recommend.rowActions.switch")),1)]),_:1},8,["onClick"]),a(Z,{title:e.t("recommend.rowActions.deleteConfirmTitle"),"ok-text":e.t("recommend.rowActions.deleteOk"),"cancel-text":e.t("common.cancel"),onConfirm:C=>e.deleteProfile(m)},{default:r(()=>[a(w,{size:"small",type:"link",danger:""},{default:r(()=>[p(i(e.t("recommend.rowActions.delete")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])],64)):u("v-if",!0)]),emptyText:r(()=>[b("div",mt,[a(e.UserOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),p(" "+i(e.t("recommend.empty.noProfiles")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),u(" ── Top interests tab ──────────────────────────────────── "),a(V,{key:"interests",tab:e.t("recommend.tabs.interests")},{default:r(()=>[e.selectedUser?(d(),k(F,{key:1,gutter:[16,16]},{default:r(()=>[a(T,{xs:24,lg:14},{default:r(()=>[a(S,{title:e.t("recommend.interest.topicWeights"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[e.topInterests.length?(d(),_("div",ut,[(d(!0),_(A,null,q(e.topInterests,l=>(d(),_("div",{key:l.key,class:"interest-row"},[b("span",ft,i(l.topic),1),a(J,{percent:Math.round(l.weight*100),"stroke-color":e.weightColor(l.weight),format:()=>l.weight.toFixed(3),size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))])):(d(),k(P,{key:0,description:e.t("recommend.empty.noInterests"),image:e.EMPTY_IMG},null,8,["description","image"]))]),_:1},8,["title"])]),_:1}),a(T,{xs:24,lg:10},{default:r(()=>[a(S,{title:e.t("recommend.interest.feedbackSuggest"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:r(()=>[e.suggestions.length?(d(),k(te,{key:1,size:"small","data-source":e.suggestions},{renderItem:r(({item:l})=>[a(ee,null,{default:r(()=>[a(v,{color:l.action==="boost"?"green":"orange"},{default:r(()=>[p(i(l.action==="boost"?e.t("recommend.interest.boost"):e.t("recommend.interest.lower")),1)]),_:2},1032,["color"]),b("span",pt,i(l.topic),1),b("span",yt,"±"+i(l.amount),1)]),_:2},1024)]),_:1},8,["data-source"])):(d(),k(P,{key:0,description:e.t("recommend.empty.noSuggestions"),image:e.EMPTY_IMG},null,8,["description","image"]))]),_:1},8,["title"])]),_:1})]),_:1})):(d(),k(P,{key:0,description:e.t("recommend.empty.selectUser"),image:e.EMPTY_IMG,style:{padding:"40px 0"}},null,8,["description","image"]))]),_:1},8,["tab"])]),_:1},8,["activeKey"]),u(" ── Create profile modal ───────────────────────────────── "),a($,{open:e.showCreateProfileModal,"onUpdate:open":n[8]||(n[8]=l=>e.showCreateProfileModal=l),title:e.t("recommend.create.title"),"confirm-loading":e.creating,width:560,"ok-text":e.t("recommend.create.ok"),"cancel-text":e.t("common.cancel"),onOk:e.submitCreateProfile,onCancel:e.resetCreateForm},{default:r(()=>[a(ne,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:r(()=>[a(G,{label:e.t("recommend.create.userIdLabel"),required:""},{default:r(()=>[a(re,{value:e.createForm.userId,"onUpdate:value":n[5]||(n[5]=l=>e.createForm.userId=l),placeholder:e.t("recommend.create.userIdPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(G,{label:e.t("recommend.create.topicsLabel")},{default:r(()=>[a(X,{value:e.createForm.topicsJson,"onUpdate:value":n[6]||(n[6]=l=>e.createForm.topicsJson=l),placeholder:e.t("recommend.create.topicsPlaceholder"),"auto-size":{minRows:2,maxRows:5}},null,8,["value","placeholder"])]),_:1},8,["label"]),a(G,{label:e.t("recommend.create.weightsLabel")},{default:r(()=>[a(X,{value:e.createForm.weightsJson,"onUpdate:value":n[7]||(n[7]=l=>e.createForm.weightsJson=l),placeholder:e.t("recommend.create.weightsPlaceholder"),"auto-size":{minRows:2,maxRows:5}},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),u(" ── Profile details modal ──────────────────────────────── "),a($,{open:e.showDetailsModal,"onUpdate:open":n[9]||(n[9]=l=>e.showDetailsModal=l),title:e.t("recommend.details.title",{userId:e.currentProfile?.userId||""}),width:680,footer:null},{default:r(()=>[e.currentProfile?(d(),_("div",gt,[a(ae,{column:2,size:"small",bordered:""},{default:r(()=>[a(R,{label:e.t("recommend.details.id"),span:2},{default:r(()=>[b("span",_t,i(e.currentProfile.id),1)]),_:1},8,["label"]),a(R,{label:e.t("recommend.details.topicCount")},{default:r(()=>[p(i(e.currentProfile.topicCount),1)]),_:1},8,["label"]),a(R,{label:e.t("recommend.details.decayFactor")},{default:r(()=>[p(i(e.currentProfile.decayFactor.toFixed(2)),1)]),_:1},8,["label"]),a(R,{label:e.t("recommend.details.updateCount")},{default:r(()=>[p(i(e.currentProfile.updateCount),1)]),_:1},8,["label"]),a(R,{label:e.t("recommend.details.lastUpdated")},{default:r(()=>[p(i(e.formatRecommendTime(e.currentProfile.lastUpdated)),1)]),_:1},8,["label"])]),_:1}),b("h4",vt,i(e.t("recommend.details.topicWeights")),1),Object.keys(e.currentProfile.topics).length?(d(),_("div",kt,[(d(!0),_(A,null,q(e.currentProfile.topics,(l,m)=>(d(),_("div",{key:m,class:"interest-row"},[b("span",bt,i(m),1),a(J,{percent:Math.round(l*100),"stroke-color":e.weightColor(l),format:()=>l.toFixed(3),size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))])):(d(),k(P,{key:0,description:e.t("recommend.empty.noTopics"),image:e.EMPTY_IMG},null,8,["description","image"])),Object.keys(e.currentProfile.interactionWeights).length?(d(),_("h4",xt,i(e.t("recommend.details.interactionWeights")),1)):u("v-if",!0),Object.keys(e.currentProfile.interactionWeights).length?(d(),_("pre",ht,i(e.formatJson(e.currentProfile.interactionWeights)),1)):u("v-if",!0)])):u("v-if",!0)]),_:1},8,["open","title"])])}const Ot=Ae(qe,[["render",Ct],["__scopeId","data-v-9cfd9dba"],["__file","/tmp/cc-web-panel-heolxZ/repo/packages/web-panel/src/views/Recommend.vue"]]);export{Ot as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as m,J as p,U as v,R as s,c as o,K as n,V as d,S as x,o as me,b as se,a as te,r as _,P as u,Q as f,F,Z as L,_ as Pe,$ as pe}from"./vendor-BvqAck49.js";import{_ as Be,b as fe,u as ye,E as be,d as g}from"./index-BcRDjaEi.js";import{s as Se}from"./community-parser-CO25nZFt.js";import ve from"./index-kUeSjyHt.js";import{aU as Ve,l as Je,L as Ye,q as We,at as qe,ak as Ke,$ as Ze,am as He,as as Ge,R as Qe}from"./icons-DP3uiYxy.js";import"./KeyCode-D63Tfrq7.js";import"./omit-DCrBiySU.js";import"./pickAttrs-CcJuqfya.js";import"./initDefaultProps-dsKHYCPH.js";import"./motion-DdPCK2zh.js";import"./raf-Deuc0E8-.js";import"./index-ecThTNhE.js";import"./index-DTxmgfz2.js";import"./isVisible-C7tPsqfj.js";import"./useState-BK4hy8Ma.js";import"./devWarning-vFgm_Ssk.js";import"./compact-item-B9AUAVCQ.js";import"./createContext-CnMJHqHw.js";import"./Compact-D5str1h-.js";import"./_getTag-DnrRH4E6.js";import"./styleChecker-CMuE7NWy.js";import"./zoom-DKNwqG2v.js";import"./ActionButton-Bqvaz1Yj.js";import"./vnode-CXOEebAH.js";function q(l){const t=Se(l);if(!t)return null;try{return JSON.parse(t)}catch{}const r=t.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!r)return null;try{return JSON.parse(r[0])}catch{return null}}const Oe=Object.freeze(["accuracy","fairness","resilience","convergence_speed"]),Xe=Object.freeze(["none","exponential","linear","step"]),$e=Object.freeze(["z_score","iqr"]),ze=Object.freeze(["running","complete","applied","failed","cancelled"]),et=Object.freeze(["generic","task","review","vote"]);function k(l,t=0){return typeof l=="number"&&Number.isFinite(l)?l:t}function N(l){if(!l)return{noDb:!1,error:""};const t=Se(l),r=/Database not available/i.test(t);return{noDb:r,error:r?"Database not available":""}}function tt(l,t=0){if(!l||typeof l!="object")return null;const r=l.did||"";return r?{key:r,did:r,score:k(l.score,0),observations:k(l.observations,0),decay:String(l.decay||"none"),weightTotal:k(l.weightTotal,0),_idx:t}:null}function ce(l){const t=q(l);return Array.isArray(t)?t.map(tt).filter(Boolean):[]}function Ae(l,t=0){if(!l||typeof l!="object")return null;const r=l.did||"";return r?{key:`${r}-${t}`,did:r,score:k(l.score,0),reason:String(l.reason||""),zScore:typeof l.zScore=="number"?l.zScore:null,lower:typeof l.lower=="number"?l.lower:null,upper:typeof l.upper=="number"?l.upper:null}:null}function _e(l){const t=q(l);if(!t||typeof t!="object"||Array.isArray(t))return{method:"",threshold:0,totalSamples:0,anomalies:[],summary:"",message:""};const r=Array.isArray(t.anomalies)?t.anomalies.map(Ae).filter(Boolean):[];return{method:String(t.method||""),threshold:k(t.threshold,0),totalSamples:k(t.totalSamples,0),anomalies:r,summary:t.summary?String(t.summary):"",message:t.message?String(t.message):""}}function Re(l,t=0){if(!l||typeof l!="object")return null;const r=l.runId||"";return r?{key:r,runId:r,objective:String(l.objective||""),iterations:k(l.iterations,0),paramSpace:l.paramSpace??null,bestParams:l.bestParams??null,bestScore:k(l.bestScore,0),status:String(l.status||"complete").toLowerCase(),createdAt:l.createdAt??null,completedAt:l.completedAt??null,analytics:l.analytics??null,errorMessage:l.errorMessage??"",_idx:t}:null}function ge(l){const t=q(l);return Array.isArray(t)?t.map(Re).filter(Boolean):[]}function xe(l){const t=q(l);return!t||typeof t!="object"||Array.isArray(t)?null:Re(t,0)}function ke(l){const t=q(l);if(!t||typeof t!="object"||Array.isArray(t))return null;const r=t.reputationDistribution||{};return{analyticsId:String(t.analyticsId||""),runId:String(t.runId||""),reputationDistribution:{buckets:Array.isArray(r.buckets)?r.buckets.filter(e=>e&&typeof e=="object").map(e=>({label:String(e.label||""),count:k(e.count,0),min:typeof e.min=="number"?e.min:null,max:typeof e.max=="number"?e.max:null})):[],mean:typeof r.mean=="number"?r.mean:null,stdDev:typeof r.stdDev=="number"?r.stdDev:null},anomalies:t.anomalies&&typeof t.anomalies=="object"?{method:String(t.anomalies.method||""),totalSamples:k(t.anomalies.totalSamples,0),anomalies:Array.isArray(t.anomalies.anomalies)?t.anomalies.anomalies.map(Ae).filter(Boolean):[],summary:t.anomalies.summary?String(t.anomalies.summary):"",message:t.anomalies.message?String(t.anomalies.message):""}:{method:"",totalSamples:0,anomalies:[],summary:"",message:""},recommendations:Array.isArray(t.recommendations)?t.recommendations.filter(e=>typeof e=="string"):[]}}const ot={totalRuns:0,activeRuns:0,maxConcurrentOptimizations:0,byStatus:{},byObjective:{},observations:{totalObservations:0,totalDids:0},bestScoreEver:0};function he(l){const t=JSON.parse(JSON.stringify(ot));for(const e of ze)t.byStatus[e]=0;for(const e of Oe)t.byObjective[e]=0;const r=q(l);if(!r||typeof r!="object"||Array.isArray(r))return t;if(t.totalRuns=k(r.totalRuns,0),t.activeRuns=k(r.activeRuns,0),t.maxConcurrentOptimizations=k(r.maxConcurrentOptimizations,0),t.bestScoreEver=k(r.bestScoreEver,0),r.byStatus&&typeof r.byStatus=="object")for(const[e,w]of Object.entries(r.byStatus))typeof w=="number"&&Number.isFinite(w)&&(t.byStatus[e]=w);if(r.byObjective&&typeof r.byObjective=="object")for(const[e,w]of Object.entries(r.byObjective))typeof w=="number"&&Number.isFinite(w)&&(t.byObjective[e]=w);return r.observations&&typeof r.observations=="object"&&(t.observations.totalObservations=k(r.observations.totalObservations,0),t.observations.totalDids=k(r.observations.totalDids,0)),t}function at(l){if(l==null||l==="")return"—";const t=typeof l=="number"?new Date(l):new Date(String(l));return isNaN(t.getTime())?String(l):t.toLocaleString("zh-CN",{hour12:!1})}const nt={__name:"Reputation",setup(l,{expose:t}){t();const{t:r}=fe(),e=ye(),w=be.PRESENTED_IMAGE_SIMPLE,Q=_(!1),R=_(!1),K=_(!1),U=_(!1),A=_(!1),O=_([]),z=_([]),V=_({totalRuns:0,activeRuns:0,maxConcurrentOptimizations:0,byStatus:{},byObjective:{},observations:{totalObservations:0,totalDids:0},bestScoreEver:0}),P=_({noDb:!1,error:""}),X=_("scores"),E=_("none"),Z=_(!1),J=_(!1),j=_(!1),H=_(!1),h=te({did:"",score:.8,kind:"generic",weight:1}),S=te({objective:"accuracy",iterations:50}),T=te({method:"z_score",threshold:2.5,decay:"none"}),D=_(null),I=_(null),B=_(null),Y=se(()=>[{title:r("reputation.scoreColumns.rank"),key:"rank",width:"60px"},{title:r("reputation.scoreColumns.did"),key:"did"},{title:r("reputation.scoreColumns.score"),key:"score",width:"220px"},{title:r("reputation.scoreColumns.observations"),key:"observations",width:"100px"},{title:r("reputation.scoreColumns.weightTotal"),key:"weightTotal",width:"100px"}]),oe=se(()=>[{title:r("reputation.runColumns.runId"),key:"runId",width:"140px"},{title:r("reputation.runColumns.objective"),key:"objective",width:"140px"},{title:r("reputation.runColumns.iterations"),key:"iterations",width:"80px"},{title:r("reputation.runColumns.bestScore"),key:"bestScore",width:"110px"},{title:r("reputation.runColumns.status"),key:"status",width:"100px"},{title:r("reputation.runColumns.createdAt"),key:"createdAt",width:"160px"},{title:r("reputation.runColumns.action"),key:"action",width:"160px"}]);function ae(i){const c=`reputation.decay.${i}`,y=r(c);return y===c?i:y}function $(i){const c=`reputation.kind.${i}`,y=r(c);return y===c?i:y}function ee(i){const c=`reputation.objective.${i}`,y=r(c);return y===c?i:y}function C(i){return{accuracy:"blue",fairness:"green",resilience:"purple",convergence_speed:"orange"}[i]||"default"}function ne(i){return{accuracy:"#1677ff",fairness:"#52c41a",resilience:"#722ed1",convergence_speed:"#fa8c16"}[i]||"#888"}function re(i){const c=`reputation.objectiveDesc.${i}`,y=r(c);return y===c?"":y}function a(i){const c=`reputation.status.${i}`,y=r(c);return y===c?i:y}function b(i){return{running:"processing",complete:"blue",applied:"green",failed:"red",cancelled:"default"}[i]||"default"}function W(i){return{running:"#1677ff",complete:"#13c2c2",applied:"#52c41a",failed:"#ff4d4f",cancelled:"#888"}[i]||"#888"}function we(i){return i===0?"gold":i===1?"silver":i===2?"bronze":""}function je(i){return i>=.8?"#52c41a":i>=.5?"#1677ff":i>=.3?"#faad14":"#ff4d4f"}function Ce(i,c){return c?Math.round(i/c*100):0}function Te(i){const c=I.value?.reputationDistribution.buckets.reduce((y,M)=>y+M.count,0)||0;return c?Math.round(i.count/c*100):0}function De(i){if(typeof i=="string")return i;try{return JSON.stringify(i,null,2)}catch{return String(i)}}async function G(){Q.value=!0,P.value={noDb:!1,error:""};try{const[i,c,y]=await Promise.all([e.execute(`reputation list --decay ${E.value} --json`,1e4).catch(()=>({output:""})),e.execute("reputation runs --limit 50 --json",1e4).catch(()=>({output:""})),e.execute("reputation stats-v2 --json",8e3).catch(()=>({output:""}))]),M=[i,c,y].map(le=>N(le.output)).find(le=>le.noDb);M&&(P.value=M),O.value=ce(i.output),z.value=ge(c.output),V.value=he(y.output)}catch(i){g.error(r("reputation.messages.loadFailed",{err:i?.message||i}))}finally{Q.value=!1}}async function Fe(){try{const{output:i}=await e.execute(`reputation list --decay ${E.value} --json`,1e4),c=N(i);if(c.noDb){P.value=c;return}O.value=ce(i)}catch(i){g.error(r("reputation.messages.loadScoresFailed",{err:i?.message||i}))}}async function Ee(){if(!h.did.trim()){g.warning(r("reputation.messages.didRequired"));return}if(h.score<0||h.score>1){g.warning(r("reputation.messages.scoreRange"));return}R.value=!0;try{const i=[`reputation observe "${h.did.trim().replace(/"/g,'\\"')}"`,String(h.score),`-k ${h.kind}`,`-w ${h.weight}`,"--json"],{output:c}=await e.execute(i.join(" "),1e4);if(N(c).noDb){g.error(r("reputation.messages.needInit"));return}if(!/"did"/.test(c)){g.error(r("reputation.messages.observeFailed",{err:c.slice(0,120)}));return}g.success(r("reputation.messages.observeOk")),Z.value=!1,ue(),await G()}catch(i){g.error(r("reputation.messages.observeFailed",{err:i?.message||i}))}finally{R.value=!1}}async function Ie(){K.value=!0;try{const i=["reputation optimize",`-o ${S.objective}`,`-i ${S.iterations}`,"--json"],{output:c}=await e.execute(i.join(" "),6e4);if(N(c).noDb){g.error(r("reputation.messages.needInit"));return}const M=xe(c);if(!M){g.error(r("reputation.messages.optimizeFailed",{err:c.slice(0,120)}));return}J.value=!1,g.success(r("reputation.messages.optimizeOk",{score:M.bestScore.toFixed(4)})),await G(),D.value=M,H.value=!0,await ie()}catch(i){g.error(r("reputation.messages.optimizeFailed",{err:i?.message||i}))}finally{K.value=!1}}async function Me(i){ve.confirm({title:r("reputation.applyConfirm.title"),content:r("reputation.applyConfirm.content",{runId:i.runId.slice(0,12)}),okText:r("reputation.applyConfirm.ok"),cancelText:r("reputation.applyConfirm.cancel"),onOk:async()=>{try{const{output:c}=await e.execute(`reputation apply ${i.runId}`,8e3);if(N(c).noDb){g.error(r("reputation.messages.needInit"));return}if(/Failed|Error/i.test(c)&&!/Applied/i.test(c)){g.error(r("reputation.messages.applyFailed",{err:c.slice(0,120)}));return}g.success(r("reputation.messages.applyOk")),await G()}catch(c){g.error(r("reputation.messages.applyFailed",{err:c?.message||c}))}}})}async function Le(i){D.value=i,I.value=null,H.value=!0,await ie()}async function ie(){if(D.value){A.value=!0;try{const{output:i}=await e.execute(`reputation analytics ${D.value.runId} --json`,8e3);if(N(i).noDb)return;I.value=ke(i)}catch{}finally{A.value=!1}}}function Ne(){B.value=null,j.value=!0}async function Ue(){U.value=!0;try{const i=["reputation anomalies",`-m ${T.method}`,`-t ${T.threshold}`,`-d ${T.decay}`,"--json"],{output:c}=await e.execute(i.join(" "),1e4);if(N(c).noDb){g.error(r("reputation.messages.needInit"));return}B.value=_e(c)}catch(i){g.error(r("reputation.messages.detectFailed",{err:i?.message||i}))}finally{U.value=!1}}function ue(){h.did="",h.score=.8,h.kind="generic",h.weight=1}me(G);const de={t:r,ws:e,EMPTY_IMG:w,loading:Q,observing:R,optimizing:K,detectingAnomalies:U,loadingAnalytics:A,scores:O,runs:z,stats:V,errorState:P,activeTab:X,decayFilter:E,showObserveModal:Z,showOptimizeModal:J,showAnomaliesModal:j,showAnalyticsModal:H,observeForm:h,optimizeForm:S,anomalyForm:T,currentRun:D,currentAnalytics:I,anomalyResult:B,scoreColumns:Y,runColumns:oe,decayLabel:ae,kindLabel:$,objectiveLabel:ee,objectiveColor:C,objectiveBarColor:ne,objectiveDesc:re,statusLabel:a,statusColor:b,statusBarColor:W,rankClass:we,scoreColor:je,pctOfTotal:Ce,bucketPct:Te,formatParams:De,loadAll:G,loadScores:Fe,submitObservation:Ee,submitOptimization:Ie,applyRun:Me,viewRunAnalytics:Le,loadAnalyticsForCurrentRun:ie,openAnomaliesModal:Ne,runAnomalyDetection:Ue,resetObserveForm:ue,ref:_,onMounted:me,reactive:te,computed:se,get useI18n(){return fe},get ReloadOutlined(){return Qe},get PlusOutlined(){return Ge},get WarningOutlined(){return He},get ThunderboltOutlined(){return Ze},get UserOutlined(){return Ke},get EyeOutlined(){return qe},get ExperimentOutlined(){return We},get LoadingOutlined(){return Ye},get TrophyOutlined(){return Je},get ArrowRightOutlined(){return Ve},get message(){return g},get Modal(){return ve},get Empty(){return be},get useWsStore(){return ye},get parseScores(){return ce},get parseAnomalies(){return _e},get parseRun(){return xe},get parseRuns(){return ge},get parseAnalytics(){return ke},get parseStatsV2(){return he},get detectReputationError(){return N},get formatReputationTime(){return at},get OPTIMIZATION_OBJECTIVES(){return Oe},get DECAY_MODELS(){return Xe},get ANOMALY_METHODS(){return $e},get RUN_STATUSES(){return ze},get OBSERVATION_KINDS(){return et}};return Object.defineProperty(de,"__isScriptSetup",{enumerable:!1,value:!0}),de}},rt={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},it={class:"page-title"},lt={class:"page-sub"},st={class:"filter-bar"},ct={style:{color:"var(--text-secondary)","font-size":"12px"}},ut={key:1,style:{color:"var(--text-primary)","font-family":"monospace","font-size":"12px"}},dt={key:3,style:{color:"var(--text-secondary)"}},mt={key:4,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},pt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},ft={key:0,style:{color:"var(--text-primary)","font-family":"monospace","font-size":"12px"}},yt={key:2,style:{color:"var(--text-secondary)"}},bt={key:5,style:{color:"var(--text-secondary)","font-size":"11px"}},vt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},_t={style:{"margin-left":"8px",color:"var(--text-muted)","font-size":"12px"}},gt={style:{color:"var(--text-muted)","font-size":"11px","margin-top":"4px"}},xt={style:{"margin-left":"8px",color:"var(--text-muted)","font-size":"12px"}},kt={style:{"padding-top":"8px"}},ht={style:{"margin-left":"8px",color:"var(--text-muted)","font-size":"12px"}},St={key:1},Ot={style:{"font-family":"monospace","font-size":"12px",color:"var(--text-primary)"}},zt={style:{"margin-left":"8px",color:"var(--text-secondary)","font-size":"12px"}},At={key:0,style:{"margin-left":"8px",color:"var(--text-muted)","font-size":"11px"}},Rt={key:0,style:{"padding-top":"8px"}},wt={class:"params-pre"},jt={style:{color:"#ff4d4f"}},Ct={key:0,style:{"margin-top":"16px"}},Tt={style:{color:"var(--text-primary)","font-size":"13px",margin:"0 0 10px"}},Dt={class:"bucket-label"},Ft={key:0,style:{"margin-top":"8px",color:"var(--text-secondary)","font-size":"12px"}},Et={key:0,style:{"margin-left":"12px"}};function It(l,t,r,e,w,Q){const R=m("a-button"),K=m("a-space"),U=m("a-alert"),A=m("a-statistic"),O=m("a-card"),z=m("a-col"),V=m("a-row"),P=m("a-radio-button"),X=m("a-radio-group"),E=m("a-progress"),Z=m("a-table"),J=m("a-tab-pane"),j=m("a-tag"),H=m("a-tabs"),h=m("a-input"),S=m("a-form-item"),T=m("a-input-number"),D=m("a-select-option"),I=m("a-select"),B=m("a-form"),Y=m("a-modal"),oe=m("a-divider"),ae=m("a-empty"),$=m("a-list-item"),ee=m("a-list"),C=m("a-descriptions-item"),ne=m("a-descriptions"),re=m("a-spin");return u(),p("div",null,[v("div",rt,[v("div",null,[v("h2",it,s(e.t("reputation.title")),1),v("p",lt,s(e.t("reputation.subtitle")),1)]),o(K,null,{default:n(()=>[o(R,{loading:e.loading,onClick:e.loadAll},{icon:n(()=>[o(e.ReloadOutlined)]),default:n(()=>[f(" "+s(e.t("reputation.refresh")),1)]),_:1},8,["loading"]),o(R,{onClick:e.openAnomaliesModal},{icon:n(()=>[o(e.WarningOutlined)]),default:n(()=>[f(" "+s(e.t("reputation.actions.anomalies")),1)]),_:1}),o(R,{type:"primary",onClick:t[0]||(t[0]=a=>e.showOptimizeModal=!0)},{icon:n(()=>[o(e.ThunderboltOutlined)]),default:n(()=>[f(" "+s(e.t("reputation.actions.optimize")),1)]),_:1})]),_:1})]),d(" noDb banner "),e.errorState.noDb?(u(),x(U,{key:0,type:"info","show-icon":"",message:e.t("reputation.noDb.message"),description:e.t("reputation.noDb.description"),style:{"margin-bottom":"16px"}},null,8,["message","description"])):d("v-if",!0),d(" Stat cards "),o(V,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:n(()=>[o(z,{xs:12,sm:8,lg:5},{default:n(()=>[o(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[o(A,{title:e.t("reputation.stats.trackedDids"),value:e.stats.observations.totalDids,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:n(()=>[o(e.UserOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(z,{xs:12,sm:8,lg:5},{default:n(()=>[o(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[o(A,{title:e.t("reputation.stats.totalObservations"),value:e.stats.observations.totalObservations,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:n(()=>[o(e.EyeOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(z,{xs:12,sm:8,lg:5},{default:n(()=>[o(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[o(A,{title:e.t("reputation.stats.optimizationRuns"),value:e.stats.totalRuns,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:n(()=>[o(e.ExperimentOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1}),o(z,{xs:12,sm:8,lg:5},{default:n(()=>[o(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[o(A,{title:e.t("reputation.stats.active"),value:e.stats.activeRuns,"value-style":{color:e.stats.activeRuns>0?"#1677ff":"#888",fontSize:"20px"},suffix:`/ ${e.stats.maxConcurrentOptimizations}`},{prefix:n(()=>[o(e.LoadingOutlined)]),_:1},8,["title","value","value-style","suffix"])]),_:1})]),_:1}),o(z,{xs:24,sm:8,lg:4},{default:n(()=>[o(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[o(A,{title:e.t("reputation.stats.bestEver"),value:e.stats.bestScoreEver,precision:3,"value-style":{color:"#52c41a",fontSize:"20px"}},{prefix:n(()=>[o(e.TrophyOutlined)]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),d(" Tabs "),o(H,{activeKey:e.activeTab,"onUpdate:activeKey":t[3]||(t[3]=a=>e.activeTab=a),class:"reputation-tabs"},{default:n(()=>[d(" ── Scores tab ──────────────────────────────────────────── "),o(J,{key:"scores",tab:e.t("reputation.tabs.scores")},{default:n(()=>[v("div",st,[v("span",ct,s(e.t("reputation.filter.decayLabel")),1),o(X,{value:e.decayFilter,"onUpdate:value":t[1]||(t[1]=a=>e.decayFilter=a),size:"small","button-style":"solid",onChange:e.loadScores},{default:n(()=>[(u(!0),p(F,null,L(e.DECAY_MODELS,a=>(u(),x(P,{key:a,value:a},{default:n(()=>[f(s(e.decayLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),o(R,{size:"small",onClick:t[2]||(t[2]=a=>e.showObserveModal=!0)},{icon:n(()=>[o(e.PlusOutlined)]),default:n(()=>[f(" "+s(e.t("reputation.filter.addObservation")),1)]),_:1})]),o(Z,{columns:e.scoreColumns,"data-source":e.scores,pagination:{pageSize:20,showTotal:a=>e.t("reputation.totals.dids",{count:a})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:n(({column:a,record:b,index:W})=>[a.key==="rank"?(u(),p("span",{key:0,class:Pe(["rank-pill",e.rankClass(W)])},s(W+1),3)):d("v-if",!0),a.key==="did"?(u(),p("span",ut,s(b.did),1)):d("v-if",!0),a.key==="score"?(u(),x(E,{key:2,percent:Math.round(b.score*100),"stroke-color":e.scoreColor(b.score),size:"small",format:()=>b.score.toFixed(4)},null,8,["percent","stroke-color","format"])):d("v-if",!0),a.key==="observations"?(u(),p("span",dt,s(b.observations),1)):d("v-if",!0),a.key==="weightTotal"?(u(),p("span",mt,s(b.weightTotal.toFixed(2)),1)):d("v-if",!0)]),emptyText:n(()=>[v("div",pt,[o(e.UserOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),f(" "+s(e.t("reputation.empty.scores")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),d(" ── Runs tab ────────────────────────────────────────────── "),o(J,{key:"runs",tab:e.t("reputation.tabs.runs")},{default:n(()=>[o(Z,{columns:e.runColumns,"data-source":e.runs,pagination:{pageSize:20,showTotal:a=>e.t("reputation.totals.rows",{count:a})},size:"small",loading:e.loading,style:{background:"var(--bg-card)"}},{bodyCell:n(({column:a,record:b})=>[a.key==="runId"?(u(),p("span",ft,s(b.runId.slice(0,12)),1)):d("v-if",!0),a.key==="objective"?(u(),x(j,{key:1,color:e.objectiveColor(b.objective),style:{"font-family":"monospace"}},{default:n(()=>[f(s(e.objectiveLabel(b.objective)),1)]),_:2},1032,["color"])):d("v-if",!0),a.key==="iterations"?(u(),p("span",yt,s(b.iterations),1)):d("v-if",!0),a.key==="bestScore"?(u(),p("span",{key:3,style:pe({color:e.scoreColor(b.bestScore),fontWeight:500,fontFamily:"monospace"})},s(b.bestScore.toFixed(4)),5)):d("v-if",!0),a.key==="status"?(u(),x(j,{key:4,color:e.statusColor(b.status)},{default:n(()=>[f(s(e.statusLabel(b.status)),1)]),_:2},1032,["color"])):d("v-if",!0),a.key==="createdAt"?(u(),p("span",bt,s(e.formatReputationTime(b.createdAt)),1)):d("v-if",!0),a.key==="action"?(u(),p(F,{key:6},[o(R,{size:"small",type:"link",onClick:W=>e.viewRunAnalytics(b)},{default:n(()=>[f(s(e.t("reputation.rowActions.analyze")),1)]),_:1},8,["onClick"]),b.status==="complete"?(u(),x(R,{key:0,size:"small",type:"link",style:{color:"#52c41a"},onClick:W=>e.applyRun(b)},{default:n(()=>[f(s(e.t("reputation.rowActions.apply")),1)]),_:1},8,["onClick"])):d("v-if",!0)],64)):d("v-if",!0)]),emptyText:n(()=>[v("div",vt,[o(e.ExperimentOutlined,{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),f(" "+s(e.t("reputation.empty.runs")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),d(" ── Breakdown tab ───────────────────────────────────────── "),o(J,{key:"breakdown",tab:e.t("reputation.tabs.breakdown")},{default:n(()=>[o(V,{gutter:[16,16]},{default:n(()=>[o(z,{xs:24,lg:12},{default:n(()=>[o(O,{title:e.t("reputation.breakdown.byStatus"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[(u(!0),p(F,null,L(e.RUN_STATUSES,a=>(u(),p("div",{key:a,class:"bd-row"},[o(j,{color:e.statusColor(a),style:{"min-width":"80px","text-align":"center"}},{default:n(()=>[f(s(e.statusLabel(a)),1)]),_:2},1032,["color"]),o(E,{percent:e.pctOfTotal(e.stats.byStatus[a]||0,e.stats.totalRuns),"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"])]),_:1}),o(z,{xs:24,lg:12},{default:n(()=>[o(O,{title:e.t("reputation.breakdown.byObjective"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[(u(!0),p(F,null,L(e.OPTIMIZATION_OBJECTIVES,a=>(u(),p("div",{key:a,class:"bd-row"},[o(j,{color:e.objectiveColor(a),style:{"min-width":"100px","text-align":"center","font-family":"monospace"}},{default:n(()=>[f(s(e.objectiveLabel(a)),1)]),_:2},1032,["color"]),o(E,{percent:e.pctOfTotal(e.stats.byObjective[a]||0,e.stats.totalRuns),"stroke-color":e.objectiveBarColor(a),format:()=>`${e.stats.byObjective[a]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))]),_:1},8,["title"])]),_:1})]),_:1})]),_:1},8,["tab"])]),_:1},8,["activeKey"]),d(" ── Add observation modal ──────────────────────────────── "),o(Y,{open:e.showObserveModal,"onUpdate:open":t[8]||(t[8]=a=>e.showObserveModal=a),title:e.t("reputation.observe.title"),"confirm-loading":e.observing,width:540,"ok-text":e.t("reputation.observe.ok"),"cancel-text":e.t("common.cancel"),onOk:e.submitObservation,onCancel:e.resetObserveForm},{default:n(()=>[o(B,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:n(()=>[o(S,{label:e.t("reputation.observe.didLabel"),required:""},{default:n(()=>[o(h,{value:e.observeForm.did,"onUpdate:value":t[4]||(t[4]=a=>e.observeForm.did=a),placeholder:e.t("reputation.observe.didPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),o(S,{label:e.t("reputation.observe.scoreLabel"),required:""},{default:n(()=>[o(T,{value:e.observeForm.score,"onUpdate:value":t[5]||(t[5]=a=>e.observeForm.score=a),min:0,max:1,step:.05,style:{width:"160px"}},null,8,["value"]),v("span",_t,s(e.t("reputation.observe.scoreRange")),1)]),_:1},8,["label"]),o(S,{label:e.t("reputation.observe.kindLabel")},{default:n(()=>[o(I,{value:e.observeForm.kind,"onUpdate:value":t[6]||(t[6]=a=>e.observeForm.kind=a)},{default:n(()=>[(u(!0),p(F,null,L(e.OBSERVATION_KINDS,a=>(u(),x(D,{key:a,value:a},{default:n(()=>[f(s(e.kindLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),o(S,{label:e.t("reputation.observe.weightLabel")},{default:n(()=>[o(T,{value:e.observeForm.weight,"onUpdate:value":t[7]||(t[7]=a=>e.observeForm.weight=a),min:.1,step:.1,style:{width:"120px"}},null,8,["value"])]),_:1},8,["label"])]),_:1})]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),d(" ── Optimize modal ─────────────────────────────────────── "),o(Y,{open:e.showOptimizeModal,"onUpdate:open":t[11]||(t[11]=a=>e.showOptimizeModal=a),title:e.t("reputation.optimize.title"),"confirm-loading":e.optimizing,width:540,"ok-text":e.t("reputation.optimize.ok"),"cancel-text":e.t("common.cancel"),onOk:e.submitOptimization},{default:n(()=>[o(B,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:n(()=>[o(S,{label:e.t("reputation.optimize.objectiveLabel"),required:""},{default:n(()=>[o(I,{value:e.optimizeForm.objective,"onUpdate:value":t[9]||(t[9]=a=>e.optimizeForm.objective=a)},{default:n(()=>[(u(!0),p(F,null,L(e.OPTIMIZATION_OBJECTIVES,a=>(u(),x(D,{key:a,value:a},{default:n(()=>[f(s(e.objectiveLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),v("div",gt,s(e.objectiveDesc(e.optimizeForm.objective)),1)]),_:1},8,["label"]),o(S,{label:e.t("reputation.optimize.iterationsLabel")},{default:n(()=>[o(T,{value:e.optimizeForm.iterations,"onUpdate:value":t[10]||(t[10]=a=>e.optimizeForm.iterations=a),min:1,max:1e3,step:10,style:{width:"160px"}},null,8,["value"]),v("span",xt,s(e.t("reputation.optimize.iterationsRange")),1)]),_:1},8,["label"])]),_:1}),o(U,{type:"info","show-icon":"",message:e.t("reputation.optimize.syncMessage"),description:e.t("reputation.optimize.syncDescription"),style:{"margin-top":"12px"}},null,8,["message","description"])]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),d(" ── Anomaly detection modal ────────────────────────────── "),o(Y,{open:e.showAnomaliesModal,"onUpdate:open":t[15]||(t[15]=a=>e.showAnomaliesModal=a),title:e.t("reputation.anomaly.title"),width:640,footer:null},{default:n(()=>[v("div",kt,[o(B,{"label-col":{span:5},"wrapper-col":{span:19}},{default:n(()=>[o(S,{label:e.t("reputation.anomaly.methodLabel")},{default:n(()=>[o(X,{value:e.anomalyForm.method,"onUpdate:value":t[12]||(t[12]=a=>e.anomalyForm.method=a),"button-style":"solid"},{default:n(()=>[(u(!0),p(F,null,L(e.ANOMALY_METHODS,a=>(u(),x(P,{key:a,value:a},{default:n(()=>[f(s(a==="z_score"?e.t("reputation.anomaly.zScoreLabel"):e.t("reputation.anomaly.iqrLabel")),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),o(S,{label:e.t("reputation.anomaly.thresholdLabel")},{default:n(()=>[o(T,{value:e.anomalyForm.threshold,"onUpdate:value":t[13]||(t[13]=a=>e.anomalyForm.threshold=a),min:.5,step:.1,style:{width:"120px"}},null,8,["value"]),v("span",ht,s(e.t("reputation.anomaly.thresholdHint")),1)]),_:1},8,["label"]),o(S,{label:e.t("reputation.anomaly.decayLabel")},{default:n(()=>[o(I,{value:e.anomalyForm.decay,"onUpdate:value":t[14]||(t[14]=a=>e.anomalyForm.decay=a),style:{width:"200px"}},{default:n(()=>[(u(!0),p(F,null,L(e.DECAY_MODELS,a=>(u(),x(D,{key:a,value:a},{default:n(()=>[f(s(e.decayLabel(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),o(S,{"wrapper-col":{offset:5,span:19}},{default:n(()=>[o(R,{type:"primary",loading:e.detectingAnomalies,onClick:e.runAnomalyDetection},{icon:n(()=>[o(e.WarningOutlined)]),default:n(()=>[f(" "+s(e.t("reputation.anomaly.start")),1)]),_:1},8,["loading"])]),_:1})]),_:1}),o(oe),e.anomalyResult?(u(),p("div",St,[o(V,{gutter:12,style:{"margin-bottom":"12px"}},{default:n(()=>[o(z,{span:8},{default:n(()=>[o(A,{title:e.t("reputation.anomaly.totalSamples"),value:e.anomalyResult.totalSamples,"value-style":{fontSize:"16px"}},null,8,["title","value"])]),_:1}),o(z,{span:8},{default:n(()=>[o(A,{title:e.t("reputation.anomaly.threshold"),value:e.anomalyResult.threshold,precision:2,"value-style":{fontSize:"16px"}},null,8,["title","value"])]),_:1}),o(z,{span:8},{default:n(()=>[o(A,{title:e.t("reputation.anomaly.anomalies"),value:e.anomalyResult.anomalies.length,"value-style":{color:e.anomalyResult.anomalies.length>0?"#ff4d4f":"#52c41a",fontSize:"16px"}},null,8,["title","value","value-style"])]),_:1})]),_:1}),e.anomalyResult.message?(u(),x(U,{key:0,message:e.anomalyResult.message,type:"warning","show-icon":"",style:{"margin-bottom":"12px"}},null,8,["message"])):d("v-if",!0),e.anomalyResult.anomalies.length?(u(),x(ee,{key:1,size:"small","data-source":e.anomalyResult.anomalies},{renderItem:n(({item:a})=>[o($,null,{default:n(()=>[v("span",Ot,s(a.did),1),o(j,{color:"red",style:{"margin-left":"8px"}},{default:n(()=>[f(s(e.t("reputation.anomaly.scoreTag",{score:a.score.toFixed(4)})),1)]),_:2},1024),v("span",zt,s(a.reason),1),a.zScore!==null?(u(),p("span",At,s(e.t("reputation.anomaly.zNote",{value:a.zScore.toFixed(2)})),1)):d("v-if",!0)]),_:2},1024)]),_:1},8,["data-source"])):d("v-if",!0)])):(u(),x(ae,{key:0,description:e.t("reputation.anomaly.notDetected"),image:e.EMPTY_IMG},null,8,["description","image"]))])]),_:1},8,["open","title"]),d(" ── Run analytics / details modal ──────────────────────── "),o(Y,{open:e.showAnalyticsModal,"onUpdate:open":t[16]||(t[16]=a=>e.showAnalyticsModal=a),title:e.t("reputation.analytics.title",{runId:e.currentRun?.runId?.slice(0,12)||""}),width:780,footer:null},{default:n(()=>[e.currentRun?(u(),p("div",Rt,[o(ne,{column:2,size:"small",bordered:""},{default:n(()=>[o(C,{label:e.t("reputation.analytics.objective")},{default:n(()=>[o(j,{color:e.objectiveColor(e.currentRun.objective)},{default:n(()=>[f(s(e.objectiveLabel(e.currentRun.objective)),1)]),_:1},8,["color"])]),_:1},8,["label"]),o(C,{label:e.t("reputation.analytics.status")},{default:n(()=>[o(j,{color:e.statusColor(e.currentRun.status)},{default:n(()=>[f(s(e.statusLabel(e.currentRun.status)),1)]),_:1},8,["color"])]),_:1},8,["label"]),o(C,{label:e.t("reputation.analytics.iterations")},{default:n(()=>[f(s(e.currentRun.iterations),1)]),_:1},8,["label"]),o(C,{label:e.t("reputation.analytics.bestScore")},{default:n(()=>[v("span",{style:pe({color:e.scoreColor(e.currentRun.bestScore),fontWeight:500,fontFamily:"monospace"})},s(e.currentRun.bestScore.toFixed(4)),5)]),_:1},8,["label"]),o(C,{label:e.t("reputation.analytics.createdAt")},{default:n(()=>[f(s(e.formatReputationTime(e.currentRun.createdAt)),1)]),_:1},8,["label"]),e.currentRun.completedAt?(u(),x(C,{key:0,label:e.t("reputation.analytics.completedAt")},{default:n(()=>[f(s(e.formatReputationTime(e.currentRun.completedAt)),1)]),_:1},8,["label"])):d("v-if",!0),e.currentRun.bestParams?(u(),x(C,{key:1,label:e.t("reputation.analytics.bestParams"),span:2},{default:n(()=>[v("pre",wt,s(e.formatParams(e.currentRun.bestParams)),1)]),_:1},8,["label"])):d("v-if",!0),e.currentRun.errorMessage?(u(),x(C,{key:2,label:e.t("reputation.analytics.errorMessage"),span:2},{default:n(()=>[v("span",jt,s(e.currentRun.errorMessage),1)]),_:1},8,["label"])):d("v-if",!0)]),_:1}),o(re,{spinning:e.loadingAnalytics},{default:n(()=>[e.currentAnalytics?(u(),p("div",Ct,[v("h4",Tt,s(e.t("reputation.analytics.distributionTitle")),1),o(O,{size:"small",style:{"margin-bottom":"12px"}},{default:n(()=>[(u(!0),p(F,null,L(e.currentAnalytics.reputationDistribution.buckets,a=>(u(),p("div",{key:a.label,class:"bucket-row"},[v("span",Dt,s(a.label),1),o(E,{percent:e.bucketPct(a),"stroke-color":a.count>0?"#1677ff":"#d9d9d9",format:()=>`${a.count}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128)),e.currentAnalytics.reputationDistribution.mean!==null?(u(),p("div",Ft,[f(s(e.t("reputation.analytics.mean",{value:e.currentAnalytics.reputationDistribution.mean.toFixed(4)}))+" ",1),e.currentAnalytics.reputationDistribution.stdDev!==null?(u(),p("span",Et,s(e.t("reputation.analytics.stdDev",{value:e.currentAnalytics.reputationDistribution.stdDev.toFixed(4)})),1)):d("v-if",!0)])):d("v-if",!0)]),_:1}),e.currentAnalytics.recommendations.length?(u(),x(O,{key:0,title:e.t("reputation.analytics.recommendations"),size:"small"},{default:n(()=>[o(ee,{size:"small","data-source":e.currentAnalytics.recommendations},{renderItem:n(({item:a})=>[o($,null,{default:n(()=>[o(e.ArrowRightOutlined,{style:{color:"#faad14","margin-right":"8px"}}),f(" "+s(a),1)]),_:2},1024)]),_:1},8,["data-source"])]),_:1},8,["title"])):d("v-if",!0)])):d("v-if",!0)]),_:1},8,["spinning"])])):d("v-if",!0)]),_:1},8,["open","title"])])}const io=Be(nt,[["render",It],["__scopeId","data-v-c4829a4e"],["__file","/tmp/cc-web-panel-heolxZ/repo/packages/web-panel/src/views/Reputation.vue"]]);export{io as default};
|