chatlab-cli 0.22.0 → 0.22.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/dist/{chunk-6GLMVWGA.mjs → chunk-LZ3W6NS5.mjs} +9 -9
  2. package/dist/{chunk-3UBWLWXB.mjs → chunk-OC2W5Q5T.mjs} +2 -2
  3. package/dist/{chunk-4U45E7TO.mjs → chunk-QRC3RSER.mjs} +2 -2
  4. package/dist/{chunk-QJQJIUUS.mjs → chunk-SQKT45MM.mjs} +73 -25
  5. package/dist/chunk-SQKT45MM.mjs.map +1 -0
  6. package/dist/{chunk-AMMSVJG4.mjs → chunk-XPBPKH6B.mjs} +32 -13
  7. package/dist/chunk-XPBPKH6B.mjs.map +1 -0
  8. package/dist/{chunk-D2XJ4Z7G.mjs → chunk-Z2LYMKCC.mjs} +2 -2
  9. package/dist/cli.mjs +2 -2
  10. package/dist/{http-R5UECMPJ.mjs → http-O5P4BYXU.mjs} +6 -6
  11. package/dist/{import-3LOWRXWA.mjs → import-BDLL3DG7.mjs} +4 -4
  12. package/dist/index.mjs +6 -6
  13. package/dist/{mcp-WBHNLED2.mjs → mcp-L2TPZFE7.mjs} +3 -3
  14. package/dist/{src-UHM2UDRD.mjs → src-FVJL5ENA.mjs} +2 -2
  15. package/dist/{stream-import-V6Z7DXSW.mjs → stream-import-ZTEW3YVL.mjs} +3 -3
  16. package/dist-web/assets/{DebugToolsPanel.vue_vue_type_script_setup_true_lang-CxYyne-Q.js → DebugToolsPanel.vue_vue_type_script_setup_true_lang-CqacsKDU.js} +1 -1
  17. package/dist-web/assets/{MessageExportModal-De5_tX6a.js → MessageExportModal-D1GY6WSV.js} +1 -1
  18. package/dist-web/assets/{electron-H65bUnhW.js → electron-CsUM2O_Y.js} +1 -1
  19. package/dist-web/assets/{fetch-cFjLAPG2.js → fetch-BOogCPfg.js} +1 -1
  20. package/dist-web/assets/{fetch-Q-PqsiMb.js → fetch-CxwnEEqk.js} +1 -1
  21. package/dist-web/assets/index-CM29Kc4p.js +173 -0
  22. package/dist-web/assets/index-D183wYuz.js +7 -0
  23. package/dist-web/assets/{index-BJUGnYn5.js → index-DOwQB7In.js} +1 -1
  24. package/dist-web/assets/index-DSpvXged.css +1 -0
  25. package/dist-web/assets/{index-D_ksezTw.js → index-DTxRy2FH.js} +3 -3
  26. package/dist-web/assets/{index-B_31fXeB.js → index-grds3iG-.js} +2 -2
  27. package/dist-web/assets/{web-CZe0Ismu.js → web-Cx5APyCN.js} +1 -1
  28. package/dist-web/index.html +2 -2
  29. package/package.json +1 -1
  30. package/dist/chunk-AMMSVJG4.mjs.map +0 -1
  31. package/dist/chunk-QJQJIUUS.mjs.map +0 -1
  32. package/dist-web/assets/index-CbOwHYzO.css +0 -1
  33. package/dist-web/assets/index-DKMUn8F5.js +0 -173
  34. package/dist-web/assets/index-Dhg3SDb6.js +0 -7
  35. /package/dist/{chunk-6GLMVWGA.mjs.map → chunk-LZ3W6NS5.mjs.map} +0 -0
  36. /package/dist/{chunk-3UBWLWXB.mjs.map → chunk-OC2W5Q5T.mjs.map} +0 -0
  37. /package/dist/{chunk-4U45E7TO.mjs.map → chunk-QRC3RSER.mjs.map} +0 -0
  38. /package/dist/{chunk-D2XJ4Z7G.mjs.map → chunk-Z2LYMKCC.mjs.map} +0 -0
  39. /package/dist/{http-R5UECMPJ.mjs.map → http-O5P4BYXU.mjs.map} +0 -0
  40. /package/dist/{import-3LOWRXWA.mjs.map → import-BDLL3DG7.mjs.map} +0 -0
  41. /package/dist/{mcp-WBHNLED2.mjs.map → mcp-L2TPZFE7.mjs.map} +0 -0
  42. /package/dist/{src-UHM2UDRD.mjs.map → src-FVJL5ENA.mjs.map} +0 -0
  43. /package/dist/{stream-import-V6Z7DXSW.mjs.map → stream-import-ZTEW3YVL.mjs.map} +0 -0
