chainlesschain 0.161.4 → 0.161.5
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-K85peDCg.js → AIOps-DGVHYt7m.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-DoRABhmk.js → ActionButton-B3a-9Af9.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-B7p7X_lS.js → Analytics-Bx3Oxl0X.js} +1 -1
- package/src/assets/web-panel/assets/{AppLayout-BQb9-BUE.js → AppLayout-BzejRYN2.js} +1 -1
- package/src/assets/web-panel/assets/{Audit-CHj8w38X.js → Audit-NY4P1SWh.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-BsgPajcJ.js → Backup-DZq4lKGA.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-kGeksnCj.js → BaseInput-CdsLMh-s.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-2e3EGiwk.js → Chat-BhwqdoXy.js} +1 -1
- package/src/assets/web-panel/assets/{Checkbox-DirndeMM.js → Checkbox-C5XnHFiF.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-UQuEF6rH.js → Codegen-BKxq1Elq.js} +1 -1
- package/src/assets/web-panel/assets/{Col-myVf7h0M.js → Col-9_JZdhJl.js} +1 -1
- package/src/assets/web-panel/assets/{Community-C3Gt4JNP.js → Community-RjNSGqVo.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-B4TJcIuz.js → Compact-COZAt3WB.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-DKye9lMe.js → Compliance-hk2sypg0.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-bD9Z8K9J.js → Cowork-9CLNBbEQ.js} +1 -1
- package/src/assets/web-panel/assets/{Cron-BrQZ3zwQ.js → Cron-74hvFk4_.js} +1 -1
- package/src/assets/web-panel/assets/{Crosschain-C7m4dIrR.js → Crosschain-M_9qbH-m.js} +1 -1
- package/src/assets/web-panel/assets/{DID-CGniRypj.js → DID-BOx1xBNu.js} +1 -1
- package/src/assets/web-panel/assets/{Dashboard-BqQfrJLe.js → Dashboard-C3KfYy9t.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-Csici42Z.js → Dropdown-Buk4zcYG.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-D2boc2WU.js → Federation-96LSDwN_.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-BpXHcM06.js → FormItemContext-DY7VfLgy.js} +1 -1
- package/src/assets/web-panel/assets/{Git-C7QHt3Hy.js → Git-KCUcIFj0.js} +1 -1
- package/src/assets/web-panel/assets/{Governance-DPBJNo9u.js → Governance--yT5V49L.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-Ca8VokDu.js → Inference-D0NeQyx6.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-CrFGz4u2.js → KnowledgeGraph-DYRq64do.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-DMhNTvH6.js → Logs-DHSi_Oi1.js} +1 -1
- package/src/assets/web-panel/assets/{Marketplace-DB0lVRRk.js → Marketplace-TT0gv-wI.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-BmFQp5wQ.js → McpTools-DfCzYzeM.js} +1 -1
- package/src/assets/web-panel/assets/{Memory-DDooyF2l.js → Memory-35QBk-VQ.js} +1 -1
- package/src/assets/web-panel/assets/{Mtc-Ci6BDiRi.js → Mtc-Dvc-7WJs.js} +1 -1
- package/src/assets/web-panel/assets/{MtcAudit-J-DgVOwR.js → MtcAudit-CzTgYL-a.js} +1 -1
- package/src/assets/web-panel/assets/{NLProgramming-Uv0jicWQ.js → NLProgramming-CrcJekBx.js} +1 -1
- package/src/assets/web-panel/assets/Notes-0B3NXKhh.js +7 -0
- package/src/assets/web-panel/assets/Notes-COE2q2gD.css +1 -0
- package/src/assets/web-panel/assets/{NotificationSettings-Cg4yXikq.js → NotificationSettings-KlJUb1mE.js} +1 -1
- package/src/assets/web-panel/assets/{Organization-Bij8W2mU.js → Organization-COS-etp0.js} +1 -1
- package/src/assets/web-panel/assets/{Overflow-DNGM4vCD.js → Overflow-Cy4-usEJ.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-9DlPC_rr.js → P2P-C0_fKvmV.js} +1 -1
- package/src/assets/web-panel/assets/{Permissions-BVJwnBDW.js → Permissions-C59VtMDt.js} +1 -1
- package/src/assets/web-panel/assets/{Pipeline-lWCcdQ9k.js → Pipeline-BjFugIMn.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-BN60IEMG.js → Privacy-tAalWiJA.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectSettings-GJoyBlLy.js → ProjectSettings-CLRVvTkY.js} +1 -1
- package/src/assets/web-panel/assets/{Projects-Dvs_UqGv.js → Projects-ByvwUl9Z.js} +1 -1
- package/src/assets/web-panel/assets/{Providers-A5KukRrJ.js → Providers-CP6aUtPG.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-D4K2pIHJ.js → QuickAsk-5wazQ8Rv.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-DQKR520B.js → Recommend-Z-lSAvhS.js} +1 -1
- package/src/assets/web-panel/assets/{Reputation-BVntfhQV.js → Reputation-DaCrszi3.js} +1 -1
- package/src/assets/web-panel/assets/{Row-Do4ULXpm.js → Row-BFHRFhrC.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-FAHzJo-E.js → RssFeed-61djI0cm.js} +1 -1
- package/src/assets/web-panel/assets/{Search-DsOTkKd1.js → Search-B4DqaBN0.js} +1 -1
- package/src/assets/web-panel/assets/{Security-hglxmoVZ.js → Security-8BvDlsI4.js} +1 -1
- package/src/assets/web-panel/assets/{Services-C6Rv4i8z.js → Services-BOgC-V6e.js} +1 -1
- package/src/assets/web-panel/assets/{Skeleton-D-dXFspp.js → Skeleton-DxGa2EcF.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-D6sVDuOT.js → Skills-DsHzWQAl.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-8O-JYjQq.js → Sla-3KdTHpSY.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-DSOYsk6R.js → SpeechSettings-C8xEI_J4.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-C5nhT_6b.js → SyncSettings-BrTgn_a6.js} +1 -1
- package/src/assets/web-panel/assets/{Tasks-NrpJCUFD.js → Tasks-BsatF04-.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-Ca2HO-Ff.js → Templates-BXG2BXzE.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-BWXC1pLX.js → Tenant-OjqSY3OD.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-DUtMwWxZ.js → Tokens-WrFIqGuF.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-TyynxipZ.js → Trigger-ql7VwBhY.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-b4KDouFb.js → Trust-BnJxgiUu.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-CJpVhu8c.js → UkeySign-DI1rcWZ-.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-Bpn0V8T2.js → VideoEditing-C1jgL5fG.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-CzBLjCnl.js → Wallet-CVMM1wf-.js} +1 -1
- package/src/assets/web-panel/assets/{WebAuthn-HnRCEu5Q.js → WebAuthn-Bz-7j8cP.js} +1 -1
- package/src/assets/web-panel/assets/{WorkflowEditor-CMWDod4n.js → WorkflowEditor-B_En7K3B.js} +1 -1
- package/src/assets/web-panel/assets/chat-HZBXEHqE.js +1 -0
- package/src/assets/web-panel/assets/{colors-BO5nQJrH.js → colors-C-_WCP_I.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-By0t_ZDX.js → compact-item-DRlYnN0j.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-CHZw2WQy.js → createContext-CQjz89ZD.js} +1 -1
- package/src/assets/web-panel/assets/{hasIn-CHScXGSD.js → hasIn-DkvrU3Ng.js} +1 -1
- package/src/assets/web-panel/assets/{index-BY-BnqWj.js → index-B4WoTHzD.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bn_0bupT.js → index-BPtmPFwc.js} +3 -3
- package/src/assets/web-panel/assets/{index-CYCwDDoS.js → index-BQJBwuxS.js} +1 -1
- package/src/assets/web-panel/assets/{index-BdOG1g8i.js → index-BWrmR8z4.js} +1 -1
- package/src/assets/web-panel/assets/{index-D3WrGn-J.js → index-Banf4rVv.js} +1 -1
- package/src/assets/web-panel/assets/{index-BIoymtmG.js → index-BcIcrbaL.js} +1 -1
- package/src/assets/web-panel/assets/{index-C_EIwaP7.js → index-Bh1pl2no.js} +1 -1
- package/src/assets/web-panel/assets/{index-B6FaCH6K.js → index-Bm5beO8z.js} +1 -1
- package/src/assets/web-panel/assets/{index-DgWJBqLh.js → index-BrE6wIhJ.js} +1 -1
- package/src/assets/web-panel/assets/index-BrNvQLt8.js +1 -0
- package/src/assets/web-panel/assets/{index-Czk89HQF.js → index-BxGG_QJu.js} +1 -1
- package/src/assets/web-panel/assets/{index-CfZqQ0JR.js → index-C5_IA35Q.js} +1 -1
- package/src/assets/web-panel/assets/{index-D_QlAaj5.js → index-CAWrRKBV.js} +1 -1
- package/src/assets/web-panel/assets/{index-BCoEssNV.js → index-CAXp9Lwm.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bbf4Smm-.js → index-CW6aTL_U.js} +1 -1
- package/src/assets/web-panel/assets/{index-CszhN_r3.js → index-CreE5ozl.js} +1 -1
- package/src/assets/web-panel/assets/{index-CAPiTJT4.js → index-CwYZLSvq.js} +1 -1
- package/src/assets/web-panel/assets/{index-DS0o68gc.js → index-D8kTtVhG.js} +1 -1
- package/src/assets/web-panel/assets/{index-BgAPyeU5.js → index-DDElQABk.js} +1 -1
- package/src/assets/web-panel/assets/{index-BFMpMM1y.js → index-DEEKNhJo.js} +1 -1
- package/src/assets/web-panel/assets/{index-By3TOq5w.js → index-DFWu8Nod.js} +1 -1
- package/src/assets/web-panel/assets/{index-BuzilAPw.js → index-DTCCIKB3.js} +1 -1
- package/src/assets/web-panel/assets/{index-yLdzB8i-.js → index-DVvcsuh0.js} +1 -1
- package/src/assets/web-panel/assets/{index-BXXqtwrw.js → index-DWnUOEdQ.js} +1 -1
- package/src/assets/web-panel/assets/{index-B-VML4Pz.js → index-DZ0FDal8.js} +1 -1
- package/src/assets/web-panel/assets/{index-U1O0AXXH.js → index-D_UyFEni.js} +1 -1
- package/src/assets/web-panel/assets/{index-BVL4FbJ3.js → index-DaKiN39Q.js} +1 -1
- package/src/assets/web-panel/assets/{index-DqPwMq7i.js → index-Dcotn-Yi.js} +1 -1
- package/src/assets/web-panel/assets/{index-DiHryOr_.js → index-DhAdUGyf.js} +1 -1
- package/src/assets/web-panel/assets/{index-BnaKc6VJ.js → index-Dp-9lS6Q.js} +1 -1
- package/src/assets/web-panel/assets/index-DtjB2WpK.js +1 -0
- package/src/assets/web-panel/assets/{index-Qm6Kn3iq.js → index-DuutOf_b.js} +1 -1
- package/src/assets/web-panel/assets/{index-COVlQxSz.js → index-SGHpg8vZ.js} +1 -1
- package/src/assets/web-panel/assets/{index-CpHzrw8g.js → index-eZTZv_mW.js} +1 -1
- package/src/assets/web-panel/assets/{index-CCOGrBpN.js → index-gyq6o1eH.js} +1 -1
- package/src/assets/web-panel/assets/{index-C1ssAFdz.js → index-nqPi_FUF.js} +1 -1
- package/src/assets/web-panel/assets/{index-jRQNL6Yj.js → index-qVl4nFNX.js} +1 -1
- package/src/assets/web-panel/assets/{index-DZ4t_1f-.js → index-spVYB7ka.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-CMFUJGsa.js → initDefaultProps-DzCq75v2.js} +1 -1
- package/src/assets/web-panel/assets/{motion-CTtMugIF.js → motion-CwDCjQBX.js} +1 -1
- package/src/assets/web-panel/assets/{move-DHjaLqhq.js → move-CiyNq_dM.js} +1 -1
- package/src/assets/web-panel/assets/{omit-COm0v71g.js → omit-CV_avDvk.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-C3Ftf-sl.js → pickAttrs-BVSL31rv.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-IJhTwCmF.js → placementArrow-oxkKuQCJ.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-Cmu2mrKT.js → responsiveObserve-Dva2arKe.js} +1 -1
- package/src/assets/web-panel/assets/{slide-CnWCDeu_.js → slide-FbHwK4f8.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-CSOJeZ-L.js → statusUtils-Pg-fsC5F.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-94VBD7Xs.js → styleChecker-CuXdVqkl.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-CBjbWuc9.js → useFlexGapSupport-z-vK8Wcv.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-DfXp51Mk.js → useFs-Cr5jQ4qa.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-CGY3YRLi.js → vnode-51kseDDa.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-CZllDiMO.js → zoom-DSlt2Q3p.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/assets/web-panel/assets/Notes-BHauapxR.css +0 -1
- package/src/assets/web-panel/assets/Notes-SGtdMwfH.js +0 -7
- package/src/assets/web-panel/assets/chat-D7QE42qx.js +0 -1
- package/src/assets/web-panel/assets/index-BqMhh2pY.js +0 -1
- package/src/assets/web-panel/assets/index-sgVQrC2c.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as Xe,b as Ze,u as et,E as tt,d as y}from"./index-Bn_0bupT.js";import{s as ot}from"./community-parser-CO25nZFt.js";import{R as nt,aC as at,aL as st,p as rt,ah as ke,a6 as be,aM as lt,aJ as it,ax as ct}from"./icons-B2G69bhT.js";import{o as dt,M as g,R as x,P as c,u as t,c as a,N as n,K as f,r as C,L as d,O as p,Q as _,S as v,F as A,Y,$ as ut,f as X,a as mt}from"./vendor-Ci2pTZ_t.js";function N(s){const e=ot(s);if(!e)return null;try{return JSON.parse(e)}catch{}const i=e.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!i)return null;try{return JSON.parse(i[0])}catch{return null}}const xe=Object.freeze(["note","post","article","document"]),pt=Object.freeze(["pending","viewed","dismissed"]);function S(s,e=0){return typeof s=="number"&&Number.isFinite(s)?s:e}function he(s){if(!s||typeof s!="object"||Array.isArray(s))return{};const e={};for(const[i,h]of Object.entries(s))typeof h=="number"&&Number.isFinite(h)&&(e[i]=h);return e}function ft(s,e=0){if(!s||typeof s!="object")return null;const i=s.user_id??s.userId??"";if(!i)return null;const h=s.topics&&typeof s.topics=="object"&&!Array.isArray(s.topics)?he(s.topics):{},I=s.interaction_weights??s.interactionWeights,P=I&&typeof I=="object"&&!Array.isArray(I)?he(I):{};return{key:i,id:String(s.id||""),userId:i,topics:h,topicCount:Object.keys(h).length,interactionWeights:P,decayFactor:S(s.decay_factor??s.decayFactor,.9),lastUpdated:s.last_updated??s.lastUpdated??null,updateCount:S(s.update_count??s.updateCount,0),_idx:e}}function yt(s){const e=N(s);return Array.isArray(e)?e.map(ft).filter(Boolean):[]}function gt(s,e=0){if(!s||typeof s!="object")return null;const i=s.id||"";return i?{key:i,id:i,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:S(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:e}:null}function _t(s){const e=N(s);return Array.isArray(e)?e.map(gt).filter(Boolean):[]}const vt={total:0,pending:0,viewed:0,dismissed:0,feedbackCount:0,feedbackRate:0,avgScore:0};function kt(s){const e={...vt},i=N(s);return!i||typeof i!="object"||Array.isArray(i)||(e.total=S(i.total,0),e.pending=S(i.pending,0),e.viewed=S(i.viewed,0),e.dismissed=S(i.dismissed,0),e.feedbackCount=S(i.feedbackCount,0),e.feedbackRate=S(i.feedbackRate,0),e.avgScore=S(i.avgScore,0)),e}function bt(s){const e=N(s);return Array.isArray(e)?e.filter(i=>i&&typeof i=="object"&&typeof i.topic=="string").map((i,h)=>({key:`${i.topic}-${h}`,topic:i.topic,weight:S(i.weight,0)})):[]}function xt(s){const e=N(s);return Array.isArray(e)?e.filter(i=>i&&typeof i=="object"&&typeof i.topic=="string"&&typeof i.action=="string").map((i,h)=>({key:`${i.topic}-${h}`,topic:i.topic,action:i.action,amount:S(i.amount,0)})):[]}function J(s){const e=N(s);return!e||typeof e!="object"||Array.isArray(e)?{ok:!1,reason:"",profileId:null,topicCount:null}:{ok:!!(e.updated||e.deleted||e.marked||e.dismissed||e.recorded||e.applied||e.profileId),reason:e.reason?String(e.reason):"",profileId:e.profileId?String(e.profileId):null,topicCount:typeof e.topicCount=="number"?e.topicCount:null}}function Ce(s){if(s==null||s==="")return"—";const e=typeof s=="number"?new Date(s):new Date(String(s));return isNaN(e.getTime())?String(s):e.toLocaleString("zh-CN",{hour12:!1})}const ht={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Ct={class:"page-title"},wt={class:"page-sub"},St={style:{display:"flex","align-items":"center",gap:"12px","flex-wrap":"wrap"}},It={style:{color:"var(--text-secondary)","font-size":"12px"}},zt={class:"type-name"},At={class:"filter-bar"},Ft={style:{color:"var(--text-primary)","font-weight":"500"}},Ot={style:{color:"var(--text-muted)","font-size":"11px","margin-top":"2px"}},Tt={key:3,style:{color:"var(--text-secondary)","font-size":"12px"}},Rt={key:1,style:{color:"var(--text-muted)"}},Ut={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},$t={key:0,style:{color:"var(--text-primary)","font-family":"monospace","font-weight":"500"}},jt={key:2,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},Jt={key:3,style:{color:"var(--text-secondary)"}},Nt={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},Pt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},Et={key:1},Lt={class:"interest-topic"},Mt={style:{"margin-left":"8px","font-family":"monospace",color:"var(--text-primary)"}},Dt={style:{"margin-left":"auto",color:"var(--text-secondary)","font-size":"12px"}},Bt={key:0,style:{"padding-top":"8px"}},Wt={style:{"font-family":"monospace","font-size":"12px"}},Vt={style:{color:"var(--text-primary)","font-size":"13px",margin:"16px 0 8px"}},Kt={key:1},Yt={class:"interest-topic"},qt={key:2,style:{color:"var(--text-primary)","font-size":"13px",margin:"16px 0 8px"}},Gt={key:3,class:"weights-pre"},Qt={__name:"Recommend",setup(s){const{t:e}=Ze(),i=et(),h=tt.PRESENTED_IMAGE_SIMPLE,I=C(!1),P=C(!1),Z=C(!1),E=C([]),ee=C([]),F=C({total:0,pending:0,viewed:0,dismissed:0,feedbackCount:0,feedbackRate:0,avgScore:0}),q=C([]),U=C([]),k=C(null),G=C("recs"),L=C(""),M=C(""),Q=C(!1),te=C(!1),b=mt({userId:"",topicsJson:"",weightsJson:""}),w=C(null),we=X(()=>E.value.map(o=>({value:o.userId,label:`${o.userId} (${e("recommend.userBar.topicSuffix",{count:o.topicCount})})`}))),Se=X(()=>[{title:e("recommend.recColumns.title"),key:"title"},{title:e("recommend.recColumns.contentType"),key:"contentType",width:"110px"},{title:e("recommend.recColumns.score"),key:"score",width:"180px"},{title:e("recommend.recColumns.reason"),key:"reason",width:"220px"},{title:e("recommend.recColumns.status"),key:"status",width:"100px"},{title:e("recommend.recColumns.feedback"),key:"feedback",width:"90px"},{title:e("recommend.recColumns.action"),key:"action",width:"210px"}]),Ie=X(()=>[{title:e("recommend.profileColumns.userId"),key:"userId"},{title:e("recommend.profileColumns.topicCount"),key:"topicCount",width:"110px"},{title:e("recommend.profileColumns.decayFactor"),key:"decayFactor",width:"110px"},{title:e("recommend.profileColumns.updateCount"),key:"updateCount",width:"110px"},{title:e("recommend.profileColumns.lastUpdated"),key:"lastUpdated",width:"180px"},{title:e("recommend.profileColumns.action"),key:"action",width:"200px"}]),ze=X(()=>{let o=ee.value;return L.value&&(o=o.filter(l=>l.status===L.value)),M.value&&(o=o.filter(l=>l.contentType===M.value)),o});function le(o){const l=`recommend.type.${o}`,u=e(l);return u===l?o:u}function ie(o){return{note:"blue",post:"green",article:"purple",document:"orange"}[o]||"default"}function Ae(o){return{note:"#1677ff",post:"#52c41a",article:"#722ed1",document:"#fa8c16"}[o]||"#888"}function ce(o){const l=`recommend.status.${o}`,u=e(l);return u===l?o:u}function Fe(o){return{pending:"processing",viewed:"green",dismissed:"default"}[o]||"default"}function Oe(o){const l=`recommend.feedbackLabel.${o}`,u=e(l);return u===l?o:u}function Te(o){return{like:"green",dislike:"red",later:"gold"}[o]||"default"}function de(o){return o>=.7?"#52c41a":o>=.4?"#1677ff":o>=.2?"#faad14":"#ff4d4f"}function ue(o){return o>=.7?"#52c41a":o>=.4?"#1677ff":o>=.2?"#faad14":"#888"}function Re(o){try{return JSON.stringify(o,null,2)}catch{return String(o)}}async function D(){I.value=!0;try{const{output:o}=await i.execute("recommend profiles --json",1e4).catch(()=>({output:""}));E.value=yt(o),k.value&&!E.value.find(l=>l.userId===k.value)&&(k.value=null),k.value&&await R()}catch(o){y.error(e("recommend.messages.loadProfilesFailed",{err:o?.message||o}))}finally{I.value=!1}}async function R(){if(!k.value){ee.value=[],F.value={total:0,pending:0,viewed:0,dismissed:0,feedbackCount:0,feedbackRate:0,avgScore:0},q.value=[];return}P.value=!0;try{const o=B(k.value),[l,u,O]=await Promise.all([i.execute(`recommend list ${o} --limit 200 --json`,1e4).catch(()=>({output:""})),i.execute(`recommend stats ${o} --json`,8e3).catch(()=>({output:""})),i.execute(`recommend top-interests ${o} --limit 30 --json`,8e3).catch(()=>({output:""}))]);ee.value=_t(l.output),F.value=kt(u.output),q.value=bt(O.output)}catch(o){y.error(e("recommend.messages.loadUserFailed",{err:o?.message||o}))}finally{P.value=!1}}function B(o){return`"${String(o).replace(/"/g,'\\"')}"`}function Ue(){U.value=[],R()}function $e(o){k.value=o,G.value="recs",R()}async function je(){if(!b.userId.trim()){y.warning(e("recommend.messages.userIdRequired"));return}if(b.topicsJson.trim())try{JSON.parse(b.topicsJson)}catch{y.warning(e("recommend.messages.topicsJsonInvalid"));return}if(b.weightsJson.trim())try{JSON.parse(b.weightsJson)}catch{y.warning(e("recommend.messages.weightsJsonInvalid"));return}Z.value=!0;try{const o=[`recommend create-profile ${B(b.userId.trim())}`];b.topicsJson.trim()&&o.push(`-t ${me(b.topicsJson.trim())}`),b.weightsJson.trim()&&o.push(`-w ${me(b.weightsJson.trim())}`),o.push("--json");const{output:l}=await i.execute(o.join(" "),1e4),u=J(l);if(!u.ok){y.error(e("recommend.messages.createFailed",{err:u.reason||l.slice(0,120)}));return}y.success(e("recommend.messages.createOk",{id:u.profileId?.slice(0,8)||""})),Q.value=!1;const O=b.userId.trim();pe(),await D(),k.value=O,await R()}catch(o){y.error(e("recommend.messages.createFailed",{err:o?.message||o}))}finally{Z.value=!1}}function me(o){return`'${String(o).replace(/'/g,"'\\''")}'`}async function Je(){if(k.value)try{const{output:o}=await i.execute(`recommend decay ${B(k.value)} --json`,8e3),l=J(o);if(!l.ok){y.error(e("recommend.messages.decayFailed",{err:l.reason||o.slice(0,120)}));return}y.success(l.topicCount!==null?e("recommend.messages.decayOkTopics",{count:l.topicCount}):e("recommend.messages.decayOk")),await D()}catch(o){y.error(e("recommend.messages.decayFailed",{err:o?.message||o}))}}async function Ne(){if(k.value)try{const{output:o}=await i.execute(`recommend suggest ${B(k.value)} --json`,8e3);U.value=xt(o),G.value="interests",U.value.length?y.success(e("recommend.messages.suggestFound",{count:U.value.length})):y.info(e("recommend.messages.suggestNone"))}catch(o){y.error(e("recommend.messages.loadSuggestFailed",{err:o?.message||o}))}}async function Pe(o){try{const{output:l}=await i.execute(`recommend delete-profile ${B(o.userId)} --json`,8e3),u=J(l);if(!u.ok){y.error(e("recommend.messages.deleteFailed",{err:u.reason||l.slice(0,120)}));return}y.success(e("recommend.messages.deleteOk")),k.value===o.userId&&(k.value=null),await D()}catch(l){y.error(e("recommend.messages.deleteFailed",{err:l?.message||l}))}}function Ee(o){w.value=o,te.value=!0}async function Le(o){try{const{output:l}=await i.execute(`recommend view ${o.id} --json`,8e3),u=J(l);if(!u.ok){y.error(e("recommend.messages.viewFailed",{err:u.reason||l.slice(0,120)}));return}y.success(e("recommend.messages.viewOk")),await R()}catch(l){y.error(e("recommend.messages.viewFailed",{err:l?.message||l}))}}async function Me(o,l){try{const{output:u}=await i.execute(`recommend feedback ${o.id} ${l} --json`,8e3),O=J(u);if(!O.ok){y.error(e("recommend.messages.feedbackFailed",{err:O.reason||u.slice(0,120)}));return}y.success(e("recommend.messages.feedbackOk")),await R()}catch(u){y.error(e("recommend.messages.feedbackFailed",{err:u?.message||u}))}}async function De(o){try{const{output:l}=await i.execute(`recommend dismiss ${o.id} --json`,8e3),u=J(l);if(!u.ok){y.error(e("recommend.messages.dismissFailed",{err:u.reason||l.slice(0,120)}));return}y.success(e("recommend.messages.dismissOk")),await R()}catch(l){y.error(e("recommend.messages.dismissFailed",{err:l?.message||l}))}}function pe(){b.userId="",b.topicsJson="",b.weightsJson=""}return dt(D),(o,l)=>{const u=f("a-button"),O=f("a-space"),Be=f("a-select"),z=f("a-card"),W=f("a-statistic"),T=f("a-col"),oe=f("a-row"),$=f("a-tag"),H=f("a-radio-button"),fe=f("a-radio-group"),V=f("a-empty"),ne=f("a-progress"),ae=f("a-menu-item"),We=f("a-menu"),Ve=f("a-dropdown"),ye=f("a-popconfirm"),ge=f("a-table"),se=f("a-tab-pane"),Ke=f("a-list-item"),Ye=f("a-list"),qe=f("a-tabs"),Ge=f("a-input"),re=f("a-form-item"),_e=f("a-textarea"),Qe=f("a-form"),ve=f("a-modal"),K=f("a-descriptions-item"),He=f("a-descriptions");return d(),g("div",null,[x("div",ht,[x("div",null,[x("h2",Ct,c(t(e)("recommend.title")),1),x("p",wt,c(t(e)("recommend.subtitle")),1)]),a(O,null,{default:n(()=>[a(u,{loading:I.value,onClick:D},{icon:n(()=>[a(t(nt))]),default:n(()=>[p(" "+c(t(e)("recommend.refresh")),1)]),_:1},8,["loading"]),a(u,{type:"primary",onClick:l[0]||(l[0]=r=>Q.value=!0)},{icon:n(()=>[a(t(at))]),default:n(()=>[p(" "+c(t(e)("recommend.createProfile")),1)]),_:1})]),_:1})]),a(z,{size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"},"body-style":{padding:"10px 16px"}},{default:n(()=>[x("div",St,[x("span",It,c(t(e)("recommend.userBar.currentUser")),1),a(Be,{value:k.value,"onUpdate:value":l[1]||(l[1]=r=>k.value=r),options:we.value,placeholder:t(e)("recommend.userBar.selectPlaceholder"),style:{"min-width":"280px"},"allow-clear":"","show-search":"",onChange:Ue},null,8,["value","options","placeholder"]),k.value?(d(),_(u,{key:0,size:"small",onClick:Je},{icon:n(()=>[a(t(st))]),default:n(()=>[p(" "+c(t(e)("recommend.userBar.applyDecay")),1)]),_:1})):v("",!0),k.value?(d(),_(u,{key:1,size:"small",onClick:Ne},{icon:n(()=>[a(t(rt))]),default:n(()=>[p(" "+c(t(e)("recommend.userBar.suggest")),1)]),_:1})):v("",!0)])]),_:1}),a(oe,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:n(()=>[a(T,{xs:12,sm:8,lg:5},{default:n(()=>[a(z,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[a(W,{title:t(e)("recommend.stats.profiles"),value:E.value.length,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:n(()=>[a(t(ke))]),_:1},8,["title","value"])]),_:1})]),_:1}),a(T,{xs:12,sm:8,lg:5},{default:n(()=>[a(z,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[a(W,{title:t(e)("recommend.stats.totalRecs"),value:F.value.total,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:n(()=>[a(t(be))]),_:1},8,["title","value"])]),_:1})]),_:1}),a(T,{xs:12,sm:8,lg:5},{default:n(()=>[a(z,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[a(W,{title:t(e)("recommend.stats.pending"),value:F.value.pending,"value-style":{color:F.value.pending>0?"#faad14":"#888",fontSize:"20px"}},{prefix:n(()=>[a(t(lt))]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),a(T,{xs:12,sm:8,lg:5},{default:n(()=>[a(z,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[a(W,{title:t(e)("recommend.stats.feedbackRate"),value:F.value.feedbackRate*100,suffix:"%",precision:1,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:n(()=>[a(t(it))]),_:1},8,["title","value"])]),_:1})]),_:1}),a(T,{xs:24,sm:8,lg:4},{default:n(()=>[a(z,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[a(W,{title:t(e)("recommend.stats.avgScore"),value:F.value.avgScore,precision:3,"value-style":{color:de(F.value.avgScore),fontSize:"20px"}},{prefix:n(()=>[a(t(ct))]),_:1},8,["title","value","value-style"])]),_:1})]),_:1})]),_:1}),a(z,{title:t(e)("recommend.typeCatalogue"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:n(()=>[a(oe,{gutter:[12,12]},{default:n(()=>[(d(!0),g(A,null,Y(t(xe),r=>(d(),_(T,{key:r,xs:12,sm:6},{default:n(()=>[x("div",{class:"type-pill",style:ut({borderLeftColor:Ae(r)})},[a($,{color:ie(r),style:{"font-family":"monospace"}},{default:n(()=>[p(c(r),1)]),_:2},1032,["color"]),x("div",zt,c(le(r)),1)],4)]),_:2},1024))),128))]),_:1})]),_:1},8,["title"]),a(qe,{activeKey:G.value,"onUpdate:activeKey":l[4]||(l[4]=r=>G.value=r),class:"recommend-tabs"},{default:n(()=>[a(se,{key:"recs",tab:t(e)("recommend.tabs.recs")},{default:n(()=>[x("div",At,[a(fe,{value:L.value,"onUpdate:value":l[2]||(l[2]=r=>L.value=r),size:"small","button-style":"solid"},{default:n(()=>[a(H,{value:""},{default:n(()=>[p(c(t(e)("recommend.filter.allStatuses")),1)]),_:1}),(d(!0),g(A,null,Y(t(pt),r=>(d(),_(H,{key:r,value:r},{default:n(()=>[p(c(ce(r)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),a(fe,{value:M.value,"onUpdate:value":l[3]||(l[3]=r=>M.value=r),size:"small"},{default:n(()=>[a(H,{value:""},{default:n(()=>[p(c(t(e)("recommend.filter.allTypes")),1)]),_:1}),(d(!0),g(A,null,Y(t(xe),r=>(d(),_(H,{key:r,value:r},{default:n(()=>[p(c(le(r)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),k.value?(d(),_(ge,{key:1,columns:Se.value,"data-source":ze.value,pagination:{pageSize:20,showTotal:r=>t(e)("recommend.totals.rows",{count:r})},size:"small",loading:P.value,style:{background:"var(--bg-card)"}},{bodyCell:n(({column:r,record:m})=>[r.key==="title"?(d(),g(A,{key:0},[x("span",Ft,c(m.title||t(e)("recommend.noTitle")),1),x("div",Ot,c(m.contentId),1)],64)):v("",!0),r.key==="contentType"?(d(),_($,{key:1,color:ie(m.contentType),style:{"font-family":"monospace"}},{default:n(()=>[p(c(m.contentType),1)]),_:2},1032,["color"])):v("",!0),r.key==="score"?(d(),_(ne,{key:2,percent:Math.round(m.score*100),"stroke-color":de(m.score),size:"small",format:()=>m.score.toFixed(3)},null,8,["percent","stroke-color","format"])):v("",!0),r.key==="reason"?(d(),g("span",Tt,c(m.reason),1)):v("",!0),r.key==="status"?(d(),_($,{key:4,color:Fe(m.status)},{default:n(()=>[p(c(ce(m.status)),1)]),_:2},1032,["color"])):v("",!0),r.key==="feedback"?(d(),g(A,{key:5},[m.feedback?(d(),_($,{key:0,color:Te(m.feedback)},{default:n(()=>[p(c(Oe(m.feedback)),1)]),_:2},1032,["color"])):(d(),g("span",Rt,"—"))],64)):v("",!0),r.key==="action"?(d(),g(A,{key:6},[m.status==="pending"?(d(),_(u,{key:0,size:"small",type:"link",onClick:j=>Le(m)},{default:n(()=>[p(c(t(e)("recommend.rowActions.view")),1)]),_:1},8,["onClick"])):v("",!0),m.status!=="dismissed"?(d(),_(Ve,{key:1},{overlay:n(()=>[a(We,{onClick:({key:j})=>Me(m,j)},{default:n(()=>[a(ae,{key:"like",style:{color:"#52c41a"}},{default:n(()=>[p(c(t(e)("recommend.feedbackMenu.like")),1)]),_:1}),a(ae,{key:"dislike",style:{color:"#ff4d4f"}},{default:n(()=>[p(c(t(e)("recommend.feedbackMenu.dislike")),1)]),_:1}),a(ae,{key:"later"},{default:n(()=>[p(c(t(e)("recommend.feedbackMenu.later")),1)]),_:1})]),_:1},8,["onClick"])]),default:n(()=>[a(u,{size:"small",type:"link"},{default:n(()=>[p(c(t(e)("recommend.feedbackDropdown")),1)]),_:1})]),_:2},1024)):v("",!0),m.status!=="dismissed"?(d(),_(ye,{key:2,title:t(e)("recommend.rowActions.dismissConfirmTitle"),"ok-text":t(e)("recommend.rowActions.dismissOk"),"cancel-text":t(e)("common.cancel"),onConfirm:j=>De(m)},{default:n(()=>[a(u,{size:"small",type:"link",danger:""},{default:n(()=>[p(c(t(e)("recommend.rowActions.dismiss")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])):v("",!0)],64)):v("",!0)]),emptyText:n(()=>[x("div",Ut,[a(t(be),{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),p(" "+c(L.value||M.value?t(e)("recommend.empty.filtered"):t(e)("recommend.empty.noRecsHint")),1)])]),_:1},8,["columns","data-source","pagination","loading"])):(d(),_(V,{key:0,description:t(e)("recommend.empty.selectUser"),image:t(h),style:{padding:"40px 0"}},null,8,["description","image"]))]),_:1},8,["tab"]),a(se,{key:"profiles",tab:t(e)("recommend.tabs.profiles")},{default:n(()=>[a(ge,{columns:Ie.value,"data-source":E.value,pagination:{pageSize:20,showTotal:r=>t(e)("recommend.totals.profiles",{count:r})},size:"small",loading:I.value,style:{background:"var(--bg-card)"}},{bodyCell:n(({column:r,record:m})=>[r.key==="userId"?(d(),g("span",$t,c(m.userId),1)):v("",!0),r.key==="topicCount"?(d(),_($,{key:1,color:"blue"},{default:n(()=>[p(c(t(e)("recommend.topicTagSuffix",{count:m.topicCount})),1)]),_:2},1024)):v("",!0),r.key==="decayFactor"?(d(),g("span",jt,c(m.decayFactor.toFixed(2)),1)):v("",!0),r.key==="updateCount"?(d(),g("span",Jt,c(m.updateCount),1)):v("",!0),r.key==="lastUpdated"?(d(),g("span",Nt,c(t(Ce)(m.lastUpdated)),1)):v("",!0),r.key==="action"?(d(),g(A,{key:5},[a(u,{size:"small",type:"link",onClick:j=>Ee(m)},{default:n(()=>[p(c(t(e)("recommend.rowActions.details")),1)]),_:1},8,["onClick"]),a(u,{size:"small",type:"link",onClick:j=>$e(m.userId)},{default:n(()=>[p(c(t(e)("recommend.rowActions.switch")),1)]),_:1},8,["onClick"]),a(ye,{title:t(e)("recommend.rowActions.deleteConfirmTitle"),"ok-text":t(e)("recommend.rowActions.deleteOk"),"cancel-text":t(e)("common.cancel"),onConfirm:j=>Pe(m)},{default:n(()=>[a(u,{size:"small",type:"link",danger:""},{default:n(()=>[p(c(t(e)("recommend.rowActions.delete")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])],64)):v("",!0)]),emptyText:n(()=>[x("div",Pt,[a(t(ke),{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),p(" "+c(t(e)("recommend.empty.noProfiles")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),a(se,{key:"interests",tab:t(e)("recommend.tabs.interests")},{default:n(()=>[k.value?(d(),_(oe,{key:1,gutter:[16,16]},{default:n(()=>[a(T,{xs:24,lg:14},{default:n(()=>[a(z,{title:t(e)("recommend.interest.topicWeights"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[q.value.length?(d(),g("div",Et,[(d(!0),g(A,null,Y(q.value,r=>(d(),g("div",{key:r.key,class:"interest-row"},[x("span",Lt,c(r.topic),1),a(ne,{percent:Math.round(r.weight*100),"stroke-color":ue(r.weight),format:()=>r.weight.toFixed(3),size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))])):(d(),_(V,{key:0,description:t(e)("recommend.empty.noInterests"),image:t(h)},null,8,["description","image"]))]),_:1},8,["title"])]),_:1}),a(T,{xs:24,lg:10},{default:n(()=>[a(z,{title:t(e)("recommend.interest.feedbackSuggest"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[U.value.length?(d(),_(Ye,{key:1,size:"small","data-source":U.value},{renderItem:n(({item:r})=>[a(Ke,null,{default:n(()=>[a($,{color:r.action==="boost"?"green":"orange"},{default:n(()=>[p(c(r.action==="boost"?t(e)("recommend.interest.boost"):t(e)("recommend.interest.lower")),1)]),_:2},1032,["color"]),x("span",Mt,c(r.topic),1),x("span",Dt,"±"+c(r.amount),1)]),_:2},1024)]),_:1},8,["data-source"])):(d(),_(V,{key:0,description:t(e)("recommend.empty.noSuggestions"),image:t(h)},null,8,["description","image"]))]),_:1},8,["title"])]),_:1})]),_:1})):(d(),_(V,{key:0,description:t(e)("recommend.empty.selectUser"),image:t(h),style:{padding:"40px 0"}},null,8,["description","image"]))]),_:1},8,["tab"])]),_:1},8,["activeKey"]),a(ve,{open:Q.value,"onUpdate:open":l[8]||(l[8]=r=>Q.value=r),title:t(e)("recommend.create.title"),"confirm-loading":Z.value,width:560,"ok-text":t(e)("recommend.create.ok"),"cancel-text":t(e)("common.cancel"),onOk:je,onCancel:pe},{default:n(()=>[a(Qe,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:n(()=>[a(re,{label:t(e)("recommend.create.userIdLabel"),required:""},{default:n(()=>[a(Ge,{value:b.userId,"onUpdate:value":l[5]||(l[5]=r=>b.userId=r),placeholder:t(e)("recommend.create.userIdPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(re,{label:t(e)("recommend.create.topicsLabel")},{default:n(()=>[a(_e,{value:b.topicsJson,"onUpdate:value":l[6]||(l[6]=r=>b.topicsJson=r),placeholder:t(e)("recommend.create.topicsPlaceholder"),"auto-size":{minRows:2,maxRows:5}},null,8,["value","placeholder"])]),_:1},8,["label"]),a(re,{label:t(e)("recommend.create.weightsLabel")},{default:n(()=>[a(_e,{value:b.weightsJson,"onUpdate:value":l[7]||(l[7]=r=>b.weightsJson=r),placeholder:t(e)("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"]),a(ve,{open:te.value,"onUpdate:open":l[9]||(l[9]=r=>te.value=r),title:t(e)("recommend.details.title",{userId:w.value?.userId||""}),width:680,footer:null},{default:n(()=>[w.value?(d(),g("div",Bt,[a(He,{column:2,size:"small",bordered:""},{default:n(()=>[a(K,{label:t(e)("recommend.details.id"),span:2},{default:n(()=>[x("span",Wt,c(w.value.id),1)]),_:1},8,["label"]),a(K,{label:t(e)("recommend.details.topicCount")},{default:n(()=>[p(c(w.value.topicCount),1)]),_:1},8,["label"]),a(K,{label:t(e)("recommend.details.decayFactor")},{default:n(()=>[p(c(w.value.decayFactor.toFixed(2)),1)]),_:1},8,["label"]),a(K,{label:t(e)("recommend.details.updateCount")},{default:n(()=>[p(c(w.value.updateCount),1)]),_:1},8,["label"]),a(K,{label:t(e)("recommend.details.lastUpdated")},{default:n(()=>[p(c(t(Ce)(w.value.lastUpdated)),1)]),_:1},8,["label"])]),_:1}),x("h4",Vt,c(t(e)("recommend.details.topicWeights")),1),Object.keys(w.value.topics).length?(d(),g("div",Kt,[(d(!0),g(A,null,Y(w.value.topics,(r,m)=>(d(),g("div",{key:m,class:"interest-row"},[x("span",Yt,c(m),1),a(ne,{percent:Math.round(r*100),"stroke-color":ue(r),format:()=>r.toFixed(3),size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))])):(d(),_(V,{key:0,description:t(e)("recommend.empty.noTopics"),image:t(h)},null,8,["description","image"])),Object.keys(w.value.interactionWeights).length?(d(),g("h4",qt,c(t(e)("recommend.details.interactionWeights")),1)):v("",!0),Object.keys(w.value.interactionWeights).length?(d(),g("pre",Gt,c(Re(w.value.interactionWeights)),1)):v("",!0)])):v("",!0)]),_:1},8,["open","title"])])}}},to=Xe(Qt,[["__scopeId","data-v-16fcadc2"]]);export{to as default};
|
|
1
|
+
import{_ as Xe,b as Ze,u as et,E as tt,d as y}from"./index-BPtmPFwc.js";import{s as ot}from"./community-parser-CO25nZFt.js";import{R as nt,aC as at,aL as st,p as rt,ah as ke,a6 as be,aM as lt,aJ as it,ax as ct}from"./icons-B2G69bhT.js";import{o as dt,M as g,R as x,P as c,u as t,c as a,N as n,K as f,r as C,L as d,O as p,Q as _,S as v,F as A,Y,$ as ut,f as X,a as mt}from"./vendor-Ci2pTZ_t.js";function N(s){const e=ot(s);if(!e)return null;try{return JSON.parse(e)}catch{}const i=e.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!i)return null;try{return JSON.parse(i[0])}catch{return null}}const xe=Object.freeze(["note","post","article","document"]),pt=Object.freeze(["pending","viewed","dismissed"]);function S(s,e=0){return typeof s=="number"&&Number.isFinite(s)?s:e}function he(s){if(!s||typeof s!="object"||Array.isArray(s))return{};const e={};for(const[i,h]of Object.entries(s))typeof h=="number"&&Number.isFinite(h)&&(e[i]=h);return e}function ft(s,e=0){if(!s||typeof s!="object")return null;const i=s.user_id??s.userId??"";if(!i)return null;const h=s.topics&&typeof s.topics=="object"&&!Array.isArray(s.topics)?he(s.topics):{},I=s.interaction_weights??s.interactionWeights,P=I&&typeof I=="object"&&!Array.isArray(I)?he(I):{};return{key:i,id:String(s.id||""),userId:i,topics:h,topicCount:Object.keys(h).length,interactionWeights:P,decayFactor:S(s.decay_factor??s.decayFactor,.9),lastUpdated:s.last_updated??s.lastUpdated??null,updateCount:S(s.update_count??s.updateCount,0),_idx:e}}function yt(s){const e=N(s);return Array.isArray(e)?e.map(ft).filter(Boolean):[]}function gt(s,e=0){if(!s||typeof s!="object")return null;const i=s.id||"";return i?{key:i,id:i,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:S(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:e}:null}function _t(s){const e=N(s);return Array.isArray(e)?e.map(gt).filter(Boolean):[]}const vt={total:0,pending:0,viewed:0,dismissed:0,feedbackCount:0,feedbackRate:0,avgScore:0};function kt(s){const e={...vt},i=N(s);return!i||typeof i!="object"||Array.isArray(i)||(e.total=S(i.total,0),e.pending=S(i.pending,0),e.viewed=S(i.viewed,0),e.dismissed=S(i.dismissed,0),e.feedbackCount=S(i.feedbackCount,0),e.feedbackRate=S(i.feedbackRate,0),e.avgScore=S(i.avgScore,0)),e}function bt(s){const e=N(s);return Array.isArray(e)?e.filter(i=>i&&typeof i=="object"&&typeof i.topic=="string").map((i,h)=>({key:`${i.topic}-${h}`,topic:i.topic,weight:S(i.weight,0)})):[]}function xt(s){const e=N(s);return Array.isArray(e)?e.filter(i=>i&&typeof i=="object"&&typeof i.topic=="string"&&typeof i.action=="string").map((i,h)=>({key:`${i.topic}-${h}`,topic:i.topic,action:i.action,amount:S(i.amount,0)})):[]}function J(s){const e=N(s);return!e||typeof e!="object"||Array.isArray(e)?{ok:!1,reason:"",profileId:null,topicCount:null}:{ok:!!(e.updated||e.deleted||e.marked||e.dismissed||e.recorded||e.applied||e.profileId),reason:e.reason?String(e.reason):"",profileId:e.profileId?String(e.profileId):null,topicCount:typeof e.topicCount=="number"?e.topicCount:null}}function Ce(s){if(s==null||s==="")return"—";const e=typeof s=="number"?new Date(s):new Date(String(s));return isNaN(e.getTime())?String(s):e.toLocaleString("zh-CN",{hour12:!1})}const ht={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Ct={class:"page-title"},wt={class:"page-sub"},St={style:{display:"flex","align-items":"center",gap:"12px","flex-wrap":"wrap"}},It={style:{color:"var(--text-secondary)","font-size":"12px"}},zt={class:"type-name"},At={class:"filter-bar"},Ft={style:{color:"var(--text-primary)","font-weight":"500"}},Ot={style:{color:"var(--text-muted)","font-size":"11px","margin-top":"2px"}},Tt={key:3,style:{color:"var(--text-secondary)","font-size":"12px"}},Rt={key:1,style:{color:"var(--text-muted)"}},Ut={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},$t={key:0,style:{color:"var(--text-primary)","font-family":"monospace","font-weight":"500"}},jt={key:2,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},Jt={key:3,style:{color:"var(--text-secondary)"}},Nt={key:4,style:{color:"var(--text-secondary)","font-size":"11px"}},Pt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},Et={key:1},Lt={class:"interest-topic"},Mt={style:{"margin-left":"8px","font-family":"monospace",color:"var(--text-primary)"}},Dt={style:{"margin-left":"auto",color:"var(--text-secondary)","font-size":"12px"}},Bt={key:0,style:{"padding-top":"8px"}},Wt={style:{"font-family":"monospace","font-size":"12px"}},Vt={style:{color:"var(--text-primary)","font-size":"13px",margin:"16px 0 8px"}},Kt={key:1},Yt={class:"interest-topic"},qt={key:2,style:{color:"var(--text-primary)","font-size":"13px",margin:"16px 0 8px"}},Gt={key:3,class:"weights-pre"},Qt={__name:"Recommend",setup(s){const{t:e}=Ze(),i=et(),h=tt.PRESENTED_IMAGE_SIMPLE,I=C(!1),P=C(!1),Z=C(!1),E=C([]),ee=C([]),F=C({total:0,pending:0,viewed:0,dismissed:0,feedbackCount:0,feedbackRate:0,avgScore:0}),q=C([]),U=C([]),k=C(null),G=C("recs"),L=C(""),M=C(""),Q=C(!1),te=C(!1),b=mt({userId:"",topicsJson:"",weightsJson:""}),w=C(null),we=X(()=>E.value.map(o=>({value:o.userId,label:`${o.userId} (${e("recommend.userBar.topicSuffix",{count:o.topicCount})})`}))),Se=X(()=>[{title:e("recommend.recColumns.title"),key:"title"},{title:e("recommend.recColumns.contentType"),key:"contentType",width:"110px"},{title:e("recommend.recColumns.score"),key:"score",width:"180px"},{title:e("recommend.recColumns.reason"),key:"reason",width:"220px"},{title:e("recommend.recColumns.status"),key:"status",width:"100px"},{title:e("recommend.recColumns.feedback"),key:"feedback",width:"90px"},{title:e("recommend.recColumns.action"),key:"action",width:"210px"}]),Ie=X(()=>[{title:e("recommend.profileColumns.userId"),key:"userId"},{title:e("recommend.profileColumns.topicCount"),key:"topicCount",width:"110px"},{title:e("recommend.profileColumns.decayFactor"),key:"decayFactor",width:"110px"},{title:e("recommend.profileColumns.updateCount"),key:"updateCount",width:"110px"},{title:e("recommend.profileColumns.lastUpdated"),key:"lastUpdated",width:"180px"},{title:e("recommend.profileColumns.action"),key:"action",width:"200px"}]),ze=X(()=>{let o=ee.value;return L.value&&(o=o.filter(l=>l.status===L.value)),M.value&&(o=o.filter(l=>l.contentType===M.value)),o});function le(o){const l=`recommend.type.${o}`,u=e(l);return u===l?o:u}function ie(o){return{note:"blue",post:"green",article:"purple",document:"orange"}[o]||"default"}function Ae(o){return{note:"#1677ff",post:"#52c41a",article:"#722ed1",document:"#fa8c16"}[o]||"#888"}function ce(o){const l=`recommend.status.${o}`,u=e(l);return u===l?o:u}function Fe(o){return{pending:"processing",viewed:"green",dismissed:"default"}[o]||"default"}function Oe(o){const l=`recommend.feedbackLabel.${o}`,u=e(l);return u===l?o:u}function Te(o){return{like:"green",dislike:"red",later:"gold"}[o]||"default"}function de(o){return o>=.7?"#52c41a":o>=.4?"#1677ff":o>=.2?"#faad14":"#ff4d4f"}function ue(o){return o>=.7?"#52c41a":o>=.4?"#1677ff":o>=.2?"#faad14":"#888"}function Re(o){try{return JSON.stringify(o,null,2)}catch{return String(o)}}async function D(){I.value=!0;try{const{output:o}=await i.execute("recommend profiles --json",1e4).catch(()=>({output:""}));E.value=yt(o),k.value&&!E.value.find(l=>l.userId===k.value)&&(k.value=null),k.value&&await R()}catch(o){y.error(e("recommend.messages.loadProfilesFailed",{err:o?.message||o}))}finally{I.value=!1}}async function R(){if(!k.value){ee.value=[],F.value={total:0,pending:0,viewed:0,dismissed:0,feedbackCount:0,feedbackRate:0,avgScore:0},q.value=[];return}P.value=!0;try{const o=B(k.value),[l,u,O]=await Promise.all([i.execute(`recommend list ${o} --limit 200 --json`,1e4).catch(()=>({output:""})),i.execute(`recommend stats ${o} --json`,8e3).catch(()=>({output:""})),i.execute(`recommend top-interests ${o} --limit 30 --json`,8e3).catch(()=>({output:""}))]);ee.value=_t(l.output),F.value=kt(u.output),q.value=bt(O.output)}catch(o){y.error(e("recommend.messages.loadUserFailed",{err:o?.message||o}))}finally{P.value=!1}}function B(o){return`"${String(o).replace(/"/g,'\\"')}"`}function Ue(){U.value=[],R()}function $e(o){k.value=o,G.value="recs",R()}async function je(){if(!b.userId.trim()){y.warning(e("recommend.messages.userIdRequired"));return}if(b.topicsJson.trim())try{JSON.parse(b.topicsJson)}catch{y.warning(e("recommend.messages.topicsJsonInvalid"));return}if(b.weightsJson.trim())try{JSON.parse(b.weightsJson)}catch{y.warning(e("recommend.messages.weightsJsonInvalid"));return}Z.value=!0;try{const o=[`recommend create-profile ${B(b.userId.trim())}`];b.topicsJson.trim()&&o.push(`-t ${me(b.topicsJson.trim())}`),b.weightsJson.trim()&&o.push(`-w ${me(b.weightsJson.trim())}`),o.push("--json");const{output:l}=await i.execute(o.join(" "),1e4),u=J(l);if(!u.ok){y.error(e("recommend.messages.createFailed",{err:u.reason||l.slice(0,120)}));return}y.success(e("recommend.messages.createOk",{id:u.profileId?.slice(0,8)||""})),Q.value=!1;const O=b.userId.trim();pe(),await D(),k.value=O,await R()}catch(o){y.error(e("recommend.messages.createFailed",{err:o?.message||o}))}finally{Z.value=!1}}function me(o){return`'${String(o).replace(/'/g,"'\\''")}'`}async function Je(){if(k.value)try{const{output:o}=await i.execute(`recommend decay ${B(k.value)} --json`,8e3),l=J(o);if(!l.ok){y.error(e("recommend.messages.decayFailed",{err:l.reason||o.slice(0,120)}));return}y.success(l.topicCount!==null?e("recommend.messages.decayOkTopics",{count:l.topicCount}):e("recommend.messages.decayOk")),await D()}catch(o){y.error(e("recommend.messages.decayFailed",{err:o?.message||o}))}}async function Ne(){if(k.value)try{const{output:o}=await i.execute(`recommend suggest ${B(k.value)} --json`,8e3);U.value=xt(o),G.value="interests",U.value.length?y.success(e("recommend.messages.suggestFound",{count:U.value.length})):y.info(e("recommend.messages.suggestNone"))}catch(o){y.error(e("recommend.messages.loadSuggestFailed",{err:o?.message||o}))}}async function Pe(o){try{const{output:l}=await i.execute(`recommend delete-profile ${B(o.userId)} --json`,8e3),u=J(l);if(!u.ok){y.error(e("recommend.messages.deleteFailed",{err:u.reason||l.slice(0,120)}));return}y.success(e("recommend.messages.deleteOk")),k.value===o.userId&&(k.value=null),await D()}catch(l){y.error(e("recommend.messages.deleteFailed",{err:l?.message||l}))}}function Ee(o){w.value=o,te.value=!0}async function Le(o){try{const{output:l}=await i.execute(`recommend view ${o.id} --json`,8e3),u=J(l);if(!u.ok){y.error(e("recommend.messages.viewFailed",{err:u.reason||l.slice(0,120)}));return}y.success(e("recommend.messages.viewOk")),await R()}catch(l){y.error(e("recommend.messages.viewFailed",{err:l?.message||l}))}}async function Me(o,l){try{const{output:u}=await i.execute(`recommend feedback ${o.id} ${l} --json`,8e3),O=J(u);if(!O.ok){y.error(e("recommend.messages.feedbackFailed",{err:O.reason||u.slice(0,120)}));return}y.success(e("recommend.messages.feedbackOk")),await R()}catch(u){y.error(e("recommend.messages.feedbackFailed",{err:u?.message||u}))}}async function De(o){try{const{output:l}=await i.execute(`recommend dismiss ${o.id} --json`,8e3),u=J(l);if(!u.ok){y.error(e("recommend.messages.dismissFailed",{err:u.reason||l.slice(0,120)}));return}y.success(e("recommend.messages.dismissOk")),await R()}catch(l){y.error(e("recommend.messages.dismissFailed",{err:l?.message||l}))}}function pe(){b.userId="",b.topicsJson="",b.weightsJson=""}return dt(D),(o,l)=>{const u=f("a-button"),O=f("a-space"),Be=f("a-select"),z=f("a-card"),W=f("a-statistic"),T=f("a-col"),oe=f("a-row"),$=f("a-tag"),H=f("a-radio-button"),fe=f("a-radio-group"),V=f("a-empty"),ne=f("a-progress"),ae=f("a-menu-item"),We=f("a-menu"),Ve=f("a-dropdown"),ye=f("a-popconfirm"),ge=f("a-table"),se=f("a-tab-pane"),Ke=f("a-list-item"),Ye=f("a-list"),qe=f("a-tabs"),Ge=f("a-input"),re=f("a-form-item"),_e=f("a-textarea"),Qe=f("a-form"),ve=f("a-modal"),K=f("a-descriptions-item"),He=f("a-descriptions");return d(),g("div",null,[x("div",ht,[x("div",null,[x("h2",Ct,c(t(e)("recommend.title")),1),x("p",wt,c(t(e)("recommend.subtitle")),1)]),a(O,null,{default:n(()=>[a(u,{loading:I.value,onClick:D},{icon:n(()=>[a(t(nt))]),default:n(()=>[p(" "+c(t(e)("recommend.refresh")),1)]),_:1},8,["loading"]),a(u,{type:"primary",onClick:l[0]||(l[0]=r=>Q.value=!0)},{icon:n(()=>[a(t(at))]),default:n(()=>[p(" "+c(t(e)("recommend.createProfile")),1)]),_:1})]),_:1})]),a(z,{size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"},"body-style":{padding:"10px 16px"}},{default:n(()=>[x("div",St,[x("span",It,c(t(e)("recommend.userBar.currentUser")),1),a(Be,{value:k.value,"onUpdate:value":l[1]||(l[1]=r=>k.value=r),options:we.value,placeholder:t(e)("recommend.userBar.selectPlaceholder"),style:{"min-width":"280px"},"allow-clear":"","show-search":"",onChange:Ue},null,8,["value","options","placeholder"]),k.value?(d(),_(u,{key:0,size:"small",onClick:Je},{icon:n(()=>[a(t(st))]),default:n(()=>[p(" "+c(t(e)("recommend.userBar.applyDecay")),1)]),_:1})):v("",!0),k.value?(d(),_(u,{key:1,size:"small",onClick:Ne},{icon:n(()=>[a(t(rt))]),default:n(()=>[p(" "+c(t(e)("recommend.userBar.suggest")),1)]),_:1})):v("",!0)])]),_:1}),a(oe,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:n(()=>[a(T,{xs:12,sm:8,lg:5},{default:n(()=>[a(z,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[a(W,{title:t(e)("recommend.stats.profiles"),value:E.value.length,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:n(()=>[a(t(ke))]),_:1},8,["title","value"])]),_:1})]),_:1}),a(T,{xs:12,sm:8,lg:5},{default:n(()=>[a(z,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[a(W,{title:t(e)("recommend.stats.totalRecs"),value:F.value.total,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:n(()=>[a(t(be))]),_:1},8,["title","value"])]),_:1})]),_:1}),a(T,{xs:12,sm:8,lg:5},{default:n(()=>[a(z,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[a(W,{title:t(e)("recommend.stats.pending"),value:F.value.pending,"value-style":{color:F.value.pending>0?"#faad14":"#888",fontSize:"20px"}},{prefix:n(()=>[a(t(lt))]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),a(T,{xs:12,sm:8,lg:5},{default:n(()=>[a(z,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[a(W,{title:t(e)("recommend.stats.feedbackRate"),value:F.value.feedbackRate*100,suffix:"%",precision:1,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:n(()=>[a(t(it))]),_:1},8,["title","value"])]),_:1})]),_:1}),a(T,{xs:24,sm:8,lg:4},{default:n(()=>[a(z,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[a(W,{title:t(e)("recommend.stats.avgScore"),value:F.value.avgScore,precision:3,"value-style":{color:de(F.value.avgScore),fontSize:"20px"}},{prefix:n(()=>[a(t(ct))]),_:1},8,["title","value","value-style"])]),_:1})]),_:1})]),_:1}),a(z,{title:t(e)("recommend.typeCatalogue"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"},"body-style":{padding:"12px 16px"}},{default:n(()=>[a(oe,{gutter:[12,12]},{default:n(()=>[(d(!0),g(A,null,Y(t(xe),r=>(d(),_(T,{key:r,xs:12,sm:6},{default:n(()=>[x("div",{class:"type-pill",style:ut({borderLeftColor:Ae(r)})},[a($,{color:ie(r),style:{"font-family":"monospace"}},{default:n(()=>[p(c(r),1)]),_:2},1032,["color"]),x("div",zt,c(le(r)),1)],4)]),_:2},1024))),128))]),_:1})]),_:1},8,["title"]),a(qe,{activeKey:G.value,"onUpdate:activeKey":l[4]||(l[4]=r=>G.value=r),class:"recommend-tabs"},{default:n(()=>[a(se,{key:"recs",tab:t(e)("recommend.tabs.recs")},{default:n(()=>[x("div",At,[a(fe,{value:L.value,"onUpdate:value":l[2]||(l[2]=r=>L.value=r),size:"small","button-style":"solid"},{default:n(()=>[a(H,{value:""},{default:n(()=>[p(c(t(e)("recommend.filter.allStatuses")),1)]),_:1}),(d(!0),g(A,null,Y(t(pt),r=>(d(),_(H,{key:r,value:r},{default:n(()=>[p(c(ce(r)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),a(fe,{value:M.value,"onUpdate:value":l[3]||(l[3]=r=>M.value=r),size:"small"},{default:n(()=>[a(H,{value:""},{default:n(()=>[p(c(t(e)("recommend.filter.allTypes")),1)]),_:1}),(d(!0),g(A,null,Y(t(xe),r=>(d(),_(H,{key:r,value:r},{default:n(()=>[p(c(le(r)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),k.value?(d(),_(ge,{key:1,columns:Se.value,"data-source":ze.value,pagination:{pageSize:20,showTotal:r=>t(e)("recommend.totals.rows",{count:r})},size:"small",loading:P.value,style:{background:"var(--bg-card)"}},{bodyCell:n(({column:r,record:m})=>[r.key==="title"?(d(),g(A,{key:0},[x("span",Ft,c(m.title||t(e)("recommend.noTitle")),1),x("div",Ot,c(m.contentId),1)],64)):v("",!0),r.key==="contentType"?(d(),_($,{key:1,color:ie(m.contentType),style:{"font-family":"monospace"}},{default:n(()=>[p(c(m.contentType),1)]),_:2},1032,["color"])):v("",!0),r.key==="score"?(d(),_(ne,{key:2,percent:Math.round(m.score*100),"stroke-color":de(m.score),size:"small",format:()=>m.score.toFixed(3)},null,8,["percent","stroke-color","format"])):v("",!0),r.key==="reason"?(d(),g("span",Tt,c(m.reason),1)):v("",!0),r.key==="status"?(d(),_($,{key:4,color:Fe(m.status)},{default:n(()=>[p(c(ce(m.status)),1)]),_:2},1032,["color"])):v("",!0),r.key==="feedback"?(d(),g(A,{key:5},[m.feedback?(d(),_($,{key:0,color:Te(m.feedback)},{default:n(()=>[p(c(Oe(m.feedback)),1)]),_:2},1032,["color"])):(d(),g("span",Rt,"—"))],64)):v("",!0),r.key==="action"?(d(),g(A,{key:6},[m.status==="pending"?(d(),_(u,{key:0,size:"small",type:"link",onClick:j=>Le(m)},{default:n(()=>[p(c(t(e)("recommend.rowActions.view")),1)]),_:1},8,["onClick"])):v("",!0),m.status!=="dismissed"?(d(),_(Ve,{key:1},{overlay:n(()=>[a(We,{onClick:({key:j})=>Me(m,j)},{default:n(()=>[a(ae,{key:"like",style:{color:"#52c41a"}},{default:n(()=>[p(c(t(e)("recommend.feedbackMenu.like")),1)]),_:1}),a(ae,{key:"dislike",style:{color:"#ff4d4f"}},{default:n(()=>[p(c(t(e)("recommend.feedbackMenu.dislike")),1)]),_:1}),a(ae,{key:"later"},{default:n(()=>[p(c(t(e)("recommend.feedbackMenu.later")),1)]),_:1})]),_:1},8,["onClick"])]),default:n(()=>[a(u,{size:"small",type:"link"},{default:n(()=>[p(c(t(e)("recommend.feedbackDropdown")),1)]),_:1})]),_:2},1024)):v("",!0),m.status!=="dismissed"?(d(),_(ye,{key:2,title:t(e)("recommend.rowActions.dismissConfirmTitle"),"ok-text":t(e)("recommend.rowActions.dismissOk"),"cancel-text":t(e)("common.cancel"),onConfirm:j=>De(m)},{default:n(()=>[a(u,{size:"small",type:"link",danger:""},{default:n(()=>[p(c(t(e)("recommend.rowActions.dismiss")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])):v("",!0)],64)):v("",!0)]),emptyText:n(()=>[x("div",Ut,[a(t(be),{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),p(" "+c(L.value||M.value?t(e)("recommend.empty.filtered"):t(e)("recommend.empty.noRecsHint")),1)])]),_:1},8,["columns","data-source","pagination","loading"])):(d(),_(V,{key:0,description:t(e)("recommend.empty.selectUser"),image:t(h),style:{padding:"40px 0"}},null,8,["description","image"]))]),_:1},8,["tab"]),a(se,{key:"profiles",tab:t(e)("recommend.tabs.profiles")},{default:n(()=>[a(ge,{columns:Ie.value,"data-source":E.value,pagination:{pageSize:20,showTotal:r=>t(e)("recommend.totals.profiles",{count:r})},size:"small",loading:I.value,style:{background:"var(--bg-card)"}},{bodyCell:n(({column:r,record:m})=>[r.key==="userId"?(d(),g("span",$t,c(m.userId),1)):v("",!0),r.key==="topicCount"?(d(),_($,{key:1,color:"blue"},{default:n(()=>[p(c(t(e)("recommend.topicTagSuffix",{count:m.topicCount})),1)]),_:2},1024)):v("",!0),r.key==="decayFactor"?(d(),g("span",jt,c(m.decayFactor.toFixed(2)),1)):v("",!0),r.key==="updateCount"?(d(),g("span",Jt,c(m.updateCount),1)):v("",!0),r.key==="lastUpdated"?(d(),g("span",Nt,c(t(Ce)(m.lastUpdated)),1)):v("",!0),r.key==="action"?(d(),g(A,{key:5},[a(u,{size:"small",type:"link",onClick:j=>Ee(m)},{default:n(()=>[p(c(t(e)("recommend.rowActions.details")),1)]),_:1},8,["onClick"]),a(u,{size:"small",type:"link",onClick:j=>$e(m.userId)},{default:n(()=>[p(c(t(e)("recommend.rowActions.switch")),1)]),_:1},8,["onClick"]),a(ye,{title:t(e)("recommend.rowActions.deleteConfirmTitle"),"ok-text":t(e)("recommend.rowActions.deleteOk"),"cancel-text":t(e)("common.cancel"),onConfirm:j=>Pe(m)},{default:n(()=>[a(u,{size:"small",type:"link",danger:""},{default:n(()=>[p(c(t(e)("recommend.rowActions.delete")),1)]),_:1})]),_:1},8,["title","ok-text","cancel-text","onConfirm"])],64)):v("",!0)]),emptyText:n(()=>[x("div",Pt,[a(t(ke),{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),p(" "+c(t(e)("recommend.empty.noProfiles")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),a(se,{key:"interests",tab:t(e)("recommend.tabs.interests")},{default:n(()=>[k.value?(d(),_(oe,{key:1,gutter:[16,16]},{default:n(()=>[a(T,{xs:24,lg:14},{default:n(()=>[a(z,{title:t(e)("recommend.interest.topicWeights"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[q.value.length?(d(),g("div",Et,[(d(!0),g(A,null,Y(q.value,r=>(d(),g("div",{key:r.key,class:"interest-row"},[x("span",Lt,c(r.topic),1),a(ne,{percent:Math.round(r.weight*100),"stroke-color":ue(r.weight),format:()=>r.weight.toFixed(3),size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))])):(d(),_(V,{key:0,description:t(e)("recommend.empty.noInterests"),image:t(h)},null,8,["description","image"]))]),_:1},8,["title"])]),_:1}),a(T,{xs:24,lg:10},{default:n(()=>[a(z,{title:t(e)("recommend.interest.feedbackSuggest"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:n(()=>[U.value.length?(d(),_(Ye,{key:1,size:"small","data-source":U.value},{renderItem:n(({item:r})=>[a(Ke,null,{default:n(()=>[a($,{color:r.action==="boost"?"green":"orange"},{default:n(()=>[p(c(r.action==="boost"?t(e)("recommend.interest.boost"):t(e)("recommend.interest.lower")),1)]),_:2},1032,["color"]),x("span",Mt,c(r.topic),1),x("span",Dt,"±"+c(r.amount),1)]),_:2},1024)]),_:1},8,["data-source"])):(d(),_(V,{key:0,description:t(e)("recommend.empty.noSuggestions"),image:t(h)},null,8,["description","image"]))]),_:1},8,["title"])]),_:1})]),_:1})):(d(),_(V,{key:0,description:t(e)("recommend.empty.selectUser"),image:t(h),style:{padding:"40px 0"}},null,8,["description","image"]))]),_:1},8,["tab"])]),_:1},8,["activeKey"]),a(ve,{open:Q.value,"onUpdate:open":l[8]||(l[8]=r=>Q.value=r),title:t(e)("recommend.create.title"),"confirm-loading":Z.value,width:560,"ok-text":t(e)("recommend.create.ok"),"cancel-text":t(e)("common.cancel"),onOk:je,onCancel:pe},{default:n(()=>[a(Qe,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:n(()=>[a(re,{label:t(e)("recommend.create.userIdLabel"),required:""},{default:n(()=>[a(Ge,{value:b.userId,"onUpdate:value":l[5]||(l[5]=r=>b.userId=r),placeholder:t(e)("recommend.create.userIdPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),a(re,{label:t(e)("recommend.create.topicsLabel")},{default:n(()=>[a(_e,{value:b.topicsJson,"onUpdate:value":l[6]||(l[6]=r=>b.topicsJson=r),placeholder:t(e)("recommend.create.topicsPlaceholder"),"auto-size":{minRows:2,maxRows:5}},null,8,["value","placeholder"])]),_:1},8,["label"]),a(re,{label:t(e)("recommend.create.weightsLabel")},{default:n(()=>[a(_e,{value:b.weightsJson,"onUpdate:value":l[7]||(l[7]=r=>b.weightsJson=r),placeholder:t(e)("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"]),a(ve,{open:te.value,"onUpdate:open":l[9]||(l[9]=r=>te.value=r),title:t(e)("recommend.details.title",{userId:w.value?.userId||""}),width:680,footer:null},{default:n(()=>[w.value?(d(),g("div",Bt,[a(He,{column:2,size:"small",bordered:""},{default:n(()=>[a(K,{label:t(e)("recommend.details.id"),span:2},{default:n(()=>[x("span",Wt,c(w.value.id),1)]),_:1},8,["label"]),a(K,{label:t(e)("recommend.details.topicCount")},{default:n(()=>[p(c(w.value.topicCount),1)]),_:1},8,["label"]),a(K,{label:t(e)("recommend.details.decayFactor")},{default:n(()=>[p(c(w.value.decayFactor.toFixed(2)),1)]),_:1},8,["label"]),a(K,{label:t(e)("recommend.details.updateCount")},{default:n(()=>[p(c(w.value.updateCount),1)]),_:1},8,["label"]),a(K,{label:t(e)("recommend.details.lastUpdated")},{default:n(()=>[p(c(t(Ce)(w.value.lastUpdated)),1)]),_:1},8,["label"])]),_:1}),x("h4",Vt,c(t(e)("recommend.details.topicWeights")),1),Object.keys(w.value.topics).length?(d(),g("div",Kt,[(d(!0),g(A,null,Y(w.value.topics,(r,m)=>(d(),g("div",{key:m,class:"interest-row"},[x("span",Yt,c(m),1),a(ne,{percent:Math.round(r*100),"stroke-color":ue(r),format:()=>r.toFixed(3),size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))])):(d(),_(V,{key:0,description:t(e)("recommend.empty.noTopics"),image:t(h)},null,8,["description","image"])),Object.keys(w.value.interactionWeights).length?(d(),g("h4",qt,c(t(e)("recommend.details.interactionWeights")),1)):v("",!0),Object.keys(w.value.interactionWeights).length?(d(),g("pre",Gt,c(Re(w.value.interactionWeights)),1)):v("",!0)])):v("",!0)]),_:1},8,["open","title"])])}}},to=Xe(Qt,[["__scopeId","data-v-16fcadc2"]]);export{to as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as it,b as ut,u as ct,E as pt,d as k}from"./index-Bn_0bupT.js";import{s as Ee}from"./community-parser-CO25nZFt.js";import{R as dt,aj as Ce,h as mt,ah as De,aq as ft,X as Re,L as yt,a5 as vt,ap as bt,aK as _t}from"./icons-B2G69bhT.js";import gt from"./index-Qm6Kn3iq.js";import{o as xt,M as m,R as _,P as u,u as n,c as t,N as o,Q as S,S as y,K as d,r as h,L as c,O as f,F as T,Y as L,Z as kt,$ as Fe,f as Ie,a as ye}from"./vendor-Ci2pTZ_t.js";import"./KeyCode-D63Tfrq7.js";import"./omit-COm0v71g.js";import"./pickAttrs-C3Ftf-sl.js";import"./initDefaultProps-CMFUJGsa.js";import"./motion-CTtMugIF.js";import"./raf-Deuc0E8-.js";import"./index-B-VML4Pz.js";import"./index-CpHzrw8g.js";import"./isVisible-C7tPsqfj.js";import"./useState-4T1Ntfpx.js";import"./devWarning-CNIS3FrJ.js";import"./warning-Pq00owYb.js";import"./compact-item-By0t_ZDX.js";import"./createContext-CHZw2WQy.js";import"./Compact-B4TJcIuz.js";import"./_getTag-BVc6NQ_K.js";import"./styleChecker-94VBD7Xs.js";import"./zoom-CZllDiMO.js";import"./ActionButton-DoRABhmk.js";import"./vnode-CGY3YRLi.js";function B(s){const e=Ee(s);if(!e)return null;try{return JSON.parse(e)}catch{}const i=e.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!i)return null;try{return JSON.parse(i[0])}catch{return null}}const be=Object.freeze(["accuracy","fairness","resilience","convergence_speed"]),Te=Object.freeze(["none","exponential","linear","step"]),ht=Object.freeze(["z_score","iqr"]),Le=Object.freeze(["running","complete","applied","failed","cancelled"]),St=Object.freeze(["generic","task","review","vote"]);function z(s,e=0){return typeof s=="number"&&Number.isFinite(s)?s:e}function P(s){if(!s)return{noDb:!1,error:""};const e=Ee(s),i=/Database not available/i.test(e);return{noDb:i,error:i?"Database not available":""}}function zt(s,e=0){if(!s||typeof s!="object")return null;const i=s.did||"";return i?{key:i,did:i,score:z(s.score,0),observations:z(s.observations,0),decay:String(s.decay||"none"),weightTotal:z(s.weightTotal,0),_idx:e}:null}function $e(s){const e=B(s);return Array.isArray(e)?e.map(zt).filter(Boolean):[]}function Me(s,e=0){if(!s||typeof s!="object")return null;const i=s.did||"";return i?{key:`${i}-${e}`,did:i,score:z(s.score,0),reason:String(s.reason||""),zScore:typeof s.zScore=="number"?s.zScore:null,lower:typeof s.lower=="number"?s.lower:null,upper:typeof s.upper=="number"?s.upper:null}:null}function Ot(s){const e=B(s);if(!e||typeof e!="object"||Array.isArray(e))return{method:"",threshold:0,totalSamples:0,anomalies:[],summary:"",message:""};const i=Array.isArray(e.anomalies)?e.anomalies.map(Me).filter(Boolean):[];return{method:String(e.method||""),threshold:z(e.threshold,0),totalSamples:z(e.totalSamples,0),anomalies:i,summary:e.summary?String(e.summary):"",message:e.message?String(e.message):""}}function Ne(s,e=0){if(!s||typeof s!="object")return null;const i=s.runId||"";return i?{key:i,runId:i,objective:String(s.objective||""),iterations:z(s.iterations,0),paramSpace:s.paramSpace??null,bestParams:s.bestParams??null,bestScore:z(s.bestScore,0),status:String(s.status||"complete").toLowerCase(),createdAt:s.createdAt??null,completedAt:s.completedAt??null,analytics:s.analytics??null,errorMessage:s.errorMessage??"",_idx:e}:null}function jt(s){const e=B(s);return Array.isArray(e)?e.map(Ne).filter(Boolean):[]}function wt(s){const e=B(s);return!e||typeof e!="object"||Array.isArray(e)?null:Ne(e,0)}function At(s){const e=B(s);if(!e||typeof e!="object"||Array.isArray(e))return null;const i=e.reputationDistribution||{};return{analyticsId:String(e.analyticsId||""),runId:String(e.runId||""),reputationDistribution:{buckets:Array.isArray(i.buckets)?i.buckets.filter(v=>v&&typeof v=="object").map(v=>({label:String(v.label||""),count:z(v.count,0),min:typeof v.min=="number"?v.min:null,max:typeof v.max=="number"?v.max:null})):[],mean:typeof i.mean=="number"?i.mean:null,stdDev:typeof i.stdDev=="number"?i.stdDev:null},anomalies:e.anomalies&&typeof e.anomalies=="object"?{method:String(e.anomalies.method||""),totalSamples:z(e.anomalies.totalSamples,0),anomalies:Array.isArray(e.anomalies.anomalies)?e.anomalies.anomalies.map(Me).filter(Boolean):[],summary:e.anomalies.summary?String(e.anomalies.summary):"",message:e.anomalies.message?String(e.anomalies.message):""}:{method:"",totalSamples:0,anomalies:[],summary:"",message:""},recommendations:Array.isArray(e.recommendations)?e.recommendations.filter(v=>typeof v=="string"):[]}}const Ct={totalRuns:0,activeRuns:0,maxConcurrentOptimizations:0,byStatus:{},byObjective:{},observations:{totalObservations:0,totalDids:0},bestScoreEver:0};function Dt(s){const e=JSON.parse(JSON.stringify(Ct));for(const v of Le)e.byStatus[v]=0;for(const v of be)e.byObjective[v]=0;const i=B(s);if(!i||typeof i!="object"||Array.isArray(i))return e;if(e.totalRuns=z(i.totalRuns,0),e.activeRuns=z(i.activeRuns,0),e.maxConcurrentOptimizations=z(i.maxConcurrentOptimizations,0),e.bestScoreEver=z(i.bestScoreEver,0),i.byStatus&&typeof i.byStatus=="object")for(const[v,j]of Object.entries(i.byStatus))typeof j=="number"&&Number.isFinite(j)&&(e.byStatus[v]=j);if(i.byObjective&&typeof i.byObjective=="object")for(const[v,j]of Object.entries(i.byObjective))typeof j=="number"&&Number.isFinite(j)&&(e.byObjective[v]=j);return i.observations&&typeof i.observations=="object"&&(e.observations.totalObservations=z(i.observations.totalObservations,0),e.observations.totalDids=z(i.observations.totalDids,0)),e}function ve(s){if(s==null||s==="")return"—";const e=typeof s=="number"?new Date(s):new Date(String(s));return isNaN(e.getTime())?String(s):e.toLocaleString("zh-CN",{hour12:!1})}const Rt={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Ft={class:"page-title"},It={class:"page-sub"},Tt={class:"filter-bar"},$t={style:{color:"var(--text-secondary)","font-size":"12px"}},Et={key:1,style:{color:"var(--text-primary)","font-family":"monospace","font-size":"12px"}},Lt={key:3,style:{color:"var(--text-secondary)"}},Mt={key:4,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},Nt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},Ut={key:0,style:{color:"var(--text-primary)","font-family":"monospace","font-size":"12px"}},Pt={key:2,style:{color:"var(--text-secondary)"}},Bt={key:5,style:{color:"var(--text-secondary)","font-size":"11px"}},qt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},Jt={style:{"margin-left":"8px",color:"var(--text-muted)","font-size":"12px"}},Vt={style:{color:"var(--text-muted)","font-size":"11px","margin-top":"4px"}},Kt={style:{"margin-left":"8px",color:"var(--text-muted)","font-size":"12px"}},Wt={style:{"padding-top":"8px"}},Yt={style:{"margin-left":"8px",color:"var(--text-muted)","font-size":"12px"}},Gt={key:1},Ht={style:{"font-family":"monospace","font-size":"12px",color:"var(--text-primary)"}},Zt={style:{"margin-left":"8px",color:"var(--text-secondary)","font-size":"12px"}},Qt={key:0,style:{"margin-left":"8px",color:"var(--text-muted)","font-size":"11px"}},Xt={key:0,style:{"padding-top":"8px"}},ea={class:"params-pre"},ta={style:{color:"#ff4d4f"}},aa={key:0,style:{"margin-top":"16px"}},oa={style:{color:"var(--text-primary)","font-size":"13px",margin:"0 0 10px"}},na={class:"bucket-label"},ra={key:0,style:{"margin-top":"8px",color:"var(--text-secondary)","font-size":"12px"}},la={key:0,style:{"margin-left":"12px"}},sa={__name:"Reputation",setup(s){const{t:e}=ut(),i=ct(),v=pt.PRESENTED_IMAGE_SIMPLE,j=h(!1),ee=h(!1),te=h(!1),ae=h(!1),oe=h(!1),ne=h([]),_e=h([]),O=h({totalRuns:0,activeRuns:0,maxConcurrentOptimizations:0,byStatus:{},byObjective:{},observations:{totalObservations:0,totalDids:0},bestScoreEver:0}),J=h({noDb:!1,error:""}),ge=h("scores"),V=h("none"),K=h(!1),W=h(!1),re=h(!1),Y=h(!1),g=ye({did:"",score:.8,kind:"generic",weight:1}),M=ye({objective:"accuracy",iterations:50}),F=ye({method:"z_score",threshold:2.5,decay:"none"}),b=h(null),w=h(null),A=h(null),Ue=Ie(()=>[{title:e("reputation.scoreColumns.rank"),key:"rank",width:"60px"},{title:e("reputation.scoreColumns.did"),key:"did"},{title:e("reputation.scoreColumns.score"),key:"score",width:"220px"},{title:e("reputation.scoreColumns.observations"),key:"observations",width:"100px"},{title:e("reputation.scoreColumns.weightTotal"),key:"weightTotal",width:"100px"}]),Pe=Ie(()=>[{title:e("reputation.runColumns.runId"),key:"runId",width:"140px"},{title:e("reputation.runColumns.objective"),key:"objective",width:"140px"},{title:e("reputation.runColumns.iterations"),key:"iterations",width:"80px"},{title:e("reputation.runColumns.bestScore"),key:"bestScore",width:"110px"},{title:e("reputation.runColumns.status"),key:"status",width:"100px"},{title:e("reputation.runColumns.createdAt"),key:"createdAt",width:"160px"},{title:e("reputation.runColumns.action"),key:"action",width:"160px"}]);function xe(l){const r=`reputation.decay.${l}`,p=e(r);return p===r?l:p}function Be(l){const r=`reputation.kind.${l}`,p=e(r);return p===r?l:p}function G(l){const r=`reputation.objective.${l}`,p=e(r);return p===r?l:p}function le(l){return{accuracy:"blue",fairness:"green",resilience:"purple",convergence_speed:"orange"}[l]||"default"}function qe(l){return{accuracy:"#1677ff",fairness:"#52c41a",resilience:"#722ed1",convergence_speed:"#fa8c16"}[l]||"#888"}function Je(l){const r=`reputation.objectiveDesc.${l}`,p=e(r);return p===r?"":p}function se(l){const r=`reputation.status.${l}`,p=e(r);return p===r?l:p}function ie(l){return{running:"processing",complete:"blue",applied:"green",failed:"red",cancelled:"default"}[l]||"default"}function Ve(l){return{running:"#1677ff",complete:"#13c2c2",applied:"#52c41a",failed:"#ff4d4f",cancelled:"#888"}[l]||"#888"}function Ke(l){return l===0?"gold":l===1?"silver":l===2?"bronze":""}function ue(l){return l>=.8?"#52c41a":l>=.5?"#1677ff":l>=.3?"#faad14":"#ff4d4f"}function ke(l,r){return r?Math.round(l/r*100):0}function We(l){const r=w.value?.reputationDistribution.buckets.reduce((p,C)=>p+C.count,0)||0;return r?Math.round(l.count/r*100):0}function Ye(l){if(typeof l=="string")return l;try{return JSON.stringify(l,null,2)}catch{return String(l)}}async function q(){j.value=!0,J.value={noDb:!1,error:""};try{const[l,r,p]=await Promise.all([i.execute(`reputation list --decay ${V.value} --json`,1e4).catch(()=>({output:""})),i.execute("reputation runs --limit 50 --json",1e4).catch(()=>({output:""})),i.execute("reputation stats-v2 --json",8e3).catch(()=>({output:""}))]),C=[l,r,p].map(N=>P(N.output)).find(N=>N.noDb);C&&(J.value=C),ne.value=$e(l.output),_e.value=jt(r.output),O.value=Dt(p.output)}catch(l){k.error(e("reputation.messages.loadFailed",{err:l?.message||l}))}finally{j.value=!1}}async function Ge(){try{const{output:l}=await i.execute(`reputation list --decay ${V.value} --json`,1e4),r=P(l);if(r.noDb){J.value=r;return}ne.value=$e(l)}catch(l){k.error(e("reputation.messages.loadScoresFailed",{err:l?.message||l}))}}async function He(){if(!g.did.trim()){k.warning(e("reputation.messages.didRequired"));return}if(g.score<0||g.score>1){k.warning(e("reputation.messages.scoreRange"));return}ee.value=!0;try{const l=[`reputation observe "${g.did.trim().replace(/"/g,'\\"')}"`,String(g.score),`-k ${g.kind}`,`-w ${g.weight}`,"--json"],{output:r}=await i.execute(l.join(" "),1e4);if(P(r).noDb){k.error(e("reputation.messages.needInit"));return}if(!/"did"/.test(r)){k.error(e("reputation.messages.observeFailed",{err:r.slice(0,120)}));return}k.success(e("reputation.messages.observeOk")),K.value=!1,Se(),await q()}catch(l){k.error(e("reputation.messages.observeFailed",{err:l?.message||l}))}finally{ee.value=!1}}async function Ze(){te.value=!0;try{const l=["reputation optimize",`-o ${M.objective}`,`-i ${M.iterations}`,"--json"],{output:r}=await i.execute(l.join(" "),6e4);if(P(r).noDb){k.error(e("reputation.messages.needInit"));return}const C=wt(r);if(!C){k.error(e("reputation.messages.optimizeFailed",{err:r.slice(0,120)}));return}W.value=!1,k.success(e("reputation.messages.optimizeOk",{score:C.bestScore.toFixed(4)})),await q(),b.value=C,Y.value=!0,await he()}catch(l){k.error(e("reputation.messages.optimizeFailed",{err:l?.message||l}))}finally{te.value=!1}}async function Qe(l){gt.confirm({title:e("reputation.applyConfirm.title"),content:e("reputation.applyConfirm.content",{runId:l.runId.slice(0,12)}),okText:e("reputation.applyConfirm.ok"),cancelText:e("reputation.applyConfirm.cancel"),onOk:async()=>{try{const{output:r}=await i.execute(`reputation apply ${l.runId}`,8e3);if(P(r).noDb){k.error(e("reputation.messages.needInit"));return}if(/Failed|Error/i.test(r)&&!/Applied/i.test(r)){k.error(e("reputation.messages.applyFailed",{err:r.slice(0,120)}));return}k.success(e("reputation.messages.applyOk")),await q()}catch(r){k.error(e("reputation.messages.applyFailed",{err:r?.message||r}))}}})}async function Xe(l){b.value=l,w.value=null,Y.value=!0,await he()}async function he(){if(b.value){oe.value=!0;try{const{output:l}=await i.execute(`reputation analytics ${b.value.runId} --json`,8e3);if(P(l).noDb)return;w.value=At(l)}catch{}finally{oe.value=!1}}}function et(){A.value=null,re.value=!0}async function tt(){ae.value=!0;try{const l=["reputation anomalies",`-m ${F.method}`,`-t ${F.threshold}`,`-d ${F.decay}`,"--json"],{output:r}=await i.execute(l.join(" "),1e4);if(P(r).noDb){k.error(e("reputation.messages.needInit"));return}A.value=Ot(r)}catch(l){k.error(e("reputation.messages.detectFailed",{err:l?.message||l}))}finally{ae.value=!1}}function Se(){g.did="",g.score=.8,g.kind="generic",g.weight=1}return xt(q),(l,r)=>{const p=d("a-button"),C=d("a-space"),N=d("a-alert"),$=d("a-statistic"),I=d("a-card"),D=d("a-col"),ce=d("a-row"),ze=d("a-radio-button"),Oe=d("a-radio-group"),H=d("a-progress"),je=d("a-table"),pe=d("a-tab-pane"),U=d("a-tag"),at=d("a-tabs"),ot=d("a-input"),R=d("a-form-item"),Z=d("a-input-number"),de=d("a-select-option"),me=d("a-select"),fe=d("a-form"),Q=d("a-modal"),nt=d("a-divider"),rt=d("a-empty"),we=d("a-list-item"),Ae=d("a-list"),E=d("a-descriptions-item"),lt=d("a-descriptions"),st=d("a-spin");return c(),m("div",null,[_("div",Rt,[_("div",null,[_("h2",Ft,u(n(e)("reputation.title")),1),_("p",It,u(n(e)("reputation.subtitle")),1)]),t(C,null,{default:o(()=>[t(p,{loading:j.value,onClick:q},{icon:o(()=>[t(n(dt))]),default:o(()=>[f(" "+u(n(e)("reputation.refresh")),1)]),_:1},8,["loading"]),t(p,{onClick:et},{icon:o(()=>[t(n(Ce))]),default:o(()=>[f(" "+u(n(e)("reputation.actions.anomalies")),1)]),_:1}),t(p,{type:"primary",onClick:r[0]||(r[0]=a=>W.value=!0)},{icon:o(()=>[t(n(mt))]),default:o(()=>[f(" "+u(n(e)("reputation.actions.optimize")),1)]),_:1})]),_:1})]),J.value.noDb?(c(),S(N,{key:0,type:"info","show-icon":"",message:n(e)("reputation.noDb.message"),description:n(e)("reputation.noDb.description"),style:{"margin-bottom":"16px"}},null,8,["message","description"])):y("",!0),t(ce,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:o(()=>[t(D,{xs:12,sm:8,lg:5},{default:o(()=>[t(I,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[t($,{title:n(e)("reputation.stats.trackedDids"),value:O.value.observations.totalDids,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:o(()=>[t(n(De))]),_:1},8,["title","value"])]),_:1})]),_:1}),t(D,{xs:12,sm:8,lg:5},{default:o(()=>[t(I,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[t($,{title:n(e)("reputation.stats.totalObservations"),value:O.value.observations.totalObservations,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:o(()=>[t(n(ft))]),_:1},8,["title","value"])]),_:1})]),_:1}),t(D,{xs:12,sm:8,lg:5},{default:o(()=>[t(I,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[t($,{title:n(e)("reputation.stats.optimizationRuns"),value:O.value.totalRuns,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:o(()=>[t(n(Re))]),_:1},8,["title","value"])]),_:1})]),_:1}),t(D,{xs:12,sm:8,lg:5},{default:o(()=>[t(I,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[t($,{title:n(e)("reputation.stats.active"),value:O.value.activeRuns,"value-style":{color:O.value.activeRuns>0?"#1677ff":"#888",fontSize:"20px"},suffix:`/ ${O.value.maxConcurrentOptimizations}`},{prefix:o(()=>[t(n(yt))]),_:1},8,["title","value","value-style","suffix"])]),_:1})]),_:1}),t(D,{xs:24,sm:8,lg:4},{default:o(()=>[t(I,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[t($,{title:n(e)("reputation.stats.bestEver"),value:O.value.bestScoreEver,precision:3,"value-style":{color:"#52c41a",fontSize:"20px"}},{prefix:o(()=>[t(n(vt))]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),t(at,{activeKey:ge.value,"onUpdate:activeKey":r[3]||(r[3]=a=>ge.value=a),class:"reputation-tabs"},{default:o(()=>[t(pe,{key:"scores",tab:n(e)("reputation.tabs.scores")},{default:o(()=>[_("div",Tt,[_("span",$t,u(n(e)("reputation.filter.decayLabel")),1),t(Oe,{value:V.value,"onUpdate:value":r[1]||(r[1]=a=>V.value=a),size:"small","button-style":"solid",onChange:Ge},{default:o(()=>[(c(!0),m(T,null,L(n(Te),a=>(c(),S(ze,{key:a,value:a},{default:o(()=>[f(u(xe(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),t(p,{size:"small",onClick:r[2]||(r[2]=a=>K.value=!0)},{icon:o(()=>[t(n(bt))]),default:o(()=>[f(" "+u(n(e)("reputation.filter.addObservation")),1)]),_:1})]),t(je,{columns:Ue.value,"data-source":ne.value,pagination:{pageSize:20,showTotal:a=>n(e)("reputation.totals.dids",{count:a})},size:"small",loading:j.value,style:{background:"var(--bg-card)"}},{bodyCell:o(({column:a,record:x,index:X})=>[a.key==="rank"?(c(),m("span",{key:0,class:kt(["rank-pill",Ke(X)])},u(X+1),3)):y("",!0),a.key==="did"?(c(),m("span",Et,u(x.did),1)):y("",!0),a.key==="score"?(c(),S(H,{key:2,percent:Math.round(x.score*100),"stroke-color":ue(x.score),size:"small",format:()=>x.score.toFixed(4)},null,8,["percent","stroke-color","format"])):y("",!0),a.key==="observations"?(c(),m("span",Lt,u(x.observations),1)):y("",!0),a.key==="weightTotal"?(c(),m("span",Mt,u(x.weightTotal.toFixed(2)),1)):y("",!0)]),emptyText:o(()=>[_("div",Nt,[t(n(De),{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),f(" "+u(n(e)("reputation.empty.scores")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),t(pe,{key:"runs",tab:n(e)("reputation.tabs.runs")},{default:o(()=>[t(je,{columns:Pe.value,"data-source":_e.value,pagination:{pageSize:20,showTotal:a=>n(e)("reputation.totals.rows",{count:a})},size:"small",loading:j.value,style:{background:"var(--bg-card)"}},{bodyCell:o(({column:a,record:x})=>[a.key==="runId"?(c(),m("span",Ut,u(x.runId.slice(0,12)),1)):y("",!0),a.key==="objective"?(c(),S(U,{key:1,color:le(x.objective),style:{"font-family":"monospace"}},{default:o(()=>[f(u(G(x.objective)),1)]),_:2},1032,["color"])):y("",!0),a.key==="iterations"?(c(),m("span",Pt,u(x.iterations),1)):y("",!0),a.key==="bestScore"?(c(),m("span",{key:3,style:Fe({color:ue(x.bestScore),fontWeight:500,fontFamily:"monospace"})},u(x.bestScore.toFixed(4)),5)):y("",!0),a.key==="status"?(c(),S(U,{key:4,color:ie(x.status)},{default:o(()=>[f(u(se(x.status)),1)]),_:2},1032,["color"])):y("",!0),a.key==="createdAt"?(c(),m("span",Bt,u(n(ve)(x.createdAt)),1)):y("",!0),a.key==="action"?(c(),m(T,{key:6},[t(p,{size:"small",type:"link",onClick:X=>Xe(x)},{default:o(()=>[f(u(n(e)("reputation.rowActions.analyze")),1)]),_:1},8,["onClick"]),x.status==="complete"?(c(),S(p,{key:0,size:"small",type:"link",style:{color:"#52c41a"},onClick:X=>Qe(x)},{default:o(()=>[f(u(n(e)("reputation.rowActions.apply")),1)]),_:1},8,["onClick"])):y("",!0)],64)):y("",!0)]),emptyText:o(()=>[_("div",qt,[t(n(Re),{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),f(" "+u(n(e)("reputation.empty.runs")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),t(pe,{key:"breakdown",tab:n(e)("reputation.tabs.breakdown")},{default:o(()=>[t(ce,{gutter:[16,16]},{default:o(()=>[t(D,{xs:24,lg:12},{default:o(()=>[t(I,{title:n(e)("reputation.breakdown.byStatus"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[(c(!0),m(T,null,L(n(Le),a=>(c(),m("div",{key:a,class:"bd-row"},[t(U,{color:ie(a),style:{"min-width":"80px","text-align":"center"}},{default:o(()=>[f(u(se(a)),1)]),_:2},1032,["color"]),t(H,{percent:ke(O.value.byStatus[a]||0,O.value.totalRuns),"stroke-color":Ve(a),format:()=>`${O.value.byStatus[a]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))]),_:1},8,["title"])]),_:1}),t(D,{xs:24,lg:12},{default:o(()=>[t(I,{title:n(e)("reputation.breakdown.byObjective"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[(c(!0),m(T,null,L(n(be),a=>(c(),m("div",{key:a,class:"bd-row"},[t(U,{color:le(a),style:{"min-width":"100px","text-align":"center","font-family":"monospace"}},{default:o(()=>[f(u(G(a)),1)]),_:2},1032,["color"]),t(H,{percent:ke(O.value.byObjective[a]||0,O.value.totalRuns),"stroke-color":qe(a),format:()=>`${O.value.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"]),t(Q,{open:K.value,"onUpdate:open":r[8]||(r[8]=a=>K.value=a),title:n(e)("reputation.observe.title"),"confirm-loading":ee.value,width:540,"ok-text":n(e)("reputation.observe.ok"),"cancel-text":n(e)("common.cancel"),onOk:He,onCancel:Se},{default:o(()=>[t(fe,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:o(()=>[t(R,{label:n(e)("reputation.observe.didLabel"),required:""},{default:o(()=>[t(ot,{value:g.did,"onUpdate:value":r[4]||(r[4]=a=>g.did=a),placeholder:n(e)("reputation.observe.didPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),t(R,{label:n(e)("reputation.observe.scoreLabel"),required:""},{default:o(()=>[t(Z,{value:g.score,"onUpdate:value":r[5]||(r[5]=a=>g.score=a),min:0,max:1,step:.05,style:{width:"160px"}},null,8,["value"]),_("span",Jt,u(n(e)("reputation.observe.scoreRange")),1)]),_:1},8,["label"]),t(R,{label:n(e)("reputation.observe.kindLabel")},{default:o(()=>[t(me,{value:g.kind,"onUpdate:value":r[6]||(r[6]=a=>g.kind=a)},{default:o(()=>[(c(!0),m(T,null,L(n(St),a=>(c(),S(de,{key:a,value:a},{default:o(()=>[f(u(Be(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),t(R,{label:n(e)("reputation.observe.weightLabel")},{default:o(()=>[t(Z,{value:g.weight,"onUpdate:value":r[7]||(r[7]=a=>g.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"]),t(Q,{open:W.value,"onUpdate:open":r[11]||(r[11]=a=>W.value=a),title:n(e)("reputation.optimize.title"),"confirm-loading":te.value,width:540,"ok-text":n(e)("reputation.optimize.ok"),"cancel-text":n(e)("common.cancel"),onOk:Ze},{default:o(()=>[t(fe,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:o(()=>[t(R,{label:n(e)("reputation.optimize.objectiveLabel"),required:""},{default:o(()=>[t(me,{value:M.objective,"onUpdate:value":r[9]||(r[9]=a=>M.objective=a)},{default:o(()=>[(c(!0),m(T,null,L(n(be),a=>(c(),S(de,{key:a,value:a},{default:o(()=>[f(u(G(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),_("div",Vt,u(Je(M.objective)),1)]),_:1},8,["label"]),t(R,{label:n(e)("reputation.optimize.iterationsLabel")},{default:o(()=>[t(Z,{value:M.iterations,"onUpdate:value":r[10]||(r[10]=a=>M.iterations=a),min:1,max:1e3,step:10,style:{width:"160px"}},null,8,["value"]),_("span",Kt,u(n(e)("reputation.optimize.iterationsRange")),1)]),_:1},8,["label"])]),_:1}),t(N,{type:"info","show-icon":"",message:n(e)("reputation.optimize.syncMessage"),description:n(e)("reputation.optimize.syncDescription"),style:{"margin-top":"12px"}},null,8,["message","description"])]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),t(Q,{open:re.value,"onUpdate:open":r[15]||(r[15]=a=>re.value=a),title:n(e)("reputation.anomaly.title"),width:640,footer:null},{default:o(()=>[_("div",Wt,[t(fe,{"label-col":{span:5},"wrapper-col":{span:19}},{default:o(()=>[t(R,{label:n(e)("reputation.anomaly.methodLabel")},{default:o(()=>[t(Oe,{value:F.method,"onUpdate:value":r[12]||(r[12]=a=>F.method=a),"button-style":"solid"},{default:o(()=>[(c(!0),m(T,null,L(n(ht),a=>(c(),S(ze,{key:a,value:a},{default:o(()=>[f(u(a==="z_score"?n(e)("reputation.anomaly.zScoreLabel"):n(e)("reputation.anomaly.iqrLabel")),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),t(R,{label:n(e)("reputation.anomaly.thresholdLabel")},{default:o(()=>[t(Z,{value:F.threshold,"onUpdate:value":r[13]||(r[13]=a=>F.threshold=a),min:.5,step:.1,style:{width:"120px"}},null,8,["value"]),_("span",Yt,u(n(e)("reputation.anomaly.thresholdHint")),1)]),_:1},8,["label"]),t(R,{label:n(e)("reputation.anomaly.decayLabel")},{default:o(()=>[t(me,{value:F.decay,"onUpdate:value":r[14]||(r[14]=a=>F.decay=a),style:{width:"200px"}},{default:o(()=>[(c(!0),m(T,null,L(n(Te),a=>(c(),S(de,{key:a,value:a},{default:o(()=>[f(u(xe(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),t(R,{"wrapper-col":{offset:5,span:19}},{default:o(()=>[t(p,{type:"primary",loading:ae.value,onClick:tt},{icon:o(()=>[t(n(Ce))]),default:o(()=>[f(" "+u(n(e)("reputation.anomaly.start")),1)]),_:1},8,["loading"])]),_:1})]),_:1}),t(nt),A.value?(c(),m("div",Gt,[t(ce,{gutter:12,style:{"margin-bottom":"12px"}},{default:o(()=>[t(D,{span:8},{default:o(()=>[t($,{title:n(e)("reputation.anomaly.totalSamples"),value:A.value.totalSamples,"value-style":{fontSize:"16px"}},null,8,["title","value"])]),_:1}),t(D,{span:8},{default:o(()=>[t($,{title:n(e)("reputation.anomaly.threshold"),value:A.value.threshold,precision:2,"value-style":{fontSize:"16px"}},null,8,["title","value"])]),_:1}),t(D,{span:8},{default:o(()=>[t($,{title:n(e)("reputation.anomaly.anomalies"),value:A.value.anomalies.length,"value-style":{color:A.value.anomalies.length>0?"#ff4d4f":"#52c41a",fontSize:"16px"}},null,8,["title","value","value-style"])]),_:1})]),_:1}),A.value.message?(c(),S(N,{key:0,message:A.value.message,type:"warning","show-icon":"",style:{"margin-bottom":"12px"}},null,8,["message"])):y("",!0),A.value.anomalies.length?(c(),S(Ae,{key:1,size:"small","data-source":A.value.anomalies},{renderItem:o(({item:a})=>[t(we,null,{default:o(()=>[_("span",Ht,u(a.did),1),t(U,{color:"red",style:{"margin-left":"8px"}},{default:o(()=>[f(u(n(e)("reputation.anomaly.scoreTag",{score:a.score.toFixed(4)})),1)]),_:2},1024),_("span",Zt,u(a.reason),1),a.zScore!==null?(c(),m("span",Qt,u(n(e)("reputation.anomaly.zNote",{value:a.zScore.toFixed(2)})),1)):y("",!0)]),_:2},1024)]),_:1},8,["data-source"])):y("",!0)])):(c(),S(rt,{key:0,description:n(e)("reputation.anomaly.notDetected"),image:n(v)},null,8,["description","image"]))])]),_:1},8,["open","title"]),t(Q,{open:Y.value,"onUpdate:open":r[16]||(r[16]=a=>Y.value=a),title:n(e)("reputation.analytics.title",{runId:b.value?.runId?.slice(0,12)||""}),width:780,footer:null},{default:o(()=>[b.value?(c(),m("div",Xt,[t(lt,{column:2,size:"small",bordered:""},{default:o(()=>[t(E,{label:n(e)("reputation.analytics.objective")},{default:o(()=>[t(U,{color:le(b.value.objective)},{default:o(()=>[f(u(G(b.value.objective)),1)]),_:1},8,["color"])]),_:1},8,["label"]),t(E,{label:n(e)("reputation.analytics.status")},{default:o(()=>[t(U,{color:ie(b.value.status)},{default:o(()=>[f(u(se(b.value.status)),1)]),_:1},8,["color"])]),_:1},8,["label"]),t(E,{label:n(e)("reputation.analytics.iterations")},{default:o(()=>[f(u(b.value.iterations),1)]),_:1},8,["label"]),t(E,{label:n(e)("reputation.analytics.bestScore")},{default:o(()=>[_("span",{style:Fe({color:ue(b.value.bestScore),fontWeight:500,fontFamily:"monospace"})},u(b.value.bestScore.toFixed(4)),5)]),_:1},8,["label"]),t(E,{label:n(e)("reputation.analytics.createdAt")},{default:o(()=>[f(u(n(ve)(b.value.createdAt)),1)]),_:1},8,["label"]),b.value.completedAt?(c(),S(E,{key:0,label:n(e)("reputation.analytics.completedAt")},{default:o(()=>[f(u(n(ve)(b.value.completedAt)),1)]),_:1},8,["label"])):y("",!0),b.value.bestParams?(c(),S(E,{key:1,label:n(e)("reputation.analytics.bestParams"),span:2},{default:o(()=>[_("pre",ea,u(Ye(b.value.bestParams)),1)]),_:1},8,["label"])):y("",!0),b.value.errorMessage?(c(),S(E,{key:2,label:n(e)("reputation.analytics.errorMessage"),span:2},{default:o(()=>[_("span",ta,u(b.value.errorMessage),1)]),_:1},8,["label"])):y("",!0)]),_:1}),t(st,{spinning:oe.value},{default:o(()=>[w.value?(c(),m("div",aa,[_("h4",oa,u(n(e)("reputation.analytics.distributionTitle")),1),t(I,{size:"small",style:{"margin-bottom":"12px"}},{default:o(()=>[(c(!0),m(T,null,L(w.value.reputationDistribution.buckets,a=>(c(),m("div",{key:a.label,class:"bucket-row"},[_("span",na,u(a.label),1),t(H,{percent:We(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)),w.value.reputationDistribution.mean!==null?(c(),m("div",ra,[f(u(n(e)("reputation.analytics.mean",{value:w.value.reputationDistribution.mean.toFixed(4)}))+" ",1),w.value.reputationDistribution.stdDev!==null?(c(),m("span",la,u(n(e)("reputation.analytics.stdDev",{value:w.value.reputationDistribution.stdDev.toFixed(4)})),1)):y("",!0)])):y("",!0)]),_:1}),w.value.recommendations.length?(c(),S(I,{key:0,title:n(e)("reputation.analytics.recommendations"),size:"small"},{default:o(()=>[t(Ae,{size:"small","data-source":w.value.recommendations},{renderItem:o(({item:a})=>[t(we,null,{default:o(()=>[t(n(_t),{style:{color:"#faad14","margin-right":"8px"}}),f(" "+u(a),1)]),_:2},1024)]),_:1},8,["data-source"])]),_:1},8,["title"])):y("",!0)])):y("",!0)]),_:1},8,["spinning"])])):y("",!0)]),_:1},8,["open","title"])])}}},Ia=it(sa,[["__scopeId","data-v-9561b6cc"]]);export{Ia as default};
|
|
1
|
+
import{_ as it,b as ut,u as ct,E as pt,d as k}from"./index-BPtmPFwc.js";import{s as Ee}from"./community-parser-CO25nZFt.js";import{R as dt,aj as Ce,h as mt,ah as De,aq as ft,X as Re,L as yt,a5 as vt,ap as bt,aK as _t}from"./icons-B2G69bhT.js";import gt from"./index-DuutOf_b.js";import{o as xt,M as m,R as _,P as u,u as n,c as t,N as o,Q as S,S as y,K as d,r as h,L as c,O as f,F as T,Y as L,Z as kt,$ as Fe,f as Ie,a as ye}from"./vendor-Ci2pTZ_t.js";import"./KeyCode-D63Tfrq7.js";import"./omit-CV_avDvk.js";import"./pickAttrs-BVSL31rv.js";import"./initDefaultProps-DzCq75v2.js";import"./motion-CwDCjQBX.js";import"./raf-Deuc0E8-.js";import"./index-DZ0FDal8.js";import"./index-eZTZv_mW.js";import"./isVisible-C7tPsqfj.js";import"./useState-4T1Ntfpx.js";import"./devWarning-CNIS3FrJ.js";import"./warning-Pq00owYb.js";import"./compact-item-DRlYnN0j.js";import"./createContext-CQjz89ZD.js";import"./Compact-COZAt3WB.js";import"./_getTag-BVc6NQ_K.js";import"./styleChecker-CuXdVqkl.js";import"./zoom-DSlt2Q3p.js";import"./ActionButton-B3a-9Af9.js";import"./vnode-51kseDDa.js";function B(s){const e=Ee(s);if(!e)return null;try{return JSON.parse(e)}catch{}const i=e.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!i)return null;try{return JSON.parse(i[0])}catch{return null}}const be=Object.freeze(["accuracy","fairness","resilience","convergence_speed"]),Te=Object.freeze(["none","exponential","linear","step"]),ht=Object.freeze(["z_score","iqr"]),Le=Object.freeze(["running","complete","applied","failed","cancelled"]),St=Object.freeze(["generic","task","review","vote"]);function z(s,e=0){return typeof s=="number"&&Number.isFinite(s)?s:e}function P(s){if(!s)return{noDb:!1,error:""};const e=Ee(s),i=/Database not available/i.test(e);return{noDb:i,error:i?"Database not available":""}}function zt(s,e=0){if(!s||typeof s!="object")return null;const i=s.did||"";return i?{key:i,did:i,score:z(s.score,0),observations:z(s.observations,0),decay:String(s.decay||"none"),weightTotal:z(s.weightTotal,0),_idx:e}:null}function $e(s){const e=B(s);return Array.isArray(e)?e.map(zt).filter(Boolean):[]}function Me(s,e=0){if(!s||typeof s!="object")return null;const i=s.did||"";return i?{key:`${i}-${e}`,did:i,score:z(s.score,0),reason:String(s.reason||""),zScore:typeof s.zScore=="number"?s.zScore:null,lower:typeof s.lower=="number"?s.lower:null,upper:typeof s.upper=="number"?s.upper:null}:null}function Ot(s){const e=B(s);if(!e||typeof e!="object"||Array.isArray(e))return{method:"",threshold:0,totalSamples:0,anomalies:[],summary:"",message:""};const i=Array.isArray(e.anomalies)?e.anomalies.map(Me).filter(Boolean):[];return{method:String(e.method||""),threshold:z(e.threshold,0),totalSamples:z(e.totalSamples,0),anomalies:i,summary:e.summary?String(e.summary):"",message:e.message?String(e.message):""}}function Ne(s,e=0){if(!s||typeof s!="object")return null;const i=s.runId||"";return i?{key:i,runId:i,objective:String(s.objective||""),iterations:z(s.iterations,0),paramSpace:s.paramSpace??null,bestParams:s.bestParams??null,bestScore:z(s.bestScore,0),status:String(s.status||"complete").toLowerCase(),createdAt:s.createdAt??null,completedAt:s.completedAt??null,analytics:s.analytics??null,errorMessage:s.errorMessage??"",_idx:e}:null}function jt(s){const e=B(s);return Array.isArray(e)?e.map(Ne).filter(Boolean):[]}function wt(s){const e=B(s);return!e||typeof e!="object"||Array.isArray(e)?null:Ne(e,0)}function At(s){const e=B(s);if(!e||typeof e!="object"||Array.isArray(e))return null;const i=e.reputationDistribution||{};return{analyticsId:String(e.analyticsId||""),runId:String(e.runId||""),reputationDistribution:{buckets:Array.isArray(i.buckets)?i.buckets.filter(v=>v&&typeof v=="object").map(v=>({label:String(v.label||""),count:z(v.count,0),min:typeof v.min=="number"?v.min:null,max:typeof v.max=="number"?v.max:null})):[],mean:typeof i.mean=="number"?i.mean:null,stdDev:typeof i.stdDev=="number"?i.stdDev:null},anomalies:e.anomalies&&typeof e.anomalies=="object"?{method:String(e.anomalies.method||""),totalSamples:z(e.anomalies.totalSamples,0),anomalies:Array.isArray(e.anomalies.anomalies)?e.anomalies.anomalies.map(Me).filter(Boolean):[],summary:e.anomalies.summary?String(e.anomalies.summary):"",message:e.anomalies.message?String(e.anomalies.message):""}:{method:"",totalSamples:0,anomalies:[],summary:"",message:""},recommendations:Array.isArray(e.recommendations)?e.recommendations.filter(v=>typeof v=="string"):[]}}const Ct={totalRuns:0,activeRuns:0,maxConcurrentOptimizations:0,byStatus:{},byObjective:{},observations:{totalObservations:0,totalDids:0},bestScoreEver:0};function Dt(s){const e=JSON.parse(JSON.stringify(Ct));for(const v of Le)e.byStatus[v]=0;for(const v of be)e.byObjective[v]=0;const i=B(s);if(!i||typeof i!="object"||Array.isArray(i))return e;if(e.totalRuns=z(i.totalRuns,0),e.activeRuns=z(i.activeRuns,0),e.maxConcurrentOptimizations=z(i.maxConcurrentOptimizations,0),e.bestScoreEver=z(i.bestScoreEver,0),i.byStatus&&typeof i.byStatus=="object")for(const[v,j]of Object.entries(i.byStatus))typeof j=="number"&&Number.isFinite(j)&&(e.byStatus[v]=j);if(i.byObjective&&typeof i.byObjective=="object")for(const[v,j]of Object.entries(i.byObjective))typeof j=="number"&&Number.isFinite(j)&&(e.byObjective[v]=j);return i.observations&&typeof i.observations=="object"&&(e.observations.totalObservations=z(i.observations.totalObservations,0),e.observations.totalDids=z(i.observations.totalDids,0)),e}function ve(s){if(s==null||s==="")return"—";const e=typeof s=="number"?new Date(s):new Date(String(s));return isNaN(e.getTime())?String(s):e.toLocaleString("zh-CN",{hour12:!1})}const Rt={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Ft={class:"page-title"},It={class:"page-sub"},Tt={class:"filter-bar"},$t={style:{color:"var(--text-secondary)","font-size":"12px"}},Et={key:1,style:{color:"var(--text-primary)","font-family":"monospace","font-size":"12px"}},Lt={key:3,style:{color:"var(--text-secondary)"}},Mt={key:4,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},Nt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},Ut={key:0,style:{color:"var(--text-primary)","font-family":"monospace","font-size":"12px"}},Pt={key:2,style:{color:"var(--text-secondary)"}},Bt={key:5,style:{color:"var(--text-secondary)","font-size":"11px"}},qt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},Jt={style:{"margin-left":"8px",color:"var(--text-muted)","font-size":"12px"}},Vt={style:{color:"var(--text-muted)","font-size":"11px","margin-top":"4px"}},Kt={style:{"margin-left":"8px",color:"var(--text-muted)","font-size":"12px"}},Wt={style:{"padding-top":"8px"}},Yt={style:{"margin-left":"8px",color:"var(--text-muted)","font-size":"12px"}},Gt={key:1},Ht={style:{"font-family":"monospace","font-size":"12px",color:"var(--text-primary)"}},Zt={style:{"margin-left":"8px",color:"var(--text-secondary)","font-size":"12px"}},Qt={key:0,style:{"margin-left":"8px",color:"var(--text-muted)","font-size":"11px"}},Xt={key:0,style:{"padding-top":"8px"}},ea={class:"params-pre"},ta={style:{color:"#ff4d4f"}},aa={key:0,style:{"margin-top":"16px"}},oa={style:{color:"var(--text-primary)","font-size":"13px",margin:"0 0 10px"}},na={class:"bucket-label"},ra={key:0,style:{"margin-top":"8px",color:"var(--text-secondary)","font-size":"12px"}},la={key:0,style:{"margin-left":"12px"}},sa={__name:"Reputation",setup(s){const{t:e}=ut(),i=ct(),v=pt.PRESENTED_IMAGE_SIMPLE,j=h(!1),ee=h(!1),te=h(!1),ae=h(!1),oe=h(!1),ne=h([]),_e=h([]),O=h({totalRuns:0,activeRuns:0,maxConcurrentOptimizations:0,byStatus:{},byObjective:{},observations:{totalObservations:0,totalDids:0},bestScoreEver:0}),J=h({noDb:!1,error:""}),ge=h("scores"),V=h("none"),K=h(!1),W=h(!1),re=h(!1),Y=h(!1),g=ye({did:"",score:.8,kind:"generic",weight:1}),M=ye({objective:"accuracy",iterations:50}),F=ye({method:"z_score",threshold:2.5,decay:"none"}),b=h(null),w=h(null),A=h(null),Ue=Ie(()=>[{title:e("reputation.scoreColumns.rank"),key:"rank",width:"60px"},{title:e("reputation.scoreColumns.did"),key:"did"},{title:e("reputation.scoreColumns.score"),key:"score",width:"220px"},{title:e("reputation.scoreColumns.observations"),key:"observations",width:"100px"},{title:e("reputation.scoreColumns.weightTotal"),key:"weightTotal",width:"100px"}]),Pe=Ie(()=>[{title:e("reputation.runColumns.runId"),key:"runId",width:"140px"},{title:e("reputation.runColumns.objective"),key:"objective",width:"140px"},{title:e("reputation.runColumns.iterations"),key:"iterations",width:"80px"},{title:e("reputation.runColumns.bestScore"),key:"bestScore",width:"110px"},{title:e("reputation.runColumns.status"),key:"status",width:"100px"},{title:e("reputation.runColumns.createdAt"),key:"createdAt",width:"160px"},{title:e("reputation.runColumns.action"),key:"action",width:"160px"}]);function xe(l){const r=`reputation.decay.${l}`,p=e(r);return p===r?l:p}function Be(l){const r=`reputation.kind.${l}`,p=e(r);return p===r?l:p}function G(l){const r=`reputation.objective.${l}`,p=e(r);return p===r?l:p}function le(l){return{accuracy:"blue",fairness:"green",resilience:"purple",convergence_speed:"orange"}[l]||"default"}function qe(l){return{accuracy:"#1677ff",fairness:"#52c41a",resilience:"#722ed1",convergence_speed:"#fa8c16"}[l]||"#888"}function Je(l){const r=`reputation.objectiveDesc.${l}`,p=e(r);return p===r?"":p}function se(l){const r=`reputation.status.${l}`,p=e(r);return p===r?l:p}function ie(l){return{running:"processing",complete:"blue",applied:"green",failed:"red",cancelled:"default"}[l]||"default"}function Ve(l){return{running:"#1677ff",complete:"#13c2c2",applied:"#52c41a",failed:"#ff4d4f",cancelled:"#888"}[l]||"#888"}function Ke(l){return l===0?"gold":l===1?"silver":l===2?"bronze":""}function ue(l){return l>=.8?"#52c41a":l>=.5?"#1677ff":l>=.3?"#faad14":"#ff4d4f"}function ke(l,r){return r?Math.round(l/r*100):0}function We(l){const r=w.value?.reputationDistribution.buckets.reduce((p,C)=>p+C.count,0)||0;return r?Math.round(l.count/r*100):0}function Ye(l){if(typeof l=="string")return l;try{return JSON.stringify(l,null,2)}catch{return String(l)}}async function q(){j.value=!0,J.value={noDb:!1,error:""};try{const[l,r,p]=await Promise.all([i.execute(`reputation list --decay ${V.value} --json`,1e4).catch(()=>({output:""})),i.execute("reputation runs --limit 50 --json",1e4).catch(()=>({output:""})),i.execute("reputation stats-v2 --json",8e3).catch(()=>({output:""}))]),C=[l,r,p].map(N=>P(N.output)).find(N=>N.noDb);C&&(J.value=C),ne.value=$e(l.output),_e.value=jt(r.output),O.value=Dt(p.output)}catch(l){k.error(e("reputation.messages.loadFailed",{err:l?.message||l}))}finally{j.value=!1}}async function Ge(){try{const{output:l}=await i.execute(`reputation list --decay ${V.value} --json`,1e4),r=P(l);if(r.noDb){J.value=r;return}ne.value=$e(l)}catch(l){k.error(e("reputation.messages.loadScoresFailed",{err:l?.message||l}))}}async function He(){if(!g.did.trim()){k.warning(e("reputation.messages.didRequired"));return}if(g.score<0||g.score>1){k.warning(e("reputation.messages.scoreRange"));return}ee.value=!0;try{const l=[`reputation observe "${g.did.trim().replace(/"/g,'\\"')}"`,String(g.score),`-k ${g.kind}`,`-w ${g.weight}`,"--json"],{output:r}=await i.execute(l.join(" "),1e4);if(P(r).noDb){k.error(e("reputation.messages.needInit"));return}if(!/"did"/.test(r)){k.error(e("reputation.messages.observeFailed",{err:r.slice(0,120)}));return}k.success(e("reputation.messages.observeOk")),K.value=!1,Se(),await q()}catch(l){k.error(e("reputation.messages.observeFailed",{err:l?.message||l}))}finally{ee.value=!1}}async function Ze(){te.value=!0;try{const l=["reputation optimize",`-o ${M.objective}`,`-i ${M.iterations}`,"--json"],{output:r}=await i.execute(l.join(" "),6e4);if(P(r).noDb){k.error(e("reputation.messages.needInit"));return}const C=wt(r);if(!C){k.error(e("reputation.messages.optimizeFailed",{err:r.slice(0,120)}));return}W.value=!1,k.success(e("reputation.messages.optimizeOk",{score:C.bestScore.toFixed(4)})),await q(),b.value=C,Y.value=!0,await he()}catch(l){k.error(e("reputation.messages.optimizeFailed",{err:l?.message||l}))}finally{te.value=!1}}async function Qe(l){gt.confirm({title:e("reputation.applyConfirm.title"),content:e("reputation.applyConfirm.content",{runId:l.runId.slice(0,12)}),okText:e("reputation.applyConfirm.ok"),cancelText:e("reputation.applyConfirm.cancel"),onOk:async()=>{try{const{output:r}=await i.execute(`reputation apply ${l.runId}`,8e3);if(P(r).noDb){k.error(e("reputation.messages.needInit"));return}if(/Failed|Error/i.test(r)&&!/Applied/i.test(r)){k.error(e("reputation.messages.applyFailed",{err:r.slice(0,120)}));return}k.success(e("reputation.messages.applyOk")),await q()}catch(r){k.error(e("reputation.messages.applyFailed",{err:r?.message||r}))}}})}async function Xe(l){b.value=l,w.value=null,Y.value=!0,await he()}async function he(){if(b.value){oe.value=!0;try{const{output:l}=await i.execute(`reputation analytics ${b.value.runId} --json`,8e3);if(P(l).noDb)return;w.value=At(l)}catch{}finally{oe.value=!1}}}function et(){A.value=null,re.value=!0}async function tt(){ae.value=!0;try{const l=["reputation anomalies",`-m ${F.method}`,`-t ${F.threshold}`,`-d ${F.decay}`,"--json"],{output:r}=await i.execute(l.join(" "),1e4);if(P(r).noDb){k.error(e("reputation.messages.needInit"));return}A.value=Ot(r)}catch(l){k.error(e("reputation.messages.detectFailed",{err:l?.message||l}))}finally{ae.value=!1}}function Se(){g.did="",g.score=.8,g.kind="generic",g.weight=1}return xt(q),(l,r)=>{const p=d("a-button"),C=d("a-space"),N=d("a-alert"),$=d("a-statistic"),I=d("a-card"),D=d("a-col"),ce=d("a-row"),ze=d("a-radio-button"),Oe=d("a-radio-group"),H=d("a-progress"),je=d("a-table"),pe=d("a-tab-pane"),U=d("a-tag"),at=d("a-tabs"),ot=d("a-input"),R=d("a-form-item"),Z=d("a-input-number"),de=d("a-select-option"),me=d("a-select"),fe=d("a-form"),Q=d("a-modal"),nt=d("a-divider"),rt=d("a-empty"),we=d("a-list-item"),Ae=d("a-list"),E=d("a-descriptions-item"),lt=d("a-descriptions"),st=d("a-spin");return c(),m("div",null,[_("div",Rt,[_("div",null,[_("h2",Ft,u(n(e)("reputation.title")),1),_("p",It,u(n(e)("reputation.subtitle")),1)]),t(C,null,{default:o(()=>[t(p,{loading:j.value,onClick:q},{icon:o(()=>[t(n(dt))]),default:o(()=>[f(" "+u(n(e)("reputation.refresh")),1)]),_:1},8,["loading"]),t(p,{onClick:et},{icon:o(()=>[t(n(Ce))]),default:o(()=>[f(" "+u(n(e)("reputation.actions.anomalies")),1)]),_:1}),t(p,{type:"primary",onClick:r[0]||(r[0]=a=>W.value=!0)},{icon:o(()=>[t(n(mt))]),default:o(()=>[f(" "+u(n(e)("reputation.actions.optimize")),1)]),_:1})]),_:1})]),J.value.noDb?(c(),S(N,{key:0,type:"info","show-icon":"",message:n(e)("reputation.noDb.message"),description:n(e)("reputation.noDb.description"),style:{"margin-bottom":"16px"}},null,8,["message","description"])):y("",!0),t(ce,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:o(()=>[t(D,{xs:12,sm:8,lg:5},{default:o(()=>[t(I,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[t($,{title:n(e)("reputation.stats.trackedDids"),value:O.value.observations.totalDids,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:o(()=>[t(n(De))]),_:1},8,["title","value"])]),_:1})]),_:1}),t(D,{xs:12,sm:8,lg:5},{default:o(()=>[t(I,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[t($,{title:n(e)("reputation.stats.totalObservations"),value:O.value.observations.totalObservations,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:o(()=>[t(n(ft))]),_:1},8,["title","value"])]),_:1})]),_:1}),t(D,{xs:12,sm:8,lg:5},{default:o(()=>[t(I,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[t($,{title:n(e)("reputation.stats.optimizationRuns"),value:O.value.totalRuns,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:o(()=>[t(n(Re))]),_:1},8,["title","value"])]),_:1})]),_:1}),t(D,{xs:12,sm:8,lg:5},{default:o(()=>[t(I,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[t($,{title:n(e)("reputation.stats.active"),value:O.value.activeRuns,"value-style":{color:O.value.activeRuns>0?"#1677ff":"#888",fontSize:"20px"},suffix:`/ ${O.value.maxConcurrentOptimizations}`},{prefix:o(()=>[t(n(yt))]),_:1},8,["title","value","value-style","suffix"])]),_:1})]),_:1}),t(D,{xs:24,sm:8,lg:4},{default:o(()=>[t(I,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[t($,{title:n(e)("reputation.stats.bestEver"),value:O.value.bestScoreEver,precision:3,"value-style":{color:"#52c41a",fontSize:"20px"}},{prefix:o(()=>[t(n(vt))]),_:1},8,["title","value"])]),_:1})]),_:1})]),_:1}),t(at,{activeKey:ge.value,"onUpdate:activeKey":r[3]||(r[3]=a=>ge.value=a),class:"reputation-tabs"},{default:o(()=>[t(pe,{key:"scores",tab:n(e)("reputation.tabs.scores")},{default:o(()=>[_("div",Tt,[_("span",$t,u(n(e)("reputation.filter.decayLabel")),1),t(Oe,{value:V.value,"onUpdate:value":r[1]||(r[1]=a=>V.value=a),size:"small","button-style":"solid",onChange:Ge},{default:o(()=>[(c(!0),m(T,null,L(n(Te),a=>(c(),S(ze,{key:a,value:a},{default:o(()=>[f(u(xe(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),t(p,{size:"small",onClick:r[2]||(r[2]=a=>K.value=!0)},{icon:o(()=>[t(n(bt))]),default:o(()=>[f(" "+u(n(e)("reputation.filter.addObservation")),1)]),_:1})]),t(je,{columns:Ue.value,"data-source":ne.value,pagination:{pageSize:20,showTotal:a=>n(e)("reputation.totals.dids",{count:a})},size:"small",loading:j.value,style:{background:"var(--bg-card)"}},{bodyCell:o(({column:a,record:x,index:X})=>[a.key==="rank"?(c(),m("span",{key:0,class:kt(["rank-pill",Ke(X)])},u(X+1),3)):y("",!0),a.key==="did"?(c(),m("span",Et,u(x.did),1)):y("",!0),a.key==="score"?(c(),S(H,{key:2,percent:Math.round(x.score*100),"stroke-color":ue(x.score),size:"small",format:()=>x.score.toFixed(4)},null,8,["percent","stroke-color","format"])):y("",!0),a.key==="observations"?(c(),m("span",Lt,u(x.observations),1)):y("",!0),a.key==="weightTotal"?(c(),m("span",Mt,u(x.weightTotal.toFixed(2)),1)):y("",!0)]),emptyText:o(()=>[_("div",Nt,[t(n(De),{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),f(" "+u(n(e)("reputation.empty.scores")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),t(pe,{key:"runs",tab:n(e)("reputation.tabs.runs")},{default:o(()=>[t(je,{columns:Pe.value,"data-source":_e.value,pagination:{pageSize:20,showTotal:a=>n(e)("reputation.totals.rows",{count:a})},size:"small",loading:j.value,style:{background:"var(--bg-card)"}},{bodyCell:o(({column:a,record:x})=>[a.key==="runId"?(c(),m("span",Ut,u(x.runId.slice(0,12)),1)):y("",!0),a.key==="objective"?(c(),S(U,{key:1,color:le(x.objective),style:{"font-family":"monospace"}},{default:o(()=>[f(u(G(x.objective)),1)]),_:2},1032,["color"])):y("",!0),a.key==="iterations"?(c(),m("span",Pt,u(x.iterations),1)):y("",!0),a.key==="bestScore"?(c(),m("span",{key:3,style:Fe({color:ue(x.bestScore),fontWeight:500,fontFamily:"monospace"})},u(x.bestScore.toFixed(4)),5)):y("",!0),a.key==="status"?(c(),S(U,{key:4,color:ie(x.status)},{default:o(()=>[f(u(se(x.status)),1)]),_:2},1032,["color"])):y("",!0),a.key==="createdAt"?(c(),m("span",Bt,u(n(ve)(x.createdAt)),1)):y("",!0),a.key==="action"?(c(),m(T,{key:6},[t(p,{size:"small",type:"link",onClick:X=>Xe(x)},{default:o(()=>[f(u(n(e)("reputation.rowActions.analyze")),1)]),_:1},8,["onClick"]),x.status==="complete"?(c(),S(p,{key:0,size:"small",type:"link",style:{color:"#52c41a"},onClick:X=>Qe(x)},{default:o(()=>[f(u(n(e)("reputation.rowActions.apply")),1)]),_:1},8,["onClick"])):y("",!0)],64)):y("",!0)]),emptyText:o(()=>[_("div",qt,[t(n(Re),{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),f(" "+u(n(e)("reputation.empty.runs")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"]),t(pe,{key:"breakdown",tab:n(e)("reputation.tabs.breakdown")},{default:o(()=>[t(ce,{gutter:[16,16]},{default:o(()=>[t(D,{xs:24,lg:12},{default:o(()=>[t(I,{title:n(e)("reputation.breakdown.byStatus"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[(c(!0),m(T,null,L(n(Le),a=>(c(),m("div",{key:a,class:"bd-row"},[t(U,{color:ie(a),style:{"min-width":"80px","text-align":"center"}},{default:o(()=>[f(u(se(a)),1)]),_:2},1032,["color"]),t(H,{percent:ke(O.value.byStatus[a]||0,O.value.totalRuns),"stroke-color":Ve(a),format:()=>`${O.value.byStatus[a]||0}`,size:"small",style:{flex:"1","margin-left":"12px"}},null,8,["percent","stroke-color","format"])]))),128))]),_:1},8,["title"])]),_:1}),t(D,{xs:24,lg:12},{default:o(()=>[t(I,{title:n(e)("reputation.breakdown.byObjective"),size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[(c(!0),m(T,null,L(n(be),a=>(c(),m("div",{key:a,class:"bd-row"},[t(U,{color:le(a),style:{"min-width":"100px","text-align":"center","font-family":"monospace"}},{default:o(()=>[f(u(G(a)),1)]),_:2},1032,["color"]),t(H,{percent:ke(O.value.byObjective[a]||0,O.value.totalRuns),"stroke-color":qe(a),format:()=>`${O.value.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"]),t(Q,{open:K.value,"onUpdate:open":r[8]||(r[8]=a=>K.value=a),title:n(e)("reputation.observe.title"),"confirm-loading":ee.value,width:540,"ok-text":n(e)("reputation.observe.ok"),"cancel-text":n(e)("common.cancel"),onOk:He,onCancel:Se},{default:o(()=>[t(fe,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:o(()=>[t(R,{label:n(e)("reputation.observe.didLabel"),required:""},{default:o(()=>[t(ot,{value:g.did,"onUpdate:value":r[4]||(r[4]=a=>g.did=a),placeholder:n(e)("reputation.observe.didPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),t(R,{label:n(e)("reputation.observe.scoreLabel"),required:""},{default:o(()=>[t(Z,{value:g.score,"onUpdate:value":r[5]||(r[5]=a=>g.score=a),min:0,max:1,step:.05,style:{width:"160px"}},null,8,["value"]),_("span",Jt,u(n(e)("reputation.observe.scoreRange")),1)]),_:1},8,["label"]),t(R,{label:n(e)("reputation.observe.kindLabel")},{default:o(()=>[t(me,{value:g.kind,"onUpdate:value":r[6]||(r[6]=a=>g.kind=a)},{default:o(()=>[(c(!0),m(T,null,L(n(St),a=>(c(),S(de,{key:a,value:a},{default:o(()=>[f(u(Be(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),t(R,{label:n(e)("reputation.observe.weightLabel")},{default:o(()=>[t(Z,{value:g.weight,"onUpdate:value":r[7]||(r[7]=a=>g.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"]),t(Q,{open:W.value,"onUpdate:open":r[11]||(r[11]=a=>W.value=a),title:n(e)("reputation.optimize.title"),"confirm-loading":te.value,width:540,"ok-text":n(e)("reputation.optimize.ok"),"cancel-text":n(e)("common.cancel"),onOk:Ze},{default:o(()=>[t(fe,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:o(()=>[t(R,{label:n(e)("reputation.optimize.objectiveLabel"),required:""},{default:o(()=>[t(me,{value:M.objective,"onUpdate:value":r[9]||(r[9]=a=>M.objective=a)},{default:o(()=>[(c(!0),m(T,null,L(n(be),a=>(c(),S(de,{key:a,value:a},{default:o(()=>[f(u(G(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),_("div",Vt,u(Je(M.objective)),1)]),_:1},8,["label"]),t(R,{label:n(e)("reputation.optimize.iterationsLabel")},{default:o(()=>[t(Z,{value:M.iterations,"onUpdate:value":r[10]||(r[10]=a=>M.iterations=a),min:1,max:1e3,step:10,style:{width:"160px"}},null,8,["value"]),_("span",Kt,u(n(e)("reputation.optimize.iterationsRange")),1)]),_:1},8,["label"])]),_:1}),t(N,{type:"info","show-icon":"",message:n(e)("reputation.optimize.syncMessage"),description:n(e)("reputation.optimize.syncDescription"),style:{"margin-top":"12px"}},null,8,["message","description"])]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"]),t(Q,{open:re.value,"onUpdate:open":r[15]||(r[15]=a=>re.value=a),title:n(e)("reputation.anomaly.title"),width:640,footer:null},{default:o(()=>[_("div",Wt,[t(fe,{"label-col":{span:5},"wrapper-col":{span:19}},{default:o(()=>[t(R,{label:n(e)("reputation.anomaly.methodLabel")},{default:o(()=>[t(Oe,{value:F.method,"onUpdate:value":r[12]||(r[12]=a=>F.method=a),"button-style":"solid"},{default:o(()=>[(c(!0),m(T,null,L(n(ht),a=>(c(),S(ze,{key:a,value:a},{default:o(()=>[f(u(a==="z_score"?n(e)("reputation.anomaly.zScoreLabel"):n(e)("reputation.anomaly.iqrLabel")),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),t(R,{label:n(e)("reputation.anomaly.thresholdLabel")},{default:o(()=>[t(Z,{value:F.threshold,"onUpdate:value":r[13]||(r[13]=a=>F.threshold=a),min:.5,step:.1,style:{width:"120px"}},null,8,["value"]),_("span",Yt,u(n(e)("reputation.anomaly.thresholdHint")),1)]),_:1},8,["label"]),t(R,{label:n(e)("reputation.anomaly.decayLabel")},{default:o(()=>[t(me,{value:F.decay,"onUpdate:value":r[14]||(r[14]=a=>F.decay=a),style:{width:"200px"}},{default:o(()=>[(c(!0),m(T,null,L(n(Te),a=>(c(),S(de,{key:a,value:a},{default:o(()=>[f(u(xe(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1},8,["label"]),t(R,{"wrapper-col":{offset:5,span:19}},{default:o(()=>[t(p,{type:"primary",loading:ae.value,onClick:tt},{icon:o(()=>[t(n(Ce))]),default:o(()=>[f(" "+u(n(e)("reputation.anomaly.start")),1)]),_:1},8,["loading"])]),_:1})]),_:1}),t(nt),A.value?(c(),m("div",Gt,[t(ce,{gutter:12,style:{"margin-bottom":"12px"}},{default:o(()=>[t(D,{span:8},{default:o(()=>[t($,{title:n(e)("reputation.anomaly.totalSamples"),value:A.value.totalSamples,"value-style":{fontSize:"16px"}},null,8,["title","value"])]),_:1}),t(D,{span:8},{default:o(()=>[t($,{title:n(e)("reputation.anomaly.threshold"),value:A.value.threshold,precision:2,"value-style":{fontSize:"16px"}},null,8,["title","value"])]),_:1}),t(D,{span:8},{default:o(()=>[t($,{title:n(e)("reputation.anomaly.anomalies"),value:A.value.anomalies.length,"value-style":{color:A.value.anomalies.length>0?"#ff4d4f":"#52c41a",fontSize:"16px"}},null,8,["title","value","value-style"])]),_:1})]),_:1}),A.value.message?(c(),S(N,{key:0,message:A.value.message,type:"warning","show-icon":"",style:{"margin-bottom":"12px"}},null,8,["message"])):y("",!0),A.value.anomalies.length?(c(),S(Ae,{key:1,size:"small","data-source":A.value.anomalies},{renderItem:o(({item:a})=>[t(we,null,{default:o(()=>[_("span",Ht,u(a.did),1),t(U,{color:"red",style:{"margin-left":"8px"}},{default:o(()=>[f(u(n(e)("reputation.anomaly.scoreTag",{score:a.score.toFixed(4)})),1)]),_:2},1024),_("span",Zt,u(a.reason),1),a.zScore!==null?(c(),m("span",Qt,u(n(e)("reputation.anomaly.zNote",{value:a.zScore.toFixed(2)})),1)):y("",!0)]),_:2},1024)]),_:1},8,["data-source"])):y("",!0)])):(c(),S(rt,{key:0,description:n(e)("reputation.anomaly.notDetected"),image:n(v)},null,8,["description","image"]))])]),_:1},8,["open","title"]),t(Q,{open:Y.value,"onUpdate:open":r[16]||(r[16]=a=>Y.value=a),title:n(e)("reputation.analytics.title",{runId:b.value?.runId?.slice(0,12)||""}),width:780,footer:null},{default:o(()=>[b.value?(c(),m("div",Xt,[t(lt,{column:2,size:"small",bordered:""},{default:o(()=>[t(E,{label:n(e)("reputation.analytics.objective")},{default:o(()=>[t(U,{color:le(b.value.objective)},{default:o(()=>[f(u(G(b.value.objective)),1)]),_:1},8,["color"])]),_:1},8,["label"]),t(E,{label:n(e)("reputation.analytics.status")},{default:o(()=>[t(U,{color:ie(b.value.status)},{default:o(()=>[f(u(se(b.value.status)),1)]),_:1},8,["color"])]),_:1},8,["label"]),t(E,{label:n(e)("reputation.analytics.iterations")},{default:o(()=>[f(u(b.value.iterations),1)]),_:1},8,["label"]),t(E,{label:n(e)("reputation.analytics.bestScore")},{default:o(()=>[_("span",{style:Fe({color:ue(b.value.bestScore),fontWeight:500,fontFamily:"monospace"})},u(b.value.bestScore.toFixed(4)),5)]),_:1},8,["label"]),t(E,{label:n(e)("reputation.analytics.createdAt")},{default:o(()=>[f(u(n(ve)(b.value.createdAt)),1)]),_:1},8,["label"]),b.value.completedAt?(c(),S(E,{key:0,label:n(e)("reputation.analytics.completedAt")},{default:o(()=>[f(u(n(ve)(b.value.completedAt)),1)]),_:1},8,["label"])):y("",!0),b.value.bestParams?(c(),S(E,{key:1,label:n(e)("reputation.analytics.bestParams"),span:2},{default:o(()=>[_("pre",ea,u(Ye(b.value.bestParams)),1)]),_:1},8,["label"])):y("",!0),b.value.errorMessage?(c(),S(E,{key:2,label:n(e)("reputation.analytics.errorMessage"),span:2},{default:o(()=>[_("span",ta,u(b.value.errorMessage),1)]),_:1},8,["label"])):y("",!0)]),_:1}),t(st,{spinning:oe.value},{default:o(()=>[w.value?(c(),m("div",aa,[_("h4",oa,u(n(e)("reputation.analytics.distributionTitle")),1),t(I,{size:"small",style:{"margin-bottom":"12px"}},{default:o(()=>[(c(!0),m(T,null,L(w.value.reputationDistribution.buckets,a=>(c(),m("div",{key:a.label,class:"bucket-row"},[_("span",na,u(a.label),1),t(H,{percent:We(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)),w.value.reputationDistribution.mean!==null?(c(),m("div",ra,[f(u(n(e)("reputation.analytics.mean",{value:w.value.reputationDistribution.mean.toFixed(4)}))+" ",1),w.value.reputationDistribution.stdDev!==null?(c(),m("span",la,u(n(e)("reputation.analytics.stdDev",{value:w.value.reputationDistribution.stdDev.toFixed(4)})),1)):y("",!0)])):y("",!0)]),_:1}),w.value.recommendations.length?(c(),S(I,{key:0,title:n(e)("reputation.analytics.recommendations"),size:"small"},{default:o(()=>[t(Ae,{size:"small","data-source":w.value.recommendations},{renderItem:o(({item:a})=>[t(we,null,{default:o(()=>[t(n(_t),{style:{color:"#faad14","margin-right":"8px"}}),f(" "+u(a),1)]),_:2},1024)]),_:1},8,["data-source"])]),_:1},8,["title"])):y("",!0)])):y("",!0)]),_:1},8,["spinning"])])):y("",!0)]),_:1},8,["open","title"])])}}},Ia=it(sa,[["__scopeId","data-v-9561b6cc"]]);export{Ia as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{p as z,e as S,f as $,$ as f,h as N}from"./index-
|
|
1
|
+
import{p as z,e as S,f as $,$ as f,h as N}from"./index-BPtmPFwc.js";import{u as _,r as u}from"./responsiveObserve-Dva2arKe.js";import{u as E}from"./useFlexGapSupport-z-vK8Wcv.js";import{u as F,a as I}from"./index-DVvcsuh0.js";import{d as M,o as T,e as V,c as D,r as h,f as o}from"./vendor-Ci2pTZ_t.js";const J=()=>({align:f([String,Object]),justify:f([String,Object]),prefixCls:String,gutter:f([Number,Array,Object],0),wrap:{type:Boolean,default:void 0}}),P=M({compatConfig:{MODE:3},name:"ARow",inheritAttrs:!1,props:J(),setup(s,G){let{slots:d,attrs:l}=G;const{prefixCls:a,direction:R}=z("row",s),[O,C]=F(a);let m;const v=_(),p=h({xs:!0,sm:!0,md:!0,lg:!0,xl:!0,xxl:!0}),y=h({xs:!1,sm:!1,md:!1,lg:!1,xl:!1,xxl:!1}),g=e=>o(()=>{if(typeof s[e]=="string")return s[e];if(typeof s[e]!="object")return"";for(let t=0;t<u.length;t++){const n=u[t];if(!y.value[n])continue;const r=s[e][n];if(r!==void 0)return r}return""}),b=g("align"),x=g("justify"),w=E();T(()=>{m=v.value.subscribe(e=>{y.value=e;const t=s.gutter||0;(!Array.isArray(t)&&typeof t=="object"||Array.isArray(t)&&(typeof t[0]=="object"||typeof t[1]=="object"))&&(p.value=e)})}),V(()=>{v.value.unsubscribe(m)});const A=o(()=>{const e=[void 0,void 0],{gutter:t=0}=s;return(Array.isArray(t)?t:[t,void 0]).forEach((r,j)=>{if(typeof r=="object")for(let i=0;i<u.length;i++){const c=u[i];if(p.value[c]&&r[c]!==void 0){e[j]=r[c];break}}else e[j]=r}),e});I({gutter:A,supportFlexGap:w,wrap:o(()=>s.wrap)});const k=o(()=>N(a.value,{[`${a.value}-no-wrap`]:s.wrap===!1,[`${a.value}-${x.value}`]:x.value,[`${a.value}-${b.value}`]:b.value,[`${a.value}-rtl`]:R.value==="rtl"},l.class,C.value)),B=o(()=>{const e=A.value,t={},n=e[0]!=null&&e[0]>0?`${e[0]/-2}px`:void 0,r=e[1]!=null&&e[1]>0?`${e[1]/-2}px`:void 0;return n&&(t.marginLeft=n,t.marginRight=n),w.value?t.rowGap=`${e[1]}px`:r&&(t.marginTop=r,t.marginBottom=r),t});return()=>{var e;return O(D("div",S(S({},l),{},{class:k.value,style:$($({},B.value),l.style)}),[(e=d.default)===null||e===void 0?void 0:e.call(d)]))}}});export{P as A};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{o as ce,M as p,R as m,c as l,N as s,Q as x,u as _,O as y,K as u,r as g,L as r,F,Y as M,P as v,S as k,a1 as pe,f as me}from"./vendor-Ci2pTZ_t.js";import{_ as ye,u as fe,d as c}from"./index-
|
|
1
|
+
import{o as ce,M as p,R as m,c as l,N as s,Q as x,u as _,O as y,K as u,r as g,L as r,F,Y as M,P as v,S as k,a1 as pe,f as me}from"./vendor-Ci2pTZ_t.js";import{_ as ye,u as fe,d as c}from"./index-BPtmPFwc.js";import{a8 as D,ap as ve,R as W,ay as H,aF as _e}from"./icons-B2G69bhT.js";const ge={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},xe={key:0,style:{"text-align":"center",padding:"60px"}},ke={style:{display:"flex","align-items":"center",gap:"6px",overflow:"hidden"}},he={style:{color:"#e0e0e0","font-size":"13px",overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"}},we={style:{color:"var(--text-muted)","font-size":"11px","margin-bottom":"6px",overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"}},be={style:{display:"flex","justify-content":"space-between",color:"var(--text-secondary)","font-size":"12px"}},Ce={key:2,style:{"text-align":"center",padding:"40px",color:"var(--text-muted)","margin-bottom":"24px"}},Ae={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"12px"}},Fe={key:3,style:{"text-align":"center",padding:"60px"}},Se=["href"],ze={key:1,style:{color:"#e0e0e0","font-weight":"500"}},Re={key:2,style:{color:"var(--text-secondary)","font-size":"12px"}},Ue={key:1,style:{color:"var(--text-muted)","font-size":"12px"}},$e={style:{padding:"8px 16px",color:"var(--text-secondary)","font-size":"13px","line-height":"1.8","max-height":"300px","overflow-y":"auto"}},Ne={key:0,style:{"margin-bottom":"8px"}},Le=["innerHTML"],Te={key:2,style:{color:"var(--text-muted)"}},Oe={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},je={__name:"RssFeed",setup(Me){const h=fe(),N=g(!1),S=g(!1),L=g(!1),T=g(!1),w=g([]),C=g([]),z=g(""),R=g(!1),U=g(""),O=g([]),J=me(()=>{const t=w.value.length,e=C.value.length,n=C.value.filter(d=>!d.read).length,o=w.value.filter(d=>d.lastUpdated).sort((d,$)=>new Date($.lastUpdated)-new Date(d.lastUpdated))[0],i=o?j(o.lastUpdated):"-";return[{label:"订阅源数",value:t,color:"#1677ff"},{label:"文章总数",value:e,color:"#52c41a"},{label:"未读文章",value:n,color:"#faad14"},{label:"最近刷新",value:i,color:"#13c2c2"}]}),q=[{title:"标题",key:"title",dataIndex:"title",ellipsis:!0},{title:"来源",key:"source",dataIndex:"source",width:"140px"},{title:"发布时间",key:"publishedAt",dataIndex:"publishedAt",width:"160px"},{title:"状态",key:"status",width:"80px"},{title:"操作",key:"actions",width:"100px"}];function j(t){if(!t)return"-";try{const e=new Date(t);return isNaN(e.getTime())?t:e.toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"})}catch{return t}}function I(t){try{const e=t.match(/(\[[\s\S]*\]|\{[\s\S]*\})/);if(e)return JSON.parse(e[1])}catch{}return null}async function A(){N.value=!0;try{const{output:t}=await h.execute("rss list --json",2e4),e=I(t);Array.isArray(e)?w.value=e.map((n,o)=>({key:n.id||n.url||o,id:n.id||String(o),title:n.title||n.name||"",url:n.url||n.feedUrl||"",itemCount:n.itemCount??n.articleCount??n.count??0,lastUpdated:n.lastUpdated||n.updatedAt||n.lastRefresh||""})):w.value=Q(t)}catch(t){c.error("加载订阅源失败: "+t.message)}finally{N.value=!1}}function Q(t){const e=[],n=t.split(`
|
|
2
2
|
`);for(const o of n){const i=o.trim();if(!i||i.startsWith("─")||i.match(/^\d+ feed/i)||i.startsWith("RSS")||i.startsWith("No "))continue;const d=i.match(/^(\d+)\.\s+(.+?)(?:\s+[-–]\s+(.+))?$/);d?e.push({key:d[1],id:d[1],title:d[2].trim(),url:(d[3]||"").trim(),itemCount:0,lastUpdated:""}):i.length>5&&e.push({key:String(e.length),id:String(e.length),title:i.slice(0,80),url:"",itemCount:0,lastUpdated:""})}return e}async function b(){S.value=!0,O.value=[];try{let t="rss articles --limit 30 --json";z.value&&(t=`rss articles --feed ${z.value} --limit 30 --json`);const{output:e}=await h.execute(t,2e4),n=I(e);Array.isArray(n)?C.value=n.map((o,i)=>({key:o.id||String(i),id:o.id||String(i),title:o.title||"无标题",link:o.link||o.url||"",source:o.source||o.feedTitle||o.feedName||"",publishedAt:o.publishedAt||o.pubDate||o.date||"",read:!!o.read,summary:o.summary||o.description||"",content:o.content||""})):C.value=Y(e)}catch(t){c.error("加载文章失败: "+t.message)}finally{S.value=!1}}function Y(t){const e=[],n=t.split(`
|
|
3
3
|
`);for(const o of n){const i=o.trim();if(!i||i.startsWith("─")||i.match(/^\d+ article/i)||i.startsWith("No "))continue;const d=i.match(/^(\d+)\.\s+(.+?)(?:\s+[-–]\s+(.+))?$/);d&&e.push({key:d[1],id:d[1],title:d[2].trim(),link:"",source:(d[3]||"").trim(),publishedAt:"",read:!1,summary:"",content:""})}return e}async function G(){const t=U.value.trim();if(!t){c.warning("请输入订阅源地址");return}T.value=!0;try{const{output:e}=await h.execute(`rss add "${t}"`,3e4);e.includes("error")||e.includes("失败")||e.includes("Error")?c.error("添加失败: "+e.slice(0,120)):(c.success("订阅源已添加"),R.value=!1,U.value="",await A(),await b())}catch(e){c.error("添加失败: "+e.message)}finally{T.value=!1}}async function X(t){try{c.loading({content:`正在刷新 ${t.title||t.id}...`,key:"refreshFeed"}),await h.execute(`rss refresh ${t.id}`,3e4),c.success({content:"刷新完成",key:"refreshFeed"}),await A(),await b()}catch(e){c.error({content:"刷新失败: "+e.message,key:"refreshFeed"})}}async function Z(t){try{c.loading({content:`正在删除 ${t.title||t.id}...`,key:"removeFeed"});const{output:e}=await h.execute(`rss remove ${t.id}`,2e4);e.includes("error")||e.includes("失败")?c.error({content:"删除失败: "+e.slice(0,120),key:"removeFeed"}):(c.success({content:"已删除订阅源",key:"removeFeed"}),await A(),await b())}catch(e){c.error({content:"删除失败: "+e.message,key:"removeFeed"})}}async function ee(){L.value=!0;try{c.loading({content:"正在刷新所有订阅源...",key:"refreshAll"}),await h.execute("rss refresh-all",6e4),c.success({content:"全部刷新完成",key:"refreshAll"}),await A(),await b()}catch(t){c.error({content:"刷新失败: "+t.message,key:"refreshAll"})}finally{L.value=!1}}async function te(t){try{await h.execute(`rss mark-read ${t.id}`,1e4),t.read=!0,c.success("已标记已读")}catch(e){c.error("操作失败: "+e.message)}}function ae(t,e){O.value=t?[e.key]:[]}return ce(async()=>{await A(),await b()}),(t,e)=>{const n=u("a-button"),o=u("a-space"),i=u("a-statistic"),d=u("a-card"),$=u("a-col"),B=u("a-row"),E=u("a-spin"),V=u("a-menu-item"),se=u("a-menu"),le=u("a-dropdown"),K=u("a-select-option"),ne=u("a-select"),P=u("a-tag"),oe=u("a-table"),re=u("a-input"),ie=u("a-form-item"),de=u("a-form"),ue=u("a-modal");return r(),p("div",null,[m("div",ge,[e[6]||(e[6]=m("div",null,[m("h2",{class:"page-title"},"RSS 订阅"),m("p",{class:"page-sub"},"订阅源 / 文章阅读")],-1)),l(o,null,{default:s(()=>[l(n,{type:"primary",onClick:e[0]||(e[0]=a=>R.value=!0)},{icon:s(()=>[l(_(ve))]),default:s(()=>[e[4]||(e[4]=y(" 添加订阅 ",-1))]),_:1}),l(n,{ghost:"",loading:L.value,onClick:ee},{icon:s(()=>[l(_(W))]),default:s(()=>[e[5]||(e[5]=y(" 全部刷新 ",-1))]),_:1},8,["loading"])]),_:1})]),l(B,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:s(()=>[(r(!0),p(F,null,M(J.value,a=>(r(),x($,{xs:12,sm:6,key:a.label},{default:s(()=>[l(d,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"},size:"small"},{default:s(()=>[l(i,{title:a.label,value:a.value,"value-style":{color:a.color,fontSize:"20px"}},null,8,["title","value","value-style"])]),_:2},1024)]),_:2},1024))),128))]),_:1}),e[16]||(e[16]=m("h3",{style:{color:"var(--text-primary)","margin-bottom":"12px"}},"订阅源管理",-1)),N.value?(r(),p("div",xe,[l(E,{size:"large"})])):w.value.length>0?(r(),x(B,{key:1,gutter:[16,16],style:{"margin-bottom":"24px"}},{default:s(()=>[(r(!0),p(F,null,M(w.value,a=>(r(),x($,{xs:24,sm:12,md:8,lg:6,key:a.id||a.url},{default:s(()=>[l(d,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"},size:"small",hoverable:!0},{title:s(()=>[m("div",ke,[l(_(D),{style:{color:"#1677ff","flex-shrink":"0"}}),m("span",he,v(a.title||"未命名订阅"),1)])]),extra:s(()=>[l(le,null,{overlay:s(()=>[l(se,null,{default:s(()=>[l(V,{onClick:f=>X(a)},{default:s(()=>[l(_(W)),e[8]||(e[8]=y(" 刷新 ",-1))]),_:1},8,["onClick"]),l(V,{onClick:f=>Z(a),danger:""},{default:s(()=>[l(_(_e)),e[9]||(e[9]=y(" 删除 ",-1))]),_:1},8,["onClick"])]),_:2},1024)]),default:s(()=>[l(n,{size:"small",type:"text",style:{color:"var(--text-muted)"}},{default:s(()=>[...e[7]||(e[7]=[y("...",-1)])]),_:1})]),_:2},1024)]),default:s(()=>[m("p",we,[l(_(H)),y(" "+v(a.url||"-"),1)]),m("div",be,[m("span",null,v(a.itemCount??"-")+" 篇文章",1),m("span",null,v(j(a.lastUpdated)),1)])]),_:2},1024)]),_:2},1024))),128))]),_:1})):(r(),p("div",Ce,[l(_(D),{style:{"font-size":"40px","margin-bottom":"12px",display:"block"}}),e[10]||(e[10]=y(' 暂无订阅源,点击"添加订阅"开始 ',-1))])),m("div",Ae,[e[12]||(e[12]=m("h3",{style:{color:"var(--text-primary)",margin:"0"}},"文章列表",-1)),l(o,null,{default:s(()=>[l(ne,{value:z.value,"onUpdate:value":e[1]||(e[1]=a=>z.value=a),style:{"min-width":"180px"},placeholder:"筛选订阅源","allow-clear":"",onChange:b},{default:s(()=>[l(K,{value:""},{default:s(()=>[...e[11]||(e[11]=[y("全部订阅",-1)])]),_:1}),(r(!0),p(F,null,M(w.value,a=>(r(),x(K,{key:a.id,value:a.id},{default:s(()=>[y(v(a.title||a.url),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),l(n,{loading:S.value,onClick:b},{icon:s(()=>[l(_(W))]),_:1},8,["loading"])]),_:1})]),S.value?(r(),p("div",Fe,[l(E,{size:"large"})])):(r(),x(oe,{key:4,columns:q,"data-source":C.value,pagination:{pageSize:20,showTotal:a=>`共 ${a} 条`},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"rss-row",expandable:{expandedRowKeys:O.value,onExpand:ae}},{bodyCell:s(({column:a,record:f})=>[a.key==="title"?(r(),p(F,{key:0},[f.link?(r(),p("a",{key:0,href:f.link,target:"_blank",rel:"noopener noreferrer",style:{color:"#1677ff","font-weight":"500"}},[l(_(H),{style:{"margin-right":"4px"}}),y(v(f.title),1)],8,Se)):(r(),p("span",ze,v(f.title),1))],64)):k("",!0),a.key==="source"?(r(),x(P,{key:1,color:"blue",style:{"font-size":"10px"}},{default:s(()=>[y(v(f.source||"-"),1)]),_:2},1024)):k("",!0),a.key==="publishedAt"?(r(),p("span",Re,v(j(f.publishedAt)),1)):k("",!0),a.key==="status"?(r(),x(P,{key:3,color:f.read?"default":"green"},{default:s(()=>[y(v(f.read?"已读":"未读"),1)]),_:2},1032,["color"])):k("",!0),a.key==="actions"?(r(),p(F,{key:4},[f.read?(r(),p("span",Ue,"--")):(r(),x(n,{key:0,size:"small",type:"link",onClick:pe(De=>te(f),["stop"])},{default:s(()=>[...e[13]||(e[13]=[y(" 标记已读 ",-1)])]),_:1},8,["onClick"]))],64)):k("",!0)]),expandedRowRender:s(({record:a})=>[m("div",$e,[a.summary?(r(),p("div",Ne,[e[14]||(e[14]=m("strong",{style:{color:"var(--text-primary)"}},"摘要: ",-1)),y(v(a.summary),1)])):k("",!0),a.content?(r(),p("div",{key:1,innerHTML:a.content,style:{color:"var(--text-secondary)"}},null,8,Le)):k("",!0),!a.summary&&!a.content?(r(),p("div",Te,"暂无内容预览")):k("",!0)])]),emptyText:s(()=>[m("div",Oe,[l(_(D),{style:{"font-size":"40px","margin-bottom":"12px",display:"block"}}),e[15]||(e[15]=y(" 暂无文章 ",-1))])]),_:1},8,["data-source","pagination","expandable"])),l(ue,{open:R.value,"onUpdate:open":e[3]||(e[3]=a=>R.value=a),title:"添加订阅源","confirm-loading":T.value,onOk:G,"ok-text":"添加","cancel-text":"取消"},{default:s(()=>[l(de,{"label-col":{span:4},"wrapper-col":{span:20},style:{"margin-top":"16px"}},{default:s(()=>[l(ie,{label:"URL",required:""},{default:s(()=>[l(re,{value:U.value,"onUpdate:value":e[2]||(e[2]=a=>U.value=a),placeholder:"输入 RSS 订阅源地址,如 https://example.com/feed.xml"},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"])])}}},Ee=ye(je,[["__scopeId","data-v-66093b20"]]);export{Ee as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as b,o as Fe,M as f,R as _,P as c,u as r,c as a,N as t,Q as S,S as C,K as p,L as i,O as g,a1 as qe,F as z,Y as O,a as je,f as U}from"./vendor-Ci2pTZ_t.js";import{_ as Ke,b as Pe,u as Be,E as Ue,d as I}from"./index-Bn_0bupT.js";import{s as ge}from"./community-parser-CO25nZFt.js";import{R as He,s as Je,h as Qe,r as fe,l as Ve,aQ as Ge,k as Ye,a5 as We,aq as Xe}from"./icons-B2G69bhT.js";function re(l){const e=ge(l);if(!e)return null;try{return JSON.parse(e)}catch{}const u=e.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!u)return null;try{return JSON.parse(u[0])}catch{return null}}const Ze=Object.freeze(["bm25","vector","hybrid"]);function et(l,e=0){return typeof l=="number"&&Number.isFinite(l)?l:e}function tt(l){if(Array.isArray(l))return l.filter(e=>typeof e=="string");if(typeof l!="string")return[];try{const e=JSON.parse(l);if(Array.isArray(e))return e.filter(u=>typeof u=="string")}catch{}return[]}function ae(l){if(!l)return{noDb:!1,error:""};const e=ge(l),u=/Database not available/i.test(e);return{noDb:u,error:u?"Database not available":""}}function at(l,e=0){if(!l||typeof l!="object")return null;const u=l.id||"";return u?{key:u,id:u,score:et(l.score,0),title:String(l.title||""),category:String(l.category||"general"),createdAt:l.created_at??l.createdAt??"",snippet:String(l.snippet||""),_idx:e}:null}function ot(l){const e=re(l);return Array.isArray(e)?e.map(at).filter(Boolean):[]}function me(l,e=0){if(!l||typeof l!="object")return null;const u=l.id||"";return u?{key:u,id:u,title:String(l.title||""),content:l.content??"",tags:tt(l.tags),category:String(l.category||"general"),createdAt:l.created_at??l.createdAt??"",updatedAt:l.updated_at??l.updatedAt??"",_idx:e}:null}function rt(l){const e=re(l);return Array.isArray(e)?e.map(me).filter(Boolean):[]}function nt(l){const e=re(l);return!e||typeof e!="object"||Array.isArray(e)?null:me(e,0)}function lt(l){if(!Array.isArray(l)||l.length===0)return{total:0,categories:[],tags:[]};const e=new Map,u=new Map;for(const m of l){e.set(m.category,(e.get(m.category)||0)+1);for(const v of m.tags)u.set(v,(u.get(v)||0)+1)}return{total:l.length,categories:[...e.entries()].map(([m,v])=>({name:m,count:v})).sort((m,v)=>v.count-m.count),tags:[...u.entries()].map(([m,v])=>({name:m,count:v})).sort((m,v)=>v.count-m.count)}}function H(l){if(l==null||l==="")return"—";const e=String(l),u=e.includes(" ")&&!e.includes("T")?e.replace(" ","T")+"Z":e,m=new Date(u);return isNaN(m.getTime())?e:m.toLocaleString("zh-CN",{hour12:!1})}const st={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},ct={class:"page-title"},it={class:"page-sub"},ut={key:0,class:"recent-row"},dt={class:"recent-label"},pt={class:"score-block"},ft={class:"result-title"},_t={style:{color:"var(--text-muted)","font-size":"11px","font-family":"monospace"}},gt={style:{"margin-left":"8px",color:"var(--text-secondary)","font-size":"11px"}},mt={key:0,class:"result-snippet"},yt=["innerHTML"],vt={class:"filter-bar"},ht={key:0,class:"tag-row"},bt={class:"tag-row-label"},xt={class:"tag-count"},kt={style:{color:"var(--text-primary)","font-weight":"500"}},St={style:{color:"var(--text-muted)","font-size":"11px","font-family":"monospace","margin-top":"2px"}},Ct={key:0,style:{color:"var(--text-muted)","font-size":"11px"}},At={key:3,style:{color:"var(--text-secondary)","font-size":"11px"}},zt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},Nt={key:0,style:{padding:"40px","text-align":"center"}},Tt={key:1,style:{"padding-top":"8px"}},wt={style:{"font-family":"monospace","font-size":"12px"}},Et={key:0,style:{color:"var(--text-muted)"}},Mt={style:{color:"var(--text-primary)","font-size":"13px",margin:"16px 0 8px"}},Dt={key:0,class:"note-content"},Ot=["innerHTML"],oe="cc.web-panel.search.recent",_e=8,It={__name:"Search",setup(l){const{t:e}=Pe(),u=Be(),m=Ue.PRESENTED_IMAGE_SIMPLE,v=b(!1),J=b(!1),Q=b(!1),V=b(!1),K=b([]),N=b([]),$=b({noDb:!1,error:""}),x=je({query:"",mode:"hybrid",topK:10}),L=b(""),E=b(xe()),G=b("results"),R=b(""),T=b(""),Y=b(!1),h=b(null),M=U(()=>lt(K.value)),ne=U(()=>N.value.length?Math.max(...N.value.map(n=>n.score)):0),ye=U(()=>[{title:e("search.noteColumns.title"),key:"title"},{title:e("search.noteColumns.category"),key:"category",width:"120px"},{title:e("search.noteColumns.tags"),key:"tags",width:"240px"},{title:e("search.noteColumns.createdAt"),key:"createdAt",width:"180px"},{title:e("search.noteColumns.action"),key:"action",width:"180px"}]),ve=U(()=>{let n=K.value;if(R.value&&(n=n.filter(s=>s.category===R.value)),T.value.trim()){const s=T.value.trim().toLowerCase();n=n.filter(d=>d.tags.some(y=>y.toLowerCase().includes(s)))}return n});function he(n){const s=`search.mode.${n}`,d=e(s);return d===s?n:d}function W(n){const s=["blue","green","purple","orange","cyan","magenta","gold","volcano"];let d=0;for(let y=0;y<(n||"").length;y++)d=d*31+n.charCodeAt(y)>>>0;return s[d%s.length]}function le(n){return n>=.7?"#52c41a":n>=.5?"#1677ff":n>=.3?"#faad14":"#ff4d4f"}function X(n){return String(n).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function se(n,s){if(!s||!n)return X(n);const d=s.split(/\s+/).filter(Boolean);let y=X(n);for(const Z of d){const P=new RegExp(`(${Z.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")})`,"gi");y=y.replace(P,"<mark>$1</mark>")}return y}function be(n,s){return s?se(n,s):X(n)}function xe(){try{const n=localStorage.getItem(oe);if(n){const s=JSON.parse(n);if(Array.isArray(s))return s.filter(d=>typeof d=="string").slice(0,_e)}}catch{}return[]}function ke(n){const s=n.trim();if(!s)return;const d=[s,...E.value.filter(y=>y!==s)];E.value=d.slice(0,_e);try{localStorage.setItem(oe,JSON.stringify(E.value))}catch{}}function Se(){E.value=[];try{localStorage.removeItem(oe)}catch{}}function Ce(n){x.query=n,F()}async function ce(){v.value=!0,$.value={noDb:!1,error:""};try{const{output:n}=await u.execute("note list -n 500 --json",12e3).catch(()=>({output:""})),s=ae(n);if(s.noDb){$.value=s,K.value=[];return}K.value=rt(n)}catch(n){I.error(e("search.messages.loadIndexFailed",{err:n?.message||n}))}finally{v.value=!1}}async function F(){const n=x.query.trim();if(!n){I.warning(e("search.messages.queryRequired"));return}Q.value=!0,$.value={noDb:!1,error:""};try{const s=[`search ${Ae(n)}`,`--mode ${x.mode}`,`--top-k ${x.topK||10}`,"--json"],{output:d}=await u.execute(s.join(" "),15e3),y=ae(d);if(y.noDb){$.value=y,N.value=[],V.value=!0,L.value=n;return}N.value=ot(d),L.value=n,V.value=!0,ke(n),G.value="results"}catch(s){I.error(e("search.messages.searchFailed",{err:s?.message||s}))}finally{Q.value=!1}}function Ae(n){return`"${String(n).replace(/"/g,'\\"')}"`}function ze(n){x.query=n.title,x.mode="vector",F()}async function ie(n){Y.value=!0,J.value=!0,h.value=null;try{const{output:s}=await u.execute(`note show ${n} --json`,8e3);if(ae(s).noDb){I.error(e("search.messages.needInit"));return}h.value=nt(s),h.value||I.error(e("search.messages.noteLoadFailed"))}catch(s){I.error(e("search.messages.loadFailed",{err:s?.message||s}))}finally{J.value=!1}}return Fe(ce),(n,s)=>{const d=p("a-button"),y=p("a-space"),Z=p("a-alert"),P=p("a-input"),A=p("a-col"),ee=p("a-radio-button"),ue=p("a-radio-group"),Ne=p("a-input-number"),de=p("a-row"),Te=p("a-form"),w=p("a-tag"),D=p("a-card"),q=p("a-statistic"),te=p("a-empty"),we=p("a-progress"),Ee=p("a-list-item-meta"),Me=p("a-list-item"),De=p("a-list"),pe=p("a-tab-pane"),Oe=p("a-table"),Ie=p("a-tabs"),$e=p("a-spin"),j=p("a-descriptions-item"),Le=p("a-descriptions"),Re=p("a-modal");return i(),f("div",null,[_("div",st,[_("div",null,[_("h2",ct,c(r(e)("search.title")),1),_("p",it,c(r(e)("search.subtitle")),1)]),a(y,null,{default:t(()=>[a(d,{loading:v.value,onClick:ce},{icon:t(()=>[a(r(He))]),default:t(()=>[g(" "+c(r(e)("search.refreshIndex")),1)]),_:1},8,["loading"])]),_:1})]),$.value.noDb?(i(),S(Z,{key:0,type:"info","show-icon":"",message:r(e)("search.noDb.message"),description:r(e)("search.noDb.description"),style:{"margin-bottom":"16px"}},null,8,["message","description"])):C("",!0),a(D,{size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"},"body-style":{padding:"14px 16px"}},{default:t(()=>[a(Te,{layout:"vertical",model:x,onSubmit:qe(F,["prevent"])},{default:t(()=>[a(de,{gutter:12},{default:t(()=>[a(A,{span:14},{default:t(()=>[a(P,{value:x.query,"onUpdate:value":s[0]||(s[0]=o=>x.query=o),size:"large",placeholder:r(e)("search.form.queryPlaceholder"),"allow-clear":"",onPressEnter:F},{prefix:t(()=>[a(r(Je))]),_:1},8,["value","placeholder"])]),_:1}),a(A,{span:4},{default:t(()=>[a(ue,{value:x.mode,"onUpdate:value":s[1]||(s[1]=o=>x.mode=o),size:"large","button-style":"solid"},{default:t(()=>[(i(!0),f(z,null,O(r(Ze),o=>(i(),S(ee,{key:o,value:o},{default:t(()=>[g(c(he(o)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1}),a(A,{span:3},{default:t(()=>[a(Ne,{value:x.topK,"onUpdate:value":s[2]||(s[2]=o=>x.topK=o),min:1,max:50,placeholder:r(e)("search.form.topKPlaceholder"),size:"large",style:{width:"100%"}},null,8,["value","placeholder"])]),_:1}),a(A,{span:3},{default:t(()=>[a(d,{type:"primary",size:"large",loading:Q.value,block:"",onClick:F},{icon:t(()=>[a(r(Qe))]),default:t(()=>[g(" "+c(r(e)("search.form.submit")),1)]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1},8,["model"]),E.value.length?(i(),f("div",ut,[_("span",dt,c(r(e)("search.recent.label")),1),(i(!0),f(z,null,O(E.value,o=>(i(),S(w,{key:o,color:"blue",class:"recent-chip",onClick:k=>Ce(o)},{default:t(()=>[g(c(o),1)]),_:2},1032,["onClick"]))),128)),a(d,{size:"small",type:"link",danger:"",onClick:Se},{default:t(()=>[g(c(r(e)("search.recent.clear")),1)]),_:1})])):C("",!0)]),_:1}),a(de,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:t(()=>[a(A,{xs:12,sm:8,lg:5},{default:t(()=>[a(D,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(q,{title:r(e)("search.stats.indexedNotes"),value:M.value.total,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:t(()=>[a(r(fe))]),_:1},8,["title","value"])]),_:1})]),_:1}),a(A,{xs:12,sm:8,lg:5},{default:t(()=>[a(D,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(q,{title:r(e)("search.stats.categories"),value:M.value.categories.length,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:t(()=>[a(r(Ve))]),_:1},8,["title","value"])]),_:1})]),_:1}),a(A,{xs:12,sm:8,lg:5},{default:t(()=>[a(D,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(q,{title:r(e)("search.stats.tags"),value:M.value.tags.length,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:t(()=>[a(r(Ge))]),_:1},8,["title","value"])]),_:1})]),_:1}),a(A,{xs:12,sm:8,lg:5},{default:t(()=>[a(D,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(q,{title:r(e)("search.stats.results"),value:N.value.length,"value-style":{color:N.value.length>0?"#52c41a":"#888",fontSize:"20px"}},{prefix:t(()=>[a(r(Ye))]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),a(A,{xs:24,sm:8,lg:4},{default:t(()=>[a(D,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(q,{title:r(e)("search.stats.topScore"),value:ne.value,precision:3,"value-style":{color:le(ne.value),fontSize:"20px"}},{prefix:t(()=>[a(r(We))]),_:1},8,["title","value","value-style"])]),_:1})]),_:1})]),_:1}),a(Ie,{activeKey:G.value,"onUpdate:activeKey":s[5]||(s[5]=o=>G.value=o),class:"search-tabs"},{default:t(()=>[a(pe,{key:"results",tab:r(e)("search.tabs.results")},{default:t(()=>[V.value?N.value.length?(i(),S(De,{key:2,"data-source":N.value,"item-layout":"vertical",size:"large"},{renderItem:t(({item:o})=>[a(Me,{class:"result-row"},{actions:t(()=>[a(d,{type:"link",size:"small",onClick:k=>ie(o.id)},{icon:t(()=>[a(r(Xe))]),default:t(()=>[g(" "+c(r(e)("search.results.viewFull")),1)]),_:1},8,["onClick"])]),extra:t(()=>[_("div",pt,[a(we,{type:"circle",percent:Math.round(Math.min(1,o.score)*100),"stroke-color":le(o.score),format:()=>o.score.toFixed(3),width:60},null,8,["percent","stroke-color","format"])])]),default:t(()=>[a(Ee,null,{title:t(()=>[_("span",ft,c(o.title||r(e)("search.results.noTitle")),1),a(w,{color:W(o.category),style:{"margin-left":"8px"}},{default:t(()=>[g(c(o.category),1)]),_:2},1032,["color"])]),description:t(()=>[_("span",_t,c(o.id.slice(0,16)),1),_("span",gt,c(r(H)(o.createdAt)),1)]),_:2},1024),o.snippet?(i(),f("div",mt,[_("span",{innerHTML:se(o.snippet,L.value)},null,8,yt)])):C("",!0)]),_:2},1024)]),_:1},8,["data-source"])):(i(),S(te,{key:1,description:r(e)("search.results.noMatch",{query:L.value}),image:r(m),style:{padding:"40px 0"}},null,8,["description","image"])):(i(),S(te,{key:0,description:r(e)("search.results.promptEmpty"),image:r(m),style:{padding:"40px 0"}},null,8,["description","image"]))]),_:1},8,["tab"]),a(pe,{key:"index",tab:r(e)("search.tabs.index")},{default:t(()=>[_("div",vt,[a(ue,{value:R.value,"onUpdate:value":s[3]||(s[3]=o=>R.value=o),size:"small","button-style":"solid"},{default:t(()=>[a(ee,{value:""},{default:t(()=>[g(c(r(e)("search.index.allCategories")),1)]),_:1}),(i(!0),f(z,null,O(M.value.categories.slice(0,6),o=>(i(),S(ee,{key:o.name,value:o.name},{default:t(()=>[g(c(o.name)+" ("+c(o.count)+") ",1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),a(P,{value:T.value,"onUpdate:value":s[4]||(s[4]=o=>T.value=o),placeholder:r(e)("search.index.tagFilterPlaceholder"),"allow-clear":"",size:"small",style:{"max-width":"180px"}},null,8,["value","placeholder"])]),M.value.tags.length?(i(),f("div",ht,[_("span",bt,c(r(e)("search.index.topTagsLabel")),1),(i(!0),f(z,null,O(M.value.tags.slice(0,12),o=>(i(),S(w,{key:o.name,color:T.value===o.name?"blue":"default",class:"tag-chip",onClick:k=>T.value=T.value===o.name?"":o.name},{default:t(()=>[g(c(o.name)+" ",1),_("span",xt,c(o.count),1)]),_:2},1032,["color","onClick"]))),128))])):C("",!0),a(Oe,{columns:ye.value,"data-source":ve.value,pagination:{pageSize:20,showTotal:o=>r(e)("search.totals.rows",{count:o})},size:"small",loading:v.value,style:{background:"var(--bg-card)"}},{bodyCell:t(({column:o,record:k})=>[o.key==="title"?(i(),f(z,{key:0},[_("span",kt,c(k.title||r(e)("search.results.noTitle")),1),_("div",St,c(k.id.slice(0,16)),1)],64)):C("",!0),o.key==="category"?(i(),S(w,{key:1,color:W(k.category)},{default:t(()=>[g(c(k.category),1)]),_:2},1032,["color"])):C("",!0),o.key==="tags"?(i(),f(z,{key:2},[(i(!0),f(z,null,O(k.tags.slice(0,4),B=>(i(),S(w,{key:B,color:"default",style:{"font-size":"11px"}},{default:t(()=>[g(c(B),1)]),_:2},1024))),128)),k.tags.length>4?(i(),f("span",Ct,"+"+c(k.tags.length-4),1)):C("",!0)],64)):C("",!0),o.key==="createdAt"?(i(),f("span",At,c(r(H)(k.createdAt)),1)):C("",!0),o.key==="action"?(i(),f(z,{key:4},[a(d,{size:"small",type:"link",onClick:B=>ie(k.id)},{default:t(()=>[g(c(r(e)("search.index.rowAction.view")),1)]),_:1},8,["onClick"]),a(d,{size:"small",type:"link",onClick:B=>ze(k)},{default:t(()=>[g(c(r(e)("search.index.rowAction.similar")),1)]),_:1},8,["onClick"])],64)):C("",!0)]),emptyText:t(()=>[_("div",zt,[a(r(fe),{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),g(" "+c(R.value||T.value?r(e)("search.empty.filtered"):r(e)("search.empty.noNotes")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"])]),_:1},8,["activeKey"]),a(Re,{open:Y.value,"onUpdate:open":s[6]||(s[6]=o=>Y.value=o),title:r(e)("search.note.title",{title:h.value?.title||""}),width:780,footer:null},{default:t(()=>[J.value?(i(),f("div",Nt,[a($e)])):h.value?(i(),f("div",Tt,[a(Le,{column:2,size:"small",bordered:""},{default:t(()=>[a(j,{label:r(e)("search.note.id"),span:2},{default:t(()=>[_("span",wt,c(h.value.id),1)]),_:1},8,["label"]),a(j,{label:r(e)("search.note.category")},{default:t(()=>[a(w,{color:W(h.value.category)},{default:t(()=>[g(c(h.value.category),1)]),_:1},8,["color"])]),_:1},8,["label"]),a(j,{label:r(e)("search.note.tags")},{default:t(()=>[(i(!0),f(z,null,O(h.value.tags,o=>(i(),S(w,{key:o,color:"default"},{default:t(()=>[g(c(o),1)]),_:2},1024))),128)),h.value.tags.length?C("",!0):(i(),f("span",Et,"—"))]),_:1},8,["label"]),a(j,{label:r(e)("search.note.createdAt")},{default:t(()=>[g(c(r(H)(h.value.createdAt)),1)]),_:1},8,["label"]),a(j,{label:r(e)("search.note.updatedAt")},{default:t(()=>[g(c(r(H)(h.value.updatedAt)),1)]),_:1},8,["label"])]),_:1}),_("h4",Mt,c(r(e)("search.note.content")),1),h.value.content?(i(),f("div",Dt,[_("span",{innerHTML:be(h.value.content,L.value)},null,8,Ot)])):(i(),S(te,{key:1,description:r(e)("search.note.emptyContent"),image:r(m)},null,8,["description","image"]))])):C("",!0)]),_:1},8,["open","title"])])}}},qt=Ke(It,[["__scopeId","data-v-25cf2b6f"]]);export{qt as default};
|
|
1
|
+
import{r as b,o as Fe,M as f,R as _,P as c,u as r,c as a,N as t,Q as S,S as C,K as p,L as i,O as g,a1 as qe,F as z,Y as O,a as je,f as U}from"./vendor-Ci2pTZ_t.js";import{_ as Ke,b as Pe,u as Be,E as Ue,d as I}from"./index-BPtmPFwc.js";import{s as ge}from"./community-parser-CO25nZFt.js";import{R as He,s as Je,h as Qe,r as fe,l as Ve,aQ as Ge,k as Ye,a5 as We,aq as Xe}from"./icons-B2G69bhT.js";function re(l){const e=ge(l);if(!e)return null;try{return JSON.parse(e)}catch{}const u=e.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(!u)return null;try{return JSON.parse(u[0])}catch{return null}}const Ze=Object.freeze(["bm25","vector","hybrid"]);function et(l,e=0){return typeof l=="number"&&Number.isFinite(l)?l:e}function tt(l){if(Array.isArray(l))return l.filter(e=>typeof e=="string");if(typeof l!="string")return[];try{const e=JSON.parse(l);if(Array.isArray(e))return e.filter(u=>typeof u=="string")}catch{}return[]}function ae(l){if(!l)return{noDb:!1,error:""};const e=ge(l),u=/Database not available/i.test(e);return{noDb:u,error:u?"Database not available":""}}function at(l,e=0){if(!l||typeof l!="object")return null;const u=l.id||"";return u?{key:u,id:u,score:et(l.score,0),title:String(l.title||""),category:String(l.category||"general"),createdAt:l.created_at??l.createdAt??"",snippet:String(l.snippet||""),_idx:e}:null}function ot(l){const e=re(l);return Array.isArray(e)?e.map(at).filter(Boolean):[]}function me(l,e=0){if(!l||typeof l!="object")return null;const u=l.id||"";return u?{key:u,id:u,title:String(l.title||""),content:l.content??"",tags:tt(l.tags),category:String(l.category||"general"),createdAt:l.created_at??l.createdAt??"",updatedAt:l.updated_at??l.updatedAt??"",_idx:e}:null}function rt(l){const e=re(l);return Array.isArray(e)?e.map(me).filter(Boolean):[]}function nt(l){const e=re(l);return!e||typeof e!="object"||Array.isArray(e)?null:me(e,0)}function lt(l){if(!Array.isArray(l)||l.length===0)return{total:0,categories:[],tags:[]};const e=new Map,u=new Map;for(const m of l){e.set(m.category,(e.get(m.category)||0)+1);for(const v of m.tags)u.set(v,(u.get(v)||0)+1)}return{total:l.length,categories:[...e.entries()].map(([m,v])=>({name:m,count:v})).sort((m,v)=>v.count-m.count),tags:[...u.entries()].map(([m,v])=>({name:m,count:v})).sort((m,v)=>v.count-m.count)}}function H(l){if(l==null||l==="")return"—";const e=String(l),u=e.includes(" ")&&!e.includes("T")?e.replace(" ","T")+"Z":e,m=new Date(u);return isNaN(m.getTime())?e:m.toLocaleString("zh-CN",{hour12:!1})}const st={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},ct={class:"page-title"},it={class:"page-sub"},ut={key:0,class:"recent-row"},dt={class:"recent-label"},pt={class:"score-block"},ft={class:"result-title"},_t={style:{color:"var(--text-muted)","font-size":"11px","font-family":"monospace"}},gt={style:{"margin-left":"8px",color:"var(--text-secondary)","font-size":"11px"}},mt={key:0,class:"result-snippet"},yt=["innerHTML"],vt={class:"filter-bar"},ht={key:0,class:"tag-row"},bt={class:"tag-row-label"},xt={class:"tag-count"},kt={style:{color:"var(--text-primary)","font-weight":"500"}},St={style:{color:"var(--text-muted)","font-size":"11px","font-family":"monospace","margin-top":"2px"}},Ct={key:0,style:{color:"var(--text-muted)","font-size":"11px"}},At={key:3,style:{color:"var(--text-secondary)","font-size":"11px"}},zt={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},Nt={key:0,style:{padding:"40px","text-align":"center"}},Tt={key:1,style:{"padding-top":"8px"}},wt={style:{"font-family":"monospace","font-size":"12px"}},Et={key:0,style:{color:"var(--text-muted)"}},Mt={style:{color:"var(--text-primary)","font-size":"13px",margin:"16px 0 8px"}},Dt={key:0,class:"note-content"},Ot=["innerHTML"],oe="cc.web-panel.search.recent",_e=8,It={__name:"Search",setup(l){const{t:e}=Pe(),u=Be(),m=Ue.PRESENTED_IMAGE_SIMPLE,v=b(!1),J=b(!1),Q=b(!1),V=b(!1),K=b([]),N=b([]),$=b({noDb:!1,error:""}),x=je({query:"",mode:"hybrid",topK:10}),L=b(""),E=b(xe()),G=b("results"),R=b(""),T=b(""),Y=b(!1),h=b(null),M=U(()=>lt(K.value)),ne=U(()=>N.value.length?Math.max(...N.value.map(n=>n.score)):0),ye=U(()=>[{title:e("search.noteColumns.title"),key:"title"},{title:e("search.noteColumns.category"),key:"category",width:"120px"},{title:e("search.noteColumns.tags"),key:"tags",width:"240px"},{title:e("search.noteColumns.createdAt"),key:"createdAt",width:"180px"},{title:e("search.noteColumns.action"),key:"action",width:"180px"}]),ve=U(()=>{let n=K.value;if(R.value&&(n=n.filter(s=>s.category===R.value)),T.value.trim()){const s=T.value.trim().toLowerCase();n=n.filter(d=>d.tags.some(y=>y.toLowerCase().includes(s)))}return n});function he(n){const s=`search.mode.${n}`,d=e(s);return d===s?n:d}function W(n){const s=["blue","green","purple","orange","cyan","magenta","gold","volcano"];let d=0;for(let y=0;y<(n||"").length;y++)d=d*31+n.charCodeAt(y)>>>0;return s[d%s.length]}function le(n){return n>=.7?"#52c41a":n>=.5?"#1677ff":n>=.3?"#faad14":"#ff4d4f"}function X(n){return String(n).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function se(n,s){if(!s||!n)return X(n);const d=s.split(/\s+/).filter(Boolean);let y=X(n);for(const Z of d){const P=new RegExp(`(${Z.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")})`,"gi");y=y.replace(P,"<mark>$1</mark>")}return y}function be(n,s){return s?se(n,s):X(n)}function xe(){try{const n=localStorage.getItem(oe);if(n){const s=JSON.parse(n);if(Array.isArray(s))return s.filter(d=>typeof d=="string").slice(0,_e)}}catch{}return[]}function ke(n){const s=n.trim();if(!s)return;const d=[s,...E.value.filter(y=>y!==s)];E.value=d.slice(0,_e);try{localStorage.setItem(oe,JSON.stringify(E.value))}catch{}}function Se(){E.value=[];try{localStorage.removeItem(oe)}catch{}}function Ce(n){x.query=n,F()}async function ce(){v.value=!0,$.value={noDb:!1,error:""};try{const{output:n}=await u.execute("note list -n 500 --json",12e3).catch(()=>({output:""})),s=ae(n);if(s.noDb){$.value=s,K.value=[];return}K.value=rt(n)}catch(n){I.error(e("search.messages.loadIndexFailed",{err:n?.message||n}))}finally{v.value=!1}}async function F(){const n=x.query.trim();if(!n){I.warning(e("search.messages.queryRequired"));return}Q.value=!0,$.value={noDb:!1,error:""};try{const s=[`search ${Ae(n)}`,`--mode ${x.mode}`,`--top-k ${x.topK||10}`,"--json"],{output:d}=await u.execute(s.join(" "),15e3),y=ae(d);if(y.noDb){$.value=y,N.value=[],V.value=!0,L.value=n;return}N.value=ot(d),L.value=n,V.value=!0,ke(n),G.value="results"}catch(s){I.error(e("search.messages.searchFailed",{err:s?.message||s}))}finally{Q.value=!1}}function Ae(n){return`"${String(n).replace(/"/g,'\\"')}"`}function ze(n){x.query=n.title,x.mode="vector",F()}async function ie(n){Y.value=!0,J.value=!0,h.value=null;try{const{output:s}=await u.execute(`note show ${n} --json`,8e3);if(ae(s).noDb){I.error(e("search.messages.needInit"));return}h.value=nt(s),h.value||I.error(e("search.messages.noteLoadFailed"))}catch(s){I.error(e("search.messages.loadFailed",{err:s?.message||s}))}finally{J.value=!1}}return Fe(ce),(n,s)=>{const d=p("a-button"),y=p("a-space"),Z=p("a-alert"),P=p("a-input"),A=p("a-col"),ee=p("a-radio-button"),ue=p("a-radio-group"),Ne=p("a-input-number"),de=p("a-row"),Te=p("a-form"),w=p("a-tag"),D=p("a-card"),q=p("a-statistic"),te=p("a-empty"),we=p("a-progress"),Ee=p("a-list-item-meta"),Me=p("a-list-item"),De=p("a-list"),pe=p("a-tab-pane"),Oe=p("a-table"),Ie=p("a-tabs"),$e=p("a-spin"),j=p("a-descriptions-item"),Le=p("a-descriptions"),Re=p("a-modal");return i(),f("div",null,[_("div",st,[_("div",null,[_("h2",ct,c(r(e)("search.title")),1),_("p",it,c(r(e)("search.subtitle")),1)]),a(y,null,{default:t(()=>[a(d,{loading:v.value,onClick:ce},{icon:t(()=>[a(r(He))]),default:t(()=>[g(" "+c(r(e)("search.refreshIndex")),1)]),_:1},8,["loading"])]),_:1})]),$.value.noDb?(i(),S(Z,{key:0,type:"info","show-icon":"",message:r(e)("search.noDb.message"),description:r(e)("search.noDb.description"),style:{"margin-bottom":"16px"}},null,8,["message","description"])):C("",!0),a(D,{size:"small",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"},"body-style":{padding:"14px 16px"}},{default:t(()=>[a(Te,{layout:"vertical",model:x,onSubmit:qe(F,["prevent"])},{default:t(()=>[a(de,{gutter:12},{default:t(()=>[a(A,{span:14},{default:t(()=>[a(P,{value:x.query,"onUpdate:value":s[0]||(s[0]=o=>x.query=o),size:"large",placeholder:r(e)("search.form.queryPlaceholder"),"allow-clear":"",onPressEnter:F},{prefix:t(()=>[a(r(Je))]),_:1},8,["value","placeholder"])]),_:1}),a(A,{span:4},{default:t(()=>[a(ue,{value:x.mode,"onUpdate:value":s[1]||(s[1]=o=>x.mode=o),size:"large","button-style":"solid"},{default:t(()=>[(i(!0),f(z,null,O(r(Ze),o=>(i(),S(ee,{key:o,value:o},{default:t(()=>[g(c(he(o)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1}),a(A,{span:3},{default:t(()=>[a(Ne,{value:x.topK,"onUpdate:value":s[2]||(s[2]=o=>x.topK=o),min:1,max:50,placeholder:r(e)("search.form.topKPlaceholder"),size:"large",style:{width:"100%"}},null,8,["value","placeholder"])]),_:1}),a(A,{span:3},{default:t(()=>[a(d,{type:"primary",size:"large",loading:Q.value,block:"",onClick:F},{icon:t(()=>[a(r(Qe))]),default:t(()=>[g(" "+c(r(e)("search.form.submit")),1)]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1},8,["model"]),E.value.length?(i(),f("div",ut,[_("span",dt,c(r(e)("search.recent.label")),1),(i(!0),f(z,null,O(E.value,o=>(i(),S(w,{key:o,color:"blue",class:"recent-chip",onClick:k=>Ce(o)},{default:t(()=>[g(c(o),1)]),_:2},1032,["onClick"]))),128)),a(d,{size:"small",type:"link",danger:"",onClick:Se},{default:t(()=>[g(c(r(e)("search.recent.clear")),1)]),_:1})])):C("",!0)]),_:1}),a(de,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:t(()=>[a(A,{xs:12,sm:8,lg:5},{default:t(()=>[a(D,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(q,{title:r(e)("search.stats.indexedNotes"),value:M.value.total,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:t(()=>[a(r(fe))]),_:1},8,["title","value"])]),_:1})]),_:1}),a(A,{xs:12,sm:8,lg:5},{default:t(()=>[a(D,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(q,{title:r(e)("search.stats.categories"),value:M.value.categories.length,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:t(()=>[a(r(Ve))]),_:1},8,["title","value"])]),_:1})]),_:1}),a(A,{xs:12,sm:8,lg:5},{default:t(()=>[a(D,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(q,{title:r(e)("search.stats.tags"),value:M.value.tags.length,"value-style":{color:"#13c2c2",fontSize:"20px"}},{prefix:t(()=>[a(r(Ge))]),_:1},8,["title","value"])]),_:1})]),_:1}),a(A,{xs:12,sm:8,lg:5},{default:t(()=>[a(D,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(q,{title:r(e)("search.stats.results"),value:N.value.length,"value-style":{color:N.value.length>0?"#52c41a":"#888",fontSize:"20px"}},{prefix:t(()=>[a(r(Ye))]),_:1},8,["title","value","value-style"])]),_:1})]),_:1}),a(A,{xs:24,sm:8,lg:4},{default:t(()=>[a(D,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[a(q,{title:r(e)("search.stats.topScore"),value:ne.value,precision:3,"value-style":{color:le(ne.value),fontSize:"20px"}},{prefix:t(()=>[a(r(We))]),_:1},8,["title","value","value-style"])]),_:1})]),_:1})]),_:1}),a(Ie,{activeKey:G.value,"onUpdate:activeKey":s[5]||(s[5]=o=>G.value=o),class:"search-tabs"},{default:t(()=>[a(pe,{key:"results",tab:r(e)("search.tabs.results")},{default:t(()=>[V.value?N.value.length?(i(),S(De,{key:2,"data-source":N.value,"item-layout":"vertical",size:"large"},{renderItem:t(({item:o})=>[a(Me,{class:"result-row"},{actions:t(()=>[a(d,{type:"link",size:"small",onClick:k=>ie(o.id)},{icon:t(()=>[a(r(Xe))]),default:t(()=>[g(" "+c(r(e)("search.results.viewFull")),1)]),_:1},8,["onClick"])]),extra:t(()=>[_("div",pt,[a(we,{type:"circle",percent:Math.round(Math.min(1,o.score)*100),"stroke-color":le(o.score),format:()=>o.score.toFixed(3),width:60},null,8,["percent","stroke-color","format"])])]),default:t(()=>[a(Ee,null,{title:t(()=>[_("span",ft,c(o.title||r(e)("search.results.noTitle")),1),a(w,{color:W(o.category),style:{"margin-left":"8px"}},{default:t(()=>[g(c(o.category),1)]),_:2},1032,["color"])]),description:t(()=>[_("span",_t,c(o.id.slice(0,16)),1),_("span",gt,c(r(H)(o.createdAt)),1)]),_:2},1024),o.snippet?(i(),f("div",mt,[_("span",{innerHTML:se(o.snippet,L.value)},null,8,yt)])):C("",!0)]),_:2},1024)]),_:1},8,["data-source"])):(i(),S(te,{key:1,description:r(e)("search.results.noMatch",{query:L.value}),image:r(m),style:{padding:"40px 0"}},null,8,["description","image"])):(i(),S(te,{key:0,description:r(e)("search.results.promptEmpty"),image:r(m),style:{padding:"40px 0"}},null,8,["description","image"]))]),_:1},8,["tab"]),a(pe,{key:"index",tab:r(e)("search.tabs.index")},{default:t(()=>[_("div",vt,[a(ue,{value:R.value,"onUpdate:value":s[3]||(s[3]=o=>R.value=o),size:"small","button-style":"solid"},{default:t(()=>[a(ee,{value:""},{default:t(()=>[g(c(r(e)("search.index.allCategories")),1)]),_:1}),(i(!0),f(z,null,O(M.value.categories.slice(0,6),o=>(i(),S(ee,{key:o.name,value:o.name},{default:t(()=>[g(c(o.name)+" ("+c(o.count)+") ",1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),a(P,{value:T.value,"onUpdate:value":s[4]||(s[4]=o=>T.value=o),placeholder:r(e)("search.index.tagFilterPlaceholder"),"allow-clear":"",size:"small",style:{"max-width":"180px"}},null,8,["value","placeholder"])]),M.value.tags.length?(i(),f("div",ht,[_("span",bt,c(r(e)("search.index.topTagsLabel")),1),(i(!0),f(z,null,O(M.value.tags.slice(0,12),o=>(i(),S(w,{key:o.name,color:T.value===o.name?"blue":"default",class:"tag-chip",onClick:k=>T.value=T.value===o.name?"":o.name},{default:t(()=>[g(c(o.name)+" ",1),_("span",xt,c(o.count),1)]),_:2},1032,["color","onClick"]))),128))])):C("",!0),a(Oe,{columns:ye.value,"data-source":ve.value,pagination:{pageSize:20,showTotal:o=>r(e)("search.totals.rows",{count:o})},size:"small",loading:v.value,style:{background:"var(--bg-card)"}},{bodyCell:t(({column:o,record:k})=>[o.key==="title"?(i(),f(z,{key:0},[_("span",kt,c(k.title||r(e)("search.results.noTitle")),1),_("div",St,c(k.id.slice(0,16)),1)],64)):C("",!0),o.key==="category"?(i(),S(w,{key:1,color:W(k.category)},{default:t(()=>[g(c(k.category),1)]),_:2},1032,["color"])):C("",!0),o.key==="tags"?(i(),f(z,{key:2},[(i(!0),f(z,null,O(k.tags.slice(0,4),B=>(i(),S(w,{key:B,color:"default",style:{"font-size":"11px"}},{default:t(()=>[g(c(B),1)]),_:2},1024))),128)),k.tags.length>4?(i(),f("span",Ct,"+"+c(k.tags.length-4),1)):C("",!0)],64)):C("",!0),o.key==="createdAt"?(i(),f("span",At,c(r(H)(k.createdAt)),1)):C("",!0),o.key==="action"?(i(),f(z,{key:4},[a(d,{size:"small",type:"link",onClick:B=>ie(k.id)},{default:t(()=>[g(c(r(e)("search.index.rowAction.view")),1)]),_:1},8,["onClick"]),a(d,{size:"small",type:"link",onClick:B=>ze(k)},{default:t(()=>[g(c(r(e)("search.index.rowAction.similar")),1)]),_:1},8,["onClick"])],64)):C("",!0)]),emptyText:t(()=>[_("div",zt,[a(r(fe),{style:{"font-size":"36px","margin-bottom":"10px",display:"block"}}),g(" "+c(R.value||T.value?r(e)("search.empty.filtered"):r(e)("search.empty.noNotes")),1)])]),_:1},8,["columns","data-source","pagination","loading"])]),_:1},8,["tab"])]),_:1},8,["activeKey"]),a(Re,{open:Y.value,"onUpdate:open":s[6]||(s[6]=o=>Y.value=o),title:r(e)("search.note.title",{title:h.value?.title||""}),width:780,footer:null},{default:t(()=>[J.value?(i(),f("div",Nt,[a($e)])):h.value?(i(),f("div",Tt,[a(Le,{column:2,size:"small",bordered:""},{default:t(()=>[a(j,{label:r(e)("search.note.id"),span:2},{default:t(()=>[_("span",wt,c(h.value.id),1)]),_:1},8,["label"]),a(j,{label:r(e)("search.note.category")},{default:t(()=>[a(w,{color:W(h.value.category)},{default:t(()=>[g(c(h.value.category),1)]),_:1},8,["color"])]),_:1},8,["label"]),a(j,{label:r(e)("search.note.tags")},{default:t(()=>[(i(!0),f(z,null,O(h.value.tags,o=>(i(),S(w,{key:o,color:"default"},{default:t(()=>[g(c(o),1)]),_:2},1024))),128)),h.value.tags.length?C("",!0):(i(),f("span",Et,"—"))]),_:1},8,["label"]),a(j,{label:r(e)("search.note.createdAt")},{default:t(()=>[g(c(r(H)(h.value.createdAt)),1)]),_:1},8,["label"]),a(j,{label:r(e)("search.note.updatedAt")},{default:t(()=>[g(c(r(H)(h.value.updatedAt)),1)]),_:1},8,["label"])]),_:1}),_("h4",Mt,c(r(e)("search.note.content")),1),h.value.content?(i(),f("div",Dt,[_("span",{innerHTML:be(h.value.content,L.value)},null,8,Ot)])):(i(),S(te,{key:1,description:r(e)("search.note.emptyContent"),image:r(m)},null,8,["description","image"]))])):C("",!0)]),_:1},8,["open","title"])])}}},qt=Ke(It,[["__scopeId","data-v-25cf2b6f"]]);export{qt as default};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{_ as me,b as ve,u as ge,d as k}from"./index-
|
|
1
|
+
import{_ as me,b as ve,u as ge,d as k}from"./index-BPtmPFwc.js";import{R as _e,ap as be,K as he,y as xe,O as Y,a4 as ke}from"./icons-B2G69bhT.js";import{o as we,M as f,R,P as i,u as l,c as t,N as a,r as u,K as p,L as c,O as m,Q as O,S as g,F as Ce,Y as Ie,f as Z}from"./vendor-Ci2pTZ_t.js";const Re={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Te={class:"page-title"},Le={class:"page-sub"},Oe={key:0,style:{"text-align":"center",padding:"60px"}},De={key:0,style:{color:"#e0e0e0","font-family":"monospace","font-size":"12px"}},ze={key:2,style:{color:"var(--text-secondary)","font-size":"12px"}},Ae={key:0,style:{"margin-top":"12px"}},Ne={style:{color:"var(--text-secondary)","margin-bottom":"6px"}},Se={style:{"white-space":"pre-wrap","word-break":"break-all",color:"#52c41a","font-size":"11px",background:"var(--bg-base)",padding:"12px","border-radius":"6px",border:"1px solid var(--border-color)"}},We={key:0,style:{"margin-top":"8px"}},Fe={style:{"white-space":"pre-wrap","word-break":"break-all",color:"var(--text-secondary)","font-size":"11px","margin-top":"8px",background:"var(--bg-base)",padding:"10px","border-radius":"6px",border:"1px solid var(--border-color)"}},Me={key:0,style:{"margin-top":"8px"}},Be={style:{"white-space":"pre-wrap","word-break":"break-all",color:"var(--text-secondary)","font-size":"11px","margin-top":"8px",background:"var(--bg-base)",padding:"10px","border-radius":"6px",border:"1px solid var(--border-color)"}},Pe={key:0,style:{"text-align":"center",padding:"60px"}},Ee={key:0,style:{color:"var(--text-secondary)","font-size":"12px","font-family":"monospace"}},Ke={key:1,style:{color:"#e0e0e0"}},Ue={key:2,style:{color:"var(--text-secondary)"}},Ve={key:4,style:{color:"var(--text-muted)","font-size":"12px"}},$e={__name:"Security",setup(je){const{t:e}=ve(),T=ge(),N=u("did"),M=u(!1);async function ee(){M.value=!0;try{N.value==="did"?await W():N.value==="audit"&&await J()}finally{M.value=!1}}function te(s){s==="did"&&K.value.length===0&&W(),s==="audit"&&F.value.length===0&&J()}const B=u(!1),P=u(!1),E=u(!1),K=u([]),U=u(!1),S=u(""),D=u(""),ae=Z(()=>[{title:e("security.didColumns.did"),key:"did",dataIndex:"did",ellipsis:!0},{title:e("security.didColumns.method"),key:"method",dataIndex:"method",width:"100px"},{title:e("security.didColumns.created"),key:"created",dataIndex:"created",width:"180px"},{title:e("security.didColumns.status"),key:"status",width:"80px"}]);async function W(){B.value=!0;try{const{output:s}=await T.execute("did list",15e3);K.value=se(s)}catch(s){k.error(e("security.messages.loadDidsFailed",{err:s.message}))}finally{B.value=!1}}function se(s){const o=[],_=s.split(`
|
|
2
2
|
`);for(const I of _){const n=I.trim();if(!n||n.startsWith("─")||n.startsWith("DID")||n.match(/^\d+ identit/i))continue;const d=n.match(/(did:\w+:\w+)/);if(d){const y=d[1],b=y.split(":")[1]||"key",x=/default|默认|\*/.test(n),h=n.match(/(\d{4}-\d{2}-\d{2}[\sT]?\d{2}:\d{2}(?::\d{2})?)/);o.push({key:y,did:y,method:b,created:h?h[1]:"-",isDefault:x})}}return o}async function le(){P.value=!0;try{const{output:s}=await T.execute("did create",2e4);s.includes("error")||s.includes("失败")?k.error(e("security.messages.didCreateFailed",{err:s.slice(0,120)})):(k.success(e("security.messages.didCreateOk")),await W())}catch(s){k.error(e("security.messages.didCreateFailed",{err:s.message}))}finally{P.value=!1}}async function oe(){if(!S.value.trim()){k.warning(e("security.messages.messageRequired"));return}E.value=!0,D.value="";try{const{output:s}=await T.execute(`did sign "${S.value.replace(/"/g,'\\"')}"`,15e3);D.value=s,!s.includes("error")&&!s.includes("失败")&&k.success(e("security.messages.signOk"))}catch(s){D.value=e("security.messages.signFailed",{err:s.message})}finally{E.value=!1}}const z=u(""),A=u(""),V=u(!1),$=u(!1),w=u(null),C=u(null);async function re(){if(z.value.trim()){V.value=!0,w.value=null;try{const{output:s,exitCode:o}=await T.execute(`encrypt file "${z.value.trim()}"`,3e4);w.value={success:o===0&&!s.includes("error")&&!s.includes("失败"),output:s||e("security.encrypt.encryptDefault")},w.value.success&&k.success(e("security.messages.encryptOk"))}catch(s){w.value={success:!1,output:e("security.messages.encryptFailed",{err:s.message})}}finally{V.value=!1}}}async function ie(){if(A.value.trim()){$.value=!0,C.value=null;try{const{output:s,exitCode:o}=await T.execute(`decrypt file "${A.value.trim()}"`,3e4);C.value={success:o===0&&!s.includes("error")&&!s.includes("失败"),output:s||e("security.encrypt.decryptDefault")},C.value.success&&k.success(e("security.messages.decryptOk"))}catch(s){C.value={success:!1,output:e("security.messages.decryptFailed",{err:s.message})}}finally{$.value=!1}}}const j=u(!1),F=u([]),H=u([]),ne=Z(()=>[{title:e("security.auditColumns.time"),key:"time",dataIndex:"time",width:"180px"},{title:e("security.auditColumns.event"),key:"event",dataIndex:"event",width:"200px"},{title:e("security.auditColumns.user"),key:"user",dataIndex:"user",width:"120px"},{title:e("security.auditColumns.level"),key:"level",dataIndex:"level",width:"80px"},{title:e("security.auditColumns.detail"),key:"detail",dataIndex:"detail",ellipsis:!0}]);function ce(s){return{info:"blue",warn:"orange",warning:"orange",error:"red",critical:"red"}[(s||"").toLowerCase()]||"default"}async function J(){j.value=!0;try{const[s,o]=await Promise.all([T.execute("audit log",15e3),T.execute("audit stats",15e3)]);F.value=ue(s.output),H.value=de(o.output)}catch(s){k.error(e("security.messages.loadAuditFailed",{err:s.message}))}finally{j.value=!1}}function ue(s){const o=[],_=s.split(`
|
|
3
3
|
`);for(const I of _){const n=I.trim();if(!n||n.startsWith("─")||n.startsWith("Audit")||n.startsWith("Recent"))continue;const d=n.split(/\s*[|│]\s*/);if(d.length>=3){o.push({key:o.length,time:d[0]||"-",event:d[1]||"-",user:d[2]||"-",level:d[3]||"info",detail:d.slice(4).join(" ")||""});continue}const y=n.match(/^(\d{4}-\d{2}-\d{2}[\sT]\d{2}:\d{2}(?::\d{2})?)\s+(.+)/);if(y){const b=y[2],x=b.match(/\b(INFO|WARN|WARNING|ERROR|CRITICAL)\b/i);o.push({key:o.length,time:y[1],event:b.replace(/\b(INFO|WARN|WARNING|ERROR|CRITICAL)\b/i,"").trim().slice(0,80),user:"-",level:x?x[1].toLowerCase():"info",detail:""})}else n.length>3&&!n.match(/^\d+ event/i)&&o.push({key:o.length,time:"-",event:n.slice(0,80),user:"-",level:"info",detail:""})}return o}function de(s){const o=[],_=s.split(`
|
|
4
4
|
`),I=["#1677ff","#52c41a","#faad14","#ff4d4f"];let n=0;for(const d of _){const y=d.trim();if(!y||y.startsWith("─")||y.startsWith("Audit"))continue;const b=y.match(/^(.+?)\s*[:=:]\s*(.+)$/);if(b){const x=b[1].trim(),h=b[2].trim(),L=h.match(/^(\d+)/);o.push({label:x,value:L?parseInt(L[1],10):h,color:I[n%I.length]}),n++}}return o.length===0&&o.push({label:e("security.audit.totalEvents"),value:F.value.length,color:"#1677ff"},{label:e("security.audit.statusLabel"),value:e("security.audit.ready"),color:"#52c41a"}),o}return we(()=>{W()}),(s,o)=>{const _=p("a-button"),I=p("a-space"),n=p("a-spin"),d=p("a-tag"),y=p("a-empty"),b=p("a-table"),x=p("a-input"),h=p("a-form-item"),L=p("a-form"),pe=p("a-modal"),q=p("a-tab-pane"),G=p("a-card"),Q=p("a-col"),X=p("a-row"),ye=p("a-statistic"),fe=p("a-tabs");return c(),f("div",null,[R("div",Re,[R("div",null,[R("h2",Te,i(l(e)("security.title")),1),R("p",Le,i(l(e)("security.subtitle")),1)]),t(_,{type:"primary",ghost:"",loading:M.value,onClick:ee},{icon:a(()=>[t(l(_e))]),default:a(()=>[m(" "+i(l(e)("security.refresh")),1)]),_:1},8,["loading"])]),t(fe,{activeKey:N.value,"onUpdate:activeKey":o[5]||(o[5]=r=>N.value=r),onChange:te},{default:a(()=>[t(q,{key:"did"},{tab:a(()=>[t(l(xe)),m(" "+i(l(e)("security.tabs.did")),1)]),default:a(()=>[t(I,{style:{"margin-bottom":"16px"}},{default:a(()=>[t(_,{type:"primary",loading:P.value,onClick:le},{icon:a(()=>[t(l(be))]),default:a(()=>[m(" "+i(l(e)("security.did.createButton")),1)]),_:1},8,["loading"]),t(_,{onClick:o[0]||(o[0]=r=>U.value=!0)},{icon:a(()=>[t(l(he))]),default:a(()=>[m(" "+i(l(e)("security.did.signButton")),1)]),_:1})]),_:1}),B.value?(c(),f("div",Oe,[t(n,{size:"large"})])):(c(),O(b,{key:1,columns:ae.value,"data-source":K.value,pagination:{pageSize:20,showTotal:r=>l(e)("security.totals.rows",{count:r})},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"sec-row"},{bodyCell:a(({column:r,record:v})=>[r.key==="did"?(c(),f("span",De,i(v.did),1)):g("",!0),r.key==="method"?(c(),O(d,{key:1,color:"blue"},{default:a(()=>[m(i(v.method),1)]),_:2},1024)):g("",!0),r.key==="created"?(c(),f("span",ze,i(v.created),1)):g("",!0),r.key==="status"?(c(),O(d,{key:3,color:v.isDefault?"green":"default"},{default:a(()=>[m(i(v.isDefault?l(e)("security.did.default"):l(e)("security.did.available")),1)]),_:2},1032,["color"])):g("",!0)]),emptyText:a(()=>[t(y,{description:l(e)("security.did.emptyText")},null,8,["description"])]),_:1},8,["columns","data-source","pagination"])),t(pe,{open:U.value,"onUpdate:open":o[2]||(o[2]=r=>U.value=r),title:l(e)("security.did.signTitle"),"confirm-loading":E.value,onOk:oe,"ok-text":l(e)("security.did.signOk"),"cancel-text":l(e)("common.cancel")},{default:a(()=>[t(L,{"label-col":{span:4},"wrapper-col":{span:20},style:{"margin-top":"16px"}},{default:a(()=>[t(h,{label:l(e)("security.did.messageLabel"),required:""},{default:a(()=>[t(x,{value:S.value,"onUpdate:value":o[1]||(o[1]=r=>S.value=r),placeholder:l(e)("security.did.messagePlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1}),D.value?(c(),f("div",Ae,[R("p",Ne,i(l(e)("security.did.signResultLabel")),1),R("pre",Se,i(D.value),1)])):g("",!0)]),_:1},8,["open","title","confirm-loading","ok-text","cancel-text"])]),_:1}),t(q,{key:"encrypt"},{tab:a(()=>[t(l(Y)),m(" "+i(l(e)("security.tabs.encrypt")),1)]),default:a(()=>[t(X,{gutter:[24,24]},{default:a(()=>[t(Q,{xs:24,md:12},{default:a(()=>[t(G,{title:l(e)("security.encrypt.encryptCardTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(L,{"label-col":{span:6},"wrapper-col":{span:18}},{default:a(()=>[t(h,{label:l(e)("security.encrypt.pathLabel")},{default:a(()=>[t(x,{value:z.value,"onUpdate:value":o[3]||(o[3]=r=>z.value=r),placeholder:l(e)("security.encrypt.encryptPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),t(h,{"wrapper-col":{offset:6,span:18}},{default:a(()=>[t(_,{type:"primary",loading:V.value,disabled:!z.value.trim(),onClick:re},{icon:a(()=>[t(l(Y))]),default:a(()=>[m(" "+i(l(e)("security.encrypt.encryptButton")),1)]),_:1},8,["loading","disabled"])]),_:1})]),_:1}),w.value?(c(),f("div",We,[t(d,{color:w.value.success?"green":"red"},{default:a(()=>[m(i(w.value.success?l(e)("security.encrypt.successTag"):l(e)("security.encrypt.failureTag")),1)]),_:1},8,["color"]),R("pre",Fe,i(w.value.output),1)])):g("",!0)]),_:1},8,["title"])]),_:1}),t(Q,{xs:24,md:12},{default:a(()=>[t(G,{title:l(e)("security.encrypt.decryptCardTitle"),style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:a(()=>[t(L,{"label-col":{span:6},"wrapper-col":{span:18}},{default:a(()=>[t(h,{label:l(e)("security.encrypt.pathLabel")},{default:a(()=>[t(x,{value:A.value,"onUpdate:value":o[4]||(o[4]=r=>A.value=r),placeholder:l(e)("security.encrypt.decryptPlaceholder")},null,8,["value","placeholder"])]),_:1},8,["label"]),t(h,{"wrapper-col":{offset:6,span:18}},{default:a(()=>[t(_,{type:"primary",loading:$.value,disabled:!A.value.trim(),onClick:ie},{icon:a(()=>[t(l(Y))]),default:a(()=>[m(" "+i(l(e)("security.encrypt.decryptButton")),1)]),_:1},8,["loading","disabled"])]),_:1})]),_:1}),C.value?(c(),f("div",Me,[t(d,{color:C.value.success?"green":"red"},{default:a(()=>[m(i(C.value.success?l(e)("security.encrypt.successTag"):l(e)("security.encrypt.failureTag")),1)]),_:1},8,["color"]),R("pre",Be,i(C.value.output),1)])):g("",!0)]),_:1},8,["title"])]),_:1})]),_:1})]),_:1}),t(q,{key:"audit"},{tab:a(()=>[t(l(ke)),m(" "+i(l(e)("security.tabs.audit")),1)]),default:a(()=>[t(X,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:a(()=>[(c(!0),f(Ce,null,Ie(H.value,r=>(c(),O(Q,{xs:12,sm:6,key:r.label},{default:a(()=>[t(G,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"},size:"small"},{default:a(()=>[t(ye,{title:r.label,value:r.value,"value-style":{color:r.color,fontSize:"20px"}},null,8,["title","value","value-style"])]),_:2},1024)]),_:2},1024))),128))]),_:1}),j.value?(c(),f("div",Pe,[t(n,{size:"large"})])):(c(),O(b,{key:1,columns:ne.value,"data-source":F.value,pagination:{pageSize:20,showTotal:r=>l(e)("security.totals.rows",{count:r})},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"sec-row"},{bodyCell:a(({column:r,record:v})=>[r.key==="time"?(c(),f("span",Ee,i(v.time),1)):g("",!0),r.key==="event"?(c(),f("span",Ke,i(v.event),1)):g("",!0),r.key==="user"?(c(),f("span",Ue,i(v.user),1)):g("",!0),r.key==="level"?(c(),O(d,{key:3,color:ce(v.level)},{default:a(()=>[m(i(v.level),1)]),_:2},1032,["color"])):g("",!0),r.key==="detail"?(c(),f("span",Ve,i(v.detail),1)):g("",!0)]),emptyText:a(()=>[t(y,{description:l(e)("security.audit.emptyText")},null,8,["description"])]),_:1},8,["columns","data-source","pagination"]))]),_:1})]),_:1},8,["activeKey"])])}}},Ye=me($e,[["__scopeId","data-v-e07c8b3b"]]);export{Ye as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{_ as K,u as Q}from"./index-
|
|
1
|
+
import{_ as K,u as Q}from"./index-BPtmPFwc.js";import{R as q,a9 as J,m as $,aa as U,f as X,ao as Y,k as Z}from"./icons-B2G69bhT.js";import{o as ee,M as d,R as m,c as e,N as t,r,K as n,L as s,O as b,u as c,P as u,S as g,Q as V,f as te}from"./vendor-Ci2pTZ_t.js";const oe={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},ae={key:0,style:{"margin-top":"6px",color:"var(--text-muted)","font-size":"11px"}},re={style:{"margin-top":"6px",color:"var(--text-muted)","font-size":"11px"}},le={key:0,style:{"margin-top":"6px",color:"var(--text-muted)","font-size":"11px",overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"}},se={key:0,style:{"margin-top":"6px",color:"var(--text-muted)","font-size":"11px"}},ne={key:0,style:{"text-align":"center",padding:"30px"}},ce={key:1,style:{"font-family":"monospace",color:"#ccc"}},ie={key:0,style:{color:"var(--text-secondary)","font-size":"13px",padding:"8px 0"}},de={key:1,style:{color:"var(--text-muted)","font-size":"13px",padding:"8px 0"}},ue={key:0,style:{"margin-top":"16px"}},ve={style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px",color:"#aaa","font-size":"12px","max-height":"300px","overflow-y":"auto","white-space":"pre-wrap"}},pe={__name:"Services",setup(fe){const S=Q(),N=window.__CC_CONFIG__||{},x=r(!1),C=r(!1),y=r(""),W=r(""),z=r(!1),L=r(""),k=r(""),D=r(""),M=r(!1),h=r(""),w=r(""),B=r([]),R=te(()=>S.status==="connected"),E=[{title:"服务",dataIndex:"name",key:"name"},{title:"端口",dataIndex:"port",key:"port"},{title:"状态",key:"status"}];async function I(){x.value=!0;try{const{output:o}=await S.execute("status",15e3);W.value=o,F(o)}catch(o){console.error("status failed:",o)}finally{x.value=!1}}function F(o){z.value=o.includes("Desktop app running")||o.includes("Running");const a=o.match(/Edition:\s+(\S+)/i);a&&(L.value=a[1]);const v=o.match(/LLM:\s+(\S+)\s+\(([^)]+)\)/i);if(v)k.value=v[1],D.value=v[2];else{const l=o.match(/LLM:\s+(\S+)/i);l&&(k.value=l[1])}M.value=o.includes("Setup completed");const p=o.match(/Setup completed \(([^)]+)\)/i);if(p)try{h.value=new Date(p[1]).toLocaleDateString("zh-CN")}catch{h.value=""}o.includes("docker-compose.yml not found")?w.value="未找到 docker-compose.yml":o.includes("Docker Services")&&(w.value="已检测到 Docker 配置");const i=o.split(`
|
|
2
2
|
`).filter(l=>l.match(/[○●]\s+\w+:\s+\d+/));B.value=i.map(l=>{const f=l.match(/([○●])\s+(\w+):\s+(\d+)/);return f?{key:f[2],name:f[2],port:parseInt(f[3]),active:f[1]==="●"}:null}).filter(Boolean)}async function P(){C.value=!0,y.value="";try{const{output:o}=await S.execute("doctor",3e4);y.value=o}catch(o){y.value=`诊断失败: ${o.message}`}finally{C.value=!1}}return ee(I),(o,a)=>{const v=n("a-button"),p=n("a-statistic"),i=n("a-card"),l=n("a-col"),f=n("a-row"),T=n("a-tag"),j=n("a-spin"),A=n("a-badge"),G=n("a-table"),H=n("a-space");return s(),d("div",null,[m("div",oe,[a[3]||(a[3]=m("div",null,[m("h2",{class:"page-title"},"服务管理"),m("p",{class:"page-sub"},"ChainlessChain 运行状态与服务控制")],-1)),e(v,{type:"primary",ghost:"",loading:x.value,onClick:I},{icon:t(()=>[e(c(q))]),default:t(()=>[a[2]||(a[2]=b(" 刷新 ",-1))]),_:1},8,["loading"])]),e(f,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:t(()=>[e(l,{xs:24,sm:12,lg:6},{default:t(()=>[e(i,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(p,{title:"应用状态",value:z.value?"运行中":"未运行","value-style":{color:z.value?"#52c41a":"#888",fontSize:"16px"}},{prefix:t(()=>[e(c(J))]),_:1},8,["value","value-style"]),L.value?(s(),d("div",ae,"版本: "+u(L.value),1)):g("",!0)]),_:1})]),_:1}),e(l,{xs:24,sm:12,lg:6},{default:t(()=>[e(i,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(p,{title:"WebSocket 服务",value:"运行中","value-style":{color:"#52c41a",fontSize:"16px"}},{prefix:t(()=>[e(c($))]),_:1}),m("div",re," 端口: "+u(c(N).wsPort||18800)+" · "+u(c(N).wsHost||"127.0.0.1"),1)]),_:1})]),_:1}),e(l,{xs:24,sm:12,lg:6},{default:t(()=>[e(i,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(p,{title:"LLM 提供商",value:k.value||"未配置","value-style":{color:k.value?"#1677ff":"#888",fontSize:"16px"}},{prefix:t(()=>[e(c(U))]),_:1},8,["value","value-style"]),D.value?(s(),d("div",le,u(D.value),1)):g("",!0)]),_:1})]),_:1}),e(l,{xs:24,sm:12,lg:6},{default:t(()=>[e(i,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(p,{title:"初始化",value:M.value?"已完成":"未完成","value-style":{color:M.value?"#52c41a":"#faad14",fontSize:"16px"}},{prefix:t(()=>[e(c(X))]),_:1},8,["value","value-style"]),h.value?(s(),d("div",se,u(h.value),1)):g("",!0)]),_:1})]),_:1})]),_:1}),e(i,{title:"端口状态",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"}},{extra:t(()=>[e(T,{color:R.value?"green":"red"},{default:t(()=>[b(" WS "+u(R.value?"已连接":"断开"),1)]),_:1},8,["color"])]),default:t(()=>[x.value?(s(),d("div",ne,[e(j)])):(s(),V(G,{key:1,columns:E,"data-source":B.value,pagination:!1,size:"small","row-class-name":_=>_.active?"port-active":""},{bodyCell:t(({column:_,record:O})=>[_.key==="status"?(s(),V(A,{key:0,status:O.active?"success":"default",text:O.active?"运行中":"未运行"},null,8,["status","text"])):g("",!0),_.key==="port"?(s(),d("span",ce,u(O.port),1)):g("",!0)]),_:1},8,["data-source","row-class-name"]))]),_:1}),e(i,{title:"Docker 服务",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"}},{default:t(()=>[w.value?(s(),d("div",ie,u(w.value),1)):(s(),d("div",de,"未检测到 Docker 服务"))]),_:1}),e(i,{title:"快速操作",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(H,{wrap:""},{default:t(()=>[e(v,{loading:C.value,onClick:P,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:t(()=>[e(c(Y))]),default:t(()=>[a[4]||(a[4]=b(" 环境诊断 ",-1))]),_:1},8,["loading"]),e(v,{onClick:a[0]||(a[0]=_=>o.$router.push("/logs")),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:t(()=>[e(c(Z))]),default:t(()=>[a[5]||(a[5]=b(" 查看日志 ",-1))]),_:1}),e(v,{onClick:a[1]||(a[1]=_=>o.$router.push("/providers")),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:t(()=>[e(c($))]),default:t(()=>[a[6]||(a[6]=b(" LLM 配置 ",-1))]),_:1})]),_:1}),y.value?(s(),d("div",ue,[a[7]||(a[7]=m("div",{style:{color:"var(--text-secondary)","font-size":"11px","margin-bottom":"6px"}},"诊断结果",-1)),m("pre",ve,u(y.value),1)])):g("",!0)]),_:1})])}}},ye=K(pe,[["__scopeId","data-v-13be6bfe"]]);export{ye as default};
|