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.
Files changed (89) hide show
  1. package/dist/{chat-command-ZIXKNLSE.mjs → chat-command-3KUWKS53.mjs} +4 -4
  2. package/dist/{chunk-FDLLEDNW.mjs → chunk-27DWKA3L.mjs} +2 -2
  3. package/dist/{chunk-MFOCDGCC.mjs → chunk-3IGBPOJM.mjs} +118 -17
  4. package/dist/chunk-3IGBPOJM.mjs.map +1 -0
  5. package/dist/{chunk-UIUEG7JB.mjs → chunk-CANPJOIE.mjs} +9 -9
  6. package/dist/{chunk-75FZ26HM.mjs → chunk-LNU4RW5G.mjs} +17 -6
  7. package/dist/chunk-LNU4RW5G.mjs.map +1 -0
  8. package/dist/{chunk-GZO3NAHC.mjs → chunk-PZM3FHVZ.mjs} +56 -7
  9. package/dist/chunk-PZM3FHVZ.mjs.map +1 -0
  10. package/dist/{chunk-EINCXXWY.mjs → chunk-UVCH2ICD.mjs} +2 -2
  11. package/dist/cli.mjs +4 -4
  12. package/dist/{http-WDG2OHOV.mjs → http-YR26GF7X.mjs} +6 -6
  13. package/dist/{import-4BDC37F7.mjs → import-Q3DUACU4.mjs} +4 -4
  14. package/dist/index.mjs +6 -6
  15. package/dist/{mcp-4KUVRGFF.mjs → mcp-HTVZSGTI.mjs} +3 -3
  16. package/dist/semantic-index-worker.mjs +1 -1
  17. package/dist/{src-ZOCLFBCJ.mjs → src-HJL7YZZJ.mjs} +11 -3
  18. package/dist/{stream-import-ERTT7U6V.mjs → stream-import-MXETSEPW.mjs} +4 -4
  19. package/dist/{worker-runtime-2TUZHV7W.mjs → worker-runtime-DZQDL2E2.mjs} +2 -2
  20. 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
  21. package/dist-web/assets/{BufferResource-DgKoy0Ii.js → BufferResource-BXfwfGam.js} +1 -1
  22. package/dist-web/assets/{CanvasRenderer-CKpp71xg.js → CanvasRenderer-Bvpsbxds.js} +1 -1
  23. package/dist-web/assets/DataDirCleanupNotice-C0sCmNL2.js +1 -0
  24. package/dist-web/assets/{EChartWordcloud-CSOuFvyM.js → EChartWordcloud-C5hLT1vS.js} +1 -1
  25. package/dist-web/assets/{Filter-D32zqY5x.js → Filter-Irxx0f6j.js} +1 -1
  26. 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
  27. package/dist-web/assets/{MessageExportModal-BYLw4vZ8.js → MessageExportModal-tTI358HU.js} +1 -1
  28. package/dist-web/assets/{PageHeader-Dmu6cdAk.js → PageHeader-D5QQI9io.js} +1 -1
  29. package/dist-web/assets/{RelationshipGalaxyCanvas-DsMOubHV.js → RelationshipGalaxyCanvas-ByDU6ZS_.js} +3 -3
  30. package/dist-web/assets/{RelationshipGalaxyThreeCanvas-Dh5HjVHr.js → RelationshipGalaxyThreeCanvas-DgAlyKjc.js} +1 -1
  31. package/dist-web/assets/{RenderTargetSystem-CovK4x_D.js → RenderTargetSystem-Cx5U5HAM.js} +1 -1
  32. 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
  33. 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
  34. package/dist-web/assets/{WebGLRenderer-CawhbcYU.js → WebGLRenderer-B3Fnp1WX.js} +1 -1
  35. package/dist-web/assets/{WebGPURenderer-B7P1D2sA.js → WebGPURenderer-DZ0X9N86.js} +1 -1
  36. package/dist-web/assets/{annual-summary-time-range-Bya4h2j6.js → annual-summary-time-range-CvG74N2l.js} +1 -1
  37. package/dist-web/assets/{base-ClGWE9aq.js → base-DdQRTliS.js} +1 -1
  38. package/dist-web/assets/{browserAll-CtQkc1DF.js → browserAll-BqC9ELNO.js} +1 -1
  39. package/dist-web/assets/{dateFormat-Cfb89ZjM.js → dateFormat-CX9atL2g.js} +1 -1
  40. package/dist-web/assets/{electron-Brd7jS6W.js → electron-ChQkD5ht.js} +1 -1
  41. package/dist-web/assets/{fetch-BoB63ns8.js → fetch-3Ifr5YJN.js} +1 -1
  42. package/dist-web/assets/fetch-74o_kRZf.js +1 -0
  43. package/dist-web/assets/{fetch-DWoMmOlr.js → fetch-BKFznq4l.js} +1 -1
  44. package/dist-web/assets/{fetch-Dr_Fjtvp.js → fetch-BPj6IlT-.js} +1 -1
  45. package/dist-web/assets/{fetch-DkfUUq-R.js → fetch-C3KuMfIU.js} +1 -1
  46. package/dist-web/assets/{fetch-DVGCzZ0E.js → fetch-CUT9JdXT.js} +1 -1
  47. package/dist-web/assets/{fetch-BtK7YvLp.js → fetch-CoYaXr5K.js} +1 -1
  48. package/dist-web/assets/{fetch-CeREJiFL.js → fetch-Dcg6Q6Ei.js} +1 -1
  49. package/dist-web/assets/{fetch-u7ivV7Uy.js → fetch-DxWfYzkB.js} +1 -1
  50. package/dist-web/assets/{fetch-D2hvh7lO.js → fetch-th_egarZ.js} +1 -1
  51. package/dist-web/assets/index-B3riRaJA.js +1 -0
  52. package/dist-web/assets/index-BRDdozcm.js +173 -0
  53. package/dist-web/assets/{index-DnkaYOFI.js → index-Bg-OiHMa.js} +1 -1
  54. package/dist-web/assets/{index-DJ8kB4US.js → index-BhewGKey.js} +2 -2
  55. package/dist-web/assets/{index-CuPE4SSh.js → index-Bm_U0hSr.js} +1 -1
  56. package/dist-web/assets/{index-DcAqhCpS.js → index-BpeJ40uK.js} +1 -1
  57. package/dist-web/assets/{index-w_1EjXiF.js → index-C6bwt1H4.js} +1 -1
  58. package/dist-web/assets/{index-BXaKyn8J.js → index-CEJqRkis.js} +2 -2
  59. package/dist-web/assets/{index-BzH9cnfy.js → index-CKLCaqdT.js} +1 -1
  60. package/dist-web/assets/{index-D494nYee.js → index-Ds5PiVyB.js} +3 -3
  61. package/dist-web/assets/{index-DSPls1YV.js → index-GXMxhYc9.js} +1 -1
  62. package/dist-web/assets/index-JyB6Cr8r.js +25 -0
  63. package/dist-web/assets/index-UJl03IYE.css +1 -0
  64. package/dist-web/assets/{index-BHnQaeQY.js → index-tx-Oal36.js} +1 -1
  65. package/dist-web/assets/{people-page-header-YGQM9G53.js → people-page-header-DGkK0AMO.js} +1 -1
  66. package/dist-web/assets/{vendor-nuxt-ui-DmkGVKod.js → vendor-nuxt-ui-DMdbdSFy.js} +2 -2
  67. package/dist-web/assets/{vendor-reka-ui-BkhadcDj.js → vendor-reka-ui-8_x7iKfi.js} +1 -1
  68. package/dist-web/assets/{web-zXxtk2KZ.js → web-aZcioccr.js} +1 -1
  69. package/dist-web/assets/{webworkerAll-BzRoT-6m.js → webworkerAll-a_fveCLR.js} +1 -1
  70. package/dist-web/index.html +4 -4
  71. package/package.json +1 -1
  72. package/dist/chunk-75FZ26HM.mjs.map +0 -1
  73. package/dist/chunk-GZO3NAHC.mjs.map +0 -1
  74. package/dist/chunk-MFOCDGCC.mjs.map +0 -1
  75. package/dist-web/assets/fetch-BJ3lnhzK.js +0 -1
  76. package/dist-web/assets/index-D-qNxFxp.js +0 -173
  77. package/dist-web/assets/index-DNMWR2Vj.js +0 -1
  78. package/dist-web/assets/index-_UKteDZB.js +0 -25
  79. package/dist-web/assets/index-gi0wgh0M.css +0 -1
  80. /package/dist/{chat-command-ZIXKNLSE.mjs.map → chat-command-3KUWKS53.mjs.map} +0 -0
  81. /package/dist/{chunk-FDLLEDNW.mjs.map → chunk-27DWKA3L.mjs.map} +0 -0
  82. /package/dist/{chunk-UIUEG7JB.mjs.map → chunk-CANPJOIE.mjs.map} +0 -0
  83. /package/dist/{chunk-EINCXXWY.mjs.map → chunk-UVCH2ICD.mjs.map} +0 -0
  84. /package/dist/{http-WDG2OHOV.mjs.map → http-YR26GF7X.mjs.map} +0 -0
  85. /package/dist/{import-4BDC37F7.mjs.map → import-Q3DUACU4.mjs.map} +0 -0
  86. /package/dist/{mcp-4KUVRGFF.mjs.map → mcp-HTVZSGTI.mjs.map} +0 -0
  87. /package/dist/{src-ZOCLFBCJ.mjs.map → src-HJL7YZZJ.mjs.map} +0 -0
  88. /package/dist/{stream-import-ERTT7U6V.mjs.map → stream-import-MXETSEPW.mjs.map} +0 -0
  89. /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-_UKteDZB.js","assets/vendor-reka-ui-BkhadcDj.js","assets/vendor-nuxt-ui-DmkGVKod.js","assets/vendor-snapdom--nZvo8Sg.js","assets/index-gi0wgh0M.css","assets/EChartWordcloud-CSOuFvyM.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,w as wt,k as Oe,u as ye,n as Je,S as Wt,s as ct,t as et,G as ca,Y as Yt,Z as da,y as ua,m as tt,T as nt,q as Ne,$ as Ba,a0 as gt,a1 as Fa,a2 as vt,a3 as Va,a4 as yt,A as Qt,z as $t,M as st,a5 as bt,a6 as Na,g as sa,b as Ha,o as Oa,B as Wa,a7 as Ya,a8 as Qa,x as Ka,v as Ga,r as Ja,a9 as Xa,aa as Za,l as es,ab as ts,ac as as,F as na}from"./index-_UKteDZB.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-BkhadcDj.js";import{_ as _e,d as Pe,g as We,c as Kt,f as Gt,p as Jt,n as rs,b 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-DmkGVKod.js";import{a as ht,M as Xt,_ as us}from"./index-CuPE4SSh.js";import{_ as at}from"./ThemeCard.vue_vue_type_script_setup_true_lang-DhUfYrEx.js";import{C as ms,a as Tt,_ as Ze,g as Ut}from"./base-ClGWE9aq.js";import{f as gs,d as oa}from"./dateFormat-Cfb89ZjM.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-DUAtrSZD.js";import{_ as fs}from"./TimeSelect.vue_vue_type_script_setup_true_lang-CaumhCAS.js";import{P as xs}from"./PageHeader-Dmu6cdAk.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(`
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-_UKteDZB.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-_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};