@@ -1,5 +1,5 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/EChartWordcloud-Ubal_aYg.js","assets/vendor-echarts-wordcloud-CZ9gsX8l.js","assets/vendor-echarts-C5u62NnM.js","assets/vendor-zrender-DFl4U2Oe.js","assets/vendor-reka-ui-CW2cIgMu.js","assets/MessageExportModal-De5_tX6a.js","assets/vendor-nuxt-ui-7OAuiz_i.js","assets/index-Dhg3SDb6.js","assets/vendor-snapdom-XnBoh1gd.js","assets/index-CbOwHYzO.css","assets/DebugToolsPanel.vue_vue_type_script_setup_true_lang-CxYyne-Q.js","assets/index-BJUGnYn5.js","assets/DebugToolsPanel-DkbsB6lr.css"])))=>i.map(i=>d[i]);
2
- import{_ as ze}from"./vendor-snapdom-XnBoh1gd.js";import{l as st,g as _e,a as ge,j as at,b as we,k as Fe,c as nt,e as Be,_ as Ue,p as ot,C as it,u as rt,d as lt}from"./vendor-nuxt-ui-7OAuiz_i.js";import{b as A,d as ke,F as Re,p as P,G as r,P as I,Q as Z,a5 as s,Z as q,a3 as te,T as x,O as He,J as ct,H as N,a0 as be,h as D,w as G,u as t,K as V,L as $,U,R as Q,bI as We,a9 as je,bJ as dt,au as Pe,bF as qe,n as Se,bD as Ne,i as ut}from"./vendor-reka-ui-CW2cIgMu.js";import{n as mt,u as se,i as Ae,T as ce,h as ue,o as gt,p as Ye,_ as Le,q as pt,d as ht,a as vt,s as ft}from"./index-Dhg3SDb6.js";import{a as Te}from"./index-BJUGnYn5.js";import{_ as ae,a as K,g as Ge,b as yt,c as ne,d as le,e as xt,f as De,h as bt,i as Ve,j as _t,u as kt,k as wt,l as $t,m as It,n as Ct,o as St,p as Mt,q as Tt,r as Dt,s as Rt,t as Nt,P as At,v as Lt,w as Vt,x as Et,y as Ot,C as zt,z as Ft,A as Bt,D as Ut,B as Ht}from"./DebugToolsPanel.vue_vue_type_script_setup_true_lang-CxYyne-Q.js";import"./vendor-echarts-wordcloud-CZ9gsX8l.js";import{u as Je,i as Wt,j as Ke,k as jt,m as Qe,n as Xe,o as Pt,p as qt,q as Yt}from"./vendor-echarts-C5u62NnM.js";import"./vendor-zrender-DFl4U2Oe.js";function Gt(l,a={}){const{threshold:e=300,containerSelector:o=".overflow-y-auto",scrollLockDuration:c=800}=a,u=A(l[0]?.id||"");let d=!1;const g=A(null);let p=null;function _(){if(d)return;const m=[];l.forEach(i=>{const h=document.getElementById(i.id);if(h){const f=h.getBoundingClientRect();m.push({id:i.id,top:Math.round(f.top)})}});let n=0;for(let i=0;i<m.length;i++){if(m[i].top>e){n=Math.max(0,i-1);break}n=i}u.value=l[n]?.id||""}function y(m){const n=document.getElementById(m);n&&(u.value=m,d=!0,n.scrollIntoView({behavior:"smooth",block:"start"}),setTimeout(()=>{d=!1,_()},c))}return ke(()=>{p=g.value?.closest(o)||null,p&&(p.addEventListener("scroll",_,{passive:!0}),_())}),Re(()=>{p&&p.removeEventListener("scroll",_)}),{contentRef:g,activeAnchor:u,scrollToAnchor:y,updateActiveAnchor:_}}const Jt={class:"sticky top-24 space-y-6"},Kt={class:"border-l border-gray-200 dark:border-gray-800"},Qt=["onClick"],Xt=P({__name:"PageAnchorsNav",props:{anchors:{},activeAnchor:{},width:{default:"w-44"},hideOnMobile:{type:Boolean,default:!0}},emits:["click"],setup(l,{emit:a}){const e=a;function o(c){e("click",c)}return(c,u)=>(r(),I("div",{class:Z([l.width,"shrink-0",l.hideOnMobile?"hidden lg:block":""])},[s("div",Jt,[s("nav",null,[s("div",Kt,[(r(!0),I(q,null,te(l.anchors,d=>(r(),I("button",{key:d.id,class:Z(["-ml-px block border-l-2 py-1.5 pl-4 text-left text-sm transition-colors",[l.activeAnchor===d.id?"border-pink-500 font-medium text-pink-600 dark:text-pink-400":"border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-300"]]),onClick:g=>o(d.id)},x(d.label),11,Qt))),128))])]),He(c.$slots,"default")])],2))}}),me=P({__name:"TopNSelect",props:{modelValue:{default:10},modelModifiers:{}},emits:["update:modelValue"],setup(l){const a=ct(l,"modelValue"),e=[{label:"Top 5",value:5},{label:"Top 10",value:10},{label:"Top 20",value:20},{label:"Top 30",value:30},{label:"Top 50",value:50},{label:"Top 100",value:100}];return(o,c)=>{const u=st;return r(),N(u,{modelValue:a.value,"onUpdate:modelValue":c[0]||(c[0]=d=>a.value=d),items:e,"value-key":"value",class:"w-25"},null,8,["modelValue"])}}}),ye=P({__name:"ScrollableChart",props:{contentHeight:{},maxHeightVh:{default:60},paddingClass:{default:"px-3 py-2"}},setup(l){const a=l,e=D(()=>typeof window>"u"?500:Math.round(window.innerHeight*a.maxHeightVh/100)),o=D(()=>a.contentHeight>e.value),c=D(()=>({maxHeight:`${a.maxHeightVh}vh`,overflowY:o.value?"auto":"hidden"}));return(u,d)=>(r(),I("div",{class:Z(l.paddingClass),style:be(c.value)},[He(u.$slots,"default")],6))}}),Zt=P({__name:"EChartGraph",props:{data:{},height:{default:400},layout:{default:"circular"},directed:{type:Boolean,default:!1}},setup(l,{expose:a}){Je([Wt,Ke,jt,Qe]);const e=l,o=D(()=>typeof e.height=="number"?`${e.height}px`:e.height),c=mt(),u=A(null);let d=null;const g=["#ee4567","#5470c6","#91cc75","#fac858","#ee6666","#73c0de","#9a60b4","#fc8452","#3ba272","#ea7ccc","#6e7074","#546570"],p=D(()=>{const b=new Set;return e.data.nodes.filter(k=>b.has(k.name)?!1:(b.add(k.name),!0))}),_=D(()=>{const b=new Map;return p.value.forEach((k,C)=>{b.set(k.name,g[C%g.length])}),b});function y(b,k){return k<=0?1:1+b/k*5}const m=D(()=>{const b=e.data.maxLinkValue||Math.max(...e.data.links.map(k=>k.value||1),1);return{tooltip:{trigger:"item",backgroundColor:c.value?"rgba(30, 30, 30, 0.9)":"rgba(255, 255, 255, 0.95)",borderColor:c.value?"rgba(255, 255, 255, 0.1)":"rgba(0, 0, 0, 0.1)",textStyle:{color:c.value?"#e5e7eb":"#374151"},formatter:k=>k.dataType==="node"?`<b>${k.data.name}</b><br/>消息数: ${k.data.value||0}`:k.dataType==="edge"?`${k.data.source} → ${k.data.target}<br/>艾特次数: ${k.data.value||0}`:""},animationDuration:1e3,animationDurationUpdate:500,animationEasingUpdate:"quinticInOut",series:[{type:"graph",layout:e.layout,circular:e.layout==="circular"?{rotateLabel:!0}:void 0,force:e.layout==="force"?{repulsion:300,gravity:.1,edgeLength:[80,200],friction:.6}:void 0,roam:!0,scaleLimit:{min:.3,max:3},draggable:!0,label:{show:!0,position:"right",formatter:"{b}",color:c.value?"#e5e7eb":"#374151",fontSize:11,fontWeight:500},edgeSymbol:e.directed?["none","arrow"]:["none","none"],edgeSymbolSize:e.directed?[0,10]:[0,0],lineStyle:{curveness:.3,opacity:.5},emphasis:{focus:"adjacency",label:{show:!0,fontSize:13,fontWeight:600},lineStyle:{width:4,opacity:.9},itemStyle:{shadowBlur:15,shadowColor:"rgba(0, 0, 0, 0.3)"}},data:p.value.map(k=>{const C=_.value.get(k.name)||g[0];return{name:k.name,value:k.value,symbolSize:k.symbolSize||30,label:{show:e.layout==="circular"?!0:(k.symbolSize||30)>30},itemStyle:{color:C,borderColor:"#fff",borderWidth:2,shadowBlur:5,shadowColor:`${C}66`}}}),links:e.data.links.filter(k=>_.value.has(k.source)&&_.value.has(k.target)).map(k=>{const C=_.value.get(k.source)||g[0];return{source:k.source,target:k.target,value:k.value,lineStyle:{color:C,width:y(k.value||1,b)}}})}]}});function n(){u.value&&(d=Xe(u.value,c.value?"dark":void 0,{renderer:"canvas"}),d.setOption({backgroundColor:"transparent",...m.value}))}function i(){d&&d.setOption({backgroundColor:"transparent",...m.value},{notMerge:!0})}function h(){d?.resize()}function f(){d&&d.dispatchAction({type:"restore"})}return a({resetView:f}),G([()=>e.data,()=>e.layout,()=>e.directed,c],()=>{d?i():n()},{deep:!0}),ke(()=>{n(),window.addEventListener("resize",h)}),Re(()=>{window.removeEventListener("resize",h),d?.dispose()}),(b,k)=>(r(),I("div",{ref_key:"chartRef",ref:u,style:be({height:o.value,width:"100%"})},null,4))}}),es={class:"px-3 py-2"},$e=P({__name:"EChartRank",props:{members:{},title:{},description:{},topN:{default:10},unit:{default:"条"},height:{default:"auto"},maxHeightVh:{default:60},bare:{type:Boolean,default:!1}},setup(l){const a=l,e=D(()=>a.members.slice(0,a.topN)),o=D(()=>{if(a.height!=="auto")return a.height;const g=e.value.length*36;return Math.max(g+30,180)}),c={type:"linear",x:0,y:0,x2:1,y2:0,colorStops:[{offset:0,color:"#ee4567"},{offset:1,color:"#f7758c"}]};function u(g,p=8){return g.length<=p?g:g.slice(0,p)+"…"}const d=D(()=>{const g=[...e.value].reverse(),p=g.map(n=>u(n.name)),_=g.map(n=>n.value),y=Math.max(..._,1),m=g.map(n=>({value:n.value,itemStyle:{color:c,borderRadius:[0,4,4,0]}}));return{tooltip:{trigger:"axis",axisPointer:{type:"shadow"},backgroundColor:"rgba(0, 0, 0, 0.8)",borderColor:"transparent",textStyle:{color:"#fff"},formatter:n=>{const i=n[0];if(!i)return"";const h=e.value.length-1-i.dataIndex,f=e.value[h];return`
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/EChartWordcloud-Ubal_aYg.js","assets/vendor-echarts-wordcloud-CZ9gsX8l.js","assets/vendor-echarts-C5u62NnM.js","assets/vendor-zrender-DFl4U2Oe.js","assets/vendor-reka-ui-CW2cIgMu.js","assets/MessageExportModal-D1GY6WSV.js","assets/vendor-nuxt-ui-7OAuiz_i.js","assets/index-D183wYuz.js","assets/vendor-snapdom-XnBoh1gd.js","assets/index-DSpvXged.css","assets/DebugToolsPanel.vue_vue_type_script_setup_true_lang-CqacsKDU.js","assets/index-DOwQB7In.js","assets/DebugToolsPanel-DkbsB6lr.css"])))=>i.map(i=>d[i]);
2
+ import{_ as ze}from"./vendor-snapdom-XnBoh1gd.js";import{l as st,g as _e,a as ge,j as at,b as we,k as Fe,c as nt,e as Be,_ as Ue,p as ot,C as it,u as rt,d as lt}from"./vendor-nuxt-ui-7OAuiz_i.js";import{b as A,d as ke,F as Re,p as P,G as r,P as I,Q as Z,a5 as s,Z as q,a3 as te,T as x,O as He,J as ct,H as N,a0 as be,h as D,w as G,u as t,K as V,L as $,U,R as Q,bI as We,a9 as je,bJ as dt,au as Pe,bF as qe,n as Se,bD as Ne,i as ut}from"./vendor-reka-ui-CW2cIgMu.js";import{n as mt,u as se,i as Ae,T as ce,h as ue,o as gt,p as Ye,_ as Le,q as pt,d as ht,a as vt,s as ft}from"./index-D183wYuz.js";import{a as Te}from"./index-DOwQB7In.js";import{_ as ae,a as K,g as Ge,b as yt,c as ne,d as le,e as xt,f as De,h as bt,i as Ve,j as _t,u as kt,k as wt,l as $t,m as It,n as Ct,o as St,p as Mt,q as Tt,r as Dt,s as Rt,t as Nt,P as At,v as Lt,w as Vt,x as Et,y as Ot,C as zt,z as Ft,A as Bt,D as Ut,B as Ht}from"./DebugToolsPanel.vue_vue_type_script_setup_true_lang-CqacsKDU.js";import"./vendor-echarts-wordcloud-CZ9gsX8l.js";import{u as Je,i as Wt,j as Ke,k as jt,m as Qe,n as Xe,o as Pt,p as qt,q as Yt}from"./vendor-echarts-C5u62NnM.js";import"./vendor-zrender-DFl4U2Oe.js";function Gt(l,a={}){const{threshold:e=300,containerSelector:o=".overflow-y-auto",scrollLockDuration:c=800}=a,u=A(l[0]?.id||"");let d=!1;const g=A(null);let p=null;function _(){if(d)return;const m=[];l.forEach(i=>{const h=document.getElementById(i.id);if(h){const f=h.getBoundingClientRect();m.push({id:i.id,top:Math.round(f.top)})}});let n=0;for(let i=0;i<m.length;i++){if(m[i].top>e){n=Math.max(0,i-1);break}n=i}u.value=l[n]?.id||""}function y(m){const n=document.getElementById(m);n&&(u.value=m,d=!0,n.scrollIntoView({behavior:"smooth",block:"start"}),setTimeout(()=>{d=!1,_()},c))}return ke(()=>{p=g.value?.closest(o)||null,p&&(p.addEventListener("scroll",_,{passive:!0}),_())}),Re(()=>{p&&p.removeEventListener("scroll",_)}),{contentRef:g,activeAnchor:u,scrollToAnchor:y,updateActiveAnchor:_}}const Jt={class:"sticky top-24 space-y-6"},Kt={class:"border-l border-gray-200 dark:border-gray-800"},Qt=["onClick"],Xt=P({__name:"PageAnchorsNav",props:{anchors:{},activeAnchor:{},width:{default:"w-44"},hideOnMobile:{type:Boolean,default:!0}},emits:["click"],setup(l,{emit:a}){const e=a;function o(c){e("click",c)}return(c,u)=>(r(),I("div",{class:Z([l.width,"shrink-0",l.hideOnMobile?"hidden lg:block":""])},[s("div",Jt,[s("nav",null,[s("div",Kt,[(r(!0),I(q,null,te(l.anchors,d=>(r(),I("button",{key:d.id,class:Z(["-ml-px block border-l-2 py-1.5 pl-4 text-left text-sm transition-colors",[l.activeAnchor===d.id?"border-pink-500 font-medium text-pink-600 dark:text-pink-400":"border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-300"]]),onClick:g=>o(d.id)},x(d.label),11,Qt))),128))])]),He(c.$slots,"default")])],2))}}),me=P({__name:"TopNSelect",props:{modelValue:{default:10},modelModifiers:{}},emits:["update:modelValue"],setup(l){const a=ct(l,"modelValue"),e=[{label:"Top 5",value:5},{label:"Top 10",value:10},{label:"Top 20",value:20},{label:"Top 30",value:30},{label:"Top 50",value:50},{label:"Top 100",value:100}];return(o,c)=>{const u=st;return r(),N(u,{modelValue:a.value,"onUpdate:modelValue":c[0]||(c[0]=d=>a.value=d),items:e,"value-key":"value",class:"w-25"},null,8,["modelValue"])}}}),ye=P({__name:"ScrollableChart",props:{contentHeight:{},maxHeightVh:{default:60},paddingClass:{default:"px-3 py-2"}},setup(l){const a=l,e=D(()=>typeof window>"u"?500:Math.round(window.innerHeight*a.maxHeightVh/100)),o=D(()=>a.contentHeight>e.value),c=D(()=>({maxHeight:`${a.maxHeightVh}vh`,overflowY:o.value?"auto":"hidden"}));return(u,d)=>(r(),I("div",{class:Z(l.paddingClass),style:be(c.value)},[He(u.$slots,"default")],6))}}),Zt=P({__name:"EChartGraph",props:{data:{},height:{default:400},layout:{default:"circular"},directed:{type:Boolean,default:!1}},setup(l,{expose:a}){Je([Wt,Ke,jt,Qe]);const e=l,o=D(()=>typeof e.height=="number"?`${e.height}px`:e.height),c=mt(),u=A(null);let d=null;const g=["#ee4567","#5470c6","#91cc75","#fac858","#ee6666","#73c0de","#9a60b4","#fc8452","#3ba272","#ea7ccc","#6e7074","#546570"],p=D(()=>{const b=new Set;return e.data.nodes.filter(k=>b.has(k.name)?!1:(b.add(k.name),!0))}),_=D(()=>{const b=new Map;return p.value.forEach((k,C)=>{b.set(k.name,g[C%g.length])}),b});function y(b,k){return k<=0?1:1+b/k*5}const m=D(()=>{const b=e.data.maxLinkValue||Math.max(...e.data.links.map(k=>k.value||1),1);return{tooltip:{trigger:"item",backgroundColor:c.value?"rgba(30, 30, 30, 0.9)":"rgba(255, 255, 255, 0.95)",borderColor:c.value?"rgba(255, 255, 255, 0.1)":"rgba(0, 0, 0, 0.1)",textStyle:{color:c.value?"#e5e7eb":"#374151"},formatter:k=>k.dataType==="node"?`<b>${k.data.name}</b><br/>消息数: ${k.data.value||0}`:k.dataType==="edge"?`${k.data.source} → ${k.data.target}<br/>艾特次数: ${k.data.value||0}`:""},animationDuration:1e3,animationDurationUpdate:500,animationEasingUpdate:"quinticInOut",series:[{type:"graph",layout:e.layout,circular:e.layout==="circular"?{rotateLabel:!0}:void 0,force:e.layout==="force"?{repulsion:300,gravity:.1,edgeLength:[80,200],friction:.6}:void 0,roam:!0,scaleLimit:{min:.3,max:3},draggable:!0,label:{show:!0,position:"right",formatter:"{b}",color:c.value?"#e5e7eb":"#374151",fontSize:11,fontWeight:500},edgeSymbol:e.directed?["none","arrow"]:["none","none"],edgeSymbolSize:e.directed?[0,10]:[0,0],lineStyle:{curveness:.3,opacity:.5},emphasis:{focus:"adjacency",label:{show:!0,fontSize:13,fontWeight:600},lineStyle:{width:4,opacity:.9},itemStyle:{shadowBlur:15,shadowColor:"rgba(0, 0, 0, 0.3)"}},data:p.value.map(k=>{const C=_.value.get(k.name)||g[0];return{name:k.name,value:k.value,symbolSize:k.symbolSize||30,label:{show:e.layout==="circular"?!0:(k.symbolSize||30)>30},itemStyle:{color:C,borderColor:"#fff",borderWidth:2,shadowBlur:5,shadowColor:`${C}66`}}}),links:e.data.links.filter(k=>_.value.has(k.source)&&_.value.has(k.target)).map(k=>{const C=_.value.get(k.source)||g[0];return{source:k.source,target:k.target,value:k.value,lineStyle:{color:C,width:y(k.value||1,b)}}})}]}});function n(){u.value&&(d=Xe(u.value,c.value?"dark":void 0,{renderer:"canvas"}),d.setOption({backgroundColor:"transparent",...m.value}))}function i(){d&&d.setOption({backgroundColor:"transparent",...m.value},{notMerge:!0})}function h(){d?.resize()}function f(){d&&d.dispatchAction({type:"restore"})}return a({resetView:f}),G([()=>e.data,()=>e.layout,()=>e.directed,c],()=>{d?i():n()},{deep:!0}),ke(()=>{n(),window.addEventListener("resize",h)}),Re(()=>{window.removeEventListener("resize",h),d?.dispose()}),(b,k)=>(r(),I("div",{ref_key:"chartRef",ref:u,style:be({height:o.value,width:"100%"})},null,4))}}),es={class:"px-3 py-2"},$e=P({__name:"EChartRank",props:{members:{},title:{},description:{},topN:{default:10},unit:{default:"条"},height:{default:"auto"},maxHeightVh:{default:60},bare:{type:Boolean,default:!1}},setup(l){const a=l,e=D(()=>a.members.slice(0,a.topN)),o=D(()=>{if(a.height!=="auto")return a.height;const g=e.value.length*36;return Math.max(g+30,180)}),c={type:"linear",x:0,y:0,x2:1,y2:0,colorStops:[{offset:0,color:"#ee4567"},{offset:1,color:"#f7758c"}]};function u(g,p=8){return g.length<=p?g:g.slice(0,p)+"…"}const d=D(()=>{const g=[...e.value].reverse(),p=g.map(n=>u(n.name)),_=g.map(n=>n.value),y=Math.max(..._,1),m=g.map(n=>({value:n.value,itemStyle:{color:c,borderRadius:[0,4,4,0]}}));return{tooltip:{trigger:"axis",axisPointer:{type:"shadow"},backgroundColor:"rgba(0, 0, 0, 0.8)",borderColor:"transparent",textStyle:{color:"#fff"},formatter:n=>{const i=n[0];if(!i)return"";const h=e.value.length-1-i.dataIndex,f=e.value[h];return`
3
3
  <div style="padding: 4px 8px;">
4
4
  <div style="font-weight: bold; margin-bottom: 4px;">${f.name}</div>
5
5
  <div>${f.value} ${a.unit} (${f.percentage}%)</div>
@@ -160,4 +160,4 @@ import{_ as ze}from"./vendor-snapdom-XnBoh1gd.js";import{l as st,g as _e,a as ge
160
160
  FROM message msg
161
161
  JOIN member m ON msg.sender_id = m.id
162
162
  WHERE 1=1 ${eo} ${e}
163
- ORDER BY msg.ts ASC, msg.id ASC`,o)}function no(l){const{members:a,messages:e,options:o}=l;function c(R,O){return R<O?`${R}-${O}`:`${O}-${R}`}function u(R){return Math.round(R*100)/100}const d={nodes:[],links:[],maxLinkValue:0,communities:[],stats:{totalMembers:0,totalMessages:0,involvedMembers:0,edgeCount:0,communityCount:0}};if(a.length<2)return{...d,stats:{...d.stats,totalMembers:a.length}};const g=new Map;for(const R of a)g.set(R.id,{name:R.name,platformId:R.platformId,messageCount:R.messageCount});if(e.length<2)return{...d,stats:{...d.stats,totalMembers:a.length,totalMessages:e.length}};const p=new Map;for(const R of e)p.set(R.senderId,(p.get(R.senderId)||0)+1);const _=e.length,y=new Map,m=new Map;for(let R=0;R<e.length-1;R++){const O=e[R],E=new Set;let j=0;for(let X=R+1;X<e.length&&j<o.lookAhead;X++){const ee=e[X];if(ee.senderId===O.senderId||E.has(ee.senderId))continue;E.add(ee.senderId),j++;const re=(ee.ts-O.ts)/1e3,oe=Math.exp(-re/o.decaySeconds),de=1-(j-1)*.2,z=oe*de,F=c(O.senderId,ee.senderId);y.set(F,(y.get(F)||0)+z),m.set(F,(m.get(F)||0)+1)}}const n=o.lookAhead*.8,i=[];for(const[R,O]of y){const[E,j]=R.split("-"),X=parseInt(E),ee=parseInt(j),re=p.get(X)||0,oe=p.get(ee)||0,de=re*oe/_*n,z=de>0?O/de:0;i.push({sourceId:X,targetId:ee,rawScore:O,expectedScore:de,normalizedScore:z,coOccurrenceCount:m.get(R)||0})}const h=Math.max(...i.map(R=>R.rawScore),1),f=Math.max(...i.map(R=>R.normalizedScore),1),b=i.map(R=>{const O=.5*(R.rawScore/h)+.5*(R.normalizedScore/f);return{...R,rawScore:u(R.rawScore),expectedScore:u(R.expectedScore),normalizedScore:u(R.normalizedScore),hybridScore:u(O)}});b.sort((R,O)=>O.hybridScore-R.hybridScore);const k=b.slice(0,o.topEdges);if(k.length===0)return{...d,stats:{...d.stats,totalMembers:a.length,totalMessages:e.length}};const C=new Set;for(const R of k)C.add(R.sourceId),C.add(R.targetId);const v=new Map;for(const R of k)v.set(R.sourceId,(v.get(R.sourceId)||0)+R.hybridScore),v.set(R.targetId,(v.get(R.targetId)||0)+R.hybridScore);const w=Math.max(...v.values(),1),S=new Map;for(const R of C){const O=g.get(R)?.name||String(R);S.set(O,(S.get(O)||0)+1)}const M=new Map;for(const R of C){const O=g.get(R),E=O?.name||String(R);(S.get(E)||0)>1?M.set(R,`${E}#${(O?.platformId||String(R)).slice(-4)}`):M.set(R,E)}const T=Math.max(...[...C].map(R=>g.get(R)?.messageCount||0),1),L=[...C].map(R=>{const O=g.get(R),E=v.get(R)||0,j=E/w,X=O.messageCount/T,ee=20+(.7*j+.3*X)*35;return{id:R,name:M.get(R),messageCount:O.messageCount,symbolSize:Math.round(ee),degree:u(E),normalizedDegree:u(j)}});L.sort((R,O)=>O.degree-R.degree);const W=k.length>0?Math.max(...k.map(R=>R.hybridScore)):0,H=k.map(R=>({source:M.get(R.sourceId),target:M.get(R.targetId),value:R.hybridScore,rawScore:R.rawScore,expectedScore:R.expectedScore,coOccurrenceCount:R.coOccurrenceCount}));return{nodes:L,links:H,maxLinkValue:u(W),communities:[],stats:{totalMembers:a.length,totalMessages:e.length,involvedMembers:C.size,edgeCount:k.length,communityCount:0}}}async function oo(l,a,e){const o={nodes:[],links:[],maxLinkValue:0,communities:[],stats:{totalMembers:0,totalMessages:0,involvedMembers:0,edgeCount:0,communityCount:0}};try{const[c,u]=await Promise.all([so(l),ao(l,a)]);if(c.length<2||u.length<2)return{...o,stats:{...o.stats,totalMembers:c.length,totalMessages:u.length}};const d={...Zn,...e};return await window.chatApi.pluginCompute(no.toString(),{members:c,messages:u,options:d})}catch(c){return console.error("[chart-cluster] Failed to load cluster graph:",c),o}}const io={class:"mx-auto max-w-[920px] p-4 h-full"},ro={class:"flex h-full flex-col rounded-lg border border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-900 shadow-sm overflow-hidden"},lo={class:"flex items-center justify-between px-4 py-3 border-b border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800/50"},co={class:"flex items-center gap-3"},uo={class:"flex items-center gap-3"},mo={class:"p-3 w-64"},go={class:"text-sm font-medium mb-3"},po={class:"space-y-3"},ho={class:"text-xs text-gray-500 mb-1 block"},vo={class:"text-xs text-gray-400 mt-1"},fo={class:"text-xs text-gray-500 mb-1 block"},yo={class:"text-xs text-gray-400 mt-1"},xo={class:"flex-1 min-h-0 overflow-hidden"},bo={key:0,class:"h-full flex items-center justify-center"},_o={key:1,class:"h-full flex items-center justify-center"},ko={class:"text-center text-gray-400"},wo={key:2,class:"h-full"},$o={key:3,class:"h-full flex overflow-hidden"},Io={class:"w-64 border-r border-gray-200 dark:border-gray-700 flex flex-col overflow-hidden"},Co={class:"px-4 py-3 border-b border-gray-200 dark:border-gray-700"},So={class:"text-sm font-medium flex items-center gap-2"},Mo={class:"flex-1 overflow-y-auto"},To=["onClick"],Do={class:"flex items-center justify-between"},Ro={class:"text-sm truncate"},No={class:"text-xs text-gray-400"},Ao={class:"flex-1 overflow-hidden flex flex-col"},Lo={key:0,class:"flex-1 flex items-center justify-center"},Vo={class:"text-center text-gray-400"},Eo={class:"px-4 py-3 border-b border-gray-200 dark:border-gray-700 flex items-center gap-3"},Oo={class:"w-10 h-10 rounded-full flex items-center justify-center text-white font-bold bg-primary-500"},zo={class:"font-medium"},Fo={class:"text-xs text-gray-400"},Bo={class:"px-4 py-3 border-b border-gray-200 dark:border-gray-700"},Uo={class:"text-sm font-medium flex items-center gap-2"},Ho={class:"flex-1 overflow-y-auto"},Wo={key:0,class:"p-4 text-center text-gray-400"},jo={class:"flex items-center gap-3"},Po={class:"flex-1 min-w-0"},qo={class:"text-sm font-medium truncate"},Yo={class:"flex items-center gap-3 mt-0.5 text-xs text-gray-400"},Go={class:"w-20 h-2 bg-gray-200 dark:bg-gray-700 rounded-full overflow-hidden"},Jo={key:4,class:"h-full flex flex-col overflow-hidden"},Ko={class:"px-4 py-3 border-b border-gray-200 dark:border-gray-700"},Qo={class:"text-sm font-medium flex items-center gap-2"},Xo={class:"flex-1 overflow-y-auto"},Zo={class:"flex items-center gap-3"},ei={class:"flex-1 min-w-0"},ti={class:"flex items-center gap-2 text-sm"},si={class:"font-medium truncate"},ai={class:"font-medium truncate"},ni={class:"flex items-center gap-3 mt-1 text-xs text-gray-400"},oi={class:"w-24 h-2 bg-gray-200 dark:bg-gray-700 rounded-full overflow-hidden"},ii={key:0,class:"px-4 py-2 border-t border-gray-200 dark:border-gray-700 text-xs text-gray-400 flex items-center gap-4 bg-gray-50 dark:bg-gray-800/50"},ri=P({__name:"ClusterView",props:{sessionId:{},timeFilter:{}},setup(l){Je([Pt,Ke,qt,Yt,Qe]);const a=l,{t:e}=se(),o=gt(),c=D(()=>o.value==="dark"),u=A(!0),d=A(null),g=A("matrix"),p=A(null),_=A({lookAhead:3,decaySeconds:120,topEdges:150}),y=A(null);let m=null;async function n(){if(a.sessionId){u.value=!0;try{d.value=await oo(a.sessionId,a.timeFilter,{lookAhead:_.value.lookAhead,decaySeconds:_.value.decaySeconds,topEdges:_.value.topEdges})}catch(M){console.error("[chart-cluster] 加载小团体关系数据失败:",M),d.value=null}finally{u.value=!1}}}const i=D(()=>{if(!d.value||d.value.nodes.length===0)return null;const{nodes:M,links:T,maxLinkValue:L}=d.value,H=[...M].sort((E,j)=>j.messageCount-E.messageCount).slice(0,20).map(E=>E.name),R=new Map;for(const E of T)R.set(`${E.source}-${E.target}`,E.value),R.set(`${E.target}-${E.source}`,E.value);const O=[];for(let E=0;E<H.length;E++)for(let j=0;j<H.length;j++)if(E===j)O.push([E,j,-1]);else{const X=R.get(`${H[E]}-${H[j]}`)||0;O.push([E,j,X])}return{names:H,data:O,maxValue:L}});function h(){if(!i.value)return{graphic:{type:"text",style:{text:e("views.cluster.noData"),fill:"#999"}}};const{names:M,data:T,maxValue:L}=i.value;return{tooltip:{position:"top",formatter:W=>{const[H,R,O]=W.data;return O<0?`${M[H]}`:O===0?`${M[H]} ↔ ${M[R]}<br/>暂无关系数据`:`${M[H]} ↔ ${M[R]}<br/>临近度: ${O.toFixed(2)}`}},grid:{left:120,right:40,top:40,bottom:120},xAxis:{type:"category",data:M,splitArea:{show:!0},axisLabel:{rotate:45,fontSize:10,color:c.value?"#ccc":"#333"}},yAxis:{type:"category",data:M,splitArea:{show:!0},axisLabel:{fontSize:10,color:c.value?"#ccc":"#333"}},visualMap:{min:0,max:L||1,calculable:!0,orient:"horizontal",left:"center",bottom:10,inRange:{color:c.value?["#1a1a2e","#16213e","#0f3460","#e94560"]:["#f7f7f7","#fce4ec","#f8bbd9","#ee4567"]},textStyle:{color:c.value?"#ccc":"#333"}},series:[{type:"heatmap",data:T.filter(W=>W[2]>=0),label:{show:!1},emphasis:{itemStyle:{shadowBlur:10,shadowColor:"rgba(0, 0, 0, 0.5)"}}}],backgroundColor:"transparent"}}const f=D(()=>d.value?[...d.value.nodes].sort((M,T)=>T.messageCount-M.messageCount):[]),b=D(()=>!d.value||p.value===null?null:d.value.nodes.find(M=>M.id===p.value)||null),k=D(()=>{if(!d.value||!b.value)return[];const M=b.value.name,T=[];for(const L of d.value.links)L.source===M?T.push({otherName:L.target,value:L.value,coOccurrenceCount:L.coOccurrenceCount}):L.target===M&&T.push({otherName:L.source,value:L.value,coOccurrenceCount:L.coOccurrenceCount});return T.sort((L,W)=>W.value-L.value),T}),C=D(()=>d.value?d.value.links.slice(0,50):[]);function v(){m&&g.value==="matrix"&&m.setOption(h(),{notMerge:!0})}function w(){y.value&&(m=Xe(y.value,c.value?"dark":void 0),v())}function S(){m?.resize()}return G(g,async(M,T)=>{T==="matrix"&&m&&(m.dispose(),m=null),M==="matrix"&&(await Se(),w())}),G([d,()=>c.value],()=>{g.value==="matrix"&&v()},{deep:!0}),G(u,async(M,T)=>{T&&!M&&g.value==="matrix"&&(m&&(m.dispose(),m=null),await Se(),w())}),G(()=>[a.sessionId,a.timeFilter],()=>n(),{immediate:!0,deep:!0}),ke(()=>{window.addEventListener("resize",S),g.value==="matrix"&&Se(()=>w())}),Re(()=>{window.removeEventListener("resize",S),m?.dispose(),m=null}),(M,T)=>{const L=ge,W=qe("UButtonGroup"),H=Be,R=nt,O=we;return r(),I("div",io,[s("div",ro,[s("div",lo,[s("div",co,[$(W,{size:"xs"},{default:V(()=>[$(L,{color:g.value==="matrix"?"primary":"neutral",variant:g.value==="matrix"?"solid":"ghost",onClick:T[0]||(T[0]=E=>g.value="matrix")},{default:V(()=>[Q(x(t(e)("views.cluster.matrixView")),1)]),_:1},8,["color","variant"]),$(L,{color:g.value==="member"?"primary":"neutral",variant:g.value==="member"?"solid":"ghost",onClick:T[1]||(T[1]=E=>g.value="member")},{default:V(()=>[Q(x(t(e)("views.cluster.memberView")),1)]),_:1},8,["color","variant"]),$(L,{color:g.value==="circle"?"primary":"neutral",variant:g.value==="circle"?"solid":"ghost",onClick:T[2]||(T[2]=E=>g.value="circle")},{default:V(()=>[Q(x(t(e)("views.cluster.rankingView")),1)]),_:1},8,["color","variant"])]),_:1})]),s("div",uo,[$(R,null,{content:V(()=>[s("div",mo,[s("h4",go,x(t(e)("views.cluster.modelSettings")),1),s("div",po,[s("div",null,[s("label",ho,x(t(e)("views.cluster.lookAhead")),1),$(H,{modelValue:_.value.lookAhead,"onUpdate:modelValue":T[3]||(T[3]=E=>_.value.lookAhead=E),modelModifiers:{number:!0},type:"number",min:1,max:10,size:"xs",placeholder:"1-10"},null,8,["modelValue"]),s("p",vo,x(t(e)("views.cluster.lookAheadDesc")),1)]),s("div",null,[s("label",fo,x(t(e)("views.cluster.decaySeconds")),1),$(H,{modelValue:_.value.decaySeconds,"onUpdate:modelValue":T[4]||(T[4]=E=>_.value.decaySeconds=E),modelModifiers:{number:!0},type:"number",min:30,max:3600,size:"xs",placeholder:"30-3600"},null,8,["modelValue"]),s("p",yo,x(t(e)("views.cluster.decaySecondsDesc")),1)]),$(L,{size:"xs",color:"primary",class:"w-full mt-2",onClick:n},{default:V(()=>[Q(x(t(e)("views.cluster.applySettings")),1)]),_:1})])])]),default:V(()=>[$(L,{variant:"ghost",size:"xs",icon:"i-heroicons-adjustments-horizontal"})]),_:1}),$(L,{variant:"ghost",size:"xs",icon:"i-heroicons-arrow-path",onClick:n})])]),s("div",xo,[u.value?(r(),I("div",bo,[$(O,{name:"i-heroicons-arrow-path",class:"w-6 h-6 animate-spin text-gray-400"})])):!d.value||d.value.nodes.length===0?(r(),I("div",_o,[s("div",ko,[$(O,{name:"i-heroicons-user-group",class:"w-12 h-12 mx-auto mb-2 opacity-50"}),s("p",null,x(t(e)("views.cluster.noData")),1)])])):g.value==="matrix"?(r(),I("div",wo,[s("div",{ref_key:"chartRef",ref:y,class:"w-full h-full"},null,512)])):g.value==="member"?(r(),I("div",$o,[s("div",Io,[s("div",Co,[s("h3",So,[$(O,{name:"i-heroicons-users",class:"w-4 h-4"}),Q(" "+x(t(e)("views.cluster.selectMember")),1)])]),s("div",Mo,[(r(!0),I(q,null,te(f.value,E=>(r(),I("div",{key:E.id,class:Z(["px-4 py-2 cursor-pointer border-b border-gray-100 dark:border-gray-800 hover:bg-gray-50 dark:hover:bg-gray-800/50",{"bg-primary-50 dark:bg-primary-900/30":p.value===E.id}]),onClick:j=>p.value=E.id},[s("div",Do,[s("span",Ro,x(E.name),1),s("span",No,x(E.messageCount),1)])],10,To))),128))])]),s("div",Ao,[b.value?(r(),I(q,{key:1},[s("div",Eo,[s("div",Oo,x(b.value.name.charAt(0)),1),s("div",null,[s("div",zo,x(b.value.name),1),s("div",Fo,x(t(e)("views.cluster.msgCount"))+": "+x(b.value.messageCount)+" | "+x(t(e)("views.cluster.relationCount"))+": "+x(k.value.length),1)])]),s("div",Bo,[s("h3",Uo,[$(O,{name:"i-heroicons-heart",class:"w-4 h-4 text-pink-500"}),Q(" "+x(t(e)("views.cluster.relationsByIntimacy")),1)])]),s("div",Ho,[k.value.length===0?(r(),I("div",Wo,x(t(e)("views.cluster.noRelations")),1)):U("",!0),(r(!0),I(q,null,te(k.value,(E,j)=>(r(),I("div",{key:E.otherName,class:"px-4 py-3 border-b border-gray-100 dark:border-gray-800 hover:bg-gray-50 dark:hover:bg-gray-800/50"},[s("div",jo,[s("span",{class:Z(["w-6 h-6 rounded-full flex items-center justify-center text-xs font-bold",j<3?"bg-yellow-100 text-yellow-700 dark:bg-yellow-900/30 dark:text-yellow-400":"bg-gray-100 text-gray-500 dark:bg-gray-800 dark:text-gray-400"])},x(j+1),3),s("div",Po,[s("div",qo,x(E.otherName),1),s("div",Yo,[s("span",null,x(t(e)("views.cluster.intimacy"))+": "+x((E.value*100).toFixed(0))+"%",1),s("span",null,x(t(e)("views.cluster.coOccurrence"))+": "+x(E.coOccurrenceCount)+x(t(e)("views.cluster.times")),1)])]),s("div",Go,[s("div",{class:"h-full bg-linear-to-r from-pink-400 to-pink-600",style:be({width:`${k.value[0]?.value?E.value/k.value[0].value*100:0}%`})},null,4)])])]))),128))])],64)):(r(),I("div",Lo,[s("div",Vo,[$(O,{name:"i-heroicons-cursor-arrow-rays",class:"w-12 h-12 mx-auto mb-2 opacity-50"}),s("p",null,x(t(e)("views.cluster.selectMemberHint")),1)])]))])])):(r(),I("div",Jo,[s("div",Ko,[s("h3",Qo,[$(O,{name:"i-heroicons-trophy",class:"w-4 h-4 text-yellow-500"}),Q(" "+x(t(e)("views.cluster.interactionRanking")),1)])]),s("div",Xo,[(r(!0),I(q,null,te(C.value,(E,j)=>(r(),I("div",{key:j,class:"px-4 py-3 border-b border-gray-100 dark:border-gray-800 hover:bg-gray-50 dark:hover:bg-gray-800/50"},[s("div",Zo,[s("span",{class:Z(["w-8 h-8 rounded-full flex items-center justify-center text-sm font-bold",j<3?"bg-yellow-100 text-yellow-700 dark:bg-yellow-900/30 dark:text-yellow-400":"bg-gray-100 text-gray-500 dark:bg-gray-800 dark:text-gray-400"])},x(j+1),3),s("div",ei,[s("div",ti,[s("span",si,x(E.source),1),T[5]||(T[5]=s("span",{class:"text-gray-400"},"↔",-1)),s("span",ai,x(E.target),1)]),s("div",ni,[s("span",null,x(t(e)("views.cluster.score"))+": "+x(E.value.toFixed(2)),1),s("span",null,x(t(e)("views.cluster.coOccurrence"))+": "+x(E.coOccurrenceCount)+x(t(e)("views.cluster.times")),1)])]),s("div",oi,[s("div",{class:"h-full bg-linear-to-r from-yellow-400 to-orange-500",style:be({width:`${C.value[0]?.value?E.value/C.value[0].value*100:0}%`})},null,4)])])]))),128))])]))]),d.value?(r(),I("div",ii,[s("span",null,x(t(e)("views.cluster.totalMembers"))+": "+x(d.value.stats.totalMembers),1),s("span",null,x(t(e)("views.cluster.totalMessages"))+": "+x(d.value.stats.totalMessages.toLocaleString()),1),s("span",null,x(t(e)("views.cluster.involvedMembers"))+": "+x(d.value.stats.involvedMembers),1),s("span",null,x(t(e)("views.cluster.edgeCount"))+": "+x(d.value.stats.edgeCount),1)])):U("",!0)])])}}}),li={class:"flex h-full flex-col"},ci={class:"min-h-0 flex-1 overflow-y-auto"},di=P({__name:"GroupRelationships",props:{sessionId:{},timeFilter:{}},setup(l){const{t:a}=se(),e=l,o=A("mention-graph"),c=D(()=>[{id:"mention-graph",label:a("analysis.subTabs.groupRelationships.mentionGraph"),icon:"i-heroicons-arrows-right-left"},{id:"mention-ranking",label:a("analysis.subTabs.groupRelationships.mentionRanking"),icon:"i-heroicons-heart"},{id:"proximity",label:a("analysis.subTabs.groupRelationships.proximity"),icon:"i-heroicons-user-group"}]);return(u,d)=>(r(),I("div",li,[$(t(Ye),{modelValue:o.value,"onUpdate:modelValue":d[0]||(d[0]=g=>o.value=g),items:c.value,"persist-key":"groupRelationshipsTab",size:"sm"},null,8,["modelValue","items"]),s("div",ci,[$(Ne,{name:"fade",mode:"out-in"},{default:V(()=>[o.value==="mention-graph"?(r(),N(vn,{key:0,"session-id":e.sessionId,"time-filter":e.timeFilter},null,8,["session-id","time-filter"])):o.value==="mention-ranking"?(r(),N(Xn,{key:1,"session-id":e.sessionId,"time-filter":e.timeFilter},null,8,["session-id","time-filter"])):o.value==="proximity"?(r(),N(ri,{key:2,"session-id":e.sessionId,"time-filter":e.timeFilter},null,8,["session-id","time-filter"])):U("",!0)]),_:1})])]))}}),ui=Le(di,[["__scopeId","data-v-90e47115"]]),mi={class:"flex h-full flex-col"},gi={class:"flex-1 min-h-0 overflow-y-auto"},pi=P({__name:"ViewTab",props:{sessionId:{},sessionName:{},timeFilter:{}},setup(l){const{t:a,locale:e}=se(),o=l,c=D(()=>{const p=[{id:"message",label:a("analysis.subTabs.view.message"),icon:"i-heroicons-chat-bubble-left-right"},{id:"topic",label:a("analysis.subTabs.view.topic"),icon:"i-heroicons-cloud"},{id:"group-relationships",label:a("analysis.subTabs.view.groupRelationships"),icon:"i-heroicons-heart"},{id:"hot-repeat",label:a("analysis.subTabs.quotes.hotRepeat"),icon:"i-heroicons-fire"},{id:"catchphrase",label:a("analysis.subTabs.quotes.catchphrase"),icon:"i-heroicons-chat-bubble-bottom-center-text"}];return pt("groupRanking",e.value)&&p.splice(1,0,{id:"ranking",label:a("analysis.subTabs.view.ranking"),icon:"i-heroicons-trophy"}),p}),u=A("message"),d=A(null),g=D(()=>({...o.timeFilter,memberId:d.value}));return(p,_)=>(r(),I("div",mi,[$(t(Ye),{modelValue:u.value,"onUpdate:modelValue":_[1]||(_[1]=y=>u.value=y),items:c.value,"persist-key":"groupViewTab"},{right:V(()=>[u.value!=="topic"?(r(),N(Ct,{key:0,modelValue:d.value,"onUpdate:modelValue":_[0]||(_[0]=y=>d.value=y),"session-id":o.sessionId},null,8,["modelValue","session-id"])):U("",!0)]),_:1},8,["modelValue","items"]),s("div",gi,[$(Ne,{name:"fade",mode:"out-in"},{default:V(()=>[u.value==="message"?(r(),N(St,{key:0,"session-id":o.sessionId,"session-name":o.sessionName,"time-filter":g.value},null,8,["session-id","session-name","time-filter"])):u.value==="topic"?(r(),N(t(Mt),{key:1,"session-id":o.sessionId,"time-filter":o.timeFilter},null,8,["session-id","time-filter"])):u.value==="group-relationships"?(r(),N(ui,{key:2,"session-id":o.sessionId,"time-filter":g.value},null,8,["session-id","time-filter"])):u.value==="ranking"?(r(),N(Ga,{key:3,"session-id":o.sessionId,"time-filter":g.value},null,8,["session-id","time-filter"])):u.value==="hot-repeat"?(r(),N(t(Js),{key:4,"session-id":o.sessionId,"time-filter":o.timeFilter},null,8,["session-id","time-filter"])):u.value==="catchphrase"?(r(),N(t(As),{key:5,"session-id":o.sessionId,"time-filter":o.timeFilter},null,8,["session-id","time-filter"])):U("",!0)]),_:1})])]))}}),hi=Le(pi,[["__scopeId","data-v-6549d466"]]),vi={key:0,class:"mb-6"},fi={class:"flex items-center gap-3"},yi={class:"text-xl font-bold text-gray-900 dark:text-white"},xi={class:"text-sm text-gray-500 dark:text-gray-400"},bi={class:"mb-4 flex flex-wrap items-center justify-between gap-3"},_i={class:"flex items-center gap-2"},ki={class:"text-xs text-gray-500 dark:text-gray-400"},wi={key:0,class:"flex h-60 items-center justify-center"},$i={key:1,class:"flex h-60 flex-col items-center justify-center"},Ii={class:"text-gray-500 dark:text-gray-400"},Ci={key:2,class:"flex min-h-0 flex-1 flex-col"},Si={class:"w-full"},Mi={class:"sticky top-0 bg-gray-50 dark:bg-gray-800"},Ti={class:"text-left text-xs font-medium uppercase text-gray-500 dark:text-gray-400"},Di={class:"px-4 py-4"},Ri={class:"px-4 py-4"},Ni={class:"px-4 py-4"},Ai={class:"w-64 px-4 py-4"},Li={class:"inline-flex items-center gap-1.5"},Vi={class:"px-4 py-4 text-right"},Ei={class:"divide-y divide-gray-200 dark:divide-gray-700"},Oi={class:"px-4 py-4"},zi={class:"px-4 py-4"},Fi={class:"flex items-center gap-2"},Bi=["src","alt"],Ui={key:1,class:"flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-gradient-to-br from-pink-400 to-pink-600 text-xs font-medium text-white"},Hi={class:"text-sm font-medium text-gray-900 dark:text-white"},Wi={class:"ml-1 text-sm text-gray-500 dark:text-gray-400"},ji={class:"px-4 py-4"},Pi={key:0,class:"text-sm font-medium text-gray-900 dark:text-white"},qi={key:1,class:"text-sm text-gray-400 dark:text-gray-500"},Yi={class:"px-4 py-4"},Gi={class:"text-sm font-semibold text-gray-900 dark:text-white"},Ji={class:"px-4 py-4"},Ki={class:"max-w-xs"},Qi={key:0,class:"absolute right-2 top-1/2 -translate-y-1/2"},Xi={class:"px-4 py-4 text-right"},Zi={key:0,class:"flex items-center justify-between border-t border-gray-200 px-6 py-4 dark:border-gray-700"},er={class:"text-sm text-gray-500 dark:text-gray-400"},tr={class:"flex items-center gap-2"},sr={class:"text-sm font-medium text-gray-600 dark:text-gray-300"},ar={class:"p-6 text-center"},nr={class:"mx-auto mb-4 flex h-14 w-14 items-center justify-center rounded-full bg-red-100 dark:bg-red-900/30"},or={class:"mb-2 text-lg font-semibold text-gray-900 dark:text-white"},ir={class:"mb-6 text-sm text-gray-500 dark:text-gray-400"},rr={class:"flex justify-center gap-3"},lr={class:"p-6"},cr={class:"mb-4 flex items-center gap-3"},dr={class:"flex h-10 w-10 items-center justify-center rounded-full bg-amber-100 dark:bg-amber-900/30"},ur={class:"text-lg font-semibold text-gray-900 dark:text-white"},mr={class:"mb-2 text-sm text-gray-600 dark:text-gray-400"},gr={class:"mb-6 text-xs text-amber-700 dark:text-amber-300"},pr={class:"flex justify-end gap-2"},Me=20,hr=P({__name:"MemberList",props:{sessionId:{},showHeader:{type:Boolean,default:!0}},emits:["data-changed"],setup(l,{emit:a}){const{t:e}=se(),o=l,c=a,u=A([]),d=A([]),g=A(!1),p=A(""),_=A(null),y=A(!1),m=A(new Set),n=A(!1),i=A(!1),h=A(1),f=A(0),b=A(0),k=A("desc"),C=A(null);let v=null;function w(z){return z.groupNickname||z.accountName||z.platformId}function S(z){return w(z).slice(0,1)}const M=D(()=>d.value.filter(z=>m.value.has(z.id))),T=D(()=>M.value.length===2),L=D(()=>{if(M.value.length!==2)return null;const[z,F]=M.value;return F.messageCount>z.messageCount||F.messageCount===z.messageCount&&F.id<z.id?{primary:F,secondary:z}:{primary:z,secondary:F}});function W(){k.value=k.value==="desc"?"asc":"desc",h.value=1,H()}async function H(){if(o.sessionId){g.value=!0;try{const z=await ue().getMembersPaginated(o.sessionId,{page:h.value,pageSize:Me,search:p.value.trim(),sortOrder:k.value});u.value=z.items,f.value=z.total,b.value=z.totalPages}catch(z){console.error("加载成员列表失败:",z)}finally{g.value=!1}}}async function R(){if(o.sessionId)try{d.value=await ue().getMembers(o.sessionId)}catch(z){console.error("加载所有成员失败:",z)}}async function O(z,F){const B=JSON.parse(JSON.stringify(F)),he=JSON.stringify(z.aliases),ie=JSON.stringify(B);if(he!==ie){C.value=z.id;try{if(await ue().updateMemberAliases(o.sessionId,z.id,B)){const pe=u.value.findIndex(Y=>Y.id===z.id);pe!==-1&&(u.value[pe]={...u.value[pe],aliases:B})}}catch(ve){console.error("保存别名失败:",ve)}finally{C.value=null}}}function E(z){_.value=z}function j(){_.value=null}async function X(){if(_.value){y.value=!0;try{await ue().deleteMember(o.sessionId,_.value.id)&&(await H(),await R(),c("data-changed"))}catch(z){console.error("删除成员失败:",z)}finally{y.value=!1,_.value=null}}}function ee(z){const F=new Set(m.value);F.has(z)?F.delete(z):F.add(z),m.value=F}function re(){T.value&&(n.value=!0)}function oe(){m.value=new Set}async function de(){if(L.value){i.value=!0;try{await ue().mergeMembers(o.sessionId,L.value.primary.id,L.value.secondary.id)&&(n.value=!1,oe(),await H(),await R(),c("data-changed"))}catch(z){console.error("合并成员失败:",z)}finally{i.value=!1}}}return G(p,()=>{h.value=1,v&&clearTimeout(v),v=setTimeout(()=>{H()},300)}),G(h,()=>{H()}),G(()=>o.sessionId,()=>{p.value="",h.value=1,oe(),H(),R()},{immediate:!0}),ke(()=>{H(),R()}),(z,F)=>{const B=ge,he=Be,ie=we,ve=Ue,pe=ot,Y=it,Ie=_e;return r(),I("div",{class:Z(["main-content",o.showHeader?"max-w-5xl p-6":"flex h-full max-w-none flex-col overflow-hidden p-4"])},[o.showHeader?(r(),I("div",vi,[s("div",fi,[s("div",null,[s("h2",yi,x(t(e)("members.list.title")),1),s("p",xi,x(t(e)("members.list.description",{count:f.value})),1)])])])):U("",!0),$(Tt,{class:"mb-6","session-id":l.sessionId,members:d.value,"is-loading":g.value,"chat-type":"group"},null,8,["session-id","members","is-loading"]),s("div",bi,[$(he,{modelValue:p.value,"onUpdate:modelValue":F[1]||(F[1]=J=>p.value=J),placeholder:t(e)("members.list.searchPlaceholder"),icon:"i-heroicons-magnifying-glass",class:"w-full md:w-100"},Pe({_:2},[p.value?{name:"trailing",fn:V(()=>[$(B,{icon:"i-heroicons-x-mark",variant:"link",color:"neutral",size:"xs",onClick:F[0]||(F[0]=J=>p.value="")})]),key:"0"}:void 0]),1032,["modelValue","placeholder"]),s("div",_i,[s("span",ki,x(t(e)("members.list.mergeSelectedCount",{count:m.value.size})),1),$(B,{icon:"i-heroicons-link",size:"sm",color:"primary",disabled:!T.value,onClick:re},{default:V(()=>[Q(x(t(e)("members.list.mergeSelected")),1)]),_:1},8,["disabled"])])]),s("div",{class:Z(["rounded-xl border border-gray-200 bg-white shadow-sm dark:border-gray-700 dark:bg-gray-900",o.showHeader?"":"flex min-h-0 flex-1 flex-col"])},[g.value?(r(),I("div",wi,[$(ie,{name:"i-heroicons-arrow-path",class:"h-8 w-8 animate-spin text-pink-500"})])):u.value.length===0?(r(),I("div",$i,[$(ie,{name:"i-heroicons-user-group",class:"mb-3 h-12 w-12 text-gray-300 dark:text-gray-600"}),s("p",Ii,x(p.value?t(e)("members.list.noMatch"):t(e)("members.list.empty")),1)])):(r(),I("div",Ci,[s("div",{class:Z(["max-h-[500px] overflow-y-auto",o.showHeader?"":"max-h-none min-h-0 flex-1"])},[s("table",Si,[s("thead",Mi,[s("tr",Ti,[F[7]||(F[7]=s("th",{class:"w-12 px-4 py-4"},null,-1)),s("th",Di,x(t(e)("members.list.table.accountName")),1),s("th",Ri,x(t(e)("members.list.table.groupNickname")),1),s("th",Ni,[s("button",{class:"flex items-center gap-1.5 hover:text-gray-700 dark:hover:text-gray-200",onClick:W},[Q(x(t(e)("members.list.table.messageCount"))+" ",1),$(ie,{name:k.value==="desc"?"i-heroicons-arrow-down":"i-heroicons-arrow-up",class:"h-3.5 w-3.5"},null,8,["name"])])]),s("th",Ai,[s("div",Li,[s("span",null,x(t(e)("members.list.table.customAlias")),1),$(ve,{text:t(e)("members.list.tip"),popper:{placement:"top"}},{default:V(()=>[$(ie,{name:"i-heroicons-question-mark-circle",class:"h-4 w-4 text-gray-400 dark:text-gray-500"})]),_:1},8,["text"])])]),s("th",Vi,x(t(e)("members.list.table.actions")),1)])]),s("tbody",Ei,[(r(!0),I(q,null,te(u.value,J=>(r(),I("tr",{key:J.id,class:"hover:bg-gray-50 dark:hover:bg-gray-800/50"},[s("td",Oi,[$(pe,{"model-value":m.value.has(J.id),onClick:je(Ce=>ee(J.id),["stop"])},null,8,["model-value","onClick"])]),s("td",zi,[s("div",Fi,[J.avatar?(r(),I("img",{key:0,src:J.avatar,alt:w(J),class:"h-8 w-8 shrink-0 rounded-full object-cover"},null,8,Bi)):(r(),I("div",Ui,x(S(J)),1)),s("div",null,[s("span",Hi,x(J.accountName||"-"),1),s("span",Wi,"("+x(J.platformId)+")",1)])])]),s("td",ji,[J.groupNickname?(r(),I("span",Pi,x(J.groupNickname),1)):(r(),I("span",qi,"-"))]),s("td",Yi,[s("span",Gi,x(J.messageCount.toLocaleString()),1)]),s("td",Ji,[s("div",Ki,[$(Y,{"model-value":J.aliases,placeholder:t(e)("members.list.aliasPlaceholder"),class:"w-80","onUpdate:modelValue":Ce=>O(J,Ce)},null,8,["model-value","placeholder","onUpdate:modelValue"]),C.value===J.id?(r(),I("div",Qi,[$(ie,{name:"i-heroicons-arrow-path",class:"h-4 w-4 animate-spin text-pink-500"})])):U("",!0)])]),s("td",Xi,[$(B,{label:t(e)("members.list.delete"),size:"xs",onClick:Ce=>E(J)},null,8,["label","onClick"])])]))),128))])])],2),b.value>1?(r(),I("div",Zi,[s("p",er,x(t(e)("members.list.pagination",{start:(h.value-1)*Me+1,end:Math.min(h.value*Me,f.value),total:f.value})),1),s("div",tr,[$(B,{icon:"i-heroicons-chevron-left",variant:"outline",size:"sm",disabled:h.value===1||g.value,onClick:F[2]||(F[2]=J=>h.value--)},null,8,["disabled"]),s("span",sr,x(h.value)+" / "+x(b.value),1),$(B,{icon:"i-heroicons-chevron-right",variant:"outline",size:"sm",disabled:h.value>=b.value||g.value,onClick:F[3]||(F[3]=J=>h.value++)},null,8,["disabled"])])])):U("",!0)]))],2),$(Ie,{open:!!_.value,ui:{content:"max-w-sm"},"onUpdate:open":F[4]||(F[4]=J=>_.value=null)},{content:V(()=>[s("div",ar,[s("div",nr,[$(ie,{name:"i-heroicons-exclamation-triangle",class:"h-7 w-7 text-red-500"})]),s("h3",or,x(t(e)("members.list.modal.title")),1),s("p",ir,x(t(e)("members.list.modal.content",{name:_.value?w(_.value):"",count:_.value?.messageCount.toLocaleString()})),1),s("div",rr,[$(B,{variant:"outline",onClick:j},{default:V(()=>[Q(x(t(e)("members.list.modal.cancel")),1)]),_:1}),$(B,{color:"error",loading:y.value,onClick:X},{default:V(()=>[Q(x(t(e)("members.list.modal.confirm")),1)]),_:1},8,["loading"])])])]),_:1},8,["open"]),$(Ie,{open:n.value,ui:{content:"max-w-md"},"onUpdate:open":F[6]||(F[6]=J=>n.value=J)},{content:V(()=>[s("div",lr,[s("div",cr,[s("div",dr,[$(ie,{name:"i-heroicons-link",class:"h-5 w-5 text-amber-600 dark:text-amber-400"})]),s("h3",ur,x(t(e)("members.list.mergeModal.title")),1)]),s("p",mr,x(t(e)("members.list.mergeModal.content",{source:L.value?w(L.value.secondary):"",sourceCount:L.value?L.value.secondary.messageCount.toLocaleString():"0",target:L.value?w(L.value.primary):"",targetCount:L.value?L.value.primary.messageCount.toLocaleString():"0"})),1),s("p",gr,x(t(e)("members.list.mergeModal.hint")),1),s("div",pr,[$(B,{variant:"outline",disabled:i.value,onClick:F[5]||(F[5]=J=>n.value=!1)},{default:V(()=>[Q(x(t(e)("members.list.mergeModal.cancel")),1)]),_:1},8,["disabled"]),$(B,{color:"primary",loading:i.value,onClick:de},{default:V(()=>[Q(x(t(e)("members.list.mergeModal.confirm")),1)]),_:1},8,["loading"])])])]),_:1},8,["open"])],2)}}}),vr={class:"main-content max-w-5xl p-6"},fr={class:"mb-4 text-sm text-gray-500 dark:text-gray-400 no-capture"},yr={key:0,class:"divide-y divide-gray-100 dark:divide-gray-800"},xr={class:"w-32 shrink-0 pt-0.5 font-medium text-gray-900 dark:text-white"},br={class:"flex flex-1 flex-wrap items-center gap-2"},_r={class:"flex items-center gap-1.5 rounded-lg bg-gray-50 px-3 py-1.5 dark:bg-gray-800"},kr={class:"text-xs text-gray-400"},wr={key:0,class:"text-gray-300 dark:text-gray-600"},$r=P({__name:"NicknameHistory",props:{sessionId:{}},setup(l){const{t:a}=se(),e=l,o=A([]),c=A([]),u=A(!1);function d(_){return _.groupNickname||_.accountName||_.platformId}async function g(){if(e.sessionId)try{o.value=await ue().getMembers(e.sessionId)}catch(_){console.error("加载成员列表失败:",_)}}async function p(){if(!e.sessionId||o.value.length===0)return;u.value=!0;const _=[];try{const y=o.value.map(n=>ue().getMemberNameHistory(e.sessionId,n.id)),m=await Promise.all(y);o.value.forEach((n,i)=>{const h=m[i];h.length>2&&_.push({memberId:n.id,name:d(n),history:h})}),c.value=_}catch(y){console.error("加载昵称变更记录失败:",y)}finally{u.value=!1}}return G(()=>e.sessionId,async()=>{await g()},{immediate:!0}),G(()=>o.value.length,()=>{o.value.length>0&&p()}),ke(async()=>{o.value.length===0&&await g()}),(_,y)=>{const m=Fe;return r(),I("div",vr,[s("p",fr,x(t(a)("members.nicknameHistory.note")),1),$(t(K),{title:t(a)("members.nicknameHistory.title"),description:u.value?t(a)("members.nicknameHistory.loading"):c.value.length>0?t(a)("members.nicknameHistory.hasChanges",{count:c.value.length}):t(a)("members.nicknameHistory.noChanges")},{default:V(()=>[!u.value&&c.value.length>0?(r(),I("div",yr,[(r(!0),I(q,null,te(c.value,n=>(r(),I("div",{key:n.memberId,class:"flex items-start gap-3 px-5 py-3"},[s("div",xr,x(n.name),1),s("div",br,[(r(!0),I(q,null,te(n.history,(i,h)=>(r(),I(q,{key:h},[s("div",_r,[s("span",{class:Z(["text-sm",i.endTs===null?"font-semibold text-pink-600":"text-gray-700 dark:text-gray-300"])},x(i.name),3),i.endTs===null?(r(),N(m,{key:0,color:"primary",variant:"soft",size:"xs"},{default:V(()=>[Q(x(t(a)("members.nicknameHistory.current")),1)]),_:1})):U("",!0),s("span",kr,"("+x(t(Dt)(i.startTs,i.endTs))+")",1)]),h<n.history.length-1?(r(),I("span",wr,"→")):U("",!0)],64))),128))])]))),128))])):u.value?(r(),N(t(ne),{key:2,text:t(a)("members.nicknameHistory.loadingText")},null,8,["text"])):(r(),N(t(le),{key:1,text:t(a)("members.nicknameHistory.empty")},null,8,["text"]))]),_:1},8,["title","description"])])}}}),Ir={class:"flex h-full flex-col overflow-hidden bg-white dark:bg-gray-900"},Cr={class:"flex flex-none items-center justify-between border-b border-gray-200 px-5 py-3 dark:border-gray-700"},Sr={class:"text-lg font-semibold text-gray-900 dark:text-white"},Mr={class:"flex-1 overflow-auto"},Tr=P({__name:"NicknameHistoryEntry",props:{sessionId:{}},setup(l){const{t:a}=se(),e=l,o=A(!1);return(c,u)=>{const d=ge,g=_e;return r(),I(q,null,[$(d,{variant:"ghost",icon:"i-heroicons-clock",size:"sm",onClick:u[0]||(u[0]=p=>o.value=!0)},{default:V(()=>[Q(x(t(a)("analysis.subTabs.member.nicknameHistory")),1)]),_:1}),e.sessionId?(r(),N(g,{key:0,open:o.value,"onUpdate:open":u[2]||(u[2]=p=>o.value=p),ui:{content:"max-w-6xl h-[85vh]"}},{content:V(()=>[s("div",Ir,[s("div",Cr,[s("h2",Sr,x(t(a)("analysis.subTabs.member.nicknameHistory")),1),$(d,{variant:"ghost",icon:"i-heroicons-x-mark",size:"sm",onClick:u[1]||(u[1]=p=>o.value=!1)})]),s("div",Mr,[$($r,{"session-id":e.sessionId},null,8,["session-id"])])])]),_:1},8,["open"])):U("",!0)],64)}}}),Dr={class:"flex h-full flex-col bg-white dark:bg-gray-900",style:{"padding-top":"var(--titlebar-area-height)"}},Rr={class:"mt-2 flex items-center justify-between gap-3"},Nr={class:"flex shrink-0 items-center gap-0.5 overflow-x-auto scrollbar-hide"},Ar=["onClick"],Lr={class:"whitespace-nowrap"},Vr={class:"relative flex-1 overflow-y-auto"},Er={class:"h-full"},Or={key:2,class:"flex h-full items-center justify-center"},zr={class:"text-gray-500"},Fr={class:"flex h-full flex-col overflow-hidden bg-white dark:bg-gray-900"},Br={class:"flex flex-none items-center justify-between border-b border-gray-200 px-5 py-3 dark:border-gray-700"},Ur={class:"text-lg font-semibold text-gray-900 dark:text-white"},Hr={class:"text-sm text-gray-500 dark:text-gray-400"},Wr={class:"flex items-center gap-2"},jr={class:"flex-1 overflow-hidden"},Pr=P({__name:"index",setup(l){const a=We(()=>ze(()=>import("./MessageExportModal-De5_tX6a.js"),__vite__mapDeps([5,6,4,7,8,9,10,11,1,2,3,12]))),{t:e}=se(),o=rt(),c=lt(),u=ht(),d=Ae(),g=vt(),{currentSessionId:p}=ft(u),_=A(!1),y=A(!1),m=A(!1),n=A(!1);function i(){d.openChatRecordDrawer({})}const h=[{id:"overview",labelKey:"analysis.tabs.overview",icon:"i-heroicons-chart-pie"},{id:"view",labelKey:"analysis.tabs.view",icon:"i-heroicons-presentation-chart-bar"},{id:"ai-chat",labelKey:"analysis.tabs.aiChat",icon:"i-heroicons-chat-bubble-left-ellipsis"},{id:"lab",labelKey:"analysis.tabs.lab",icon:"i-heroicons-beaker"}],f=D(()=>g.debugMode?[...h,{id:"debug",labelKey:"analysis.tabs.debug",icon:"i-heroicons-bug-ant"}]:h),b=D(()=>f.value.map(F=>F.id)),{activeTab:k,isLoading:C,isInitialLoad:v,session:w,memberActivity:S,hourlyActivity:M,dailyActivity:T,messageTypes:L,timeRangeValue:W,fullTimeRange:H,availableYears:R,timeFilter:O,selectedYearForOverview:E,initialTimeState:j,loadData:X}=Rt({route:o,router:c,currentSessionId:p,selectSession:u.selectSession,defaultTab:g.defaultSessionTab,validTabIds:b.value}),ee=D(()=>S.value.slice(0,3)),re=D(()=>S.value.length<=1?[]:[...S.value].sort((F,B)=>F.messageCount-B.messageCount).slice(0,1)),oe=D(()=>S.value.reduce((F,B)=>F+B.messageCount,0)),de=D(()=>S.value.filter(F=>F.messageCount>0).length),{headerDescription:z}=Nt({session:w,fullTimeRange:H,timeRangeValue:W,descriptionKey:"analysis.groupChat.description"});return(F,B)=>{const he=ge,ie=Ue,ve=we,pe=_e;return r(),I("div",Dr,[t(v)?(r(),N(ne,{key:0,variant:"page",text:t(e)("analysis.groupChat.loading")},null,8,["text"])):t(w)?(r(),I(q,{key:1},[$(At,{title:t(w).name,description:t(z),avatar:t(w).groupAvatar,icon:"i-heroicons-chat-bubble-left-right","icon-class":"bg-primary-600 text-white dark:bg-primary-500 dark:text-white"},{actions:V(()=>[t(d).toolsPanelPosition==="header"?(r(),N(ie,{key:0,text:t(e)("analysis.overview.tools")},{default:V(()=>[$(he,{icon:"i-heroicons-wrench-screwdriver",variant:"ghost",color:"primary",size:"sm",onClick:B[0]||(B[0]=Y=>t(d).toggleToolsPanelOpen())})]),_:1},8,["text"])):U("",!0),$(Te)]),default:V(()=>[s("div",Rr,[s("div",Nr,[(r(!0),I(q,null,te(f.value,Y=>(r(),I("button",{key:Y.id,class:Z(["flex items-center gap-1.5 rounded-lg px-2.5 py-1.5 text-sm font-medium transition-all",[t(k)===Y.id?"bg-pink-500 text-white dark:bg-pink-900/30 dark:text-pink-300":"text-gray-600 hover:bg-gray-100 dark:text-gray-400 dark:hover:bg-gray-800"]]),onClick:Ie=>k.value=Y.id},[$(ve,{name:Y.icon,class:"h-4 w-4"},null,8,["name"]),s("span",Lr,x(t(e)(Y.labelKey)),1)],10,Ar))),128))]),$(Ot,{modelValue:t(W),"onUpdate:modelValue":B[1]||(B[1]=Y=>ut(W)?W.value=Y:null),"session-id":t(p)??void 0,visible:t(k)!=="ai-chat"&&t(k)!=="memory"&&t(k)!=="lab"&&t(k)!=="debug","initial-state":t(j),"onUpdate:fullRange":B[2]||(B[2]=Y=>H.value=Y),"onUpdate:availableYears":B[3]||(B[3]=Y=>R.value=Y)},null,8,["modelValue","session-id","visible","initial-state"])])]),_:1},8,["title","description","avatar"]),s("div",Vr,[t(C)?(r(),N(ne,{key:0,variant:"overlay"})):U("",!0),s("div",Er,[$(Ne,{name:"tab-slide",mode:"out-in"},{default:V(()=>[t(k)==="overview"?(r(),N(ea,{key:"overview-"+t(p),session:t(w),"member-activity":t(S),"top-members":ee.value,"bottom-members":re.value,"message-types":t(L),"hourly-activity":t(M),"daily-activity":t(T),"time-range":t(H),"selected-year":t(E),"filtered-message-count":oe.value,"filtered-member-count":de.value,"time-filter":t(O)},null,8,["session","member-activity","top-members","bottom-members","message-types","hourly-activity","daily-activity","time-range","selected-year","filtered-message-count","filtered-member-count","time-filter"])):t(k)==="view"?(r(),N(hi,{key:"view-"+t(p),"session-id":t(p),"session-name":t(w).name,"time-filter":t(O)},null,8,["session-id","session-name","time-filter"])):t(k)==="ai-chat"?(r(),N(t(zt),{key:"ai-chat-"+t(p),"session-id":t(p),"session-name":t(w).name,"chat-type":"group"},null,8,["session-id","session-name"])):t(k)==="memory"?(r(),N(Ft,{key:"memory-"+t(p),"session-id":t(p),"session-name":t(w).name},null,8,["session-id","session-name"])):t(k)==="lab"?(r(),N(Bt,{key:"lab-"+t(p),"session-id":t(p),"session-name":t(w).name,"time-filter":t(O),"chat-type":"group",mode:"sql-only"},null,8,["session-id","session-name","time-filter"])):t(k)==="debug"?(r(),N(t(Ut),{key:"debug-"+t(p),"session-id":t(p)},null,8,["session-id"])):U("",!0)]),_:1})])]),$(Lt,{onOpenIncrementalImport:B[4]||(B[4]=Y=>y.value=!0),onOpenSessionIndex:B[5]||(B[5]=Y=>_.value=!0),onOpenMemberManagement:B[6]||(B[6]=Y=>n.value=!0),onOpenChatRecord:i,onOpenMessageExport:B[7]||(B[7]=Y=>m.value=!0)}),t(g).debugMode?(r(),N(Ht,{key:0})):U("",!0)],64)):(r(),I("div",Or,[s("p",zr,x(t(e)("analysis.groupChat.loadError")),1)])),t(p)&&t(w)&&t(w).messageCount>0?(r(),N(Vt,{key:3,modelValue:_.value,"onUpdate:modelValue":B[8]||(B[8]=Y=>_.value=Y),"session-id":t(p),"message-count":t(w).messageCount},null,8,["modelValue","session-id","message-count"])):U("",!0),t(p)&&t(w)?(r(),N(Et,{key:4,modelValue:y.value,"onUpdate:modelValue":B[9]||(B[9]=Y=>y.value=Y),"session-id":t(p),"session-name":t(w).name,onImported:t(X)},null,8,["modelValue","session-id","session-name","onImported"])):U("",!0),t(p)?(r(),N(t(a),{key:5,modelValue:m.value,"onUpdate:modelValue":B[10]||(B[10]=Y=>m.value=Y)},null,8,["modelValue"])):U("",!0),t(p)?(r(),N(pe,{key:6,open:n.value,"onUpdate:open":B[12]||(B[12]=Y=>n.value=Y),ui:{content:"max-w-6xl h-[85vh]"}},{content:V(()=>[s("div",Fr,[s("div",Br,[s("div",null,[s("h2",Ur,x(t(e)("analysis.tooltip.memberManagement")),1),s("p",Hr,x(t(e)("members.list.description",{count:t(w)?.memberCount??0})),1)]),s("div",Wr,[$(Tr,{"session-id":t(p)},null,8,["session-id"]),$(he,{variant:"ghost",icon:"i-heroicons-x-mark",size:"sm",onClick:B[11]||(B[11]=Y=>n.value=!1)})])]),s("div",jr,[$(hr,{"session-id":t(p),"show-header":!1,onDataChanged:t(X)},null,8,["session-id","onDataChanged"])])])]),_:1},8,["open"])):U("",!0)])}}}),tl=Le(Pr,[["__scopeId","data-v-c37848ed"]]);export{tl as default};
163
+ ORDER BY msg.ts ASC, msg.id ASC`,o)}function no(l){const{members:a,messages:e,options:o}=l;function c(R,O){return R<O?`${R}-${O}`:`${O}-${R}`}function u(R){return Math.round(R*100)/100}const d={nodes:[],links:[],maxLinkValue:0,communities:[],stats:{totalMembers:0,totalMessages:0,involvedMembers:0,edgeCount:0,communityCount:0}};if(a.length<2)return{...d,stats:{...d.stats,totalMembers:a.length}};const g=new Map;for(const R of a)g.set(R.id,{name:R.name,platformId:R.platformId,messageCount:R.messageCount});if(e.length<2)return{...d,stats:{...d.stats,totalMembers:a.length,totalMessages:e.length}};const p=new Map;for(const R of e)p.set(R.senderId,(p.get(R.senderId)||0)+1);const _=e.length,y=new Map,m=new Map;for(let R=0;R<e.length-1;R++){const O=e[R],E=new Set;let j=0;for(let X=R+1;X<e.length&&j<o.lookAhead;X++){const ee=e[X];if(ee.senderId===O.senderId||E.has(ee.senderId))continue;E.add(ee.senderId),j++;const re=(ee.ts-O.ts)/1e3,oe=Math.exp(-re/o.decaySeconds),de=1-(j-1)*.2,z=oe*de,F=c(O.senderId,ee.senderId);y.set(F,(y.get(F)||0)+z),m.set(F,(m.get(F)||0)+1)}}const n=o.lookAhead*.8,i=[];for(const[R,O]of y){const[E,j]=R.split("-"),X=parseInt(E),ee=parseInt(j),re=p.get(X)||0,oe=p.get(ee)||0,de=re*oe/_*n,z=de>0?O/de:0;i.push({sourceId:X,targetId:ee,rawScore:O,expectedScore:de,normalizedScore:z,coOccurrenceCount:m.get(R)||0})}const h=Math.max(...i.map(R=>R.rawScore),1),f=Math.max(...i.map(R=>R.normalizedScore),1),b=i.map(R=>{const O=.5*(R.rawScore/h)+.5*(R.normalizedScore/f);return{...R,rawScore:u(R.rawScore),expectedScore:u(R.expectedScore),normalizedScore:u(R.normalizedScore),hybridScore:u(O)}});b.sort((R,O)=>O.hybridScore-R.hybridScore);const k=b.slice(0,o.topEdges);if(k.length===0)return{...d,stats:{...d.stats,totalMembers:a.length,totalMessages:e.length}};const C=new Set;for(const R of k)C.add(R.sourceId),C.add(R.targetId);const v=new Map;for(const R of k)v.set(R.sourceId,(v.get(R.sourceId)||0)+R.hybridScore),v.set(R.targetId,(v.get(R.targetId)||0)+R.hybridScore);const w=Math.max(...v.values(),1),S=new Map;for(const R of C){const O=g.get(R)?.name||String(R);S.set(O,(S.get(O)||0)+1)}const M=new Map;for(const R of C){const O=g.get(R),E=O?.name||String(R);(S.get(E)||0)>1?M.set(R,`${E}#${(O?.platformId||String(R)).slice(-4)}`):M.set(R,E)}const T=Math.max(...[...C].map(R=>g.get(R)?.messageCount||0),1),L=[...C].map(R=>{const O=g.get(R),E=v.get(R)||0,j=E/w,X=O.messageCount/T,ee=20+(.7*j+.3*X)*35;return{id:R,name:M.get(R),messageCount:O.messageCount,symbolSize:Math.round(ee),degree:u(E),normalizedDegree:u(j)}});L.sort((R,O)=>O.degree-R.degree);const W=k.length>0?Math.max(...k.map(R=>R.hybridScore)):0,H=k.map(R=>({source:M.get(R.sourceId),target:M.get(R.targetId),value:R.hybridScore,rawScore:R.rawScore,expectedScore:R.expectedScore,coOccurrenceCount:R.coOccurrenceCount}));return{nodes:L,links:H,maxLinkValue:u(W),communities:[],stats:{totalMembers:a.length,totalMessages:e.length,involvedMembers:C.size,edgeCount:k.length,communityCount:0}}}async function oo(l,a,e){const o={nodes:[],links:[],maxLinkValue:0,communities:[],stats:{totalMembers:0,totalMessages:0,involvedMembers:0,edgeCount:0,communityCount:0}};try{const[c,u]=await Promise.all([so(l),ao(l,a)]);if(c.length<2||u.length<2)return{...o,stats:{...o.stats,totalMembers:c.length,totalMessages:u.length}};const d={...Zn,...e};return await window.chatApi.pluginCompute(no.toString(),{members:c,messages:u,options:d})}catch(c){return console.error("[chart-cluster] Failed to load cluster graph:",c),o}}const io={class:"mx-auto max-w-[920px] p-4 h-full"},ro={class:"flex h-full flex-col rounded-lg border border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-900 shadow-sm overflow-hidden"},lo={class:"flex items-center justify-between px-4 py-3 border-b border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800/50"},co={class:"flex items-center gap-3"},uo={class:"flex items-center gap-3"},mo={class:"p-3 w-64"},go={class:"text-sm font-medium mb-3"},po={class:"space-y-3"},ho={class:"text-xs text-gray-500 mb-1 block"},vo={class:"text-xs text-gray-400 mt-1"},fo={class:"text-xs text-gray-500 mb-1 block"},yo={class:"text-xs text-gray-400 mt-1"},xo={class:"flex-1 min-h-0 overflow-hidden"},bo={key:0,class:"h-full flex items-center justify-center"},_o={key:1,class:"h-full flex items-center justify-center"},ko={class:"text-center text-gray-400"},wo={key:2,class:"h-full"},$o={key:3,class:"h-full flex overflow-hidden"},Io={class:"w-64 border-r border-gray-200 dark:border-gray-700 flex flex-col overflow-hidden"},Co={class:"px-4 py-3 border-b border-gray-200 dark:border-gray-700"},So={class:"text-sm font-medium flex items-center gap-2"},Mo={class:"flex-1 overflow-y-auto"},To=["onClick"],Do={class:"flex items-center justify-between"},Ro={class:"text-sm truncate"},No={class:"text-xs text-gray-400"},Ao={class:"flex-1 overflow-hidden flex flex-col"},Lo={key:0,class:"flex-1 flex items-center justify-center"},Vo={class:"text-center text-gray-400"},Eo={class:"px-4 py-3 border-b border-gray-200 dark:border-gray-700 flex items-center gap-3"},Oo={class:"w-10 h-10 rounded-full flex items-center justify-center text-white font-bold bg-primary-500"},zo={class:"font-medium"},Fo={class:"text-xs text-gray-400"},Bo={class:"px-4 py-3 border-b border-gray-200 dark:border-gray-700"},Uo={class:"text-sm font-medium flex items-center gap-2"},Ho={class:"flex-1 overflow-y-auto"},Wo={key:0,class:"p-4 text-center text-gray-400"},jo={class:"flex items-center gap-3"},Po={class:"flex-1 min-w-0"},qo={class:"text-sm font-medium truncate"},Yo={class:"flex items-center gap-3 mt-0.5 text-xs text-gray-400"},Go={class:"w-20 h-2 bg-gray-200 dark:bg-gray-700 rounded-full overflow-hidden"},Jo={key:4,class:"h-full flex flex-col overflow-hidden"},Ko={class:"px-4 py-3 border-b border-gray-200 dark:border-gray-700"},Qo={class:"text-sm font-medium flex items-center gap-2"},Xo={class:"flex-1 overflow-y-auto"},Zo={class:"flex items-center gap-3"},ei={class:"flex-1 min-w-0"},ti={class:"flex items-center gap-2 text-sm"},si={class:"font-medium truncate"},ai={class:"font-medium truncate"},ni={class:"flex items-center gap-3 mt-1 text-xs text-gray-400"},oi={class:"w-24 h-2 bg-gray-200 dark:bg-gray-700 rounded-full overflow-hidden"},ii={key:0,class:"px-4 py-2 border-t border-gray-200 dark:border-gray-700 text-xs text-gray-400 flex items-center gap-4 bg-gray-50 dark:bg-gray-800/50"},ri=P({__name:"ClusterView",props:{sessionId:{},timeFilter:{}},setup(l){Je([Pt,Ke,qt,Yt,Qe]);const a=l,{t:e}=se(),o=gt(),c=D(()=>o.value==="dark"),u=A(!0),d=A(null),g=A("matrix"),p=A(null),_=A({lookAhead:3,decaySeconds:120,topEdges:150}),y=A(null);let m=null;async function n(){if(a.sessionId){u.value=!0;try{d.value=await oo(a.sessionId,a.timeFilter,{lookAhead:_.value.lookAhead,decaySeconds:_.value.decaySeconds,topEdges:_.value.topEdges})}catch(M){console.error("[chart-cluster] 加载小团体关系数据失败:",M),d.value=null}finally{u.value=!1}}}const i=D(()=>{if(!d.value||d.value.nodes.length===0)return null;const{nodes:M,links:T,maxLinkValue:L}=d.value,H=[...M].sort((E,j)=>j.messageCount-E.messageCount).slice(0,20).map(E=>E.name),R=new Map;for(const E of T)R.set(`${E.source}-${E.target}`,E.value),R.set(`${E.target}-${E.source}`,E.value);const O=[];for(let E=0;E<H.length;E++)for(let j=0;j<H.length;j++)if(E===j)O.push([E,j,-1]);else{const X=R.get(`${H[E]}-${H[j]}`)||0;O.push([E,j,X])}return{names:H,data:O,maxValue:L}});function h(){if(!i.value)return{graphic:{type:"text",style:{text:e("views.cluster.noData"),fill:"#999"}}};const{names:M,data:T,maxValue:L}=i.value;return{tooltip:{position:"top",formatter:W=>{const[H,R,O]=W.data;return O<0?`${M[H]}`:O===0?`${M[H]} ↔ ${M[R]}<br/>暂无关系数据`:`${M[H]} ↔ ${M[R]}<br/>临近度: ${O.toFixed(2)}`}},grid:{left:120,right:40,top:40,bottom:120},xAxis:{type:"category",data:M,splitArea:{show:!0},axisLabel:{rotate:45,fontSize:10,color:c.value?"#ccc":"#333"}},yAxis:{type:"category",data:M,splitArea:{show:!0},axisLabel:{fontSize:10,color:c.value?"#ccc":"#333"}},visualMap:{min:0,max:L||1,calculable:!0,orient:"horizontal",left:"center",bottom:10,inRange:{color:c.value?["#1a1a2e","#16213e","#0f3460","#e94560"]:["#f7f7f7","#fce4ec","#f8bbd9","#ee4567"]},textStyle:{color:c.value?"#ccc":"#333"}},series:[{type:"heatmap",data:T.filter(W=>W[2]>=0),label:{show:!1},emphasis:{itemStyle:{shadowBlur:10,shadowColor:"rgba(0, 0, 0, 0.5)"}}}],backgroundColor:"transparent"}}const f=D(()=>d.value?[...d.value.nodes].sort((M,T)=>T.messageCount-M.messageCount):[]),b=D(()=>!d.value||p.value===null?null:d.value.nodes.find(M=>M.id===p.value)||null),k=D(()=>{if(!d.value||!b.value)return[];const M=b.value.name,T=[];for(const L of d.value.links)L.source===M?T.push({otherName:L.target,value:L.value,coOccurrenceCount:L.coOccurrenceCount}):L.target===M&&T.push({otherName:L.source,value:L.value,coOccurrenceCount:L.coOccurrenceCount});return T.sort((L,W)=>W.value-L.value),T}),C=D(()=>d.value?d.value.links.slice(0,50):[]);function v(){m&&g.value==="matrix"&&m.setOption(h(),{notMerge:!0})}function w(){y.value&&(m=Xe(y.value,c.value?"dark":void 0),v())}function S(){m?.resize()}return G(g,async(M,T)=>{T==="matrix"&&m&&(m.dispose(),m=null),M==="matrix"&&(await Se(),w())}),G([d,()=>c.value],()=>{g.value==="matrix"&&v()},{deep:!0}),G(u,async(M,T)=>{T&&!M&&g.value==="matrix"&&(m&&(m.dispose(),m=null),await Se(),w())}),G(()=>[a.sessionId,a.timeFilter],()=>n(),{immediate:!0,deep:!0}),ke(()=>{window.addEventListener("resize",S),g.value==="matrix"&&Se(()=>w())}),Re(()=>{window.removeEventListener("resize",S),m?.dispose(),m=null}),(M,T)=>{const L=ge,W=qe("UButtonGroup"),H=Be,R=nt,O=we;return r(),I("div",io,[s("div",ro,[s("div",lo,[s("div",co,[$(W,{size:"xs"},{default:V(()=>[$(L,{color:g.value==="matrix"?"primary":"neutral",variant:g.value==="matrix"?"solid":"ghost",onClick:T[0]||(T[0]=E=>g.value="matrix")},{default:V(()=>[Q(x(t(e)("views.cluster.matrixView")),1)]),_:1},8,["color","variant"]),$(L,{color:g.value==="member"?"primary":"neutral",variant:g.value==="member"?"solid":"ghost",onClick:T[1]||(T[1]=E=>g.value="member")},{default:V(()=>[Q(x(t(e)("views.cluster.memberView")),1)]),_:1},8,["color","variant"]),$(L,{color:g.value==="circle"?"primary":"neutral",variant:g.value==="circle"?"solid":"ghost",onClick:T[2]||(T[2]=E=>g.value="circle")},{default:V(()=>[Q(x(t(e)("views.cluster.rankingView")),1)]),_:1},8,["color","variant"])]),_:1})]),s("div",uo,[$(R,null,{content:V(()=>[s("div",mo,[s("h4",go,x(t(e)("views.cluster.modelSettings")),1),s("div",po,[s("div",null,[s("label",ho,x(t(e)("views.cluster.lookAhead")),1),$(H,{modelValue:_.value.lookAhead,"onUpdate:modelValue":T[3]||(T[3]=E=>_.value.lookAhead=E),modelModifiers:{number:!0},type:"number",min:1,max:10,size:"xs",placeholder:"1-10"},null,8,["modelValue"]),s("p",vo,x(t(e)("views.cluster.lookAheadDesc")),1)]),s("div",null,[s("label",fo,x(t(e)("views.cluster.decaySeconds")),1),$(H,{modelValue:_.value.decaySeconds,"onUpdate:modelValue":T[4]||(T[4]=E=>_.value.decaySeconds=E),modelModifiers:{number:!0},type:"number",min:30,max:3600,size:"xs",placeholder:"30-3600"},null,8,["modelValue"]),s("p",yo,x(t(e)("views.cluster.decaySecondsDesc")),1)]),$(L,{size:"xs",color:"primary",class:"w-full mt-2",onClick:n},{default:V(()=>[Q(x(t(e)("views.cluster.applySettings")),1)]),_:1})])])]),default:V(()=>[$(L,{variant:"ghost",size:"xs",icon:"i-heroicons-adjustments-horizontal"})]),_:1}),$(L,{variant:"ghost",size:"xs",icon:"i-heroicons-arrow-path",onClick:n})])]),s("div",xo,[u.value?(r(),I("div",bo,[$(O,{name:"i-heroicons-arrow-path",class:"w-6 h-6 animate-spin text-gray-400"})])):!d.value||d.value.nodes.length===0?(r(),I("div",_o,[s("div",ko,[$(O,{name:"i-heroicons-user-group",class:"w-12 h-12 mx-auto mb-2 opacity-50"}),s("p",null,x(t(e)("views.cluster.noData")),1)])])):g.value==="matrix"?(r(),I("div",wo,[s("div",{ref_key:"chartRef",ref:y,class:"w-full h-full"},null,512)])):g.value==="member"?(r(),I("div",$o,[s("div",Io,[s("div",Co,[s("h3",So,[$(O,{name:"i-heroicons-users",class:"w-4 h-4"}),Q(" "+x(t(e)("views.cluster.selectMember")),1)])]),s("div",Mo,[(r(!0),I(q,null,te(f.value,E=>(r(),I("div",{key:E.id,class:Z(["px-4 py-2 cursor-pointer border-b border-gray-100 dark:border-gray-800 hover:bg-gray-50 dark:hover:bg-gray-800/50",{"bg-primary-50 dark:bg-primary-900/30":p.value===E.id}]),onClick:j=>p.value=E.id},[s("div",Do,[s("span",Ro,x(E.name),1),s("span",No,x(E.messageCount),1)])],10,To))),128))])]),s("div",Ao,[b.value?(r(),I(q,{key:1},[s("div",Eo,[s("div",Oo,x(b.value.name.charAt(0)),1),s("div",null,[s("div",zo,x(b.value.name),1),s("div",Fo,x(t(e)("views.cluster.msgCount"))+": "+x(b.value.messageCount)+" | "+x(t(e)("views.cluster.relationCount"))+": "+x(k.value.length),1)])]),s("div",Bo,[s("h3",Uo,[$(O,{name:"i-heroicons-heart",class:"w-4 h-4 text-pink-500"}),Q(" "+x(t(e)("views.cluster.relationsByIntimacy")),1)])]),s("div",Ho,[k.value.length===0?(r(),I("div",Wo,x(t(e)("views.cluster.noRelations")),1)):U("",!0),(r(!0),I(q,null,te(k.value,(E,j)=>(r(),I("div",{key:E.otherName,class:"px-4 py-3 border-b border-gray-100 dark:border-gray-800 hover:bg-gray-50 dark:hover:bg-gray-800/50"},[s("div",jo,[s("span",{class:Z(["w-6 h-6 rounded-full flex items-center justify-center text-xs font-bold",j<3?"bg-yellow-100 text-yellow-700 dark:bg-yellow-900/30 dark:text-yellow-400":"bg-gray-100 text-gray-500 dark:bg-gray-800 dark:text-gray-400"])},x(j+1),3),s("div",Po,[s("div",qo,x(E.otherName),1),s("div",Yo,[s("span",null,x(t(e)("views.cluster.intimacy"))+": "+x((E.value*100).toFixed(0))+"%",1),s("span",null,x(t(e)("views.cluster.coOccurrence"))+": "+x(E.coOccurrenceCount)+x(t(e)("views.cluster.times")),1)])]),s("div",Go,[s("div",{class:"h-full bg-linear-to-r from-pink-400 to-pink-600",style:be({width:`${k.value[0]?.value?E.value/k.value[0].value*100:0}%`})},null,4)])])]))),128))])],64)):(r(),I("div",Lo,[s("div",Vo,[$(O,{name:"i-heroicons-cursor-arrow-rays",class:"w-12 h-12 mx-auto mb-2 opacity-50"}),s("p",null,x(t(e)("views.cluster.selectMemberHint")),1)])]))])])):(r(),I("div",Jo,[s("div",Ko,[s("h3",Qo,[$(O,{name:"i-heroicons-trophy",class:"w-4 h-4 text-yellow-500"}),Q(" "+x(t(e)("views.cluster.interactionRanking")),1)])]),s("div",Xo,[(r(!0),I(q,null,te(C.value,(E,j)=>(r(),I("div",{key:j,class:"px-4 py-3 border-b border-gray-100 dark:border-gray-800 hover:bg-gray-50 dark:hover:bg-gray-800/50"},[s("div",Zo,[s("span",{class:Z(["w-8 h-8 rounded-full flex items-center justify-center text-sm font-bold",j<3?"bg-yellow-100 text-yellow-700 dark:bg-yellow-900/30 dark:text-yellow-400":"bg-gray-100 text-gray-500 dark:bg-gray-800 dark:text-gray-400"])},x(j+1),3),s("div",ei,[s("div",ti,[s("span",si,x(E.source),1),T[5]||(T[5]=s("span",{class:"text-gray-400"},"↔",-1)),s("span",ai,x(E.target),1)]),s("div",ni,[s("span",null,x(t(e)("views.cluster.score"))+": "+x(E.value.toFixed(2)),1),s("span",null,x(t(e)("views.cluster.coOccurrence"))+": "+x(E.coOccurrenceCount)+x(t(e)("views.cluster.times")),1)])]),s("div",oi,[s("div",{class:"h-full bg-linear-to-r from-yellow-400 to-orange-500",style:be({width:`${C.value[0]?.value?E.value/C.value[0].value*100:0}%`})},null,4)])])]))),128))])]))]),d.value?(r(),I("div",ii,[s("span",null,x(t(e)("views.cluster.totalMembers"))+": "+x(d.value.stats.totalMembers),1),s("span",null,x(t(e)("views.cluster.totalMessages"))+": "+x(d.value.stats.totalMessages.toLocaleString()),1),s("span",null,x(t(e)("views.cluster.involvedMembers"))+": "+x(d.value.stats.involvedMembers),1),s("span",null,x(t(e)("views.cluster.edgeCount"))+": "+x(d.value.stats.edgeCount),1)])):U("",!0)])])}}}),li={class:"flex h-full flex-col"},ci={class:"min-h-0 flex-1 overflow-y-auto"},di=P({__name:"GroupRelationships",props:{sessionId:{},timeFilter:{}},setup(l){const{t:a}=se(),e=l,o=A("mention-graph"),c=D(()=>[{id:"mention-graph",label:a("analysis.subTabs.groupRelationships.mentionGraph"),icon:"i-heroicons-arrows-right-left"},{id:"mention-ranking",label:a("analysis.subTabs.groupRelationships.mentionRanking"),icon:"i-heroicons-heart"},{id:"proximity",label:a("analysis.subTabs.groupRelationships.proximity"),icon:"i-heroicons-user-group"}]);return(u,d)=>(r(),I("div",li,[$(t(Ye),{modelValue:o.value,"onUpdate:modelValue":d[0]||(d[0]=g=>o.value=g),items:c.value,"persist-key":"groupRelationshipsTab",size:"sm"},null,8,["modelValue","items"]),s("div",ci,[$(Ne,{name:"fade",mode:"out-in"},{default:V(()=>[o.value==="mention-graph"?(r(),N(vn,{key:0,"session-id":e.sessionId,"time-filter":e.timeFilter},null,8,["session-id","time-filter"])):o.value==="mention-ranking"?(r(),N(Xn,{key:1,"session-id":e.sessionId,"time-filter":e.timeFilter},null,8,["session-id","time-filter"])):o.value==="proximity"?(r(),N(ri,{key:2,"session-id":e.sessionId,"time-filter":e.timeFilter},null,8,["session-id","time-filter"])):U("",!0)]),_:1})])]))}}),ui=Le(di,[["__scopeId","data-v-90e47115"]]),mi={class:"flex h-full flex-col"},gi={class:"flex-1 min-h-0 overflow-y-auto"},pi=P({__name:"ViewTab",props:{sessionId:{},sessionName:{},timeFilter:{}},setup(l){const{t:a,locale:e}=se(),o=l,c=D(()=>{const p=[{id:"message",label:a("analysis.subTabs.view.message"),icon:"i-heroicons-chat-bubble-left-right"},{id:"topic",label:a("analysis.subTabs.view.topic"),icon:"i-heroicons-cloud"},{id:"group-relationships",label:a("analysis.subTabs.view.groupRelationships"),icon:"i-heroicons-heart"},{id:"hot-repeat",label:a("analysis.subTabs.quotes.hotRepeat"),icon:"i-heroicons-fire"},{id:"catchphrase",label:a("analysis.subTabs.quotes.catchphrase"),icon:"i-heroicons-chat-bubble-bottom-center-text"}];return pt("groupRanking",e.value)&&p.splice(1,0,{id:"ranking",label:a("analysis.subTabs.view.ranking"),icon:"i-heroicons-trophy"}),p}),u=A("message"),d=A(null),g=D(()=>({...o.timeFilter,memberId:d.value}));return(p,_)=>(r(),I("div",mi,[$(t(Ye),{modelValue:u.value,"onUpdate:modelValue":_[1]||(_[1]=y=>u.value=y),items:c.value,"persist-key":"groupViewTab"},{right:V(()=>[u.value!=="topic"?(r(),N(Ct,{key:0,modelValue:d.value,"onUpdate:modelValue":_[0]||(_[0]=y=>d.value=y),"session-id":o.sessionId},null,8,["modelValue","session-id"])):U("",!0)]),_:1},8,["modelValue","items"]),s("div",gi,[$(Ne,{name:"fade",mode:"out-in"},{default:V(()=>[u.value==="message"?(r(),N(St,{key:0,"session-id":o.sessionId,"session-name":o.sessionName,"time-filter":g.value},null,8,["session-id","session-name","time-filter"])):u.value==="topic"?(r(),N(t(Mt),{key:1,"session-id":o.sessionId,"time-filter":o.timeFilter},null,8,["session-id","time-filter"])):u.value==="group-relationships"?(r(),N(ui,{key:2,"session-id":o.sessionId,"time-filter":g.value},null,8,["session-id","time-filter"])):u.value==="ranking"?(r(),N(Ga,{key:3,"session-id":o.sessionId,"time-filter":g.value},null,8,["session-id","time-filter"])):u.value==="hot-repeat"?(r(),N(t(Js),{key:4,"session-id":o.sessionId,"time-filter":o.timeFilter},null,8,["session-id","time-filter"])):u.value==="catchphrase"?(r(),N(t(As),{key:5,"session-id":o.sessionId,"time-filter":o.timeFilter},null,8,["session-id","time-filter"])):U("",!0)]),_:1})])]))}}),hi=Le(pi,[["__scopeId","data-v-6549d466"]]),vi={key:0,class:"mb-6"},fi={class:"flex items-center gap-3"},yi={class:"text-xl font-bold text-gray-900 dark:text-white"},xi={class:"text-sm text-gray-500 dark:text-gray-400"},bi={class:"mb-4 flex flex-wrap items-center justify-between gap-3"},_i={class:"flex items-center gap-2"},ki={class:"text-xs text-gray-500 dark:text-gray-400"},wi={key:0,class:"flex h-60 items-center justify-center"},$i={key:1,class:"flex h-60 flex-col items-center justify-center"},Ii={class:"text-gray-500 dark:text-gray-400"},Ci={key:2,class:"flex min-h-0 flex-1 flex-col"},Si={class:"w-full"},Mi={class:"sticky top-0 bg-gray-50 dark:bg-gray-800"},Ti={class:"text-left text-xs font-medium uppercase text-gray-500 dark:text-gray-400"},Di={class:"px-4 py-4"},Ri={class:"px-4 py-4"},Ni={class:"px-4 py-4"},Ai={class:"w-64 px-4 py-4"},Li={class:"inline-flex items-center gap-1.5"},Vi={class:"px-4 py-4 text-right"},Ei={class:"divide-y divide-gray-200 dark:divide-gray-700"},Oi={class:"px-4 py-4"},zi={class:"px-4 py-4"},Fi={class:"flex items-center gap-2"},Bi=["src","alt"],Ui={key:1,class:"flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-gradient-to-br from-pink-400 to-pink-600 text-xs font-medium text-white"},Hi={class:"text-sm font-medium text-gray-900 dark:text-white"},Wi={class:"ml-1 text-sm text-gray-500 dark:text-gray-400"},ji={class:"px-4 py-4"},Pi={key:0,class:"text-sm font-medium text-gray-900 dark:text-white"},qi={key:1,class:"text-sm text-gray-400 dark:text-gray-500"},Yi={class:"px-4 py-4"},Gi={class:"text-sm font-semibold text-gray-900 dark:text-white"},Ji={class:"px-4 py-4"},Ki={class:"max-w-xs"},Qi={key:0,class:"absolute right-2 top-1/2 -translate-y-1/2"},Xi={class:"px-4 py-4 text-right"},Zi={key:0,class:"flex items-center justify-between border-t border-gray-200 px-6 py-4 dark:border-gray-700"},er={class:"text-sm text-gray-500 dark:text-gray-400"},tr={class:"flex items-center gap-2"},sr={class:"text-sm font-medium text-gray-600 dark:text-gray-300"},ar={class:"p-6 text-center"},nr={class:"mx-auto mb-4 flex h-14 w-14 items-center justify-center rounded-full bg-red-100 dark:bg-red-900/30"},or={class:"mb-2 text-lg font-semibold text-gray-900 dark:text-white"},ir={class:"mb-6 text-sm text-gray-500 dark:text-gray-400"},rr={class:"flex justify-center gap-3"},lr={class:"p-6"},cr={class:"mb-4 flex items-center gap-3"},dr={class:"flex h-10 w-10 items-center justify-center rounded-full bg-amber-100 dark:bg-amber-900/30"},ur={class:"text-lg font-semibold text-gray-900 dark:text-white"},mr={class:"mb-2 text-sm text-gray-600 dark:text-gray-400"},gr={class:"mb-6 text-xs text-amber-700 dark:text-amber-300"},pr={class:"flex justify-end gap-2"},Me=20,hr=P({__name:"MemberList",props:{sessionId:{},showHeader:{type:Boolean,default:!0}},emits:["data-changed"],setup(l,{emit:a}){const{t:e}=se(),o=l,c=a,u=A([]),d=A([]),g=A(!1),p=A(""),_=A(null),y=A(!1),m=A(new Set),n=A(!1),i=A(!1),h=A(1),f=A(0),b=A(0),k=A("desc"),C=A(null);let v=null;function w(z){return z.groupNickname||z.accountName||z.platformId}function S(z){return w(z).slice(0,1)}const M=D(()=>d.value.filter(z=>m.value.has(z.id))),T=D(()=>M.value.length===2),L=D(()=>{if(M.value.length!==2)return null;const[z,F]=M.value;return F.messageCount>z.messageCount||F.messageCount===z.messageCount&&F.id<z.id?{primary:F,secondary:z}:{primary:z,secondary:F}});function W(){k.value=k.value==="desc"?"asc":"desc",h.value=1,H()}async function H(){if(o.sessionId){g.value=!0;try{const z=await ue().getMembersPaginated(o.sessionId,{page:h.value,pageSize:Me,search:p.value.trim(),sortOrder:k.value});u.value=z.items,f.value=z.total,b.value=z.totalPages}catch(z){console.error("加载成员列表失败:",z)}finally{g.value=!1}}}async function R(){if(o.sessionId)try{d.value=await ue().getMembers(o.sessionId)}catch(z){console.error("加载所有成员失败:",z)}}async function O(z,F){const B=JSON.parse(JSON.stringify(F)),he=JSON.stringify(z.aliases),ie=JSON.stringify(B);if(he!==ie){C.value=z.id;try{if(await ue().updateMemberAliases(o.sessionId,z.id,B)){const pe=u.value.findIndex(Y=>Y.id===z.id);pe!==-1&&(u.value[pe]={...u.value[pe],aliases:B})}}catch(ve){console.error("保存别名失败:",ve)}finally{C.value=null}}}function E(z){_.value=z}function j(){_.value=null}async function X(){if(_.value){y.value=!0;try{await ue().deleteMember(o.sessionId,_.value.id)&&(await H(),await R(),c("data-changed"))}catch(z){console.error("删除成员失败:",z)}finally{y.value=!1,_.value=null}}}function ee(z){const F=new Set(m.value);F.has(z)?F.delete(z):F.add(z),m.value=F}function re(){T.value&&(n.value=!0)}function oe(){m.value=new Set}async function de(){if(L.value){i.value=!0;try{await ue().mergeMembers(o.sessionId,L.value.primary.id,L.value.secondary.id)&&(n.value=!1,oe(),await H(),await R(),c("data-changed"))}catch(z){console.error("合并成员失败:",z)}finally{i.value=!1}}}return G(p,()=>{h.value=1,v&&clearTimeout(v),v=setTimeout(()=>{H()},300)}),G(h,()=>{H()}),G(()=>o.sessionId,()=>{p.value="",h.value=1,oe(),H(),R()},{immediate:!0}),ke(()=>{H(),R()}),(z,F)=>{const B=ge,he=Be,ie=we,ve=Ue,pe=ot,Y=it,Ie=_e;return r(),I("div",{class:Z(["main-content",o.showHeader?"max-w-5xl p-6":"flex h-full max-w-none flex-col overflow-hidden p-4"])},[o.showHeader?(r(),I("div",vi,[s("div",fi,[s("div",null,[s("h2",yi,x(t(e)("members.list.title")),1),s("p",xi,x(t(e)("members.list.description",{count:f.value})),1)])])])):U("",!0),$(Tt,{class:"mb-6","session-id":l.sessionId,members:d.value,"is-loading":g.value,"chat-type":"group"},null,8,["session-id","members","is-loading"]),s("div",bi,[$(he,{modelValue:p.value,"onUpdate:modelValue":F[1]||(F[1]=J=>p.value=J),placeholder:t(e)("members.list.searchPlaceholder"),icon:"i-heroicons-magnifying-glass",class:"w-full md:w-100"},Pe({_:2},[p.value?{name:"trailing",fn:V(()=>[$(B,{icon:"i-heroicons-x-mark",variant:"link",color:"neutral",size:"xs",onClick:F[0]||(F[0]=J=>p.value="")})]),key:"0"}:void 0]),1032,["modelValue","placeholder"]),s("div",_i,[s("span",ki,x(t(e)("members.list.mergeSelectedCount",{count:m.value.size})),1),$(B,{icon:"i-heroicons-link",size:"sm",color:"primary",disabled:!T.value,onClick:re},{default:V(()=>[Q(x(t(e)("members.list.mergeSelected")),1)]),_:1},8,["disabled"])])]),s("div",{class:Z(["rounded-xl border border-gray-200 bg-white shadow-sm dark:border-gray-700 dark:bg-gray-900",o.showHeader?"":"flex min-h-0 flex-1 flex-col"])},[g.value?(r(),I("div",wi,[$(ie,{name:"i-heroicons-arrow-path",class:"h-8 w-8 animate-spin text-pink-500"})])):u.value.length===0?(r(),I("div",$i,[$(ie,{name:"i-heroicons-user-group",class:"mb-3 h-12 w-12 text-gray-300 dark:text-gray-600"}),s("p",Ii,x(p.value?t(e)("members.list.noMatch"):t(e)("members.list.empty")),1)])):(r(),I("div",Ci,[s("div",{class:Z(["max-h-[500px] overflow-y-auto",o.showHeader?"":"max-h-none min-h-0 flex-1"])},[s("table",Si,[s("thead",Mi,[s("tr",Ti,[F[7]||(F[7]=s("th",{class:"w-12 px-4 py-4"},null,-1)),s("th",Di,x(t(e)("members.list.table.accountName")),1),s("th",Ri,x(t(e)("members.list.table.groupNickname")),1),s("th",Ni,[s("button",{class:"flex items-center gap-1.5 hover:text-gray-700 dark:hover:text-gray-200",onClick:W},[Q(x(t(e)("members.list.table.messageCount"))+" ",1),$(ie,{name:k.value==="desc"?"i-heroicons-arrow-down":"i-heroicons-arrow-up",class:"h-3.5 w-3.5"},null,8,["name"])])]),s("th",Ai,[s("div",Li,[s("span",null,x(t(e)("members.list.table.customAlias")),1),$(ve,{text:t(e)("members.list.tip"),popper:{placement:"top"}},{default:V(()=>[$(ie,{name:"i-heroicons-question-mark-circle",class:"h-4 w-4 text-gray-400 dark:text-gray-500"})]),_:1},8,["text"])])]),s("th",Vi,x(t(e)("members.list.table.actions")),1)])]),s("tbody",Ei,[(r(!0),I(q,null,te(u.value,J=>(r(),I("tr",{key:J.id,class:"hover:bg-gray-50 dark:hover:bg-gray-800/50"},[s("td",Oi,[$(pe,{"model-value":m.value.has(J.id),onClick:je(Ce=>ee(J.id),["stop"])},null,8,["model-value","onClick"])]),s("td",zi,[s("div",Fi,[J.avatar?(r(),I("img",{key:0,src:J.avatar,alt:w(J),class:"h-8 w-8 shrink-0 rounded-full object-cover"},null,8,Bi)):(r(),I("div",Ui,x(S(J)),1)),s("div",null,[s("span",Hi,x(J.accountName||"-"),1),s("span",Wi,"("+x(J.platformId)+")",1)])])]),s("td",ji,[J.groupNickname?(r(),I("span",Pi,x(J.groupNickname),1)):(r(),I("span",qi,"-"))]),s("td",Yi,[s("span",Gi,x(J.messageCount.toLocaleString()),1)]),s("td",Ji,[s("div",Ki,[$(Y,{"model-value":J.aliases,placeholder:t(e)("members.list.aliasPlaceholder"),class:"w-80","onUpdate:modelValue":Ce=>O(J,Ce)},null,8,["model-value","placeholder","onUpdate:modelValue"]),C.value===J.id?(r(),I("div",Qi,[$(ie,{name:"i-heroicons-arrow-path",class:"h-4 w-4 animate-spin text-pink-500"})])):U("",!0)])]),s("td",Xi,[$(B,{label:t(e)("members.list.delete"),size:"xs",onClick:Ce=>E(J)},null,8,["label","onClick"])])]))),128))])])],2),b.value>1?(r(),I("div",Zi,[s("p",er,x(t(e)("members.list.pagination",{start:(h.value-1)*Me+1,end:Math.min(h.value*Me,f.value),total:f.value})),1),s("div",tr,[$(B,{icon:"i-heroicons-chevron-left",variant:"outline",size:"sm",disabled:h.value===1||g.value,onClick:F[2]||(F[2]=J=>h.value--)},null,8,["disabled"]),s("span",sr,x(h.value)+" / "+x(b.value),1),$(B,{icon:"i-heroicons-chevron-right",variant:"outline",size:"sm",disabled:h.value>=b.value||g.value,onClick:F[3]||(F[3]=J=>h.value++)},null,8,["disabled"])])])):U("",!0)]))],2),$(Ie,{open:!!_.value,ui:{content:"max-w-sm"},"onUpdate:open":F[4]||(F[4]=J=>_.value=null)},{content:V(()=>[s("div",ar,[s("div",nr,[$(ie,{name:"i-heroicons-exclamation-triangle",class:"h-7 w-7 text-red-500"})]),s("h3",or,x(t(e)("members.list.modal.title")),1),s("p",ir,x(t(e)("members.list.modal.content",{name:_.value?w(_.value):"",count:_.value?.messageCount.toLocaleString()})),1),s("div",rr,[$(B,{variant:"outline",onClick:j},{default:V(()=>[Q(x(t(e)("members.list.modal.cancel")),1)]),_:1}),$(B,{color:"error",loading:y.value,onClick:X},{default:V(()=>[Q(x(t(e)("members.list.modal.confirm")),1)]),_:1},8,["loading"])])])]),_:1},8,["open"]),$(Ie,{open:n.value,ui:{content:"max-w-md"},"onUpdate:open":F[6]||(F[6]=J=>n.value=J)},{content:V(()=>[s("div",lr,[s("div",cr,[s("div",dr,[$(ie,{name:"i-heroicons-link",class:"h-5 w-5 text-amber-600 dark:text-amber-400"})]),s("h3",ur,x(t(e)("members.list.mergeModal.title")),1)]),s("p",mr,x(t(e)("members.list.mergeModal.content",{source:L.value?w(L.value.secondary):"",sourceCount:L.value?L.value.secondary.messageCount.toLocaleString():"0",target:L.value?w(L.value.primary):"",targetCount:L.value?L.value.primary.messageCount.toLocaleString():"0"})),1),s("p",gr,x(t(e)("members.list.mergeModal.hint")),1),s("div",pr,[$(B,{variant:"outline",disabled:i.value,onClick:F[5]||(F[5]=J=>n.value=!1)},{default:V(()=>[Q(x(t(e)("members.list.mergeModal.cancel")),1)]),_:1},8,["disabled"]),$(B,{color:"primary",loading:i.value,onClick:de},{default:V(()=>[Q(x(t(e)("members.list.mergeModal.confirm")),1)]),_:1},8,["loading"])])])]),_:1},8,["open"])],2)}}}),vr={class:"main-content max-w-5xl p-6"},fr={class:"mb-4 text-sm text-gray-500 dark:text-gray-400 no-capture"},yr={key:0,class:"divide-y divide-gray-100 dark:divide-gray-800"},xr={class:"w-32 shrink-0 pt-0.5 font-medium text-gray-900 dark:text-white"},br={class:"flex flex-1 flex-wrap items-center gap-2"},_r={class:"flex items-center gap-1.5 rounded-lg bg-gray-50 px-3 py-1.5 dark:bg-gray-800"},kr={class:"text-xs text-gray-400"},wr={key:0,class:"text-gray-300 dark:text-gray-600"},$r=P({__name:"NicknameHistory",props:{sessionId:{}},setup(l){const{t:a}=se(),e=l,o=A([]),c=A([]),u=A(!1);function d(_){return _.groupNickname||_.accountName||_.platformId}async function g(){if(e.sessionId)try{o.value=await ue().getMembers(e.sessionId)}catch(_){console.error("加载成员列表失败:",_)}}async function p(){if(!e.sessionId||o.value.length===0)return;u.value=!0;const _=[];try{const y=o.value.map(n=>ue().getMemberNameHistory(e.sessionId,n.id)),m=await Promise.all(y);o.value.forEach((n,i)=>{const h=m[i];h.length>2&&_.push({memberId:n.id,name:d(n),history:h})}),c.value=_}catch(y){console.error("加载昵称变更记录失败:",y)}finally{u.value=!1}}return G(()=>e.sessionId,async()=>{await g()},{immediate:!0}),G(()=>o.value.length,()=>{o.value.length>0&&p()}),ke(async()=>{o.value.length===0&&await g()}),(_,y)=>{const m=Fe;return r(),I("div",vr,[s("p",fr,x(t(a)("members.nicknameHistory.note")),1),$(t(K),{title:t(a)("members.nicknameHistory.title"),description:u.value?t(a)("members.nicknameHistory.loading"):c.value.length>0?t(a)("members.nicknameHistory.hasChanges",{count:c.value.length}):t(a)("members.nicknameHistory.noChanges")},{default:V(()=>[!u.value&&c.value.length>0?(r(),I("div",yr,[(r(!0),I(q,null,te(c.value,n=>(r(),I("div",{key:n.memberId,class:"flex items-start gap-3 px-5 py-3"},[s("div",xr,x(n.name),1),s("div",br,[(r(!0),I(q,null,te(n.history,(i,h)=>(r(),I(q,{key:h},[s("div",_r,[s("span",{class:Z(["text-sm",i.endTs===null?"font-semibold text-pink-600":"text-gray-700 dark:text-gray-300"])},x(i.name),3),i.endTs===null?(r(),N(m,{key:0,color:"primary",variant:"soft",size:"xs"},{default:V(()=>[Q(x(t(a)("members.nicknameHistory.current")),1)]),_:1})):U("",!0),s("span",kr,"("+x(t(Dt)(i.startTs,i.endTs))+")",1)]),h<n.history.length-1?(r(),I("span",wr,"→")):U("",!0)],64))),128))])]))),128))])):u.value?(r(),N(t(ne),{key:2,text:t(a)("members.nicknameHistory.loadingText")},null,8,["text"])):(r(),N(t(le),{key:1,text:t(a)("members.nicknameHistory.empty")},null,8,["text"]))]),_:1},8,["title","description"])])}}}),Ir={class:"flex h-full flex-col overflow-hidden bg-white dark:bg-gray-900"},Cr={class:"flex flex-none items-center justify-between border-b border-gray-200 px-5 py-3 dark:border-gray-700"},Sr={class:"text-lg font-semibold text-gray-900 dark:text-white"},Mr={class:"flex-1 overflow-auto"},Tr=P({__name:"NicknameHistoryEntry",props:{sessionId:{}},setup(l){const{t:a}=se(),e=l,o=A(!1);return(c,u)=>{const d=ge,g=_e;return r(),I(q,null,[$(d,{variant:"ghost",icon:"i-heroicons-clock",size:"sm",onClick:u[0]||(u[0]=p=>o.value=!0)},{default:V(()=>[Q(x(t(a)("analysis.subTabs.member.nicknameHistory")),1)]),_:1}),e.sessionId?(r(),N(g,{key:0,open:o.value,"onUpdate:open":u[2]||(u[2]=p=>o.value=p),ui:{content:"max-w-6xl h-[85vh]"}},{content:V(()=>[s("div",Ir,[s("div",Cr,[s("h2",Sr,x(t(a)("analysis.subTabs.member.nicknameHistory")),1),$(d,{variant:"ghost",icon:"i-heroicons-x-mark",size:"sm",onClick:u[1]||(u[1]=p=>o.value=!1)})]),s("div",Mr,[$($r,{"session-id":e.sessionId},null,8,["session-id"])])])]),_:1},8,["open"])):U("",!0)],64)}}}),Dr={class:"flex h-full flex-col bg-white dark:bg-gray-900",style:{"padding-top":"var(--titlebar-area-height)"}},Rr={class:"mt-2 flex items-center justify-between gap-3"},Nr={class:"flex shrink-0 items-center gap-0.5 overflow-x-auto scrollbar-hide"},Ar=["onClick"],Lr={class:"whitespace-nowrap"},Vr={class:"relative flex-1 overflow-y-auto"},Er={class:"h-full"},Or={key:2,class:"flex h-full items-center justify-center"},zr={class:"text-gray-500"},Fr={class:"flex h-full flex-col overflow-hidden bg-white dark:bg-gray-900"},Br={class:"flex flex-none items-center justify-between border-b border-gray-200 px-5 py-3 dark:border-gray-700"},Ur={class:"text-lg font-semibold text-gray-900 dark:text-white"},Hr={class:"text-sm text-gray-500 dark:text-gray-400"},Wr={class:"flex items-center gap-2"},jr={class:"flex-1 overflow-hidden"},Pr=P({__name:"index",setup(l){const a=We(()=>ze(()=>import("./MessageExportModal-D1GY6WSV.js"),__vite__mapDeps([5,6,4,7,8,9,10,11,1,2,3,12]))),{t:e}=se(),o=rt(),c=lt(),u=ht(),d=Ae(),g=vt(),{currentSessionId:p}=ft(u),_=A(!1),y=A(!1),m=A(!1),n=A(!1);function i(){d.openChatRecordDrawer({})}const h=[{id:"overview",labelKey:"analysis.tabs.overview",icon:"i-heroicons-chart-pie"},{id:"view",labelKey:"analysis.tabs.view",icon:"i-heroicons-presentation-chart-bar"},{id:"ai-chat",labelKey:"analysis.tabs.aiChat",icon:"i-heroicons-chat-bubble-left-ellipsis"},{id:"lab",labelKey:"analysis.tabs.lab",icon:"i-heroicons-beaker"}],f=D(()=>g.debugMode?[...h,{id:"debug",labelKey:"analysis.tabs.debug",icon:"i-heroicons-bug-ant"}]:h),b=D(()=>f.value.map(F=>F.id)),{activeTab:k,isLoading:C,isInitialLoad:v,session:w,memberActivity:S,hourlyActivity:M,dailyActivity:T,messageTypes:L,timeRangeValue:W,fullTimeRange:H,availableYears:R,timeFilter:O,selectedYearForOverview:E,initialTimeState:j,loadData:X}=Rt({route:o,router:c,currentSessionId:p,selectSession:u.selectSession,defaultTab:g.defaultSessionTab,validTabIds:b.value}),ee=D(()=>S.value.slice(0,3)),re=D(()=>S.value.length<=1?[]:[...S.value].sort((F,B)=>F.messageCount-B.messageCount).slice(0,1)),oe=D(()=>S.value.reduce((F,B)=>F+B.messageCount,0)),de=D(()=>S.value.filter(F=>F.messageCount>0).length),{headerDescription:z}=Nt({session:w,fullTimeRange:H,timeRangeValue:W,descriptionKey:"analysis.groupChat.description"});return(F,B)=>{const he=ge,ie=Ue,ve=we,pe=_e;return r(),I("div",Dr,[t(v)?(r(),N(ne,{key:0,variant:"page",text:t(e)("analysis.groupChat.loading")},null,8,["text"])):t(w)?(r(),I(q,{key:1},[$(At,{title:t(w).name,description:t(z),avatar:t(w).groupAvatar,icon:"i-heroicons-chat-bubble-left-right","icon-class":"bg-primary-600 text-white dark:bg-primary-500 dark:text-white"},{actions:V(()=>[t(d).toolsPanelPosition==="header"?(r(),N(ie,{key:0,text:t(e)("analysis.overview.tools")},{default:V(()=>[$(he,{icon:"i-heroicons-wrench-screwdriver",variant:"ghost",color:"primary",size:"sm",onClick:B[0]||(B[0]=Y=>t(d).toggleToolsPanelOpen())})]),_:1},8,["text"])):U("",!0),$(Te)]),default:V(()=>[s("div",Rr,[s("div",Nr,[(r(!0),I(q,null,te(f.value,Y=>(r(),I("button",{key:Y.id,class:Z(["flex items-center gap-1.5 rounded-lg px-2.5 py-1.5 text-sm font-medium transition-all",[t(k)===Y.id?"bg-pink-500 text-white dark:bg-pink-900/30 dark:text-pink-300":"text-gray-600 hover:bg-gray-100 dark:text-gray-400 dark:hover:bg-gray-800"]]),onClick:Ie=>k.value=Y.id},[$(ve,{name:Y.icon,class:"h-4 w-4"},null,8,["name"]),s("span",Lr,x(t(e)(Y.labelKey)),1)],10,Ar))),128))]),$(Ot,{modelValue:t(W),"onUpdate:modelValue":B[1]||(B[1]=Y=>ut(W)?W.value=Y:null),"session-id":t(p)??void 0,visible:t(k)!=="ai-chat"&&t(k)!=="memory"&&t(k)!=="lab"&&t(k)!=="debug","initial-state":t(j),"onUpdate:fullRange":B[2]||(B[2]=Y=>H.value=Y),"onUpdate:availableYears":B[3]||(B[3]=Y=>R.value=Y)},null,8,["modelValue","session-id","visible","initial-state"])])]),_:1},8,["title","description","avatar"]),s("div",Vr,[t(C)?(r(),N(ne,{key:0,variant:"overlay"})):U("",!0),s("div",Er,[$(Ne,{name:"tab-slide",mode:"out-in"},{default:V(()=>[t(k)==="overview"?(r(),N(ea,{key:"overview-"+t(p),session:t(w),"member-activity":t(S),"top-members":ee.value,"bottom-members":re.value,"message-types":t(L),"hourly-activity":t(M),"daily-activity":t(T),"time-range":t(H),"selected-year":t(E),"filtered-message-count":oe.value,"filtered-member-count":de.value,"time-filter":t(O)},null,8,["session","member-activity","top-members","bottom-members","message-types","hourly-activity","daily-activity","time-range","selected-year","filtered-message-count","filtered-member-count","time-filter"])):t(k)==="view"?(r(),N(hi,{key:"view-"+t(p),"session-id":t(p),"session-name":t(w).name,"time-filter":t(O)},null,8,["session-id","session-name","time-filter"])):t(k)==="ai-chat"?(r(),N(t(zt),{key:"ai-chat-"+t(p),"session-id":t(p),"session-name":t(w).name,"chat-type":"group"},null,8,["session-id","session-name"])):t(k)==="memory"?(r(),N(Ft,{key:"memory-"+t(p),"session-id":t(p),"session-name":t(w).name},null,8,["session-id","session-name"])):t(k)==="lab"?(r(),N(Bt,{key:"lab-"+t(p),"session-id":t(p),"session-name":t(w).name,"time-filter":t(O),"chat-type":"group",mode:"sql-only"},null,8,["session-id","session-name","time-filter"])):t(k)==="debug"?(r(),N(t(Ut),{key:"debug-"+t(p),"session-id":t(p)},null,8,["session-id"])):U("",!0)]),_:1})])]),$(Lt,{onOpenIncrementalImport:B[4]||(B[4]=Y=>y.value=!0),onOpenSessionIndex:B[5]||(B[5]=Y=>_.value=!0),onOpenMemberManagement:B[6]||(B[6]=Y=>n.value=!0),onOpenChatRecord:i,onOpenMessageExport:B[7]||(B[7]=Y=>m.value=!0)}),t(g).debugMode?(r(),N(Ht,{key:0})):U("",!0)],64)):(r(),I("div",Or,[s("p",zr,x(t(e)("analysis.groupChat.loadError")),1)])),t(p)&&t(w)&&t(w).messageCount>0?(r(),N(Vt,{key:3,modelValue:_.value,"onUpdate:modelValue":B[8]||(B[8]=Y=>_.value=Y),"session-id":t(p),"message-count":t(w).messageCount},null,8,["modelValue","session-id","message-count"])):U("",!0),t(p)&&t(w)?(r(),N(Et,{key:4,modelValue:y.value,"onUpdate:modelValue":B[9]||(B[9]=Y=>y.value=Y),"session-id":t(p),"session-name":t(w).name,onImported:t(X)},null,8,["modelValue","session-id","session-name","onImported"])):U("",!0),t(p)?(r(),N(t(a),{key:5,modelValue:m.value,"onUpdate:modelValue":B[10]||(B[10]=Y=>m.value=Y)},null,8,["modelValue"])):U("",!0),t(p)?(r(),N(pe,{key:6,open:n.value,"onUpdate:open":B[12]||(B[12]=Y=>n.value=Y),ui:{content:"max-w-6xl h-[85vh]"}},{content:V(()=>[s("div",Fr,[s("div",Br,[s("div",null,[s("h2",Ur,x(t(e)("analysis.tooltip.memberManagement")),1),s("p",Hr,x(t(e)("members.list.description",{count:t(w)?.memberCount??0})),1)]),s("div",Wr,[$(Tr,{"session-id":t(p)},null,8,["session-id"]),$(he,{variant:"ghost",icon:"i-heroicons-x-mark",size:"sm",onClick:B[11]||(B[11]=Y=>n.value=!1)})])]),s("div",jr,[$(hr,{"session-id":t(p),"show-header":!1,onDataChanged:t(X)},null,8,["session-id","onDataChanged"])])])]),_:1},8,["open"])):U("",!0)])}}}),tl=Le(Pr,[["__scopeId","data-v-c37848ed"]]);export{tl as default};