chatlab-cli 0.31.1 → 0.31.2
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/dist/{chat-command-MOETAGU5.mjs → chat-command-QPL4GNHP.mjs} +8 -8
- package/dist/{chunk-VOVLPSG6.mjs → chunk-3SZWD7UM.mjs} +4 -4
- package/dist/{chunk-2IXPWPLR.mjs → chunk-64FKPYPJ.mjs} +11 -11
- package/dist/{chunk-3VMKS7PU.mjs → chunk-6JKKHPXY.mjs} +2 -2
- package/dist/{chunk-SZEBCNBB.mjs → chunk-BSSR4ZYW.mjs} +10 -10
- package/dist/{chunk-7HBVGVOB.mjs → chunk-F2NZ7HAY.mjs} +2 -2
- package/dist/{chunk-KCPGEILH.mjs → chunk-GYPBWKAU.mjs} +4 -4
- package/dist/{chunk-DQ45LDKZ.mjs → chunk-IK7GJTGY.mjs} +9 -6
- package/dist/chunk-IK7GJTGY.mjs.map +1 -0
- package/dist/{chunk-LJXSUN25.mjs → chunk-OAXVKNPN.mjs} +2 -2
- package/dist/{chunk-ZVWUR7ET.mjs → chunk-OQ6N4PDD.mjs} +2 -2
- package/dist/{chunk-E6W2RURS.mjs → chunk-S5PQM5J4.mjs} +3 -3
- package/dist/{chunk-N5AGDT7I.mjs → chunk-ZCXCHKQV.mjs} +3 -3
- package/dist/cli.mjs +8 -8
- package/dist/contacts-worker.mjs +2 -2
- package/dist/global-insight-worker.mjs +1 -1
- package/dist/{http-M6NHWJZD.mjs → http-NOEWVWCP.mjs} +11 -11
- package/dist/{import-SEYHFXS5.mjs → import-RS3HW7ZM.mjs} +7 -7
- package/dist/index.mjs +11 -11
- package/dist/{mcp-MIPFYRLV.mjs → mcp-7F3G47Z4.mjs} +8 -8
- package/dist/people-relationships-worker.mjs +2 -2
- package/dist/semantic-index-worker.mjs +1 -1
- package/dist/{src-7OD6RD5V.mjs → src-MNH5S423.mjs} +6 -6
- package/dist/{stream-import-AWEHGQJY.mjs → stream-import-BPCHGRAN.mjs} +7 -7
- package/dist/{worker-runtime-TGYMASIE.mjs → worker-runtime-TTAXGQ5R.mjs} +5 -5
- package/dist-web/assets/{ActionToolsPanel-fAio70bI.css → ActionToolsPanel-CbWhu_Uv.css} +1 -1
- package/dist-web/assets/ActionToolsPanel.vue_vue_type_script_setup_true_lang-CvvNqXuh.js +110 -0
- package/dist-web/assets/{BufferResource-CHI62pIA.js → BufferResource-Dh2kaMuP.js} +1 -1
- package/dist-web/assets/{CanvasRenderer-OZRoiF0j.js → CanvasRenderer-B8hHywwz.js} +1 -1
- package/dist-web/assets/EChartWordcloud-BXC_4nUP.js +1 -0
- package/dist-web/assets/{Filter-DNb5VErW.js → Filter-Bap1KMW6.js} +1 -1
- package/dist-web/assets/LoadingState.vue_vue_type_script_setup_true_lang-B2KAoiMG.js +1 -0
- package/dist-web/assets/MessageExportModal-H3-LAaXY.js +1 -0
- package/dist-web/assets/PageHeader-CzTV_lyM.js +1 -0
- package/dist-web/assets/{RelationshipGalaxyCanvas-ioRNObb5.js → RelationshipGalaxyCanvas-C6ZoUZNc.js} +4 -4
- package/dist-web/assets/{RelationshipGalaxyThreeCanvas-L1Y43p1A.js → RelationshipGalaxyThreeCanvas-DV6B-7XB.js} +1 -1
- package/dist-web/assets/{RenderTargetSystem-fJ7D7Chv.js → RenderTargetSystem-Dpgyoac_.js} +1 -1
- package/dist-web/assets/ThemeCard.vue_vue_type_script_setup_true_lang-BWJ6kuSC.js +1 -0
- package/dist-web/assets/TimeSelect.vue_vue_type_script_setup_true_lang--Tbo7p-l.js +1 -0
- package/dist-web/assets/{WebGLRenderer-BD3ZUtxH.js → WebGLRenderer-DICnsAm5.js} +1 -1
- package/dist-web/assets/{WebGPURenderer-DZXYsT6D.js → WebGPURenderer-Bf0gkRK9.js} +1 -1
- package/dist-web/assets/annual-summary-time-range-CK0IIPsY.js +1 -0
- package/dist-web/assets/{base-DTElkJcC.js → base-D5T8QZ8b.js} +1 -1
- package/dist-web/assets/{browserAll-ChT6N6a9.js → browserAll-DcoCy7xY.js} +1 -1
- package/dist-web/assets/dateFormat-BDOkdsCR.js +1 -0
- package/dist-web/assets/{electron-CIzyGxH_.js → electron-CmhzSjaH.js} +1 -1
- package/dist-web/assets/{fetch-DnGx-1_t.js → fetch-BJka-sCN.js} +1 -1
- package/dist-web/assets/{fetch-wSSfDBdV.js → fetch-BddgpyKJ.js} +1 -1
- package/dist-web/assets/{fetch-C9rx2isC.js → fetch-C1mlq5VY.js} +1 -1
- package/dist-web/assets/{fetch-BFnrBahy.js → fetch-CNz28Lv5.js} +1 -1
- package/dist-web/assets/{fetch-CyKILLnB.js → fetch-D71bG6Fc.js} +1 -1
- package/dist-web/assets/{fetch-qC7om4QG.js → fetch-D8xv4lgE.js} +1 -1
- package/dist-web/assets/{fetch-CuiQUcO_.js → fetch-DfTM4Dah.js} +1 -1
- package/dist-web/assets/{fetch-Avtnh8cJ.js → fetch-DtcNaN3d.js} +1 -1
- package/dist-web/assets/{fetch-Ccq_0ecb.js → fetch-TATpgXht.js} +1 -1
- package/dist-web/assets/{fetch-Dd6t3p1r.js → fetch-dI5w8lYN.js} +1 -1
- package/dist-web/assets/index-Bs4ZX2-v.js +24 -0
- package/dist-web/assets/index-CAjUCtGD.css +1 -0
- package/dist-web/assets/index-CF59LLOG.js +25 -0
- package/dist-web/assets/index-CJ3WtSLo.js +173 -0
- package/dist-web/assets/index-CJS6FVuj.js +64 -0
- package/dist-web/assets/index-CY5yJhCJ.js +1 -0
- package/dist-web/assets/{index-y7cxH1Et.css → index-CsqMIyA9.css} +1 -1
- package/dist-web/assets/index-CtmXho1w.css +1 -0
- package/dist-web/assets/index-DClxj4T2.js +2 -0
- package/dist-web/assets/index-De3ImZb9.js +1 -0
- package/dist-web/assets/{index-DXHYzIIj.js → index-Dp3gCHpK.js} +1 -1
- package/dist-web/assets/index-DphjBwbA.js +1 -0
- package/dist-web/assets/index-Dtbu8m1o.js +1 -0
- package/dist-web/assets/index-a1ZrlsKo.js +1 -0
- package/dist-web/assets/index-qZ7jnIna.js +2 -0
- package/dist-web/assets/index-soX5gDgh.js +1 -0
- package/dist-web/assets/people-page-header-D93GTPBO.js +1 -0
- package/dist-web/assets/vendor-nuxt-ui-DUpPmItD.js +15 -0
- package/dist-web/assets/vendor-reka-ui-BLnO2MqY.js +15 -0
- package/dist-web/assets/vendor-snapdom--nZvo8Sg.js +8 -0
- package/dist-web/assets/web-H9T1dZys.js +1 -0
- package/dist-web/assets/{webworkerAll-C3dAOQj4.js → webworkerAll-D1Kui8G8.js} +1 -1
- package/dist-web/index.html +5 -5
- package/package.json +1 -1
- package/dist/chunk-DQ45LDKZ.mjs.map +0 -1
- package/dist-web/assets/ActionToolsPanel.vue_vue_type_script_setup_true_lang-CkDGVRXe.js +0 -110
- package/dist-web/assets/EChartWordcloud-DU3ZYdgz.js +0 -1
- package/dist-web/assets/LoadingState.vue_vue_type_script_setup_true_lang-DACMroOe.js +0 -1
- package/dist-web/assets/MessageExportModal-CqP-w7HP.js +0 -1
- package/dist-web/assets/PageHeader-Ck8ULyZH.js +0 -1
- package/dist-web/assets/ThemeCard.vue_vue_type_script_setup_true_lang-BoZyssJF.js +0 -1
- package/dist-web/assets/TimeSelect.vue_vue_type_script_setup_true_lang-7SEaCxDL.js +0 -1
- package/dist-web/assets/annual-summary-time-range-DVLXK1r4.js +0 -1
- package/dist-web/assets/dateFormat-D9WibwOu.js +0 -1
- package/dist-web/assets/index-BH9jI5kV.js +0 -173
- package/dist-web/assets/index-BWtNqcYK.js +0 -22
- package/dist-web/assets/index-Bkq7-GBp.js +0 -1
- package/dist-web/assets/index-Bqr-LkS1.css +0 -1
- package/dist-web/assets/index-C6qtsaP7.js +0 -1
- package/dist-web/assets/index-C_0GHEcb.css +0 -1
- package/dist-web/assets/index-ChFGuu70.js +0 -1
- package/dist-web/assets/index-CiS20iAR.js +0 -24
- package/dist-web/assets/index-CqD6u57u.js +0 -1
- package/dist-web/assets/index-CzDG8LVr.js +0 -2
- package/dist-web/assets/index-D0Euk-vQ.js +0 -1
- package/dist-web/assets/index-D26BWhHz.js +0 -1
- package/dist-web/assets/index-Dq8u7gMb.js +0 -2
- package/dist-web/assets/index-u_UH6rDY.js +0 -64
- package/dist-web/assets/people-page-header-BdKM1qhX.js +0 -1
- package/dist-web/assets/vendor-nuxt-ui-CS1uxE9C.js +0 -15
- package/dist-web/assets/vendor-reka-ui-Cta6JPvN.js +0 -11
- package/dist-web/assets/vendor-snapdom-XnBoh1gd.js +0 -8
- package/dist-web/assets/web-BDBdpdK7.js +0 -1
- /package/dist/{chat-command-MOETAGU5.mjs.map → chat-command-QPL4GNHP.mjs.map} +0 -0
- /package/dist/{chunk-VOVLPSG6.mjs.map → chunk-3SZWD7UM.mjs.map} +0 -0
- /package/dist/{chunk-2IXPWPLR.mjs.map → chunk-64FKPYPJ.mjs.map} +0 -0
- /package/dist/{chunk-3VMKS7PU.mjs.map → chunk-6JKKHPXY.mjs.map} +0 -0
- /package/dist/{chunk-SZEBCNBB.mjs.map → chunk-BSSR4ZYW.mjs.map} +0 -0
- /package/dist/{chunk-7HBVGVOB.mjs.map → chunk-F2NZ7HAY.mjs.map} +0 -0
- /package/dist/{chunk-KCPGEILH.mjs.map → chunk-GYPBWKAU.mjs.map} +0 -0
- /package/dist/{chunk-LJXSUN25.mjs.map → chunk-OAXVKNPN.mjs.map} +0 -0
- /package/dist/{chunk-ZVWUR7ET.mjs.map → chunk-OQ6N4PDD.mjs.map} +0 -0
- /package/dist/{chunk-E6W2RURS.mjs.map → chunk-S5PQM5J4.mjs.map} +0 -0
- /package/dist/{chunk-N5AGDT7I.mjs.map → chunk-ZCXCHKQV.mjs.map} +0 -0
- /package/dist/{http-M6NHWJZD.mjs.map → http-NOEWVWCP.mjs.map} +0 -0
- /package/dist/{import-SEYHFXS5.mjs.map → import-RS3HW7ZM.mjs.map} +0 -0
- /package/dist/{mcp-MIPFYRLV.mjs.map → mcp-7F3G47Z4.mjs.map} +0 -0
- /package/dist/{src-7OD6RD5V.mjs.map → src-MNH5S423.mjs.map} +0 -0
- /package/dist/{stream-import-AWEHGQJY.mjs.map → stream-import-BPCHGRAN.mjs.map} +0 -0
- /package/dist/{worker-runtime-TGYMASIE.mjs.map → worker-runtime-TTAXGQ5R.mjs.map} +0 -0
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/MessageExportModal-CqP-w7HP.js","assets/vendor-nuxt-ui-CS1uxE9C.js","assets/vendor-reka-ui-Cta6JPvN.js","assets/index-BWtNqcYK.js","assets/vendor-snapdom-XnBoh1gd.js","assets/index-Bqr-LkS1.css"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{_ as Re}from"./vendor-snapdom-XnBoh1gd.js";import{_ as ae,f as je,d as Ce,c as Le,j as Ve,g as Se,e as ze,u as De}from"./vendor-nuxt-ui-CS1uxE9C.js";import{p as Z,w as X,d as de,F as fe,G as n,H as B,u as t,K as W,P as u,a5 as e,T as s,Z as H,a3 as Q,Q as O,U as R,L as h,a0 as oe,h as M,b as N,_ as Be,O as Oe,bw as Pe,R as ye,a9 as Ne,i as we,bA as Ue}from"./vendor-reka-ui-Cta6JPvN.js";import{u as ee,x as xe,T as Fe,r as ke,k as ce,w as Ee,m as Ie,o as We,y as Ke,s as He,z as Ge}from"./index-BWtNqcYK.js";import{_ as Me,a as Te,b as Je,c as _e,d as $e,e as Qe,u as Ye,f as Ze,g as Xe,h as et,i as tt,j as st,k as at,l as nt,m as it,n as lt,o as ot,C as rt,p as ct,A as dt,D as ut}from"./ActionToolsPanel.vue_vue_type_script_setup_true_lang-CkDGVRXe.js";import{g as mt,a as gt}from"./base-DTElkJcC.js";import"./vendor-echarts-wordcloud-Ca8n6qS6.js";import{_ as pe}from"./LoadingState.vue_vue_type_script_setup_true_lang-DACMroOe.js";import{u as ve,x as pt,j as be,i as he,k as re,n as qe,t as Ae,s as ft,m as xt}from"./vendor-echarts-B-i_56Av.js";import{_ as ue}from"./ThemeCard.vue_vue_type_script_setup_true_lang-BoZyssJF.js";import"./index-CiS20iAR.js";import"./dateFormat-D9WibwOu.js";import"./TimeSelect.vue_vue_type_script_setup_true_lang-7SEaCxDL.js";import"./PageHeader-Ck8ULyZH.js";import"./vendor-zrender-5DcYjSZk.js";const vt={key:0,class:"relative z-10 flex flex-col h-full"},bt={class:"flex flex-col sm:flex-row items-center sm:items-start gap-6 px-6 pt-8 pb-4 sm:px-8"},ht={class:"w-full flex-1 min-w-0"},yt={class:"flex items-center gap-x-2 sm:gap-x-3 mb-6 sm:mb-8"},_t={class:"text-2xl sm:text-4xl font-black tracking-tight text-blue-600 dark:text-blue-400 truncate"},kt={class:"text-2xl sm:text-4xl font-black tracking-tight text-pink-600 dark:text-pink-400 truncate"},wt={class:"grid grid-cols-2 gap-4 sm:gap-10"},$t={class:"text-[10px] font-bold uppercase tracking-widest text-gray-400 dark:text-gray-500"},Ct={class:"flex flex-col gap-2.5"},St=["title","onClick"],Pt={class:"shrink-0 text-[10px] sm:text-xs font-semibold tabular-nums text-gray-400/80"},It={key:0,class:"text-xs sm:text-sm font-medium text-gray-400"},Mt={class:"hidden shrink-0 sm:block"},Tt={class:"px-6 pb-6 pt-2 sm:px-8 mt-auto"},qt={class:"mb-3 flex items-center justify-between"},At={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"},jt={class:"mb-4 flex items-center gap-2.5"},Lt={class:"text-sm font-bold tracking-wide text-gray-900 dark:text-white"},Vt={class:"flex items-center justify-between mb-4 w-full"},zt={class:"flex flex-col flex-1 min-w-0"},Dt={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"},Ot={class:"truncate text-[10px] font-bold uppercase tracking-wider text-gray-400 mb-1"},Nt={class:"mt-auto pt-3 border-t border-gray-100 dark:border-white/5 flex flex-col"},Ut={key:0,class:"flex items-start justify-between gap-2 mb-2 min-h-[24px]"},Ft={class:"flex flex-1 flex-nowrap overflow-hidden gap-1"},Et={key:0,class:"text-[11px] text-gray-400"},Wt={class:"flex flex-1 flex-nowrap overflow-hidden gap-1 justify-end"},Kt={key:0,class:"text-[11px] text-gray-400"},Ht={key:1,class:"flex flex-nowrap overflow-hidden items-center gap-x-1.5 mb-2 min-h-[24px]"},Gt=["onClick"],Jt={key:0,class:"shrink-0 text-gray-300 dark:text-gray-600 font-normal"},Qt={key:0,class:"text-[11px] text-gray-400"},Yt={class:"text-[10px] leading-relaxed text-gray-500 dark:text-gray-400"},Zt={class:"flex items-center justify-between px-6 pb-4 opacity-40 mix-blend-luminosity dark:opacity-30 sm:px-8 sm:pb-5"},Xt={class:"flex items-center gap-1.5"},es={class:"text-[9px] font-medium uppercase tracking-widest"},ts=Z({__name:"LanguagePreferenceCard",props:{data:{}},emits:["wordClick"],setup(k,{emit:a}){ve([pt,be,he]);const{t:d}=ee(),w=xe(),i=k,g=a,I=M(()=>i.data.members[0]),y=M(()=>i.data.members[1]);function c(m,l){return m.length<=l?m:m.slice(0,l)+"…"}function T(m){const l=m.posDistribution,_=l.noun+l.verb+l.adjective+l.adverb+l.modalParticle+l.interjection+l.other;return _===0?d("quotes.languagePreference.pos.styleBalanced"):l.noun/_>.5?d("quotes.languagePreference.pos.styleEncyclopedia"):l.verb/_>.45?d("quotes.languagePreference.pos.styleAction"):l.adjective/_>.3?d("quotes.languagePreference.pos.styleExpressive"):d("quotes.languagePreference.pos.styleBalanced")}function D(m){const _=[["ellipsis",m.ellipsis],["exclamation",m.exclamation],["question",m.question],["tilde",m.tilde],["noPunct",m.noPunct],["period",m.period]].reduce((A,v)=>A[1]>=v[1]?A:v);return{ellipsis:d("quotes.languagePreference.punctuation.personalityDeep"),exclamation:d("quotes.languagePreference.punctuation.personalityPassionate"),question:d("quotes.languagePreference.punctuation.personalityCurious"),tilde:d("quotes.languagePreference.punctuation.personalityCheerful"),noPunct:d("quotes.languagePreference.punctuation.personalityFreeflow"),period:d("quotes.languagePreference.punctuation.personalityPrecise")}[_[0]]||"-"}function q(m,l=5){return[["...",m.ellipsis],["!",m.exclamation],["?",m.question],["~",m.tilde],["。",m.period]].filter(([,x])=>x>0).sort((x,A)=>A[1]-x[1]).slice(0,l).map(([x])=>x)}const V=["#6366f1","#ec4899","#f97316","#22c55e","#3b82f6","#8b5cf6","#14b8a6","#f43f5e","#eab308","#06b6d4"],b=M(()=>{const m=I.value,l=y.value;if(!m||!l)return[];const _=i.data.sharedWords.slice(0,6).map((x,A)=>({word:x.word,color:V[A%V.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:d("quotes.languagePreference.card.diversityTitle"),leftName:m.name,leftValue:`${m.lexicalDiversity}%`,rightName:l.name,rightValue:`${l.lexicalDiversity}%`,valueClass:"text-lg text-blue-600 dark:text-blue-400",detail:{kind:"tags-single",tags:_},desc:d("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:d("quotes.languagePreference.card.styleTitle"),leftName:m.name,leftValue:T(m),rightName:l.name,rightValue:T(l),valueClass:"text-xs text-violet-600 dark:text-violet-400",detail:{kind:"tags-vs",leftTags:m.modalParticles.slice(0,4).map(x=>x.word),rightTags:l.modalParticles.slice(0,4).map(x=>x.word)},desc:d("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:d("quotes.languagePreference.card.punctTitle"),leftName:m.name,leftValue:D(m.punctuation),rightName:l.name,rightValue:D(l.punctuation),valueClass:"text-xs text-orange-600 dark:text-orange-400",detail:{kind:"tags-vs",leftTags:q(m.punctuation,4),rightTags:q(l.punctuation,4)},desc:d("quotes.languagePreference.card.punctDesc")}]}),j=N(null);let o=null;function p(){j.value&&(o=re(j.value,void 0,{renderer:"canvas"}),$())}function $(){if(!o||!I.value||!y.value)return;const m=I.value.posDistribution,l=y.value.posDistribution,_=[{name:d("quotes.languagePreference.card.radarFactual"),max:0},{name:d("quotes.languagePreference.card.radarActive"),max:0},{name:d("quotes.languagePreference.card.radarDescriptive"),max:0},{name:d("quotes.languagePreference.card.radarAffable"),max:0},{name:d("quotes.languagePreference.card.radarIntense"),max:0}],x=[m.noun,m.verb,m.adjective,m.modalParticle+m.interjection,m.adverb],A=[l.noun,l.verb,l.adjective,l.modalParticle+l.interjection,l.adverb];for(let S=0;S<_.length;S++)_[S].max=Math.max(x[S],A[S],1)*1.3;const v=w.value?"#9ca3af":"#6b7280";o.setOption({backgroundColor:"transparent",tooltip:{trigger:"item"},legend:{bottom:0,itemWidth:10,itemHeight:10,textStyle:{fontSize:10,color:v},data:[I.value.name,y.value.name]},radar:{indicator:_,radius:"60%",center:["50%","50%"],splitArea:{areaStyle:{color:w.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:v,fontSize:10},splitLine:{lineStyle:{color:w.value?"rgba(255,255,255,0.08)":"rgba(0,0,0,0.06)"}},axisLine:{lineStyle:{color:w.value?"rgba(255,255,255,0.1)":"rgba(0,0,0,0.08)"}}},series:[{type:"radar",data:[{value:x,name:I.value.name,lineStyle:{color:"#3b82f6",width:2},areaStyle:{color:"rgba(59,130,246,0.15)"},itemStyle:{color:"#3b82f6"},symbol:"circle",symbolSize:4},{value:A,name:y.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 P(){o?.resize()}return X(()=>i.data,()=>$(),{deep:!0}),X(w,()=>{o?.dispose(),p()}),de(()=>{p(),window.addEventListener("resize",P)}),fe(()=>{window.removeEventListener("resize",P),o?.dispose()}),(m,l)=>{const _=ae;return n(),B(t(Me),null,{default:W(()=>[I.value&&y.value?(n(),u("div",vt,[e("div",bt,[e("div",ht,[e("div",yt,[e("span",_t,s(I.value.name),1),l[0]||(l[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",kt,s(y.value.name),1)]),e("div",wt,[(n(!0),u(H,null,Q([I.value,y.value],(x,A)=>(n(),u("div",{key:x.memberId,class:"flex flex-col gap-3"},[e("div",$t,s(t(d)("quotes.languagePreference.card.topCatchphrases")),1),e("div",Ct,[(n(!0),u(H,null,Q(x.catchphrases.slice(0,3),(v,S)=>(n(),u("div",{key:S,class:"flex items-center gap-2 group"},[e("span",{class:O(["text-xs sm:text-sm font-black font-mono opacity-40 transition-opacity group-hover:opacity-100",A===0?"text-blue-600 dark:text-blue-400":"text-pink-600 dark:text-pink-400"])}," #"+s(S+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:v.content,onClick:U=>g("wordClick",v.content)}," 「"+s(c(v.content,12))+"」 ",9,St),e("span",Pt," ×"+s(v.count),1)]))),128)),x.catchphrases.length===0?(n(),u("div",It,"-")):R("",!0)])]))),128))])]),e("div",Mt,[e("div",{ref_key:"radarRef",ref:j,style:{width:"250px",height:"230px"},class:"-mt-4 sm:-mr-4"},null,512)])]),e("div",Tt,[e("div",qt,[e("span",At,s(t(d)("quotes.languagePreference.card.languageProfiles")),1)]),e("div",Rt,[(n(!0),u(H,null,Q(b.value,x=>(n(),u("div",{key:x.title,class:"flex min-w-0 flex-col p-4"},[e("div",jt,[e("div",{class:O(["flex h-8 w-8 shrink-0 items-center justify-center rounded-lg",x.iconBgClass])},[h(_,{name:x.icon,class:O(["h-4 w-4",x.iconColorClass])},null,8,["name","class"])],2),e("span",Lt,s(x.title),1)]),e("div",Vt,[e("div",zt,[e("span",Dt,s(x.leftName),1),e("span",{class:O(["truncate text-xl font-black font-mono leading-none",x.valueClass])},s(x.leftValue),3)]),l[1]||(l[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",Ot,s(x.rightName),1),e("span",{class:O(["truncate text-xl font-black font-mono leading-none",x.valueClass])},s(x.rightValue),3)])]),e("div",Nt,[x.detail.kind==="tags-vs"?(n(),u("div",Ut,[e("div",Ft,[(n(!0),u(H,null,Q(x.detail.leftTags,A=>(n(),u("span",{key:A,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(A),1))),128)),x.detail.leftTags.length===0?(n(),u("span",Et,"-")):R("",!0)]),e("div",Wt,[(n(!0),u(H,null,Q(x.detail.rightTags,A=>(n(),u("span",{key:A,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(A),1))),128)),x.detail.rightTags.length===0?(n(),u("span",Kt,"-")):R("",!0)])])):x.detail.kind==="tags-single"?(n(),u("div",Ht,[(n(!0),u(H,null,Q(x.detail.tags.slice(0,6),(A,v)=>(n(),u(H,{key:A.word},[e("span",{class:"shrink-0 cursor-pointer text-[11px] font-bold transition-opacity hover:opacity-80",style:oe({color:A.color}),onClick:S=>g("wordClick",A.word)},s(A.word),13,Gt),v<x.detail.tags.slice(0,6).length-1?(n(),u("span",Jt," · ")):R("",!0)],64))),128)),x.detail.tags.length===0?(n(),u("span",Qt,"-")):R("",!0)])):R("",!0),e("p",Yt,s(x.desc),1)])]))),128))])]),e("div",Zt,[e("div",Xt,[h(_,{name:"i-heroicons-chat-bubble-left-right-solid",class:"h-3.5 w-3.5"}),l[2]||(l[2]=e("span",{class:"text-[10px] font-bold uppercase tracking-wider"},"ChatLab",-1))]),e("span",es,s(t(d)("quotes.languagePreference.card.watermark")),1)])])):R("",!0)]),_:1})}}}),ss={class:"px-5 py-4 sm:px-6"},as={class:"mb-4 flex items-center justify-between"},ns={class:"flex items-center gap-2"},is={class:"text-[15px] font-black tracking-tight text-gray-900 dark:text-white"},ls={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"},os={key:0,class:"grid grid-cols-2 gap-6"},rs={class:"mb-3 text-center"},cs={class:"text-sm font-semibold text-blue-600 dark:text-blue-400"},ds={class:"flex flex-wrap gap-2"},us=["title","onClick"],ms={class:"text-[10px] font-semibold opacity-60"},gs={class:"mb-3 text-center"},ps={class:"text-sm font-semibold text-pink-600 dark:text-pink-400"},fs={class:"flex flex-wrap gap-2"},xs=["title","onClick"],vs={class:"text-[10px] font-semibold opacity-60"},bs={class:"mt-4 text-center text-xs text-gray-500 dark:text-gray-400"},hs=Z({__name:"CatchphrasePKSection",props:{members:{}},emits:["wordClick"],setup(k,{emit:a}){const{t:d}=ee(),w=k,i=a,g=N(20),I=[{label:"10",value:10},{label:"20",value:20},{label:"30",value:30}],y=M(()=>w.members[0]),c=M(()=>w.members[1]),T=M(()=>y.value?.catchphrases.slice(0,g.value)??[]),D=M(()=>c.value?.catchphrases.slice(0,g.value)??[]),q=M(()=>{if(!y.value||!c.value)return new Set;const o=new Set(y.value.catchphrases.map($=>$.content)),p=new Set(c.value.catchphrases.map($=>$.content));return new Set([...o].filter($=>p.has($)))}),V=[{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 b(o){return o<V.length?V[o]:{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 j(o,p=20){return o.length<=p?o:o.slice(0,p)+"..."}return(o,p)=>{const $=ae;return n(),B(t(ue),null,{default:W(()=>[e("div",ss,[e("div",as,[e("div",ns,[h($,{name:"i-heroicons-chat-bubble-bottom-center-text",class:"h-4 w-4 text-indigo-500"}),e("span",is,s(t(d)("quotes.languagePreference.catchphrasePK.title")),1),q.value.size>0?(n(),u("span",ls,s(t(d)("quotes.languagePreference.catchphrasePK.sharedCount",{count:q.value.size})),1)):R("",!0)]),h(t(Fe),{modelValue:g.value,"onUpdate:modelValue":p[0]||(p[0]=P=>g.value=P),size:"xs",items:I},null,8,["modelValue"])]),y.value&&c.value?(n(),u("div",os,[e("div",null,[e("div",rs,[e("span",cs,s(y.value.name),1)]),e("div",ds,[(n(!0),u(H,null,Q(T.value,(P,m)=>(n(),u("div",{key:P.content,class:O(["inline-flex cursor-pointer items-center gap-1.5 rounded-full px-3 py-1 transition-opacity hover:opacity-75",[q.value.has(P.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":b(m).bg]]),title:P.content,onClick:l=>i("wordClick",P.content)},[m<3?(n(),u("span",{key:0,class:O(["flex h-4 w-4 shrink-0 items-center justify-center rounded-full text-[10px] font-bold",b(m).badge])},s(m+1),3)):R("",!0),e("span",{class:O(["text-[13px] font-medium",q.value.has(P.content)?"font-bold":b(m).text])},s(j(P.content)),3),e("span",ms,"×"+s(P.count),1)],10,us))),128))])]),e("div",null,[e("div",gs,[e("span",ps,s(c.value.name),1)]),e("div",fs,[(n(!0),u(H,null,Q(D.value,(P,m)=>(n(),u("div",{key:P.content,class:O(["inline-flex cursor-pointer items-center gap-1.5 rounded-full px-3 py-1 transition-opacity hover:opacity-75",[q.value.has(P.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":b(m).bg]]),title:P.content,onClick:l=>i("wordClick",P.content)},[m<3?(n(),u("span",{key:0,class:O(["flex h-4 w-4 shrink-0 items-center justify-center rounded-full text-[10px] font-bold",b(m).badge])},s(m+1),3)):R("",!0),e("span",{class:O(["text-[13px] font-medium",q.value.has(P.content)?"font-bold":b(m).text])},s(j(P.content)),3),e("span",vs,"×"+s(P.count),1)],10,xs))),128))])])])):R("",!0),e("p",bs,s(t(d)("quotes.languagePreference.catchphrasePK.hint")),1)])]),_:1})}}}),ys={class:"px-5 py-4 sm:px-6"},_s={class:"mb-4 flex items-center gap-2"},ks={class:"text-[15px] font-black tracking-tight text-gray-900 dark:text-white"},ws={class:"flex flex-col gap-4 lg:flex-row lg:gap-6"},$s={class:"flex-1"},Cs={key:0,class:"flex shrink-0 flex-col gap-3 lg:w-48"},Ss={class:"min-w-0"},Ps={class:"truncate text-xs font-semibold text-gray-500 dark:text-gray-400"},Is=Z({__name:"PosPortraitSection",props:{members:{}},setup(k){ve([qe,Ae,be,ft,he]);const{t:a}=ee(),d=xe(),w=k,i=M(()=>w.members[0]),g=M(()=>w.members[1]);function I(V){const b=V.posDistribution,j=b.noun+b.verb+b.adjective+b.adverb+b.modalParticle+b.interjection+b.other;if(j===0)return{label:a("quotes.languagePreference.pos.styleBalanced"),icon:"i-heroicons-scale-solid",colorClass:"text-cyan-600 dark:text-cyan-400"};const o=b.noun/j,p=b.verb/j,$=b.adjective/j;return o>.5?{label:a("quotes.languagePreference.pos.styleEncyclopedia"),icon:"i-heroicons-book-open-solid",colorClass:"text-indigo-600 dark:text-indigo-400"}:p>.45?{label:a("quotes.languagePreference.pos.styleAction"),icon:"i-heroicons-rocket-launch-solid",colorClass:"text-orange-600 dark:text-orange-400"}:$>.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 y=N(null);let c=null;function T(){y.value&&(c=re(y.value,void 0,{renderer:"canvas"}),D())}function D(){if(!c||!i.value||!g.value)return;const V=i.value.posDistribution,b=g.value.posDistribution,j=[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")],o=[V.noun,V.verb,V.adjective,V.modalParticle+V.interjection,V.adverb],p=[b.noun,b.verb,b.adjective,b.modalParticle+b.interjection,b.adverb],$=d.value?"#9ca3af":"#6b7280";c.setOption({backgroundColor:"transparent",tooltip:{trigger:"axis",axisPointer:{type:"shadow"}},legend:{data:[i.value.name,g.value.name],top:0,textStyle:{fontSize:11,color:$}},grid:{left:80,right:20,top:36,bottom:10},xAxis:{type:"value",show:!1},yAxis:{type:"category",data:j,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{fontSize:11,color:$}},series:[{name:i.value.name,type:"bar",data:o,itemStyle:{color:"#3b82f6",borderRadius:[0,4,4,0]},barGap:"20%",barCategoryGap:"40%"},{name:g.value.name,type:"bar",data:p,itemStyle:{color:"#ec4899",borderRadius:[0,4,4,0]}}]},{notMerge:!0})}function q(){c?.resize()}return X(()=>w.members,()=>D(),{deep:!0}),X(d,()=>{c?.dispose(),T()}),de(()=>{T(),window.addEventListener("resize",q)}),fe(()=>{window.removeEventListener("resize",q),c?.dispose()}),(V,b)=>{const j=ae;return n(),B(t(ue),null,{default:W(()=>[e("div",ys,[e("div",_s,[h(j,{name:"i-heroicons-chart-bar",class:"h-4 w-4 text-violet-500"}),e("span",ks,s(t(a)("quotes.languagePreference.pos.title")),1)]),e("div",ws,[e("div",$s,[e("div",{ref_key:"chartRef",ref:y,style:{width:"100%",height:"220px"}},null,512)]),i.value&&g.value?(n(),u("div",Cs,[(n(!0),u(H,null,Q([i.value,g.value],o=>(n(),u("div",{key:o.memberId,class:"flex min-w-0 items-center gap-3 px-1 py-3"},[h(j,{name:I(o).icon,class:O(["h-5 w-5 shrink-0",I(o).colorClass])},null,8,["name","class"]),e("div",Ss,[e("div",Ps,s(o.name),1),e("div",{class:O(["truncate text-sm font-bold",I(o).colorClass])},s(I(o).label),3)])]))),128))])):R("",!0)])])]),_:1})}}}),Ms={class:"px-5 py-4 sm:px-6"},Ts={class:"mb-4 flex items-center gap-2"},qs={class:"text-[15px] font-black tracking-tight text-gray-900 dark:text-white"},As={key:0,class:"grid grid-cols-1 gap-6 md:grid-cols-2"},Rs={class:"mb-2 flex items-center justify-between"},js={key:1,class:"flex h-[200px] items-center justify-center text-sm text-gray-400"},Ls=Z({__name:"ModalParticleSection",props:{members:{}},setup(k){ve([qe,Ae,be,he]);const{t:a}=ee(),d=xe(),w=k,i=M(()=>w.members[0]),g=M(()=>w.members[1]),I=new Set(["呀","哒","滴","啦","哇","耶"]),y=new Set(["呢","吗","嘛"]),c=new Set(["吧","喔","噢","嘛"]),T=new Set(["嗯","哦","额","呃"]);function D(P){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(P.modalParticles.length===0)return m;let l=0,_=0,x=0,A=0,v=0;for(const U of P.modalParticles)v+=U.count,I.has(U.word)&&(l+=U.count),y.has(U.word)&&(_+=U.count),c.has(U.word)&&(x+=U.count),T.has(U.word)&&(A+=U.count);if(v===0)return m;const S=Math.max(l,_,x,A);return S===l&&l/v>.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"}:S===_&&_/v>.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"}:S===x&&x/v>.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"}:S===A&&A/v>.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=N(null),V=N(null);let b=null,j=null;function o(P,m){const l=P.modalParticles.slice(0,8),_=d.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:l.map(x=>x.word).reverse(),axisLine:{show:!1},axisTick:{show:!1},axisLabel:{fontSize:12,color:_},inverse:!1},series:[{type:"bar",data:l.map(x=>x.count).reverse(),itemStyle:{color:m,borderRadius:[0,4,4,0]},barWidth:"50%",label:{show:!0,position:"right",fontSize:10,color:_,formatter:"{c}"}}]}}function p(){q.value&&i.value&&(b=re(q.value,void 0,{renderer:"canvas"}),b.setOption(o(i.value,"#3b82f6"),{notMerge:!0})),V.value&&g.value&&(j=re(V.value,void 0,{renderer:"canvas"}),j.setOption(o(g.value,"#ec4899"),{notMerge:!0}))}function $(){b?.resize(),j?.resize()}return X(()=>w.members,()=>{b&&i.value&&b.setOption(o(i.value,"#3b82f6"),{notMerge:!0}),j&&g.value&&j.setOption(o(g.value,"#ec4899"),{notMerge:!0})},{deep:!0}),X(d,()=>{b?.dispose(),j?.dispose(),p()}),de(()=>{p(),window.addEventListener("resize",$)}),fe(()=>{window.removeEventListener("resize",$),b?.dispose(),j?.dispose()}),(P,m)=>{const l=ae;return n(),B(t(ue),null,{default:W(()=>[e("div",Ms,[e("div",Ts,[h(l,{name:"i-heroicons-chat-bubble-oval-left-ellipsis",class:"h-4 w-4 text-pink-500"}),e("span",qs,s(t(a)("quotes.languagePreference.modal.title")),1)]),i.value&&g.value?(n(),u("div",As,[(n(!0),u(H,null,Q([i.value,g.value],(_,x)=>(n(),u("div",{key:_.memberId},[e("div",Rs,[e("span",{class:O(["text-sm font-semibold",x===0?"text-blue-600 dark:text-blue-400":"text-pink-600 dark:text-pink-400"])},s(_.name),3),e("span",{class:O(["rounded-full px-2 py-0.5 text-[10px] font-bold",D(_).colorClass])},s(D(_).label),3)]),_.modalParticles.length>0?(n(),u("div",{key:0,ref_for:!0,ref:A=>{x===0?q.value=A:V.value=A},style:{width:"100%",height:"200px"}},null,512)):(n(),u("div",js,s(t(a)("quotes.languagePreference.modal.empty")),1))]))),128))])):R("",!0)])]),_:1})}}}),Vs={class:"px-5 py-4 sm:px-6"},zs={class:"mb-4 flex items-center gap-2"},Ds={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"},Os={class:"mb-2 flex items-center gap-2"},Ns={key:1,class:"flex h-[200px] items-center justify-center text-sm text-gray-400"},Us=Z({__name:"PunctuationSection",props:{members:{}},setup(k){ve([xt,be,he]);const{t:a}=ee(),d=xe(),w=k,i=M(()=>w.members[0]),g=M(()=>w.members[1]),I=["#6366f1","#ec4899","#f97316","#22c55e","#06b6d4","#8b5cf6"];function y(p){const P=[["ellipsis",p.ellipsis],["exclamation",p.exclamation],["question",p.question],["tilde",p.tilde],["noPunct",p.noPunct],["period",p.period]].reduce((l,_)=>l[1]>=_[1]?l:_);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"}}[P[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(p){return[{name:"...",value:p.ellipsis},{name:"!",value:p.exclamation},{name:"?",value:p.question},{name:"~",value:p.tilde},{name:"。",value:p.period},{name:a("quotes.languagePreference.punctuation.none"),value:p.noPunct}].filter($=>$.value>0)}const T=N(null),D=N(null);let q=null,V=null;function b(p){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:d.value?"#9ca3af":"#6b7280",formatter:"{b}"},emphasis:{label:{show:!0,fontWeight:"bold"},scaleSize:4},data:p.map(($,P)=>({...$,itemStyle:{color:I[P%I.length]}}))}]}}function j(){T.value&&i.value&&(q=re(T.value,void 0,{renderer:"canvas"}),q.setOption(b(c(i.value.punctuation)),{notMerge:!0})),D.value&&g.value&&(V=re(D.value,void 0,{renderer:"canvas"}),V.setOption(b(c(g.value.punctuation)),{notMerge:!0}))}function o(){q?.resize(),V?.resize()}return X(()=>w.members,()=>{q&&i.value&&q.setOption(b(c(i.value.punctuation)),{notMerge:!0}),V&&g.value&&V.setOption(b(c(g.value.punctuation)),{notMerge:!0})},{deep:!0}),X(d,()=>{q?.dispose(),V?.dispose(),j()}),de(()=>{j(),window.addEventListener("resize",o)}),fe(()=>{window.removeEventListener("resize",o),q?.dispose(),V?.dispose()}),(p,$)=>{const P=ae;return n(),B(t(ue),null,{default:W(()=>[e("div",Vs,[e("div",zs,[h(P,{name:"i-heroicons-ellipsis-horizontal",class:"h-4 w-4 text-orange-500"}),e("span",Ds,s(t(a)("quotes.languagePreference.punctuation.title")),1)]),i.value&&g.value?(n(),u("div",Bs,[(n(!0),u(H,null,Q([i.value,g.value],(m,l)=>(n(),u("div",{key:m.memberId,class:"flex flex-col items-center"},[e("div",Os,[e("span",{class:O(["text-sm font-semibold",l===0?"text-blue-600 dark:text-blue-400":"text-pink-600 dark:text-pink-400"])},s(m.name),3),e("span",{class:O(["rounded-full px-2 py-0.5 text-[10px] font-bold",y(m.punctuation).colorClass])},s(y(m.punctuation).label),3)]),m.punctuation.total>0?(n(),u("div",{key:0,ref_for:!0,ref:_=>{l===0?T.value=_:D.value=_},style:{width:"100%",height:"200px"}},null,512)):(n(),u("div",Ns,s(t(a)("quotes.languagePreference.punctuation.empty")),1))]))),128))])):R("",!0)])]),_:1})}}}),Fs={class:"main-content mx-auto max-w-[920px] space-y-6 p-6"},Es=Z({__name:"LanguagePreferenceTab",props:{sessionId:{},timeFilter:{}},setup(k){const{t:a,locale:d}=ee(),w=ke(),i=k,g=N(null),I=N(!1),y=M(()=>g.value&&g.value.members.length>=2);async function c(){if(i.sessionId){I.value=!0;try{g.value=await ce().getLanguagePreferenceAnalysis(i.sessionId,d.value,i.timeFilter)}catch(D){console.error("[LanguagePreferenceTab] Failed to load:",D)}finally{I.value=!1}}}function T(D){w.openChatRecordDrawer({keywords:[D]})}return X(()=>[i.sessionId,i.timeFilter],()=>c(),{immediate:!0,deep:!0}),(D,q)=>(n(),u("div",Fs,[I.value?(n(),B(t(pe),{key:0,text:t(a)("quotes.languagePreference.loading")},null,8,["text"])):y.value?g.value?(n(),u(H,{key:2},[h(ts,{data:g.value,onWordClick:T},null,8,["data"]),h(hs,{members:g.value.members,onWordClick:T},null,8,["members"]),h(Is,{members:g.value.members},null,8,["members"]),h(Ls,{members:g.value.members},null,8,["members"]),h(Us,{members:g.value.members},null,8,["members"])],64)):R("",!0):(n(),B(t(Te),{key:1,text:t(a)("quotes.languagePreference.empty")},null,8,["text"]))]))}}),Ws={class:"main-content mx-auto max-w-[920px] space-y-6 p-6"},Ks={class:"grid grid-cols-1 gap-6 lg:grid-cols-2"},Hs={class:"p-5"},Gs={class:"p-5"},Js=Z({__name:"OverviewTab",props:{session:{},memberActivity:{},messageTypes:{},hourlyActivity:{},dailyActivity:{},timeRange:{},filteredMessageCount:{},filteredMemberCount:{},timeFilter:{}},setup(k){const{t:a}=ee(),d=k,{dailyChartData:w}=Ye(()=>d.dailyActivity),i=M(()=>({labels:d.messageTypes.map(y=>mt(y.type,a)),values:d.messageTypes.map(y=>y.count)})),g=M(()=>{if(d.memberActivity.length<2)return null;const c=[...d.memberActivity].sort((D,q)=>q.messageCount-D.messageCount).slice(0,2),T=c[0].messageCount+c[1].messageCount;return{member1:{name:c[0].name,avatar:c[0].avatar,count:c[0].messageCount,percentage:T>0?Math.round(c[0].messageCount/T*100):0},member2:{name:c[1].name,avatar:c[1].avatar,count:c[1].messageCount,percentage:T>0?Math.round(c[1].messageCount/T*100):0},total:T}}),I=M(()=>g.value?{labels:[g.value.member1.name,g.value.member2.name],values:[g.value.member1.count,g.value.member2.count]}:{labels:[],values:[]});return(y,c)=>(n(),u("div",Ws,[h(Je,{session:k.session,"daily-activity":k.dailyActivity,"message-types":k.messageTypes,"hourly-activity":k.hourlyActivity,"time-range":k.timeRange,"filtered-message-count":k.filteredMessageCount,"filtered-member-count":k.filteredMemberCount,"time-filter":k.timeFilter},null,8,["session","daily-activity","message-types","hourly-activity","time-range","filtered-message-count","filtered-member-count","time-filter"]),e("div",Ks,[h(t(_e),{title:t(a)("analysis.overview.messageTypeDistribution"),"show-divider":!1},{default:W(()=>[e("div",Hs,[h(t($e),{data:i.value,height:280},null,8,["data"])])]),_:1},8,["title"]),g.value?(n(),B(t(_e),{key:0,title:t(a)("analysis.overview.memberComparison"),"show-divider":!1},{default:W(()=>[e("div",Gs,[h(t($e),{data:I.value,height:280},null,8,["data"])])]),_:1},8,["title"])):R("",!0)]),h(Qe,{"daily-activity":k.dailyActivity,"daily-chart-data":t(w)},null,8,["daily-activity","daily-chart-data"])]))}}),Qs={class:"flex min-w-0 flex-col p-4"},Ys={class:"mb-2 min-h-8"},Zs={class:"flex items-center justify-between gap-2"},Xs={class:"flex min-w-0 items-center gap-2"},ea={class:"truncate text-xs font-bold tracking-wide text-gray-900 dark:text-white"},ta={key:0,class:"shrink-0"},sa={class:"flex h-full flex-col"},aa={class:"grid grid-cols-2 gap-2"},na={class:"flex min-w-0 flex-col items-center px-1 py-1.5 text-center"},ia=["title"],la={class:"flex min-w-0 flex-col items-center px-1 py-1.5 text-center"},oa=["title"],ra={class:"mt-auto pt-3 min-h-8 text-[10px] leading-relaxed text-gray-500 dark:text-gray-400 sm:min-h-6"},ge=Z({__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(k){const a=Be(),d=M(()=>!!a["header-extra"]);return(w,i)=>{const g=ae;return n(),u("div",Qs,[e("div",Ys,[e("div",Zs,[e("div",Xs,[e("div",{class:O(["flex h-6 w-6 shrink-0 items-center justify-center rounded-full",k.iconBgClass])},[h(g,{name:k.iconName,class:O(["h-3.5 w-3.5",k.iconColorClass])},null,8,["name","class"])],2),e("span",ea,s(k.title),1)]),d.value?(n(),u("div",ta,[Oe(w.$slots,"header-extra")])):R("",!0)])]),e("div",sa,[e("div",aa,[e("div",na,[e("div",{class:"w-full truncate text-[10px] font-semibold tracking-wide text-gray-500 dark:text-gray-400",title:k.leftName},s(k.leftName),9,ia),e("div",{class:O(["mt-2 font-black font-mono leading-none tabular-nums",k.valueClass])},s(k.leftValue),3)]),e("div",la,[e("div",{class:"w-full truncate text-[10px] font-semibold tracking-wide text-gray-500 dark:text-gray-400",title:k.rightName},s(k.rightName),9,oa),e("div",{class:O(["mt-2 font-black font-mono leading-none tabular-nums",k.valueClass])},s(k.rightValue),3)])]),e("p",ra,s(k.description),1)])])}}}),ca={key:1,class:"main-content mx-auto max-w-[920px] space-y-6 p-6"},da={class:"space-y-6"},ua={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"},ma={class:"flex min-w-0 max-w-full flex-1 flex-col items-center justify-center lg:items-start"},ga={class:"flex flex-col text-[15px] leading-relaxed text-gray-600 dark:text-gray-300"},pa={class:"mb-2 text-sm font-medium tracking-wide text-gray-500 dark:text-gray-400"},fa={class:"mb-4 flex min-w-0 flex-wrap items-baseline gap-2"},xa={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},va={class:"font-black text-5xl tracking-tight text-gray-900 dark:text-white"},ba={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},ha={class:"flex min-w-0 max-w-full flex-wrap items-baseline gap-x-1.5 gap-y-1"},ya={class:"text-base font-medium text-gray-600 dark:text-gray-300"},_a={class:"font-black text-3xl text-pink-500 dark:text-pink-400"},ka={class:"text-base font-medium text-gray-600 dark:text-gray-300"},wa={class:"max-w-full break-all text-xl font-bold leading-snug text-gray-900 dark:text-white"},$a={class:"text-base font-medium text-gray-600 dark:text-gray-300"},Ca={class:"mt-8 flex w-full max-w-[320px] items-center justify-between gap-4"},Sa={class:"flex flex-1 flex-col items-center overflow-hidden"},Pa=["title"],Ia={class:"mt-1 text-2xl font-black text-blue-500 dark:text-blue-400"},Ma={class:"mt-0.5 text-[10px] font-medium text-gray-400"},Ta={class:"flex flex-1 flex-col items-center overflow-hidden"},qa=["title"],Aa={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"},ja={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"},Va={class:"text-sm font-bold text-gray-900 dark:text-white"},za={class:"text-[10px] font-medium text-gray-500 dark:text-gray-400"},Da={class:"w-full"},Ba={class:"h-[200px] w-full"},Oa={class:"relative z-10 grid grid-cols-2 gap-3 p-4 pt-2 sm:p-6 sm:pt-2 lg:grid-cols-4"},Na={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"},Ua={class:"flex items-center gap-1.5"},Fa={class:"text-[9px] font-medium uppercase tracking-widest"},Ea={class:"p-6 sm:p-8"},Wa={class:"relative ml-4 border-l-2 border-gray-100/80 py-4 dark:border-gray-800/80"},Ka={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-page-dark dark:ring-page-dark"},Ha={class:"group relative overflow-hidden border-b border-gray-200/60 dark:border-white/5"},Ga={key:0,class:"pointer-events-none absolute inset-0 overflow-hidden opacity-30 transition-opacity group-hover:opacity-50"},Ja={class:"relative z-10 p-4 sm:p-5"},Qa={class:"flex items-center gap-3"},Ya={class:"text-xl font-bold tracking-tight text-gray-900 dark:text-white"},Za={key:0,class:"flex items-baseline gap-1.5"},Xa={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},en={class:"text-2xl font-black leading-none text-gray-900 dark:text-white"},tn={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},sn={key:0,class:"grid grid-cols-2 gap-3 lg:grid-cols-4"},an={class:"flex min-w-0 flex-col p-3"},nn={class:"mb-2.5 flex items-center gap-1.5"},ln={class:"text-xs font-bold text-gray-700 dark:text-gray-300"},on={class:"flex flex-col gap-1.5"},rn={class:"flex items-center justify-between text-xs"},cn={class:"w-12 truncate font-medium text-gray-500 dark:text-gray-400"},dn={class:"font-black tabular-nums text-blue-600 dark:text-blue-400"},un={class:"flex items-center justify-between text-xs"},mn={class:"w-12 truncate font-medium text-gray-500 dark:text-gray-400"},gn={class:"font-black tabular-nums text-pink-500 dark:text-pink-400"},pn={class:"mt-3 flex h-1 w-full overflow-hidden rounded-full bg-gray-200 dark:bg-gray-700"},fn={class:"flex min-w-0 flex-col p-3"},xn={class:"mb-2.5 flex items-center gap-1.5"},vn={class:"text-xs font-bold text-gray-700 dark:text-gray-300"},bn={class:"flex flex-col gap-1.5"},hn={class:"flex items-center justify-between text-xs"},yn={class:"w-12 truncate font-medium text-gray-500 dark:text-gray-400"},_n={class:"font-black tabular-nums text-indigo-600 dark:text-indigo-400"},kn={class:"flex items-center justify-between text-xs"},wn={class:"w-12 truncate font-medium text-gray-500 dark:text-gray-400"},$n={class:"font-black tabular-nums text-pink-500 dark:text-pink-400"},Cn={class:"mt-3 flex h-1 w-full overflow-hidden rounded-full bg-gray-200 dark:bg-gray-700"},Sn={class:"flex min-w-0 flex-col p-3"},Pn={class:"mb-2.5 flex items-center gap-1.5"},In={class:"text-xs font-bold text-gray-700 dark:text-gray-300"},Mn={class:"flex flex-col gap-1.5"},Tn={class:"flex items-center justify-between text-xs"},qn={class:"w-12 truncate font-medium text-gray-500 dark:text-gray-400"},An={class:"font-black tabular-nums text-amber-600 dark:text-amber-500"},Rn={class:"flex items-center justify-between text-xs"},jn={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"},Vn={class:"flex min-w-0 flex-col p-3"},zn={class:"mb-2.5 flex items-center gap-1.5"},Dn={class:"text-xs font-bold text-gray-700 dark:text-gray-300"},Bn={class:"flex flex-col gap-1.5"},On={class:"flex items-center justify-between text-xs"},Nn={class:"w-12 truncate font-medium text-gray-500 dark:text-gray-400"},Un={class:"font-black tabular-nums text-purple-600 dark:text-purple-400"},Fn={class:"flex items-center justify-between text-xs"},En={class:"w-12 truncate font-medium text-gray-500 dark:text-gray-400"},Wn={class:"font-black tabular-nums text-purple-600 dark:text-purple-400"},Kn={key:1,class:"flex h-24 items-center justify-center text-sm font-medium text-gray-400 dark:text-gray-500"},Hn=Z({__name:"RelationshipView",props:{sessionId:{},timeFilter:{}},setup(k){const{t:a,locale:d}=ee(),w=k,i=N(null),g=N(!1),I=N(!1),y=N(300);async function c(f){if(!w.sessionId)return;const r=f?.localOnly==="perseverance";r?I.value=!0:g.value=!0;try{i.value=await ce().getRelationshipStats(w.sessionId,w.timeFilter,{perseveranceThreshold:y.value})}catch(z){console.error("Failed to load relationship stats:",z)}finally{r?I.value=!1:g.value=!1}}X(()=>[w.sessionId,w.timeFilter],()=>c(),{immediate:!0,deep:!0});const T=[{label:"1m",value:60},{label:"3m",value:180},{label:"5m",value:300},{label:"10m",value:600},{label:"30m",value:1800}];function D(f){y.value!==f&&(y.value=f,c({localOnly:"perseverance"}))}const q=M({get:()=>y.value,set:f=>D(f)});function V(f){return a("views.relationship.perseverance.thresholdMinutes",{n:Math.round(f/60)})}const b=M(()=>a("views.relationship.perseverance.hintWithThreshold",{threshold:V(y.value)})),j=M(()=>i.value?.hasSessionIndex&&i.value.totalSessions>0),o=M(()=>i.value?.members[0]),p=M(()=>i.value?.members[1]),$=M(()=>{if(!o.value||!i.value)return 50;const f=(o.value.totalInitiateCount??0)+(p.value?.totalInitiateCount??0);return f===0?50:Math.round(o.value.totalInitiateCount/f*100)}),P=M(()=>{if(!i.value||i.value.months.length===0)return"";const f=[...i.value.months].sort((E,L)=>E.month.localeCompare(L.month)),r=f[0].month.replace("-","/"),z=f[f.length-1].month.replace("-","/");return r===z?r:`${r} – ${z}`}),m=M(()=>d.value.startsWith("en")?"max-w-[420px]":"max-w-[320px]");function l(f){return f<=0?0:f>=100?100:Math.max(5,Math.min(95,f))}const _=M(()=>{if(!i.value||i.value.months.length===0||!o.value)return{};const f=[...i.value.months].sort((K,G)=>K.month.localeCompare(G.month)),r=f.map(K=>U(K.month)),z=o.value.name,E=p.value?.name??"—",L=f.map(K=>{const G=K.members.find(me=>me.memberId===o.value.memberId);return!G||K.totalSessions===0?50:Math.round(G.initiateCount/K.totalSessions*100)});return{tooltip:{trigger:"axis",formatter(K){const G=K[0],me=G.value;return`${G.axisValue}<br/>${z}: ${me}%<br/>${E}: ${100-me}%`}},grid:{left:40,right:20,top:20,bottom:30},xAxis:{type:"category",data:r,axisLabel:{fontSize:11}},yAxis:{type:"value",min:0,max:100,axisLabel:{formatter:"{value}%",fontSize:11},splitLine:{lineStyle:{type:"dashed"}}},series:[{type:"line",data:L,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 x(f){if(f.totalSessions===0)return a("views.relationship.labels.peacefulSilence");if(f.totalSessions<=2)return a("views.relationship.labels.fleetingThoughts");const z=[...f.members].sort((L,K)=>K.initiateCount-L.initiateCount)[0];if(!z||f.totalSessions===0)return"";const E=Math.round(z.initiateCount/f.totalSessions*100);return E>=40&&E<=60?a("views.relationship.labels.wellMatched"):E>=80?a("views.relationship.labels.monologue",{name:z.name}):a("views.relationship.labels.missingYou",{name:z.name})}function A(f){if(!o.value||f.totalSessions===0)return 50;const r=f.members.find(z=>z.memberId===o.value.memberId);return Math.round((r?.initiateCount??0)/f.totalSessions*100)}function v(f){if(!o.value)return 50;const z=f.members.find(L=>L.memberId===o.value.memberId)?.closeCount??0,E=f.members.reduce((L,K)=>L+(K.closeCount??0),0);return E===0?50:Math.round(z/E*100)}function S(f){const[r,z]=f.split("-");return a("views.relationship.monthFormat",{year:r,month:Number.parseInt(z,10)})}function U(f){const r=f.split("-");return a("views.relationship.monthShortFormat",{month:Number.parseInt(r[1],10)})}function J(f){return!f||!i.value?.iceBreakers?.length?0:i.value.iceBreakers.filter(r=>r.memberId===f).reduce((r,z)=>r+z.count,0)}function ne(f){if(!f||!i.value?.responseLatency?.length)return null;const r=i.value.responseLatency.find(z=>z.memberId===f);return r?r.avgResponseTime:null}function se(f){return!f||!i.value?.perseverance?.length?0:i.value.perseverance.find(z=>z.memberId===f)?.totalDoubleTexts??0}function te(f){const r=ne(f);return r!=null?le(r):"--"}function F(f){return i.value?.monthlyResponseLatency?.find(r=>r.month===f)?.members??[]}function ie(f){return i.value?.monthlyPerseverance?.find(r=>r.month===f)?.members??[]}function Y(f,r){if(!r)return"--";const z=F(f).find(E=>E.memberId===r);return z?le(z.avgResponseTime):"--"}function C(f,r){if(!r)return"--";const z=ie(f).find(E=>E.memberId===r);return z?z.doubleTextCount.toString():"--"}function le(f){const r=Math.max(0,Math.round(f));if(r<60)return a("views.relationship.responseLatency.seconds",{n:r});if(r<3600){const L=Math.floor(r/60),K=r%60;return a("views.relationship.responseLatency.minutesSeconds",{m:L,s:K})}const z=Math.floor(r/3600),E=Math.floor(r%3600/60);return E===0?a("views.relationship.responseLatency.hours",{n:z}):a("views.relationship.responseLatency.hoursMinutes",{h:z,m:E})}return(f,r)=>{const z=je,E=ae;return n(),u("div",{class:O(g.value?"h-full":"")},[g.value?(n(),B(t(pe),{key:0,variant:"page",text:t(a)("common.loading")},null,8,["text"])):(n(),u("div",ca,[i.value&&!j.value?(n(),B(t(Te),{key:0,icon:"i-heroicons-heart",title:t(a)("views.relationship.empty.title"),description:t(a)("views.relationship.empty.description")},null,8,["title","description"])):i.value&&j.value?(n(),u(H,{key:1},[e("div",da,[h(t(Me),{id:"shareable-poster"},{default:W(()=>[e("div",ua,[e("div",ma,[e("div",{class:O(["flex w-fit min-w-0 flex-col items-start text-left",m.value])},[e("div",ga,[e("p",pa,s(P.value),1),e("div",fa,[e("span",xa,s(t(a)("views.relationship.hero.totalSessionsPrefix")),1),e("span",va,s(i.value.totalSessions),1),e("span",ba,s(t(a)("views.relationship.hero.totalSessionsSuffix")),1)]),e("div",ha,[e("span",ya,s(t(a)("views.relationship.hero.initiativePrefix")),1),e("span",_a,s($.value>=50?$.value:100-$.value)+"% ",1),e("span",ka,s(t(a)("views.relationship.hero.initiativeByPrefix")),1),e("span",wa,s($.value>=50?o.value?.name:p.value?.name),1),e("span",$a,s(t(a)("views.relationship.hero.initiativeBySuffix")),1)])]),e("div",Ca,[e("div",Sa,[e("div",{class:"w-full truncate text-center text-xs font-bold text-gray-500 dark:text-gray-400",title:o.value?.name},s(o.value?.name),9,Pa),e("div",Ia,s(o.value?.totalInitiateCount),1),e("div",Ma,s(t(a)("views.relationship.hero.initiateTimes")),1)]),r[1]||(r[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-page-dark/80 dark:text-gray-500"}," VS ",-1)),e("div",Ta,[e("div",{class:"w-full truncate text-center text-xs font-bold text-gray-500 dark:text-gray-400",title:p.value?.name},s(p.value?.name),9,qa),e("div",Aa,s(p.value?.totalInitiateCount),1),e("div",Ra,s(t(a)("views.relationship.hero.initiateTimes")),1)])])],2)]),i.value.months.length>=2?(n(),u("div",ja,[e("div",La,[e("span",Va,s(t(a)("views.relationship.trend.title")),1),e("span",za,s(t(a)("views.relationship.trend.hint",{name:o.value?.name??""})),1)]),e("div",Da,[e("div",Ba,[h(t(gt),{option:_.value,height:200},null,8,["option"])])])])):R("",!0)]),e("div",Oa,[h(ge,{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":o.value?.name,"left-value":o.value?.totalCloseCount??0,"right-name":p.value?.name,"right-value":p.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"]),h(ge,{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":o.value?.name,"left-value":J(o.value?.memberId),"right-name":p.value?.name,"right-value":J(p.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"]),h(ge,{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":o.value?.name,"left-value":te(o.value?.memberId),"right-name":p.value?.name,"right-value":te(p.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"]),h(ge,{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":o.value?.name,"left-value":se(o.value?.memberId),"right-name":p.value?.name,"right-value":se(p.value?.memberId),"value-class":"text-lg text-purple-600 dark:text-purple-400",description:b.value},{"header-extra":W(()=>[h(z,{modelValue:q.value,"onUpdate:modelValue":r[0]||(r[0]=L=>q.value=L),items:T,"value-key":"value",size:"xs",class:"relative z-[120] w-16",ui:{content:"z-[121]"},disabled:I.value},null,8,["modelValue","disabled"])]),_:1},8,["title","left-name","left-value","right-name","right-value","description"])]),e("div",Na,[e("div",Ua,[h(E,{name:"i-heroicons-chat-bubble-left-right-solid",class:"h-3.5 w-3.5"}),r[2]||(r[2]=e("span",{class:"text-[10px] font-bold uppercase tracking-wider"},"ChatLab",-1))]),e("span",Fa,s(t(a)("views.relationship.watermarkReport")),1)])]),_:1})]),h(t(_e),{title:t(a)("views.relationship.monthly.title"),"show-divider":!1},{default:W(()=>[e("div",Ea,[e("div",Wa,[(n(!0),u(H,null,Q(i.value.months,(L,K)=>(n(),u("div",{key:L.month,class:"relative pb-12 pl-10 last:pb-0"},[e("div",Ka,[e("div",{class:O(["h-2.5 w-2.5 rounded-full shadow-sm",L.totalSessions>0?K===0?"bg-pink-500 animate-pulse":"bg-pink-400":"bg-gray-300 dark:bg-gray-600"])},null,2)]),e("div",Ha,[L.totalSessions>0?(n(),u("div",Ga,[...r[3]||(r[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)])])):R("",!0),e("div",Ja,[e("div",{class:O(["flex items-center justify-between",L.totalSessions>0?"mb-4":""])},[e("div",Qa,[e("span",Ya,s(S(L.month)),1),e("span",{class:O(["rounded-lg px-2.5 py-1 text-xs font-semibold",L.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(x(L)),3)]),L.totalSessions>0?(n(),u("div",Za,[e("span",Xa,s(t(a)("views.relationship.monthly.totalSessionsPrefix")),1),e("span",en,s(L.totalSessions),1),e("span",tn,s(t(a)("views.relationship.monthly.totalSessionsSuffix")),1)])):R("",!0)],2),L.totalSessions>0?(n(),u("div",sn,[e("div",an,[e("div",nn,[h(E,{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",ln,s(t(a)("views.relationship.initiator")),1)]),e("div",on,[e("div",rn,[e("span",cn,s(o.value?.name),1),e("span",dn,s(L.members.find(G=>G.memberId===o.value?.memberId)?.initiateCount??0),1)]),e("div",un,[e("span",mn,s(p.value?.name),1),e("span",gn,s(L.members.find(G=>G.memberId===p.value?.memberId)?.initiateCount??0),1)])]),e("div",pn,[e("div",{class:"bg-blue-500 dark:bg-blue-400",style:oe({width:l(A(L))+"%"})},null,4),e("div",{class:"bg-pink-500 dark:bg-pink-400",style:oe({width:l(100-A(L))+"%"})},null,4)])]),e("div",fn,[e("div",xn,[h(E,{name:"i-heroicons-hand-raised-solid",class:"h-3.5 w-3.5 text-indigo-500 dark:text-indigo-400"}),e("span",vn,s(t(a)("views.relationship.closer")),1)]),e("div",bn,[e("div",hn,[e("span",yn,s(o.value?.name),1),e("span",_n,s(L.members.find(G=>G.memberId===o.value?.memberId)?.closeCount??0),1)]),e("div",kn,[e("span",wn,s(p.value?.name),1),e("span",$n,s(L.members.find(G=>G.memberId===p.value?.memberId)?.closeCount??0),1)])]),e("div",Cn,[e("div",{class:"bg-indigo-500 dark:bg-indigo-400",style:oe({width:l(v(L))+"%"})},null,4),e("div",{class:"bg-pink-500 dark:bg-pink-400",style:oe({width:l(100-v(L))+"%"})},null,4)])]),e("div",Sn,[e("div",Pn,[h(E,{name:"i-heroicons-clock-solid",class:"h-3.5 w-3.5 text-amber-500 dark:text-amber-400"}),e("span",In,s(t(a)("views.relationship.responseLatency.title")),1)]),e("div",Mn,[e("div",Tn,[e("span",qn,s(o.value?.name),1),e("span",An,s(Y(L.month,o.value?.memberId)),1)]),e("div",Rn,[e("span",jn,s(p.value?.name),1),e("span",Ln,s(Y(L.month,p.value?.memberId)),1)])])]),e("div",Vn,[e("div",zn,[h(E,{name:"i-heroicons-arrow-path-solid",class:"h-3.5 w-3.5 text-purple-500 dark:text-purple-400"}),e("span",Dn,s(t(a)("views.relationship.perseverance.title")),1)]),e("div",Bn,[e("div",On,[e("span",Nn,s(o.value?.name),1),e("span",Un,s(C(L.month,o.value?.memberId)),1)]),e("div",Fn,[e("span",En,s(p.value?.name),1),e("span",Wn,s(C(L.month,p.value?.memberId)),1)])])])])):(n(),u("div",Kn,s(t(a)("views.relationship.noActivity")),1))])])]))),128))])])]),_:1},8,["title"])],64)):R("",!0)]))],2)}}}),Gn={class:"flex h-full flex-col"},Jn={class:"flex-1 min-h-0 overflow-auto"},Qn=Z({__name:"ViewTab",props:{sessionId:{},sessionName:{},timeFilter:{}},setup(k){const{t:a}=ee(),d=k,w=M(()=>[{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"}]),i=N("relationship"),g=N(null),I=M(()=>({...d.timeFilter,memberId:g.value}));return(y,c)=>(n(),u("div",Gn,[h(t(Ee),{modelValue:i.value,"onUpdate:modelValue":c[1]||(c[1]=T=>i.value=T),items:w.value,"persist-key":"privateViewTab"},{right:W(()=>[i.value==="type-analysis"||i.value==="time-analysis"?(n(),B(Ze,{key:0,modelValue:g.value,"onUpdate:modelValue":c[0]||(c[0]=T=>g.value=T),"session-id":d.sessionId},null,8,["modelValue","session-id"])):R("",!0)]),_:1},8,["modelValue","items"]),e("div",Jn,[h(Pe,{name:"fade",mode:"out-in"},{default:W(()=>[i.value==="type-analysis"?(n(),B(Xe,{key:0,"session-id":d.sessionId,"session-name":d.sessionName,"time-filter":I.value},null,8,["session-id","session-name","time-filter"])):i.value==="time-analysis"?(n(),B(et,{key:1,"session-id":d.sessionId,"session-name":d.sessionName,"time-filter":I.value},null,8,["session-id","session-name","time-filter"])):i.value==="relationship"?(n(),B(Hn,{key:2,"session-id":d.sessionId,"time-filter":d.timeFilter},null,8,["session-id","time-filter"])):i.value==="topic"?(n(),B(t(tt),{key:3,"session-id":d.sessionId,"time-filter":d.timeFilter,"show-shared-topics":!0},null,8,["session-id","time-filter"])):i.value==="language-preference"?(n(),B(t(Es),{key:4,"session-id":d.sessionId,"time-filter":d.timeFilter},null,8,["session-id","time-filter"])):R("",!0)]),_:1})])]))}}),Yn=Ie(Qn,[["__scopeId","data-v-0605fe3d"]]),Zn={class:"main-content max-w-4xl p-6"},Xn={key:0,class:"mb-6"},ei={class:"flex items-center gap-3"},ti={class:"text-xl font-bold text-gray-900 dark:text-white"},si={class:"text-sm text-gray-500 dark:text-gray-400"},ai={key:1,class:"flex h-60 items-center justify-center"},ni={key:2,class:"mb-4 flex items-center justify-end gap-2"},ii={class:"text-xs text-gray-500 dark:text-gray-400"},li={key:3,class:"grid gap-4 md:grid-cols-2"},oi={class:"absolute right-4 top-4 flex items-center gap-2"},ri={class:"flex items-start gap-4"},ci=["src","alt"],di={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"},ui={class:"flex-1 min-w-0"},mi={class:"text-lg font-semibold text-gray-900 dark:text-white truncate"},gi={class:"text-sm text-gray-500 dark:text-gray-400"},pi={class:"mt-4 flex items-center gap-4"},fi={class:"flex-1"},xi={class:"flex items-baseline justify-between"},vi={class:"text-sm text-gray-500 dark:text-gray-400"},bi={class:"text-lg font-bold text-gray-900 dark:text-white"},hi={class:"mt-2 h-2 w-full overflow-hidden rounded-full bg-gray-100 dark:bg-gray-800"},yi={class:"mt-1 text-xs text-gray-400 dark:text-gray-500"},_i={class:"mt-4 border-t border-gray-100 pt-4 dark:border-gray-800"},ki={class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"},wi={class:"relative"},$i={key:0,class:"absolute right-3 top-1/2 -translate-y-1/2"},Ci={key:4,class:"flex h-60 flex-col items-center justify-center"},Si={class:"text-gray-500 dark:text-gray-400"},Pi={key:5,class:"mt-6 flex items-start gap-3 rounded-xl bg-blue-50 p-4 dark:bg-blue-900/20"},Ii={class:"text-sm font-medium text-blue-800 dark:text-blue-200"},Mi={class:"mt-1 text-sm text-blue-700 dark:text-blue-300"},Ti={class:"p-6"},qi={class:"mb-4 flex items-center gap-3"},Ai={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"},ji={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"},Vi={class:"flex justify-end gap-2"},zi=Z({__name:"MemberTab",props:{sessionId:{},showHeader:{type:Boolean,default:!0}},setup(k){const{t:a}=ee(),d=ke(),w=k,i=N([]),g=N(!1),I=N(null),y=N(new Set),c=N(!1),T=N(!1);function D(v){return v.groupNickname||v.accountName||v.platformId}function q(v){return D(v).slice(0,1)}function V(v){d.openChatRecordDrawer({sessionId:w.sessionId,memberId:v.id,memberName:D(v)})}const b=M(()=>i.value.filter(v=>y.value.has(v.id))),j=M(()=>b.value.length===2),o=M(()=>{if(b.value.length!==2)return null;const[v,S]=b.value;return S.messageCount>v.messageCount||S.messageCount===v.messageCount&&S.id<v.id?{primary:S,secondary:v}:{primary:v,secondary:S}}),p=M(()=>i.value.reduce((v,S)=>v+S.messageCount,0));function $(v){return p.value===0?0:Math.round(v/p.value*100)}async function P(){if(w.sessionId){g.value=!0;try{i.value=await ce().getMembers(w.sessionId)}catch(v){console.error("加载成员列表失败:",v)}finally{g.value=!1}}}async function m(v,S){const U=JSON.parse(JSON.stringify(S)),J=JSON.stringify(v.aliases),ne=JSON.stringify(U);if(J!==ne){I.value=v.id;try{if(await ce().updateMemberAliases(w.sessionId,v.id,U)){const te=i.value.findIndex(F=>F.id===v.id);te!==-1&&(i.value[te]={...i.value[te],aliases:U})}}catch(se){console.error("保存别名失败:",se)}finally{I.value=null}}}function l(v){const S=new Set(y.value);S.has(v)?S.delete(v):S.add(v),y.value=S}function _(){j.value&&(c.value=!0)}function x(){y.value=new Set}async function A(){if(o.value){T.value=!0;try{await ce().mergeMembers(w.sessionId,o.value.primary.id,o.value.secondary.id)&&(c.value=!1,x(),await P())}catch(v){console.error("合并成员失败:",v)}finally{T.value=!1}}}return X(()=>w.sessionId,()=>{x(),P()},{immediate:!0}),de(()=>{P()}),(v,S)=>{const U=ae,J=Ce,ne=Le,se=Ve,te=Se;return n(),u("div",Zn,[w.showHeader?(n(),u("div",Xn,[e("div",ei,[e("div",null,[e("h2",ti,s(t(a)("members.private.title")),1),e("p",si,s(t(a)("members.private.description",{count:i.value.length})),1)])])])):R("",!0),h(st,{class:"mb-6","session-id":k.sessionId,members:i.value,"chat-type":"private"},null,8,["session-id","members"]),g.value?(n(),u("div",ai,[h(U,{name:"i-heroicons-arrow-path",class:"h-8 w-8 animate-spin text-pink-500"})])):R("",!0),!g.value&&i.value.length>1?(n(),u("div",ni,[e("span",ii,s(t(a)("members.list.mergeSelectedCount",{count:y.value.size})),1),h(J,{icon:"i-heroicons-link",size:"sm",color:"primary",disabled:!j.value,onClick:_},{default:W(()=>[ye(s(t(a)("members.list.mergeSelected")),1)]),_:1},8,["disabled"])])):R("",!0),g.value?R("",!0):(n(),u("div",li,[(n(!0),u(H,null,Q(i.value,F=>(n(),B(t(ue),{key:F.id,class:"relative p-5"},{default:W(()=>[e("div",oi,[h(J,{icon:"i-heroicons-chat-bubble-left-ellipsis",size:"xs",color:"neutral",variant:"ghost",title:t(a)("common.viewChatRecords"),onClick:ie=>V(F)},null,8,["title","onClick"]),h(ne,{"model-value":y.value.has(F.id),onClick:Ne(ie=>l(F.id),["stop"])},null,8,["model-value","onClick"])]),e("div",ri,[F.avatar?(n(),u("img",{key:0,src:F.avatar,alt:D(F),class:"h-14 w-14 shrink-0 rounded-full object-cover"},null,8,ci)):(n(),u("div",di,s(q(F)),1)),e("div",ui,[e("h3",mi,s(D(F)),1),e("p",gi,"ID: "+s(F.platformId),1)])]),e("div",pi,[e("div",fi,[e("div",xi,[e("span",vi,s(t(a)("members.private.messageCount")),1),e("span",bi,s(F.messageCount.toLocaleString()),1)]),e("div",hi,[e("div",{class:"h-full rounded-full bg-linear-to-r from-pink-400 to-pink-600 transition-all duration-500",style:oe({width:`${$(F.messageCount)}%`})},null,4)]),e("p",yi,s(t(a)("members.private.percentage",{value:$(F.messageCount)})),1)])]),e("div",_i,[e("label",ki,s(t(a)("members.private.customAlias")),1),e("div",wi,[h(se,{"model-value":F.aliases,placeholder:t(a)("members.private.aliasPlaceholder"),class:"w-full","onUpdate:modelValue":ie=>m(F,ie)},null,8,["model-value","placeholder","onUpdate:modelValue"]),I.value===F.id?(n(),u("div",$i,[h(U,{name:"i-heroicons-arrow-path",class:"h-4 w-4 animate-spin text-pink-500"})])):R("",!0)])])]),_:2},1024))),128))])),!g.value&&i.value.length===0?(n(),u("div",Ci,[h(U,{name:"i-heroicons-user-group",class:"mb-3 h-12 w-12 text-gray-300 dark:text-gray-600"}),e("p",Si,s(t(a)("members.private.empty")),1)])):R("",!0),i.value.length>0?(n(),u("div",Pi,[h(U,{name:"i-heroicons-information-circle",class:"mt-0.5 h-5 w-5 shrink-0 text-blue-500"}),e("div",null,[e("p",Ii,s(t(a)("members.private.tipTitle")),1),e("p",Mi,s(t(a)("members.private.tipContent")),1)])])):R("",!0),h(te,{open:c.value,ui:{content:"max-w-md"},"onUpdate:open":S[1]||(S[1]=F=>c.value=F)},{content:W(()=>[e("div",Ti,[e("div",qi,[e("div",Ai,[h(U,{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",ji,s(t(a)("members.list.mergeModal.content",{source:o.value?D(o.value.secondary):"",sourceCount:o.value?o.value.secondary.messageCount.toLocaleString():"0",target:o.value?D(o.value.primary):"",targetCount:o.value?o.value.primary.messageCount.toLocaleString():"0"})),1),e("p",Li,s(t(a)("members.list.mergeModal.hint")),1),e("div",Vi,[h(J,{variant:"outline",disabled:T.value,onClick:S[0]||(S[0]=F=>c.value=!1)},{default:W(()=>[ye(s(t(a)("members.list.mergeModal.cancel")),1)]),_:1},8,["disabled"]),h(J,{color:"primary",loading:T.value,onClick:A},{default:W(()=>[ye(s(t(a)("members.list.mergeModal.confirm")),1)]),_:1},8,["loading"])])])]),_:1},8,["open"])])}}}),Di={class:"flex h-full flex-col dark:bg-page-dark",style:{"padding-top":"var(--titlebar-area-height)"}},Bi={class:"relative flex-1 overflow-y-auto"},Oi={class:"h-full"},Ni={key:2,class:"flex h-full items-center justify-center"},Ui={class:"text-gray-500"},Fi={class:"flex h-full flex-col overflow-hidden bg-white dark:bg-page-dark"},Ei={class:"flex flex-none items-center justify-between border-b border-gray-200 px-5 py-3 dark:border-gray-700"},Wi={class:"text-lg font-semibold text-gray-900 dark:text-white"},Ki={class:"text-sm text-gray-500 dark:text-gray-400"},Hi={class:"flex-1 overflow-auto"},Gi=Z({__name:"index",setup(k){const a=Ue(()=>Re(()=>import("./MessageExportModal-CqP-w7HP.js"),__vite__mapDeps([0,1,2,3,4,5]))),{t:d}=ee(),w=ze(),i=De(),g=We(),I=ke(),y=Ke(),{currentSessionId:c}=He(g),T=N(!1),D=N(!1),q=N(!1),V=N(!1),b=N(!1);function j(){I.openChatRecordDrawer({})}const o=[{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=M(()=>y.debugMode?[...o,{id:"debug",labelKey:"analysis.tabs.debug",icon:"i-heroicons-bug-ant"}]:o),{activeTab:$,isLoading:P,isInitialLoad:m,session:l,memberActivity:_,hourlyActivity:x,dailyActivity:A,messageTypes:v,timeRangeValue:S,fullTimeRange:U,timeFilter:J,initialTimeState:ne,loadAnalysisData:se}=at({route:w,router:i,currentSessionId:c,selectSession:g.selectSession,defaultTab:y.defaultSessionTab,validTabIds:p.value.map(Y=>Y.id)}),te=M(()=>_.value.reduce((Y,C)=>Y+C.messageCount,0)),F=M(()=>_.value.filter(Y=>Y.messageCount>0).length),ie=M(()=>{if(!l.value||_.value.length===0)return null;if(l.value.ownerId){const C=_.value.find(le=>le.platformId!==l.value?.ownerId);if(C?.avatar)return C.avatar}const Y=_.value.find(C=>C.name===l.value?.name);return Y?.avatar?Y.avatar:(_.value.length,null)});return(Y,C)=>{const le=Ce,f=Se;return n(),u("div",Di,[t(m)?(n(),B(pe,{key:0,variant:"page",text:t(d)("analysis.privateChat.loading")},null,8,["text"])):t(l)?(n(),u(H,{key:1},[h(nt,{"active-tab":t($),"onUpdate:activeTab":C[0]||(C[0]=r=>we($)?$.value=r:null),"time-range-value":t(S),"onUpdate:timeRangeValue":C[1]||(C[1]=r=>we(S)?S.value=r:null),title:t(l).name,avatar:ie.value,icon:"i-heroicons-user","icon-class":"bg-pink-600 text-white dark:bg-pink-500 dark:text-white",tabs:p.value,"current-session-id":t(c),"initial-time-state":t(ne),onOpenIncrementalImport:C[2]||(C[2]=r=>q.value=!0),onOpenMemberManagement:C[3]||(C[3]=r=>b.value=!0),onOpenChatRecord:j,"onUpdate:fullRange":C[4]||(C[4]=r=>U.value=r)},null,8,["active-tab","time-range-value","title","avatar","tabs","current-session-id","initial-time-state"]),e("div",Bi,[t(P)?(n(),B(pe,{key:0,variant:"overlay",text:t(d)("common.loading")},null,8,["text"])):R("",!0),e("div",Oi,[h(Pe,{name:"tab-slide",mode:"out-in"},{default:W(()=>[t($)==="overview"?(n(),B(Js,{key:"overview-"+t(c),session:t(l),"member-activity":t(_),"message-types":t(v),"hourly-activity":t(x),"daily-activity":t(A),"time-range":t(U),"filtered-message-count":te.value,"filtered-member-count":F.value,"time-filter":t(J)},null,8,["session","member-activity","message-types","hourly-activity","daily-activity","time-range","filtered-message-count","filtered-member-count","time-filter"])):t($)==="view"?(n(),B(Yn,{key:"view-"+t(c),"session-id":t(c),"session-name":t(l).name,"time-filter":t(J)},null,8,["session-id","session-name","time-filter"])):t($)==="ai-chat"?(n(),B(t(rt),{key:"ai-chat-"+t(c),"session-id":t(c),"session-name":t(l).name,"chat-type":"private"},null,8,["session-id","session-name"])):t($)==="memory"?(n(),B(ct,{key:"memory-"+t(c),"session-id":t(c),"session-name":t(l).name},null,8,["session-id","session-name"])):t($)==="lab"?(n(),B(dt,{key:"lab-"+t(c),"session-id":t(c),"session-name":t(l).name,"time-filter":t(J),"chat-type":"private",mode:"sql-only"},null,8,["session-id","session-name","time-filter"])):t($)==="debug"?(n(),B(t(ut),{key:"debug-"+t(c),"session-id":t(c)},null,8,["session-id"])):R("",!0)]),_:1})])]),h(it,{onOpenIncrementalImport:C[5]||(C[5]=r=>q.value=!0),onOpenSemanticIndex:C[6]||(C[6]=r=>T.value=!0),onOpenMemberManagement:C[7]||(C[7]=r=>b.value=!0),onOpenChatRecord:j,onOpenMessageExport:C[8]||(C[8]=r=>V.value=!0)})],64)):(n(),u("div",Ni,[e("p",Ui,s(t(d)("analysis.privateChat.loadError")),1)])),t(c)&&t(l)?(n(),B(lt,{key:3,modelValue:T.value,"onUpdate:modelValue":C[9]||(C[9]=r=>T.value=r),"session-id":t(c),"message-count":t(l).messageCount},null,8,["modelValue","session-id","message-count"])):R("",!0),t(c)&&t(l)?(n(),B(Ge,{key:4,modelValue:D.value,"onUpdate:modelValue":C[10]||(C[10]=r=>D.value=r),"session-id":t(c),"chat-type":"private","auto-check":""},null,8,["modelValue","session-id"])):R("",!0),t(c)&&t(l)?(n(),B(ot,{key:5,modelValue:q.value,"onUpdate:modelValue":C[11]||(C[11]=r=>q.value=r),"session-id":t(c),"session-name":t(l).name,onImported:C[12]||(C[12]=()=>{t(se)(),t(g).loadSessions()})},null,8,["modelValue","session-id","session-name"])):R("",!0),t(c)?(n(),B(t(a),{key:6,modelValue:V.value,"onUpdate:modelValue":C[13]||(C[13]=r=>V.value=r)},null,8,["modelValue"])):R("",!0),t(c)?(n(),B(f,{key:7,open:b.value,"onUpdate:open":C[15]||(C[15]=r=>b.value=r),ui:{content:"max-w-6xl h-[85vh]"}},{content:W(()=>[e("div",Fi,[e("div",Ei,[e("div",null,[e("h2",Wi,s(t(d)("analysis.tooltip.memberManagement")),1),e("p",Ki,s(t(d)("members.private.description",{count:t(l)?.memberCount??0})),1)]),h(le,{variant:"ghost",icon:"i-heroicons-x-mark",size:"sm",onClick:C[14]||(C[14]=r=>b.value=!1)})]),e("div",Hi,[h(zi,{"session-id":t(c),"show-header":!1},null,8,["session-id"])])])]),_:1},8,["open"])):R("",!0)])}}}),dl=Ie(Gi,[["__scopeId","data-v-ae24e9d5"]]);export{dl as default};
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/EChartWordcloud-DU3ZYdgz.js","assets/vendor-echarts-wordcloud-Ca8n6qS6.js","assets/vendor-echarts-B-i_56Av.js","assets/vendor-zrender-5DcYjSZk.js","assets/vendor-reka-ui-Cta6JPvN.js","assets/MessageExportModal-CqP-w7HP.js","assets/vendor-nuxt-ui-CS1uxE9C.js","assets/index-BWtNqcYK.js","assets/vendor-snapdom-XnBoh1gd.js","assets/index-Bqr-LkS1.css"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{_ as Be}from"./vendor-snapdom-XnBoh1gd.js";import{f as st,d as ce,n as ot,_ as Re,o as We,g as xe,m as nt,b as Oe,i as lt,c as it,j as rt,e as ct,u as ut}from"./vendor-nuxt-ui-CS1uxE9C.js";import{b as S,d as ge,F as Le,p as B,G as o,P as k,Q as J,a5 as t,Z as W,a3 as Z,T as d,O as je,J as dt,H as C,a0 as pe,h as w,w as E,m as mt,u as e,K as M,L as x,U as L,bA as Ee,a9 as Pe,bD as vt,au as qe,E as ht,bE as Ge,R as K,n as Me,bw as De,i as ze}from"./vendor-reka-ui-Cta6JPvN.js";import{x as pt,u as X,r as be,T as le,k as Q,P as gt,w as Ke,m as Ne,Q as ft,o as yt,y as xt,s as bt,z as kt}from"./index-BWtNqcYK.js";import{c as G,q as Ye,r as _t,s as wt,a as ne,t as $t,b as Ct,d as Ue,e as It,u as St,f as Mt,g as Tt,h as Vt,i as Rt,j as Lt,k as Dt,l as Nt,m as At,n as zt,o as Ut,C as Ft,p as Ht,A as Bt,D as Wt}from"./ActionToolsPanel.vue_vue_type_script_setup_true_lang-CkDGVRXe.js";import{a as ae,g as Ot,_ as jt}from"./base-DTElkJcC.js";import"./vendor-echarts-wordcloud-Ca8n6qS6.js";import{_ as se}from"./LoadingState.vue_vue_type_script_setup_true_lang-DACMroOe.js";import{a as Ve,b as Et,c as Pt}from"./dateFormat-D9WibwOu.js";import{u as Je,y as qt,j as Qe,s as Gt,i as Ze,k as Xe,p as Kt,t as Yt,v as Jt}from"./vendor-echarts-B-i_56Av.js";import{_ as et}from"./ThemeCard.vue_vue_type_script_setup_true_lang-BoZyssJF.js";import"./index-CiS20iAR.js";import"./TimeSelect.vue_vue_type_script_setup_true_lang-7SEaCxDL.js";import"./PageHeader-Ck8ULyZH.js";import"./vendor-zrender-5DcYjSZk.js";function Qt(m,s={}){const{threshold:a=300,containerSelector:n=".overflow-y-auto",scrollLockDuration:r=800}=s,l=S(m[0]?.id||"");let c=!1;const y=S(null);let g=null;function _(){if(c)return;const u=[];m.forEach(p=>{const I=document.getElementById(p.id);if(I){const h=I.getBoundingClientRect();u.push({id:p.id,top:Math.round(h.top)})}});let i=0;for(let p=0;p<u.length;p++){if(u[p].top>a){i=Math.max(0,p-1);break}i=p}l.value=m[i]?.id||""}function f(u){const i=document.getElementById(u);i&&(l.value=u,c=!0,i.scrollIntoView({behavior:"smooth",block:"start"}),setTimeout(()=>{c=!1,_()},r))}return ge(()=>{g=y.value?.closest(n)||null,g&&(g.addEventListener("scroll",_,{passive:!0}),_())}),Le(()=>{g&&g.removeEventListener("scroll",_)}),{contentRef:y,activeAnchor:l,scrollToAnchor:f,updateActiveAnchor:_}}const Zt={class:"sticky top-24 space-y-6"},Xt={class:"border-l border-gray-200 dark:border-gray-800"},ea=["onClick"],ta=B({__name:"PageAnchorsNav",props:{anchors:{},activeAnchor:{},width:{default:"w-44"},hideOnMobile:{type:Boolean,default:!0}},emits:["click"],setup(m,{emit:s}){const a=s;function n(r){a("click",r)}return(r,l)=>(o(),k("div",{class:J([m.width,"shrink-0",m.hideOnMobile?"hidden lg:block":""])},[t("div",Zt,[t("nav",null,[t("div",Xt,[(o(!0),k(W,null,Z(m.anchors,c=>(o(),k("button",{key:c.id,class:J(["-ml-px block border-l-2 py-1.5 pl-4 text-left text-sm transition-colors",[m.activeAnchor===c.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:y=>n(c.id)},d(c.label),11,ea))),128))])]),je(r.$slots,"default")])],2))}}),re=B({__name:"TopNSelect",props:{modelValue:{default:10},modelModifiers:{}},emits:["update:modelValue"],setup(m){const s=dt(m,"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,r)=>{const l=st;return o(),C(l,{modelValue:s.value,"onUpdate:modelValue":r[0]||(r[0]=c=>s.value=c),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(m){const s=m,a=w(()=>typeof window>"u"?500:Math.round(window.innerHeight*s.maxHeightVh/100)),n=w(()=>s.contentHeight>a.value),r=w(()=>({maxHeight:`${s.maxHeightVh}vh`,overflowY:n.value?"auto":"hidden"}));return(l,c)=>(o(),k("div",{class:J(m.paddingClass),style:pe(r.value)},[je(l.$slots,"default")],6))}}),aa=B({__name:"EChartGraph",props:{data:{},height:{default:400},layout:{default:"circular"},directed:{type:Boolean,default:!1}},setup(m,{expose:s}){Je([qt,Qe,Gt,Ze]);const a=m,n=w(()=>typeof a.height=="number"?`${a.height}px`:a.height),r=pt(),l=S(null);let c=null;const y=["#ee4567","#5470c6","#91cc75","#fac858","#ee6666","#73c0de","#9a60b4","#fc8452","#3ba272","#ea7ccc","#6e7074","#546570"],g=w(()=>{const v=new Set;return a.data.nodes.filter(b=>v.has(b.name)?!1:(v.add(b.name),!0))}),_=w(()=>{const v=new Map;return g.value.forEach((b,$)=>{v.set(b.name,y[$%y.length])}),v});function f(v,b){return b<=0?1:1+v/b*5}const u=w(()=>{const v=a.data.maxLinkValue||Math.max(...a.data.links.map(b=>b.value||1),1);return{tooltip:{trigger:"item",backgroundColor:r.value?"rgba(30, 30, 30, 0.9)":"rgba(255, 255, 255, 0.95)",borderColor:r.value?"rgba(255, 255, 255, 0.1)":"rgba(0, 0, 0, 0.1)",textStyle:{color:r.value?"#e5e7eb":"#374151"},formatter:b=>b.dataType==="node"?`<b>${b.data.name}</b><br/>消息数: ${b.data.value||0}`:b.dataType==="edge"?`${b.data.source} → ${b.data.target}<br/>艾特次数: ${b.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:r.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:g.value.map(b=>{const $=_.value.get(b.name)||y[0];return{name:b.name,value:b.value,symbolSize:b.symbolSize||30,label:{show:a.layout==="circular"?!0:(b.symbolSize||30)>30},itemStyle:{color:$,borderColor:"#fff",borderWidth:2,shadowBlur:5,shadowColor:`${$}66`}}}),links:a.data.links.filter(b=>_.value.has(b.source)&&_.value.has(b.target)).map(b=>{const $=_.value.get(b.source)||y[0];return{source:b.source,target:b.target,value:b.value,lineStyle:{color:$,width:f(b.value||1,v)}}})}]}});function i(){l.value&&(c=Xe(l.value,r.value?"dark":void 0,{renderer:"canvas"}),c.setOption({backgroundColor:"transparent",...u.value}))}function p(){c&&c.setOption({backgroundColor:"transparent",...u.value},{notMerge:!0})}function I(){c?.resize()}function h(){c&&c.dispatchAction({type:"restore"})}return s({resetView:h}),E([()=>a.data,()=>a.layout,()=>a.directed,r],()=>{c?p():i()},{deep:!0}),ge(()=>{i(),window.addEventListener("resize",I)}),Le(()=>{window.removeEventListener("resize",I),c?.dispose()}),(v,b)=>(o(),k("div",{ref_key:"chartRef",ref:l,style:pe({height:n.value,width:"100%"})},null,4))}}),tt=Symbol("ranking-width-mode"),at={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 m=mt(tt,null);return w(()=>at[m?.value??"standard"])}function ve(m,s){return m.length<=s?m:`${m.slice(0,s)}…`}const sa={class:"px-3 py-2"},ke=B({__name:"EChartRank",props:{members:{},title:{},description:{},topN:{default:10},unit:{default:"条"},height:{default:"auto"},maxHeightVh:{default:60},bare:{type:Boolean,default:!1}},setup(m){const s=m,a=me(),n=w(()=>s.members.slice(0,s.topN)),r=w(()=>{if(s.height!=="auto")return s.height;const y=n.value.length*36;return Math.max(y+30,180)}),l={type:"linear",x:0,y:0,x2:1,y2:0,colorStops:[{offset:0,color:"#ee4567"},{offset:1,color:"#f7758c"}]},c=w(()=>{const y=[...n.value].reverse(),g=y.map(i=>ve(i.name,a.value.labelMaxLength)),_=y.map(i=>i.value),f=Math.max(..._,1),u=y.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 p=i[0];if(!p)return"";const I=n.value.length-1-p.dataIndex,h=n.value[I];return`
|
|
3
|
-
<div style="padding: 4px 8px;">
|
|
4
|
-
<div style="font-weight: bold; margin-bottom: 4px;">${h.name}</div>
|
|
5
|
-
<div>${h.value} ${s.unit} (${h.percentage}%)</div>
|
|
6
|
-
</div>
|
|
7
|
-
`}},grid:{left:a.value.gridLeft,right:70,top:15,bottom:15,containLabel:!1},xAxis:{type:"value",max:f*1.1,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{show:!1},splitLine:{show:!1}},yAxis:{type:"category",data:g,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{fontSize:12,color:"#4b5563",margin:12,formatter:(i,p)=>{const h=n.value.length-1-p+1;return`${h===1?"🥇":h===2?"🥈":h===3?"🥉":`${h}.`} ${i}`}}},series:[{type:"bar",data:u,barWidth:18,barCategoryGap:"30%",label:{show:!0,position:"right",distance:8,formatter:i=>{const p=n.value.length-1-i.dataIndex;return`${n.value[p].value} ${s.unit}`},fontSize:11,fontWeight:500,color:"#6b7280"},emphasis:{itemStyle:{shadowBlur:6,shadowColor:"rgba(238, 69, 103, 0.3)"}}}]}});return(y,g)=>m.bare?(o(),C(e(de),{key:0,"content-height":r.value,"max-height-vh":m.maxHeightVh},{default:M(()=>[x(ae,{option:c.value,height:r.value},null,8,["option","height"])]),_:1},8,["content-height","max-height-vh"])):(o(),C(e(G),{key:1,title:m.title,description:m.description,scrollable:"","max-height-vh":m.maxHeightVh},{default:M(()=>[t("div",sa,[x(ae,{option:c.value,height:r.value},null,8,["option","height"])])]),_:1},8,["title","description","max-height-vh"]))}}),oa={class:"divide-y divide-gray-100 dark:divide-gray-800"},na={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"},la={class:"w-32 shrink-0"},ia={class:"wrap-break-word font-medium text-gray-900 dark:text-white"},ra={class:"flex flex-1 items-center"},ca={class:"h-2 w-full overflow-hidden rounded-full bg-gray-100 dark:bg-gray-800"},ua={class:"flex shrink-0 items-baseline gap-2 whitespace-nowrap"},da={class:"text-lg font-bold text-gray-900 dark:text-white"},ma={class:"text-sm text-gray-500"},Fe=B({__name:"RankList",props:{members:{},showAvatar:{type:Boolean,default:!1},rankLimit:{default:0},unit:{}},setup(m){const{t:s}=X(),a=m,n=w(()=>a.unit||s("views.charts.rankList.unit")),r=w(()=>a.rankLimit>0?a.members.slice(0,a.rankLimit):a.members);function l(c){if(r.value.length===0)return 0;const y=r.value[0].value;return y===0?0:Math.round(r.value[c].value/y*100)}return(c,y)=>(o(),k("div",oa,[(o(!0),k(W,null,Z(r.value,(g,_)=>(o(),k("div",{key:g.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)(_)])},d(_+1),3),m.showAvatar?(o(),k("div",na,d(g.name.slice(0,1)),1)):L("",!0),t("div",la,[t("p",ia,d(g.name),1)]),t("div",ra,[t("div",ca,[t("div",{class:J(["h-full rounded-full bg-linear-to-r transition-all",e(_t)(_)]),style:pe({width:`${l(_)}%`})},null,6)])]),t("div",ua,[t("span",da,d(g.value),1),t("span",ma,d(n.value)+" ("+d(g.percentage)+"%)",1)])]))),128))]))}}),He=B({__name:"RankListPro",props:{members:{},title:{},description:{},topN:{default:10},unit:{}},setup(m){const{t:s}=X(),a=m,n=w(()=>a.members.slice(0,a.topN)),r=w(()=>a.members.length>a.topN);return(l,c)=>(o(),C(wt,{title:m.title,description:m.description,"show-view-all":r.value,"view-all-label":e(s)("views.charts.rankListPro.fullRanking"),"count-label":e(s)("views.charts.rankListPro.memberCount",{count:m.members.length})},{full:M(()=>[x(Fe,{members:m.members,unit:m.unit},null,8,["members","unit"])]),default:M(()=>[x(Fe,{members:n.value,unit:m.unit},null,8,["members","unit"])]),_:1},8,["title","description","show-view-all","view-all-label","count-label"]))}}),va={class:"main-content mx-auto max-w-6xl py-6"},ha={class:"mb-4 flex items-center justify-end gap-4"},pa={class:"text-xs text-gray-500 dark:text-gray-400"},ga={key:0,class:"grid grid-cols-2 gap-6"},fa={class:"mb-3 text-center"},ya={class:"text-base font-semibold text-gray-900 dark:text-white"},xa={class:"flex flex-wrap gap-2"},ba=["title","onClick"],ka={class:"text-xs opacity-50"},_a={key:1,class:"grid grid-cols-2 gap-6"},wa={class:"mb-3 text-center"},$a={class:"text-base font-semibold text-gray-900 dark:text-white"},Ca={class:"relative w-full",style:{"aspect-ratio":"4 / 3"}},Ia={class:"mt-4 text-center text-xs text-gray-500 dark:text-gray-400"},Sa=B({__name:"CatchphraseTab",props:{sessionId:{},timeFilter:{}},setup(m){const s=Ee(()=>Be(()=>import("./EChartWordcloud-DU3ZYdgz.js"),__vite__mapDeps([0,1,2,3,4]))),{t:a}=X(),n=be(),r=m,l=S(null),c=S(!1),y=S("list"),g=S(30),_=w(()=>[{label:a("quotes.catchphrase.viewMode.list"),value:"list"},{label:a("quotes.catchphrase.viewMode.wordcloud"),value:"wordcloud"}]),f=[{label:"10",value:10},{label:"30",value:30},{label:"50",value:50},{label:"100",value:100}],u=w(()=>l.value&&l.value.members.length>0),i=w(()=>{if(!l.value)return[];const T=g.value;return console.log("[CatchphraseTab] displayMembers recompute, topN:",T,"type:",typeof T),l.value.members.map(z=>{const D=z.catchphrases.slice(0,T);return console.log("[CatchphraseTab]",z.name,"total:",z.catchphrases.length,"display:",D.length),{...z,catchphrases:D}})}),p=w(()=>i.value.map(T=>({name:T.name,data:{words:T.catchphrases.map(z=>({word:z.content,count:z.count}))}}))),I=[{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 h(T){return T<I.length?I[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 b(){if(r.sessionId){c.value=!0;try{l.value=await Q().getCatchphraseAnalysis(r.sessionId,r.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{c.value=!1}}}function $(T){n.openChatRecordDrawer({keywords:[T]})}return E(g,(T,z)=>{console.log("[CatchphraseTab] topN changed:",z,"->",T,"type:",typeof T)}),E(()=>[r.sessionId,r.timeFilter],()=>{b()},{immediate:!0,deep:!0}),(T,z)=>(o(),k("div",va,[c.value?(o(),C(e(se),{key:0,text:e(a)("quotes.catchphrase.loading")},null,8,["text"])):u.value?(o(),k(W,{key:2},[t("div",ha,[t("span",pa,d(e(a)("quotes.catchphrase.topN")),1),x(e(le),{modelValue:g.value,"onUpdate:modelValue":z[0]||(z[0]=D=>g.value=D),size:"xs",items:f},null,8,["modelValue"]),z[2]||(z[2]=t("div",{class:"h-4 w-px bg-gray-200 dark:bg-gray-700"},null,-1)),x(e(le),{modelValue:y.value,"onUpdate:modelValue":z[1]||(z[1]=D=>y.value=D),size:"xs",items:_.value},null,8,["modelValue","items"])]),y.value==="list"?(o(),k("div",ga,[(o(!0),k(W,null,Z(i.value,D=>(o(),k("div",{key:D.memberId},[t("div",fa,[t("span",ya,d(D.name),1)]),t("div",xa,[(o(!0),k(W,null,Z(D.catchphrases,(F,U)=>(o(),k("div",{key:U,class:J(["inline-flex cursor-pointer items-center gap-1.5 rounded-full px-3 py-1.5 transition-opacity hover:opacity-75",h(U).bg]),title:F.content,onClick:O=>$(F.content)},[U<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",h(U).badge])},d(U+1),3)):L("",!0),t("span",{class:J(["text-sm font-medium",h(U).text])},d(v(F.content)),3),t("span",ka,d(e(a)("quotes.catchphrase.times",{count:F.count})),1)],10,ba))),128))])]))),128))])):(o(),k("div",_a,[(o(!0),k(W,null,Z(p.value,D=>(o(),k("div",{key:D.name},[t("div",wa,[t("span",$a,d(D.name),1)]),t("div",Ca,[D.data.words.length===0?(o(),C(e(ne),{key:0,text:e(a)("quotes.catchphrase.empty.title"),class:"h-full"},null,8,["text"])):(o(),C(e(s),{key:1,data:D.data,height:"100%","max-words":g.value,"color-scheme":"default","size-scale":1,loading:c.value,onWordClick:$},null,8,["data","max-words","loading"]))])]))),128))])),t("p",Ia,d(e(a)("quotes.catchphrase.stats.clickHint")),1)],64)):(o(),C(e(ne),{key:1,text:e(a)("quotes.catchphrase.empty.title")},null,8,["text"]))]))}}),Ma={class:"main-content mx-auto max-w-3xl p-6"},Ta={class:"flex items-center gap-3"},Va={class:"shrink-0 text-lg font-bold text-pink-600"},Ra={class:"flex flex-1 items-center gap-1 overflow-hidden text-sm"},La={class:"shrink-0 font-medium text-gray-900 dark:text-white whitespace-nowrap"},Da=["title"],Na={class:"flex shrink-0 items-center gap-2 text-xs text-gray-500"},Aa=B({__name:"HotRepeatTab",props:{sessionId:{},timeFilter:{}},setup(m){const{t:s}=X(),a=m,n=be(),r=S(null),l=S(!1);async function c(){if(a.sessionId){l.value=!0;try{r.value=await Q().getRepeatAnalysis(a.sessionId,a.timeFilter)}catch(_){console.error("Failed to load repeat analysis:",_)}finally{l.value=!1}}}function y(_,f=30){return _.length<=f?_:_.slice(0,f)+"..."}function g(_){n.openChatRecordDrawer({scrollToMessageId:_.firstMessageId,highlightKeywords:[_.content]})}return E(()=>[a.sessionId,a.timeFilter],()=>{c()},{immediate:!0,deep:!0}),(_,f)=>{const u=ce;return o(),k("div",Ma,[l.value?(o(),C(e(se),{key:0,text:e(s)("quotes.hotRepeat.loading")},null,8,["text"])):r.value&&r.value.hotContents.length>0?(o(),C(e($t),{key:1,items:r.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:p})=>[t("div",Ta,[t("span",{class:J(["flex h-6 w-6 shrink-0 items-center justify-center rounded-full text-xs font-bold",e(Ye)(p)])},d(p+1),3),t("span",Va,d(e(s)("quotes.hotRepeat.people",{count:i.maxChainLength})),1),t("div",Ra,[t("span",La,d(i.originatorName)+d(e(s)("quotes.hotRepeat.colon")),1),t("span",{class:"truncate text-gray-600 dark:text-gray-400",title:i.content},d(y(i.content)),9,Da)]),t("div",Na,[t("span",null,d(e(s)("quotes.hotRepeat.times",{count:i.count})),1),f[0]||(f[0]=t("span",{class:"text-gray-300 dark:text-gray-600"},"|",-1)),t("span",null,d(e(Ve)(i.lastTs)),1),x(u,{icon:"i-heroicons-chat-bubble-left-right",color:"neutral",variant:"ghost",size:"xs",title:e(s)("quotes.hotRepeat.viewChat"),onClick:Pe(I=>g(i),["stop"])},null,8,["title","onClick"])])])]),_:1},8,["items","title","description","count-template"])):(o(),C(e(G),{key:2,title:e(s)("quotes.hotRepeat.title")},{default:M(()=>[x(e(ne),{text:e(s)("quotes.hotRepeat.empty")},null,8,["text"])]),_:1},8,["title"]))])}}}),za={class:"main-content mx-auto max-w-[920px] space-y-6 p-6"},Ua={class:"grid grid-cols-1 gap-6 lg:grid-cols-2"},Fa={class:"p-5"},Ha={class:"p-5"},Ba=B({__name:"OverviewTab",props:{session:{},memberActivity:{},topMembers:{},bottomMembers:{},messageTypes:{},hourlyActivity:{},dailyActivity:{},timeRange:{},filteredMessageCount:{},filteredMemberCount:{},timeFilter:{}},setup(m){const{t:s}=X(),a=m,{dailyChartData:n}=St(()=>a.dailyActivity),r=w(()=>({labels:a.messageTypes.map(c=>Ot(c.type,s)),values:a.messageTypes.map(c=>c.count)})),l=w(()=>{const c=[...a.memberActivity].sort((u,i)=>i.messageCount-u.messageCount),y=c.slice(0,10),g=c.slice(10).reduce((u,i)=>u+i.messageCount,0),_=y.map(u=>u.name),f=y.map(u=>u.messageCount);return g>0&&(_.push(s("analysis.overview.others")),f.push(g)),{labels:_,values:f}});return(c,y)=>(o(),k("div",za,[x(Ct,{session:m.session,"daily-activity":m.dailyActivity,"message-types":m.messageTypes,"hourly-activity":m.hourlyActivity,"time-range":m.timeRange,"filtered-message-count":m.filteredMessageCount,"filtered-member-count":m.filteredMemberCount,"time-filter":m.timeFilter},null,8,["session","daily-activity","message-types","hourly-activity","time-range","filtered-message-count","filtered-member-count","time-filter"]),t("div",Ua,[x(e(G),{title:e(s)("analysis.overview.messageTypeDistribution"),"show-divider":!1},{default:M(()=>[t("div",Fa,[x(e(Ue),{data:r.value,height:280},null,8,["data"])])]),_:1},8,["title"]),x(e(G),{title:e(s)("analysis.overview.memberDistribution"),"show-divider":!1},{default:M(()=>[t("div",Ha,[x(e(Ue),{data:l.value,height:280},null,8,["data"])])]),_:1},8,["title"])]),x(It,{"daily-activity":m.dailyActivity,"daily-chart-data":e(n)},null,8,["daily-activity","daily-chart-data"])]))}}),Wa={class:"flex items-center gap-3"},Oa={key:1,class:"py-8 text-center text-sm text-gray-400"},ja=B({__name:"ActivityRank",props:{sessionId:{},memberActivity:{},timeFilter:{},showTopNSelect:{type:Boolean,default:!0},globalTopN:{}},setup(m){const s=m,a=S(null),n=S(null),r=S(!1),l=S("activity"),c=S(s.globalTopN??10);E(()=>s.globalTopN,h=>{h!==void 0&&(c.value=h)});async function y(){if(s.sessionId){r.value=!0;try{const h=Q(),[v,b]=await Promise.all([h.getDragonKingAnalysis(s.sessionId,s.timeFilter),h.getCheckInAnalysis(s.sessionId,s.timeFilter)]);a.value=v,n.value=b}catch(h){console.error("加载活跃数据失败:",h)}finally{r.value=!1}}}const g=w(()=>s.memberActivity.map(h=>({id:h.memberId.toString(),name:h.name,value:h.messageCount,percentage:h.percentage}))),_=w(()=>a.value?a.value.rank.map(h=>({id:h.memberId.toString(),name:h.name,value:h.count,percentage:h.percentage})):[]),f=w(()=>n.value?n.value.loyaltyRank.map(h=>({id:h.memberId.toString(),name:h.name,value:h.totalDays,percentage:h.percentage})):[]),u=w(()=>{switch(l.value){case"activity":return g.value;case"dragon":return _.value;case"loyalty":return f.value;default:return g.value}}),i=w(()=>{switch(l.value){case"activity":return"条";case"dragon":case"loyalty":return"天";default:return"条"}}),p=w(()=>{switch(l.value){case"activity":return"🏆 活跃榜 - 发言数量";case"dragon":return"🏆 活跃榜 - 龙王";case"loyalty":return"🏆 活跃榜 - 累计发言";default:return"🏆 活跃榜"}}),I=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 E(()=>[s.sessionId,s.timeFilter],()=>y(),{immediate:!0,deep:!0}),(h,v)=>(o(),C(e(G),{title:p.value,description:I.value},{headerRight:M(()=>[t("div",Wa,[m.showTopNSelect?(o(),C(e(re),{key:0,modelValue:c.value,"onUpdate:modelValue":v[0]||(v[0]=b=>c.value=b)},null,8,["modelValue"])):L("",!0),x(e(le),{modelValue:l.value,"onUpdate:modelValue":v[1]||(v[1]=b=>l.value=b),items:[{label:"发言数量",value:"activity"},{label:"龙王",value:"dragon"},{label:"累计发言",value:"loyalty"}],size:"sm"},null,8,["modelValue"])])]),default:M(()=>[r.value&&(l.value==="dragon"||l.value==="loyalty")?(o(),C(e(se),{key:0,text:"正在加载数据..."})):(o(),k(W,{key:1},[u.value.length>0?(o(),C(e(ke),{key:0,members:u.value,title:p.value,unit:i.value,"top-n":c.value,bare:""},null,8,["members","title","unit","top-n"])):(o(),k("div",Oa,"暂无数据"))],64))]),_:1},8,["title","description"]))}}),Ea={key:0},Pa={key:0,class:"flex items-center justify-center gap-6 border-t border-gray-100 px-5 py-3 dark:border-gray-800"},qa={class:"px-3 py-2"},Ga=B({__name:"EChartStreakRank",props:{items:{},title:{},description:{},topN:{default:10},mode:{default:"max"},maxHeightVh:{default:60},bare:{type:Boolean,default:!1}},setup(m){const s=m,a=me(),n=w(()=>s.mode==="current"?s.items.filter(f=>f.currentStreak>0).sort((f,u)=>u.currentStreak-f.currentStreak).slice(0,s.topN):s.items.slice(0,s.topN)),r=w(()=>{const f=n.value.length*36;return Math.max(f+30,180)}),l={type:"linear",x:0,y:0,x2:1,y2:0,colorStops:[{offset:0,color:"#ee4567"},{offset:1,color:"#f7758c"}]},c={type:"linear",x:0,y:0,x2:1,y2:0,colorStops:[{offset:0,color:"#f97316"},{offset:1,color:"#fb923c"}]};function y(f,u){return`${f} ~ ${u}`}function g(f){return s.mode==="current"?f.currentStreak:f.maxStreak}const _=w(()=>{const f=[...n.value].reverse(),u=f.map(h=>ve(h.name,a.value.labelMaxLength)),i=f.map(h=>g(h)),p=Math.max(...i,1),I=f.map(h=>({value:g(h),itemStyle:{color:s.mode==="current"||h.currentStreak>0?c: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:h=>{const v=h[0];if(!v)return"";const b=n.value.length-1-v.dataIndex,$=n.value[b];if(s.mode==="current")return`
|
|
8
|
-
<div style="padding: 4px 8px;">
|
|
9
|
-
<div style="font-weight: bold; margin-bottom: 6px;">${$.name}</div>
|
|
10
|
-
<div style="color: #fb923c;">🔥 当前连续 <b>${$.currentStreak}</b> 天</div>
|
|
11
|
-
<div style="margin-top: 4px; font-size: 12px; color: #9ca3af;">最长记录: ${$.maxStreak} 天</div>
|
|
12
|
-
</div>
|
|
13
|
-
`;let T=`
|
|
14
|
-
<div style="padding: 4px 8px;">
|
|
15
|
-
<div style="font-weight: bold; margin-bottom: 6px;">${$.name}</div>
|
|
16
|
-
<div style="margin-bottom: 4px;">🔥 最长连续: <b>${$.maxStreak}</b> 天</div>
|
|
17
|
-
<div style="font-size: 12px; color: #9ca3af;">${y($.maxStreakStart,$.maxStreakEnd)}</div>
|
|
18
|
-
`;return $.currentStreak>0&&(T+=`<div style="margin-top: 6px; color: #fb923c;">🔥 当前连续 ${$.currentStreak} 天</div>`),T+="</div>",T}},grid:{left:a.value.gridLeft,right:70,top:15,bottom:15,containLabel:!1},xAxis:{type:"value",max:p*1.15,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{show:!1},splitLine:{show:!1}},yAxis:{type:"category",data:u,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{fontSize:12,color:"#4b5563",margin:12,formatter:(h,v)=>{const $=n.value.length-1-v+1;return`${$===1?"🥇":$===2?"🥈":$===3?"🥉":`${$}.`} ${h}`}}},series:[{type:"bar",data:I,barWidth:18,barCategoryGap:"30%",label:{show:!0,position:"right",distance:8,formatter:h=>{const v=n.value.length-1-h.dataIndex,b=n.value[v],$=g(b),T=s.mode==="current"||b.currentStreak>0?" 🔥":"";return`${$} 天${T}`},fontSize:11,fontWeight:500,color:"#6b7280"},emphasis:{itemStyle:{shadowBlur:6,shadowColor:"rgba(249, 115, 22, 0.3)"}}}]}});return(f,u)=>m.bare?(o(),k("div",Ea,[x(e(de),{"content-height":r.value,"max-height-vh":m.maxHeightVh},{default:M(()=>[x(e(ae),{option:_.value,height:r.value},null,8,["option","height"])]),_:1},8,["content-height","max-height-vh"]),m.mode==="max"?(o(),k("div",Pa,[...u[0]||(u[0]=[vt('<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)])])):L("",!0)])):(o(),C(e(G),{key:1,title:m.title,description:m.description,scrollable:"","max-height-vh":m.maxHeightVh},qe({default:M(()=>[t("div",qa,[x(e(ae),{option:_.value,height:r.value},null,8,["option","height"])])]),_:2},[m.mode==="max"?{name:"footer",fn:M(()=>[u[1]||(u[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"]))}}),Ka={class:"px-3 py-2"},Ya=B({__name:"EChartBattleRank",props:{battles:{},title:{},description:{},topN:{default:10},maxHeightVh:{default:60},bare:{type:Boolean,default:!1}},setup(m){const s=m,a=w(()=>s.battles.slice(0,s.topN)),n=w(()=>{const y=a.value.length*36;return Math.max(y+30,180)}),r={type:"linear",x:0,y:0,x2:1,y2:0,colorStops:[{offset:0,color:"#ee4567"},{offset:1,color:"#f7758c"}]};function l(y){return`${y.participantCount} 人参战`}const c=w(()=>{const y=[...a.value].reverse(),g=y.map(i=>l(i)),_=y.map(i=>i.totalImages),f=Math.max(..._,1),u=y.map(i=>({value:i.totalImages,itemStyle:{color:r,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 p=i[0];if(!p)return"";const I=a.value.length-1-p.dataIndex,h=a.value[I],v=h.participants.slice(0,5).map($=>`<span style="color: #d1d5db;">${$.name}</span> <b>${$.imageCount}</b>张`).join("、"),b=h.participants.length>5?`、+${h.participants.length-5}`:"";return`
|
|
19
|
-
<div style="padding: 6px 8px;">
|
|
20
|
-
<div style="font-weight: bold; margin-bottom: 8px; font-size: 13px;">
|
|
21
|
-
⚔️ ${Ve(h.startTime)}
|
|
22
|
-
</div>
|
|
23
|
-
<div style="margin-bottom: 6px;">
|
|
24
|
-
<span style="color: #9ca3af;">参战人数:</span> <b>${h.participantCount}</b> 人
|
|
25
|
-
</div>
|
|
26
|
-
<div style="margin-bottom: 8px;">
|
|
27
|
-
<span style="color: #9ca3af;">总图片数:</span> <b style="color: #f472b6;">${h.totalImages}</b> 张
|
|
28
|
-
</div>
|
|
29
|
-
<div style="border-top: 1px solid #374151; padding-top: 6px; font-size: 11px;">
|
|
30
|
-
${v}${b}
|
|
31
|
-
</div>
|
|
32
|
-
</div>
|
|
33
|
-
`}},grid:{left:95,right:125,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:g,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{fontSize:11,color:"#4b5563",margin:12,formatter:(i,p)=>{const h=a.value.length-1-p+1;return`${h===1?"🥇":h===2?"🥈":h===3?"🥉":`${h}.`} ${i}`}}},series:[{type:"bar",data:u,barWidth:18,barCategoryGap:"30%",label:{show:!0,position:"right",distance:8,formatter:i=>{const p=a.value.length-1-i.dataIndex,I=a.value[p],h=Ve(I.startTime);return`${I.totalImages} 张 (${h})`},fontSize:11,fontWeight:500,color:"#6b7280"},emphasis:{itemStyle:{shadowBlur:6,shadowColor:"rgba(238, 69, 103, 0.3)"}}}]}});return(y,g)=>m.bare?(o(),C(e(de),{key:0,"content-height":n.value,"max-height-vh":m.maxHeightVh},{default:M(()=>[x(e(ae),{option:c.value,height:n.value},null,8,["option","height"])]),_:1},8,["content-height","max-height-vh"])):(o(),C(e(G),{key:1,title:m.title,description:m.description,scrollable:"","max-height-vh":m.maxHeightVh},{default:M(()=>[t("div",Ka,[x(e(ae),{option:c.value,height:n.value},null,8,["option","height"])])]),_:1},8,["title","description","max-height-vh"]))}}),Ja={class:"px-3 py-2"},Qa=B({__name:"EChartTimeRank",props:{items:{},title:{},description:{},topN:{default:10},maxHeightVh:{default:60},bare:{type:Boolean,default:!1}},setup(m){const s=m,a=me(),n=w(()=>s.items.slice(0,s.topN)),r=w(()=>{const g=n.value.length*36;return Math.max(g+30,180)}),l={type:"linear",x:0,y:0,x2:1,y2:0,colorStops:[{offset:0,color:"#f59e0b"},{offset:1,color:"#fbbf24"}]};function c(g){return(g/1e3).toFixed(2)+"s"}const y=w(()=>{if(n.value.length===0)return{};const g=[...n.value].reverse(),_=g.map(i=>ve(i.name,a.value.labelMaxLength)),f=n.value[0].avgTimeDiff,u=g.map(i=>({value:Math.round(f/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 p=i[0];if(!p)return"";const I=n.value.length-1-p.dataIndex,h=n.value[I];return`
|
|
34
|
-
<div style="padding: 4px 8px;">
|
|
35
|
-
<div style="font-weight: bold; margin-bottom: 6px;">${h.name}</div>
|
|
36
|
-
<div style="margin-bottom: 4px;">⚡️ 平均反应时间: <b>${c(h.avgTimeDiff)}</b></div>
|
|
37
|
-
<div style="font-size: 12px; color: #9ca3af;">参与复读 ${h.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:_,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{fontSize:12,color:"#4b5563",margin:12,formatter:(i,p)=>{const h=n.value.length-1-p+1;return`${h===1?"🥇":h===2?"🥈":h===3?"🥉":`${h}.`} ${i}`}}},series:[{type:"bar",data:u,barWidth:18,barCategoryGap:"30%",label:{show:!0,position:"right",distance:8,formatter:i=>{const p=n.value.length-1-i.dataIndex,I=n.value[p];return`${c(I.avgTimeDiff)} · ${I.count}次`},fontSize:11,fontWeight:500,color:"#6b7280"},emphasis:{itemStyle:{shadowBlur:6,shadowColor:"rgba(245, 158, 11, 0.3)"}}}]}});return(g,_)=>m.bare?(o(),C(e(de),{key:0,"content-height":r.value,"max-height-vh":m.maxHeightVh},{default:M(()=>[x(e(ae),{option:y.value,height:r.value},null,8,["option","height"])]),_:1},8,["content-height","max-height-vh"])):(o(),C(e(G),{key:1,title:m.title,description:m.description,scrollable:"","max-height-vh":m.maxHeightVh},{default:M(()=>[t("div",Ja,[x(e(ae),{option:y.value,height:r.value},null,8,["option","height"])])]),_:1},8,["title","description","max-height-vh"]))}}),Za={class:"flex items-center gap-3"},Xa={class:"px-3 py-2"},es=B({__name:"EChartDivingRank",props:{items:{},showTopNSelect:{type:Boolean,default:!0},maxHeightVh:{default:60},globalTopN:{}},setup(m){const s=m,a=me(),n=S("desc"),r=S(s.globalTopN??10);E(()=>s.globalTopN,i=>{i!==void 0&&(r.value=i)});const l=w(()=>[...s.items].sort((p,I)=>n.value==="desc"?I.daysSinceLastMessage-p.daysSinceLastMessage:p.daysSinceLastMessage-I.daysSinceLastMessage).slice(0,r.value)),c=w(()=>n.value==="desc"?"🤿 潜水榜 - 潜水最久":"🤿 潜水榜 - 最近冒泡"),y=w(()=>n.value==="desc"?"距离上次发言时间最久的成员":"最近发言过的成员"),g=w(()=>{const i=l.value.length*36;return Math.max(i+30,180)}),_={type:"linear",x:0,y:0,x2:1,y2:0,colorStops:[{offset:0,color:"#06b6d4"},{offset:1,color:"#22d3ee"}]};function f(i){return i===0?"今天":i===1?"昨天":`${i} 天前`}const u=w(()=>{if(l.value.length===0)return{};const i=[...l.value].reverse(),p=i.map(v=>ve(v.name,a.value.labelMaxLength)),I=Math.max(...l.value.map(v=>v.daysSinceLastMessage),1),h=i.map(v=>({value:v.daysSinceLastMessage,itemStyle:{color:_,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 b=v[0];if(!b)return"";const $=l.value.length-1-b.dataIndex,T=l.value[$];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;">🤿 ${f(T.daysSinceLastMessage)}</div>
|
|
43
|
-
<div style="font-size: 12px; color: #9ca3af;">最后发言: ${Et(T.lastMessageTs)}</div>
|
|
44
|
-
</div>
|
|
45
|
-
`}},grid:{left:a.value.gridLeft,right:100,top:15,bottom:15,containLabel:!1},xAxis:{type:"value",max:I*1.15,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{show:!1},splitLine:{show:!1}},yAxis:{type:"category",data:p,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{fontSize:12,color:"#4b5563",margin:12,formatter:(v,b)=>{const T=l.value.length-1-b+1;return`${T===1?"🥇":T===2?"🥈":T===3?"🥉":`${T}.`} ${v}`}}},series:[{type:"bar",data:h,barWidth:18,barCategoryGap:"30%",label:{show:!0,position:"right",distance:8,formatter:v=>{const b=l.value.length-1-v.dataIndex,$=l.value[b];return f($.daysSinceLastMessage)},fontSize:11,fontWeight:500,color:"#6b7280"},emphasis:{itemStyle:{shadowBlur:6,shadowColor:"rgba(0, 0, 0, 0.2)"}}}]}});return(i,p)=>(o(),C(e(G),{title:c.value,description:y.value,scrollable:"","max-height-vh":m.maxHeightVh},{headerRight:M(()=>[t("div",Za,[m.showTopNSelect?(o(),C(e(re),{key:0,modelValue:r.value,"onUpdate:modelValue":p[0]||(p[0]=I=>r.value=I)},null,8,["modelValue"])):L("",!0),x(e(le),{modelValue:n.value,"onUpdate:modelValue":p[1]||(p[1]=I=>n.value=I),items:[{label:"潜水最久",value:"desc"},{label:"最近冒泡",value:"asc"}],size:"sm"},null,8,["modelValue"])])]),default:M(()=>[t("div",Xa,[x(e(ae),{option:u.value,height:g.value},null,8,["option","height"])])]),_:1},8,["title","description","max-height-vh"]))}}),ts={class:"px-3 py-2"},as=B({__name:"EChartConsecutiveRank",props:{items:{},title:{},description:{},topN:{default:10},maxHeightVh:{default:60},bare:{type:Boolean,default:!1}},setup(m){const s=m,a=me(),n=w(()=>[...s.items].sort((g,_)=>_.maxConsecutiveDays-g.maxConsecutiveDays).slice(0,s.topN)),r=w(()=>{const g=n.value.length*36;return Math.max(g+30,180)}),l={type:"linear",x:0,y:0,x2:1,y2:0,colorStops:[{offset:0,color:"#f97316"},{offset:1,color:"#fb923c"}]},c={type:"linear",x:0,y:0,x2:1,y2:0,colorStops:[{offset:0,color:"#ec4899"},{offset:1,color:"#f472b6"}]},y=w(()=>{if(n.value.length===0)return{};const g=[...n.value].reverse(),_=g.map(u=>ve(u.name,a.value.labelMaxLength)),f=Math.max(...n.value.map(u=>u.maxConsecutiveDays),1);return{tooltip:{trigger:"axis",axisPointer:{type:"shadow"},backgroundColor:"rgba(0, 0, 0, 0.85)",borderColor:"transparent",textStyle:{color:"#fff",fontSize:12},formatter:u=>{if(!u||u.length===0)return"";const i=u[0].dataIndex,p=n.value.length-1-i,I=n.value[p];let h=`
|
|
46
|
-
<div style="padding: 6px 8px;">
|
|
47
|
-
<div style="font-weight: bold; margin-bottom: 6px;">${I.name}</div>
|
|
48
|
-
<div>最长连续: <b style="color: #f472b6;">${I.maxConsecutiveDays}</b> 天</div>
|
|
49
|
-
`;return I.currentStreak>0&&(h+=`<div style="color: #f97316;">🔥 当前连续 ${I.currentStreak} 天</div>`),h+="</div>",h}},legend:{show:!1},grid:{left:a.value.gridLeft,right:75,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:_,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{fontSize:12,color:"#4b5563",margin:12,formatter:(u,i)=>{const I=n.value.length-1-i+1;return`${I===1?"🥇":I===2?"🥈":I===3?"🥉":`${I}.`} ${u}`}}},series:[{name:"当前连续",type:"bar",data:g.map(u=>({value:u.currentStreak>0?u.maxConsecutiveDays:0,itemStyle:{color:l,borderRadius:[0,4,4,0]}})),barWidth:18,barGap:"-100%",label:{show:!0,position:"right",distance:8,formatter:u=>{const i=n.value.length-1-u.dataIndex,p=n.value[i];return p.currentStreak>0?`${p.maxConsecutiveDays} 天`:""},fontSize:11,fontWeight:500,color:"#6b7280"}},{name:"已中断",type:"bar",data:g.map(u=>({value:u.currentStreak===0?u.maxConsecutiveDays:0,itemStyle:{color:c,borderRadius:[0,4,4,0]}})),barWidth:18,label:{show:!0,position:"right",distance:8,formatter:u=>{const i=n.value.length-1-u.dataIndex,p=n.value[i];return p.currentStreak===0?`${p.maxConsecutiveDays} 天`:""},fontSize:11,fontWeight:500,color:"#6b7280"}}]}});return(g,_)=>m.bare?(o(),C(e(de),{key:0,"content-height":r.value,"max-height-vh":m.maxHeightVh},{default:M(()=>[x(e(ae),{option:y.value,height:r.value},null,8,["option","height"])]),_:1},8,["content-height","max-height-vh"])):(o(),C(e(G),{key:1,title:m.title,description:m.description,scrollable:"","max-height-vh":m.maxHeightVh},{default:M(()=>[t("div",ts,[x(e(ae),{option:y.value,height:r.value},null,8,["option","height"])])]),_:1},8,["title","description","max-height-vh"]))}}),ss={class:"px-3 py-2"},os=B({__name:"EChartNightOwlRank",props:{items:{},title:{},description:{},topN:{default:10},maxHeightVh:{default:60},bare:{type:Boolean,default:!1}},setup(m){const s=m,a=me(),n=w(()=>s.items.slice(0,s.topN)),r=w(()=>{const y=n.value.length*36;return Math.max(y+50,200)}),l={h23:"#8b5cf6",h0:"#3b82f6",h1:"#06b6d4",h2:"#f59e0b",h3to4:"#ef4444"},c=w(()=>{if(n.value.length===0)return{};const y=[...n.value].reverse(),g=y.map(f=>ve(f.name,a.value.labelMaxLength)),_=Math.max(...n.value.map(f=>f.totalNightMessages),1);return{tooltip:{trigger:"axis",axisPointer:{type:"shadow"},backgroundColor:"rgba(0, 0, 0, 0.85)",borderColor:"transparent",textStyle:{color:"#fff",fontSize:12},formatter:f=>{if(!f||f.length===0)return"";const u=f[0].dataIndex,i=n.value.length-1-u,p=n.value[i],I=p.hourlyBreakdown;return`
|
|
50
|
-
<div style="padding: 6px 8px;">
|
|
51
|
-
<div style="font-weight: bold; margin-bottom: 6px;">${p.name}</div>
|
|
52
|
-
<div style="margin-bottom: 4px;">
|
|
53
|
-
称号: <b style="color: #f472b6;">${p.title}</b>
|
|
54
|
-
</div>
|
|
55
|
-
<div style="margin-bottom: 6px;">总发言: <b>${p.totalNightMessages}</b> 条</div>
|
|
56
|
-
<div style="border-top: 1px solid #374151; padding-top: 6px;">
|
|
57
|
-
<div><span style="color: ${l.h23};">●</span> 23点: ${I.h23} 条</div>
|
|
58
|
-
<div><span style="color: ${l.h0};">●</span> 0点: ${I.h0} 条</div>
|
|
59
|
-
<div><span style="color: ${l.h1};">●</span> 1点: ${I.h1} 条</div>
|
|
60
|
-
<div><span style="color: ${l.h2};">●</span> 2点: ${I.h2} 条</div>
|
|
61
|
-
<div><span style="color: ${l.h3to4};">●</span> 3-4点: ${I.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:_*1.15,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{show:!1},splitLine:{show:!1}},yAxis:{type:"category",data:g,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{fontSize:12,color:"#4b5563",margin:12,formatter:(f,u)=>{const p=n.value.length-1-u+1;return`${p===1?"🥇":p===2?"🥈":p===3?"🥉":`${p}.`} ${f}`}}},series:[{name:"23点",type:"bar",stack:"total",data:y.map(f=>f.hourlyBreakdown.h23),itemStyle:{color:l.h23},barWidth:18},{name:"0点",type:"bar",stack:"total",data:y.map(f=>f.hourlyBreakdown.h0),itemStyle:{color:l.h0},barWidth:18},{name:"1点",type:"bar",stack:"total",data:y.map(f=>f.hourlyBreakdown.h1),itemStyle:{color:l.h1},barWidth:18},{name:"2点",type:"bar",stack:"total",data:y.map(f=>f.hourlyBreakdown.h2),itemStyle:{color:l.h2},barWidth:18},{name:"3-4点",type:"bar",stack:"total",data:y.map(f=>f.hourlyBreakdown.h3to4),itemStyle:{color:l.h3to4,borderRadius:[0,4,4,0]},barWidth:18,label:{show:!0,position:"right",distance:8,formatter:f=>{const u=n.value.length-1-f.dataIndex;return`${n.value[u].totalNightMessages} 条`},fontSize:11,fontWeight:500,color:"#6b7280"}}]}});return(y,g)=>m.bare?(o(),C(e(de),{key:0,"content-height":r.value,"max-height-vh":m.maxHeightVh},{default:M(()=>[x(e(ae),{option:c.value,height:r.value},null,8,["option","height"])]),_:1},8,["content-height","max-height-vh"])):(o(),C(e(G),{key:1,title:m.title,description:m.description,scrollable:"","max-height-vh":m.maxHeightVh},{default:M(()=>[t("div",ss,[x(e(ae),{option:c.value,height:r.value},null,8,["option","height"])])]),_:1},8,["title","description","max-height-vh"]))}}),ns={id:"streak-rank",class:"scroll-mt-24"},ls={class:"flex items-center gap-3"},is=B({__name:"CheckInRank",props:{sessionId:{},timeFilter:{},showTopNSelect:{type:Boolean,default:!0},globalTopN:{}},setup(m){const s=m,a=S(null),n=S(!1),r=S("max"),l=S(s.globalTopN??10);E(()=>s.globalTopN,f=>{f!==void 0&&(l.value=f)});const c=w(()=>r.value==="max"?"🔥 火花榜 - 最长连续":"🔥 火花榜 - 当前连续"),y=w(()=>r.value==="max"?"历史最长连续发言天数":"正在持续连续发言的成员"),g=w(()=>a.value?a.value.streakRank.some(f=>f.currentStreak>0):!1);async function _(){if(s.sessionId){n.value=!0;try{a.value=await Q().getCheckInAnalysis(s.sessionId,s.timeFilter)}catch(f){console.error("加载打卡分析失败:",f)}finally{n.value=!1}}}return E(()=>[s.sessionId,s.timeFilter],()=>{_()},{immediate:!0,deep:!0}),(f,u)=>(o(),k("div",ns,[n.value?(o(),C(e(se),{key:0,text:"正在分析数据..."})):a.value&&a.value.streakRank.length>0?(o(),C(e(G),{key:1,title:c.value,description:y.value},{headerRight:M(()=>[t("div",ls,[m.showTopNSelect?(o(),C(e(re),{key:0,modelValue:l.value,"onUpdate:modelValue":u[0]||(u[0]=i=>l.value=i)},null,8,["modelValue"])):L("",!0),g.value?(o(),C(e(le),{key:1,modelValue:r.value,"onUpdate:modelValue":u[1]||(u[1]=i=>r.value=i),items:[{label:"最长连续",value:"max"},{label:"当前连续",value:"current"}],size:"sm"},null,8,["modelValue"])):L("",!0)])]),default:M(()=>[x(e(Ga),{items:a.value.streakRank,title:c.value,mode:r.value,"top-n":l.value,bare:""},null,8,["items","title","mode","top-n"])]),_:1},8,["title","description"])):(o(),C(e(G),{key:2,title:"🔥 火花榜"},{default:M(()=>[x(e(ne),{text:"暂无连续发言数据"})]),_:1}))]))}}),rs={class:"flex items-center gap-3"},cs={key:1,class:"py-8 text-center text-sm text-gray-400"},us={key:1,class:"py-8 text-center text-sm text-gray-400"},ds=B({__name:"MemeBattleRank",props:{sessionId:{},timeFilter:{},showTopNSelect:{type:Boolean,default:!0},globalTopN:{}},setup(m){const s=m,a=S(null),n=S(!1),r=S("count"),l=S(s.globalTopN??10);E(()=>s.globalTopN,p=>{p!==void 0&&(l.value=p)});async function c(){if(s.sessionId){n.value=!0;try{a.value=await Q().getMemeBattleAnalysis(s.sessionId,s.timeFilter)}catch(p){console.error("加载斗图分析失败:",p)}finally{n.value=!1}}}const y=w(()=>a.value?a.value.rankByCount.map(p=>({id:p.memberId.toString(),name:p.name,value:p.count,percentage:p.percentage})):[]),g=w(()=>a.value?a.value.rankByImageCount.map(p=>({id:p.memberId.toString(),name:p.name,value:p.count,percentage:p.percentage})):[]),_=w(()=>r.value==="count"?y.value:g.value),f=w(()=>r.value==="count"?"场":"张"),u=w(()=>{switch(r.value){case"battle":return"⚔️ 斗图榜 - 史诗级战役";case"count":return"⚔️ 斗图榜 - 按场次";case"image":return"⚔️ 斗图榜 - 按图量";default:return"⚔️ 斗图榜"}}),i=w(()=>{switch(r.value){case"battle":return"记录最激烈的斗图大战";case"count":return"参与斗图次数最多的人";case"image":return"在斗图中发送图片最多的人";default:return""}});return E(()=>[s.sessionId,s.timeFilter],()=>c(),{immediate:!0,deep:!0}),(p,I)=>n.value?(o(),C(e(se),{key:0,text:"正在统计斗图数据..."})):a.value?(o(),C(e(G),{key:1,title:u.value,description:i.value},{headerRight:M(()=>[t("div",rs,[m.showTopNSelect?(o(),C(e(re),{key:0,modelValue:l.value,"onUpdate:modelValue":I[0]||(I[0]=h=>l.value=h)},null,8,["modelValue"])):L("",!0),x(e(le),{modelValue:r.value,"onUpdate:modelValue":I[1]||(I[1]=h=>r.value=h),items:[{label:"按场次",value:"count"},{label:"按图量",value:"image"},{label:"史诗级战役",value:"battle"}],size:"sm"},null,8,["modelValue"])])]),default:M(()=>[r.value==="battle"?(o(),k(W,{key:0},[a.value.topBattles.length>0?(o(),C(e(Ya),{key:0,battles:a.value.topBattles,title:"","top-n":l.value,bare:""},null,8,["battles","top-n"])):(o(),k("div",cs,"暂无史诗级战役数据"))],64)):(o(),k(W,{key:1},[_.value.length>0?(o(),C(e(ke),{key:0,members:_.value,title:u.value,unit:f.value,"top-n":l.value,bare:""},null,8,["members","title","unit","top-n"])):(o(),k("div",us,"暂无斗图数据"))],64))]),_:1},8,["title","description"])):L("",!0)}}),ms={class:"space-y-6"},vs={class:"flex items-center gap-3"},hs={class:"flex items-center gap-3"},ps={key:1,class:"px-3 py-2"},gs=B({__name:"RepeatSection",props:{sessionId:{},timeFilter:{},showTopNSelect:{type:Boolean,default:!0},globalTopN:{}},setup(m){const s=m,a=S(null),n=S(!1),r=S("originator"),l=S("fastest"),c=S(s.globalTopN??10),y=S(s.globalTopN??10);E(()=>s.globalTopN,$=>{$!==void 0&&(c.value=$,y.value=$)});async function g(){if(s.sessionId){n.value=!0;try{a.value=await Q().getRepeatAnalysis(s.sessionId,s.timeFilter)}catch($){console.error("加载复读分析失败:",$)}finally{n.value=!1}}}const _=w(()=>a.value?a.value.originators.map($=>({id:$.memberId.toString(),name:$.name,value:$.count,percentage:$.percentage})):[]),f=w(()=>a.value?a.value.initiators.map($=>({id:$.memberId.toString(),name:$.name,value:$.count,percentage:$.percentage})):[]),u=w(()=>a.value?a.value.breakers.map($=>({id:$.memberId.toString(),name:$.name,value:$.count,percentage:$.percentage})):[]),i=w(()=>{switch(r.value){case"originator":return _.value;case"initiator":return f.value;case"breaker":return u.value;default:return _.value}}),p=w(()=>{switch(r.value){case"originator":return"🔁 复读榜 - 被复读";case"initiator":return"🔁 复读榜 - 挑起";case"breaker":return"🔁 复读榜 - 打断";default:return"🔁 复读榜"}}),I=w(()=>{switch(r.value){case"originator":return"发出的消息被别人复读的次数";case"initiator":return"第二个发送相同消息、带起节奏的人";case"breaker":return"终结复读链的人";default:return""}}),h=w(()=>{if(!a.value)return{labels:[],values:[]};const $=a.value.chainLengthDistribution;return{labels:$.map(T=>`${T.length}人`),values:$.map(T=>T.count)}}),v=w(()=>l.value==="fastest"?"📊 复读统计 - 最快反应":"📊 复读统计 - 链长分布"),b=w(()=>{if(l.value==="fastest")return"平均复读反应时间(至少参与5次复读)";const $=a.value?.totalRepeatChains??0,T=a.value?.avgChainLength??0;return`共 ${$} 次复读,平均 ${T} 人参与`});return E(()=>[s.sessionId,s.timeFilter],()=>g(),{immediate:!0,deep:!0}),($,T)=>(o(),k("div",ms,[n.value?(o(),C(e(se),{key:0,text:"正在分析复读数据..."})):a.value&&a.value.totalRepeatChains>0?(o(),k(W,{key:1},[x(e(G),{title:p.value,description:I.value},{headerRight:M(()=>[t("div",vs,[m.showTopNSelect?(o(),C(e(re),{key:0,modelValue:c.value,"onUpdate:modelValue":T[0]||(T[0]=z=>c.value=z)},null,8,["modelValue"])):L("",!0),x(e(le),{modelValue:r.value,"onUpdate:modelValue":T[1]||(T[1]=z=>r.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(ke),{key:0,members:i.value,title:p.value,unit:"次","top-n":c.value,bare:""},null,8,["members","title","top-n"])):(o(),C(e(ne),{key:1,text:"暂无数据"}))]),_:1},8,["title","description"]),x(e(G),{title:v.value,description:b.value},{headerRight:M(()=>[t("div",hs,[m.showTopNSelect&&l.value==="fastest"?(o(),C(e(re),{key:0,modelValue:y.value,"onUpdate:modelValue":T[2]||(T[2]=z=>y.value=z)},null,8,["modelValue"])):L("",!0),x(e(le),{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(Qa),{key:0,items:a.value.fastestRepeaters,"top-n":y.value,title:"",bare:""},null,8,["items","top-n"])):(o(),C(e(ne),{key:1,text:"暂无最快复读数据"}))],64)):(o(),k("div",ps,[h.value.labels.length>0?(o(),C(e(jt),{key:0,data:h.value,height:200},null,8,["data"])):(o(),C(e(ne),{key:1,text:"暂无分布数据"}))]))]),_:1},8,["title","description"])],64)):(o(),C(e(G),{key:2,title:"🔁 复读榜"},{default:M(()=>[x(e(ne),{text:"该群组暂无复读记录"})]),_:1}))]))}}),fs=B({__name:"DivingRank",props:{sessionId:{},timeFilter:{},globalTopN:{}},setup(m){const s=m,a=S(null),n=S(!1);async function r(){if(s.sessionId){n.value=!0;try{a.value=await Q().getDivingAnalysis(s.sessionId,s.timeFilter)}catch(l){console.error("加载潜水分析失败:",l)}finally{n.value=!1}}}return E(()=>[s.sessionId,s.timeFilter],()=>r(),{immediate:!0,deep:!0}),(l,c)=>n.value?(o(),C(e(se),{key:0,text:"正在统计潜水数据..."})):a.value&&a.value.rank.length>0?(o(),C(e(es),{key:1,items:a.value.rank,"global-top-n":m.globalTopN},null,8,["items","global-top-n"])):L("",!0)}}),ys={class:"space-y-6"},xs={class:"flex items-center gap-3"},bs={key:1,class:"py-8 text-center text-sm text-gray-400"},ks={key:1,class:"py-8 text-center text-sm text-gray-400"},_s={class:"flex items-center gap-3"},ws={key:1,class:"py-8 text-center text-sm text-gray-400"},$s=B({__name:"NightOwlRank",props:{sessionId:{},timeFilter:{},showTopNSelect:{type:Boolean,default:!0},globalTopN:{}},setup(m){const s=m,a=S(null),n=S(!1),r=S("first"),l=S("distribution"),c=S(s.globalTopN??10),y=S(s.globalTopN??10);E(()=>s.globalTopN,v=>{v!==void 0&&(c.value=v,y.value=v)});async function g(){if(s.sessionId){n.value=!0;try{a.value=await Q().getNightOwlAnalysis(s.sessionId,s.timeFilter)}catch(v){console.error("加载出勤分析失败:",v)}finally{n.value=!1}}}const _=w(()=>a.value?a.value.lastSpeakerRank.map(v=>({id:String(v.memberId),name:v.name,value:v.count,percentage:v.percentage})):[]),f=w(()=>a.value?a.value.firstSpeakerRank.map(v=>({id:String(v.memberId),name:v.name,value:v.count,percentage:v.percentage})):[]),u=w(()=>r.value==="last"?_.value:f.value),i=w(()=>r.value==="last"?"⏰ 出勤排行 - 最晚下班":"⏰ 出勤排行 - 最早上班"),p=w(()=>{const v=a.value?.totalDays??0;return r.value==="last"?`每天最后一个发言的人(共 ${v} 天)`:`每天第一个发言的人(共 ${v} 天)`}),I=w(()=>l.value==="distribution"?"🦉 修仙统计 - 发言分布":"🦉 修仙统计 - 连续记录"),h=w(()=>l.value==="distribution"?"深夜时段(23:00-05:00)各时段发言分布":"连续在深夜时段发言的天数");return E(()=>[s.sessionId,s.timeFilter],()=>g(),{immediate:!0,deep:!0}),(v,b)=>(o(),k("div",ys,[n.value?(o(),C(e(se),{key:0,text:"正在加载出勤分析..."})):a.value?(o(),k(W,{key:1},[x(e(G),{title:I.value,description:h.value},{headerRight:M(()=>[t("div",xs,[m.showTopNSelect?(o(),C(e(re),{key:0,modelValue:c.value,"onUpdate:modelValue":b[0]||(b[0]=$=>c.value=$)},null,8,["modelValue"])):L("",!0),x(e(le),{modelValue:l.value,"onUpdate:modelValue":b[1]||(b[1]=$=>l.value=$),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(os),{key:0,items:a.value.nightOwlRank,"top-n":c.value,title:"",bare:""},null,8,["items","top-n"])):(o(),k("div",bs,"暂无深夜发言数据"))],64)):(o(),k(W,{key:1},[a.value.consecutiveRecords.length>0?(o(),C(e(as),{key:0,items:a.value.consecutiveRecords,"top-n":c.value,title:"",bare:""},null,8,["items","top-n"])):(o(),k("div",ks,"暂无连续记录"))],64))]),_:1},8,["title","description"]),x(e(G),{title:i.value,description:p.value},{headerRight:M(()=>[t("div",_s,[m.showTopNSelect?(o(),C(e(re),{key:0,modelValue:y.value,"onUpdate:modelValue":b[2]||(b[2]=$=>y.value=$)},null,8,["modelValue"])):L("",!0),x(e(le),{modelValue:r.value,"onUpdate:modelValue":b[3]||(b[3]=$=>r.value=$),items:[{label:"最早上班",value:"first"},{label:"最晚下班",value:"last"}],size:"sm"},null,8,["modelValue"])])]),default:M(()=>[u.value.length>0?(o(),C(e(ke),{key:0,members:u.value,title:i.value,"top-n":y.value,unit:"次",bare:""},null,8,["members","title","top-n"])):(o(),k("div",ws,"暂无数据"))]),_:1},8,["title","description"])],64)):L("",!0)]))}}),Cs={class:"mb-8 mt-4"},Is={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"}},Ss={id:"activity-rank",class:"scroll-mt-24"},Ms={id:"meme-battle",class:"scroll-mt-24"},Ts={id:"repeat",class:"scroll-mt-24"},Vs={id:"night-owl",class:"scroll-mt-24"},Rs={id:"diving",class:"scroll-mt-24"},Ls={class:"border-l border-gray-200 pl-4 dark:border-gray-800"},Ds={class:"mt-4 border-l border-gray-200 pl-4 dark:border-gray-800"},Ns={class:"flex rounded-lg border border-gray-200 bg-white p-0.5 text-xs dark:border-gray-700 dark:bg-page-dark"},As=["onClick"],zs=B({__name:"RankingView",props:{sessionId:{},timeFilter:{}},setup(m){const s=m,a=S([]),n=S([]);async function r(){if(!s.sessionId)return;const h=Q(),[v,b]=await Promise.all([h.getMemberActivity(s.sessionId,s.timeFilter),h.getAvailableYears(s.sessionId)]);a.value=v,n.value=b}E(()=>[s.sessionId,s.timeFilter],()=>r(),{immediate:!0,deep:!0});const l=w(()=>{if(s.timeFilter?.startTs&&s.timeFilter?.endTs){const h=new Date(s.timeFilter.startTs*1e3).getFullYear(),v=new Date(s.timeFilter.endTs*1e3).getFullYear();return h===v?`${h} 赛季`:`${h}-${v} 赛季`}if(n.value.length>0){const h=[...n.value].sort(($,T)=>$-T),v=h[0],b=h[h.length-1];return v===b?`${v} 赛季`:`${v}-${b} 赛季`}return"全部赛季"}),c=w(()=>({startTs:s.timeFilter?.startTs,endTs:s.timeFilter?.endTs})),y=[{id:"activity-rank",label:"🏆 活跃榜"},{id:"streak-rank",label:"🔥 火花榜"},{id:"meme-battle",label:"⚔️ 斗图榜"},{id:"repeat",label:"🔁 复读榜"},{id:"night-owl",label:"⏰ 出勤榜"},{id:"diving",label:"🤿 潜水榜"}],{contentRef:g,activeAnchor:_,scrollToAnchor:f}=Qt(y,{threshold:350}),u=S(10),i=S("standard");ht(tt,i);const p=[{value:"standard",label:"标准"},{value:"wide",label:"宽屏"},{value:"full",label:"全宽"}],I=w(()=>at[i.value].contentClass);return(h,v)=>(o(),k("div",{ref_key:"contentRef",ref:g,class:"flex gap-6 p-6"},[t("div",{class:J(["main-content min-w-0 flex-1 px-8 mx-auto space-y-6",I.value])},[t("div",Cs,[t("h1",Is," 🏆 "+d(l.value),1),v[1]||(v[1]=t("p",{class:"mt-4 text-sm text-gray-500 dark:text-gray-400"},"各榜单前三名请找群主领取奖励 🎁",-1))]),t("div",Ss,[x(e(ja),{"session-id":s.sessionId,"member-activity":a.value,"time-filter":c.value,"global-top-n":u.value},null,8,["session-id","member-activity","time-filter","global-top-n"])]),x(e(is),{"session-id":s.sessionId,"time-filter":c.value,"global-top-n":u.value},null,8,["session-id","time-filter","global-top-n"]),t("div",Ms,[x(e(ds),{"session-id":s.sessionId,"time-filter":c.value,"global-top-n":u.value},null,8,["session-id","time-filter","global-top-n"])]),t("div",Ts,[x(e(gs),{"session-id":s.sessionId,"time-filter":c.value,"global-top-n":u.value},null,8,["session-id","time-filter","global-top-n"])]),t("div",Vs,[x(e($s),{"session-id":s.sessionId,"time-filter":c.value,"global-top-n":u.value},null,8,["session-id","time-filter","global-top-n"])]),t("div",Rs,[x(e(fs),{"session-id":s.sessionId,"time-filter":c.value,"global-top-n":u.value},null,8,["session-id","time-filter","global-top-n"])]),v[2]||(v[2]=t("div",{class:"h-48 no-capture"},null,-1))],2),x(e(ta),{anchors:y,"active-anchor":e(_),onClick:e(f)},{default:M(()=>[t("div",Ls,[v[3]||(v[3]=t("div",{class:"text-xs text-gray-400 mb-2"},"显示数量",-1)),x(e(re),{modelValue:u.value,"onUpdate:modelValue":v[0]||(v[0]=b=>u.value=b)},null,8,["modelValue"])]),t("div",Ds,[v[4]||(v[4]=t("div",{class:"mb-2 text-xs text-gray-400"},"榜单宽度",-1)),t("div",Ns,[(o(),k(W,null,Z(p,b=>t("button",{key:b.value,type:"button",class:J(["rounded-md px-2 py-1 transition",i.value===b.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:$=>i.value=b.value},d(b.label),11,As)),64))])])]),_:1},8,["active-anchor","onClick"])],512))}}),Us={class:"flex h-full flex-col"},Fs={class:"flex items-center justify-end px-4 py-2"},Hs={class:"flex items-center gap-4"},Bs={class:"flex items-center gap-2"},Ws={class:"text-xs text-gray-400"},Os={class:"flex items-center gap-2"},js={class:"text-xs text-gray-400"},Es={class:"flex-1 min-h-0 relative"},Ps={key:0,class:"absolute inset-0 flex items-center justify-center"},qs={key:0,class:"h-full"},Gs={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"},Ks={key:1,class:"flex h-full items-center justify-center text-gray-400"},Ys={class:"text-center"},Js={class:"mt-2 text-sm"},Qs=B({__name:"InteractionView",props:{sessionId:{},timeFilter:{}},setup(m){const s=m,{t:a}=X(),n=S(!0),r=S({nodes:[],links:[],maxLinkValue:0}),l=S("circular"),c=S(!1),y=S(null);function g(){y.value?.resetView()}async function _(){if(s.sessionId){n.value=!0;try{const f=await Q().getMentionGraph(s.sessionId,s.timeFilter);r.value={nodes:f.nodes,links:f.links,maxLinkValue:f.maxLinkValue}}catch(f){console.error("[chart-interaction] 加载互动关系图数据失败:",f)}finally{n.value=!1}}}return E(()=>[s.sessionId,s.timeFilter],()=>{_()},{immediate:!0,deep:!0}),(f,u)=>{const i=ce,p=Ge("UButtonGroup"),I=ot,h=Re;return o(),k("div",Us,[t("div",Fs,[t("div",Hs,[t("div",Bs,[t("span",Ws,d(e(a)("views.interaction.layout"))+":",1),x(p,{size:"xs"},{default:M(()=>[x(i,{color:l.value==="circular"?"primary":"neutral",variant:l.value==="circular"?"solid":"ghost",onClick:u[0]||(u[0]=v=>l.value="circular")},{default:M(()=>[K(d(e(a)("views.interaction.circular")),1)]),_:1},8,["color","variant"]),x(i,{color:l.value==="force"?"primary":"neutral",variant:l.value==="force"?"solid":"ghost",onClick:u[1]||(u[1]=v=>l.value="force")},{default:M(()=>[K(d(e(a)("views.interaction.force")),1)]),_:1},8,["color","variant"])]),_:1})]),t("div",Os,[t("span",js,d(e(a)("views.interaction.directed"))+":",1),x(I,{modelValue:c.value,"onUpdate:modelValue":u[2]||(u[2]=v=>c.value=v),size:"xs"},null,8,["modelValue"])]),x(i,{size:"xs",color:"neutral",variant:"ghost",icon:"i-heroicons-arrow-path",onClick:g},{default:M(()=>[K(d(e(a)("views.interaction.reset")),1)]),_:1})])]),t("div",Es,[n.value?(o(),k("div",Ps,[x(h,{name:"i-heroicons-arrow-path",class:"h-8 w-8 animate-spin text-pink-500"})])):(o(),k(W,{key:1},[r.value.nodes.length>0?(o(),k("div",qs,[x(e(aa),{ref_key:"graphRef",ref:y,data:r.value,layout:l.value,directed:c.value,height:"100%"},null,8,["data","layout","directed"]),t("div",Gs,d(e(a)("views.interaction.graphHint",{nodes:r.value.nodes.length,links:r.value.links.length})),1)])):(o(),k("div",Ks,[t("div",Ys,[x(h,{name:"i-heroicons-user-group",class:"mx-auto h-10 w-10 text-gray-300 dark:text-gray-600"}),t("p",Js,d(e(a)("views.interaction.noInteraction")),1)])]))],64))])])}}}),Zs={class:"main-content mx-auto max-w-[920px] space-y-6 p-6"},Xs={class:"grid grid-cols-1 gap-6 lg:grid-cols-2"},eo={class:"grid grid-cols-1 gap-6 lg:grid-cols-2"},to={class:"divide-y divide-gray-100 dark:divide-gray-800"},ao={class:"flex flex-1 items-center gap-2"},so=["onClick"],oo={class:"flex items-center gap-1 text-pink-500"},no={class:"text-xs"},lo=["onClick"],io={class:"shrink-0 text-right text-sm text-gray-500"},ro={key:0,class:"text-red-500"},co={key:1},uo={class:"divide-y divide-gray-100 dark:divide-gray-800"},mo={class:"flex flex-1 items-center gap-2"},vo=["onClick"],ho={class:"flex items-center gap-1"},po={class:"text-xs text-gray-400"},go={class:"text-xs text-gray-400"},fo=["onClick"],yo={class:"shrink-0 text-right"},xo={class:"text-lg font-bold text-pink-600"},bo={class:"ml-1 text-sm text-gray-500"},ko={key:0,class:"p-5"},_o={class:"mb-4 text-lg font-semibold text-gray-900 dark:text-white"},wo={key:0,class:"mb-4"},$o={class:"mb-2 text-sm font-medium text-gray-700 dark:text-gray-300"},Co={class:"space-y-2"},Io={class:"text-sm font-medium text-gray-900 dark:text-white"},So={class:"text-xs text-gray-500"},Mo={key:1},To={class:"mb-2 text-sm font-medium text-gray-700 dark:text-gray-300"},Vo={class:"space-y-2"},Ro={class:"text-sm font-medium text-gray-900 dark:text-white"},Lo={class:"text-xs text-gray-500"},Do={class:"mt-4 flex justify-end"},No=B({__name:"Relationships",props:{sessionId:{},timeFilter:{}},setup(m){const{t:s}=X(),a=m,n=S(null),r=S(!1),l=S(null),c=S(!1);async function y(){if(a.sessionId){r.value=!0;try{n.value=await Q().getMentionAnalysis(a.sessionId,a.timeFilter)}catch(u){console.error("加载 @ 互动分析失败:",u)}finally{r.value=!1}}}const g=w(()=>n.value?n.value.topMentioners.map(u=>({id:u.memberId.toString(),name:u.name,value:u.count,percentage:u.percentage})):[]),_=w(()=>n.value?n.value.topMentioned.map(u=>({id:u.memberId.toString(),name:u.name,value:u.count,percentage:u.percentage})):[]);function f(u){if(!n.value)return;const i=n.value.memberDetails.find(p=>p.memberId===u);i&&(l.value=i,c.value=!0)}return E(()=>[a.sessionId,a.timeFilter],()=>{y()},{immediate:!0,deep:!0}),(u,i)=>{const p=We,I=ce,h=xe;return o(),k("div",Zs,[r.value?(o(),C(e(se),{key:0,text:e(s)("members.relationships.loading")},null,8,["text"])):n.value&&n.value.totalMentions>0?(o(),k(W,{key:1},[t("div",Xs,[g.value.length>0?(o(),C(e(He),{key:0,members:g.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"])):L("",!0),_.value.length>0?(o(),C(e(He),{key:1,members:_.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"])):L("",!0)]),t("div",eo,[n.value.oneWay.length>0?(o(),C(e(G),{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",to,[(o(!0),k(W,null,Z(n.value.oneWay.slice(0,10),(v,b)=>(o(),k("div",{key:b,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",b===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"])},d(b+1),3),t("div",ao,[t("button",{class:"font-medium text-gray-900 hover:text-pink-600 dark:text-white dark:hover:text-pink-600",onClick:$=>f(v.fromMemberId)},d(v.fromName),9,so),t("div",oo,[i[2]||(i[2]=t("span",{class:"text-lg"},"→",-1)),t("span",no,d(v.fromToCount)+"次",1)]),t("button",{class:"font-medium text-gray-900 hover:text-pink-600 dark:text-white dark:hover:text-pink-600",onClick:$=>f(v.toMemberId)},d(v.toName),9,lo)]),t("div",io,[v.toFromCount===0?(o(),k("span",ro,d(e(s)("members.relationships.oneWay.neverRespond")),1)):(o(),k("span",co,d(e(s)("members.relationships.oneWay.reverse",{count:v.toFromCount})),1))]),x(p,{color:"pink",variant:"soft",size:"xs"},{default:M(()=>[K(d(e(s)("members.relationships.oneWay.ratio",{value:Math.round(v.ratio*100)})),1)]),_:2},1024)]))),128))])]),_:1},8,["title","description"])):L("",!0),n.value.twoWay.length>0?(o(),C(e(G),{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",uo,[(o(!0),k(W,null,Z(n.value.twoWay.slice(0,10),(v,b)=>(o(),k("div",{key:b,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",b===0?"bg-linear-to-r from-pink-400 to-red-400 text-white":b===1?"bg-linear-to-r from-pink-300 to-red-300 text-white":b===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"])},d(b+1),3),t("div",mo,[t("button",{class:"font-medium text-gray-900 hover:text-pink-600 dark:text-white dark:hover:text-pink-600",onClick:$=>f(v.member1Id)},d(v.member1Name),9,vo),t("div",ho,[t("span",po,d(v.member1To2),1),i[3]||(i[3]=t("span",{class:"text-lg text-pink-500"},"⇄",-1)),t("span",go,d(v.member2To1),1)]),t("button",{class:"font-medium text-gray-900 hover:text-pink-600 dark:text-white dark:hover:text-pink-600",onClick:$=>f(v.member2Id)},d(v.member2Name),9,fo)]),t("div",yo,[t("span",xo,d(v.total),1),t("span",bo,d(e(s)("members.relationships.twoWay.interactions")),1)]),x(p,{color:v.balance>=.7?"green":v.balance>=.5?"blue":"gray",variant:"soft",size:"xs"},{default:M(()=>[K(d(e(s)("members.relationships.twoWay.balance",{value:Math.round(v.balance*100)})),1)]),_:2},1032,["color"])]))),128))])]),_:1},8,["title","description"])):L("",!0)])],64)):r.value?L("",!0):(o(),C(e(G),{key:2,title:e(s)("members.relationships.emptyTitle")},{default:M(()=>[x(e(ne),{text:e(s)("members.relationships.empty")},null,8,["text"])]),_:1},8,["title"])),x(h,{open:c.value,"onUpdate:open":i[1]||(i[1]=v=>c.value=v)},{content:M(()=>[l.value?(o(),k("div",ko,[t("h3",_o,d(e(s)("members.relationships.modal.title",{name:l.value.name})),1),l.value.topMentioned.length>0?(o(),k("div",wo,[t("h4",$o,d(e(s)("members.relationships.modal.topMentioned")),1),t("div",Co,[(o(!0),k(W,null,Z(l.value.topMentioned,(v,b)=>(o(),k("div",{key:b,class:"flex items-center gap-3 rounded-lg bg-gray-50 px-3 py-2 dark:bg-gray-800"},[t("span",Io,d(v.toName),1),t("span",So,d(e(s)("members.relationships.modal.timesCount",{count:v.count})),1)]))),128))])])):L("",!0),l.value.topMentioners.length>0?(o(),k("div",Mo,[t("h4",To,d(e(s)("members.relationships.modal.topMentioners")),1),t("div",Vo,[(o(!0),k(W,null,Z(l.value.topMentioners,(v,b)=>(o(),k("div",{key:b,class:"flex items-center gap-3 rounded-lg bg-gray-50 px-3 py-2 dark:bg-gray-800"},[t("span",Ro,d(v.fromName),1),t("span",Lo,d(e(s)("members.relationships.modal.timesCount",{count:v.count})),1)]))),128))])])):L("",!0),t("div",Do,[x(I,{variant:"soft",onClick:i[0]||(i[0]=v=>c.value=!1)},{default:M(()=>[K(d(e(s)("members.relationships.modal.close")),1)]),_:1})])])):L("",!0)]),_:1},8,["open"])])}}}),Ao={class:"mx-auto max-w-[920px] p-4 h-full"},zo={class:"flex items-center justify-between px-4 py-3 border-b border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-page-dark/50"},Uo={class:"flex items-center gap-3"},Fo={class:"flex items-center gap-3"},Ho={class:"p-3 w-64"},Bo={class:"text-sm font-medium mb-3"},Wo={class:"space-y-3"},Oo={class:"text-xs text-gray-500 mb-1 block"},jo={class:"text-xs text-gray-400 mt-1"},Eo={class:"text-xs text-gray-500 mb-1 block"},Po={class:"text-xs text-gray-400 mt-1"},qo={class:"flex-1 min-h-0 overflow-hidden"},Go={key:0,class:"h-full flex items-center justify-center"},Ko={key:1,class:"h-full flex items-center justify-center"},Yo={class:"text-center text-gray-400"},Jo={key:2,class:"h-full"},Qo={key:3,class:"h-full flex overflow-hidden"},Zo={class:"w-64 border-r border-gray-200 dark:border-gray-700 flex flex-col overflow-hidden"},Xo={class:"px-4 py-3 border-b border-gray-200 dark:border-gray-700"},en={class:"text-sm font-medium flex items-center gap-2"},tn={class:"flex-1 overflow-y-auto"},an=["onClick"],sn={class:"flex items-center justify-between"},on={class:"text-sm truncate"},nn={class:"text-xs text-gray-400"},ln={class:"flex-1 overflow-hidden flex flex-col"},rn={key:0,class:"flex-1 flex items-center justify-center"},cn={class:"text-center text-gray-400"},un={class:"px-4 py-3 border-b border-gray-200 dark:border-gray-700 flex items-center gap-3"},dn={class:"w-10 h-10 rounded-full flex items-center justify-center text-white font-bold bg-primary-500"},mn={class:"font-medium"},vn={class:"text-xs text-gray-400"},hn={class:"px-4 py-3 border-b border-gray-200 dark:border-gray-700"},pn={class:"text-sm font-medium flex items-center gap-2"},gn={class:"flex-1 overflow-y-auto"},fn={key:0,class:"p-4 text-center text-gray-400"},yn={class:"flex items-center gap-3"},xn={class:"flex-1 min-w-0"},bn={class:"text-sm font-medium truncate"},kn={class:"flex items-center gap-3 mt-0.5 text-xs text-gray-400"},_n={class:"w-20 h-2 bg-gray-200 dark:bg-gray-700 rounded-full overflow-hidden"},wn={key:4,class:"h-full flex flex-col overflow-hidden"},$n={class:"px-4 py-3 border-b border-gray-200 dark:border-gray-700"},Cn={class:"text-sm font-medium flex items-center gap-2"},In={class:"flex-1 overflow-y-auto"},Sn={class:"flex items-center gap-3"},Mn={class:"flex-1 min-w-0"},Tn={class:"flex items-center gap-2 text-sm"},Vn={class:"font-medium truncate"},Rn={class:"font-medium truncate"},Ln={class:"flex items-center gap-3 mt-1 text-xs text-gray-400"},Dn={class:"w-24 h-2 bg-gray-200 dark:bg-gray-700 rounded-full overflow-hidden"},Nn={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-page-dark/50"},An=B({__name:"ClusterView",props:{sessionId:{},timeFilter:{}},setup(m){Je([Kt,Qe,Yt,Jt,Ze]);const s=m,{t:a}=X(),n=gt(),r=w(()=>n.value==="dark"),l=S(!0),c=S(null),y=S("matrix"),g=S(null),_=S({lookAhead:3,decaySeconds:120,topEdges:150}),f=S(null);let u=null;async function i(){if(s.sessionId){l.value=!0;try{c.value=await Q().getClusterGraph(s.sessionId,s.timeFilter,{lookAhead:_.value.lookAhead,decaySeconds:_.value.decaySeconds,topEdges:_.value.topEdges})}catch(F){console.error("[chart-cluster] 加载小团体关系数据失败:",F),c.value=null}finally{l.value=!1}}}const p=w(()=>{if(!c.value||c.value.nodes.length===0)return null;const{nodes:F,links:U,maxLinkValue:O}=c.value,j=[...F].sort((V,Y)=>Y.messageCount-V.messageCount).slice(0,20).map(V=>V.name),te=new Map;for(const V of U)te.set(`${V.source}-${V.target}`,V.value),te.set(`${V.target}-${V.source}`,V.value);const q=[];for(let V=0;V<j.length;V++)for(let Y=0;Y<j.length;Y++)if(V===Y)q.push([V,Y,-1]);else{const ue=te.get(`${j[V]}-${j[Y]}`)||0;q.push([V,Y,ue])}return{names:j,data:q,maxValue:O}});function I(){if(!p.value)return{graphic:{type:"text",style:{text:a("views.cluster.noData"),fill:"#999"}}};const{names:F,data:U,maxValue:O}=p.value;return{tooltip:{position:"top",formatter:ee=>{const[j,te,q]=ee.data;return q<0?`${F[j]}`:q===0?`${F[j]} ↔ ${F[te]}<br/>暂无关系数据`:`${F[j]} ↔ ${F[te]}<br/>临近度: ${q.toFixed(2)}`}},grid:{left:120,right:40,top:40,bottom:120},xAxis:{type:"category",data:F,splitArea:{show:!0},axisLabel:{rotate:45,fontSize:10,color:r.value?"#ccc":"#333"}},yAxis:{type:"category",data:F,splitArea:{show:!0},axisLabel:{fontSize:10,color:r.value?"#ccc":"#333"}},visualMap:{min:0,max:O||1,calculable:!0,orient:"horizontal",left:"center",bottom:10,inRange:{color:r.value?["#1a1a2e","#16213e","#0f3460","#e94560"]:["#f7f7f7","#fce4ec","#f8bbd9","#ee4567"]},textStyle:{color:r.value?"#ccc":"#333"}},series:[{type:"heatmap",data:U.filter(ee=>ee[2]>=0),label:{show:!1},emphasis:{itemStyle:{shadowBlur:10,shadowColor:"rgba(0, 0, 0, 0.5)"}}}],backgroundColor:"transparent"}}const h=w(()=>c.value?[...c.value.nodes].sort((F,U)=>U.messageCount-F.messageCount):[]),v=w(()=>!c.value||g.value===null?null:c.value.nodes.find(F=>F.id===g.value)||null),b=w(()=>{if(!c.value||!v.value)return[];const F=v.value.name,U=[];for(const O of c.value.links)O.source===F?U.push({otherName:O.target,value:O.value,coOccurrenceCount:O.coOccurrenceCount}):O.target===F&&U.push({otherName:O.source,value:O.value,coOccurrenceCount:O.coOccurrenceCount});return U.sort((O,ee)=>ee.value-O.value),U}),$=w(()=>c.value?c.value.links.slice(0,50):[]);function T(){u&&y.value==="matrix"&&u.setOption(I(),{notMerge:!0})}function z(){f.value&&(u=Xe(f.value,r.value?"dark":void 0),T())}function D(){u?.resize()}return E(y,async(F,U)=>{U==="matrix"&&u&&(u.dispose(),u=null),F==="matrix"&&(await Me(),z())}),E([c,()=>r.value],()=>{y.value==="matrix"&&T()},{deep:!0}),E(l,async(F,U)=>{U&&!F&&y.value==="matrix"&&(u&&(u.dispose(),u=null),await Me(),z())}),E(()=>[s.sessionId,s.timeFilter],()=>i(),{immediate:!0,deep:!0}),ge(()=>{window.addEventListener("resize",D),y.value==="matrix"&&Me(()=>z())}),Le(()=>{window.removeEventListener("resize",D),u?.dispose(),u=null}),(F,U)=>{const O=ce,ee=Ge("UButtonGroup"),j=Oe,te=nt,q=Re;return o(),k("div",Ao,[x(e(et),{class:"flex h-full flex-col"},{default:M(()=>[t("div",zo,[t("div",Uo,[x(ee,{size:"xs"},{default:M(()=>[x(O,{color:y.value==="matrix"?"primary":"neutral",variant:y.value==="matrix"?"solid":"ghost",onClick:U[0]||(U[0]=V=>y.value="matrix")},{default:M(()=>[K(d(e(a)("views.cluster.matrixView")),1)]),_:1},8,["color","variant"]),x(O,{color:y.value==="member"?"primary":"neutral",variant:y.value==="member"?"solid":"ghost",onClick:U[1]||(U[1]=V=>y.value="member")},{default:M(()=>[K(d(e(a)("views.cluster.memberView")),1)]),_:1},8,["color","variant"]),x(O,{color:y.value==="circle"?"primary":"neutral",variant:y.value==="circle"?"solid":"ghost",onClick:U[2]||(U[2]=V=>y.value="circle")},{default:M(()=>[K(d(e(a)("views.cluster.rankingView")),1)]),_:1},8,["color","variant"])]),_:1})]),t("div",Fo,[x(te,null,{content:M(()=>[t("div",Ho,[t("h4",Bo,d(e(a)("views.cluster.modelSettings")),1),t("div",Wo,[t("div",null,[t("label",Oo,d(e(a)("views.cluster.lookAhead")),1),x(j,{modelValue:_.value.lookAhead,"onUpdate:modelValue":U[3]||(U[3]=V=>_.value.lookAhead=V),modelModifiers:{number:!0},type:"number",min:1,max:10,size:"xs",placeholder:"1-10"},null,8,["modelValue"]),t("p",jo,d(e(a)("views.cluster.lookAheadDesc")),1)]),t("div",null,[t("label",Eo,d(e(a)("views.cluster.decaySeconds")),1),x(j,{modelValue:_.value.decaySeconds,"onUpdate:modelValue":U[4]||(U[4]=V=>_.value.decaySeconds=V),modelModifiers:{number:!0},type:"number",min:30,max:3600,size:"xs",placeholder:"30-3600"},null,8,["modelValue"]),t("p",Po,d(e(a)("views.cluster.decaySecondsDesc")),1)]),x(O,{size:"xs",color:"primary",class:"w-full mt-2",onClick:i},{default:M(()=>[K(d(e(a)("views.cluster.applySettings")),1)]),_:1})])])]),default:M(()=>[x(O,{variant:"ghost",size:"xs",icon:"i-heroicons-adjustments-horizontal"})]),_:1}),x(O,{variant:"ghost",size:"xs",icon:"i-heroicons-arrow-path",onClick:i})])]),t("div",qo,[l.value?(o(),k("div",Go,[x(q,{name:"i-heroicons-arrow-path",class:"w-6 h-6 animate-spin text-gray-400"})])):!c.value||c.value.nodes.length===0?(o(),k("div",Ko,[t("div",Yo,[x(q,{name:"i-heroicons-user-group",class:"w-12 h-12 mx-auto mb-2 opacity-50"}),t("p",null,d(e(a)("views.cluster.noData")),1)])])):y.value==="matrix"?(o(),k("div",Jo,[t("div",{ref_key:"chartRef",ref:f,class:"w-full h-full"},null,512)])):y.value==="member"?(o(),k("div",Qo,[t("div",Zo,[t("div",Xo,[t("h3",en,[x(q,{name:"i-heroicons-users",class:"w-4 h-4"}),K(" "+d(e(a)("views.cluster.selectMember")),1)])]),t("div",tn,[(o(!0),k(W,null,Z(h.value,V=>(o(),k("div",{key:V.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":g.value===V.id}]),onClick:Y=>g.value=V.id},[t("div",sn,[t("span",on,d(V.name),1),t("span",nn,d(V.messageCount),1)])],10,an))),128))])]),t("div",ln,[v.value?(o(),k(W,{key:1},[t("div",un,[t("div",dn,d(v.value.name.charAt(0)),1),t("div",null,[t("div",mn,d(v.value.name),1),t("div",vn,d(e(a)("views.cluster.msgCount"))+": "+d(v.value.messageCount)+" | "+d(e(a)("views.cluster.relationCount"))+": "+d(b.value.length),1)])]),t("div",hn,[t("h3",pn,[x(q,{name:"i-heroicons-heart",class:"w-4 h-4 text-pink-500"}),K(" "+d(e(a)("views.cluster.relationsByIntimacy")),1)])]),t("div",gn,[b.value.length===0?(o(),k("div",fn,d(e(a)("views.cluster.noRelations")),1)):L("",!0),(o(!0),k(W,null,Z(b.value,(V,Y)=>(o(),k("div",{key:V.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",yn,[t("span",{class:J(["w-6 h-6 rounded-full flex items-center justify-center text-xs font-bold",Y<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"])},d(Y+1),3),t("div",xn,[t("div",bn,d(V.otherName),1),t("div",kn,[t("span",null,d(e(a)("views.cluster.intimacy"))+": "+d((V.value*100).toFixed(0))+"%",1),t("span",null,d(e(a)("views.cluster.coOccurrence"))+": "+d(V.coOccurrenceCount)+d(e(a)("views.cluster.times")),1)])]),t("div",_n,[t("div",{class:"h-full bg-linear-to-r from-pink-400 to-pink-600",style:pe({width:`${b.value[0]?.value?V.value/b.value[0].value*100:0}%`})},null,4)])])]))),128))])],64)):(o(),k("div",rn,[t("div",cn,[x(q,{name:"i-heroicons-cursor-arrow-rays",class:"w-12 h-12 mx-auto mb-2 opacity-50"}),t("p",null,d(e(a)("views.cluster.selectMemberHint")),1)])]))])])):(o(),k("div",wn,[t("div",$n,[t("h3",Cn,[x(q,{name:"i-heroicons-trophy",class:"w-4 h-4 text-yellow-500"}),K(" "+d(e(a)("views.cluster.interactionRanking")),1)])]),t("div",In,[(o(!0),k(W,null,Z($.value,(V,Y)=>(o(),k("div",{key:Y,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-8 h-8 rounded-full flex items-center justify-center text-sm font-bold",Y<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"])},d(Y+1),3),t("div",Mn,[t("div",Tn,[t("span",Vn,d(V.source),1),U[5]||(U[5]=t("span",{class:"text-gray-400"},"↔",-1)),t("span",Rn,d(V.target),1)]),t("div",Ln,[t("span",null,d(e(a)("views.cluster.score"))+": "+d(V.value.toFixed(2)),1),t("span",null,d(e(a)("views.cluster.coOccurrence"))+": "+d(V.coOccurrenceCount)+d(e(a)("views.cluster.times")),1)])]),t("div",Dn,[t("div",{class:"h-full bg-linear-to-r from-yellow-400 to-orange-500",style:pe({width:`${$.value[0]?.value?V.value/$.value[0].value*100:0}%`})},null,4)])])]))),128))])]))]),c.value?(o(),k("div",Nn,[t("span",null,d(e(a)("views.cluster.totalMembers"))+": "+d(c.value.stats.totalMembers),1),t("span",null,d(e(a)("views.cluster.totalMessages"))+": "+d(c.value.stats.totalMessages.toLocaleString()),1),t("span",null,d(e(a)("views.cluster.involvedMembers"))+": "+d(c.value.stats.involvedMembers),1),t("span",null,d(e(a)("views.cluster.edgeCount"))+": "+d(c.value.stats.edgeCount),1)])):L("",!0)]),_:1})])}}}),zn={class:"flex h-full flex-col"},Un={class:"min-h-0 flex-1 overflow-y-auto"},Fn=B({__name:"GroupRelationships",props:{sessionId:{},timeFilter:{}},setup(m){const{t:s}=X(),a=m,n=S("mention-graph"),r=w(()=>[{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,c)=>(o(),k("div",zn,[x(e(Ke),{modelValue:n.value,"onUpdate:modelValue":c[0]||(c[0]=y=>n.value=y),items:r.value,"persist-key":"groupRelationshipsTab"},null,8,["modelValue","items"]),t("div",Un,[x(De,{name:"fade",mode:"out-in"},{default:M(()=>[n.value==="mention-graph"?(o(),C(Qs,{key:0,"session-id":a.sessionId,"time-filter":a.timeFilter},null,8,["session-id","time-filter"])):n.value==="mention-ranking"?(o(),C(No,{key:1,"session-id":a.sessionId,"time-filter":a.timeFilter},null,8,["session-id","time-filter"])):n.value==="proximity"?(o(),C(An,{key:2,"session-id":a.sessionId,"time-filter":a.timeFilter},null,8,["session-id","time-filter"])):L("",!0)]),_:1})])]))}}),Hn=Ne(Fn,[["__scopeId","data-v-a5aec593"]]),Bn={class:"flex h-full flex-col"},Wn={class:"flex-1 min-h-0 overflow-y-auto"},On=B({__name:"ViewTab",props:{sessionId:{},sessionName:{},timeFilter:{}},setup(m){const{t:s,locale:a}=X(),n=m,r=w(()=>{const g=[{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 ft("groupRanking",a.value)&&g.splice(2,0,{id:"ranking",label:s("analysis.subTabs.view.ranking"),icon:"i-heroicons-trophy"}),g}),l=S("type-analysis"),c=S(null),y=w(()=>({...n.timeFilter,memberId:c.value}));return(g,_)=>(o(),k("div",Bn,[x(e(Ke),{modelValue:l.value,"onUpdate:modelValue":_[1]||(_[1]=f=>l.value=f),items:r.value,"persist-key":"groupViewTab"},{right:M(()=>[l.value!=="topic"?(o(),C(Mt,{key:0,modelValue:c.value,"onUpdate:modelValue":_[0]||(_[0]=f=>c.value=f),"session-id":n.sessionId},null,8,["modelValue","session-id"])):L("",!0)]),_:1},8,["modelValue","items"]),t("div",Wn,[x(De,{name:"fade",mode:"out-in"},{default:M(()=>[l.value==="type-analysis"?(o(),C(Tt,{key:0,"session-id":n.sessionId,"session-name":n.sessionName,"time-filter":y.value},null,8,["session-id","session-name","time-filter"])):l.value==="time-analysis"?(o(),C(Vt,{key:1,"session-id":n.sessionId,"session-name":n.sessionName,"time-filter":y.value},null,8,["session-id","session-name","time-filter"])):l.value==="topic"?(o(),C(e(Rt),{key:2,"session-id":n.sessionId,"time-filter":n.timeFilter},null,8,["session-id","time-filter"])):l.value==="group-relationships"?(o(),C(Hn,{key:3,"session-id":n.sessionId,"time-filter":y.value},null,8,["session-id","time-filter"])):l.value==="ranking"?(o(),C(zs,{key:4,"session-id":n.sessionId,"time-filter":y.value},null,8,["session-id","time-filter"])):l.value==="hot-repeat"?(o(),C(e(Aa),{key:5,"session-id":n.sessionId,"time-filter":n.timeFilter},null,8,["session-id","time-filter"])):l.value==="catchphrase"?(o(),C(e(Sa),{key:6,"session-id":n.sessionId,"time-filter":n.timeFilter},null,8,["session-id","time-filter"])):L("",!0)]),_:1})])]))}}),jn=Ne(On,[["__scopeId","data-v-5787d95d"]]),En={key:0,class:"mb-6"},Pn={class:"flex items-center gap-3"},qn={class:"text-xl font-bold text-gray-900 dark:text-white"},Gn={class:"text-sm text-gray-500 dark:text-gray-400"},Kn={class:"mb-4 flex flex-wrap items-center justify-between gap-3"},Yn={class:"flex items-center gap-2"},Jn={class:"text-xs text-gray-500 dark:text-gray-400"},Qn={key:0,class:"flex h-60 items-center justify-center"},Zn={key:1,class:"flex h-60 flex-col items-center justify-center"},Xn={class:"text-gray-500 dark:text-gray-400"},el={key:2,class:"flex min-h-0 flex-1 flex-col"},tl={class:"w-full"},al={class:"sticky top-0 bg-gray-50 dark:bg-page-dark"},sl={class:"text-left text-xs font-medium uppercase text-gray-500 dark:text-gray-400"},ol={class:"px-4 py-4"},nl={class:"px-4 py-4"},ll={class:"px-4 py-4"},il={class:"w-64 px-4 py-4"},rl={class:"inline-flex items-center gap-1.5"},cl={class:"px-4 py-4 text-right"},ul={class:"divide-y divide-gray-200 dark:divide-gray-700"},dl={class:"px-4 py-4"},ml={class:"px-4 py-4"},vl={class:"flex items-center gap-2"},hl=["src","alt"],pl={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"},gl={class:"text-sm font-medium text-gray-900 dark:text-white"},fl={class:"ml-1 text-sm text-gray-500 dark:text-gray-400"},yl={class:"px-4 py-4"},xl={key:0,class:"text-sm font-medium text-gray-900 dark:text-white"},bl={key:1,class:"text-sm text-gray-400 dark:text-gray-500"},kl={class:"px-4 py-4"},_l={class:"text-sm font-semibold text-gray-900 dark:text-white"},wl={class:"px-4 py-4"},$l={class:"max-w-xs"},Cl={key:0,class:"absolute right-2 top-1/2 -translate-y-1/2"},Il={class:"px-4 py-4 text-right"},Sl={class:"flex justify-end gap-2"},Ml={key:0,class:"flex items-center justify-between border-t border-gray-200 px-6 py-4 dark:border-gray-700"},Tl={class:"text-sm text-gray-500 dark:text-gray-400"},Vl={class:"flex items-center gap-2"},Rl={class:"text-sm font-medium text-gray-600 dark:text-gray-300"},Ll={class:"p-6 text-center"},Dl={class:"mx-auto mb-4 flex h-14 w-14 items-center justify-center rounded-full bg-red-100 dark:bg-red-900/30"},Nl={class:"mb-2 text-lg font-semibold text-gray-900 dark:text-white"},Al={class:"mb-6 text-sm text-gray-500 dark:text-gray-400"},zl={class:"flex justify-center gap-3"},Ul={class:"p-6"},Fl={class:"mb-4 flex items-center gap-3"},Hl={class:"flex h-10 w-10 items-center justify-center rounded-full bg-amber-100 dark:bg-amber-900/30"},Bl={class:"text-lg font-semibold text-gray-900 dark:text-white"},Wl={class:"mb-2 text-sm text-gray-600 dark:text-gray-400"},Ol={class:"mb-6 text-xs text-amber-700 dark:text-amber-300"},jl={class:"flex justify-end gap-2"},Te=20,El=B({__name:"MemberList",props:{sessionId:{},showHeader:{type:Boolean,default:!0}},emits:["data-changed"],setup(m,{emit:s}){const{t:a}=X(),n=be(),r=m,l=s,c=S([]),y=S([]),g=S(!1),_=S(""),f=S(null),u=S(!1),i=S(new Set),p=S(!1),I=S(!1),h=S(1),v=S(0),b=S(0),$=S("desc"),T=S(null);let z=null;function D(R){return R.groupNickname||R.accountName||R.platformId}function F(R){return D(R).slice(0,1)}function U(R){n.openChatRecordDrawer({sessionId:r.sessionId,memberId:R.id,memberName:D(R)})}const O=w(()=>y.value.filter(R=>i.value.has(R.id))),ee=w(()=>O.value.length===2),j=w(()=>{if(O.value.length!==2)return null;const[R,H]=O.value;return H.messageCount>R.messageCount||H.messageCount===R.messageCount&&H.id<R.id?{primary:H,secondary:R}:{primary:R,secondary:H}});function te(){$.value=$.value==="desc"?"asc":"desc",h.value=1,q()}async function q(){if(r.sessionId){g.value=!0;try{const R=await Q().getMembersPaginated(r.sessionId,{page:h.value,pageSize:Te,search:_.value.trim(),sortOrder:$.value});c.value=R.items,v.value=R.total,b.value=R.totalPages}catch(R){console.error("加载成员列表失败:",R)}finally{g.value=!1}}}async function V(){if(r.sessionId)try{y.value=await Q().getMembers(r.sessionId)}catch(R){console.error("加载所有成员失败:",R)}}async function Y(R,H){const A=JSON.parse(JSON.stringify(H)),Ie=JSON.stringify(R.aliases),ie=JSON.stringify(A);if(Ie!==ie){T.value=R.id;try{if(await Q().updateMemberAliases(r.sessionId,R.id,A)){const he=c.value.findIndex(Se=>Se.id===R.id);he!==-1&&(c.value[he]={...c.value[he],aliases:A})}}catch(fe){console.error("保存别名失败:",fe)}finally{T.value=null}}}function ue(R){f.value=R}function _e(){f.value=null}async function we(){if(f.value){u.value=!0;try{await Q().deleteMember(r.sessionId,f.value.id)&&(await q(),await V(),l("data-changed"))}catch(R){console.error("删除成员失败:",R)}finally{u.value=!1,f.value=null}}}function $e(R){const H=new Set(i.value);H.has(R)?H.delete(R):H.add(R),i.value=H}function Ce(){ee.value&&(p.value=!0)}function oe(){i.value=new Set}async function N(){if(j.value){I.value=!0;try{await Q().mergeMembers(r.sessionId,j.value.primary.id,j.value.secondary.id)&&(p.value=!1,oe(),await q(),await V(),l("data-changed"))}catch(R){console.error("合并成员失败:",R)}finally{I.value=!1}}}return E(_,()=>{h.value=1,z&&clearTimeout(z),z=setTimeout(()=>{q()},300)}),E(h,()=>{q()}),E(()=>r.sessionId,()=>{_.value="",h.value=1,oe(),q(),V()},{immediate:!0}),ge(()=>{q(),V()}),(R,H)=>{const A=ce,Ie=Oe,ie=Re,fe=lt,he=it,Se=rt,Ae=xe;return o(),k("div",{class:J(["main-content",r.showHeader?"max-w-5xl p-6":"flex h-full max-w-none flex-col overflow-hidden p-4"])},[r.showHeader?(o(),k("div",En,[t("div",Pn,[t("div",null,[t("h2",qn,d(e(a)("members.list.title")),1),t("p",Gn,d(e(a)("members.list.description",{count:v.value})),1)])])])):L("",!0),x(Lt,{class:"mb-6","session-id":m.sessionId,members:y.value,"chat-type":"group"},null,8,["session-id","members"]),t("div",Kn,[x(Ie,{modelValue:_.value,"onUpdate:modelValue":H[1]||(H[1]=P=>_.value=P),placeholder:e(a)("members.list.searchPlaceholder"),icon:"i-heroicons-magnifying-glass",class:"w-full md:w-100"},qe({_:2},[_.value?{name:"trailing",fn:M(()=>[x(A,{icon:"i-heroicons-x-mark",variant:"link",color:"neutral",size:"xs",onClick:H[0]||(H[0]=P=>_.value="")})]),key:"0"}:void 0]),1032,["modelValue","placeholder"]),t("div",Yn,[t("span",Jn,d(e(a)("members.list.mergeSelectedCount",{count:i.value.size})),1),x(A,{icon:"i-heroicons-link",size:"sm",color:"primary",disabled:!ee.value,onClick:Ce},{default:M(()=>[K(d(e(a)("members.list.mergeSelected")),1)]),_:1},8,["disabled"])])]),x(e(et),{class:J(r.showHeader?"":"flex min-h-0 flex-1 flex-col")},{default:M(()=>[g.value?(o(),k("div",Qn,[x(ie,{name:"i-heroicons-arrow-path",class:"h-8 w-8 animate-spin text-pink-500"})])):c.value.length===0?(o(),k("div",Zn,[x(ie,{name:"i-heroicons-user-group",class:"mb-3 h-12 w-12 text-gray-300 dark:text-gray-600"}),t("p",Xn,d(_.value?e(a)("members.list.noMatch"):e(a)("members.list.empty")),1)])):(o(),k("div",el,[t("div",{class:J(["max-h-[500px] overflow-y-auto",r.showHeader?"":"max-h-none min-h-0 flex-1"])},[t("table",tl,[t("thead",al,[t("tr",sl,[H[7]||(H[7]=t("th",{class:"w-12 px-4 py-4"},null,-1)),t("th",ol,d(e(a)("members.list.table.accountName")),1),t("th",nl,d(e(a)("members.list.table.groupNickname")),1),t("th",ll,[t("button",{class:"flex items-center gap-1.5 hover:text-gray-700 dark:hover:text-gray-200",onClick:te},[K(d(e(a)("members.list.table.messageCount"))+" ",1),x(ie,{name:$.value==="desc"?"i-heroicons-arrow-down":"i-heroicons-arrow-up",class:"h-3.5 w-3.5"},null,8,["name"])])]),t("th",il,[t("div",rl,[t("span",null,d(e(a)("members.list.table.customAlias")),1),x(fe,{text:e(a)("members.list.tip"),popper:{placement:"top"}},{default:M(()=>[x(ie,{name:"i-heroicons-question-mark-circle",class:"h-4 w-4 text-gray-400 dark:text-gray-500"})]),_:1},8,["text"])])]),t("th",cl,d(e(a)("members.list.table.actions")),1)])]),t("tbody",ul,[(o(!0),k(W,null,Z(c.value,P=>(o(),k("tr",{key:P.id,class:"hover:bg-gray-50 dark:hover:bg-gray-800/50"},[t("td",dl,[x(he,{"model-value":i.value.has(P.id),onClick:Pe(ye=>$e(P.id),["stop"])},null,8,["model-value","onClick"])]),t("td",ml,[t("div",vl,[P.avatar?(o(),k("img",{key:0,src:P.avatar,alt:D(P),class:"h-8 w-8 shrink-0 rounded-full object-cover"},null,8,hl)):(o(),k("div",pl,d(F(P)),1)),t("div",null,[t("span",gl,d(P.accountName||"-"),1),t("span",fl,"("+d(P.platformId)+")",1)])])]),t("td",yl,[P.groupNickname?(o(),k("span",xl,d(P.groupNickname),1)):(o(),k("span",bl,"-"))]),t("td",kl,[t("span",_l,d(P.messageCount.toLocaleString()),1)]),t("td",wl,[t("div",$l,[x(Se,{"model-value":P.aliases,placeholder:e(a)("members.list.aliasPlaceholder"),class:"w-80","onUpdate:modelValue":ye=>Y(P,ye)},null,8,["model-value","placeholder","onUpdate:modelValue"]),T.value===P.id?(o(),k("div",Cl,[x(ie,{name:"i-heroicons-arrow-path",class:"h-4 w-4 animate-spin text-pink-500"})])):L("",!0)])]),t("td",Il,[t("div",Sl,[x(A,{icon:"i-heroicons-chat-bubble-left-ellipsis",size:"xs",color:"neutral",variant:"ghost",title:e(a)("common.viewChatRecords"),onClick:ye=>U(P)},null,8,["title","onClick"]),x(A,{label:e(a)("members.list.delete"),size:"xs",onClick:ye=>ue(P)},null,8,["label","onClick"])])])]))),128))])])],2),b.value>1?(o(),k("div",Ml,[t("p",Tl,d(e(a)("members.list.pagination",{start:(h.value-1)*Te+1,end:Math.min(h.value*Te,v.value),total:v.value})),1),t("div",Vl,[x(A,{icon:"i-heroicons-chevron-left",variant:"outline",size:"sm",disabled:h.value===1||g.value,onClick:H[2]||(H[2]=P=>h.value--)},null,8,["disabled"]),t("span",Rl,d(h.value)+" / "+d(b.value),1),x(A,{icon:"i-heroicons-chevron-right",variant:"outline",size:"sm",disabled:h.value>=b.value||g.value,onClick:H[3]||(H[3]=P=>h.value++)},null,8,["disabled"])])])):L("",!0)]))]),_:1},8,["class"]),x(Ae,{open:!!f.value,ui:{content:"max-w-sm"},"onUpdate:open":H[4]||(H[4]=P=>f.value=null)},{content:M(()=>[t("div",Ll,[t("div",Dl,[x(ie,{name:"i-heroicons-exclamation-triangle",class:"h-7 w-7 text-red-500"})]),t("h3",Nl,d(e(a)("members.list.modal.title")),1),t("p",Al,d(e(a)("members.list.modal.content",{name:f.value?D(f.value):"",count:f.value?.messageCount.toLocaleString()})),1),t("div",zl,[x(A,{variant:"outline",onClick:_e},{default:M(()=>[K(d(e(a)("members.list.modal.cancel")),1)]),_:1}),x(A,{color:"error",loading:u.value,onClick:we},{default:M(()=>[K(d(e(a)("members.list.modal.confirm")),1)]),_:1},8,["loading"])])])]),_:1},8,["open"]),x(Ae,{open:p.value,ui:{content:"max-w-md"},"onUpdate:open":H[6]||(H[6]=P=>p.value=P)},{content:M(()=>[t("div",Ul,[t("div",Fl,[t("div",Hl,[x(ie,{name:"i-heroicons-link",class:"h-5 w-5 text-amber-600 dark:text-amber-400"})]),t("h3",Bl,d(e(a)("members.list.mergeModal.title")),1)]),t("p",Wl,d(e(a)("members.list.mergeModal.content",{source:j.value?D(j.value.secondary):"",sourceCount:j.value?j.value.secondary.messageCount.toLocaleString():"0",target:j.value?D(j.value.primary):"",targetCount:j.value?j.value.primary.messageCount.toLocaleString():"0"})),1),t("p",Ol,d(e(a)("members.list.mergeModal.hint")),1),t("div",jl,[x(A,{variant:"outline",disabled:I.value,onClick:H[5]||(H[5]=P=>p.value=!1)},{default:M(()=>[K(d(e(a)("members.list.mergeModal.cancel")),1)]),_:1},8,["disabled"]),x(A,{color:"primary",loading:I.value,onClick:N},{default:M(()=>[K(d(e(a)("members.list.mergeModal.confirm")),1)]),_:1},8,["loading"])])])]),_:1},8,["open"])],2)}}}),Pl={class:"main-content max-w-5xl p-6"},ql={class:"mb-4 text-sm text-gray-500 dark:text-gray-400 no-capture"},Gl={key:0,class:"divide-y divide-gray-100 dark:divide-gray-800"},Kl={class:"w-32 shrink-0 pt-0.5 font-medium text-gray-900 dark:text-white"},Yl={class:"flex flex-1 flex-wrap items-center gap-2"},Jl={class:"flex items-center gap-1.5 rounded-lg bg-gray-50 px-3 py-1.5 dark:bg-gray-800"},Ql={class:"text-xs text-gray-400"},Zl={key:0,class:"text-gray-300 dark:text-gray-600"},Xl=B({__name:"NicknameHistory",props:{sessionId:{}},setup(m){const{t:s}=X(),a=m,n=S([]),r=S([]),l=S(!1);function c(_){return _.groupNickname||_.accountName||_.platformId}async function y(){if(a.sessionId)try{n.value=await Q().getMembers(a.sessionId)}catch(_){console.error("加载成员列表失败:",_)}}async function g(){if(!a.sessionId||n.value.length===0)return;l.value=!0;const _=[];try{const f=n.value.map(i=>Q().getMemberNameHistory(a.sessionId,i.id)),u=await Promise.all(f);n.value.forEach((i,p)=>{const I=u[p];I.length>2&&_.push({memberId:i.id,name:c(i),history:I})}),r.value=_}catch(f){console.error("加载昵称变更记录失败:",f)}finally{l.value=!1}}return E(()=>a.sessionId,async()=>{await y()},{immediate:!0}),E(()=>n.value.length,()=>{n.value.length>0&&g()}),ge(async()=>{n.value.length===0&&await y()}),(_,f)=>{const u=We;return o(),k("div",Pl,[t("p",ql,d(e(s)("members.nicknameHistory.note")),1),x(e(G),{title:e(s)("members.nicknameHistory.title"),description:l.value?e(s)("members.nicknameHistory.loading"):r.value.length>0?e(s)("members.nicknameHistory.hasChanges",{count:r.value.length}):e(s)("members.nicknameHistory.noChanges")},{default:M(()=>[!l.value&&r.value.length>0?(o(),k("div",Gl,[(o(!0),k(W,null,Z(r.value,i=>(o(),k("div",{key:i.memberId,class:"flex items-start gap-3 px-5 py-3"},[t("div",Kl,d(i.name),1),t("div",Yl,[(o(!0),k(W,null,Z(i.history,(p,I)=>(o(),k(W,{key:I},[t("div",Jl,[t("span",{class:J(["text-sm",p.endTs===null?"font-semibold text-pink-600":"text-gray-700 dark:text-gray-300"])},d(p.name),3),p.endTs===null?(o(),C(u,{key:0,color:"primary",variant:"soft",size:"xs"},{default:M(()=>[K(d(e(s)("members.nicknameHistory.current")),1)]),_:1})):L("",!0),t("span",Ql,"("+d(e(Pt)(p.startTs,p.endTs))+")",1)]),I<i.history.length-1?(o(),k("span",Zl,"→")):L("",!0)],64))),128))])]))),128))])):l.value?(o(),C(e(se),{key:2,text:e(s)("members.nicknameHistory.loadingText")},null,8,["text"])):(o(),C(e(ne),{key:1,text:e(s)("members.nicknameHistory.empty")},null,8,["text"]))]),_:1},8,["title","description"])])}}}),ei={class:"flex h-full flex-col overflow-hidden bg-white dark:bg-page-dark"},ti={class:"flex flex-none items-center justify-between border-b border-gray-200 px-5 py-3 dark:border-gray-700"},ai={class:"text-lg font-semibold text-gray-900 dark:text-white"},si={class:"flex-1 overflow-auto"},oi=B({__name:"NicknameHistoryEntry",props:{sessionId:{}},setup(m){const{t:s}=X(),a=m,n=S(!1);return(r,l)=>{const c=ce,y=xe;return o(),k(W,null,[x(c,{variant:"ghost",icon:"i-heroicons-clock",size:"sm",onClick:l[0]||(l[0]=g=>n.value=!0)},{default:M(()=>[K(d(e(s)("analysis.subTabs.member.nicknameHistory")),1)]),_:1}),a.sessionId?(o(),C(y,{key:0,open:n.value,"onUpdate:open":l[2]||(l[2]=g=>n.value=g),ui:{content:"max-w-6xl h-[85vh]"}},{content:M(()=>[t("div",ei,[t("div",ti,[t("h2",ai,d(e(s)("analysis.subTabs.member.nicknameHistory")),1),x(c,{variant:"ghost",icon:"i-heroicons-x-mark",size:"sm",onClick:l[1]||(l[1]=g=>n.value=!1)})]),t("div",si,[x(Xl,{"session-id":a.sessionId},null,8,["session-id"])])])]),_:1},8,["open"])):L("",!0)],64)}}}),ni={class:"flex h-full flex-col dark:bg-page-dark",style:{"padding-top":"var(--titlebar-area-height)"}},li={class:"relative flex-1 overflow-y-auto"},ii={class:"h-full"},ri={key:2,class:"flex h-full items-center justify-center"},ci={class:"text-gray-500"},ui={class:"flex h-full flex-col overflow-hidden bg-white dark:bg-page-dark"},di={class:"flex flex-none items-center justify-between border-b border-gray-200 px-5 py-3 dark:border-gray-700"},mi={class:"text-lg font-semibold text-gray-900 dark:text-white"},vi={class:"text-sm text-gray-500 dark:text-gray-400"},hi={class:"flex items-center gap-2"},pi={class:"flex-1 overflow-hidden"},gi=B({__name:"index",setup(m){const s=Ee(()=>Be(()=>import("./MessageExportModal-CqP-w7HP.js"),__vite__mapDeps([5,6,4,7,8,9]))),{t:a}=X(),n=ct(),r=ut(),l=yt(),c=be(),y=xt(),{currentSessionId:g}=bt(l),_=S(!1),f=S(!1),u=S(!1),i=S(!1),p=S(!1);function I(){c.openChatRecordDrawer({})}const h=[{id:"overview",labelKey:"analysis.tabs.overview",icon:"i-heroicons-chart-pie"},{id:"view",labelKey:"analysis.tabs.view",icon:"i-heroicons-presentation-chart-bar"},{id:"ai-chat",labelKey:"analysis.tabs.aiChat",icon:"i-heroicons-chat-bubble-left-ellipsis"},{id:"lab",labelKey:"analysis.tabs.lab",icon:"i-heroicons-beaker"}],v=w(()=>y.debugMode?[...h,{id:"debug",labelKey:"analysis.tabs.debug",icon:"i-heroicons-bug-ant"}]:h),b=w(()=>v.value.map(oe=>oe.id)),{activeTab:$,isLoading:T,isInitialLoad:z,session:D,memberActivity:F,hourlyActivity:U,dailyActivity:O,messageTypes:ee,timeRangeValue:j,fullTimeRange:te,availableYears:q,timeFilter:V,initialTimeState:Y,loadData:ue}=Dt({route:n,router:r,currentSessionId:g,selectSession:l.selectSession,defaultTab:y.defaultSessionTab,validTabIds:b.value}),_e=w(()=>F.value.slice(0,3)),we=w(()=>F.value.length<=1?[]:[...F.value].sort((oe,N)=>oe.messageCount-N.messageCount).slice(0,1)),$e=w(()=>F.value.reduce((oe,N)=>oe+N.messageCount,0)),Ce=w(()=>F.value.filter(oe=>oe.messageCount>0).length);return(oe,N)=>{const R=ce,H=xe;return o(),k("div",ni,[e(z)?(o(),C(se,{key:0,variant:"page",text:e(a)("analysis.groupChat.loading")},null,8,["text"])):e(D)?(o(),k(W,{key:1},[x(Nt,{"active-tab":e($),"onUpdate:activeTab":N[0]||(N[0]=A=>ze($)?$.value=A:null),"time-range-value":e(j),"onUpdate:timeRangeValue":N[1]||(N[1]=A=>ze(j)?j.value=A:null),title:e(D).name,avatar:e(D).groupAvatar,icon:"i-heroicons-chat-bubble-left-right","icon-class":"bg-primary-600 text-white dark:bg-primary-500 dark:text-white",tabs:v.value,"current-session-id":e(g),"initial-time-state":e(Y),onOpenIncrementalImport:N[2]||(N[2]=A=>u.value=!0),onOpenMemberManagement:N[3]||(N[3]=A=>p.value=!0),onOpenChatRecord:I,"onUpdate:fullRange":N[4]||(N[4]=A=>te.value=A),"onUpdate:availableYears":N[5]||(N[5]=A=>q.value=A)},null,8,["active-tab","time-range-value","title","avatar","tabs","current-session-id","initial-time-state"]),t("div",li,[e(T)?(o(),C(se,{key:0,variant:"overlay"})):L("",!0),t("div",ii,[x(De,{name:"tab-slide",mode:"out-in"},{default:M(()=>[e($)==="overview"?(o(),C(Ba,{key:"overview-"+e(g),session:e(D),"member-activity":e(F),"top-members":_e.value,"bottom-members":we.value,"message-types":e(ee),"hourly-activity":e(U),"daily-activity":e(O),"time-range":e(te),"filtered-message-count":$e.value,"filtered-member-count":Ce.value,"time-filter":e(V)},null,8,["session","member-activity","top-members","bottom-members","message-types","hourly-activity","daily-activity","time-range","filtered-message-count","filtered-member-count","time-filter"])):e($)==="view"?(o(),C(jn,{key:"view-"+e(g),"session-id":e(g),"session-name":e(D).name,"time-filter":e(V)},null,8,["session-id","session-name","time-filter"])):e($)==="ai-chat"?(o(),C(e(Ft),{key:"ai-chat-"+e(g),"session-id":e(g),"session-name":e(D).name,"chat-type":"group"},null,8,["session-id","session-name"])):e($)==="memory"?(o(),C(Ht,{key:"memory-"+e(g),"session-id":e(g),"session-name":e(D).name},null,8,["session-id","session-name"])):e($)==="lab"?(o(),C(Bt,{key:"lab-"+e(g),"session-id":e(g),"session-name":e(D).name,"time-filter":e(V),"chat-type":"group",mode:"sql-only"},null,8,["session-id","session-name","time-filter"])):e($)==="debug"?(o(),C(e(Wt),{key:"debug-"+e(g),"session-id":e(g)},null,8,["session-id"])):L("",!0)]),_:1})])]),x(At,{onOpenIncrementalImport:N[6]||(N[6]=A=>u.value=!0),onOpenSemanticIndex:N[7]||(N[7]=A=>_.value=!0),onOpenMemberManagement:N[8]||(N[8]=A=>p.value=!0),onOpenChatRecord:I,onOpenMessageExport:N[9]||(N[9]=A=>i.value=!0)})],64)):(o(),k("div",ri,[t("p",ci,d(e(a)("analysis.groupChat.loadError")),1)])),e(g)&&e(D)?(o(),C(zt,{key:3,modelValue:_.value,"onUpdate:modelValue":N[10]||(N[10]=A=>_.value=A),"session-id":e(g),"message-count":e(D).messageCount},null,8,["modelValue","session-id","message-count"])):L("",!0),e(g)&&e(D)?(o(),C(kt,{key:4,modelValue:f.value,"onUpdate:modelValue":N[11]||(N[11]=A=>f.value=A),"session-id":e(g),"chat-type":"group","auto-check":""},null,8,["modelValue","session-id"])):L("",!0),e(g)&&e(D)?(o(),C(Ut,{key:5,modelValue:u.value,"onUpdate:modelValue":N[12]||(N[12]=A=>u.value=A),"session-id":e(g),"session-name":e(D).name,onImported:N[13]||(N[13]=()=>{e(ue)(),e(l).loadSessions()})},null,8,["modelValue","session-id","session-name"])):L("",!0),e(g)?(o(),C(e(s),{key:6,modelValue:i.value,"onUpdate:modelValue":N[14]||(N[14]=A=>i.value=A)},null,8,["modelValue"])):L("",!0),e(g)?(o(),C(H,{key:7,open:p.value,"onUpdate:open":N[16]||(N[16]=A=>p.value=A),ui:{content:"max-w-6xl h-[85vh]"}},{content:M(()=>[t("div",ui,[t("div",di,[t("div",null,[t("h2",mi,d(e(a)("analysis.tooltip.memberManagement")),1),t("p",vi,d(e(a)("members.list.description",{count:e(D)?.memberCount??0})),1)]),t("div",hi,[x(oi,{"session-id":e(g)},null,8,["session-id"]),x(R,{variant:"ghost",icon:"i-heroicons-x-mark",size:"sm",onClick:N[15]||(N[15]=A=>p.value=!1)})])]),t("div",pi,[x(El,{"session-id":e(g),"show-header":!1,onDataChanged:e(ue)},null,8,["session-id","onDataChanged"])])])]),_:1},8,["open"])):L("",!0)])}}}),Li=Ne(gi,[["__scopeId","data-v-df05ebc3"]]);export{Li as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{m as l,h as n,s as u,E as d}from"./vendor-reka-ui-Cta6JPvN.js";const o=Symbol("PeoplePageHeader");function P(e){const a=u(null),r=n(()=>a.value?.value??e.value);function s(t){a.value=t}return d(o,{setHeader:s}),{header:r}}function c(e){l(o)?.setHeader(e)}export{P as p,c as u};
|