chatlab-cli 0.26.3 → 0.27.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.
- package/README.md +10 -4
- package/dist/{chat-command-D37MMEJ7.mjs → chat-command-B7POB3C3.mjs} +6 -5
- package/dist/{chat-command-D37MMEJ7.mjs.map → chat-command-B7POB3C3.mjs.map} +1 -1
- package/dist/{chunk-K5SGXTVJ.mjs → chunk-3FUF3PEY.mjs} +21 -19
- package/dist/{chunk-K5SGXTVJ.mjs.map → chunk-3FUF3PEY.mjs.map} +1 -1
- package/dist/{chunk-742TAKEP.mjs → chunk-3JNVGW62.mjs} +2 -2
- package/dist/{chunk-VSOWNKPA.mjs → chunk-GFHSSCCR.mjs} +11 -1
- package/dist/{chunk-YPTJVTVJ.mjs → chunk-I7BHOZPX.mjs} +13159 -19038
- package/dist/chunk-I7BHOZPX.mjs.map +1 -0
- package/dist/chunk-N3G43SCQ.mjs +7337 -0
- package/dist/chunk-N3G43SCQ.mjs.map +1 -0
- package/dist/{chunk-GNGZHBKM.mjs → chunk-RJ4D4QWK.mjs} +42 -7
- package/dist/chunk-RJ4D4QWK.mjs.map +1 -0
- package/dist/{chunk-VCN64OD6.mjs → chunk-SAE2H2LN.mjs} +7 -5
- package/dist/{chunk-VCN64OD6.mjs.map → chunk-SAE2H2LN.mjs.map} +1 -1
- package/dist/{chunk-QMXNJRTT.mjs → chunk-SIVERPF5.mjs} +280 -104
- package/dist/chunk-SIVERPF5.mjs.map +1 -0
- package/dist/{chunk-RMITK4IC.mjs → chunk-WQMKKUSD.mjs} +468 -118
- package/dist/chunk-WQMKKUSD.mjs.map +1 -0
- package/dist/{chunk-D5MWER7N.mjs → chunk-YUFYTDRH.mjs} +6 -4
- package/dist/{chunk-D5MWER7N.mjs.map → chunk-YUFYTDRH.mjs.map} +1 -1
- package/dist/cli.mjs +5 -4
- package/dist/{http-6F6TYWCI.mjs → http-A54ZBBAY.mjs} +10 -9
- package/dist/{import-VYPOMSSA.mjs → import-EA3TB3S2.mjs} +6 -5
- package/dist/index.mjs +10 -9
- package/dist/{mcp-AR7L5FA3.mjs → mcp-DJDOWHH3.mjs} +11 -9
- package/dist/{mcp-AR7L5FA3.mjs.map → mcp-DJDOWHH3.mjs.map} +1 -1
- package/dist/onnxruntime_binding-6Q6HXASN.node +0 -0
- package/dist/onnxruntime_binding-EKZT2NRK.node +0 -0
- package/dist/onnxruntime_binding-P6S7V3CI.node +0 -0
- package/dist/onnxruntime_binding-PJNNIIUO.node +0 -0
- package/dist/onnxruntime_binding-UN6SPTQK.node +0 -0
- package/dist/semantic-index-worker.mjs +34 -0
- package/dist/semantic-index-worker.mjs.map +1 -0
- package/dist/{service-KZTHBDQ5.mjs → service-KGL3RAIA.mjs} +2 -2
- package/dist/{src-6S7JPKHX.mjs → src-EKPMJRG6.mjs} +65 -109
- package/dist/{stream-import-KZFC3XT2.mjs → stream-import-FQFNRQ2B.mjs} +5 -4
- package/dist/transformers.node-PUMHAODN.mjs +42889 -0
- package/dist/transformers.node-PUMHAODN.mjs.map +1 -0
- package/dist/{update-checker-3N7HQEP2.mjs → update-checker-LGMTEKMT.mjs} +2 -2
- package/dist/worker-runtime-UH2OBO3T.mjs +71 -0
- package/dist/worker-runtime-UH2OBO3T.mjs.map +1 -0
- package/dist-web/assets/{DebugToolsPanel-DzZmSzIU.css → DebugToolsPanel-DFw6_G5V.css} +1 -1
- package/dist-web/assets/DebugToolsPanel.vue_vue_type_script_setup_true_lang-NL1sTF6i.js +110 -0
- package/dist-web/assets/{MessageExportModal-CF6yaor7.js → MessageExportModal-B60rvfCh.js} +1 -1
- package/dist-web/assets/{electron-DKVw61Ww.js → electron-BRUg9LnY.js} +1 -1
- package/dist-web/assets/{fetch-CUw-PUYP.js → fetch-BIpjJHxj.js} +1 -1
- package/dist-web/assets/{fetch-BMdgfBVS.js → fetch-BRsMdFcn.js} +1 -1
- package/dist-web/assets/{fetch-CPeSfqsU.js → fetch-C-m3IysH.js} +1 -1
- package/dist-web/assets/{fetch-CpYSD089.js → fetch-Cma-mZjd.js} +1 -1
- package/dist-web/assets/{fetch-D2jNBqs8.js → fetch-DE8gj5Ke.js} +1 -1
- package/dist-web/assets/{fetch-DqEMAea3.js → fetch-DLAp7h55.js} +1 -1
- package/dist-web/assets/{fetch-BvVfWR-P.js → fetch-DNSaxRnL.js} +1 -1
- package/dist-web/assets/{fetch-BC8jyJ_U.js → fetch-DOEbyLSD.js} +1 -1
- package/dist-web/assets/{fetch-BQlEQsqi.js → fetch-DSN-QYZE.js} +1 -1
- package/dist-web/assets/{fetch-Bh6HC-IR.js → fetch-woAa3H2L.js} +1 -1
- package/dist-web/assets/index-B3mDjury.js +11 -0
- package/dist-web/assets/{index-Qh0XLt3R.js → index-B9I-Y3fR.js} +1 -1
- package/dist-web/assets/{index-DqybGdJH.css → index-BX3tqfLz.css} +1 -1
- package/dist-web/assets/index-GAU7LI1r.js +173 -0
- package/dist-web/assets/index-I3SWZjnW.css +1 -0
- package/dist-web/assets/index-YmzTgkb2.css +1 -0
- package/dist-web/assets/index-iwqJDVMJ.js +2 -0
- package/dist-web/assets/index-o6veAyTB.js +64 -0
- package/dist-web/assets/{index-BHQnAj6l.js → index-r_zHR2t9.js} +1 -1
- package/dist-web/assets/{web-Bx2TiHDk.js → web-C2UtGskd.js} +1 -1
- package/dist-web/index.html +2 -2
- package/package.json +1 -1
- package/dist/chunk-GNGZHBKM.mjs.map +0 -1
- package/dist/chunk-QMXNJRTT.mjs.map +0 -1
- package/dist/chunk-RMITK4IC.mjs.map +0 -1
- package/dist/chunk-YPTJVTVJ.mjs.map +0 -1
- package/dist-web/assets/DebugToolsPanel.vue_vue_type_script_setup_true_lang-BTdqmm0y.js +0 -107
- package/dist-web/assets/index-BwzuCu5R.js +0 -2
- package/dist-web/assets/index-CG746E15.js +0 -64
- package/dist-web/assets/index-CXoQ_U22.js +0 -173
- package/dist-web/assets/index-HgIuP1Td.css +0 -1
- package/dist-web/assets/index-R82N2_0b.css +0 -1
- package/dist-web/assets/index-wPAmuQZY.js +0 -11
- /package/dist/{chunk-742TAKEP.mjs.map → chunk-3JNVGW62.mjs.map} +0 -0
- /package/dist/{chunk-VSOWNKPA.mjs.map → chunk-GFHSSCCR.mjs.map} +0 -0
- /package/dist/{http-6F6TYWCI.mjs.map → http-A54ZBBAY.mjs.map} +0 -0
- /package/dist/{import-VYPOMSSA.mjs.map → import-EA3TB3S2.mjs.map} +0 -0
- /package/dist/{service-KZTHBDQ5.mjs.map → service-KGL3RAIA.mjs.map} +0 -0
- /package/dist/{src-6S7JPKHX.mjs.map → src-EKPMJRG6.mjs.map} +0 -0
- /package/dist/{stream-import-KZFC3XT2.mjs.map → stream-import-FQFNRQ2B.mjs.map} +0 -0
- /package/dist/{update-checker-3N7HQEP2.mjs.map → update-checker-LGMTEKMT.mjs.map} +0 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/MessageExportModal-B60rvfCh.js","assets/vendor-nuxt-ui-Zy8txNdC.js","assets/vendor-reka-ui-mMvma1EP.js","assets/index-B3mDjury.js","assets/vendor-snapdom-XnBoh1gd.js","assets/index-YmzTgkb2.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{_ as Ae}from"./vendor-snapdom-XnBoh1gd.js";import{a as te,k as je,b as $e,n as Re,D as Ve,g as Ce,u as Le,d as De}from"./vendor-nuxt-ui-Zy8txNdC.js";import{p as Y,w as Z,d as oe,F as ge,G as i,H as D,u as t,K as E,P as u,a5 as e,T as s,Z as K,a3 as G,Q as B,U as M,L as y,a0 as ae,h as T,b as O,_ as ze,O as Oe,bD as Se,R as ye,a9 as Be,i as ke,bI as Ne}from"./vendor-reka-ui-mMvma1EP.js";import{u as X,p as pe,T as Ue,k as Pe,j as le,r as Fe,_ as Ie,e as Ee,b as We,s as Ke}from"./index-B3mDjury.js";import{G as ie,c as me,d as Me,h as He,a as _e,i as we,j as Ge,u as Je,k as Ye,_ as Qe,n as Ze,o as Xe,p as et,q as tt,r as st,t as at,v as nt,w as it,x as lt,y as ot,z as rt,A as ct,C as dt,B as ut,D as mt,E as gt,F as pt}from"./DebugToolsPanel.vue_vue_type_script_setup_true_lang-NL1sTF6i.js";import"./vendor-echarts-wordcloud-B1kQMklB.js";import{u as xe,s as xt,j as ve,m as fe,n as ne,t as Te,p as qe,k as vt,v as ft}from"./vendor-echarts-CITQeskI.js";import"./index-B9I-Y3fR.js";import"./vendor-zrender-DFl4U2Oe.js";const bt={key:0,class:"relative z-10 flex flex-col h-full"},ht={class:"flex flex-col sm:flex-row items-center sm:items-start gap-6 px-6 pt-8 pb-4 sm:px-8"},yt={class:"w-full flex-1 min-w-0"},_t={class:"flex items-center gap-x-2 sm:gap-x-3 mb-6 sm:mb-8"},kt={class:"text-2xl sm:text-4xl font-black tracking-tight text-blue-600 dark:text-blue-400 truncate"},wt={class:"text-2xl sm:text-4xl font-black tracking-tight text-pink-600 dark:text-pink-400 truncate"},$t={class:"grid grid-cols-2 gap-4 sm:gap-10"},Ct={class:"text-[10px] font-bold uppercase tracking-widest text-gray-400 dark:text-gray-500"},St={class:"flex flex-col gap-2.5"},Pt=["title","onClick"],It={class:"shrink-0 text-[10px] sm:text-xs font-semibold tabular-nums text-gray-400/80"},Mt={key:0,class:"text-xs sm:text-sm font-medium text-gray-400"},Tt={class:"hidden shrink-0 sm:block"},qt={class:"px-6 pb-6 pt-2 sm:px-8 mt-auto"},At={class:"mb-3 flex items-center justify-between"},jt={class:"text-[10px] font-bold uppercase tracking-widest text-gray-400 dark:text-gray-500"},Rt={class:"grid grid-cols-1 sm:grid-cols-3 gap-4"},Vt={class:"mb-4 flex items-center gap-2.5"},Lt={class:"text-sm font-bold tracking-wide text-gray-900 dark:text-white"},Dt={class:"flex items-center justify-between mb-4 w-full"},zt={class:"flex flex-col flex-1 min-w-0"},Ot={class:"truncate text-[10px] font-bold uppercase tracking-wider text-gray-400 mb-1"},Bt={class:"flex flex-col flex-1 min-w-0 items-end text-right"},Nt={class:"truncate text-[10px] font-bold uppercase tracking-wider text-gray-400 mb-1"},Ut={class:"mt-auto pt-3 border-t border-gray-100 dark:border-white/5 flex flex-col"},Ft={key:0,class:"flex items-start justify-between gap-2 mb-2 min-h-[24px]"},Et={class:"flex flex-1 flex-nowrap overflow-hidden gap-1"},Wt={key:0,class:"text-[11px] text-gray-400"},Kt={class:"flex flex-1 flex-nowrap overflow-hidden gap-1 justify-end"},Ht={key:0,class:"text-[11px] text-gray-400"},Gt={key:1,class:"flex flex-nowrap overflow-hidden items-center gap-x-1.5 mb-2 min-h-[24px]"},Jt=["onClick"],Yt={key:0,class:"shrink-0 text-gray-300 dark:text-gray-600 font-normal"},Qt={key:0,class:"text-[11px] text-gray-400"},Zt={class:"text-[10px] leading-relaxed text-gray-500 dark:text-gray-400"},Xt={class:"flex items-center justify-between px-6 pb-4 opacity-40 mix-blend-luminosity dark:opacity-30 sm:px-8 sm:pb-5"},es={class:"flex items-center gap-1.5"},ts={class:"text-[9px] font-medium uppercase tracking-widest"},ss=Y({__name:"LanguagePreferenceCard",props:{data:{}},emits:["wordClick"],setup(C,{emit:a}){xe([xt,ve,fe]);const{t:r}=X(),_=pe(),o=C,p=a,S=T(()=>o.data.members[0]),w=T(()=>o.data.members[1]);function c(m,g){return m.length<=g?m:m.slice(0,g)+"…"}function P(m){const g=m.posDistribution,v=g.noun+g.verb+g.adjective+g.adverb+g.modalParticle+g.interjection+g.other;return v===0?r("quotes.languagePreference.pos.styleBalanced"):g.noun/v>.5?r("quotes.languagePreference.pos.styleEncyclopedia"):g.verb/v>.45?r("quotes.languagePreference.pos.styleAction"):g.adjective/v>.3?r("quotes.languagePreference.pos.styleExpressive"):r("quotes.languagePreference.pos.styleBalanced")}function z(m){const v=[["ellipsis",m.ellipsis],["exclamation",m.exclamation],["question",m.question],["tilde",m.tilde],["noPunct",m.noPunct],["period",m.period]].reduce((h,L)=>h[1]>=L[1]?h:L);return{ellipsis:r("quotes.languagePreference.punctuation.personalityDeep"),exclamation:r("quotes.languagePreference.punctuation.personalityPassionate"),question:r("quotes.languagePreference.punctuation.personalityCurious"),tilde:r("quotes.languagePreference.punctuation.personalityCheerful"),noPunct:r("quotes.languagePreference.punctuation.personalityFreeflow"),period:r("quotes.languagePreference.punctuation.personalityPrecise")}[v[0]]||"-"}function q(m,g=5){return[["...",m.ellipsis],["!",m.exclamation],["?",m.question],["~",m.tilde],["。",m.period]].filter(([,l])=>l>0).sort((l,h)=>h[1]-l[1]).slice(0,g).map(([l])=>l)}const A=["#6366f1","#ec4899","#f97316","#22c55e","#3b82f6","#8b5cf6","#14b8a6","#f43f5e","#eab308","#06b6d4"],f=T(()=>{const m=S.value,g=w.value;if(!m||!g)return[];const v=o.data.sharedWords.slice(0,6).map((l,h)=>({word:l.word,color:A[h%A.length]}));return[{icon:"i-heroicons-book-open",iconBgClass:"bg-blue-100 dark:bg-blue-500/20",iconColorClass:"text-blue-600 dark:text-blue-400",title:r("quotes.languagePreference.card.diversityTitle"),leftName:m.name,leftValue:`${m.lexicalDiversity}%`,rightName:g.name,rightValue:`${g.lexicalDiversity}%`,valueClass:"text-lg text-blue-600 dark:text-blue-400",detail:{kind:"tags-single",tags:v},desc:r("quotes.languagePreference.card.diversityDesc")},{icon:"i-heroicons-sparkles",iconBgClass:"bg-violet-100 dark:bg-violet-500/20",iconColorClass:"text-violet-600 dark:text-violet-400",title:r("quotes.languagePreference.card.styleTitle"),leftName:m.name,leftValue:P(m),rightName:g.name,rightValue:P(g),valueClass:"text-xs text-violet-600 dark:text-violet-400",detail:{kind:"tags-vs",leftTags:m.modalParticles.slice(0,4).map(l=>l.word),rightTags:g.modalParticles.slice(0,4).map(l=>l.word)},desc:r("quotes.languagePreference.card.styleDesc")},{icon:"i-heroicons-finger-print",iconBgClass:"bg-orange-100 dark:bg-orange-500/20",iconColorClass:"text-orange-600 dark:text-orange-400",title:r("quotes.languagePreference.card.punctTitle"),leftName:m.name,leftValue:z(m.punctuation),rightName:g.name,rightValue:z(g.punctuation),valueClass:"text-xs text-orange-600 dark:text-orange-400",detail:{kind:"tags-vs",leftTags:q(m.punctuation,4),rightTags:q(g.punctuation,4)},desc:r("quotes.languagePreference.card.punctDesc")}]}),I=O(null);let d=null;function x(){I.value&&(d=ne(I.value,void 0,{renderer:"canvas"}),V())}function V(){if(!d||!S.value||!w.value)return;const m=S.value.posDistribution,g=w.value.posDistribution,v=[{name:r("quotes.languagePreference.card.radarFactual"),max:0},{name:r("quotes.languagePreference.card.radarActive"),max:0},{name:r("quotes.languagePreference.card.radarDescriptive"),max:0},{name:r("quotes.languagePreference.card.radarAffable"),max:0},{name:r("quotes.languagePreference.card.radarIntense"),max:0}],l=[m.noun,m.verb,m.adjective,m.modalParticle+m.interjection,m.adverb],h=[g.noun,g.verb,g.adjective,g.modalParticle+g.interjection,g.adverb];for(let U=0;U<v.length;U++)v[U].max=Math.max(l[U],h[U],1)*1.3;const L=_.value?"#9ca3af":"#6b7280";d.setOption({backgroundColor:"transparent",tooltip:{trigger:"item"},legend:{bottom:0,itemWidth:10,itemHeight:10,textStyle:{fontSize:10,color:L},data:[S.value.name,w.value.name]},radar:{indicator:v,radius:"60%",center:["50%","50%"],splitArea:{areaStyle:{color:_.value?["rgba(255,255,255,0.02)","rgba(255,255,255,0.04)"]:["rgba(0,0,0,0.01)","rgba(0,0,0,0.03)"]}},axisName:{color:L,fontSize:10},splitLine:{lineStyle:{color:_.value?"rgba(255,255,255,0.08)":"rgba(0,0,0,0.06)"}},axisLine:{lineStyle:{color:_.value?"rgba(255,255,255,0.1)":"rgba(0,0,0,0.08)"}}},series:[{type:"radar",data:[{value:l,name:S.value.name,lineStyle:{color:"#3b82f6",width:2},areaStyle:{color:"rgba(59,130,246,0.15)"},itemStyle:{color:"#3b82f6"},symbol:"circle",symbolSize:4},{value:h,name:w.value.name,lineStyle:{color:"#ec4899",width:2},areaStyle:{color:"rgba(236,72,153,0.15)"},itemStyle:{color:"#ec4899"},symbol:"circle",symbolSize:4}]}]},{notMerge:!0})}function $(){d?.resize()}return Z(()=>o.data,()=>V(),{deep:!0}),Z(_,()=>{d?.dispose(),x()}),oe(()=>{x(),window.addEventListener("resize",$)}),ge(()=>{window.removeEventListener("resize",$),d?.dispose()}),(m,g)=>{const v=te;return i(),D(t(ie),{variant:"elevated",decorative:"",class:"flex flex-col"},{default:E(()=>[S.value&&w.value?(i(),u("div",bt,[e("div",ht,[e("div",yt,[e("div",_t,[e("span",kt,s(S.value.name),1),g[0]||(g[0]=e("span",{class:"text-sm sm:text-lg font-black text-gray-300 dark:text-gray-600 italic px-1 sm:px-2 shrink-0"}," VS ",-1)),e("span",wt,s(w.value.name),1)]),e("div",$t,[(i(!0),u(K,null,G([S.value,w.value],(l,h)=>(i(),u("div",{key:l.memberId,class:"flex flex-col gap-3"},[e("div",Ct,s(t(r)("quotes.languagePreference.card.topCatchphrases")),1),e("div",St,[(i(!0),u(K,null,G(l.catchphrases.slice(0,3),(L,U)=>(i(),u("div",{key:U,class:"flex items-center gap-2 group"},[e("span",{class:B(["text-xs sm:text-sm font-black font-mono opacity-40 transition-opacity group-hover:opacity-100",h===0?"text-blue-600 dark:text-blue-400":"text-pink-600 dark:text-pink-400"])}," #"+s(U+1),3),e("span",{class:"truncate text-sm sm:text-base font-bold text-gray-700 dark:text-gray-200 cursor-pointer hover:opacity-70 transition-opacity",title:L.content,onClick:F=>p("wordClick",L.content)}," 「"+s(c(L.content,12))+"」 ",9,Pt),e("span",It," ×"+s(L.count),1)]))),128)),l.catchphrases.length===0?(i(),u("div",Mt,"-")):M("",!0)])]))),128))])]),e("div",Tt,[e("div",{ref_key:"radarRef",ref:I,style:{width:"250px",height:"230px"},class:"-mt-4 sm:-mr-4"},null,512)])]),e("div",qt,[e("div",At,[e("span",jt,s(t(r)("quotes.languagePreference.card.languageProfiles")),1)]),e("div",Rt,[(i(!0),u(K,null,G(f.value,l=>(i(),u("div",{key:l.title,class:"flex flex-col rounded-xl bg-white/60 p-4 ring-1 ring-gray-900/5 backdrop-blur-sm dark:bg-white/5 dark:ring-white/10"},[e("div",Vt,[e("div",{class:B(["flex h-8 w-8 shrink-0 items-center justify-center rounded-lg",l.iconBgClass])},[y(v,{name:l.icon,class:B(["h-4 w-4",l.iconColorClass])},null,8,["name","class"])],2),e("span",Lt,s(l.title),1)]),e("div",Dt,[e("div",zt,[e("span",Ot,s(l.leftName),1),e("span",{class:B(["truncate text-xl font-black font-mono leading-none",l.valueClass])},s(l.leftValue),3)]),g[1]||(g[1]=e("div",{class:"px-2 shrink-0"},[e("span",{class:"text-[10px] font-black text-gray-300 dark:text-gray-600 italic"},"VS")],-1)),e("div",Bt,[e("span",Nt,s(l.rightName),1),e("span",{class:B(["truncate text-xl font-black font-mono leading-none",l.valueClass])},s(l.rightValue),3)])]),e("div",Ut,[l.detail.kind==="tags-vs"?(i(),u("div",Ft,[e("div",Et,[(i(!0),u(K,null,G(l.detail.leftTags,h=>(i(),u("span",{key:h,class:"shrink-0 px-1.5 py-0.5 rounded-md text-[10px] font-semibold font-mono bg-blue-50 text-blue-600 dark:bg-blue-500/10 dark:text-blue-400"},s(h),1))),128)),l.detail.leftTags.length===0?(i(),u("span",Wt,"-")):M("",!0)]),e("div",Kt,[(i(!0),u(K,null,G(l.detail.rightTags,h=>(i(),u("span",{key:h,class:"shrink-0 px-1.5 py-0.5 rounded-md text-[10px] font-semibold font-mono bg-pink-50 text-pink-600 dark:bg-pink-500/10 dark:text-pink-400"},s(h),1))),128)),l.detail.rightTags.length===0?(i(),u("span",Ht,"-")):M("",!0)])])):l.detail.kind==="tags-single"?(i(),u("div",Gt,[(i(!0),u(K,null,G(l.detail.tags.slice(0,6),(h,L)=>(i(),u(K,{key:h.word},[e("span",{class:"shrink-0 cursor-pointer text-[11px] font-bold transition-opacity hover:opacity-80",style:ae({color:h.color}),onClick:U=>p("wordClick",h.word)},s(h.word),13,Jt),L<l.detail.tags.slice(0,6).length-1?(i(),u("span",Yt," · ")):M("",!0)],64))),128)),l.detail.tags.length===0?(i(),u("span",Qt,"-")):M("",!0)])):M("",!0),e("p",Zt,s(l.desc),1)])]))),128))])]),e("div",Xt,[e("div",es,[y(v,{name:"i-heroicons-chat-bubble-left-right-solid",class:"h-3.5 w-3.5"}),g[2]||(g[2]=e("span",{class:"text-[10px] font-bold uppercase tracking-wider"},"ChatLab",-1))]),e("span",ts,s(t(r)("quotes.languagePreference.card.watermark")),1)])])):M("",!0)]),_:1})}}}),as={class:"px-5 py-4 sm:px-6"},ns={class:"mb-4 flex items-center justify-between"},is={class:"flex items-center gap-2"},ls={class:"text-[15px] font-black tracking-tight text-gray-900 dark:text-white"},os={key:0,class:"rounded-full bg-pink-100 px-2 py-0.5 text-[10px] font-bold text-pink-600 dark:bg-pink-900/30 dark:text-pink-400"},rs={key:0,class:"grid grid-cols-2 gap-6"},cs={class:"mb-3 text-center"},ds={class:"text-sm font-semibold text-blue-600 dark:text-blue-400"},us={class:"flex flex-wrap gap-2"},ms=["title","onClick"],gs={class:"text-[10px] font-semibold opacity-60"},ps={class:"mb-3 text-center"},xs={class:"text-sm font-semibold text-pink-600 dark:text-pink-400"},vs={class:"flex flex-wrap gap-2"},fs=["title","onClick"],bs={class:"text-[10px] font-semibold opacity-60"},hs={class:"mt-4 text-center text-xs text-gray-500 dark:text-gray-400"},ys=Y({__name:"CatchphrasePKSection",props:{members:{}},emits:["wordClick"],setup(C,{emit:a}){const{t:r}=X(),_=C,o=a,p=O(20),S=[{label:"10",value:10},{label:"20",value:20},{label:"30",value:30}],w=T(()=>_.members[0]),c=T(()=>_.members[1]),P=T(()=>w.value?.catchphrases.slice(0,p.value)??[]),z=T(()=>c.value?.catchphrases.slice(0,p.value)??[]),q=T(()=>{if(!w.value||!c.value)return new Set;const d=new Set(w.value.catchphrases.map(V=>V.content)),x=new Set(c.value.catchphrases.map(V=>V.content));return new Set([...d].filter(V=>x.has(V)))}),A=[{bg:"bg-amber-50 text-amber-600 ring-1 ring-amber-500/20 dark:bg-amber-500/10 dark:text-amber-400 dark:ring-amber-500/30",text:"text-amber-700 dark:text-amber-400 font-bold",badge:"bg-amber-500 text-white dark:bg-amber-600"},{bg:"bg-slate-50 text-slate-600 ring-1 ring-slate-500/20 dark:bg-slate-500/10 dark:text-slate-400 dark:ring-slate-500/30",text:"text-slate-700 dark:text-slate-300 font-bold",badge:"bg-slate-400 text-white dark:bg-slate-500"},{bg:"bg-orange-50 text-orange-600 ring-1 ring-orange-500/20 dark:bg-orange-500/10 dark:text-orange-400 dark:ring-orange-500/30",text:"text-orange-700 dark:text-orange-400 font-bold",badge:"bg-orange-400 text-white dark:bg-orange-500"}];function f(d){return d<A.length?A[d]:{bg:"bg-gray-50/50 text-gray-600 ring-1 ring-gray-900/5 dark:bg-gray-800/30 dark:text-gray-400 dark:ring-white/10",text:"text-gray-600 dark:text-gray-400",badge:"bg-transparent text-gray-400"}}function I(d,x=20){return d.length<=x?d:d.slice(0,x)+"..."}return(d,x)=>{const V=te;return i(),D(t(ie),{variant:"section"},{default:E(()=>[e("div",as,[e("div",ns,[e("div",is,[y(V,{name:"i-heroicons-chat-bubble-bottom-center-text",class:"h-4 w-4 text-indigo-500"}),e("span",ls,s(t(r)("quotes.languagePreference.catchphrasePK.title")),1),q.value.size>0?(i(),u("span",os,s(t(r)("quotes.languagePreference.catchphrasePK.sharedCount",{count:q.value.size})),1)):M("",!0)]),y(t(Ue),{modelValue:p.value,"onUpdate:modelValue":x[0]||(x[0]=$=>p.value=$),size:"xs",items:S},null,8,["modelValue"])]),w.value&&c.value?(i(),u("div",rs,[e("div",null,[e("div",cs,[e("span",ds,s(w.value.name),1)]),e("div",us,[(i(!0),u(K,null,G(P.value,($,m)=>(i(),u("div",{key:$.content,class:B(["inline-flex cursor-pointer items-center gap-1.5 rounded-full px-3 py-1 transition-opacity hover:opacity-75",[q.value.has($.content)?"bg-pink-50 text-pink-600 ring-1 ring-pink-500/20 dark:bg-pink-500/10 dark:text-pink-400 dark:ring-pink-500/30 shadow-sm":f(m).bg]]),title:$.content,onClick:g=>o("wordClick",$.content)},[m<3?(i(),u("span",{key:0,class:B(["flex h-4 w-4 shrink-0 items-center justify-center rounded-full text-[10px] font-bold",f(m).badge])},s(m+1),3)):M("",!0),e("span",{class:B(["text-[13px] font-medium",q.value.has($.content)?"font-bold":f(m).text])},s(I($.content)),3),e("span",gs,"×"+s($.count),1)],10,ms))),128))])]),e("div",null,[e("div",ps,[e("span",xs,s(c.value.name),1)]),e("div",vs,[(i(!0),u(K,null,G(z.value,($,m)=>(i(),u("div",{key:$.content,class:B(["inline-flex cursor-pointer items-center gap-1.5 rounded-full px-3 py-1 transition-opacity hover:opacity-75",[q.value.has($.content)?"bg-pink-50 text-pink-600 ring-1 ring-pink-500/20 dark:bg-pink-500/10 dark:text-pink-400 dark:ring-pink-500/30 shadow-sm":f(m).bg]]),title:$.content,onClick:g=>o("wordClick",$.content)},[m<3?(i(),u("span",{key:0,class:B(["flex h-4 w-4 shrink-0 items-center justify-center rounded-full text-[10px] font-bold",f(m).badge])},s(m+1),3)):M("",!0),e("span",{class:B(["text-[13px] font-medium",q.value.has($.content)?"font-bold":f(m).text])},s(I($.content)),3),e("span",bs,"×"+s($.count),1)],10,fs))),128))])])])):M("",!0),e("p",hs,s(t(r)("quotes.languagePreference.catchphrasePK.hint")),1)])]),_:1})}}}),_s={class:"px-5 py-4 sm:px-6"},ks={class:"mb-4 flex items-center gap-2"},ws={class:"text-[15px] font-black tracking-tight text-gray-900 dark:text-white"},$s={class:"flex flex-col gap-4 lg:flex-row lg:gap-6"},Cs={class:"flex-1"},Ss={key:0,class:"flex shrink-0 flex-col gap-3 lg:w-48"},Ps={class:"min-w-0"},Is={class:"truncate text-xs font-semibold text-gray-500 dark:text-gray-400"},Ms=Y({__name:"PosPortraitSection",props:{members:{}},setup(C){xe([Te,qe,ve,vt,fe]);const{t:a}=X(),r=pe(),_=C,o=T(()=>_.members[0]),p=T(()=>_.members[1]);function S(A){const f=A.posDistribution,I=f.noun+f.verb+f.adjective+f.adverb+f.modalParticle+f.interjection+f.other;if(I===0)return{label:a("quotes.languagePreference.pos.styleBalanced"),icon:"i-heroicons-scale-solid",colorClass:"text-cyan-600 dark:text-cyan-400"};const d=f.noun/I,x=f.verb/I,V=f.adjective/I;return d>.5?{label:a("quotes.languagePreference.pos.styleEncyclopedia"),icon:"i-heroicons-book-open-solid",colorClass:"text-indigo-600 dark:text-indigo-400"}:x>.45?{label:a("quotes.languagePreference.pos.styleAction"),icon:"i-heroicons-rocket-launch-solid",colorClass:"text-orange-600 dark:text-orange-400"}:V>.3?{label:a("quotes.languagePreference.pos.styleExpressive"),icon:"i-heroicons-paint-brush-solid",colorClass:"text-pink-600 dark:text-pink-400"}:{label:a("quotes.languagePreference.pos.styleBalanced"),icon:"i-heroicons-scale-solid",colorClass:"text-cyan-600 dark:text-cyan-400"}}const w=O(null);let c=null;function P(){w.value&&(c=ne(w.value,void 0,{renderer:"canvas"}),z())}function z(){if(!c||!o.value||!p.value)return;const A=o.value.posDistribution,f=p.value.posDistribution,I=[a("quotes.languagePreference.card.radarNoun"),a("quotes.languagePreference.card.radarVerb"),a("quotes.languagePreference.card.radarAdj"),a("quotes.languagePreference.card.radarModal"),a("quotes.languagePreference.card.radarAdv")],d=[A.noun,A.verb,A.adjective,A.modalParticle+A.interjection,A.adverb],x=[f.noun,f.verb,f.adjective,f.modalParticle+f.interjection,f.adverb],V=r.value?"#9ca3af":"#6b7280";c.setOption({backgroundColor:"transparent",tooltip:{trigger:"axis",axisPointer:{type:"shadow"}},legend:{data:[o.value.name,p.value.name],top:0,textStyle:{fontSize:11,color:V}},grid:{left:80,right:20,top:36,bottom:10},xAxis:{type:"value",show:!1},yAxis:{type:"category",data:I,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{fontSize:11,color:V}},series:[{name:o.value.name,type:"bar",data:d,itemStyle:{color:"#3b82f6",borderRadius:[0,4,4,0]},barGap:"20%",barCategoryGap:"40%"},{name:p.value.name,type:"bar",data:x,itemStyle:{color:"#ec4899",borderRadius:[0,4,4,0]}}]},{notMerge:!0})}function q(){c?.resize()}return Z(()=>_.members,()=>z(),{deep:!0}),Z(r,()=>{c?.dispose(),P()}),oe(()=>{P(),window.addEventListener("resize",q)}),ge(()=>{window.removeEventListener("resize",q),c?.dispose()}),(A,f)=>{const I=te;return i(),D(t(ie),{variant:"section"},{default:E(()=>[e("div",_s,[e("div",ks,[y(I,{name:"i-heroicons-chart-bar",class:"h-4 w-4 text-violet-500"}),e("span",ws,s(t(a)("quotes.languagePreference.pos.title")),1)]),e("div",$s,[e("div",Cs,[e("div",{ref_key:"chartRef",ref:w,style:{width:"100%",height:"220px"}},null,512)]),o.value&&p.value?(i(),u("div",Ss,[(i(!0),u(K,null,G([o.value,p.value],d=>(i(),u("div",{key:d.memberId,class:"flex items-center gap-3 rounded-xl bg-white/60 p-3 ring-1 ring-gray-900/5 backdrop-blur-sm dark:bg-white/5 dark:ring-white/10"},[y(I,{name:S(d).icon,class:B(["h-5 w-5 shrink-0",S(d).colorClass])},null,8,["name","class"]),e("div",Ps,[e("div",Is,s(d.name),1),e("div",{class:B(["truncate text-sm font-bold",S(d).colorClass])},s(S(d).label),3)])]))),128))])):M("",!0)])])]),_:1})}}}),Ts={class:"px-5 py-4 sm:px-6"},qs={class:"mb-4 flex items-center gap-2"},As={class:"text-[15px] font-black tracking-tight text-gray-900 dark:text-white"},js={key:0,class:"grid grid-cols-1 gap-6 md:grid-cols-2"},Rs={class:"mb-2 flex items-center justify-between"},Vs={key:1,class:"flex h-[200px] items-center justify-center text-sm text-gray-400"},Ls=Y({__name:"ModalParticleSection",props:{members:{}},setup(C){xe([Te,qe,ve,fe]);const{t:a}=X(),r=pe(),_=C,o=T(()=>_.members[0]),p=T(()=>_.members[1]),S=new Set(["呀","哒","滴","啦","哇","耶"]),w=new Set(["呢","吗","嘛"]),c=new Set(["吧","喔","噢","嘛"]),P=new Set(["嗯","哦","额","呃"]);function z($){const m={label:a("quotes.languagePreference.modal.toneMixed"),colorClass:"bg-gray-50 text-gray-600 ring-1 ring-gray-900/5 dark:bg-gray-800/50 dark:text-gray-400 dark:ring-white/10"};if($.modalParticles.length===0)return m;let g=0,v=0,l=0,h=0,L=0;for(const F of $.modalParticles)L+=F.count,S.has(F.word)&&(g+=F.count),w.has(F.word)&&(v+=F.count),c.has(F.word)&&(l+=F.count),P.has(F.word)&&(h+=F.count);if(L===0)return m;const U=Math.max(g,v,l,h);return U===g&&g/L>.3?{label:a("quotes.languagePreference.modal.toneSoft"),colorClass:"bg-pink-50 text-pink-600 ring-1 ring-pink-500/20 dark:bg-pink-500/10 dark:text-pink-400 dark:ring-pink-500/30"}:U===v&&v/L>.3?{label:a("quotes.languagePreference.modal.toneCurious"),colorClass:"bg-violet-50 text-violet-600 ring-1 ring-violet-500/20 dark:bg-violet-500/10 dark:text-violet-400 dark:ring-violet-500/30"}:U===l&&l/L>.3?{label:a("quotes.languagePreference.modal.toneCasual"),colorClass:"bg-emerald-50 text-emerald-600 ring-1 ring-emerald-500/20 dark:bg-emerald-500/10 dark:text-emerald-400 dark:ring-emerald-500/30"}:U===h&&h/L>.3?{label:a("quotes.languagePreference.modal.toneCalm"),colorClass:"bg-blue-50 text-blue-600 ring-1 ring-blue-500/20 dark:bg-blue-500/10 dark:text-blue-400 dark:ring-blue-500/30"}:m}const q=O(null),A=O(null);let f=null,I=null;function d($,m){const g=$.modalParticles.slice(0,8),v=r.value?"#9ca3af":"#6b7280";return{backgroundColor:"transparent",tooltip:{trigger:"axis",axisPointer:{type:"shadow"}},grid:{left:40,right:20,top:4,bottom:4},xAxis:{type:"value",show:!1},yAxis:{type:"category",data:g.map(l=>l.word).reverse(),axisLine:{show:!1},axisTick:{show:!1},axisLabel:{fontSize:12,color:v},inverse:!1},series:[{type:"bar",data:g.map(l=>l.count).reverse(),itemStyle:{color:m,borderRadius:[0,4,4,0]},barWidth:"50%",label:{show:!0,position:"right",fontSize:10,color:v,formatter:"{c}"}}]}}function x(){q.value&&o.value&&(f=ne(q.value,void 0,{renderer:"canvas"}),f.setOption(d(o.value,"#3b82f6"),{notMerge:!0})),A.value&&p.value&&(I=ne(A.value,void 0,{renderer:"canvas"}),I.setOption(d(p.value,"#ec4899"),{notMerge:!0}))}function V(){f?.resize(),I?.resize()}return Z(()=>_.members,()=>{f&&o.value&&f.setOption(d(o.value,"#3b82f6"),{notMerge:!0}),I&&p.value&&I.setOption(d(p.value,"#ec4899"),{notMerge:!0})},{deep:!0}),Z(r,()=>{f?.dispose(),I?.dispose(),x()}),oe(()=>{x(),window.addEventListener("resize",V)}),ge(()=>{window.removeEventListener("resize",V),f?.dispose(),I?.dispose()}),($,m)=>{const g=te;return i(),D(t(ie),{variant:"section"},{default:E(()=>[e("div",Ts,[e("div",qs,[y(g,{name:"i-heroicons-chat-bubble-oval-left-ellipsis",class:"h-4 w-4 text-pink-500"}),e("span",As,s(t(a)("quotes.languagePreference.modal.title")),1)]),o.value&&p.value?(i(),u("div",js,[(i(!0),u(K,null,G([o.value,p.value],(v,l)=>(i(),u("div",{key:v.memberId},[e("div",Rs,[e("span",{class:B(["text-sm font-semibold",l===0?"text-blue-600 dark:text-blue-400":"text-pink-600 dark:text-pink-400"])},s(v.name),3),e("span",{class:B(["rounded-full px-2 py-0.5 text-[10px] font-bold",z(v).colorClass])},s(z(v).label),3)]),v.modalParticles.length>0?(i(),u("div",{key:0,ref_for:!0,ref:h=>{l===0?q.value=h:A.value=h},style:{width:"100%",height:"200px"}},null,512)):(i(),u("div",Vs,s(t(a)("quotes.languagePreference.modal.empty")),1))]))),128))])):M("",!0)])]),_:1})}}}),Ds={class:"px-5 py-4 sm:px-6"},zs={class:"mb-4 flex items-center gap-2"},Os={class:"text-[15px] font-black tracking-tight text-gray-900 dark:text-white"},Bs={key:0,class:"grid grid-cols-1 gap-6 md:grid-cols-2"},Ns={class:"mb-2 flex items-center gap-2"},Us={key:1,class:"flex h-[200px] items-center justify-center text-sm text-gray-400"},Fs=Y({__name:"PunctuationSection",props:{members:{}},setup(C){xe([ft,ve,fe]);const{t:a}=X(),r=pe(),_=C,o=T(()=>_.members[0]),p=T(()=>_.members[1]),S=["#6366f1","#ec4899","#f97316","#22c55e","#06b6d4","#8b5cf6"];function w(x){const $=[["ellipsis",x.ellipsis],["exclamation",x.exclamation],["question",x.question],["tilde",x.tilde],["noPunct",x.noPunct],["period",x.period]].reduce((g,v)=>g[1]>=v[1]?g:v);return{ellipsis:{label:a("quotes.languagePreference.punctuation.personalityDeep"),colorClass:"bg-indigo-50 text-indigo-600 ring-1 ring-indigo-500/20 dark:bg-indigo-500/10 dark:text-indigo-400 dark:ring-indigo-500/30"},exclamation:{label:a("quotes.languagePreference.punctuation.personalityPassionate"),colorClass:"bg-rose-50 text-rose-600 ring-1 ring-rose-500/20 dark:bg-rose-500/10 dark:text-rose-400 dark:ring-rose-500/30"},question:{label:a("quotes.languagePreference.punctuation.personalityCurious"),colorClass:"bg-amber-50 text-amber-600 ring-1 ring-amber-500/20 dark:bg-amber-500/10 dark:text-amber-400 dark:ring-amber-500/30"},tilde:{label:a("quotes.languagePreference.punctuation.personalityCheerful"),colorClass:"bg-pink-50 text-pink-600 ring-1 ring-pink-500/20 dark:bg-pink-500/10 dark:text-pink-400 dark:ring-pink-500/30"},noPunct:{label:a("quotes.languagePreference.punctuation.personalityFreeflow"),colorClass:"bg-emerald-50 text-emerald-600 ring-1 ring-emerald-500/20 dark:bg-emerald-500/10 dark:text-emerald-400 dark:ring-emerald-500/30"},period:{label:a("quotes.languagePreference.punctuation.personalityPrecise"),colorClass:"bg-blue-50 text-blue-600 ring-1 ring-blue-500/20 dark:bg-blue-500/10 dark:text-blue-400 dark:ring-blue-500/30"}}[$[0]]||{label:"-",colorClass:"bg-gray-50 text-gray-600 ring-1 ring-gray-900/5 dark:bg-gray-800/50 dark:text-gray-400 dark:ring-white/10"}}function c(x){return[{name:"...",value:x.ellipsis},{name:"!",value:x.exclamation},{name:"?",value:x.question},{name:"~",value:x.tilde},{name:"。",value:x.period},{name:a("quotes.languagePreference.punctuation.none"),value:x.noPunct}].filter(V=>V.value>0)}const P=O(null),z=O(null);let q=null,A=null;function f(x){return{backgroundColor:"transparent",tooltip:{trigger:"item",formatter:"{b}: {c} ({d}%)"},series:[{type:"pie",radius:["45%","75%"],center:["50%","50%"],avoidLabelOverlap:!1,padAngle:2,itemStyle:{borderRadius:4},label:{show:!0,fontSize:10,color:r.value?"#9ca3af":"#6b7280",formatter:"{b}"},emphasis:{label:{show:!0,fontWeight:"bold"},scaleSize:4},data:x.map((V,$)=>({...V,itemStyle:{color:S[$%S.length]}}))}]}}function I(){P.value&&o.value&&(q=ne(P.value,void 0,{renderer:"canvas"}),q.setOption(f(c(o.value.punctuation)),{notMerge:!0})),z.value&&p.value&&(A=ne(z.value,void 0,{renderer:"canvas"}),A.setOption(f(c(p.value.punctuation)),{notMerge:!0}))}function d(){q?.resize(),A?.resize()}return Z(()=>_.members,()=>{q&&o.value&&q.setOption(f(c(o.value.punctuation)),{notMerge:!0}),A&&p.value&&A.setOption(f(c(p.value.punctuation)),{notMerge:!0})},{deep:!0}),Z(r,()=>{q?.dispose(),A?.dispose(),I()}),oe(()=>{I(),window.addEventListener("resize",d)}),ge(()=>{window.removeEventListener("resize",d),q?.dispose(),A?.dispose()}),(x,V)=>{const $=te;return i(),D(t(ie),{variant:"section"},{default:E(()=>[e("div",Ds,[e("div",zs,[y($,{name:"i-heroicons-ellipsis-horizontal",class:"h-4 w-4 text-orange-500"}),e("span",Os,s(t(a)("quotes.languagePreference.punctuation.title")),1)]),o.value&&p.value?(i(),u("div",Bs,[(i(!0),u(K,null,G([o.value,p.value],(m,g)=>(i(),u("div",{key:m.memberId,class:"flex flex-col items-center"},[e("div",Ns,[e("span",{class:B(["text-sm font-semibold",g===0?"text-blue-600 dark:text-blue-400":"text-pink-600 dark:text-pink-400"])},s(m.name),3),e("span",{class:B(["rounded-full px-2 py-0.5 text-[10px] font-bold",w(m.punctuation).colorClass])},s(w(m.punctuation).label),3)]),m.punctuation.total>0?(i(),u("div",{key:0,ref_for:!0,ref:v=>{g===0?P.value=v:z.value=v},style:{width:"100%",height:"200px"}},null,512)):(i(),u("div",Us,s(t(a)("quotes.languagePreference.punctuation.empty")),1))]))),128))])):M("",!0)])]),_:1})}}}),Es={class:"main-content mx-auto max-w-[920px] space-y-6 p-6"},Ws=Y({__name:"LanguagePreferenceTab",props:{sessionId:{},timeFilter:{}},setup(C){const{t:a,locale:r}=X(),_=Pe(),o=C,p=O(null),S=O(!1),w=T(()=>p.value&&p.value.members.length>=2);async function c(){if(o.sessionId){S.value=!0;try{p.value=await le().getLanguagePreferenceAnalysis(o.sessionId,r.value,o.timeFilter)}catch(z){console.error("[LanguagePreferenceTab] Failed to load:",z)}finally{S.value=!1}}}function P(z){_.openChatRecordDrawer({keywords:[z]})}return Z(()=>[o.sessionId,o.timeFilter],()=>c(),{immediate:!0,deep:!0}),(z,q)=>(i(),u("div",Es,[S.value?(i(),D(t(me),{key:0,text:t(a)("quotes.languagePreference.loading")},null,8,["text"])):w.value?p.value?(i(),u(K,{key:2},[y(ss,{data:p.value,onWordClick:P},null,8,["data"]),y(ys,{members:p.value.members,onWordClick:P},null,8,["members"]),y(Ms,{members:p.value.members},null,8,["members"]),y(Ls,{members:p.value.members},null,8,["members"]),y(Fs,{members:p.value.members},null,8,["members"])],64)):M("",!0):(i(),D(t(Me),{key:1,text:t(a)("quotes.languagePreference.empty")},null,8,["text"]))]))}}),Ks={class:"main-content mx-auto max-w-[920px] space-y-6 p-6"},Hs={class:"grid grid-cols-1 gap-6 lg:grid-cols-2"},Gs={class:"p-5"},Js={class:"p-5"},Ys=Y({__name:"OverviewTab",props:{session:{},memberActivity:{},messageTypes:{},hourlyActivity:{},dailyActivity:{},timeRange:{},selectedYear:{},filteredMessageCount:{},filteredMemberCount:{},timeFilter:{}},setup(C){const{t:a}=X(),r=C,{dailyChartData:_}=Je(()=>r.dailyActivity),o=T(()=>({labels:r.messageTypes.map(w=>Ye(w.type,a)),values:r.messageTypes.map(w=>w.count)})),p=T(()=>{if(r.memberActivity.length<2)return null;const c=[...r.memberActivity].sort((z,q)=>q.messageCount-z.messageCount).slice(0,2),P=c[0].messageCount+c[1].messageCount;return{member1:{name:c[0].name,avatar:c[0].avatar,count:c[0].messageCount,percentage:P>0?Math.round(c[0].messageCount/P*100):0},member2:{name:c[1].name,avatar:c[1].avatar,count:c[1].messageCount,percentage:P>0?Math.round(c[1].messageCount/P*100):0},total:P}}),S=T(()=>p.value?{labels:[p.value.member1.name,p.value.member2.name],values:[p.value.member1.count,p.value.member2.count]}:{labels:[],values:[]});return(w,c)=>(i(),u("div",Ks,[y(He,{session:C.session,"daily-activity":C.dailyActivity,"message-types":C.messageTypes,"hourly-activity":C.hourlyActivity,"time-range":C.timeRange,"selected-year":C.selectedYear,"filtered-message-count":C.filteredMessageCount,"time-filter":C.timeFilter},null,8,["session","daily-activity","message-types","hourly-activity","time-range","selected-year","filtered-message-count","time-filter"]),e("div",Hs,[y(t(_e),{title:t(a)("analysis.overview.messageTypeDistribution"),"show-divider":!1},{default:E(()=>[e("div",Gs,[y(t(we),{data:o.value,height:280},null,8,["data"])])]),_:1},8,["title"]),p.value?(i(),D(t(_e),{key:0,title:t(a)("analysis.overview.memberComparison"),"show-divider":!1},{default:E(()=>[e("div",Js,[y(t(we),{data:S.value,height:280},null,8,["data"])])]),_:1},8,["title"])):M("",!0)]),y(Ge,{"daily-activity":C.dailyActivity,"daily-chart-data":t(_)},null,8,["daily-activity","daily-chart-data"])]))}}),Qs={class:"flex flex-col rounded-2xl bg-white p-4 ring-1 ring-gray-900/5 transition-colors dark:bg-transparent dark:ring-white/10"},Zs={class:"mb-2 min-h-8"},Xs={class:"flex items-center justify-between gap-2"},ea={class:"flex min-w-0 items-center gap-2"},ta={class:"truncate text-xs font-bold tracking-wide text-gray-900 dark:text-white"},sa={key:0,class:"shrink-0"},aa={class:"flex h-full flex-col"},na={class:"grid grid-cols-2 gap-2"},ia={class:"flex min-w-0 flex-col items-center rounded-xl bg-white px-1 py-1.5 text-center dark:bg-transparent"},la=["title"],oa={class:"flex min-w-0 flex-col items-center rounded-xl bg-white px-1 py-1.5 text-center dark:bg-transparent"},ra=["title"],ca={class:"mt-auto pt-3 min-h-8 text-[10px] leading-relaxed text-gray-500 dark:text-gray-400 sm:min-h-6"},ue=Y({__name:"RelationshipMetricCard",props:{title:{},iconName:{},iconBgClass:{},iconColorClass:{},leftName:{default:"—"},leftValue:{default:"--"},rightName:{default:"—"},rightValue:{default:"--"},valueClass:{default:"text-gray-700 dark:text-gray-200"},description:{default:""}},setup(C){const a=ze(),r=T(()=>!!a["header-extra"]);return(_,o)=>{const p=te;return i(),u("div",Qs,[e("div",Zs,[e("div",Xs,[e("div",ea,[e("div",{class:B(["flex h-6 w-6 shrink-0 items-center justify-center rounded-full",C.iconBgClass])},[y(p,{name:C.iconName,class:B(["h-3.5 w-3.5",C.iconColorClass])},null,8,["name","class"])],2),e("span",ta,s(C.title),1)]),r.value?(i(),u("div",sa,[Oe(_.$slots,"header-extra")])):M("",!0)])]),e("div",aa,[e("div",na,[e("div",ia,[e("div",{class:"w-full truncate text-[10px] font-semibold tracking-wide text-gray-500 dark:text-gray-400",title:C.leftName},s(C.leftName),9,la),e("div",{class:B(["mt-2 font-black font-mono leading-none tabular-nums",C.valueClass])},s(C.leftValue),3)]),e("div",oa,[e("div",{class:"w-full truncate text-[10px] font-semibold tracking-wide text-gray-500 dark:text-gray-400",title:C.rightName},s(C.rightName),9,ra),e("div",{class:B(["mt-2 font-black font-mono leading-none tabular-nums",C.valueClass])},s(C.rightValue),3)])]),e("p",ca,s(C.description),1)])])}}}),da={key:1,class:"main-content mx-auto max-w-[920px] space-y-6 p-6"},ua={class:"space-y-6"},ma={class:"relative z-10 flex flex-col items-center justify-center gap-10 px-6 pt-10 pb-6 sm:px-8 lg:flex-row lg:items-start lg:justify-between lg:gap-8 xl:gap-12"},ga={class:"flex min-w-0 max-w-full flex-1 flex-col items-center justify-center lg:items-start"},pa={class:"flex flex-col text-[15px] leading-relaxed text-gray-600 dark:text-gray-300"},xa={class:"mb-2 text-sm font-medium tracking-wide text-gray-500 dark:text-gray-400"},va={class:"mb-4 flex min-w-0 flex-wrap items-baseline gap-2"},fa={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},ba={class:"font-black text-5xl tracking-tight text-gray-900 dark:text-white"},ha={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},ya={class:"flex min-w-0 max-w-full flex-wrap items-baseline gap-x-1.5 gap-y-1"},_a={class:"text-base font-medium text-gray-600 dark:text-gray-300"},ka={class:"font-black text-3xl text-pink-500 dark:text-pink-400"},wa={class:"text-base font-medium text-gray-600 dark:text-gray-300"},$a={class:"max-w-full break-all text-xl font-bold leading-snug text-gray-900 dark:text-white"},Ca={class:"text-base font-medium text-gray-600 dark:text-gray-300"},Sa={class:"mt-8 flex w-full max-w-[320px] items-center justify-between gap-4"},Pa={class:"flex flex-1 flex-col items-center overflow-hidden"},Ia=["title"],Ma={class:"mt-1 text-2xl font-black text-blue-500 dark:text-blue-400"},Ta={class:"mt-0.5 text-[10px] font-medium text-gray-400"},qa={class:"flex flex-1 flex-col items-center overflow-hidden"},Aa=["title"],ja={class:"mt-1 text-2xl font-black text-pink-500 dark:text-pink-400"},Ra={class:"mt-0.5 text-[10px] font-medium text-gray-400"},Va={key:0,class:"flex min-w-0 w-full max-w-[400px] flex-1 flex-col justify-center lg:max-w-[460px]"},La={class:"mb-2 flex items-center justify-between px-1"},Da={class:"text-sm font-bold text-gray-900 dark:text-white"},za={class:"text-[10px] font-medium text-gray-500 dark:text-gray-400"},Oa={class:"w-full"},Ba={class:"h-[200px] w-full"},Na={class:"relative z-10 grid grid-cols-2 gap-3 p-4 pt-2 sm:p-6 sm:pt-2 lg:grid-cols-4"},Ua={class:"relative z-10 flex items-center justify-between px-6 pb-4 opacity-40 mix-blend-luminosity dark:opacity-30 sm:px-8 sm:pb-5"},Fa={class:"flex items-center gap-1.5"},Ea={class:"text-[9px] font-medium uppercase tracking-widest"},Wa={class:"p-6 sm:p-8"},Ka={class:"relative ml-4 border-l-2 border-gray-100/80 py-4 dark:border-gray-800/80"},Ha={class:"absolute -left-[11px] top-1 flex h-5 w-5 items-center justify-center rounded-full bg-white ring-4 ring-white dark:bg-gray-900 dark:ring-gray-900"},Ga={class:"group relative overflow-hidden rounded-[20px] bg-card-bg shadow-sm ring-1 ring-gray-900/5 transition-all hover:-translate-y-0.5 hover:shadow-md dark:bg-card-dark dark:ring-white/10"},Ja={key:0,class:"pointer-events-none absolute inset-0 overflow-hidden opacity-30 transition-opacity group-hover:opacity-50"},Ya={class:"relative z-10 p-4 sm:p-5"},Qa={class:"flex items-center gap-3"},Za={class:"text-xl font-bold tracking-tight text-gray-900 dark:text-white"},Xa={key:0,class:"flex items-baseline gap-1.5"},en={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},tn={class:"text-2xl font-black leading-none text-gray-900 dark:text-white"},sn={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},an={key:0,class:"grid grid-cols-2 gap-3 lg:grid-cols-4"},nn={class:"flex flex-col rounded-xl bg-blue-50/50 p-3 ring-1 ring-blue-100/50 dark:bg-blue-500/5 dark:ring-blue-500/10"},ln={class:"mb-2.5 flex items-center gap-1.5"},on={class:"text-xs font-bold text-gray-700 dark:text-gray-300"},rn={class:"flex flex-col gap-1.5"},cn={class:"flex items-center justify-between text-xs"},dn={class:"w-12 truncate font-medium text-gray-500 dark:text-gray-400"},un={class:"font-black tabular-nums text-blue-600 dark:text-blue-400"},mn={class:"flex items-center justify-between text-xs"},gn={class:"w-12 truncate font-medium text-gray-500 dark:text-gray-400"},pn={class:"font-black tabular-nums text-pink-500 dark:text-pink-400"},xn={class:"mt-3 flex h-1 w-full overflow-hidden rounded-full bg-gray-200 dark:bg-gray-700"},vn={class:"flex flex-col rounded-xl bg-indigo-50/50 p-3 ring-1 ring-indigo-100/50 dark:bg-indigo-500/5 dark:ring-indigo-500/10"},fn={class:"mb-2.5 flex items-center gap-1.5"},bn={class:"text-xs font-bold text-gray-700 dark:text-gray-300"},hn={class:"flex flex-col gap-1.5"},yn={class:"flex items-center justify-between text-xs"},_n={class:"w-12 truncate font-medium text-gray-500 dark:text-gray-400"},kn={class:"font-black tabular-nums text-indigo-600 dark:text-indigo-400"},wn={class:"flex items-center justify-between text-xs"},$n={class:"w-12 truncate font-medium text-gray-500 dark:text-gray-400"},Cn={class:"font-black tabular-nums text-pink-500 dark:text-pink-400"},Sn={class:"mt-3 flex h-1 w-full overflow-hidden rounded-full bg-gray-200 dark:bg-gray-700"},Pn={class:"flex flex-col rounded-xl bg-amber-50/50 p-3 ring-1 ring-amber-100/50 dark:bg-amber-500/5 dark:ring-amber-500/10"},In={class:"mb-2.5 flex items-center gap-1.5"},Mn={class:"text-xs font-bold text-gray-700 dark:text-gray-300"},Tn={class:"flex flex-col gap-1.5"},qn={class:"flex items-center justify-between text-xs"},An={class:"w-12 truncate font-medium text-gray-500 dark:text-gray-400"},jn={class:"font-black tabular-nums text-amber-600 dark:text-amber-500"},Rn={class:"flex items-center justify-between text-xs"},Vn={class:"w-12 truncate font-medium text-gray-500 dark:text-gray-400"},Ln={class:"font-black tabular-nums text-amber-600 dark:text-amber-500"},Dn={class:"flex flex-col rounded-xl bg-purple-50/50 p-3 ring-1 ring-purple-100/50 dark:bg-purple-500/5 dark:ring-purple-500/10"},zn={class:"mb-2.5 flex items-center gap-1.5"},On={class:"text-xs font-bold text-gray-700 dark:text-gray-300"},Bn={class:"flex flex-col gap-1.5"},Nn={class:"flex items-center justify-between text-xs"},Un={class:"w-12 truncate font-medium text-gray-500 dark:text-gray-400"},Fn={class:"font-black tabular-nums text-purple-600 dark:text-purple-400"},En={class:"flex items-center justify-between text-xs"},Wn={class:"w-12 truncate font-medium text-gray-500 dark:text-gray-400"},Kn={class:"font-black tabular-nums text-purple-600 dark:text-purple-400"},Hn={key:1,class:"flex h-24 items-center justify-center text-sm font-medium text-gray-400 dark:text-gray-500"},Gn=Y({__name:"RelationshipView",props:{sessionId:{},timeFilter:{}},setup(C){const{t:a,locale:r}=X(),_=C,o=O(null),p=O(!1),S=O(!1),w=O(300);async function c(n){if(!_.sessionId)return;const b=n?.localOnly==="perseverance";b?S.value=!0:p.value=!0;try{o.value=await le().getRelationshipStats(_.sessionId,_.timeFilter,{perseveranceThreshold:w.value})}catch(j){console.error("Failed to load relationship stats:",j)}finally{b?S.value=!1:p.value=!1}}Z(()=>[_.sessionId,_.timeFilter],()=>c(),{immediate:!0,deep:!0});const P=[{label:"1m",value:60},{label:"3m",value:180},{label:"5m",value:300},{label:"10m",value:600},{label:"30m",value:1800}];function z(n){w.value!==n&&(w.value=n,c({localOnly:"perseverance"}))}const q=T({get:()=>w.value,set:n=>z(n)});function A(n){return a("views.relationship.perseverance.thresholdMinutes",{n:Math.round(n/60)})}const f=T(()=>a("views.relationship.perseverance.hintWithThreshold",{threshold:A(w.value)})),I=T(()=>o.value?.hasSessionIndex&&o.value.totalSessions>0),d=T(()=>o.value?.members[0]),x=T(()=>o.value?.members[1]),V=T(()=>{if(!d.value||!o.value)return 50;const n=(d.value.totalInitiateCount??0)+(x.value?.totalInitiateCount??0);return n===0?50:Math.round(d.value.totalInitiateCount/n*100)}),$=T(()=>{if(!o.value||o.value.months.length===0)return"";const n=[...o.value.months].sort((k,R)=>k.month.localeCompare(R.month)),b=n[0].month.replace("-","/"),j=n[n.length-1].month.replace("-","/");return b===j?b:`${b} – ${j}`}),m=T(()=>r.value.startsWith("en")?"max-w-[420px]":"max-w-[320px]");function g(n){return n<=0?0:n>=100?100:Math.max(5,Math.min(95,n))}const v=T(()=>{if(!o.value||o.value.months.length===0||!d.value)return{};const n=[...o.value.months].sort((W,H)=>W.month.localeCompare(H.month)),b=n.map(W=>F(W.month)),j=d.value.name,k=x.value?.name??"—",R=n.map(W=>{const H=W.members.find(de=>de.memberId===d.value.memberId);return!H||W.totalSessions===0?50:Math.round(H.initiateCount/W.totalSessions*100)});return{tooltip:{trigger:"axis",formatter(W){const H=W[0],de=H.value;return`${H.axisValue}<br/>${j}: ${de}%<br/>${k}: ${100-de}%`}},grid:{left:40,right:20,top:20,bottom:30},xAxis:{type:"category",data:b,axisLabel:{fontSize:11}},yAxis:{type:"value",min:0,max:100,axisLabel:{formatter:"{value}%",fontSize:11},splitLine:{lineStyle:{type:"dashed"}}},series:[{type:"line",data:R,smooth:!0,symbol:"circle",symbolSize:6,lineStyle:{width:2,color:"#3b82f6"},itemStyle:{color:"#3b82f6"},areaStyle:{color:{type:"linear",x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:"rgba(59, 130, 246, 0.15)"},{offset:1,color:"rgba(59, 130, 246, 0)"}]}},markLine:{silent:!0,data:[{yAxis:50,lineStyle:{type:"dashed",color:"#9ca3af"}}],label:{show:!1},symbol:"none"}}]}});function l(n){if(n.totalSessions===0)return a("views.relationship.labels.peacefulSilence");if(n.totalSessions<=2)return a("views.relationship.labels.fleetingThoughts");const j=[...n.members].sort((R,W)=>W.initiateCount-R.initiateCount)[0];if(!j||n.totalSessions===0)return"";const k=Math.round(j.initiateCount/n.totalSessions*100);return k>=40&&k<=60?a("views.relationship.labels.wellMatched"):k>=80?a("views.relationship.labels.monologue",{name:j.name}):a("views.relationship.labels.missingYou",{name:j.name})}function h(n){if(!d.value||n.totalSessions===0)return 50;const b=n.members.find(j=>j.memberId===d.value.memberId);return Math.round((b?.initiateCount??0)/n.totalSessions*100)}function L(n){if(!d.value)return 50;const j=n.members.find(R=>R.memberId===d.value.memberId)?.closeCount??0,k=n.members.reduce((R,W)=>R+(W.closeCount??0),0);return k===0?50:Math.round(j/k*100)}function U(n){const[b,j]=n.split("-");return a("views.relationship.monthFormat",{year:b,month:Number.parseInt(j,10)})}function F(n){const b=n.split("-");return a("views.relationship.monthShortFormat",{month:Number.parseInt(b[1],10)})}function ee(n){return!n||!o.value?.iceBreakers?.length?0:o.value.iceBreakers.filter(b=>b.memberId===n).reduce((b,j)=>b+j.count,0)}function Q(n){if(!n||!o.value?.responseLatency?.length)return null;const b=o.value.responseLatency.find(j=>j.memberId===n);return b?b.avgResponseTime:null}function N(n){return!n||!o.value?.perseverance?.length?0:o.value.perseverance.find(j=>j.memberId===n)?.totalDoubleTexts??0}function se(n){const b=Q(n);return b!=null?J(b):"--"}function be(n){return o.value?.monthlyResponseLatency?.find(b=>b.month===n)?.members??[]}function he(n){return o.value?.monthlyPerseverance?.find(b=>b.month===n)?.members??[]}function re(n,b){if(!b)return"--";const j=be(n).find(k=>k.memberId===b);return j?J(j.avgResponseTime):"--"}function ce(n,b){if(!b)return"--";const j=he(n).find(k=>k.memberId===b);return j?j.doubleTextCount.toString():"--"}function J(n){const b=Math.max(0,Math.round(n));if(b<60)return a("views.relationship.responseLatency.seconds",{n:b});if(b<3600){const R=Math.floor(b/60),W=b%60;return a("views.relationship.responseLatency.minutesSeconds",{m:R,s:W})}const j=Math.floor(b/3600),k=Math.floor(b%3600/60);return k===0?a("views.relationship.responseLatency.hours",{n:j}):a("views.relationship.responseLatency.hoursMinutes",{h:j,m:k})}return(n,b)=>{const j=je,k=te;return i(),u("div",{class:B(p.value?"h-full":"")},[p.value?(i(),D(t(me),{key:0,variant:"page",text:t(a)("common.loading")},null,8,["text"])):(i(),u("div",da,[o.value&&!I.value?(i(),D(t(Me),{key:0,icon:"i-heroicons-heart",title:t(a)("views.relationship.empty.title"),description:t(a)("views.relationship.empty.description")},null,8,["title","description"])):o.value&&I.value?(i(),u(K,{key:1},[e("div",ua,[y(t(ie),{id:"shareable-poster",variant:"elevated",decorative:"",class:"flex flex-col"},{default:E(()=>[e("div",ma,[e("div",ga,[e("div",{class:B(["flex w-fit min-w-0 flex-col items-start text-left",m.value])},[e("div",pa,[e("p",xa,s($.value),1),e("div",va,[e("span",fa,s(t(a)("views.relationship.hero.totalSessionsPrefix")),1),e("span",ba,s(o.value.totalSessions),1),e("span",ha,s(t(a)("views.relationship.hero.totalSessionsSuffix")),1)]),e("div",ya,[e("span",_a,s(t(a)("views.relationship.hero.initiativePrefix")),1),e("span",ka,s(V.value>=50?V.value:100-V.value)+"% ",1),e("span",wa,s(t(a)("views.relationship.hero.initiativeByPrefix")),1),e("span",$a,s(V.value>=50?d.value?.name:x.value?.name),1),e("span",Ca,s(t(a)("views.relationship.hero.initiativeBySuffix")),1)])]),e("div",Sa,[e("div",Pa,[e("div",{class:"w-full truncate text-center text-xs font-bold text-gray-500 dark:text-gray-400",title:d.value?.name},s(d.value?.name),9,Ia),e("div",Ma,s(d.value?.totalInitiateCount),1),e("div",Ta,s(t(a)("views.relationship.hero.initiateTimes")),1)]),b[1]||(b[1]=e("div",{class:"flex h-6 w-6 shrink-0 items-center justify-center rounded-full bg-gray-100 font-black text-[10px] italic text-gray-400 shadow-inner dark:bg-gray-900/80 dark:text-gray-500"}," VS ",-1)),e("div",qa,[e("div",{class:"w-full truncate text-center text-xs font-bold text-gray-500 dark:text-gray-400",title:x.value?.name},s(x.value?.name),9,Aa),e("div",ja,s(x.value?.totalInitiateCount),1),e("div",Ra,s(t(a)("views.relationship.hero.initiateTimes")),1)])])],2)]),o.value.months.length>=2?(i(),u("div",Va,[e("div",La,[e("span",Da,s(t(a)("views.relationship.trend.title")),1),e("span",za,s(t(a)("views.relationship.trend.hint",{name:d.value?.name??""})),1)]),e("div",Oa,[e("div",Ba,[y(t(Qe),{option:v.value,height:200},null,8,["option"])])])])):M("",!0)]),e("div",Na,[y(ue,{title:t(a)("views.relationship.closerTitle"),"icon-name":"i-heroicons-hand-raised-solid","icon-bg-class":"bg-blue-100 dark:bg-blue-500/20","icon-color-class":"text-blue-600 dark:text-blue-400","left-name":d.value?.name,"left-value":d.value?.totalCloseCount??0,"right-name":x.value?.name,"right-value":x.value?.totalCloseCount??0,"value-class":"text-lg text-blue-600 dark:text-blue-400",description:t(a)("views.relationship.closerHint")},null,8,["title","left-name","left-value","right-name","right-value","description"]),y(ue,{title:t(a)("views.relationship.iceBreaker.title"),"icon-name":"i-heroicons-fire-solid","icon-bg-class":"bg-pink-100 dark:bg-pink-500/20","icon-color-class":"text-pink-600 dark:text-pink-400","left-name":d.value?.name,"left-value":ee(d.value?.memberId),"right-name":x.value?.name,"right-value":ee(x.value?.memberId),"value-class":"text-lg text-pink-600 dark:text-pink-400",description:t(a)("views.relationship.iceBreaker.hint")},null,8,["title","left-name","left-value","right-name","right-value","description"]),y(ue,{title:t(a)("views.relationship.responseLatency.title"),"icon-name":"i-heroicons-clock-solid","icon-bg-class":"bg-amber-100 dark:bg-amber-500/20","icon-color-class":"text-amber-600 dark:text-amber-400","left-name":d.value?.name,"left-value":se(d.value?.memberId),"right-name":x.value?.name,"right-value":se(x.value?.memberId),"value-class":"text-base text-amber-600 dark:text-amber-400",description:t(a)("views.relationship.responseLatency.hint")},null,8,["title","left-name","left-value","right-name","right-value","description"]),y(ue,{title:t(a)("views.relationship.perseverance.title"),"icon-name":"i-heroicons-arrow-path-solid","icon-bg-class":"bg-purple-100 dark:bg-purple-500/20","icon-color-class":"text-purple-600 dark:text-purple-400","left-name":d.value?.name,"left-value":N(d.value?.memberId),"right-name":x.value?.name,"right-value":N(x.value?.memberId),"value-class":"text-lg text-purple-600 dark:text-purple-400",description:f.value},{"header-extra":E(()=>[y(j,{modelValue:q.value,"onUpdate:modelValue":b[0]||(b[0]=R=>q.value=R),items:P,"value-key":"value",size:"xs",class:"relative z-[120] w-16",ui:{content:"z-[121]"},disabled:S.value},null,8,["modelValue","disabled"])]),_:1},8,["title","left-name","left-value","right-name","right-value","description"])]),e("div",Ua,[e("div",Fa,[y(k,{name:"i-heroicons-chat-bubble-left-right-solid",class:"h-3.5 w-3.5"}),b[2]||(b[2]=e("span",{class:"text-[10px] font-bold uppercase tracking-wider"},"ChatLab",-1))]),e("span",Ea,s(t(a)("views.relationship.watermarkReport")),1)])]),_:1})]),y(t(_e),{title:t(a)("views.relationship.monthly.title"),"show-divider":!1},{default:E(()=>[e("div",Wa,[e("div",Ka,[(i(!0),u(K,null,G(o.value.months,(R,W)=>(i(),u("div",{key:R.month,class:"relative pb-12 pl-10 last:pb-0"},[e("div",Ha,[e("div",{class:B(["h-2.5 w-2.5 rounded-full shadow-sm",R.totalSessions>0?W===0?"bg-pink-500 animate-pulse":"bg-pink-400":"bg-gray-300 dark:bg-gray-600"])},null,2)]),e("div",Ga,[R.totalSessions>0?(i(),u("div",Ja,[...b[3]||(b[3]=[e("div",{class:"absolute -left-[10%] top-[20%] h-[60%] w-[40%] rounded-full bg-blue-400/10 blur-[40px] dark:bg-blue-500/20"},null,-1),e("div",{class:"absolute -right-[10%] bottom-[20%] h-[60%] w-[40%] rounded-full bg-pink-400/10 blur-[40px] dark:bg-pink-500/20"},null,-1)])])):M("",!0),e("div",Ya,[e("div",{class:B(["flex items-center justify-between",R.totalSessions>0?"mb-4":""])},[e("div",Qa,[e("span",Za,s(U(R.month)),1),e("span",{class:B(["rounded-lg px-2.5 py-1 text-xs font-semibold",R.totalSessions===0?"bg-gray-50 text-gray-500 dark:bg-gray-800/50 dark:text-gray-400":"bg-pink-50 text-pink-600 dark:bg-pink-500/10 dark:text-pink-400"])},s(l(R)),3)]),R.totalSessions>0?(i(),u("div",Xa,[e("span",en,s(t(a)("views.relationship.monthly.totalSessionsPrefix")),1),e("span",tn,s(R.totalSessions),1),e("span",sn,s(t(a)("views.relationship.monthly.totalSessionsSuffix")),1)])):M("",!0)],2),R.totalSessions>0?(i(),u("div",an,[e("div",nn,[e("div",ln,[y(k,{name:"i-heroicons-chat-bubble-bottom-center-text-solid",class:"h-3.5 w-3.5 text-blue-500 dark:text-blue-400"}),e("span",on,s(t(a)("views.relationship.initiator")),1)]),e("div",rn,[e("div",cn,[e("span",dn,s(d.value?.name),1),e("span",un,s(R.members.find(H=>H.memberId===d.value?.memberId)?.initiateCount??0),1)]),e("div",mn,[e("span",gn,s(x.value?.name),1),e("span",pn,s(R.members.find(H=>H.memberId===x.value?.memberId)?.initiateCount??0),1)])]),e("div",xn,[e("div",{class:"bg-blue-500 dark:bg-blue-400",style:ae({width:g(h(R))+"%"})},null,4),e("div",{class:"bg-pink-500 dark:bg-pink-400",style:ae({width:g(100-h(R))+"%"})},null,4)])]),e("div",vn,[e("div",fn,[y(k,{name:"i-heroicons-hand-raised-solid",class:"h-3.5 w-3.5 text-indigo-500 dark:text-indigo-400"}),e("span",bn,s(t(a)("views.relationship.closer")),1)]),e("div",hn,[e("div",yn,[e("span",_n,s(d.value?.name),1),e("span",kn,s(R.members.find(H=>H.memberId===d.value?.memberId)?.closeCount??0),1)]),e("div",wn,[e("span",$n,s(x.value?.name),1),e("span",Cn,s(R.members.find(H=>H.memberId===x.value?.memberId)?.closeCount??0),1)])]),e("div",Sn,[e("div",{class:"bg-indigo-500 dark:bg-indigo-400",style:ae({width:g(L(R))+"%"})},null,4),e("div",{class:"bg-pink-500 dark:bg-pink-400",style:ae({width:g(100-L(R))+"%"})},null,4)])]),e("div",Pn,[e("div",In,[y(k,{name:"i-heroicons-clock-solid",class:"h-3.5 w-3.5 text-amber-500 dark:text-amber-400"}),e("span",Mn,s(t(a)("views.relationship.responseLatency.title")),1)]),e("div",Tn,[e("div",qn,[e("span",An,s(d.value?.name),1),e("span",jn,s(re(R.month,d.value?.memberId)),1)]),e("div",Rn,[e("span",Vn,s(x.value?.name),1),e("span",Ln,s(re(R.month,x.value?.memberId)),1)])])]),e("div",Dn,[e("div",zn,[y(k,{name:"i-heroicons-arrow-path-solid",class:"h-3.5 w-3.5 text-purple-500 dark:text-purple-400"}),e("span",On,s(t(a)("views.relationship.perseverance.title")),1)]),e("div",Bn,[e("div",Nn,[e("span",Un,s(d.value?.name),1),e("span",Fn,s(ce(R.month,d.value?.memberId)),1)]),e("div",En,[e("span",Wn,s(x.value?.name),1),e("span",Kn,s(ce(R.month,x.value?.memberId)),1)])])])])):(i(),u("div",Hn,s(t(a)("views.relationship.noActivity")),1))])])]))),128))])])]),_:1},8,["title"])],64)):M("",!0)]))],2)}}}),Jn={class:"flex h-full flex-col"},Yn={class:"flex-1 min-h-0 overflow-auto"},Qn=Y({__name:"ViewTab",props:{sessionId:{},sessionName:{},timeFilter:{}},setup(C){const{t:a}=X(),r=C,_=T(()=>[{id:"relationship",label:a("analysis.subTabs.view.relationship"),icon:"i-heroicons-heart"},{id:"type-analysis",label:a("analysis.subTabs.view.typeAnalysis"),icon:"i-heroicons-chart-pie"},{id:"time-analysis",label:a("analysis.subTabs.view.timeAnalysis"),icon:"i-heroicons-clock"},{id:"topic",label:a("analysis.subTabs.view.topic"),icon:"i-heroicons-cloud"},{id:"language-preference",label:a("analysis.subTabs.view.languagePreference"),icon:"i-heroicons-language"}]),o=O("relationship"),p=O(null),S=T(()=>({...r.timeFilter,memberId:p.value}));return(w,c)=>(i(),u("div",Jn,[y(t(Fe),{modelValue:o.value,"onUpdate:modelValue":c[1]||(c[1]=P=>o.value=P),items:_.value,"persist-key":"privateViewTab"},{right:E(()=>[o.value==="type-analysis"||o.value==="time-analysis"?(i(),D(Ze,{key:0,modelValue:p.value,"onUpdate:modelValue":c[0]||(c[0]=P=>p.value=P),"session-id":r.sessionId},null,8,["modelValue","session-id"])):M("",!0)]),_:1},8,["modelValue","items"]),e("div",Yn,[y(Se,{name:"fade",mode:"out-in"},{default:E(()=>[o.value==="type-analysis"?(i(),D(Xe,{key:0,"session-id":r.sessionId,"session-name":r.sessionName,"time-filter":S.value},null,8,["session-id","session-name","time-filter"])):o.value==="time-analysis"?(i(),D(et,{key:1,"session-id":r.sessionId,"session-name":r.sessionName,"time-filter":S.value},null,8,["session-id","session-name","time-filter"])):o.value==="relationship"?(i(),D(Gn,{key:2,"session-id":r.sessionId,"time-filter":r.timeFilter},null,8,["session-id","time-filter"])):o.value==="topic"?(i(),D(t(tt),{key:3,"session-id":r.sessionId,"time-filter":r.timeFilter,"show-shared-topics":!0},null,8,["session-id","time-filter"])):o.value==="language-preference"?(i(),D(t(Ws),{key:4,"session-id":r.sessionId,"time-filter":r.timeFilter},null,8,["session-id","time-filter"])):M("",!0)]),_:1})])]))}}),Zn=Ie(Qn,[["__scopeId","data-v-9043b751"]]),Xn={class:"main-content max-w-4xl p-6"},ei={key:0,class:"mb-6"},ti={class:"flex items-center gap-3"},si={class:"text-xl font-bold text-gray-900 dark:text-white"},ai={class:"text-sm text-gray-500 dark:text-gray-400"},ni={key:1,class:"flex h-60 items-center justify-center"},ii={key:2,class:"mb-4 flex items-center justify-end gap-2"},li={class:"text-xs text-gray-500 dark:text-gray-400"},oi={key:3,class:"grid gap-4 md:grid-cols-2"},ri={class:"absolute right-4 top-4"},ci={class:"flex items-start gap-4"},di=["src","alt"],ui={key:1,class:"flex h-14 w-14 shrink-0 items-center justify-center rounded-full bg-linear-to-br from-pink-400 to-pink-600 text-lg font-medium text-white"},mi={class:"flex-1 min-w-0"},gi={class:"text-lg font-semibold text-gray-900 dark:text-white truncate"},pi={class:"text-sm text-gray-500 dark:text-gray-400"},xi={class:"mt-4 flex items-center gap-4"},vi={class:"flex-1"},fi={class:"flex items-baseline justify-between"},bi={class:"text-sm text-gray-500 dark:text-gray-400"},hi={class:"text-lg font-bold text-gray-900 dark:text-white"},yi={class:"mt-2 h-2 w-full overflow-hidden rounded-full bg-gray-100 dark:bg-gray-800"},_i={class:"mt-1 text-xs text-gray-400 dark:text-gray-500"},ki={class:"mt-4 border-t border-gray-100 pt-4 dark:border-gray-800"},wi={class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"},$i={class:"relative"},Ci={key:0,class:"absolute right-3 top-1/2 -translate-y-1/2"},Si={key:4,class:"flex h-60 flex-col items-center justify-center"},Pi={class:"text-gray-500 dark:text-gray-400"},Ii={key:5,class:"mt-6 flex items-start gap-3 rounded-xl bg-blue-50 p-4 dark:bg-blue-900/20"},Mi={class:"text-sm font-medium text-blue-800 dark:text-blue-200"},Ti={class:"mt-1 text-sm text-blue-700 dark:text-blue-300"},qi={class:"p-6"},Ai={class:"mb-4 flex items-center gap-3"},ji={class:"flex h-10 w-10 items-center justify-center rounded-full bg-amber-100 dark:bg-amber-900/30"},Ri={class:"text-lg font-semibold text-gray-900 dark:text-white"},Vi={class:"mb-2 text-sm text-gray-600 dark:text-gray-400"},Li={class:"mb-6 text-xs text-amber-700 dark:text-amber-300"},Di={class:"flex justify-end gap-2"},zi=Y({__name:"MemberTab",props:{sessionId:{},showHeader:{type:Boolean,default:!0}},setup(C){const{t:a}=X(),r=C,_=O([]),o=O(!1),p=O(null),S=O(new Set),w=O(!1),c=O(!1);function P(l){return l.groupNickname||l.accountName||l.platformId}function z(l){return P(l).slice(0,1)}const q=T(()=>_.value.filter(l=>S.value.has(l.id))),A=T(()=>q.value.length===2),f=T(()=>{if(q.value.length!==2)return null;const[l,h]=q.value;return h.messageCount>l.messageCount||h.messageCount===l.messageCount&&h.id<l.id?{primary:h,secondary:l}:{primary:l,secondary:h}}),I=T(()=>_.value.reduce((l,h)=>l+h.messageCount,0));function d(l){return I.value===0?0:Math.round(l/I.value*100)}async function x(){if(r.sessionId){o.value=!0;try{_.value=await le().getMembers(r.sessionId)}catch(l){console.error("加载成员列表失败:",l)}finally{o.value=!1}}}async function V(l,h){const L=JSON.parse(JSON.stringify(h)),U=JSON.stringify(l.aliases),F=JSON.stringify(L);if(U!==F){p.value=l.id;try{if(await le().updateMemberAliases(r.sessionId,l.id,L)){const Q=_.value.findIndex(N=>N.id===l.id);Q!==-1&&(_.value[Q]={..._.value[Q],aliases:L})}}catch(ee){console.error("保存别名失败:",ee)}finally{p.value=null}}}function $(l){const h=new Set(S.value);h.has(l)?h.delete(l):h.add(l),S.value=h}function m(){A.value&&(w.value=!0)}function g(){S.value=new Set}async function v(){if(f.value){c.value=!0;try{await le().mergeMembers(r.sessionId,f.value.primary.id,f.value.secondary.id)&&(w.value=!1,g(),await x())}catch(l){console.error("合并成员失败:",l)}finally{c.value=!1}}}return Z(()=>r.sessionId,()=>{g(),x()},{immediate:!0}),oe(()=>{x()}),(l,h)=>{const L=te,U=$e,F=Re,ee=Ve,Q=Ce;return i(),u("div",Xn,[r.showHeader?(i(),u("div",ei,[e("div",ti,[e("div",null,[e("h2",si,s(t(a)("members.private.title")),1),e("p",ai,s(t(a)("members.private.description",{count:_.value.length})),1)])])])):M("",!0),y(st,{class:"mb-6","session-id":C.sessionId,members:_.value,"chat-type":"private"},null,8,["session-id","members"]),o.value?(i(),u("div",ni,[y(L,{name:"i-heroicons-arrow-path",class:"h-8 w-8 animate-spin text-pink-500"})])):M("",!0),!o.value&&_.value.length>1?(i(),u("div",ii,[e("span",li,s(t(a)("members.list.mergeSelectedCount",{count:S.value.size})),1),y(U,{icon:"i-heroicons-link",size:"sm",color:"primary",disabled:!A.value,onClick:m},{default:E(()=>[ye(s(t(a)("members.list.mergeSelected")),1)]),_:1},8,["disabled"])])):M("",!0),o.value?M("",!0):(i(),u("div",oi,[(i(!0),u(K,null,G(_.value,N=>(i(),u("div",{key:N.id,class:"relative rounded-xl border border-gray-200 bg-white p-5 shadow-sm dark:border-gray-700 dark:bg-gray-900"},[e("div",ri,[y(F,{"model-value":S.value.has(N.id),onClick:Be(se=>$(N.id),["stop"])},null,8,["model-value","onClick"])]),e("div",ci,[N.avatar?(i(),u("img",{key:0,src:N.avatar,alt:P(N),class:"h-14 w-14 shrink-0 rounded-full object-cover"},null,8,di)):(i(),u("div",ui,s(z(N)),1)),e("div",mi,[e("h3",gi,s(P(N)),1),e("p",pi,"ID: "+s(N.platformId),1)])]),e("div",xi,[e("div",vi,[e("div",fi,[e("span",bi,s(t(a)("members.private.messageCount")),1),e("span",hi,s(N.messageCount.toLocaleString()),1)]),e("div",yi,[e("div",{class:"h-full rounded-full bg-linear-to-r from-pink-400 to-pink-600 transition-all duration-500",style:ae({width:`${d(N.messageCount)}%`})},null,4)]),e("p",_i,s(t(a)("members.private.percentage",{value:d(N.messageCount)})),1)])]),e("div",ki,[e("label",wi,s(t(a)("members.private.customAlias")),1),e("div",$i,[y(ee,{"model-value":N.aliases,placeholder:t(a)("members.private.aliasPlaceholder"),class:"w-full","onUpdate:modelValue":se=>V(N,se)},null,8,["model-value","placeholder","onUpdate:modelValue"]),p.value===N.id?(i(),u("div",Ci,[y(L,{name:"i-heroicons-arrow-path",class:"h-4 w-4 animate-spin text-pink-500"})])):M("",!0)])])]))),128))])),!o.value&&_.value.length===0?(i(),u("div",Si,[y(L,{name:"i-heroicons-user-group",class:"mb-3 h-12 w-12 text-gray-300 dark:text-gray-600"}),e("p",Pi,s(t(a)("members.private.empty")),1)])):M("",!0),_.value.length>0?(i(),u("div",Ii,[y(L,{name:"i-heroicons-information-circle",class:"mt-0.5 h-5 w-5 shrink-0 text-blue-500"}),e("div",null,[e("p",Mi,s(t(a)("members.private.tipTitle")),1),e("p",Ti,s(t(a)("members.private.tipContent")),1)])])):M("",!0),y(Q,{open:w.value,ui:{content:"max-w-md"},"onUpdate:open":h[1]||(h[1]=N=>w.value=N)},{content:E(()=>[e("div",qi,[e("div",Ai,[e("div",ji,[y(L,{name:"i-heroicons-link",class:"h-5 w-5 text-amber-600 dark:text-amber-400"})]),e("h3",Ri,s(t(a)("members.list.mergeModal.title")),1)]),e("p",Vi,s(t(a)("members.list.mergeModal.content",{source:f.value?P(f.value.secondary):"",sourceCount:f.value?f.value.secondary.messageCount.toLocaleString():"0",target:f.value?P(f.value.primary):"",targetCount:f.value?f.value.primary.messageCount.toLocaleString():"0"})),1),e("p",Li,s(t(a)("members.list.mergeModal.hint")),1),e("div",Di,[y(U,{variant:"outline",disabled:c.value,onClick:h[0]||(h[0]=N=>w.value=!1)},{default:E(()=>[ye(s(t(a)("members.list.mergeModal.cancel")),1)]),_:1},8,["disabled"]),y(U,{color:"primary",loading:c.value,onClick:v},{default:E(()=>[ye(s(t(a)("members.list.mergeModal.confirm")),1)]),_:1},8,["loading"])])])]),_:1},8,["open"])])}}}),Oi={class:"flex h-full flex-col bg-white dark:bg-gray-900",style:{"padding-top":"var(--titlebar-area-height)"}},Bi={class:"relative flex-1 overflow-y-auto"},Ni={class:"h-full"},Ui={key:2,class:"flex h-full items-center justify-center"},Fi={class:"text-gray-500"},Ei={class:"flex h-full flex-col overflow-hidden bg-white dark:bg-gray-900"},Wi={class:"flex flex-none items-center justify-between border-b border-gray-200 px-5 py-3 dark:border-gray-700"},Ki={class:"text-lg font-semibold text-gray-900 dark:text-white"},Hi={class:"text-sm text-gray-500 dark:text-gray-400"},Gi={class:"flex-1 overflow-auto"},Ji=Y({__name:"index",setup(C){const a=Ne(()=>Ae(()=>import("./MessageExportModal-B60rvfCh.js"),__vite__mapDeps([0,1,2,3,4,5]))),{t:r}=X(),_=Le(),o=De(),p=Ee(),S=Pe(),w=We(),{currentSessionId:c}=Ke(p),P=O(!1),z=O(!1),q=O(!1),A=O(!1),f=O(!1),I=O(!1);function d(){S.openChatRecordDrawer({})}const x=[{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"}],V=T(()=>w.debugMode?[...x,{id:"debug",labelKey:"analysis.tabs.debug",icon:"i-heroicons-bug-ant"}]:x),{activeTab:$,isLoading:m,isInitialLoad:g,session:v,memberActivity:l,hourlyActivity:h,dailyActivity:L,messageTypes:U,timeRangeValue:F,fullTimeRange:ee,timeFilter:Q,selectedYearForOverview:N,initialTimeState:se,loadAnalysisData:be}=at({route:_,router:o,currentSessionId:c,selectSession:p.selectSession,defaultTab:w.defaultSessionTab,validTabIds:V.value.map(J=>J.id)}),he=T(()=>l.value.reduce((J,n)=>J+n.messageCount,0)),re=T(()=>l.value.filter(J=>J.messageCount>0).length),ce=T(()=>{if(!v.value||l.value.length===0)return null;if(v.value.ownerId){const n=l.value.find(b=>b.platformId!==v.value?.ownerId);if(n?.avatar)return n.avatar}const J=l.value.find(n=>n.name===v.value?.name);return J?.avatar?J.avatar:(l.value.length,null)});return(J,n)=>{const b=$e,j=Ce;return i(),u("div",Oi,[t(g)?(i(),D(me,{key:0,variant:"page",text:t(r)("analysis.privateChat.loading")},null,8,["text"])):t(v)?(i(),u(K,{key:1},[y(nt,{"active-tab":t($),"onUpdate:activeTab":n[0]||(n[0]=k=>ke($)?$.value=k:null),"time-range-value":t(F),"onUpdate:timeRangeValue":n[1]||(n[1]=k=>ke(F)?F.value=k:null),title:t(v).name,avatar:ce.value,icon:"i-heroicons-user","icon-class":"bg-pink-600 text-white dark:bg-pink-500 dark:text-white",tabs:V.value,"current-session-id":t(c),"initial-time-state":t(se),onOpenIncrementalImport:n[2]||(n[2]=k=>A.value=!0),onOpenMemberManagement:n[3]||(n[3]=k=>I.value=!0),onOpenChatRecord:d,"onUpdate:fullRange":n[4]||(n[4]=k=>ee.value=k)},null,8,["active-tab","time-range-value","title","avatar","tabs","current-session-id","initial-time-state"]),e("div",Bi,[t(m)?(i(),D(me,{key:0,variant:"overlay",text:t(r)("common.loading")},null,8,["text"])):M("",!0),e("div",Ni,[y(Se,{name:"tab-slide",mode:"out-in"},{default:E(()=>[t($)==="overview"?(i(),D(Ys,{key:"overview-"+t(c),session:t(v),"member-activity":t(l),"message-types":t(U),"hourly-activity":t(h),"daily-activity":t(L),"time-range":t(ee),"selected-year":t(N),"filtered-message-count":he.value,"filtered-member-count":re.value,"time-filter":t(Q)},null,8,["session","member-activity","message-types","hourly-activity","daily-activity","time-range","selected-year","filtered-message-count","filtered-member-count","time-filter"])):t($)==="view"?(i(),D(Zn,{key:"view-"+t(c),"session-id":t(c),"session-name":t(v).name,"time-filter":t(Q)},null,8,["session-id","session-name","time-filter"])):t($)==="ai-chat"?(i(),D(t(dt),{key:"ai-chat-"+t(c),"session-id":t(c),"session-name":t(v).name,"chat-type":"private"},null,8,["session-id","session-name"])):t($)==="memory"?(i(),D(ut,{key:"memory-"+t(c),"session-id":t(c),"session-name":t(v).name},null,8,["session-id","session-name"])):t($)==="lab"?(i(),D(mt,{key:"lab-"+t(c),"session-id":t(c),"session-name":t(v).name,"time-filter":t(Q),"chat-type":"private",mode:"sql-only"},null,8,["session-id","session-name","time-filter"])):t($)==="debug"?(i(),D(t(gt),{key:"debug-"+t(c),"session-id":t(c)},null,8,["session-id"])):M("",!0)]),_:1})])]),y(it,{onOpenIncrementalImport:n[5]||(n[5]=k=>A.value=!0),onOpenSessionIndex:n[6]||(n[6]=k=>P.value=!0),onOpenSemanticIndex:n[7]||(n[7]=k=>z.value=!0),onOpenMemberManagement:n[8]||(n[8]=k=>I.value=!0),onOpenChatRecord:d,onOpenMessageExport:n[9]||(n[9]=k=>f.value=!0)}),t(w).debugMode?(i(),D(pt,{key:0})):M("",!0)],64)):(i(),u("div",Ui,[e("p",Fi,s(t(r)("analysis.privateChat.loadError")),1)])),t(c)&&t(v)&&t(v).messageCount>0?(i(),D(lt,{key:3,modelValue:P.value,"onUpdate:modelValue":n[10]||(n[10]=k=>P.value=k),"session-id":t(c),"message-count":t(v).messageCount},null,8,["modelValue","session-id","message-count"])):M("",!0),t(c)&&t(v)?(i(),D(ot,{key:4,modelValue:z.value,"onUpdate:modelValue":n[11]||(n[11]=k=>z.value=k),"session-id":t(c),"message-count":t(v).messageCount},null,8,["modelValue","session-id","message-count"])):M("",!0),t(c)&&t(v)&&!P.value?(i(),D(rt,{key:5,modelValue:q.value,"onUpdate:modelValue":n[12]||(n[12]=k=>q.value=k),"session-id":t(c),"chat-type":"private","auto-check":""},null,8,["modelValue","session-id"])):M("",!0),t(c)&&t(v)?(i(),D(ct,{key:6,modelValue:A.value,"onUpdate:modelValue":n[13]||(n[13]=k=>A.value=k),"session-id":t(c),"session-name":t(v).name,onImported:n[14]||(n[14]=()=>{t(be)(),t(p).loadSessions()})},null,8,["modelValue","session-id","session-name"])):M("",!0),t(c)?(i(),D(t(a),{key:7,modelValue:f.value,"onUpdate:modelValue":n[15]||(n[15]=k=>f.value=k)},null,8,["modelValue"])):M("",!0),t(c)?(i(),D(j,{key:8,open:I.value,"onUpdate:open":n[17]||(n[17]=k=>I.value=k),ui:{content:"max-w-6xl h-[85vh]"}},{content:E(()=>[e("div",Ei,[e("div",Wi,[e("div",null,[e("h2",Ki,s(t(r)("analysis.tooltip.memberManagement")),1),e("p",Hi,s(t(r)("members.private.description",{count:t(v)?.memberCount??0})),1)]),y(b,{variant:"ghost",icon:"i-heroicons-x-mark",size:"sm",onClick:n[16]||(n[16]=k=>I.value=!1)})]),e("div",Gi,[y(zi,{"session-id":t(c),"show-header":!1},null,8,["session-id"])])])]),_:1},8,["open"])):M("",!0)])}}}),il=Ie(Ji,[["__scopeId","data-v-65159e91"]]);export{il as default};
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/EChartWordcloud-B_YisOW5.js","assets/vendor-echarts-wordcloud-B1kQMklB.js","assets/vendor-echarts-CITQeskI.js","assets/vendor-zrender-DFl4U2Oe.js","assets/vendor-reka-ui-mMvma1EP.js","assets/MessageExportModal-B60rvfCh.js","assets/vendor-nuxt-ui-Zy8txNdC.js","assets/index-B3mDjury.js","assets/vendor-snapdom-XnBoh1gd.js","assets/index-YmzTgkb2.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{_ as He}from"./vendor-snapdom-XnBoh1gd.js";import{k as tt,g as ge,b as ce,l as at,a as Me,j as Be,c as st,e as We,_ as ot,n as nt,D as lt,u as it,d as rt}from"./vendor-nuxt-ui-Zy8txNdC.js";import{b as I,d as fe,F as Te,p as B,G as o,P as k,Q as J,a5 as t,Z as W,a3 as ee,T as c,O as Oe,J as ct,H as C,a0 as pe,h as $,w as O,m as ut,u as e,K as M,L as y,U as D,R as K,bI as je,a9 as Ee,bJ as dt,au as Pe,E as mt,bF as qe,n as Ce,bD as Ve,i as Ne}from"./vendor-reka-ui-mMvma1EP.js";import{p as vt,u as te,k as Re,T as ie,j as Z,q as ht,r as Ge,_ as Le,t as pt,e as gt,b as ft,s as yt}from"./index-B3mDjury.js";import{_ as ae,a as E,g as Ye,b as xt,c as oe,d as le,e as bt,f as Se,h as kt,i as Ae,j as _t,u as wt,k as $t,l as Ct,m as It,n as St,o as Mt,p as Tt,q as Vt,r as Rt,s as Lt,t as Dt,v as Nt,w as At,x as zt,y as Ut,z as Ft,A as Ht,C as Bt,B as Wt,D as Ot,E as jt,F as Et}from"./DebugToolsPanel.vue_vue_type_script_setup_true_lang-NL1sTF6i.js";import"./vendor-echarts-wordcloud-B1kQMklB.js";import{u as Ke,i as Pt,j as Je,k as qt,m as Qe,n as Ze,o as Gt,p as Yt,q as Kt}from"./vendor-echarts-CITQeskI.js";import{a as ze}from"./index-B9I-Y3fR.js";import"./vendor-zrender-DFl4U2Oe.js";function Jt(u,s={}){const{threshold:a=300,containerSelector:n=".overflow-y-auto",scrollLockDuration:m=800}=s,l=I(u[0]?.id||"");let d=!1;const p=I(null);let h=null;function b(){if(d)return;const r=[];u.forEach(f=>{const w=document.getElementById(f.id);if(w){const g=w.getBoundingClientRect();r.push({id:f.id,top:Math.round(g.top)})}});let i=0;for(let f=0;f<r.length;f++){if(r[f].top>a){i=Math.max(0,f-1);break}i=f}l.value=u[i]?.id||""}function x(r){const i=document.getElementById(r);i&&(l.value=r,d=!0,i.scrollIntoView({behavior:"smooth",block:"start"}),setTimeout(()=>{d=!1,b()},m))}return fe(()=>{h=p.value?.closest(n)||null,h&&(h.addEventListener("scroll",b,{passive:!0}),b())}),Te(()=>{h&&h.removeEventListener("scroll",b)}),{contentRef:p,activeAnchor:l,scrollToAnchor:x,updateActiveAnchor:b}}const Qt={class:"sticky top-24 space-y-6"},Zt={class:"border-l border-gray-200 dark:border-gray-800"},Xt=["onClick"],ea=B({__name:"PageAnchorsNav",props:{anchors:{},activeAnchor:{},width:{default:"w-44"},hideOnMobile:{type:Boolean,default:!0}},emits:["click"],setup(u,{emit:s}){const a=s;function n(m){a("click",m)}return(m,l)=>(o(),k("div",{class:J([u.width,"shrink-0",u.hideOnMobile?"hidden lg:block":""])},[t("div",Qt,[t("nav",null,[t("div",Zt,[(o(!0),k(W,null,ee(u.anchors,d=>(o(),k("button",{key:d.id,class:J(["-ml-px block border-l-2 py-1.5 pl-4 text-left text-sm transition-colors",[u.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:p=>n(d.id)},c(d.label),11,Xt))),128))])]),Oe(m.$slots,"default")])],2))}}),re=B({__name:"TopNSelect",props:{modelValue:{default:10},modelModifiers:{}},emits:["update:modelValue"],setup(u){const s=ct(u,"modelValue"),a=[{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(n,m)=>{const l=tt;return o(),C(l,{modelValue:s.value,"onUpdate:modelValue":m[0]||(m[0]=d=>s.value=d),items:a,"value-key":"value",class:"w-25"},null,8,["modelValue"])}}}),de=B({__name:"ScrollableChart",props:{contentHeight:{},maxHeightVh:{default:60},paddingClass:{default:"px-3 py-2"}},setup(u){const s=u,a=$(()=>typeof window>"u"?500:Math.round(window.innerHeight*s.maxHeightVh/100)),n=$(()=>s.contentHeight>a.value),m=$(()=>({maxHeight:`${s.maxHeightVh}vh`,overflowY:n.value?"auto":"hidden"}));return(l,d)=>(o(),k("div",{class:J(u.paddingClass),style:pe(m.value)},[Oe(l.$slots,"default")],6))}}),ta=B({__name:"EChartGraph",props:{data:{},height:{default:400},layout:{default:"circular"},directed:{type:Boolean,default:!1}},setup(u,{expose:s}){Ke([Pt,Je,qt,Qe]);const a=u,n=$(()=>typeof a.height=="number"?`${a.height}px`:a.height),m=vt(),l=I(null);let d=null;const p=["#ee4567","#5470c6","#91cc75","#fac858","#ee6666","#73c0de","#9a60b4","#fc8452","#3ba272","#ea7ccc","#6e7074","#546570"],h=$(()=>{const v=new Set;return a.data.nodes.filter(_=>v.has(_.name)?!1:(v.add(_.name),!0))}),b=$(()=>{const v=new Map;return h.value.forEach((_,S)=>{v.set(_.name,p[S%p.length])}),v});function x(v,_){return _<=0?1:1+v/_*5}const r=$(()=>{const v=a.data.maxLinkValue||Math.max(...a.data.links.map(_=>_.value||1),1);return{tooltip:{trigger:"item",backgroundColor:m.value?"rgba(30, 30, 30, 0.9)":"rgba(255, 255, 255, 0.95)",borderColor:m.value?"rgba(255, 255, 255, 0.1)":"rgba(0, 0, 0, 0.1)",textStyle:{color:m.value?"#e5e7eb":"#374151"},formatter:_=>_.dataType==="node"?`<b>${_.data.name}</b><br/>消息数: ${_.data.value||0}`:_.dataType==="edge"?`${_.data.source} → ${_.data.target}<br/>艾特次数: ${_.data.value||0}`:""},animationDuration:1e3,animationDurationUpdate:500,animationEasingUpdate:"quinticInOut",series:[{type:"graph",layout:a.layout,circular:a.layout==="circular"?{rotateLabel:!0}:void 0,force:a.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:m.value?"#e5e7eb":"#374151",fontSize:11,fontWeight:500},edgeSymbol:a.directed?["none","arrow"]:["none","none"],edgeSymbolSize:a.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:h.value.map(_=>{const S=b.value.get(_.name)||p[0];return{name:_.name,value:_.value,symbolSize:_.symbolSize||30,label:{show:a.layout==="circular"?!0:(_.symbolSize||30)>30},itemStyle:{color:S,borderColor:"#fff",borderWidth:2,shadowBlur:5,shadowColor:`${S}66`}}}),links:a.data.links.filter(_=>b.value.has(_.source)&&b.value.has(_.target)).map(_=>{const S=b.value.get(_.source)||p[0];return{source:_.source,target:_.target,value:_.value,lineStyle:{color:S,width:x(_.value||1,v)}}})}]}});function i(){l.value&&(d=Ze(l.value,m.value?"dark":void 0,{renderer:"canvas"}),d.setOption({backgroundColor:"transparent",...r.value}))}function f(){d&&d.setOption({backgroundColor:"transparent",...r.value},{notMerge:!0})}function w(){d?.resize()}function g(){d&&d.dispatchAction({type:"restore"})}return s({resetView:g}),O([()=>a.data,()=>a.layout,()=>a.directed,m],()=>{d?f():i()},{deep:!0}),fe(()=>{i(),window.addEventListener("resize",w)}),Te(()=>{window.removeEventListener("resize",w),d?.dispose()}),(v,_)=>(o(),k("div",{ref_key:"chartRef",ref:l,style:pe({height:n.value,width:"100%"})},null,4))}}),Xe=Symbol("ranking-width-mode"),et={standard:{contentClass:"max-w-3xl",gridLeft:110,labelMaxLength:8},wide:{contentClass:"max-w-5xl",gridLeft:180,labelMaxLength:16},full:{contentClass:"max-w-none",gridLeft:260,labelMaxLength:28}};function me(){const u=ut(Xe,null);return $(()=>et[u?.value??"standard"])}function ve(u,s){return u.length<=s?u:`${u.slice(0,s)}…`}const aa={class:"px-3 py-2"},be=B({__name:"EChartRank",props:{members:{},title:{},description:{},topN:{default:10},unit:{default:"条"},height:{default:"auto"},maxHeightVh:{default:60},bare:{type:Boolean,default:!1}},setup(u){const s=u,a=me(),n=$(()=>s.members.slice(0,s.topN)),m=$(()=>{if(s.height!=="auto")return s.height;const p=n.value.length*36;return Math.max(p+30,180)}),l={type:"linear",x:0,y:0,x2:1,y2:0,colorStops:[{offset:0,color:"#ee4567"},{offset:1,color:"#f7758c"}]},d=$(()=>{const p=[...n.value].reverse(),h=p.map(i=>ve(i.name,a.value.labelMaxLength)),b=p.map(i=>i.value),x=Math.max(...b,1),r=p.map(i=>({value:i.value,itemStyle:{color:l,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:i=>{const f=i[0];if(!f)return"";const w=n.value.length-1-f.dataIndex,g=n.value[w];return`
|
|
3
|
+
<div style="padding: 4px 8px;">
|
|
4
|
+
<div style="font-weight: bold; margin-bottom: 4px;">${g.name}</div>
|
|
5
|
+
<div>${g.value} ${s.unit} (${g.percentage}%)</div>
|
|
6
|
+
</div>
|
|
7
|
+
`}},grid:{left:a.value.gridLeft,right:70,top:15,bottom:15,containLabel:!1},xAxis:{type:"value",max:x*1.1,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{show:!1},splitLine:{show:!1}},yAxis:{type:"category",data:h,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{fontSize:12,color:"#4b5563",margin:12,formatter:(i,f)=>{const g=n.value.length-1-f+1;return`${g===1?"🥇":g===2?"🥈":g===3?"🥉":`${g}.`} ${i}`}}},series:[{type:"bar",data:r,barWidth:18,barCategoryGap:"30%",label:{show:!0,position:"right",distance:8,formatter:i=>{const f=n.value.length-1-i.dataIndex;return`${n.value[f].value} ${s.unit}`},fontSize:11,fontWeight:500,color:"#6b7280"},emphasis:{itemStyle:{shadowBlur:6,shadowColor:"rgba(238, 69, 103, 0.3)"}}}]}});return(p,h)=>u.bare?(o(),C(e(de),{key:0,"content-height":m.value,"max-height-vh":u.maxHeightVh},{default:M(()=>[y(ae,{option:d.value,height:m.value},null,8,["option","height"])]),_:1},8,["content-height","max-height-vh"])):(o(),C(e(E),{key:1,title:u.title,description:u.description,scrollable:"","max-height-vh":u.maxHeightVh},{default:M(()=>[t("div",aa,[y(ae,{option:d.value,height:m.value},null,8,["option","height"])])]),_:1},8,["title","description","max-height-vh"]))}}),sa={class:"divide-y divide-gray-100 dark:divide-gray-800"},oa={key:0,class:"flex h-10 w-10 shrink-0 items-center justify-center rounded-full bg-linear-to-br from-pink-100 to-rose-100 text-sm font-medium text-pink-600 dark:from-pink-900/30 dark:to-rose-900/30 dark:text-pink-400"},na={class:"w-32 shrink-0"},la={class:"wrap-break-word font-medium text-gray-900 dark:text-white"},ia={class:"flex flex-1 items-center"},ra={class:"h-2 w-full overflow-hidden rounded-full bg-gray-100 dark:bg-gray-800"},ca={class:"flex shrink-0 items-baseline gap-2 whitespace-nowrap"},ua={class:"text-lg font-bold text-gray-900 dark:text-white"},da={class:"text-sm text-gray-500"},Ue=B({__name:"RankList",props:{members:{},showAvatar:{type:Boolean,default:!1},rankLimit:{default:0},unit:{}},setup(u){const{t:s}=te(),a=u,n=$(()=>a.unit||s("views.charts.rankList.unit")),m=$(()=>a.rankLimit>0?a.members.slice(0,a.rankLimit):a.members);function l(d){if(m.value.length===0)return 0;const p=m.value[0].value;return p===0?0:Math.round(m.value[d].value/p*100)}return(d,p)=>(o(),k("div",sa,[(o(!0),k(W,null,ee(m.value,(h,b)=>(o(),k("div",{key:h.id,class:"flex items-center gap-3 px-5 py-3 transition-colors hover:bg-gray-50 dark:hover:bg-gray-800/50"},[t("div",{class:J(["flex h-8 w-8 shrink-0 items-center justify-center rounded-full text-sm font-bold",e(Ye)(b)])},c(b+1),3),u.showAvatar?(o(),k("div",oa,c(h.name.slice(0,1)),1)):D("",!0),t("div",na,[t("p",la,c(h.name),1)]),t("div",ia,[t("div",ra,[t("div",{class:J(["h-full rounded-full bg-linear-to-r transition-all",e(xt)(b)]),style:pe({width:`${l(b)}%`})},null,6)])]),t("div",ca,[t("span",ua,c(h.value),1),t("span",da,c(n.value)+" ("+c(h.percentage)+"%)",1)])]))),128))]))}}),ma={class:"flex items-center justify-between border-b border-gray-200 px-5 py-3 dark:border-gray-800"},va={class:"font-semibold text-gray-900 whitespace-nowrap dark:text-white"},ha={key:0,class:"mt-1 text-sm text-gray-500 dark:text-gray-400"},pa={class:"no-capture flex items-center gap-1"},ga={class:"flex w-full items-center justify-between border-b border-gray-200 px-6 py-4 dark:border-gray-700"},fa={class:"flex items-center gap-2"},ya={class:"text-lg font-semibold text-gray-900 whitespace-nowrap dark:text-white"},xa={class:"text-sm text-gray-500"},ba={class:"max-h-[60vh] p-4 overflow-y-auto"},Fe=B({__name:"RankListPro",props:{members:{},title:{},description:{},topN:{default:10},unit:{}},setup(u){const{t:s}=te(),a=u,n=I(!1),m=I(null),l=I(null),d=$(()=>a.members.slice(0,a.topN)),p=$(()=>a.members.length>a.topN);return(h,b)=>{const x=ce,r=ge;return o(),k("div",{ref_key:"cardRef",ref:m,class:"rounded-xl border border-gray-200 bg-white shadow-sm dark:border-gray-800 dark:bg-gray-900"},[t("div",ma,[t("div",null,[t("h3",va,c(u.title),1),u.description?(o(),k("p",ha,c(u.description),1)):D("",!0)]),t("div",pa,[y(ze,{size:"xs",type:"element","target-element":m.value},null,8,["target-element"]),y(r,{open:n.value,"onUpdate:open":b[0]||(b[0]=i=>n.value=i),ui:{content:"md:w-full max-w-3xl"}},{content:M(()=>[t("div",{ref_key:"modalBodyRef",ref:l,class:"section-content flex flex-col"},[t("div",ga,[t("div",fa,[t("h3",ya,c(u.title),1),t("span",xa," ("+c(e(s)("views.charts.rankListPro.memberCount",{count:u.members.length}))+") ",1)]),y(ze,{size:"xs",type:"element","target-element":l.value},null,8,["target-element"])]),t("div",ba,[y(Ue,{members:u.members,unit:u.unit},null,8,["members","unit"])])],512)]),default:M(()=>[p.value?(o(),C(x,{key:0,icon:"i-heroicons-list-bullet",variant:"ghost"},{default:M(()=>[K(c(e(s)("views.charts.rankListPro.fullRanking")),1)]),_:1})):D("",!0)]),_:1},8,["open"])])]),y(Ue,{members:d.value,unit:u.unit},null,8,["members","unit"])],512)}}}),ka={class:"main-content mx-auto max-w-6xl py-6"},_a={class:"mb-4 flex items-center justify-end gap-4"},wa={class:"text-xs text-gray-500 dark:text-gray-400"},$a={key:0,class:"grid grid-cols-2 gap-6"},Ca={class:"mb-3 text-center"},Ia={class:"text-base font-semibold text-gray-900 dark:text-white"},Sa={class:"flex flex-wrap gap-2"},Ma=["title","onClick"],Ta={class:"text-xs opacity-50"},Va={key:1,class:"grid grid-cols-2 gap-6"},Ra={class:"mb-3 text-center"},La={class:"text-base font-semibold text-gray-900 dark:text-white"},Da={class:"relative w-full",style:{"aspect-ratio":"4 / 3"}},Na={class:"mt-4 text-center text-xs text-gray-500 dark:text-gray-400"},Aa=B({__name:"CatchphraseTab",props:{sessionId:{},timeFilter:{}},setup(u){const s=je(()=>He(()=>import("./EChartWordcloud-B_YisOW5.js"),__vite__mapDeps([0,1,2,3,4]))),{t:a}=te(),n=Re(),m=u,l=I(null),d=I(!1),p=I("list"),h=I(30),b=$(()=>[{label:a("quotes.catchphrase.viewMode.list"),value:"list"},{label:a("quotes.catchphrase.viewMode.wordcloud"),value:"wordcloud"}]),x=[{label:"10",value:10},{label:"30",value:30},{label:"50",value:50},{label:"100",value:100}],r=$(()=>l.value&&l.value.members.length>0),i=$(()=>{if(!l.value)return[];const T=h.value;return console.log("[CatchphraseTab] displayMembers recompute, topN:",T,"type:",typeof T),l.value.members.map(z=>{const P=z.catchphrases.slice(0,T);return console.log("[CatchphraseTab]",z.name,"total:",z.catchphrases.length,"display:",P.length),{...z,catchphrases:P}})}),f=$(()=>i.value.map(T=>({name:T.name,data:{words:T.catchphrases.map(z=>({word:z.content,count:z.count}))}}))),w=[{bg:"bg-amber-50 dark:bg-amber-900/20",text:"text-amber-700 dark:text-amber-400",badge:"bg-amber-100 dark:bg-amber-800/40 text-amber-600 dark:text-amber-300"},{bg:"bg-slate-50 dark:bg-slate-800/40",text:"text-slate-600 dark:text-slate-300",badge:"bg-slate-100 dark:bg-slate-700/60 text-slate-500 dark:text-slate-400"},{bg:"bg-orange-50 dark:bg-orange-900/15",text:"text-orange-600 dark:text-orange-400",badge:"bg-orange-100 dark:bg-orange-800/30 text-orange-500 dark:text-orange-300"}];function g(T){return T<w.length?w[T]:{bg:"bg-gray-50 dark:bg-gray-800/30",text:"text-gray-600 dark:text-gray-400",badge:"bg-gray-100 dark:bg-gray-700/40 text-gray-500 dark:text-gray-400"}}function v(T,z=20){return T.length<=z?T:T.slice(0,z)+"..."}async function _(){if(m.sessionId){d.value=!0;try{l.value=await Z().getCatchphraseAnalysis(m.sessionId,m.timeFilter),console.log("[CatchphraseTab] API result: members:",l.value?.members.length,"per-member catchphrases:",l.value?.members.map(T=>({name:T.name,count:T.catchphrases.length})))}catch(T){console.error("Failed to load catchphrase analysis:",T)}finally{d.value=!1}}}function S(T){n.openChatRecordDrawer({keywords:[T]})}return O(h,(T,z)=>{console.log("[CatchphraseTab] topN changed:",z,"->",T,"type:",typeof T)}),O(()=>[m.sessionId,m.timeFilter],()=>{_()},{immediate:!0,deep:!0}),(T,z)=>(o(),k("div",ka,[d.value?(o(),C(e(oe),{key:0,text:e(a)("quotes.catchphrase.loading")},null,8,["text"])):r.value?(o(),k(W,{key:2},[t("div",_a,[t("span",wa,c(e(a)("quotes.catchphrase.topN")),1),y(e(ie),{modelValue:h.value,"onUpdate:modelValue":z[0]||(z[0]=P=>h.value=P),size:"xs",items:x},null,8,["modelValue"]),z[2]||(z[2]=t("div",{class:"h-4 w-px bg-gray-200 dark:bg-gray-700"},null,-1)),y(e(ie),{modelValue:p.value,"onUpdate:modelValue":z[1]||(z[1]=P=>p.value=P),size:"xs",items:b.value},null,8,["modelValue","items"])]),p.value==="list"?(o(),k("div",$a,[(o(!0),k(W,null,ee(i.value,P=>(o(),k("div",{key:P.memberId},[t("div",Ca,[t("span",Ia,c(P.name),1)]),t("div",Sa,[(o(!0),k(W,null,ee(P.catchphrases,(V,N)=>(o(),k("div",{key:N,class:J(["inline-flex cursor-pointer items-center gap-1.5 rounded-full px-3 py-1.5 transition-opacity hover:opacity-75",g(N).bg]),title:V.content,onClick:U=>S(V.content)},[N<3?(o(),k("span",{key:0,class:J(["flex h-4 w-4 shrink-0 items-center justify-center rounded-full text-[10px] font-bold",g(N).badge])},c(N+1),3)):D("",!0),t("span",{class:J(["text-sm font-medium",g(N).text])},c(v(V.content)),3),t("span",Ta,c(e(a)("quotes.catchphrase.times",{count:V.count})),1)],10,Ma))),128))])]))),128))])):(o(),k("div",Va,[(o(!0),k(W,null,ee(f.value,P=>(o(),k("div",{key:P.name},[t("div",Ra,[t("span",La,c(P.name),1)]),t("div",Da,[P.data.words.length===0?(o(),C(e(le),{key:0,text:e(a)("quotes.catchphrase.empty.title"),class:"h-full"},null,8,["text"])):(o(),C(e(s),{key:1,data:P.data,height:"100%","max-words":h.value,"color-scheme":"default","size-scale":1,loading:d.value,onWordClick:S},null,8,["data","max-words","loading"]))])]))),128))])),t("p",Na,c(e(a)("quotes.catchphrase.stats.clickHint")),1)],64)):(o(),C(e(le),{key:1,text:e(a)("quotes.catchphrase.empty.title")},null,8,["text"]))]))}}),za={class:"main-content mx-auto max-w-3xl p-6"},Ua={class:"flex items-center gap-3"},Fa={class:"shrink-0 text-lg font-bold text-pink-600"},Ha={class:"flex flex-1 items-center gap-1 overflow-hidden text-sm"},Ba={class:"shrink-0 font-medium text-gray-900 dark:text-white whitespace-nowrap"},Wa=["title"],Oa={class:"flex shrink-0 items-center gap-2 text-xs text-gray-500"},ja=B({__name:"HotRepeatTab",props:{sessionId:{},timeFilter:{}},setup(u){const{t:s}=te(),a=u,n=Re(),m=I(null),l=I(!1);async function d(){if(a.sessionId){l.value=!0;try{m.value=await Z().getRepeatAnalysis(a.sessionId,a.timeFilter)}catch(b){console.error("Failed to load repeat analysis:",b)}finally{l.value=!1}}}function p(b,x=30){return b.length<=x?b:b.slice(0,x)+"..."}function h(b){n.openChatRecordDrawer({scrollToMessageId:b.firstMessageId,highlightKeywords:[b.content]})}return O(()=>[a.sessionId,a.timeFilter],()=>{d()},{immediate:!0,deep:!0}),(b,x)=>{const r=ce;return o(),k("div",za,[l.value?(o(),C(e(oe),{key:0,text:e(s)("quotes.hotRepeat.loading")},null,8,["text"])):m.value&&m.value.hotContents.length>0?(o(),C(e(bt),{key:1,items:m.value.hotContents,title:e(s)("quotes.hotRepeat.title"),description:e(s)("quotes.hotRepeat.description"),"top-n":50,"count-template":e(s)("quotes.hotRepeat.countTemplate")},{item:M(({item:i,index:f})=>[t("div",Ua,[t("span",{class:J(["flex h-6 w-6 shrink-0 items-center justify-center rounded-full text-xs font-bold",e(Ye)(f)])},c(f+1),3),t("span",Fa,c(e(s)("quotes.hotRepeat.people",{count:i.maxChainLength})),1),t("div",Ha,[t("span",Ba,c(i.originatorName)+c(e(s)("quotes.hotRepeat.colon")),1),t("span",{class:"truncate text-gray-600 dark:text-gray-400",title:i.content},c(p(i.content)),9,Wa)]),t("div",Oa,[t("span",null,c(e(s)("quotes.hotRepeat.times",{count:i.count})),1),x[0]||(x[0]=t("span",{class:"text-gray-300 dark:text-gray-600"},"|",-1)),t("span",null,c(e(Se)(i.lastTs)),1),y(r,{icon:"i-heroicons-chat-bubble-left-right",color:"neutral",variant:"ghost",size:"xs",title:e(s)("quotes.hotRepeat.viewChat"),onClick:Ee(w=>h(i),["stop"])},null,8,["title","onClick"])])])]),_:1},8,["items","title","description","count-template"])):(o(),C(e(E),{key:2,title:e(s)("quotes.hotRepeat.title")},{default:M(()=>[y(e(le),{text:e(s)("quotes.hotRepeat.empty")},null,8,["text"])]),_:1},8,["title"]))])}}}),Ea={class:"main-content mx-auto max-w-[920px] space-y-6 p-6"},Pa={class:"grid grid-cols-1 gap-6 lg:grid-cols-2"},qa={class:"p-5"},Ga={class:"p-5"},Ya=B({__name:"OverviewTab",props:{session:{},memberActivity:{},topMembers:{},bottomMembers:{},messageTypes:{},hourlyActivity:{},dailyActivity:{},timeRange:{},selectedYear:{},filteredMessageCount:{},filteredMemberCount:{},timeFilter:{}},setup(u){const{t:s}=te(),a=u,{dailyChartData:n}=wt(()=>a.dailyActivity),m=$(()=>({labels:a.messageTypes.map(d=>$t(d.type,s)),values:a.messageTypes.map(d=>d.count)})),l=$(()=>{const d=[...a.memberActivity].sort((r,i)=>i.messageCount-r.messageCount),p=d.slice(0,10),h=d.slice(10).reduce((r,i)=>r+i.messageCount,0),b=p.map(r=>r.name),x=p.map(r=>r.messageCount);return h>0&&(b.push(s("analysis.overview.others")),x.push(h)),{labels:b,values:x}});return(d,p)=>(o(),k("div",Ea,[y(kt,{session:u.session,"daily-activity":u.dailyActivity,"message-types":u.messageTypes,"hourly-activity":u.hourlyActivity,"time-range":u.timeRange,"selected-year":u.selectedYear,"filtered-message-count":u.filteredMessageCount,"time-filter":u.timeFilter},null,8,["session","daily-activity","message-types","hourly-activity","time-range","selected-year","filtered-message-count","time-filter"]),t("div",Pa,[y(e(E),{title:e(s)("analysis.overview.messageTypeDistribution"),"show-divider":!1},{default:M(()=>[t("div",qa,[y(e(Ae),{data:m.value,height:280},null,8,["data"])])]),_:1},8,["title"]),y(e(E),{title:e(s)("analysis.overview.memberDistribution"),"show-divider":!1},{default:M(()=>[t("div",Ga,[y(e(Ae),{data:l.value,height:280},null,8,["data"])])]),_:1},8,["title"])]),y(_t,{"daily-activity":u.dailyActivity,"daily-chart-data":e(n)},null,8,["daily-activity","daily-chart-data"])]))}}),Ka={class:"flex items-center gap-3"},Ja={key:1,class:"py-8 text-center text-sm text-gray-400"},Qa=B({__name:"ActivityRank",props:{sessionId:{},memberActivity:{},timeFilter:{},showTopNSelect:{type:Boolean,default:!0},globalTopN:{}},setup(u){const s=u,a=I(null),n=I(null),m=I(!1),l=I("activity"),d=I(s.globalTopN??10);O(()=>s.globalTopN,g=>{g!==void 0&&(d.value=g)});async function p(){if(s.sessionId){m.value=!0;try{const g=Z(),[v,_]=await Promise.all([g.getDragonKingAnalysis(s.sessionId,s.timeFilter),g.getCheckInAnalysis(s.sessionId,s.timeFilter)]);a.value=v,n.value=_}catch(g){console.error("加载活跃数据失败:",g)}finally{m.value=!1}}}const h=$(()=>s.memberActivity.map(g=>({id:g.memberId.toString(),name:g.name,value:g.messageCount,percentage:g.percentage}))),b=$(()=>a.value?a.value.rank.map(g=>({id:g.memberId.toString(),name:g.name,value:g.count,percentage:g.percentage})):[]),x=$(()=>n.value?n.value.loyaltyRank.map(g=>({id:g.memberId.toString(),name:g.name,value:g.totalDays,percentage:g.percentage})):[]),r=$(()=>{switch(l.value){case"activity":return h.value;case"dragon":return b.value;case"loyalty":return x.value;default:return h.value}}),i=$(()=>{switch(l.value){case"activity":return"条";case"dragon":case"loyalty":return"天";default:return"条"}}),f=$(()=>{switch(l.value){case"activity":return"🏆 活跃榜 - 发言数量";case"dragon":return"🏆 活跃榜 - 龙王";case"loyalty":return"🏆 活跃榜 - 累计发言";default:return"🏆 活跃榜"}}),w=$(()=>{switch(l.value){case"activity":return"按消息发送数量排名";case"dragon":return`每天发言最多的人+1(共 ${a.value?.totalDays??0} 天)`;case"loyalty":return`累计发言天数排名(共 ${n.value?.totalDays??0} 天)`;default:return""}});return O(()=>[s.sessionId,s.timeFilter],()=>p(),{immediate:!0,deep:!0}),(g,v)=>(o(),C(e(E),{title:f.value,description:w.value},{headerRight:M(()=>[t("div",Ka,[u.showTopNSelect?(o(),C(e(re),{key:0,modelValue:d.value,"onUpdate:modelValue":v[0]||(v[0]=_=>d.value=_)},null,8,["modelValue"])):D("",!0),y(e(ie),{modelValue:l.value,"onUpdate:modelValue":v[1]||(v[1]=_=>l.value=_),items:[{label:"发言数量",value:"activity"},{label:"龙王",value:"dragon"},{label:"累计发言",value:"loyalty"}],size:"sm"},null,8,["modelValue"])])]),default:M(()=>[m.value&&(l.value==="dragon"||l.value==="loyalty")?(o(),C(e(oe),{key:0,text:"正在加载数据..."})):(o(),k(W,{key:1},[r.value.length>0?(o(),C(e(be),{key:0,members:r.value,title:f.value,unit:i.value,"top-n":d.value,bare:""},null,8,["members","title","unit","top-n"])):(o(),k("div",Ja,"暂无数据"))],64))]),_:1},8,["title","description"]))}}),Za={key:0},Xa={key:0,class:"flex items-center justify-center gap-6 border-t border-gray-100 px-5 py-3 dark:border-gray-800"},es={class:"px-3 py-2"},ts=B({__name:"EChartStreakRank",props:{items:{},title:{},description:{},topN:{default:10},mode:{default:"max"},maxHeightVh:{default:60},bare:{type:Boolean,default:!1}},setup(u){const s=u,a=me(),n=$(()=>s.mode==="current"?s.items.filter(x=>x.currentStreak>0).sort((x,r)=>r.currentStreak-x.currentStreak).slice(0,s.topN):s.items.slice(0,s.topN)),m=$(()=>{const x=n.value.length*36;return Math.max(x+30,180)}),l={type:"linear",x:0,y:0,x2:1,y2:0,colorStops:[{offset:0,color:"#ee4567"},{offset:1,color:"#f7758c"}]},d={type:"linear",x:0,y:0,x2:1,y2:0,colorStops:[{offset:0,color:"#f97316"},{offset:1,color:"#fb923c"}]};function p(x,r){return`${x} ~ ${r}`}function h(x){return s.mode==="current"?x.currentStreak:x.maxStreak}const b=$(()=>{const x=[...n.value].reverse(),r=x.map(g=>ve(g.name,a.value.labelMaxLength)),i=x.map(g=>h(g)),f=Math.max(...i,1),w=x.map(g=>({value:h(g),itemStyle:{color:s.mode==="current"||g.currentStreak>0?d:l,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:g=>{const v=g[0];if(!v)return"";const _=n.value.length-1-v.dataIndex,S=n.value[_];if(s.mode==="current")return`
|
|
8
|
+
<div style="padding: 4px 8px;">
|
|
9
|
+
<div style="font-weight: bold; margin-bottom: 6px;">${S.name}</div>
|
|
10
|
+
<div style="color: #fb923c;">🔥 当前连续 <b>${S.currentStreak}</b> 天</div>
|
|
11
|
+
<div style="margin-top: 4px; font-size: 12px; color: #9ca3af;">最长记录: ${S.maxStreak} 天</div>
|
|
12
|
+
</div>
|
|
13
|
+
`;let T=`
|
|
14
|
+
<div style="padding: 4px 8px;">
|
|
15
|
+
<div style="font-weight: bold; margin-bottom: 6px;">${S.name}</div>
|
|
16
|
+
<div style="margin-bottom: 4px;">🔥 最长连续: <b>${S.maxStreak}</b> 天</div>
|
|
17
|
+
<div style="font-size: 12px; color: #9ca3af;">${p(S.maxStreakStart,S.maxStreakEnd)}</div>
|
|
18
|
+
`;return S.currentStreak>0&&(T+=`<div style="margin-top: 6px; color: #fb923c;">🔥 当前连续 ${S.currentStreak} 天</div>`),T+="</div>",T}},grid:{left:a.value.gridLeft,right:70,top:15,bottom:15,containLabel:!1},xAxis:{type:"value",max:f*1.15,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{show:!1},splitLine:{show:!1}},yAxis:{type:"category",data:r,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{fontSize:12,color:"#4b5563",margin:12,formatter:(g,v)=>{const S=n.value.length-1-v+1;return`${S===1?"🥇":S===2?"🥈":S===3?"🥉":`${S}.`} ${g}`}}},series:[{type:"bar",data:w,barWidth:18,barCategoryGap:"30%",label:{show:!0,position:"right",distance:8,formatter:g=>{const v=n.value.length-1-g.dataIndex,_=n.value[v],S=h(_),T=s.mode==="current"||_.currentStreak>0?" 🔥":"";return`${S} 天${T}`},fontSize:11,fontWeight:500,color:"#6b7280"},emphasis:{itemStyle:{shadowBlur:6,shadowColor:"rgba(249, 115, 22, 0.3)"}}}]}});return(x,r)=>u.bare?(o(),k("div",Za,[y(e(de),{"content-height":m.value,"max-height-vh":u.maxHeightVh},{default:M(()=>[y(e(ae),{option:b.value,height:m.value},null,8,["option","height"])]),_:1},8,["content-height","max-height-vh"]),u.mode==="max"?(o(),k("div",Xa,[...r[0]||(r[0]=[dt('<div class="flex items-center gap-1.5"><div class="h-3 w-6 rounded bg-linear-to-r from-orange-500 to-orange-400"></div><span class="text-xs text-gray-500">当前连续中 🔥</span></div><div class="flex items-center gap-1.5"><div class="h-3 w-6 rounded bg-linear-to-r from-pink-500 to-pink-400"></div><span class="text-xs text-gray-500">已中断</span></div>',2)])])):D("",!0)])):(o(),C(e(E),{key:1,title:u.title,description:u.description,scrollable:"","max-height-vh":u.maxHeightVh},Pe({default:M(()=>[t("div",es,[y(e(ae),{option:b.value,height:m.value},null,8,["option","height"])])]),_:2},[u.mode==="max"?{name:"footer",fn:M(()=>[r[1]||(r[1]=t("div",{class:"flex items-center justify-center gap-6 border-t border-gray-100 px-5 py-3 dark:border-gray-800"},[t("div",{class:"flex items-center gap-1.5"},[t("div",{class:"h-3 w-6 rounded bg-linear-to-r from-orange-500 to-orange-400"}),t("span",{class:"text-xs text-gray-500"},"当前连续中 🔥")]),t("div",{class:"flex items-center gap-1.5"},[t("div",{class:"h-3 w-6 rounded bg-linear-to-r from-pink-500 to-pink-400"}),t("span",{class:"text-xs text-gray-500"},"已中断")])],-1))]),key:"0"}:void 0]),1032,["title","description","max-height-vh"]))}}),as={class:"px-3 py-2"},ss=B({__name:"EChartBattleRank",props:{battles:{},title:{},description:{},topN:{default:10},maxHeightVh:{default:60},bare:{type:Boolean,default:!1}},setup(u){const s=u,a=$(()=>s.battles.slice(0,s.topN)),n=$(()=>{const p=a.value.length*36;return Math.max(p+30,180)}),m={type:"linear",x:0,y:0,x2:1,y2:0,colorStops:[{offset:0,color:"#ee4567"},{offset:1,color:"#f7758c"}]};function l(p){return`${p.participantCount} 人参战`}const d=$(()=>{const p=[...a.value].reverse(),h=p.map(i=>l(i)),b=p.map(i=>i.totalImages),x=Math.max(...b,1),r=p.map(i=>({value:i.totalImages,itemStyle:{color:m,borderRadius:[0,4,4,0]}}));return{tooltip:{trigger:"axis",axisPointer:{type:"shadow"},backgroundColor:"rgba(0, 0, 0, 0.85)",borderColor:"transparent",textStyle:{color:"#fff",fontSize:12},extraCssText:"max-width: 300px;",formatter:i=>{const f=i[0];if(!f)return"";const w=a.value.length-1-f.dataIndex,g=a.value[w],v=g.participants.slice(0,5).map(S=>`<span style="color: #d1d5db;">${S.name}</span> <b>${S.imageCount}</b>张`).join("、"),_=g.participants.length>5?`、+${g.participants.length-5}`:"";return`
|
|
19
|
+
<div style="padding: 6px 8px;">
|
|
20
|
+
<div style="font-weight: bold; margin-bottom: 8px; font-size: 13px;">
|
|
21
|
+
⚔️ ${Se(g.startTime)}
|
|
22
|
+
</div>
|
|
23
|
+
<div style="margin-bottom: 6px;">
|
|
24
|
+
<span style="color: #9ca3af;">参战人数:</span> <b>${g.participantCount}</b> 人
|
|
25
|
+
</div>
|
|
26
|
+
<div style="margin-bottom: 8px;">
|
|
27
|
+
<span style="color: #9ca3af;">总图片数:</span> <b style="color: #f472b6;">${g.totalImages}</b> 张
|
|
28
|
+
</div>
|
|
29
|
+
<div style="border-top: 1px solid #374151; padding-top: 6px; font-size: 11px;">
|
|
30
|
+
${v}${_}
|
|
31
|
+
</div>
|
|
32
|
+
</div>
|
|
33
|
+
`}},grid:{left:95,right:125,top:15,bottom:15,containLabel:!1},xAxis:{type:"value",max:x*1.15,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{show:!1},splitLine:{show:!1}},yAxis:{type:"category",data:h,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{fontSize:11,color:"#4b5563",margin:12,formatter:(i,f)=>{const g=a.value.length-1-f+1;return`${g===1?"🥇":g===2?"🥈":g===3?"🥉":`${g}.`} ${i}`}}},series:[{type:"bar",data:r,barWidth:18,barCategoryGap:"30%",label:{show:!0,position:"right",distance:8,formatter:i=>{const f=a.value.length-1-i.dataIndex,w=a.value[f],g=Se(w.startTime);return`${w.totalImages} 张 (${g})`},fontSize:11,fontWeight:500,color:"#6b7280"},emphasis:{itemStyle:{shadowBlur:6,shadowColor:"rgba(238, 69, 103, 0.3)"}}}]}});return(p,h)=>u.bare?(o(),C(e(de),{key:0,"content-height":n.value,"max-height-vh":u.maxHeightVh},{default:M(()=>[y(e(ae),{option:d.value,height:n.value},null,8,["option","height"])]),_:1},8,["content-height","max-height-vh"])):(o(),C(e(E),{key:1,title:u.title,description:u.description,scrollable:"","max-height-vh":u.maxHeightVh},{default:M(()=>[t("div",as,[y(e(ae),{option:d.value,height:n.value},null,8,["option","height"])])]),_:1},8,["title","description","max-height-vh"]))}}),os={class:"px-3 py-2"},ns=B({__name:"EChartTimeRank",props:{items:{},title:{},description:{},topN:{default:10},maxHeightVh:{default:60},bare:{type:Boolean,default:!1}},setup(u){const s=u,a=me(),n=$(()=>s.items.slice(0,s.topN)),m=$(()=>{const h=n.value.length*36;return Math.max(h+30,180)}),l={type:"linear",x:0,y:0,x2:1,y2:0,colorStops:[{offset:0,color:"#f59e0b"},{offset:1,color:"#fbbf24"}]};function d(h){return(h/1e3).toFixed(2)+"s"}const p=$(()=>{if(n.value.length===0)return{};const h=[...n.value].reverse(),b=h.map(i=>ve(i.name,a.value.labelMaxLength)),x=n.value[0].avgTimeDiff,r=h.map(i=>({value:Math.round(x/i.avgTimeDiff*100),itemStyle:{color:l,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:i=>{const f=i[0];if(!f)return"";const w=n.value.length-1-f.dataIndex,g=n.value[w];return`
|
|
34
|
+
<div style="padding: 4px 8px;">
|
|
35
|
+
<div style="font-weight: bold; margin-bottom: 6px;">${g.name}</div>
|
|
36
|
+
<div style="margin-bottom: 4px;">⚡️ 平均反应时间: <b>${d(g.avgTimeDiff)}</b></div>
|
|
37
|
+
<div style="font-size: 12px; color: #9ca3af;">参与复读 ${g.count} 次</div>
|
|
38
|
+
</div>
|
|
39
|
+
`}},grid:{left:a.value.gridLeft,right:100,top:15,bottom:15,containLabel:!1},xAxis:{type:"value",max:105,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{show:!1},splitLine:{show:!1}},yAxis:{type:"category",data:b,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{fontSize:12,color:"#4b5563",margin:12,formatter:(i,f)=>{const g=n.value.length-1-f+1;return`${g===1?"🥇":g===2?"🥈":g===3?"🥉":`${g}.`} ${i}`}}},series:[{type:"bar",data:r,barWidth:18,barCategoryGap:"30%",label:{show:!0,position:"right",distance:8,formatter:i=>{const f=n.value.length-1-i.dataIndex,w=n.value[f];return`${d(w.avgTimeDiff)} · ${w.count}次`},fontSize:11,fontWeight:500,color:"#6b7280"},emphasis:{itemStyle:{shadowBlur:6,shadowColor:"rgba(245, 158, 11, 0.3)"}}}]}});return(h,b)=>u.bare?(o(),C(e(de),{key:0,"content-height":m.value,"max-height-vh":u.maxHeightVh},{default:M(()=>[y(e(ae),{option:p.value,height:m.value},null,8,["option","height"])]),_:1},8,["content-height","max-height-vh"])):(o(),C(e(E),{key:1,title:u.title,description:u.description,scrollable:"","max-height-vh":u.maxHeightVh},{default:M(()=>[t("div",os,[y(e(ae),{option:p.value,height:m.value},null,8,["option","height"])])]),_:1},8,["title","description","max-height-vh"]))}}),ls={class:"flex items-center gap-3"},is={class:"px-3 py-2"},rs=B({__name:"EChartDivingRank",props:{items:{},showTopNSelect:{type:Boolean,default:!0},maxHeightVh:{default:60},globalTopN:{}},setup(u){const s=u,a=me(),n=I("desc"),m=I(s.globalTopN??10);O(()=>s.globalTopN,i=>{i!==void 0&&(m.value=i)});const l=$(()=>[...s.items].sort((f,w)=>n.value==="desc"?w.daysSinceLastMessage-f.daysSinceLastMessage:f.daysSinceLastMessage-w.daysSinceLastMessage).slice(0,m.value)),d=$(()=>n.value==="desc"?"🤿 潜水榜 - 潜水最久":"🤿 潜水榜 - 最近冒泡"),p=$(()=>n.value==="desc"?"距离上次发言时间最久的成员":"最近发言过的成员"),h=$(()=>{const i=l.value.length*36;return Math.max(i+30,180)}),b={type:"linear",x:0,y:0,x2:1,y2:0,colorStops:[{offset:0,color:"#06b6d4"},{offset:1,color:"#22d3ee"}]};function x(i){return i===0?"今天":i===1?"昨天":`${i} 天前`}const r=$(()=>{if(l.value.length===0)return{};const i=[...l.value].reverse(),f=i.map(v=>ve(v.name,a.value.labelMaxLength)),w=Math.max(...l.value.map(v=>v.daysSinceLastMessage),1),g=i.map(v=>({value:v.daysSinceLastMessage,itemStyle:{color:b,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:v=>{const _=v[0];if(!_)return"";const S=l.value.length-1-_.dataIndex,T=l.value[S];return`
|
|
40
|
+
<div style="padding: 4px 8px;">
|
|
41
|
+
<div style="font-weight: bold; margin-bottom: 6px;">${T.name}</div>
|
|
42
|
+
<div style="margin-bottom: 4px;">🤿 ${x(T.daysSinceLastMessage)}</div>
|
|
43
|
+
<div style="font-size: 12px; color: #9ca3af;">最后发言: ${Ct(T.lastMessageTs)}</div>
|
|
44
|
+
</div>
|
|
45
|
+
`}},grid:{left:a.value.gridLeft,right:100,top:15,bottom:15,containLabel:!1},xAxis:{type:"value",max:w*1.15,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{show:!1},splitLine:{show:!1}},yAxis:{type:"category",data:f,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{fontSize:12,color:"#4b5563",margin:12,formatter:(v,_)=>{const T=l.value.length-1-_+1;return`${T===1?"🥇":T===2?"🥈":T===3?"🥉":`${T}.`} ${v}`}}},series:[{type:"bar",data:g,barWidth:18,barCategoryGap:"30%",label:{show:!0,position:"right",distance:8,formatter:v=>{const _=l.value.length-1-v.dataIndex,S=l.value[_];return x(S.daysSinceLastMessage)},fontSize:11,fontWeight:500,color:"#6b7280"},emphasis:{itemStyle:{shadowBlur:6,shadowColor:"rgba(0, 0, 0, 0.2)"}}}]}});return(i,f)=>(o(),C(e(E),{title:d.value,description:p.value,scrollable:"","max-height-vh":u.maxHeightVh},{headerRight:M(()=>[t("div",ls,[u.showTopNSelect?(o(),C(e(re),{key:0,modelValue:m.value,"onUpdate:modelValue":f[0]||(f[0]=w=>m.value=w)},null,8,["modelValue"])):D("",!0),y(e(ie),{modelValue:n.value,"onUpdate:modelValue":f[1]||(f[1]=w=>n.value=w),items:[{label:"潜水最久",value:"desc"},{label:"最近冒泡",value:"asc"}],size:"sm"},null,8,["modelValue"])])]),default:M(()=>[t("div",is,[y(e(ae),{option:r.value,height:h.value},null,8,["option","height"])])]),_:1},8,["title","description","max-height-vh"]))}}),cs={class:"px-3 py-2"},us=B({__name:"EChartConsecutiveRank",props:{items:{},title:{},description:{},topN:{default:10},maxHeightVh:{default:60},bare:{type:Boolean,default:!1}},setup(u){const s=u,a=me(),n=$(()=>[...s.items].sort((h,b)=>b.maxConsecutiveDays-h.maxConsecutiveDays).slice(0,s.topN)),m=$(()=>{const h=n.value.length*36;return Math.max(h+30,180)}),l={type:"linear",x:0,y:0,x2:1,y2:0,colorStops:[{offset:0,color:"#f97316"},{offset:1,color:"#fb923c"}]},d={type:"linear",x:0,y:0,x2:1,y2:0,colorStops:[{offset:0,color:"#ec4899"},{offset:1,color:"#f472b6"}]},p=$(()=>{if(n.value.length===0)return{};const h=[...n.value].reverse(),b=h.map(r=>ve(r.name,a.value.labelMaxLength)),x=Math.max(...n.value.map(r=>r.maxConsecutiveDays),1);return{tooltip:{trigger:"axis",axisPointer:{type:"shadow"},backgroundColor:"rgba(0, 0, 0, 0.85)",borderColor:"transparent",textStyle:{color:"#fff",fontSize:12},formatter:r=>{if(!r||r.length===0)return"";const i=r[0].dataIndex,f=n.value.length-1-i,w=n.value[f];let g=`
|
|
46
|
+
<div style="padding: 6px 8px;">
|
|
47
|
+
<div style="font-weight: bold; margin-bottom: 6px;">${w.name}</div>
|
|
48
|
+
<div>最长连续: <b style="color: #f472b6;">${w.maxConsecutiveDays}</b> 天</div>
|
|
49
|
+
`;return w.currentStreak>0&&(g+=`<div style="color: #f97316;">🔥 当前连续 ${w.currentStreak} 天</div>`),g+="</div>",g}},legend:{show:!1},grid:{left:a.value.gridLeft,right:75,top:15,bottom:15,containLabel:!1},xAxis:{type:"value",max:x*1.15,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{show:!1},splitLine:{show:!1}},yAxis:{type:"category",data:b,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{fontSize:12,color:"#4b5563",margin:12,formatter:(r,i)=>{const w=n.value.length-1-i+1;return`${w===1?"🥇":w===2?"🥈":w===3?"🥉":`${w}.`} ${r}`}}},series:[{name:"当前连续",type:"bar",data:h.map(r=>({value:r.currentStreak>0?r.maxConsecutiveDays:0,itemStyle:{color:l,borderRadius:[0,4,4,0]}})),barWidth:18,barGap:"-100%",label:{show:!0,position:"right",distance:8,formatter:r=>{const i=n.value.length-1-r.dataIndex,f=n.value[i];return f.currentStreak>0?`${f.maxConsecutiveDays} 天`:""},fontSize:11,fontWeight:500,color:"#6b7280"}},{name:"已中断",type:"bar",data:h.map(r=>({value:r.currentStreak===0?r.maxConsecutiveDays:0,itemStyle:{color:d,borderRadius:[0,4,4,0]}})),barWidth:18,label:{show:!0,position:"right",distance:8,formatter:r=>{const i=n.value.length-1-r.dataIndex,f=n.value[i];return f.currentStreak===0?`${f.maxConsecutiveDays} 天`:""},fontSize:11,fontWeight:500,color:"#6b7280"}}]}});return(h,b)=>u.bare?(o(),C(e(de),{key:0,"content-height":m.value,"max-height-vh":u.maxHeightVh},{default:M(()=>[y(e(ae),{option:p.value,height:m.value},null,8,["option","height"])]),_:1},8,["content-height","max-height-vh"])):(o(),C(e(E),{key:1,title:u.title,description:u.description,scrollable:"","max-height-vh":u.maxHeightVh},{default:M(()=>[t("div",cs,[y(e(ae),{option:p.value,height:m.value},null,8,["option","height"])])]),_:1},8,["title","description","max-height-vh"]))}}),ds={class:"px-3 py-2"},ms=B({__name:"EChartNightOwlRank",props:{items:{},title:{},description:{},topN:{default:10},maxHeightVh:{default:60},bare:{type:Boolean,default:!1}},setup(u){const s=u,a=me(),n=$(()=>s.items.slice(0,s.topN)),m=$(()=>{const p=n.value.length*36;return Math.max(p+50,200)}),l={h23:"#8b5cf6",h0:"#3b82f6",h1:"#06b6d4",h2:"#f59e0b",h3to4:"#ef4444"},d=$(()=>{if(n.value.length===0)return{};const p=[...n.value].reverse(),h=p.map(x=>ve(x.name,a.value.labelMaxLength)),b=Math.max(...n.value.map(x=>x.totalNightMessages),1);return{tooltip:{trigger:"axis",axisPointer:{type:"shadow"},backgroundColor:"rgba(0, 0, 0, 0.85)",borderColor:"transparent",textStyle:{color:"#fff",fontSize:12},formatter:x=>{if(!x||x.length===0)return"";const r=x[0].dataIndex,i=n.value.length-1-r,f=n.value[i],w=f.hourlyBreakdown;return`
|
|
50
|
+
<div style="padding: 6px 8px;">
|
|
51
|
+
<div style="font-weight: bold; margin-bottom: 6px;">${f.name}</div>
|
|
52
|
+
<div style="margin-bottom: 4px;">
|
|
53
|
+
称号: <b style="color: #f472b6;">${f.title}</b>
|
|
54
|
+
</div>
|
|
55
|
+
<div style="margin-bottom: 6px;">总发言: <b>${f.totalNightMessages}</b> 条</div>
|
|
56
|
+
<div style="border-top: 1px solid #374151; padding-top: 6px;">
|
|
57
|
+
<div><span style="color: ${l.h23};">●</span> 23点: ${w.h23} 条</div>
|
|
58
|
+
<div><span style="color: ${l.h0};">●</span> 0点: ${w.h0} 条</div>
|
|
59
|
+
<div><span style="color: ${l.h1};">●</span> 1点: ${w.h1} 条</div>
|
|
60
|
+
<div><span style="color: ${l.h2};">●</span> 2点: ${w.h2} 条</div>
|
|
61
|
+
<div><span style="color: ${l.h3to4};">●</span> 3-4点: ${w.h3to4} 条</div>
|
|
62
|
+
</div>
|
|
63
|
+
</div>
|
|
64
|
+
`}},legend:{show:!0,bottom:0,itemWidth:12,itemHeight:12,textStyle:{color:"#6b7280",fontSize:10}},grid:{left:a.value.gridLeft,right:70,top:15,bottom:35,containLabel:!1},xAxis:{type:"value",max:b*1.15,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{show:!1},splitLine:{show:!1}},yAxis:{type:"category",data:h,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{fontSize:12,color:"#4b5563",margin:12,formatter:(x,r)=>{const f=n.value.length-1-r+1;return`${f===1?"🥇":f===2?"🥈":f===3?"🥉":`${f}.`} ${x}`}}},series:[{name:"23点",type:"bar",stack:"total",data:p.map(x=>x.hourlyBreakdown.h23),itemStyle:{color:l.h23},barWidth:18},{name:"0点",type:"bar",stack:"total",data:p.map(x=>x.hourlyBreakdown.h0),itemStyle:{color:l.h0},barWidth:18},{name:"1点",type:"bar",stack:"total",data:p.map(x=>x.hourlyBreakdown.h1),itemStyle:{color:l.h1},barWidth:18},{name:"2点",type:"bar",stack:"total",data:p.map(x=>x.hourlyBreakdown.h2),itemStyle:{color:l.h2},barWidth:18},{name:"3-4点",type:"bar",stack:"total",data:p.map(x=>x.hourlyBreakdown.h3to4),itemStyle:{color:l.h3to4,borderRadius:[0,4,4,0]},barWidth:18,label:{show:!0,position:"right",distance:8,formatter:x=>{const r=n.value.length-1-x.dataIndex;return`${n.value[r].totalNightMessages} 条`},fontSize:11,fontWeight:500,color:"#6b7280"}}]}});return(p,h)=>u.bare?(o(),C(e(de),{key:0,"content-height":m.value,"max-height-vh":u.maxHeightVh},{default:M(()=>[y(e(ae),{option:d.value,height:m.value},null,8,["option","height"])]),_:1},8,["content-height","max-height-vh"])):(o(),C(e(E),{key:1,title:u.title,description:u.description,scrollable:"","max-height-vh":u.maxHeightVh},{default:M(()=>[t("div",ds,[y(e(ae),{option:d.value,height:m.value},null,8,["option","height"])])]),_:1},8,["title","description","max-height-vh"]))}}),vs={id:"streak-rank",class:"scroll-mt-24"},hs={class:"flex items-center gap-3"},ps=B({__name:"CheckInRank",props:{sessionId:{},timeFilter:{},showTopNSelect:{type:Boolean,default:!0},globalTopN:{}},setup(u){const s=u,a=I(null),n=I(!1),m=I("max"),l=I(s.globalTopN??10);O(()=>s.globalTopN,x=>{x!==void 0&&(l.value=x)});const d=$(()=>m.value==="max"?"🔥 火花榜 - 最长连续":"🔥 火花榜 - 当前连续"),p=$(()=>m.value==="max"?"历史最长连续发言天数":"正在持续连续发言的成员"),h=$(()=>a.value?a.value.streakRank.some(x=>x.currentStreak>0):!1);async function b(){if(s.sessionId){n.value=!0;try{a.value=await Z().getCheckInAnalysis(s.sessionId,s.timeFilter)}catch(x){console.error("加载打卡分析失败:",x)}finally{n.value=!1}}}return O(()=>[s.sessionId,s.timeFilter],()=>{b()},{immediate:!0,deep:!0}),(x,r)=>(o(),k("div",vs,[n.value?(o(),C(e(oe),{key:0,text:"正在分析数据..."})):a.value&&a.value.streakRank.length>0?(o(),C(e(E),{key:1,title:d.value,description:p.value},{headerRight:M(()=>[t("div",hs,[u.showTopNSelect?(o(),C(e(re),{key:0,modelValue:l.value,"onUpdate:modelValue":r[0]||(r[0]=i=>l.value=i)},null,8,["modelValue"])):D("",!0),h.value?(o(),C(e(ie),{key:1,modelValue:m.value,"onUpdate:modelValue":r[1]||(r[1]=i=>m.value=i),items:[{label:"最长连续",value:"max"},{label:"当前连续",value:"current"}],size:"sm"},null,8,["modelValue"])):D("",!0)])]),default:M(()=>[y(e(ts),{items:a.value.streakRank,title:d.value,mode:m.value,"top-n":l.value,bare:""},null,8,["items","title","mode","top-n"])]),_:1},8,["title","description"])):(o(),C(e(E),{key:2,title:"🔥 火花榜"},{default:M(()=>[y(e(le),{text:"暂无连续发言数据"})]),_:1}))]))}}),gs={class:"flex items-center gap-3"},fs={key:1,class:"py-8 text-center text-sm text-gray-400"},ys={key:1,class:"py-8 text-center text-sm text-gray-400"},xs=B({__name:"MemeBattleRank",props:{sessionId:{},timeFilter:{},showTopNSelect:{type:Boolean,default:!0},globalTopN:{}},setup(u){const s=u,a=I(null),n=I(!1),m=I("count"),l=I(s.globalTopN??10);O(()=>s.globalTopN,f=>{f!==void 0&&(l.value=f)});async function d(){if(s.sessionId){n.value=!0;try{a.value=await Z().getMemeBattleAnalysis(s.sessionId,s.timeFilter)}catch(f){console.error("加载斗图分析失败:",f)}finally{n.value=!1}}}const p=$(()=>a.value?a.value.rankByCount.map(f=>({id:f.memberId.toString(),name:f.name,value:f.count,percentage:f.percentage})):[]),h=$(()=>a.value?a.value.rankByImageCount.map(f=>({id:f.memberId.toString(),name:f.name,value:f.count,percentage:f.percentage})):[]),b=$(()=>m.value==="count"?p.value:h.value),x=$(()=>m.value==="count"?"场":"张"),r=$(()=>{switch(m.value){case"battle":return"⚔️ 斗图榜 - 史诗级战役";case"count":return"⚔️ 斗图榜 - 按场次";case"image":return"⚔️ 斗图榜 - 按图量";default:return"⚔️ 斗图榜"}}),i=$(()=>{switch(m.value){case"battle":return"记录最激烈的斗图大战";case"count":return"参与斗图次数最多的人";case"image":return"在斗图中发送图片最多的人";default:return""}});return O(()=>[s.sessionId,s.timeFilter],()=>d(),{immediate:!0,deep:!0}),(f,w)=>n.value?(o(),C(e(oe),{key:0,text:"正在统计斗图数据..."})):a.value?(o(),C(e(E),{key:1,title:r.value,description:i.value},{headerRight:M(()=>[t("div",gs,[u.showTopNSelect?(o(),C(e(re),{key:0,modelValue:l.value,"onUpdate:modelValue":w[0]||(w[0]=g=>l.value=g)},null,8,["modelValue"])):D("",!0),y(e(ie),{modelValue:m.value,"onUpdate:modelValue":w[1]||(w[1]=g=>m.value=g),items:[{label:"按场次",value:"count"},{label:"按图量",value:"image"},{label:"史诗级战役",value:"battle"}],size:"sm"},null,8,["modelValue"])])]),default:M(()=>[m.value==="battle"?(o(),k(W,{key:0},[a.value.topBattles.length>0?(o(),C(e(ss),{key:0,battles:a.value.topBattles,title:"","top-n":l.value,bare:""},null,8,["battles","top-n"])):(o(),k("div",fs,"暂无史诗级战役数据"))],64)):(o(),k(W,{key:1},[b.value.length>0?(o(),C(e(be),{key:0,members:b.value,title:r.value,unit:x.value,"top-n":l.value,bare:""},null,8,["members","title","unit","top-n"])):(o(),k("div",ys,"暂无斗图数据"))],64))]),_:1},8,["title","description"])):D("",!0)}}),bs={class:"space-y-6"},ks={class:"flex items-center gap-3"},_s={class:"flex items-center gap-3"},ws={key:1,class:"px-3 py-2"},$s=B({__name:"RepeatSection",props:{sessionId:{},timeFilter:{},showTopNSelect:{type:Boolean,default:!0},globalTopN:{}},setup(u){const s=u,a=I(null),n=I(!1),m=I("originator"),l=I("fastest"),d=I(s.globalTopN??10),p=I(s.globalTopN??10);O(()=>s.globalTopN,S=>{S!==void 0&&(d.value=S,p.value=S)});async function h(){if(s.sessionId){n.value=!0;try{a.value=await Z().getRepeatAnalysis(s.sessionId,s.timeFilter)}catch(S){console.error("加载复读分析失败:",S)}finally{n.value=!1}}}const b=$(()=>a.value?a.value.originators.map(S=>({id:S.memberId.toString(),name:S.name,value:S.count,percentage:S.percentage})):[]),x=$(()=>a.value?a.value.initiators.map(S=>({id:S.memberId.toString(),name:S.name,value:S.count,percentage:S.percentage})):[]),r=$(()=>a.value?a.value.breakers.map(S=>({id:S.memberId.toString(),name:S.name,value:S.count,percentage:S.percentage})):[]),i=$(()=>{switch(m.value){case"originator":return b.value;case"initiator":return x.value;case"breaker":return r.value;default:return b.value}}),f=$(()=>{switch(m.value){case"originator":return"🔁 复读榜 - 被复读";case"initiator":return"🔁 复读榜 - 挑起";case"breaker":return"🔁 复读榜 - 打断";default:return"🔁 复读榜"}}),w=$(()=>{switch(m.value){case"originator":return"发出的消息被别人复读的次数";case"initiator":return"第二个发送相同消息、带起节奏的人";case"breaker":return"终结复读链的人";default:return""}}),g=$(()=>{if(!a.value)return{labels:[],values:[]};const S=a.value.chainLengthDistribution;return{labels:S.map(T=>`${T.length}人`),values:S.map(T=>T.count)}}),v=$(()=>l.value==="fastest"?"📊 复读统计 - 最快反应":"📊 复读统计 - 链长分布"),_=$(()=>{if(l.value==="fastest")return"平均复读反应时间(至少参与5次复读)";const S=a.value?.totalRepeatChains??0,T=a.value?.avgChainLength??0;return`共 ${S} 次复读,平均 ${T} 人参与`});return O(()=>[s.sessionId,s.timeFilter],()=>h(),{immediate:!0,deep:!0}),(S,T)=>(o(),k("div",bs,[n.value?(o(),C(e(oe),{key:0,text:"正在分析复读数据..."})):a.value&&a.value.totalRepeatChains>0?(o(),k(W,{key:1},[y(e(E),{title:f.value,description:w.value},{headerRight:M(()=>[t("div",ks,[u.showTopNSelect?(o(),C(e(re),{key:0,modelValue:d.value,"onUpdate:modelValue":T[0]||(T[0]=z=>d.value=z)},null,8,["modelValue"])):D("",!0),y(e(ie),{modelValue:m.value,"onUpdate:modelValue":T[1]||(T[1]=z=>m.value=z),items:[{label:"被复读",value:"originator"},{label:"挑起",value:"initiator"},{label:"打断",value:"breaker"}],size:"sm"},null,8,["modelValue"])])]),default:M(()=>[i.value.length>0?(o(),C(e(be),{key:0,members:i.value,title:f.value,unit:"次","top-n":d.value,bare:""},null,8,["members","title","top-n"])):(o(),C(e(le),{key:1,text:"暂无数据"}))]),_:1},8,["title","description"]),y(e(E),{title:v.value,description:_.value},{headerRight:M(()=>[t("div",_s,[u.showTopNSelect&&l.value==="fastest"?(o(),C(e(re),{key:0,modelValue:p.value,"onUpdate:modelValue":T[2]||(T[2]=z=>p.value=z)},null,8,["modelValue"])):D("",!0),y(e(ie),{modelValue:l.value,"onUpdate:modelValue":T[3]||(T[3]=z=>l.value=z),items:[{label:"最快反应",value:"fastest"},{label:"链长分布",value:"distribution"}],size:"sm"},null,8,["modelValue"])])]),default:M(()=>[l.value==="fastest"?(o(),k(W,{key:0},[a.value.fastestRepeaters&&a.value.fastestRepeaters.length>0?(o(),C(e(ns),{key:0,items:a.value.fastestRepeaters,"top-n":p.value,title:"",bare:""},null,8,["items","top-n"])):(o(),C(e(le),{key:1,text:"暂无最快复读数据"}))],64)):(o(),k("div",ws,[g.value.labels.length>0?(o(),C(e(It),{key:0,data:g.value,height:200},null,8,["data"])):(o(),C(e(le),{key:1,text:"暂无分布数据"}))]))]),_:1},8,["title","description"])],64)):(o(),C(e(E),{key:2,title:"🔁 复读榜"},{default:M(()=>[y(e(le),{text:"该群组暂无复读记录"})]),_:1}))]))}}),Cs=B({__name:"DivingRank",props:{sessionId:{},timeFilter:{},globalTopN:{}},setup(u){const s=u,a=I(null),n=I(!1);async function m(){if(s.sessionId){n.value=!0;try{a.value=await Z().getDivingAnalysis(s.sessionId,s.timeFilter)}catch(l){console.error("加载潜水分析失败:",l)}finally{n.value=!1}}}return O(()=>[s.sessionId,s.timeFilter],()=>m(),{immediate:!0,deep:!0}),(l,d)=>n.value?(o(),C(e(oe),{key:0,text:"正在统计潜水数据..."})):a.value&&a.value.rank.length>0?(o(),C(e(rs),{key:1,items:a.value.rank,"global-top-n":u.globalTopN},null,8,["items","global-top-n"])):D("",!0)}}),Is={class:"space-y-6"},Ss={class:"flex items-center gap-3"},Ms={key:1,class:"py-8 text-center text-sm text-gray-400"},Ts={key:1,class:"py-8 text-center text-sm text-gray-400"},Vs={class:"flex items-center gap-3"},Rs={key:1,class:"py-8 text-center text-sm text-gray-400"},Ls=B({__name:"NightOwlRank",props:{sessionId:{},timeFilter:{},showTopNSelect:{type:Boolean,default:!0},globalTopN:{}},setup(u){const s=u,a=I(null),n=I(!1),m=I("first"),l=I("distribution"),d=I(s.globalTopN??10),p=I(s.globalTopN??10);O(()=>s.globalTopN,v=>{v!==void 0&&(d.value=v,p.value=v)});async function h(){if(s.sessionId){n.value=!0;try{a.value=await Z().getNightOwlAnalysis(s.sessionId,s.timeFilter)}catch(v){console.error("加载出勤分析失败:",v)}finally{n.value=!1}}}const b=$(()=>a.value?a.value.lastSpeakerRank.map(v=>({id:String(v.memberId),name:v.name,value:v.count,percentage:v.percentage})):[]),x=$(()=>a.value?a.value.firstSpeakerRank.map(v=>({id:String(v.memberId),name:v.name,value:v.count,percentage:v.percentage})):[]),r=$(()=>m.value==="last"?b.value:x.value),i=$(()=>m.value==="last"?"⏰ 出勤排行 - 最晚下班":"⏰ 出勤排行 - 最早上班"),f=$(()=>{const v=a.value?.totalDays??0;return m.value==="last"?`每天最后一个发言的人(共 ${v} 天)`:`每天第一个发言的人(共 ${v} 天)`}),w=$(()=>l.value==="distribution"?"🦉 修仙统计 - 发言分布":"🦉 修仙统计 - 连续记录"),g=$(()=>l.value==="distribution"?"深夜时段(23:00-05:00)各时段发言分布":"连续在深夜时段发言的天数");return O(()=>[s.sessionId,s.timeFilter],()=>h(),{immediate:!0,deep:!0}),(v,_)=>(o(),k("div",Is,[n.value?(o(),C(e(oe),{key:0,text:"正在加载出勤分析..."})):a.value?(o(),k(W,{key:1},[y(e(E),{title:w.value,description:g.value},{headerRight:M(()=>[t("div",Ss,[u.showTopNSelect?(o(),C(e(re),{key:0,modelValue:d.value,"onUpdate:modelValue":_[0]||(_[0]=S=>d.value=S)},null,8,["modelValue"])):D("",!0),y(e(ie),{modelValue:l.value,"onUpdate:modelValue":_[1]||(_[1]=S=>l.value=S),items:[{label:"发言分布",value:"distribution"},{label:"连续记录",value:"consecutive"}],size:"sm"},null,8,["modelValue"])])]),default:M(()=>[l.value==="distribution"?(o(),k(W,{key:0},[a.value.nightOwlRank.length>0?(o(),C(e(ms),{key:0,items:a.value.nightOwlRank,"top-n":d.value,title:"",bare:""},null,8,["items","top-n"])):(o(),k("div",Ms,"暂无深夜发言数据"))],64)):(o(),k(W,{key:1},[a.value.consecutiveRecords.length>0?(o(),C(e(us),{key:0,items:a.value.consecutiveRecords,"top-n":d.value,title:"",bare:""},null,8,["items","top-n"])):(o(),k("div",Ts,"暂无连续记录"))],64))]),_:1},8,["title","description"]),y(e(E),{title:i.value,description:f.value},{headerRight:M(()=>[t("div",Vs,[u.showTopNSelect?(o(),C(e(re),{key:0,modelValue:p.value,"onUpdate:modelValue":_[2]||(_[2]=S=>p.value=S)},null,8,["modelValue"])):D("",!0),y(e(ie),{modelValue:m.value,"onUpdate:modelValue":_[3]||(_[3]=S=>m.value=S),items:[{label:"最早上班",value:"first"},{label:"最晚下班",value:"last"}],size:"sm"},null,8,["modelValue"])])]),default:M(()=>[r.value.length>0?(o(),C(e(be),{key:0,members:r.value,title:i.value,"top-n":p.value,unit:"次",bare:""},null,8,["members","title","top-n"])):(o(),k("div",Rs,"暂无数据"))]),_:1},8,["title","description"])],64)):D("",!0)]))}}),Ds={class:"mb-8 mt-4"},Ns={class:"text-5xl tracking-wider",style:{"font-weight":"800",background:"linear-gradient(to right, #f59e0b, #ec4899, #9333ea)","-webkit-background-clip":"text","-webkit-text-fill-color":"transparent"}},As={id:"activity-rank",class:"scroll-mt-24"},zs={id:"meme-battle",class:"scroll-mt-24"},Us={id:"repeat",class:"scroll-mt-24"},Fs={id:"night-owl",class:"scroll-mt-24"},Hs={id:"diving",class:"scroll-mt-24"},Bs={class:"border-l border-gray-200 pl-4 dark:border-gray-800"},Ws={class:"mt-4 border-l border-gray-200 pl-4 dark:border-gray-800"},Os={class:"flex rounded-lg border border-gray-200 bg-white p-0.5 text-xs dark:border-gray-700 dark:bg-gray-900"},js=["onClick"],Es=B({__name:"RankingView",props:{sessionId:{},timeFilter:{}},setup(u){const s=u,a=I([]),n=I([]);async function m(){if(!s.sessionId)return;const g=Z(),[v,_]=await Promise.all([g.getMemberActivity(s.sessionId,s.timeFilter),g.getAvailableYears(s.sessionId)]);a.value=v,n.value=_}O(()=>[s.sessionId,s.timeFilter],()=>m(),{immediate:!0,deep:!0});const l=$(()=>{if(s.timeFilter?.startTs&&s.timeFilter?.endTs){const g=new Date(s.timeFilter.startTs*1e3).getFullYear(),v=new Date(s.timeFilter.endTs*1e3).getFullYear();return g===v?`${g} 赛季`:`${g}-${v} 赛季`}if(n.value.length>0){const g=[...n.value].sort((S,T)=>S-T),v=g[0],_=g[g.length-1];return v===_?`${v} 赛季`:`${v}-${_} 赛季`}return"全部赛季"}),d=$(()=>({startTs:s.timeFilter?.startTs,endTs:s.timeFilter?.endTs})),p=[{id:"activity-rank",label:"🏆 活跃榜"},{id:"streak-rank",label:"🔥 火花榜"},{id:"meme-battle",label:"⚔️ 斗图榜"},{id:"repeat",label:"🔁 复读榜"},{id:"night-owl",label:"⏰ 出勤榜"},{id:"diving",label:"🤿 潜水榜"}],{contentRef:h,activeAnchor:b,scrollToAnchor:x}=Jt(p,{threshold:350}),r=I(10),i=I("standard");mt(Xe,i);const f=[{value:"standard",label:"标准"},{value:"wide",label:"宽屏"},{value:"full",label:"全宽"}],w=$(()=>et[i.value].contentClass);return(g,v)=>(o(),k("div",{ref_key:"contentRef",ref:h,class:"flex gap-6 p-6"},[t("div",{class:J(["main-content min-w-0 flex-1 px-8 mx-auto space-y-6",w.value])},[t("div",Ds,[t("h1",Ns," 🏆 "+c(l.value),1),v[1]||(v[1]=t("p",{class:"mt-4 text-sm text-gray-500 dark:text-gray-400"},"各榜单前三名请找群主领取奖励 🎁",-1))]),t("div",As,[y(e(Qa),{"session-id":s.sessionId,"member-activity":a.value,"time-filter":d.value,"global-top-n":r.value},null,8,["session-id","member-activity","time-filter","global-top-n"])]),y(e(ps),{"session-id":s.sessionId,"time-filter":d.value,"global-top-n":r.value},null,8,["session-id","time-filter","global-top-n"]),t("div",zs,[y(e(xs),{"session-id":s.sessionId,"time-filter":d.value,"global-top-n":r.value},null,8,["session-id","time-filter","global-top-n"])]),t("div",Us,[y(e($s),{"session-id":s.sessionId,"time-filter":d.value,"global-top-n":r.value},null,8,["session-id","time-filter","global-top-n"])]),t("div",Fs,[y(e(Ls),{"session-id":s.sessionId,"time-filter":d.value,"global-top-n":r.value},null,8,["session-id","time-filter","global-top-n"])]),t("div",Hs,[y(e(Cs),{"session-id":s.sessionId,"time-filter":d.value,"global-top-n":r.value},null,8,["session-id","time-filter","global-top-n"])]),v[2]||(v[2]=t("div",{class:"h-48 no-capture"},null,-1))],2),y(e(ea),{anchors:p,"active-anchor":e(b),onClick:e(x)},{default:M(()=>[t("div",Bs,[v[3]||(v[3]=t("div",{class:"text-xs text-gray-400 mb-2"},"显示数量",-1)),y(e(re),{modelValue:r.value,"onUpdate:modelValue":v[0]||(v[0]=_=>r.value=_)},null,8,["modelValue"])]),t("div",Ws,[v[4]||(v[4]=t("div",{class:"mb-2 text-xs text-gray-400"},"榜单宽度",-1)),t("div",Os,[(o(),k(W,null,ee(f,_=>t("button",{key:_.value,type:"button",class:J(["rounded-md px-2 py-1 transition",i.value===_.value?"bg-pink-500 text-white shadow-sm":"text-gray-500 hover:bg-gray-100 dark:text-gray-400 dark:hover:bg-gray-800"]),onClick:S=>i.value=_.value},c(_.label),11,js)),64))])])]),_:1},8,["active-anchor","onClick"])],512))}}),Ps={class:"flex h-full flex-col"},qs={class:"flex items-center justify-end px-4 py-2"},Gs={class:"flex items-center gap-4"},Ys={class:"flex items-center gap-2"},Ks={class:"text-xs text-gray-400"},Js={class:"flex items-center gap-2"},Qs={class:"text-xs text-gray-400"},Zs={class:"flex-1 min-h-0 relative"},Xs={key:0,class:"absolute inset-0 flex items-center justify-center"},eo={key:0,class:"h-full"},to={class:"absolute bottom-2 left-1/2 -translate-x-1/2 rounded-full bg-gray-100/80 px-3 py-1 text-xs text-gray-500 backdrop-blur-sm dark:bg-gray-800/80 dark:text-gray-400"},ao={key:1,class:"flex h-full items-center justify-center text-gray-400"},so={class:"text-center"},oo={class:"mt-2 text-sm"},no=B({__name:"InteractionView",props:{sessionId:{},timeFilter:{}},setup(u){const s=u,{t:a}=te(),n=I(!0),m=I({nodes:[],links:[],maxLinkValue:0}),l=I("circular"),d=I(!1),p=I(null);function h(){p.value?.resetView()}async function b(){if(s.sessionId){n.value=!0;try{const x=await Z().getMentionGraph(s.sessionId,s.timeFilter);m.value={nodes:x.nodes,links:x.links,maxLinkValue:x.maxLinkValue}}catch(x){console.error("[chart-interaction] 加载互动关系图数据失败:",x)}finally{n.value=!1}}}return O(()=>[s.sessionId,s.timeFilter],()=>{b()},{immediate:!0,deep:!0}),(x,r)=>{const i=ce,f=qe("UButtonGroup"),w=at,g=Me;return o(),k("div",Ps,[t("div",qs,[t("div",Gs,[t("div",Ys,[t("span",Ks,c(e(a)("views.interaction.layout"))+":",1),y(f,{size:"xs"},{default:M(()=>[y(i,{color:l.value==="circular"?"primary":"neutral",variant:l.value==="circular"?"solid":"ghost",onClick:r[0]||(r[0]=v=>l.value="circular")},{default:M(()=>[K(c(e(a)("views.interaction.circular")),1)]),_:1},8,["color","variant"]),y(i,{color:l.value==="force"?"primary":"neutral",variant:l.value==="force"?"solid":"ghost",onClick:r[1]||(r[1]=v=>l.value="force")},{default:M(()=>[K(c(e(a)("views.interaction.force")),1)]),_:1},8,["color","variant"])]),_:1})]),t("div",Js,[t("span",Qs,c(e(a)("views.interaction.directed"))+":",1),y(w,{modelValue:d.value,"onUpdate:modelValue":r[2]||(r[2]=v=>d.value=v),size:"xs"},null,8,["modelValue"])]),y(i,{size:"xs",color:"neutral",variant:"ghost",icon:"i-heroicons-arrow-path",onClick:h},{default:M(()=>[K(c(e(a)("views.interaction.reset")),1)]),_:1})])]),t("div",Zs,[n.value?(o(),k("div",Xs,[y(g,{name:"i-heroicons-arrow-path",class:"h-8 w-8 animate-spin text-pink-500"})])):(o(),k(W,{key:1},[m.value.nodes.length>0?(o(),k("div",eo,[y(e(ta),{ref_key:"graphRef",ref:p,data:m.value,layout:l.value,directed:d.value,height:"100%"},null,8,["data","layout","directed"]),t("div",to,c(e(a)("views.interaction.graphHint",{nodes:m.value.nodes.length,links:m.value.links.length})),1)])):(o(),k("div",ao,[t("div",so,[y(g,{name:"i-heroicons-user-group",class:"mx-auto h-10 w-10 text-gray-300 dark:text-gray-600"}),t("p",oo,c(e(a)("views.interaction.noInteraction")),1)])]))],64))])])}}}),lo={class:"main-content mx-auto max-w-[920px] space-y-6 p-6"},io={class:"grid grid-cols-1 gap-6 lg:grid-cols-2"},ro={class:"grid grid-cols-1 gap-6 lg:grid-cols-2"},co={class:"divide-y divide-gray-100 dark:divide-gray-800"},uo={class:"flex flex-1 items-center gap-2"},mo=["onClick"],vo={class:"flex items-center gap-1 text-pink-500"},ho={class:"text-xs"},po=["onClick"],go={class:"shrink-0 text-right text-sm text-gray-500"},fo={key:0,class:"text-red-500"},yo={key:1},xo={class:"divide-y divide-gray-100 dark:divide-gray-800"},bo={class:"flex flex-1 items-center gap-2"},ko=["onClick"],_o={class:"flex items-center gap-1"},wo={class:"text-xs text-gray-400"},$o={class:"text-xs text-gray-400"},Co=["onClick"],Io={class:"shrink-0 text-right"},So={class:"text-lg font-bold text-pink-600"},Mo={class:"ml-1 text-sm text-gray-500"},To={key:0,class:"p-5"},Vo={class:"mb-4 text-lg font-semibold text-gray-900 dark:text-white"},Ro={key:0,class:"mb-4"},Lo={class:"mb-2 text-sm font-medium text-gray-700 dark:text-gray-300"},Do={class:"space-y-2"},No={class:"text-sm font-medium text-gray-900 dark:text-white"},Ao={class:"text-xs text-gray-500"},zo={key:1},Uo={class:"mb-2 text-sm font-medium text-gray-700 dark:text-gray-300"},Fo={class:"space-y-2"},Ho={class:"text-sm font-medium text-gray-900 dark:text-white"},Bo={class:"text-xs text-gray-500"},Wo={class:"mt-4 flex justify-end"},Oo=B({__name:"Relationships",props:{sessionId:{},timeFilter:{}},setup(u){const{t:s}=te(),a=u,n=I(null),m=I(!1),l=I(null),d=I(!1);async function p(){if(a.sessionId){m.value=!0;try{n.value=await Z().getMentionAnalysis(a.sessionId,a.timeFilter)}catch(r){console.error("加载 @ 互动分析失败:",r)}finally{m.value=!1}}}const h=$(()=>n.value?n.value.topMentioners.map(r=>({id:r.memberId.toString(),name:r.name,value:r.count,percentage:r.percentage})):[]),b=$(()=>n.value?n.value.topMentioned.map(r=>({id:r.memberId.toString(),name:r.name,value:r.count,percentage:r.percentage})):[]);function x(r){if(!n.value)return;const i=n.value.memberDetails.find(f=>f.memberId===r);i&&(l.value=i,d.value=!0)}return O(()=>[a.sessionId,a.timeFilter],()=>{p()},{immediate:!0,deep:!0}),(r,i)=>{const f=Be,w=ce,g=ge;return o(),k("div",lo,[m.value?(o(),C(e(oe),{key:0,text:e(s)("members.relationships.loading")},null,8,["text"])):n.value&&n.value.totalMentions>0?(o(),k(W,{key:1},[t("div",io,[h.value.length>0?(o(),C(e(Fe),{key:0,members:h.value,title:e(s)("members.relationships.topMentioners"),description:e(s)("members.relationships.totalMentions",{count:n.value.totalMentions}),unit:e(s)("members.relationships.times")},null,8,["members","title","description","unit"])):D("",!0),b.value.length>0?(o(),C(e(Fe),{key:1,members:b.value,title:e(s)("members.relationships.topMentioned"),description:e(s)("members.relationships.popularMember"),unit:e(s)("members.relationships.times")},null,8,["members","title","description","unit"])):D("",!0)]),t("div",ro,[n.value.oneWay.length>0?(o(),C(e(E),{key:0,class:"hidden",title:e(s)("members.relationships.oneWay.title"),description:e(s)("members.relationships.oneWay.description",{count:n.value.oneWay.length})},{default:M(()=>[t("div",co,[(o(!0),k(W,null,ee(n.value.oneWay.slice(0,10),(v,_)=>(o(),k("div",{key:_,class:"flex items-center gap-4 px-5 py-3 transition-colors hover:bg-gray-50 dark:hover:bg-gray-800/50"},[t("span",{class:J(["flex h-6 w-6 shrink-0 items-center justify-center rounded-full text-xs font-bold",_===0?"bg-pink-100 text-pink-600 dark:bg-pink-900/30 dark:text-pink-400":"bg-gray-100 text-gray-500 dark:bg-gray-800 dark:text-gray-500"])},c(_+1),3),t("div",uo,[t("button",{class:"font-medium text-gray-900 hover:text-pink-600 dark:text-white dark:hover:text-pink-600",onClick:S=>x(v.fromMemberId)},c(v.fromName),9,mo),t("div",vo,[i[2]||(i[2]=t("span",{class:"text-lg"},"→",-1)),t("span",ho,c(v.fromToCount)+"次",1)]),t("button",{class:"font-medium text-gray-900 hover:text-pink-600 dark:text-white dark:hover:text-pink-600",onClick:S=>x(v.toMemberId)},c(v.toName),9,po)]),t("div",go,[v.toFromCount===0?(o(),k("span",fo,c(e(s)("members.relationships.oneWay.neverRespond")),1)):(o(),k("span",yo,c(e(s)("members.relationships.oneWay.reverse",{count:v.toFromCount})),1))]),y(f,{color:"pink",variant:"soft",size:"xs"},{default:M(()=>[K(c(e(s)("members.relationships.oneWay.ratio",{value:Math.round(v.ratio*100)})),1)]),_:2},1024)]))),128))])]),_:1},8,["title","description"])):D("",!0),n.value.twoWay.length>0?(o(),C(e(E),{key:1,title:e(s)("members.relationships.twoWay.title"),description:e(s)("members.relationships.twoWay.description",{count:n.value.twoWay.length})},{default:M(()=>[t("div",xo,[(o(!0),k(W,null,ee(n.value.twoWay.slice(0,10),(v,_)=>(o(),k("div",{key:_,class:"flex items-center gap-4 px-5 py-3 transition-colors hover:bg-gray-50 dark:hover:bg-gray-800/50"},[t("span",{class:J(["flex h-6 w-6 shrink-0 items-center justify-center rounded-full text-xs font-bold",_===0?"bg-linear-to-r from-pink-400 to-red-400 text-white":_===1?"bg-linear-to-r from-pink-300 to-red-300 text-white":_===2?"bg-linear-to-r from-pink-200 to-red-200 text-pink-700":"bg-gray-100 text-gray-500 dark:bg-gray-800 dark:text-gray-500"])},c(_+1),3),t("div",bo,[t("button",{class:"font-medium text-gray-900 hover:text-pink-600 dark:text-white dark:hover:text-pink-600",onClick:S=>x(v.member1Id)},c(v.member1Name),9,ko),t("div",_o,[t("span",wo,c(v.member1To2),1),i[3]||(i[3]=t("span",{class:"text-lg text-pink-500"},"⇄",-1)),t("span",$o,c(v.member2To1),1)]),t("button",{class:"font-medium text-gray-900 hover:text-pink-600 dark:text-white dark:hover:text-pink-600",onClick:S=>x(v.member2Id)},c(v.member2Name),9,Co)]),t("div",Io,[t("span",So,c(v.total),1),t("span",Mo,c(e(s)("members.relationships.twoWay.interactions")),1)]),y(f,{color:v.balance>=.7?"green":v.balance>=.5?"blue":"gray",variant:"soft",size:"xs"},{default:M(()=>[K(c(e(s)("members.relationships.twoWay.balance",{value:Math.round(v.balance*100)})),1)]),_:2},1032,["color"])]))),128))])]),_:1},8,["title","description"])):D("",!0)])],64)):m.value?D("",!0):(o(),C(e(E),{key:2,title:e(s)("members.relationships.emptyTitle")},{default:M(()=>[y(e(le),{text:e(s)("members.relationships.empty")},null,8,["text"])]),_:1},8,["title"])),y(g,{open:d.value,"onUpdate:open":i[1]||(i[1]=v=>d.value=v)},{content:M(()=>[l.value?(o(),k("div",To,[t("h3",Vo,c(e(s)("members.relationships.modal.title",{name:l.value.name})),1),l.value.topMentioned.length>0?(o(),k("div",Ro,[t("h4",Lo,c(e(s)("members.relationships.modal.topMentioned")),1),t("div",Do,[(o(!0),k(W,null,ee(l.value.topMentioned,(v,_)=>(o(),k("div",{key:_,class:"flex items-center gap-3 rounded-lg bg-gray-50 px-3 py-2 dark:bg-gray-800"},[t("span",No,c(v.toName),1),t("span",Ao,c(e(s)("members.relationships.modal.timesCount",{count:v.count})),1)]))),128))])])):D("",!0),l.value.topMentioners.length>0?(o(),k("div",zo,[t("h4",Uo,c(e(s)("members.relationships.modal.topMentioners")),1),t("div",Fo,[(o(!0),k(W,null,ee(l.value.topMentioners,(v,_)=>(o(),k("div",{key:_,class:"flex items-center gap-3 rounded-lg bg-gray-50 px-3 py-2 dark:bg-gray-800"},[t("span",Ho,c(v.fromName),1),t("span",Bo,c(e(s)("members.relationships.modal.timesCount",{count:v.count})),1)]))),128))])])):D("",!0),t("div",Wo,[y(w,{variant:"soft",onClick:i[0]||(i[0]=v=>d.value=!1)},{default:M(()=>[K(c(e(s)("members.relationships.modal.close")),1)]),_:1})])])):D("",!0)]),_:1},8,["open"])])}}}),jo={class:"mx-auto max-w-[920px] p-4 h-full"},Eo={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"},Po={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"},qo={class:"flex items-center gap-3"},Go={class:"flex items-center gap-3"},Yo={class:"p-3 w-64"},Ko={class:"text-sm font-medium mb-3"},Jo={class:"space-y-3"},Qo={class:"text-xs text-gray-500 mb-1 block"},Zo={class:"text-xs text-gray-400 mt-1"},Xo={class:"text-xs text-gray-500 mb-1 block"},en={class:"text-xs text-gray-400 mt-1"},tn={class:"flex-1 min-h-0 overflow-hidden"},an={key:0,class:"h-full flex items-center justify-center"},sn={key:1,class:"h-full flex items-center justify-center"},on={class:"text-center text-gray-400"},nn={key:2,class:"h-full"},ln={key:3,class:"h-full flex overflow-hidden"},rn={class:"w-64 border-r border-gray-200 dark:border-gray-700 flex flex-col overflow-hidden"},cn={class:"px-4 py-3 border-b border-gray-200 dark:border-gray-700"},un={class:"text-sm font-medium flex items-center gap-2"},dn={class:"flex-1 overflow-y-auto"},mn=["onClick"],vn={class:"flex items-center justify-between"},hn={class:"text-sm truncate"},pn={class:"text-xs text-gray-400"},gn={class:"flex-1 overflow-hidden flex flex-col"},fn={key:0,class:"flex-1 flex items-center justify-center"},yn={class:"text-center text-gray-400"},xn={class:"px-4 py-3 border-b border-gray-200 dark:border-gray-700 flex items-center gap-3"},bn={class:"w-10 h-10 rounded-full flex items-center justify-center text-white font-bold bg-primary-500"},kn={class:"font-medium"},_n={class:"text-xs text-gray-400"},wn={class:"px-4 py-3 border-b border-gray-200 dark:border-gray-700"},$n={class:"text-sm font-medium flex items-center gap-2"},Cn={class:"flex-1 overflow-y-auto"},In={key:0,class:"p-4 text-center text-gray-400"},Sn={class:"flex items-center gap-3"},Mn={class:"flex-1 min-w-0"},Tn={class:"text-sm font-medium truncate"},Vn={class:"flex items-center gap-3 mt-0.5 text-xs text-gray-400"},Rn={class:"w-20 h-2 bg-gray-200 dark:bg-gray-700 rounded-full overflow-hidden"},Ln={key:4,class:"h-full flex flex-col overflow-hidden"},Dn={class:"px-4 py-3 border-b border-gray-200 dark:border-gray-700"},Nn={class:"text-sm font-medium flex items-center gap-2"},An={class:"flex-1 overflow-y-auto"},zn={class:"flex items-center gap-3"},Un={class:"flex-1 min-w-0"},Fn={class:"flex items-center gap-2 text-sm"},Hn={class:"font-medium truncate"},Bn={class:"font-medium truncate"},Wn={class:"flex items-center gap-3 mt-1 text-xs text-gray-400"},On={class:"w-24 h-2 bg-gray-200 dark:bg-gray-700 rounded-full overflow-hidden"},jn={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"},En=B({__name:"ClusterView",props:{sessionId:{},timeFilter:{}},setup(u){Ke([Gt,Je,Yt,Kt,Qe]);const s=u,{t:a}=te(),n=ht(),m=$(()=>n.value==="dark"),l=I(!0),d=I(null),p=I("matrix"),h=I(null),b=I({lookAhead:3,decaySeconds:120,topEdges:150}),x=I(null);let r=null;async function i(){if(s.sessionId){l.value=!0;try{d.value=await Z().getClusterGraph(s.sessionId,s.timeFilter,{lookAhead:b.value.lookAhead,decaySeconds:b.value.decaySeconds,topEdges:b.value.topEdges})}catch(V){console.error("[chart-cluster] 加载小团体关系数据失败:",V),d.value=null}finally{l.value=!1}}}const f=$(()=>{if(!d.value||d.value.nodes.length===0)return null;const{nodes:V,links:N,maxLinkValue:U}=d.value,q=[...V].sort((R,G)=>G.messageCount-R.messageCount).slice(0,20).map(R=>R.name),X=new Map;for(const R of N)X.set(`${R.source}-${R.target}`,R.value),X.set(`${R.target}-${R.source}`,R.value);const Q=[];for(let R=0;R<q.length;R++)for(let G=0;G<q.length;G++)if(R===G)Q.push([R,G,-1]);else{const he=X.get(`${q[R]}-${q[G]}`)||0;Q.push([R,G,he])}return{names:q,data:Q,maxValue:U}});function w(){if(!f.value)return{graphic:{type:"text",style:{text:a("views.cluster.noData"),fill:"#999"}}};const{names:V,data:N,maxValue:U}=f.value;return{tooltip:{position:"top",formatter:se=>{const[q,X,Q]=se.data;return Q<0?`${V[q]}`:Q===0?`${V[q]} ↔ ${V[X]}<br/>暂无关系数据`:`${V[q]} ↔ ${V[X]}<br/>临近度: ${Q.toFixed(2)}`}},grid:{left:120,right:40,top:40,bottom:120},xAxis:{type:"category",data:V,splitArea:{show:!0},axisLabel:{rotate:45,fontSize:10,color:m.value?"#ccc":"#333"}},yAxis:{type:"category",data:V,splitArea:{show:!0},axisLabel:{fontSize:10,color:m.value?"#ccc":"#333"}},visualMap:{min:0,max:U||1,calculable:!0,orient:"horizontal",left:"center",bottom:10,inRange:{color:m.value?["#1a1a2e","#16213e","#0f3460","#e94560"]:["#f7f7f7","#fce4ec","#f8bbd9","#ee4567"]},textStyle:{color:m.value?"#ccc":"#333"}},series:[{type:"heatmap",data:N.filter(se=>se[2]>=0),label:{show:!1},emphasis:{itemStyle:{shadowBlur:10,shadowColor:"rgba(0, 0, 0, 0.5)"}}}],backgroundColor:"transparent"}}const g=$(()=>d.value?[...d.value.nodes].sort((V,N)=>N.messageCount-V.messageCount):[]),v=$(()=>!d.value||h.value===null?null:d.value.nodes.find(V=>V.id===h.value)||null),_=$(()=>{if(!d.value||!v.value)return[];const V=v.value.name,N=[];for(const U of d.value.links)U.source===V?N.push({otherName:U.target,value:U.value,coOccurrenceCount:U.coOccurrenceCount}):U.target===V&&N.push({otherName:U.source,value:U.value,coOccurrenceCount:U.coOccurrenceCount});return N.sort((U,se)=>se.value-U.value),N}),S=$(()=>d.value?d.value.links.slice(0,50):[]);function T(){r&&p.value==="matrix"&&r.setOption(w(),{notMerge:!0})}function z(){x.value&&(r=Ze(x.value,m.value?"dark":void 0),T())}function P(){r?.resize()}return O(p,async(V,N)=>{N==="matrix"&&r&&(r.dispose(),r=null),V==="matrix"&&(await Ce(),z())}),O([d,()=>m.value],()=>{p.value==="matrix"&&T()},{deep:!0}),O(l,async(V,N)=>{N&&!V&&p.value==="matrix"&&(r&&(r.dispose(),r=null),await Ce(),z())}),O(()=>[s.sessionId,s.timeFilter],()=>i(),{immediate:!0,deep:!0}),fe(()=>{window.addEventListener("resize",P),p.value==="matrix"&&Ce(()=>z())}),Te(()=>{window.removeEventListener("resize",P),r?.dispose(),r=null}),(V,N)=>{const U=ce,se=qe("UButtonGroup"),q=We,X=st,Q=Me;return o(),k("div",jo,[t("div",Eo,[t("div",Po,[t("div",qo,[y(se,{size:"xs"},{default:M(()=>[y(U,{color:p.value==="matrix"?"primary":"neutral",variant:p.value==="matrix"?"solid":"ghost",onClick:N[0]||(N[0]=R=>p.value="matrix")},{default:M(()=>[K(c(e(a)("views.cluster.matrixView")),1)]),_:1},8,["color","variant"]),y(U,{color:p.value==="member"?"primary":"neutral",variant:p.value==="member"?"solid":"ghost",onClick:N[1]||(N[1]=R=>p.value="member")},{default:M(()=>[K(c(e(a)("views.cluster.memberView")),1)]),_:1},8,["color","variant"]),y(U,{color:p.value==="circle"?"primary":"neutral",variant:p.value==="circle"?"solid":"ghost",onClick:N[2]||(N[2]=R=>p.value="circle")},{default:M(()=>[K(c(e(a)("views.cluster.rankingView")),1)]),_:1},8,["color","variant"])]),_:1})]),t("div",Go,[y(X,null,{content:M(()=>[t("div",Yo,[t("h4",Ko,c(e(a)("views.cluster.modelSettings")),1),t("div",Jo,[t("div",null,[t("label",Qo,c(e(a)("views.cluster.lookAhead")),1),y(q,{modelValue:b.value.lookAhead,"onUpdate:modelValue":N[3]||(N[3]=R=>b.value.lookAhead=R),modelModifiers:{number:!0},type:"number",min:1,max:10,size:"xs",placeholder:"1-10"},null,8,["modelValue"]),t("p",Zo,c(e(a)("views.cluster.lookAheadDesc")),1)]),t("div",null,[t("label",Xo,c(e(a)("views.cluster.decaySeconds")),1),y(q,{modelValue:b.value.decaySeconds,"onUpdate:modelValue":N[4]||(N[4]=R=>b.value.decaySeconds=R),modelModifiers:{number:!0},type:"number",min:30,max:3600,size:"xs",placeholder:"30-3600"},null,8,["modelValue"]),t("p",en,c(e(a)("views.cluster.decaySecondsDesc")),1)]),y(U,{size:"xs",color:"primary",class:"w-full mt-2",onClick:i},{default:M(()=>[K(c(e(a)("views.cluster.applySettings")),1)]),_:1})])])]),default:M(()=>[y(U,{variant:"ghost",size:"xs",icon:"i-heroicons-adjustments-horizontal"})]),_:1}),y(U,{variant:"ghost",size:"xs",icon:"i-heroicons-arrow-path",onClick:i})])]),t("div",tn,[l.value?(o(),k("div",an,[y(Q,{name:"i-heroicons-arrow-path",class:"w-6 h-6 animate-spin text-gray-400"})])):!d.value||d.value.nodes.length===0?(o(),k("div",sn,[t("div",on,[y(Q,{name:"i-heroicons-user-group",class:"w-12 h-12 mx-auto mb-2 opacity-50"}),t("p",null,c(e(a)("views.cluster.noData")),1)])])):p.value==="matrix"?(o(),k("div",nn,[t("div",{ref_key:"chartRef",ref:x,class:"w-full h-full"},null,512)])):p.value==="member"?(o(),k("div",ln,[t("div",rn,[t("div",cn,[t("h3",un,[y(Q,{name:"i-heroicons-users",class:"w-4 h-4"}),K(" "+c(e(a)("views.cluster.selectMember")),1)])]),t("div",dn,[(o(!0),k(W,null,ee(g.value,R=>(o(),k("div",{key:R.id,class:J(["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":h.value===R.id}]),onClick:G=>h.value=R.id},[t("div",vn,[t("span",hn,c(R.name),1),t("span",pn,c(R.messageCount),1)])],10,mn))),128))])]),t("div",gn,[v.value?(o(),k(W,{key:1},[t("div",xn,[t("div",bn,c(v.value.name.charAt(0)),1),t("div",null,[t("div",kn,c(v.value.name),1),t("div",_n,c(e(a)("views.cluster.msgCount"))+": "+c(v.value.messageCount)+" | "+c(e(a)("views.cluster.relationCount"))+": "+c(_.value.length),1)])]),t("div",wn,[t("h3",$n,[y(Q,{name:"i-heroicons-heart",class:"w-4 h-4 text-pink-500"}),K(" "+c(e(a)("views.cluster.relationsByIntimacy")),1)])]),t("div",Cn,[_.value.length===0?(o(),k("div",In,c(e(a)("views.cluster.noRelations")),1)):D("",!0),(o(!0),k(W,null,ee(_.value,(R,G)=>(o(),k("div",{key:R.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"},[t("div",Sn,[t("span",{class:J(["w-6 h-6 rounded-full flex items-center justify-center text-xs font-bold",G<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"])},c(G+1),3),t("div",Mn,[t("div",Tn,c(R.otherName),1),t("div",Vn,[t("span",null,c(e(a)("views.cluster.intimacy"))+": "+c((R.value*100).toFixed(0))+"%",1),t("span",null,c(e(a)("views.cluster.coOccurrence"))+": "+c(R.coOccurrenceCount)+c(e(a)("views.cluster.times")),1)])]),t("div",Rn,[t("div",{class:"h-full bg-linear-to-r from-pink-400 to-pink-600",style:pe({width:`${_.value[0]?.value?R.value/_.value[0].value*100:0}%`})},null,4)])])]))),128))])],64)):(o(),k("div",fn,[t("div",yn,[y(Q,{name:"i-heroicons-cursor-arrow-rays",class:"w-12 h-12 mx-auto mb-2 opacity-50"}),t("p",null,c(e(a)("views.cluster.selectMemberHint")),1)])]))])])):(o(),k("div",Ln,[t("div",Dn,[t("h3",Nn,[y(Q,{name:"i-heroicons-trophy",class:"w-4 h-4 text-yellow-500"}),K(" "+c(e(a)("views.cluster.interactionRanking")),1)])]),t("div",An,[(o(!0),k(W,null,ee(S.value,(R,G)=>(o(),k("div",{key:G,class:"px-4 py-3 border-b border-gray-100 dark:border-gray-800 hover:bg-gray-50 dark:hover:bg-gray-800/50"},[t("div",zn,[t("span",{class:J(["w-8 h-8 rounded-full flex items-center justify-center text-sm font-bold",G<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"])},c(G+1),3),t("div",Un,[t("div",Fn,[t("span",Hn,c(R.source),1),N[5]||(N[5]=t("span",{class:"text-gray-400"},"↔",-1)),t("span",Bn,c(R.target),1)]),t("div",Wn,[t("span",null,c(e(a)("views.cluster.score"))+": "+c(R.value.toFixed(2)),1),t("span",null,c(e(a)("views.cluster.coOccurrence"))+": "+c(R.coOccurrenceCount)+c(e(a)("views.cluster.times")),1)])]),t("div",On,[t("div",{class:"h-full bg-linear-to-r from-yellow-400 to-orange-500",style:pe({width:`${S.value[0]?.value?R.value/S.value[0].value*100:0}%`})},null,4)])])]))),128))])]))]),d.value?(o(),k("div",jn,[t("span",null,c(e(a)("views.cluster.totalMembers"))+": "+c(d.value.stats.totalMembers),1),t("span",null,c(e(a)("views.cluster.totalMessages"))+": "+c(d.value.stats.totalMessages.toLocaleString()),1),t("span",null,c(e(a)("views.cluster.involvedMembers"))+": "+c(d.value.stats.involvedMembers),1),t("span",null,c(e(a)("views.cluster.edgeCount"))+": "+c(d.value.stats.edgeCount),1)])):D("",!0)])])}}}),Pn={class:"flex h-full flex-col"},qn={class:"min-h-0 flex-1 overflow-y-auto"},Gn=B({__name:"GroupRelationships",props:{sessionId:{},timeFilter:{}},setup(u){const{t:s}=te(),a=u,n=I("mention-graph"),m=$(()=>[{id:"mention-graph",label:s("analysis.subTabs.groupRelationships.mentionGraph"),icon:"i-heroicons-arrows-right-left"},{id:"mention-ranking",label:s("analysis.subTabs.groupRelationships.mentionRanking"),icon:"i-heroicons-heart"},{id:"proximity",label:s("analysis.subTabs.groupRelationships.proximity"),icon:"i-heroicons-user-group"}]);return(l,d)=>(o(),k("div",Pn,[y(e(Ge),{modelValue:n.value,"onUpdate:modelValue":d[0]||(d[0]=p=>n.value=p),items:m.value,"persist-key":"groupRelationshipsTab",size:"sm"},null,8,["modelValue","items"]),t("div",qn,[y(Ve,{name:"fade",mode:"out-in"},{default:M(()=>[n.value==="mention-graph"?(o(),C(no,{key:0,"session-id":a.sessionId,"time-filter":a.timeFilter},null,8,["session-id","time-filter"])):n.value==="mention-ranking"?(o(),C(Oo,{key:1,"session-id":a.sessionId,"time-filter":a.timeFilter},null,8,["session-id","time-filter"])):n.value==="proximity"?(o(),C(En,{key:2,"session-id":a.sessionId,"time-filter":a.timeFilter},null,8,["session-id","time-filter"])):D("",!0)]),_:1})])]))}}),Yn=Le(Gn,[["__scopeId","data-v-531340f2"]]),Kn={class:"flex h-full flex-col"},Jn={class:"flex-1 min-h-0 overflow-y-auto"},Qn=B({__name:"ViewTab",props:{sessionId:{},sessionName:{},timeFilter:{}},setup(u){const{t:s,locale:a}=te(),n=u,m=$(()=>{const h=[{id:"type-analysis",label:s("analysis.subTabs.view.typeAnalysis"),icon:"i-heroicons-chart-pie"},{id:"time-analysis",label:s("analysis.subTabs.view.timeAnalysis"),icon:"i-heroicons-clock"},{id:"topic",label:s("analysis.subTabs.view.topic"),icon:"i-heroicons-cloud"},{id:"group-relationships",label:s("analysis.subTabs.view.groupRelationships"),icon:"i-heroicons-heart"},{id:"hot-repeat",label:s("analysis.subTabs.quotes.hotRepeat"),icon:"i-heroicons-fire"},{id:"catchphrase",label:s("analysis.subTabs.quotes.catchphrase"),icon:"i-heroicons-chat-bubble-bottom-center-text"}];return pt("groupRanking",a.value)&&h.splice(2,0,{id:"ranking",label:s("analysis.subTabs.view.ranking"),icon:"i-heroicons-trophy"}),h}),l=I("type-analysis"),d=I(null),p=$(()=>({...n.timeFilter,memberId:d.value}));return(h,b)=>(o(),k("div",Kn,[y(e(Ge),{modelValue:l.value,"onUpdate:modelValue":b[1]||(b[1]=x=>l.value=x),items:m.value,"persist-key":"groupViewTab"},{right:M(()=>[l.value!=="topic"?(o(),C(St,{key:0,modelValue:d.value,"onUpdate:modelValue":b[0]||(b[0]=x=>d.value=x),"session-id":n.sessionId},null,8,["modelValue","session-id"])):D("",!0)]),_:1},8,["modelValue","items"]),t("div",Jn,[y(Ve,{name:"fade",mode:"out-in"},{default:M(()=>[l.value==="type-analysis"?(o(),C(Mt,{key:0,"session-id":n.sessionId,"session-name":n.sessionName,"time-filter":p.value},null,8,["session-id","session-name","time-filter"])):l.value==="time-analysis"?(o(),C(Tt,{key:1,"session-id":n.sessionId,"session-name":n.sessionName,"time-filter":p.value},null,8,["session-id","session-name","time-filter"])):l.value==="topic"?(o(),C(e(Vt),{key:2,"session-id":n.sessionId,"time-filter":n.timeFilter},null,8,["session-id","time-filter"])):l.value==="group-relationships"?(o(),C(Yn,{key:3,"session-id":n.sessionId,"time-filter":p.value},null,8,["session-id","time-filter"])):l.value==="ranking"?(o(),C(Es,{key:4,"session-id":n.sessionId,"time-filter":p.value},null,8,["session-id","time-filter"])):l.value==="hot-repeat"?(o(),C(e(ja),{key:5,"session-id":n.sessionId,"time-filter":n.timeFilter},null,8,["session-id","time-filter"])):l.value==="catchphrase"?(o(),C(e(Aa),{key:6,"session-id":n.sessionId,"time-filter":n.timeFilter},null,8,["session-id","time-filter"])):D("",!0)]),_:1})])]))}}),Zn=Le(Qn,[["__scopeId","data-v-ab94305e"]]),Xn={key:0,class:"mb-6"},el={class:"flex items-center gap-3"},tl={class:"text-xl font-bold text-gray-900 dark:text-white"},al={class:"text-sm text-gray-500 dark:text-gray-400"},sl={class:"mb-4 flex flex-wrap items-center justify-between gap-3"},ol={class:"flex items-center gap-2"},nl={class:"text-xs text-gray-500 dark:text-gray-400"},ll={key:0,class:"flex h-60 items-center justify-center"},il={key:1,class:"flex h-60 flex-col items-center justify-center"},rl={class:"text-gray-500 dark:text-gray-400"},cl={key:2,class:"flex min-h-0 flex-1 flex-col"},ul={class:"w-full"},dl={class:"sticky top-0 bg-gray-50 dark:bg-gray-800"},ml={class:"text-left text-xs font-medium uppercase text-gray-500 dark:text-gray-400"},vl={class:"px-4 py-4"},hl={class:"px-4 py-4"},pl={class:"px-4 py-4"},gl={class:"w-64 px-4 py-4"},fl={class:"inline-flex items-center gap-1.5"},yl={class:"px-4 py-4 text-right"},xl={class:"divide-y divide-gray-200 dark:divide-gray-700"},bl={class:"px-4 py-4"},kl={class:"px-4 py-4"},_l={class:"flex items-center gap-2"},wl=["src","alt"],$l={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"},Cl={class:"text-sm font-medium text-gray-900 dark:text-white"},Il={class:"ml-1 text-sm text-gray-500 dark:text-gray-400"},Sl={class:"px-4 py-4"},Ml={key:0,class:"text-sm font-medium text-gray-900 dark:text-white"},Tl={key:1,class:"text-sm text-gray-400 dark:text-gray-500"},Vl={class:"px-4 py-4"},Rl={class:"text-sm font-semibold text-gray-900 dark:text-white"},Ll={class:"px-4 py-4"},Dl={class:"max-w-xs"},Nl={key:0,class:"absolute right-2 top-1/2 -translate-y-1/2"},Al={class:"px-4 py-4 text-right"},zl={key:0,class:"flex items-center justify-between border-t border-gray-200 px-6 py-4 dark:border-gray-700"},Ul={class:"text-sm text-gray-500 dark:text-gray-400"},Fl={class:"flex items-center gap-2"},Hl={class:"text-sm font-medium text-gray-600 dark:text-gray-300"},Bl={class:"p-6 text-center"},Wl={class:"mx-auto mb-4 flex h-14 w-14 items-center justify-center rounded-full bg-red-100 dark:bg-red-900/30"},Ol={class:"mb-2 text-lg font-semibold text-gray-900 dark:text-white"},jl={class:"mb-6 text-sm text-gray-500 dark:text-gray-400"},El={class:"flex justify-center gap-3"},Pl={class:"p-6"},ql={class:"mb-4 flex items-center gap-3"},Gl={class:"flex h-10 w-10 items-center justify-center rounded-full bg-amber-100 dark:bg-amber-900/30"},Yl={class:"text-lg font-semibold text-gray-900 dark:text-white"},Kl={class:"mb-2 text-sm text-gray-600 dark:text-gray-400"},Jl={class:"mb-6 text-xs text-amber-700 dark:text-amber-300"},Ql={class:"flex justify-end gap-2"},Ie=20,Zl=B({__name:"MemberList",props:{sessionId:{},showHeader:{type:Boolean,default:!0}},emits:["data-changed"],setup(u,{emit:s}){const{t:a}=te(),n=u,m=s,l=I([]),d=I([]),p=I(!1),h=I(""),b=I(null),x=I(!1),r=I(new Set),i=I(!1),f=I(!1),w=I(1),g=I(0),v=I(0),_=I("desc"),S=I(null);let T=null;function z(A){return A.groupNickname||A.accountName||A.platformId}function P(A){return z(A).slice(0,1)}const V=$(()=>d.value.filter(A=>r.value.has(A.id))),N=$(()=>V.value.length===2),U=$(()=>{if(V.value.length!==2)return null;const[A,H]=V.value;return H.messageCount>A.messageCount||H.messageCount===A.messageCount&&H.id<A.id?{primary:H,secondary:A}:{primary:A,secondary:H}});function se(){_.value=_.value==="desc"?"asc":"desc",w.value=1,q()}async function q(){if(n.sessionId){p.value=!0;try{const A=await Z().getMembersPaginated(n.sessionId,{page:w.value,pageSize:Ie,search:h.value.trim(),sortOrder:_.value});l.value=A.items,g.value=A.total,v.value=A.totalPages}catch(A){console.error("加载成员列表失败:",A)}finally{p.value=!1}}}async function X(){if(n.sessionId)try{d.value=await Z().getMembers(n.sessionId)}catch(A){console.error("加载所有成员失败:",A)}}async function Q(A,H){const Y=JSON.parse(JSON.stringify(H)),L=JSON.stringify(A.aliases),ne=JSON.stringify(Y);if(L!==ne){S.value=A.id;try{if(await Z().updateMemberAliases(n.sessionId,A.id,Y)){const F=l.value.findIndex(we=>we.id===A.id);F!==-1&&(l.value[F]={...l.value[F],aliases:Y})}}catch(ue){console.error("保存别名失败:",ue)}finally{S.value=null}}}function R(A){b.value=A}function G(){b.value=null}async function he(){if(b.value){x.value=!0;try{await Z().deleteMember(n.sessionId,b.value.id)&&(await q(),await X(),m("data-changed"))}catch(A){console.error("删除成员失败:",A)}finally{x.value=!1,b.value=null}}}function ke(A){const H=new Set(r.value);H.has(A)?H.delete(A):H.add(A),r.value=H}function ye(){N.value&&(i.value=!0)}function xe(){r.value=new Set}async function _e(){if(U.value){f.value=!0;try{await Z().mergeMembers(n.sessionId,U.value.primary.id,U.value.secondary.id)&&(i.value=!1,xe(),await q(),await X(),m("data-changed"))}catch(A){console.error("合并成员失败:",A)}finally{f.value=!1}}}return O(h,()=>{w.value=1,T&&clearTimeout(T),T=setTimeout(()=>{q()},300)}),O(w,()=>{q()}),O(()=>n.sessionId,()=>{h.value="",w.value=1,xe(),q(),X()},{immediate:!0}),fe(()=>{q(),X()}),(A,H)=>{const Y=ce,L=We,ne=Me,ue=ot,F=nt,we=lt,De=ge;return o(),k("div",{class:J(["main-content",n.showHeader?"max-w-5xl p-6":"flex h-full max-w-none flex-col overflow-hidden p-4"])},[n.showHeader?(o(),k("div",Xn,[t("div",el,[t("div",null,[t("h2",tl,c(e(a)("members.list.title")),1),t("p",al,c(e(a)("members.list.description",{count:g.value})),1)])])])):D("",!0),y(Rt,{class:"mb-6","session-id":u.sessionId,members:d.value,"chat-type":"group"},null,8,["session-id","members"]),t("div",sl,[y(L,{modelValue:h.value,"onUpdate:modelValue":H[1]||(H[1]=j=>h.value=j),placeholder:e(a)("members.list.searchPlaceholder"),icon:"i-heroicons-magnifying-glass",class:"w-full md:w-100"},Pe({_:2},[h.value?{name:"trailing",fn:M(()=>[y(Y,{icon:"i-heroicons-x-mark",variant:"link",color:"neutral",size:"xs",onClick:H[0]||(H[0]=j=>h.value="")})]),key:"0"}:void 0]),1032,["modelValue","placeholder"]),t("div",ol,[t("span",nl,c(e(a)("members.list.mergeSelectedCount",{count:r.value.size})),1),y(Y,{icon:"i-heroicons-link",size:"sm",color:"primary",disabled:!N.value,onClick:ye},{default:M(()=>[K(c(e(a)("members.list.mergeSelected")),1)]),_:1},8,["disabled"])])]),t("div",{class:J(["rounded-xl border border-gray-200 bg-white shadow-sm dark:border-gray-700 dark:bg-gray-900",n.showHeader?"":"flex min-h-0 flex-1 flex-col"])},[p.value?(o(),k("div",ll,[y(ne,{name:"i-heroicons-arrow-path",class:"h-8 w-8 animate-spin text-pink-500"})])):l.value.length===0?(o(),k("div",il,[y(ne,{name:"i-heroicons-user-group",class:"mb-3 h-12 w-12 text-gray-300 dark:text-gray-600"}),t("p",rl,c(h.value?e(a)("members.list.noMatch"):e(a)("members.list.empty")),1)])):(o(),k("div",cl,[t("div",{class:J(["max-h-[500px] overflow-y-auto",n.showHeader?"":"max-h-none min-h-0 flex-1"])},[t("table",ul,[t("thead",dl,[t("tr",ml,[H[7]||(H[7]=t("th",{class:"w-12 px-4 py-4"},null,-1)),t("th",vl,c(e(a)("members.list.table.accountName")),1),t("th",hl,c(e(a)("members.list.table.groupNickname")),1),t("th",pl,[t("button",{class:"flex items-center gap-1.5 hover:text-gray-700 dark:hover:text-gray-200",onClick:se},[K(c(e(a)("members.list.table.messageCount"))+" ",1),y(ne,{name:_.value==="desc"?"i-heroicons-arrow-down":"i-heroicons-arrow-up",class:"h-3.5 w-3.5"},null,8,["name"])])]),t("th",gl,[t("div",fl,[t("span",null,c(e(a)("members.list.table.customAlias")),1),y(ue,{text:e(a)("members.list.tip"),popper:{placement:"top"}},{default:M(()=>[y(ne,{name:"i-heroicons-question-mark-circle",class:"h-4 w-4 text-gray-400 dark:text-gray-500"})]),_:1},8,["text"])])]),t("th",yl,c(e(a)("members.list.table.actions")),1)])]),t("tbody",xl,[(o(!0),k(W,null,ee(l.value,j=>(o(),k("tr",{key:j.id,class:"hover:bg-gray-50 dark:hover:bg-gray-800/50"},[t("td",bl,[y(F,{"model-value":r.value.has(j.id),onClick:Ee($e=>ke(j.id),["stop"])},null,8,["model-value","onClick"])]),t("td",kl,[t("div",_l,[j.avatar?(o(),k("img",{key:0,src:j.avatar,alt:z(j),class:"h-8 w-8 shrink-0 rounded-full object-cover"},null,8,wl)):(o(),k("div",$l,c(P(j)),1)),t("div",null,[t("span",Cl,c(j.accountName||"-"),1),t("span",Il,"("+c(j.platformId)+")",1)])])]),t("td",Sl,[j.groupNickname?(o(),k("span",Ml,c(j.groupNickname),1)):(o(),k("span",Tl,"-"))]),t("td",Vl,[t("span",Rl,c(j.messageCount.toLocaleString()),1)]),t("td",Ll,[t("div",Dl,[y(we,{"model-value":j.aliases,placeholder:e(a)("members.list.aliasPlaceholder"),class:"w-80","onUpdate:modelValue":$e=>Q(j,$e)},null,8,["model-value","placeholder","onUpdate:modelValue"]),S.value===j.id?(o(),k("div",Nl,[y(ne,{name:"i-heroicons-arrow-path",class:"h-4 w-4 animate-spin text-pink-500"})])):D("",!0)])]),t("td",Al,[y(Y,{label:e(a)("members.list.delete"),size:"xs",onClick:$e=>R(j)},null,8,["label","onClick"])])]))),128))])])],2),v.value>1?(o(),k("div",zl,[t("p",Ul,c(e(a)("members.list.pagination",{start:(w.value-1)*Ie+1,end:Math.min(w.value*Ie,g.value),total:g.value})),1),t("div",Fl,[y(Y,{icon:"i-heroicons-chevron-left",variant:"outline",size:"sm",disabled:w.value===1||p.value,onClick:H[2]||(H[2]=j=>w.value--)},null,8,["disabled"]),t("span",Hl,c(w.value)+" / "+c(v.value),1),y(Y,{icon:"i-heroicons-chevron-right",variant:"outline",size:"sm",disabled:w.value>=v.value||p.value,onClick:H[3]||(H[3]=j=>w.value++)},null,8,["disabled"])])])):D("",!0)]))],2),y(De,{open:!!b.value,ui:{content:"max-w-sm"},"onUpdate:open":H[4]||(H[4]=j=>b.value=null)},{content:M(()=>[t("div",Bl,[t("div",Wl,[y(ne,{name:"i-heroicons-exclamation-triangle",class:"h-7 w-7 text-red-500"})]),t("h3",Ol,c(e(a)("members.list.modal.title")),1),t("p",jl,c(e(a)("members.list.modal.content",{name:b.value?z(b.value):"",count:b.value?.messageCount.toLocaleString()})),1),t("div",El,[y(Y,{variant:"outline",onClick:G},{default:M(()=>[K(c(e(a)("members.list.modal.cancel")),1)]),_:1}),y(Y,{color:"error",loading:x.value,onClick:he},{default:M(()=>[K(c(e(a)("members.list.modal.confirm")),1)]),_:1},8,["loading"])])])]),_:1},8,["open"]),y(De,{open:i.value,ui:{content:"max-w-md"},"onUpdate:open":H[6]||(H[6]=j=>i.value=j)},{content:M(()=>[t("div",Pl,[t("div",ql,[t("div",Gl,[y(ne,{name:"i-heroicons-link",class:"h-5 w-5 text-amber-600 dark:text-amber-400"})]),t("h3",Yl,c(e(a)("members.list.mergeModal.title")),1)]),t("p",Kl,c(e(a)("members.list.mergeModal.content",{source:U.value?z(U.value.secondary):"",sourceCount:U.value?U.value.secondary.messageCount.toLocaleString():"0",target:U.value?z(U.value.primary):"",targetCount:U.value?U.value.primary.messageCount.toLocaleString():"0"})),1),t("p",Jl,c(e(a)("members.list.mergeModal.hint")),1),t("div",Ql,[y(Y,{variant:"outline",disabled:f.value,onClick:H[5]||(H[5]=j=>i.value=!1)},{default:M(()=>[K(c(e(a)("members.list.mergeModal.cancel")),1)]),_:1},8,["disabled"]),y(Y,{color:"primary",loading:f.value,onClick:_e},{default:M(()=>[K(c(e(a)("members.list.mergeModal.confirm")),1)]),_:1},8,["loading"])])])]),_:1},8,["open"])],2)}}}),Xl={class:"main-content max-w-5xl p-6"},ei={class:"mb-4 text-sm text-gray-500 dark:text-gray-400 no-capture"},ti={key:0,class:"divide-y divide-gray-100 dark:divide-gray-800"},ai={class:"w-32 shrink-0 pt-0.5 font-medium text-gray-900 dark:text-white"},si={class:"flex flex-1 flex-wrap items-center gap-2"},oi={class:"flex items-center gap-1.5 rounded-lg bg-gray-50 px-3 py-1.5 dark:bg-gray-800"},ni={class:"text-xs text-gray-400"},li={key:0,class:"text-gray-300 dark:text-gray-600"},ii=B({__name:"NicknameHistory",props:{sessionId:{}},setup(u){const{t:s}=te(),a=u,n=I([]),m=I([]),l=I(!1);function d(b){return b.groupNickname||b.accountName||b.platformId}async function p(){if(a.sessionId)try{n.value=await Z().getMembers(a.sessionId)}catch(b){console.error("加载成员列表失败:",b)}}async function h(){if(!a.sessionId||n.value.length===0)return;l.value=!0;const b=[];try{const x=n.value.map(i=>Z().getMemberNameHistory(a.sessionId,i.id)),r=await Promise.all(x);n.value.forEach((i,f)=>{const w=r[f];w.length>2&&b.push({memberId:i.id,name:d(i),history:w})}),m.value=b}catch(x){console.error("加载昵称变更记录失败:",x)}finally{l.value=!1}}return O(()=>a.sessionId,async()=>{await p()},{immediate:!0}),O(()=>n.value.length,()=>{n.value.length>0&&h()}),fe(async()=>{n.value.length===0&&await p()}),(b,x)=>{const r=Be;return o(),k("div",Xl,[t("p",ei,c(e(s)("members.nicknameHistory.note")),1),y(e(E),{title:e(s)("members.nicknameHistory.title"),description:l.value?e(s)("members.nicknameHistory.loading"):m.value.length>0?e(s)("members.nicknameHistory.hasChanges",{count:m.value.length}):e(s)("members.nicknameHistory.noChanges")},{default:M(()=>[!l.value&&m.value.length>0?(o(),k("div",ti,[(o(!0),k(W,null,ee(m.value,i=>(o(),k("div",{key:i.memberId,class:"flex items-start gap-3 px-5 py-3"},[t("div",ai,c(i.name),1),t("div",si,[(o(!0),k(W,null,ee(i.history,(f,w)=>(o(),k(W,{key:w},[t("div",oi,[t("span",{class:J(["text-sm",f.endTs===null?"font-semibold text-pink-600":"text-gray-700 dark:text-gray-300"])},c(f.name),3),f.endTs===null?(o(),C(r,{key:0,color:"primary",variant:"soft",size:"xs"},{default:M(()=>[K(c(e(s)("members.nicknameHistory.current")),1)]),_:1})):D("",!0),t("span",ni,"("+c(e(Lt)(f.startTs,f.endTs))+")",1)]),w<i.history.length-1?(o(),k("span",li,"→")):D("",!0)],64))),128))])]))),128))])):l.value?(o(),C(e(oe),{key:2,text:e(s)("members.nicknameHistory.loadingText")},null,8,["text"])):(o(),C(e(le),{key:1,text:e(s)("members.nicknameHistory.empty")},null,8,["text"]))]),_:1},8,["title","description"])])}}}),ri={class:"flex h-full flex-col overflow-hidden bg-white dark:bg-gray-900"},ci={class:"flex flex-none items-center justify-between border-b border-gray-200 px-5 py-3 dark:border-gray-700"},ui={class:"text-lg font-semibold text-gray-900 dark:text-white"},di={class:"flex-1 overflow-auto"},mi=B({__name:"NicknameHistoryEntry",props:{sessionId:{}},setup(u){const{t:s}=te(),a=u,n=I(!1);return(m,l)=>{const d=ce,p=ge;return o(),k(W,null,[y(d,{variant:"ghost",icon:"i-heroicons-clock",size:"sm",onClick:l[0]||(l[0]=h=>n.value=!0)},{default:M(()=>[K(c(e(s)("analysis.subTabs.member.nicknameHistory")),1)]),_:1}),a.sessionId?(o(),C(p,{key:0,open:n.value,"onUpdate:open":l[2]||(l[2]=h=>n.value=h),ui:{content:"max-w-6xl h-[85vh]"}},{content:M(()=>[t("div",ri,[t("div",ci,[t("h2",ui,c(e(s)("analysis.subTabs.member.nicknameHistory")),1),y(d,{variant:"ghost",icon:"i-heroicons-x-mark",size:"sm",onClick:l[1]||(l[1]=h=>n.value=!1)})]),t("div",di,[y(ii,{"session-id":a.sessionId},null,8,["session-id"])])])]),_:1},8,["open"])):D("",!0)],64)}}}),vi={class:"flex h-full flex-col bg-white dark:bg-gray-900",style:{"padding-top":"var(--titlebar-area-height)"}},hi={class:"relative flex-1 overflow-y-auto"},pi={class:"h-full"},gi={key:2,class:"flex h-full items-center justify-center"},fi={class:"text-gray-500"},yi={class:"flex h-full flex-col overflow-hidden bg-white dark:bg-gray-900"},xi={class:"flex flex-none items-center justify-between border-b border-gray-200 px-5 py-3 dark:border-gray-700"},bi={class:"text-lg font-semibold text-gray-900 dark:text-white"},ki={class:"text-sm text-gray-500 dark:text-gray-400"},_i={class:"flex items-center gap-2"},wi={class:"flex-1 overflow-hidden"},$i=B({__name:"index",setup(u){const s=je(()=>He(()=>import("./MessageExportModal-B60rvfCh.js"),__vite__mapDeps([5,6,4,7,8,9]))),{t:a}=te(),n=it(),m=rt(),l=gt(),d=Re(),p=ft(),{currentSessionId:h}=yt(l),b=I(!1),x=I(!1),r=I(!1),i=I(!1),f=I(!1),w=I(!1);function g(){d.openChatRecordDrawer({})}const v=[{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"}],_=$(()=>p.debugMode?[...v,{id:"debug",labelKey:"analysis.tabs.debug",icon:"i-heroicons-bug-ant"}]:v),S=$(()=>_.value.map(Y=>Y.id)),{activeTab:T,isLoading:z,isInitialLoad:P,session:V,memberActivity:N,hourlyActivity:U,dailyActivity:se,messageTypes:q,timeRangeValue:X,fullTimeRange:Q,availableYears:R,timeFilter:G,selectedYearForOverview:he,initialTimeState:ke,loadData:ye}=Dt({route:n,router:m,currentSessionId:h,selectSession:l.selectSession,defaultTab:p.defaultSessionTab,validTabIds:S.value}),xe=$(()=>N.value.slice(0,3)),_e=$(()=>N.value.length<=1?[]:[...N.value].sort((Y,L)=>Y.messageCount-L.messageCount).slice(0,1)),A=$(()=>N.value.reduce((Y,L)=>Y+L.messageCount,0)),H=$(()=>N.value.filter(Y=>Y.messageCount>0).length);return(Y,L)=>{const ne=ce,ue=ge;return o(),k("div",vi,[e(P)?(o(),C(oe,{key:0,variant:"page",text:e(a)("analysis.groupChat.loading")},null,8,["text"])):e(V)?(o(),k(W,{key:1},[y(Nt,{"active-tab":e(T),"onUpdate:activeTab":L[0]||(L[0]=F=>Ne(T)?T.value=F:null),"time-range-value":e(X),"onUpdate:timeRangeValue":L[1]||(L[1]=F=>Ne(X)?X.value=F:null),title:e(V).name,avatar:e(V).groupAvatar,icon:"i-heroicons-chat-bubble-left-right","icon-class":"bg-primary-600 text-white dark:bg-primary-500 dark:text-white",tabs:_.value,"current-session-id":e(h),"initial-time-state":e(ke),onOpenIncrementalImport:L[2]||(L[2]=F=>i.value=!0),onOpenMemberManagement:L[3]||(L[3]=F=>w.value=!0),onOpenChatRecord:g,"onUpdate:fullRange":L[4]||(L[4]=F=>Q.value=F),"onUpdate:availableYears":L[5]||(L[5]=F=>R.value=F)},null,8,["active-tab","time-range-value","title","avatar","tabs","current-session-id","initial-time-state"]),t("div",hi,[e(z)?(o(),C(oe,{key:0,variant:"overlay"})):D("",!0),t("div",pi,[y(Ve,{name:"tab-slide",mode:"out-in"},{default:M(()=>[e(T)==="overview"?(o(),C(Ya,{key:"overview-"+e(h),session:e(V),"member-activity":e(N),"top-members":xe.value,"bottom-members":_e.value,"message-types":e(q),"hourly-activity":e(U),"daily-activity":e(se),"time-range":e(Q),"selected-year":e(he),"filtered-message-count":A.value,"filtered-member-count":H.value,"time-filter":e(G)},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"])):e(T)==="view"?(o(),C(Zn,{key:"view-"+e(h),"session-id":e(h),"session-name":e(V).name,"time-filter":e(G)},null,8,["session-id","session-name","time-filter"])):e(T)==="ai-chat"?(o(),C(e(Bt),{key:"ai-chat-"+e(h),"session-id":e(h),"session-name":e(V).name,"chat-type":"group"},null,8,["session-id","session-name"])):e(T)==="memory"?(o(),C(Wt,{key:"memory-"+e(h),"session-id":e(h),"session-name":e(V).name},null,8,["session-id","session-name"])):e(T)==="lab"?(o(),C(Ot,{key:"lab-"+e(h),"session-id":e(h),"session-name":e(V).name,"time-filter":e(G),"chat-type":"group",mode:"sql-only"},null,8,["session-id","session-name","time-filter"])):e(T)==="debug"?(o(),C(e(jt),{key:"debug-"+e(h),"session-id":e(h)},null,8,["session-id"])):D("",!0)]),_:1})])]),y(At,{onOpenIncrementalImport:L[6]||(L[6]=F=>i.value=!0),onOpenSessionIndex:L[7]||(L[7]=F=>b.value=!0),onOpenSemanticIndex:L[8]||(L[8]=F=>x.value=!0),onOpenMemberManagement:L[9]||(L[9]=F=>w.value=!0),onOpenChatRecord:g,onOpenMessageExport:L[10]||(L[10]=F=>f.value=!0)}),e(p).debugMode?(o(),C(Et,{key:0})):D("",!0)],64)):(o(),k("div",gi,[t("p",fi,c(e(a)("analysis.groupChat.loadError")),1)])),e(h)&&e(V)&&e(V).messageCount>0?(o(),C(zt,{key:3,modelValue:b.value,"onUpdate:modelValue":L[11]||(L[11]=F=>b.value=F),"session-id":e(h),"message-count":e(V).messageCount},null,8,["modelValue","session-id","message-count"])):D("",!0),e(h)&&e(V)?(o(),C(Ut,{key:4,modelValue:x.value,"onUpdate:modelValue":L[12]||(L[12]=F=>x.value=F),"session-id":e(h),"message-count":e(V).messageCount},null,8,["modelValue","session-id","message-count"])):D("",!0),e(h)&&e(V)&&!b.value?(o(),C(Ft,{key:5,modelValue:r.value,"onUpdate:modelValue":L[13]||(L[13]=F=>r.value=F),"session-id":e(h),"chat-type":"group","auto-check":""},null,8,["modelValue","session-id"])):D("",!0),e(h)&&e(V)?(o(),C(Ht,{key:6,modelValue:i.value,"onUpdate:modelValue":L[14]||(L[14]=F=>i.value=F),"session-id":e(h),"session-name":e(V).name,onImported:L[15]||(L[15]=()=>{e(ye)(),e(l).loadSessions()})},null,8,["modelValue","session-id","session-name"])):D("",!0),e(h)?(o(),C(e(s),{key:7,modelValue:f.value,"onUpdate:modelValue":L[16]||(L[16]=F=>f.value=F)},null,8,["modelValue"])):D("",!0),e(h)?(o(),C(ue,{key:8,open:w.value,"onUpdate:open":L[18]||(L[18]=F=>w.value=F),ui:{content:"max-w-6xl h-[85vh]"}},{content:M(()=>[t("div",yi,[t("div",xi,[t("div",null,[t("h2",bi,c(e(a)("analysis.tooltip.memberManagement")),1),t("p",ki,c(e(a)("members.list.description",{count:e(V)?.memberCount??0})),1)]),t("div",_i,[y(mi,{"session-id":e(h)},null,8,["session-id"]),y(ne,{variant:"ghost",icon:"i-heroicons-x-mark",size:"sm",onClick:L[17]||(L[17]=F=>w.value=!1)})])]),t("div",wi,[y(Zl,{"session-id":e(h),"show-header":!1,onDataChanged:e(ye)},null,8,["session-id","onDataChanged"])])])]),_:1},8,["open"])):D("",!0)])}}}),Ni=Le($i,[["__scopeId","data-v-171dcd94"]]);export{Ni as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{C,n as B,b as N,d as $,u as I,e as L}from"./vendor-nuxt-ui-Zy8txNdC.js";import{p as R,b as c,P as _,a5 as o,T as r,u as s,a9 as S,L as i,K as x,U as h,G as g,R as D}from"./vendor-reka-ui-mMvma1EP.js";import{u as W,a as z}from"./index-
|
|
1
|
+
import{C,n as B,b as N,d as $,u as I,e as L}from"./vendor-nuxt-ui-Zy8txNdC.js";import{p as R,b as c,P as _,a5 as o,T as r,u as s,a9 as S,L as i,K as x,U as h,G as g,R as D}from"./vendor-reka-ui-mMvma1EP.js";import{u as W,a as z}from"./index-B3mDjury.js";import"./vendor-snapdom-XnBoh1gd.js";const A={class:"flex min-h-screen items-center justify-center bg-gray-50 dark:bg-gray-900"},E={class:"w-full max-w-sm space-y-6 rounded-xl bg-white p-8 shadow-lg dark:bg-gray-800"},F={class:"text-center"},M={class:"mt-2 text-sm text-gray-500 dark:text-gray-400"},P={key:0,class:"text-sm text-red-500"},T={class:"flex items-center gap-2 text-sm text-gray-600 dark:text-gray-400"},j={class:"text-center text-xs text-gray-400 dark:text-gray-500"},q={key:0,class:"text-center text-xs text-amber-500 dark:text-amber-400"},Q=R({__name:"index",setup(G){const{t:e}=W(),v=$(),y=I(),f=z(),m=c(""),l=c(f.rememberDevice),n=c(""),u=c(!1);function b(t){return!t||!t.startsWith("/")||t.startsWith("/login")?"/":t}async function k(){const t=m.value.trim();if(!t){n.value=e("common.login.errorEmpty");return}u.value=!0,n.value="";try{if(!(await fetch("/api/v1/status",{headers:{Authorization:`Bearer ${t}`}})).ok){n.value=e("common.login.errorInvalid");return}f.login(t,l.value);const d=b(y.query.redirect);v.replace(d)}catch{n.value=e("common.login.errorNetwork")}finally{u.value=!1}}return(t,a)=>{const d=L,V=C,w=B,U=N;return g(),_("div",A,[o("div",E,[o("div",F,[a[2]||(a[2]=o("h1",{class:"text-2xl font-bold text-gray-900 dark:text-white"},"ChatLab",-1)),o("p",M,r(s(e)("common.login.description")),1)]),o("form",{class:"space-y-4",onSubmit:S(k,["prevent"])},[i(V,{label:s(e)("common.login.tokenLabel")},{default:x(()=>[i(d,{modelValue:m.value,"onUpdate:modelValue":a[0]||(a[0]=p=>m.value=p),type:"password",placeholder:s(e)("common.login.tokenPlaceholder"),autocomplete:"off",class:"w-full"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),n.value?(g(),_("p",P,r(n.value),1)):h("",!0),o("label",T,[i(w,{modelValue:l.value,"onUpdate:modelValue":a[1]||(a[1]=p=>l.value=p)},null,8,["modelValue"]),o("span",null,r(s(e)("common.login.rememberDevice")),1)]),i(U,{type:"submit",block:"",loading:u.value,color:"primary"},{default:x(()=>[D(r(s(e)("common.login.submit")),1)]),_:1},8,["loading"])],32),o("p",j,r(s(e)("common.login.hint")),1),l.value?(g(),_("p",q,r(s(e)("common.login.rememberWarning")),1)):h("",!0)])])}}});export{Q as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{W as a}from"./index-B3mDjury.js";import"./vendor-reka-ui-mMvma1EP.js";import"./vendor-nuxt-ui-Zy8txNdC.js";import"./vendor-snapdom-XnBoh1gd.js";class u{async getVersion(){return"0.27.1"}async fetchRemoteConfig(e){try{const r=await fetch(e);return r.ok?{success:!0,data:await r.json()}:{success:!1,error:`HTTP ${r.status}`}}catch(r){return{success:!1,error:String(r)}}}setThemeSource(e){}async getOpenAtLogin(){return!1}async setOpenAtLogin(e){return{success:!1,error:"Not available in web mode"}}async getAnalyticsEnabled(){return!1}async setAnalyticsEnabled(e){return{success:!1}}async showOpenDialog(e){return{canceled:!0,filePaths:[]}}async copyImageToClipboard(e){return{success:!1,error:"Not available in web mode"}}async checkUpdate(){try{return await(await a("/_web/system/check-update")).json()}catch(e){return{hasUpdate:!1,currentVersion:"unknown",error:e instanceof Error?e.message:String(e)}}}async performUpdate(){return{success:!1,error:"Web update is unavailable. Run clb update in your terminal."}}async relaunch(){window.location.reload()}}export{u as WebPlatformAdapter};
|