chatlab-cli 0.31.3 → 0.32.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/dist/{chat-command-ZIXKNLSE.mjs → chat-command-3KUWKS53.mjs} +4 -4
- package/dist/{chunk-FDLLEDNW.mjs → chunk-27DWKA3L.mjs} +2 -2
- package/dist/{chunk-MFOCDGCC.mjs → chunk-3IGBPOJM.mjs} +118 -17
- package/dist/chunk-3IGBPOJM.mjs.map +1 -0
- package/dist/{chunk-UIUEG7JB.mjs → chunk-CANPJOIE.mjs} +9 -9
- package/dist/{chunk-75FZ26HM.mjs → chunk-LNU4RW5G.mjs} +17 -6
- package/dist/chunk-LNU4RW5G.mjs.map +1 -0
- package/dist/{chunk-GZO3NAHC.mjs → chunk-PZM3FHVZ.mjs} +56 -7
- package/dist/chunk-PZM3FHVZ.mjs.map +1 -0
- package/dist/{chunk-EINCXXWY.mjs → chunk-UVCH2ICD.mjs} +2 -2
- package/dist/cli.mjs +4 -4
- package/dist/{http-WDG2OHOV.mjs → http-YR26GF7X.mjs} +6 -6
- package/dist/{import-4BDC37F7.mjs → import-Q3DUACU4.mjs} +4 -4
- package/dist/index.mjs +6 -6
- package/dist/{mcp-4KUVRGFF.mjs → mcp-HTVZSGTI.mjs} +3 -3
- package/dist/semantic-index-worker.mjs +1 -1
- package/dist/{src-ZOCLFBCJ.mjs → src-HJL7YZZJ.mjs} +11 -3
- package/dist/{stream-import-ERTT7U6V.mjs → stream-import-MXETSEPW.mjs} +4 -4
- package/dist/{worker-runtime-2TUZHV7W.mjs → worker-runtime-DZQDL2E2.mjs} +2 -2
- package/dist-web/assets/{ActionToolsPanel.vue_vue_type_script_setup_true_lang-GgQ5ueMX.js → ActionToolsPanel.vue_vue_type_script_setup_true_lang-DfQa9E2W.js} +5 -5
- package/dist-web/assets/{BufferResource-DgKoy0Ii.js → BufferResource-BXfwfGam.js} +1 -1
- package/dist-web/assets/{CanvasRenderer-CKpp71xg.js → CanvasRenderer-Bvpsbxds.js} +1 -1
- package/dist-web/assets/DataDirCleanupNotice-C0sCmNL2.js +1 -0
- package/dist-web/assets/{EChartWordcloud-CSOuFvyM.js → EChartWordcloud-C5hLT1vS.js} +1 -1
- package/dist-web/assets/{Filter-D32zqY5x.js → Filter-Irxx0f6j.js} +1 -1
- package/dist-web/assets/{LoadingState.vue_vue_type_script_setup_true_lang-DUAtrSZD.js → LoadingState.vue_vue_type_script_setup_true_lang-8s6XRB3S.js} +1 -1
- package/dist-web/assets/{MessageExportModal-BYLw4vZ8.js → MessageExportModal-tTI358HU.js} +1 -1
- package/dist-web/assets/{PageHeader-Dmu6cdAk.js → PageHeader-D5QQI9io.js} +1 -1
- package/dist-web/assets/{RelationshipGalaxyCanvas-DsMOubHV.js → RelationshipGalaxyCanvas-ByDU6ZS_.js} +3 -3
- package/dist-web/assets/{RelationshipGalaxyThreeCanvas-Dh5HjVHr.js → RelationshipGalaxyThreeCanvas-DgAlyKjc.js} +1 -1
- package/dist-web/assets/{RenderTargetSystem-CovK4x_D.js → RenderTargetSystem-Cx5U5HAM.js} +1 -1
- package/dist-web/assets/{ThemeCard.vue_vue_type_script_setup_true_lang-DhUfYrEx.js → ThemeCard.vue_vue_type_script_setup_true_lang-CpNjFhpm.js} +1 -1
- package/dist-web/assets/{TimeSelect.vue_vue_type_script_setup_true_lang-CaumhCAS.js → TimeSelect.vue_vue_type_script_setup_true_lang-DtCKfbaz.js} +1 -1
- package/dist-web/assets/{WebGLRenderer-CawhbcYU.js → WebGLRenderer-B3Fnp1WX.js} +1 -1
- package/dist-web/assets/{WebGPURenderer-B7P1D2sA.js → WebGPURenderer-DZ0X9N86.js} +1 -1
- package/dist-web/assets/{annual-summary-time-range-Bya4h2j6.js → annual-summary-time-range-CvG74N2l.js} +1 -1
- package/dist-web/assets/{base-ClGWE9aq.js → base-DdQRTliS.js} +1 -1
- package/dist-web/assets/{browserAll-CtQkc1DF.js → browserAll-BqC9ELNO.js} +1 -1
- package/dist-web/assets/{dateFormat-Cfb89ZjM.js → dateFormat-CX9atL2g.js} +1 -1
- package/dist-web/assets/{electron-Brd7jS6W.js → electron-ChQkD5ht.js} +1 -1
- package/dist-web/assets/{fetch-BoB63ns8.js → fetch-3Ifr5YJN.js} +1 -1
- package/dist-web/assets/fetch-74o_kRZf.js +1 -0
- package/dist-web/assets/{fetch-DWoMmOlr.js → fetch-BKFznq4l.js} +1 -1
- package/dist-web/assets/{fetch-Dr_Fjtvp.js → fetch-BPj6IlT-.js} +1 -1
- package/dist-web/assets/{fetch-DkfUUq-R.js → fetch-C3KuMfIU.js} +1 -1
- package/dist-web/assets/{fetch-DVGCzZ0E.js → fetch-CUT9JdXT.js} +1 -1
- package/dist-web/assets/{fetch-BtK7YvLp.js → fetch-CoYaXr5K.js} +1 -1
- package/dist-web/assets/{fetch-CeREJiFL.js → fetch-Dcg6Q6Ei.js} +1 -1
- package/dist-web/assets/{fetch-u7ivV7Uy.js → fetch-DxWfYzkB.js} +1 -1
- package/dist-web/assets/{fetch-D2hvh7lO.js → fetch-th_egarZ.js} +1 -1
- package/dist-web/assets/index-B3riRaJA.js +1 -0
- package/dist-web/assets/index-BRDdozcm.js +173 -0
- package/dist-web/assets/{index-DnkaYOFI.js → index-Bg-OiHMa.js} +1 -1
- package/dist-web/assets/{index-DJ8kB4US.js → index-BhewGKey.js} +2 -2
- package/dist-web/assets/{index-CuPE4SSh.js → index-Bm_U0hSr.js} +1 -1
- package/dist-web/assets/{index-DcAqhCpS.js → index-BpeJ40uK.js} +1 -1
- package/dist-web/assets/{index-w_1EjXiF.js → index-C6bwt1H4.js} +1 -1
- package/dist-web/assets/{index-BXaKyn8J.js → index-CEJqRkis.js} +2 -2
- package/dist-web/assets/{index-BzH9cnfy.js → index-CKLCaqdT.js} +1 -1
- package/dist-web/assets/{index-D494nYee.js → index-Ds5PiVyB.js} +3 -3
- package/dist-web/assets/{index-DSPls1YV.js → index-GXMxhYc9.js} +1 -1
- package/dist-web/assets/index-JyB6Cr8r.js +25 -0
- package/dist-web/assets/index-UJl03IYE.css +1 -0
- package/dist-web/assets/{index-BHnQaeQY.js → index-tx-Oal36.js} +1 -1
- package/dist-web/assets/{people-page-header-YGQM9G53.js → people-page-header-DGkK0AMO.js} +1 -1
- package/dist-web/assets/{vendor-nuxt-ui-DmkGVKod.js → vendor-nuxt-ui-DMdbdSFy.js} +2 -2
- package/dist-web/assets/{vendor-reka-ui-BkhadcDj.js → vendor-reka-ui-8_x7iKfi.js} +1 -1
- package/dist-web/assets/{web-zXxtk2KZ.js → web-aZcioccr.js} +1 -1
- package/dist-web/assets/{webworkerAll-BzRoT-6m.js → webworkerAll-a_fveCLR.js} +1 -1
- package/dist-web/index.html +4 -4
- package/package.json +1 -1
- package/dist/chunk-75FZ26HM.mjs.map +0 -1
- package/dist/chunk-GZO3NAHC.mjs.map +0 -1
- package/dist/chunk-MFOCDGCC.mjs.map +0 -1
- package/dist-web/assets/fetch-BJ3lnhzK.js +0 -1
- package/dist-web/assets/index-D-qNxFxp.js +0 -173
- package/dist-web/assets/index-DNMWR2Vj.js +0 -1
- package/dist-web/assets/index-_UKteDZB.js +0 -25
- package/dist-web/assets/index-gi0wgh0M.css +0 -1
- /package/dist/{chat-command-ZIXKNLSE.mjs.map → chat-command-3KUWKS53.mjs.map} +0 -0
- /package/dist/{chunk-FDLLEDNW.mjs.map → chunk-27DWKA3L.mjs.map} +0 -0
- /package/dist/{chunk-UIUEG7JB.mjs.map → chunk-CANPJOIE.mjs.map} +0 -0
- /package/dist/{chunk-EINCXXWY.mjs.map → chunk-UVCH2ICD.mjs.map} +0 -0
- /package/dist/{http-WDG2OHOV.mjs.map → http-YR26GF7X.mjs.map} +0 -0
- /package/dist/{import-4BDC37F7.mjs.map → import-Q3DUACU4.mjs.map} +0 -0
- /package/dist/{mcp-4KUVRGFF.mjs.map → mcp-HTVZSGTI.mjs.map} +0 -0
- /package/dist/{src-ZOCLFBCJ.mjs.map → src-HJL7YZZJ.mjs.map} +0 -0
- /package/dist/{stream-import-ERTT7U6V.mjs.map → stream-import-MXETSEPW.mjs.map} +0 -0
- /package/dist/{worker-runtime-2TUZHV7W.mjs.map → worker-runtime-DZQDL2E2.mjs.map} +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-
|
|
2
|
-
import{W as Ua,X as ia,d as Ie,
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-JyB6Cr8r.js","assets/vendor-reka-ui-8_x7iKfi.js","assets/vendor-nuxt-ui-DMdbdSFy.js","assets/vendor-snapdom--nZvo8Sg.js","assets/index-UJl03IYE.css","assets/EChartWordcloud-C5hLT1vS.js","assets/vendor-echarts-wordcloud-Ca8n6qS6.js","assets/vendor-echarts-B-i_56Av.js","assets/vendor-zrender-5DcYjSZk.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{W as Ua,X as ia,d as Ie,x as wt,m as Oe,u as ye,q as Je,S as Wt,j as ct,v as et,k as ca,Y as Yt,Z as da,z as ua,o as tt,T as nt,t as Ne,$ as Ba,a0 as gt,a1 as Fa,a2 as vt,a3 as Va,a4 as yt,B as Qt,A as $t,M as st,a5 as bt,a6 as Na,g as sa,b as Ha,s as Oa,D as Wa,a7 as Ya,a8 as Qa,y as Ka,w as Ga,r as Ja,a9 as Xa,aa as Za,n as es,ab as ts,ac as as,G as na}from"./index-JyB6Cr8r.js";import{D as Qe,w as de,c as x,r as f,x as Ve,d as ge,P as n,Z as i,U as u,Q as K,T as F,Y as mt,ag as e,_ as se,a0 as s,a1 as E,aa as Ke,$ as ee,u as a,ad as oe,ae as ce,bT as He,bU as rt,n as Fe,bS as lt,ak as Be,bV as ot,S as jt,a3 as Pt,b_ as ss,bX as it,F as Ct,O as dt,f as ns,bW as ma,aG as os}from"./vendor-reka-ui-8_x7iKfi.js";import{_ as _e,a as Pe,b as We,e as Kt,g as Gt,p as Jt,n as rs,d as St,l as ga,i as pt,q as ls,o as pa,r as is,j as cs,k as ds}from"./vendor-nuxt-ui-DMdbdSFy.js";import{a as ht,M as Xt,_ as us}from"./index-Bm_U0hSr.js";import{_ as at}from"./ThemeCard.vue_vue_type_script_setup_true_lang-CpNjFhpm.js";import{C as ms,a as Tt,_ as Ze,g as Ut}from"./base-DdQRTliS.js";import{f as gs,d as oa}from"./dateFormat-CX9atL2g.js";import{u as Mt,p as ha,z as va,j as Zt,v as ya,i as It,k as Dt,A as ps,m as hs,n as vs,t as ys}from"./vendor-echarts-B-i_56Av.js";import"./vendor-echarts-wordcloud-Ca8n6qS6.js";import{_ as kt}from"./LoadingState.vue_vue_type_script_setup_true_lang-8s6XRB3S.js";import{_ as fs}from"./TimeSelect.vue_vue_type_script_setup_true_lang-DtCKfbaz.js";import{P as xs}from"./PageHeader-D5QQI9io.js";const bs={none:[],qwen:["default","off","high"],deepseek_v4:["default","off","high","xhigh"],deepseek_hybrid:["default","off","auto"],o_series:["default","low","medium","high"],gpt5:["default","minimal","low","medium","high"],gpt5_1:["default","off","low","medium","high"],gpt5_2plus:["default","off","minimal","low","medium","high","xhigh"],grok:["default","low","high"],kimi:["default","off","auto","low","medium","high"],doubao:["default","off","auto","high"],hunyuan:["default","off","high"],gemini:["default","off","low","medium","high"],default:["default","off","low","medium","high"]},ra=/^(?!.*-non-reasoning\b)(o\d+(?:-[\w-]+)?|.*\b(?:reasoning|reasoner|thinking|think)\b.*|.*-[rR]\d+.*|.*\bqwq(?:-[\w-]+)?\b.*|.*\bhunyuan-t1(?:-[\w-]+)?\b.*|.*\bgrok-(?:3-mini|4|4-fast|build)(?:-[\w-]+)?\b.*)$/i;function ks(l,o){const t=o.toLowerCase(),c=l.toLowerCase();if(t.includes("-non-reasoning")||c==="anthropic")return"none";if(c==="gemini")return/gemini-(?:2\.5|3(?:\.\d+)?-(?:flash|pro)|flash-latest|pro-latest)/i.test(t)?"gemini":"none";if(c==="qwen"||/\bqwen|qwq/i.test(t))return"qwen";if(/deepseek[_-]v([4-9]|\d{2,})/i.test(t)||/deepseek-ai\/deepseek-r1/i.test(t))return"deepseek_v4";if(/deepseek[_-]chat|deepseek[_-]v3/i.test(t))return"deepseek_hybrid";if(c==="openai"||c==="openai-compatible"){if(/gpt-5\.[2-9]|gpt-5\.[1-9]\d/.test(t))return"gpt5_2plus";if(/gpt-5\.1/.test(t))return"gpt5_1";if(/gpt-5/.test(t))return"gpt5";if(/^o\d/.test(t))return"o_series"}return/^o\d/.test(t)?"o_series":/\bgrok-(?:3-mini|4|4-fast|build)\b/i.test(t)?"grok":/\bkimi-k(?:2-thinking|2\.[5-9]|[3-9])/i.test(t)||c==="kimi"&&/thinking/i.test(t)?"kimi":/\bdoubao-.*seed/i.test(t)||c==="doubao"&&/seed/i.test(t)?"doubao":/\bhunyuan-(?:t1|a13b)/i.test(t)?"hunyuan":c==="glm"||/\bglm-?(?:5|4\.[5-7]|z1|zero)/i.test(t)?"qwen":c==="siliconflow"&&/r[1-9]/i.test(t)?"deepseek_v4":c==="openrouter"?/deepseek.*(v[4-9]|r\d)/i.test(t)?"deepseek_v4":/deepseek[_-]?(chat|v3)/i.test(t)?"deepseek_hybrid":/\bgrok-(?:3-mini|4|4-fast|build)\b/i.test(t)?"grok":/\bkimi-k(?:2-thinking|2\.[5-9]|[3-9])/i.test(t)?"kimi":ra.test(t)?"default":"none":/\bmimo-v2/i.test(t)||/\bminimax-m[123]/i.test(t)||/\bseed-oss/i.test(t)?"deepseek_hybrid":/\bbaichuan-m[23]/i.test(t)||/\bmagistral/i.test(t)||/\bmistral-small-2603/i.test(t)||/\bstep-(?:3|r1-v-mini)/i.test(t)||/\bgemma-?4/i.test(t)||/\bpangu-pro-moe/i.test(t)||/\bsonar-deep-research/i.test(t)||/\bring-(?:1t|mini|flash)/i.test(t)?"default":/\bqwen|qwq/i.test(t)?"qwen":/deepseek[_-]?r\d|deepseek[_-]?v[4-9]/i.test(t)?"deepseek_v4":/^o\d/i.test(t)?"o_series":ra.test(t)?"default":"none"}function _s(l,o){const t=ks(l,o);return bs[t]}function ws(l,o,t,c="group",r="zh-CN"){const m=Ua(),{chatKey:g,state:d}=m.ensureSessionState({sessionId:l,sessionName:o,timeFilter:t,chatType:c,locale:r});return m.resetToSelectorOnEnter(g),m.applySessionAssistantSelection(g),{messages:Qe(d,"messages"),sourceMessages:Qe(d,"sourceMessages"),currentKeywords:Qe(d,"currentKeywords"),isLoadingSource:Qe(d,"isLoadingSource"),isAIThinking:Qe(d,"isAIThinking"),currentAIChatId:Qe(d,"currentAIChatId"),currentToolStatus:Qe(d,"currentToolStatus"),toolsUsedInCurrentRound:Qe(d,"toolsUsedInCurrentRound"),sessionTokenUsage:Qe(d,"sessionTokenUsage"),agentStatus:Qe(d,"agentStatus"),selectedAssistantId:Qe(d,"selectedAssistantId"),sendMessage:(p,h)=>m.sendMessage(g,p,h),editMessageAndRegenerate:(p,h,y)=>m.editMessageAndRegenerate(g,p,h,y),loadAIChat:p=>m.loadAIChat(g,p),startNewAIChat:p=>m.startNewAIChat(g,p),loadMoreSourceMessages:()=>m.loadMoreSourceMessages(),updateMaxMessages:()=>m.updateMaxMessages(),stopGeneration:()=>m.stopGeneration(g),selectAssistantForSession:p=>m.selectAssistantForSession(g,p)}}const zt=new Map;function $s(l,o,t){const{activeTab:c,isInitialLoad:r,currentSessionId:m,onTimeRangeChange:g}=t,d=f(null),p=f(null),h=f([]),y=x(()=>{const L=d.value;if(L)return{startTs:L.startTs,endTs:L.endTs}}),T=x(()=>{const L=d.value;return L?`${L.startTs}-${L.endTs}`:"init"}),M=x(()=>{const L=l.query,z=L.timeMode;return z?{mode:z,recentDays:L.timeDays?Number(L.timeDays):void 0,year:L.timeYear?Number(L.timeYear):void 0,quarterYear:L.timeYear?Number(L.timeYear):void 0,quarter:L.timeQuarter?Number(L.timeQuarter):void 0,customStart:L.timeStart||void 0,customEnd:L.timeEnd||void 0}:m.value&&zt.has(m.value)?zt.get(m.value):{mode:"recent",recentDays:365}});de([c,d],([L,z])=>{if(r.value||!z)return;const $=z.state,I={tab:L,timeMode:$.mode,timeDays:void 0,timeYear:void 0,timeQuarter:void 0,timeStart:void 0,timeEnd:void 0};$.mode==="recent"&&(I.timeDays=$.recentDays),$.mode==="year"&&(I.timeYear=$.year),$.mode==="quarter"&&(I.timeYear=$.quarterYear,I.timeQuarter=$.quarter),$.mode==="custom"&&(I.timeStart=$.customStart,I.timeEnd=$.customEnd),o.replace({query:{...l.query,...I}})}),de(d,L=>{!L||!m.value||(ia(),zt.set(m.value,L.state),g?.())},{immediate:!0});function C(){d.value=null,p.value=null,h.value=[]}return{timeRangeValue:d,fullTimeRange:p,availableYears:h,timeFilter:y,timeFilterKey:T,initialTimeState:M,resetTimeRange:C}}function Cs(l){return l.content.trim()?l.content:l.contentBlocks?.filter(t=>t.type==="text"&&!!t.text).map(t=>t.text).join("")??""}function Bt(l){return l.flatMap(o=>{if(o.role!=="user"&&o.role!=="assistant")return[];const t=Cs(o);return t.trim()?[{role:o.role,content:t,timestamp:o.timestamp}]:[]})}function Ss(l){return Bt(l).length>0}function Ts(l,o,t,c){const r=[];r.push(`# ${l}`),r.push(""),r.push(`> ${c.createdAt}: ${Ie(t).format("YYYY-MM-DD HH:mm:ss")}`),r.push(""),r.push("---"),r.push("");for(const m of o){const g=Ie(m.timestamp).format("YYYY-MM-DD HH:mm:ss"),d=m.role==="user"?c.user:c.assistant;r.push(`### ${d}`),r.push(`*${g}*`),r.push(""),r.push(m.content),r.push(""),r.push("---"),r.push("")}return r.join(`
|
|
3
3
|
`)}function Ms(l,o,t,c){const r=[];r.push(`${l}`),r.push(`${c.createdAt}: ${Ie(t).format("YYYY-MM-DD HH:mm:ss")}`),r.push(""),r.push("=".repeat(50)),r.push("");for(const m of o){const g=Ie(m.timestamp).format("YYYY-MM-DD HH:mm:ss"),d=m.role==="user"?c.user:c.assistant;r.push(`[${d}] ${g}`),r.push(""),r.push(m.content),r.push(""),r.push("-".repeat(50)),r.push("")}return r.join(`
|
|
4
|
-
`)}function Is(l){return l.replace(/[/\\?%*:|"<>]/g,"_")}async function Ds(l,o,t,c,r){if(o.length===0)return{success:!1,error:"No messages to export"};let m,g;const d=Ie(t).format("YYYYMMDD_HHmmss"),p=Is(l);c==="markdown"?(m=Ts(l,o,t,r),g=`${p}_${d}.md`):(m=Ms(l,o,t,r),g=`${p}_${d}.txt`);const h=`data:text/plain;charset=utf-8,${encodeURIComponent(m)}`,{useCacheService:y}=await wt(async()=>{const{useCacheService:M}=await import("./index-
|
|
5
|
-
`)}function As(l){const o=l.rows.map(t=>{const c={};return l.columns.forEach((r,m)=>{c[r]=t[m]}),c});return JSON.stringify(o,null,2)}async function zs(l,o){if(l.rows.length===0)return{success:!1,error:"No data to export"};const c=`sql_result_${Ie().format("YYYYMMDD_HHmmss")}.${o}`;let r,m;o==="json"?(r=As(l),m="application/json"):(r=Ls(l),m="text/csv");const g=`data:${m};charset=utf-8,${encodeURIComponent(r)}`,{useCacheService:d}=await wt(async()=>{const{useCacheService:h}=await import("./index-_UKteDZB.js").then(y=>y.ae);return{useCacheService:h}},__vite__mapDeps([0,1,2,3,4]));return await d().saveToDownloads(c,g)}function fk(l){const{route:o,router:t,currentSessionId:c,selectSession:r,defaultTab:m,validTabIds:g}=l,d=f(!0),p=f(!0),h=f(null),y=f([]),T=f([]),M=f([]),C=f([]);function L(){const k=o.query.tab;return k&&g.includes(k)?k:m}const z=f(L()),{timeRangeValue:$,fullTimeRange:I,availableYears:w,timeFilter:S,initialTimeState:v}=$s(o,t,{activeTab:z,isInitialLoad:p,currentSessionId:c,onTimeRangeChange:()=>j()});function _(){const k=o.params.id;k&&(r(k),c.value!==k&&t.replace("/"))}async function A(){if(c.value)try{const k=await Oe().getSession(c.value);h.value=k}catch(k){console.error("加载基础数据失败:",k)}}async function j(){if(c.value){d.value=!0;try{const k=S.value,b=Oe(),[q,Y,W,J]=await Promise.all([b.getMemberActivity(c.value,k),b.getHourlyActivity(c.value,k),b.getDailyActivity(c.value,k),b.getMessageTypeDistribution(c.value,k)]);y.value=q,T.value=Y,M.value=W,C.value=J}catch(k){console.error("加载分析数据失败:",k)}finally{d.value=!1}}}async function U(){c.value&&(p.value=!0,await A(),p.value=!1)}return de(()=>o.params.id,()=>{z.value=L(),_()}),de(()=>o.query.tab,()=>{z.value=L()}),de(c,()=>{ia(),U()},{immediate:!0}),Ve(()=>{_()}),{activeTab:z,isLoading:d,isInitialLoad:p,session:h,memberActivity:y,hourlyActivity:T,dailyActivity:M,messageTypes:C,timeRangeValue:$,fullTimeRange:I,availableYears:w,timeFilter:S,initialTimeState:v,syncSession:_,loadData:U,loadAnalysisData:j}}const qs={class:"pointer-events-none absolute right-3 top-3 z-50 opacity-0 transition-opacity duration-200 group-hover/card:pointer-events-auto group-hover/card:opacity-100"},Rs=ge({__name:"CardCaptureOverlay",setup(l){return(o,t)=>(n(),i("div",qs,[u(ht,{type:"element","target-selector":"[data-capturable-card]",size:"xs"})]))}}),Lt=ge({__name:"ReportCard",setup(l){return(o,t)=>(n(),K(at,{"data-capturable-card":"",class:"group/card relative isolate flex flex-col"},{default:F(()=>[u(ms),u(Rs),mt(o.$slots,"default")]),_:3}))}}),Es={class:"flex items-center justify-between"},js={class:"font-semibold text-gray-900 dark:text-white whitespace-nowrap"},Ps={key:0,class:"mt-1 text-sm text-gray-500 dark:text-gray-400"},Us={class:"flex items-center gap-2"},Bs={key:0,class:"pointer-events-none opacity-0 transition-opacity duration-200 group-hover/card:pointer-events-auto group-hover/card:opacity-100"},Ye=ge({__name:"SectionCard",props:{title:{},description:{},capturable:{type:Boolean,default:!0},showDivider:{type:Boolean,default:!0},scrollable:{type:Boolean,default:!1},maxHeightVh:{default:60}},setup(l){const o=l,t=x(()=>{if(o.scrollable)return{maxHeight:`${o.maxHeightVh}vh`,overflowY:"auto"}});return(c,r)=>(n(),K(at,{class:"group/card","data-section-card":""},{default:F(()=>[e("div",{class:se(["px-5 py-3",{"border-b border-gray-200 dark:border-white/5":l.showDivider&&c.$slots.default}])},[e("div",Es,[e("div",null,[e("p",js,s(l.title),1),l.description?(n(),i("p",Ps,s(l.description),1)):E("",!0)]),e("div",Us,[mt(c.$slots,"headerRight"),l.capturable?(n(),i("div",Bs,[u(ht,{type:"element","target-selector":"[data-section-card]",size:"xs"})])):E("",!0)])])],2),l.scrollable?(n(),i("div",{key:0,style:Ke(t.value)},[mt(c.$slots,"default")],4)):mt(c.$slots,"default",{key:1}),mt(c.$slots,"footer")]),_:3}))}}),Fs={class:"flex items-start justify-between"},Vs={class:"min-w-0 flex-1"},Ns={class:"text-sm font-medium text-gray-500 dark:text-gray-400"},Hs={key:1,class:"text-xl"},Os={key:0,class:"mt-4 flex items-center text-sm"},Ws={class:"text-gray-500 dark:text-gray-400"},Xe=ge({__name:"StatCard",props:{label:{},value:{},valueColor:{},subtext:{},icon:{},iconBg:{}},setup(l){const o={pink:"text-pink-600 dark:text-pink-400",amber:"text-amber-600 dark:text-amber-400",blue:"text-blue-600 dark:text-blue-400",green:"text-green-600 dark:text-green-400",red:"text-red-600 dark:text-red-400",gray:"text-gray-900 dark:text-white"},t={pink:"bg-pink-100 dark:bg-pink-500/10",amber:"bg-amber-100 dark:bg-amber-500/10",blue:"bg-blue-100 dark:bg-blue-500/10",green:"bg-green-100 dark:bg-green-500/10",red:"bg-red-100 dark:bg-red-500/10",gray:"bg-gray-100 dark:bg-white/5"};return(c,r)=>{const m=_e;return n(),K(at,{class:"p-5"},{default:F(()=>[e("div",Fs,[e("div",Vs,[e("p",Ns,s(l.label),1),e("p",{class:se(["mt-2 truncate text-2xl font-bold tracking-tight",l.valueColor?o[l.valueColor]:"text-gray-900 dark:text-white"])},s(l.value),3)]),l.icon?(n(),i("div",{key:0,class:se(["ml-4 flex h-10 w-10 shrink-0 items-center justify-center rounded-xl",t[l.iconBg||"gray"]])},[l.icon.startsWith("i-")?(n(),K(m,{key:0,name:l.icon,class:"h-5 w-5"},null,8,["name"])):(n(),i("span",Hs,s(l.icon),1))],2)):E("",!0)]),l.subtext||c.$slots.subtext?(n(),i("div",Os,[mt(c.$slots,"subtext",{},()=>[e("span",Ws,s(l.subtext),1)])])):E("",!0)]),_:3})}}}),Ys={key:0,class:"mb-2 block text-2xl"},xk=ge({__name:"EmptyState",props:{text:{},icon:{},padding:{}},setup(l){const o={sm:"px-4 py-4",md:"px-5 py-8",lg:"px-6 py-12"};return(t,c)=>(n(),i("div",{class:se(["text-center text-sm text-gray-400",o[l.padding||"md"]])},[l.icon?(n(),i("span",Ys,s(l.icon),1)):E("",!0),ee(" "+s(l.text||"暂无数据"),1)],2))}}),Qs={"zh-CN":{message:"消息记录",member:"成员",meta:"群信息",member_name_history:"昵称历史"},"en-US":{message:"Messages",member:"Members",meta:"Chat Info",member_name_history:"Nickname History"}},Ft={"zh-CN":{message:{id:"消息ID",sender_id:"发送者ID",sender_account_name:"发送时账号名",sender_group_nickname:"发送时群昵称",ts:"时间戳(秒)",type:"消息类型",content:"消息内容"},member:{id:"成员ID",platform_id:"平台ID",account_name:"账号名称",group_nickname:"群昵称",aliases:"自定义别名"},meta:{name:"群名称",platform:"平台",type:"聊天类型",imported_at:"导入时间"},member_name_history:{id:"记录ID",member_id:"成员ID",name_type:"名称类型",name:"昵称值",start_ts:"开始时间",end_ts:"结束时间"}},"en-US":{message:{id:"Message ID",sender_id:"Sender ID",sender_account_name:"Sender Account",sender_group_nickname:"Sender Nickname",ts:"Timestamp (sec)",type:"Message Type",content:"Content"},member:{id:"Member ID",platform_id:"Platform ID",account_name:"Account Name",group_nickname:"Group Nickname",aliases:"Custom Aliases"},meta:{name:"Chat Name",platform:"Platform",type:"Chat Type",imported_at:"Imported At"},member_name_history:{id:"Record ID",member_id:"Member ID",name_type:"Name Type",name:"Nickname",start_ts:"Start Time",end_ts:"End Time"}}};function Vt(l,o="zh-CN"){return Qs[fa(o)]?.[l]||l}function ea(l,o,t="zh-CN"){return Ft[fa(t)]?.[l]?.[o]||o}function fa(l){return l.startsWith("zh")?"zh-CN":"en-US"}const Ks={key:0,class:"text-xs font-medium text-gray-500 dark:text-gray-400"},Gs={key:0,class:"flex-1 overflow-y-auto p-2"},Js=["onClick"],Xs={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},Zs={class:"flex-1 truncate text-right text-xs text-gray-400"},en={key:0,class:"ml-4 mt-1 space-y-0.5"},tn=["title","onDblclick"],an={class:"font-mono text-gray-700 dark:text-gray-300"},sn={class:"flex-1 truncate text-right text-[10px] text-gray-400"},nn={key:1,class:"flex flex-1 flex-col items-center gap-1 overflow-y-auto px-2 pb-2"},on=["title","onClick"],rn=ge({__name:"SchemaPanel",props:{sessionId:{}},emits:["insertColumn"],setup(l,{expose:o,emit:t}){const{t:c,locale:r}=ye(),m=l,g=t,d=f(!1),p=f([]),h=f(new Set);async function y(){try{p.value=await Oe().getSchema(m.sessionId),p.value.forEach(L=>h.value.add(L.name))}catch(L){console.error("加载 Schema 失败:",L)}}function T(L){h.value.has(L)?h.value.delete(L):h.value.add(L)}function M(L){d.value=!1,h.value.add(L)}function C(L,z){g("insertColumn",L,z)}return o({loadSchema:y,schema:p}),Ve(()=>{y()}),(L,z)=>{const $=_e,I=Pe;return n(),i("div",{class:se(["m-3 flex h-[calc(100%-1.5rem)] shrink-0 flex-col overflow-hidden rounded-lg bg-white transition-all duration-300 ease-in-out dark:bg-sidebar-dark",d.value?"w-14":"w-56"])},[e("div",{class:se(["flex items-center",d.value?"justify-center px-2 pb-2 pt-5":"justify-between border-b border-gray-200 py-2 pl-3 pr-2 dark:border-gray-800"])},[d.value?E("",!0):(n(),i("span",Ks,s(a(c)("ai.sqlLab.schema.tables")),1)),d.value?(n(),i("button",{key:2,type:"button",class:"group relative flex h-9 w-9 cursor-pointer items-center justify-center rounded-full hover:bg-gray-200/60 dark:hover:bg-white/[0.06]",onClick:z[1]||(z[1]=w=>d.value=!d.value)},[u($,{name:"i-lucide-panel-right-open",class:"size-4 scale-x-[-1]"})])):(n(),K(I,{key:1,color:"neutral",variant:"ghost",size:"sm",class:"group flex h-9 w-9 cursor-pointer items-center justify-center rounded-full hover:bg-gray-200/60 dark:hover:bg-white/[0.06]",onClick:z[0]||(z[0]=w=>d.value=!d.value)},{default:F(()=>[u($,{name:"i-lucide-panel-right",class:"size-4 scale-x-[-1] group-hover:hidden"}),u($,{name:"i-lucide-panel-right-close",class:"size-4 hidden scale-x-[-1] group-hover:block"})]),_:1}))],2),d.value?(n(),i("div",nn,[(n(!0),i(oe,null,ce(p.value,w=>(n(),i("button",{key:w.name,class:"flex h-10 w-10 items-center justify-center rounded-lg text-gray-600 transition-colors hover:bg-gray-200/40 hover:text-primary-600 dark:text-gray-300 dark:hover:bg-white/[0.06] dark:hover:text-primary-400",title:`${a(Vt)(w.name,a(r))} (${w.name})`,onClick:S=>M(w.name)},[u($,{name:"i-heroicons-table-cells",class:"h-5 w-5"})],8,on))),128))])):(n(),i("div",Gs,[(n(!0),i(oe,null,ce(p.value,w=>(n(),i("div",{key:w.name,class:"mb-2"},[e("button",{class:"flex w-full items-center gap-1 rounded px-2 py-1.5 text-left transition-colors hover:bg-gray-100 dark:hover:bg-gray-800",onClick:S=>T(w.name)},[u($,{name:h.value.has(w.name)?"i-heroicons-chevron-down":"i-heroicons-chevron-right",class:"h-3 w-3 shrink-0 text-gray-400"},null,8,["name"]),u($,{name:"i-heroicons-table-cells",class:"h-4 w-4 shrink-0 text-pink-500"}),e("span",Xs,s(w.name),1),e("span",Zs,s(a(Vt)(w.name,a(r))),1)],8,Js),h.value.has(w.name)?(n(),i("div",en,[(n(!0),i(oe,null,ce(w.columns,S=>(n(),i("button",{key:S.name,class:"flex w-full items-center gap-2 rounded px-2 py-1 text-left text-xs transition-colors hover:bg-gray-100 dark:hover:bg-gray-800",title:a(c)("ai.sqlLab.schema.doubleClickToInsert"),onDblclick:v=>C(w.name,S.name)},[S.pk?(n(),K($,{key:0,name:"i-heroicons-key",class:"h-3 w-3 shrink-0 text-yellow-500",title:a(c)("ai.sqlLab.schema.primaryKey")},null,8,["title"])):E("",!0),e("span",an,s(S.name),1),e("span",sn,s(a(ea)(w.name,S.name,a(r))),1)],40,tn))),128))])):E("",!0)]))),128))]))],2)}}}),ln={class:"max-h-[70vh] overflow-hidden p-6"},cn={class:"mb-4 flex items-center gap-2"},dn={class:"text-lg font-semibold text-gray-900 dark:text-white"},un={key:0,class:"max-h-[50vh] space-y-3 overflow-y-auto pr-2"},mn={class:"mb-2 flex items-start justify-between gap-2"},gn={class:"flex-1 text-sm font-medium text-gray-700 dark:text-gray-300"},pn={class:"shrink-0 text-xs text-gray-400"},hn={class:"mb-2 rounded bg-white p-2 dark:bg-gray-800"},vn={class:"whitespace-pre-wrap break-all font-mono text-xs text-gray-600 dark:text-gray-400"},yn={key:0,class:"mb-2 text-xs text-gray-500 dark:text-gray-400"},fn={class:"flex justify-end gap-2"},xn={key:1,class:"py-8 text-center text-gray-500 dark:text-gray-400"},bn={class:"text-sm"},kn={class:"mt-4 flex justify-end"},_n=ge({__name:"AIHistoryModal",props:{open:{type:Boolean},history:{}},emits:["update:open","execute","delete"],setup(l,{emit:o}){const{t}=ye(),c=o;function r(m){const g=new Date(m),d=new Date,p=d.getTime()-m;return p<6e4?t("ai.sqlLab.history.justNow"):p<36e5?t("ai.sqlLab.history.minutesAgo",{count:Math.floor(p/6e4)}):p<864e5?t("ai.sqlLab.history.hoursAgo",{count:Math.floor(p/36e5)}):g.toDateString()===d.toDateString()?t("ai.sqlLab.history.today"):`${g.getMonth()+1}/${g.getDate()}`}return(m,g)=>{const d=_e,p=Pe,h=We;return n(),K(h,{open:l.open,ui:{content:"max-w-5xl"},"onUpdate:open":g[1]||(g[1]=y=>c("update:open",y))},{content:F(()=>[e("div",ln,[e("div",cn,[u(d,{name:"i-heroicons-clock",class:"h-5 w-5 text-pink-500"}),e("h3",dn,s(a(t)("ai.sqlLab.history.title")),1)]),l.history.length>0?(n(),i("div",un,[(n(!0),i(oe,null,ce(l.history,y=>(n(),i("div",{key:y.id,class:"rounded-lg border border-gray-200 bg-gray-50 p-3 dark:border-gray-700 dark:bg-page-dark"},[e("div",mn,[e("p",gn,s(y.prompt),1),e("span",pn,s(r(y.timestamp)),1)]),e("div",hn,[e("pre",vn,s(y.sql),1)]),y.explanation?(n(),i("p",yn,s(y.explanation),1)):E("",!0),e("div",fn,[u(p,{variant:"ghost",size:"xs",color:"error",onClick:T=>c("delete",y.id)},{default:F(()=>[u(d,{name:"i-heroicons-trash",class:"h-3.5 w-3.5"})]),_:1},8,["onClick"]),u(p,{size:"xs",onClick:T=>c("execute",y)},{default:F(()=>[u(d,{name:"i-heroicons-play",class:"mr-1 h-3.5 w-3.5"}),ee(" "+s(a(t)("ai.sqlLab.history.execute")),1)]),_:1},8,["onClick"])])]))),128))])):(n(),i("div",xn,[u(d,{name:"i-heroicons-clock",class:"mx-auto mb-2 h-8 w-8 text-gray-300 dark:text-gray-600"}),e("p",bn,s(a(t)("ai.sqlLab.history.empty")),1)])),e("div",kn,[u(p,{variant:"ghost",onClick:g[0]||(g[0]=y=>c("update:open",!1))},{default:F(()=>[ee(s(a(t)("common.close")),1)]),_:1})])])]),_:1},8,["open"])}}}),wn={class:"flex flex-1 flex-col overflow-hidden"},$n={key:0,class:"border-b border-red-200 bg-red-50 p-4 dark:border-red-900 dark:bg-red-950"},Cn={class:"flex items-start gap-2"},Sn={class:"min-w-0 flex-1"},Tn={class:"text-sm font-medium text-red-800 dark:text-red-200"},Mn={class:"mt-1 break-all font-mono text-xs text-red-600 dark:text-red-400"},In={key:1,class:"flex items-center justify-between border-b border-gray-200 bg-gray-50 px-4 py-2 dark:border-gray-800 dark:bg-page-dark"},Dn={class:"flex items-center gap-4 text-sm text-gray-600 dark:text-gray-400"},Ln={class:"flex cursor-pointer items-center gap-1.5"},An={class:"text-xs"},zn={class:"flex items-center gap-2"},qn={key:2,class:"flex-1 overflow-auto"},Rn={class:"min-w-full divide-y divide-gray-200 dark:divide-gray-700"},En={class:"sticky top-0 bg-gray-100 dark:bg-page-dark"},jn=["onClick"],Pn={class:"flex items-center gap-1"},Un={class:"flex flex-col"},Bn={class:"text-gray-700 dark:text-gray-300"},Fn={key:0,class:"font-mono text-[10px] text-gray-400"},Vn={key:0,class:"sticky right-0 w-12 bg-gray-100 px-2 py-2 dark:bg-page-dark"},Nn={class:"divide-y divide-gray-200 bg-white dark:divide-gray-700 dark:bg-page-dark"},Hn=["title"],On={key:0,class:"sticky right-0 w-12 bg-white px-2 py-2 dark:bg-page-dark"},Wn={key:3,class:"flex shrink-0 items-center gap-4 border-t border-gray-200 bg-gray-50 px-4 py-2 dark:border-gray-800 dark:bg-page-dark"},Yn={class:"flex items-center gap-1"},Qn={class:"mx-2 text-xs text-gray-600 dark:text-gray-400"},Kn={class:"flex items-center gap-2 text-xs text-gray-500 dark:text-gray-400"},Gn={key:4,class:"flex flex-1 items-center justify-center text-gray-500 dark:text-gray-400"},Jn={class:"text-center"},Xn={class:"mt-2 text-sm"},Zn={key:5,class:"flex flex-1 items-center justify-center text-gray-500 dark:text-gray-400"},eo={class:"text-center"},to={class:"mt-2 text-sm"},ao={class:"mt-1 text-xs text-gray-400"},so={class:"max-h-[70vh] overflow-hidden p-6"},no={class:"mb-4 flex items-center gap-2"},oo={class:"text-lg font-semibold text-gray-900 dark:text-white"},ro={key:0,class:"flex items-center justify-center py-8"},lo={class:"ml-2 text-sm text-gray-500"},io={key:1,class:"max-h-[50vh] overflow-y-auto"},co=["innerHTML"],uo={key:0,class:"mt-2 flex items-center text-xs text-gray-400"},mo={key:2,class:"rounded-lg bg-red-50 p-4 dark:bg-red-950"},go={class:"text-sm text-red-600 dark:text-red-400"},po={class:"mt-4 flex justify-end gap-2"},ho=ge({__name:"ResultTable",props:{result:{},error:{},sql:{},prompt:{}},setup(l,{expose:o}){const{t,locale:c}=ye(),r=Je(),m=Wt(),g=ct(),{aiGlobalSettings:d}=et(m),p=[/^ts$/i,/^timestamp$/i,/^time$/i,/_at$/i,/_ts$/i,/_time$/i,/^date$/i];function h(ne){return p.some(re=>re.test(ne))}function y(ne){if(typeof ne!="number"||!Number.isFinite(ne))return!1;const re=946684800,ve=4102444800,Me=re*1e3,$e=ve*1e3;return ne>=re&&ne<=ve||ne>=Me&&ne<=$e}function T(ne){const ve=ne>1e10?ne:ne*1e3;return Ie(ve).format("YYYY-MM-DD HH:mm:ss")}const M=[/^id$/i,/^message_id$/i,/^msg_id$/i,/^msgid$/i];function C(ne){return ne.findIndex(re=>M.some(ve=>ve.test(re)))}function L(ne){g.openChatRecordDrawer({scrollToMessageId:ne})}const z=new Xt({html:!1,breaks:!0,linkify:!0,typographer:!0}),$=l,I=f(null),w=f("asc"),S=f(1),v=f(100),_=[50,100,200,500],A=f(localStorage.getItem("sql-lab-readable-time")!=="false");function j(){A.value=!A.value,localStorage.setItem("sql-lab-readable-time",String(A.value))}const U=f(!1),k=f(!1),b=f(""),q=f(null),Y=f(""),W=f(!1);function J(ne){const re=ne.split("."),ve=re.length>1?re[re.length-1]:ne,Me=Ft[c.value]||Ft["zh-CN"];for(const $e of Object.values(Me))if($e[ve])return $e[ve];return null}const me=x(()=>{if(!$.result||!I.value)return $.result?.rows||[];const ne=$.result.columns.indexOf(I.value);return ne===-1?$.result.rows:[...$.result.rows].sort((re,ve)=>{const Me=re[ne],$e=ve[ne];if(Me===null)return 1;if($e===null)return-1;if(typeof Me=="number"&&typeof $e=="number")return w.value==="asc"?Me-$e:$e-Me;const qe=String(Me).localeCompare(String($e));return w.value==="asc"?qe:-qe})}),pe=x(()=>$.result?Math.ceil(me.value.length/v.value):0),X=x(()=>{const ne=(S.value-1)*v.value,re=ne+v.value;return me.value.slice(ne,re)}),N=x(()=>$.result?C($.result.columns):-1),ae=x(()=>N.value!==-1);function ue(ne){I.value===ne?w.value=w.value==="asc"?"desc":"asc":(I.value=ne,w.value="asc"),S.value=1}function he(ne){v.value=ne,S.value=1}function G(ne,re){return ne===null?"NULL":typeof ne=="object"?JSON.stringify(ne):A.value&&re&&h(re)&&y(ne)?T(ne):String(ne)}async function O(){if(!(!$.result||W.value)){W.value=!0;try{const ne=d.value.sqlExportFormat??"csv",re=await zs({columns:$.result.columns,rows:$.result.rows},ne);if(re.success&&re.filePath){const ve=re.filePath.split("/").pop()||re.filePath;r.add({title:t("common.exportSuccess"),description:ve,color:"primary",actions:[{label:t("common.openFolder"),onClick:()=>{ca().showInFolder(re.filePath)}}]})}else r.fail(t("common.exportFailed"),{description:re.error})}catch(ne){console.error("导出失败:",ne),r.fail(t("common.exportFailed"),{description:String(ne)})}finally{W.value=!1}}}function H(){I.value=null,w.value="asc",S.value=1}function le(){if(!$.result)return"";const ne=50,re=$.result.rows.slice(0,ne),ve=$.result.columns.join(" | "),Me=$.result.columns.map(()=>"---").join(" | "),$e=re.map(Ae=>Ae.map(Se=>Se===null?"NULL":String(Se).slice(0,50)).join(" | "));let qe=`| ${ve} |
|
|
4
|
+
`)}function Is(l){return l.replace(/[/\\?%*:|"<>]/g,"_")}async function Ds(l,o,t,c,r){if(o.length===0)return{success:!1,error:"No messages to export"};let m,g;const d=Ie(t).format("YYYYMMDD_HHmmss"),p=Is(l);c==="markdown"?(m=Ts(l,o,t,r),g=`${p}_${d}.md`):(m=Ms(l,o,t,r),g=`${p}_${d}.txt`);const h=`data:text/plain;charset=utf-8,${encodeURIComponent(m)}`,{useCacheService:y}=await wt(async()=>{const{useCacheService:M}=await import("./index-JyB6Cr8r.js").then(C=>C.ae);return{useCacheService:M}},__vite__mapDeps([0,1,2,3,4]));return await y().saveToDownloads(g,h)}function Ls(l){const o=l.columns.join(","),t=l.rows.map(c=>c.map(r=>r===null?"":`"${String(r).replace(/"/g,'""')}"`).join(","));return[o,...t].join(`
|
|
5
|
+
`)}function As(l){const o=l.rows.map(t=>{const c={};return l.columns.forEach((r,m)=>{c[r]=t[m]}),c});return JSON.stringify(o,null,2)}async function zs(l,o){if(l.rows.length===0)return{success:!1,error:"No data to export"};const c=`sql_result_${Ie().format("YYYYMMDD_HHmmss")}.${o}`;let r,m;o==="json"?(r=As(l),m="application/json"):(r=Ls(l),m="text/csv");const g=`data:${m};charset=utf-8,${encodeURIComponent(r)}`,{useCacheService:d}=await wt(async()=>{const{useCacheService:h}=await import("./index-JyB6Cr8r.js").then(y=>y.ae);return{useCacheService:h}},__vite__mapDeps([0,1,2,3,4]));return await d().saveToDownloads(c,g)}function fk(l){const{route:o,router:t,currentSessionId:c,selectSession:r,defaultTab:m,validTabIds:g}=l,d=f(!0),p=f(!0),h=f(null),y=f([]),T=f([]),M=f([]),C=f([]);function L(){const k=o.query.tab;return k&&g.includes(k)?k:m}const z=f(L()),{timeRangeValue:$,fullTimeRange:I,availableYears:w,timeFilter:S,initialTimeState:v}=$s(o,t,{activeTab:z,isInitialLoad:p,currentSessionId:c,onTimeRangeChange:()=>j()});function _(){const k=o.params.id;k&&(r(k),c.value!==k&&t.replace("/"))}async function A(){if(c.value)try{const k=await Oe().getSession(c.value);h.value=k}catch(k){console.error("加载基础数据失败:",k)}}async function j(){if(c.value){d.value=!0;try{const k=S.value,b=Oe(),[q,Y,W,J]=await Promise.all([b.getMemberActivity(c.value,k),b.getHourlyActivity(c.value,k),b.getDailyActivity(c.value,k),b.getMessageTypeDistribution(c.value,k)]);y.value=q,T.value=Y,M.value=W,C.value=J}catch(k){console.error("加载分析数据失败:",k)}finally{d.value=!1}}}async function U(){c.value&&(p.value=!0,await A(),p.value=!1)}return de(()=>o.params.id,()=>{z.value=L(),_()}),de(()=>o.query.tab,()=>{z.value=L()}),de(c,()=>{ia(),U()},{immediate:!0}),Ve(()=>{_()}),{activeTab:z,isLoading:d,isInitialLoad:p,session:h,memberActivity:y,hourlyActivity:T,dailyActivity:M,messageTypes:C,timeRangeValue:$,fullTimeRange:I,availableYears:w,timeFilter:S,initialTimeState:v,syncSession:_,loadData:U,loadAnalysisData:j}}const qs={class:"pointer-events-none absolute right-3 top-3 z-50 opacity-0 transition-opacity duration-200 group-hover/card:pointer-events-auto group-hover/card:opacity-100"},Rs=ge({__name:"CardCaptureOverlay",setup(l){return(o,t)=>(n(),i("div",qs,[u(ht,{type:"element","target-selector":"[data-capturable-card]",size:"xs"})]))}}),Lt=ge({__name:"ReportCard",setup(l){return(o,t)=>(n(),K(at,{"data-capturable-card":"",class:"group/card relative isolate flex flex-col"},{default:F(()=>[u(ms),u(Rs),mt(o.$slots,"default")]),_:3}))}}),Es={class:"flex items-center justify-between"},js={class:"font-semibold text-gray-900 dark:text-white whitespace-nowrap"},Ps={key:0,class:"mt-1 text-sm text-gray-500 dark:text-gray-400"},Us={class:"flex items-center gap-2"},Bs={key:0,class:"pointer-events-none opacity-0 transition-opacity duration-200 group-hover/card:pointer-events-auto group-hover/card:opacity-100"},Ye=ge({__name:"SectionCard",props:{title:{},description:{},capturable:{type:Boolean,default:!0},showDivider:{type:Boolean,default:!0},scrollable:{type:Boolean,default:!1},maxHeightVh:{default:60}},setup(l){const o=l,t=x(()=>{if(o.scrollable)return{maxHeight:`${o.maxHeightVh}vh`,overflowY:"auto"}});return(c,r)=>(n(),K(at,{class:"group/card","data-section-card":""},{default:F(()=>[e("div",{class:se(["px-5 py-3",{"border-b border-gray-200 dark:border-white/5":l.showDivider&&c.$slots.default}])},[e("div",Es,[e("div",null,[e("p",js,s(l.title),1),l.description?(n(),i("p",Ps,s(l.description),1)):E("",!0)]),e("div",Us,[mt(c.$slots,"headerRight"),l.capturable?(n(),i("div",Bs,[u(ht,{type:"element","target-selector":"[data-section-card]",size:"xs"})])):E("",!0)])])],2),l.scrollable?(n(),i("div",{key:0,style:Ke(t.value)},[mt(c.$slots,"default")],4)):mt(c.$slots,"default",{key:1}),mt(c.$slots,"footer")]),_:3}))}}),Fs={class:"flex items-start justify-between"},Vs={class:"min-w-0 flex-1"},Ns={class:"text-sm font-medium text-gray-500 dark:text-gray-400"},Hs={key:1,class:"text-xl"},Os={key:0,class:"mt-4 flex items-center text-sm"},Ws={class:"text-gray-500 dark:text-gray-400"},Xe=ge({__name:"StatCard",props:{label:{},value:{},valueColor:{},subtext:{},icon:{},iconBg:{}},setup(l){const o={pink:"text-pink-600 dark:text-pink-400",amber:"text-amber-600 dark:text-amber-400",blue:"text-blue-600 dark:text-blue-400",green:"text-green-600 dark:text-green-400",red:"text-red-600 dark:text-red-400",gray:"text-gray-900 dark:text-white"},t={pink:"bg-pink-100 dark:bg-pink-500/10",amber:"bg-amber-100 dark:bg-amber-500/10",blue:"bg-blue-100 dark:bg-blue-500/10",green:"bg-green-100 dark:bg-green-500/10",red:"bg-red-100 dark:bg-red-500/10",gray:"bg-gray-100 dark:bg-white/5"};return(c,r)=>{const m=_e;return n(),K(at,{class:"p-5"},{default:F(()=>[e("div",Fs,[e("div",Vs,[e("p",Ns,s(l.label),1),e("p",{class:se(["mt-2 truncate text-2xl font-bold tracking-tight",l.valueColor?o[l.valueColor]:"text-gray-900 dark:text-white"])},s(l.value),3)]),l.icon?(n(),i("div",{key:0,class:se(["ml-4 flex h-10 w-10 shrink-0 items-center justify-center rounded-xl",t[l.iconBg||"gray"]])},[l.icon.startsWith("i-")?(n(),K(m,{key:0,name:l.icon,class:"h-5 w-5"},null,8,["name"])):(n(),i("span",Hs,s(l.icon),1))],2)):E("",!0)]),l.subtext||c.$slots.subtext?(n(),i("div",Os,[mt(c.$slots,"subtext",{},()=>[e("span",Ws,s(l.subtext),1)])])):E("",!0)]),_:3})}}}),Ys={key:0,class:"mb-2 block text-2xl"},xk=ge({__name:"EmptyState",props:{text:{},icon:{},padding:{}},setup(l){const o={sm:"px-4 py-4",md:"px-5 py-8",lg:"px-6 py-12"};return(t,c)=>(n(),i("div",{class:se(["text-center text-sm text-gray-400",o[l.padding||"md"]])},[l.icon?(n(),i("span",Ys,s(l.icon),1)):E("",!0),ee(" "+s(l.text||"暂无数据"),1)],2))}}),Qs={"zh-CN":{message:"消息记录",member:"成员",meta:"群信息",member_name_history:"昵称历史"},"en-US":{message:"Messages",member:"Members",meta:"Chat Info",member_name_history:"Nickname History"}},Ft={"zh-CN":{message:{id:"消息ID",sender_id:"发送者ID",sender_account_name:"发送时账号名",sender_group_nickname:"发送时群昵称",ts:"时间戳(秒)",type:"消息类型",content:"消息内容"},member:{id:"成员ID",platform_id:"平台ID",account_name:"账号名称",group_nickname:"群昵称",aliases:"自定义别名"},meta:{name:"群名称",platform:"平台",type:"聊天类型",imported_at:"导入时间"},member_name_history:{id:"记录ID",member_id:"成员ID",name_type:"名称类型",name:"昵称值",start_ts:"开始时间",end_ts:"结束时间"}},"en-US":{message:{id:"Message ID",sender_id:"Sender ID",sender_account_name:"Sender Account",sender_group_nickname:"Sender Nickname",ts:"Timestamp (sec)",type:"Message Type",content:"Content"},member:{id:"Member ID",platform_id:"Platform ID",account_name:"Account Name",group_nickname:"Group Nickname",aliases:"Custom Aliases"},meta:{name:"Chat Name",platform:"Platform",type:"Chat Type",imported_at:"Imported At"},member_name_history:{id:"Record ID",member_id:"Member ID",name_type:"Name Type",name:"Nickname",start_ts:"Start Time",end_ts:"End Time"}}};function Vt(l,o="zh-CN"){return Qs[fa(o)]?.[l]||l}function ea(l,o,t="zh-CN"){return Ft[fa(t)]?.[l]?.[o]||o}function fa(l){return l.startsWith("zh")?"zh-CN":"en-US"}const Ks={key:0,class:"text-xs font-medium text-gray-500 dark:text-gray-400"},Gs={key:0,class:"flex-1 overflow-y-auto p-2"},Js=["onClick"],Xs={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},Zs={class:"flex-1 truncate text-right text-xs text-gray-400"},en={key:0,class:"ml-4 mt-1 space-y-0.5"},tn=["title","onDblclick"],an={class:"font-mono text-gray-700 dark:text-gray-300"},sn={class:"flex-1 truncate text-right text-[10px] text-gray-400"},nn={key:1,class:"flex flex-1 flex-col items-center gap-1 overflow-y-auto px-2 pb-2"},on=["title","onClick"],rn=ge({__name:"SchemaPanel",props:{sessionId:{}},emits:["insertColumn"],setup(l,{expose:o,emit:t}){const{t:c,locale:r}=ye(),m=l,g=t,d=f(!1),p=f([]),h=f(new Set);async function y(){try{p.value=await Oe().getSchema(m.sessionId),p.value.forEach(L=>h.value.add(L.name))}catch(L){console.error("加载 Schema 失败:",L)}}function T(L){h.value.has(L)?h.value.delete(L):h.value.add(L)}function M(L){d.value=!1,h.value.add(L)}function C(L,z){g("insertColumn",L,z)}return o({loadSchema:y,schema:p}),Ve(()=>{y()}),(L,z)=>{const $=_e,I=Pe;return n(),i("div",{class:se(["m-3 flex h-[calc(100%-1.5rem)] shrink-0 flex-col overflow-hidden rounded-lg bg-white transition-all duration-300 ease-in-out dark:bg-sidebar-dark",d.value?"w-14":"w-56"])},[e("div",{class:se(["flex items-center",d.value?"justify-center px-2 pb-2 pt-5":"justify-between border-b border-gray-200 py-2 pl-3 pr-2 dark:border-gray-800"])},[d.value?E("",!0):(n(),i("span",Ks,s(a(c)("ai.sqlLab.schema.tables")),1)),d.value?(n(),i("button",{key:2,type:"button",class:"group relative flex h-9 w-9 cursor-pointer items-center justify-center rounded-full hover:bg-gray-200/60 dark:hover:bg-white/[0.06]",onClick:z[1]||(z[1]=w=>d.value=!d.value)},[u($,{name:"i-lucide-panel-right-open",class:"size-4 scale-x-[-1]"})])):(n(),K(I,{key:1,color:"neutral",variant:"ghost",size:"sm",class:"group flex h-9 w-9 cursor-pointer items-center justify-center rounded-full hover:bg-gray-200/60 dark:hover:bg-white/[0.06]",onClick:z[0]||(z[0]=w=>d.value=!d.value)},{default:F(()=>[u($,{name:"i-lucide-panel-right",class:"size-4 scale-x-[-1] group-hover:hidden"}),u($,{name:"i-lucide-panel-right-close",class:"size-4 hidden scale-x-[-1] group-hover:block"})]),_:1}))],2),d.value?(n(),i("div",nn,[(n(!0),i(oe,null,ce(p.value,w=>(n(),i("button",{key:w.name,class:"flex h-10 w-10 items-center justify-center rounded-lg text-gray-600 transition-colors hover:bg-gray-200/40 hover:text-primary-600 dark:text-gray-300 dark:hover:bg-white/[0.06] dark:hover:text-primary-400",title:`${a(Vt)(w.name,a(r))} (${w.name})`,onClick:S=>M(w.name)},[u($,{name:"i-heroicons-table-cells",class:"h-5 w-5"})],8,on))),128))])):(n(),i("div",Gs,[(n(!0),i(oe,null,ce(p.value,w=>(n(),i("div",{key:w.name,class:"mb-2"},[e("button",{class:"flex w-full items-center gap-1 rounded px-2 py-1.5 text-left transition-colors hover:bg-gray-100 dark:hover:bg-gray-800",onClick:S=>T(w.name)},[u($,{name:h.value.has(w.name)?"i-heroicons-chevron-down":"i-heroicons-chevron-right",class:"h-3 w-3 shrink-0 text-gray-400"},null,8,["name"]),u($,{name:"i-heroicons-table-cells",class:"h-4 w-4 shrink-0 text-pink-500"}),e("span",Xs,s(w.name),1),e("span",Zs,s(a(Vt)(w.name,a(r))),1)],8,Js),h.value.has(w.name)?(n(),i("div",en,[(n(!0),i(oe,null,ce(w.columns,S=>(n(),i("button",{key:S.name,class:"flex w-full items-center gap-2 rounded px-2 py-1 text-left text-xs transition-colors hover:bg-gray-100 dark:hover:bg-gray-800",title:a(c)("ai.sqlLab.schema.doubleClickToInsert"),onDblclick:v=>C(w.name,S.name)},[S.pk?(n(),K($,{key:0,name:"i-heroicons-key",class:"h-3 w-3 shrink-0 text-yellow-500",title:a(c)("ai.sqlLab.schema.primaryKey")},null,8,["title"])):E("",!0),e("span",an,s(S.name),1),e("span",sn,s(a(ea)(w.name,S.name,a(r))),1)],40,tn))),128))])):E("",!0)]))),128))]))],2)}}}),ln={class:"max-h-[70vh] overflow-hidden p-6"},cn={class:"mb-4 flex items-center gap-2"},dn={class:"text-lg font-semibold text-gray-900 dark:text-white"},un={key:0,class:"max-h-[50vh] space-y-3 overflow-y-auto pr-2"},mn={class:"mb-2 flex items-start justify-between gap-2"},gn={class:"flex-1 text-sm font-medium text-gray-700 dark:text-gray-300"},pn={class:"shrink-0 text-xs text-gray-400"},hn={class:"mb-2 rounded bg-white p-2 dark:bg-gray-800"},vn={class:"whitespace-pre-wrap break-all font-mono text-xs text-gray-600 dark:text-gray-400"},yn={key:0,class:"mb-2 text-xs text-gray-500 dark:text-gray-400"},fn={class:"flex justify-end gap-2"},xn={key:1,class:"py-8 text-center text-gray-500 dark:text-gray-400"},bn={class:"text-sm"},kn={class:"mt-4 flex justify-end"},_n=ge({__name:"AIHistoryModal",props:{open:{type:Boolean},history:{}},emits:["update:open","execute","delete"],setup(l,{emit:o}){const{t}=ye(),c=o;function r(m){const g=new Date(m),d=new Date,p=d.getTime()-m;return p<6e4?t("ai.sqlLab.history.justNow"):p<36e5?t("ai.sqlLab.history.minutesAgo",{count:Math.floor(p/6e4)}):p<864e5?t("ai.sqlLab.history.hoursAgo",{count:Math.floor(p/36e5)}):g.toDateString()===d.toDateString()?t("ai.sqlLab.history.today"):`${g.getMonth()+1}/${g.getDate()}`}return(m,g)=>{const d=_e,p=Pe,h=We;return n(),K(h,{open:l.open,ui:{content:"max-w-5xl"},"onUpdate:open":g[1]||(g[1]=y=>c("update:open",y))},{content:F(()=>[e("div",ln,[e("div",cn,[u(d,{name:"i-heroicons-clock",class:"h-5 w-5 text-pink-500"}),e("h3",dn,s(a(t)("ai.sqlLab.history.title")),1)]),l.history.length>0?(n(),i("div",un,[(n(!0),i(oe,null,ce(l.history,y=>(n(),i("div",{key:y.id,class:"rounded-lg border border-gray-200 bg-gray-50 p-3 dark:border-gray-700 dark:bg-page-dark"},[e("div",mn,[e("p",gn,s(y.prompt),1),e("span",pn,s(r(y.timestamp)),1)]),e("div",hn,[e("pre",vn,s(y.sql),1)]),y.explanation?(n(),i("p",yn,s(y.explanation),1)):E("",!0),e("div",fn,[u(p,{variant:"ghost",size:"xs",color:"error",onClick:T=>c("delete",y.id)},{default:F(()=>[u(d,{name:"i-heroicons-trash",class:"h-3.5 w-3.5"})]),_:1},8,["onClick"]),u(p,{size:"xs",onClick:T=>c("execute",y)},{default:F(()=>[u(d,{name:"i-heroicons-play",class:"mr-1 h-3.5 w-3.5"}),ee(" "+s(a(t)("ai.sqlLab.history.execute")),1)]),_:1},8,["onClick"])])]))),128))])):(n(),i("div",xn,[u(d,{name:"i-heroicons-clock",class:"mx-auto mb-2 h-8 w-8 text-gray-300 dark:text-gray-600"}),e("p",bn,s(a(t)("ai.sqlLab.history.empty")),1)])),e("div",kn,[u(p,{variant:"ghost",onClick:g[0]||(g[0]=y=>c("update:open",!1))},{default:F(()=>[ee(s(a(t)("common.close")),1)]),_:1})])])]),_:1},8,["open"])}}}),wn={class:"flex flex-1 flex-col overflow-hidden"},$n={key:0,class:"border-b border-red-200 bg-red-50 p-4 dark:border-red-900 dark:bg-red-950"},Cn={class:"flex items-start gap-2"},Sn={class:"min-w-0 flex-1"},Tn={class:"text-sm font-medium text-red-800 dark:text-red-200"},Mn={class:"mt-1 break-all font-mono text-xs text-red-600 dark:text-red-400"},In={key:1,class:"flex items-center justify-between border-b border-gray-200 bg-gray-50 px-4 py-2 dark:border-gray-800 dark:bg-page-dark"},Dn={class:"flex items-center gap-4 text-sm text-gray-600 dark:text-gray-400"},Ln={class:"flex cursor-pointer items-center gap-1.5"},An={class:"text-xs"},zn={class:"flex items-center gap-2"},qn={key:2,class:"flex-1 overflow-auto"},Rn={class:"min-w-full divide-y divide-gray-200 dark:divide-gray-700"},En={class:"sticky top-0 bg-gray-100 dark:bg-page-dark"},jn=["onClick"],Pn={class:"flex items-center gap-1"},Un={class:"flex flex-col"},Bn={class:"text-gray-700 dark:text-gray-300"},Fn={key:0,class:"font-mono text-[10px] text-gray-400"},Vn={key:0,class:"sticky right-0 w-12 bg-gray-100 px-2 py-2 dark:bg-page-dark"},Nn={class:"divide-y divide-gray-200 bg-white dark:divide-gray-700 dark:bg-page-dark"},Hn=["title"],On={key:0,class:"sticky right-0 w-12 bg-white px-2 py-2 dark:bg-page-dark"},Wn={key:3,class:"flex shrink-0 items-center gap-4 border-t border-gray-200 bg-gray-50 px-4 py-2 dark:border-gray-800 dark:bg-page-dark"},Yn={class:"flex items-center gap-1"},Qn={class:"mx-2 text-xs text-gray-600 dark:text-gray-400"},Kn={class:"flex items-center gap-2 text-xs text-gray-500 dark:text-gray-400"},Gn={key:4,class:"flex flex-1 items-center justify-center text-gray-500 dark:text-gray-400"},Jn={class:"text-center"},Xn={class:"mt-2 text-sm"},Zn={key:5,class:"flex flex-1 items-center justify-center text-gray-500 dark:text-gray-400"},eo={class:"text-center"},to={class:"mt-2 text-sm"},ao={class:"mt-1 text-xs text-gray-400"},so={class:"max-h-[70vh] overflow-hidden p-6"},no={class:"mb-4 flex items-center gap-2"},oo={class:"text-lg font-semibold text-gray-900 dark:text-white"},ro={key:0,class:"flex items-center justify-center py-8"},lo={class:"ml-2 text-sm text-gray-500"},io={key:1,class:"max-h-[50vh] overflow-y-auto"},co=["innerHTML"],uo={key:0,class:"mt-2 flex items-center text-xs text-gray-400"},mo={key:2,class:"rounded-lg bg-red-50 p-4 dark:bg-red-950"},go={class:"text-sm text-red-600 dark:text-red-400"},po={class:"mt-4 flex justify-end gap-2"},ho=ge({__name:"ResultTable",props:{result:{},error:{},sql:{},prompt:{}},setup(l,{expose:o}){const{t,locale:c}=ye(),r=Je(),m=Wt(),g=ct(),{aiGlobalSettings:d}=et(m),p=[/^ts$/i,/^timestamp$/i,/^time$/i,/_at$/i,/_ts$/i,/_time$/i,/^date$/i];function h(ne){return p.some(re=>re.test(ne))}function y(ne){if(typeof ne!="number"||!Number.isFinite(ne))return!1;const re=946684800,ve=4102444800,Me=re*1e3,$e=ve*1e3;return ne>=re&&ne<=ve||ne>=Me&&ne<=$e}function T(ne){const ve=ne>1e10?ne:ne*1e3;return Ie(ve).format("YYYY-MM-DD HH:mm:ss")}const M=[/^id$/i,/^message_id$/i,/^msg_id$/i,/^msgid$/i];function C(ne){return ne.findIndex(re=>M.some(ve=>ve.test(re)))}function L(ne){g.openChatRecordDrawer({scrollToMessageId:ne})}const z=new Xt({html:!1,breaks:!0,linkify:!0,typographer:!0}),$=l,I=f(null),w=f("asc"),S=f(1),v=f(100),_=[50,100,200,500],A=f(localStorage.getItem("sql-lab-readable-time")!=="false");function j(){A.value=!A.value,localStorage.setItem("sql-lab-readable-time",String(A.value))}const U=f(!1),k=f(!1),b=f(""),q=f(null),Y=f(""),W=f(!1);function J(ne){const re=ne.split("."),ve=re.length>1?re[re.length-1]:ne,Me=Ft[c.value]||Ft["zh-CN"];for(const $e of Object.values(Me))if($e[ve])return $e[ve];return null}const me=x(()=>{if(!$.result||!I.value)return $.result?.rows||[];const ne=$.result.columns.indexOf(I.value);return ne===-1?$.result.rows:[...$.result.rows].sort((re,ve)=>{const Me=re[ne],$e=ve[ne];if(Me===null)return 1;if($e===null)return-1;if(typeof Me=="number"&&typeof $e=="number")return w.value==="asc"?Me-$e:$e-Me;const qe=String(Me).localeCompare(String($e));return w.value==="asc"?qe:-qe})}),pe=x(()=>$.result?Math.ceil(me.value.length/v.value):0),X=x(()=>{const ne=(S.value-1)*v.value,re=ne+v.value;return me.value.slice(ne,re)}),N=x(()=>$.result?C($.result.columns):-1),ae=x(()=>N.value!==-1);function ue(ne){I.value===ne?w.value=w.value==="asc"?"desc":"asc":(I.value=ne,w.value="asc"),S.value=1}function he(ne){v.value=ne,S.value=1}function G(ne,re){return ne===null?"NULL":typeof ne=="object"?JSON.stringify(ne):A.value&&re&&h(re)&&y(ne)?T(ne):String(ne)}async function O(){if(!(!$.result||W.value)){W.value=!0;try{const ne=d.value.sqlExportFormat??"csv",re=await zs({columns:$.result.columns,rows:$.result.rows},ne);if(re.success&&re.filePath){const ve=re.filePath.split("/").pop()||re.filePath;r.add({title:t("common.exportSuccess"),description:ve,color:"primary",actions:[{label:t("common.openFolder"),onClick:()=>{ca().showInFolder(re.filePath)}}]})}else r.fail(t("common.exportFailed"),{description:re.error})}catch(ne){console.error("导出失败:",ne),r.fail(t("common.exportFailed"),{description:String(ne)})}finally{W.value=!1}}}function H(){I.value=null,w.value="asc",S.value=1}function le(){if(!$.result)return"";const ne=50,re=$.result.rows.slice(0,ne),ve=$.result.columns.join(" | "),Me=$.result.columns.map(()=>"---").join(" | "),$e=re.map(Ae=>Ae.map(Se=>Se===null?"NULL":String(Se).slice(0,50)).join(" | "));let qe=`| ${ve} |
|
|
6
6
|
| ${Me} |
|
|
7
7
|
`;return qe+=$e.map(Ae=>`| ${Ae} |`).join(`
|
|
8
8
|
`),$.result.rows.length>ne&&(qe+=`
|
|
@@ -107,4 +107,4 @@ tools: []
|
|
|
107
107
|
---
|
|
108
108
|
|
|
109
109
|
`,Lg=ge({__name:"SkillConfigModal",props:{open:{type:Boolean},skillId:{}},emits:["update:open","saved","created"],setup(l,{emit:o}){const{t}=ye(),c=l,r=o,m=gt(),g=f(""),d=f(!1),p=f(!1),h=f(!1);de(()=>[c.open,c.skillId],async([T,M])=>{if(T){if(!M){h.value=!0,g.value=Dg;return}h.value=!1,d.value=!0;try{const C=await m.getSkillConfig(M);if(C){const L=["---",`name: "${C.name}"`,`description: "${C.description}"`,`tags: [${C.tags.map(z=>`"${z}"`).join(", ")}]`,`chatScope: ${C.chatScope}`,C.tools.length?`tools: [${C.tools.map(z=>`"${z}"`).join(", ")}]`:"tools: []",C.builtinId?`builtinId: ${C.builtinId}`:"","---","",C.prompt].filter(Boolean).join(`
|
|
110
|
-
`);g.value=L}}finally{d.value=!1}}},{immediate:!0});async function y(){if(g.value.trim()){p.value=!0;try{if(h.value){const T=await m.createSkill(g.value);T.success&&T.id&&(r("created",T.id),r("update:open",!1))}else c.skillId&&(await m.updateSkill(c.skillId,g.value)).success&&(r("saved"),r("update:open",!1))}finally{p.value=!1}}}return(T,M)=>{const C=_e,L=We;return n(),K(L,{open:l.open,ui:{content:"sm:max-w-2xl z-50"},"onUpdate:open":M[3]||(M[3]=z=>r("update:open",z))},{content:F(()=>[e("div",wg,[e("div",$g,[e("h2",Cg,s(h.value?a(t)("ai.skill.config.createTitle"):a(t)("ai.skill.config.editTitle")),1),e("button",{class:"rounded-lg p-1.5 text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-600 dark:hover:bg-gray-800 dark:hover:text-gray-300",onClick:M[0]||(M[0]=z=>r("update:open",!1))},[u(C,{name:"i-heroicons-x-mark",class:"h-5 w-5"})])]),e("p",Sg,s(a(t)("ai.skill.config.rawEditorHint")),1),d.value?(n(),i("div",Tg,[u(C,{name:"i-heroicons-arrow-path",class:"mr-2 h-5 w-5 animate-spin"})])):He((n(),i("textarea",{key:1,"onUpdate:modelValue":M[1]||(M[1]=z=>g.value=z),class:"h-[400px] w-full resize-none rounded-lg border border-gray-300 bg-gray-50 p-3 font-mono text-xs text-gray-900 focus:border-primary-500 focus:ring-1 focus:ring-primary-500 dark:border-gray-600 dark:bg-page-dark dark:text-gray-100",spellcheck:"false"},null,512)),[[rt,g.value]]),e("div",Mg,[e("button",{class:"rounded-lg px-4 py-2 text-sm text-gray-500 transition-colors hover:bg-gray-100 dark:text-gray-400 dark:hover:bg-gray-800",onClick:M[2]||(M[2]=z=>r("update:open",!1))},s(a(t)("common.cancel")),1),e("button",{class:"rounded-lg bg-primary-500 px-4 py-2 text-sm font-medium text-white transition-colors hover:bg-primary-600 disabled:opacity-50",disabled:p.value||!g.value.trim(),onClick:y},s(h.value?a(t)("ai.skill.config.create"):a(t)("ai.skill.config.save")),9,Ig)])])]),_:1},8,["open"])}}}),Ag={key:0,class:"relative"},zg={class:"relative flex flex-nowrap gap-2"},qg=["disabled"],Rg=["disabled"],Eg={class:"inline-flex items-center gap-1"},jg={key:0,class:"absolute left-0 bottom-full z-20 mb-2 w-[320px] max-w-[calc(100vw-3rem)]"},Pg={class:"mb-1.5 flex justify-start"},Ug={class:"flex flex-wrap gap-2"},Bg=["disabled","onClick"],Rt="rounded-full ring-1 ring-inset ring-gray-200/80 bg-white/60 shadow-[0_2px_8px_-2px_rgba(0,0,0,0.05)] backdrop-blur-md px-3 py-1.5 text-xs text-gray-600 transition-all duration-300 hover:-translate-y-[1px] hover:ring-primary-300 hover:bg-white/90 hover:text-primary-600 hover:shadow-[0_4px_12px_-2px_rgba(0,0,0,0.08)] disabled:cursor-not-allowed disabled:opacity-50 dark:ring-gray-700/60 dark:bg-gray-800/60 dark:text-gray-300 dark:hover:ring-primary-500/50 dark:hover:bg-gray-800/90 dark:hover:text-primary-400",Fg=ge({__name:"PresetQuestions",props:{questions:{},disabled:{type:Boolean},leadingActionLabel:{}},emits:["select","leadingAction","editQuestions"],setup(l,{emit:o}){const{t}=ye(),c=l,r=o,m=f(!1);let g=null;function d(T){m.value=!1,r("select",T)}function p(){c.disabled||c.questions.length===0||(g&&(clearTimeout(g),g=null),m.value=!0)}function h(){g=setTimeout(()=>{m.value=!1},150)}function y(){m.value=!1,r("editQuestions")}return Ct(()=>{g&&clearTimeout(g)}),(T,M)=>{const C=_e;return l.leadingActionLabel||l.questions.length>0?(n(),i("div",Ag,[e("div",zg,[l.leadingActionLabel?(n(),i("button",{key:0,class:se(Rt),disabled:c.disabled,onClick:M[0]||(M[0]=L=>r("leadingAction"))},s(l.leadingActionLabel),9,qg)):E("",!0),l.questions.length>0?(n(),i("div",{key:1,class:"relative shrink-0",onMouseenter:p,onMouseleave:h},[e("button",{class:se([Rt,m.value?"ring-primary-300 bg-white/90 text-primary-600 dark:ring-primary-500/50 dark:bg-gray-800/90 dark:text-primary-400":""]),disabled:c.disabled},[e("span",Eg,[u(C,{name:"i-heroicons-chat-bubble-left-ellipsis",class:"h-3.5 w-3.5"}),ee(" "+s(a(t)("ai.chat.input.quickAsk")),1)])],10,Rg),u(lt,{"enter-active-class":"transition duration-200 ease-out","enter-from-class":"opacity-0 translate-y-2","enter-to-class":"opacity-100 translate-y-0","leave-active-class":"transition duration-150 ease-in","leave-from-class":"opacity-100 translate-y-0","leave-to-class":"opacity-0 translate-y-2"},{default:F(()=>[m.value?(n(),i("div",jg,[e("div",Pg,[e("button",{class:"inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-[10px] text-gray-400 transition-colors hover:text-primary-500 dark:text-gray-500 dark:hover:text-primary-400",onClick:y},[u(C,{name:"i-heroicons-pencil-square",class:"h-3 w-3"}),ee(" "+s(a(t)("ai.chat.input.editQuickAsk")),1)])]),e("div",Ug,[(n(!0),i(oe,null,ce(l.questions,(L,z)=>(n(),i("button",{key:z,class:se(Rt),disabled:c.disabled,onClick:$=>d(L)},s(L),9,Bg))),128))])])):E("",!0)]),_:1})],32)):E("",!0)])])):E("",!0)}}}),Vg=30;function Ng(l,o){const t=f(null),c=f(!0),r=f(!1);function m(h=!1){setTimeout(()=>{t.value&&(h||c.value)&&(t.value.scrollTop=t.value.scrollHeight,c.value=!0,r.value=!1)},100)}function g(h){h.deltaY<0&&o.value&&(c.value=!1,r.value=!0)}function d(){if(!t.value)return;const{scrollTop:h,scrollHeight:y,clientHeight:T}=t.value;y-h-T<Vg&&(c.value=!0,r.value=!1)}function p(){m(!0)}return de(()=>{const h=l.value[l.value.length-1];return[l.value.length,h?.content,h?.contentBlocks?.length]},()=>m()),Ve(()=>{t.value&&(t.value.addEventListener("scroll",d),t.value.addEventListener("wheel",g,{passive:!0})),l.value.length>0&&m(!0)}),Ct(()=>{t.value&&(t.value.removeEventListener("scroll",d),t.value.removeEventListener("wheel",g))}),{messagesContainer:t,showScrollToBottom:r,scrollToBottom:m,handleScrollToBottom:p}}function Hg(){const l=vt(),o=gt(),t=f(!1),c=f(null),r=f(!1),m=f(!1),g=f(!1),d=f(!1),p=f(null);function h(_){c.value=_,r.value=!1,t.value=!0}function y(){m.value=!0}function T(_){c.value=_,r.value=!1,t.value=!0}function M(_){c.value=_,r.value=!0,t.value=!0}function C(){c.value=null,r.value=!1,t.value=!0}async function L(_){await l.loadAssistants(),await l.loadBuiltinCatalog()}async function z(){await l.loadAssistants()}function $(){g.value=!0}function I(_){p.value=_,d.value=!0}function w(){p.value=null,d.value=!0}async function S(){await o.loadSkills()}async function v(_){await o.loadSkills(),await o.loadBuiltinCatalog()}return{configModalVisible:t,configModalAssistantId:c,configModalReadonly:r,marketModalVisible:m,handleConfigureAssistant:h,handleOpenMarket:y,handleMarketConfigure:T,handleMarketViewConfig:M,handleCreateAssistant:C,handleAssistantCreated:L,handleAssistantConfigSaved:z,skillMarketModalVisible:g,skillConfigModalVisible:d,skillConfigModalSkillId:p,handleOpenSkillMarket:$,handleSkillMarketConfigure:I,handleCreateSkill:w,handleSkillConfigSaved:S,handleSkillCreated:v}}function Og(l){const o=[];let t=null;for(const c of l)c.role==="user"?(t&&o.push({user:t,assistant:null,standalone:null,id:t.id}),t=c):c.role==="assistant"?(o.push({user:t,assistant:c,standalone:null,id:t?.id||c.id}),t=null):(t&&(o.push({user:t,assistant:null,standalone:null,id:t.id}),t=null),o.push({user:null,assistant:null,standalone:c,id:c.id}));return t&&o.push({user:t,assistant:null,standalone:null,id:t.id}),o}const Wg={class:"main-content flex h-full overflow-hidden"},Yg={class:"flex h-full flex-1 overflow-hidden"},Qg={class:"flex h-full flex-1"},Kg={class:"relative flex min-w-[480px] flex-1 flex-col overflow-hidden"},Gg={key:0,class:"flex items-center gap-1.5 px-3 py-1.5"},Jg=["disabled"],Xg={key:0,class:"flex w-full flex-col items-center justify-center animate-fade-in"},Zg={key:0,class:"mb-3 text-center text-2xl font-semibold tracking-tight text-gray-800 dark:text-gray-100"},ep={class:"text-primary-600 dark:text-primary-400"},tp={key:1,class:"relative mb-8 w-full max-w-lg"},ap={class:"flex w-full justify-center"},sp={key:1,class:"qa-pair space-y-6 pb-4"},np={key:1,class:"px-4 pb-2"},op={class:"mx-auto max-w-[740px]"},rp={class:"px-4 pb-2"},lp={class:"mx-auto max-w-[740px]"},ip={key:0,class:"w-80 shrink-0 border-l border-gray-200 bg-gray-50/50 p-4 dark:border-gray-800 dark:bg-page-dark/50"},cp=ge({__name:"ChatExplorer",props:{sessionId:{},sessionName:{},timeFilter:{},chatType:{}},setup(l,{expose:o}){const{t}=ye(),c=Je(),r=Qt(),m=vt(),g=gt(),d=l,{messages:p,sourceMessages:h,currentKeywords:y,isLoadingSource:T,isAIThinking:M,currentAIChatId:C,currentToolStatus:L,toolsUsedInCurrentRound:z,sessionTokenUsage:$,agentStatus:I,selectedAssistantId:w,sendMessage:S,editMessageAndRegenerate:v,loadAIChat:_,startNewAIChat:A,loadMoreSourceMessages:j,updateMaxMessages:U,stopGeneration:k,selectAssistantForSession:b}=ws(d.sessionId,d.sessionName,d.timeFilter,d.chatType??"group",r.locale),q=Ng(p,M),{showScrollToBottom:Y,scrollToBottom:W,handleScrollToBottom:J}=q,{configModalVisible:me,configModalAssistantId:pe,configModalReadonly:X,marketModalVisible:N,skillMarketModalVisible:ae,skillConfigModalVisible:ue,skillConfigModalSkillId:he,handleConfigureAssistant:G,handleOpenMarket:O,handleMarketConfigure:H,handleMarketViewConfig:le,handleCreateAssistant:fe,handleAssistantCreated:xe,handleAssistantConfigSaved:ke,handleOpenSkillMarket:ne,handleSkillMarketConfigure:re,handleCreateSkill:ve,handleSkillConfigSaved:Me,handleSkillCreated:$e}=Hg(),qe=Wt(),Ae=f(0);de(()=>C.value,async be=>{if(!be){Ae.value=0;return}try{const we=await Ne().estimateContextTokens(be);we.success&&(Ae.value=we.tokens)}catch{Ae.value=0}},{immediate:!0});const Se=x(()=>m.selectedAssistant?.presetQuestions??[]),Re=x(()=>d.chatType??"group"),je=f(!1),Ue=f(!1),ie=f(!0),R=f(void 0),D=f(null),V=f(null),P=f(null),B=f(!1),Z=f(!1),Q=f(!1),te=x(()=>{const be=P.value?.name||t("ai.assistant.fallbackName");return t("ai.assistant.upgrade.backupName",{name:be})}),Ee=x(()=>Og(p.value));async function De(){ie.value=!0;try{Ue.value=await Yt().hasConfig()}catch(be){console.error("检查 LLM 配置失败:",be),Ue.value=!1}finally{ie.value=!1}}async function Te(){await De(),Ue.value&&await U()}o({refreshConfig:Te});const Le=x(()=>{const be=m.selectedAssistant;if(!be)return{name:"",preview:""};const we=be.systemPrompt.replace(/#{1,6}\s+[^\n]*/g,"").replace(/\n+/g," ").replace(/\s+/g," ").trim();return{name:be.name,preview:we}}),Ge=x(()=>!!w.value&&p.value.length===0&&!M.value);function At(){c.warn(t("ai.chat.backgroundTask.runningTitle"),{description:t("ai.chat.backgroundTask.runningDescription")})}function ta(){c.warn(t("ai.chat.backgroundTask.blockedAction"))}function ka(be){if(be!==w.value){if(!b(be)){ta();return}g.activateSkill(null),A()}}async function _a(be){const we=await S(be);!we.success&&we.reason==="busy"&&At()}function wa(){const be=m.selectedAssistant?.id;be&&(R.value="presetQuestions",G(be))}function $a(be){me.value=be,be||(R.value=void 0)}function Ca(){V.value?.openSkillSelector()}function Sa(){W(!0)}async function aa(){const be=await m.checkDefaultAssistantUpgrade(r.locale);be&&(P.value=be,B.value=!0)}async function Ta(){const be=P.value;if(!(!be||Z.value||Q.value)){Q.value=!0;try{const we=await m.skipAssistantUpgrade(be);if(!we.success){c.fail(t("ai.assistant.upgrade.skipFailed"),{description:we.error||t("ai.assistant.toast.unknownError")});return}B.value=!1,P.value=null}finally{Q.value=!1}}}async function Ma(){const be=P.value;if(!(!be||Z.value||Q.value)){Z.value=!0;try{const we=te.value,ut=await m.upgradeAssistantWithBackup(be,we);if(!ut.success){c.fail(t("ai.assistant.upgrade.failed"),{description:ut.error||t("ai.assistant.toast.unknownError")});return}B.value=!1,P.value=null,c.success(t("ai.assistant.upgrade.success"),{description:t("ai.assistant.upgrade.successDescription",{name:we})})}finally{Z.value=!1}}}async function Ia(be){const we=await S(be.content,{mentionedMembers:be.mentionedMembers});if(!we.success){we.reason==="busy"&&At();return}W(!0),D.value?.refresh()}async function Da(be){const we=await v(be.messageId,be.content,{overwriteSubsequent:be.overwriteSubsequent});if(!we.success){we.reason==="busy"&&At();return}W(!0),D.value?.refresh()}async function La(be){if(C.value)try{const we=await Ne().forkAIChat(C.value,be);await _(we.id),D.value?.refresh(),W(!0),c.success(t("ai.chat.fork.success"))}catch(we){c.fail(t("ai.chat.fork.failed"),{description:String(we)})}}function Aa(){je.value=!je.value}async function za(){await j()}async function qa(be){await _(be),W(!0)}function Ra(){if(M.value){ta();return}A()}function Ea(be){C.value===be&&A()}function ja(){k()}return De(),U(),Ve(()=>{aa()}),de(()=>r.locale,()=>{aa()}),de(()=>qe.aiConfigVersion,async()=>{await Te()}),(be,we)=>{const ut=_e,Pa=pt;return n(),i("div",Wg,[u(hl,{ref_key:"conversationListRef",ref:D,"session-id":l.sessionId,"active-id":a(C),disabled:a(M),onSelect:qa,onCreate:Ra,onDelete:Ea},null,8,["session-id","active-id","disabled"]),e("div",Yg,[e("div",Qg,[e("div",Kg,[a(p).length>0||a(M)?(n(),i("div",Gg,[e("button",{class:se(["flex items-center gap-1 rounded-md px-1.5 py-1 text-xs text-gray-600 transition-colors hover:bg-gray-100 hover:text-gray-900 dark:text-gray-400 dark:hover:bg-gray-800 dark:hover:text-gray-200",{"cursor-not-allowed opacity-50":a(M)||!a(m).selectedAssistant?.id}]),disabled:a(M)||!a(m).selectedAssistant?.id,onClick:we[0]||(we[0]=Ce=>a(G)(a(m).selectedAssistant.id))},[u(ut,{name:"i-heroicons-sparkles",class:"h-3.5 w-3.5"}),e("span",null,s(a(m).selectedAssistant?.name||a(t)("ai.assistant.fallbackName")),1)],10,Jg)])):E("",!0),e("div",{ref:a(q).messagesContainer,class:se(["relative min-h-0 flex-1 overflow-x-hidden overflow-y-auto p-4",{"p-0!":a(p).length===0&&!a(M)}])},[e("div",{class:se(["mx-auto max-w-3xl space-y-6",{"flex min-h-full flex-col justify-center px-4 pb-32 pt-4 space-y-0!":a(p).length===0&&!a(M),"px-4":a(p).length>0||a(M)}])},[a(p).length===0&&!a(M)?(n(),i("div",Xg,[Le.value.name?(n(),i("h2",Zg,[ee(s(a(t)("ai.assistant.selector.heroTitlePrefix","使用"))+" ",1),e("span",ep,s(Le.value.name),1),ee(" "+s(a(t)("ai.assistant.selector.heroTitleSuffix","开始对话")),1)])):E("",!0),Ge.value&&Le.value.name?(n(),i("div",tp,[e("p",{class:"cursor-pointer pr-7 text-center text-sm leading-relaxed text-gray-500 transition-colors hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-300 line-clamp-2",onClick:we[1]||(we[1]=Ce=>a(G)(a(m).selectedAssistant.id))},[u(Pa,{text:a(t)("ai.assistant.config.systemPrompt","系统设定"),popper:{placement:"top"}},{default:F(()=>[ee(s(Le.value.preview),1)]),_:1},8,["text"])]),e("button",{type:"button",class:"absolute bottom-0 right-0 rounded-md p-0.5 text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-600 dark:hover:bg-gray-800 dark:hover:text-gray-200",onClick:we[2]||(we[2]=Be(Ce=>a(G)(a(m).selectedAssistant.id),["stop"]))},[u(ut,{name:"i-heroicons-pencil-square",class:"h-4 w-4"})])])):E("",!0),e("div",ap,[u(l0,{"chat-type":Re.value,locale:a(r).locale,"selected-id":a(w),onSelect:ka,onMarket:a(O)},null,8,["chat-type","locale","selected-id","onMarket"])])])):E("",!0),(n(!0),i(oe,null,ce(Ee.value,Ce=>(n(),i(oe,{key:Ce.id},[Ce.standalone?(n(),K(qt,{key:0,role:Ce.standalone.role,content:Ce.standalone.content,timestamp:Ce.standalone.timestamp},null,8,["role","content","timestamp"])):(n(),i("div",sp,[Ce.user&&(Ce.user.role==="user"||Ce.user.content)?(n(),K(qt,{key:0,role:Ce.user.role,"message-id":Ce.user.id,content:Ce.user.content,timestamp:Ce.user.timestamp,"is-streaming":Ce.user.isStreaming,"content-blocks":Ce.user.contentBlocks,editable:!a(M),onEdit:Da},null,8,["role","message-id","content","timestamp","is-streaming","content-blocks","editable"])):E("",!0),Ce.assistant&&(Ce.assistant.content||Ce.assistant.contentBlocks&&Ce.assistant.contentBlocks.length>0)?(n(),K(qt,{key:1,role:Ce.assistant.role,"message-id":Ce.assistant.id,content:Ce.assistant.content,timestamp:Ce.assistant.timestamp,"is-streaming":Ce.assistant.isStreaming,"content-blocks":Ce.assistant.contentBlocks,"show-capture-button":!Ce.assistant.isStreaming,onFork:La},null,8,["role","message-id","content","timestamp","is-streaming","content-blocks","show-capture-button"])):E("",!0)]))],64))),128)),a(M)&&!a(p)[a(p).length-1]?.content&&!(a(p)[a(p).length-1]?.contentBlocks?.length??0)?(n(),K(zu,{key:1,"current-tool-status":a(L),"tools-used":a(z),"agent-status":a(I)},null,8,["current-tool-status","tools-used","agent-status"])):E("",!0)],2)],2),u(lt,{name:"fade-up"},{default:F(()=>[a(Y)?(n(),i("button",{key:0,class:"absolute bottom-20 left-1/2 z-10 flex -translate-x-1/2 items-center gap-1.5 rounded-full bg-gray-800/90 px-3 py-1.5 text-xs text-white shadow-lg backdrop-blur-sm transition-all hover:bg-gray-700 dark:bg-gray-700/90 dark:hover:bg-gray-600",onClick:we[3]||(we[3]=(...Ce)=>a(J)&&a(J)(...Ce))},[u(ut,{name:"i-heroicons-arrow-down",class:"h-3.5 w-3.5"}),e("span",null,s(a(t)("ai.chat.scrollToBottom")),1)])):E("",!0)]),_:1}),a(p).length===0&&!a(M)?(n(),i("div",np,[e("div",op,[u(Fg,{questions:Se.value,"leading-action-label":a(t)("ai.chat.input.useSkill"),onSelect:_a,onLeadingAction:Ca,onEditQuestions:wa},null,8,["questions","leading-action-label"])])])):E("",!0),e("div",rp,[e("div",lp,[u(xu,{ref_key:"chatInputRef",ref:V,"session-id":l.sessionId,disabled:a(M),status:a(M)?"streaming":"ready","chat-type":Re.value,onSend:Ia,onStop:ja,onManageSkills:a(ne),onSkillActivated:Sa},null,8,["session-id","disabled","status","chat-type","onManageSkills"]),u(Zu,{"session-token-usage":a($),"agent-status":a(I),"current-ai-chat-id":a(C),"current-messages":a(p),"fallback-title":l.sessionName,"estimated-context-tokens":Ae.value},null,8,["session-token-usage","agent-status","current-ai-chat-id","current-messages","fallback-title","estimated-context-tokens"])])])])]),u(lt,{name:"slide-fade"},{default:F(()=>[a(h).length>0&&!je.value?(n(),i("div",ip,[u(Pl,{messages:a(h),keywords:a(y),"is-loading":a(T),"is-collapsed":je.value,class:"h-full",onToggle:Aa,onLoadMore:za},null,8,["messages","keywords","is-loading","is-collapsed"])])):E("",!0)]),_:1})]),u(Q0,{open:a(me),"assistant-id":a(pe),readonly:a(X),"scroll-to-section":R.value,"onUpdate:open":$a,onSaved:a(ke),onCreated:a(xe)},null,8,["open","assistant-id","readonly","scroll-to-section","onSaved","onCreated"]),u(Vm,{open:B.value,"backup-name":te.value,upgrading:Z.value,skipping:Q.value,onSkip:Ta,onConfirm:Ma},null,8,["open","backup-name","upgrading","skipping"]),u(Dm,{open:a(N),"onUpdate:open":we[4]||(we[4]=Ce=>N.value=Ce),onConfigure:a(H),onViewConfig:a(le),onCreate:a(fe)},null,8,["open","onConfigure","onViewConfig","onCreate"]),u(_g,{open:a(ae),"onUpdate:open":we[5]||(we[5]=Ce=>ae.value=Ce),onConfigure:a(re),onCreate:a(ve)},null,8,["open","onConfigure","onCreate"]),u(Lg,{open:a(ue),"skill-id":a(he),"onUpdate:open":we[6]||(we[6]=Ce=>ue.value=Ce),onSaved:a(Me),onCreated:a($e)},null,8,["open","skill-id","onSaved","onCreated"])])}}}),wk=tt(cp,[["__scopeId","data-v-3b042ff8"]]),dp=ge({__name:"EChartCalendar",props:{data:{},height:{default:180},year:{}},setup(l){Mt([ha,va,Zt,ya,It]);const o=l,{t,locale:c}=ye(),r=$t(),m=f(null);let g=null;const d=x(()=>{if(o.year)return o.year;if(o.data.length===0)return new Date().getFullYear();const z=o.data.map($=>parseInt($.date.split("-")[0]));return Math.max(...z)}),p=x(()=>o.data.length===0?10:Math.max(...o.data.map(z=>z.value),1)),h=x(()=>o.data.map(z=>[z.date,z.value])),y={light:["#fee5e8","#fbb5c2","#f7758c","#ee4567"],dark:["#3d1f24","#6b2f3a","#a34557","#ee4567"]},T=x(()=>({tooltip:{trigger:"item",formatter:z=>{const $=z.data[0],I=z.data[1];return`${$}<br/>${t("views.message.calendarTooltipMessages")}: ${I}`}},visualMap:{min:0,max:p.value,calculable:!1,orient:"horizontal",left:"center",bottom:0,itemWidth:10,itemHeight:100,text:[`${p.value}`,"0"],inRange:{color:r.value?y.dark:y.light},textStyle:{color:r.value?"#9ca3af":"#6b7280",fontSize:10},show:!0},calendar:{top:30,left:40,cellSize:[13,13],range:String(d.value),itemStyle:{borderWidth:2,borderColor:r.value?"#1f2937":"#ffffff"},yearLabel:{show:!0,position:"top",color:r.value?"#9ca3af":"#6b7280",fontSize:12},monthLabel:{show:!0,color:r.value?"#9ca3af":"#6b7280",fontSize:10,nameMap:[t("common.month.jan"),t("common.month.feb"),t("common.month.mar"),t("common.month.apr"),t("common.month.may"),t("common.month.jun"),t("common.month.jul"),t("common.month.aug"),t("common.month.sep"),t("common.month.oct"),t("common.month.nov"),t("common.month.dec")]},dayLabel:{show:!0,firstDay:1,color:r.value?"#6b7280":"#9ca3af",fontSize:10,nameMap:[t("common.weekday.sun"),t("common.weekday.mon"),t("common.weekday.tue"),t("common.weekday.wed"),t("common.weekday.thu"),t("common.weekday.fri"),t("common.weekday.sat")]},splitLine:{show:!1}},series:[{type:"heatmap",coordinateSystem:"calendar",data:h.value}]}));function M(){m.value&&(g=Dt(m.value,r.value?"dark":void 0,{renderer:"canvas"}),g.setOption({backgroundColor:"transparent",...T.value}))}function C(){g&&g.setOption({backgroundColor:"transparent",...T.value},{notMerge:!0})}function L(){g?.resize()}return de([()=>o.data,r,c],()=>{C()}),de(()=>o.year,()=>{C()}),Ve(()=>{M(),window.addEventListener("resize",L)}),dt(()=>{window.removeEventListener("resize",L),g?.dispose()}),(z,$)=>(n(),i("div",{ref_key:"chartRef",ref:m,style:Ke({height:`${l.height}px`,width:"100%"})},null,4))}});function $k(l){const o=x(()=>ns(l)),t=x(()=>{const r=o.value;return r.length<2?!1:new Set(r.map(g=>Ie(g.date).year())).size>1}),c=x(()=>{const r=o.value,m=50;if(r.length<=m){const h=t.value?"YYYY/MM/DD":"MM/DD";return{labels:r.map(y=>Ie(y.date).format(h)),values:r.map(y=>y.messageCount)}}const g=Math.ceil(r.length/m),d=[],p=[];for(let h=0;h<r.length;h+=g){const y=r.slice(h,h+g);if(y.length===0)continue;const T=Math.floor(y.length/2),M=y[T].date,C=t.value?"YYYY/MM/DD":"MM/DD";d.push(Ie(M).format(C));const L=y.reduce(($,I)=>$+I.messageCount,0),z=Math.round(L/y.length);p.push(z)}return{labels:d,values:p}});return{isMultiYear:t,dailyChartData:c}}const up=86400;function _t(l){return typeof l=="number"&&Number.isFinite(l)}function mp(l){return _t(l?.startTs)&&_t(l?.endTs)}function xa(l,o){const t=o?.startTs??l?.start,c=o?.endTs??l?.end;return!_t(t)||!_t(c)||c<t?null:{start:t,end:c}}function gp(l){return!l||l.end<l.start?0:Math.max(Math.ceil((l.end-l.start)/up),1)}function pp(l){return l?[Ie.unix(l.start).format("YYYY-MM-DD"),Ie.unix(l.end).format("YYYY-MM-DD")]:null}function hp(l,o){const{t}=ye(),c=x(()=>xa(l.timeRange,l.timeFilter)),r=x(()=>mp(l.timeFilter)),m=x(()=>gp(c.value)),g=x(()=>r.value?l.filteredMessageCount:l.session.messageCount),d=x(()=>r.value?l.filteredMemberCount??l.session.memberCount:l.session.memberCount),p=x(()=>m.value),h=x(()=>p.value===0?0:Math.round(g.value/p.value)),y=x(()=>m.value===0?0:Math.round(g.value/m.value)),T=x(()=>l.messageTypes.find(j=>j.type===1)?.count||0),M=x(()=>l.hourlyActivity.length?l.hourlyActivity.reduce((A,j)=>j.messageCount>A.messageCount?j:A,l.hourlyActivity[0]):null),C=x(()=>o.value.length?o.value.reduce((A,j)=>j.messageCount>A.messageCount?j:A,o.value[0]):null),L=x(()=>[t("common.weekday.mon"),t("common.weekday.tue"),t("common.weekday.wed"),t("common.weekday.thu"),t("common.weekday.fri"),t("common.weekday.sat"),t("common.weekday.sun")]),z=x(()=>{if(!o.value.length)return{weekday:0,weekend:0};const A=o.value.filter(k=>k.weekday>=1&&k.weekday<=5).reduce((k,b)=>k+b.messageCount,0),j=o.value.filter(k=>k.weekday>=6&&k.weekday<=7).reduce((k,b)=>k+b.messageCount,0),U=A+j;return{weekday:U>0?Math.round(A/U*100):0,weekend:U>0?Math.round(j/U*100):0}}),$=x(()=>l.dailyActivity.length?l.dailyActivity.reduce((A,j)=>j.messageCount>A.messageCount?j:A,l.dailyActivity[0]):null),I=x(()=>l.dailyActivity.filter(A=>A.messageCount>0).length),w=x(()=>m.value),S=x(()=>w.value>0?Math.round(I.value/w.value*100):0),v=x(()=>{if(!l.hourlyActivity.length)return{count:0,ratio:0};const A=l.hourlyActivity.reduce((U,k)=>U+k.messageCount,0),j=l.hourlyActivity.filter(U=>U.hour>=0&&U.hour<=4).reduce((U,k)=>U+k.messageCount,0);return{count:j,ratio:A>0?Math.round(j/A*100):0}}),_=x(()=>{if(!l.dailyActivity.length)return 0;const A=[...l.dailyActivity].filter(k=>k.messageCount>0).sort((k,b)=>Ie(k.date).valueOf()-Ie(b.date).valueOf());if(A.length===0)return 0;let j=1,U=1;for(let k=1;k<A.length;k++){const b=Ie(A[k-1].date);Ie(A[k].date).diff(b,"day")===1?U++:(U>j&&(j=U),U=1)}return U>j&&(j=U),j});return{durationDays:m,displayMessageCount:g,displayMemberCount:d,dailyAvgMessages:y,totalDurationDays:p,totalDailyAvgMessages:h,imageCount:T,peakHour:M,peakWeekday:C,weekdayNames:L,weekdayVsWeekend:z,peakDay:$,activeDays:I,totalDays:w,activeRate:S,lateNightChat:v,maxConsecutiveDays:_}}const vp={key:0,class:"relative z-10 px-6 pb-6 pt-2 sm:px-8"},yp={class:"grid grid-cols-2 gap-3 lg:grid-cols-4"},fp={class:"min-w-0"},xp={class:"mt-0.5 truncate text-[10px] font-medium text-gray-500 dark:text-gray-400"},bp={class:"mt-0.5 truncate text-[9px] text-gray-400 dark:text-gray-500"},kp={key:1,class:"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4"},_p={class:"text-sm text-gray-500"},wp={class:"text-sm text-gray-500"},$p={class:"ml-1 font-semibold text-pink-500"},Cp={class:"text-sm text-gray-500"},Sp={class:"text-sm text-gray-500"},Tp={class:"text-sm text-gray-500"},Mp={class:"text-sm text-gray-500"},Ip={class:"text-sm text-gray-500"},Dp={class:"text-sm text-gray-500"},Lp=ge({__name:"OverviewStatCards",props:{dailyAvgMessages:{},durationDays:{},imageCount:{},peakHour:{},peakWeekday:{},weekdayNames:{},weekdayVsWeekend:{},peakDay:{},activeDays:{},totalDays:{},activeRate:{},lateNightCount:{},lateNightRatio:{},maxConsecutiveDays:{},flat:{type:Boolean,default:!1}},setup(l){const{t:o}=ye(),t=l,c=x(()=>[{icon:"i-heroicons-chat-bubble-left-right",label:o("analysis.overview.statCards.dailyAvgMessages"),value:o("analysis.overview.statCards.messagesCount",{count:t.dailyAvgMessages}),subtext:o("analysis.overview.statCards.daysCount",{count:t.durationDays}),colorClass:"text-blue-600 dark:text-blue-400"},{icon:"i-heroicons-photo",label:o("analysis.overview.statCards.imageMessages"),value:o("analysis.overview.statCards.imagesCount",{count:t.imageCount}),subtext:`${o("analysis.overview.statCards.peakHour")} ${t.peakHour?.hour||0}:00`,colorClass:"text-pink-600 dark:text-pink-400"},{icon:"i-heroicons-calendar-days",label:o("analysis.overview.statCards.mostActiveWeekday"),value:t.peakWeekday?t.weekdayNames[t.peakWeekday.weekday-1]:"-",subtext:o("analysis.overview.statCards.messagesOnDay",{count:t.peakWeekday?.messageCount??0}),colorClass:"text-amber-600 dark:text-amber-400"},{icon:"i-heroicons-sun",label:o("analysis.overview.statCards.weekendActivity"),value:`${t.weekdayVsWeekend.weekend}%`,subtext:o("analysis.overview.statCards.weekendRatio"),colorClass:"text-green-600 dark:text-green-400"},{icon:"i-heroicons-fire",label:o("analysis.overview.statCards.mostActiveDate"),value:t.peakDay?Ie(t.peakDay.date).format("MM/DD"):"-",subtext:o("analysis.overview.statCards.messagesOnDay",{count:t.peakDay?.messageCount??0}),colorClass:"text-red-600 dark:text-red-400"},{icon:"i-heroicons-moon",label:o("analysis.overview.statCards.lateNightChat"),value:o("analysis.overview.statCards.messagesCount",{count:t.lateNightCount}),subtext:o("analysis.overview.statCards.lateNightRatio",{ratio:t.lateNightRatio}),colorClass:"text-indigo-600 dark:text-indigo-400"},{icon:"i-heroicons-bolt",label:o("analysis.overview.statCards.consecutiveStreak"),value:o("analysis.overview.statCards.daysStreak",{count:t.maxConsecutiveDays}),subtext:o("analysis.overview.statCards.longestStreak"),colorClass:"text-amber-600 dark:text-amber-400"},{icon:"i-heroicons-chart-bar",label:o("analysis.overview.statCards.activityRate"),value:`${t.activeRate}%`,subtext:o("analysis.overview.statCards.activeDaysRatio"),colorClass:"text-gray-900 dark:text-white"}]);return(r,m)=>{const g=_e;return l.flat?(n(),i("div",vp,[m[0]||(m[0]=e("div",{class:"mb-3 flex items-center justify-between"},[e("span",{class:"text-[10px] font-bold uppercase tracking-widest text-gray-400 dark:text-gray-500"},"Key Metrics")],-1)),e("div",yp,[(n(!0),i(oe,null,ce(c.value,d=>(n(),i("div",{key:d.icon+d.label,class:"flex min-w-0 items-start gap-2 px-2.5 py-2"},[u(g,{name:d.icon,class:se(["mt-0.5 h-3.5 w-3.5 shrink-0",d.colorClass])},null,8,["name","class"]),e("div",fp,[e("div",{class:se(["truncate font-mono text-sm font-black leading-tight tabular-nums",d.colorClass])},s(d.value),3),e("div",xp,s(d.label),1),e("div",bp,s(d.subtext),1)])]))),128))])])):(n(),i("div",kp,[u(a(Xe),{label:a(o)("analysis.overview.statCards.dailyAvgMessages"),value:a(o)("analysis.overview.statCards.messagesCount",{count:l.dailyAvgMessages}),icon:"i-heroicons-chat-bubble-left-right","icon-bg":"blue"},{subtext:F(()=>[e("span",_p,s(a(o)("analysis.overview.statCards.daysCount",{count:l.durationDays})),1)]),_:1},8,["label","value"]),u(a(Xe),{label:a(o)("analysis.overview.statCards.imageMessages"),value:a(o)("analysis.overview.statCards.imagesCount",{count:l.imageCount}),icon:"i-heroicons-photo","icon-bg":"pink"},{subtext:F(()=>[e("span",wp,s(a(o)("analysis.overview.statCards.peakHour")),1),e("span",$p,s(l.peakHour?.hour||0)+":00",1)]),_:1},8,["label","value"]),u(a(Xe),{label:a(o)("analysis.overview.statCards.mostActiveWeekday"),value:l.peakWeekday?l.weekdayNames[l.peakWeekday.weekday-1]:"-",icon:"i-heroicons-calendar-days","icon-bg":"amber"},{subtext:F(()=>[e("span",Cp,s(a(o)("analysis.overview.statCards.messagesOnDay",{count:l.peakWeekday?.messageCount??0})),1)]),_:1},8,["label","value"]),u(a(Xe),{label:a(o)("analysis.overview.statCards.weekendActivity"),value:`${l.weekdayVsWeekend.weekend}%`,icon:"i-heroicons-sun","icon-bg":"green"},{subtext:F(()=>[e("span",Sp,s(a(o)("analysis.overview.statCards.weekendRatio")),1)]),_:1},8,["label","value"]),u(a(Xe),{label:a(o)("analysis.overview.statCards.mostActiveDate"),value:l.peakDay?a(Ie)(l.peakDay.date).format("MM/DD"):"-",icon:"i-heroicons-fire","icon-bg":"red"},{subtext:F(()=>[e("span",Tp,s(a(o)("analysis.overview.statCards.messagesOnDay",{count:l.peakDay?.messageCount??0})),1)]),_:1},8,["label","value"]),u(a(Xe),{label:a(o)("analysis.overview.statCards.lateNightChat"),value:a(o)("analysis.overview.statCards.messagesCount",{count:l.lateNightCount}),icon:"i-heroicons-moon","icon-bg":"blue"},{subtext:F(()=>[e("span",Mp,s(a(o)("analysis.overview.statCards.lateNightRatio",{ratio:l.lateNightRatio})),1)]),_:1},8,["label","value"]),u(a(Xe),{label:a(o)("analysis.overview.statCards.consecutiveStreak"),value:a(o)("analysis.overview.statCards.daysStreak",{count:l.maxConsecutiveDays}),icon:"i-heroicons-bolt","icon-bg":"amber"},{subtext:F(()=>[e("span",Ip,s(a(o)("analysis.overview.statCards.longestStreak")),1)]),_:1},8,["label","value"]),u(a(Xe),{label:a(o)("analysis.overview.statCards.activityRate"),value:`${l.activeRate}%`,icon:"i-heroicons-chart-bar","icon-bg":"gray"},{subtext:F(()=>[e("span",Dp,s(a(o)("analysis.overview.statCards.activeDaysRatio")),1)]),_:1},8,["label","value"])]))}}}),Ap={class:"relative z-10 px-6 pt-8 pb-4 sm:px-8"},zp={class:"text-3xl font-bold tracking-tight text-gray-900 dark:text-gray-100"},qp={class:"mt-4 flex items-start gap-6 sm:gap-24"},Rp={class:"min-w-0 flex flex-col gap-2 text-sm font-medium text-gray-500 dark:text-gray-400"},Ep={class:"flex items-center gap-2"},jp={class:"flex h-6 w-6 shrink-0 items-center justify-center"},Pp={class:"whitespace-nowrap"},Up={key:0,class:"flex items-center gap-2"},Bp={class:"flex h-6 w-6 shrink-0 items-center justify-center"},Fp={class:"font-mono text-xs opacity-90 whitespace-nowrap"},Vp={class:"flex shrink-0 gap-6"},Np={class:"flex flex-col gap-1 text-center"},Hp={class:"text-2xl font-black font-mono tracking-tight text-gray-900 dark:text-white"},Op={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},Wp={class:"flex flex-col gap-1 text-center"},Yp={class:"text-2xl font-black font-mono tracking-tight text-gray-900 dark:text-white"},Qp={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},Kp={class:"flex flex-col gap-1 text-center"},Gp={class:"text-2xl font-black font-mono tracking-tight text-gray-900 dark:text-white"},Jp={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},Xp={class:"flex flex-col gap-1 text-center"},Zp={class:"text-2xl font-black font-mono tracking-tight text-gray-900 dark:text-white"},eh={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},th={class:"relative z-10 px-6 pb-2 sm:px-8"},ah={class:"overflow-x-auto overflow-y-hidden scrollbar-hide py-1"},Ck=ge({__name:"OverviewIdentityCard",props:{session:{},dailyActivity:{},messageTypes:{},hourlyActivity:{},timeRange:{},filteredMessageCount:{},filteredMemberCount:{},timeFilter:{}},setup(l){Mt([ha,ps,va,Zt,ya,It]);const{t:o,locale:t}=ye(),c=$t(),r=l,m=f([]);async function g(){if(r.session.id)try{m.value=await Oe().getWeekdayActivity(r.session.id,r.timeFilter)}catch(N){console.error("加载星期活跃度失败:",N)}}de(()=>[r.session.id,r.timeFilter],()=>g(),{immediate:!0,deep:!0});const{durationDays:d,displayMessageCount:p,dailyAvgMessages:h,imageCount:y,peakHour:T,peakWeekday:M,weekdayNames:C,weekdayVsWeekend:L,peakDay:z,activeDays:$,totalDays:I,activeRate:w,lateNightChat:S,maxConsecutiveDays:v}=hp(r,m),_=f(null);let A=null;const j=x(()=>xa(r.timeRange,r.timeFilter)),U=x(()=>j.value?gs(j.value.start,j.value.end,"YYYY/MM/DD"):""),k=x(()=>{const N=pp(j.value);if(N)return N;const he=(G=>G.toISOString().slice(0,10))(new Date);return[he,he]}),b=x(()=>{const[N,ae]=k.value,ue=new Date(N+"T00:00:00Z"),he=new Date(ae+"T00:00:00Z"),G=new Map;r.dailyActivity.filter(le=>le.date>=N&&le.date<=ae).forEach(le=>G.set(le.date,le.messageCount));const O=[],H=new Date(ue);for(;H<=he;){const le=H.toISOString().slice(0,10),fe=G.get(le)||0;O.push({value:[le,fe],itemStyle:fe===0?{color:W.value}:void 0}),H.setUTCDate(H.getUTCDate()+1)}return O}),q=x(()=>r.dailyActivity.length===0?10:Math.max(...r.dailyActivity.map(N=>N.messageCount),1)),Y={light:["#fce4ec","#f8a4b8","#f06292","#e91e63"],dark:["rgba(238, 69, 103, 0.15)","rgba(238, 69, 103, 0.45)","rgba(238, 69, 103, 0.75)","rgba(238, 69, 103, 1)"]},W=x(()=>c.value?"rgba(255, 255, 255, 0.04)":"#ebedf0"),J=x(()=>({tooltip:{trigger:"item",formatter:N=>{const ae=N.value[0],ue=N.value[1];return`${ae}<br/>${o("views.message.calendarTooltipMessages")}: ${ue}`}},visualMap:{min:1,max:q.value,calculable:!1,orient:"horizontal",left:"center",bottom:0,itemWidth:10,itemHeight:80,text:[`${q.value}`,"1"],inRange:{color:c.value?Y.dark:Y.light},textStyle:{color:c.value?"#8b949e":"#6b7280",fontSize:10},show:!0},calendar:{top:20,left:30,cellSize:[13,13],range:k.value,itemStyle:{borderWidth:0,color:"transparent"},yearLabel:{show:!1},monthLabel:{show:!0,color:c.value?"#8b949e":"#6b7280",fontSize:10,nameMap:[o("common.month.jan"),o("common.month.feb"),o("common.month.mar"),o("common.month.apr"),o("common.month.may"),o("common.month.jun"),o("common.month.jul"),o("common.month.aug"),o("common.month.sep"),o("common.month.oct"),o("common.month.nov"),o("common.month.dec")]},dayLabel:{show:!0,firstDay:1,color:c.value?"#8b949e":"#9ca3af",fontSize:10,nameMap:[o("common.weekday.sun"),o("common.weekday.mon"),o("common.weekday.tue"),o("common.weekday.wed"),o("common.weekday.thu"),o("common.weekday.fri"),o("common.weekday.sat")]},splitLine:{show:!1}},series:[{type:"custom",coordinateSystem:"calendar",data:b.value,renderItem:(N,ae)=>{const ue=ae.coord(ae.value(0)),he=N.coordSys.cellWidth,G=N.coordSys.cellHeight,O=Math.min(he,G)-3;return{type:"rect",shape:{x:ue[0]-O/2,y:ue[1]-O/2,width:O,height:O,r:3},style:{fill:ae.visual("color")}}},itemStyle:{borderColor:c.value?"transparent":"rgba(0,0,0,0.02)",borderWidth:1}}]}));function me(){_.value&&(A=Dt(_.value,void 0,{renderer:"canvas"}),A.setOption({backgroundColor:"transparent",...J.value}))}function pe(){A&&A.setOption({backgroundColor:"transparent",...J.value},{notMerge:!0})}function X(){A?.resize()}return de([()=>r.dailyActivity,t,k],()=>pe()),de(c,()=>{A?.dispose(),me()}),Ve(()=>{me(),window.addEventListener("resize",X)}),dt(()=>{window.removeEventListener("resize",X),A?.dispose()}),(N,ae)=>{const ue=_e;return n(),K(a(Lt),null,{default:F(()=>[e("div",Ap,[e("h2",zp,s(l.session.name),1),e("div",qp,[e("div",Rp,[e("div",Ep,[e("div",jp,[l.session.type==="group"?(n(),K(ue,{key:0,name:"i-heroicons-user-group",class:"h-4 w-4 opacity-70"})):(n(),K(ue,{key:1,name:"i-heroicons-user",class:"h-4 w-4 opacity-70"}))]),e("span",Pp,s(l.session.platform.toUpperCase())+" · "+s(l.session.type==="private"?a(o)("analysis.overview.identity.privateChat"):a(o)("analysis.overview.identity.groupChat")),1)]),U.value?(n(),i("div",Up,[e("div",Bp,[u(ue,{name:"i-heroicons-calendar",class:"h-4 w-4 opacity-70"})]),e("span",Fp,s(U.value),1)])):E("",!0)]),e("div",Vp,[e("div",Np,[e("span",Hp,s(a(p).toLocaleString()),1),e("span",Op,s(a(o)("analysis.overview.identity.totalMessages")),1)]),e("div",Wp,[e("span",Yp,s(a(d).toLocaleString()),1),e("span",Qp,s(a(o)("analysis.overview.identity.durationDays")),1)]),e("div",Kp,[e("span",Gp,s(a($).toLocaleString()),1),e("span",Jp,s(a(o)("analysis.overview.identity.activeDays")),1)]),e("div",Xp,[e("span",Zp,s(a(h).toLocaleString()),1),e("span",eh,s(a(o)("analysis.overview.identity.dailyAvgMessages")),1)])])])]),e("div",th,[ae[0]||(ae[0]=e("div",{class:"mb-2 flex items-center justify-between"},[e("span",{class:"text-[10px] font-bold uppercase tracking-widest text-gray-400 dark:text-gray-500"}," Activity Heatmap ")],-1)),e("div",ah,[e("div",{ref_key:"chartRef",ref:_,class:"h-[140px] min-w-[700px] lg:w-full"},null,512)])]),u(Lp,{flat:"","daily-avg-messages":a(h),"duration-days":a(d),"image-count":a(y),"peak-hour":a(T),"peak-weekday":a(M),"weekday-names":a(C),"weekday-vs-weekend":a(L),"peak-day":a(z),"active-days":a($),"total-days":a(I),"active-rate":a(w),"late-night-count":a(S).count,"late-night-ratio":a(S).ratio,"max-consecutive-days":a(v)},null,8,["daily-avg-messages","duration-days","image-count","peak-hour","peak-weekday","weekday-names","weekday-vs-weekend","peak-day","active-days","total-days","active-rate","late-night-count","late-night-ratio","max-consecutive-days"])]),_:1})}}}),sh={class:"p-5"},Sk=ge({__name:"DailyTrendCard",props:{dailyActivity:{},dailyChartData:{}},setup(l){const{t:o}=ye();return(t,c)=>l.dailyActivity.length>0?(n(),K(a(Ye),{key:0,title:a(o)("analysis.overview.dailyTrend.title"),"show-divider":!1},{default:F(()=>[e("div",sh,[u(a(Ht),{data:l.dailyChartData,height:288},null,8,["data"])])]),_:1},8,["title"])):E("",!0)}}),Et="__ALL__",nh=ge({__name:"UserSelect",props:{sessionId:{},modelValue:{}},emits:["update:modelValue"],setup(l,{emit:o}){const{t}=ye(),c=l,r=o,m=f([]),g=f(!1),d=x({get:()=>c.modelValue===null?Et:String(c.modelValue),set:y=>{r("update:modelValue",y===Et?null:parseInt(y))}}),p=x(()=>{const y=[{value:Et,label:t("common.userSelect.allMembers")}];return m.value.forEach(T=>{const M=T.groupNickname||T.accountName||T.platformId;y.push({value:String(T.id),label:`${M} (${T.messageCount})`})}),y});async function h(){if(c.sessionId){g.value=!0;try{const y=await Oe().getMembers(c.sessionId);m.value=y.sort((T,M)=>M.messageCount-T.messageCount)}catch(y){console.error("加载成员列表失败:",y)}finally{g.value=!1}}}return de(()=>c.sessionId,()=>{r("update:modelValue",null),h()},{immediate:!0}),(y,T)=>{const M=Jt;return n(),K(M,{modelValue:d.value,"onUpdate:modelValue":T[0]||(T[0]=C=>d.value=C),items:p.value,loading:g.value,virtualize:{estimateSize:32,overscan:10},"value-key":"value",class:"w-48"},null,8,["modelValue","items","loading"])}}}),oh={class:"relative z-10 px-6 pt-8 pb-4 sm:px-8"},rh={class:"flex items-center gap-6 sm:gap-10"},lh={class:"min-w-0 flex-1"},ih={class:"flex flex-col text-[15px] leading-relaxed text-gray-600 dark:text-gray-300"},ch={key:0,class:"mb-2 text-sm font-medium tracking-wide text-gray-500 dark:text-gray-400"},dh={class:"mb-4 flex min-w-0 flex-wrap items-baseline gap-2"},uh={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},mh={class:"font-black text-5xl tracking-tight text-gray-900 dark:text-white"},gh={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},ph={key:1,class:"flex min-w-0 max-w-full flex-wrap items-center gap-x-1.5 gap-y-1.5"},hh={class:"text-base font-medium text-gray-600 dark:text-gray-300"},vh={class:"font-bold tabular-nums text-pink-500 dark:text-pink-400"},yh={class:"flex shrink-0 flex-col items-center"},fh={class:"mb-1 text-[10px] font-bold text-gray-500 dark:text-gray-400"},xh={class:"relative z-10 px-6 pb-6 pt-4 sm:px-8"},bh={class:"grid grid-cols-2 gap-3 lg:grid-cols-4"},kh={class:"min-w-0 flex-1"},_h={class:"flex items-center justify-between gap-1"},wh={class:"mt-0.5 truncate text-[10px] font-medium text-gray-500 dark:text-gray-400"},$h={class:"mt-0.5 truncate text-[9px] text-gray-400 dark:text-gray-500"},Ch={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"},Sh={class:"flex items-center gap-1.5"},Th={class:"text-[9px] font-medium uppercase tracking-widest"},Mh=ge({__name:"TypeProfileCard",props:{sessionId:{},messageTypes:{},textStats:{},timeFilter:{}},setup(l){Mt([hs,Zt,It]);const{t:o}=ye(),t=$t(),c=l,r=x(()=>c.messageTypes.reduce((b,q)=>b+q.count,0)),m=x(()=>c.messageTypes.find(b=>b.type===st.TEXT)?.count??0),g=x(()=>{if(r.value===0)return 0;const b=r.value-m.value;return Math.round(b/r.value*100)}),d=x(()=>c.textStats.textCount===0?0:Math.round(c.textStats.shortCount/c.textStats.textCount*100)),p=f({first:"",last:""});async function h(){if(c.sessionId)try{const b=await Oe().getDailyActivity(c.sessionId,c.timeFilter);if(b.length>0){const q=[...b].sort((Y,W)=>Y.date.localeCompare(W.date));p.value={first:Ie(q[0].date).format("YYYY/MM/DD"),last:Ie(q[q.length-1].date).format("YYYY/MM/DD")}}}catch{}}function y(b){return c.messageTypes.find(q=>q.type===b)?.count??0}const T=x(()=>[{label:o("views.message.typeCard.nonTextImage"),count:y(st.IMAGE),unit:o("views.message.typeCard.unitImage")},{label:o("views.message.typeCard.nonTextEmoji"),count:y(st.EMOJI),unit:o("views.message.typeCard.unitEmoji")},{label:o("views.message.typeCard.nonTextVoice"),count:y(st.VOICE),unit:o("views.message.typeCard.unitVoice")},{label:o("views.message.typeCard.nonTextVideo"),count:y(st.VIDEO),unit:o("views.message.typeCard.unitVideo")},{label:o("views.message.typeCard.nonTextFile"),count:y(st.FILE),unit:o("views.message.typeCard.unitFile")},{label:o("views.message.typeCard.nonTextLink"),count:y(st.LINK),unit:o("views.message.typeCard.unitLink")}].filter(b=>b.count>0)),M=f(30),C=f(0),L=f(!1),z=[{label:"20",value:20},{label:"30",value:30},{label:"50",value:50},{label:"80",value:80},{label:"100",value:100}],$=x({get:()=>M.value,set:b=>{M.value!==b&&(M.value=b,I())}});async function I(){if(c.sessionId){L.value=!0;try{C.value=await Oe().getLongMessageCount(c.sessionId,c.timeFilter,M.value)}catch(b){console.error("[chart-message] Failed to load essay count:",b)}finally{L.value=!1}}}de(()=>[c.sessionId,c.timeFilter],()=>{I(),h()},{immediate:!0,deep:!0});const w=x(()=>[{icon:"i-heroicons-pencil-square",label:o("views.message.profile.textExpression"),value:o("views.message.profile.avgLengthUnit",{count:c.textStats.avgLength||0}),subtext:c.textStats.maxLength>0?o("views.message.profile.textExpressionDesc",{count:c.textStats.maxLength}):"",colorClass:"text-violet-600 dark:text-violet-400"},{icon:"i-heroicons-chat-bubble-bottom-center-text",label:o("views.message.profile.shortMaster"),value:`${d.value}%`,subtext:o("views.message.profile.shortMasterDesc",{count:c.textStats.shortCount}),colorClass:"text-emerald-600 dark:text-emerald-400"},{icon:"i-heroicons-document-text",label:o("views.message.profile.essayLover"),value:C.value.toLocaleString(),subtext:o("views.message.profile.essayLoverDesc",{threshold:M.value}),colorClass:"text-indigo-600 dark:text-indigo-400",slot:"essay-threshold"},{icon:"i-heroicons-photo",label:o("views.message.profile.mediaRichness"),value:`${g.value}%`,subtext:T.value.slice(0,3).map(b=>`${b.label} ${b.count}`).join(" · ")||"-",colorClass:"text-pink-600 dark:text-pink-400"}]),S=f(null);let v=null;const _=["#6366f1","#ec4899","#f97316","#22c55e","#06b6d4","#8b5cf6","#f43f5e","#eab308","#14b8a6","#3b82f6"],A=x(()=>[...c.messageTypes].sort((q,Y)=>Y.count-q.count).slice(0,8).map((q,Y)=>({name:Ut(q.type,o),value:q.count,itemStyle:{color:_[Y%_.length]}})));function j(){S.value&&(v=Dt(S.value,void 0,{renderer:"canvas"}),U())}function U(){v&&v.setOption({backgroundColor:"transparent",tooltip:{trigger:"item",formatter:"{b}: {c} ({d}%)"},series:[{type:"pie",radius:["50%","78%"],center:["50%","50%"],avoidLabelOverlap:!1,padAngle:2,itemStyle:{borderRadius:4},label:{show:!1},emphasis:{label:{show:!1},scaleSize:4},data:A.value}]},{notMerge:!0})}function k(){v?.resize()}return de(()=>c.messageTypes,()=>U()),de(t,()=>{v?.dispose(),j()}),Ve(()=>{j(),window.addEventListener("resize",k)}),dt(()=>{window.removeEventListener("resize",k),v?.dispose()}),(b,q)=>{const Y=_e,W=Gt;return n(),K(a(Lt),null,{default:F(()=>[e("div",oh,[e("div",rh,[e("div",lh,[e("div",ih,[p.value.first?(n(),i("p",ch,s(p.value.first)+" – "+s(p.value.last),1)):E("",!0),e("div",dh,[e("span",uh,s(a(o)("views.message.profile.heroLine1Prefix")),1),e("span",mh,s(r.value.toLocaleString()),1),e("span",gh,s(a(o)("views.message.profile.heroLine1Suffix")),1)]),T.value.length>0?(n(),i("div",ph,[e("span",hh,s(a(o)("views.message.typeCard.nonTextPrefix")),1),(n(!0),i(oe,null,ce(T.value,J=>(n(),i("span",{key:J.label,class:"inline-flex items-center gap-1 rounded-full bg-gray-100 px-2.5 py-0.5 text-xs font-semibold text-gray-700 dark:bg-white/10 dark:text-gray-200"},[e("span",vh,s(J.count.toLocaleString()),1),e("span",null,s(J.unit),1)]))),128))])):E("",!0)])]),e("div",yh,[e("div",fh,s(a(o)("views.message.profile.typeDistribution")),1),e("div",{ref_key:"donutRef",ref:S,style:{width:"130px",height:"130px"}},null,512)])])]),e("div",xh,[q[1]||(q[1]=e("div",{class:"mb-3 flex items-center justify-between"},[e("span",{class:"text-[10px] font-bold uppercase tracking-widest text-gray-400 dark:text-gray-500"}," Type Profile ")],-1)),e("div",bh,[(n(!0),i(oe,null,ce(w.value,J=>(n(),i("div",{key:J.icon+J.label,class:"flex min-w-0 items-start gap-2 px-2.5 py-2"},[u(Y,{name:J.icon,class:se(["mt-0.5 h-3.5 w-3.5 shrink-0",J.colorClass])},null,8,["name","class"]),e("div",kh,[e("div",_h,[e("div",{class:se(["truncate font-mono text-sm font-black leading-tight tabular-nums",J.colorClass])},s(J.value),3),J.slot==="essay-threshold"?(n(),K(W,{key:0,modelValue:$.value,"onUpdate:modelValue":q[0]||(q[0]=me=>$.value=me),items:z,"value-key":"value",size:"xs",class:"relative z-120 w-16 shrink-0",ui:{content:"z-[121]"},disabled:L.value},null,8,["modelValue","disabled"])):E("",!0)]),e("div",wh,s(J.label),1),e("div",$h,s(J.subtext),1)])]))),128))])]),e("div",Ch,[e("div",Sh,[u(Y,{name:"i-heroicons-chat-bubble-left-right-solid",class:"h-3.5 w-3.5"}),q[2]||(q[2]=e("span",{class:"text-[10px] font-bold uppercase tracking-wider"},"ChatLab",-1))]),e("span",Th,s(a(o)("views.message.typeCard.watermark")),1)])]),_:1})}}}),Ih={key:1,class:"main-content mx-auto max-w-[920px] space-y-6 p-6"},Dh={class:"p-5"},Lh={key:0,class:"grid grid-cols-1 gap-6 lg:grid-cols-2 lg:items-center"},Ah={class:"space-y-3"},zh={class:"min-w-20 shrink-0 text-sm text-gray-700 dark:text-gray-300"},qh={class:"flex-1"},Rh={class:"h-2 overflow-hidden rounded-full bg-gray-100 dark:bg-gray-800"},Eh={class:"shrink-0 text-right"},jh={class:"text-sm font-medium text-gray-900 dark:text-white"},Ph={class:"ml-1 text-xs text-gray-400"},Uh={key:1,class:"flex h-48 items-center justify-center text-gray-400"},Bh={class:"p-5"},Fh={class:"mb-5 grid grid-cols-2 gap-3 sm:grid-cols-4"},Vh={class:"p-3"},Nh={class:"font-mono text-xl font-bold text-gray-900 dark:text-white"},Hh={class:"mt-1 text-xs text-gray-500"},Oh={class:"p-3"},Wh={class:"font-mono text-xl font-bold text-indigo-600 dark:text-indigo-400"},Yh={class:"mt-1 text-xs text-gray-500"},Qh={class:"p-3"},Kh={class:"font-mono text-xl font-bold text-pink-600 dark:text-pink-400"},Gh={class:"mt-1 text-xs text-gray-500"},Jh={class:"p-3"},Xh={class:"font-mono text-xl font-bold text-emerald-600 dark:text-emerald-400"},Zh={class:"mt-1 text-xs text-gray-500"},ev={class:"mb-5 rounded-lg border border-gray-200 p-4 dark:border-gray-700"},tv={class:"mb-2 text-xs font-medium text-gray-500 dark:text-gray-400"},av={class:"flex items-center gap-4 text-sm"},sv={class:"flex items-center gap-1.5"},nv={class:"font-mono font-medium text-gray-900 dark:text-white"},ov={class:"flex items-center gap-1.5"},rv={class:"font-mono font-medium text-gray-900 dark:text-white"},lv={class:"flex items-center gap-1.5"},iv={class:"font-mono font-medium text-gray-900 dark:text-white"},cv={class:"flex items-center gap-1.5"},dv={class:"font-mono font-medium text-gray-900 dark:text-white"},uv={class:"mt-3 grid grid-cols-3 gap-3 text-xs"},mv={class:"text-gray-500"},gv={class:"ml-1 font-medium text-emerald-600 dark:text-emerald-400"},pv={class:"text-gray-400"},hv={class:"text-gray-500"},vv={class:"ml-1 font-medium text-indigo-600 dark:text-indigo-400"},yv={class:"grid grid-cols-1 gap-6 lg:grid-cols-2"},fv={class:"text-xs text-gray-400"},xv={class:"p-5"},bv={key:1,class:"flex h-48 items-center justify-center text-gray-400"},kv={class:"text-xs text-gray-400"},_v={class:"p-5"},wv={key:1,class:"flex h-48 items-center justify-center text-gray-400"},Tk=ge({__name:"TypeAnalysisView",props:{sessionId:{},sessionName:{},timeFilter:{}},setup(l){const o=l,{t}=ye(),c=f(!0),r=f([]),m=f([]),g=f([]),d=f({textCount:0,avgLength:0,maxLength:0,shortCount:0}),p=f({p25:0,p50:0,p75:0,p90:0}),h=f(0),y=x(()=>{const w=[...r.value].sort((S,v)=>v.count-S.count);return{labels:w.map(S=>Ut(S.type,t)),values:w.map(S=>S.count)}}),T=x(()=>{const w=r.value.reduce((v,_)=>v+_.count,0);return[...r.value].sort((v,_)=>_.count-v.count).map(v=>({name:Ut(v.type,t),count:v.count,percentage:w>0?Math.round(v.count/w*100):0}))}),M=["#6366f1","#8b5cf6","#ec4899","#f43f5e","#f97316","#eab308","#22c55e","#14b8a6","#06b6d4","#3b82f6"];function C(w){return M[w%M.length]}const L=x(()=>({labels:m.value.map(w=>String(w.len)),values:m.value.map(w=>w.count)})),z=x(()=>({labels:g.value.map(w=>w.range),values:g.value.map(w=>w.count)})),$=x(()=>d.value.textCount===0?0:Math.round(d.value.shortCount/d.value.textCount*100));async function I(){if(o.sessionId){c.value=!0;try{const w=Oe(),[S,v,_,A,j]=await Promise.all([w.getMessageTypeDistribution(o.sessionId,o.timeFilter),w.getMessageLengthDistribution(o.sessionId,o.timeFilter),w.getTextStats(o.sessionId,o.timeFilter),w.getTextLengthPercentiles(o.sessionId,o.timeFilter),w.getLongMessageCount(o.sessionId,o.timeFilter,30)]);r.value=S,m.value=v.detail,g.value=v.grouped,d.value=_,p.value=A,h.value=j}catch(w){console.error("[chart-message] Failed to load type analysis data:",w)}finally{c.value=!1}}}return de(()=>[o.sessionId,o.timeFilter],()=>I(),{immediate:!0,deep:!0}),(w,S)=>(n(),i("div",{class:se(c.value?"h-full":"")},[c.value?(n(),K(a(kt),{key:0,variant:"page",text:a(t)("common.loading")},null,8,["text"])):(n(),i("div",Ih,[r.value.length>0?(n(),K(Mh,{key:0,"session-id":l.sessionId,"message-types":r.value,"text-stats":d.value,"time-filter":l.timeFilter},null,8,["session-id","message-types","text-stats","time-filter"])):E("",!0),u(a(Ye),{title:a(t)("views.message.typeDistribution"),"show-divider":!1},{default:F(()=>[e("div",Dh,[y.value.values.length>0?(n(),i("div",Lh,[e("div",null,[u(a(Ot),{data:y.value,height:280,"show-legend":!1},null,8,["data"])]),e("div",null,[e("div",Ah,[(n(!0),i(oe,null,ce(T.value,(v,_)=>(n(),i("div",{key:_,class:"flex items-center gap-3"},[e("div",{class:"h-3 w-3 shrink-0 rounded-full",style:Ke({backgroundColor:C(_)})},null,4),e("div",zh,s(v.name),1),e("div",qh,[e("div",Rh,[e("div",{class:"h-full rounded-full transition-all",style:Ke({width:`${v.percentage}%`,backgroundColor:C(_)})},null,4)])]),e("div",Eh,[e("span",jh,s(v.count.toLocaleString()),1),e("span",Ph,"("+s(v.percentage)+"%)",1)])]))),128))])])])):(n(),i("div",Uh,s(a(t)("views.message.noData")),1))])]),_:1},8,["title"]),u(a(Ye),{title:a(t)("views.message.typeAnalysis.textDepthTitle"),"show-divider":!1},{default:F(()=>[e("div",Bh,[e("div",Fh,[e("div",Vh,[e("div",Nh,s(d.value.textCount.toLocaleString()),1),e("div",Hh,s(a(t)("views.message.typeAnalysis.textTotal")),1)]),e("div",Oh,[e("div",Wh,s(d.value.avgLength||0),1),e("div",Yh,s(a(t)("views.message.typeAnalysis.avgLength")),1)]),e("div",Qh,[e("div",Kh,s(p.value.p50),1),e("div",Gh,s(a(t)("views.message.typeAnalysis.medianLength")),1)]),e("div",Jh,[e("div",Xh,s(d.value.maxLength),1),e("div",Zh,s(a(t)("views.message.typeAnalysis.maxLength")),1)])]),e("div",ev,[e("div",tv,s(a(t)("views.message.typeAnalysis.percentiles")),1),e("div",av,[e("div",sv,[S[0]||(S[0]=e("span",{class:"text-gray-500"},"P25",-1)),e("span",nv,s(p.value.p25),1)]),e("div",ov,[S[1]||(S[1]=e("span",{class:"text-gray-500"},"P50",-1)),e("span",rv,s(p.value.p50),1)]),e("div",lv,[S[2]||(S[2]=e("span",{class:"text-gray-500"},"P75",-1)),e("span",iv,s(p.value.p75),1)]),e("div",cv,[S[3]||(S[3]=e("span",{class:"text-gray-500"},"P90",-1)),e("span",dv,s(p.value.p90),1)])]),e("div",uv,[e("div",null,[e("span",mv,s(a(t)("views.message.typeAnalysis.shortMessages")),1),e("span",gv,s($.value)+"%",1),e("span",pv,"("+s(d.value.shortCount)+")",1)]),e("div",null,[e("span",hv,s(a(t)("views.message.typeAnalysis.essayMessages")),1),e("span",vv,s(h.value),1)])])])])]),_:1},8,["title"]),e("div",yv,[u(a(Ye),{title:a(t)("views.message.lengthDetailTitle"),"show-divider":!1},{headerRight:F(()=>[e("span",fv,s(a(t)("views.message.lengthDetailHint")),1)]),default:F(()=>[e("div",xv,[L.value.values.some(v=>v>0)?(n(),K(a(Ze),{key:0,data:L.value,height:200},null,8,["data"])):(n(),i("div",bv,s(a(t)("views.message.noTextMessages")),1))])]),_:1},8,["title"]),u(a(Ye),{title:a(t)("views.message.lengthGroupedTitle"),"show-divider":!1},{headerRight:F(()=>[e("span",kv,s(a(t)("views.message.lengthGroupedHint")),1)]),default:F(()=>[e("div",_v,[z.value.values.some(v=>v>0)?(n(),K(a(Ze),{key:0,data:z.value,height:200},null,8,["data"])):(n(),i("div",wv,s(a(t)("views.message.noTextMessages")),1))])]),_:1},8,["title"])])]))],2))}}),$v={class:"relative z-10 px-6 pt-8 pb-4 sm:px-8"},Cv={class:"flex items-start gap-6 sm:gap-10"},Sv={class:"min-w-0 flex-1"},Tv={class:"flex flex-col text-[15px] leading-relaxed text-gray-600 dark:text-gray-300"},Mv={key:0,class:"mb-2 text-sm font-medium tracking-wide text-gray-500 dark:text-gray-400"},Iv={class:"mb-3 flex items-baseline gap-2"},Dv={class:"font-black text-5xl tracking-tight text-gray-900 dark:text-white"},Lv={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},Av={class:"font-bold text-3xl text-indigo-500 dark:text-indigo-400"},zv={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},qv={class:"flex items-baseline flex-wrap gap-x-1.5 gap-y-1"},Rv={class:"text-base font-medium text-gray-600 dark:text-gray-300"},Ev={class:"font-bold text-xl text-pink-500 dark:text-pink-400"},jv={class:"text-base font-medium text-gray-600 dark:text-gray-300"},Pv={class:"text-base font-medium text-amber-600 dark:text-amber-400"},Uv={class:"flex shrink-0 flex-col items-center"},Bv={class:"mb-1 text-[10px] font-bold text-gray-500 dark:text-gray-400"},Fv={class:"relative z-10 px-6 pb-6 pt-4 sm:px-8"},Vv={class:"grid grid-cols-2 gap-3 lg:grid-cols-4"},Nv={class:"min-w-0 flex-1"},Hv={class:"mt-0.5 truncate text-[10px] font-medium text-gray-500 dark:text-gray-400"},Ov={class:"mt-0.5 truncate text-[9px] text-gray-400 dark:text-gray-500"},Wv={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"},Yv={class:"flex items-center gap-1.5"},Qv={class:"text-[9px] font-medium uppercase tracking-widest"},Kv=ge({__name:"TimeProfileCard",props:{hourlyActivity:{},weekdayActivity:{},dailyActivity:{}},setup(l){Mt([vs,ys,It]);const{t:o}=ye(),t=$t(),c=l,r=x(()=>c.dailyActivity.filter(v=>v.messageCount>0).length),m=x(()=>c.dailyActivity.reduce((v,_)=>v+_.messageCount,0)),g=x(()=>{if(c.dailyActivity.length===0)return{first:"",last:"",days:0};const v=[...c.dailyActivity].sort((j,U)=>j.date.localeCompare(U.date)),_=Ie(v[0].date),A=Ie(v[v.length-1].date);return{first:_.format("YYYY/MM/DD"),last:A.format("YYYY/MM/DD"),days:A.diff(_,"day")+1}}),d=x(()=>r.value===0?0:Math.round(m.value/r.value)),p=x(()=>c.dailyActivity.length===0?null:c.dailyActivity.reduce((v,_)=>_.messageCount>v.messageCount?_:v,c.dailyActivity[0])),h=x(()=>c.hourlyActivity.length===0?[]:[...c.hourlyActivity].sort((v,_)=>_.messageCount-v.messageCount).slice(0,3)),y=x(()=>{if(c.hourlyActivity.length===0&&c.weekdayActivity.length===0)return null;const v=g.value.days>0?r.value/g.value.days:0,_=c.weekdayActivity.filter(X=>X.weekday===6||X.weekday===7),A=c.weekdayActivity.filter(X=>X.weekday>=1&&X.weekday<=5),j=_.reduce((X,N)=>X+N.messageCount,0),U=A.reduce((X,N)=>X+N.messageCount,0),k=j+U,b=k>0?j/k:0,q=c.hourlyActivity.reduce((X,N)=>X+N.messageCount,0),Y=c.hourlyActivity.filter(X=>X.hour>=22||X.hour<5).reduce((X,N)=>X+N.messageCount,0),W=c.hourlyActivity.filter(X=>X.hour>=18&&X.hour<22).reduce((X,N)=>X+N.messageCount,0),J=q>0?Y/q:0,me=q>0?W/q:0;if(v>=.9)return{label:o("views.message.timeCard.personalityEveryday"),icon:"i-heroicons-fire"};if(b>=.55)return{label:o("views.message.timeCard.personalityWeekend"),icon:"i-heroicons-calendar"};if(b<=.2&&k>0)return{label:o("views.message.timeCard.personalityWeekday"),icon:"i-heroicons-briefcase"};if(J>=.3)return{label:o("views.message.timeCard.personalityNightOwl"),icon:"i-heroicons-moon"};if(me>=.4)return{label:o("views.message.timeCard.personalityEveningChat"),icon:"i-heroicons-sparkles"};const pe=[...c.hourlyActivity].sort((X,N)=>N.messageCount-X.messageCount)[0];return pe?pe.hour>=5&&pe.hour<9?{label:o("views.message.timeCard.personalityEarlyBird"),icon:"i-heroicons-sun"}:pe.hour>=12&&pe.hour<14?{label:o("views.message.timeCard.personalityLunchChat"),icon:"i-heroicons-clock"}:{label:o("views.message.timeCard.personalityDaytime"),icon:"i-heroicons-sun"}:null}),T=x(()=>{const v=c.weekdayActivity.filter(k=>k.weekday===6||k.weekday===7),_=c.weekdayActivity.filter(k=>k.weekday>=1&&k.weekday<=5),A=v.reduce((k,b)=>k+b.messageCount,0),j=_.reduce((k,b)=>k+b.messageCount,0),U=A+j;return U===0?0:Math.round(A/U*100)}),M=x(()=>[o("common.weekday.mon"),o("common.weekday.tue"),o("common.weekday.wed"),o("common.weekday.thu"),o("common.weekday.fri"),o("common.weekday.sat"),o("common.weekday.sun")]),C=x(()=>{if(c.weekdayActivity.length===0)return null;const v=[...c.weekdayActivity].sort((_,A)=>A.messageCount-_.messageCount)[0];return{name:M.value[v.weekday-1],count:v.messageCount}}),L=x(()=>[{icon:"i-heroicons-fire",label:o("views.message.timeCard.peakRecord"),value:p.value?Ie(p.value.date).format("MM/DD"):"-",subtext:p.value?o("views.message.timeCard.peakRecordDesc",{count:p.value.messageCount}):"",colorClass:"text-red-600 dark:text-red-400"},{icon:"i-heroicons-clock",label:o("views.message.timeCard.topHoursLabel"),value:h.value.length>0?`${h.value[0].hour}:00`:"-",subtext:h.value.length>=2?h.value.map(v=>`${v.hour}:00`).join(" > "):"",colorClass:"text-cyan-600 dark:text-cyan-400"},{icon:"i-heroicons-calendar-days",label:o("views.message.timeCard.peakWeekdayLabel"),value:C.value?.name||"-",subtext:C.value?`${C.value.count.toLocaleString()}`:"",colorClass:"text-violet-600 dark:text-violet-400"},{icon:"i-heroicons-building-office",label:o("views.message.timeCard.weekendRatio"),value:`${T.value}%`,subtext:o("views.message.timeCard.weekendRatioDesc"),colorClass:"text-amber-600 dark:text-amber-400"}]),z=f(null);let $=null;function I(){z.value&&($=Dt(z.value,void 0,{renderer:"canvas"}),w())}function w(){if(!$)return;const v=new Map(c.hourlyActivity.map(U=>[U.hour,U.messageCount])),_=[];for(let U=0;U<24;U++)_.push(v.get(U)||0);const A=Math.max(..._,1),j=_.map(U=>{const k=U/A;return k>.8?t.value?"#f472b6":"#ec4899":k>.5?t.value?"#a78bfa":"#8b5cf6":t.value?"rgba(255,255,255,0.15)":"rgba(0,0,0,0.08)"});$.setOption({backgroundColor:"transparent",tooltip:{trigger:"axis",formatter:U=>`${U[0].axisValue}:00 — ${U[0].value}`},grid:{left:0,right:0,top:4,bottom:16},xAxis:{type:"category",data:Array.from({length:24},(U,k)=>`${k}`),axisLine:{show:!1},axisTick:{show:!1},axisLabel:{fontSize:9,color:t.value?"#6b7280":"#9ca3af",interval:U=>U%6===0}},yAxis:{type:"value",show:!1},series:[{type:"bar",data:_.map((U,k)=>({value:U,itemStyle:{color:j[k]}})),barWidth:"60%",itemStyle:{borderRadius:[2,2,0,0]}}]},{notMerge:!0})}function S(){$?.resize()}return de(()=>c.hourlyActivity,()=>w()),de(t,()=>{$?.dispose(),I()}),Ve(()=>{I(),window.addEventListener("resize",S)}),dt(()=>{window.removeEventListener("resize",S),$?.dispose()}),(v,_)=>{const A=_e;return n(),K(a(Lt),null,{default:F(()=>[e("div",$v,[e("div",Cv,[e("div",Sv,[e("div",Tv,[g.value.first?(n(),i("p",Mv,s(g.value.first)+" – "+s(g.value.last),1)):E("",!0),e("div",Iv,[e("span",Dv,s(g.value.days),1),e("span",Lv,s(a(o)("views.message.timeCard.heroDaysIn")),1),e("span",Av,s(r.value),1),e("span",zv,s(a(o)("views.message.timeCard.heroDaysActive")),1)]),e("div",qv,[e("span",Rv,s(a(o)("views.message.timeCard.heroAvgPrefix")),1),e("span",Ev,s(d.value),1),e("span",jv,s(a(o)("views.message.timeCard.heroAvgSuffix")),1),y.value?(n(),i(oe,{key:0},[u(A,{name:y.value.icon,class:"ml-2 h-4 w-4 text-amber-500"},null,8,["name"]),e("span",Pv,s(y.value.label),1)],64)):E("",!0)])])]),e("div",Uv,[e("div",Bv,s(a(o)("views.message.timeCard.hourlyDistribution")),1),e("div",{ref_key:"barRef",ref:z,style:{width:"180px",height:"110px"}},null,512)])])]),e("div",Fv,[_[0]||(_[0]=e("div",{class:"mb-3 flex items-center justify-between"},[e("span",{class:"text-[10px] font-bold uppercase tracking-widest text-gray-400 dark:text-gray-500"}," Time Profile ")],-1)),e("div",Vv,[(n(!0),i(oe,null,ce(L.value,j=>(n(),i("div",{key:j.icon+j.label,class:"flex min-w-0 items-start gap-2 px-2.5 py-2"},[u(A,{name:j.icon,class:se(["mt-0.5 h-3.5 w-3.5 shrink-0",j.colorClass])},null,8,["name","class"]),e("div",Nv,[e("div",{class:se(["truncate font-mono text-sm font-black leading-tight tabular-nums",j.colorClass])},s(j.value),3),e("div",Hv,s(j.label),1),e("div",Ov,s(j.subtext),1)])]))),128))])]),e("div",Wv,[e("div",Yv,[u(A,{name:"i-heroicons-chat-bubble-left-right-solid",class:"h-3.5 w-3.5"}),_[1]||(_[1]=e("span",{class:"text-[10px] font-bold uppercase tracking-wider"},"ChatLab",-1))]),e("span",Qv,s(a(o)("views.message.timeCard.watermark")),1)])]),_:1})}}}),Gv={key:1,class:"main-content mx-auto max-w-[920px] space-y-6 p-6"},Jv={class:"grid grid-cols-1 gap-6 lg:grid-cols-2"},Xv={class:"p-5"},Zv={class:"p-5"},ey={class:"grid grid-cols-1 gap-6 lg:grid-cols-2"},ty={class:"p-5"},ay={class:"p-5"},sy={key:1,class:"flex h-48 items-center justify-center text-gray-400"},ny={class:"text-xs text-gray-400"},oy={class:"p-5"},ry={key:1,class:"flex h-48 items-center justify-center text-gray-400"},ly={class:"text-xs text-gray-400"},iy={class:"p-5"},cy={class:"flex items-center gap-2"},dy={class:"text-xs text-gray-400"},uy={class:"p-5"},my={key:1,class:"flex h-32 items-center justify-center text-gray-400"},Mk=ge({__name:"TimeAnalysisView",props:{sessionId:{},sessionName:{},timeFilter:{}},setup(l){const o=l,{t}=ye(),c=f(!0),r=f([]),m=f([]),g=f([]),d=f([]),p=f([]),h=f([]),y=f([]),T=["#6366f1","#ec4899","#f97316","#22c55e","#06b6d4","#8b5cf6","#f43f5e","#eab308","#14b8a6","#3b82f6"],M=x(()=>[t("common.weekday.mon"),t("common.weekday.tue"),t("common.weekday.wed"),t("common.weekday.thu"),t("common.weekday.fri"),t("common.weekday.sat"),t("common.weekday.sun")]),C=x(()=>[t("common.month.jan"),t("common.month.feb"),t("common.month.mar"),t("common.month.apr"),t("common.month.may"),t("common.month.jun"),t("common.month.jul"),t("common.month.aug"),t("common.month.sep"),t("common.month.oct"),t("common.month.nov"),t("common.month.dec")]),L=x(()=>{const k=new Map(m.value.map(Y=>[Y.hour,Y.messageCount])),b=[],q=[];for(let Y=0;Y<24;Y++)b.push(`${Y}`),q.push(k.get(Y)||0);return{labels:b,values:q}}),z=x(()=>{const k=new Map(g.value.map(q=>[q.weekday,q.messageCount])),b=[];for(let q=1;q<=7;q++)b.push(k.get(q)||0);return{labels:M.value,values:b}}),$=x(()=>{const k=new Map(d.value.map(q=>[q.month,q.messageCount])),b=[];for(let q=1;q<=12;q++)b.push(k.get(q)||0);return{labels:C.value,values:b}}),I=x(()=>{const k=[...p.value].sort((b,q)=>b.year-q.year);return{labels:k.map(b=>String(b.year)),values:k.map(b=>b.messageCount)}}),w=x(()=>{const k=Array.from({length:24},(W,J)=>`${J}:00`),b=M.value,q=r.value.reduce((W,J)=>W+J.count,0)||1,Y=[];for(let W=1;W<=7;W++)for(let J=0;J<24;J++){const me=g.value.find(N=>N.weekday===W)?.messageCount||0,pe=m.value.find(N=>N.hour===J)?.messageCount||0,X=Math.round(me*pe/q);Y.push([J,W-1,X])}return{xLabels:k,yLabels:b,data:Y}}),S=x(()=>h.value.map(k=>({date:k.date,value:k.messageCount}))),v=x(()=>{const k=new Set;return h.value.forEach(b=>{const q=parseInt(b.date.split("-")[0]);isNaN(q)||k.add(q)}),Array.from(k).sort((b,q)=>q-b)}),_=f(new Date().getFullYear()),A=x(()=>{const k=_.value;return S.value.filter(b=>b.date.startsWith(`${k}-`))}),j=x(()=>{if(y.value.length===0)return{};const k=[...new Set(y.value.map(J=>J.month))].sort(),b=new Map;if(y.value.forEach(J=>{const me=b.get(J.memberId);me?me.total+=J.count:b.set(J.memberId,{name:J.memberName,total:J.count})}),b.size<=2){const J=new Map;return y.value.forEach(me=>{J.set(me.month,(J.get(me.month)||0)+me.count)}),{tooltip:{trigger:"axis",backgroundColor:"rgba(0, 0, 0, 0.8)",borderColor:"transparent",textStyle:{color:"#fff"}},grid:{left:50,right:20,top:10,bottom:30},xAxis:{type:"category",data:k,boundaryGap:!1,axisLine:{show:!1},axisTick:{show:!1}},yAxis:{type:"value",splitLine:{lineStyle:{type:"dashed",opacity:.3}}},series:[{type:"line",smooth:!0,symbol:"none",areaStyle:{opacity:.2},itemStyle:{color:"#6366f1"},data:k.map(me=>J.get(me)||0)}]}}const W=[...b.entries()].sort((J,me)=>me[1].total-J[1].total).slice(0,10).map(([J,me],pe)=>{const X=new Map(y.value.filter(N=>N.memberId===J).map(N=>[N.month,N.count]));return{name:me.name,type:"line",stack:"total",areaStyle:{opacity:.3},smooth:!0,symbol:"none",itemStyle:{color:T[pe%T.length]},data:k.map(N=>X.get(N)||0)}});return{tooltip:{trigger:"axis",backgroundColor:"rgba(0, 0, 0, 0.8)",borderColor:"transparent",textStyle:{color:"#fff"}},legend:{bottom:0,textStyle:{fontSize:11}},grid:{left:50,right:20,top:10,bottom:40},xAxis:{type:"category",data:k,boundaryGap:!1,axisLine:{show:!1},axisTick:{show:!1}},yAxis:{type:"value",splitLine:{lineStyle:{type:"dashed",opacity:.3}}},series:W}});async function U(){if(o.sessionId){c.value=!0;try{const k=Oe(),[b,q,Y,W,J,me,pe]=await Promise.all([k.getMessageTypeDistribution(o.sessionId,o.timeFilter),k.getHourlyActivity(o.sessionId,o.timeFilter),k.getWeekdayActivity(o.sessionId,o.timeFilter),k.getMonthlyActivity(o.sessionId,o.timeFilter),k.getYearlyActivity(o.sessionId,o.timeFilter),k.getDailyActivity(o.sessionId,o.timeFilter),k.getMemberMonthlyTrend(o.sessionId,o.timeFilter)]);r.value=b,m.value=q,g.value=Y,d.value=W,p.value=J,h.value=me,y.value=pe,v.value.length>0&&(_.value=v.value[0])}catch(k){console.error("[chart-message] Failed to load time analysis data:",k)}finally{c.value=!1}}}return de(()=>[o.sessionId,o.timeFilter],()=>U(),{immediate:!0,deep:!0}),(k,b)=>{const q=Gt;return n(),i("div",{class:se(c.value?"h-full":"")},[c.value?(n(),K(a(kt),{key:0,variant:"page",text:a(t)("common.loading")},null,8,["text"])):(n(),i("div",Gv,[h.value.length>0?(n(),K(Kv,{key:0,"hourly-activity":m.value,"weekday-activity":g.value,"daily-activity":h.value},null,8,["hourly-activity","weekday-activity","daily-activity"])):E("",!0),e("div",Jv,[u(a(Ye),{title:a(t)("views.message.hourlyDistribution"),"show-divider":!1},{default:F(()=>[e("div",Xv,[u(a(Ze),{data:L.value,height:200},null,8,["data"])])]),_:1},8,["title"]),u(a(Ye),{title:a(t)("views.message.weekdayDistribution"),"show-divider":!1},{default:F(()=>[e("div",Zv,[u(a(Ze),{data:z.value,height:200},null,8,["data"])])]),_:1},8,["title"])]),e("div",ey,[u(a(Ye),{title:a(t)("views.message.monthlyDistribution"),"show-divider":!1},{default:F(()=>[e("div",ty,[u(a(Ze),{data:$.value,height:200},null,8,["data"])])]),_:1},8,["title"]),u(a(Ye),{title:a(t)("views.message.yearlyDistribution"),"show-divider":!1},{default:F(()=>[e("div",ay,[I.value.values.length>0?(n(),K(a(Ze),{key:0,data:I.value,height:200},null,8,["data"])):(n(),i("div",sy,s(a(t)("views.message.noData")),1))])]),_:1},8,["title"])]),u(a(Ye),{title:a(t)("views.message.timeAnalysis.memberTrendTitle"),"show-divider":!1},{headerRight:F(()=>[e("span",ny,s(a(t)("views.message.timeAnalysis.memberTrendHint")),1)]),default:F(()=>[e("div",oy,[y.value.length>0?(n(),K(a(Tt),{key:0,option:j.value,height:280},null,8,["option"])):(n(),i("div",ry,s(a(t)("views.message.noData")),1))])]),_:1},8,["title"]),u(a(Ye),{title:a(t)("views.message.timeHeatmap"),"show-divider":!1},{headerRight:F(()=>[e("span",ly,s(a(t)("views.message.heatmapHint")),1)]),default:F(()=>[e("div",iy,[u(a(Nt),{data:w.value,height:320},null,8,["data"])])]),_:1},8,["title"]),u(a(Ye),{title:a(t)("views.message.calendarHeatmap"),"show-divider":!1},{headerRight:F(()=>[e("div",cy,[e("span",dy,s(a(t)("views.message.calendarHint")),1),v.value.length>1?(n(),K(q,{key:0,modelValue:_.value,"onUpdate:modelValue":b[0]||(b[0]=Y=>_.value=Y),items:v.value.map(Y=>({value:Y,label:String(Y)})),size:"xs",class:"w-20"},null,8,["modelValue","items"])):E("",!0)])]),default:F(()=>[e("div",uy,[A.value.length>0?(n(),K(a(dp),{key:0,data:A.value,year:_.value,height:180},null,8,["data","year"])):(n(),i("div",my,s(a(t)("views.message.noData")),1))])]),_:1},8,["title"])]))],2)}}}),gy={class:"relative z-10 px-6 pt-8 pb-4 sm:px-8"},py={class:"flex items-center gap-6 sm:gap-10"},hy={class:"min-w-0 flex-1"},vy={class:"flex flex-col gap-2 text-[15px] leading-relaxed text-gray-600 dark:text-gray-300"},yy={key:0,class:"mb-0 text-sm font-medium tracking-wide text-gray-500 dark:text-gray-400"},fy={class:"flex items-baseline gap-x-1.5"},xy={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},by={class:"font-black text-5xl tracking-tight text-gray-900 dark:text-white"},ky={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},_y={class:"flex items-baseline gap-x-1.5"},wy={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},$y={class:"font-black text-3xl text-pink-500 dark:text-pink-400"},Cy={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},Sy={key:1,class:"mt-1 flex items-baseline flex-wrap gap-x-1.5 gap-y-1"},Ty={class:"text-base font-medium text-gray-600 dark:text-gray-300"},My=["onClick"],Iy={key:0,class:"text-gray-400"},Dy={key:0,class:"hidden shrink-0 overflow-hidden rounded-lg sm:block"},Ly={class:"relative",style:{width:"360px",height:"220px"}},Ay={class:"relative z-10 px-6 pb-6 pt-4 sm:px-8"},zy={class:"grid grid-cols-2 gap-3 lg:grid-cols-4"},qy={class:"min-w-0 flex-1"},Ry={class:"mt-0.5 truncate text-[10px] font-medium text-gray-500 dark:text-gray-400"},Ey={class:"mt-0.5 truncate text-[9px] text-gray-400 dark:text-gray-500"},jy={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"},Py={class:"flex items-center gap-1.5"},Uy={class:"text-[9px] font-medium uppercase tracking-widest"},By=ge({__name:"TopicProfileCard",props:{totalMessages:{},totalWords:{},uniqueWords:{},topWords:{},topicWords:{},posTagStats:{},timeFilter:{}},emits:["wordClick"],setup(l,{emit:o}){const t=ma(()=>wt(()=>import("./EChartWordcloud-CSOuFvyM.js"),__vite__mapDeps([5,6,7,8,1]))),{t:c}=ye(),r=l,m=o,g=x(()=>{const{startTs:L,endTs:z}=r.timeFilter??{};return L&&z?`${Ie(L*1e3).format("YYYY/MM/DD")} – ${Ie(z*1e3).format("YYYY/MM/DD")}`:""}),d=x(()=>(r.topicWords?.length?r.topicWords:r.topWords).slice(0,5)),p=x(()=>({words:(r.topicWords?.length?r.topicWords:r.topWords).slice(0,50).map(z=>({word:z.word,count:z.count,percentage:z.percentage}))})),h=x(()=>r.totalWords===0?0:Math.round(r.uniqueWords/r.totalWords*100)),y=x(()=>{if(!r.posTagStats?.length)return{key:"Balanced",label:c("quotes.topicProfile.styleBalanced"),desc:c("quotes.topicProfile.styleBalancedDesc"),icon:"i-heroicons-scale-solid",colorClass:"text-cyan-600 dark:text-cyan-400"};const L=new Map(r.posTagStats.map(A=>[A.tag,A.count])),z=(L.get("n")||0)+(L.get("ns")||0)+(L.get("nt")||0)+(L.get("nz")||0),$=(L.get("v")||0)+(L.get("vn")||0)+(L.get("vd")||0),I=(L.get("a")||0)+(L.get("ad")||0)+(L.get("an")||0),w=z+$+I;if(w===0)return{key:"Balanced",label:c("quotes.topicProfile.styleBalanced"),desc:c("quotes.topicProfile.styleBalancedDesc"),icon:"i-heroicons-scale-solid",colorClass:"text-cyan-600 dark:text-cyan-400"};const S=z/w,v=$/w,_=I/w;return S>.5?{key:"Encyclopedia",label:c("quotes.topicProfile.styleEncyclopedia"),desc:c("quotes.topicProfile.styleEncyclopediaDesc"),icon:"i-heroicons-book-open-solid",colorClass:"text-indigo-600 dark:text-indigo-400"}:v>.45?{key:"Action",label:c("quotes.topicProfile.styleAction"),desc:c("quotes.topicProfile.styleActionDesc"),icon:"i-heroicons-rocket-launch-solid",colorClass:"text-orange-600 dark:text-orange-400"}:_>.3?{key:"Expressive",label:c("quotes.topicProfile.styleExpressive"),desc:c("quotes.topicProfile.styleExpressiveDesc"),icon:"i-heroicons-paint-brush-solid",colorClass:"text-pink-600 dark:text-pink-400"}:{key:"Balanced",label:c("quotes.topicProfile.styleBalanced"),desc:c("quotes.topicProfile.styleBalancedDesc"),icon:"i-heroicons-scale-solid",colorClass:"text-cyan-600 dark:text-cyan-400"}}),T=x(()=>{if(r.topWords.length===0)return{label:c("quotes.topicProfile.expressionMixed"),desc:c("quotes.topicProfile.expressionMixedDesc"),icon:"i-heroicons-chat-bubble-left-right-solid",colorClass:"text-emerald-600 dark:text-emerald-400"};const L=r.topWords.reduce((I,w)=>I+w.word.length*w.count,0),z=r.topWords.reduce((I,w)=>I+w.count,0),$=L/z;return $<2.5?{label:c("quotes.topicProfile.expressionCasual"),desc:c("quotes.topicProfile.expressionCasualDesc"),icon:"i-heroicons-face-smile-solid",colorClass:"text-amber-600 dark:text-amber-400"}:$>3.5?{label:c("quotes.topicProfile.expressionFormal"),desc:c("quotes.topicProfile.expressionFormalDesc"),icon:"i-heroicons-academic-cap-solid",colorClass:"text-violet-600 dark:text-violet-400"}:{label:c("quotes.topicProfile.expressionMixed"),desc:c("quotes.topicProfile.expressionMixedDesc"),icon:"i-heroicons-chat-bubble-left-right-solid",colorClass:"text-emerald-600 dark:text-emerald-400"}}),M=x(()=>[{icon:"i-heroicons-fire-solid",label:c("quotes.topicProfile.hotTopic"),value:d.value[0]?.word??"-",subtext:d.value[0]?c("quotes.topicProfile.hotTopicDesc",{count:d.value[0].count}):"",colorClass:"text-red-600 dark:text-red-400"},{icon:"i-heroicons-sparkles-solid",label:c("quotes.topicProfile.richness"),value:c("quotes.topicProfile.richnessValue",{value:h.value}),subtext:c("quotes.topicProfile.richnessDesc",{unique:r.uniqueWords.toLocaleString(),total:r.totalWords.toLocaleString()}),colorClass:"text-blue-600 dark:text-blue-400"},{icon:y.value.icon,label:c("quotes.topicProfile.chatStyle"),value:y.value.label,subtext:y.value.desc,colorClass:y.value.colorClass},{icon:T.value.icon,label:c("quotes.topicProfile.expressionStyle"),value:T.value.label,subtext:T.value.desc,colorClass:T.value.colorClass}]),C=["#6366f1","#ec4899","#f97316","#22c55e","#3b82f6","#8b5cf6","#14b8a6","#f43f5e"];return(L,z)=>{const $=_e;return n(),K(a(Lt),null,{default:F(()=>[e("div",gy,[e("div",py,[e("div",hy,[e("div",vy,[g.value?(n(),i("p",yy,s(g.value),1)):E("",!0),e("div",fy,[e("span",xy,s(a(c)("quotes.topicProfile.heroPrefix")),1),e("span",by,s(l.totalMessages.toLocaleString()),1),e("span",ky,s(a(c)("quotes.topicProfile.heroMiddle")),1)]),e("div",_y,[e("span",wy,s(a(c)("quotes.topicProfile.heroMiddleSecond")),1),e("span",$y,s(l.uniqueWords.toLocaleString()),1),e("span",Cy,s(a(c)("quotes.topicProfile.heroSuffix")),1)]),d.value.length>0?(n(),i("div",Sy,[e("span",Ty,s(a(c)("quotes.topicProfile.topTopicsPrefix")),1),(n(!0),i(oe,null,ce(d.value,(I,w)=>(n(),i(oe,{key:I.word},[e("span",{class:"cursor-pointer font-bold text-xl transition-opacity hover:opacity-70",style:Ke({color:C[w%C.length]}),onClick:S=>m("wordClick",I.word)},s(I.word),13,My),w<d.value.length-1?(n(),i("span",Iy,"·")):E("",!0)],64))),128))])):E("",!0)])]),p.value.words.length>0?(n(),i("div",Dy,[e("div",Ly,[u(a(t),{data:p.value,height:"100%","max-words":50,"size-scale":.8,"draw-out-of-bound":!0,shape:"rectangle","color-scheme":"default",onWordClick:z[0]||(z[0]=I=>m("wordClick",I))},null,8,["data"])])])):E("",!0)])]),e("div",Ay,[z[1]||(z[1]=e("div",{class:"mb-3 flex items-center justify-between"},[e("span",{class:"text-[10px] font-bold uppercase tracking-widest text-gray-400 dark:text-gray-500"}," Topic Profile ")],-1)),e("div",zy,[(n(!0),i(oe,null,ce(M.value,I=>(n(),i("div",{key:I.label,class:"flex min-w-0 items-start gap-2 px-2.5 py-2"},[u($,{name:I.icon,class:se(["mt-0.5 h-3.5 w-3.5 shrink-0",I.colorClass])},null,8,["name","class"]),e("div",qy,[e("div",{class:se(["truncate font-mono text-sm font-black leading-tight tabular-nums",I.colorClass])},s(I.value),3),e("div",Ry,s(I.label),1),e("div",Ey,s(I.subtext),1)])]))),128))])]),e("div",jy,[e("div",Py,[u($,{name:"i-heroicons-chat-bubble-left-right-solid",class:"h-3.5 w-3.5"}),z[2]||(z[2]=e("span",{class:"text-[10px] font-bold uppercase tracking-wider"},"ChatLab",-1))]),e("span",Uy,s(a(c)("quotes.topicProfile.watermark")),1)])]),_:1})}}}),Fy={class:"px-5 py-4 sm:px-6"},Vy={class:"mb-4 flex items-center gap-2"},Ny={class:"text-[15px] font-black tracking-tight text-gray-900 dark:text-white"},Hy={class:"flex flex-wrap justify-center gap-2"},Oy=["onClick"],Wy=ge({__name:"SharedTopicsCard",props:{sessionId:{},timeFilter:{},dictType:{},excludeWords:{}},emits:["wordClick"],setup(l,{emit:o}){const{t}=ye(),c=Qt(),r=l,m=o,g=x(()=>c.locale),d=f([]),p=f([]),h=x(()=>d.value.slice(0,20)),y=["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","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","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","bg-green-50 text-green-600 ring-1 ring-green-500/20 dark:bg-green-500/10 dark:text-green-400 dark:ring-green-500/30","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","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","bg-teal-50 text-teal-600 ring-1 ring-teal-500/20 dark:bg-teal-500/10 dark:text-teal-400 dark:ring-teal-500/30","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","bg-yellow-50 text-yellow-600 ring-1 ring-yellow-500/20 dark:bg-yellow-500/10 dark:text-yellow-400 dark:ring-yellow-500/30","bg-cyan-50 text-cyan-600 ring-1 ring-cyan-500/20 dark:bg-cyan-500/10 dark:text-cyan-400 dark:ring-cyan-500/30"];async function T(){if(r.sessionId)try{p.value.length===0&&(p.value=await Oe().getMembers(r.sessionId));const M=[...p.value].sort((w,S)=>S.messageCount-w.messageCount).slice(0,2);if(M.length<2){d.value=[];return}const C={sessionId:r.sessionId,locale:g.value,timeFilter:r.timeFilter?{startTs:r.timeFilter.startTs,endTs:r.timeFilter.endTs}:void 0,topN:100,minCount:2,posFilterMode:"meaningful",enableStopwords:!0,dictType:r.dictType??"default",excludeWords:r.excludeWords?.length?[...r.excludeWords]:void 0},[L,z]=await Promise.all([bt("/nlp/word-frequency",{...C,memberId:M[0].id}),bt("/nlp/word-frequency",{...C,memberId:M[1].id})]),$=new Map(z.words.map(w=>[w.word,w.count])),I=[];for(const w of L.words){const S=$.get(w.word);S&&I.push({word:w.word,countA:w.count,countB:S})}I.sort((w,S)=>S.countA+S.countB-(w.countA+w.countB)),d.value=I.slice(0,30)}catch(M){console.error("加载共同话题数据失败:",M),d.value=[]}}return de(()=>r.sessionId,()=>{p.value=[]}),de(()=>[r.sessionId,r.timeFilter,r.dictType,r.excludeWords],()=>{T()},{immediate:!0,deep:!0}),(M,C)=>{const L=_e;return h.value.length>0?(n(),K(a(at),{key:0},{default:F(()=>[e("div",Fy,[e("div",Vy,[u(L,{name:"i-heroicons-link",class:"h-4 w-4 text-emerald-500"}),e("span",Ny,s(a(t)("quotes.topicProfile.sharedTopics")),1)]),e("div",Hy,[(n(!0),i(oe,null,ce(h.value,(z,$)=>(n(),i("span",{key:z.word,class:se(["cursor-pointer rounded-full px-3 py-1 text-xs font-bold transition-opacity hover:opacity-80",y[$%y.length]]),onClick:I=>m("wordClick",z.word)},s(z.word),11,Oy))),128))])])]),_:1})):E("",!0)}}}),ba=Na("wordFilter",()=>{const l=f([]),o=f(null),t=f({}),c=f(!1);function r(){return`wf_${Date.now()}_${Math.random().toString(36).slice(2,8)}`}function m(I,w=[]){const S={id:r(),name:I,words:[...w],createdAt:Date.now()};return l.value.push(S),S}function g(I,w){const S=l.value.find(v=>v.id===I);S&&(w.name!==void 0&&(S.name=w.name),w.words!==void 0&&(S.words=[...w.words]))}function d(I){l.value=l.value.filter(w=>w.id!==I),o.value===I&&(o.value=null);for(const[w,S]of Object.entries(t.value))S===I&&delete t.value[w]}function p(I){o.value=I}function h(I,w){t.value[I]=w}function y(I){delete t.value[I]}function T(I){return I in t.value?t.value[I]:o.value}function M(I){const w=T(I);return w?l.value.find(v=>v.id===w)?.words??[]:[]}function C(I){return l.value.find(w=>w.id===I)}const L=x(()=>l.value.map(I=>({label:I.name,value:I.id,isDefault:I.id===o.value,wordCount:I.words.length})));function z(){c.value=!0}function $(){c.value=!1}return{schemes:l,defaultSchemeId:o,sessionSchemeOverrides:t,showWordFilterModal:c,schemeOptions:L,createScheme:m,updateScheme:g,deleteScheme:d,setDefaultScheme:p,setSessionScheme:h,clearSessionScheme:y,getActiveSchemeId:T,getExcludeWords:M,getSchemeById:C,openModal:z,closeModal:$}},{persist:!1,backendPersist:{pick:["schemes","defaultSchemeId","sessionSchemeOverrides"],key:"wordFilter"}}),Yy={class:"flex flex-col",style:{height:"520px"}},Qy={class:"flex items-center justify-between border-b border-gray-200 px-6 py-4 dark:border-white/5"},Ky={class:"flex items-center gap-3"},Gy={class:"flex h-9 w-9 items-center justify-center rounded-xl bg-linear-to-br from-pink-400 to-pink-600"},Jy={class:"text-lg font-semibold text-gray-900 dark:text-white"},Xy={class:"flex flex-1 overflow-hidden"},Zy={class:"flex w-[200px] shrink-0 flex-col border-r border-gray-200 dark:border-white/5"},ef={class:"flex items-center justify-between px-3 py-2"},tf={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},af={class:"flex-1 overflow-y-auto px-2 pb-2"},sf=["onClick"],nf={class:"truncate text-sm"},of={class:"ml-auto text-xs text-gray-400 dark:text-gray-500"},rf={key:0,class:"px-3 py-8 text-center text-xs text-gray-400 dark:text-gray-500"},lf={class:"flex flex-1 flex-col overflow-hidden"},cf={class:"flex-1 space-y-4 overflow-y-auto p-5"},df={class:"mb-1.5 block text-xs font-medium text-gray-600 dark:text-gray-400"},uf={class:"flex items-center gap-2"},mf={class:"mb-1.5 block text-xs font-medium text-gray-600 dark:text-gray-400"},gf={class:"flex gap-2"},pf={class:"mb-1.5 flex items-center justify-between"},hf={class:"text-xs font-medium text-gray-600 dark:text-gray-400"},vf={class:"ml-1 text-gray-400 dark:text-gray-500"},yf={key:0,class:"flex max-h-[220px] flex-wrap gap-1.5 overflow-y-auto rounded-lg border border-gray-200 p-3 dark:border-white/5"},ff={key:1,class:"rounded-lg border border-dashed border-gray-300 px-4 py-6 text-center text-xs text-gray-400 dark:border-gray-600 dark:text-gray-500"},xf={class:"flex shrink-0 justify-end border-t border-gray-200 px-5 py-3 dark:border-white/5"},bf={key:1,class:"flex flex-1 flex-col items-center justify-center gap-3 text-gray-400 dark:text-gray-500"},kf={class:"text-sm"},_f=ge({__name:"WordFilterModal",setup(l){const{t:o}=ye(),t=ba(),c=x({get:()=>t.showWordFilterModal,set:w=>w?t.openModal():t.closeModal()}),r=f(null),m=f(""),g=f(""),d=f(null),p=x(()=>r.value?t.getSchemeById(r.value)??null:null),h=x(()=>r.value===t.defaultSchemeId);de(c,w=>{w&&(t.schemes.length>0&&!r.value&&(r.value=t.schemes[0].id),y())}),de(r,()=>{y(),g.value=""});function y(){m.value=p.value?.name??""}function T(){const w=t.createScheme(o("wordFilter.defaultSchemeName"));r.value=w.id,Fe(()=>{d.value?.focus(),d.value?.select()})}function M(){if(!r.value)return;const w=t.schemes.findIndex(S=>S.id===r.value);if(t.deleteScheme(r.value),t.schemes.length>0){const S=Math.min(w,t.schemes.length-1);r.value=t.schemes[S].id}else r.value=null}function C(){!r.value||!m.value.trim()||t.updateScheme(r.value,{name:m.value.trim()})}function L(){r.value&&(h.value?t.setDefaultScheme(null):t.setDefaultScheme(r.value))}function z(){if(!r.value||!g.value.trim())return;const S=g.value.trim().split(/[,,\n\r\t;;|、\s]+/).map(j=>j.trim()).filter(j=>j.length>0);if(S.length===0)return;const v=p.value;if(!v)return;const _=new Set(v.words.map(j=>j.toLowerCase())),A=S.filter(j=>!_.has(j.toLowerCase()));A.length>0&&t.updateScheme(r.value,{words:[...v.words,...A]}),g.value=""}function $(w){if(!r.value)return;const S=p.value;S&&t.updateScheme(r.value,{words:S.words.filter(v=>v!==w)})}function I(){r.value&&t.updateScheme(r.value,{words:[]})}return(w,S)=>{const v=_e,_=Pe,A=St,j=pa,U=We;return n(),K(U,{open:c.value,"onUpdate:open":S[4]||(S[4]=k=>c.value=k),ui:{content:"max-w-3xl z-50"}},{content:F(()=>[e("div",Yy,[e("div",Qy,[e("div",Ky,[e("div",Gy,[u(v,{name:"i-heroicons-funnel",class:"h-4.5 w-4.5 text-white"})]),e("h2",Jy,s(a(o)("wordFilter.title")),1)]),u(_,{icon:"i-heroicons-x-mark",variant:"ghost",color:"neutral",size:"sm",onClick:S[0]||(S[0]=k=>c.value=!1)})]),e("div",Xy,[e("div",Zy,[e("div",ef,[e("span",tf,s(a(o)("wordFilter.schemeList")),1),u(_,{icon:"i-heroicons-plus",size:"xs",variant:"ghost",color:"primary",onClick:T})]),e("div",af,[(n(!0),i(oe,null,ce(a(t).schemes,k=>(n(),i("div",{key:k.id,class:se(["group mb-1 flex cursor-pointer items-center gap-2 rounded-lg px-3 py-2 transition-colors",r.value===k.id?"bg-primary-50 text-primary-700 dark:bg-primary-900/20 dark:text-primary-300":"text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-white/5"]),onClick:b=>r.value=k.id},[k.id===a(t).defaultSchemeId?(n(),K(v,{key:0,name:"i-heroicons-star-solid",class:"h-3.5 w-3.5 shrink-0 text-amber-500"})):E("",!0),e("span",nf,s(k.name),1),e("span",of,s(k.words.length),1)],10,sf))),128)),a(t).schemes.length===0?(n(),i("div",rf,s(a(o)("wordFilter.emptyScheme")),1)):E("",!0)])]),e("div",lf,[p.value?(n(),i(oe,{key:0},[e("div",cf,[e("div",null,[e("label",df,s(a(o)("wordFilter.schemeName")),1),u(A,{ref_key:"nameInputRef",ref:d,modelValue:m.value,"onUpdate:modelValue":S[1]||(S[1]=k=>m.value=k),size:"sm",placeholder:a(o)("wordFilter.schemeNamePlaceholder"),onBlur:C,onKeydown:ot(C,["enter"])},null,8,["modelValue","placeholder"])]),e("div",uf,[u(_,{size:"xs",variant:h.value?"solid":"soft",color:h.value?"warning":"neutral",icon:h.value?"i-heroicons-star-solid":"i-heroicons-star",onClick:L},{default:F(()=>[ee(s(h.value?a(o)("wordFilter.isDefault"):a(o)("wordFilter.setDefault")),1)]),_:1},8,["variant","color","icon"]),u(_,{size:"xs",variant:"soft",color:"error",icon:"i-heroicons-trash",onClick:M},{default:F(()=>[ee(s(a(o)("wordFilter.deleteScheme")),1)]),_:1})]),e("div",null,[e("label",mf,s(a(o)("wordFilter.addWords")),1),e("div",gf,[u(A,{modelValue:g.value,"onUpdate:modelValue":S[2]||(S[2]=k=>g.value=k),size:"sm",class:"flex-1",placeholder:a(o)("wordFilter.addWordsPlaceholder"),onKeydown:ot(z,["enter"])},null,8,["modelValue","placeholder"]),u(_,{size:"sm",color:"primary",icon:"i-heroicons-plus",onClick:z},{default:F(()=>[ee(s(a(o)("wordFilter.add")),1)]),_:1})])]),e("div",null,[e("div",pf,[e("label",hf,[ee(s(a(o)("wordFilter.wordList"))+" ",1),e("span",vf,"("+s(p.value.words.length)+")",1)]),p.value.words.length>0?(n(),K(_,{key:0,size:"xs",variant:"ghost",color:"error",onClick:I},{default:F(()=>[ee(s(a(o)("wordFilter.clearAll")),1)]),_:1})):E("",!0)]),p.value.words.length>0?(n(),i("div",yf,[(n(!0),i(oe,null,ce(p.value.words,k=>(n(),K(j,{key:k,color:"neutral",variant:"subtle",class:"group/badge cursor-default gap-1 pr-1"},{default:F(()=>[ee(s(k)+" ",1),u(v,{name:"i-heroicons-x-mark",class:"h-3.5 w-3.5 cursor-pointer text-gray-400 transition-colors hover:text-red-500",onClick:b=>$(k)},null,8,["onClick"])]),_:2},1024))),128))])):(n(),i("div",ff,s(a(o)("wordFilter.emptyWords")),1))])]),e("div",xf,[u(_,{color:"primary",variant:"soft",onClick:S[3]||(S[3]=k=>c.value=!1)},{default:F(()=>[ee(s(a(o)("wordFilter.close")),1)]),_:1})])],64)):(n(),i("div",bf,[u(v,{name:"i-heroicons-funnel",class:"h-10 w-10"}),e("p",kf,s(a(o)("wordFilter.selectOrCreate")),1),u(_,{size:"sm",color:"primary",variant:"soft",icon:"i-heroicons-plus",onClick:T},{default:F(()=>[ee(s(a(o)("wordFilter.createScheme")),1)]),_:1})]))])])])]),_:1},8,["open"])}}}),wf={class:"main-content mx-auto max-w-[920px] space-y-6 p-6"},$f={key:0,class:"flex flex-col gap-3 rounded-lg border border-primary-200 bg-primary-50/70 p-4 dark:border-primary-800 dark:bg-primary-950/30 sm:flex-row sm:items-center sm:justify-between"},Cf={class:"flex min-w-0 items-start gap-3"},Sf={class:"min-w-0 text-sm text-primary-700 dark:text-primary-300"},Tf={class:"flex shrink-0 flex-wrap gap-2"},Mf={key:1,class:"space-y-6"},If={class:"flex gap-6 p-4 sm:p-6"},Df={class:"flex min-w-0 flex-1 flex-col"},Lf={class:"relative w-full",style:{"aspect-ratio":"16 / 9"}},Af={key:1,class:"absolute inset-0 flex flex-col items-center justify-center gap-2 rounded-lg border border-dashed border-gray-200 bg-gray-50/40 text-gray-500 dark:border-gray-700 dark:bg-gray-800/30 dark:text-gray-400"},zf={class:"text-xs font-medium"},qf={class:"px-4 text-center text-[11px]"},Rf={class:"mt-2 text-center text-xs text-gray-500 dark:text-gray-400"},Ef={class:"w-[280px] shrink-0 space-y-4"},jf={class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"},Pf={class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"},Uf={class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"},Bf={class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"},Ff={class:"space-y-2"},Vf={class:"text-xs text-gray-400 dark:text-gray-500"},Nf={class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"},Hf={class:"flex items-center"},Of={key:0,class:"space-y-2"},Wf={class:"flex items-center justify-between"},Yf={class:"text-xs font-medium text-gray-600 dark:text-gray-400"},Qf={class:"flex gap-1"},Kf={class:"flex max-h-[360px] flex-wrap gap-1.5 overflow-y-auto"},Gf={key:0,class:"ml-1 opacity-60"},Jf={class:"mb-2 flex items-center justify-between"},Xf={class:"text-xs font-medium text-gray-600 dark:text-gray-400"},Zf={key:0,class:"mt-1 text-xs text-gray-400 dark:text-gray-500"},ex={class:"space-y-4"},tx={class:"text-sm text-gray-600 dark:text-gray-300"},ax={class:"flex justify-end gap-2"},sx="default",la="chatlab_zhTW_dict_prompt_dismissed",Ik=ge({__name:"WordcloudTab",props:{sessionId:{},timeFilter:{},memberId:{},showSharedTopics:{type:Boolean}},setup(l){const o=ma(()=>wt(()=>import("./EChartWordcloud-CSOuFvyM.js"),__vite__mapDeps([5,6,7,8,1]))),{t}=ye(),c=Qt(),r=ct(),m=ba(),g=Je(),d=l,p=f(!1),h=f([]),y=f({totalMessages:0,totalWords:0,uniqueWords:0}),T=f(1.25),M=f(150),C=x(()=>{const ie=h.value.slice(0,M.value),R=ie.reduce((D,V)=>D+V.count,0);return{words:ie.map(D=>({word:D.word,count:D.count,percentage:R>0?Math.round(D.count/R*1e4)/100:0}))}}),L=f("meaningful"),z=f(!0),$=f([]),I=f([]),w=f(new Map),S=["n","nr","ns","nt","nz","nw","vn","a","an"],v=f([]),_=x(()=>C.value.words.map(ie=>({word:ie.word,count:ie.count,percentage:ie.percentage??0}))),A=x(()=>[...w.value.entries()].map(([ie,R])=>({tag:ie,count:R}))),j=f(null),U=x({get:()=>m.getActiveSchemeId(d.sessionId),set:ie=>m.setSessionScheme(d.sessionId,ie)}),k=x(()=>[{label:t("wordFilter.noFilter"),value:"__none__"},...m.schemeOptions.map(ie=>({label:ie.isDefault?`${ie.label} ★`:ie.label,value:ie.value}))]),b=x({get:()=>U.value??"__none__",set:ie=>{U.value=ie==="__none__"?null:ie}}),q=x(()=>m.getExcludeWords(d.sessionId)),Y=f("default"),W=f([]),J=f(!1),me=f(null),pe=f(!1),X=f(!1),N=x(()=>c.locale),ae=x(()=>c.locale==="zh-TW"),ue=x(()=>N.value.startsWith("zh")),he=x(()=>W.value.filter(ie=>ie.downloaded).map(ie=>({label:t(`quotes.wordcloud.dict.${ie.id==="zh-CN"?"zhCN":ie.id==="zh-TW"?"zhTW":ie.id}`),value:ie.id}))),G=x(()=>W.value.some(ie=>ie.downloaded)),O=x(()=>!ue.value||X.value),H=x(()=>W.value.filter(ie=>!ie.downloaded));async function le(){try{W.value=await sa("/nlp/dicts"),ae.value&&Y.value==="default"&&W.value.find(D=>D.id==="zh-TW")?.downloaded&&(Y.value="zh-TW"),W.value.find(R=>R.id==="zh-CN")?.downloaded&&Y.value==="default"&&(Y.value="zh-CN")}catch(ie){console.error("Failed to get dict list:",ie)}finally{X.value=!0}}async function fe(ie){J.value=!0,me.value=ie;try{const R=await Ha(`/nlp/dicts/${ie}/download`);R.success?(await le(),Y.value=ie,g.success(t("quotes.wordcloud.dict.downloadSuccess"))):g.fail(t("quotes.wordcloud.dict.downloadFailed"),{description:R.error})}catch{g.fail(t("quotes.wordcloud.dict.downloadFailed"))}finally{J.value=!1,me.value=null,pe.value=!1}}function xe(){pe.value=!1,localStorage.setItem(la,"true")}function ke(){const ie=W.value.find(R=>R.id==="zh-TW");ae.value&&ie&&!ie.downloaded&&!localStorage.getItem(la)&&(pe.value=!0)}const ne=x(()=>[{label:t("quotes.wordcloud.posFilter.all"),value:"all"},{label:t("quotes.wordcloud.posFilter.meaningful"),value:"meaningful"},{label:t("quotes.wordcloud.posFilter.custom"),value:"custom"}]),re=[{label:"80",value:80},{label:"100",value:100},{label:"150",value:150},{label:"200",value:200},{label:"300",value:300}],ve=Math.max(...re.map(ie=>ie.value)),Me=x(()=>[{label:t("quotes.wordcloud.size.small"),value:.75},{label:t("quotes.wordcloud.size.medium"),value:1},{label:t("quotes.wordcloud.size.large"),value:1.25},{label:t("quotes.wordcloud.size.xlarge"),value:1.5}]),$e=x(()=>I.value.map(ie=>({label:ie.name,tag:ie.tag,value:ie.tag,count:w.value.get(ie.tag)||0,meaningful:ie.meaningful})));async function qe(){try{const ie=await sa("/nlp/pos-tags");I.value=ie,$.value=ie.filter(R=>R.meaningful).map(R=>R.tag)}catch(ie){console.error("加载词性标签失败:",ie)}}let Ae=0;async function Se(){if(!d.sessionId||!O.value)return;const ie=++Ae;try{const R=await bt("/nlp/word-frequency",{sessionId:d.sessionId,locale:N.value,timeFilter:d.timeFilter?{startTs:d.timeFilter.startTs,endTs:d.timeFilter.endTs}:void 0,memberId:j.value??void 0,topN:50,minCount:2,posFilterMode:"custom",customPosTags:[...S],enableStopwords:!0,dictType:Y.value,excludeWords:q.value.length>0?[...q.value]:void 0});if(ie!==Ae)return;v.value=R.words.map(D=>({word:D.word,count:D.count,percentage:D.percentage}))}catch(R){if(console.error("加载话题迷你词云数据失败:",R),ie!==Ae)return;v.value=[]}}let Re=0;async function je(){if(!d.sessionId||!O.value)return;const ie=++Re;h.value.length===0&&(p.value=!0);try{const R=await bt("/nlp/word-frequency",{sessionId:d.sessionId,locale:N.value,timeFilter:d.timeFilter?{startTs:d.timeFilter.startTs,endTs:d.timeFilter.endTs}:void 0,memberId:j.value??void 0,topN:ve,minCount:2,posFilterMode:L.value,customPosTags:L.value==="custom"?[...$.value]:void 0,enableStopwords:z.value,dictType:Y.value,excludeWords:q.value.length>0?[...q.value]:void 0});if(ie!==Re)return;if(h.value=R.words.map(D=>({word:D.word,count:D.count,percentage:D.percentage})),y.value={totalMessages:R.totalMessages,totalWords:R.totalWords,uniqueWords:R.uniqueWords},R.posTagStats){const D=new Map;for(const V of R.posTagStats)D.set(V.tag,V.count);w.value=D}}catch(R){if(console.error("加载词频数据失败:",R),ie!==Re)return;h.value=[]}finally{ie===Re&&(p.value=!1)}}de(()=>d.sessionId,()=>{j.value=null,h.value=[],v.value=[],y.value={totalMessages:0,totalWords:0,uniqueWords:0},w.value=new Map}),de(()=>[d.sessionId,d.timeFilter,j.value,L.value,z.value,Y.value,q.value,O.value],()=>{je()},{immediate:!0,deep:!0}),de(()=>[d.sessionId,d.timeFilter,j.value,Y.value,q.value,O.value],()=>{Se()},{immediate:!0,deep:!0}),de($,()=>{L.value==="custom"&&je()},{deep:!0}),de(N,()=>{je()});function Ue(ie){r.openChatRecordDrawer({keywords:[ie]})}return Ve(async()=>{qe(),await le(),ke()}),(ie,R)=>{const D=_e,V=Pe,P=Kt,B=pa,Z=We;return n(),i("div",wf,[ue.value&&!G.value?(n(),i("div",$f,[e("div",Cf,[u(D,{name:"i-heroicons-information-circle",class:"mt-0.5 shrink-0 text-xl text-primary-500"}),e("p",Sf,s(a(t)("quotes.wordcloud.dict.needDownload")),1)]),e("div",Tf,[(n(!0),i(oe,null,ce(W.value,Q=>(n(),K(V,{key:Q.id,size:"sm",color:"primary",loading:J.value&&me.value===Q.id,disabled:J.value&&me.value!==Q.id,icon:"i-heroicons-arrow-down-tray",onClick:te=>fe(Q.id)},{default:F(()=>[ee(s(a(t)(`quotes.wordcloud.dict.download_${Q.id}`,Q.label)),1)]),_:2},1032,["loading","disabled","onClick"]))),128))])])):E("",!0),O.value?(n(),i("div",Mf,[p.value&&_.value.length===0?(n(),K(a(kt),{key:0,text:a(t)("quotes.wordcloud.loading"),class:"py-8"},null,8,["text"])):E("",!0),u(By,{"total-messages":y.value.totalMessages,"total-words":y.value.totalWords,"unique-words":y.value.uniqueWords,"top-words":_.value,"topic-words":v.value,"pos-tag-stats":A.value,"time-filter":d.timeFilter,onWordClick:Ue},null,8,["total-messages","total-words","unique-words","top-words","topic-words","pos-tag-stats","time-filter"]),d.showSharedTopics?(n(),K(Wy,{key:1,"session-id":d.sessionId,"time-filter":d.timeFilter,"dict-type":Y.value,"exclude-words":q.value,onWordClick:Ue},null,8,["session-id","time-filter","dict-type","exclude-words"])):E("",!0),u(a(Ye),{title:a(t)("quotes.wordcloud.stats.wordsLabel"),"show-divider":!1},{default:F(()=>[e("div",If,[e("div",Df,[e("div",Lf,[p.value?(n(),K(a(kt),{key:0,text:a(t)("quotes.wordcloud.loading"),class:"absolute inset-0 z-10 rounded-lg bg-white/80 dark:bg-page-dark/80"},null,8,["text"])):_.value.length===0?(n(),i("div",Af,[u(D,{name:"i-heroicons-chat-bubble-bottom-center-text",class:"text-2xl"}),e("p",zf,s(a(t)("quotes.wordcloud.empty.title")),1),e("p",qf,s(a(t)("quotes.wordcloud.empty.description")),1)])):(n(),K(a(o),{key:2,data:C.value,height:"100%","max-words":M.value,"color-scheme":sx,"size-scale":T.value,loading:p.value,onWordClick:Ue},null,8,["data","max-words","size-scale","loading"]))]),e("p",Rf,s(a(t)("quotes.wordcloud.stats.clickHint")),1)]),e("div",Ef,[e("div",null,[e("h4",jf,s(a(t)("quotes.wordcloud.config.maxWords")),1),u(a(nt),{modelValue:M.value,"onUpdate:modelValue":R[0]||(R[0]=Q=>M.value=Q),size:"xs",items:re},null,8,["modelValue"])]),e("div",null,[e("h4",Pf,s(a(t)("quotes.wordcloud.config.sizeScale")),1),u(a(nt),{modelValue:T.value,"onUpdate:modelValue":R[1]||(R[1]=Q=>T.value=Q),size:"xs",items:Me.value},null,8,["modelValue","items"])]),e("div",null,[e("h4",Uf,s(a(t)("quotes.wordcloud.config.userFilter")),1),u(nh,{modelValue:j.value,"onUpdate:modelValue":R[2]||(R[2]=Q=>j.value=Q),"session-id":d.sessionId,class:"w-full"},null,8,["modelValue","session-id"])]),e("div",null,[e("h4",Bf,s(a(t)("quotes.wordcloud.config.dict")),1),e("div",Ff,[he.value.length>1?(n(),K(a(nt),{key:0,modelValue:Y.value,"onUpdate:modelValue":R[3]||(R[3]=Q=>Y.value=Q),size:"xs",items:he.value},null,8,["modelValue","items"])):E("",!0),(n(!0),i(oe,null,ce(H.value,Q=>(n(),i("div",{key:Q.id,class:"flex items-center gap-2"},[u(V,{size:"xs",variant:"soft",color:"primary",loading:J.value&&me.value===Q.id,disabled:J.value&&me.value!==Q.id,icon:"i-heroicons-arrow-down-tray",onClick:te=>fe(Q.id)},{default:F(()=>[ee(s(a(t)(`quotes.wordcloud.dict.download_${Q.id}`,a(t)("quotes.wordcloud.dict.download"))),1)]),_:2},1032,["loading","disabled","onClick"]),e("span",Vf,s(a(t)("quotes.wordcloud.dict.downloadHint")),1)]))),128))])]),e("div",null,[e("h4",Nf,s(a(t)("quotes.wordcloud.config.posFilter")),1),u(a(nt),{modelValue:L.value,"onUpdate:modelValue":R[4]||(R[4]=Q=>L.value=Q),size:"xs",items:ne.value},null,8,["modelValue","items"])]),e("div",Hf,[u(P,{modelValue:z.value,"onUpdate:modelValue":R[5]||(R[5]=Q=>z.value=Q),label:a(t)("quotes.wordcloud.config.enableStopwords")},null,8,["modelValue","label"])]),L.value==="custom"?(n(),i("div",Of,[e("div",Wf,[e("h4",Yf,s(a(t)("quotes.wordcloud.posFilter.customHint")),1),e("div",Qf,[u(V,{size:"xs",variant:"ghost",color:"neutral",onClick:R[6]||(R[6]=Q=>$.value=I.value.filter(te=>te.meaningful).map(te=>te.tag))},{default:F(()=>[ee(s(a(t)("quotes.wordcloud.posFilter.selectMeaningful")),1)]),_:1}),u(V,{size:"xs",variant:"ghost",color:"neutral",onClick:R[7]||(R[7]=Q=>$.value=I.value.map(te=>te.tag))},{default:F(()=>[ee(s(a(t)("quotes.wordcloud.posFilter.selectAll")),1)]),_:1}),u(V,{size:"xs",variant:"ghost",color:"neutral",onClick:R[8]||(R[8]=Q=>$.value=[])},{default:F(()=>[ee(s(a(t)("quotes.wordcloud.posFilter.clearAll")),1)]),_:1})])]),e("div",Kf,[(n(!0),i(oe,null,ce($e.value,Q=>(n(),K(B,{key:Q.value,color:$.value.includes(Q.value)?"primary":"neutral",variant:$.value.includes(Q.value)?"solid":"outline",class:"cursor-pointer select-none transition-colors",onClick:()=>{$.value.includes(Q.value)?$.value=$.value.filter(te=>te!==Q.value):$.value=[...$.value,Q.value]}},{default:F(()=>[ee(s(Q.label)+" ",1),Q.count>0?(n(),i("span",Gf,"("+s(Q.count)+")",1)):E("",!0)]),_:2},1032,["color","variant","onClick"]))),128))])])):E("",!0),e("div",null,[e("div",Jf,[e("h4",Xf,s(a(t)("wordFilter.filterScheme")),1),u(V,{size:"xs",variant:"ghost",color:"neutral",icon:"i-heroicons-cog-6-tooth","aria-label":a(t)("wordFilter.manage"),onClick:R[9]||(R[9]=Q=>a(m).openModal())},null,8,["aria-label"])]),u(a(nt),{modelValue:b.value,"onUpdate:modelValue":R[10]||(R[10]=Q=>b.value=Q),size:"xs",items:k.value},null,8,["modelValue","items"]),q.value.length>0?(n(),i("p",Zf,s(a(t)("wordFilter.activeCount",{count:q.value.length})),1)):E("",!0)])])])]),_:1},8,["title"])])):E("",!0),u(Z,{open:pe.value,"onUpdate:open":R[12]||(R[12]=Q=>pe.value=Q),title:a(t)("quotes.wordcloud.dict.promptTitle")},{body:F(()=>[e("div",ex,[e("p",tx,s(a(t)("quotes.wordcloud.dict.promptDescription")),1),e("div",ax,[u(V,{variant:"ghost",color:"neutral",onClick:xe},{default:F(()=>[ee(s(a(t)("quotes.wordcloud.dict.promptLater")),1)]),_:1}),u(V,{color:"primary",loading:J.value,onClick:R[11]||(R[11]=Q=>fe("zh-TW"))},{default:F(()=>[ee(s(a(t)("quotes.wordcloud.dict.promptDownload")),1)]),_:1},8,["loading"])])])]),_:1},8,["open","title"]),u(_f)])}}}),nx={class:"flex items-center justify-between gap-3"},ox={class:"flex items-center gap-2"},rx={class:"text-sm font-medium text-gray-900 dark:text-white"},lx={class:"text-xs text-gray-500 dark:text-gray-400"},ix=ge({__name:"OwnerEntryCard",props:{sessionId:{},members:{},chatType:{}},setup(l){const{t:o}=ye(),t=Oa(),c=l,r=f(!1);function m(p){return p.groupNickname||p.accountName||p.platformId}const g=x(()=>{const p=t.currentSession?.ownerId;return p&&c.members.find(h=>h.platformId===p)||null}),d=x(()=>g.value?m(g.value):t.currentSession?.ownerId??"");return(p,h)=>{const y=_e,T=Pe;return n(),K(a(at),{class:"w-150 p-3"},{default:F(()=>[e("div",nx,[e("div",ox,[e("div",{class:se(["flex h-8 w-8 items-center justify-center rounded-full bg-linear-to-br",l.chatType==="group"?"from-pink-400 to-pink-600":"from-purple-400 to-purple-600"])},[u(y,{name:"i-heroicons-user",class:"h-4 w-4 text-white"})],2),e("div",null,[e("h3",rx,s(d.value?a(o)("members.ownerPrompt.currentOwner",{name:d.value}):a(o)("members.ownerPrompt.choose")),1),e("p",lx,s(a(o)("members.ownerPrompt.helper")),1)])]),u(T,{size:"sm",variant:d.value?"outline":"solid",color:"primary",onClick:h[0]||(h[0]=M=>r.value=!0)},{default:F(()=>[ee(s(d.value?a(o)("members.ownerPrompt.change"):a(o)("members.ownerPrompt.choose")),1)]),_:1},8,["variant"])]),u(Wa,{modelValue:r.value,"onUpdate:modelValue":h[1]||(h[1]=M=>r.value=M),"session-id":l.sessionId,"chat-type":l.chatType},null,8,["modelValue","session-id","chat-type"])]),_:1})}}}),cx={key:0,class:"mb-6"},dx={class:"flex items-center gap-3"},ux={class:"text-xl font-bold text-gray-900 dark:text-white"},mx={class:"text-sm text-gray-500 dark:text-gray-400"},gx={class:"mb-4 flex flex-wrap items-center justify-between gap-3"},px={key:0,class:"flex items-center gap-2"},hx={class:"text-xs text-gray-500 dark:text-gray-400"},vx={key:0,class:"flex flex-1 items-center justify-center"},yx={key:1,class:"flex flex-1 flex-col items-center justify-center gap-3"},fx={class:"text-sm text-gray-500 dark:text-gray-400"},xx={key:2,class:"flex flex-1 flex-col items-center justify-center"},bx={class:"text-gray-500 dark:text-gray-400"},kx={key:3,class:"min-h-0 flex-1 overflow-x-auto overflow-y-hidden"},_x={key:0,"aria-hidden":"true"},wx={class:"flex shrink-0 flex-col leading-none"},$x={class:"flex shrink-0 flex-col leading-none"},Cx={class:"flex shrink-0 flex-col leading-none"},Sx={class:"inline-flex items-center gap-1.5"},Tx={class:"text-right"},Mx=["data-index","onClick"],Ix={key:0,class:"flex justify-center"},Dx={class:"flex min-w-0 items-center gap-2.5"},Lx={class:"min-w-0"},Ax=["title"],zx=["title"],qx=["title"],Rx={class:"text-right font-mono text-sm font-semibold tabular-nums text-gray-900 dark:text-white"},Ex=["title"],jx={class:"flex justify-end gap-1"},Px={class:"p-6 text-center"},Ux={class:"mx-auto mb-4 flex h-14 w-14 items-center justify-center rounded-full bg-red-100 dark:bg-red-900/30"},Bx={class:"mb-2 text-lg font-semibold text-gray-900 dark:text-white"},Fx={class:"mb-6 text-sm text-gray-500 dark:text-gray-400"},Vx={class:"flex justify-center gap-3"},Nx={class:"p-6 text-center"},Hx={class:"mx-auto mb-4 flex h-14 w-14 items-center justify-center rounded-full bg-red-100 dark:bg-red-900/30"},Ox={class:"mb-2 text-lg font-semibold text-gray-900 dark:text-white"},Wx={class:"mb-6 text-sm text-gray-500 dark:text-gray-400"},Yx={class:"flex justify-center gap-3"},Qx={class:"p-6"},Kx={class:"mb-4 flex items-center gap-3"},Gx={class:"flex h-10 w-10 items-center justify-center rounded-full bg-amber-100 dark:bg-amber-900/30"},Jx={class:"text-lg font-semibold text-gray-900 dark:text-white"},Xx={class:"mb-2 text-sm text-gray-600 dark:text-gray-400"},Zx={class:"mb-6 text-xs text-amber-700 dark:text-amber-300"},eb={class:"flex justify-end gap-2"},tb=64,ab=ge({__name:"MemberList",props:{sessionId:{},showHeader:{type:Boolean,default:!0},chatType:{default:"group"}},emits:["data-changed"],setup(l,{emit:o}){const{t}=ye(),c=Oe(),r=ct(),m=l,g=o,d=f([]),p=f(!1),h=f(!1),y=f(""),T=x(()=>Xa(m.chatType,d.value.length)),M=x(()=>m.chatType==="group"?"":T.value?"member-table-grid--private":"member-table-grid--private-without-selection"),C=f(null),L=f(!1),z=f(!1),$=f(!1),I=f(!1),w=f(!1),{sortState:S,toggleSort:v,resetSort:_,isSortActive:A}=Ya({initialState:{field:"messageCount",direction:"desc"}}),j=f(new Set);let U=0;function k(D,V){const P=V instanceof Error?V:new Error(String(V));console.error(D,P),Ja(`${D} ${P.message}`,P.stack)}function b(D){return D.groupNickname||D.accountName||D.platformId}function q(D){return b(D).slice(0,1)}function Y(D){r.openChatRecordDrawer({sessionId:m.sessionId,memberId:D.id,memberName:b(D)})}const W=x(()=>Za(d.value,y.value,S.value)),{selectedIds:J,setSelection:me,clearSelection:pe,handleRowClick:X,handleRowMouseDown:N}=Qa({rows:W,getRowId:D=>D.id}),ae=x(()=>d.value.filter(D=>J.value.has(D.id))),ue=x(()=>ae.value.length===2),he=x(()=>ae.value.reduce((D,V)=>D+V.messageCount,0));function G(D,V,P){T.value&&X(D,V,P)}function O(D){T.value&&N(D)}const H=x(()=>{if(ae.value.length!==2)return null;const[D,V]=ae.value;return V.messageCount>D.messageCount||V.messageCount===D.messageCount&&V.id<D.id?{primary:V,secondary:D}:{primary:D,secondary:V}});function le(D,V){return A(D,V)?"text-primary-500 dark:text-primary-400":"text-gray-300 dark:text-gray-600"}const fe=f(null),xe=Ka(x(()=>({count:W.value.length,getScrollElement:()=>fe.value,estimateSize:()=>tb,overscan:8,getItemKey:D=>W.value[D]?.id??D}))),ke=x(()=>xe.value.getVirtualItems().map(D=>({virtualItem:D,member:W.value[D.index]}))),ne=x(()=>xe.value.getTotalSize());function re(D){D instanceof HTMLElement&&xe.value.measureElement(D)}async function ve(){await Fe(),fe.value?.scrollTo({top:0}),xe.value.measure()}async function Me(){const D=m.sessionId;if(!D)return;const V=++U;p.value=!0,h.value=!1;try{const P=await c.getMembers(D);if(V!==U||D!==m.sessionId)return;d.value=P,await Fe(),xe.value.measure()}catch(P){V===U&&(h.value=!0),k("Failed to load member list:",P)}finally{V===U&&(p.value=!1)}}function $e(D,V){const P=new Set(j.value);V?P.add(D):P.delete(D),j.value=P}async function qe(D,V){const P=m.sessionId,B=JSON.parse(JSON.stringify(V)),Z=JSON.stringify(D.aliases),Q=JSON.stringify(B);if(Z!==Q){$e(D.id,!0);try{if(await c.updateMemberAliases(P,D.id,B)&&P===m.sessionId){const Ee=d.value.findIndex(De=>De.id===D.id);Ee!==-1&&(d.value[Ee]={...d.value[Ee],aliases:B},await Fe(),xe.value.measure())}}catch(te){k("Failed to save member aliases:",te)}finally{$e(D.id,!1)}}}function Ae(D){C.value=D}function Se(){C.value=null}async function Re(){if(C.value){L.value=!0;try{const D=C.value.id;if(await c.deleteMember(m.sessionId,D)){const P=new Set(J.value);P.delete(D),me(P),await Me(),g("data-changed")}}catch(D){k("Failed to delete member:",D)}finally{L.value=!1,C.value=null}}}function je(){J.value.size!==0&&(z.value=!0)}async function Ue(){const D=m.sessionId,V=Array.from(J.value);if(V.length!==0){$.value=!0;try{await c.deleteMembers(D,V)&&D===m.sessionId&&(z.value=!1,pe(),await Me(),g("data-changed"))}catch(P){k("Failed to delete selected members:",P)}finally{$.value=!1}}}function ie(){ue.value&&(I.value=!0)}async function R(){if(H.value){w.value=!0;try{await c.mergeMembers(m.sessionId,H.value.primary.id,H.value.secondary.id)&&(I.value=!1,pe(),await Me(),g("data-changed"))}catch(D){k("Failed to merge members:",D)}finally{w.value=!1}}}return de([y,S],ve),de(T,D=>{D||pe()}),de(()=>m.sessionId,()=>{U+=1,d.value=[],h.value=!1,j.value=new Set,y.value="",_(),pe(),ve(),Me()},{immediate:!0}),dt(()=>{U+=1}),(D,V)=>{const P=Pe,B=St,Z=_e,Q=pt,te=Kt,Ee=is,De=We;return n(),i("div",{class:se(["main-content",m.showHeader?"max-w-5xl p-6":"flex h-full max-w-none flex-col overflow-hidden p-4"])},[m.showHeader?(n(),i("div",cx,[e("div",dx,[e("div",null,[e("h2",ux,s(a(t)(m.chatType==="private"?"members.private.title":"members.list.title")),1),e("p",mx,s(a(t)(m.chatType==="private"?"members.private.description":"members.list.description",{count:d.value.length})),1)])])])):E("",!0),u(ix,{class:"mb-6","session-id":l.sessionId,members:d.value,"chat-type":m.chatType},null,8,["session-id","members","chat-type"]),e("div",gx,[u(B,{modelValue:y.value,"onUpdate:modelValue":V[1]||(V[1]=Te=>y.value=Te),placeholder:a(t)("members.list.searchPlaceholder"),icon:"i-heroicons-magnifying-glass",class:"w-full md:w-100"},os({_:2},[y.value?{name:"trailing",fn:F(()=>[u(P,{icon:"i-heroicons-x-mark",variant:"link",color:"neutral",size:"xs",onClick:V[0]||(V[0]=Te=>y.value="")})]),key:"0"}:void 0]),1032,["modelValue","placeholder"]),T.value?(n(),i("div",px,[p.value&&d.value.length>0?(n(),K(Z,{key:0,name:"i-heroicons-arrow-path",class:"h-4 w-4 animate-spin text-primary-500"})):E("",!0),e("span",hx,s(a(t)("members.list.selectedCount",{count:a(J).size})),1),u(P,{icon:"i-heroicons-link",size:"sm",color:"primary",disabled:!ue.value,onClick:ie},{default:F(()=>[ee(s(a(t)("members.list.mergeSelected")),1)]),_:1},8,["disabled"]),u(P,{icon:"i-heroicons-trash",size:"sm",color:"error",variant:"outline",disabled:a(J).size===0,onClick:je},{default:F(()=>[ee(s(a(t)("members.list.deleteSelected")),1)]),_:1},8,["disabled"])])):E("",!0)]),e("div",{class:se(["flex min-h-[240px] flex-col overflow-hidden rounded-lg border border-gray-200/60 bg-card-bg dark:border-white/5 dark:bg-card-dark",m.showHeader?"h-[500px]":"min-h-0 flex-1"])},[p.value&&d.value.length===0?(n(),i("div",vx,[u(Z,{name:"i-heroicons-arrow-path",class:"h-8 w-8 animate-spin text-primary-500"})])):h.value&&d.value.length===0?(n(),i("div",yx,[u(Z,{name:"i-heroicons-exclamation-circle",class:"h-10 w-10 text-red-400"}),e("p",fx,s(a(t)("members.list.loadError")),1),u(P,{size:"sm",variant:"outline",icon:"i-heroicons-arrow-path",onClick:Me},{default:F(()=>[ee(s(a(t)("common.retry")),1)]),_:1})])):W.value.length===0?(n(),i("div",xx,[u(Z,{name:"i-heroicons-user-group",class:"mb-3 h-12 w-12 text-gray-300 dark:text-gray-600"}),e("p",bx,s(y.value?a(t)("members.list.noMatch"):a(t)("members.list.empty")),1)])):(n(),i("div",kx,[e("div",{class:se(["flex h-full flex-col",m.chatType==="private"?"min-w-[920px]":"min-w-[1120px]"])},[e("div",{class:se(["member-table-grid shrink-0 border-b border-gray-200 bg-gray-50 px-3 py-2 text-xs font-medium text-gray-500 dark:border-white/5 dark:bg-page-dark/80 dark:text-gray-400",M.value])},[T.value?(n(),i("span",_x)):E("",!0),e("span",null,s(a(t)("members.list.table.accountName")),1),m.chatType==="group"?(n(),i("button",{key:1,type:"button",class:"flex items-center justify-start gap-1.5 text-left transition-colors hover:text-gray-700 dark:hover:text-gray-200",onClick:V[2]||(V[2]=Te=>a(v)("groupNickname"))},[ee(s(a(t)("members.list.table.groupNickname"))+" ",1),e("span",wx,[u(Z,{name:"i-heroicons-chevron-up",class:se(["h-2.5 w-2.5",le("groupNickname","asc")])},null,8,["class"]),u(Z,{name:"i-heroicons-chevron-down",class:se(["-mt-0.5 h-2.5 w-2.5",le("groupNickname","desc")])},null,8,["class"])])])):E("",!0),e("button",{type:"button",class:"flex items-center justify-end gap-1.5 text-right transition-colors hover:text-gray-700 dark:hover:text-gray-200",onClick:V[3]||(V[3]=Te=>a(v)("messageCount"))},[ee(s(a(t)("members.list.table.messageCount"))+" ",1),e("span",$x,[u(Z,{name:"i-heroicons-chevron-up",class:se(["h-2.5 w-2.5",le("messageCount","asc")])},null,8,["class"]),u(Z,{name:"i-heroicons-chevron-down",class:se(["-mt-0.5 h-2.5 w-2.5",le("messageCount","desc")])},null,8,["class"])])]),e("button",{type:"button",class:"flex items-center justify-end gap-1.5 text-right transition-colors hover:text-gray-700 dark:hover:text-gray-200",onClick:V[4]||(V[4]=Te=>a(v)("lastMessageTs"))},[ee(s(a(t)("members.list.table.lastMessageTime"))+" ",1),e("span",Cx,[u(Z,{name:"i-heroicons-chevron-up",class:se(["h-2.5 w-2.5",le("lastMessageTs","asc")])},null,8,["class"]),u(Z,{name:"i-heroicons-chevron-down",class:se(["-mt-0.5 h-2.5 w-2.5",le("lastMessageTs","desc")])},null,8,["class"])])]),e("span",Sx,[e("span",null,s(a(t)("members.list.table.customAlias")),1),u(Q,{text:a(t)("members.list.tip"),popper:{placement:"top"}},{default:F(()=>[u(Z,{name:"i-heroicons-question-mark-circle",class:"h-4 w-4 text-gray-400 dark:text-gray-500"})]),_:1},8,["text"])]),e("span",Tx,s(a(t)("members.list.table.actions")),1)],2),e("div",{ref_key:"listScrollRef",ref:fe,class:"min-h-0 flex-1 overflow-y-auto"},[e("div",{class:"relative",style:Ke({height:`${ne.value}px`})},[(n(!0),i(oe,null,ce(ke.value,({virtualItem:Te,member:Le})=>(n(),i("div",{key:String(Te.key),ref_for:!0,ref:re,"data-index":Te.index,class:se(["member-table-grid absolute left-0 top-0 w-full min-h-16 border-b border-gray-100/80 px-3 py-2 transition-colors hover:bg-gray-50 dark:border-white/5 dark:hover:bg-gray-800/30",[M.value,T.value?"cursor-pointer":"",T.value&&a(J).has(Le.id)?"bg-primary-50/70 dark:bg-primary-950/20":""]]),style:Ke({transform:`translateY(${Te.start}px)`}),onMousedown:O,onClick:Ge=>G(Te.index,Le.id,Ge)},[T.value?(n(),i("div",Ix,[u(te,{"model-value":a(J).has(Le.id),onClick:Be(Ge=>G(Te.index,Le.id,Ge),["stop"])},null,8,["model-value","onClick"])])):E("",!0),e("div",Dx,[u(Ga,{src:Le.avatar,alt:b(Le),text:q(Le),"fallback-class":["flex h-8 w-8 items-center justify-center rounded-full text-[10px] font-bold","bg-primary-500 text-white"]},null,8,["src","alt","text"]),e("div",Lx,[e("p",{class:"truncate text-sm font-medium text-gray-900 dark:text-white",title:Le.accountName||"-"},s(Le.accountName||"-"),9,Ax),e("p",{class:"truncate text-xs text-gray-400 dark:text-gray-500",title:Le.platformId},s(Le.platformId),9,zx)])]),m.chatType==="group"?(n(),i("p",{key:1,class:se(["truncate text-sm text-gray-700 dark:text-gray-300",Le.groupNickname?"font-medium":"text-gray-400 dark:text-gray-500"]),title:Le.groupNickname||"-"},s(Le.groupNickname||"-"),11,qx)):E("",!0),e("span",Rx,s(Le.messageCount.toLocaleString()),1),e("span",{class:"text-right font-mono text-xs tabular-nums text-gray-600 dark:text-gray-400",title:Le.lastMessageTs===null?"-":a(oa)(Le.lastMessageTs)},s(Le.lastMessageTs===null?"-":a(oa)(Le.lastMessageTs)),9,Ex),u(Ee,{"model-value":Le.aliases,placeholder:a(t)("members.list.aliasPlaceholder"),loading:j.value.has(Le.id),size:"xs",class:"w-full",onClick:V[5]||(V[5]=Be(()=>{},["stop"])),"onUpdate:modelValue":Ge=>qe(Le,Ge)},null,8,["model-value","placeholder","loading","onUpdate:modelValue"]),e("div",jx,[u(P,{icon:"i-heroicons-chat-bubble-left-ellipsis",size:"xs",color:"neutral",variant:"ghost",title:a(t)("common.viewChatRecords"),onClick:Be(Ge=>Y(Le),["stop"])},null,8,["title","onClick"]),u(P,{icon:"i-heroicons-trash",size:"xs",color:"error",variant:"ghost",title:a(t)("members.list.delete"),onClick:Be(Ge=>Ae(Le),["stop"])},null,8,["title","onClick"])])],46,Mx))),128))],4)],512)],2)]))],2),u(De,{open:!!C.value,ui:{content:"max-w-sm"},"onUpdate:open":V[6]||(V[6]=Te=>C.value=null)},{content:F(()=>[e("div",Px,[e("div",Ux,[u(Z,{name:"i-heroicons-exclamation-triangle",class:"h-7 w-7 text-red-500"})]),e("h3",Bx,s(a(t)("members.list.modal.title")),1),e("p",Fx,s(a(t)("members.list.modal.content",{name:C.value?b(C.value):"",count:C.value?.messageCount.toLocaleString()})),1),e("div",Vx,[u(P,{variant:"outline",onClick:Se},{default:F(()=>[ee(s(a(t)("members.list.modal.cancel")),1)]),_:1}),u(P,{color:"error",loading:L.value,onClick:Re},{default:F(()=>[ee(s(a(t)("members.list.modal.confirm")),1)]),_:1},8,["loading"])])])]),_:1},8,["open"]),u(De,{open:z.value,ui:{content:"max-w-sm"},"onUpdate:open":V[8]||(V[8]=Te=>z.value=Te)},{content:F(()=>[e("div",Nx,[e("div",Hx,[u(Z,{name:"i-heroicons-exclamation-triangle",class:"h-7 w-7 text-red-500"})]),e("h3",Ox,s(a(t)("members.list.batchDeleteModal.title")),1),e("p",Wx,s(a(t)("members.list.batchDeleteModal.content",{count:ae.value.length,messageCount:he.value.toLocaleString()})),1),e("div",Yx,[u(P,{variant:"outline",disabled:$.value,onClick:V[7]||(V[7]=Te=>z.value=!1)},{default:F(()=>[ee(s(a(t)("members.list.modal.cancel")),1)]),_:1},8,["disabled"]),u(P,{color:"error",loading:$.value,onClick:Ue},{default:F(()=>[ee(s(a(t)("members.list.modal.confirm")),1)]),_:1},8,["loading"])])])]),_:1},8,["open"]),u(De,{open:I.value,ui:{content:"max-w-md"},"onUpdate:open":V[10]||(V[10]=Te=>I.value=Te)},{content:F(()=>[e("div",Qx,[e("div",Kx,[e("div",Gx,[u(Z,{name:"i-heroicons-link",class:"h-5 w-5 text-amber-600 dark:text-amber-400"})]),e("h3",Jx,s(a(t)("members.list.mergeModal.title")),1)]),e("p",Xx,s(a(t)("members.list.mergeModal.content",{source:H.value?b(H.value.secondary):"",sourceCount:H.value?H.value.secondary.messageCount.toLocaleString():"0",target:H.value?b(H.value.primary):"",targetCount:H.value?H.value.primary.messageCount.toLocaleString():"0"})),1),e("p",Zx,s(a(t)("members.list.mergeModal.hint")),1),e("div",eb,[u(P,{variant:"outline",disabled:w.value,onClick:V[9]||(V[9]=Te=>I.value=!1)},{default:F(()=>[ee(s(a(t)("members.list.mergeModal.cancel")),1)]),_:1},8,["disabled"]),u(P,{color:"primary",loading:w.value,onClick:R},{default:F(()=>[ee(s(a(t)("members.list.mergeModal.confirm")),1)]),_:1},8,["loading"])])])]),_:1},8,["open"])],2)}}}),Dk=tt(ab,[["__scopeId","data-v-0754d30f"]]),sb={class:"mt-3 flex items-center justify-between gap-3"},Lk=ge({__name:"SessionAnalysisHeader",props:Pt({title:{},avatar:{},icon:{},iconClass:{},tabs:{},currentSessionId:{},initialTimeState:{}},{activeTab:{required:!0},activeTabModifiers:{},timeRangeValue:{required:!0},timeRangeValueModifiers:{}}),emits:Pt(["openIncrementalImport","openMemberManagement","openChatRecord","update:fullRange","update:availableYears"],["update:activeTab","update:timeRangeValue"]),setup(l,{emit:o}){const t=jt(l,"activeTab"),c=jt(l,"timeRangeValue"),r=l,m=o,{t:g}=ye(),d=ct(),p=x(()=>!["ai-chat","memory","lab","debug"].includes(t.value)),h=x(()=>r.tabs.map(y=>({id:y.id,label:g(y.labelKey),icon:y.icon})));return(y,T)=>{const M=Pe,C=pt;return n(),K(xs,{title:l.title,avatar:l.avatar,size:"compact",icon:l.icon,"icon-class":l.iconClass},{actions:F(()=>[a(d).toolsPanelPosition==="header"?(n(),i(oe,{key:0},[u(C,{text:a(g)("analysis.tooltip.viewChatRecord")},{default:F(()=>[u(M,{icon:"i-heroicons-chat-bubble-bottom-center-text",variant:"ghost",color:"gray",size:"sm",class:"hover:bg-gray-100 dark:hover:bg-gray-800",onClick:T[0]||(T[0]=L=>m("openChatRecord"))})]),_:1},8,["text"]),u(C,{text:a(g)("analysis.tooltip.incrementalImport")},{default:F(()=>[u(M,{icon:"i-heroicons-plus-circle",variant:"ghost",color:"gray",size:"sm",class:"hover:bg-gray-100 dark:hover:bg-gray-800",onClick:T[1]||(T[1]=L=>m("openIncrementalImport"))})]),_:1},8,["text"]),u(C,{text:a(g)("analysis.tooltip.memberManagement")},{default:F(()=>[u(M,{icon:"i-heroicons-user-group",variant:"ghost",color:"gray",size:"sm",class:"hover:bg-gray-100 dark:hover:bg-gray-800",onClick:T[2]||(T[2]=L=>m("openMemberManagement"))})]),_:1},8,["text"]),u(ht,{color:"gray"}),u(C,{text:a(g)("analysis.tooltip.more")},{default:F(()=>[u(M,{"data-tools-panel-trigger":"",icon:"i-heroicons-ellipsis-horizontal",variant:"ghost",color:"gray",size:"sm",class:"hover:bg-gray-100 dark:hover:bg-gray-800",onClick:T[3]||(T[3]=L=>a(d).toggleToolsPanelOpen())})]),_:1},8,["text"])],64)):(n(),K(ht,{key:1,color:"gray"}))]),default:F(()=>[e("div",sb,[u(a(es),{modelValue:t.value,"onUpdate:modelValue":T[4]||(T[4]=L=>t.value=L),class:"min-w-0 shrink",items:h.value},null,8,["modelValue","items"]),u(fs,{modelValue:c.value,"onUpdate:modelValue":T[5]||(T[5]=L=>c.value=L),"session-id":l.currentSessionId??void 0,visible:p.value,"initial-state":l.initialTimeState,size:"sm","onUpdate:fullRange":T[6]||(T[6]=L=>m("update:fullRange",L)),"onUpdate:availableYears":T[7]||(T[7]=L=>m("update:availableYears",L))},null,8,["modelValue","session-id","visible","initial-state"])])]),_:1},8,["title","avatar","icon","icon-class"])}}}),nb={class:"space-y-4 p-5"},ob={class:"flex items-center gap-2"},rb={class:"text-base font-semibold text-gray-900 dark:text-white"},lb={key:0,class:"flex items-center gap-2 text-sm text-gray-400"},ib={class:"rounded-lg border border-gray-200 bg-gray-50 p-3 text-sm dark:border-gray-700 dark:bg-gray-800/50"},cb={class:"flex items-center justify-between"},db={class:"text-gray-500"},ub={class:"font-medium text-gray-800 dark:text-gray-200"},mb={key:0,class:"mt-1 flex items-center justify-between"},gb={class:"text-gray-500"},pb={class:"text-gray-700 dark:text-gray-300"},hb={key:1,class:"mt-2"},vb={class:"flex items-center justify-between text-xs text-gray-500"},yb={class:"mt-1 h-1.5 w-full overflow-hidden rounded-full bg-gray-200 dark:bg-gray-700"},fb={key:2,class:"mt-1 text-xs text-red-500"},xb={class:"text-sm text-gray-600 dark:text-gray-400"},bb={key:0,class:"rounded border border-amber-200 bg-amber-50 px-2 py-1.5 text-xs text-amber-700 dark:border-amber-800/50 dark:bg-amber-900/20 dark:text-amber-400"},kb={class:"flex justify-end gap-2"},_b={class:"text-xs text-gray-400"},wb={class:"flex flex-wrap justify-end gap-2"},ze="settings.ai.semanticIndex",Ak=ge({__name:"SemanticIndexSessionModal",props:{modelValue:{type:Boolean},sessionId:{},messageCount:{}},emits:["update:modelValue"],setup(l,{emit:o}){const t=l,c=o,{t:r}=ye(),m=ts(),g=x({get:()=>t.modelValue,set:S=>c("update:modelValue",S)}),d=f(null),p=f(!1),h=f(!1),y=f(!1),T=x(()=>{const S=d.value;return!S||!S.enabled?r(`${ze}.session.notEnabled`):S.needsRebuild?r(`${ze}.state.needsRebuild`):S.running||S.queued||S.indexStatus==="running"?r(`${ze}.state.building`):S.indexStatus==="completed"?r(`${ze}.state.completed`):S.indexStatus==="failed"?r(`${ze}.state.failed`):S.indexStatus==="paused"?r(`${ze}.state.paused`):r(`${ze}.state.pending`)}),M=x(()=>{const S=d.value;return!!S&&(S.running||S.queued||S.indexStatus==="running")}),C=x(()=>d.value&&d.value.totalMessages>0?Math.round(d.value.indexedMessages/d.value.totalMessages*100):0);let L=null;function z(){L&&(clearTimeout(L),L=null)}function $(){z(),L=setTimeout(async()=>{try{d.value=await m.status(t.sessionId)}catch(S){console.error("[semantic-index] poll status failed:",S)}M.value&&t.modelValue?$():z()},1500)}async function I(){h.value=!0;try{const[S,v]=await Promise.all([m.getConfig(),m.status(t.sessionId)]);p.value=S.config.enabled&&S.configured&&(S.config.mode==="local"?!!S.config.local.modelId:!!S.config.api?.baseUrl&&!!S.config.api?.model&&(!as(S.config.api?.baseUrl)||S.apiKeySet)),d.value=v}catch(S){console.error("[semantic-index] load session status failed:",S)}finally{h.value=!1}M.value&&$()}async function w(S){y.value=!0;try{d.value=await m[S](t.sessionId)}catch(v){console.error(`[semantic-index] ${S} failed:`,v)}finally{y.value=!1}M.value?$():z()}return de(()=>t.modelValue,S=>{S?I():z()}),dt(z),(S,v)=>{const _=_e,A=Pe,j=We;return n(),K(j,{open:g.value,"onUpdate:open":v[10]||(v[10]=U=>g.value=U),ui:{content:"z-[101]",overlay:"z-[100]"}},{content:F(()=>[e("div",nb,[e("div",ob,[u(_,{name:"i-heroicons-circle-stack",class:"h-5 w-5 text-blue-500"}),e("h3",rb,s(a(r)(`${ze}.title`)),1)]),h.value?(n(),i("div",lb,[u(_,{name:"i-heroicons-arrow-path",class:"h-4 w-4 animate-spin"}),ee(" "+s(a(r)("common.loading")),1)])):(n(),i(oe,{key:1},[e("div",ib,[e("div",cb,[e("span",db,s(a(r)(`${ze}.session.statusLabel`)),1),e("span",ub,s(T.value),1)]),d.value?.enabled&&d.value.indexStatus==="completed"?(n(),i("div",mb,[e("span",gb,s(a(r)(`${ze}.session.coverageLabel`)),1),e("span",pb,s(C.value)+"%",1)])):E("",!0),M.value?(n(),i("div",hb,[e("div",vb,[e("span",null,s(a(r)(`${ze}.session.progressLabel`)),1),e("span",null,s(d.value?.indexedMessages??0)+" / "+s(d.value?.totalMessages??0)+" ("+s(C.value)+"%) ",1)]),e("div",yb,[e("div",{class:"h-full rounded-full bg-blue-500 transition-all duration-500",style:Ke({width:`${C.value}%`})},null,4)])])):E("",!0),d.value?.error?(n(),i("p",fb,s(d.value.error),1)):E("",!0)]),d.value?.enabled?(n(),i(oe,{key:1},[e("p",_b,s(a(r)(`${ze}.session.buildVsEnable`)),1),e("div",wb,[M.value?(n(),i(oe,{key:0},[u(A,{variant:"soft",loading:y.value,onClick:v[2]||(v[2]=U=>w("pause"))},{default:F(()=>[ee(s(a(r)(`${ze}.action.pause`)),1)]),_:1},8,["loading"]),u(A,{color:"error",variant:"soft",disabled:y.value,onClick:v[3]||(v[3]=U=>w("cancel"))},{default:F(()=>[ee(s(a(r)(`${ze}.action.cancel`)),1)]),_:1},8,["disabled"])],64)):d.value?.indexStatus==="completed"&&!d.value?.needsRebuild?(n(),K(A,{key:1,variant:"soft",loading:y.value,onClick:v[4]||(v[4]=U=>w("rebuild"))},{default:F(()=>[ee(s(a(r)(`${ze}.action.rebuild`)),1)]),_:1},8,["loading"])):d.value?.needsRebuild?(n(),K(A,{key:2,color:"primary",loading:y.value,onClick:v[5]||(v[5]=U=>w("rebuild"))},{default:F(()=>[ee(s(a(r)(`${ze}.action.rebuild`)),1)]),_:1},8,["loading"])):d.value?.indexStatus==="failed"?(n(),K(A,{key:3,color:"primary",loading:y.value,onClick:v[6]||(v[6]=U=>w("build"))},{default:F(()=>[ee(s(a(r)(`${ze}.session.retry`)),1)]),_:1},8,["loading"])):d.value?.indexStatus==="paused"?(n(),K(A,{key:4,color:"primary",loading:y.value,onClick:v[7]||(v[7]=U=>w("build"))},{default:F(()=>[ee(s(a(r)(`${ze}.session.continue`)),1)]),_:1},8,["loading"])):(n(),K(A,{key:5,color:"primary",loading:y.value,onClick:v[8]||(v[8]=U=>w("build"))},{default:F(()=>[ee(s(a(r)(`${ze}.action.build`)),1)]),_:1},8,["loading"])),u(A,{variant:"ghost",color:"neutral",disabled:y.value,onClick:v[9]||(v[9]=U=>w("remove"))},{default:F(()=>[ee(s(a(r)(`${ze}.action.remove`)),1)]),_:1},8,["disabled"])])],64)):(n(),i(oe,{key:0},[e("p",xb,s(a(r)(`${ze}.session.enableHint`)),1),p.value?E("",!0):(n(),i("p",bb,s(a(r)(`${ze}.session.configFirst`)),1)),e("div",kb,[u(A,{variant:"ghost",onClick:v[0]||(v[0]=U=>g.value=!1)},{default:F(()=>[ee(s(a(r)("common.close")),1)]),_:1}),u(A,{color:"primary",loading:y.value,disabled:!p.value,onClick:v[1]||(v[1]=U=>w("enable"))},{default:F(()=>[ee(s(a(r)(`${ze}.session.enable`)),1)]),_:1},8,["loading","disabled"])])],64))],64))])]),_:1},8,["open"])}}}),$b={class:"min-h-[200px]"},Cb={key:0,class:"space-y-4"},Sb={class:"text-sm text-gray-600 dark:text-gray-400"},Tb={class:"text-sm text-gray-600 dark:text-gray-400"},Mb={key:1,class:"flex flex-col items-center justify-center py-10"},Ib={class:"text-gray-600 dark:text-gray-400"},Db={class:"mt-2 text-sm text-gray-500"},Lb={key:2,class:"space-y-6"},Ab={class:"rounded-lg bg-gray-50 p-4 dark:bg-gray-800"},zb={class:"mb-2 text-sm font-medium text-gray-700 dark:text-gray-300"},qb={class:"grid grid-cols-3 gap-4 text-center"},Rb={class:"text-2xl font-bold text-gray-900 dark:text-white"},Eb={class:"text-xs text-gray-500"},jb={class:"text-2xl font-bold text-green-600 dark:text-green-400"},Pb={class:"text-xs text-gray-500"},Ub={class:"text-2xl font-bold text-gray-400"},Bb={class:"text-xs text-gray-500"},Fb={key:0,class:"text-center text-sm text-amber-600 dark:text-amber-400"},Vb={key:3,class:"flex flex-col items-center justify-center py-10"},Nb={class:"text-gray-600 dark:text-gray-400"},Hb={key:0,class:"mt-4 w-full max-w-xs"},Ob={key:4,class:"flex flex-col items-center justify-center py-10"},Wb={class:"text-lg font-medium text-gray-900 dark:text-white"},Yb={class:"mt-2 text-sm text-gray-600 dark:text-gray-400"},Qb={key:5,class:"flex flex-col items-center justify-center py-10"},Kb={class:"text-lg font-medium text-gray-900 dark:text-white"},Gb={class:"mt-2 text-sm text-red-600 dark:text-red-400"},Jb={class:"flex w-full justify-end gap-2"},zk=ge({__name:"IncrementalImportModal",props:{modelValue:{type:Boolean},sessionId:{},sessionName:{}},emits:["update:modelValue","imported"],setup(l,{emit:o}){const t=l,c=o,{t:r}=ye(),m=f("select"),g=f(null),d=f(null),p=f(null),h=f(null),y=f(null),T=f(null),M=x({get:()=>t.modelValue,set:_=>c("update:modelValue",_)});de(M,_=>{_||C()});function C(){m.value="select",g.value=null,p.value=null,h.value=null,y.value=null,T.value=null}async function L({files:_,paths:A}){if(_.length>0)g.value={source:_[0],name:_[0].name};else{y.value=r("home.import.cannotReadPath");return}await $()}function z(){d.value?.openFileDialog()}async function $(){if(g.value){m.value="analyzing",y.value=null;try{const _=await na().analyzeIncrementalImport(t.sessionId,g.value.source);if(_.error){m.value="error",y.value=v(_.error);return}p.value={newMessageCount:_.newMessageCount,duplicateCount:_.duplicateCount,totalInFile:_.totalInFile},m.value="preview"}catch(_){m.value="error",y.value=String(_)}}}async function I(){if(g.value){m.value="importing",h.value={stage:"saving",progress:0,message:""};try{const _=await na().incrementalImport(t.sessionId,g.value.source,A=>{h.value=A});_.success?(T.value={newMessageCount:_.newMessageCount},m.value="done"):(m.value="error",y.value=v(_.error||"error.import_failed"))}catch(_){m.value="error",y.value=String(_)}}}function w(){T.value&&c("imported",T.value.newMessageCount),M.value=!1}function S(){m.value="select",g.value=null,p.value=null,y.value=null}function v(_){if(_.startsWith("error.")){const A=`home.import.errors.${_.slice(6)}`,j=r(A);return j!==A?j:_}return _}return(_,A)=>{const j=cs,U=_e,k=ds,b=Pe,q=We;return n(),K(q,{open:M.value,"onUpdate:open":A[1]||(A[1]=Y=>M.value=Y),title:a(r)("analysis.incremental.title")},{body:F(()=>[e("div",$b,[m.value==="select"?(n(),i("div",Cb,[e("p",Sb,s(a(r)("analysis.incremental.description",{name:l.sessionName})),1),u(j,{color:"info",variant:"soft",icon:"i-heroicons-information-circle",description:a(r)("analysis.incremental.homeAutoImportHint")},null,8,["description"]),u(a(us),{ref_key:"dropZoneRef",ref:d,accept:[".json",".jsonl",".txt"],class:"w-full",onFiles:L},{default:F(({isDragOver:Y})=>[e("div",{class:se(["flex cursor-pointer flex-col items-center justify-center rounded-xl border-2 border-dashed px-6 py-10 transition-colors",Y?"border-pink-500 bg-pink-50/50 dark:border-pink-400 dark:bg-pink-500/10":"border-gray-300 hover:border-pink-400 dark:border-gray-600 dark:hover:border-pink-500"]),onClick:Be(z,["stop"])},[u(U,{name:"i-heroicons-arrow-up-tray",class:"mb-3 h-10 w-10 text-gray-400"}),e("p",Tb,s(Y?a(r)("home.import.dropHint"):a(r)("analysis.incremental.dropHint")),1)],2)]),_:1},512)])):m.value==="analyzing"?(n(),i("div",Mb,[u(U,{name:"i-heroicons-arrow-path",class:"mb-4 h-10 w-10 animate-spin text-pink-500"}),e("p",Ib,s(a(r)("analysis.incremental.analyzing")),1),e("p",Db,s(g.value?.name),1)])):m.value==="preview"&&p.value?(n(),i("div",Lb,[e("div",Ab,[e("p",zb,s(g.value?.name),1),e("div",qb,[e("div",null,[e("p",Rb,s(p.value.totalInFile.toLocaleString()),1),e("p",Eb,s(a(r)("analysis.incremental.totalInFile")),1)]),e("div",null,[e("p",jb,s(p.value.newMessageCount.toLocaleString()),1),e("p",Pb,s(a(r)("analysis.incremental.newMessages")),1)]),e("div",null,[e("p",Ub,s(p.value.duplicateCount.toLocaleString()),1),e("p",Bb,s(a(r)("analysis.incremental.duplicates")),1)])])]),p.value.newMessageCount===0?(n(),i("p",Fb,[u(U,{name:"i-heroicons-exclamation-triangle",class:"mr-1 inline-block h-4 w-4"}),ee(" "+s(a(r)("analysis.incremental.noNewMessages")),1)])):E("",!0)])):m.value==="importing"?(n(),i("div",Vb,[u(U,{name:"i-heroicons-arrow-path",class:"mb-4 h-10 w-10 animate-spin text-pink-500"}),e("p",Nb,s(a(r)("analysis.incremental.importing")),1),h.value?(n(),i("div",Hb,[u(k,{value:h.value.progress,size:"sm"},null,8,["value"])])):E("",!0)])):m.value==="done"&&T.value?(n(),i("div",Ob,[u(U,{name:"i-heroicons-check-circle",class:"mb-4 h-12 w-12 text-green-500"}),e("p",Wb,s(a(r)("analysis.incremental.success")),1),e("p",Yb,s(a(r)("analysis.incremental.successDetail",{count:T.value.newMessageCount})),1)])):m.value==="error"?(n(),i("div",Qb,[u(U,{name:"i-heroicons-x-circle",class:"mb-4 h-12 w-12 text-red-500"}),e("p",Kb,s(a(r)("analysis.incremental.failed")),1),e("p",Gb,s(y.value),1)])):E("",!0)])]),footer:F(()=>[e("div",Jb,[m.value==="select"?(n(),K(b,{key:0,color:"neutral",variant:"ghost",onClick:A[0]||(A[0]=Y=>M.value=!1)},{default:F(()=>[ee(s(a(r)("common.cancel")),1)]),_:1})):m.value==="preview"?(n(),i(oe,{key:1},[u(b,{color:"neutral",variant:"ghost",onClick:S},{default:F(()=>[ee(s(a(r)("common.back")),1)]),_:1}),u(b,{color:"primary",disabled:!p.value||p.value.newMessageCount===0,onClick:I},{default:F(()=>[ee(s(a(r)("analysis.incremental.import",{count:p.value?.newMessageCount||0})),1)]),_:1},8,["disabled"])],64)):m.value==="done"||m.value==="error"?(n(),i(oe,{key:2},[m.value==="error"?(n(),K(b,{key:0,color:"neutral",variant:"ghost",onClick:S},{default:F(()=>[ee(s(a(r)("common.retry")),1)]),_:1})):E("",!0),u(b,{color:"primary",onClick:w},{default:F(()=>[ee(s(a(r)("common.done")),1)]),_:1})],64)):E("",!0)])]),_:1},8,["open","title"])}}}),Xb={key:0,class:"fixed right-0 top-1/3"},Zb={class:"no-capture flex flex-col items-center gap-0.5 rounded-l-lg border border-r-0 border-gray-200/60 bg-white py-1.5 shadow-sm dark:border-white/5 dark:bg-page-dark"},ek=["onClick"],tk={class:"mb-2 flex items-center justify-between"},ak={class:"px-0.5 text-[9px] font-bold uppercase tracking-widest text-gray-400 dark:text-gray-500"},sk={class:"flex flex-col gap-1.5"},nk=["onClick"],ok={class:"whitespace-nowrap"},qk=ge({__name:"ActionToolsPanel",emits:["openIncrementalImport","openSemanticIndex","openMemberManagement","openChatRecord","openMessageExport"],setup(l,{emit:o}){const{t}=ye(),c=ct(),{isToolsPanelMini:r,toolsPanelPosition:m,isToolsPanelOpen:g}=et(c),d=x(()=>m.value==="header"),p=x(()=>!d.value||g.value),h=f(null),y=o;function T($){y($),d.value&&(g.value=!1)}function M($){if(!d.value||!g.value)return;const I=$.target;I instanceof Element&&(h.value?.contains(I)||I.closest("[data-tools-panel-trigger]")||(g.value=!1))}const C=[{event:"openIncrementalImport",icon:"i-heroicons-plus-circle",hoverColor:"group-hover:text-pink-500",miniHoverBg:"hover:text-pink-500",labelKey:"analysis.tooltip.incrementalImport"},{event:"openSemanticIndex",icon:"i-heroicons-circle-stack",hoverColor:"group-hover:text-indigo-500",miniHoverBg:"hover:text-indigo-500",labelKey:"analysis.tooltip.semanticIndex"},{event:"openMemberManagement",icon:"i-heroicons-user-group",hoverColor:"group-hover:text-purple-500",miniHoverBg:"hover:text-purple-500",labelKey:"analysis.tooltip.memberManagement"},{event:"openChatRecord",icon:"i-heroicons-chat-bubble-bottom-center-text",hoverColor:"group-hover:text-cyan-500",miniHoverBg:"hover:text-cyan-500",labelKey:"analysis.tooltip.viewChatRecord"},{event:"openMessageExport",icon:"i-heroicons-document-arrow-down",hoverColor:"group-hover:text-green-500",miniHoverBg:"hover:text-green-500",labelKey:"analysis.messageExport.title"}],L=[{event:"openSemanticIndex",icon:"i-heroicons-circle-stack",hoverColor:"group-hover:text-indigo-500",miniHoverBg:"hover:text-indigo-500",labelKey:"analysis.tooltip.semanticIndex"},{event:"openMessageExport",icon:"i-heroicons-document-arrow-down",hoverColor:"group-hover:text-green-500",miniHoverBg:"hover:text-green-500",labelKey:"analysis.messageExport.title"}],z=x(()=>d.value?L:C);return de(m,()=>{g.value=!1}),Ve(()=>{document.addEventListener("mousedown",M)}),Ct(()=>{document.removeEventListener("mousedown",M)}),($,I)=>{const w=_e,S=pt;return!d.value&&a(r)?(n(),i("div",Xb,[e("div",Zb,[(n(),i(oe,null,ce(C,v=>u(S,{key:v.event,text:a(t)(v.labelKey),popper:{placement:"left"}},{default:F(()=>[e("button",{class:se(["flex h-7 w-7 items-center justify-center rounded-md text-gray-400 transition-colors hover:bg-gray-100 dark:text-gray-500 dark:hover:bg-white/5",v.miniHoverBg]),onClick:_=>T(v.event)},[u(w,{name:v.icon,class:"h-3.5 w-3.5"},null,8,["name"])],10,ek)]),_:2},1032,["text"])),64)),I[2]||(I[2]=e("div",{class:"my-0.5 h-px w-4 bg-gray-200 dark:bg-gray-700"},null,-1)),u(S,{text:a(t)("analysis.toolsPanel.exitMini"),popper:{placement:"left"}},{default:F(()=>[e("button",{class:"flex h-7 w-7 items-center justify-center rounded-md text-gray-300 transition-colors hover:bg-gray-100 hover:text-gray-500 dark:text-gray-600 dark:hover:bg-white/5 dark:hover:text-gray-400",onClick:I[0]||(I[0]=v=>a(c).toggleToolsPanelMini())},[u(w,{name:"i-heroicons-arrows-pointing-out",class:"h-3 w-3"})])]),_:1},8,["text"])])])):(n(),i("div",{key:1,class:se(["fixed right-0 z-40",d.value?"top-14":"top-1/3"])},[e("div",{class:se(["absolute right-0 top-0 transition-all duration-250 ease-in-out",p.value?"translate-x-0 opacity-100":"pointer-events-none translate-x-full opacity-0"])},[e("div",{ref_key:"panelRef",ref:h,class:"no-capture flex w-40 flex-col rounded-l-xl border border-r-0 border-gray-200/60 bg-white p-3 shadow-overlay dark:border-white/5 dark:bg-page-dark"},[e("div",tk,[e("span",ak,s(a(t)("analysis.overview.tools")),1),d.value?E("",!0):(n(),K(S,{key:0,text:a(t)("analysis.toolsPanel.miniMode"),popper:{placement:"left"}},{default:F(()=>[e("button",{class:"flex h-5 w-5 items-center justify-center rounded text-gray-300 transition-colors hover:text-gray-500 dark:text-gray-600 dark:hover:text-gray-400",onClick:I[1]||(I[1]=v=>a(c).toggleToolsPanelMini())},[u(w,{name:"i-heroicons-arrows-pointing-in",class:"h-3 w-3"})])]),_:1},8,["text"]))]),e("div",sk,[(n(!0),i(oe,null,ce(z.value,v=>(n(),i("button",{key:v.event,class:"group flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-xs font-medium text-gray-600 transition-all hover:bg-gray-100 hover:text-gray-900 dark:text-gray-400 dark:hover:bg-white/5 dark:hover:text-white",onClick:_=>T(v.event)},[u(w,{name:v.icon,class:se(["h-3.5 w-3.5 text-gray-400 transition-colors dark:text-gray-500",v.hoverColor])},null,8,["name","class"]),e("span",ok,s(a(t)(v.labelKey)),1)],8,nk))),128))])],512)],2)],2))}}});export{wk as C,_k as D,bk as L,Dk as M,Lt as _,xk as a,Ck as b,Ye as c,Ot as d,Sk as e,nh as f,Tk as g,Mk as h,Ik as i,fk as j,Lk as k,qk as l,Ak as m,zk as n,kk as o,$k as u};
|
|
110
|
+
`);g.value=L}}finally{d.value=!1}}},{immediate:!0});async function y(){if(g.value.trim()){p.value=!0;try{if(h.value){const T=await m.createSkill(g.value);T.success&&T.id&&(r("created",T.id),r("update:open",!1))}else c.skillId&&(await m.updateSkill(c.skillId,g.value)).success&&(r("saved"),r("update:open",!1))}finally{p.value=!1}}}return(T,M)=>{const C=_e,L=We;return n(),K(L,{open:l.open,ui:{content:"sm:max-w-2xl z-50"},"onUpdate:open":M[3]||(M[3]=z=>r("update:open",z))},{content:F(()=>[e("div",wg,[e("div",$g,[e("h2",Cg,s(h.value?a(t)("ai.skill.config.createTitle"):a(t)("ai.skill.config.editTitle")),1),e("button",{class:"rounded-lg p-1.5 text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-600 dark:hover:bg-gray-800 dark:hover:text-gray-300",onClick:M[0]||(M[0]=z=>r("update:open",!1))},[u(C,{name:"i-heroicons-x-mark",class:"h-5 w-5"})])]),e("p",Sg,s(a(t)("ai.skill.config.rawEditorHint")),1),d.value?(n(),i("div",Tg,[u(C,{name:"i-heroicons-arrow-path",class:"mr-2 h-5 w-5 animate-spin"})])):He((n(),i("textarea",{key:1,"onUpdate:modelValue":M[1]||(M[1]=z=>g.value=z),class:"h-[400px] w-full resize-none rounded-lg border border-gray-300 bg-gray-50 p-3 font-mono text-xs text-gray-900 focus:border-primary-500 focus:ring-1 focus:ring-primary-500 dark:border-gray-600 dark:bg-page-dark dark:text-gray-100",spellcheck:"false"},null,512)),[[rt,g.value]]),e("div",Mg,[e("button",{class:"rounded-lg px-4 py-2 text-sm text-gray-500 transition-colors hover:bg-gray-100 dark:text-gray-400 dark:hover:bg-gray-800",onClick:M[2]||(M[2]=z=>r("update:open",!1))},s(a(t)("common.cancel")),1),e("button",{class:"rounded-lg bg-primary-500 px-4 py-2 text-sm font-medium text-white transition-colors hover:bg-primary-600 disabled:opacity-50",disabled:p.value||!g.value.trim(),onClick:y},s(h.value?a(t)("ai.skill.config.create"):a(t)("ai.skill.config.save")),9,Ig)])])]),_:1},8,["open"])}}}),Ag={key:0,class:"relative"},zg={class:"relative flex flex-nowrap gap-2"},qg=["disabled"],Rg=["disabled"],Eg={class:"inline-flex items-center gap-1"},jg={key:0,class:"absolute left-0 bottom-full z-20 mb-2 w-[320px] max-w-[calc(100vw-3rem)]"},Pg={class:"mb-1.5 flex justify-start"},Ug={class:"flex flex-wrap gap-2"},Bg=["disabled","onClick"],Rt="rounded-full ring-1 ring-inset ring-gray-200/80 bg-white/60 shadow-[0_2px_8px_-2px_rgba(0,0,0,0.05)] backdrop-blur-md px-3 py-1.5 text-xs text-gray-600 transition-all duration-300 hover:-translate-y-[1px] hover:ring-primary-300 hover:bg-white/90 hover:text-primary-600 hover:shadow-[0_4px_12px_-2px_rgba(0,0,0,0.08)] disabled:cursor-not-allowed disabled:opacity-50 dark:ring-gray-700/60 dark:bg-gray-800/60 dark:text-gray-300 dark:hover:ring-primary-500/50 dark:hover:bg-gray-800/90 dark:hover:text-primary-400",Fg=ge({__name:"PresetQuestions",props:{questions:{},disabled:{type:Boolean},leadingActionLabel:{}},emits:["select","leadingAction","editQuestions"],setup(l,{emit:o}){const{t}=ye(),c=l,r=o,m=f(!1);let g=null;function d(T){m.value=!1,r("select",T)}function p(){c.disabled||c.questions.length===0||(g&&(clearTimeout(g),g=null),m.value=!0)}function h(){g=setTimeout(()=>{m.value=!1},150)}function y(){m.value=!1,r("editQuestions")}return Ct(()=>{g&&clearTimeout(g)}),(T,M)=>{const C=_e;return l.leadingActionLabel||l.questions.length>0?(n(),i("div",Ag,[e("div",zg,[l.leadingActionLabel?(n(),i("button",{key:0,class:se(Rt),disabled:c.disabled,onClick:M[0]||(M[0]=L=>r("leadingAction"))},s(l.leadingActionLabel),9,qg)):E("",!0),l.questions.length>0?(n(),i("div",{key:1,class:"relative shrink-0",onMouseenter:p,onMouseleave:h},[e("button",{class:se([Rt,m.value?"ring-primary-300 bg-white/90 text-primary-600 dark:ring-primary-500/50 dark:bg-gray-800/90 dark:text-primary-400":""]),disabled:c.disabled},[e("span",Eg,[u(C,{name:"i-heroicons-chat-bubble-left-ellipsis",class:"h-3.5 w-3.5"}),ee(" "+s(a(t)("ai.chat.input.quickAsk")),1)])],10,Rg),u(lt,{"enter-active-class":"transition duration-200 ease-out","enter-from-class":"opacity-0 translate-y-2","enter-to-class":"opacity-100 translate-y-0","leave-active-class":"transition duration-150 ease-in","leave-from-class":"opacity-100 translate-y-0","leave-to-class":"opacity-0 translate-y-2"},{default:F(()=>[m.value?(n(),i("div",jg,[e("div",Pg,[e("button",{class:"inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-[10px] text-gray-400 transition-colors hover:text-primary-500 dark:text-gray-500 dark:hover:text-primary-400",onClick:y},[u(C,{name:"i-heroicons-pencil-square",class:"h-3 w-3"}),ee(" "+s(a(t)("ai.chat.input.editQuickAsk")),1)])]),e("div",Ug,[(n(!0),i(oe,null,ce(l.questions,(L,z)=>(n(),i("button",{key:z,class:se(Rt),disabled:c.disabled,onClick:$=>d(L)},s(L),9,Bg))),128))])])):E("",!0)]),_:1})],32)):E("",!0)])])):E("",!0)}}}),Vg=30;function Ng(l,o){const t=f(null),c=f(!0),r=f(!1);function m(h=!1){setTimeout(()=>{t.value&&(h||c.value)&&(t.value.scrollTop=t.value.scrollHeight,c.value=!0,r.value=!1)},100)}function g(h){h.deltaY<0&&o.value&&(c.value=!1,r.value=!0)}function d(){if(!t.value)return;const{scrollTop:h,scrollHeight:y,clientHeight:T}=t.value;y-h-T<Vg&&(c.value=!0,r.value=!1)}function p(){m(!0)}return de(()=>{const h=l.value[l.value.length-1];return[l.value.length,h?.content,h?.contentBlocks?.length]},()=>m()),Ve(()=>{t.value&&(t.value.addEventListener("scroll",d),t.value.addEventListener("wheel",g,{passive:!0})),l.value.length>0&&m(!0)}),Ct(()=>{t.value&&(t.value.removeEventListener("scroll",d),t.value.removeEventListener("wheel",g))}),{messagesContainer:t,showScrollToBottom:r,scrollToBottom:m,handleScrollToBottom:p}}function Hg(){const l=vt(),o=gt(),t=f(!1),c=f(null),r=f(!1),m=f(!1),g=f(!1),d=f(!1),p=f(null);function h(_){c.value=_,r.value=!1,t.value=!0}function y(){m.value=!0}function T(_){c.value=_,r.value=!1,t.value=!0}function M(_){c.value=_,r.value=!0,t.value=!0}function C(){c.value=null,r.value=!1,t.value=!0}async function L(_){await l.loadAssistants(),await l.loadBuiltinCatalog()}async function z(){await l.loadAssistants()}function $(){g.value=!0}function I(_){p.value=_,d.value=!0}function w(){p.value=null,d.value=!0}async function S(){await o.loadSkills()}async function v(_){await o.loadSkills(),await o.loadBuiltinCatalog()}return{configModalVisible:t,configModalAssistantId:c,configModalReadonly:r,marketModalVisible:m,handleConfigureAssistant:h,handleOpenMarket:y,handleMarketConfigure:T,handleMarketViewConfig:M,handleCreateAssistant:C,handleAssistantCreated:L,handleAssistantConfigSaved:z,skillMarketModalVisible:g,skillConfigModalVisible:d,skillConfigModalSkillId:p,handleOpenSkillMarket:$,handleSkillMarketConfigure:I,handleCreateSkill:w,handleSkillConfigSaved:S,handleSkillCreated:v}}function Og(l){const o=[];let t=null;for(const c of l)c.role==="user"?(t&&o.push({user:t,assistant:null,standalone:null,id:t.id}),t=c):c.role==="assistant"?(o.push({user:t,assistant:c,standalone:null,id:t?.id||c.id}),t=null):(t&&(o.push({user:t,assistant:null,standalone:null,id:t.id}),t=null),o.push({user:null,assistant:null,standalone:c,id:c.id}));return t&&o.push({user:t,assistant:null,standalone:null,id:t.id}),o}const Wg={class:"main-content flex h-full overflow-hidden"},Yg={class:"flex h-full flex-1 overflow-hidden"},Qg={class:"flex h-full flex-1"},Kg={class:"relative flex min-w-[480px] flex-1 flex-col overflow-hidden"},Gg={key:0,class:"flex items-center gap-1.5 px-3 py-1.5"},Jg=["disabled"],Xg={key:0,class:"flex w-full flex-col items-center justify-center animate-fade-in"},Zg={key:0,class:"mb-3 text-center text-2xl font-semibold tracking-tight text-gray-800 dark:text-gray-100"},ep={class:"text-primary-600 dark:text-primary-400"},tp={key:1,class:"relative mb-8 w-full max-w-lg"},ap={class:"flex w-full justify-center"},sp={key:1,class:"qa-pair space-y-6 pb-4"},np={key:1,class:"px-4 pb-2"},op={class:"mx-auto max-w-[740px]"},rp={class:"px-4 pb-2"},lp={class:"mx-auto max-w-[740px]"},ip={key:0,class:"w-80 shrink-0 border-l border-gray-200 bg-gray-50/50 p-4 dark:border-gray-800 dark:bg-page-dark/50"},cp=ge({__name:"ChatExplorer",props:{sessionId:{},sessionName:{},timeFilter:{},chatType:{}},setup(l,{expose:o}){const{t}=ye(),c=Je(),r=Qt(),m=vt(),g=gt(),d=l,{messages:p,sourceMessages:h,currentKeywords:y,isLoadingSource:T,isAIThinking:M,currentAIChatId:C,currentToolStatus:L,toolsUsedInCurrentRound:z,sessionTokenUsage:$,agentStatus:I,selectedAssistantId:w,sendMessage:S,editMessageAndRegenerate:v,loadAIChat:_,startNewAIChat:A,loadMoreSourceMessages:j,updateMaxMessages:U,stopGeneration:k,selectAssistantForSession:b}=ws(d.sessionId,d.sessionName,d.timeFilter,d.chatType??"group",r.locale),q=Ng(p,M),{showScrollToBottom:Y,scrollToBottom:W,handleScrollToBottom:J}=q,{configModalVisible:me,configModalAssistantId:pe,configModalReadonly:X,marketModalVisible:N,skillMarketModalVisible:ae,skillConfigModalVisible:ue,skillConfigModalSkillId:he,handleConfigureAssistant:G,handleOpenMarket:O,handleMarketConfigure:H,handleMarketViewConfig:le,handleCreateAssistant:fe,handleAssistantCreated:xe,handleAssistantConfigSaved:ke,handleOpenSkillMarket:ne,handleSkillMarketConfigure:re,handleCreateSkill:ve,handleSkillConfigSaved:Me,handleSkillCreated:$e}=Hg(),qe=Wt(),Ae=f(0);de(()=>C.value,async be=>{if(!be){Ae.value=0;return}try{const we=await Ne().estimateContextTokens(be);we.success&&(Ae.value=we.tokens)}catch{Ae.value=0}},{immediate:!0});const Se=x(()=>m.selectedAssistant?.presetQuestions??[]),Re=x(()=>d.chatType??"group"),je=f(!1),Ue=f(!1),ie=f(!0),R=f(void 0),D=f(null),V=f(null),P=f(null),B=f(!1),Z=f(!1),Q=f(!1),te=x(()=>{const be=P.value?.name||t("ai.assistant.fallbackName");return t("ai.assistant.upgrade.backupName",{name:be})}),Ee=x(()=>Og(p.value));async function De(){ie.value=!0;try{Ue.value=await Yt().hasConfig()}catch(be){console.error("检查 LLM 配置失败:",be),Ue.value=!1}finally{ie.value=!1}}async function Te(){await De(),Ue.value&&await U()}o({refreshConfig:Te});const Le=x(()=>{const be=m.selectedAssistant;if(!be)return{name:"",preview:""};const we=be.systemPrompt.replace(/#{1,6}\s+[^\n]*/g,"").replace(/\n+/g," ").replace(/\s+/g," ").trim();return{name:be.name,preview:we}}),Ge=x(()=>!!w.value&&p.value.length===0&&!M.value);function At(){c.warn(t("ai.chat.backgroundTask.runningTitle"),{description:t("ai.chat.backgroundTask.runningDescription")})}function ta(){c.warn(t("ai.chat.backgroundTask.blockedAction"))}function ka(be){if(be!==w.value){if(!b(be)){ta();return}g.activateSkill(null),A()}}async function _a(be){const we=await S(be);!we.success&&we.reason==="busy"&&At()}function wa(){const be=m.selectedAssistant?.id;be&&(R.value="presetQuestions",G(be))}function $a(be){me.value=be,be||(R.value=void 0)}function Ca(){V.value?.openSkillSelector()}function Sa(){W(!0)}async function aa(){const be=await m.checkDefaultAssistantUpgrade(r.locale);be&&(P.value=be,B.value=!0)}async function Ta(){const be=P.value;if(!(!be||Z.value||Q.value)){Q.value=!0;try{const we=await m.skipAssistantUpgrade(be);if(!we.success){c.fail(t("ai.assistant.upgrade.skipFailed"),{description:we.error||t("ai.assistant.toast.unknownError")});return}B.value=!1,P.value=null}finally{Q.value=!1}}}async function Ma(){const be=P.value;if(!(!be||Z.value||Q.value)){Z.value=!0;try{const we=te.value,ut=await m.upgradeAssistantWithBackup(be,we);if(!ut.success){c.fail(t("ai.assistant.upgrade.failed"),{description:ut.error||t("ai.assistant.toast.unknownError")});return}B.value=!1,P.value=null,c.success(t("ai.assistant.upgrade.success"),{description:t("ai.assistant.upgrade.successDescription",{name:we})})}finally{Z.value=!1}}}async function Ia(be){const we=await S(be.content,{mentionedMembers:be.mentionedMembers});if(!we.success){we.reason==="busy"&&At();return}W(!0),D.value?.refresh()}async function Da(be){const we=await v(be.messageId,be.content,{overwriteSubsequent:be.overwriteSubsequent});if(!we.success){we.reason==="busy"&&At();return}W(!0),D.value?.refresh()}async function La(be){if(C.value)try{const we=await Ne().forkAIChat(C.value,be);await _(we.id),D.value?.refresh(),W(!0),c.success(t("ai.chat.fork.success"))}catch(we){c.fail(t("ai.chat.fork.failed"),{description:String(we)})}}function Aa(){je.value=!je.value}async function za(){await j()}async function qa(be){await _(be),W(!0)}function Ra(){if(M.value){ta();return}A()}function Ea(be){C.value===be&&A()}function ja(){k()}return De(),U(),Ve(()=>{aa()}),de(()=>r.locale,()=>{aa()}),de(()=>qe.aiConfigVersion,async()=>{await Te()}),(be,we)=>{const ut=_e,Pa=pt;return n(),i("div",Wg,[u(hl,{ref_key:"conversationListRef",ref:D,"session-id":l.sessionId,"active-id":a(C),disabled:a(M),onSelect:qa,onCreate:Ra,onDelete:Ea},null,8,["session-id","active-id","disabled"]),e("div",Yg,[e("div",Qg,[e("div",Kg,[a(p).length>0||a(M)?(n(),i("div",Gg,[e("button",{class:se(["flex items-center gap-1 rounded-md px-1.5 py-1 text-xs text-gray-600 transition-colors hover:bg-gray-100 hover:text-gray-900 dark:text-gray-400 dark:hover:bg-gray-800 dark:hover:text-gray-200",{"cursor-not-allowed opacity-50":a(M)||!a(m).selectedAssistant?.id}]),disabled:a(M)||!a(m).selectedAssistant?.id,onClick:we[0]||(we[0]=Ce=>a(G)(a(m).selectedAssistant.id))},[u(ut,{name:"i-heroicons-sparkles",class:"h-3.5 w-3.5"}),e("span",null,s(a(m).selectedAssistant?.name||a(t)("ai.assistant.fallbackName")),1)],10,Jg)])):E("",!0),e("div",{ref:a(q).messagesContainer,class:se(["relative min-h-0 flex-1 overflow-x-hidden overflow-y-auto p-4",{"p-0!":a(p).length===0&&!a(M)}])},[e("div",{class:se(["mx-auto max-w-3xl space-y-6",{"flex min-h-full flex-col justify-center px-4 pb-32 pt-4 space-y-0!":a(p).length===0&&!a(M),"px-4":a(p).length>0||a(M)}])},[a(p).length===0&&!a(M)?(n(),i("div",Xg,[Le.value.name?(n(),i("h2",Zg,[ee(s(a(t)("ai.assistant.selector.heroTitlePrefix","使用"))+" ",1),e("span",ep,s(Le.value.name),1),ee(" "+s(a(t)("ai.assistant.selector.heroTitleSuffix","开始对话")),1)])):E("",!0),Ge.value&&Le.value.name?(n(),i("div",tp,[e("p",{class:"cursor-pointer pr-7 text-center text-sm leading-relaxed text-gray-500 transition-colors hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-300 line-clamp-2",onClick:we[1]||(we[1]=Ce=>a(G)(a(m).selectedAssistant.id))},[u(Pa,{text:a(t)("ai.assistant.config.systemPrompt","系统设定"),popper:{placement:"top"}},{default:F(()=>[ee(s(Le.value.preview),1)]),_:1},8,["text"])]),e("button",{type:"button",class:"absolute bottom-0 right-0 rounded-md p-0.5 text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-600 dark:hover:bg-gray-800 dark:hover:text-gray-200",onClick:we[2]||(we[2]=Be(Ce=>a(G)(a(m).selectedAssistant.id),["stop"]))},[u(ut,{name:"i-heroicons-pencil-square",class:"h-4 w-4"})])])):E("",!0),e("div",ap,[u(l0,{"chat-type":Re.value,locale:a(r).locale,"selected-id":a(w),onSelect:ka,onMarket:a(O)},null,8,["chat-type","locale","selected-id","onMarket"])])])):E("",!0),(n(!0),i(oe,null,ce(Ee.value,Ce=>(n(),i(oe,{key:Ce.id},[Ce.standalone?(n(),K(qt,{key:0,role:Ce.standalone.role,content:Ce.standalone.content,timestamp:Ce.standalone.timestamp},null,8,["role","content","timestamp"])):(n(),i("div",sp,[Ce.user&&(Ce.user.role==="user"||Ce.user.content)?(n(),K(qt,{key:0,role:Ce.user.role,"message-id":Ce.user.id,content:Ce.user.content,timestamp:Ce.user.timestamp,"is-streaming":Ce.user.isStreaming,"content-blocks":Ce.user.contentBlocks,editable:!a(M),onEdit:Da},null,8,["role","message-id","content","timestamp","is-streaming","content-blocks","editable"])):E("",!0),Ce.assistant&&(Ce.assistant.content||Ce.assistant.contentBlocks&&Ce.assistant.contentBlocks.length>0)?(n(),K(qt,{key:1,role:Ce.assistant.role,"message-id":Ce.assistant.id,content:Ce.assistant.content,timestamp:Ce.assistant.timestamp,"is-streaming":Ce.assistant.isStreaming,"content-blocks":Ce.assistant.contentBlocks,"show-capture-button":!Ce.assistant.isStreaming,onFork:La},null,8,["role","message-id","content","timestamp","is-streaming","content-blocks","show-capture-button"])):E("",!0)]))],64))),128)),a(M)&&!a(p)[a(p).length-1]?.content&&!(a(p)[a(p).length-1]?.contentBlocks?.length??0)?(n(),K(zu,{key:1,"current-tool-status":a(L),"tools-used":a(z),"agent-status":a(I)},null,8,["current-tool-status","tools-used","agent-status"])):E("",!0)],2)],2),u(lt,{name:"fade-up"},{default:F(()=>[a(Y)?(n(),i("button",{key:0,class:"absolute bottom-20 left-1/2 z-10 flex -translate-x-1/2 items-center gap-1.5 rounded-full bg-gray-800/90 px-3 py-1.5 text-xs text-white shadow-lg backdrop-blur-sm transition-all hover:bg-gray-700 dark:bg-gray-700/90 dark:hover:bg-gray-600",onClick:we[3]||(we[3]=(...Ce)=>a(J)&&a(J)(...Ce))},[u(ut,{name:"i-heroicons-arrow-down",class:"h-3.5 w-3.5"}),e("span",null,s(a(t)("ai.chat.scrollToBottom")),1)])):E("",!0)]),_:1}),a(p).length===0&&!a(M)?(n(),i("div",np,[e("div",op,[u(Fg,{questions:Se.value,"leading-action-label":a(t)("ai.chat.input.useSkill"),onSelect:_a,onLeadingAction:Ca,onEditQuestions:wa},null,8,["questions","leading-action-label"])])])):E("",!0),e("div",rp,[e("div",lp,[u(xu,{ref_key:"chatInputRef",ref:V,"session-id":l.sessionId,disabled:a(M),status:a(M)?"streaming":"ready","chat-type":Re.value,onSend:Ia,onStop:ja,onManageSkills:a(ne),onSkillActivated:Sa},null,8,["session-id","disabled","status","chat-type","onManageSkills"]),u(Zu,{"session-token-usage":a($),"agent-status":a(I),"current-ai-chat-id":a(C),"current-messages":a(p),"fallback-title":l.sessionName,"estimated-context-tokens":Ae.value},null,8,["session-token-usage","agent-status","current-ai-chat-id","current-messages","fallback-title","estimated-context-tokens"])])])])]),u(lt,{name:"slide-fade"},{default:F(()=>[a(h).length>0&&!je.value?(n(),i("div",ip,[u(Pl,{messages:a(h),keywords:a(y),"is-loading":a(T),"is-collapsed":je.value,class:"h-full",onToggle:Aa,onLoadMore:za},null,8,["messages","keywords","is-loading","is-collapsed"])])):E("",!0)]),_:1})]),u(Q0,{open:a(me),"assistant-id":a(pe),readonly:a(X),"scroll-to-section":R.value,"onUpdate:open":$a,onSaved:a(ke),onCreated:a(xe)},null,8,["open","assistant-id","readonly","scroll-to-section","onSaved","onCreated"]),u(Vm,{open:B.value,"backup-name":te.value,upgrading:Z.value,skipping:Q.value,onSkip:Ta,onConfirm:Ma},null,8,["open","backup-name","upgrading","skipping"]),u(Dm,{open:a(N),"onUpdate:open":we[4]||(we[4]=Ce=>N.value=Ce),onConfigure:a(H),onViewConfig:a(le),onCreate:a(fe)},null,8,["open","onConfigure","onViewConfig","onCreate"]),u(_g,{open:a(ae),"onUpdate:open":we[5]||(we[5]=Ce=>ae.value=Ce),onConfigure:a(re),onCreate:a(ve)},null,8,["open","onConfigure","onCreate"]),u(Lg,{open:a(ue),"skill-id":a(he),"onUpdate:open":we[6]||(we[6]=Ce=>ue.value=Ce),onSaved:a(Me),onCreated:a($e)},null,8,["open","skill-id","onSaved","onCreated"])])}}}),wk=tt(cp,[["__scopeId","data-v-3b042ff8"]]),dp=ge({__name:"EChartCalendar",props:{data:{},height:{default:180},year:{}},setup(l){Mt([ha,va,Zt,ya,It]);const o=l,{t,locale:c}=ye(),r=$t(),m=f(null);let g=null;const d=x(()=>{if(o.year)return o.year;if(o.data.length===0)return new Date().getFullYear();const z=o.data.map($=>parseInt($.date.split("-")[0]));return Math.max(...z)}),p=x(()=>o.data.length===0?10:Math.max(...o.data.map(z=>z.value),1)),h=x(()=>o.data.map(z=>[z.date,z.value])),y={light:["#fee5e8","#fbb5c2","#f7758c","#ee4567"],dark:["#3d1f24","#6b2f3a","#a34557","#ee4567"]},T=x(()=>({tooltip:{trigger:"item",formatter:z=>{const $=z.data[0],I=z.data[1];return`${$}<br/>${t("views.message.calendarTooltipMessages")}: ${I}`}},visualMap:{min:0,max:p.value,calculable:!1,orient:"horizontal",left:"center",bottom:0,itemWidth:10,itemHeight:100,text:[`${p.value}`,"0"],inRange:{color:r.value?y.dark:y.light},textStyle:{color:r.value?"#9ca3af":"#6b7280",fontSize:10},show:!0},calendar:{top:30,left:40,cellSize:[13,13],range:String(d.value),itemStyle:{borderWidth:2,borderColor:r.value?"#1f2937":"#ffffff"},yearLabel:{show:!0,position:"top",color:r.value?"#9ca3af":"#6b7280",fontSize:12},monthLabel:{show:!0,color:r.value?"#9ca3af":"#6b7280",fontSize:10,nameMap:[t("common.month.jan"),t("common.month.feb"),t("common.month.mar"),t("common.month.apr"),t("common.month.may"),t("common.month.jun"),t("common.month.jul"),t("common.month.aug"),t("common.month.sep"),t("common.month.oct"),t("common.month.nov"),t("common.month.dec")]},dayLabel:{show:!0,firstDay:1,color:r.value?"#6b7280":"#9ca3af",fontSize:10,nameMap:[t("common.weekday.sun"),t("common.weekday.mon"),t("common.weekday.tue"),t("common.weekday.wed"),t("common.weekday.thu"),t("common.weekday.fri"),t("common.weekday.sat")]},splitLine:{show:!1}},series:[{type:"heatmap",coordinateSystem:"calendar",data:h.value}]}));function M(){m.value&&(g=Dt(m.value,r.value?"dark":void 0,{renderer:"canvas"}),g.setOption({backgroundColor:"transparent",...T.value}))}function C(){g&&g.setOption({backgroundColor:"transparent",...T.value},{notMerge:!0})}function L(){g?.resize()}return de([()=>o.data,r,c],()=>{C()}),de(()=>o.year,()=>{C()}),Ve(()=>{M(),window.addEventListener("resize",L)}),dt(()=>{window.removeEventListener("resize",L),g?.dispose()}),(z,$)=>(n(),i("div",{ref_key:"chartRef",ref:m,style:Ke({height:`${l.height}px`,width:"100%"})},null,4))}});function $k(l){const o=x(()=>ns(l)),t=x(()=>{const r=o.value;return r.length<2?!1:new Set(r.map(g=>Ie(g.date).year())).size>1}),c=x(()=>{const r=o.value,m=50;if(r.length<=m){const h=t.value?"YYYY/MM/DD":"MM/DD";return{labels:r.map(y=>Ie(y.date).format(h)),values:r.map(y=>y.messageCount)}}const g=Math.ceil(r.length/m),d=[],p=[];for(let h=0;h<r.length;h+=g){const y=r.slice(h,h+g);if(y.length===0)continue;const T=Math.floor(y.length/2),M=y[T].date,C=t.value?"YYYY/MM/DD":"MM/DD";d.push(Ie(M).format(C));const L=y.reduce(($,I)=>$+I.messageCount,0),z=Math.round(L/y.length);p.push(z)}return{labels:d,values:p}});return{isMultiYear:t,dailyChartData:c}}const up=86400;function _t(l){return typeof l=="number"&&Number.isFinite(l)}function mp(l){return _t(l?.startTs)&&_t(l?.endTs)}function xa(l,o){const t=o?.startTs??l?.start,c=o?.endTs??l?.end;return!_t(t)||!_t(c)||c<t?null:{start:t,end:c}}function gp(l){return!l||l.end<l.start?0:Math.max(Math.ceil((l.end-l.start)/up),1)}function pp(l){return l?[Ie.unix(l.start).format("YYYY-MM-DD"),Ie.unix(l.end).format("YYYY-MM-DD")]:null}function hp(l,o){const{t}=ye(),c=x(()=>xa(l.timeRange,l.timeFilter)),r=x(()=>mp(l.timeFilter)),m=x(()=>gp(c.value)),g=x(()=>r.value?l.filteredMessageCount:l.session.messageCount),d=x(()=>r.value?l.filteredMemberCount??l.session.memberCount:l.session.memberCount),p=x(()=>m.value),h=x(()=>p.value===0?0:Math.round(g.value/p.value)),y=x(()=>m.value===0?0:Math.round(g.value/m.value)),T=x(()=>l.messageTypes.find(j=>j.type===1)?.count||0),M=x(()=>l.hourlyActivity.length?l.hourlyActivity.reduce((A,j)=>j.messageCount>A.messageCount?j:A,l.hourlyActivity[0]):null),C=x(()=>o.value.length?o.value.reduce((A,j)=>j.messageCount>A.messageCount?j:A,o.value[0]):null),L=x(()=>[t("common.weekday.mon"),t("common.weekday.tue"),t("common.weekday.wed"),t("common.weekday.thu"),t("common.weekday.fri"),t("common.weekday.sat"),t("common.weekday.sun")]),z=x(()=>{if(!o.value.length)return{weekday:0,weekend:0};const A=o.value.filter(k=>k.weekday>=1&&k.weekday<=5).reduce((k,b)=>k+b.messageCount,0),j=o.value.filter(k=>k.weekday>=6&&k.weekday<=7).reduce((k,b)=>k+b.messageCount,0),U=A+j;return{weekday:U>0?Math.round(A/U*100):0,weekend:U>0?Math.round(j/U*100):0}}),$=x(()=>l.dailyActivity.length?l.dailyActivity.reduce((A,j)=>j.messageCount>A.messageCount?j:A,l.dailyActivity[0]):null),I=x(()=>l.dailyActivity.filter(A=>A.messageCount>0).length),w=x(()=>m.value),S=x(()=>w.value>0?Math.round(I.value/w.value*100):0),v=x(()=>{if(!l.hourlyActivity.length)return{count:0,ratio:0};const A=l.hourlyActivity.reduce((U,k)=>U+k.messageCount,0),j=l.hourlyActivity.filter(U=>U.hour>=0&&U.hour<=4).reduce((U,k)=>U+k.messageCount,0);return{count:j,ratio:A>0?Math.round(j/A*100):0}}),_=x(()=>{if(!l.dailyActivity.length)return 0;const A=[...l.dailyActivity].filter(k=>k.messageCount>0).sort((k,b)=>Ie(k.date).valueOf()-Ie(b.date).valueOf());if(A.length===0)return 0;let j=1,U=1;for(let k=1;k<A.length;k++){const b=Ie(A[k-1].date);Ie(A[k].date).diff(b,"day")===1?U++:(U>j&&(j=U),U=1)}return U>j&&(j=U),j});return{durationDays:m,displayMessageCount:g,displayMemberCount:d,dailyAvgMessages:y,totalDurationDays:p,totalDailyAvgMessages:h,imageCount:T,peakHour:M,peakWeekday:C,weekdayNames:L,weekdayVsWeekend:z,peakDay:$,activeDays:I,totalDays:w,activeRate:S,lateNightChat:v,maxConsecutiveDays:_}}const vp={key:0,class:"relative z-10 px-6 pb-6 pt-2 sm:px-8"},yp={class:"grid grid-cols-2 gap-3 lg:grid-cols-4"},fp={class:"min-w-0"},xp={class:"mt-0.5 truncate text-[10px] font-medium text-gray-500 dark:text-gray-400"},bp={class:"mt-0.5 truncate text-[9px] text-gray-400 dark:text-gray-500"},kp={key:1,class:"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4"},_p={class:"text-sm text-gray-500"},wp={class:"text-sm text-gray-500"},$p={class:"ml-1 font-semibold text-pink-500"},Cp={class:"text-sm text-gray-500"},Sp={class:"text-sm text-gray-500"},Tp={class:"text-sm text-gray-500"},Mp={class:"text-sm text-gray-500"},Ip={class:"text-sm text-gray-500"},Dp={class:"text-sm text-gray-500"},Lp=ge({__name:"OverviewStatCards",props:{dailyAvgMessages:{},durationDays:{},imageCount:{},peakHour:{},peakWeekday:{},weekdayNames:{},weekdayVsWeekend:{},peakDay:{},activeDays:{},totalDays:{},activeRate:{},lateNightCount:{},lateNightRatio:{},maxConsecutiveDays:{},flat:{type:Boolean,default:!1}},setup(l){const{t:o}=ye(),t=l,c=x(()=>[{icon:"i-heroicons-chat-bubble-left-right",label:o("analysis.overview.statCards.dailyAvgMessages"),value:o("analysis.overview.statCards.messagesCount",{count:t.dailyAvgMessages}),subtext:o("analysis.overview.statCards.daysCount",{count:t.durationDays}),colorClass:"text-blue-600 dark:text-blue-400"},{icon:"i-heroicons-photo",label:o("analysis.overview.statCards.imageMessages"),value:o("analysis.overview.statCards.imagesCount",{count:t.imageCount}),subtext:`${o("analysis.overview.statCards.peakHour")} ${t.peakHour?.hour||0}:00`,colorClass:"text-pink-600 dark:text-pink-400"},{icon:"i-heroicons-calendar-days",label:o("analysis.overview.statCards.mostActiveWeekday"),value:t.peakWeekday?t.weekdayNames[t.peakWeekday.weekday-1]:"-",subtext:o("analysis.overview.statCards.messagesOnDay",{count:t.peakWeekday?.messageCount??0}),colorClass:"text-amber-600 dark:text-amber-400"},{icon:"i-heroicons-sun",label:o("analysis.overview.statCards.weekendActivity"),value:`${t.weekdayVsWeekend.weekend}%`,subtext:o("analysis.overview.statCards.weekendRatio"),colorClass:"text-green-600 dark:text-green-400"},{icon:"i-heroicons-fire",label:o("analysis.overview.statCards.mostActiveDate"),value:t.peakDay?Ie(t.peakDay.date).format("MM/DD"):"-",subtext:o("analysis.overview.statCards.messagesOnDay",{count:t.peakDay?.messageCount??0}),colorClass:"text-red-600 dark:text-red-400"},{icon:"i-heroicons-moon",label:o("analysis.overview.statCards.lateNightChat"),value:o("analysis.overview.statCards.messagesCount",{count:t.lateNightCount}),subtext:o("analysis.overview.statCards.lateNightRatio",{ratio:t.lateNightRatio}),colorClass:"text-indigo-600 dark:text-indigo-400"},{icon:"i-heroicons-bolt",label:o("analysis.overview.statCards.consecutiveStreak"),value:o("analysis.overview.statCards.daysStreak",{count:t.maxConsecutiveDays}),subtext:o("analysis.overview.statCards.longestStreak"),colorClass:"text-amber-600 dark:text-amber-400"},{icon:"i-heroicons-chart-bar",label:o("analysis.overview.statCards.activityRate"),value:`${t.activeRate}%`,subtext:o("analysis.overview.statCards.activeDaysRatio"),colorClass:"text-gray-900 dark:text-white"}]);return(r,m)=>{const g=_e;return l.flat?(n(),i("div",vp,[m[0]||(m[0]=e("div",{class:"mb-3 flex items-center justify-between"},[e("span",{class:"text-[10px] font-bold uppercase tracking-widest text-gray-400 dark:text-gray-500"},"Key Metrics")],-1)),e("div",yp,[(n(!0),i(oe,null,ce(c.value,d=>(n(),i("div",{key:d.icon+d.label,class:"flex min-w-0 items-start gap-2 px-2.5 py-2"},[u(g,{name:d.icon,class:se(["mt-0.5 h-3.5 w-3.5 shrink-0",d.colorClass])},null,8,["name","class"]),e("div",fp,[e("div",{class:se(["truncate font-mono text-sm font-black leading-tight tabular-nums",d.colorClass])},s(d.value),3),e("div",xp,s(d.label),1),e("div",bp,s(d.subtext),1)])]))),128))])])):(n(),i("div",kp,[u(a(Xe),{label:a(o)("analysis.overview.statCards.dailyAvgMessages"),value:a(o)("analysis.overview.statCards.messagesCount",{count:l.dailyAvgMessages}),icon:"i-heroicons-chat-bubble-left-right","icon-bg":"blue"},{subtext:F(()=>[e("span",_p,s(a(o)("analysis.overview.statCards.daysCount",{count:l.durationDays})),1)]),_:1},8,["label","value"]),u(a(Xe),{label:a(o)("analysis.overview.statCards.imageMessages"),value:a(o)("analysis.overview.statCards.imagesCount",{count:l.imageCount}),icon:"i-heroicons-photo","icon-bg":"pink"},{subtext:F(()=>[e("span",wp,s(a(o)("analysis.overview.statCards.peakHour")),1),e("span",$p,s(l.peakHour?.hour||0)+":00",1)]),_:1},8,["label","value"]),u(a(Xe),{label:a(o)("analysis.overview.statCards.mostActiveWeekday"),value:l.peakWeekday?l.weekdayNames[l.peakWeekday.weekday-1]:"-",icon:"i-heroicons-calendar-days","icon-bg":"amber"},{subtext:F(()=>[e("span",Cp,s(a(o)("analysis.overview.statCards.messagesOnDay",{count:l.peakWeekday?.messageCount??0})),1)]),_:1},8,["label","value"]),u(a(Xe),{label:a(o)("analysis.overview.statCards.weekendActivity"),value:`${l.weekdayVsWeekend.weekend}%`,icon:"i-heroicons-sun","icon-bg":"green"},{subtext:F(()=>[e("span",Sp,s(a(o)("analysis.overview.statCards.weekendRatio")),1)]),_:1},8,["label","value"]),u(a(Xe),{label:a(o)("analysis.overview.statCards.mostActiveDate"),value:l.peakDay?a(Ie)(l.peakDay.date).format("MM/DD"):"-",icon:"i-heroicons-fire","icon-bg":"red"},{subtext:F(()=>[e("span",Tp,s(a(o)("analysis.overview.statCards.messagesOnDay",{count:l.peakDay?.messageCount??0})),1)]),_:1},8,["label","value"]),u(a(Xe),{label:a(o)("analysis.overview.statCards.lateNightChat"),value:a(o)("analysis.overview.statCards.messagesCount",{count:l.lateNightCount}),icon:"i-heroicons-moon","icon-bg":"blue"},{subtext:F(()=>[e("span",Mp,s(a(o)("analysis.overview.statCards.lateNightRatio",{ratio:l.lateNightRatio})),1)]),_:1},8,["label","value"]),u(a(Xe),{label:a(o)("analysis.overview.statCards.consecutiveStreak"),value:a(o)("analysis.overview.statCards.daysStreak",{count:l.maxConsecutiveDays}),icon:"i-heroicons-bolt","icon-bg":"amber"},{subtext:F(()=>[e("span",Ip,s(a(o)("analysis.overview.statCards.longestStreak")),1)]),_:1},8,["label","value"]),u(a(Xe),{label:a(o)("analysis.overview.statCards.activityRate"),value:`${l.activeRate}%`,icon:"i-heroicons-chart-bar","icon-bg":"gray"},{subtext:F(()=>[e("span",Dp,s(a(o)("analysis.overview.statCards.activeDaysRatio")),1)]),_:1},8,["label","value"])]))}}}),Ap={class:"relative z-10 px-6 pt-8 pb-4 sm:px-8"},zp={class:"text-3xl font-bold tracking-tight text-gray-900 dark:text-gray-100"},qp={class:"mt-4 flex items-start gap-6 sm:gap-24"},Rp={class:"min-w-0 flex flex-col gap-2 text-sm font-medium text-gray-500 dark:text-gray-400"},Ep={class:"flex items-center gap-2"},jp={class:"flex h-6 w-6 shrink-0 items-center justify-center"},Pp={class:"whitespace-nowrap"},Up={key:0,class:"flex items-center gap-2"},Bp={class:"flex h-6 w-6 shrink-0 items-center justify-center"},Fp={class:"font-mono text-xs opacity-90 whitespace-nowrap"},Vp={class:"flex shrink-0 gap-6"},Np={class:"flex flex-col gap-1 text-center"},Hp={class:"text-2xl font-black font-mono tracking-tight text-gray-900 dark:text-white"},Op={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},Wp={class:"flex flex-col gap-1 text-center"},Yp={class:"text-2xl font-black font-mono tracking-tight text-gray-900 dark:text-white"},Qp={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},Kp={class:"flex flex-col gap-1 text-center"},Gp={class:"text-2xl font-black font-mono tracking-tight text-gray-900 dark:text-white"},Jp={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},Xp={class:"flex flex-col gap-1 text-center"},Zp={class:"text-2xl font-black font-mono tracking-tight text-gray-900 dark:text-white"},eh={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},th={class:"relative z-10 px-6 pb-2 sm:px-8"},ah={class:"overflow-x-auto overflow-y-hidden scrollbar-hide py-1"},Ck=ge({__name:"OverviewIdentityCard",props:{session:{},dailyActivity:{},messageTypes:{},hourlyActivity:{},timeRange:{},filteredMessageCount:{},filteredMemberCount:{},timeFilter:{}},setup(l){Mt([ha,ps,va,Zt,ya,It]);const{t:o,locale:t}=ye(),c=$t(),r=l,m=f([]);async function g(){if(r.session.id)try{m.value=await Oe().getWeekdayActivity(r.session.id,r.timeFilter)}catch(N){console.error("加载星期活跃度失败:",N)}}de(()=>[r.session.id,r.timeFilter],()=>g(),{immediate:!0,deep:!0});const{durationDays:d,displayMessageCount:p,dailyAvgMessages:h,imageCount:y,peakHour:T,peakWeekday:M,weekdayNames:C,weekdayVsWeekend:L,peakDay:z,activeDays:$,totalDays:I,activeRate:w,lateNightChat:S,maxConsecutiveDays:v}=hp(r,m),_=f(null);let A=null;const j=x(()=>xa(r.timeRange,r.timeFilter)),U=x(()=>j.value?gs(j.value.start,j.value.end,"YYYY/MM/DD"):""),k=x(()=>{const N=pp(j.value);if(N)return N;const he=(G=>G.toISOString().slice(0,10))(new Date);return[he,he]}),b=x(()=>{const[N,ae]=k.value,ue=new Date(N+"T00:00:00Z"),he=new Date(ae+"T00:00:00Z"),G=new Map;r.dailyActivity.filter(le=>le.date>=N&&le.date<=ae).forEach(le=>G.set(le.date,le.messageCount));const O=[],H=new Date(ue);for(;H<=he;){const le=H.toISOString().slice(0,10),fe=G.get(le)||0;O.push({value:[le,fe],itemStyle:fe===0?{color:W.value}:void 0}),H.setUTCDate(H.getUTCDate()+1)}return O}),q=x(()=>r.dailyActivity.length===0?10:Math.max(...r.dailyActivity.map(N=>N.messageCount),1)),Y={light:["#fce4ec","#f8a4b8","#f06292","#e91e63"],dark:["rgba(238, 69, 103, 0.15)","rgba(238, 69, 103, 0.45)","rgba(238, 69, 103, 0.75)","rgba(238, 69, 103, 1)"]},W=x(()=>c.value?"rgba(255, 255, 255, 0.04)":"#ebedf0"),J=x(()=>({tooltip:{trigger:"item",formatter:N=>{const ae=N.value[0],ue=N.value[1];return`${ae}<br/>${o("views.message.calendarTooltipMessages")}: ${ue}`}},visualMap:{min:1,max:q.value,calculable:!1,orient:"horizontal",left:"center",bottom:0,itemWidth:10,itemHeight:80,text:[`${q.value}`,"1"],inRange:{color:c.value?Y.dark:Y.light},textStyle:{color:c.value?"#8b949e":"#6b7280",fontSize:10},show:!0},calendar:{top:20,left:30,cellSize:[13,13],range:k.value,itemStyle:{borderWidth:0,color:"transparent"},yearLabel:{show:!1},monthLabel:{show:!0,color:c.value?"#8b949e":"#6b7280",fontSize:10,nameMap:[o("common.month.jan"),o("common.month.feb"),o("common.month.mar"),o("common.month.apr"),o("common.month.may"),o("common.month.jun"),o("common.month.jul"),o("common.month.aug"),o("common.month.sep"),o("common.month.oct"),o("common.month.nov"),o("common.month.dec")]},dayLabel:{show:!0,firstDay:1,color:c.value?"#8b949e":"#9ca3af",fontSize:10,nameMap:[o("common.weekday.sun"),o("common.weekday.mon"),o("common.weekday.tue"),o("common.weekday.wed"),o("common.weekday.thu"),o("common.weekday.fri"),o("common.weekday.sat")]},splitLine:{show:!1}},series:[{type:"custom",coordinateSystem:"calendar",data:b.value,renderItem:(N,ae)=>{const ue=ae.coord(ae.value(0)),he=N.coordSys.cellWidth,G=N.coordSys.cellHeight,O=Math.min(he,G)-3;return{type:"rect",shape:{x:ue[0]-O/2,y:ue[1]-O/2,width:O,height:O,r:3},style:{fill:ae.visual("color")}}},itemStyle:{borderColor:c.value?"transparent":"rgba(0,0,0,0.02)",borderWidth:1}}]}));function me(){_.value&&(A=Dt(_.value,void 0,{renderer:"canvas"}),A.setOption({backgroundColor:"transparent",...J.value}))}function pe(){A&&A.setOption({backgroundColor:"transparent",...J.value},{notMerge:!0})}function X(){A?.resize()}return de([()=>r.dailyActivity,t,k],()=>pe()),de(c,()=>{A?.dispose(),me()}),Ve(()=>{me(),window.addEventListener("resize",X)}),dt(()=>{window.removeEventListener("resize",X),A?.dispose()}),(N,ae)=>{const ue=_e;return n(),K(a(Lt),null,{default:F(()=>[e("div",Ap,[e("h2",zp,s(l.session.name),1),e("div",qp,[e("div",Rp,[e("div",Ep,[e("div",jp,[l.session.type==="group"?(n(),K(ue,{key:0,name:"i-heroicons-user-group",class:"h-4 w-4 opacity-70"})):(n(),K(ue,{key:1,name:"i-heroicons-user",class:"h-4 w-4 opacity-70"}))]),e("span",Pp,s(l.session.platform.toUpperCase())+" · "+s(l.session.type==="private"?a(o)("analysis.overview.identity.privateChat"):a(o)("analysis.overview.identity.groupChat")),1)]),U.value?(n(),i("div",Up,[e("div",Bp,[u(ue,{name:"i-heroicons-calendar",class:"h-4 w-4 opacity-70"})]),e("span",Fp,s(U.value),1)])):E("",!0)]),e("div",Vp,[e("div",Np,[e("span",Hp,s(a(p).toLocaleString()),1),e("span",Op,s(a(o)("analysis.overview.identity.totalMessages")),1)]),e("div",Wp,[e("span",Yp,s(a(d).toLocaleString()),1),e("span",Qp,s(a(o)("analysis.overview.identity.durationDays")),1)]),e("div",Kp,[e("span",Gp,s(a($).toLocaleString()),1),e("span",Jp,s(a(o)("analysis.overview.identity.activeDays")),1)]),e("div",Xp,[e("span",Zp,s(a(h).toLocaleString()),1),e("span",eh,s(a(o)("analysis.overview.identity.dailyAvgMessages")),1)])])])]),e("div",th,[ae[0]||(ae[0]=e("div",{class:"mb-2 flex items-center justify-between"},[e("span",{class:"text-[10px] font-bold uppercase tracking-widest text-gray-400 dark:text-gray-500"}," Activity Heatmap ")],-1)),e("div",ah,[e("div",{ref_key:"chartRef",ref:_,class:"h-[140px] min-w-[700px] lg:w-full"},null,512)])]),u(Lp,{flat:"","daily-avg-messages":a(h),"duration-days":a(d),"image-count":a(y),"peak-hour":a(T),"peak-weekday":a(M),"weekday-names":a(C),"weekday-vs-weekend":a(L),"peak-day":a(z),"active-days":a($),"total-days":a(I),"active-rate":a(w),"late-night-count":a(S).count,"late-night-ratio":a(S).ratio,"max-consecutive-days":a(v)},null,8,["daily-avg-messages","duration-days","image-count","peak-hour","peak-weekday","weekday-names","weekday-vs-weekend","peak-day","active-days","total-days","active-rate","late-night-count","late-night-ratio","max-consecutive-days"])]),_:1})}}}),sh={class:"p-5"},Sk=ge({__name:"DailyTrendCard",props:{dailyActivity:{},dailyChartData:{}},setup(l){const{t:o}=ye();return(t,c)=>l.dailyActivity.length>0?(n(),K(a(Ye),{key:0,title:a(o)("analysis.overview.dailyTrend.title"),"show-divider":!1},{default:F(()=>[e("div",sh,[u(a(Ht),{data:l.dailyChartData,height:288},null,8,["data"])])]),_:1},8,["title"])):E("",!0)}}),Et="__ALL__",nh=ge({__name:"UserSelect",props:{sessionId:{},modelValue:{}},emits:["update:modelValue"],setup(l,{emit:o}){const{t}=ye(),c=l,r=o,m=f([]),g=f(!1),d=x({get:()=>c.modelValue===null?Et:String(c.modelValue),set:y=>{r("update:modelValue",y===Et?null:parseInt(y))}}),p=x(()=>{const y=[{value:Et,label:t("common.userSelect.allMembers")}];return m.value.forEach(T=>{const M=T.groupNickname||T.accountName||T.platformId;y.push({value:String(T.id),label:`${M} (${T.messageCount})`})}),y});async function h(){if(c.sessionId){g.value=!0;try{const y=await Oe().getMembers(c.sessionId);m.value=y.sort((T,M)=>M.messageCount-T.messageCount)}catch(y){console.error("加载成员列表失败:",y)}finally{g.value=!1}}}return de(()=>c.sessionId,()=>{r("update:modelValue",null),h()},{immediate:!0}),(y,T)=>{const M=Jt;return n(),K(M,{modelValue:d.value,"onUpdate:modelValue":T[0]||(T[0]=C=>d.value=C),items:p.value,loading:g.value,virtualize:{estimateSize:32,overscan:10},"value-key":"value",class:"w-48"},null,8,["modelValue","items","loading"])}}}),oh={class:"relative z-10 px-6 pt-8 pb-4 sm:px-8"},rh={class:"flex items-center gap-6 sm:gap-10"},lh={class:"min-w-0 flex-1"},ih={class:"flex flex-col text-[15px] leading-relaxed text-gray-600 dark:text-gray-300"},ch={key:0,class:"mb-2 text-sm font-medium tracking-wide text-gray-500 dark:text-gray-400"},dh={class:"mb-4 flex min-w-0 flex-wrap items-baseline gap-2"},uh={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},mh={class:"font-black text-5xl tracking-tight text-gray-900 dark:text-white"},gh={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},ph={key:1,class:"flex min-w-0 max-w-full flex-wrap items-center gap-x-1.5 gap-y-1.5"},hh={class:"text-base font-medium text-gray-600 dark:text-gray-300"},vh={class:"font-bold tabular-nums text-pink-500 dark:text-pink-400"},yh={class:"flex shrink-0 flex-col items-center"},fh={class:"mb-1 text-[10px] font-bold text-gray-500 dark:text-gray-400"},xh={class:"relative z-10 px-6 pb-6 pt-4 sm:px-8"},bh={class:"grid grid-cols-2 gap-3 lg:grid-cols-4"},kh={class:"min-w-0 flex-1"},_h={class:"flex items-center justify-between gap-1"},wh={class:"mt-0.5 truncate text-[10px] font-medium text-gray-500 dark:text-gray-400"},$h={class:"mt-0.5 truncate text-[9px] text-gray-400 dark:text-gray-500"},Ch={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"},Sh={class:"flex items-center gap-1.5"},Th={class:"text-[9px] font-medium uppercase tracking-widest"},Mh=ge({__name:"TypeProfileCard",props:{sessionId:{},messageTypes:{},textStats:{},timeFilter:{}},setup(l){Mt([hs,Zt,It]);const{t:o}=ye(),t=$t(),c=l,r=x(()=>c.messageTypes.reduce((b,q)=>b+q.count,0)),m=x(()=>c.messageTypes.find(b=>b.type===st.TEXT)?.count??0),g=x(()=>{if(r.value===0)return 0;const b=r.value-m.value;return Math.round(b/r.value*100)}),d=x(()=>c.textStats.textCount===0?0:Math.round(c.textStats.shortCount/c.textStats.textCount*100)),p=f({first:"",last:""});async function h(){if(c.sessionId)try{const b=await Oe().getDailyActivity(c.sessionId,c.timeFilter);if(b.length>0){const q=[...b].sort((Y,W)=>Y.date.localeCompare(W.date));p.value={first:Ie(q[0].date).format("YYYY/MM/DD"),last:Ie(q[q.length-1].date).format("YYYY/MM/DD")}}}catch{}}function y(b){return c.messageTypes.find(q=>q.type===b)?.count??0}const T=x(()=>[{label:o("views.message.typeCard.nonTextImage"),count:y(st.IMAGE),unit:o("views.message.typeCard.unitImage")},{label:o("views.message.typeCard.nonTextEmoji"),count:y(st.EMOJI),unit:o("views.message.typeCard.unitEmoji")},{label:o("views.message.typeCard.nonTextVoice"),count:y(st.VOICE),unit:o("views.message.typeCard.unitVoice")},{label:o("views.message.typeCard.nonTextVideo"),count:y(st.VIDEO),unit:o("views.message.typeCard.unitVideo")},{label:o("views.message.typeCard.nonTextFile"),count:y(st.FILE),unit:o("views.message.typeCard.unitFile")},{label:o("views.message.typeCard.nonTextLink"),count:y(st.LINK),unit:o("views.message.typeCard.unitLink")}].filter(b=>b.count>0)),M=f(30),C=f(0),L=f(!1),z=[{label:"20",value:20},{label:"30",value:30},{label:"50",value:50},{label:"80",value:80},{label:"100",value:100}],$=x({get:()=>M.value,set:b=>{M.value!==b&&(M.value=b,I())}});async function I(){if(c.sessionId){L.value=!0;try{C.value=await Oe().getLongMessageCount(c.sessionId,c.timeFilter,M.value)}catch(b){console.error("[chart-message] Failed to load essay count:",b)}finally{L.value=!1}}}de(()=>[c.sessionId,c.timeFilter],()=>{I(),h()},{immediate:!0,deep:!0});const w=x(()=>[{icon:"i-heroicons-pencil-square",label:o("views.message.profile.textExpression"),value:o("views.message.profile.avgLengthUnit",{count:c.textStats.avgLength||0}),subtext:c.textStats.maxLength>0?o("views.message.profile.textExpressionDesc",{count:c.textStats.maxLength}):"",colorClass:"text-violet-600 dark:text-violet-400"},{icon:"i-heroicons-chat-bubble-bottom-center-text",label:o("views.message.profile.shortMaster"),value:`${d.value}%`,subtext:o("views.message.profile.shortMasterDesc",{count:c.textStats.shortCount}),colorClass:"text-emerald-600 dark:text-emerald-400"},{icon:"i-heroicons-document-text",label:o("views.message.profile.essayLover"),value:C.value.toLocaleString(),subtext:o("views.message.profile.essayLoverDesc",{threshold:M.value}),colorClass:"text-indigo-600 dark:text-indigo-400",slot:"essay-threshold"},{icon:"i-heroicons-photo",label:o("views.message.profile.mediaRichness"),value:`${g.value}%`,subtext:T.value.slice(0,3).map(b=>`${b.label} ${b.count}`).join(" · ")||"-",colorClass:"text-pink-600 dark:text-pink-400"}]),S=f(null);let v=null;const _=["#6366f1","#ec4899","#f97316","#22c55e","#06b6d4","#8b5cf6","#f43f5e","#eab308","#14b8a6","#3b82f6"],A=x(()=>[...c.messageTypes].sort((q,Y)=>Y.count-q.count).slice(0,8).map((q,Y)=>({name:Ut(q.type,o),value:q.count,itemStyle:{color:_[Y%_.length]}})));function j(){S.value&&(v=Dt(S.value,void 0,{renderer:"canvas"}),U())}function U(){v&&v.setOption({backgroundColor:"transparent",tooltip:{trigger:"item",formatter:"{b}: {c} ({d}%)"},series:[{type:"pie",radius:["50%","78%"],center:["50%","50%"],avoidLabelOverlap:!1,padAngle:2,itemStyle:{borderRadius:4},label:{show:!1},emphasis:{label:{show:!1},scaleSize:4},data:A.value}]},{notMerge:!0})}function k(){v?.resize()}return de(()=>c.messageTypes,()=>U()),de(t,()=>{v?.dispose(),j()}),Ve(()=>{j(),window.addEventListener("resize",k)}),dt(()=>{window.removeEventListener("resize",k),v?.dispose()}),(b,q)=>{const Y=_e,W=Gt;return n(),K(a(Lt),null,{default:F(()=>[e("div",oh,[e("div",rh,[e("div",lh,[e("div",ih,[p.value.first?(n(),i("p",ch,s(p.value.first)+" – "+s(p.value.last),1)):E("",!0),e("div",dh,[e("span",uh,s(a(o)("views.message.profile.heroLine1Prefix")),1),e("span",mh,s(r.value.toLocaleString()),1),e("span",gh,s(a(o)("views.message.profile.heroLine1Suffix")),1)]),T.value.length>0?(n(),i("div",ph,[e("span",hh,s(a(o)("views.message.typeCard.nonTextPrefix")),1),(n(!0),i(oe,null,ce(T.value,J=>(n(),i("span",{key:J.label,class:"inline-flex items-center gap-1 rounded-full bg-gray-100 px-2.5 py-0.5 text-xs font-semibold text-gray-700 dark:bg-white/10 dark:text-gray-200"},[e("span",vh,s(J.count.toLocaleString()),1),e("span",null,s(J.unit),1)]))),128))])):E("",!0)])]),e("div",yh,[e("div",fh,s(a(o)("views.message.profile.typeDistribution")),1),e("div",{ref_key:"donutRef",ref:S,style:{width:"130px",height:"130px"}},null,512)])])]),e("div",xh,[q[1]||(q[1]=e("div",{class:"mb-3 flex items-center justify-between"},[e("span",{class:"text-[10px] font-bold uppercase tracking-widest text-gray-400 dark:text-gray-500"}," Type Profile ")],-1)),e("div",bh,[(n(!0),i(oe,null,ce(w.value,J=>(n(),i("div",{key:J.icon+J.label,class:"flex min-w-0 items-start gap-2 px-2.5 py-2"},[u(Y,{name:J.icon,class:se(["mt-0.5 h-3.5 w-3.5 shrink-0",J.colorClass])},null,8,["name","class"]),e("div",kh,[e("div",_h,[e("div",{class:se(["truncate font-mono text-sm font-black leading-tight tabular-nums",J.colorClass])},s(J.value),3),J.slot==="essay-threshold"?(n(),K(W,{key:0,modelValue:$.value,"onUpdate:modelValue":q[0]||(q[0]=me=>$.value=me),items:z,"value-key":"value",size:"xs",class:"relative z-120 w-16 shrink-0",ui:{content:"z-[121]"},disabled:L.value},null,8,["modelValue","disabled"])):E("",!0)]),e("div",wh,s(J.label),1),e("div",$h,s(J.subtext),1)])]))),128))])]),e("div",Ch,[e("div",Sh,[u(Y,{name:"i-heroicons-chat-bubble-left-right-solid",class:"h-3.5 w-3.5"}),q[2]||(q[2]=e("span",{class:"text-[10px] font-bold uppercase tracking-wider"},"ChatLab",-1))]),e("span",Th,s(a(o)("views.message.typeCard.watermark")),1)])]),_:1})}}}),Ih={key:1,class:"main-content mx-auto max-w-[920px] space-y-6 p-6"},Dh={class:"p-5"},Lh={key:0,class:"grid grid-cols-1 gap-6 lg:grid-cols-2 lg:items-center"},Ah={class:"space-y-3"},zh={class:"min-w-20 shrink-0 text-sm text-gray-700 dark:text-gray-300"},qh={class:"flex-1"},Rh={class:"h-2 overflow-hidden rounded-full bg-gray-100 dark:bg-gray-800"},Eh={class:"shrink-0 text-right"},jh={class:"text-sm font-medium text-gray-900 dark:text-white"},Ph={class:"ml-1 text-xs text-gray-400"},Uh={key:1,class:"flex h-48 items-center justify-center text-gray-400"},Bh={class:"p-5"},Fh={class:"mb-5 grid grid-cols-2 gap-3 sm:grid-cols-4"},Vh={class:"p-3"},Nh={class:"font-mono text-xl font-bold text-gray-900 dark:text-white"},Hh={class:"mt-1 text-xs text-gray-500"},Oh={class:"p-3"},Wh={class:"font-mono text-xl font-bold text-indigo-600 dark:text-indigo-400"},Yh={class:"mt-1 text-xs text-gray-500"},Qh={class:"p-3"},Kh={class:"font-mono text-xl font-bold text-pink-600 dark:text-pink-400"},Gh={class:"mt-1 text-xs text-gray-500"},Jh={class:"p-3"},Xh={class:"font-mono text-xl font-bold text-emerald-600 dark:text-emerald-400"},Zh={class:"mt-1 text-xs text-gray-500"},ev={class:"mb-5 rounded-lg border border-gray-200 p-4 dark:border-gray-700"},tv={class:"mb-2 text-xs font-medium text-gray-500 dark:text-gray-400"},av={class:"flex items-center gap-4 text-sm"},sv={class:"flex items-center gap-1.5"},nv={class:"font-mono font-medium text-gray-900 dark:text-white"},ov={class:"flex items-center gap-1.5"},rv={class:"font-mono font-medium text-gray-900 dark:text-white"},lv={class:"flex items-center gap-1.5"},iv={class:"font-mono font-medium text-gray-900 dark:text-white"},cv={class:"flex items-center gap-1.5"},dv={class:"font-mono font-medium text-gray-900 dark:text-white"},uv={class:"mt-3 grid grid-cols-3 gap-3 text-xs"},mv={class:"text-gray-500"},gv={class:"ml-1 font-medium text-emerald-600 dark:text-emerald-400"},pv={class:"text-gray-400"},hv={class:"text-gray-500"},vv={class:"ml-1 font-medium text-indigo-600 dark:text-indigo-400"},yv={class:"grid grid-cols-1 gap-6 lg:grid-cols-2"},fv={class:"text-xs text-gray-400"},xv={class:"p-5"},bv={key:1,class:"flex h-48 items-center justify-center text-gray-400"},kv={class:"text-xs text-gray-400"},_v={class:"p-5"},wv={key:1,class:"flex h-48 items-center justify-center text-gray-400"},Tk=ge({__name:"TypeAnalysisView",props:{sessionId:{},sessionName:{},timeFilter:{}},setup(l){const o=l,{t}=ye(),c=f(!0),r=f([]),m=f([]),g=f([]),d=f({textCount:0,avgLength:0,maxLength:0,shortCount:0}),p=f({p25:0,p50:0,p75:0,p90:0}),h=f(0),y=x(()=>{const w=[...r.value].sort((S,v)=>v.count-S.count);return{labels:w.map(S=>Ut(S.type,t)),values:w.map(S=>S.count)}}),T=x(()=>{const w=r.value.reduce((v,_)=>v+_.count,0);return[...r.value].sort((v,_)=>_.count-v.count).map(v=>({name:Ut(v.type,t),count:v.count,percentage:w>0?Math.round(v.count/w*100):0}))}),M=["#6366f1","#8b5cf6","#ec4899","#f43f5e","#f97316","#eab308","#22c55e","#14b8a6","#06b6d4","#3b82f6"];function C(w){return M[w%M.length]}const L=x(()=>({labels:m.value.map(w=>String(w.len)),values:m.value.map(w=>w.count)})),z=x(()=>({labels:g.value.map(w=>w.range),values:g.value.map(w=>w.count)})),$=x(()=>d.value.textCount===0?0:Math.round(d.value.shortCount/d.value.textCount*100));async function I(){if(o.sessionId){c.value=!0;try{const w=Oe(),[S,v,_,A,j]=await Promise.all([w.getMessageTypeDistribution(o.sessionId,o.timeFilter),w.getMessageLengthDistribution(o.sessionId,o.timeFilter),w.getTextStats(o.sessionId,o.timeFilter),w.getTextLengthPercentiles(o.sessionId,o.timeFilter),w.getLongMessageCount(o.sessionId,o.timeFilter,30)]);r.value=S,m.value=v.detail,g.value=v.grouped,d.value=_,p.value=A,h.value=j}catch(w){console.error("[chart-message] Failed to load type analysis data:",w)}finally{c.value=!1}}}return de(()=>[o.sessionId,o.timeFilter],()=>I(),{immediate:!0,deep:!0}),(w,S)=>(n(),i("div",{class:se(c.value?"h-full":"")},[c.value?(n(),K(a(kt),{key:0,variant:"page",text:a(t)("common.loading")},null,8,["text"])):(n(),i("div",Ih,[r.value.length>0?(n(),K(Mh,{key:0,"session-id":l.sessionId,"message-types":r.value,"text-stats":d.value,"time-filter":l.timeFilter},null,8,["session-id","message-types","text-stats","time-filter"])):E("",!0),u(a(Ye),{title:a(t)("views.message.typeDistribution"),"show-divider":!1},{default:F(()=>[e("div",Dh,[y.value.values.length>0?(n(),i("div",Lh,[e("div",null,[u(a(Ot),{data:y.value,height:280,"show-legend":!1},null,8,["data"])]),e("div",null,[e("div",Ah,[(n(!0),i(oe,null,ce(T.value,(v,_)=>(n(),i("div",{key:_,class:"flex items-center gap-3"},[e("div",{class:"h-3 w-3 shrink-0 rounded-full",style:Ke({backgroundColor:C(_)})},null,4),e("div",zh,s(v.name),1),e("div",qh,[e("div",Rh,[e("div",{class:"h-full rounded-full transition-all",style:Ke({width:`${v.percentage}%`,backgroundColor:C(_)})},null,4)])]),e("div",Eh,[e("span",jh,s(v.count.toLocaleString()),1),e("span",Ph,"("+s(v.percentage)+"%)",1)])]))),128))])])])):(n(),i("div",Uh,s(a(t)("views.message.noData")),1))])]),_:1},8,["title"]),u(a(Ye),{title:a(t)("views.message.typeAnalysis.textDepthTitle"),"show-divider":!1},{default:F(()=>[e("div",Bh,[e("div",Fh,[e("div",Vh,[e("div",Nh,s(d.value.textCount.toLocaleString()),1),e("div",Hh,s(a(t)("views.message.typeAnalysis.textTotal")),1)]),e("div",Oh,[e("div",Wh,s(d.value.avgLength||0),1),e("div",Yh,s(a(t)("views.message.typeAnalysis.avgLength")),1)]),e("div",Qh,[e("div",Kh,s(p.value.p50),1),e("div",Gh,s(a(t)("views.message.typeAnalysis.medianLength")),1)]),e("div",Jh,[e("div",Xh,s(d.value.maxLength),1),e("div",Zh,s(a(t)("views.message.typeAnalysis.maxLength")),1)])]),e("div",ev,[e("div",tv,s(a(t)("views.message.typeAnalysis.percentiles")),1),e("div",av,[e("div",sv,[S[0]||(S[0]=e("span",{class:"text-gray-500"},"P25",-1)),e("span",nv,s(p.value.p25),1)]),e("div",ov,[S[1]||(S[1]=e("span",{class:"text-gray-500"},"P50",-1)),e("span",rv,s(p.value.p50),1)]),e("div",lv,[S[2]||(S[2]=e("span",{class:"text-gray-500"},"P75",-1)),e("span",iv,s(p.value.p75),1)]),e("div",cv,[S[3]||(S[3]=e("span",{class:"text-gray-500"},"P90",-1)),e("span",dv,s(p.value.p90),1)])]),e("div",uv,[e("div",null,[e("span",mv,s(a(t)("views.message.typeAnalysis.shortMessages")),1),e("span",gv,s($.value)+"%",1),e("span",pv,"("+s(d.value.shortCount)+")",1)]),e("div",null,[e("span",hv,s(a(t)("views.message.typeAnalysis.essayMessages")),1),e("span",vv,s(h.value),1)])])])])]),_:1},8,["title"]),e("div",yv,[u(a(Ye),{title:a(t)("views.message.lengthDetailTitle"),"show-divider":!1},{headerRight:F(()=>[e("span",fv,s(a(t)("views.message.lengthDetailHint")),1)]),default:F(()=>[e("div",xv,[L.value.values.some(v=>v>0)?(n(),K(a(Ze),{key:0,data:L.value,height:200},null,8,["data"])):(n(),i("div",bv,s(a(t)("views.message.noTextMessages")),1))])]),_:1},8,["title"]),u(a(Ye),{title:a(t)("views.message.lengthGroupedTitle"),"show-divider":!1},{headerRight:F(()=>[e("span",kv,s(a(t)("views.message.lengthGroupedHint")),1)]),default:F(()=>[e("div",_v,[z.value.values.some(v=>v>0)?(n(),K(a(Ze),{key:0,data:z.value,height:200},null,8,["data"])):(n(),i("div",wv,s(a(t)("views.message.noTextMessages")),1))])]),_:1},8,["title"])])]))],2))}}),$v={class:"relative z-10 px-6 pt-8 pb-4 sm:px-8"},Cv={class:"flex items-start gap-6 sm:gap-10"},Sv={class:"min-w-0 flex-1"},Tv={class:"flex flex-col text-[15px] leading-relaxed text-gray-600 dark:text-gray-300"},Mv={key:0,class:"mb-2 text-sm font-medium tracking-wide text-gray-500 dark:text-gray-400"},Iv={class:"mb-3 flex items-baseline gap-2"},Dv={class:"font-black text-5xl tracking-tight text-gray-900 dark:text-white"},Lv={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},Av={class:"font-bold text-3xl text-indigo-500 dark:text-indigo-400"},zv={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},qv={class:"flex items-baseline flex-wrap gap-x-1.5 gap-y-1"},Rv={class:"text-base font-medium text-gray-600 dark:text-gray-300"},Ev={class:"font-bold text-xl text-pink-500 dark:text-pink-400"},jv={class:"text-base font-medium text-gray-600 dark:text-gray-300"},Pv={class:"text-base font-medium text-amber-600 dark:text-amber-400"},Uv={class:"flex shrink-0 flex-col items-center"},Bv={class:"mb-1 text-[10px] font-bold text-gray-500 dark:text-gray-400"},Fv={class:"relative z-10 px-6 pb-6 pt-4 sm:px-8"},Vv={class:"grid grid-cols-2 gap-3 lg:grid-cols-4"},Nv={class:"min-w-0 flex-1"},Hv={class:"mt-0.5 truncate text-[10px] font-medium text-gray-500 dark:text-gray-400"},Ov={class:"mt-0.5 truncate text-[9px] text-gray-400 dark:text-gray-500"},Wv={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"},Yv={class:"flex items-center gap-1.5"},Qv={class:"text-[9px] font-medium uppercase tracking-widest"},Kv=ge({__name:"TimeProfileCard",props:{hourlyActivity:{},weekdayActivity:{},dailyActivity:{}},setup(l){Mt([vs,ys,It]);const{t:o}=ye(),t=$t(),c=l,r=x(()=>c.dailyActivity.filter(v=>v.messageCount>0).length),m=x(()=>c.dailyActivity.reduce((v,_)=>v+_.messageCount,0)),g=x(()=>{if(c.dailyActivity.length===0)return{first:"",last:"",days:0};const v=[...c.dailyActivity].sort((j,U)=>j.date.localeCompare(U.date)),_=Ie(v[0].date),A=Ie(v[v.length-1].date);return{first:_.format("YYYY/MM/DD"),last:A.format("YYYY/MM/DD"),days:A.diff(_,"day")+1}}),d=x(()=>r.value===0?0:Math.round(m.value/r.value)),p=x(()=>c.dailyActivity.length===0?null:c.dailyActivity.reduce((v,_)=>_.messageCount>v.messageCount?_:v,c.dailyActivity[0])),h=x(()=>c.hourlyActivity.length===0?[]:[...c.hourlyActivity].sort((v,_)=>_.messageCount-v.messageCount).slice(0,3)),y=x(()=>{if(c.hourlyActivity.length===0&&c.weekdayActivity.length===0)return null;const v=g.value.days>0?r.value/g.value.days:0,_=c.weekdayActivity.filter(X=>X.weekday===6||X.weekday===7),A=c.weekdayActivity.filter(X=>X.weekday>=1&&X.weekday<=5),j=_.reduce((X,N)=>X+N.messageCount,0),U=A.reduce((X,N)=>X+N.messageCount,0),k=j+U,b=k>0?j/k:0,q=c.hourlyActivity.reduce((X,N)=>X+N.messageCount,0),Y=c.hourlyActivity.filter(X=>X.hour>=22||X.hour<5).reduce((X,N)=>X+N.messageCount,0),W=c.hourlyActivity.filter(X=>X.hour>=18&&X.hour<22).reduce((X,N)=>X+N.messageCount,0),J=q>0?Y/q:0,me=q>0?W/q:0;if(v>=.9)return{label:o("views.message.timeCard.personalityEveryday"),icon:"i-heroicons-fire"};if(b>=.55)return{label:o("views.message.timeCard.personalityWeekend"),icon:"i-heroicons-calendar"};if(b<=.2&&k>0)return{label:o("views.message.timeCard.personalityWeekday"),icon:"i-heroicons-briefcase"};if(J>=.3)return{label:o("views.message.timeCard.personalityNightOwl"),icon:"i-heroicons-moon"};if(me>=.4)return{label:o("views.message.timeCard.personalityEveningChat"),icon:"i-heroicons-sparkles"};const pe=[...c.hourlyActivity].sort((X,N)=>N.messageCount-X.messageCount)[0];return pe?pe.hour>=5&&pe.hour<9?{label:o("views.message.timeCard.personalityEarlyBird"),icon:"i-heroicons-sun"}:pe.hour>=12&&pe.hour<14?{label:o("views.message.timeCard.personalityLunchChat"),icon:"i-heroicons-clock"}:{label:o("views.message.timeCard.personalityDaytime"),icon:"i-heroicons-sun"}:null}),T=x(()=>{const v=c.weekdayActivity.filter(k=>k.weekday===6||k.weekday===7),_=c.weekdayActivity.filter(k=>k.weekday>=1&&k.weekday<=5),A=v.reduce((k,b)=>k+b.messageCount,0),j=_.reduce((k,b)=>k+b.messageCount,0),U=A+j;return U===0?0:Math.round(A/U*100)}),M=x(()=>[o("common.weekday.mon"),o("common.weekday.tue"),o("common.weekday.wed"),o("common.weekday.thu"),o("common.weekday.fri"),o("common.weekday.sat"),o("common.weekday.sun")]),C=x(()=>{if(c.weekdayActivity.length===0)return null;const v=[...c.weekdayActivity].sort((_,A)=>A.messageCount-_.messageCount)[0];return{name:M.value[v.weekday-1],count:v.messageCount}}),L=x(()=>[{icon:"i-heroicons-fire",label:o("views.message.timeCard.peakRecord"),value:p.value?Ie(p.value.date).format("MM/DD"):"-",subtext:p.value?o("views.message.timeCard.peakRecordDesc",{count:p.value.messageCount}):"",colorClass:"text-red-600 dark:text-red-400"},{icon:"i-heroicons-clock",label:o("views.message.timeCard.topHoursLabel"),value:h.value.length>0?`${h.value[0].hour}:00`:"-",subtext:h.value.length>=2?h.value.map(v=>`${v.hour}:00`).join(" > "):"",colorClass:"text-cyan-600 dark:text-cyan-400"},{icon:"i-heroicons-calendar-days",label:o("views.message.timeCard.peakWeekdayLabel"),value:C.value?.name||"-",subtext:C.value?`${C.value.count.toLocaleString()}`:"",colorClass:"text-violet-600 dark:text-violet-400"},{icon:"i-heroicons-building-office",label:o("views.message.timeCard.weekendRatio"),value:`${T.value}%`,subtext:o("views.message.timeCard.weekendRatioDesc"),colorClass:"text-amber-600 dark:text-amber-400"}]),z=f(null);let $=null;function I(){z.value&&($=Dt(z.value,void 0,{renderer:"canvas"}),w())}function w(){if(!$)return;const v=new Map(c.hourlyActivity.map(U=>[U.hour,U.messageCount])),_=[];for(let U=0;U<24;U++)_.push(v.get(U)||0);const A=Math.max(..._,1),j=_.map(U=>{const k=U/A;return k>.8?t.value?"#f472b6":"#ec4899":k>.5?t.value?"#a78bfa":"#8b5cf6":t.value?"rgba(255,255,255,0.15)":"rgba(0,0,0,0.08)"});$.setOption({backgroundColor:"transparent",tooltip:{trigger:"axis",formatter:U=>`${U[0].axisValue}:00 — ${U[0].value}`},grid:{left:0,right:0,top:4,bottom:16},xAxis:{type:"category",data:Array.from({length:24},(U,k)=>`${k}`),axisLine:{show:!1},axisTick:{show:!1},axisLabel:{fontSize:9,color:t.value?"#6b7280":"#9ca3af",interval:U=>U%6===0}},yAxis:{type:"value",show:!1},series:[{type:"bar",data:_.map((U,k)=>({value:U,itemStyle:{color:j[k]}})),barWidth:"60%",itemStyle:{borderRadius:[2,2,0,0]}}]},{notMerge:!0})}function S(){$?.resize()}return de(()=>c.hourlyActivity,()=>w()),de(t,()=>{$?.dispose(),I()}),Ve(()=>{I(),window.addEventListener("resize",S)}),dt(()=>{window.removeEventListener("resize",S),$?.dispose()}),(v,_)=>{const A=_e;return n(),K(a(Lt),null,{default:F(()=>[e("div",$v,[e("div",Cv,[e("div",Sv,[e("div",Tv,[g.value.first?(n(),i("p",Mv,s(g.value.first)+" – "+s(g.value.last),1)):E("",!0),e("div",Iv,[e("span",Dv,s(g.value.days),1),e("span",Lv,s(a(o)("views.message.timeCard.heroDaysIn")),1),e("span",Av,s(r.value),1),e("span",zv,s(a(o)("views.message.timeCard.heroDaysActive")),1)]),e("div",qv,[e("span",Rv,s(a(o)("views.message.timeCard.heroAvgPrefix")),1),e("span",Ev,s(d.value),1),e("span",jv,s(a(o)("views.message.timeCard.heroAvgSuffix")),1),y.value?(n(),i(oe,{key:0},[u(A,{name:y.value.icon,class:"ml-2 h-4 w-4 text-amber-500"},null,8,["name"]),e("span",Pv,s(y.value.label),1)],64)):E("",!0)])])]),e("div",Uv,[e("div",Bv,s(a(o)("views.message.timeCard.hourlyDistribution")),1),e("div",{ref_key:"barRef",ref:z,style:{width:"180px",height:"110px"}},null,512)])])]),e("div",Fv,[_[0]||(_[0]=e("div",{class:"mb-3 flex items-center justify-between"},[e("span",{class:"text-[10px] font-bold uppercase tracking-widest text-gray-400 dark:text-gray-500"}," Time Profile ")],-1)),e("div",Vv,[(n(!0),i(oe,null,ce(L.value,j=>(n(),i("div",{key:j.icon+j.label,class:"flex min-w-0 items-start gap-2 px-2.5 py-2"},[u(A,{name:j.icon,class:se(["mt-0.5 h-3.5 w-3.5 shrink-0",j.colorClass])},null,8,["name","class"]),e("div",Nv,[e("div",{class:se(["truncate font-mono text-sm font-black leading-tight tabular-nums",j.colorClass])},s(j.value),3),e("div",Hv,s(j.label),1),e("div",Ov,s(j.subtext),1)])]))),128))])]),e("div",Wv,[e("div",Yv,[u(A,{name:"i-heroicons-chat-bubble-left-right-solid",class:"h-3.5 w-3.5"}),_[1]||(_[1]=e("span",{class:"text-[10px] font-bold uppercase tracking-wider"},"ChatLab",-1))]),e("span",Qv,s(a(o)("views.message.timeCard.watermark")),1)])]),_:1})}}}),Gv={key:1,class:"main-content mx-auto max-w-[920px] space-y-6 p-6"},Jv={class:"grid grid-cols-1 gap-6 lg:grid-cols-2"},Xv={class:"p-5"},Zv={class:"p-5"},ey={class:"grid grid-cols-1 gap-6 lg:grid-cols-2"},ty={class:"p-5"},ay={class:"p-5"},sy={key:1,class:"flex h-48 items-center justify-center text-gray-400"},ny={class:"text-xs text-gray-400"},oy={class:"p-5"},ry={key:1,class:"flex h-48 items-center justify-center text-gray-400"},ly={class:"text-xs text-gray-400"},iy={class:"p-5"},cy={class:"flex items-center gap-2"},dy={class:"text-xs text-gray-400"},uy={class:"p-5"},my={key:1,class:"flex h-32 items-center justify-center text-gray-400"},Mk=ge({__name:"TimeAnalysisView",props:{sessionId:{},sessionName:{},timeFilter:{}},setup(l){const o=l,{t}=ye(),c=f(!0),r=f([]),m=f([]),g=f([]),d=f([]),p=f([]),h=f([]),y=f([]),T=["#6366f1","#ec4899","#f97316","#22c55e","#06b6d4","#8b5cf6","#f43f5e","#eab308","#14b8a6","#3b82f6"],M=x(()=>[t("common.weekday.mon"),t("common.weekday.tue"),t("common.weekday.wed"),t("common.weekday.thu"),t("common.weekday.fri"),t("common.weekday.sat"),t("common.weekday.sun")]),C=x(()=>[t("common.month.jan"),t("common.month.feb"),t("common.month.mar"),t("common.month.apr"),t("common.month.may"),t("common.month.jun"),t("common.month.jul"),t("common.month.aug"),t("common.month.sep"),t("common.month.oct"),t("common.month.nov"),t("common.month.dec")]),L=x(()=>{const k=new Map(m.value.map(Y=>[Y.hour,Y.messageCount])),b=[],q=[];for(let Y=0;Y<24;Y++)b.push(`${Y}`),q.push(k.get(Y)||0);return{labels:b,values:q}}),z=x(()=>{const k=new Map(g.value.map(q=>[q.weekday,q.messageCount])),b=[];for(let q=1;q<=7;q++)b.push(k.get(q)||0);return{labels:M.value,values:b}}),$=x(()=>{const k=new Map(d.value.map(q=>[q.month,q.messageCount])),b=[];for(let q=1;q<=12;q++)b.push(k.get(q)||0);return{labels:C.value,values:b}}),I=x(()=>{const k=[...p.value].sort((b,q)=>b.year-q.year);return{labels:k.map(b=>String(b.year)),values:k.map(b=>b.messageCount)}}),w=x(()=>{const k=Array.from({length:24},(W,J)=>`${J}:00`),b=M.value,q=r.value.reduce((W,J)=>W+J.count,0)||1,Y=[];for(let W=1;W<=7;W++)for(let J=0;J<24;J++){const me=g.value.find(N=>N.weekday===W)?.messageCount||0,pe=m.value.find(N=>N.hour===J)?.messageCount||0,X=Math.round(me*pe/q);Y.push([J,W-1,X])}return{xLabels:k,yLabels:b,data:Y}}),S=x(()=>h.value.map(k=>({date:k.date,value:k.messageCount}))),v=x(()=>{const k=new Set;return h.value.forEach(b=>{const q=parseInt(b.date.split("-")[0]);isNaN(q)||k.add(q)}),Array.from(k).sort((b,q)=>q-b)}),_=f(new Date().getFullYear()),A=x(()=>{const k=_.value;return S.value.filter(b=>b.date.startsWith(`${k}-`))}),j=x(()=>{if(y.value.length===0)return{};const k=[...new Set(y.value.map(J=>J.month))].sort(),b=new Map;if(y.value.forEach(J=>{const me=b.get(J.memberId);me?me.total+=J.count:b.set(J.memberId,{name:J.memberName,total:J.count})}),b.size<=2){const J=new Map;return y.value.forEach(me=>{J.set(me.month,(J.get(me.month)||0)+me.count)}),{tooltip:{trigger:"axis",backgroundColor:"rgba(0, 0, 0, 0.8)",borderColor:"transparent",textStyle:{color:"#fff"}},grid:{left:50,right:20,top:10,bottom:30},xAxis:{type:"category",data:k,boundaryGap:!1,axisLine:{show:!1},axisTick:{show:!1}},yAxis:{type:"value",splitLine:{lineStyle:{type:"dashed",opacity:.3}}},series:[{type:"line",smooth:!0,symbol:"none",areaStyle:{opacity:.2},itemStyle:{color:"#6366f1"},data:k.map(me=>J.get(me)||0)}]}}const W=[...b.entries()].sort((J,me)=>me[1].total-J[1].total).slice(0,10).map(([J,me],pe)=>{const X=new Map(y.value.filter(N=>N.memberId===J).map(N=>[N.month,N.count]));return{name:me.name,type:"line",stack:"total",areaStyle:{opacity:.3},smooth:!0,symbol:"none",itemStyle:{color:T[pe%T.length]},data:k.map(N=>X.get(N)||0)}});return{tooltip:{trigger:"axis",backgroundColor:"rgba(0, 0, 0, 0.8)",borderColor:"transparent",textStyle:{color:"#fff"}},legend:{bottom:0,textStyle:{fontSize:11}},grid:{left:50,right:20,top:10,bottom:40},xAxis:{type:"category",data:k,boundaryGap:!1,axisLine:{show:!1},axisTick:{show:!1}},yAxis:{type:"value",splitLine:{lineStyle:{type:"dashed",opacity:.3}}},series:W}});async function U(){if(o.sessionId){c.value=!0;try{const k=Oe(),[b,q,Y,W,J,me,pe]=await Promise.all([k.getMessageTypeDistribution(o.sessionId,o.timeFilter),k.getHourlyActivity(o.sessionId,o.timeFilter),k.getWeekdayActivity(o.sessionId,o.timeFilter),k.getMonthlyActivity(o.sessionId,o.timeFilter),k.getYearlyActivity(o.sessionId,o.timeFilter),k.getDailyActivity(o.sessionId,o.timeFilter),k.getMemberMonthlyTrend(o.sessionId,o.timeFilter)]);r.value=b,m.value=q,g.value=Y,d.value=W,p.value=J,h.value=me,y.value=pe,v.value.length>0&&(_.value=v.value[0])}catch(k){console.error("[chart-message] Failed to load time analysis data:",k)}finally{c.value=!1}}}return de(()=>[o.sessionId,o.timeFilter],()=>U(),{immediate:!0,deep:!0}),(k,b)=>{const q=Gt;return n(),i("div",{class:se(c.value?"h-full":"")},[c.value?(n(),K(a(kt),{key:0,variant:"page",text:a(t)("common.loading")},null,8,["text"])):(n(),i("div",Gv,[h.value.length>0?(n(),K(Kv,{key:0,"hourly-activity":m.value,"weekday-activity":g.value,"daily-activity":h.value},null,8,["hourly-activity","weekday-activity","daily-activity"])):E("",!0),e("div",Jv,[u(a(Ye),{title:a(t)("views.message.hourlyDistribution"),"show-divider":!1},{default:F(()=>[e("div",Xv,[u(a(Ze),{data:L.value,height:200},null,8,["data"])])]),_:1},8,["title"]),u(a(Ye),{title:a(t)("views.message.weekdayDistribution"),"show-divider":!1},{default:F(()=>[e("div",Zv,[u(a(Ze),{data:z.value,height:200},null,8,["data"])])]),_:1},8,["title"])]),e("div",ey,[u(a(Ye),{title:a(t)("views.message.monthlyDistribution"),"show-divider":!1},{default:F(()=>[e("div",ty,[u(a(Ze),{data:$.value,height:200},null,8,["data"])])]),_:1},8,["title"]),u(a(Ye),{title:a(t)("views.message.yearlyDistribution"),"show-divider":!1},{default:F(()=>[e("div",ay,[I.value.values.length>0?(n(),K(a(Ze),{key:0,data:I.value,height:200},null,8,["data"])):(n(),i("div",sy,s(a(t)("views.message.noData")),1))])]),_:1},8,["title"])]),u(a(Ye),{title:a(t)("views.message.timeAnalysis.memberTrendTitle"),"show-divider":!1},{headerRight:F(()=>[e("span",ny,s(a(t)("views.message.timeAnalysis.memberTrendHint")),1)]),default:F(()=>[e("div",oy,[y.value.length>0?(n(),K(a(Tt),{key:0,option:j.value,height:280},null,8,["option"])):(n(),i("div",ry,s(a(t)("views.message.noData")),1))])]),_:1},8,["title"]),u(a(Ye),{title:a(t)("views.message.timeHeatmap"),"show-divider":!1},{headerRight:F(()=>[e("span",ly,s(a(t)("views.message.heatmapHint")),1)]),default:F(()=>[e("div",iy,[u(a(Nt),{data:w.value,height:320},null,8,["data"])])]),_:1},8,["title"]),u(a(Ye),{title:a(t)("views.message.calendarHeatmap"),"show-divider":!1},{headerRight:F(()=>[e("div",cy,[e("span",dy,s(a(t)("views.message.calendarHint")),1),v.value.length>1?(n(),K(q,{key:0,modelValue:_.value,"onUpdate:modelValue":b[0]||(b[0]=Y=>_.value=Y),items:v.value.map(Y=>({value:Y,label:String(Y)})),size:"xs",class:"w-20"},null,8,["modelValue","items"])):E("",!0)])]),default:F(()=>[e("div",uy,[A.value.length>0?(n(),K(a(dp),{key:0,data:A.value,year:_.value,height:180},null,8,["data","year"])):(n(),i("div",my,s(a(t)("views.message.noData")),1))])]),_:1},8,["title"])]))],2)}}}),gy={class:"relative z-10 px-6 pt-8 pb-4 sm:px-8"},py={class:"flex items-center gap-6 sm:gap-10"},hy={class:"min-w-0 flex-1"},vy={class:"flex flex-col gap-2 text-[15px] leading-relaxed text-gray-600 dark:text-gray-300"},yy={key:0,class:"mb-0 text-sm font-medium tracking-wide text-gray-500 dark:text-gray-400"},fy={class:"flex items-baseline gap-x-1.5"},xy={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},by={class:"font-black text-5xl tracking-tight text-gray-900 dark:text-white"},ky={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},_y={class:"flex items-baseline gap-x-1.5"},wy={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},$y={class:"font-black text-3xl text-pink-500 dark:text-pink-400"},Cy={class:"text-xl font-medium text-gray-700 dark:text-gray-300"},Sy={key:1,class:"mt-1 flex items-baseline flex-wrap gap-x-1.5 gap-y-1"},Ty={class:"text-base font-medium text-gray-600 dark:text-gray-300"},My=["onClick"],Iy={key:0,class:"text-gray-400"},Dy={key:0,class:"hidden shrink-0 overflow-hidden rounded-lg sm:block"},Ly={class:"relative",style:{width:"360px",height:"220px"}},Ay={class:"relative z-10 px-6 pb-6 pt-4 sm:px-8"},zy={class:"grid grid-cols-2 gap-3 lg:grid-cols-4"},qy={class:"min-w-0 flex-1"},Ry={class:"mt-0.5 truncate text-[10px] font-medium text-gray-500 dark:text-gray-400"},Ey={class:"mt-0.5 truncate text-[9px] text-gray-400 dark:text-gray-500"},jy={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"},Py={class:"flex items-center gap-1.5"},Uy={class:"text-[9px] font-medium uppercase tracking-widest"},By=ge({__name:"TopicProfileCard",props:{totalMessages:{},totalWords:{},uniqueWords:{},topWords:{},topicWords:{},posTagStats:{},timeFilter:{}},emits:["wordClick"],setup(l,{emit:o}){const t=ma(()=>wt(()=>import("./EChartWordcloud-C5hLT1vS.js"),__vite__mapDeps([5,6,7,8,1]))),{t:c}=ye(),r=l,m=o,g=x(()=>{const{startTs:L,endTs:z}=r.timeFilter??{};return L&&z?`${Ie(L*1e3).format("YYYY/MM/DD")} – ${Ie(z*1e3).format("YYYY/MM/DD")}`:""}),d=x(()=>(r.topicWords?.length?r.topicWords:r.topWords).slice(0,5)),p=x(()=>({words:(r.topicWords?.length?r.topicWords:r.topWords).slice(0,50).map(z=>({word:z.word,count:z.count,percentage:z.percentage}))})),h=x(()=>r.totalWords===0?0:Math.round(r.uniqueWords/r.totalWords*100)),y=x(()=>{if(!r.posTagStats?.length)return{key:"Balanced",label:c("quotes.topicProfile.styleBalanced"),desc:c("quotes.topicProfile.styleBalancedDesc"),icon:"i-heroicons-scale-solid",colorClass:"text-cyan-600 dark:text-cyan-400"};const L=new Map(r.posTagStats.map(A=>[A.tag,A.count])),z=(L.get("n")||0)+(L.get("ns")||0)+(L.get("nt")||0)+(L.get("nz")||0),$=(L.get("v")||0)+(L.get("vn")||0)+(L.get("vd")||0),I=(L.get("a")||0)+(L.get("ad")||0)+(L.get("an")||0),w=z+$+I;if(w===0)return{key:"Balanced",label:c("quotes.topicProfile.styleBalanced"),desc:c("quotes.topicProfile.styleBalancedDesc"),icon:"i-heroicons-scale-solid",colorClass:"text-cyan-600 dark:text-cyan-400"};const S=z/w,v=$/w,_=I/w;return S>.5?{key:"Encyclopedia",label:c("quotes.topicProfile.styleEncyclopedia"),desc:c("quotes.topicProfile.styleEncyclopediaDesc"),icon:"i-heroicons-book-open-solid",colorClass:"text-indigo-600 dark:text-indigo-400"}:v>.45?{key:"Action",label:c("quotes.topicProfile.styleAction"),desc:c("quotes.topicProfile.styleActionDesc"),icon:"i-heroicons-rocket-launch-solid",colorClass:"text-orange-600 dark:text-orange-400"}:_>.3?{key:"Expressive",label:c("quotes.topicProfile.styleExpressive"),desc:c("quotes.topicProfile.styleExpressiveDesc"),icon:"i-heroicons-paint-brush-solid",colorClass:"text-pink-600 dark:text-pink-400"}:{key:"Balanced",label:c("quotes.topicProfile.styleBalanced"),desc:c("quotes.topicProfile.styleBalancedDesc"),icon:"i-heroicons-scale-solid",colorClass:"text-cyan-600 dark:text-cyan-400"}}),T=x(()=>{if(r.topWords.length===0)return{label:c("quotes.topicProfile.expressionMixed"),desc:c("quotes.topicProfile.expressionMixedDesc"),icon:"i-heroicons-chat-bubble-left-right-solid",colorClass:"text-emerald-600 dark:text-emerald-400"};const L=r.topWords.reduce((I,w)=>I+w.word.length*w.count,0),z=r.topWords.reduce((I,w)=>I+w.count,0),$=L/z;return $<2.5?{label:c("quotes.topicProfile.expressionCasual"),desc:c("quotes.topicProfile.expressionCasualDesc"),icon:"i-heroicons-face-smile-solid",colorClass:"text-amber-600 dark:text-amber-400"}:$>3.5?{label:c("quotes.topicProfile.expressionFormal"),desc:c("quotes.topicProfile.expressionFormalDesc"),icon:"i-heroicons-academic-cap-solid",colorClass:"text-violet-600 dark:text-violet-400"}:{label:c("quotes.topicProfile.expressionMixed"),desc:c("quotes.topicProfile.expressionMixedDesc"),icon:"i-heroicons-chat-bubble-left-right-solid",colorClass:"text-emerald-600 dark:text-emerald-400"}}),M=x(()=>[{icon:"i-heroicons-fire-solid",label:c("quotes.topicProfile.hotTopic"),value:d.value[0]?.word??"-",subtext:d.value[0]?c("quotes.topicProfile.hotTopicDesc",{count:d.value[0].count}):"",colorClass:"text-red-600 dark:text-red-400"},{icon:"i-heroicons-sparkles-solid",label:c("quotes.topicProfile.richness"),value:c("quotes.topicProfile.richnessValue",{value:h.value}),subtext:c("quotes.topicProfile.richnessDesc",{unique:r.uniqueWords.toLocaleString(),total:r.totalWords.toLocaleString()}),colorClass:"text-blue-600 dark:text-blue-400"},{icon:y.value.icon,label:c("quotes.topicProfile.chatStyle"),value:y.value.label,subtext:y.value.desc,colorClass:y.value.colorClass},{icon:T.value.icon,label:c("quotes.topicProfile.expressionStyle"),value:T.value.label,subtext:T.value.desc,colorClass:T.value.colorClass}]),C=["#6366f1","#ec4899","#f97316","#22c55e","#3b82f6","#8b5cf6","#14b8a6","#f43f5e"];return(L,z)=>{const $=_e;return n(),K(a(Lt),null,{default:F(()=>[e("div",gy,[e("div",py,[e("div",hy,[e("div",vy,[g.value?(n(),i("p",yy,s(g.value),1)):E("",!0),e("div",fy,[e("span",xy,s(a(c)("quotes.topicProfile.heroPrefix")),1),e("span",by,s(l.totalMessages.toLocaleString()),1),e("span",ky,s(a(c)("quotes.topicProfile.heroMiddle")),1)]),e("div",_y,[e("span",wy,s(a(c)("quotes.topicProfile.heroMiddleSecond")),1),e("span",$y,s(l.uniqueWords.toLocaleString()),1),e("span",Cy,s(a(c)("quotes.topicProfile.heroSuffix")),1)]),d.value.length>0?(n(),i("div",Sy,[e("span",Ty,s(a(c)("quotes.topicProfile.topTopicsPrefix")),1),(n(!0),i(oe,null,ce(d.value,(I,w)=>(n(),i(oe,{key:I.word},[e("span",{class:"cursor-pointer font-bold text-xl transition-opacity hover:opacity-70",style:Ke({color:C[w%C.length]}),onClick:S=>m("wordClick",I.word)},s(I.word),13,My),w<d.value.length-1?(n(),i("span",Iy,"·")):E("",!0)],64))),128))])):E("",!0)])]),p.value.words.length>0?(n(),i("div",Dy,[e("div",Ly,[u(a(t),{data:p.value,height:"100%","max-words":50,"size-scale":.8,"draw-out-of-bound":!0,shape:"rectangle","color-scheme":"default",onWordClick:z[0]||(z[0]=I=>m("wordClick",I))},null,8,["data"])])])):E("",!0)])]),e("div",Ay,[z[1]||(z[1]=e("div",{class:"mb-3 flex items-center justify-between"},[e("span",{class:"text-[10px] font-bold uppercase tracking-widest text-gray-400 dark:text-gray-500"}," Topic Profile ")],-1)),e("div",zy,[(n(!0),i(oe,null,ce(M.value,I=>(n(),i("div",{key:I.label,class:"flex min-w-0 items-start gap-2 px-2.5 py-2"},[u($,{name:I.icon,class:se(["mt-0.5 h-3.5 w-3.5 shrink-0",I.colorClass])},null,8,["name","class"]),e("div",qy,[e("div",{class:se(["truncate font-mono text-sm font-black leading-tight tabular-nums",I.colorClass])},s(I.value),3),e("div",Ry,s(I.label),1),e("div",Ey,s(I.subtext),1)])]))),128))])]),e("div",jy,[e("div",Py,[u($,{name:"i-heroicons-chat-bubble-left-right-solid",class:"h-3.5 w-3.5"}),z[2]||(z[2]=e("span",{class:"text-[10px] font-bold uppercase tracking-wider"},"ChatLab",-1))]),e("span",Uy,s(a(c)("quotes.topicProfile.watermark")),1)])]),_:1})}}}),Fy={class:"px-5 py-4 sm:px-6"},Vy={class:"mb-4 flex items-center gap-2"},Ny={class:"text-[15px] font-black tracking-tight text-gray-900 dark:text-white"},Hy={class:"flex flex-wrap justify-center gap-2"},Oy=["onClick"],Wy=ge({__name:"SharedTopicsCard",props:{sessionId:{},timeFilter:{},dictType:{},excludeWords:{}},emits:["wordClick"],setup(l,{emit:o}){const{t}=ye(),c=Qt(),r=l,m=o,g=x(()=>c.locale),d=f([]),p=f([]),h=x(()=>d.value.slice(0,20)),y=["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","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","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","bg-green-50 text-green-600 ring-1 ring-green-500/20 dark:bg-green-500/10 dark:text-green-400 dark:ring-green-500/30","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","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","bg-teal-50 text-teal-600 ring-1 ring-teal-500/20 dark:bg-teal-500/10 dark:text-teal-400 dark:ring-teal-500/30","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","bg-yellow-50 text-yellow-600 ring-1 ring-yellow-500/20 dark:bg-yellow-500/10 dark:text-yellow-400 dark:ring-yellow-500/30","bg-cyan-50 text-cyan-600 ring-1 ring-cyan-500/20 dark:bg-cyan-500/10 dark:text-cyan-400 dark:ring-cyan-500/30"];async function T(){if(r.sessionId)try{p.value.length===0&&(p.value=await Oe().getMembers(r.sessionId));const M=[...p.value].sort((w,S)=>S.messageCount-w.messageCount).slice(0,2);if(M.length<2){d.value=[];return}const C={sessionId:r.sessionId,locale:g.value,timeFilter:r.timeFilter?{startTs:r.timeFilter.startTs,endTs:r.timeFilter.endTs}:void 0,topN:100,minCount:2,posFilterMode:"meaningful",enableStopwords:!0,dictType:r.dictType??"default",excludeWords:r.excludeWords?.length?[...r.excludeWords]:void 0},[L,z]=await Promise.all([bt("/nlp/word-frequency",{...C,memberId:M[0].id}),bt("/nlp/word-frequency",{...C,memberId:M[1].id})]),$=new Map(z.words.map(w=>[w.word,w.count])),I=[];for(const w of L.words){const S=$.get(w.word);S&&I.push({word:w.word,countA:w.count,countB:S})}I.sort((w,S)=>S.countA+S.countB-(w.countA+w.countB)),d.value=I.slice(0,30)}catch(M){console.error("加载共同话题数据失败:",M),d.value=[]}}return de(()=>r.sessionId,()=>{p.value=[]}),de(()=>[r.sessionId,r.timeFilter,r.dictType,r.excludeWords],()=>{T()},{immediate:!0,deep:!0}),(M,C)=>{const L=_e;return h.value.length>0?(n(),K(a(at),{key:0},{default:F(()=>[e("div",Fy,[e("div",Vy,[u(L,{name:"i-heroicons-link",class:"h-4 w-4 text-emerald-500"}),e("span",Ny,s(a(t)("quotes.topicProfile.sharedTopics")),1)]),e("div",Hy,[(n(!0),i(oe,null,ce(h.value,(z,$)=>(n(),i("span",{key:z.word,class:se(["cursor-pointer rounded-full px-3 py-1 text-xs font-bold transition-opacity hover:opacity-80",y[$%y.length]]),onClick:I=>m("wordClick",z.word)},s(z.word),11,Oy))),128))])])]),_:1})):E("",!0)}}}),ba=Na("wordFilter",()=>{const l=f([]),o=f(null),t=f({}),c=f(!1);function r(){return`wf_${Date.now()}_${Math.random().toString(36).slice(2,8)}`}function m(I,w=[]){const S={id:r(),name:I,words:[...w],createdAt:Date.now()};return l.value.push(S),S}function g(I,w){const S=l.value.find(v=>v.id===I);S&&(w.name!==void 0&&(S.name=w.name),w.words!==void 0&&(S.words=[...w.words]))}function d(I){l.value=l.value.filter(w=>w.id!==I),o.value===I&&(o.value=null);for(const[w,S]of Object.entries(t.value))S===I&&delete t.value[w]}function p(I){o.value=I}function h(I,w){t.value[I]=w}function y(I){delete t.value[I]}function T(I){return I in t.value?t.value[I]:o.value}function M(I){const w=T(I);return w?l.value.find(v=>v.id===w)?.words??[]:[]}function C(I){return l.value.find(w=>w.id===I)}const L=x(()=>l.value.map(I=>({label:I.name,value:I.id,isDefault:I.id===o.value,wordCount:I.words.length})));function z(){c.value=!0}function $(){c.value=!1}return{schemes:l,defaultSchemeId:o,sessionSchemeOverrides:t,showWordFilterModal:c,schemeOptions:L,createScheme:m,updateScheme:g,deleteScheme:d,setDefaultScheme:p,setSessionScheme:h,clearSessionScheme:y,getActiveSchemeId:T,getExcludeWords:M,getSchemeById:C,openModal:z,closeModal:$}},{persist:!1,backendPersist:{pick:["schemes","defaultSchemeId","sessionSchemeOverrides"],key:"wordFilter"}}),Yy={class:"flex flex-col",style:{height:"520px"}},Qy={class:"flex items-center justify-between border-b border-gray-200 px-6 py-4 dark:border-white/5"},Ky={class:"flex items-center gap-3"},Gy={class:"flex h-9 w-9 items-center justify-center rounded-xl bg-linear-to-br from-pink-400 to-pink-600"},Jy={class:"text-lg font-semibold text-gray-900 dark:text-white"},Xy={class:"flex flex-1 overflow-hidden"},Zy={class:"flex w-[200px] shrink-0 flex-col border-r border-gray-200 dark:border-white/5"},ef={class:"flex items-center justify-between px-3 py-2"},tf={class:"text-xs font-medium text-gray-500 dark:text-gray-400"},af={class:"flex-1 overflow-y-auto px-2 pb-2"},sf=["onClick"],nf={class:"truncate text-sm"},of={class:"ml-auto text-xs text-gray-400 dark:text-gray-500"},rf={key:0,class:"px-3 py-8 text-center text-xs text-gray-400 dark:text-gray-500"},lf={class:"flex flex-1 flex-col overflow-hidden"},cf={class:"flex-1 space-y-4 overflow-y-auto p-5"},df={class:"mb-1.5 block text-xs font-medium text-gray-600 dark:text-gray-400"},uf={class:"flex items-center gap-2"},mf={class:"mb-1.5 block text-xs font-medium text-gray-600 dark:text-gray-400"},gf={class:"flex gap-2"},pf={class:"mb-1.5 flex items-center justify-between"},hf={class:"text-xs font-medium text-gray-600 dark:text-gray-400"},vf={class:"ml-1 text-gray-400 dark:text-gray-500"},yf={key:0,class:"flex max-h-[220px] flex-wrap gap-1.5 overflow-y-auto rounded-lg border border-gray-200 p-3 dark:border-white/5"},ff={key:1,class:"rounded-lg border border-dashed border-gray-300 px-4 py-6 text-center text-xs text-gray-400 dark:border-gray-600 dark:text-gray-500"},xf={class:"flex shrink-0 justify-end border-t border-gray-200 px-5 py-3 dark:border-white/5"},bf={key:1,class:"flex flex-1 flex-col items-center justify-center gap-3 text-gray-400 dark:text-gray-500"},kf={class:"text-sm"},_f=ge({__name:"WordFilterModal",setup(l){const{t:o}=ye(),t=ba(),c=x({get:()=>t.showWordFilterModal,set:w=>w?t.openModal():t.closeModal()}),r=f(null),m=f(""),g=f(""),d=f(null),p=x(()=>r.value?t.getSchemeById(r.value)??null:null),h=x(()=>r.value===t.defaultSchemeId);de(c,w=>{w&&(t.schemes.length>0&&!r.value&&(r.value=t.schemes[0].id),y())}),de(r,()=>{y(),g.value=""});function y(){m.value=p.value?.name??""}function T(){const w=t.createScheme(o("wordFilter.defaultSchemeName"));r.value=w.id,Fe(()=>{d.value?.focus(),d.value?.select()})}function M(){if(!r.value)return;const w=t.schemes.findIndex(S=>S.id===r.value);if(t.deleteScheme(r.value),t.schemes.length>0){const S=Math.min(w,t.schemes.length-1);r.value=t.schemes[S].id}else r.value=null}function C(){!r.value||!m.value.trim()||t.updateScheme(r.value,{name:m.value.trim()})}function L(){r.value&&(h.value?t.setDefaultScheme(null):t.setDefaultScheme(r.value))}function z(){if(!r.value||!g.value.trim())return;const S=g.value.trim().split(/[,,\n\r\t;;|、\s]+/).map(j=>j.trim()).filter(j=>j.length>0);if(S.length===0)return;const v=p.value;if(!v)return;const _=new Set(v.words.map(j=>j.toLowerCase())),A=S.filter(j=>!_.has(j.toLowerCase()));A.length>0&&t.updateScheme(r.value,{words:[...v.words,...A]}),g.value=""}function $(w){if(!r.value)return;const S=p.value;S&&t.updateScheme(r.value,{words:S.words.filter(v=>v!==w)})}function I(){r.value&&t.updateScheme(r.value,{words:[]})}return(w,S)=>{const v=_e,_=Pe,A=St,j=pa,U=We;return n(),K(U,{open:c.value,"onUpdate:open":S[4]||(S[4]=k=>c.value=k),ui:{content:"max-w-3xl z-50"}},{content:F(()=>[e("div",Yy,[e("div",Qy,[e("div",Ky,[e("div",Gy,[u(v,{name:"i-heroicons-funnel",class:"h-4.5 w-4.5 text-white"})]),e("h2",Jy,s(a(o)("wordFilter.title")),1)]),u(_,{icon:"i-heroicons-x-mark",variant:"ghost",color:"neutral",size:"sm",onClick:S[0]||(S[0]=k=>c.value=!1)})]),e("div",Xy,[e("div",Zy,[e("div",ef,[e("span",tf,s(a(o)("wordFilter.schemeList")),1),u(_,{icon:"i-heroicons-plus",size:"xs",variant:"ghost",color:"primary",onClick:T})]),e("div",af,[(n(!0),i(oe,null,ce(a(t).schemes,k=>(n(),i("div",{key:k.id,class:se(["group mb-1 flex cursor-pointer items-center gap-2 rounded-lg px-3 py-2 transition-colors",r.value===k.id?"bg-primary-50 text-primary-700 dark:bg-primary-900/20 dark:text-primary-300":"text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-white/5"]),onClick:b=>r.value=k.id},[k.id===a(t).defaultSchemeId?(n(),K(v,{key:0,name:"i-heroicons-star-solid",class:"h-3.5 w-3.5 shrink-0 text-amber-500"})):E("",!0),e("span",nf,s(k.name),1),e("span",of,s(k.words.length),1)],10,sf))),128)),a(t).schemes.length===0?(n(),i("div",rf,s(a(o)("wordFilter.emptyScheme")),1)):E("",!0)])]),e("div",lf,[p.value?(n(),i(oe,{key:0},[e("div",cf,[e("div",null,[e("label",df,s(a(o)("wordFilter.schemeName")),1),u(A,{ref_key:"nameInputRef",ref:d,modelValue:m.value,"onUpdate:modelValue":S[1]||(S[1]=k=>m.value=k),size:"sm",placeholder:a(o)("wordFilter.schemeNamePlaceholder"),onBlur:C,onKeydown:ot(C,["enter"])},null,8,["modelValue","placeholder"])]),e("div",uf,[u(_,{size:"xs",variant:h.value?"solid":"soft",color:h.value?"warning":"neutral",icon:h.value?"i-heroicons-star-solid":"i-heroicons-star",onClick:L},{default:F(()=>[ee(s(h.value?a(o)("wordFilter.isDefault"):a(o)("wordFilter.setDefault")),1)]),_:1},8,["variant","color","icon"]),u(_,{size:"xs",variant:"soft",color:"error",icon:"i-heroicons-trash",onClick:M},{default:F(()=>[ee(s(a(o)("wordFilter.deleteScheme")),1)]),_:1})]),e("div",null,[e("label",mf,s(a(o)("wordFilter.addWords")),1),e("div",gf,[u(A,{modelValue:g.value,"onUpdate:modelValue":S[2]||(S[2]=k=>g.value=k),size:"sm",class:"flex-1",placeholder:a(o)("wordFilter.addWordsPlaceholder"),onKeydown:ot(z,["enter"])},null,8,["modelValue","placeholder"]),u(_,{size:"sm",color:"primary",icon:"i-heroicons-plus",onClick:z},{default:F(()=>[ee(s(a(o)("wordFilter.add")),1)]),_:1})])]),e("div",null,[e("div",pf,[e("label",hf,[ee(s(a(o)("wordFilter.wordList"))+" ",1),e("span",vf,"("+s(p.value.words.length)+")",1)]),p.value.words.length>0?(n(),K(_,{key:0,size:"xs",variant:"ghost",color:"error",onClick:I},{default:F(()=>[ee(s(a(o)("wordFilter.clearAll")),1)]),_:1})):E("",!0)]),p.value.words.length>0?(n(),i("div",yf,[(n(!0),i(oe,null,ce(p.value.words,k=>(n(),K(j,{key:k,color:"neutral",variant:"subtle",class:"group/badge cursor-default gap-1 pr-1"},{default:F(()=>[ee(s(k)+" ",1),u(v,{name:"i-heroicons-x-mark",class:"h-3.5 w-3.5 cursor-pointer text-gray-400 transition-colors hover:text-red-500",onClick:b=>$(k)},null,8,["onClick"])]),_:2},1024))),128))])):(n(),i("div",ff,s(a(o)("wordFilter.emptyWords")),1))])]),e("div",xf,[u(_,{color:"primary",variant:"soft",onClick:S[3]||(S[3]=k=>c.value=!1)},{default:F(()=>[ee(s(a(o)("wordFilter.close")),1)]),_:1})])],64)):(n(),i("div",bf,[u(v,{name:"i-heroicons-funnel",class:"h-10 w-10"}),e("p",kf,s(a(o)("wordFilter.selectOrCreate")),1),u(_,{size:"sm",color:"primary",variant:"soft",icon:"i-heroicons-plus",onClick:T},{default:F(()=>[ee(s(a(o)("wordFilter.createScheme")),1)]),_:1})]))])])])]),_:1},8,["open"])}}}),wf={class:"main-content mx-auto max-w-[920px] space-y-6 p-6"},$f={key:0,class:"flex flex-col gap-3 rounded-lg border border-primary-200 bg-primary-50/70 p-4 dark:border-primary-800 dark:bg-primary-950/30 sm:flex-row sm:items-center sm:justify-between"},Cf={class:"flex min-w-0 items-start gap-3"},Sf={class:"min-w-0 text-sm text-primary-700 dark:text-primary-300"},Tf={class:"flex shrink-0 flex-wrap gap-2"},Mf={key:1,class:"space-y-6"},If={class:"flex gap-6 p-4 sm:p-6"},Df={class:"flex min-w-0 flex-1 flex-col"},Lf={class:"relative w-full",style:{"aspect-ratio":"16 / 9"}},Af={key:1,class:"absolute inset-0 flex flex-col items-center justify-center gap-2 rounded-lg border border-dashed border-gray-200 bg-gray-50/40 text-gray-500 dark:border-gray-700 dark:bg-gray-800/30 dark:text-gray-400"},zf={class:"text-xs font-medium"},qf={class:"px-4 text-center text-[11px]"},Rf={class:"mt-2 text-center text-xs text-gray-500 dark:text-gray-400"},Ef={class:"w-[280px] shrink-0 space-y-4"},jf={class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"},Pf={class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"},Uf={class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"},Bf={class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"},Ff={class:"space-y-2"},Vf={class:"text-xs text-gray-400 dark:text-gray-500"},Nf={class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"},Hf={class:"flex items-center"},Of={key:0,class:"space-y-2"},Wf={class:"flex items-center justify-between"},Yf={class:"text-xs font-medium text-gray-600 dark:text-gray-400"},Qf={class:"flex gap-1"},Kf={class:"flex max-h-[360px] flex-wrap gap-1.5 overflow-y-auto"},Gf={key:0,class:"ml-1 opacity-60"},Jf={class:"mb-2 flex items-center justify-between"},Xf={class:"text-xs font-medium text-gray-600 dark:text-gray-400"},Zf={key:0,class:"mt-1 text-xs text-gray-400 dark:text-gray-500"},ex={class:"space-y-4"},tx={class:"text-sm text-gray-600 dark:text-gray-300"},ax={class:"flex justify-end gap-2"},sx="default",la="chatlab_zhTW_dict_prompt_dismissed",Ik=ge({__name:"WordcloudTab",props:{sessionId:{},timeFilter:{},memberId:{},showSharedTopics:{type:Boolean}},setup(l){const o=ma(()=>wt(()=>import("./EChartWordcloud-C5hLT1vS.js"),__vite__mapDeps([5,6,7,8,1]))),{t}=ye(),c=Qt(),r=ct(),m=ba(),g=Je(),d=l,p=f(!1),h=f([]),y=f({totalMessages:0,totalWords:0,uniqueWords:0}),T=f(1.25),M=f(150),C=x(()=>{const ie=h.value.slice(0,M.value),R=ie.reduce((D,V)=>D+V.count,0);return{words:ie.map(D=>({word:D.word,count:D.count,percentage:R>0?Math.round(D.count/R*1e4)/100:0}))}}),L=f("meaningful"),z=f(!0),$=f([]),I=f([]),w=f(new Map),S=["n","nr","ns","nt","nz","nw","vn","a","an"],v=f([]),_=x(()=>C.value.words.map(ie=>({word:ie.word,count:ie.count,percentage:ie.percentage??0}))),A=x(()=>[...w.value.entries()].map(([ie,R])=>({tag:ie,count:R}))),j=f(null),U=x({get:()=>m.getActiveSchemeId(d.sessionId),set:ie=>m.setSessionScheme(d.sessionId,ie)}),k=x(()=>[{label:t("wordFilter.noFilter"),value:"__none__"},...m.schemeOptions.map(ie=>({label:ie.isDefault?`${ie.label} ★`:ie.label,value:ie.value}))]),b=x({get:()=>U.value??"__none__",set:ie=>{U.value=ie==="__none__"?null:ie}}),q=x(()=>m.getExcludeWords(d.sessionId)),Y=f("default"),W=f([]),J=f(!1),me=f(null),pe=f(!1),X=f(!1),N=x(()=>c.locale),ae=x(()=>c.locale==="zh-TW"),ue=x(()=>N.value.startsWith("zh")),he=x(()=>W.value.filter(ie=>ie.downloaded).map(ie=>({label:t(`quotes.wordcloud.dict.${ie.id==="zh-CN"?"zhCN":ie.id==="zh-TW"?"zhTW":ie.id}`),value:ie.id}))),G=x(()=>W.value.some(ie=>ie.downloaded)),O=x(()=>!ue.value||X.value),H=x(()=>W.value.filter(ie=>!ie.downloaded));async function le(){try{W.value=await sa("/nlp/dicts"),ae.value&&Y.value==="default"&&W.value.find(D=>D.id==="zh-TW")?.downloaded&&(Y.value="zh-TW"),W.value.find(R=>R.id==="zh-CN")?.downloaded&&Y.value==="default"&&(Y.value="zh-CN")}catch(ie){console.error("Failed to get dict list:",ie)}finally{X.value=!0}}async function fe(ie){J.value=!0,me.value=ie;try{const R=await Ha(`/nlp/dicts/${ie}/download`);R.success?(await le(),Y.value=ie,g.success(t("quotes.wordcloud.dict.downloadSuccess"))):g.fail(t("quotes.wordcloud.dict.downloadFailed"),{description:R.error})}catch{g.fail(t("quotes.wordcloud.dict.downloadFailed"))}finally{J.value=!1,me.value=null,pe.value=!1}}function xe(){pe.value=!1,localStorage.setItem(la,"true")}function ke(){const ie=W.value.find(R=>R.id==="zh-TW");ae.value&&ie&&!ie.downloaded&&!localStorage.getItem(la)&&(pe.value=!0)}const ne=x(()=>[{label:t("quotes.wordcloud.posFilter.all"),value:"all"},{label:t("quotes.wordcloud.posFilter.meaningful"),value:"meaningful"},{label:t("quotes.wordcloud.posFilter.custom"),value:"custom"}]),re=[{label:"80",value:80},{label:"100",value:100},{label:"150",value:150},{label:"200",value:200},{label:"300",value:300}],ve=Math.max(...re.map(ie=>ie.value)),Me=x(()=>[{label:t("quotes.wordcloud.size.small"),value:.75},{label:t("quotes.wordcloud.size.medium"),value:1},{label:t("quotes.wordcloud.size.large"),value:1.25},{label:t("quotes.wordcloud.size.xlarge"),value:1.5}]),$e=x(()=>I.value.map(ie=>({label:ie.name,tag:ie.tag,value:ie.tag,count:w.value.get(ie.tag)||0,meaningful:ie.meaningful})));async function qe(){try{const ie=await sa("/nlp/pos-tags");I.value=ie,$.value=ie.filter(R=>R.meaningful).map(R=>R.tag)}catch(ie){console.error("加载词性标签失败:",ie)}}let Ae=0;async function Se(){if(!d.sessionId||!O.value)return;const ie=++Ae;try{const R=await bt("/nlp/word-frequency",{sessionId:d.sessionId,locale:N.value,timeFilter:d.timeFilter?{startTs:d.timeFilter.startTs,endTs:d.timeFilter.endTs}:void 0,memberId:j.value??void 0,topN:50,minCount:2,posFilterMode:"custom",customPosTags:[...S],enableStopwords:!0,dictType:Y.value,excludeWords:q.value.length>0?[...q.value]:void 0});if(ie!==Ae)return;v.value=R.words.map(D=>({word:D.word,count:D.count,percentage:D.percentage}))}catch(R){if(console.error("加载话题迷你词云数据失败:",R),ie!==Ae)return;v.value=[]}}let Re=0;async function je(){if(!d.sessionId||!O.value)return;const ie=++Re;h.value.length===0&&(p.value=!0);try{const R=await bt("/nlp/word-frequency",{sessionId:d.sessionId,locale:N.value,timeFilter:d.timeFilter?{startTs:d.timeFilter.startTs,endTs:d.timeFilter.endTs}:void 0,memberId:j.value??void 0,topN:ve,minCount:2,posFilterMode:L.value,customPosTags:L.value==="custom"?[...$.value]:void 0,enableStopwords:z.value,dictType:Y.value,excludeWords:q.value.length>0?[...q.value]:void 0});if(ie!==Re)return;if(h.value=R.words.map(D=>({word:D.word,count:D.count,percentage:D.percentage})),y.value={totalMessages:R.totalMessages,totalWords:R.totalWords,uniqueWords:R.uniqueWords},R.posTagStats){const D=new Map;for(const V of R.posTagStats)D.set(V.tag,V.count);w.value=D}}catch(R){if(console.error("加载词频数据失败:",R),ie!==Re)return;h.value=[]}finally{ie===Re&&(p.value=!1)}}de(()=>d.sessionId,()=>{j.value=null,h.value=[],v.value=[],y.value={totalMessages:0,totalWords:0,uniqueWords:0},w.value=new Map}),de(()=>[d.sessionId,d.timeFilter,j.value,L.value,z.value,Y.value,q.value,O.value],()=>{je()},{immediate:!0,deep:!0}),de(()=>[d.sessionId,d.timeFilter,j.value,Y.value,q.value,O.value],()=>{Se()},{immediate:!0,deep:!0}),de($,()=>{L.value==="custom"&&je()},{deep:!0}),de(N,()=>{je()});function Ue(ie){r.openChatRecordDrawer({keywords:[ie]})}return Ve(async()=>{qe(),await le(),ke()}),(ie,R)=>{const D=_e,V=Pe,P=Kt,B=pa,Z=We;return n(),i("div",wf,[ue.value&&!G.value?(n(),i("div",$f,[e("div",Cf,[u(D,{name:"i-heroicons-information-circle",class:"mt-0.5 shrink-0 text-xl text-primary-500"}),e("p",Sf,s(a(t)("quotes.wordcloud.dict.needDownload")),1)]),e("div",Tf,[(n(!0),i(oe,null,ce(W.value,Q=>(n(),K(V,{key:Q.id,size:"sm",color:"primary",loading:J.value&&me.value===Q.id,disabled:J.value&&me.value!==Q.id,icon:"i-heroicons-arrow-down-tray",onClick:te=>fe(Q.id)},{default:F(()=>[ee(s(a(t)(`quotes.wordcloud.dict.download_${Q.id}`,Q.label)),1)]),_:2},1032,["loading","disabled","onClick"]))),128))])])):E("",!0),O.value?(n(),i("div",Mf,[p.value&&_.value.length===0?(n(),K(a(kt),{key:0,text:a(t)("quotes.wordcloud.loading"),class:"py-8"},null,8,["text"])):E("",!0),u(By,{"total-messages":y.value.totalMessages,"total-words":y.value.totalWords,"unique-words":y.value.uniqueWords,"top-words":_.value,"topic-words":v.value,"pos-tag-stats":A.value,"time-filter":d.timeFilter,onWordClick:Ue},null,8,["total-messages","total-words","unique-words","top-words","topic-words","pos-tag-stats","time-filter"]),d.showSharedTopics?(n(),K(Wy,{key:1,"session-id":d.sessionId,"time-filter":d.timeFilter,"dict-type":Y.value,"exclude-words":q.value,onWordClick:Ue},null,8,["session-id","time-filter","dict-type","exclude-words"])):E("",!0),u(a(Ye),{title:a(t)("quotes.wordcloud.stats.wordsLabel"),"show-divider":!1},{default:F(()=>[e("div",If,[e("div",Df,[e("div",Lf,[p.value?(n(),K(a(kt),{key:0,text:a(t)("quotes.wordcloud.loading"),class:"absolute inset-0 z-10 rounded-lg bg-white/80 dark:bg-page-dark/80"},null,8,["text"])):_.value.length===0?(n(),i("div",Af,[u(D,{name:"i-heroicons-chat-bubble-bottom-center-text",class:"text-2xl"}),e("p",zf,s(a(t)("quotes.wordcloud.empty.title")),1),e("p",qf,s(a(t)("quotes.wordcloud.empty.description")),1)])):(n(),K(a(o),{key:2,data:C.value,height:"100%","max-words":M.value,"color-scheme":sx,"size-scale":T.value,loading:p.value,onWordClick:Ue},null,8,["data","max-words","size-scale","loading"]))]),e("p",Rf,s(a(t)("quotes.wordcloud.stats.clickHint")),1)]),e("div",Ef,[e("div",null,[e("h4",jf,s(a(t)("quotes.wordcloud.config.maxWords")),1),u(a(nt),{modelValue:M.value,"onUpdate:modelValue":R[0]||(R[0]=Q=>M.value=Q),size:"xs",items:re},null,8,["modelValue"])]),e("div",null,[e("h4",Pf,s(a(t)("quotes.wordcloud.config.sizeScale")),1),u(a(nt),{modelValue:T.value,"onUpdate:modelValue":R[1]||(R[1]=Q=>T.value=Q),size:"xs",items:Me.value},null,8,["modelValue","items"])]),e("div",null,[e("h4",Uf,s(a(t)("quotes.wordcloud.config.userFilter")),1),u(nh,{modelValue:j.value,"onUpdate:modelValue":R[2]||(R[2]=Q=>j.value=Q),"session-id":d.sessionId,class:"w-full"},null,8,["modelValue","session-id"])]),e("div",null,[e("h4",Bf,s(a(t)("quotes.wordcloud.config.dict")),1),e("div",Ff,[he.value.length>1?(n(),K(a(nt),{key:0,modelValue:Y.value,"onUpdate:modelValue":R[3]||(R[3]=Q=>Y.value=Q),size:"xs",items:he.value},null,8,["modelValue","items"])):E("",!0),(n(!0),i(oe,null,ce(H.value,Q=>(n(),i("div",{key:Q.id,class:"flex items-center gap-2"},[u(V,{size:"xs",variant:"soft",color:"primary",loading:J.value&&me.value===Q.id,disabled:J.value&&me.value!==Q.id,icon:"i-heroicons-arrow-down-tray",onClick:te=>fe(Q.id)},{default:F(()=>[ee(s(a(t)(`quotes.wordcloud.dict.download_${Q.id}`,a(t)("quotes.wordcloud.dict.download"))),1)]),_:2},1032,["loading","disabled","onClick"]),e("span",Vf,s(a(t)("quotes.wordcloud.dict.downloadHint")),1)]))),128))])]),e("div",null,[e("h4",Nf,s(a(t)("quotes.wordcloud.config.posFilter")),1),u(a(nt),{modelValue:L.value,"onUpdate:modelValue":R[4]||(R[4]=Q=>L.value=Q),size:"xs",items:ne.value},null,8,["modelValue","items"])]),e("div",Hf,[u(P,{modelValue:z.value,"onUpdate:modelValue":R[5]||(R[5]=Q=>z.value=Q),label:a(t)("quotes.wordcloud.config.enableStopwords")},null,8,["modelValue","label"])]),L.value==="custom"?(n(),i("div",Of,[e("div",Wf,[e("h4",Yf,s(a(t)("quotes.wordcloud.posFilter.customHint")),1),e("div",Qf,[u(V,{size:"xs",variant:"ghost",color:"neutral",onClick:R[6]||(R[6]=Q=>$.value=I.value.filter(te=>te.meaningful).map(te=>te.tag))},{default:F(()=>[ee(s(a(t)("quotes.wordcloud.posFilter.selectMeaningful")),1)]),_:1}),u(V,{size:"xs",variant:"ghost",color:"neutral",onClick:R[7]||(R[7]=Q=>$.value=I.value.map(te=>te.tag))},{default:F(()=>[ee(s(a(t)("quotes.wordcloud.posFilter.selectAll")),1)]),_:1}),u(V,{size:"xs",variant:"ghost",color:"neutral",onClick:R[8]||(R[8]=Q=>$.value=[])},{default:F(()=>[ee(s(a(t)("quotes.wordcloud.posFilter.clearAll")),1)]),_:1})])]),e("div",Kf,[(n(!0),i(oe,null,ce($e.value,Q=>(n(),K(B,{key:Q.value,color:$.value.includes(Q.value)?"primary":"neutral",variant:$.value.includes(Q.value)?"solid":"outline",class:"cursor-pointer select-none transition-colors",onClick:()=>{$.value.includes(Q.value)?$.value=$.value.filter(te=>te!==Q.value):$.value=[...$.value,Q.value]}},{default:F(()=>[ee(s(Q.label)+" ",1),Q.count>0?(n(),i("span",Gf,"("+s(Q.count)+")",1)):E("",!0)]),_:2},1032,["color","variant","onClick"]))),128))])])):E("",!0),e("div",null,[e("div",Jf,[e("h4",Xf,s(a(t)("wordFilter.filterScheme")),1),u(V,{size:"xs",variant:"ghost",color:"neutral",icon:"i-heroicons-cog-6-tooth","aria-label":a(t)("wordFilter.manage"),onClick:R[9]||(R[9]=Q=>a(m).openModal())},null,8,["aria-label"])]),u(a(nt),{modelValue:b.value,"onUpdate:modelValue":R[10]||(R[10]=Q=>b.value=Q),size:"xs",items:k.value},null,8,["modelValue","items"]),q.value.length>0?(n(),i("p",Zf,s(a(t)("wordFilter.activeCount",{count:q.value.length})),1)):E("",!0)])])])]),_:1},8,["title"])])):E("",!0),u(Z,{open:pe.value,"onUpdate:open":R[12]||(R[12]=Q=>pe.value=Q),title:a(t)("quotes.wordcloud.dict.promptTitle")},{body:F(()=>[e("div",ex,[e("p",tx,s(a(t)("quotes.wordcloud.dict.promptDescription")),1),e("div",ax,[u(V,{variant:"ghost",color:"neutral",onClick:xe},{default:F(()=>[ee(s(a(t)("quotes.wordcloud.dict.promptLater")),1)]),_:1}),u(V,{color:"primary",loading:J.value,onClick:R[11]||(R[11]=Q=>fe("zh-TW"))},{default:F(()=>[ee(s(a(t)("quotes.wordcloud.dict.promptDownload")),1)]),_:1},8,["loading"])])])]),_:1},8,["open","title"]),u(_f)])}}}),nx={class:"flex items-center justify-between gap-3"},ox={class:"flex items-center gap-2"},rx={class:"text-sm font-medium text-gray-900 dark:text-white"},lx={class:"text-xs text-gray-500 dark:text-gray-400"},ix=ge({__name:"OwnerEntryCard",props:{sessionId:{},members:{},chatType:{}},setup(l){const{t:o}=ye(),t=Oa(),c=l,r=f(!1);function m(p){return p.groupNickname||p.accountName||p.platformId}const g=x(()=>{const p=t.currentSession?.ownerId;return p&&c.members.find(h=>h.platformId===p)||null}),d=x(()=>g.value?m(g.value):t.currentSession?.ownerId??"");return(p,h)=>{const y=_e,T=Pe;return n(),K(a(at),{class:"w-150 p-3"},{default:F(()=>[e("div",nx,[e("div",ox,[e("div",{class:se(["flex h-8 w-8 items-center justify-center rounded-full bg-linear-to-br",l.chatType==="group"?"from-pink-400 to-pink-600":"from-purple-400 to-purple-600"])},[u(y,{name:"i-heroicons-user",class:"h-4 w-4 text-white"})],2),e("div",null,[e("h3",rx,s(d.value?a(o)("members.ownerPrompt.currentOwner",{name:d.value}):a(o)("members.ownerPrompt.choose")),1),e("p",lx,s(a(o)("members.ownerPrompt.helper")),1)])]),u(T,{size:"sm",variant:d.value?"outline":"solid",color:"primary",onClick:h[0]||(h[0]=M=>r.value=!0)},{default:F(()=>[ee(s(d.value?a(o)("members.ownerPrompt.change"):a(o)("members.ownerPrompt.choose")),1)]),_:1},8,["variant"])]),u(Wa,{modelValue:r.value,"onUpdate:modelValue":h[1]||(h[1]=M=>r.value=M),"session-id":l.sessionId,"chat-type":l.chatType},null,8,["modelValue","session-id","chat-type"])]),_:1})}}}),cx={key:0,class:"mb-6"},dx={class:"flex items-center gap-3"},ux={class:"text-xl font-bold text-gray-900 dark:text-white"},mx={class:"text-sm text-gray-500 dark:text-gray-400"},gx={class:"mb-4 flex flex-wrap items-center justify-between gap-3"},px={key:0,class:"flex items-center gap-2"},hx={class:"text-xs text-gray-500 dark:text-gray-400"},vx={key:0,class:"flex flex-1 items-center justify-center"},yx={key:1,class:"flex flex-1 flex-col items-center justify-center gap-3"},fx={class:"text-sm text-gray-500 dark:text-gray-400"},xx={key:2,class:"flex flex-1 flex-col items-center justify-center"},bx={class:"text-gray-500 dark:text-gray-400"},kx={key:3,class:"min-h-0 flex-1 overflow-x-auto overflow-y-hidden"},_x={key:0,"aria-hidden":"true"},wx={class:"flex shrink-0 flex-col leading-none"},$x={class:"flex shrink-0 flex-col leading-none"},Cx={class:"flex shrink-0 flex-col leading-none"},Sx={class:"inline-flex items-center gap-1.5"},Tx={class:"text-right"},Mx=["data-index","onClick"],Ix={key:0,class:"flex justify-center"},Dx={class:"flex min-w-0 items-center gap-2.5"},Lx={class:"min-w-0"},Ax=["title"],zx=["title"],qx=["title"],Rx={class:"text-right font-mono text-sm font-semibold tabular-nums text-gray-900 dark:text-white"},Ex=["title"],jx={class:"flex justify-end gap-1"},Px={class:"p-6 text-center"},Ux={class:"mx-auto mb-4 flex h-14 w-14 items-center justify-center rounded-full bg-red-100 dark:bg-red-900/30"},Bx={class:"mb-2 text-lg font-semibold text-gray-900 dark:text-white"},Fx={class:"mb-6 text-sm text-gray-500 dark:text-gray-400"},Vx={class:"flex justify-center gap-3"},Nx={class:"p-6 text-center"},Hx={class:"mx-auto mb-4 flex h-14 w-14 items-center justify-center rounded-full bg-red-100 dark:bg-red-900/30"},Ox={class:"mb-2 text-lg font-semibold text-gray-900 dark:text-white"},Wx={class:"mb-6 text-sm text-gray-500 dark:text-gray-400"},Yx={class:"flex justify-center gap-3"},Qx={class:"p-6"},Kx={class:"mb-4 flex items-center gap-3"},Gx={class:"flex h-10 w-10 items-center justify-center rounded-full bg-amber-100 dark:bg-amber-900/30"},Jx={class:"text-lg font-semibold text-gray-900 dark:text-white"},Xx={class:"mb-2 text-sm text-gray-600 dark:text-gray-400"},Zx={class:"mb-6 text-xs text-amber-700 dark:text-amber-300"},eb={class:"flex justify-end gap-2"},tb=64,ab=ge({__name:"MemberList",props:{sessionId:{},showHeader:{type:Boolean,default:!0},chatType:{default:"group"}},emits:["data-changed"],setup(l,{emit:o}){const{t}=ye(),c=Oe(),r=ct(),m=l,g=o,d=f([]),p=f(!1),h=f(!1),y=f(""),T=x(()=>Xa(m.chatType,d.value.length)),M=x(()=>m.chatType==="group"?"":T.value?"member-table-grid--private":"member-table-grid--private-without-selection"),C=f(null),L=f(!1),z=f(!1),$=f(!1),I=f(!1),w=f(!1),{sortState:S,toggleSort:v,resetSort:_,isSortActive:A}=Ya({initialState:{field:"messageCount",direction:"desc"}}),j=f(new Set);let U=0;function k(D,V){const P=V instanceof Error?V:new Error(String(V));console.error(D,P),Ja(`${D} ${P.message}`,P.stack)}function b(D){return D.groupNickname||D.accountName||D.platformId}function q(D){return b(D).slice(0,1)}function Y(D){r.openChatRecordDrawer({sessionId:m.sessionId,memberId:D.id,memberName:b(D)})}const W=x(()=>Za(d.value,y.value,S.value)),{selectedIds:J,setSelection:me,clearSelection:pe,handleRowClick:X,handleRowMouseDown:N}=Qa({rows:W,getRowId:D=>D.id}),ae=x(()=>d.value.filter(D=>J.value.has(D.id))),ue=x(()=>ae.value.length===2),he=x(()=>ae.value.reduce((D,V)=>D+V.messageCount,0));function G(D,V,P){T.value&&X(D,V,P)}function O(D){T.value&&N(D)}const H=x(()=>{if(ae.value.length!==2)return null;const[D,V]=ae.value;return V.messageCount>D.messageCount||V.messageCount===D.messageCount&&V.id<D.id?{primary:V,secondary:D}:{primary:D,secondary:V}});function le(D,V){return A(D,V)?"text-primary-500 dark:text-primary-400":"text-gray-300 dark:text-gray-600"}const fe=f(null),xe=Ka(x(()=>({count:W.value.length,getScrollElement:()=>fe.value,estimateSize:()=>tb,overscan:8,getItemKey:D=>W.value[D]?.id??D}))),ke=x(()=>xe.value.getVirtualItems().map(D=>({virtualItem:D,member:W.value[D.index]}))),ne=x(()=>xe.value.getTotalSize());function re(D){D instanceof HTMLElement&&xe.value.measureElement(D)}async function ve(){await Fe(),fe.value?.scrollTo({top:0}),xe.value.measure()}async function Me(){const D=m.sessionId;if(!D)return;const V=++U;p.value=!0,h.value=!1;try{const P=await c.getMembers(D);if(V!==U||D!==m.sessionId)return;d.value=P,await Fe(),xe.value.measure()}catch(P){V===U&&(h.value=!0),k("Failed to load member list:",P)}finally{V===U&&(p.value=!1)}}function $e(D,V){const P=new Set(j.value);V?P.add(D):P.delete(D),j.value=P}async function qe(D,V){const P=m.sessionId,B=JSON.parse(JSON.stringify(V)),Z=JSON.stringify(D.aliases),Q=JSON.stringify(B);if(Z!==Q){$e(D.id,!0);try{if(await c.updateMemberAliases(P,D.id,B)&&P===m.sessionId){const Ee=d.value.findIndex(De=>De.id===D.id);Ee!==-1&&(d.value[Ee]={...d.value[Ee],aliases:B},await Fe(),xe.value.measure())}}catch(te){k("Failed to save member aliases:",te)}finally{$e(D.id,!1)}}}function Ae(D){C.value=D}function Se(){C.value=null}async function Re(){if(C.value){L.value=!0;try{const D=C.value.id;if(await c.deleteMember(m.sessionId,D)){const P=new Set(J.value);P.delete(D),me(P),await Me(),g("data-changed")}}catch(D){k("Failed to delete member:",D)}finally{L.value=!1,C.value=null}}}function je(){J.value.size!==0&&(z.value=!0)}async function Ue(){const D=m.sessionId,V=Array.from(J.value);if(V.length!==0){$.value=!0;try{await c.deleteMembers(D,V)&&D===m.sessionId&&(z.value=!1,pe(),await Me(),g("data-changed"))}catch(P){k("Failed to delete selected members:",P)}finally{$.value=!1}}}function ie(){ue.value&&(I.value=!0)}async function R(){if(H.value){w.value=!0;try{await c.mergeMembers(m.sessionId,H.value.primary.id,H.value.secondary.id)&&(I.value=!1,pe(),await Me(),g("data-changed"))}catch(D){k("Failed to merge members:",D)}finally{w.value=!1}}}return de([y,S],ve),de(T,D=>{D||pe()}),de(()=>m.sessionId,()=>{U+=1,d.value=[],h.value=!1,j.value=new Set,y.value="",_(),pe(),ve(),Me()},{immediate:!0}),dt(()=>{U+=1}),(D,V)=>{const P=Pe,B=St,Z=_e,Q=pt,te=Kt,Ee=is,De=We;return n(),i("div",{class:se(["main-content",m.showHeader?"max-w-5xl p-6":"flex h-full max-w-none flex-col overflow-hidden p-4"])},[m.showHeader?(n(),i("div",cx,[e("div",dx,[e("div",null,[e("h2",ux,s(a(t)(m.chatType==="private"?"members.private.title":"members.list.title")),1),e("p",mx,s(a(t)(m.chatType==="private"?"members.private.description":"members.list.description",{count:d.value.length})),1)])])])):E("",!0),u(ix,{class:"mb-6","session-id":l.sessionId,members:d.value,"chat-type":m.chatType},null,8,["session-id","members","chat-type"]),e("div",gx,[u(B,{modelValue:y.value,"onUpdate:modelValue":V[1]||(V[1]=Te=>y.value=Te),placeholder:a(t)("members.list.searchPlaceholder"),icon:"i-heroicons-magnifying-glass",class:"w-full md:w-100"},os({_:2},[y.value?{name:"trailing",fn:F(()=>[u(P,{icon:"i-heroicons-x-mark",variant:"link",color:"neutral",size:"xs",onClick:V[0]||(V[0]=Te=>y.value="")})]),key:"0"}:void 0]),1032,["modelValue","placeholder"]),T.value?(n(),i("div",px,[p.value&&d.value.length>0?(n(),K(Z,{key:0,name:"i-heroicons-arrow-path",class:"h-4 w-4 animate-spin text-primary-500"})):E("",!0),e("span",hx,s(a(t)("members.list.selectedCount",{count:a(J).size})),1),u(P,{icon:"i-heroicons-link",size:"sm",color:"primary",disabled:!ue.value,onClick:ie},{default:F(()=>[ee(s(a(t)("members.list.mergeSelected")),1)]),_:1},8,["disabled"]),u(P,{icon:"i-heroicons-trash",size:"sm",color:"error",variant:"outline",disabled:a(J).size===0,onClick:je},{default:F(()=>[ee(s(a(t)("members.list.deleteSelected")),1)]),_:1},8,["disabled"])])):E("",!0)]),e("div",{class:se(["flex min-h-[240px] flex-col overflow-hidden rounded-lg border border-gray-200/60 bg-card-bg dark:border-white/5 dark:bg-card-dark",m.showHeader?"h-[500px]":"min-h-0 flex-1"])},[p.value&&d.value.length===0?(n(),i("div",vx,[u(Z,{name:"i-heroicons-arrow-path",class:"h-8 w-8 animate-spin text-primary-500"})])):h.value&&d.value.length===0?(n(),i("div",yx,[u(Z,{name:"i-heroicons-exclamation-circle",class:"h-10 w-10 text-red-400"}),e("p",fx,s(a(t)("members.list.loadError")),1),u(P,{size:"sm",variant:"outline",icon:"i-heroicons-arrow-path",onClick:Me},{default:F(()=>[ee(s(a(t)("common.retry")),1)]),_:1})])):W.value.length===0?(n(),i("div",xx,[u(Z,{name:"i-heroicons-user-group",class:"mb-3 h-12 w-12 text-gray-300 dark:text-gray-600"}),e("p",bx,s(y.value?a(t)("members.list.noMatch"):a(t)("members.list.empty")),1)])):(n(),i("div",kx,[e("div",{class:se(["flex h-full flex-col",m.chatType==="private"?"min-w-[920px]":"min-w-[1120px]"])},[e("div",{class:se(["member-table-grid shrink-0 border-b border-gray-200 bg-gray-50 px-3 py-2 text-xs font-medium text-gray-500 dark:border-white/5 dark:bg-page-dark/80 dark:text-gray-400",M.value])},[T.value?(n(),i("span",_x)):E("",!0),e("span",null,s(a(t)("members.list.table.accountName")),1),m.chatType==="group"?(n(),i("button",{key:1,type:"button",class:"flex items-center justify-start gap-1.5 text-left transition-colors hover:text-gray-700 dark:hover:text-gray-200",onClick:V[2]||(V[2]=Te=>a(v)("groupNickname"))},[ee(s(a(t)("members.list.table.groupNickname"))+" ",1),e("span",wx,[u(Z,{name:"i-heroicons-chevron-up",class:se(["h-2.5 w-2.5",le("groupNickname","asc")])},null,8,["class"]),u(Z,{name:"i-heroicons-chevron-down",class:se(["-mt-0.5 h-2.5 w-2.5",le("groupNickname","desc")])},null,8,["class"])])])):E("",!0),e("button",{type:"button",class:"flex items-center justify-end gap-1.5 text-right transition-colors hover:text-gray-700 dark:hover:text-gray-200",onClick:V[3]||(V[3]=Te=>a(v)("messageCount"))},[ee(s(a(t)("members.list.table.messageCount"))+" ",1),e("span",$x,[u(Z,{name:"i-heroicons-chevron-up",class:se(["h-2.5 w-2.5",le("messageCount","asc")])},null,8,["class"]),u(Z,{name:"i-heroicons-chevron-down",class:se(["-mt-0.5 h-2.5 w-2.5",le("messageCount","desc")])},null,8,["class"])])]),e("button",{type:"button",class:"flex items-center justify-end gap-1.5 text-right transition-colors hover:text-gray-700 dark:hover:text-gray-200",onClick:V[4]||(V[4]=Te=>a(v)("lastMessageTs"))},[ee(s(a(t)("members.list.table.lastMessageTime"))+" ",1),e("span",Cx,[u(Z,{name:"i-heroicons-chevron-up",class:se(["h-2.5 w-2.5",le("lastMessageTs","asc")])},null,8,["class"]),u(Z,{name:"i-heroicons-chevron-down",class:se(["-mt-0.5 h-2.5 w-2.5",le("lastMessageTs","desc")])},null,8,["class"])])]),e("span",Sx,[e("span",null,s(a(t)("members.list.table.customAlias")),1),u(Q,{text:a(t)("members.list.tip"),popper:{placement:"top"}},{default:F(()=>[u(Z,{name:"i-heroicons-question-mark-circle",class:"h-4 w-4 text-gray-400 dark:text-gray-500"})]),_:1},8,["text"])]),e("span",Tx,s(a(t)("members.list.table.actions")),1)],2),e("div",{ref_key:"listScrollRef",ref:fe,class:"min-h-0 flex-1 overflow-y-auto"},[e("div",{class:"relative",style:Ke({height:`${ne.value}px`})},[(n(!0),i(oe,null,ce(ke.value,({virtualItem:Te,member:Le})=>(n(),i("div",{key:String(Te.key),ref_for:!0,ref:re,"data-index":Te.index,class:se(["member-table-grid absolute left-0 top-0 w-full min-h-16 border-b border-gray-100/80 px-3 py-2 transition-colors hover:bg-gray-50 dark:border-white/5 dark:hover:bg-gray-800/30",[M.value,T.value?"cursor-pointer":"",T.value&&a(J).has(Le.id)?"bg-primary-50/70 dark:bg-primary-950/20":""]]),style:Ke({transform:`translateY(${Te.start}px)`}),onMousedown:O,onClick:Ge=>G(Te.index,Le.id,Ge)},[T.value?(n(),i("div",Ix,[u(te,{"model-value":a(J).has(Le.id),onClick:Be(Ge=>G(Te.index,Le.id,Ge),["stop"])},null,8,["model-value","onClick"])])):E("",!0),e("div",Dx,[u(Ga,{src:Le.avatar,alt:b(Le),text:q(Le),"fallback-class":["flex h-8 w-8 items-center justify-center rounded-full text-[10px] font-bold","bg-primary-500 text-white"]},null,8,["src","alt","text"]),e("div",Lx,[e("p",{class:"truncate text-sm font-medium text-gray-900 dark:text-white",title:Le.accountName||"-"},s(Le.accountName||"-"),9,Ax),e("p",{class:"truncate text-xs text-gray-400 dark:text-gray-500",title:Le.platformId},s(Le.platformId),9,zx)])]),m.chatType==="group"?(n(),i("p",{key:1,class:se(["truncate text-sm text-gray-700 dark:text-gray-300",Le.groupNickname?"font-medium":"text-gray-400 dark:text-gray-500"]),title:Le.groupNickname||"-"},s(Le.groupNickname||"-"),11,qx)):E("",!0),e("span",Rx,s(Le.messageCount.toLocaleString()),1),e("span",{class:"text-right font-mono text-xs tabular-nums text-gray-600 dark:text-gray-400",title:Le.lastMessageTs===null?"-":a(oa)(Le.lastMessageTs)},s(Le.lastMessageTs===null?"-":a(oa)(Le.lastMessageTs)),9,Ex),u(Ee,{"model-value":Le.aliases,placeholder:a(t)("members.list.aliasPlaceholder"),loading:j.value.has(Le.id),size:"xs",class:"w-full",onClick:V[5]||(V[5]=Be(()=>{},["stop"])),"onUpdate:modelValue":Ge=>qe(Le,Ge)},null,8,["model-value","placeholder","loading","onUpdate:modelValue"]),e("div",jx,[u(P,{icon:"i-heroicons-chat-bubble-left-ellipsis",size:"xs",color:"neutral",variant:"ghost",title:a(t)("common.viewChatRecords"),onClick:Be(Ge=>Y(Le),["stop"])},null,8,["title","onClick"]),u(P,{icon:"i-heroicons-trash",size:"xs",color:"error",variant:"ghost",title:a(t)("members.list.delete"),onClick:Be(Ge=>Ae(Le),["stop"])},null,8,["title","onClick"])])],46,Mx))),128))],4)],512)],2)]))],2),u(De,{open:!!C.value,ui:{content:"max-w-sm"},"onUpdate:open":V[6]||(V[6]=Te=>C.value=null)},{content:F(()=>[e("div",Px,[e("div",Ux,[u(Z,{name:"i-heroicons-exclamation-triangle",class:"h-7 w-7 text-red-500"})]),e("h3",Bx,s(a(t)("members.list.modal.title")),1),e("p",Fx,s(a(t)("members.list.modal.content",{name:C.value?b(C.value):"",count:C.value?.messageCount.toLocaleString()})),1),e("div",Vx,[u(P,{variant:"outline",onClick:Se},{default:F(()=>[ee(s(a(t)("members.list.modal.cancel")),1)]),_:1}),u(P,{color:"error",loading:L.value,onClick:Re},{default:F(()=>[ee(s(a(t)("members.list.modal.confirm")),1)]),_:1},8,["loading"])])])]),_:1},8,["open"]),u(De,{open:z.value,ui:{content:"max-w-sm"},"onUpdate:open":V[8]||(V[8]=Te=>z.value=Te)},{content:F(()=>[e("div",Nx,[e("div",Hx,[u(Z,{name:"i-heroicons-exclamation-triangle",class:"h-7 w-7 text-red-500"})]),e("h3",Ox,s(a(t)("members.list.batchDeleteModal.title")),1),e("p",Wx,s(a(t)("members.list.batchDeleteModal.content",{count:ae.value.length,messageCount:he.value.toLocaleString()})),1),e("div",Yx,[u(P,{variant:"outline",disabled:$.value,onClick:V[7]||(V[7]=Te=>z.value=!1)},{default:F(()=>[ee(s(a(t)("members.list.modal.cancel")),1)]),_:1},8,["disabled"]),u(P,{color:"error",loading:$.value,onClick:Ue},{default:F(()=>[ee(s(a(t)("members.list.modal.confirm")),1)]),_:1},8,["loading"])])])]),_:1},8,["open"]),u(De,{open:I.value,ui:{content:"max-w-md"},"onUpdate:open":V[10]||(V[10]=Te=>I.value=Te)},{content:F(()=>[e("div",Qx,[e("div",Kx,[e("div",Gx,[u(Z,{name:"i-heroicons-link",class:"h-5 w-5 text-amber-600 dark:text-amber-400"})]),e("h3",Jx,s(a(t)("members.list.mergeModal.title")),1)]),e("p",Xx,s(a(t)("members.list.mergeModal.content",{source:H.value?b(H.value.secondary):"",sourceCount:H.value?H.value.secondary.messageCount.toLocaleString():"0",target:H.value?b(H.value.primary):"",targetCount:H.value?H.value.primary.messageCount.toLocaleString():"0"})),1),e("p",Zx,s(a(t)("members.list.mergeModal.hint")),1),e("div",eb,[u(P,{variant:"outline",disabled:w.value,onClick:V[9]||(V[9]=Te=>I.value=!1)},{default:F(()=>[ee(s(a(t)("members.list.mergeModal.cancel")),1)]),_:1},8,["disabled"]),u(P,{color:"primary",loading:w.value,onClick:R},{default:F(()=>[ee(s(a(t)("members.list.mergeModal.confirm")),1)]),_:1},8,["loading"])])])]),_:1},8,["open"])],2)}}}),Dk=tt(ab,[["__scopeId","data-v-0754d30f"]]),sb={class:"mt-3 flex items-center justify-between gap-3"},Lk=ge({__name:"SessionAnalysisHeader",props:Pt({title:{},avatar:{},icon:{},iconClass:{},tabs:{},currentSessionId:{},initialTimeState:{}},{activeTab:{required:!0},activeTabModifiers:{},timeRangeValue:{required:!0},timeRangeValueModifiers:{}}),emits:Pt(["openIncrementalImport","openMemberManagement","openChatRecord","update:fullRange","update:availableYears"],["update:activeTab","update:timeRangeValue"]),setup(l,{emit:o}){const t=jt(l,"activeTab"),c=jt(l,"timeRangeValue"),r=l,m=o,{t:g}=ye(),d=ct(),p=x(()=>!["ai-chat","memory","lab","debug"].includes(t.value)),h=x(()=>r.tabs.map(y=>({id:y.id,label:g(y.labelKey),icon:y.icon})));return(y,T)=>{const M=Pe,C=pt;return n(),K(xs,{title:l.title,avatar:l.avatar,size:"compact",icon:l.icon,"icon-class":l.iconClass},{actions:F(()=>[a(d).toolsPanelPosition==="header"?(n(),i(oe,{key:0},[u(C,{text:a(g)("analysis.tooltip.viewChatRecord")},{default:F(()=>[u(M,{icon:"i-heroicons-chat-bubble-bottom-center-text",variant:"ghost",color:"gray",size:"sm",class:"hover:bg-gray-100 dark:hover:bg-gray-800",onClick:T[0]||(T[0]=L=>m("openChatRecord"))})]),_:1},8,["text"]),u(C,{text:a(g)("analysis.tooltip.incrementalImport")},{default:F(()=>[u(M,{icon:"i-heroicons-plus-circle",variant:"ghost",color:"gray",size:"sm",class:"hover:bg-gray-100 dark:hover:bg-gray-800",onClick:T[1]||(T[1]=L=>m("openIncrementalImport"))})]),_:1},8,["text"]),u(C,{text:a(g)("analysis.tooltip.memberManagement")},{default:F(()=>[u(M,{icon:"i-heroicons-user-group",variant:"ghost",color:"gray",size:"sm",class:"hover:bg-gray-100 dark:hover:bg-gray-800",onClick:T[2]||(T[2]=L=>m("openMemberManagement"))})]),_:1},8,["text"]),u(ht,{color:"gray"}),u(C,{text:a(g)("analysis.tooltip.more")},{default:F(()=>[u(M,{"data-tools-panel-trigger":"",icon:"i-heroicons-ellipsis-horizontal",variant:"ghost",color:"gray",size:"sm",class:"hover:bg-gray-100 dark:hover:bg-gray-800",onClick:T[3]||(T[3]=L=>a(d).toggleToolsPanelOpen())})]),_:1},8,["text"])],64)):(n(),K(ht,{key:1,color:"gray"}))]),default:F(()=>[e("div",sb,[u(a(es),{modelValue:t.value,"onUpdate:modelValue":T[4]||(T[4]=L=>t.value=L),class:"min-w-0 shrink",items:h.value},null,8,["modelValue","items"]),u(fs,{modelValue:c.value,"onUpdate:modelValue":T[5]||(T[5]=L=>c.value=L),"session-id":l.currentSessionId??void 0,visible:p.value,"initial-state":l.initialTimeState,size:"sm","onUpdate:fullRange":T[6]||(T[6]=L=>m("update:fullRange",L)),"onUpdate:availableYears":T[7]||(T[7]=L=>m("update:availableYears",L))},null,8,["modelValue","session-id","visible","initial-state"])])]),_:1},8,["title","avatar","icon","icon-class"])}}}),nb={class:"space-y-4 p-5"},ob={class:"flex items-center gap-2"},rb={class:"text-base font-semibold text-gray-900 dark:text-white"},lb={key:0,class:"flex items-center gap-2 text-sm text-gray-400"},ib={class:"rounded-lg border border-gray-200 bg-gray-50 p-3 text-sm dark:border-gray-700 dark:bg-gray-800/50"},cb={class:"flex items-center justify-between"},db={class:"text-gray-500"},ub={class:"font-medium text-gray-800 dark:text-gray-200"},mb={key:0,class:"mt-1 flex items-center justify-between"},gb={class:"text-gray-500"},pb={class:"text-gray-700 dark:text-gray-300"},hb={key:1,class:"mt-2"},vb={class:"flex items-center justify-between text-xs text-gray-500"},yb={class:"mt-1 h-1.5 w-full overflow-hidden rounded-full bg-gray-200 dark:bg-gray-700"},fb={key:2,class:"mt-1 text-xs text-red-500"},xb={class:"text-sm text-gray-600 dark:text-gray-400"},bb={key:0,class:"rounded border border-amber-200 bg-amber-50 px-2 py-1.5 text-xs text-amber-700 dark:border-amber-800/50 dark:bg-amber-900/20 dark:text-amber-400"},kb={class:"flex justify-end gap-2"},_b={class:"text-xs text-gray-400"},wb={class:"flex flex-wrap justify-end gap-2"},ze="settings.ai.semanticIndex",Ak=ge({__name:"SemanticIndexSessionModal",props:{modelValue:{type:Boolean},sessionId:{},messageCount:{}},emits:["update:modelValue"],setup(l,{emit:o}){const t=l,c=o,{t:r}=ye(),m=ts(),g=x({get:()=>t.modelValue,set:S=>c("update:modelValue",S)}),d=f(null),p=f(!1),h=f(!1),y=f(!1),T=x(()=>{const S=d.value;return!S||!S.enabled?r(`${ze}.session.notEnabled`):S.needsRebuild?r(`${ze}.state.needsRebuild`):S.running||S.queued||S.indexStatus==="running"?r(`${ze}.state.building`):S.indexStatus==="completed"?r(`${ze}.state.completed`):S.indexStatus==="failed"?r(`${ze}.state.failed`):S.indexStatus==="paused"?r(`${ze}.state.paused`):r(`${ze}.state.pending`)}),M=x(()=>{const S=d.value;return!!S&&(S.running||S.queued||S.indexStatus==="running")}),C=x(()=>d.value&&d.value.totalMessages>0?Math.round(d.value.indexedMessages/d.value.totalMessages*100):0);let L=null;function z(){L&&(clearTimeout(L),L=null)}function $(){z(),L=setTimeout(async()=>{try{d.value=await m.status(t.sessionId)}catch(S){console.error("[semantic-index] poll status failed:",S)}M.value&&t.modelValue?$():z()},1500)}async function I(){h.value=!0;try{const[S,v]=await Promise.all([m.getConfig(),m.status(t.sessionId)]);p.value=S.config.enabled&&S.configured&&(S.config.mode==="local"?!!S.config.local.modelId:!!S.config.api?.baseUrl&&!!S.config.api?.model&&(!as(S.config.api?.baseUrl)||S.apiKeySet)),d.value=v}catch(S){console.error("[semantic-index] load session status failed:",S)}finally{h.value=!1}M.value&&$()}async function w(S){y.value=!0;try{d.value=await m[S](t.sessionId)}catch(v){console.error(`[semantic-index] ${S} failed:`,v)}finally{y.value=!1}M.value?$():z()}return de(()=>t.modelValue,S=>{S?I():z()}),dt(z),(S,v)=>{const _=_e,A=Pe,j=We;return n(),K(j,{open:g.value,"onUpdate:open":v[10]||(v[10]=U=>g.value=U),ui:{content:"z-[101]",overlay:"z-[100]"}},{content:F(()=>[e("div",nb,[e("div",ob,[u(_,{name:"i-heroicons-circle-stack",class:"h-5 w-5 text-blue-500"}),e("h3",rb,s(a(r)(`${ze}.title`)),1)]),h.value?(n(),i("div",lb,[u(_,{name:"i-heroicons-arrow-path",class:"h-4 w-4 animate-spin"}),ee(" "+s(a(r)("common.loading")),1)])):(n(),i(oe,{key:1},[e("div",ib,[e("div",cb,[e("span",db,s(a(r)(`${ze}.session.statusLabel`)),1),e("span",ub,s(T.value),1)]),d.value?.enabled&&d.value.indexStatus==="completed"?(n(),i("div",mb,[e("span",gb,s(a(r)(`${ze}.session.coverageLabel`)),1),e("span",pb,s(C.value)+"%",1)])):E("",!0),M.value?(n(),i("div",hb,[e("div",vb,[e("span",null,s(a(r)(`${ze}.session.progressLabel`)),1),e("span",null,s(d.value?.indexedMessages??0)+" / "+s(d.value?.totalMessages??0)+" ("+s(C.value)+"%) ",1)]),e("div",yb,[e("div",{class:"h-full rounded-full bg-blue-500 transition-all duration-500",style:Ke({width:`${C.value}%`})},null,4)])])):E("",!0),d.value?.error?(n(),i("p",fb,s(d.value.error),1)):E("",!0)]),d.value?.enabled?(n(),i(oe,{key:1},[e("p",_b,s(a(r)(`${ze}.session.buildVsEnable`)),1),e("div",wb,[M.value?(n(),i(oe,{key:0},[u(A,{variant:"soft",loading:y.value,onClick:v[2]||(v[2]=U=>w("pause"))},{default:F(()=>[ee(s(a(r)(`${ze}.action.pause`)),1)]),_:1},8,["loading"]),u(A,{color:"error",variant:"soft",disabled:y.value,onClick:v[3]||(v[3]=U=>w("cancel"))},{default:F(()=>[ee(s(a(r)(`${ze}.action.cancel`)),1)]),_:1},8,["disabled"])],64)):d.value?.indexStatus==="completed"&&!d.value?.needsRebuild?(n(),K(A,{key:1,variant:"soft",loading:y.value,onClick:v[4]||(v[4]=U=>w("rebuild"))},{default:F(()=>[ee(s(a(r)(`${ze}.action.rebuild`)),1)]),_:1},8,["loading"])):d.value?.needsRebuild?(n(),K(A,{key:2,color:"primary",loading:y.value,onClick:v[5]||(v[5]=U=>w("rebuild"))},{default:F(()=>[ee(s(a(r)(`${ze}.action.rebuild`)),1)]),_:1},8,["loading"])):d.value?.indexStatus==="failed"?(n(),K(A,{key:3,color:"primary",loading:y.value,onClick:v[6]||(v[6]=U=>w("build"))},{default:F(()=>[ee(s(a(r)(`${ze}.session.retry`)),1)]),_:1},8,["loading"])):d.value?.indexStatus==="paused"?(n(),K(A,{key:4,color:"primary",loading:y.value,onClick:v[7]||(v[7]=U=>w("build"))},{default:F(()=>[ee(s(a(r)(`${ze}.session.continue`)),1)]),_:1},8,["loading"])):(n(),K(A,{key:5,color:"primary",loading:y.value,onClick:v[8]||(v[8]=U=>w("build"))},{default:F(()=>[ee(s(a(r)(`${ze}.action.build`)),1)]),_:1},8,["loading"])),u(A,{variant:"ghost",color:"neutral",disabled:y.value,onClick:v[9]||(v[9]=U=>w("remove"))},{default:F(()=>[ee(s(a(r)(`${ze}.action.remove`)),1)]),_:1},8,["disabled"])])],64)):(n(),i(oe,{key:0},[e("p",xb,s(a(r)(`${ze}.session.enableHint`)),1),p.value?E("",!0):(n(),i("p",bb,s(a(r)(`${ze}.session.configFirst`)),1)),e("div",kb,[u(A,{variant:"ghost",onClick:v[0]||(v[0]=U=>g.value=!1)},{default:F(()=>[ee(s(a(r)("common.close")),1)]),_:1}),u(A,{color:"primary",loading:y.value,disabled:!p.value,onClick:v[1]||(v[1]=U=>w("enable"))},{default:F(()=>[ee(s(a(r)(`${ze}.session.enable`)),1)]),_:1},8,["loading","disabled"])])],64))],64))])]),_:1},8,["open"])}}}),$b={class:"min-h-[200px]"},Cb={key:0,class:"space-y-4"},Sb={class:"text-sm text-gray-600 dark:text-gray-400"},Tb={class:"text-sm text-gray-600 dark:text-gray-400"},Mb={key:1,class:"flex flex-col items-center justify-center py-10"},Ib={class:"text-gray-600 dark:text-gray-400"},Db={class:"mt-2 text-sm text-gray-500"},Lb={key:2,class:"space-y-6"},Ab={class:"rounded-lg bg-gray-50 p-4 dark:bg-gray-800"},zb={class:"mb-2 text-sm font-medium text-gray-700 dark:text-gray-300"},qb={class:"grid grid-cols-3 gap-4 text-center"},Rb={class:"text-2xl font-bold text-gray-900 dark:text-white"},Eb={class:"text-xs text-gray-500"},jb={class:"text-2xl font-bold text-green-600 dark:text-green-400"},Pb={class:"text-xs text-gray-500"},Ub={class:"text-2xl font-bold text-gray-400"},Bb={class:"text-xs text-gray-500"},Fb={key:0,class:"text-center text-sm text-amber-600 dark:text-amber-400"},Vb={key:3,class:"flex flex-col items-center justify-center py-10"},Nb={class:"text-gray-600 dark:text-gray-400"},Hb={key:0,class:"mt-4 w-full max-w-xs"},Ob={key:4,class:"flex flex-col items-center justify-center py-10"},Wb={class:"text-lg font-medium text-gray-900 dark:text-white"},Yb={class:"mt-2 text-sm text-gray-600 dark:text-gray-400"},Qb={key:5,class:"flex flex-col items-center justify-center py-10"},Kb={class:"text-lg font-medium text-gray-900 dark:text-white"},Gb={class:"mt-2 text-sm text-red-600 dark:text-red-400"},Jb={class:"flex w-full justify-end gap-2"},zk=ge({__name:"IncrementalImportModal",props:{modelValue:{type:Boolean},sessionId:{},sessionName:{}},emits:["update:modelValue","imported"],setup(l,{emit:o}){const t=l,c=o,{t:r}=ye(),m=f("select"),g=f(null),d=f(null),p=f(null),h=f(null),y=f(null),T=f(null),M=x({get:()=>t.modelValue,set:_=>c("update:modelValue",_)});de(M,_=>{_||C()});function C(){m.value="select",g.value=null,p.value=null,h.value=null,y.value=null,T.value=null}async function L({files:_,paths:A}){if(_.length>0)g.value={source:_[0],name:_[0].name};else{y.value=r("home.import.cannotReadPath");return}await $()}function z(){d.value?.openFileDialog()}async function $(){if(g.value){m.value="analyzing",y.value=null;try{const _=await na().analyzeIncrementalImport(t.sessionId,g.value.source);if(_.error){m.value="error",y.value=v(_.error);return}p.value={newMessageCount:_.newMessageCount,duplicateCount:_.duplicateCount,totalInFile:_.totalInFile},m.value="preview"}catch(_){m.value="error",y.value=String(_)}}}async function I(){if(g.value){m.value="importing",h.value={stage:"saving",progress:0,message:""};try{const _=await na().incrementalImport(t.sessionId,g.value.source,A=>{h.value=A});_.success?(T.value={newMessageCount:_.newMessageCount},m.value="done"):(m.value="error",y.value=v(_.error||"error.import_failed"))}catch(_){m.value="error",y.value=String(_)}}}function w(){T.value&&c("imported",T.value.newMessageCount),M.value=!1}function S(){m.value="select",g.value=null,p.value=null,y.value=null}function v(_){if(_.startsWith("error.")){const A=`home.import.errors.${_.slice(6)}`,j=r(A);return j!==A?j:_}return _}return(_,A)=>{const j=cs,U=_e,k=ds,b=Pe,q=We;return n(),K(q,{open:M.value,"onUpdate:open":A[1]||(A[1]=Y=>M.value=Y),title:a(r)("analysis.incremental.title")},{body:F(()=>[e("div",$b,[m.value==="select"?(n(),i("div",Cb,[e("p",Sb,s(a(r)("analysis.incremental.description",{name:l.sessionName})),1),u(j,{color:"info",variant:"soft",icon:"i-heroicons-information-circle",description:a(r)("analysis.incremental.homeAutoImportHint")},null,8,["description"]),u(a(us),{ref_key:"dropZoneRef",ref:d,accept:[".json",".jsonl",".txt"],class:"w-full",onFiles:L},{default:F(({isDragOver:Y})=>[e("div",{class:se(["flex cursor-pointer flex-col items-center justify-center rounded-xl border-2 border-dashed px-6 py-10 transition-colors",Y?"border-pink-500 bg-pink-50/50 dark:border-pink-400 dark:bg-pink-500/10":"border-gray-300 hover:border-pink-400 dark:border-gray-600 dark:hover:border-pink-500"]),onClick:Be(z,["stop"])},[u(U,{name:"i-heroicons-arrow-up-tray",class:"mb-3 h-10 w-10 text-gray-400"}),e("p",Tb,s(Y?a(r)("home.import.dropHint"):a(r)("analysis.incremental.dropHint")),1)],2)]),_:1},512)])):m.value==="analyzing"?(n(),i("div",Mb,[u(U,{name:"i-heroicons-arrow-path",class:"mb-4 h-10 w-10 animate-spin text-pink-500"}),e("p",Ib,s(a(r)("analysis.incremental.analyzing")),1),e("p",Db,s(g.value?.name),1)])):m.value==="preview"&&p.value?(n(),i("div",Lb,[e("div",Ab,[e("p",zb,s(g.value?.name),1),e("div",qb,[e("div",null,[e("p",Rb,s(p.value.totalInFile.toLocaleString()),1),e("p",Eb,s(a(r)("analysis.incremental.totalInFile")),1)]),e("div",null,[e("p",jb,s(p.value.newMessageCount.toLocaleString()),1),e("p",Pb,s(a(r)("analysis.incremental.newMessages")),1)]),e("div",null,[e("p",Ub,s(p.value.duplicateCount.toLocaleString()),1),e("p",Bb,s(a(r)("analysis.incremental.duplicates")),1)])])]),p.value.newMessageCount===0?(n(),i("p",Fb,[u(U,{name:"i-heroicons-exclamation-triangle",class:"mr-1 inline-block h-4 w-4"}),ee(" "+s(a(r)("analysis.incremental.noNewMessages")),1)])):E("",!0)])):m.value==="importing"?(n(),i("div",Vb,[u(U,{name:"i-heroicons-arrow-path",class:"mb-4 h-10 w-10 animate-spin text-pink-500"}),e("p",Nb,s(a(r)("analysis.incremental.importing")),1),h.value?(n(),i("div",Hb,[u(k,{value:h.value.progress,size:"sm"},null,8,["value"])])):E("",!0)])):m.value==="done"&&T.value?(n(),i("div",Ob,[u(U,{name:"i-heroicons-check-circle",class:"mb-4 h-12 w-12 text-green-500"}),e("p",Wb,s(a(r)("analysis.incremental.success")),1),e("p",Yb,s(a(r)("analysis.incremental.successDetail",{count:T.value.newMessageCount})),1)])):m.value==="error"?(n(),i("div",Qb,[u(U,{name:"i-heroicons-x-circle",class:"mb-4 h-12 w-12 text-red-500"}),e("p",Kb,s(a(r)("analysis.incremental.failed")),1),e("p",Gb,s(y.value),1)])):E("",!0)])]),footer:F(()=>[e("div",Jb,[m.value==="select"?(n(),K(b,{key:0,color:"neutral",variant:"ghost",onClick:A[0]||(A[0]=Y=>M.value=!1)},{default:F(()=>[ee(s(a(r)("common.cancel")),1)]),_:1})):m.value==="preview"?(n(),i(oe,{key:1},[u(b,{color:"neutral",variant:"ghost",onClick:S},{default:F(()=>[ee(s(a(r)("common.back")),1)]),_:1}),u(b,{color:"primary",disabled:!p.value||p.value.newMessageCount===0,onClick:I},{default:F(()=>[ee(s(a(r)("analysis.incremental.import",{count:p.value?.newMessageCount||0})),1)]),_:1},8,["disabled"])],64)):m.value==="done"||m.value==="error"?(n(),i(oe,{key:2},[m.value==="error"?(n(),K(b,{key:0,color:"neutral",variant:"ghost",onClick:S},{default:F(()=>[ee(s(a(r)("common.retry")),1)]),_:1})):E("",!0),u(b,{color:"primary",onClick:w},{default:F(()=>[ee(s(a(r)("common.done")),1)]),_:1})],64)):E("",!0)])]),_:1},8,["open","title"])}}}),Xb={key:0,class:"fixed right-0 top-1/3"},Zb={class:"no-capture flex flex-col items-center gap-0.5 rounded-l-lg border border-r-0 border-gray-200/60 bg-white py-1.5 shadow-sm dark:border-white/5 dark:bg-page-dark"},ek=["onClick"],tk={class:"mb-2 flex items-center justify-between"},ak={class:"px-0.5 text-[9px] font-bold uppercase tracking-widest text-gray-400 dark:text-gray-500"},sk={class:"flex flex-col gap-1.5"},nk=["onClick"],ok={class:"whitespace-nowrap"},qk=ge({__name:"ActionToolsPanel",emits:["openIncrementalImport","openSemanticIndex","openMemberManagement","openChatRecord","openMessageExport"],setup(l,{emit:o}){const{t}=ye(),c=ct(),{isToolsPanelMini:r,toolsPanelPosition:m,isToolsPanelOpen:g}=et(c),d=x(()=>m.value==="header"),p=x(()=>!d.value||g.value),h=f(null),y=o;function T($){y($),d.value&&(g.value=!1)}function M($){if(!d.value||!g.value)return;const I=$.target;I instanceof Element&&(h.value?.contains(I)||I.closest("[data-tools-panel-trigger]")||(g.value=!1))}const C=[{event:"openIncrementalImport",icon:"i-heroicons-plus-circle",hoverColor:"group-hover:text-pink-500",miniHoverBg:"hover:text-pink-500",labelKey:"analysis.tooltip.incrementalImport"},{event:"openSemanticIndex",icon:"i-heroicons-circle-stack",hoverColor:"group-hover:text-indigo-500",miniHoverBg:"hover:text-indigo-500",labelKey:"analysis.tooltip.semanticIndex"},{event:"openMemberManagement",icon:"i-heroicons-user-group",hoverColor:"group-hover:text-purple-500",miniHoverBg:"hover:text-purple-500",labelKey:"analysis.tooltip.memberManagement"},{event:"openChatRecord",icon:"i-heroicons-chat-bubble-bottom-center-text",hoverColor:"group-hover:text-cyan-500",miniHoverBg:"hover:text-cyan-500",labelKey:"analysis.tooltip.viewChatRecord"},{event:"openMessageExport",icon:"i-heroicons-document-arrow-down",hoverColor:"group-hover:text-green-500",miniHoverBg:"hover:text-green-500",labelKey:"analysis.messageExport.title"}],L=[{event:"openSemanticIndex",icon:"i-heroicons-circle-stack",hoverColor:"group-hover:text-indigo-500",miniHoverBg:"hover:text-indigo-500",labelKey:"analysis.tooltip.semanticIndex"},{event:"openMessageExport",icon:"i-heroicons-document-arrow-down",hoverColor:"group-hover:text-green-500",miniHoverBg:"hover:text-green-500",labelKey:"analysis.messageExport.title"}],z=x(()=>d.value?L:C);return de(m,()=>{g.value=!1}),Ve(()=>{document.addEventListener("mousedown",M)}),Ct(()=>{document.removeEventListener("mousedown",M)}),($,I)=>{const w=_e,S=pt;return!d.value&&a(r)?(n(),i("div",Xb,[e("div",Zb,[(n(),i(oe,null,ce(C,v=>u(S,{key:v.event,text:a(t)(v.labelKey),popper:{placement:"left"}},{default:F(()=>[e("button",{class:se(["flex h-7 w-7 items-center justify-center rounded-md text-gray-400 transition-colors hover:bg-gray-100 dark:text-gray-500 dark:hover:bg-white/5",v.miniHoverBg]),onClick:_=>T(v.event)},[u(w,{name:v.icon,class:"h-3.5 w-3.5"},null,8,["name"])],10,ek)]),_:2},1032,["text"])),64)),I[2]||(I[2]=e("div",{class:"my-0.5 h-px w-4 bg-gray-200 dark:bg-gray-700"},null,-1)),u(S,{text:a(t)("analysis.toolsPanel.exitMini"),popper:{placement:"left"}},{default:F(()=>[e("button",{class:"flex h-7 w-7 items-center justify-center rounded-md text-gray-300 transition-colors hover:bg-gray-100 hover:text-gray-500 dark:text-gray-600 dark:hover:bg-white/5 dark:hover:text-gray-400",onClick:I[0]||(I[0]=v=>a(c).toggleToolsPanelMini())},[u(w,{name:"i-heroicons-arrows-pointing-out",class:"h-3 w-3"})])]),_:1},8,["text"])])])):(n(),i("div",{key:1,class:se(["fixed right-0 z-40",d.value?"top-14":"top-1/3"])},[e("div",{class:se(["absolute right-0 top-0 transition-all duration-250 ease-in-out",p.value?"translate-x-0 opacity-100":"pointer-events-none translate-x-full opacity-0"])},[e("div",{ref_key:"panelRef",ref:h,class:"no-capture flex w-40 flex-col rounded-l-xl border border-r-0 border-gray-200/60 bg-white p-3 shadow-overlay dark:border-white/5 dark:bg-page-dark"},[e("div",tk,[e("span",ak,s(a(t)("analysis.overview.tools")),1),d.value?E("",!0):(n(),K(S,{key:0,text:a(t)("analysis.toolsPanel.miniMode"),popper:{placement:"left"}},{default:F(()=>[e("button",{class:"flex h-5 w-5 items-center justify-center rounded text-gray-300 transition-colors hover:text-gray-500 dark:text-gray-600 dark:hover:text-gray-400",onClick:I[1]||(I[1]=v=>a(c).toggleToolsPanelMini())},[u(w,{name:"i-heroicons-arrows-pointing-in",class:"h-3 w-3"})])]),_:1},8,["text"]))]),e("div",sk,[(n(!0),i(oe,null,ce(z.value,v=>(n(),i("button",{key:v.event,class:"group flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-xs font-medium text-gray-600 transition-all hover:bg-gray-100 hover:text-gray-900 dark:text-gray-400 dark:hover:bg-white/5 dark:hover:text-white",onClick:_=>T(v.event)},[u(w,{name:v.icon,class:se(["h-3.5 w-3.5 text-gray-400 transition-colors dark:text-gray-500",v.hoverColor])},null,8,["name","class"]),e("span",ok,s(a(t)(v.labelKey)),1)],8,nk))),128))])],512)],2)],2))}}});export{wk as C,_k as D,bk as L,Dk as M,Lt as _,xk as a,Ck as b,Ye as c,Ot as d,Sk as e,nh as f,Tk as g,Mk as h,Ik as i,fk as j,Lk as k,qk as l,Ak as m,zk as n,kk as o,$k as u};
|