chatlab-cli 0.27.1 → 0.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/{chat-command-B7POB3C3.mjs → chat-command-7WL5NMZ6.mjs} +5 -5
- package/dist/{chunk-I7BHOZPX.mjs → chunk-55WR6WKW.mjs} +84 -19
- package/dist/{chunk-I7BHOZPX.mjs.map → chunk-55WR6WKW.mjs.map} +1 -1
- package/dist/{chunk-3FUF3PEY.mjs → chunk-GFRG7TZQ.mjs} +27 -12
- package/dist/chunk-GFRG7TZQ.mjs.map +1 -0
- package/dist/{chunk-N3G43SCQ.mjs → chunk-GPF34WXV.mjs} +2560 -324
- package/dist/chunk-GPF34WXV.mjs.map +1 -0
- package/dist/{chunk-WQMKKUSD.mjs → chunk-VASK54KT.mjs} +2 -2
- package/dist/{chunk-3JNVGW62.mjs → chunk-WGS33EWH.mjs} +2 -2
- package/dist/{chunk-RJ4D4QWK.mjs → chunk-XNU5X7EV.mjs} +3 -3
- package/dist/{chunk-SIVERPF5.mjs → chunk-YQ2FJGBT.mjs} +172 -18
- package/dist/chunk-YQ2FJGBT.mjs.map +1 -0
- package/dist/{chunk-YUFYTDRH.mjs → chunk-YZDEZ6UI.mjs} +3 -3
- package/dist/{chunk-SAE2H2LN.mjs → chunk-ZSFVX6FM.mjs} +3 -3
- package/dist/cli.mjs +4 -4
- package/dist/{http-A54ZBBAY.mjs → http-C2FBHNZG.mjs} +9 -9
- package/dist/{import-EA3TB3S2.mjs → import-ED6JCPSJ.mjs} +5 -5
- package/dist/index.mjs +9 -9
- package/dist/{mcp-DJDOWHH3.mjs → mcp-5JIBER4M.mjs} +5 -5
- package/dist/semantic-index-worker.mjs +1 -1
- package/dist/{src-EKPMJRG6.mjs → src-WBNM42SL.mjs} +21 -3
- package/dist/{stream-import-FQFNRQ2B.mjs → stream-import-37U3SROO.mjs} +4 -4
- package/dist/{worker-runtime-UH2OBO3T.mjs → worker-runtime-6DGYL4TF.mjs} +2 -2
- package/dist-web/assets/{DebugToolsPanel.vue_vue_type_script_setup_true_lang-NL1sTF6i.js → DebugToolsPanel.vue_vue_type_script_setup_true_lang-CCz0Syxo.js} +5 -5
- package/dist-web/assets/{MessageExportModal-B60rvfCh.js → MessageExportModal-Dd6R-cX_.js} +1 -1
- package/dist-web/assets/electron-D9vE5t3H.js +1 -0
- package/dist-web/assets/electron-DGxVMsvC.js +1 -0
- package/dist-web/assets/{electron-BRUg9LnY.js → electron-DjminAKK.js} +1 -1
- package/dist-web/assets/{fetch-DSN-QYZE.js → fetch-B_kLRm6-.js} +1 -1
- package/dist-web/assets/{fetch-DLAp7h55.js → fetch-CURbMNJV.js} +1 -1
- package/dist-web/assets/fetch-Cle6QKmL.js +3 -0
- package/dist-web/assets/{fetch-BIpjJHxj.js → fetch-DFCYOQe5.js} +1 -1
- package/dist-web/assets/{fetch-DNSaxRnL.js → fetch-DOhCQ5J8.js} +1 -1
- package/dist-web/assets/{fetch-DE8gj5Ke.js → fetch-DV8A1dGB.js} +1 -1
- package/dist-web/assets/{fetch-C-m3IysH.js → fetch-Wad5mWVH.js} +1 -1
- package/dist-web/assets/{fetch-BRsMdFcn.js → fetch-r83wdzHy.js} +1 -1
- package/dist-web/assets/{fetch-Cma-mZjd.js → fetch-srCJzcWc.js} +1 -1
- package/dist-web/assets/{fetch-woAa3H2L.js → fetch-uM3erGZm.js} +1 -1
- package/dist-web/assets/index-7E5GSvR2.css +1 -0
- package/dist-web/assets/index-BCRHSc1k.js +173 -0
- package/dist-web/assets/{index-r_zHR2t9.js → index-BIvLzdwg.js} +1 -1
- package/dist-web/assets/{index-o6veAyTB.js → index-BpszRZ8V.js} +3 -3
- package/dist-web/assets/index-D5UgZUpS.js +12 -0
- package/dist-web/assets/{index-iwqJDVMJ.js → index-hOsKRsp6.js} +2 -2
- package/dist-web/assets/{index-B9I-Y3fR.js → index-tkbEq8av.js} +1 -1
- package/dist-web/assets/web-D27K6zSX.js +1 -0
- package/dist-web/index.html +2 -2
- package/package.json +1 -1
- package/dist/chunk-3FUF3PEY.mjs.map +0 -1
- package/dist/chunk-N3G43SCQ.mjs.map +0 -1
- package/dist/chunk-SIVERPF5.mjs.map +0 -1
- package/dist-web/assets/electron-2m4Vdk2z.js +0 -1
- package/dist-web/assets/electron-CRSL7qPM.js +0 -1
- package/dist-web/assets/fetch-DOEbyLSD.js +0 -3
- package/dist-web/assets/index-B3mDjury.js +0 -11
- package/dist-web/assets/index-GAU7LI1r.js +0 -173
- package/dist-web/assets/index-YmzTgkb2.css +0 -1
- package/dist-web/assets/web-C2UtGskd.js +0 -1
- /package/dist/{chat-command-B7POB3C3.mjs.map → chat-command-7WL5NMZ6.mjs.map} +0 -0
- /package/dist/{chunk-WQMKKUSD.mjs.map → chunk-VASK54KT.mjs.map} +0 -0
- /package/dist/{chunk-3JNVGW62.mjs.map → chunk-WGS33EWH.mjs.map} +0 -0
- /package/dist/{chunk-RJ4D4QWK.mjs.map → chunk-XNU5X7EV.mjs.map} +0 -0
- /package/dist/{chunk-YUFYTDRH.mjs.map → chunk-YZDEZ6UI.mjs.map} +0 -0
- /package/dist/{chunk-SAE2H2LN.mjs.map → chunk-ZSFVX6FM.mjs.map} +0 -0
- /package/dist/{http-A54ZBBAY.mjs.map → http-C2FBHNZG.mjs.map} +0 -0
- /package/dist/{import-EA3TB3S2.mjs.map → import-ED6JCPSJ.mjs.map} +0 -0
- /package/dist/{mcp-DJDOWHH3.mjs.map → mcp-5JIBER4M.mjs.map} +0 -0
- /package/dist/{src-EKPMJRG6.mjs.map → src-WBNM42SL.mjs.map} +0 -0
- /package/dist/{stream-import-FQFNRQ2B.mjs.map → stream-import-37U3SROO.mjs.map} +0 -0
- /package/dist/{worker-runtime-UH2OBO3T.mjs.map → worker-runtime-6DGYL4TF.mjs.map} +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/MessageExportModal-
|
|
2
|
-
import{_ as Ae}from"./vendor-snapdom-XnBoh1gd.js";import{a as te,k as je,b as $e,n as Re,D as Ve,g as Ce,u as Le,d as De}from"./vendor-nuxt-ui-Zy8txNdC.js";import{p as Y,w as Z,d as oe,F as ge,G as i,H as D,u as t,K as E,P as u,a5 as e,T as s,Z as K,a3 as G,Q as B,U as M,L as y,a0 as ae,h as T,b as O,_ as ze,O as Oe,bD as Se,R as ye,a9 as Be,i as ke,bI as Ne}from"./vendor-reka-ui-mMvma1EP.js";import{u as X,p as pe,T as Ue,k as Pe,j as le,r as Fe,_ as Ie,e as Ee,b as We,s as Ke}from"./index-B3mDjury.js";import{G as ie,c as me,d as Me,h as He,a as _e,i as we,j as Ge,u as Je,k as Ye,_ as Qe,n as Ze,o as Xe,p as et,q as tt,r as st,t as at,v as nt,w as it,x as lt,y as ot,z as rt,A as ct,C as dt,B as ut,D as mt,E as gt,F as pt}from"./DebugToolsPanel.vue_vue_type_script_setup_true_lang-NL1sTF6i.js";import"./vendor-echarts-wordcloud-B1kQMklB.js";import{u as xe,s as xt,j as ve,m as fe,n as ne,t as Te,p as qe,k as vt,v as ft}from"./vendor-echarts-CITQeskI.js";import"./index-B9I-Y3fR.js";import"./vendor-zrender-DFl4U2Oe.js";const bt={key:0,class:"relative z-10 flex flex-col h-full"},ht={class:"flex flex-col sm:flex-row items-center sm:items-start gap-6 px-6 pt-8 pb-4 sm:px-8"},yt={class:"w-full flex-1 min-w-0"},_t={class:"flex items-center gap-x-2 sm:gap-x-3 mb-6 sm:mb-8"},kt={class:"text-2xl sm:text-4xl font-black tracking-tight text-blue-600 dark:text-blue-400 truncate"},wt={class:"text-2xl sm:text-4xl font-black tracking-tight text-pink-600 dark:text-pink-400 truncate"},$t={class:"grid grid-cols-2 gap-4 sm:gap-10"},Ct={class:"text-[10px] font-bold uppercase tracking-widest text-gray-400 dark:text-gray-500"},St={class:"flex flex-col gap-2.5"},Pt=["title","onClick"],It={class:"shrink-0 text-[10px] sm:text-xs font-semibold tabular-nums text-gray-400/80"},Mt={key:0,class:"text-xs sm:text-sm font-medium text-gray-400"},Tt={class:"hidden shrink-0 sm:block"},qt={class:"px-6 pb-6 pt-2 sm:px-8 mt-auto"},At={class:"mb-3 flex items-center justify-between"},jt={class:"text-[10px] font-bold uppercase tracking-widest text-gray-400 dark:text-gray-500"},Rt={class:"grid grid-cols-1 sm:grid-cols-3 gap-4"},Vt={class:"mb-4 flex items-center gap-2.5"},Lt={class:"text-sm font-bold tracking-wide text-gray-900 dark:text-white"},Dt={class:"flex items-center justify-between mb-4 w-full"},zt={class:"flex flex-col flex-1 min-w-0"},Ot={class:"truncate text-[10px] font-bold uppercase tracking-wider text-gray-400 mb-1"},Bt={class:"flex flex-col flex-1 min-w-0 items-end text-right"},Nt={class:"truncate text-[10px] font-bold uppercase tracking-wider text-gray-400 mb-1"},Ut={class:"mt-auto pt-3 border-t border-gray-100 dark:border-white/5 flex flex-col"},Ft={key:0,class:"flex items-start justify-between gap-2 mb-2 min-h-[24px]"},Et={class:"flex flex-1 flex-nowrap overflow-hidden gap-1"},Wt={key:0,class:"text-[11px] text-gray-400"},Kt={class:"flex flex-1 flex-nowrap overflow-hidden gap-1 justify-end"},Ht={key:0,class:"text-[11px] text-gray-400"},Gt={key:1,class:"flex flex-nowrap overflow-hidden items-center gap-x-1.5 mb-2 min-h-[24px]"},Jt=["onClick"],Yt={key:0,class:"shrink-0 text-gray-300 dark:text-gray-600 font-normal"},Qt={key:0,class:"text-[11px] text-gray-400"},Zt={class:"text-[10px] leading-relaxed text-gray-500 dark:text-gray-400"},Xt={class:"flex items-center justify-between px-6 pb-4 opacity-40 mix-blend-luminosity dark:opacity-30 sm:px-8 sm:pb-5"},es={class:"flex items-center gap-1.5"},ts={class:"text-[9px] font-medium uppercase tracking-widest"},ss=Y({__name:"LanguagePreferenceCard",props:{data:{}},emits:["wordClick"],setup(C,{emit:a}){xe([xt,ve,fe]);const{t:r}=X(),_=pe(),o=C,p=a,S=T(()=>o.data.members[0]),w=T(()=>o.data.members[1]);function c(m,g){return m.length<=g?m:m.slice(0,g)+"…"}function P(m){const g=m.posDistribution,v=g.noun+g.verb+g.adjective+g.adverb+g.modalParticle+g.interjection+g.other;return v===0?r("quotes.languagePreference.pos.styleBalanced"):g.noun/v>.5?r("quotes.languagePreference.pos.styleEncyclopedia"):g.verb/v>.45?r("quotes.languagePreference.pos.styleAction"):g.adjective/v>.3?r("quotes.languagePreference.pos.styleExpressive"):r("quotes.languagePreference.pos.styleBalanced")}function z(m){const v=[["ellipsis",m.ellipsis],["exclamation",m.exclamation],["question",m.question],["tilde",m.tilde],["noPunct",m.noPunct],["period",m.period]].reduce((h,L)=>h[1]>=L[1]?h:L);return{ellipsis:r("quotes.languagePreference.punctuation.personalityDeep"),exclamation:r("quotes.languagePreference.punctuation.personalityPassionate"),question:r("quotes.languagePreference.punctuation.personalityCurious"),tilde:r("quotes.languagePreference.punctuation.personalityCheerful"),noPunct:r("quotes.languagePreference.punctuation.personalityFreeflow"),period:r("quotes.languagePreference.punctuation.personalityPrecise")}[v[0]]||"-"}function q(m,g=5){return[["...",m.ellipsis],["!",m.exclamation],["?",m.question],["~",m.tilde],["。",m.period]].filter(([,l])=>l>0).sort((l,h)=>h[1]-l[1]).slice(0,g).map(([l])=>l)}const A=["#6366f1","#ec4899","#f97316","#22c55e","#3b82f6","#8b5cf6","#14b8a6","#f43f5e","#eab308","#06b6d4"],f=T(()=>{const m=S.value,g=w.value;if(!m||!g)return[];const v=o.data.sharedWords.slice(0,6).map((l,h)=>({word:l.word,color:A[h%A.length]}));return[{icon:"i-heroicons-book-open",iconBgClass:"bg-blue-100 dark:bg-blue-500/20",iconColorClass:"text-blue-600 dark:text-blue-400",title:r("quotes.languagePreference.card.diversityTitle"),leftName:m.name,leftValue:`${m.lexicalDiversity}%`,rightName:g.name,rightValue:`${g.lexicalDiversity}%`,valueClass:"text-lg text-blue-600 dark:text-blue-400",detail:{kind:"tags-single",tags:v},desc:r("quotes.languagePreference.card.diversityDesc")},{icon:"i-heroicons-sparkles",iconBgClass:"bg-violet-100 dark:bg-violet-500/20",iconColorClass:"text-violet-600 dark:text-violet-400",title:r("quotes.languagePreference.card.styleTitle"),leftName:m.name,leftValue:P(m),rightName:g.name,rightValue:P(g),valueClass:"text-xs text-violet-600 dark:text-violet-400",detail:{kind:"tags-vs",leftTags:m.modalParticles.slice(0,4).map(l=>l.word),rightTags:g.modalParticles.slice(0,4).map(l=>l.word)},desc:r("quotes.languagePreference.card.styleDesc")},{icon:"i-heroicons-finger-print",iconBgClass:"bg-orange-100 dark:bg-orange-500/20",iconColorClass:"text-orange-600 dark:text-orange-400",title:r("quotes.languagePreference.card.punctTitle"),leftName:m.name,leftValue:z(m.punctuation),rightName:g.name,rightValue:z(g.punctuation),valueClass:"text-xs text-orange-600 dark:text-orange-400",detail:{kind:"tags-vs",leftTags:q(m.punctuation,4),rightTags:q(g.punctuation,4)},desc:r("quotes.languagePreference.card.punctDesc")}]}),I=O(null);let d=null;function x(){I.value&&(d=ne(I.value,void 0,{renderer:"canvas"}),V())}function V(){if(!d||!S.value||!w.value)return;const m=S.value.posDistribution,g=w.value.posDistribution,v=[{name:r("quotes.languagePreference.card.radarFactual"),max:0},{name:r("quotes.languagePreference.card.radarActive"),max:0},{name:r("quotes.languagePreference.card.radarDescriptive"),max:0},{name:r("quotes.languagePreference.card.radarAffable"),max:0},{name:r("quotes.languagePreference.card.radarIntense"),max:0}],l=[m.noun,m.verb,m.adjective,m.modalParticle+m.interjection,m.adverb],h=[g.noun,g.verb,g.adjective,g.modalParticle+g.interjection,g.adverb];for(let U=0;U<v.length;U++)v[U].max=Math.max(l[U],h[U],1)*1.3;const L=_.value?"#9ca3af":"#6b7280";d.setOption({backgroundColor:"transparent",tooltip:{trigger:"item"},legend:{bottom:0,itemWidth:10,itemHeight:10,textStyle:{fontSize:10,color:L},data:[S.value.name,w.value.name]},radar:{indicator:v,radius:"60%",center:["50%","50%"],splitArea:{areaStyle:{color:_.value?["rgba(255,255,255,0.02)","rgba(255,255,255,0.04)"]:["rgba(0,0,0,0.01)","rgba(0,0,0,0.03)"]}},axisName:{color:L,fontSize:10},splitLine:{lineStyle:{color:_.value?"rgba(255,255,255,0.08)":"rgba(0,0,0,0.06)"}},axisLine:{lineStyle:{color:_.value?"rgba(255,255,255,0.1)":"rgba(0,0,0,0.08)"}}},series:[{type:"radar",data:[{value:l,name:S.value.name,lineStyle:{color:"#3b82f6",width:2},areaStyle:{color:"rgba(59,130,246,0.15)"},itemStyle:{color:"#3b82f6"},symbol:"circle",symbolSize:4},{value:h,name:w.value.name,lineStyle:{color:"#ec4899",width:2},areaStyle:{color:"rgba(236,72,153,0.15)"},itemStyle:{color:"#ec4899"},symbol:"circle",symbolSize:4}]}]},{notMerge:!0})}function $(){d?.resize()}return Z(()=>o.data,()=>V(),{deep:!0}),Z(_,()=>{d?.dispose(),x()}),oe(()=>{x(),window.addEventListener("resize",$)}),ge(()=>{window.removeEventListener("resize",$),d?.dispose()}),(m,g)=>{const v=te;return i(),D(t(ie),{variant:"elevated",decorative:"",class:"flex flex-col"},{default:E(()=>[S.value&&w.value?(i(),u("div",bt,[e("div",ht,[e("div",yt,[e("div",_t,[e("span",kt,s(S.value.name),1),g[0]||(g[0]=e("span",{class:"text-sm sm:text-lg font-black text-gray-300 dark:text-gray-600 italic px-1 sm:px-2 shrink-0"}," VS ",-1)),e("span",wt,s(w.value.name),1)]),e("div",$t,[(i(!0),u(K,null,G([S.value,w.value],(l,h)=>(i(),u("div",{key:l.memberId,class:"flex flex-col gap-3"},[e("div",Ct,s(t(r)("quotes.languagePreference.card.topCatchphrases")),1),e("div",St,[(i(!0),u(K,null,G(l.catchphrases.slice(0,3),(L,U)=>(i(),u("div",{key:U,class:"flex items-center gap-2 group"},[e("span",{class:B(["text-xs sm:text-sm font-black font-mono opacity-40 transition-opacity group-hover:opacity-100",h===0?"text-blue-600 dark:text-blue-400":"text-pink-600 dark:text-pink-400"])}," #"+s(U+1),3),e("span",{class:"truncate text-sm sm:text-base font-bold text-gray-700 dark:text-gray-200 cursor-pointer hover:opacity-70 transition-opacity",title:L.content,onClick:F=>p("wordClick",L.content)}," 「"+s(c(L.content,12))+"」 ",9,Pt),e("span",It," ×"+s(L.count),1)]))),128)),l.catchphrases.length===0?(i(),u("div",Mt,"-")):M("",!0)])]))),128))])]),e("div",Tt,[e("div",{ref_key:"radarRef",ref:I,style:{width:"250px",height:"230px"},class:"-mt-4 sm:-mr-4"},null,512)])]),e("div",qt,[e("div",At,[e("span",jt,s(t(r)("quotes.languagePreference.card.languageProfiles")),1)]),e("div",Rt,[(i(!0),u(K,null,G(f.value,l=>(i(),u("div",{key:l.title,class:"flex flex-col rounded-xl bg-white/60 p-4 ring-1 ring-gray-900/5 backdrop-blur-sm dark:bg-white/5 dark:ring-white/10"},[e("div",Vt,[e("div",{class:B(["flex h-8 w-8 shrink-0 items-center justify-center rounded-lg",l.iconBgClass])},[y(v,{name:l.icon,class:B(["h-4 w-4",l.iconColorClass])},null,8,["name","class"])],2),e("span",Lt,s(l.title),1)]),e("div",Dt,[e("div",zt,[e("span",Ot,s(l.leftName),1),e("span",{class:B(["truncate text-xl font-black font-mono leading-none",l.valueClass])},s(l.leftValue),3)]),g[1]||(g[1]=e("div",{class:"px-2 shrink-0"},[e("span",{class:"text-[10px] font-black text-gray-300 dark:text-gray-600 italic"},"VS")],-1)),e("div",Bt,[e("span",Nt,s(l.rightName),1),e("span",{class:B(["truncate text-xl font-black font-mono leading-none",l.valueClass])},s(l.rightValue),3)])]),e("div",Ut,[l.detail.kind==="tags-vs"?(i(),u("div",Ft,[e("div",Et,[(i(!0),u(K,null,G(l.detail.leftTags,h=>(i(),u("span",{key:h,class:"shrink-0 px-1.5 py-0.5 rounded-md text-[10px] font-semibold font-mono bg-blue-50 text-blue-600 dark:bg-blue-500/10 dark:text-blue-400"},s(h),1))),128)),l.detail.leftTags.length===0?(i(),u("span",Wt,"-")):M("",!0)]),e("div",Kt,[(i(!0),u(K,null,G(l.detail.rightTags,h=>(i(),u("span",{key:h,class:"shrink-0 px-1.5 py-0.5 rounded-md text-[10px] font-semibold font-mono bg-pink-50 text-pink-600 dark:bg-pink-500/10 dark:text-pink-400"},s(h),1))),128)),l.detail.rightTags.length===0?(i(),u("span",Ht,"-")):M("",!0)])])):l.detail.kind==="tags-single"?(i(),u("div",Gt,[(i(!0),u(K,null,G(l.detail.tags.slice(0,6),(h,L)=>(i(),u(K,{key:h.word},[e("span",{class:"shrink-0 cursor-pointer text-[11px] font-bold transition-opacity hover:opacity-80",style:ae({color:h.color}),onClick:U=>p("wordClick",h.word)},s(h.word),13,Jt),L<l.detail.tags.slice(0,6).length-1?(i(),u("span",Yt," · ")):M("",!0)],64))),128)),l.detail.tags.length===0?(i(),u("span",Qt,"-")):M("",!0)])):M("",!0),e("p",Zt,s(l.desc),1)])]))),128))])]),e("div",Xt,[e("div",es,[y(v,{name:"i-heroicons-chat-bubble-left-right-solid",class:"h-3.5 w-3.5"}),g[2]||(g[2]=e("span",{class:"text-[10px] font-bold uppercase tracking-wider"},"ChatLab",-1))]),e("span",ts,s(t(r)("quotes.languagePreference.card.watermark")),1)])])):M("",!0)]),_:1})}}}),as={class:"px-5 py-4 sm:px-6"},ns={class:"mb-4 flex items-center justify-between"},is={class:"flex items-center gap-2"},ls={class:"text-[15px] font-black tracking-tight text-gray-900 dark:text-white"},os={key:0,class:"rounded-full bg-pink-100 px-2 py-0.5 text-[10px] font-bold text-pink-600 dark:bg-pink-900/30 dark:text-pink-400"},rs={key:0,class:"grid grid-cols-2 gap-6"},cs={class:"mb-3 text-center"},ds={class:"text-sm font-semibold text-blue-600 dark:text-blue-400"},us={class:"flex flex-wrap gap-2"},ms=["title","onClick"],gs={class:"text-[10px] font-semibold opacity-60"},ps={class:"mb-3 text-center"},xs={class:"text-sm font-semibold text-pink-600 dark:text-pink-400"},vs={class:"flex flex-wrap gap-2"},fs=["title","onClick"],bs={class:"text-[10px] font-semibold opacity-60"},hs={class:"mt-4 text-center text-xs text-gray-500 dark:text-gray-400"},ys=Y({__name:"CatchphrasePKSection",props:{members:{}},emits:["wordClick"],setup(C,{emit:a}){const{t:r}=X(),_=C,o=a,p=O(20),S=[{label:"10",value:10},{label:"20",value:20},{label:"30",value:30}],w=T(()=>_.members[0]),c=T(()=>_.members[1]),P=T(()=>w.value?.catchphrases.slice(0,p.value)??[]),z=T(()=>c.value?.catchphrases.slice(0,p.value)??[]),q=T(()=>{if(!w.value||!c.value)return new Set;const d=new Set(w.value.catchphrases.map(V=>V.content)),x=new Set(c.value.catchphrases.map(V=>V.content));return new Set([...d].filter(V=>x.has(V)))}),A=[{bg:"bg-amber-50 text-amber-600 ring-1 ring-amber-500/20 dark:bg-amber-500/10 dark:text-amber-400 dark:ring-amber-500/30",text:"text-amber-700 dark:text-amber-400 font-bold",badge:"bg-amber-500 text-white dark:bg-amber-600"},{bg:"bg-slate-50 text-slate-600 ring-1 ring-slate-500/20 dark:bg-slate-500/10 dark:text-slate-400 dark:ring-slate-500/30",text:"text-slate-700 dark:text-slate-300 font-bold",badge:"bg-slate-400 text-white dark:bg-slate-500"},{bg:"bg-orange-50 text-orange-600 ring-1 ring-orange-500/20 dark:bg-orange-500/10 dark:text-orange-400 dark:ring-orange-500/30",text:"text-orange-700 dark:text-orange-400 font-bold",badge:"bg-orange-400 text-white dark:bg-orange-500"}];function f(d){return d<A.length?A[d]:{bg:"bg-gray-50/50 text-gray-600 ring-1 ring-gray-900/5 dark:bg-gray-800/30 dark:text-gray-400 dark:ring-white/10",text:"text-gray-600 dark:text-gray-400",badge:"bg-transparent text-gray-400"}}function I(d,x=20){return d.length<=x?d:d.slice(0,x)+"..."}return(d,x)=>{const V=te;return i(),D(t(ie),{variant:"section"},{default:E(()=>[e("div",as,[e("div",ns,[e("div",is,[y(V,{name:"i-heroicons-chat-bubble-bottom-center-text",class:"h-4 w-4 text-indigo-500"}),e("span",ls,s(t(r)("quotes.languagePreference.catchphrasePK.title")),1),q.value.size>0?(i(),u("span",os,s(t(r)("quotes.languagePreference.catchphrasePK.sharedCount",{count:q.value.size})),1)):M("",!0)]),y(t(Ue),{modelValue:p.value,"onUpdate:modelValue":x[0]||(x[0]=$=>p.value=$),size:"xs",items:S},null,8,["modelValue"])]),w.value&&c.value?(i(),u("div",rs,[e("div",null,[e("div",cs,[e("span",ds,s(w.value.name),1)]),e("div",us,[(i(!0),u(K,null,G(P.value,($,m)=>(i(),u("div",{key:$.content,class:B(["inline-flex cursor-pointer items-center gap-1.5 rounded-full px-3 py-1 transition-opacity hover:opacity-75",[q.value.has($.content)?"bg-pink-50 text-pink-600 ring-1 ring-pink-500/20 dark:bg-pink-500/10 dark:text-pink-400 dark:ring-pink-500/30 shadow-sm":f(m).bg]]),title:$.content,onClick:g=>o("wordClick",$.content)},[m<3?(i(),u("span",{key:0,class:B(["flex h-4 w-4 shrink-0 items-center justify-center rounded-full text-[10px] font-bold",f(m).badge])},s(m+1),3)):M("",!0),e("span",{class:B(["text-[13px] font-medium",q.value.has($.content)?"font-bold":f(m).text])},s(I($.content)),3),e("span",gs,"×"+s($.count),1)],10,ms))),128))])]),e("div",null,[e("div",ps,[e("span",xs,s(c.value.name),1)]),e("div",vs,[(i(!0),u(K,null,G(z.value,($,m)=>(i(),u("div",{key:$.content,class:B(["inline-flex cursor-pointer items-center gap-1.5 rounded-full px-3 py-1 transition-opacity hover:opacity-75",[q.value.has($.content)?"bg-pink-50 text-pink-600 ring-1 ring-pink-500/20 dark:bg-pink-500/10 dark:text-pink-400 dark:ring-pink-500/30 shadow-sm":f(m).bg]]),title:$.content,onClick:g=>o("wordClick",$.content)},[m<3?(i(),u("span",{key:0,class:B(["flex h-4 w-4 shrink-0 items-center justify-center rounded-full text-[10px] font-bold",f(m).badge])},s(m+1),3)):M("",!0),e("span",{class:B(["text-[13px] font-medium",q.value.has($.content)?"font-bold":f(m).text])},s(I($.content)),3),e("span",bs,"×"+s($.count),1)],10,fs))),128))])])])):M("",!0),e("p",hs,s(t(r)("quotes.languagePreference.catchphrasePK.hint")),1)])]),_:1})}}}),_s={class:"px-5 py-4 sm:px-6"},ks={class:"mb-4 flex items-center gap-2"},ws={class:"text-[15px] font-black tracking-tight text-gray-900 dark:text-white"},$s={class:"flex flex-col gap-4 lg:flex-row lg:gap-6"},Cs={class:"flex-1"},Ss={key:0,class:"flex shrink-0 flex-col gap-3 lg:w-48"},Ps={class:"min-w-0"},Is={class:"truncate text-xs font-semibold text-gray-500 dark:text-gray-400"},Ms=Y({__name:"PosPortraitSection",props:{members:{}},setup(C){xe([Te,qe,ve,vt,fe]);const{t:a}=X(),r=pe(),_=C,o=T(()=>_.members[0]),p=T(()=>_.members[1]);function S(A){const f=A.posDistribution,I=f.noun+f.verb+f.adjective+f.adverb+f.modalParticle+f.interjection+f.other;if(I===0)return{label:a("quotes.languagePreference.pos.styleBalanced"),icon:"i-heroicons-scale-solid",colorClass:"text-cyan-600 dark:text-cyan-400"};const d=f.noun/I,x=f.verb/I,V=f.adjective/I;return d>.5?{label:a("quotes.languagePreference.pos.styleEncyclopedia"),icon:"i-heroicons-book-open-solid",colorClass:"text-indigo-600 dark:text-indigo-400"}:x>.45?{label:a("quotes.languagePreference.pos.styleAction"),icon:"i-heroicons-rocket-launch-solid",colorClass:"text-orange-600 dark:text-orange-400"}:V>.3?{label:a("quotes.languagePreference.pos.styleExpressive"),icon:"i-heroicons-paint-brush-solid",colorClass:"text-pink-600 dark:text-pink-400"}:{label:a("quotes.languagePreference.pos.styleBalanced"),icon:"i-heroicons-scale-solid",colorClass:"text-cyan-600 dark:text-cyan-400"}}const w=O(null);let c=null;function P(){w.value&&(c=ne(w.value,void 0,{renderer:"canvas"}),z())}function z(){if(!c||!o.value||!p.value)return;const A=o.value.posDistribution,f=p.value.posDistribution,I=[a("quotes.languagePreference.card.radarNoun"),a("quotes.languagePreference.card.radarVerb"),a("quotes.languagePreference.card.radarAdj"),a("quotes.languagePreference.card.radarModal"),a("quotes.languagePreference.card.radarAdv")],d=[A.noun,A.verb,A.adjective,A.modalParticle+A.interjection,A.adverb],x=[f.noun,f.verb,f.adjective,f.modalParticle+f.interjection,f.adverb],V=r.value?"#9ca3af":"#6b7280";c.setOption({backgroundColor:"transparent",tooltip:{trigger:"axis",axisPointer:{type:"shadow"}},legend:{data:[o.value.name,p.value.name],top:0,textStyle:{fontSize:11,color:V}},grid:{left:80,right:20,top:36,bottom:10},xAxis:{type:"value",show:!1},yAxis:{type:"category",data:I,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{fontSize:11,color:V}},series:[{name:o.value.name,type:"bar",data:d,itemStyle:{color:"#3b82f6",borderRadius:[0,4,4,0]},barGap:"20%",barCategoryGap:"40%"},{name:p.value.name,type:"bar",data:x,itemStyle:{color:"#ec4899",borderRadius:[0,4,4,0]}}]},{notMerge:!0})}function q(){c?.resize()}return Z(()=>_.members,()=>z(),{deep:!0}),Z(r,()=>{c?.dispose(),P()}),oe(()=>{P(),window.addEventListener("resize",q)}),ge(()=>{window.removeEventListener("resize",q),c?.dispose()}),(A,f)=>{const I=te;return i(),D(t(ie),{variant:"section"},{default:E(()=>[e("div",_s,[e("div",ks,[y(I,{name:"i-heroicons-chart-bar",class:"h-4 w-4 text-violet-500"}),e("span",ws,s(t(a)("quotes.languagePreference.pos.title")),1)]),e("div",$s,[e("div",Cs,[e("div",{ref_key:"chartRef",ref:w,style:{width:"100%",height:"220px"}},null,512)]),o.value&&p.value?(i(),u("div",Ss,[(i(!0),u(K,null,G([o.value,p.value],d=>(i(),u("div",{key:d.memberId,class:"flex items-center gap-3 rounded-xl bg-white/60 p-3 ring-1 ring-gray-900/5 backdrop-blur-sm dark:bg-white/5 dark:ring-white/10"},[y(I,{name:S(d).icon,class:B(["h-5 w-5 shrink-0",S(d).colorClass])},null,8,["name","class"]),e("div",Ps,[e("div",Is,s(d.name),1),e("div",{class:B(["truncate text-sm font-bold",S(d).colorClass])},s(S(d).label),3)])]))),128))])):M("",!0)])])]),_:1})}}}),Ts={class:"px-5 py-4 sm:px-6"},qs={class:"mb-4 flex items-center gap-2"},As={class:"text-[15px] font-black tracking-tight text-gray-900 dark:text-white"},js={key:0,class:"grid grid-cols-1 gap-6 md:grid-cols-2"},Rs={class:"mb-2 flex items-center justify-between"},Vs={key:1,class:"flex h-[200px] items-center justify-center text-sm text-gray-400"},Ls=Y({__name:"ModalParticleSection",props:{members:{}},setup(C){xe([Te,qe,ve,fe]);const{t:a}=X(),r=pe(),_=C,o=T(()=>_.members[0]),p=T(()=>_.members[1]),S=new Set(["呀","哒","滴","啦","哇","耶"]),w=new Set(["呢","吗","嘛"]),c=new Set(["吧","喔","噢","嘛"]),P=new Set(["嗯","哦","额","呃"]);function z($){const m={label:a("quotes.languagePreference.modal.toneMixed"),colorClass:"bg-gray-50 text-gray-600 ring-1 ring-gray-900/5 dark:bg-gray-800/50 dark:text-gray-400 dark:ring-white/10"};if($.modalParticles.length===0)return m;let g=0,v=0,l=0,h=0,L=0;for(const F of $.modalParticles)L+=F.count,S.has(F.word)&&(g+=F.count),w.has(F.word)&&(v+=F.count),c.has(F.word)&&(l+=F.count),P.has(F.word)&&(h+=F.count);if(L===0)return m;const U=Math.max(g,v,l,h);return U===g&&g/L>.3?{label:a("quotes.languagePreference.modal.toneSoft"),colorClass:"bg-pink-50 text-pink-600 ring-1 ring-pink-500/20 dark:bg-pink-500/10 dark:text-pink-400 dark:ring-pink-500/30"}:U===v&&v/L>.3?{label:a("quotes.languagePreference.modal.toneCurious"),colorClass:"bg-violet-50 text-violet-600 ring-1 ring-violet-500/20 dark:bg-violet-500/10 dark:text-violet-400 dark:ring-violet-500/30"}:U===l&&l/L>.3?{label:a("quotes.languagePreference.modal.toneCasual"),colorClass:"bg-emerald-50 text-emerald-600 ring-1 ring-emerald-500/20 dark:bg-emerald-500/10 dark:text-emerald-400 dark:ring-emerald-500/30"}:U===h&&h/L>.3?{label:a("quotes.languagePreference.modal.toneCalm"),colorClass:"bg-blue-50 text-blue-600 ring-1 ring-blue-500/20 dark:bg-blue-500/10 dark:text-blue-400 dark:ring-blue-500/30"}:m}const q=O(null),A=O(null);let f=null,I=null;function d($,m){const g=$.modalParticles.slice(0,8),v=r.value?"#9ca3af":"#6b7280";return{backgroundColor:"transparent",tooltip:{trigger:"axis",axisPointer:{type:"shadow"}},grid:{left:40,right:20,top:4,bottom:4},xAxis:{type:"value",show:!1},yAxis:{type:"category",data:g.map(l=>l.word).reverse(),axisLine:{show:!1},axisTick:{show:!1},axisLabel:{fontSize:12,color:v},inverse:!1},series:[{type:"bar",data:g.map(l=>l.count).reverse(),itemStyle:{color:m,borderRadius:[0,4,4,0]},barWidth:"50%",label:{show:!0,position:"right",fontSize:10,color:v,formatter:"{c}"}}]}}function x(){q.value&&o.value&&(f=ne(q.value,void 0,{renderer:"canvas"}),f.setOption(d(o.value,"#3b82f6"),{notMerge:!0})),A.value&&p.value&&(I=ne(A.value,void 0,{renderer:"canvas"}),I.setOption(d(p.value,"#ec4899"),{notMerge:!0}))}function V(){f?.resize(),I?.resize()}return Z(()=>_.members,()=>{f&&o.value&&f.setOption(d(o.value,"#3b82f6"),{notMerge:!0}),I&&p.value&&I.setOption(d(p.value,"#ec4899"),{notMerge:!0})},{deep:!0}),Z(r,()=>{f?.dispose(),I?.dispose(),x()}),oe(()=>{x(),window.addEventListener("resize",V)}),ge(()=>{window.removeEventListener("resize",V),f?.dispose(),I?.dispose()}),($,m)=>{const g=te;return i(),D(t(ie),{variant:"section"},{default:E(()=>[e("div",Ts,[e("div",qs,[y(g,{name:"i-heroicons-chat-bubble-oval-left-ellipsis",class:"h-4 w-4 text-pink-500"}),e("span",As,s(t(a)("quotes.languagePreference.modal.title")),1)]),o.value&&p.value?(i(),u("div",js,[(i(!0),u(K,null,G([o.value,p.value],(v,l)=>(i(),u("div",{key:v.memberId},[e("div",Rs,[e("span",{class:B(["text-sm font-semibold",l===0?"text-blue-600 dark:text-blue-400":"text-pink-600 dark:text-pink-400"])},s(v.name),3),e("span",{class:B(["rounded-full px-2 py-0.5 text-[10px] font-bold",z(v).colorClass])},s(z(v).label),3)]),v.modalParticles.length>0?(i(),u("div",{key:0,ref_for:!0,ref:h=>{l===0?q.value=h:A.value=h},style:{width:"100%",height:"200px"}},null,512)):(i(),u("div",Vs,s(t(a)("quotes.languagePreference.modal.empty")),1))]))),128))])):M("",!0)])]),_:1})}}}),Ds={class:"px-5 py-4 sm:px-6"},zs={class:"mb-4 flex items-center gap-2"},Os={class:"text-[15px] font-black tracking-tight text-gray-900 dark:text-white"},Bs={key:0,class:"grid grid-cols-1 gap-6 md:grid-cols-2"},Ns={class:"mb-2 flex items-center gap-2"},Us={key:1,class:"flex h-[200px] items-center justify-center text-sm text-gray-400"},Fs=Y({__name:"PunctuationSection",props:{members:{}},setup(C){xe([ft,ve,fe]);const{t:a}=X(),r=pe(),_=C,o=T(()=>_.members[0]),p=T(()=>_.members[1]),S=["#6366f1","#ec4899","#f97316","#22c55e","#06b6d4","#8b5cf6"];function w(x){const $=[["ellipsis",x.ellipsis],["exclamation",x.exclamation],["question",x.question],["tilde",x.tilde],["noPunct",x.noPunct],["period",x.period]].reduce((g,v)=>g[1]>=v[1]?g:v);return{ellipsis:{label:a("quotes.languagePreference.punctuation.personalityDeep"),colorClass:"bg-indigo-50 text-indigo-600 ring-1 ring-indigo-500/20 dark:bg-indigo-500/10 dark:text-indigo-400 dark:ring-indigo-500/30"},exclamation:{label:a("quotes.languagePreference.punctuation.personalityPassionate"),colorClass:"bg-rose-50 text-rose-600 ring-1 ring-rose-500/20 dark:bg-rose-500/10 dark:text-rose-400 dark:ring-rose-500/30"},question:{label:a("quotes.languagePreference.punctuation.personalityCurious"),colorClass:"bg-amber-50 text-amber-600 ring-1 ring-amber-500/20 dark:bg-amber-500/10 dark:text-amber-400 dark:ring-amber-500/30"},tilde:{label:a("quotes.languagePreference.punctuation.personalityCheerful"),colorClass:"bg-pink-50 text-pink-600 ring-1 ring-pink-500/20 dark:bg-pink-500/10 dark:text-pink-400 dark:ring-pink-500/30"},noPunct:{label:a("quotes.languagePreference.punctuation.personalityFreeflow"),colorClass:"bg-emerald-50 text-emerald-600 ring-1 ring-emerald-500/20 dark:bg-emerald-500/10 dark:text-emerald-400 dark:ring-emerald-500/30"},period:{label:a("quotes.languagePreference.punctuation.personalityPrecise"),colorClass:"bg-blue-50 text-blue-600 ring-1 ring-blue-500/20 dark:bg-blue-500/10 dark:text-blue-400 dark:ring-blue-500/30"}}[$[0]]||{label:"-",colorClass:"bg-gray-50 text-gray-600 ring-1 ring-gray-900/5 dark:bg-gray-800/50 dark:text-gray-400 dark:ring-white/10"}}function c(x){return[{name:"...",value:x.ellipsis},{name:"!",value:x.exclamation},{name:"?",value:x.question},{name:"~",value:x.tilde},{name:"。",value:x.period},{name:a("quotes.languagePreference.punctuation.none"),value:x.noPunct}].filter(V=>V.value>0)}const P=O(null),z=O(null);let q=null,A=null;function f(x){return{backgroundColor:"transparent",tooltip:{trigger:"item",formatter:"{b}: {c} ({d}%)"},series:[{type:"pie",radius:["45%","75%"],center:["50%","50%"],avoidLabelOverlap:!1,padAngle:2,itemStyle:{borderRadius:4},label:{show:!0,fontSize:10,color:r.value?"#9ca3af":"#6b7280",formatter:"{b}"},emphasis:{label:{show:!0,fontWeight:"bold"},scaleSize:4},data:x.map((V,$)=>({...V,itemStyle:{color:S[$%S.length]}}))}]}}function I(){P.value&&o.value&&(q=ne(P.value,void 0,{renderer:"canvas"}),q.setOption(f(c(o.value.punctuation)),{notMerge:!0})),z.value&&p.value&&(A=ne(z.value,void 0,{renderer:"canvas"}),A.setOption(f(c(p.value.punctuation)),{notMerge:!0}))}function d(){q?.resize(),A?.resize()}return Z(()=>_.members,()=>{q&&o.value&&q.setOption(f(c(o.value.punctuation)),{notMerge:!0}),A&&p.value&&A.setOption(f(c(p.value.punctuation)),{notMerge:!0})},{deep:!0}),Z(r,()=>{q?.dispose(),A?.dispose(),I()}),oe(()=>{I(),window.addEventListener("resize",d)}),ge(()=>{window.removeEventListener("resize",d),q?.dispose(),A?.dispose()}),(x,V)=>{const $=te;return i(),D(t(ie),{variant:"section"},{default:E(()=>[e("div",Ds,[e("div",zs,[y($,{name:"i-heroicons-ellipsis-horizontal",class:"h-4 w-4 text-orange-500"}),e("span",Os,s(t(a)("quotes.languagePreference.punctuation.title")),1)]),o.value&&p.value?(i(),u("div",Bs,[(i(!0),u(K,null,G([o.value,p.value],(m,g)=>(i(),u("div",{key:m.memberId,class:"flex flex-col items-center"},[e("div",Ns,[e("span",{class:B(["text-sm font-semibold",g===0?"text-blue-600 dark:text-blue-400":"text-pink-600 dark:text-pink-400"])},s(m.name),3),e("span",{class:B(["rounded-full px-2 py-0.5 text-[10px] font-bold",w(m.punctuation).colorClass])},s(w(m.punctuation).label),3)]),m.punctuation.total>0?(i(),u("div",{key:0,ref_for:!0,ref:v=>{g===0?P.value=v:z.value=v},style:{width:"100%",height:"200px"}},null,512)):(i(),u("div",Us,s(t(a)("quotes.languagePreference.punctuation.empty")),1))]))),128))])):M("",!0)])]),_:1})}}}),Es={class:"main-content mx-auto max-w-[920px] space-y-6 p-6"},Ws=Y({__name:"LanguagePreferenceTab",props:{sessionId:{},timeFilter:{}},setup(C){const{t:a,locale:r}=X(),_=Pe(),o=C,p=O(null),S=O(!1),w=T(()=>p.value&&p.value.members.length>=2);async function c(){if(o.sessionId){S.value=!0;try{p.value=await le().getLanguagePreferenceAnalysis(o.sessionId,r.value,o.timeFilter)}catch(z){console.error("[LanguagePreferenceTab] Failed to load:",z)}finally{S.value=!1}}}function P(z){_.openChatRecordDrawer({keywords:[z]})}return Z(()=>[o.sessionId,o.timeFilter],()=>c(),{immediate:!0,deep:!0}),(z,q)=>(i(),u("div",Es,[S.value?(i(),D(t(me),{key:0,text:t(a)("quotes.languagePreference.loading")},null,8,["text"])):w.value?p.value?(i(),u(K,{key:2},[y(ss,{data:p.value,onWordClick:P},null,8,["data"]),y(ys,{members:p.value.members,onWordClick:P},null,8,["members"]),y(Ms,{members:p.value.members},null,8,["members"]),y(Ls,{members:p.value.members},null,8,["members"]),y(Fs,{members:p.value.members},null,8,["members"])],64)):M("",!0):(i(),D(t(Me),{key:1,text:t(a)("quotes.languagePreference.empty")},null,8,["text"]))]))}}),Ks={class:"main-content mx-auto max-w-[920px] space-y-6 p-6"},Hs={class:"grid grid-cols-1 gap-6 lg:grid-cols-2"},Gs={class:"p-5"},Js={class:"p-5"},Ys=Y({__name:"OverviewTab",props:{session:{},memberActivity:{},messageTypes:{},hourlyActivity:{},dailyActivity:{},timeRange:{},selectedYear:{},filteredMessageCount:{},filteredMemberCount:{},timeFilter:{}},setup(C){const{t:a}=X(),r=C,{dailyChartData:_}=Je(()=>r.dailyActivity),o=T(()=>({labels:r.messageTypes.map(w=>Ye(w.type,a)),values:r.messageTypes.map(w=>w.count)})),p=T(()=>{if(r.memberActivity.length<2)return null;const c=[...r.memberActivity].sort((z,q)=>q.messageCount-z.messageCount).slice(0,2),P=c[0].messageCount+c[1].messageCount;return{member1:{name:c[0].name,avatar:c[0].avatar,count:c[0].messageCount,percentage:P>0?Math.round(c[0].messageCount/P*100):0},member2:{name:c[1].name,avatar:c[1].avatar,count:c[1].messageCount,percentage:P>0?Math.round(c[1].messageCount/P*100):0},total:P}}),S=T(()=>p.value?{labels:[p.value.member1.name,p.value.member2.name],values:[p.value.member1.count,p.value.member2.count]}:{labels:[],values:[]});return(w,c)=>(i(),u("div",Ks,[y(He,{session:C.session,"daily-activity":C.dailyActivity,"message-types":C.messageTypes,"hourly-activity":C.hourlyActivity,"time-range":C.timeRange,"selected-year":C.selectedYear,"filtered-message-count":C.filteredMessageCount,"time-filter":C.timeFilter},null,8,["session","daily-activity","message-types","hourly-activity","time-range","selected-year","filtered-message-count","time-filter"]),e("div",Hs,[y(t(_e),{title:t(a)("analysis.overview.messageTypeDistribution"),"show-divider":!1},{default:E(()=>[e("div",Gs,[y(t(we),{data:o.value,height:280},null,8,["data"])])]),_:1},8,["title"]),p.value?(i(),D(t(_e),{key:0,title:t(a)("analysis.overview.memberComparison"),"show-divider":!1},{default:E(()=>[e("div",Js,[y(t(we),{data:S.value,height:280},null,8,["data"])])]),_:1},8,["title"])):M("",!0)]),y(Ge,{"daily-activity":C.dailyActivity,"daily-chart-data":t(_)},null,8,["daily-activity","daily-chart-data"])]))}}),Qs={class:"flex flex-col rounded-2xl bg-white p-4 ring-1 ring-gray-900/5 transition-colors dark:bg-transparent dark:ring-white/10"},Zs={class:"mb-2 min-h-8"},Xs={class:"flex items-center justify-between gap-2"},ea={class:"flex min-w-0 items-center gap-2"},ta={class:"truncate text-xs font-bold tracking-wide text-gray-900 dark:text-white"},sa={key:0,class:"shrink-0"},aa={class:"flex h-full flex-col"},na={class:"grid grid-cols-2 gap-2"},ia={class:"flex min-w-0 flex-col items-center rounded-xl bg-white px-1 py-1.5 text-center dark:bg-transparent"},la=["title"],oa={class:"flex min-w-0 flex-col items-center rounded-xl bg-white px-1 py-1.5 text-center dark:bg-transparent"},ra=["title"],ca={class:"mt-auto pt-3 min-h-8 text-[10px] leading-relaxed text-gray-500 dark:text-gray-400 sm:min-h-6"},ue=Y({__name:"RelationshipMetricCard",props:{title:{},iconName:{},iconBgClass:{},iconColorClass:{},leftName:{default:"—"},leftValue:{default:"--"},rightName:{default:"—"},rightValue:{default:"--"},valueClass:{default:"text-gray-700 dark:text-gray-200"},description:{default:""}},setup(C){const a=ze(),r=T(()=>!!a["header-extra"]);return(_,o)=>{const p=te;return i(),u("div",Qs,[e("div",Zs,[e("div",Xs,[e("div",ea,[e("div",{class:B(["flex h-6 w-6 shrink-0 items-center justify-center rounded-full",C.iconBgClass])},[y(p,{name:C.iconName,class:B(["h-3.5 w-3.5",C.iconColorClass])},null,8,["name","class"])],2),e("span",ta,s(C.title),1)]),r.value?(i(),u("div",sa,[Oe(_.$slots,"header-extra")])):M("",!0)])]),e("div",aa,[e("div",na,[e("div",ia,[e("div",{class:"w-full truncate text-[10px] font-semibold tracking-wide text-gray-500 dark:text-gray-400",title:C.leftName},s(C.leftName),9,la),e("div",{class:B(["mt-2 font-black font-mono leading-none tabular-nums",C.valueClass])},s(C.leftValue),3)]),e("div",oa,[e("div",{class:"w-full truncate text-[10px] font-semibold tracking-wide text-gray-500 dark:text-gray-400",title:C.rightName},s(C.rightName),9,ra),e("div",{class:B(["mt-2 font-black font-mono leading-none tabular-nums",C.valueClass])},s(C.rightValue),3)])]),e("p",ca,s(C.description),1)])])}}}),da={key:1,class:"main-content mx-auto max-w-[920px] space-y-6 p-6"},ua={class:"space-y-6"},ma={class:"relative z-10 flex flex-col items-center justify-center gap-10 px-6 pt-10 pb-6 sm:px-8 lg:flex-row lg:items-start lg:justify-between lg:gap-8 xl:gap-12"},ga={class:"flex min-w-0 max-w-full flex-1 flex-col items-center justify-center lg:items-start"},pa={class:"flex flex-col text-[15px] leading-relaxed text-gray-600 dark:text-gray-300"},xa={class:"mb-2 text-sm font-medium tracking-wide text-gray-500 dark:text-gray-400"},va={class:"mb-4 flex min-w-0 flex-wrap items-baseline gap-2"},fa={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},ba={class:"font-black text-5xl tracking-tight text-gray-900 dark:text-white"},ha={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},ya={class:"flex min-w-0 max-w-full flex-wrap items-baseline gap-x-1.5 gap-y-1"},_a={class:"text-base font-medium text-gray-600 dark:text-gray-300"},ka={class:"font-black text-3xl text-pink-500 dark:text-pink-400"},wa={class:"text-base font-medium text-gray-600 dark:text-gray-300"},$a={class:"max-w-full break-all text-xl font-bold leading-snug text-gray-900 dark:text-white"},Ca={class:"text-base font-medium text-gray-600 dark:text-gray-300"},Sa={class:"mt-8 flex w-full max-w-[320px] items-center justify-between gap-4"},Pa={class:"flex flex-1 flex-col items-center overflow-hidden"},Ia=["title"],Ma={class:"mt-1 text-2xl font-black text-blue-500 dark:text-blue-400"},Ta={class:"mt-0.5 text-[10px] font-medium text-gray-400"},qa={class:"flex flex-1 flex-col items-center overflow-hidden"},Aa=["title"],ja={class:"mt-1 text-2xl font-black text-pink-500 dark:text-pink-400"},Ra={class:"mt-0.5 text-[10px] font-medium text-gray-400"},Va={key:0,class:"flex min-w-0 w-full max-w-[400px] flex-1 flex-col justify-center lg:max-w-[460px]"},La={class:"mb-2 flex items-center justify-between px-1"},Da={class:"text-sm font-bold text-gray-900 dark:text-white"},za={class:"text-[10px] font-medium text-gray-500 dark:text-gray-400"},Oa={class:"w-full"},Ba={class:"h-[200px] w-full"},Na={class:"relative z-10 grid grid-cols-2 gap-3 p-4 pt-2 sm:p-6 sm:pt-2 lg:grid-cols-4"},Ua={class:"relative z-10 flex items-center justify-between px-6 pb-4 opacity-40 mix-blend-luminosity dark:opacity-30 sm:px-8 sm:pb-5"},Fa={class:"flex items-center gap-1.5"},Ea={class:"text-[9px] font-medium uppercase tracking-widest"},Wa={class:"p-6 sm:p-8"},Ka={class:"relative ml-4 border-l-2 border-gray-100/80 py-4 dark:border-gray-800/80"},Ha={class:"absolute -left-[11px] top-1 flex h-5 w-5 items-center justify-center rounded-full bg-white ring-4 ring-white dark:bg-gray-900 dark:ring-gray-900"},Ga={class:"group relative overflow-hidden rounded-[20px] bg-card-bg shadow-sm ring-1 ring-gray-900/5 transition-all hover:-translate-y-0.5 hover:shadow-md dark:bg-card-dark dark:ring-white/10"},Ja={key:0,class:"pointer-events-none absolute inset-0 overflow-hidden opacity-30 transition-opacity group-hover:opacity-50"},Ya={class:"relative z-10 p-4 sm:p-5"},Qa={class:"flex items-center gap-3"},Za={class:"text-xl font-bold tracking-tight text-gray-900 dark:text-white"},Xa={key:0,class:"flex items-baseline gap-1.5"},en={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},tn={class:"text-2xl font-black leading-none text-gray-900 dark:text-white"},sn={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},an={key:0,class:"grid grid-cols-2 gap-3 lg:grid-cols-4"},nn={class:"flex flex-col rounded-xl bg-blue-50/50 p-3 ring-1 ring-blue-100/50 dark:bg-blue-500/5 dark:ring-blue-500/10"},ln={class:"mb-2.5 flex items-center gap-1.5"},on={class:"text-xs font-bold text-gray-700 dark:text-gray-300"},rn={class:"flex flex-col gap-1.5"},cn={class:"flex items-center justify-between text-xs"},dn={class:"w-12 truncate font-medium text-gray-500 dark:text-gray-400"},un={class:"font-black tabular-nums text-blue-600 dark:text-blue-400"},mn={class:"flex items-center justify-between text-xs"},gn={class:"w-12 truncate font-medium text-gray-500 dark:text-gray-400"},pn={class:"font-black tabular-nums text-pink-500 dark:text-pink-400"},xn={class:"mt-3 flex h-1 w-full overflow-hidden rounded-full bg-gray-200 dark:bg-gray-700"},vn={class:"flex flex-col rounded-xl bg-indigo-50/50 p-3 ring-1 ring-indigo-100/50 dark:bg-indigo-500/5 dark:ring-indigo-500/10"},fn={class:"mb-2.5 flex items-center gap-1.5"},bn={class:"text-xs font-bold text-gray-700 dark:text-gray-300"},hn={class:"flex flex-col gap-1.5"},yn={class:"flex items-center justify-between text-xs"},_n={class:"w-12 truncate font-medium text-gray-500 dark:text-gray-400"},kn={class:"font-black tabular-nums text-indigo-600 dark:text-indigo-400"},wn={class:"flex items-center justify-between text-xs"},$n={class:"w-12 truncate font-medium text-gray-500 dark:text-gray-400"},Cn={class:"font-black tabular-nums text-pink-500 dark:text-pink-400"},Sn={class:"mt-3 flex h-1 w-full overflow-hidden rounded-full bg-gray-200 dark:bg-gray-700"},Pn={class:"flex flex-col rounded-xl bg-amber-50/50 p-3 ring-1 ring-amber-100/50 dark:bg-amber-500/5 dark:ring-amber-500/10"},In={class:"mb-2.5 flex items-center gap-1.5"},Mn={class:"text-xs font-bold text-gray-700 dark:text-gray-300"},Tn={class:"flex flex-col gap-1.5"},qn={class:"flex items-center justify-between text-xs"},An={class:"w-12 truncate font-medium text-gray-500 dark:text-gray-400"},jn={class:"font-black tabular-nums text-amber-600 dark:text-amber-500"},Rn={class:"flex items-center justify-between text-xs"},Vn={class:"w-12 truncate font-medium text-gray-500 dark:text-gray-400"},Ln={class:"font-black tabular-nums text-amber-600 dark:text-amber-500"},Dn={class:"flex flex-col rounded-xl bg-purple-50/50 p-3 ring-1 ring-purple-100/50 dark:bg-purple-500/5 dark:ring-purple-500/10"},zn={class:"mb-2.5 flex items-center gap-1.5"},On={class:"text-xs font-bold text-gray-700 dark:text-gray-300"},Bn={class:"flex flex-col gap-1.5"},Nn={class:"flex items-center justify-between text-xs"},Un={class:"w-12 truncate font-medium text-gray-500 dark:text-gray-400"},Fn={class:"font-black tabular-nums text-purple-600 dark:text-purple-400"},En={class:"flex items-center justify-between text-xs"},Wn={class:"w-12 truncate font-medium text-gray-500 dark:text-gray-400"},Kn={class:"font-black tabular-nums text-purple-600 dark:text-purple-400"},Hn={key:1,class:"flex h-24 items-center justify-center text-sm font-medium text-gray-400 dark:text-gray-500"},Gn=Y({__name:"RelationshipView",props:{sessionId:{},timeFilter:{}},setup(C){const{t:a,locale:r}=X(),_=C,o=O(null),p=O(!1),S=O(!1),w=O(300);async function c(n){if(!_.sessionId)return;const b=n?.localOnly==="perseverance";b?S.value=!0:p.value=!0;try{o.value=await le().getRelationshipStats(_.sessionId,_.timeFilter,{perseveranceThreshold:w.value})}catch(j){console.error("Failed to load relationship stats:",j)}finally{b?S.value=!1:p.value=!1}}Z(()=>[_.sessionId,_.timeFilter],()=>c(),{immediate:!0,deep:!0});const P=[{label:"1m",value:60},{label:"3m",value:180},{label:"5m",value:300},{label:"10m",value:600},{label:"30m",value:1800}];function z(n){w.value!==n&&(w.value=n,c({localOnly:"perseverance"}))}const q=T({get:()=>w.value,set:n=>z(n)});function A(n){return a("views.relationship.perseverance.thresholdMinutes",{n:Math.round(n/60)})}const f=T(()=>a("views.relationship.perseverance.hintWithThreshold",{threshold:A(w.value)})),I=T(()=>o.value?.hasSessionIndex&&o.value.totalSessions>0),d=T(()=>o.value?.members[0]),x=T(()=>o.value?.members[1]),V=T(()=>{if(!d.value||!o.value)return 50;const n=(d.value.totalInitiateCount??0)+(x.value?.totalInitiateCount??0);return n===0?50:Math.round(d.value.totalInitiateCount/n*100)}),$=T(()=>{if(!o.value||o.value.months.length===0)return"";const n=[...o.value.months].sort((k,R)=>k.month.localeCompare(R.month)),b=n[0].month.replace("-","/"),j=n[n.length-1].month.replace("-","/");return b===j?b:`${b} – ${j}`}),m=T(()=>r.value.startsWith("en")?"max-w-[420px]":"max-w-[320px]");function g(n){return n<=0?0:n>=100?100:Math.max(5,Math.min(95,n))}const v=T(()=>{if(!o.value||o.value.months.length===0||!d.value)return{};const n=[...o.value.months].sort((W,H)=>W.month.localeCompare(H.month)),b=n.map(W=>F(W.month)),j=d.value.name,k=x.value?.name??"—",R=n.map(W=>{const H=W.members.find(de=>de.memberId===d.value.memberId);return!H||W.totalSessions===0?50:Math.round(H.initiateCount/W.totalSessions*100)});return{tooltip:{trigger:"axis",formatter(W){const H=W[0],de=H.value;return`${H.axisValue}<br/>${j}: ${de}%<br/>${k}: ${100-de}%`}},grid:{left:40,right:20,top:20,bottom:30},xAxis:{type:"category",data:b,axisLabel:{fontSize:11}},yAxis:{type:"value",min:0,max:100,axisLabel:{formatter:"{value}%",fontSize:11},splitLine:{lineStyle:{type:"dashed"}}},series:[{type:"line",data:R,smooth:!0,symbol:"circle",symbolSize:6,lineStyle:{width:2,color:"#3b82f6"},itemStyle:{color:"#3b82f6"},areaStyle:{color:{type:"linear",x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:"rgba(59, 130, 246, 0.15)"},{offset:1,color:"rgba(59, 130, 246, 0)"}]}},markLine:{silent:!0,data:[{yAxis:50,lineStyle:{type:"dashed",color:"#9ca3af"}}],label:{show:!1},symbol:"none"}}]}});function l(n){if(n.totalSessions===0)return a("views.relationship.labels.peacefulSilence");if(n.totalSessions<=2)return a("views.relationship.labels.fleetingThoughts");const j=[...n.members].sort((R,W)=>W.initiateCount-R.initiateCount)[0];if(!j||n.totalSessions===0)return"";const k=Math.round(j.initiateCount/n.totalSessions*100);return k>=40&&k<=60?a("views.relationship.labels.wellMatched"):k>=80?a("views.relationship.labels.monologue",{name:j.name}):a("views.relationship.labels.missingYou",{name:j.name})}function h(n){if(!d.value||n.totalSessions===0)return 50;const b=n.members.find(j=>j.memberId===d.value.memberId);return Math.round((b?.initiateCount??0)/n.totalSessions*100)}function L(n){if(!d.value)return 50;const j=n.members.find(R=>R.memberId===d.value.memberId)?.closeCount??0,k=n.members.reduce((R,W)=>R+(W.closeCount??0),0);return k===0?50:Math.round(j/k*100)}function U(n){const[b,j]=n.split("-");return a("views.relationship.monthFormat",{year:b,month:Number.parseInt(j,10)})}function F(n){const b=n.split("-");return a("views.relationship.monthShortFormat",{month:Number.parseInt(b[1],10)})}function ee(n){return!n||!o.value?.iceBreakers?.length?0:o.value.iceBreakers.filter(b=>b.memberId===n).reduce((b,j)=>b+j.count,0)}function Q(n){if(!n||!o.value?.responseLatency?.length)return null;const b=o.value.responseLatency.find(j=>j.memberId===n);return b?b.avgResponseTime:null}function N(n){return!n||!o.value?.perseverance?.length?0:o.value.perseverance.find(j=>j.memberId===n)?.totalDoubleTexts??0}function se(n){const b=Q(n);return b!=null?J(b):"--"}function be(n){return o.value?.monthlyResponseLatency?.find(b=>b.month===n)?.members??[]}function he(n){return o.value?.monthlyPerseverance?.find(b=>b.month===n)?.members??[]}function re(n,b){if(!b)return"--";const j=be(n).find(k=>k.memberId===b);return j?J(j.avgResponseTime):"--"}function ce(n,b){if(!b)return"--";const j=he(n).find(k=>k.memberId===b);return j?j.doubleTextCount.toString():"--"}function J(n){const b=Math.max(0,Math.round(n));if(b<60)return a("views.relationship.responseLatency.seconds",{n:b});if(b<3600){const R=Math.floor(b/60),W=b%60;return a("views.relationship.responseLatency.minutesSeconds",{m:R,s:W})}const j=Math.floor(b/3600),k=Math.floor(b%3600/60);return k===0?a("views.relationship.responseLatency.hours",{n:j}):a("views.relationship.responseLatency.hoursMinutes",{h:j,m:k})}return(n,b)=>{const j=je,k=te;return i(),u("div",{class:B(p.value?"h-full":"")},[p.value?(i(),D(t(me),{key:0,variant:"page",text:t(a)("common.loading")},null,8,["text"])):(i(),u("div",da,[o.value&&!I.value?(i(),D(t(Me),{key:0,icon:"i-heroicons-heart",title:t(a)("views.relationship.empty.title"),description:t(a)("views.relationship.empty.description")},null,8,["title","description"])):o.value&&I.value?(i(),u(K,{key:1},[e("div",ua,[y(t(ie),{id:"shareable-poster",variant:"elevated",decorative:"",class:"flex flex-col"},{default:E(()=>[e("div",ma,[e("div",ga,[e("div",{class:B(["flex w-fit min-w-0 flex-col items-start text-left",m.value])},[e("div",pa,[e("p",xa,s($.value),1),e("div",va,[e("span",fa,s(t(a)("views.relationship.hero.totalSessionsPrefix")),1),e("span",ba,s(o.value.totalSessions),1),e("span",ha,s(t(a)("views.relationship.hero.totalSessionsSuffix")),1)]),e("div",ya,[e("span",_a,s(t(a)("views.relationship.hero.initiativePrefix")),1),e("span",ka,s(V.value>=50?V.value:100-V.value)+"% ",1),e("span",wa,s(t(a)("views.relationship.hero.initiativeByPrefix")),1),e("span",$a,s(V.value>=50?d.value?.name:x.value?.name),1),e("span",Ca,s(t(a)("views.relationship.hero.initiativeBySuffix")),1)])]),e("div",Sa,[e("div",Pa,[e("div",{class:"w-full truncate text-center text-xs font-bold text-gray-500 dark:text-gray-400",title:d.value?.name},s(d.value?.name),9,Ia),e("div",Ma,s(d.value?.totalInitiateCount),1),e("div",Ta,s(t(a)("views.relationship.hero.initiateTimes")),1)]),b[1]||(b[1]=e("div",{class:"flex h-6 w-6 shrink-0 items-center justify-center rounded-full bg-gray-100 font-black text-[10px] italic text-gray-400 shadow-inner dark:bg-gray-900/80 dark:text-gray-500"}," VS ",-1)),e("div",qa,[e("div",{class:"w-full truncate text-center text-xs font-bold text-gray-500 dark:text-gray-400",title:x.value?.name},s(x.value?.name),9,Aa),e("div",ja,s(x.value?.totalInitiateCount),1),e("div",Ra,s(t(a)("views.relationship.hero.initiateTimes")),1)])])],2)]),o.value.months.length>=2?(i(),u("div",Va,[e("div",La,[e("span",Da,s(t(a)("views.relationship.trend.title")),1),e("span",za,s(t(a)("views.relationship.trend.hint",{name:d.value?.name??""})),1)]),e("div",Oa,[e("div",Ba,[y(t(Qe),{option:v.value,height:200},null,8,["option"])])])])):M("",!0)]),e("div",Na,[y(ue,{title:t(a)("views.relationship.closerTitle"),"icon-name":"i-heroicons-hand-raised-solid","icon-bg-class":"bg-blue-100 dark:bg-blue-500/20","icon-color-class":"text-blue-600 dark:text-blue-400","left-name":d.value?.name,"left-value":d.value?.totalCloseCount??0,"right-name":x.value?.name,"right-value":x.value?.totalCloseCount??0,"value-class":"text-lg text-blue-600 dark:text-blue-400",description:t(a)("views.relationship.closerHint")},null,8,["title","left-name","left-value","right-name","right-value","description"]),y(ue,{title:t(a)("views.relationship.iceBreaker.title"),"icon-name":"i-heroicons-fire-solid","icon-bg-class":"bg-pink-100 dark:bg-pink-500/20","icon-color-class":"text-pink-600 dark:text-pink-400","left-name":d.value?.name,"left-value":ee(d.value?.memberId),"right-name":x.value?.name,"right-value":ee(x.value?.memberId),"value-class":"text-lg text-pink-600 dark:text-pink-400",description:t(a)("views.relationship.iceBreaker.hint")},null,8,["title","left-name","left-value","right-name","right-value","description"]),y(ue,{title:t(a)("views.relationship.responseLatency.title"),"icon-name":"i-heroicons-clock-solid","icon-bg-class":"bg-amber-100 dark:bg-amber-500/20","icon-color-class":"text-amber-600 dark:text-amber-400","left-name":d.value?.name,"left-value":se(d.value?.memberId),"right-name":x.value?.name,"right-value":se(x.value?.memberId),"value-class":"text-base text-amber-600 dark:text-amber-400",description:t(a)("views.relationship.responseLatency.hint")},null,8,["title","left-name","left-value","right-name","right-value","description"]),y(ue,{title:t(a)("views.relationship.perseverance.title"),"icon-name":"i-heroicons-arrow-path-solid","icon-bg-class":"bg-purple-100 dark:bg-purple-500/20","icon-color-class":"text-purple-600 dark:text-purple-400","left-name":d.value?.name,"left-value":N(d.value?.memberId),"right-name":x.value?.name,"right-value":N(x.value?.memberId),"value-class":"text-lg text-purple-600 dark:text-purple-400",description:f.value},{"header-extra":E(()=>[y(j,{modelValue:q.value,"onUpdate:modelValue":b[0]||(b[0]=R=>q.value=R),items:P,"value-key":"value",size:"xs",class:"relative z-[120] w-16",ui:{content:"z-[121]"},disabled:S.value},null,8,["modelValue","disabled"])]),_:1},8,["title","left-name","left-value","right-name","right-value","description"])]),e("div",Ua,[e("div",Fa,[y(k,{name:"i-heroicons-chat-bubble-left-right-solid",class:"h-3.5 w-3.5"}),b[2]||(b[2]=e("span",{class:"text-[10px] font-bold uppercase tracking-wider"},"ChatLab",-1))]),e("span",Ea,s(t(a)("views.relationship.watermarkReport")),1)])]),_:1})]),y(t(_e),{title:t(a)("views.relationship.monthly.title"),"show-divider":!1},{default:E(()=>[e("div",Wa,[e("div",Ka,[(i(!0),u(K,null,G(o.value.months,(R,W)=>(i(),u("div",{key:R.month,class:"relative pb-12 pl-10 last:pb-0"},[e("div",Ha,[e("div",{class:B(["h-2.5 w-2.5 rounded-full shadow-sm",R.totalSessions>0?W===0?"bg-pink-500 animate-pulse":"bg-pink-400":"bg-gray-300 dark:bg-gray-600"])},null,2)]),e("div",Ga,[R.totalSessions>0?(i(),u("div",Ja,[...b[3]||(b[3]=[e("div",{class:"absolute -left-[10%] top-[20%] h-[60%] w-[40%] rounded-full bg-blue-400/10 blur-[40px] dark:bg-blue-500/20"},null,-1),e("div",{class:"absolute -right-[10%] bottom-[20%] h-[60%] w-[40%] rounded-full bg-pink-400/10 blur-[40px] dark:bg-pink-500/20"},null,-1)])])):M("",!0),e("div",Ya,[e("div",{class:B(["flex items-center justify-between",R.totalSessions>0?"mb-4":""])},[e("div",Qa,[e("span",Za,s(U(R.month)),1),e("span",{class:B(["rounded-lg px-2.5 py-1 text-xs font-semibold",R.totalSessions===0?"bg-gray-50 text-gray-500 dark:bg-gray-800/50 dark:text-gray-400":"bg-pink-50 text-pink-600 dark:bg-pink-500/10 dark:text-pink-400"])},s(l(R)),3)]),R.totalSessions>0?(i(),u("div",Xa,[e("span",en,s(t(a)("views.relationship.monthly.totalSessionsPrefix")),1),e("span",tn,s(R.totalSessions),1),e("span",sn,s(t(a)("views.relationship.monthly.totalSessionsSuffix")),1)])):M("",!0)],2),R.totalSessions>0?(i(),u("div",an,[e("div",nn,[e("div",ln,[y(k,{name:"i-heroicons-chat-bubble-bottom-center-text-solid",class:"h-3.5 w-3.5 text-blue-500 dark:text-blue-400"}),e("span",on,s(t(a)("views.relationship.initiator")),1)]),e("div",rn,[e("div",cn,[e("span",dn,s(d.value?.name),1),e("span",un,s(R.members.find(H=>H.memberId===d.value?.memberId)?.initiateCount??0),1)]),e("div",mn,[e("span",gn,s(x.value?.name),1),e("span",pn,s(R.members.find(H=>H.memberId===x.value?.memberId)?.initiateCount??0),1)])]),e("div",xn,[e("div",{class:"bg-blue-500 dark:bg-blue-400",style:ae({width:g(h(R))+"%"})},null,4),e("div",{class:"bg-pink-500 dark:bg-pink-400",style:ae({width:g(100-h(R))+"%"})},null,4)])]),e("div",vn,[e("div",fn,[y(k,{name:"i-heroicons-hand-raised-solid",class:"h-3.5 w-3.5 text-indigo-500 dark:text-indigo-400"}),e("span",bn,s(t(a)("views.relationship.closer")),1)]),e("div",hn,[e("div",yn,[e("span",_n,s(d.value?.name),1),e("span",kn,s(R.members.find(H=>H.memberId===d.value?.memberId)?.closeCount??0),1)]),e("div",wn,[e("span",$n,s(x.value?.name),1),e("span",Cn,s(R.members.find(H=>H.memberId===x.value?.memberId)?.closeCount??0),1)])]),e("div",Sn,[e("div",{class:"bg-indigo-500 dark:bg-indigo-400",style:ae({width:g(L(R))+"%"})},null,4),e("div",{class:"bg-pink-500 dark:bg-pink-400",style:ae({width:g(100-L(R))+"%"})},null,4)])]),e("div",Pn,[e("div",In,[y(k,{name:"i-heroicons-clock-solid",class:"h-3.5 w-3.5 text-amber-500 dark:text-amber-400"}),e("span",Mn,s(t(a)("views.relationship.responseLatency.title")),1)]),e("div",Tn,[e("div",qn,[e("span",An,s(d.value?.name),1),e("span",jn,s(re(R.month,d.value?.memberId)),1)]),e("div",Rn,[e("span",Vn,s(x.value?.name),1),e("span",Ln,s(re(R.month,x.value?.memberId)),1)])])]),e("div",Dn,[e("div",zn,[y(k,{name:"i-heroicons-arrow-path-solid",class:"h-3.5 w-3.5 text-purple-500 dark:text-purple-400"}),e("span",On,s(t(a)("views.relationship.perseverance.title")),1)]),e("div",Bn,[e("div",Nn,[e("span",Un,s(d.value?.name),1),e("span",Fn,s(ce(R.month,d.value?.memberId)),1)]),e("div",En,[e("span",Wn,s(x.value?.name),1),e("span",Kn,s(ce(R.month,x.value?.memberId)),1)])])])])):(i(),u("div",Hn,s(t(a)("views.relationship.noActivity")),1))])])]))),128))])])]),_:1},8,["title"])],64)):M("",!0)]))],2)}}}),Jn={class:"flex h-full flex-col"},Yn={class:"flex-1 min-h-0 overflow-auto"},Qn=Y({__name:"ViewTab",props:{sessionId:{},sessionName:{},timeFilter:{}},setup(C){const{t:a}=X(),r=C,_=T(()=>[{id:"relationship",label:a("analysis.subTabs.view.relationship"),icon:"i-heroicons-heart"},{id:"type-analysis",label:a("analysis.subTabs.view.typeAnalysis"),icon:"i-heroicons-chart-pie"},{id:"time-analysis",label:a("analysis.subTabs.view.timeAnalysis"),icon:"i-heroicons-clock"},{id:"topic",label:a("analysis.subTabs.view.topic"),icon:"i-heroicons-cloud"},{id:"language-preference",label:a("analysis.subTabs.view.languagePreference"),icon:"i-heroicons-language"}]),o=O("relationship"),p=O(null),S=T(()=>({...r.timeFilter,memberId:p.value}));return(w,c)=>(i(),u("div",Jn,[y(t(Fe),{modelValue:o.value,"onUpdate:modelValue":c[1]||(c[1]=P=>o.value=P),items:_.value,"persist-key":"privateViewTab"},{right:E(()=>[o.value==="type-analysis"||o.value==="time-analysis"?(i(),D(Ze,{key:0,modelValue:p.value,"onUpdate:modelValue":c[0]||(c[0]=P=>p.value=P),"session-id":r.sessionId},null,8,["modelValue","session-id"])):M("",!0)]),_:1},8,["modelValue","items"]),e("div",Yn,[y(Se,{name:"fade",mode:"out-in"},{default:E(()=>[o.value==="type-analysis"?(i(),D(Xe,{key:0,"session-id":r.sessionId,"session-name":r.sessionName,"time-filter":S.value},null,8,["session-id","session-name","time-filter"])):o.value==="time-analysis"?(i(),D(et,{key:1,"session-id":r.sessionId,"session-name":r.sessionName,"time-filter":S.value},null,8,["session-id","session-name","time-filter"])):o.value==="relationship"?(i(),D(Gn,{key:2,"session-id":r.sessionId,"time-filter":r.timeFilter},null,8,["session-id","time-filter"])):o.value==="topic"?(i(),D(t(tt),{key:3,"session-id":r.sessionId,"time-filter":r.timeFilter,"show-shared-topics":!0},null,8,["session-id","time-filter"])):o.value==="language-preference"?(i(),D(t(Ws),{key:4,"session-id":r.sessionId,"time-filter":r.timeFilter},null,8,["session-id","time-filter"])):M("",!0)]),_:1})])]))}}),Zn=Ie(Qn,[["__scopeId","data-v-9043b751"]]),Xn={class:"main-content max-w-4xl p-6"},ei={key:0,class:"mb-6"},ti={class:"flex items-center gap-3"},si={class:"text-xl font-bold text-gray-900 dark:text-white"},ai={class:"text-sm text-gray-500 dark:text-gray-400"},ni={key:1,class:"flex h-60 items-center justify-center"},ii={key:2,class:"mb-4 flex items-center justify-end gap-2"},li={class:"text-xs text-gray-500 dark:text-gray-400"},oi={key:3,class:"grid gap-4 md:grid-cols-2"},ri={class:"absolute right-4 top-4"},ci={class:"flex items-start gap-4"},di=["src","alt"],ui={key:1,class:"flex h-14 w-14 shrink-0 items-center justify-center rounded-full bg-linear-to-br from-pink-400 to-pink-600 text-lg font-medium text-white"},mi={class:"flex-1 min-w-0"},gi={class:"text-lg font-semibold text-gray-900 dark:text-white truncate"},pi={class:"text-sm text-gray-500 dark:text-gray-400"},xi={class:"mt-4 flex items-center gap-4"},vi={class:"flex-1"},fi={class:"flex items-baseline justify-between"},bi={class:"text-sm text-gray-500 dark:text-gray-400"},hi={class:"text-lg font-bold text-gray-900 dark:text-white"},yi={class:"mt-2 h-2 w-full overflow-hidden rounded-full bg-gray-100 dark:bg-gray-800"},_i={class:"mt-1 text-xs text-gray-400 dark:text-gray-500"},ki={class:"mt-4 border-t border-gray-100 pt-4 dark:border-gray-800"},wi={class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"},$i={class:"relative"},Ci={key:0,class:"absolute right-3 top-1/2 -translate-y-1/2"},Si={key:4,class:"flex h-60 flex-col items-center justify-center"},Pi={class:"text-gray-500 dark:text-gray-400"},Ii={key:5,class:"mt-6 flex items-start gap-3 rounded-xl bg-blue-50 p-4 dark:bg-blue-900/20"},Mi={class:"text-sm font-medium text-blue-800 dark:text-blue-200"},Ti={class:"mt-1 text-sm text-blue-700 dark:text-blue-300"},qi={class:"p-6"},Ai={class:"mb-4 flex items-center gap-3"},ji={class:"flex h-10 w-10 items-center justify-center rounded-full bg-amber-100 dark:bg-amber-900/30"},Ri={class:"text-lg font-semibold text-gray-900 dark:text-white"},Vi={class:"mb-2 text-sm text-gray-600 dark:text-gray-400"},Li={class:"mb-6 text-xs text-amber-700 dark:text-amber-300"},Di={class:"flex justify-end gap-2"},zi=Y({__name:"MemberTab",props:{sessionId:{},showHeader:{type:Boolean,default:!0}},setup(C){const{t:a}=X(),r=C,_=O([]),o=O(!1),p=O(null),S=O(new Set),w=O(!1),c=O(!1);function P(l){return l.groupNickname||l.accountName||l.platformId}function z(l){return P(l).slice(0,1)}const q=T(()=>_.value.filter(l=>S.value.has(l.id))),A=T(()=>q.value.length===2),f=T(()=>{if(q.value.length!==2)return null;const[l,h]=q.value;return h.messageCount>l.messageCount||h.messageCount===l.messageCount&&h.id<l.id?{primary:h,secondary:l}:{primary:l,secondary:h}}),I=T(()=>_.value.reduce((l,h)=>l+h.messageCount,0));function d(l){return I.value===0?0:Math.round(l/I.value*100)}async function x(){if(r.sessionId){o.value=!0;try{_.value=await le().getMembers(r.sessionId)}catch(l){console.error("加载成员列表失败:",l)}finally{o.value=!1}}}async function V(l,h){const L=JSON.parse(JSON.stringify(h)),U=JSON.stringify(l.aliases),F=JSON.stringify(L);if(U!==F){p.value=l.id;try{if(await le().updateMemberAliases(r.sessionId,l.id,L)){const Q=_.value.findIndex(N=>N.id===l.id);Q!==-1&&(_.value[Q]={..._.value[Q],aliases:L})}}catch(ee){console.error("保存别名失败:",ee)}finally{p.value=null}}}function $(l){const h=new Set(S.value);h.has(l)?h.delete(l):h.add(l),S.value=h}function m(){A.value&&(w.value=!0)}function g(){S.value=new Set}async function v(){if(f.value){c.value=!0;try{await le().mergeMembers(r.sessionId,f.value.primary.id,f.value.secondary.id)&&(w.value=!1,g(),await x())}catch(l){console.error("合并成员失败:",l)}finally{c.value=!1}}}return Z(()=>r.sessionId,()=>{g(),x()},{immediate:!0}),oe(()=>{x()}),(l,h)=>{const L=te,U=$e,F=Re,ee=Ve,Q=Ce;return i(),u("div",Xn,[r.showHeader?(i(),u("div",ei,[e("div",ti,[e("div",null,[e("h2",si,s(t(a)("members.private.title")),1),e("p",ai,s(t(a)("members.private.description",{count:_.value.length})),1)])])])):M("",!0),y(st,{class:"mb-6","session-id":C.sessionId,members:_.value,"chat-type":"private"},null,8,["session-id","members"]),o.value?(i(),u("div",ni,[y(L,{name:"i-heroicons-arrow-path",class:"h-8 w-8 animate-spin text-pink-500"})])):M("",!0),!o.value&&_.value.length>1?(i(),u("div",ii,[e("span",li,s(t(a)("members.list.mergeSelectedCount",{count:S.value.size})),1),y(U,{icon:"i-heroicons-link",size:"sm",color:"primary",disabled:!A.value,onClick:m},{default:E(()=>[ye(s(t(a)("members.list.mergeSelected")),1)]),_:1},8,["disabled"])])):M("",!0),o.value?M("",!0):(i(),u("div",oi,[(i(!0),u(K,null,G(_.value,N=>(i(),u("div",{key:N.id,class:"relative rounded-xl border border-gray-200 bg-white p-5 shadow-sm dark:border-gray-700 dark:bg-gray-900"},[e("div",ri,[y(F,{"model-value":S.value.has(N.id),onClick:Be(se=>$(N.id),["stop"])},null,8,["model-value","onClick"])]),e("div",ci,[N.avatar?(i(),u("img",{key:0,src:N.avatar,alt:P(N),class:"h-14 w-14 shrink-0 rounded-full object-cover"},null,8,di)):(i(),u("div",ui,s(z(N)),1)),e("div",mi,[e("h3",gi,s(P(N)),1),e("p",pi,"ID: "+s(N.platformId),1)])]),e("div",xi,[e("div",vi,[e("div",fi,[e("span",bi,s(t(a)("members.private.messageCount")),1),e("span",hi,s(N.messageCount.toLocaleString()),1)]),e("div",yi,[e("div",{class:"h-full rounded-full bg-linear-to-r from-pink-400 to-pink-600 transition-all duration-500",style:ae({width:`${d(N.messageCount)}%`})},null,4)]),e("p",_i,s(t(a)("members.private.percentage",{value:d(N.messageCount)})),1)])]),e("div",ki,[e("label",wi,s(t(a)("members.private.customAlias")),1),e("div",$i,[y(ee,{"model-value":N.aliases,placeholder:t(a)("members.private.aliasPlaceholder"),class:"w-full","onUpdate:modelValue":se=>V(N,se)},null,8,["model-value","placeholder","onUpdate:modelValue"]),p.value===N.id?(i(),u("div",Ci,[y(L,{name:"i-heroicons-arrow-path",class:"h-4 w-4 animate-spin text-pink-500"})])):M("",!0)])])]))),128))])),!o.value&&_.value.length===0?(i(),u("div",Si,[y(L,{name:"i-heroicons-user-group",class:"mb-3 h-12 w-12 text-gray-300 dark:text-gray-600"}),e("p",Pi,s(t(a)("members.private.empty")),1)])):M("",!0),_.value.length>0?(i(),u("div",Ii,[y(L,{name:"i-heroicons-information-circle",class:"mt-0.5 h-5 w-5 shrink-0 text-blue-500"}),e("div",null,[e("p",Mi,s(t(a)("members.private.tipTitle")),1),e("p",Ti,s(t(a)("members.private.tipContent")),1)])])):M("",!0),y(Q,{open:w.value,ui:{content:"max-w-md"},"onUpdate:open":h[1]||(h[1]=N=>w.value=N)},{content:E(()=>[e("div",qi,[e("div",Ai,[e("div",ji,[y(L,{name:"i-heroicons-link",class:"h-5 w-5 text-amber-600 dark:text-amber-400"})]),e("h3",Ri,s(t(a)("members.list.mergeModal.title")),1)]),e("p",Vi,s(t(a)("members.list.mergeModal.content",{source:f.value?P(f.value.secondary):"",sourceCount:f.value?f.value.secondary.messageCount.toLocaleString():"0",target:f.value?P(f.value.primary):"",targetCount:f.value?f.value.primary.messageCount.toLocaleString():"0"})),1),e("p",Li,s(t(a)("members.list.mergeModal.hint")),1),e("div",Di,[y(U,{variant:"outline",disabled:c.value,onClick:h[0]||(h[0]=N=>w.value=!1)},{default:E(()=>[ye(s(t(a)("members.list.mergeModal.cancel")),1)]),_:1},8,["disabled"]),y(U,{color:"primary",loading:c.value,onClick:v},{default:E(()=>[ye(s(t(a)("members.list.mergeModal.confirm")),1)]),_:1},8,["loading"])])])]),_:1},8,["open"])])}}}),Oi={class:"flex h-full flex-col bg-white dark:bg-gray-900",style:{"padding-top":"var(--titlebar-area-height)"}},Bi={class:"relative flex-1 overflow-y-auto"},Ni={class:"h-full"},Ui={key:2,class:"flex h-full items-center justify-center"},Fi={class:"text-gray-500"},Ei={class:"flex h-full flex-col overflow-hidden bg-white dark:bg-gray-900"},Wi={class:"flex flex-none items-center justify-between border-b border-gray-200 px-5 py-3 dark:border-gray-700"},Ki={class:"text-lg font-semibold text-gray-900 dark:text-white"},Hi={class:"text-sm text-gray-500 dark:text-gray-400"},Gi={class:"flex-1 overflow-auto"},Ji=Y({__name:"index",setup(C){const a=Ne(()=>Ae(()=>import("./MessageExportModal-B60rvfCh.js"),__vite__mapDeps([0,1,2,3,4,5]))),{t:r}=X(),_=Le(),o=De(),p=Ee(),S=Pe(),w=We(),{currentSessionId:c}=Ke(p),P=O(!1),z=O(!1),q=O(!1),A=O(!1),f=O(!1),I=O(!1);function d(){S.openChatRecordDrawer({})}const x=[{id:"overview",labelKey:"analysis.tabs.overview",icon:"i-heroicons-chart-pie"},{id:"view",labelKey:"analysis.tabs.view",icon:"i-heroicons-presentation-chart-bar"},{id:"ai-chat",labelKey:"analysis.tabs.aiChat",icon:"i-heroicons-chat-bubble-left-ellipsis"},{id:"lab",labelKey:"analysis.tabs.lab",icon:"i-heroicons-beaker"}],V=T(()=>w.debugMode?[...x,{id:"debug",labelKey:"analysis.tabs.debug",icon:"i-heroicons-bug-ant"}]:x),{activeTab:$,isLoading:m,isInitialLoad:g,session:v,memberActivity:l,hourlyActivity:h,dailyActivity:L,messageTypes:U,timeRangeValue:F,fullTimeRange:ee,timeFilter:Q,selectedYearForOverview:N,initialTimeState:se,loadAnalysisData:be}=at({route:_,router:o,currentSessionId:c,selectSession:p.selectSession,defaultTab:w.defaultSessionTab,validTabIds:V.value.map(J=>J.id)}),he=T(()=>l.value.reduce((J,n)=>J+n.messageCount,0)),re=T(()=>l.value.filter(J=>J.messageCount>0).length),ce=T(()=>{if(!v.value||l.value.length===0)return null;if(v.value.ownerId){const n=l.value.find(b=>b.platformId!==v.value?.ownerId);if(n?.avatar)return n.avatar}const J=l.value.find(n=>n.name===v.value?.name);return J?.avatar?J.avatar:(l.value.length,null)});return(J,n)=>{const b=$e,j=Ce;return i(),u("div",Oi,[t(g)?(i(),D(me,{key:0,variant:"page",text:t(r)("analysis.privateChat.loading")},null,8,["text"])):t(v)?(i(),u(K,{key:1},[y(nt,{"active-tab":t($),"onUpdate:activeTab":n[0]||(n[0]=k=>ke($)?$.value=k:null),"time-range-value":t(F),"onUpdate:timeRangeValue":n[1]||(n[1]=k=>ke(F)?F.value=k:null),title:t(v).name,avatar:ce.value,icon:"i-heroicons-user","icon-class":"bg-pink-600 text-white dark:bg-pink-500 dark:text-white",tabs:V.value,"current-session-id":t(c),"initial-time-state":t(se),onOpenIncrementalImport:n[2]||(n[2]=k=>A.value=!0),onOpenMemberManagement:n[3]||(n[3]=k=>I.value=!0),onOpenChatRecord:d,"onUpdate:fullRange":n[4]||(n[4]=k=>ee.value=k)},null,8,["active-tab","time-range-value","title","avatar","tabs","current-session-id","initial-time-state"]),e("div",Bi,[t(m)?(i(),D(me,{key:0,variant:"overlay",text:t(r)("common.loading")},null,8,["text"])):M("",!0),e("div",Ni,[y(Se,{name:"tab-slide",mode:"out-in"},{default:E(()=>[t($)==="overview"?(i(),D(Ys,{key:"overview-"+t(c),session:t(v),"member-activity":t(l),"message-types":t(U),"hourly-activity":t(h),"daily-activity":t(L),"time-range":t(ee),"selected-year":t(N),"filtered-message-count":he.value,"filtered-member-count":re.value,"time-filter":t(Q)},null,8,["session","member-activity","message-types","hourly-activity","daily-activity","time-range","selected-year","filtered-message-count","filtered-member-count","time-filter"])):t($)==="view"?(i(),D(Zn,{key:"view-"+t(c),"session-id":t(c),"session-name":t(v).name,"time-filter":t(Q)},null,8,["session-id","session-name","time-filter"])):t($)==="ai-chat"?(i(),D(t(dt),{key:"ai-chat-"+t(c),"session-id":t(c),"session-name":t(v).name,"chat-type":"private"},null,8,["session-id","session-name"])):t($)==="memory"?(i(),D(ut,{key:"memory-"+t(c),"session-id":t(c),"session-name":t(v).name},null,8,["session-id","session-name"])):t($)==="lab"?(i(),D(mt,{key:"lab-"+t(c),"session-id":t(c),"session-name":t(v).name,"time-filter":t(Q),"chat-type":"private",mode:"sql-only"},null,8,["session-id","session-name","time-filter"])):t($)==="debug"?(i(),D(t(gt),{key:"debug-"+t(c),"session-id":t(c)},null,8,["session-id"])):M("",!0)]),_:1})])]),y(it,{onOpenIncrementalImport:n[5]||(n[5]=k=>A.value=!0),onOpenSessionIndex:n[6]||(n[6]=k=>P.value=!0),onOpenSemanticIndex:n[7]||(n[7]=k=>z.value=!0),onOpenMemberManagement:n[8]||(n[8]=k=>I.value=!0),onOpenChatRecord:d,onOpenMessageExport:n[9]||(n[9]=k=>f.value=!0)}),t(w).debugMode?(i(),D(pt,{key:0})):M("",!0)],64)):(i(),u("div",Ui,[e("p",Fi,s(t(r)("analysis.privateChat.loadError")),1)])),t(c)&&t(v)&&t(v).messageCount>0?(i(),D(lt,{key:3,modelValue:P.value,"onUpdate:modelValue":n[10]||(n[10]=k=>P.value=k),"session-id":t(c),"message-count":t(v).messageCount},null,8,["modelValue","session-id","message-count"])):M("",!0),t(c)&&t(v)?(i(),D(ot,{key:4,modelValue:z.value,"onUpdate:modelValue":n[11]||(n[11]=k=>z.value=k),"session-id":t(c),"message-count":t(v).messageCount},null,8,["modelValue","session-id","message-count"])):M("",!0),t(c)&&t(v)&&!P.value?(i(),D(rt,{key:5,modelValue:q.value,"onUpdate:modelValue":n[12]||(n[12]=k=>q.value=k),"session-id":t(c),"chat-type":"private","auto-check":""},null,8,["modelValue","session-id"])):M("",!0),t(c)&&t(v)?(i(),D(ct,{key:6,modelValue:A.value,"onUpdate:modelValue":n[13]||(n[13]=k=>A.value=k),"session-id":t(c),"session-name":t(v).name,onImported:n[14]||(n[14]=()=>{t(be)(),t(p).loadSessions()})},null,8,["modelValue","session-id","session-name"])):M("",!0),t(c)?(i(),D(t(a),{key:7,modelValue:f.value,"onUpdate:modelValue":n[15]||(n[15]=k=>f.value=k)},null,8,["modelValue"])):M("",!0),t(c)?(i(),D(j,{key:8,open:I.value,"onUpdate:open":n[17]||(n[17]=k=>I.value=k),ui:{content:"max-w-6xl h-[85vh]"}},{content:E(()=>[e("div",Ei,[e("div",Wi,[e("div",null,[e("h2",Ki,s(t(r)("analysis.tooltip.memberManagement")),1),e("p",Hi,s(t(r)("members.private.description",{count:t(v)?.memberCount??0})),1)]),y(b,{variant:"ghost",icon:"i-heroicons-x-mark",size:"sm",onClick:n[16]||(n[16]=k=>I.value=!1)})]),e("div",Gi,[y(zi,{"session-id":t(c),"show-header":!1},null,8,["session-id"])])])]),_:1},8,["open"])):M("",!0)])}}}),il=Ie(Ji,[["__scopeId","data-v-65159e91"]]);export{il as default};
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/MessageExportModal-Dd6R-cX_.js","assets/vendor-nuxt-ui-Zy8txNdC.js","assets/vendor-reka-ui-mMvma1EP.js","assets/index-D5UgZUpS.js","assets/vendor-snapdom-XnBoh1gd.js","assets/index-7E5GSvR2.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{_ as Ae}from"./vendor-snapdom-XnBoh1gd.js";import{a as te,k as je,b as $e,n as Re,D as Ve,g as Ce,u as Le,d as De}from"./vendor-nuxt-ui-Zy8txNdC.js";import{p as Y,w as Z,d as oe,F as ge,G as i,H as D,u as t,K as E,P as u,a5 as e,T as s,Z as K,a3 as G,Q as B,U as M,L as y,a0 as ae,h as T,b as O,_ as ze,O as Oe,bD as Se,R as ye,a9 as Be,i as ke,bI as Ne}from"./vendor-reka-ui-mMvma1EP.js";import{u as X,p as pe,T as Ue,k as Pe,j as le,r as Fe,_ as Ie,e as Ee,b as We,s as Ke}from"./index-D5UgZUpS.js";import{G as ie,c as me,d as Me,h as He,a as _e,i as we,j as Ge,u as Je,k as Ye,_ as Qe,n as Ze,o as Xe,p as et,q as tt,r as st,t as at,v as nt,w as it,x as lt,y as ot,z as rt,A as ct,C as dt,B as ut,D as mt,E as gt,F as pt}from"./DebugToolsPanel.vue_vue_type_script_setup_true_lang-CCz0Syxo.js";import"./vendor-echarts-wordcloud-B1kQMklB.js";import{u as xe,s as xt,j as ve,m as fe,n as ne,t as Te,p as qe,k as vt,v as ft}from"./vendor-echarts-CITQeskI.js";import"./index-tkbEq8av.js";import"./vendor-zrender-DFl4U2Oe.js";const bt={key:0,class:"relative z-10 flex flex-col h-full"},ht={class:"flex flex-col sm:flex-row items-center sm:items-start gap-6 px-6 pt-8 pb-4 sm:px-8"},yt={class:"w-full flex-1 min-w-0"},_t={class:"flex items-center gap-x-2 sm:gap-x-3 mb-6 sm:mb-8"},kt={class:"text-2xl sm:text-4xl font-black tracking-tight text-blue-600 dark:text-blue-400 truncate"},wt={class:"text-2xl sm:text-4xl font-black tracking-tight text-pink-600 dark:text-pink-400 truncate"},$t={class:"grid grid-cols-2 gap-4 sm:gap-10"},Ct={class:"text-[10px] font-bold uppercase tracking-widest text-gray-400 dark:text-gray-500"},St={class:"flex flex-col gap-2.5"},Pt=["title","onClick"],It={class:"shrink-0 text-[10px] sm:text-xs font-semibold tabular-nums text-gray-400/80"},Mt={key:0,class:"text-xs sm:text-sm font-medium text-gray-400"},Tt={class:"hidden shrink-0 sm:block"},qt={class:"px-6 pb-6 pt-2 sm:px-8 mt-auto"},At={class:"mb-3 flex items-center justify-between"},jt={class:"text-[10px] font-bold uppercase tracking-widest text-gray-400 dark:text-gray-500"},Rt={class:"grid grid-cols-1 sm:grid-cols-3 gap-4"},Vt={class:"mb-4 flex items-center gap-2.5"},Lt={class:"text-sm font-bold tracking-wide text-gray-900 dark:text-white"},Dt={class:"flex items-center justify-between mb-4 w-full"},zt={class:"flex flex-col flex-1 min-w-0"},Ot={class:"truncate text-[10px] font-bold uppercase tracking-wider text-gray-400 mb-1"},Bt={class:"flex flex-col flex-1 min-w-0 items-end text-right"},Nt={class:"truncate text-[10px] font-bold uppercase tracking-wider text-gray-400 mb-1"},Ut={class:"mt-auto pt-3 border-t border-gray-100 dark:border-white/5 flex flex-col"},Ft={key:0,class:"flex items-start justify-between gap-2 mb-2 min-h-[24px]"},Et={class:"flex flex-1 flex-nowrap overflow-hidden gap-1"},Wt={key:0,class:"text-[11px] text-gray-400"},Kt={class:"flex flex-1 flex-nowrap overflow-hidden gap-1 justify-end"},Ht={key:0,class:"text-[11px] text-gray-400"},Gt={key:1,class:"flex flex-nowrap overflow-hidden items-center gap-x-1.5 mb-2 min-h-[24px]"},Jt=["onClick"],Yt={key:0,class:"shrink-0 text-gray-300 dark:text-gray-600 font-normal"},Qt={key:0,class:"text-[11px] text-gray-400"},Zt={class:"text-[10px] leading-relaxed text-gray-500 dark:text-gray-400"},Xt={class:"flex items-center justify-between px-6 pb-4 opacity-40 mix-blend-luminosity dark:opacity-30 sm:px-8 sm:pb-5"},es={class:"flex items-center gap-1.5"},ts={class:"text-[9px] font-medium uppercase tracking-widest"},ss=Y({__name:"LanguagePreferenceCard",props:{data:{}},emits:["wordClick"],setup(C,{emit:a}){xe([xt,ve,fe]);const{t:r}=X(),_=pe(),o=C,p=a,S=T(()=>o.data.members[0]),w=T(()=>o.data.members[1]);function c(m,g){return m.length<=g?m:m.slice(0,g)+"…"}function P(m){const g=m.posDistribution,v=g.noun+g.verb+g.adjective+g.adverb+g.modalParticle+g.interjection+g.other;return v===0?r("quotes.languagePreference.pos.styleBalanced"):g.noun/v>.5?r("quotes.languagePreference.pos.styleEncyclopedia"):g.verb/v>.45?r("quotes.languagePreference.pos.styleAction"):g.adjective/v>.3?r("quotes.languagePreference.pos.styleExpressive"):r("quotes.languagePreference.pos.styleBalanced")}function z(m){const v=[["ellipsis",m.ellipsis],["exclamation",m.exclamation],["question",m.question],["tilde",m.tilde],["noPunct",m.noPunct],["period",m.period]].reduce((h,L)=>h[1]>=L[1]?h:L);return{ellipsis:r("quotes.languagePreference.punctuation.personalityDeep"),exclamation:r("quotes.languagePreference.punctuation.personalityPassionate"),question:r("quotes.languagePreference.punctuation.personalityCurious"),tilde:r("quotes.languagePreference.punctuation.personalityCheerful"),noPunct:r("quotes.languagePreference.punctuation.personalityFreeflow"),period:r("quotes.languagePreference.punctuation.personalityPrecise")}[v[0]]||"-"}function q(m,g=5){return[["...",m.ellipsis],["!",m.exclamation],["?",m.question],["~",m.tilde],["。",m.period]].filter(([,l])=>l>0).sort((l,h)=>h[1]-l[1]).slice(0,g).map(([l])=>l)}const A=["#6366f1","#ec4899","#f97316","#22c55e","#3b82f6","#8b5cf6","#14b8a6","#f43f5e","#eab308","#06b6d4"],f=T(()=>{const m=S.value,g=w.value;if(!m||!g)return[];const v=o.data.sharedWords.slice(0,6).map((l,h)=>({word:l.word,color:A[h%A.length]}));return[{icon:"i-heroicons-book-open",iconBgClass:"bg-blue-100 dark:bg-blue-500/20",iconColorClass:"text-blue-600 dark:text-blue-400",title:r("quotes.languagePreference.card.diversityTitle"),leftName:m.name,leftValue:`${m.lexicalDiversity}%`,rightName:g.name,rightValue:`${g.lexicalDiversity}%`,valueClass:"text-lg text-blue-600 dark:text-blue-400",detail:{kind:"tags-single",tags:v},desc:r("quotes.languagePreference.card.diversityDesc")},{icon:"i-heroicons-sparkles",iconBgClass:"bg-violet-100 dark:bg-violet-500/20",iconColorClass:"text-violet-600 dark:text-violet-400",title:r("quotes.languagePreference.card.styleTitle"),leftName:m.name,leftValue:P(m),rightName:g.name,rightValue:P(g),valueClass:"text-xs text-violet-600 dark:text-violet-400",detail:{kind:"tags-vs",leftTags:m.modalParticles.slice(0,4).map(l=>l.word),rightTags:g.modalParticles.slice(0,4).map(l=>l.word)},desc:r("quotes.languagePreference.card.styleDesc")},{icon:"i-heroicons-finger-print",iconBgClass:"bg-orange-100 dark:bg-orange-500/20",iconColorClass:"text-orange-600 dark:text-orange-400",title:r("quotes.languagePreference.card.punctTitle"),leftName:m.name,leftValue:z(m.punctuation),rightName:g.name,rightValue:z(g.punctuation),valueClass:"text-xs text-orange-600 dark:text-orange-400",detail:{kind:"tags-vs",leftTags:q(m.punctuation,4),rightTags:q(g.punctuation,4)},desc:r("quotes.languagePreference.card.punctDesc")}]}),I=O(null);let d=null;function x(){I.value&&(d=ne(I.value,void 0,{renderer:"canvas"}),V())}function V(){if(!d||!S.value||!w.value)return;const m=S.value.posDistribution,g=w.value.posDistribution,v=[{name:r("quotes.languagePreference.card.radarFactual"),max:0},{name:r("quotes.languagePreference.card.radarActive"),max:0},{name:r("quotes.languagePreference.card.radarDescriptive"),max:0},{name:r("quotes.languagePreference.card.radarAffable"),max:0},{name:r("quotes.languagePreference.card.radarIntense"),max:0}],l=[m.noun,m.verb,m.adjective,m.modalParticle+m.interjection,m.adverb],h=[g.noun,g.verb,g.adjective,g.modalParticle+g.interjection,g.adverb];for(let U=0;U<v.length;U++)v[U].max=Math.max(l[U],h[U],1)*1.3;const L=_.value?"#9ca3af":"#6b7280";d.setOption({backgroundColor:"transparent",tooltip:{trigger:"item"},legend:{bottom:0,itemWidth:10,itemHeight:10,textStyle:{fontSize:10,color:L},data:[S.value.name,w.value.name]},radar:{indicator:v,radius:"60%",center:["50%","50%"],splitArea:{areaStyle:{color:_.value?["rgba(255,255,255,0.02)","rgba(255,255,255,0.04)"]:["rgba(0,0,0,0.01)","rgba(0,0,0,0.03)"]}},axisName:{color:L,fontSize:10},splitLine:{lineStyle:{color:_.value?"rgba(255,255,255,0.08)":"rgba(0,0,0,0.06)"}},axisLine:{lineStyle:{color:_.value?"rgba(255,255,255,0.1)":"rgba(0,0,0,0.08)"}}},series:[{type:"radar",data:[{value:l,name:S.value.name,lineStyle:{color:"#3b82f6",width:2},areaStyle:{color:"rgba(59,130,246,0.15)"},itemStyle:{color:"#3b82f6"},symbol:"circle",symbolSize:4},{value:h,name:w.value.name,lineStyle:{color:"#ec4899",width:2},areaStyle:{color:"rgba(236,72,153,0.15)"},itemStyle:{color:"#ec4899"},symbol:"circle",symbolSize:4}]}]},{notMerge:!0})}function $(){d?.resize()}return Z(()=>o.data,()=>V(),{deep:!0}),Z(_,()=>{d?.dispose(),x()}),oe(()=>{x(),window.addEventListener("resize",$)}),ge(()=>{window.removeEventListener("resize",$),d?.dispose()}),(m,g)=>{const v=te;return i(),D(t(ie),{variant:"elevated",decorative:"",class:"flex flex-col"},{default:E(()=>[S.value&&w.value?(i(),u("div",bt,[e("div",ht,[e("div",yt,[e("div",_t,[e("span",kt,s(S.value.name),1),g[0]||(g[0]=e("span",{class:"text-sm sm:text-lg font-black text-gray-300 dark:text-gray-600 italic px-1 sm:px-2 shrink-0"}," VS ",-1)),e("span",wt,s(w.value.name),1)]),e("div",$t,[(i(!0),u(K,null,G([S.value,w.value],(l,h)=>(i(),u("div",{key:l.memberId,class:"flex flex-col gap-3"},[e("div",Ct,s(t(r)("quotes.languagePreference.card.topCatchphrases")),1),e("div",St,[(i(!0),u(K,null,G(l.catchphrases.slice(0,3),(L,U)=>(i(),u("div",{key:U,class:"flex items-center gap-2 group"},[e("span",{class:B(["text-xs sm:text-sm font-black font-mono opacity-40 transition-opacity group-hover:opacity-100",h===0?"text-blue-600 dark:text-blue-400":"text-pink-600 dark:text-pink-400"])}," #"+s(U+1),3),e("span",{class:"truncate text-sm sm:text-base font-bold text-gray-700 dark:text-gray-200 cursor-pointer hover:opacity-70 transition-opacity",title:L.content,onClick:F=>p("wordClick",L.content)}," 「"+s(c(L.content,12))+"」 ",9,Pt),e("span",It," ×"+s(L.count),1)]))),128)),l.catchphrases.length===0?(i(),u("div",Mt,"-")):M("",!0)])]))),128))])]),e("div",Tt,[e("div",{ref_key:"radarRef",ref:I,style:{width:"250px",height:"230px"},class:"-mt-4 sm:-mr-4"},null,512)])]),e("div",qt,[e("div",At,[e("span",jt,s(t(r)("quotes.languagePreference.card.languageProfiles")),1)]),e("div",Rt,[(i(!0),u(K,null,G(f.value,l=>(i(),u("div",{key:l.title,class:"flex flex-col rounded-xl bg-white/60 p-4 ring-1 ring-gray-900/5 backdrop-blur-sm dark:bg-white/5 dark:ring-white/10"},[e("div",Vt,[e("div",{class:B(["flex h-8 w-8 shrink-0 items-center justify-center rounded-lg",l.iconBgClass])},[y(v,{name:l.icon,class:B(["h-4 w-4",l.iconColorClass])},null,8,["name","class"])],2),e("span",Lt,s(l.title),1)]),e("div",Dt,[e("div",zt,[e("span",Ot,s(l.leftName),1),e("span",{class:B(["truncate text-xl font-black font-mono leading-none",l.valueClass])},s(l.leftValue),3)]),g[1]||(g[1]=e("div",{class:"px-2 shrink-0"},[e("span",{class:"text-[10px] font-black text-gray-300 dark:text-gray-600 italic"},"VS")],-1)),e("div",Bt,[e("span",Nt,s(l.rightName),1),e("span",{class:B(["truncate text-xl font-black font-mono leading-none",l.valueClass])},s(l.rightValue),3)])]),e("div",Ut,[l.detail.kind==="tags-vs"?(i(),u("div",Ft,[e("div",Et,[(i(!0),u(K,null,G(l.detail.leftTags,h=>(i(),u("span",{key:h,class:"shrink-0 px-1.5 py-0.5 rounded-md text-[10px] font-semibold font-mono bg-blue-50 text-blue-600 dark:bg-blue-500/10 dark:text-blue-400"},s(h),1))),128)),l.detail.leftTags.length===0?(i(),u("span",Wt,"-")):M("",!0)]),e("div",Kt,[(i(!0),u(K,null,G(l.detail.rightTags,h=>(i(),u("span",{key:h,class:"shrink-0 px-1.5 py-0.5 rounded-md text-[10px] font-semibold font-mono bg-pink-50 text-pink-600 dark:bg-pink-500/10 dark:text-pink-400"},s(h),1))),128)),l.detail.rightTags.length===0?(i(),u("span",Ht,"-")):M("",!0)])])):l.detail.kind==="tags-single"?(i(),u("div",Gt,[(i(!0),u(K,null,G(l.detail.tags.slice(0,6),(h,L)=>(i(),u(K,{key:h.word},[e("span",{class:"shrink-0 cursor-pointer text-[11px] font-bold transition-opacity hover:opacity-80",style:ae({color:h.color}),onClick:U=>p("wordClick",h.word)},s(h.word),13,Jt),L<l.detail.tags.slice(0,6).length-1?(i(),u("span",Yt," · ")):M("",!0)],64))),128)),l.detail.tags.length===0?(i(),u("span",Qt,"-")):M("",!0)])):M("",!0),e("p",Zt,s(l.desc),1)])]))),128))])]),e("div",Xt,[e("div",es,[y(v,{name:"i-heroicons-chat-bubble-left-right-solid",class:"h-3.5 w-3.5"}),g[2]||(g[2]=e("span",{class:"text-[10px] font-bold uppercase tracking-wider"},"ChatLab",-1))]),e("span",ts,s(t(r)("quotes.languagePreference.card.watermark")),1)])])):M("",!0)]),_:1})}}}),as={class:"px-5 py-4 sm:px-6"},ns={class:"mb-4 flex items-center justify-between"},is={class:"flex items-center gap-2"},ls={class:"text-[15px] font-black tracking-tight text-gray-900 dark:text-white"},os={key:0,class:"rounded-full bg-pink-100 px-2 py-0.5 text-[10px] font-bold text-pink-600 dark:bg-pink-900/30 dark:text-pink-400"},rs={key:0,class:"grid grid-cols-2 gap-6"},cs={class:"mb-3 text-center"},ds={class:"text-sm font-semibold text-blue-600 dark:text-blue-400"},us={class:"flex flex-wrap gap-2"},ms=["title","onClick"],gs={class:"text-[10px] font-semibold opacity-60"},ps={class:"mb-3 text-center"},xs={class:"text-sm font-semibold text-pink-600 dark:text-pink-400"},vs={class:"flex flex-wrap gap-2"},fs=["title","onClick"],bs={class:"text-[10px] font-semibold opacity-60"},hs={class:"mt-4 text-center text-xs text-gray-500 dark:text-gray-400"},ys=Y({__name:"CatchphrasePKSection",props:{members:{}},emits:["wordClick"],setup(C,{emit:a}){const{t:r}=X(),_=C,o=a,p=O(20),S=[{label:"10",value:10},{label:"20",value:20},{label:"30",value:30}],w=T(()=>_.members[0]),c=T(()=>_.members[1]),P=T(()=>w.value?.catchphrases.slice(0,p.value)??[]),z=T(()=>c.value?.catchphrases.slice(0,p.value)??[]),q=T(()=>{if(!w.value||!c.value)return new Set;const d=new Set(w.value.catchphrases.map(V=>V.content)),x=new Set(c.value.catchphrases.map(V=>V.content));return new Set([...d].filter(V=>x.has(V)))}),A=[{bg:"bg-amber-50 text-amber-600 ring-1 ring-amber-500/20 dark:bg-amber-500/10 dark:text-amber-400 dark:ring-amber-500/30",text:"text-amber-700 dark:text-amber-400 font-bold",badge:"bg-amber-500 text-white dark:bg-amber-600"},{bg:"bg-slate-50 text-slate-600 ring-1 ring-slate-500/20 dark:bg-slate-500/10 dark:text-slate-400 dark:ring-slate-500/30",text:"text-slate-700 dark:text-slate-300 font-bold",badge:"bg-slate-400 text-white dark:bg-slate-500"},{bg:"bg-orange-50 text-orange-600 ring-1 ring-orange-500/20 dark:bg-orange-500/10 dark:text-orange-400 dark:ring-orange-500/30",text:"text-orange-700 dark:text-orange-400 font-bold",badge:"bg-orange-400 text-white dark:bg-orange-500"}];function f(d){return d<A.length?A[d]:{bg:"bg-gray-50/50 text-gray-600 ring-1 ring-gray-900/5 dark:bg-gray-800/30 dark:text-gray-400 dark:ring-white/10",text:"text-gray-600 dark:text-gray-400",badge:"bg-transparent text-gray-400"}}function I(d,x=20){return d.length<=x?d:d.slice(0,x)+"..."}return(d,x)=>{const V=te;return i(),D(t(ie),{variant:"section"},{default:E(()=>[e("div",as,[e("div",ns,[e("div",is,[y(V,{name:"i-heroicons-chat-bubble-bottom-center-text",class:"h-4 w-4 text-indigo-500"}),e("span",ls,s(t(r)("quotes.languagePreference.catchphrasePK.title")),1),q.value.size>0?(i(),u("span",os,s(t(r)("quotes.languagePreference.catchphrasePK.sharedCount",{count:q.value.size})),1)):M("",!0)]),y(t(Ue),{modelValue:p.value,"onUpdate:modelValue":x[0]||(x[0]=$=>p.value=$),size:"xs",items:S},null,8,["modelValue"])]),w.value&&c.value?(i(),u("div",rs,[e("div",null,[e("div",cs,[e("span",ds,s(w.value.name),1)]),e("div",us,[(i(!0),u(K,null,G(P.value,($,m)=>(i(),u("div",{key:$.content,class:B(["inline-flex cursor-pointer items-center gap-1.5 rounded-full px-3 py-1 transition-opacity hover:opacity-75",[q.value.has($.content)?"bg-pink-50 text-pink-600 ring-1 ring-pink-500/20 dark:bg-pink-500/10 dark:text-pink-400 dark:ring-pink-500/30 shadow-sm":f(m).bg]]),title:$.content,onClick:g=>o("wordClick",$.content)},[m<3?(i(),u("span",{key:0,class:B(["flex h-4 w-4 shrink-0 items-center justify-center rounded-full text-[10px] font-bold",f(m).badge])},s(m+1),3)):M("",!0),e("span",{class:B(["text-[13px] font-medium",q.value.has($.content)?"font-bold":f(m).text])},s(I($.content)),3),e("span",gs,"×"+s($.count),1)],10,ms))),128))])]),e("div",null,[e("div",ps,[e("span",xs,s(c.value.name),1)]),e("div",vs,[(i(!0),u(K,null,G(z.value,($,m)=>(i(),u("div",{key:$.content,class:B(["inline-flex cursor-pointer items-center gap-1.5 rounded-full px-3 py-1 transition-opacity hover:opacity-75",[q.value.has($.content)?"bg-pink-50 text-pink-600 ring-1 ring-pink-500/20 dark:bg-pink-500/10 dark:text-pink-400 dark:ring-pink-500/30 shadow-sm":f(m).bg]]),title:$.content,onClick:g=>o("wordClick",$.content)},[m<3?(i(),u("span",{key:0,class:B(["flex h-4 w-4 shrink-0 items-center justify-center rounded-full text-[10px] font-bold",f(m).badge])},s(m+1),3)):M("",!0),e("span",{class:B(["text-[13px] font-medium",q.value.has($.content)?"font-bold":f(m).text])},s(I($.content)),3),e("span",bs,"×"+s($.count),1)],10,fs))),128))])])])):M("",!0),e("p",hs,s(t(r)("quotes.languagePreference.catchphrasePK.hint")),1)])]),_:1})}}}),_s={class:"px-5 py-4 sm:px-6"},ks={class:"mb-4 flex items-center gap-2"},ws={class:"text-[15px] font-black tracking-tight text-gray-900 dark:text-white"},$s={class:"flex flex-col gap-4 lg:flex-row lg:gap-6"},Cs={class:"flex-1"},Ss={key:0,class:"flex shrink-0 flex-col gap-3 lg:w-48"},Ps={class:"min-w-0"},Is={class:"truncate text-xs font-semibold text-gray-500 dark:text-gray-400"},Ms=Y({__name:"PosPortraitSection",props:{members:{}},setup(C){xe([Te,qe,ve,vt,fe]);const{t:a}=X(),r=pe(),_=C,o=T(()=>_.members[0]),p=T(()=>_.members[1]);function S(A){const f=A.posDistribution,I=f.noun+f.verb+f.adjective+f.adverb+f.modalParticle+f.interjection+f.other;if(I===0)return{label:a("quotes.languagePreference.pos.styleBalanced"),icon:"i-heroicons-scale-solid",colorClass:"text-cyan-600 dark:text-cyan-400"};const d=f.noun/I,x=f.verb/I,V=f.adjective/I;return d>.5?{label:a("quotes.languagePreference.pos.styleEncyclopedia"),icon:"i-heroicons-book-open-solid",colorClass:"text-indigo-600 dark:text-indigo-400"}:x>.45?{label:a("quotes.languagePreference.pos.styleAction"),icon:"i-heroicons-rocket-launch-solid",colorClass:"text-orange-600 dark:text-orange-400"}:V>.3?{label:a("quotes.languagePreference.pos.styleExpressive"),icon:"i-heroicons-paint-brush-solid",colorClass:"text-pink-600 dark:text-pink-400"}:{label:a("quotes.languagePreference.pos.styleBalanced"),icon:"i-heroicons-scale-solid",colorClass:"text-cyan-600 dark:text-cyan-400"}}const w=O(null);let c=null;function P(){w.value&&(c=ne(w.value,void 0,{renderer:"canvas"}),z())}function z(){if(!c||!o.value||!p.value)return;const A=o.value.posDistribution,f=p.value.posDistribution,I=[a("quotes.languagePreference.card.radarNoun"),a("quotes.languagePreference.card.radarVerb"),a("quotes.languagePreference.card.radarAdj"),a("quotes.languagePreference.card.radarModal"),a("quotes.languagePreference.card.radarAdv")],d=[A.noun,A.verb,A.adjective,A.modalParticle+A.interjection,A.adverb],x=[f.noun,f.verb,f.adjective,f.modalParticle+f.interjection,f.adverb],V=r.value?"#9ca3af":"#6b7280";c.setOption({backgroundColor:"transparent",tooltip:{trigger:"axis",axisPointer:{type:"shadow"}},legend:{data:[o.value.name,p.value.name],top:0,textStyle:{fontSize:11,color:V}},grid:{left:80,right:20,top:36,bottom:10},xAxis:{type:"value",show:!1},yAxis:{type:"category",data:I,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{fontSize:11,color:V}},series:[{name:o.value.name,type:"bar",data:d,itemStyle:{color:"#3b82f6",borderRadius:[0,4,4,0]},barGap:"20%",barCategoryGap:"40%"},{name:p.value.name,type:"bar",data:x,itemStyle:{color:"#ec4899",borderRadius:[0,4,4,0]}}]},{notMerge:!0})}function q(){c?.resize()}return Z(()=>_.members,()=>z(),{deep:!0}),Z(r,()=>{c?.dispose(),P()}),oe(()=>{P(),window.addEventListener("resize",q)}),ge(()=>{window.removeEventListener("resize",q),c?.dispose()}),(A,f)=>{const I=te;return i(),D(t(ie),{variant:"section"},{default:E(()=>[e("div",_s,[e("div",ks,[y(I,{name:"i-heroicons-chart-bar",class:"h-4 w-4 text-violet-500"}),e("span",ws,s(t(a)("quotes.languagePreference.pos.title")),1)]),e("div",$s,[e("div",Cs,[e("div",{ref_key:"chartRef",ref:w,style:{width:"100%",height:"220px"}},null,512)]),o.value&&p.value?(i(),u("div",Ss,[(i(!0),u(K,null,G([o.value,p.value],d=>(i(),u("div",{key:d.memberId,class:"flex items-center gap-3 rounded-xl bg-white/60 p-3 ring-1 ring-gray-900/5 backdrop-blur-sm dark:bg-white/5 dark:ring-white/10"},[y(I,{name:S(d).icon,class:B(["h-5 w-5 shrink-0",S(d).colorClass])},null,8,["name","class"]),e("div",Ps,[e("div",Is,s(d.name),1),e("div",{class:B(["truncate text-sm font-bold",S(d).colorClass])},s(S(d).label),3)])]))),128))])):M("",!0)])])]),_:1})}}}),Ts={class:"px-5 py-4 sm:px-6"},qs={class:"mb-4 flex items-center gap-2"},As={class:"text-[15px] font-black tracking-tight text-gray-900 dark:text-white"},js={key:0,class:"grid grid-cols-1 gap-6 md:grid-cols-2"},Rs={class:"mb-2 flex items-center justify-between"},Vs={key:1,class:"flex h-[200px] items-center justify-center text-sm text-gray-400"},Ls=Y({__name:"ModalParticleSection",props:{members:{}},setup(C){xe([Te,qe,ve,fe]);const{t:a}=X(),r=pe(),_=C,o=T(()=>_.members[0]),p=T(()=>_.members[1]),S=new Set(["呀","哒","滴","啦","哇","耶"]),w=new Set(["呢","吗","嘛"]),c=new Set(["吧","喔","噢","嘛"]),P=new Set(["嗯","哦","额","呃"]);function z($){const m={label:a("quotes.languagePreference.modal.toneMixed"),colorClass:"bg-gray-50 text-gray-600 ring-1 ring-gray-900/5 dark:bg-gray-800/50 dark:text-gray-400 dark:ring-white/10"};if($.modalParticles.length===0)return m;let g=0,v=0,l=0,h=0,L=0;for(const F of $.modalParticles)L+=F.count,S.has(F.word)&&(g+=F.count),w.has(F.word)&&(v+=F.count),c.has(F.word)&&(l+=F.count),P.has(F.word)&&(h+=F.count);if(L===0)return m;const U=Math.max(g,v,l,h);return U===g&&g/L>.3?{label:a("quotes.languagePreference.modal.toneSoft"),colorClass:"bg-pink-50 text-pink-600 ring-1 ring-pink-500/20 dark:bg-pink-500/10 dark:text-pink-400 dark:ring-pink-500/30"}:U===v&&v/L>.3?{label:a("quotes.languagePreference.modal.toneCurious"),colorClass:"bg-violet-50 text-violet-600 ring-1 ring-violet-500/20 dark:bg-violet-500/10 dark:text-violet-400 dark:ring-violet-500/30"}:U===l&&l/L>.3?{label:a("quotes.languagePreference.modal.toneCasual"),colorClass:"bg-emerald-50 text-emerald-600 ring-1 ring-emerald-500/20 dark:bg-emerald-500/10 dark:text-emerald-400 dark:ring-emerald-500/30"}:U===h&&h/L>.3?{label:a("quotes.languagePreference.modal.toneCalm"),colorClass:"bg-blue-50 text-blue-600 ring-1 ring-blue-500/20 dark:bg-blue-500/10 dark:text-blue-400 dark:ring-blue-500/30"}:m}const q=O(null),A=O(null);let f=null,I=null;function d($,m){const g=$.modalParticles.slice(0,8),v=r.value?"#9ca3af":"#6b7280";return{backgroundColor:"transparent",tooltip:{trigger:"axis",axisPointer:{type:"shadow"}},grid:{left:40,right:20,top:4,bottom:4},xAxis:{type:"value",show:!1},yAxis:{type:"category",data:g.map(l=>l.word).reverse(),axisLine:{show:!1},axisTick:{show:!1},axisLabel:{fontSize:12,color:v},inverse:!1},series:[{type:"bar",data:g.map(l=>l.count).reverse(),itemStyle:{color:m,borderRadius:[0,4,4,0]},barWidth:"50%",label:{show:!0,position:"right",fontSize:10,color:v,formatter:"{c}"}}]}}function x(){q.value&&o.value&&(f=ne(q.value,void 0,{renderer:"canvas"}),f.setOption(d(o.value,"#3b82f6"),{notMerge:!0})),A.value&&p.value&&(I=ne(A.value,void 0,{renderer:"canvas"}),I.setOption(d(p.value,"#ec4899"),{notMerge:!0}))}function V(){f?.resize(),I?.resize()}return Z(()=>_.members,()=>{f&&o.value&&f.setOption(d(o.value,"#3b82f6"),{notMerge:!0}),I&&p.value&&I.setOption(d(p.value,"#ec4899"),{notMerge:!0})},{deep:!0}),Z(r,()=>{f?.dispose(),I?.dispose(),x()}),oe(()=>{x(),window.addEventListener("resize",V)}),ge(()=>{window.removeEventListener("resize",V),f?.dispose(),I?.dispose()}),($,m)=>{const g=te;return i(),D(t(ie),{variant:"section"},{default:E(()=>[e("div",Ts,[e("div",qs,[y(g,{name:"i-heroicons-chat-bubble-oval-left-ellipsis",class:"h-4 w-4 text-pink-500"}),e("span",As,s(t(a)("quotes.languagePreference.modal.title")),1)]),o.value&&p.value?(i(),u("div",js,[(i(!0),u(K,null,G([o.value,p.value],(v,l)=>(i(),u("div",{key:v.memberId},[e("div",Rs,[e("span",{class:B(["text-sm font-semibold",l===0?"text-blue-600 dark:text-blue-400":"text-pink-600 dark:text-pink-400"])},s(v.name),3),e("span",{class:B(["rounded-full px-2 py-0.5 text-[10px] font-bold",z(v).colorClass])},s(z(v).label),3)]),v.modalParticles.length>0?(i(),u("div",{key:0,ref_for:!0,ref:h=>{l===0?q.value=h:A.value=h},style:{width:"100%",height:"200px"}},null,512)):(i(),u("div",Vs,s(t(a)("quotes.languagePreference.modal.empty")),1))]))),128))])):M("",!0)])]),_:1})}}}),Ds={class:"px-5 py-4 sm:px-6"},zs={class:"mb-4 flex items-center gap-2"},Os={class:"text-[15px] font-black tracking-tight text-gray-900 dark:text-white"},Bs={key:0,class:"grid grid-cols-1 gap-6 md:grid-cols-2"},Ns={class:"mb-2 flex items-center gap-2"},Us={key:1,class:"flex h-[200px] items-center justify-center text-sm text-gray-400"},Fs=Y({__name:"PunctuationSection",props:{members:{}},setup(C){xe([ft,ve,fe]);const{t:a}=X(),r=pe(),_=C,o=T(()=>_.members[0]),p=T(()=>_.members[1]),S=["#6366f1","#ec4899","#f97316","#22c55e","#06b6d4","#8b5cf6"];function w(x){const $=[["ellipsis",x.ellipsis],["exclamation",x.exclamation],["question",x.question],["tilde",x.tilde],["noPunct",x.noPunct],["period",x.period]].reduce((g,v)=>g[1]>=v[1]?g:v);return{ellipsis:{label:a("quotes.languagePreference.punctuation.personalityDeep"),colorClass:"bg-indigo-50 text-indigo-600 ring-1 ring-indigo-500/20 dark:bg-indigo-500/10 dark:text-indigo-400 dark:ring-indigo-500/30"},exclamation:{label:a("quotes.languagePreference.punctuation.personalityPassionate"),colorClass:"bg-rose-50 text-rose-600 ring-1 ring-rose-500/20 dark:bg-rose-500/10 dark:text-rose-400 dark:ring-rose-500/30"},question:{label:a("quotes.languagePreference.punctuation.personalityCurious"),colorClass:"bg-amber-50 text-amber-600 ring-1 ring-amber-500/20 dark:bg-amber-500/10 dark:text-amber-400 dark:ring-amber-500/30"},tilde:{label:a("quotes.languagePreference.punctuation.personalityCheerful"),colorClass:"bg-pink-50 text-pink-600 ring-1 ring-pink-500/20 dark:bg-pink-500/10 dark:text-pink-400 dark:ring-pink-500/30"},noPunct:{label:a("quotes.languagePreference.punctuation.personalityFreeflow"),colorClass:"bg-emerald-50 text-emerald-600 ring-1 ring-emerald-500/20 dark:bg-emerald-500/10 dark:text-emerald-400 dark:ring-emerald-500/30"},period:{label:a("quotes.languagePreference.punctuation.personalityPrecise"),colorClass:"bg-blue-50 text-blue-600 ring-1 ring-blue-500/20 dark:bg-blue-500/10 dark:text-blue-400 dark:ring-blue-500/30"}}[$[0]]||{label:"-",colorClass:"bg-gray-50 text-gray-600 ring-1 ring-gray-900/5 dark:bg-gray-800/50 dark:text-gray-400 dark:ring-white/10"}}function c(x){return[{name:"...",value:x.ellipsis},{name:"!",value:x.exclamation},{name:"?",value:x.question},{name:"~",value:x.tilde},{name:"。",value:x.period},{name:a("quotes.languagePreference.punctuation.none"),value:x.noPunct}].filter(V=>V.value>0)}const P=O(null),z=O(null);let q=null,A=null;function f(x){return{backgroundColor:"transparent",tooltip:{trigger:"item",formatter:"{b}: {c} ({d}%)"},series:[{type:"pie",radius:["45%","75%"],center:["50%","50%"],avoidLabelOverlap:!1,padAngle:2,itemStyle:{borderRadius:4},label:{show:!0,fontSize:10,color:r.value?"#9ca3af":"#6b7280",formatter:"{b}"},emphasis:{label:{show:!0,fontWeight:"bold"},scaleSize:4},data:x.map((V,$)=>({...V,itemStyle:{color:S[$%S.length]}}))}]}}function I(){P.value&&o.value&&(q=ne(P.value,void 0,{renderer:"canvas"}),q.setOption(f(c(o.value.punctuation)),{notMerge:!0})),z.value&&p.value&&(A=ne(z.value,void 0,{renderer:"canvas"}),A.setOption(f(c(p.value.punctuation)),{notMerge:!0}))}function d(){q?.resize(),A?.resize()}return Z(()=>_.members,()=>{q&&o.value&&q.setOption(f(c(o.value.punctuation)),{notMerge:!0}),A&&p.value&&A.setOption(f(c(p.value.punctuation)),{notMerge:!0})},{deep:!0}),Z(r,()=>{q?.dispose(),A?.dispose(),I()}),oe(()=>{I(),window.addEventListener("resize",d)}),ge(()=>{window.removeEventListener("resize",d),q?.dispose(),A?.dispose()}),(x,V)=>{const $=te;return i(),D(t(ie),{variant:"section"},{default:E(()=>[e("div",Ds,[e("div",zs,[y($,{name:"i-heroicons-ellipsis-horizontal",class:"h-4 w-4 text-orange-500"}),e("span",Os,s(t(a)("quotes.languagePreference.punctuation.title")),1)]),o.value&&p.value?(i(),u("div",Bs,[(i(!0),u(K,null,G([o.value,p.value],(m,g)=>(i(),u("div",{key:m.memberId,class:"flex flex-col items-center"},[e("div",Ns,[e("span",{class:B(["text-sm font-semibold",g===0?"text-blue-600 dark:text-blue-400":"text-pink-600 dark:text-pink-400"])},s(m.name),3),e("span",{class:B(["rounded-full px-2 py-0.5 text-[10px] font-bold",w(m.punctuation).colorClass])},s(w(m.punctuation).label),3)]),m.punctuation.total>0?(i(),u("div",{key:0,ref_for:!0,ref:v=>{g===0?P.value=v:z.value=v},style:{width:"100%",height:"200px"}},null,512)):(i(),u("div",Us,s(t(a)("quotes.languagePreference.punctuation.empty")),1))]))),128))])):M("",!0)])]),_:1})}}}),Es={class:"main-content mx-auto max-w-[920px] space-y-6 p-6"},Ws=Y({__name:"LanguagePreferenceTab",props:{sessionId:{},timeFilter:{}},setup(C){const{t:a,locale:r}=X(),_=Pe(),o=C,p=O(null),S=O(!1),w=T(()=>p.value&&p.value.members.length>=2);async function c(){if(o.sessionId){S.value=!0;try{p.value=await le().getLanguagePreferenceAnalysis(o.sessionId,r.value,o.timeFilter)}catch(z){console.error("[LanguagePreferenceTab] Failed to load:",z)}finally{S.value=!1}}}function P(z){_.openChatRecordDrawer({keywords:[z]})}return Z(()=>[o.sessionId,o.timeFilter],()=>c(),{immediate:!0,deep:!0}),(z,q)=>(i(),u("div",Es,[S.value?(i(),D(t(me),{key:0,text:t(a)("quotes.languagePreference.loading")},null,8,["text"])):w.value?p.value?(i(),u(K,{key:2},[y(ss,{data:p.value,onWordClick:P},null,8,["data"]),y(ys,{members:p.value.members,onWordClick:P},null,8,["members"]),y(Ms,{members:p.value.members},null,8,["members"]),y(Ls,{members:p.value.members},null,8,["members"]),y(Fs,{members:p.value.members},null,8,["members"])],64)):M("",!0):(i(),D(t(Me),{key:1,text:t(a)("quotes.languagePreference.empty")},null,8,["text"]))]))}}),Ks={class:"main-content mx-auto max-w-[920px] space-y-6 p-6"},Hs={class:"grid grid-cols-1 gap-6 lg:grid-cols-2"},Gs={class:"p-5"},Js={class:"p-5"},Ys=Y({__name:"OverviewTab",props:{session:{},memberActivity:{},messageTypes:{},hourlyActivity:{},dailyActivity:{},timeRange:{},selectedYear:{},filteredMessageCount:{},filteredMemberCount:{},timeFilter:{}},setup(C){const{t:a}=X(),r=C,{dailyChartData:_}=Je(()=>r.dailyActivity),o=T(()=>({labels:r.messageTypes.map(w=>Ye(w.type,a)),values:r.messageTypes.map(w=>w.count)})),p=T(()=>{if(r.memberActivity.length<2)return null;const c=[...r.memberActivity].sort((z,q)=>q.messageCount-z.messageCount).slice(0,2),P=c[0].messageCount+c[1].messageCount;return{member1:{name:c[0].name,avatar:c[0].avatar,count:c[0].messageCount,percentage:P>0?Math.round(c[0].messageCount/P*100):0},member2:{name:c[1].name,avatar:c[1].avatar,count:c[1].messageCount,percentage:P>0?Math.round(c[1].messageCount/P*100):0},total:P}}),S=T(()=>p.value?{labels:[p.value.member1.name,p.value.member2.name],values:[p.value.member1.count,p.value.member2.count]}:{labels:[],values:[]});return(w,c)=>(i(),u("div",Ks,[y(He,{session:C.session,"daily-activity":C.dailyActivity,"message-types":C.messageTypes,"hourly-activity":C.hourlyActivity,"time-range":C.timeRange,"selected-year":C.selectedYear,"filtered-message-count":C.filteredMessageCount,"time-filter":C.timeFilter},null,8,["session","daily-activity","message-types","hourly-activity","time-range","selected-year","filtered-message-count","time-filter"]),e("div",Hs,[y(t(_e),{title:t(a)("analysis.overview.messageTypeDistribution"),"show-divider":!1},{default:E(()=>[e("div",Gs,[y(t(we),{data:o.value,height:280},null,8,["data"])])]),_:1},8,["title"]),p.value?(i(),D(t(_e),{key:0,title:t(a)("analysis.overview.memberComparison"),"show-divider":!1},{default:E(()=>[e("div",Js,[y(t(we),{data:S.value,height:280},null,8,["data"])])]),_:1},8,["title"])):M("",!0)]),y(Ge,{"daily-activity":C.dailyActivity,"daily-chart-data":t(_)},null,8,["daily-activity","daily-chart-data"])]))}}),Qs={class:"flex flex-col rounded-2xl bg-white p-4 ring-1 ring-gray-900/5 transition-colors dark:bg-transparent dark:ring-white/10"},Zs={class:"mb-2 min-h-8"},Xs={class:"flex items-center justify-between gap-2"},ea={class:"flex min-w-0 items-center gap-2"},ta={class:"truncate text-xs font-bold tracking-wide text-gray-900 dark:text-white"},sa={key:0,class:"shrink-0"},aa={class:"flex h-full flex-col"},na={class:"grid grid-cols-2 gap-2"},ia={class:"flex min-w-0 flex-col items-center rounded-xl bg-white px-1 py-1.5 text-center dark:bg-transparent"},la=["title"],oa={class:"flex min-w-0 flex-col items-center rounded-xl bg-white px-1 py-1.5 text-center dark:bg-transparent"},ra=["title"],ca={class:"mt-auto pt-3 min-h-8 text-[10px] leading-relaxed text-gray-500 dark:text-gray-400 sm:min-h-6"},ue=Y({__name:"RelationshipMetricCard",props:{title:{},iconName:{},iconBgClass:{},iconColorClass:{},leftName:{default:"—"},leftValue:{default:"--"},rightName:{default:"—"},rightValue:{default:"--"},valueClass:{default:"text-gray-700 dark:text-gray-200"},description:{default:""}},setup(C){const a=ze(),r=T(()=>!!a["header-extra"]);return(_,o)=>{const p=te;return i(),u("div",Qs,[e("div",Zs,[e("div",Xs,[e("div",ea,[e("div",{class:B(["flex h-6 w-6 shrink-0 items-center justify-center rounded-full",C.iconBgClass])},[y(p,{name:C.iconName,class:B(["h-3.5 w-3.5",C.iconColorClass])},null,8,["name","class"])],2),e("span",ta,s(C.title),1)]),r.value?(i(),u("div",sa,[Oe(_.$slots,"header-extra")])):M("",!0)])]),e("div",aa,[e("div",na,[e("div",ia,[e("div",{class:"w-full truncate text-[10px] font-semibold tracking-wide text-gray-500 dark:text-gray-400",title:C.leftName},s(C.leftName),9,la),e("div",{class:B(["mt-2 font-black font-mono leading-none tabular-nums",C.valueClass])},s(C.leftValue),3)]),e("div",oa,[e("div",{class:"w-full truncate text-[10px] font-semibold tracking-wide text-gray-500 dark:text-gray-400",title:C.rightName},s(C.rightName),9,ra),e("div",{class:B(["mt-2 font-black font-mono leading-none tabular-nums",C.valueClass])},s(C.rightValue),3)])]),e("p",ca,s(C.description),1)])])}}}),da={key:1,class:"main-content mx-auto max-w-[920px] space-y-6 p-6"},ua={class:"space-y-6"},ma={class:"relative z-10 flex flex-col items-center justify-center gap-10 px-6 pt-10 pb-6 sm:px-8 lg:flex-row lg:items-start lg:justify-between lg:gap-8 xl:gap-12"},ga={class:"flex min-w-0 max-w-full flex-1 flex-col items-center justify-center lg:items-start"},pa={class:"flex flex-col text-[15px] leading-relaxed text-gray-600 dark:text-gray-300"},xa={class:"mb-2 text-sm font-medium tracking-wide text-gray-500 dark:text-gray-400"},va={class:"mb-4 flex min-w-0 flex-wrap items-baseline gap-2"},fa={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},ba={class:"font-black text-5xl tracking-tight text-gray-900 dark:text-white"},ha={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},ya={class:"flex min-w-0 max-w-full flex-wrap items-baseline gap-x-1.5 gap-y-1"},_a={class:"text-base font-medium text-gray-600 dark:text-gray-300"},ka={class:"font-black text-3xl text-pink-500 dark:text-pink-400"},wa={class:"text-base font-medium text-gray-600 dark:text-gray-300"},$a={class:"max-w-full break-all text-xl font-bold leading-snug text-gray-900 dark:text-white"},Ca={class:"text-base font-medium text-gray-600 dark:text-gray-300"},Sa={class:"mt-8 flex w-full max-w-[320px] items-center justify-between gap-4"},Pa={class:"flex flex-1 flex-col items-center overflow-hidden"},Ia=["title"],Ma={class:"mt-1 text-2xl font-black text-blue-500 dark:text-blue-400"},Ta={class:"mt-0.5 text-[10px] font-medium text-gray-400"},qa={class:"flex flex-1 flex-col items-center overflow-hidden"},Aa=["title"],ja={class:"mt-1 text-2xl font-black text-pink-500 dark:text-pink-400"},Ra={class:"mt-0.5 text-[10px] font-medium text-gray-400"},Va={key:0,class:"flex min-w-0 w-full max-w-[400px] flex-1 flex-col justify-center lg:max-w-[460px]"},La={class:"mb-2 flex items-center justify-between px-1"},Da={class:"text-sm font-bold text-gray-900 dark:text-white"},za={class:"text-[10px] font-medium text-gray-500 dark:text-gray-400"},Oa={class:"w-full"},Ba={class:"h-[200px] w-full"},Na={class:"relative z-10 grid grid-cols-2 gap-3 p-4 pt-2 sm:p-6 sm:pt-2 lg:grid-cols-4"},Ua={class:"relative z-10 flex items-center justify-between px-6 pb-4 opacity-40 mix-blend-luminosity dark:opacity-30 sm:px-8 sm:pb-5"},Fa={class:"flex items-center gap-1.5"},Ea={class:"text-[9px] font-medium uppercase tracking-widest"},Wa={class:"p-6 sm:p-8"},Ka={class:"relative ml-4 border-l-2 border-gray-100/80 py-4 dark:border-gray-800/80"},Ha={class:"absolute -left-[11px] top-1 flex h-5 w-5 items-center justify-center rounded-full bg-white ring-4 ring-white dark:bg-gray-900 dark:ring-gray-900"},Ga={class:"group relative overflow-hidden rounded-[20px] bg-card-bg shadow-sm ring-1 ring-gray-900/5 transition-all hover:-translate-y-0.5 hover:shadow-md dark:bg-card-dark dark:ring-white/10"},Ja={key:0,class:"pointer-events-none absolute inset-0 overflow-hidden opacity-30 transition-opacity group-hover:opacity-50"},Ya={class:"relative z-10 p-4 sm:p-5"},Qa={class:"flex items-center gap-3"},Za={class:"text-xl font-bold tracking-tight text-gray-900 dark:text-white"},Xa={key:0,class:"flex items-baseline gap-1.5"},en={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},tn={class:"text-2xl font-black leading-none text-gray-900 dark:text-white"},sn={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},an={key:0,class:"grid grid-cols-2 gap-3 lg:grid-cols-4"},nn={class:"flex flex-col rounded-xl bg-blue-50/50 p-3 ring-1 ring-blue-100/50 dark:bg-blue-500/5 dark:ring-blue-500/10"},ln={class:"mb-2.5 flex items-center gap-1.5"},on={class:"text-xs font-bold text-gray-700 dark:text-gray-300"},rn={class:"flex flex-col gap-1.5"},cn={class:"flex items-center justify-between text-xs"},dn={class:"w-12 truncate font-medium text-gray-500 dark:text-gray-400"},un={class:"font-black tabular-nums text-blue-600 dark:text-blue-400"},mn={class:"flex items-center justify-between text-xs"},gn={class:"w-12 truncate font-medium text-gray-500 dark:text-gray-400"},pn={class:"font-black tabular-nums text-pink-500 dark:text-pink-400"},xn={class:"mt-3 flex h-1 w-full overflow-hidden rounded-full bg-gray-200 dark:bg-gray-700"},vn={class:"flex flex-col rounded-xl bg-indigo-50/50 p-3 ring-1 ring-indigo-100/50 dark:bg-indigo-500/5 dark:ring-indigo-500/10"},fn={class:"mb-2.5 flex items-center gap-1.5"},bn={class:"text-xs font-bold text-gray-700 dark:text-gray-300"},hn={class:"flex flex-col gap-1.5"},yn={class:"flex items-center justify-between text-xs"},_n={class:"w-12 truncate font-medium text-gray-500 dark:text-gray-400"},kn={class:"font-black tabular-nums text-indigo-600 dark:text-indigo-400"},wn={class:"flex items-center justify-between text-xs"},$n={class:"w-12 truncate font-medium text-gray-500 dark:text-gray-400"},Cn={class:"font-black tabular-nums text-pink-500 dark:text-pink-400"},Sn={class:"mt-3 flex h-1 w-full overflow-hidden rounded-full bg-gray-200 dark:bg-gray-700"},Pn={class:"flex flex-col rounded-xl bg-amber-50/50 p-3 ring-1 ring-amber-100/50 dark:bg-amber-500/5 dark:ring-amber-500/10"},In={class:"mb-2.5 flex items-center gap-1.5"},Mn={class:"text-xs font-bold text-gray-700 dark:text-gray-300"},Tn={class:"flex flex-col gap-1.5"},qn={class:"flex items-center justify-between text-xs"},An={class:"w-12 truncate font-medium text-gray-500 dark:text-gray-400"},jn={class:"font-black tabular-nums text-amber-600 dark:text-amber-500"},Rn={class:"flex items-center justify-between text-xs"},Vn={class:"w-12 truncate font-medium text-gray-500 dark:text-gray-400"},Ln={class:"font-black tabular-nums text-amber-600 dark:text-amber-500"},Dn={class:"flex flex-col rounded-xl bg-purple-50/50 p-3 ring-1 ring-purple-100/50 dark:bg-purple-500/5 dark:ring-purple-500/10"},zn={class:"mb-2.5 flex items-center gap-1.5"},On={class:"text-xs font-bold text-gray-700 dark:text-gray-300"},Bn={class:"flex flex-col gap-1.5"},Nn={class:"flex items-center justify-between text-xs"},Un={class:"w-12 truncate font-medium text-gray-500 dark:text-gray-400"},Fn={class:"font-black tabular-nums text-purple-600 dark:text-purple-400"},En={class:"flex items-center justify-between text-xs"},Wn={class:"w-12 truncate font-medium text-gray-500 dark:text-gray-400"},Kn={class:"font-black tabular-nums text-purple-600 dark:text-purple-400"},Hn={key:1,class:"flex h-24 items-center justify-center text-sm font-medium text-gray-400 dark:text-gray-500"},Gn=Y({__name:"RelationshipView",props:{sessionId:{},timeFilter:{}},setup(C){const{t:a,locale:r}=X(),_=C,o=O(null),p=O(!1),S=O(!1),w=O(300);async function c(n){if(!_.sessionId)return;const b=n?.localOnly==="perseverance";b?S.value=!0:p.value=!0;try{o.value=await le().getRelationshipStats(_.sessionId,_.timeFilter,{perseveranceThreshold:w.value})}catch(j){console.error("Failed to load relationship stats:",j)}finally{b?S.value=!1:p.value=!1}}Z(()=>[_.sessionId,_.timeFilter],()=>c(),{immediate:!0,deep:!0});const P=[{label:"1m",value:60},{label:"3m",value:180},{label:"5m",value:300},{label:"10m",value:600},{label:"30m",value:1800}];function z(n){w.value!==n&&(w.value=n,c({localOnly:"perseverance"}))}const q=T({get:()=>w.value,set:n=>z(n)});function A(n){return a("views.relationship.perseverance.thresholdMinutes",{n:Math.round(n/60)})}const f=T(()=>a("views.relationship.perseverance.hintWithThreshold",{threshold:A(w.value)})),I=T(()=>o.value?.hasSessionIndex&&o.value.totalSessions>0),d=T(()=>o.value?.members[0]),x=T(()=>o.value?.members[1]),V=T(()=>{if(!d.value||!o.value)return 50;const n=(d.value.totalInitiateCount??0)+(x.value?.totalInitiateCount??0);return n===0?50:Math.round(d.value.totalInitiateCount/n*100)}),$=T(()=>{if(!o.value||o.value.months.length===0)return"";const n=[...o.value.months].sort((k,R)=>k.month.localeCompare(R.month)),b=n[0].month.replace("-","/"),j=n[n.length-1].month.replace("-","/");return b===j?b:`${b} – ${j}`}),m=T(()=>r.value.startsWith("en")?"max-w-[420px]":"max-w-[320px]");function g(n){return n<=0?0:n>=100?100:Math.max(5,Math.min(95,n))}const v=T(()=>{if(!o.value||o.value.months.length===0||!d.value)return{};const n=[...o.value.months].sort((W,H)=>W.month.localeCompare(H.month)),b=n.map(W=>F(W.month)),j=d.value.name,k=x.value?.name??"—",R=n.map(W=>{const H=W.members.find(de=>de.memberId===d.value.memberId);return!H||W.totalSessions===0?50:Math.round(H.initiateCount/W.totalSessions*100)});return{tooltip:{trigger:"axis",formatter(W){const H=W[0],de=H.value;return`${H.axisValue}<br/>${j}: ${de}%<br/>${k}: ${100-de}%`}},grid:{left:40,right:20,top:20,bottom:30},xAxis:{type:"category",data:b,axisLabel:{fontSize:11}},yAxis:{type:"value",min:0,max:100,axisLabel:{formatter:"{value}%",fontSize:11},splitLine:{lineStyle:{type:"dashed"}}},series:[{type:"line",data:R,smooth:!0,symbol:"circle",symbolSize:6,lineStyle:{width:2,color:"#3b82f6"},itemStyle:{color:"#3b82f6"},areaStyle:{color:{type:"linear",x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:"rgba(59, 130, 246, 0.15)"},{offset:1,color:"rgba(59, 130, 246, 0)"}]}},markLine:{silent:!0,data:[{yAxis:50,lineStyle:{type:"dashed",color:"#9ca3af"}}],label:{show:!1},symbol:"none"}}]}});function l(n){if(n.totalSessions===0)return a("views.relationship.labels.peacefulSilence");if(n.totalSessions<=2)return a("views.relationship.labels.fleetingThoughts");const j=[...n.members].sort((R,W)=>W.initiateCount-R.initiateCount)[0];if(!j||n.totalSessions===0)return"";const k=Math.round(j.initiateCount/n.totalSessions*100);return k>=40&&k<=60?a("views.relationship.labels.wellMatched"):k>=80?a("views.relationship.labels.monologue",{name:j.name}):a("views.relationship.labels.missingYou",{name:j.name})}function h(n){if(!d.value||n.totalSessions===0)return 50;const b=n.members.find(j=>j.memberId===d.value.memberId);return Math.round((b?.initiateCount??0)/n.totalSessions*100)}function L(n){if(!d.value)return 50;const j=n.members.find(R=>R.memberId===d.value.memberId)?.closeCount??0,k=n.members.reduce((R,W)=>R+(W.closeCount??0),0);return k===0?50:Math.round(j/k*100)}function U(n){const[b,j]=n.split("-");return a("views.relationship.monthFormat",{year:b,month:Number.parseInt(j,10)})}function F(n){const b=n.split("-");return a("views.relationship.monthShortFormat",{month:Number.parseInt(b[1],10)})}function ee(n){return!n||!o.value?.iceBreakers?.length?0:o.value.iceBreakers.filter(b=>b.memberId===n).reduce((b,j)=>b+j.count,0)}function Q(n){if(!n||!o.value?.responseLatency?.length)return null;const b=o.value.responseLatency.find(j=>j.memberId===n);return b?b.avgResponseTime:null}function N(n){return!n||!o.value?.perseverance?.length?0:o.value.perseverance.find(j=>j.memberId===n)?.totalDoubleTexts??0}function se(n){const b=Q(n);return b!=null?J(b):"--"}function be(n){return o.value?.monthlyResponseLatency?.find(b=>b.month===n)?.members??[]}function he(n){return o.value?.monthlyPerseverance?.find(b=>b.month===n)?.members??[]}function re(n,b){if(!b)return"--";const j=be(n).find(k=>k.memberId===b);return j?J(j.avgResponseTime):"--"}function ce(n,b){if(!b)return"--";const j=he(n).find(k=>k.memberId===b);return j?j.doubleTextCount.toString():"--"}function J(n){const b=Math.max(0,Math.round(n));if(b<60)return a("views.relationship.responseLatency.seconds",{n:b});if(b<3600){const R=Math.floor(b/60),W=b%60;return a("views.relationship.responseLatency.minutesSeconds",{m:R,s:W})}const j=Math.floor(b/3600),k=Math.floor(b%3600/60);return k===0?a("views.relationship.responseLatency.hours",{n:j}):a("views.relationship.responseLatency.hoursMinutes",{h:j,m:k})}return(n,b)=>{const j=je,k=te;return i(),u("div",{class:B(p.value?"h-full":"")},[p.value?(i(),D(t(me),{key:0,variant:"page",text:t(a)("common.loading")},null,8,["text"])):(i(),u("div",da,[o.value&&!I.value?(i(),D(t(Me),{key:0,icon:"i-heroicons-heart",title:t(a)("views.relationship.empty.title"),description:t(a)("views.relationship.empty.description")},null,8,["title","description"])):o.value&&I.value?(i(),u(K,{key:1},[e("div",ua,[y(t(ie),{id:"shareable-poster",variant:"elevated",decorative:"",class:"flex flex-col"},{default:E(()=>[e("div",ma,[e("div",ga,[e("div",{class:B(["flex w-fit min-w-0 flex-col items-start text-left",m.value])},[e("div",pa,[e("p",xa,s($.value),1),e("div",va,[e("span",fa,s(t(a)("views.relationship.hero.totalSessionsPrefix")),1),e("span",ba,s(o.value.totalSessions),1),e("span",ha,s(t(a)("views.relationship.hero.totalSessionsSuffix")),1)]),e("div",ya,[e("span",_a,s(t(a)("views.relationship.hero.initiativePrefix")),1),e("span",ka,s(V.value>=50?V.value:100-V.value)+"% ",1),e("span",wa,s(t(a)("views.relationship.hero.initiativeByPrefix")),1),e("span",$a,s(V.value>=50?d.value?.name:x.value?.name),1),e("span",Ca,s(t(a)("views.relationship.hero.initiativeBySuffix")),1)])]),e("div",Sa,[e("div",Pa,[e("div",{class:"w-full truncate text-center text-xs font-bold text-gray-500 dark:text-gray-400",title:d.value?.name},s(d.value?.name),9,Ia),e("div",Ma,s(d.value?.totalInitiateCount),1),e("div",Ta,s(t(a)("views.relationship.hero.initiateTimes")),1)]),b[1]||(b[1]=e("div",{class:"flex h-6 w-6 shrink-0 items-center justify-center rounded-full bg-gray-100 font-black text-[10px] italic text-gray-400 shadow-inner dark:bg-gray-900/80 dark:text-gray-500"}," VS ",-1)),e("div",qa,[e("div",{class:"w-full truncate text-center text-xs font-bold text-gray-500 dark:text-gray-400",title:x.value?.name},s(x.value?.name),9,Aa),e("div",ja,s(x.value?.totalInitiateCount),1),e("div",Ra,s(t(a)("views.relationship.hero.initiateTimes")),1)])])],2)]),o.value.months.length>=2?(i(),u("div",Va,[e("div",La,[e("span",Da,s(t(a)("views.relationship.trend.title")),1),e("span",za,s(t(a)("views.relationship.trend.hint",{name:d.value?.name??""})),1)]),e("div",Oa,[e("div",Ba,[y(t(Qe),{option:v.value,height:200},null,8,["option"])])])])):M("",!0)]),e("div",Na,[y(ue,{title:t(a)("views.relationship.closerTitle"),"icon-name":"i-heroicons-hand-raised-solid","icon-bg-class":"bg-blue-100 dark:bg-blue-500/20","icon-color-class":"text-blue-600 dark:text-blue-400","left-name":d.value?.name,"left-value":d.value?.totalCloseCount??0,"right-name":x.value?.name,"right-value":x.value?.totalCloseCount??0,"value-class":"text-lg text-blue-600 dark:text-blue-400",description:t(a)("views.relationship.closerHint")},null,8,["title","left-name","left-value","right-name","right-value","description"]),y(ue,{title:t(a)("views.relationship.iceBreaker.title"),"icon-name":"i-heroicons-fire-solid","icon-bg-class":"bg-pink-100 dark:bg-pink-500/20","icon-color-class":"text-pink-600 dark:text-pink-400","left-name":d.value?.name,"left-value":ee(d.value?.memberId),"right-name":x.value?.name,"right-value":ee(x.value?.memberId),"value-class":"text-lg text-pink-600 dark:text-pink-400",description:t(a)("views.relationship.iceBreaker.hint")},null,8,["title","left-name","left-value","right-name","right-value","description"]),y(ue,{title:t(a)("views.relationship.responseLatency.title"),"icon-name":"i-heroicons-clock-solid","icon-bg-class":"bg-amber-100 dark:bg-amber-500/20","icon-color-class":"text-amber-600 dark:text-amber-400","left-name":d.value?.name,"left-value":se(d.value?.memberId),"right-name":x.value?.name,"right-value":se(x.value?.memberId),"value-class":"text-base text-amber-600 dark:text-amber-400",description:t(a)("views.relationship.responseLatency.hint")},null,8,["title","left-name","left-value","right-name","right-value","description"]),y(ue,{title:t(a)("views.relationship.perseverance.title"),"icon-name":"i-heroicons-arrow-path-solid","icon-bg-class":"bg-purple-100 dark:bg-purple-500/20","icon-color-class":"text-purple-600 dark:text-purple-400","left-name":d.value?.name,"left-value":N(d.value?.memberId),"right-name":x.value?.name,"right-value":N(x.value?.memberId),"value-class":"text-lg text-purple-600 dark:text-purple-400",description:f.value},{"header-extra":E(()=>[y(j,{modelValue:q.value,"onUpdate:modelValue":b[0]||(b[0]=R=>q.value=R),items:P,"value-key":"value",size:"xs",class:"relative z-[120] w-16",ui:{content:"z-[121]"},disabled:S.value},null,8,["modelValue","disabled"])]),_:1},8,["title","left-name","left-value","right-name","right-value","description"])]),e("div",Ua,[e("div",Fa,[y(k,{name:"i-heroicons-chat-bubble-left-right-solid",class:"h-3.5 w-3.5"}),b[2]||(b[2]=e("span",{class:"text-[10px] font-bold uppercase tracking-wider"},"ChatLab",-1))]),e("span",Ea,s(t(a)("views.relationship.watermarkReport")),1)])]),_:1})]),y(t(_e),{title:t(a)("views.relationship.monthly.title"),"show-divider":!1},{default:E(()=>[e("div",Wa,[e("div",Ka,[(i(!0),u(K,null,G(o.value.months,(R,W)=>(i(),u("div",{key:R.month,class:"relative pb-12 pl-10 last:pb-0"},[e("div",Ha,[e("div",{class:B(["h-2.5 w-2.5 rounded-full shadow-sm",R.totalSessions>0?W===0?"bg-pink-500 animate-pulse":"bg-pink-400":"bg-gray-300 dark:bg-gray-600"])},null,2)]),e("div",Ga,[R.totalSessions>0?(i(),u("div",Ja,[...b[3]||(b[3]=[e("div",{class:"absolute -left-[10%] top-[20%] h-[60%] w-[40%] rounded-full bg-blue-400/10 blur-[40px] dark:bg-blue-500/20"},null,-1),e("div",{class:"absolute -right-[10%] bottom-[20%] h-[60%] w-[40%] rounded-full bg-pink-400/10 blur-[40px] dark:bg-pink-500/20"},null,-1)])])):M("",!0),e("div",Ya,[e("div",{class:B(["flex items-center justify-between",R.totalSessions>0?"mb-4":""])},[e("div",Qa,[e("span",Za,s(U(R.month)),1),e("span",{class:B(["rounded-lg px-2.5 py-1 text-xs font-semibold",R.totalSessions===0?"bg-gray-50 text-gray-500 dark:bg-gray-800/50 dark:text-gray-400":"bg-pink-50 text-pink-600 dark:bg-pink-500/10 dark:text-pink-400"])},s(l(R)),3)]),R.totalSessions>0?(i(),u("div",Xa,[e("span",en,s(t(a)("views.relationship.monthly.totalSessionsPrefix")),1),e("span",tn,s(R.totalSessions),1),e("span",sn,s(t(a)("views.relationship.monthly.totalSessionsSuffix")),1)])):M("",!0)],2),R.totalSessions>0?(i(),u("div",an,[e("div",nn,[e("div",ln,[y(k,{name:"i-heroicons-chat-bubble-bottom-center-text-solid",class:"h-3.5 w-3.5 text-blue-500 dark:text-blue-400"}),e("span",on,s(t(a)("views.relationship.initiator")),1)]),e("div",rn,[e("div",cn,[e("span",dn,s(d.value?.name),1),e("span",un,s(R.members.find(H=>H.memberId===d.value?.memberId)?.initiateCount??0),1)]),e("div",mn,[e("span",gn,s(x.value?.name),1),e("span",pn,s(R.members.find(H=>H.memberId===x.value?.memberId)?.initiateCount??0),1)])]),e("div",xn,[e("div",{class:"bg-blue-500 dark:bg-blue-400",style:ae({width:g(h(R))+"%"})},null,4),e("div",{class:"bg-pink-500 dark:bg-pink-400",style:ae({width:g(100-h(R))+"%"})},null,4)])]),e("div",vn,[e("div",fn,[y(k,{name:"i-heroicons-hand-raised-solid",class:"h-3.5 w-3.5 text-indigo-500 dark:text-indigo-400"}),e("span",bn,s(t(a)("views.relationship.closer")),1)]),e("div",hn,[e("div",yn,[e("span",_n,s(d.value?.name),1),e("span",kn,s(R.members.find(H=>H.memberId===d.value?.memberId)?.closeCount??0),1)]),e("div",wn,[e("span",$n,s(x.value?.name),1),e("span",Cn,s(R.members.find(H=>H.memberId===x.value?.memberId)?.closeCount??0),1)])]),e("div",Sn,[e("div",{class:"bg-indigo-500 dark:bg-indigo-400",style:ae({width:g(L(R))+"%"})},null,4),e("div",{class:"bg-pink-500 dark:bg-pink-400",style:ae({width:g(100-L(R))+"%"})},null,4)])]),e("div",Pn,[e("div",In,[y(k,{name:"i-heroicons-clock-solid",class:"h-3.5 w-3.5 text-amber-500 dark:text-amber-400"}),e("span",Mn,s(t(a)("views.relationship.responseLatency.title")),1)]),e("div",Tn,[e("div",qn,[e("span",An,s(d.value?.name),1),e("span",jn,s(re(R.month,d.value?.memberId)),1)]),e("div",Rn,[e("span",Vn,s(x.value?.name),1),e("span",Ln,s(re(R.month,x.value?.memberId)),1)])])]),e("div",Dn,[e("div",zn,[y(k,{name:"i-heroicons-arrow-path-solid",class:"h-3.5 w-3.5 text-purple-500 dark:text-purple-400"}),e("span",On,s(t(a)("views.relationship.perseverance.title")),1)]),e("div",Bn,[e("div",Nn,[e("span",Un,s(d.value?.name),1),e("span",Fn,s(ce(R.month,d.value?.memberId)),1)]),e("div",En,[e("span",Wn,s(x.value?.name),1),e("span",Kn,s(ce(R.month,x.value?.memberId)),1)])])])])):(i(),u("div",Hn,s(t(a)("views.relationship.noActivity")),1))])])]))),128))])])]),_:1},8,["title"])],64)):M("",!0)]))],2)}}}),Jn={class:"flex h-full flex-col"},Yn={class:"flex-1 min-h-0 overflow-auto"},Qn=Y({__name:"ViewTab",props:{sessionId:{},sessionName:{},timeFilter:{}},setup(C){const{t:a}=X(),r=C,_=T(()=>[{id:"relationship",label:a("analysis.subTabs.view.relationship"),icon:"i-heroicons-heart"},{id:"type-analysis",label:a("analysis.subTabs.view.typeAnalysis"),icon:"i-heroicons-chart-pie"},{id:"time-analysis",label:a("analysis.subTabs.view.timeAnalysis"),icon:"i-heroicons-clock"},{id:"topic",label:a("analysis.subTabs.view.topic"),icon:"i-heroicons-cloud"},{id:"language-preference",label:a("analysis.subTabs.view.languagePreference"),icon:"i-heroicons-language"}]),o=O("relationship"),p=O(null),S=T(()=>({...r.timeFilter,memberId:p.value}));return(w,c)=>(i(),u("div",Jn,[y(t(Fe),{modelValue:o.value,"onUpdate:modelValue":c[1]||(c[1]=P=>o.value=P),items:_.value,"persist-key":"privateViewTab"},{right:E(()=>[o.value==="type-analysis"||o.value==="time-analysis"?(i(),D(Ze,{key:0,modelValue:p.value,"onUpdate:modelValue":c[0]||(c[0]=P=>p.value=P),"session-id":r.sessionId},null,8,["modelValue","session-id"])):M("",!0)]),_:1},8,["modelValue","items"]),e("div",Yn,[y(Se,{name:"fade",mode:"out-in"},{default:E(()=>[o.value==="type-analysis"?(i(),D(Xe,{key:0,"session-id":r.sessionId,"session-name":r.sessionName,"time-filter":S.value},null,8,["session-id","session-name","time-filter"])):o.value==="time-analysis"?(i(),D(et,{key:1,"session-id":r.sessionId,"session-name":r.sessionName,"time-filter":S.value},null,8,["session-id","session-name","time-filter"])):o.value==="relationship"?(i(),D(Gn,{key:2,"session-id":r.sessionId,"time-filter":r.timeFilter},null,8,["session-id","time-filter"])):o.value==="topic"?(i(),D(t(tt),{key:3,"session-id":r.sessionId,"time-filter":r.timeFilter,"show-shared-topics":!0},null,8,["session-id","time-filter"])):o.value==="language-preference"?(i(),D(t(Ws),{key:4,"session-id":r.sessionId,"time-filter":r.timeFilter},null,8,["session-id","time-filter"])):M("",!0)]),_:1})])]))}}),Zn=Ie(Qn,[["__scopeId","data-v-9043b751"]]),Xn={class:"main-content max-w-4xl p-6"},ei={key:0,class:"mb-6"},ti={class:"flex items-center gap-3"},si={class:"text-xl font-bold text-gray-900 dark:text-white"},ai={class:"text-sm text-gray-500 dark:text-gray-400"},ni={key:1,class:"flex h-60 items-center justify-center"},ii={key:2,class:"mb-4 flex items-center justify-end gap-2"},li={class:"text-xs text-gray-500 dark:text-gray-400"},oi={key:3,class:"grid gap-4 md:grid-cols-2"},ri={class:"absolute right-4 top-4"},ci={class:"flex items-start gap-4"},di=["src","alt"],ui={key:1,class:"flex h-14 w-14 shrink-0 items-center justify-center rounded-full bg-linear-to-br from-pink-400 to-pink-600 text-lg font-medium text-white"},mi={class:"flex-1 min-w-0"},gi={class:"text-lg font-semibold text-gray-900 dark:text-white truncate"},pi={class:"text-sm text-gray-500 dark:text-gray-400"},xi={class:"mt-4 flex items-center gap-4"},vi={class:"flex-1"},fi={class:"flex items-baseline justify-between"},bi={class:"text-sm text-gray-500 dark:text-gray-400"},hi={class:"text-lg font-bold text-gray-900 dark:text-white"},yi={class:"mt-2 h-2 w-full overflow-hidden rounded-full bg-gray-100 dark:bg-gray-800"},_i={class:"mt-1 text-xs text-gray-400 dark:text-gray-500"},ki={class:"mt-4 border-t border-gray-100 pt-4 dark:border-gray-800"},wi={class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"},$i={class:"relative"},Ci={key:0,class:"absolute right-3 top-1/2 -translate-y-1/2"},Si={key:4,class:"flex h-60 flex-col items-center justify-center"},Pi={class:"text-gray-500 dark:text-gray-400"},Ii={key:5,class:"mt-6 flex items-start gap-3 rounded-xl bg-blue-50 p-4 dark:bg-blue-900/20"},Mi={class:"text-sm font-medium text-blue-800 dark:text-blue-200"},Ti={class:"mt-1 text-sm text-blue-700 dark:text-blue-300"},qi={class:"p-6"},Ai={class:"mb-4 flex items-center gap-3"},ji={class:"flex h-10 w-10 items-center justify-center rounded-full bg-amber-100 dark:bg-amber-900/30"},Ri={class:"text-lg font-semibold text-gray-900 dark:text-white"},Vi={class:"mb-2 text-sm text-gray-600 dark:text-gray-400"},Li={class:"mb-6 text-xs text-amber-700 dark:text-amber-300"},Di={class:"flex justify-end gap-2"},zi=Y({__name:"MemberTab",props:{sessionId:{},showHeader:{type:Boolean,default:!0}},setup(C){const{t:a}=X(),r=C,_=O([]),o=O(!1),p=O(null),S=O(new Set),w=O(!1),c=O(!1);function P(l){return l.groupNickname||l.accountName||l.platformId}function z(l){return P(l).slice(0,1)}const q=T(()=>_.value.filter(l=>S.value.has(l.id))),A=T(()=>q.value.length===2),f=T(()=>{if(q.value.length!==2)return null;const[l,h]=q.value;return h.messageCount>l.messageCount||h.messageCount===l.messageCount&&h.id<l.id?{primary:h,secondary:l}:{primary:l,secondary:h}}),I=T(()=>_.value.reduce((l,h)=>l+h.messageCount,0));function d(l){return I.value===0?0:Math.round(l/I.value*100)}async function x(){if(r.sessionId){o.value=!0;try{_.value=await le().getMembers(r.sessionId)}catch(l){console.error("加载成员列表失败:",l)}finally{o.value=!1}}}async function V(l,h){const L=JSON.parse(JSON.stringify(h)),U=JSON.stringify(l.aliases),F=JSON.stringify(L);if(U!==F){p.value=l.id;try{if(await le().updateMemberAliases(r.sessionId,l.id,L)){const Q=_.value.findIndex(N=>N.id===l.id);Q!==-1&&(_.value[Q]={..._.value[Q],aliases:L})}}catch(ee){console.error("保存别名失败:",ee)}finally{p.value=null}}}function $(l){const h=new Set(S.value);h.has(l)?h.delete(l):h.add(l),S.value=h}function m(){A.value&&(w.value=!0)}function g(){S.value=new Set}async function v(){if(f.value){c.value=!0;try{await le().mergeMembers(r.sessionId,f.value.primary.id,f.value.secondary.id)&&(w.value=!1,g(),await x())}catch(l){console.error("合并成员失败:",l)}finally{c.value=!1}}}return Z(()=>r.sessionId,()=>{g(),x()},{immediate:!0}),oe(()=>{x()}),(l,h)=>{const L=te,U=$e,F=Re,ee=Ve,Q=Ce;return i(),u("div",Xn,[r.showHeader?(i(),u("div",ei,[e("div",ti,[e("div",null,[e("h2",si,s(t(a)("members.private.title")),1),e("p",ai,s(t(a)("members.private.description",{count:_.value.length})),1)])])])):M("",!0),y(st,{class:"mb-6","session-id":C.sessionId,members:_.value,"chat-type":"private"},null,8,["session-id","members"]),o.value?(i(),u("div",ni,[y(L,{name:"i-heroicons-arrow-path",class:"h-8 w-8 animate-spin text-pink-500"})])):M("",!0),!o.value&&_.value.length>1?(i(),u("div",ii,[e("span",li,s(t(a)("members.list.mergeSelectedCount",{count:S.value.size})),1),y(U,{icon:"i-heroicons-link",size:"sm",color:"primary",disabled:!A.value,onClick:m},{default:E(()=>[ye(s(t(a)("members.list.mergeSelected")),1)]),_:1},8,["disabled"])])):M("",!0),o.value?M("",!0):(i(),u("div",oi,[(i(!0),u(K,null,G(_.value,N=>(i(),u("div",{key:N.id,class:"relative rounded-xl border border-gray-200 bg-white p-5 shadow-sm dark:border-gray-700 dark:bg-gray-900"},[e("div",ri,[y(F,{"model-value":S.value.has(N.id),onClick:Be(se=>$(N.id),["stop"])},null,8,["model-value","onClick"])]),e("div",ci,[N.avatar?(i(),u("img",{key:0,src:N.avatar,alt:P(N),class:"h-14 w-14 shrink-0 rounded-full object-cover"},null,8,di)):(i(),u("div",ui,s(z(N)),1)),e("div",mi,[e("h3",gi,s(P(N)),1),e("p",pi,"ID: "+s(N.platformId),1)])]),e("div",xi,[e("div",vi,[e("div",fi,[e("span",bi,s(t(a)("members.private.messageCount")),1),e("span",hi,s(N.messageCount.toLocaleString()),1)]),e("div",yi,[e("div",{class:"h-full rounded-full bg-linear-to-r from-pink-400 to-pink-600 transition-all duration-500",style:ae({width:`${d(N.messageCount)}%`})},null,4)]),e("p",_i,s(t(a)("members.private.percentage",{value:d(N.messageCount)})),1)])]),e("div",ki,[e("label",wi,s(t(a)("members.private.customAlias")),1),e("div",$i,[y(ee,{"model-value":N.aliases,placeholder:t(a)("members.private.aliasPlaceholder"),class:"w-full","onUpdate:modelValue":se=>V(N,se)},null,8,["model-value","placeholder","onUpdate:modelValue"]),p.value===N.id?(i(),u("div",Ci,[y(L,{name:"i-heroicons-arrow-path",class:"h-4 w-4 animate-spin text-pink-500"})])):M("",!0)])])]))),128))])),!o.value&&_.value.length===0?(i(),u("div",Si,[y(L,{name:"i-heroicons-user-group",class:"mb-3 h-12 w-12 text-gray-300 dark:text-gray-600"}),e("p",Pi,s(t(a)("members.private.empty")),1)])):M("",!0),_.value.length>0?(i(),u("div",Ii,[y(L,{name:"i-heroicons-information-circle",class:"mt-0.5 h-5 w-5 shrink-0 text-blue-500"}),e("div",null,[e("p",Mi,s(t(a)("members.private.tipTitle")),1),e("p",Ti,s(t(a)("members.private.tipContent")),1)])])):M("",!0),y(Q,{open:w.value,ui:{content:"max-w-md"},"onUpdate:open":h[1]||(h[1]=N=>w.value=N)},{content:E(()=>[e("div",qi,[e("div",Ai,[e("div",ji,[y(L,{name:"i-heroicons-link",class:"h-5 w-5 text-amber-600 dark:text-amber-400"})]),e("h3",Ri,s(t(a)("members.list.mergeModal.title")),1)]),e("p",Vi,s(t(a)("members.list.mergeModal.content",{source:f.value?P(f.value.secondary):"",sourceCount:f.value?f.value.secondary.messageCount.toLocaleString():"0",target:f.value?P(f.value.primary):"",targetCount:f.value?f.value.primary.messageCount.toLocaleString():"0"})),1),e("p",Li,s(t(a)("members.list.mergeModal.hint")),1),e("div",Di,[y(U,{variant:"outline",disabled:c.value,onClick:h[0]||(h[0]=N=>w.value=!1)},{default:E(()=>[ye(s(t(a)("members.list.mergeModal.cancel")),1)]),_:1},8,["disabled"]),y(U,{color:"primary",loading:c.value,onClick:v},{default:E(()=>[ye(s(t(a)("members.list.mergeModal.confirm")),1)]),_:1},8,["loading"])])])]),_:1},8,["open"])])}}}),Oi={class:"flex h-full flex-col bg-white dark:bg-gray-900",style:{"padding-top":"var(--titlebar-area-height)"}},Bi={class:"relative flex-1 overflow-y-auto"},Ni={class:"h-full"},Ui={key:2,class:"flex h-full items-center justify-center"},Fi={class:"text-gray-500"},Ei={class:"flex h-full flex-col overflow-hidden bg-white dark:bg-gray-900"},Wi={class:"flex flex-none items-center justify-between border-b border-gray-200 px-5 py-3 dark:border-gray-700"},Ki={class:"text-lg font-semibold text-gray-900 dark:text-white"},Hi={class:"text-sm text-gray-500 dark:text-gray-400"},Gi={class:"flex-1 overflow-auto"},Ji=Y({__name:"index",setup(C){const a=Ne(()=>Ae(()=>import("./MessageExportModal-Dd6R-cX_.js"),__vite__mapDeps([0,1,2,3,4,5]))),{t:r}=X(),_=Le(),o=De(),p=Ee(),S=Pe(),w=We(),{currentSessionId:c}=Ke(p),P=O(!1),z=O(!1),q=O(!1),A=O(!1),f=O(!1),I=O(!1);function d(){S.openChatRecordDrawer({})}const x=[{id:"overview",labelKey:"analysis.tabs.overview",icon:"i-heroicons-chart-pie"},{id:"view",labelKey:"analysis.tabs.view",icon:"i-heroicons-presentation-chart-bar"},{id:"ai-chat",labelKey:"analysis.tabs.aiChat",icon:"i-heroicons-chat-bubble-left-ellipsis"},{id:"lab",labelKey:"analysis.tabs.lab",icon:"i-heroicons-beaker"}],V=T(()=>w.debugMode?[...x,{id:"debug",labelKey:"analysis.tabs.debug",icon:"i-heroicons-bug-ant"}]:x),{activeTab:$,isLoading:m,isInitialLoad:g,session:v,memberActivity:l,hourlyActivity:h,dailyActivity:L,messageTypes:U,timeRangeValue:F,fullTimeRange:ee,timeFilter:Q,selectedYearForOverview:N,initialTimeState:se,loadAnalysisData:be}=at({route:_,router:o,currentSessionId:c,selectSession:p.selectSession,defaultTab:w.defaultSessionTab,validTabIds:V.value.map(J=>J.id)}),he=T(()=>l.value.reduce((J,n)=>J+n.messageCount,0)),re=T(()=>l.value.filter(J=>J.messageCount>0).length),ce=T(()=>{if(!v.value||l.value.length===0)return null;if(v.value.ownerId){const n=l.value.find(b=>b.platformId!==v.value?.ownerId);if(n?.avatar)return n.avatar}const J=l.value.find(n=>n.name===v.value?.name);return J?.avatar?J.avatar:(l.value.length,null)});return(J,n)=>{const b=$e,j=Ce;return i(),u("div",Oi,[t(g)?(i(),D(me,{key:0,variant:"page",text:t(r)("analysis.privateChat.loading")},null,8,["text"])):t(v)?(i(),u(K,{key:1},[y(nt,{"active-tab":t($),"onUpdate:activeTab":n[0]||(n[0]=k=>ke($)?$.value=k:null),"time-range-value":t(F),"onUpdate:timeRangeValue":n[1]||(n[1]=k=>ke(F)?F.value=k:null),title:t(v).name,avatar:ce.value,icon:"i-heroicons-user","icon-class":"bg-pink-600 text-white dark:bg-pink-500 dark:text-white",tabs:V.value,"current-session-id":t(c),"initial-time-state":t(se),onOpenIncrementalImport:n[2]||(n[2]=k=>A.value=!0),onOpenMemberManagement:n[3]||(n[3]=k=>I.value=!0),onOpenChatRecord:d,"onUpdate:fullRange":n[4]||(n[4]=k=>ee.value=k)},null,8,["active-tab","time-range-value","title","avatar","tabs","current-session-id","initial-time-state"]),e("div",Bi,[t(m)?(i(),D(me,{key:0,variant:"overlay",text:t(r)("common.loading")},null,8,["text"])):M("",!0),e("div",Ni,[y(Se,{name:"tab-slide",mode:"out-in"},{default:E(()=>[t($)==="overview"?(i(),D(Ys,{key:"overview-"+t(c),session:t(v),"member-activity":t(l),"message-types":t(U),"hourly-activity":t(h),"daily-activity":t(L),"time-range":t(ee),"selected-year":t(N),"filtered-message-count":he.value,"filtered-member-count":re.value,"time-filter":t(Q)},null,8,["session","member-activity","message-types","hourly-activity","daily-activity","time-range","selected-year","filtered-message-count","filtered-member-count","time-filter"])):t($)==="view"?(i(),D(Zn,{key:"view-"+t(c),"session-id":t(c),"session-name":t(v).name,"time-filter":t(Q)},null,8,["session-id","session-name","time-filter"])):t($)==="ai-chat"?(i(),D(t(dt),{key:"ai-chat-"+t(c),"session-id":t(c),"session-name":t(v).name,"chat-type":"private"},null,8,["session-id","session-name"])):t($)==="memory"?(i(),D(ut,{key:"memory-"+t(c),"session-id":t(c),"session-name":t(v).name},null,8,["session-id","session-name"])):t($)==="lab"?(i(),D(mt,{key:"lab-"+t(c),"session-id":t(c),"session-name":t(v).name,"time-filter":t(Q),"chat-type":"private",mode:"sql-only"},null,8,["session-id","session-name","time-filter"])):t($)==="debug"?(i(),D(t(gt),{key:"debug-"+t(c),"session-id":t(c)},null,8,["session-id"])):M("",!0)]),_:1})])]),y(it,{onOpenIncrementalImport:n[5]||(n[5]=k=>A.value=!0),onOpenSessionIndex:n[6]||(n[6]=k=>P.value=!0),onOpenSemanticIndex:n[7]||(n[7]=k=>z.value=!0),onOpenMemberManagement:n[8]||(n[8]=k=>I.value=!0),onOpenChatRecord:d,onOpenMessageExport:n[9]||(n[9]=k=>f.value=!0)}),t(w).debugMode?(i(),D(pt,{key:0})):M("",!0)],64)):(i(),u("div",Ui,[e("p",Fi,s(t(r)("analysis.privateChat.loadError")),1)])),t(c)&&t(v)&&t(v).messageCount>0?(i(),D(lt,{key:3,modelValue:P.value,"onUpdate:modelValue":n[10]||(n[10]=k=>P.value=k),"session-id":t(c),"message-count":t(v).messageCount},null,8,["modelValue","session-id","message-count"])):M("",!0),t(c)&&t(v)?(i(),D(ot,{key:4,modelValue:z.value,"onUpdate:modelValue":n[11]||(n[11]=k=>z.value=k),"session-id":t(c),"message-count":t(v).messageCount},null,8,["modelValue","session-id","message-count"])):M("",!0),t(c)&&t(v)&&!P.value?(i(),D(rt,{key:5,modelValue:q.value,"onUpdate:modelValue":n[12]||(n[12]=k=>q.value=k),"session-id":t(c),"chat-type":"private","auto-check":""},null,8,["modelValue","session-id"])):M("",!0),t(c)&&t(v)?(i(),D(ct,{key:6,modelValue:A.value,"onUpdate:modelValue":n[13]||(n[13]=k=>A.value=k),"session-id":t(c),"session-name":t(v).name,onImported:n[14]||(n[14]=()=>{t(be)(),t(p).loadSessions()})},null,8,["modelValue","session-id","session-name"])):M("",!0),t(c)?(i(),D(t(a),{key:7,modelValue:f.value,"onUpdate:modelValue":n[15]||(n[15]=k=>f.value=k)},null,8,["modelValue"])):M("",!0),t(c)?(i(),D(j,{key:8,open:I.value,"onUpdate:open":n[17]||(n[17]=k=>I.value=k),ui:{content:"max-w-6xl h-[85vh]"}},{content:E(()=>[e("div",Ei,[e("div",Wi,[e("div",null,[e("h2",Ki,s(t(r)("analysis.tooltip.memberManagement")),1),e("p",Hi,s(t(r)("members.private.description",{count:t(v)?.memberCount??0})),1)]),y(b,{variant:"ghost",icon:"i-heroicons-x-mark",size:"sm",onClick:n[16]||(n[16]=k=>I.value=!1)})]),e("div",Gi,[y(zi,{"session-id":t(c),"show-header":!1},null,8,["session-id"])])])]),_:1},8,["open"])):M("",!0)])}}}),il=Ie(Ji,[["__scopeId","data-v-65159e91"]]);export{il as default};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{_ as j0,b as H0}from"./vendor-nuxt-ui-Zy8txNdC.js";import{k as d0,z as U0,R as Z0,l as W0,g as Uu,u as V0,s as G0}from"./index-
|
|
1
|
+
import{_ as j0,b as H0}from"./vendor-nuxt-ui-Zy8txNdC.js";import{k as d0,z as U0,R as Z0,l as W0,g as Uu,u as V0,s as G0}from"./index-D5UgZUpS.js";import{b as tu,p as h0,d as Q0,G as Tu,H as J0,u as Zu,K as Wu,L as X0,Q as Y0,P as b0,Z as K0,R as ue,T as ee,U as te,a5 as re,X as ne,O as ce,h as ie}from"./vendor-reka-ui-mMvma1EP.js";function oe(){return new Promise(u=>{requestAnimationFrame(()=>u())})}function ae(){window.dispatchEvent(new Event("resize"))}async function Vu(u){const e=oe,t=ae;await e(),t(),await e()}const se=525;function le(){const u=d0(),e=U0(),t=tu(!1),r=tu(null);let n=null;async function c(l){const b=`chatlab-screenshot-${new Date().toISOString().replace(/[:.]/g,"-").slice(0,19)}.png`;try{const h=await Uu().saveToDownloads(b,l);if(h.success)e.add({title:"截图已保存",description:`已保存到下载目录:${b}`,color:"primary",actions:[{label:"打开目录",onClick:()=>{Uu().openDir("downloads")}}]});else throw new Error(h.error)}catch(h){console.error("保存图片失败:",h),e.fail("保存失败",{description:String(h)})}}function o(l){n=l,e.add({title:"截图已复制到剪贴板",color:"primary",actions:[{label:"预览截图",icon:"i-heroicons-eye",onClick:()=>{n&&u.openScreenCaptureModal(n)}},{label:"保存",icon:"i-heroicons-arrow-down-tray",onClick:()=>{n&&c(n)}}]})}async function i(l,f){const b=document.querySelector(l);return b?a(b,f):(r.value=`未找到元素: ${l}`,!1)}async function a(l,f){if(t.value)return!1;t.value=!0,r.value=null;const b=l.style.padding,h=l.style.paddingBottom,d=l.style.position,C=l.style.width,E=l.style.minWidth,m=l.style.maxWidth;if(l.style.padding="16px 40px",l.style.paddingBottom="48px",window.getComputedStyle(l).position==="static"&&(l.style.position="relative"),f?.mobileWidth){const k=typeof f.mobileWidth=="number"?f.mobileWidth:se,D=l.getBoundingClientRect().width;if(D>k){const S=Math.round(k+(D-k)*.3);l.style.width=`${S}px`,l.style.minWidth=`${S}px`,l.style.maxWidth=`${S}px`}}const _=document.createElement("div");_.className="__capture-watermark__",_.style.cssText=`
|
|
2
2
|
position: absolute;
|
|
3
3
|
left: 0;
|
|
4
4
|
right: 0;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{W as a}from"./index-D5UgZUpS.js";import"./vendor-reka-ui-mMvma1EP.js";import"./vendor-nuxt-ui-Zy8txNdC.js";import"./vendor-snapdom-XnBoh1gd.js";class l{async getVersion(){return"0.28.0"}async fetchRemoteConfig(e){try{const t=await fetch(e);return t.ok?{success:!0,data:await t.json()}:{success:!1,error:`HTTP ${t.status}`}}catch(t){return{success:!1,error:String(t)}}}setThemeSource(e){}async getOpenAtLogin(){return!1}async setOpenAtLogin(e){return{success:!1,error:"Not available in web mode"}}async getAnalyticsEnabled(){try{return(await(await a("/_web/telemetry/enabled")).json()).enabled===!0}catch{return!1}}async setAnalyticsEnabled(e){try{return await(await a("/_web/telemetry/enabled",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({enabled:e})})).json()}catch{return{success:!1}}}async trackDailyActive(e){await a("/_web/telemetry/track",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({eventName:"app_active",properties:{platform:"cli-web",locale:e}})}).catch(()=>{})}async showOpenDialog(e){return{canceled:!0,filePaths:[]}}async copyImageToClipboard(e){return{success:!1,error:"Not available in web mode"}}async checkUpdate(){try{return await(await a("/_web/system/check-update")).json()}catch(e){return{hasUpdate:!1,currentVersion:"unknown",error:e instanceof Error?e.message:String(e)}}}async performUpdate(){return{success:!1,error:"Web update is unavailable. Run clb update in your terminal."}}async relaunch(){window.location.reload()}}export{l as WebPlatformAdapter};
|
package/dist-web/index.html
CHANGED
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
<title>ChatLab</title>
|
|
6
6
|
<!-- https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP -->
|
|
7
7
|
<link rel="icon" href="/favicon.ico" />
|
|
8
|
-
<script type="module" crossorigin src="/assets/index-
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-D5UgZUpS.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/vendor-reka-ui-mMvma1EP.js">
|
|
10
10
|
<link rel="modulepreload" crossorigin href="/assets/vendor-nuxt-ui-Zy8txNdC.js">
|
|
11
11
|
<link rel="modulepreload" crossorigin href="/assets/vendor-snapdom-XnBoh1gd.js">
|
|
12
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
12
|
+
<link rel="stylesheet" crossorigin href="/assets/index-7E5GSvR2.css">
|
|
13
13
|
</head>
|
|
14
14
|
|
|
15
15
|
<body>
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli.ts","../src/http/port.ts"],"sourcesContent":["/**\n * ChatLab CLI entry point\n *\n * Dev: pnpm --filter chatlab-cli run cli -- sessions\n */\n\nimport * as fs from 'fs'\nimport { execSync } from 'child_process'\nimport { Command } from 'commander'\nimport { DEFAULT_API_PORT, loadConfig, getConfigPath } from '@openchatlab/config'\nimport {\n NodePathProvider,\n DatabaseManager,\n AIChatManager,\n applyPendingNodeDataDirMigrationIfNeeded,\n hasPendingElectronDataWarning,\n verifyCliDataPath,\n} from '@openchatlab/node-runtime'\nimport {\n getSessionMeta,\n getSessionOverview,\n getMemberActivity,\n searchMessagesLike,\n getMembers,\n executeReadonlySql,\n} from '@openchatlab/core'\nimport { getVersion } from './version'\nimport { resolveCliPath } from './paths'\nimport { isPortAvailable, formatPortInUseError } from './http/port'\nimport { assertCliDataDirCompatible } from './runtime-compat'\n\nconst program = new Command()\n\nprogram.name('chatlab').description('ChatLab - Chat history analysis tool').version(getVersion(), '-v, --version')\n\nprogram.hook('preAction', async (_thisCommand, actionCommand) => {\n if (actionCommand.name() === 'update') return\n const { checkForUpdatesInteractive } = await import('./update-checker')\n await checkForUpdatesInteractive()\n})\n\nprogram\n .command('update')\n .description('Update ChatLab CLI to the latest version')\n .action(async () => {\n const { performCliSelfUpdate } = await import('./update-checker')\n const result = await performCliSelfUpdate({\n write: (text) => process.stderr.write(text),\n })\n\n if (result.success) {\n console.error(' Updated successfully. Please restart chatlab to use the new version.\\n')\n return\n }\n\n console.error(` Update failed: ${result.error || 'unknown error'}\\n`)\n process.exitCode = 1\n })\n\nprogram\n .command('sessions')\n .description('List all imported chat sessions')\n .option('--format <format>', 'Output format (table|json)', 'table')\n .action((options) => {\n const { dbManager } = initRuntime()\n const sessionIds = dbManager.listSessionIds()\n\n if (sessionIds.length === 0) {\n console.log('No chat sessions found.')\n console.log(`Data directory: ${dbManager['pathProvider'].getUserDataDir()}`)\n dbManager.closeAll()\n return\n }\n\n const sessions = sessionIds\n .map((id) => {\n const db = dbManager.open(id)\n if (!db) return null\n const meta = getSessionMeta(db)\n if (!meta) return null\n const overview = getSessionOverview(db)\n return { id, ...meta, ...overview }\n })\n .filter(Boolean)\n\n if (options.format === 'json') {\n console.log(JSON.stringify(sessions, null, 2))\n } else {\n console.log(`${sessions.length} session(s) found:\\n`)\n for (const s of sessions) {\n if (!s) continue\n const timeRange = formatTimeRange(s.firstMessageTs, s.lastMessageTs)\n console.log(` ${s.name}`)\n console.log(` ID: ${s.id}`)\n console.log(\n ` Platform: ${s.platform} | Type: ${s.type} | Members: ${s.totalMembers} | Messages: ${s.totalMessages}`\n )\n if (timeRange) console.log(` Range: ${timeRange}`)\n console.log()\n }\n }\n\n dbManager.closeAll()\n })\n\nprogram\n .command('stats <session-id>')\n .description('Show session statistics overview')\n .option('--format <format>', 'Output format (table|json)', 'table')\n .option('--top <n>', 'Show top N active members', '10')\n .action((sessionId, options) => {\n const { dbManager } = initRuntime()\n const db = dbManager.open(sessionId)\n if (!db) {\n console.error(`Session ${sessionId} not found`)\n process.exit(1)\n }\n\n const meta = getSessionMeta(db)\n const overview = getSessionOverview(db)\n const topMembers = getMemberActivity(db).slice(0, parseInt(options.top))\n\n if (options.format === 'json') {\n console.log(JSON.stringify({ meta, overview, topMembers }, null, 2))\n } else {\n console.log(`\\nSession: ${meta?.name}`)\n console.log(`Platform: ${meta?.platform} | Type: ${meta?.type}`)\n console.log(`Total messages: ${overview.totalMessages}`)\n console.log(`Total members: ${overview.totalMembers}`)\n console.log(`Time range: ${formatTimeRange(overview.firstMessageTs, overview.lastMessageTs)}`)\n\n if (topMembers.length > 0) {\n console.log(`\\nActivity ranking (Top ${options.top}):`)\n for (const [i, m] of topMembers.entries()) {\n console.log(` ${i + 1}. ${m.name} - ${m.messageCount} messages (${m.percentage}%)`)\n }\n }\n }\n\n dbManager.closeAll()\n })\n\nprogram\n .command('search <session-id> <keyword>')\n .description('Search messages by keyword')\n .option('--limit <n>', 'Max results to return', '20')\n .option('--format <format>', 'Output format (table|json)', 'table')\n .action((sessionId, keyword, options) => {\n const { dbManager } = initRuntime()\n const db = dbManager.open(sessionId)\n if (!db) {\n console.error(`Session ${sessionId} not found`)\n process.exit(1)\n }\n\n const limit = parseInt(options.limit)\n const result = searchMessagesLike(db, keyword, { limit })\n\n if (options.format === 'json') {\n console.log(JSON.stringify(result, null, 2))\n } else {\n console.log(\n `Search \"${keyword}\" - ${result.total} result(s)${result.hasMore ? ' (showing first ' + limit + ')' : ''}:\\n`\n )\n for (const msg of result.messages) {\n const time = new Date(msg.timestamp * 1000).toLocaleString()\n console.log(` [${time}] ${msg.senderName}: ${msg.content}`)\n }\n }\n\n dbManager.closeAll()\n })\n\nprogram\n .command('members <session-id>')\n .description('List session members')\n .option('--format <format>', 'Output format (table|json)', 'table')\n .action((sessionId, options) => {\n const { dbManager } = initRuntime()\n const db = dbManager.open(sessionId)\n if (!db) {\n console.error(`Session ${sessionId} not found`)\n process.exit(1)\n }\n\n const members = getMembers(db)\n\n if (options.format === 'json') {\n console.log(JSON.stringify(members, null, 2))\n } else {\n console.log(`${members.length} member(s):\\n`)\n for (const [i, m] of members.entries()) {\n console.log(` ${i + 1}. ${m.name} (${m.platformId}) - ${m.messageCount} messages`)\n }\n }\n\n dbManager.closeAll()\n })\n\nprogram\n .command('query <session-id>')\n .description('Execute a read-only SQL query on a session database')\n .requiredOption('--sql <sql>', 'SQL query statement')\n .option('--format <format>', 'Output format (table|json)', 'table')\n .action((sessionId, options) => {\n const { dbManager } = initRuntime()\n const db = dbManager.open(sessionId)\n if (!db) {\n console.error(`Session ${sessionId} not found`)\n process.exit(1)\n }\n\n try {\n const result = executeReadonlySql(db, options.sql)\n if (options.format === 'json') {\n console.log(JSON.stringify(result, null, 2))\n } else {\n if (result.rows.length === 0) {\n console.log('No results.')\n } else {\n printTable(result.columns, result.rows)\n console.log(`\\n${result.rowCount} row(s)${result.truncated ? ' (truncated)' : ''}`)\n }\n }\n } catch (err) {\n console.error(`SQL error: ${err instanceof Error ? err.message : err}`)\n process.exit(1)\n }\n\n dbManager.closeAll()\n })\n\nprogram\n .command('import <file>')\n .description('Import a chat history file (14+ formats: QQ/WeChat/Telegram/WhatsApp/LINE/Discord/Instagram, etc.)')\n .option('--session-id <id>', 'Specify session ID (auto-generated if omitted)')\n .option('--format <id>', 'Specify format ID (skip auto-detection)')\n .action(async (file, options) => {\n if (!fs.existsSync(file)) {\n console.error(`File not found: ${file}`)\n process.exit(1)\n }\n\n const { streamImport, detectFormat } = await import('./import')\n const { dbManager, pathProvider } = initRuntime()\n const nativeBinding = resolveNativeBinding()\n\n const format = detectFormat(file)\n if (!format && !options.format) {\n console.error(`Unrecognized file format: ${file}`)\n console.error('Use --format <id> to specify manually, or run \"chatlab formats\" to see supported formats')\n process.exit(1)\n }\n\n console.log(`Importing: ${file}`)\n if (format) console.log(` Format: ${format.name} (${format.platform})`)\n\n try {\n const result = await streamImport(dbManager, file, {\n formatId: options.format,\n nativeBinding,\n onProgress: (p) => {\n process.stdout.write(`\\r ${p.stage}: ${p.progress}%`)\n },\n })\n\n if (result.success) {\n console.log(`\\n\\nImport succeeded!`)\n console.log(` Session ID: ${result.sessionId}`)\n console.log(` Messages written: ${result.diagnostics?.messagesWritten ?? 0}`)\n console.log(` Messages skipped: ${result.diagnostics?.messagesSkipped ?? 0}`)\n\n if (result.sessionId) {\n try {\n const { PreferencesManager, createDatabaseManagerAdapter, ownerProfileService } =\n await import('@openchatlab/node-runtime')\n const applied = ownerProfileService.tryApplyOwnerProfile(\n createDatabaseManagerAdapter(dbManager),\n new PreferencesManager(pathProvider.getSystemDir()),\n result.sessionId\n )\n if (applied.applied) {\n console.log(` Owner auto-detected: ${applied.ownerId}`)\n }\n } catch (ownerErr) {\n console.warn(` Owner profile apply skipped: ${ownerErr instanceof Error ? ownerErr.message : ownerErr}`)\n }\n }\n } else {\n console.error(`\\n\\nImport failed: ${result.error}`)\n process.exit(1)\n }\n } catch (err) {\n console.error(`\\n\\nImport error: ${err instanceof Error ? err.message : err}`)\n process.exit(1)\n } finally {\n dbManager.closeAll()\n }\n })\n\nprogram\n .command('formats')\n .description('List all supported chat history formats')\n .action(async () => {\n const { getSupportedFormats } = await import('./import')\n const formats = getSupportedFormats()\n console.log(`${formats.length} supported format(s):\\n`)\n for (const f of formats) {\n console.log(` ${f.id.padEnd(30)} ${f.name} (${f.platform}) [${f.extensions.join(', ')}]`)\n }\n })\n\nprogram\n .command('mcp')\n .description('Start MCP Server (stdio transport, for ClaudeCode / Cursor / AI agents)')\n .action(async () => {\n const { startCliMcpServer } = await import('./mcp')\n await startCliMcpServer()\n })\n\nprogram\n .command('chat')\n .description('Ask ChatLab AI about an imported chat session')\n .option('--session-id <id>', 'Source chat session ID')\n .option('--ai-chat-id <id>', 'Existing AI chat ID to continue')\n .option('-q, --question <text>', 'Question to ask')\n .option('--json', 'Output structured JSON')\n .option('--include-events', 'Include all agent stream chunks in JSON output')\n .option('--no-stream', 'Disable streaming output')\n .option('--locale <locale>', 'AI response locale', 'zh-CN')\n .action(async (options) => {\n const { runChatCommand } = await import('./ai/chat-command')\n const { dbManager, pathProvider } = initRuntime()\n const aiChatManager = new AIChatManager(pathProvider.getAiDataDir(), { nativeBinding: resolveNativeBinding() })\n\n try {\n await runChatCommand(\n {\n sessionId: options.sessionId,\n aiChatId: options.aiChatId,\n question: options.question,\n json: !!options.json,\n stream: options.stream,\n locale: options.locale,\n includeEvents: !!options.includeEvents,\n },\n { dbManager, pathProvider, aiChatManager }\n )\n } catch (error) {\n console.error(error instanceof Error ? error.message : String(error))\n process.exitCode = 1\n } finally {\n aiChatManager.close()\n dbManager.closeAll()\n }\n })\n\nprogram\n .command('start')\n .description('Start ChatLab (HTTP API + Web UI)')\n .option('--port <port>', 'Server port', String(DEFAULT_API_PORT))\n .option('--host <host>', 'Listen address', '127.0.0.1')\n .option('--token <token>', 'Custom Bearer Token (reads from config or auto-generates if omitted)')\n .option('--headless', 'API-only mode, do not serve the Web UI')\n .option('--require-auth', 'Require Bearer token for all routes including /_web/*')\n .option('--no-open', 'Do not auto-open the browser')\n .option('--daemon', 'Run as a resident system service (auto-start on login, macOS/Linux)')\n .action(async (options) => {\n // --daemon: install as system service and exit\n if (options.daemon) {\n const { serviceInstall } = await import('./daemon/service')\n serviceInstall({\n port: parseInt(options.port, 10),\n host: options.host,\n token: options.token || undefined,\n headless: options.headless,\n requireAuth: options.requireAuth || undefined,\n })\n return\n }\n\n const { startHttpServer } = await import('./http')\n const port = parseInt(options.port, 10)\n\n let webRoot: string | undefined\n if (!options.headless) {\n const webDir = resolveCliPath('dist-web')\n if (fs.existsSync(webDir)) {\n webRoot = webDir\n } else {\n console.warn('Warning: dist-web/ not found, starting in API-only mode')\n }\n }\n\n try {\n // 启动前预检端口,快速失败,避免无谓的初始化后再报 EADDRINUSE;\n // 置于 try 内确保非 EADDRINUSE 错误(EACCES/EADDRNOTAVAIL 等)\n // 也能走到统一的 Startup failed 错误处理路径。\n if (!(await isPortAvailable(port, options.host))) {\n console.error(formatPortInUseError(port))\n process.exit(1)\n }\n\n const info = await startHttpServer({\n port,\n host: options.host,\n token: options.token || undefined,\n webRoot,\n requireAuth: options.requireAuth || undefined,\n })\n\n const { startPeriodicUpdateCheck } = await import('./update-checker')\n startPeriodicUpdateCheck()\n\n const displayHost = info.host === '0.0.0.0' ? '127.0.0.1' : info.host\n const url = `http://${displayHost}:${info.port}`\n\n console.log(`\\nChatLab v${getVersion()}`)\n if (webRoot) console.log(` Web UI: ${url}/`)\n console.log(` API: ${url}`)\n console.log(` Token: ${info.token}`)\n console.log(`\\nExample:`)\n console.log(` curl -H \"Authorization: Bearer ${info.token}\" ${url}/api/v1/status`)\n\n if (webRoot && options.open) {\n openBrowser(url)\n console.log(`\\nBrowser opened. Press Ctrl+C to stop.\\n`)\n } else {\n console.log(`\\nPress Ctrl+C to stop.\\n`)\n }\n\n const shutdown = async () => {\n console.log('\\nShutting down...')\n const { stopHttpServer } = await import('./http')\n await stopHttpServer()\n process.exit(0)\n }\n\n process.on('SIGINT', shutdown)\n process.on('SIGTERM', shutdown)\n } catch (err: unknown) {\n const message = err instanceof Error ? err.message : String(err)\n if (message.includes('EADDRINUSE')) {\n // 极低概率的 TOCTOU 竞态(预检通过后端口被占),复用统一文案\n console.error(formatPortInUseError(port))\n } else {\n console.error(`Startup failed: ${message}`)\n }\n process.exit(1)\n }\n })\n\nconst configCmd = program.command('config').description('Configuration management')\n\nconfigCmd\n .command('path')\n .description('Show config file path')\n .action(() => {\n console.log(getConfigPath())\n })\n\nconfigCmd\n .command('show')\n .description('Show current configuration')\n .action(() => {\n const config = loadConfig()\n console.log(JSON.stringify(config, null, 2))\n })\n\nprogram\n .command('stop')\n .description('Stop the resident service and remove auto-start (reverse of start --daemon)')\n .action(async () => {\n const { serviceUninstall } = await import('./daemon/service')\n serviceUninstall()\n })\n\nprogram\n .command('status')\n .description('Show resident service status')\n .action(async () => {\n const { getServiceStatus } = await import('./daemon/service')\n const svc = getServiceStatus()\n\n console.log('\\nChatLab Status')\n console.log('─'.repeat(36))\n\n if (svc.installed) {\n const portStr = svc.port ? `http://${svc.host ?? '127.0.0.1'}:${svc.port}` : ''\n console.log(` Service: ${svc.running ? 'running' : 'installed (not running)'}`)\n if (portStr) console.log(` Address: ${portStr}`)\n console.log(` Auto-start: enabled`)\n console.log(`\\n Use \\`chatlab stop\\` to remove the service.\\n`)\n } else {\n console.log(` Service: not installed`)\n console.log(` Auto-start: disabled`)\n console.log(`\\n Use \\`chatlab start --daemon\\` to install as a system service.\\n`)\n }\n })\n\n// --- 工具函数 ---\n\nfunction openBrowser(url: string): void {\n try {\n const cmd =\n process.platform === 'darwin'\n ? `open \"${url}\"`\n : process.platform === 'win32'\n ? `start \"\" \"${url}\"`\n : `xdg-open \"${url}\"`\n execSync(cmd, { stdio: 'ignore' })\n } catch {\n console.log(` Open manually: ${url}`)\n }\n}\n\n/**\n * Resolve standalone better-sqlite3 native module path.\n * Used in non-Electron environments to avoid electron-rebuild conflicts.\n */\nfunction resolveNativeBinding(): string | undefined {\n if (process.versions.electron) return undefined\n const nativePath = resolveCliPath('native/better_sqlite3.node')\n if (fs.existsSync(nativePath)) return nativePath\n return undefined\n}\n\nfunction initRuntime() {\n let config = loadConfig()\n const pendingMigration = applyPendingNodeDataDirMigrationIfNeeded()\n if (!pendingMigration.skipped) {\n if (pendingMigration.success) {\n console.log('[Migration] Pending data directory migration completed')\n config = loadConfig()\n } else {\n console.error('[Migration] Pending data directory migration failed:', pendingMigration.error)\n }\n }\n const userDataDir = config.data.user_data_dir || undefined\n const pathProvider = new NodePathProvider(userDataDir)\n pathProvider.ensureAllDirs()\n const runtime = assertCliDataDirCompatible(pathProvider, 'cli')\n\n if (hasPendingElectronDataWarning() || !verifyCliDataPath(pathProvider.getDatabaseDir())) {\n printElectronDataError()\n process.exit(1)\n }\n\n const nativeBinding = resolveNativeBinding()\n const dbManager = new DatabaseManager(pathProvider, { nativeBinding, runtime })\n return { config, pathProvider, dbManager }\n}\n\nfunction printElectronDataError(): void {\n console.error('\\n' + '='.repeat(68))\n console.error(' ChatLab: Electron desktop data not found')\n console.error('='.repeat(68))\n console.error('')\n console.error(' Detected that ChatLab desktop app was installed on this machine,')\n console.error(' but could not locate your chat databases.')\n console.error('')\n console.error(' This usually means you changed the data directory in desktop settings.')\n console.error('')\n console.error(' To fix this, choose one of:')\n console.error('')\n console.error(' 1. Open ChatLab desktop app — it will auto-migrate your data')\n console.error(' 2. Set the data directory manually:')\n console.error(' export CHATLAB_DATA_DIR=\"/path/to/your/data\"')\n console.error(' 3. Edit ~/.chatlab/config.toml:')\n console.error(' [data]')\n console.error(' user_data_dir = \"/path/to/your/data\"')\n console.error('')\n console.error('='.repeat(68) + '\\n')\n}\n\nfunction formatTimeRange(first: number | null, last: number | null): string {\n if (!first || !last) return 'Unknown'\n const from = new Date(first * 1000).toLocaleDateString()\n const to = new Date(last * 1000).toLocaleDateString()\n return `${from} ~ ${to}`\n}\n\nfunction printTable(columns: string[], rows: Record<string, unknown>[]): void {\n const widths = columns.map((col) => {\n const maxData = rows.reduce((max, row) => {\n const val = String(row[col] ?? '')\n return Math.max(max, val.length)\n }, 0)\n return Math.max(col.length, Math.min(maxData, 40))\n })\n\n const header = columns.map((col, i) => col.padEnd(widths[i])).join(' | ')\n const separator = widths.map((w) => '-'.repeat(w)).join('-+-')\n console.log(header)\n console.log(separator)\n\n for (const row of rows) {\n const line = columns\n .map((col, i) => {\n const val = String(row[col] ?? '')\n return val.length > 40 ? val.slice(0, 37) + '...' : val.padEnd(widths[i])\n })\n .join(' | ')\n console.log(line)\n }\n}\n\n/** CLI entry function */\nexport function run(argv?: string[]): void {\n program.parse(argv)\n}\n\n// Auto-execute when run directly as a script\nconst isDirectRun = process.argv[1]?.endsWith('cli.ts') || process.argv[1]?.endsWith('cli.js')\nif (isDirectRun) {\n run()\n}\n","/**\n * 端口可用性检测与错误文案\n */\n\nimport * as net from 'net'\n\n/**\n * 检测指定端口在给定 host 上是否可用。\n * 使用 net.createServer() 试探性绑定,无副作用(成功后立即释放)。\n */\nexport function isPortAvailable(port: number, host: string): Promise<boolean> {\n return new Promise((resolve, reject) => {\n const server = net.createServer()\n server.once('error', (err: NodeJS.ErrnoException) => {\n if (err.code === 'EADDRINUSE') {\n resolve(false)\n } else {\n reject(err)\n }\n })\n server.once('listening', () => server.close(() => resolve(true)))\n server.listen(port, host)\n })\n}\n\n/**\n * 返回端口被占用时统一的友好报错文案。\n */\nexport function formatPortInUseError(port: number): string {\n return [\n ``,\n ` ✖ Error: port ${port} is already in use.`,\n ``,\n ` Another process (possibly a ChatLab instance) is using this port. You can:`,\n ` • Use another port: chatlab start --port <port>`,\n ` • Find the process: lsof -iTCP:${port} -sTCP:LISTEN`,\n ``,\n ].join('\\n')\n}\n"],"mappings":"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","names":[]}
|