diff --git a/CLAUDE.md b/CLAUDE.md index 6526432..0678c4f 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -123,6 +123,40 @@ AI 智能客服系统,基于 Spring AI Alibaba + 通义千问 + PGVector,支 - 文档管理: `/document/*`(`DocumentController`) - 批量操作: `/document/batch/*`(`DocumentController`,用 POST 避免 DELETE+RequestBody 路径冲突) - 分类管理: `/category/*`(`DocumentController`) +- 消息反馈: `/feedback/*`(`MessageFeedbackController`) +- 敏感词管理: `/sensitive-word/*`(`SensitiveWordController`) +- FAQ 管理: `/faq/*`(`FaqController`) + +## P0 阶段新增功能 + +### 内容安全过滤(P0-004) +- **DFA 引擎**: `ContentSafetyService` 使用字典树匹配敏感词,`volatile` + copy-on-write 保证线程安全热加载 +- **ContentSafetyAdvisor**: 实现 `BaseAdvisor`,`getOrder()` 返回 `HIGHEST_PRECEDENCE`(Advisor 链最外层),before 阶段检查用户输入、after 阶段检查 AI 输出 +- **敏感词级别**: level=1 仅脱敏(MASK),level=2 拦截(BLOCK)返回安全提示 +- **审计日志**: `content_audit_log` 表记录所有违规事件,不删除 +- **前端**: `SensitiveWordManager.js` 在系统设置 Tab,支持 CRUD + 批量导入 + 审计日志查看 + +### 用户反馈系统(P0-002) +- **反馈实体**: `MessageFeedback`,按 `message_id` 唯一索引,重复提交覆盖(upsert 语义) +- **反馈类型**: THUMBS_UP(有帮助)/ THUMBS_DOWN(没帮助),点踩可选原因分类 + 自由文本 +- **ChatPanel**: 每条 AI 回复下方有 👍/👎 按钮,点击调用 `POST /feedback` +- **Chat SDK**: `handleFeedback()` 已连接后端 API,同时保留 localStorage 作为乐观 UI 缓存 +- **会话导出**: `ConversationService.exportConversation()` 导出的 TXT 中包含反馈信息 + +### 意图识别 + FAQ 精准匹配(P0-003) +- **IntentRouter**: LLM 单次调用做意图分类(FAQ/RAG/CHITCHAT),解析失败降级为 RAG +- **FaqMatchEngine**: 三级匹配策略 — 精确匹配 → 关键词匹配 → 向量语义匹配(阈值 `knowledge.faq.semantic-threshold`,默认 0.85) +- **FAQ 向量化**: 复用现有 `DynamicEmbeddingModel`,向量存入 `faq_embedding` 表,新增/修改 FAQ 时异步计算 +- **similar_questions 字段**: 使用 String 类型存储 JSON 数组字符串(PostgresJsonTypeHandler 期望对象格式,故不用 typeHandler) +- **前端**: `FaqManager.js` 在知识库文档管理 Tab,支持 CRUD + 批量 JSON 导入/导出 + 启用/禁用 + +### 混合检索 + 重排序引擎(P0-001) +- **SearchMode**: 枚举 VECTOR(默认)/ KEYWORD / HYBRID,向后兼容 +- **HybridSearchService**: 多模式检索核心,KEYWORD 使用 PostgreSQL `tsvector` 全文检索,HYBRID 使用双路检索 + RRF 融合 +- **RrfFusion**: RRF 融合算法 `score = Σ 1/(k + rank_i)`,k=60 +- **RerankerService**: 支持 DashScope + OpenAI 兼容提供商,通过 `ai_model_config` 表 RERANK 类型配置,超时 3s 自动 fallback +- **vector_store 全文检索**: 新增 `content_tsvector` 列 + GIN 索引 + PostgreSQL 触发器自动维护 +- **前端**: `DocSearch.js` 增加检索模式下拉选择(向量/关键词/混合),结果标注来源模式 ## 已知 TODO diff --git a/client/dist/chatbot-sdk.js b/client/dist/chatbot-sdk.js index 8ce0418..8bb38df 100644 --- a/client/dist/chatbot-sdk.js +++ b/client/dist/chatbot-sdk.js @@ -755,6 +755,36 @@ var ChatbotSDK = (function () { return []; } } + // ==================== P0-002: 消息反馈 ==================== + /** + * 提交消息反馈(点赞/点踩) + */ + async function submitFeedbackApi(messageId, feedbackType) { + if (!currentConfig) + return false; + const url = buildUrl('/feedback'); + try { + const response = await safeFetch(url, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + messageId: String(messageId), + conversationId: currentConfig.chatId, + feedbackType, + }), + }); + if (!response.ok) { + logger.error(`反馈提交失败 status=${response.status}`); + return false; + } + const json = await response.json(); + return json.success || false; + } + catch (err) { + logger.error('反馈提交异常', err); + return false; + } + } /** * 获取会话列表 */ @@ -3654,8 +3684,7 @@ var ChatbotSDK = (function () { // ==================== 消息反馈(👍 / 👎) ==================== /** * 处理消息反馈:切换 AI 消息的点赞/点踩状态 - * 当前仅前端状态持久化(存入 messages 数组 + localStorage), - * 预留后端对接位:TODO 接口 POST /conversation/message/feedback + * 前端状态持久化(存入 messages 数组 + localStorage)+ 调用后端 API 记录反馈 */ function handleFeedback(msgId, value) { if (!messagesContainer$1) @@ -3673,7 +3702,21 @@ var ChatbotSDK = (function () { // 持久化(localStorage) if (config$1) saveMessages(config$1.integrateId, messages); - logger.info(`消息反馈 msgId=${msgId} value=${newValue || 'cleared'}`); + // 调用后端 API 记录反馈 + if (newValue) { + const feedbackType = newValue === 'up' ? 'THUMBS_UP' : 'THUMBS_DOWN'; + submitFeedbackApi(String(msgId), feedbackType).then(success => { + if (success) { + logger.info(`消息反馈已提交 msgId=${msgId} value=${newValue}`); + } + else { + logger.warn(`消息反馈提交失败 msgId=${msgId}(本地状态已更新)`); + } + }); + } + else { + logger.info(`消息反馈已取消 msgId=${msgId}`); + } } function autoResizeInput() { if (!inputEl$1) diff --git a/client/dist/chatbot-sdk.js.map b/client/dist/chatbot-sdk.js.map index fcaef42..dcb2d5b 100644 --- a/client/dist/chatbot-sdk.js.map +++ b/client/dist/chatbot-sdk.js.map @@ -1 +1 @@ -{"version":3,"file":"chatbot-sdk.js","sources":["../src/logger.ts","../src/config.ts","../src/i18n.ts","../src/api.ts","../src/styles.ts","../src/utils.ts","../src/dom.ts","../src/storage.ts","../src/markdown.ts","../src/chat.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null],"names":["config","messagesContainer","inputEl","sendBtn","clearBtn","categorySelect","historyPanel","showLoadingFn","hideLoadingFn"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"chatbot-sdk.js","sources":["../src/logger.ts","../src/config.ts","../src/i18n.ts","../src/api.ts","../src/styles.ts","../src/utils.ts","../src/dom.ts","../src/storage.ts","../src/markdown.ts","../src/chat.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null],"names":["config","messagesContainer","inputEl","sendBtn","clearBtn","categorySelect","historyPanel","showLoadingFn","hideLoadingFn"],"mappings":"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"} \ No newline at end of file diff --git a/client/dist/chatbot-sdk.min.js b/client/dist/chatbot-sdk.min.js index cc8da20..24f36fc 100644 --- a/client/dist/chatbot-sdk.min.js +++ b/client/dist/chatbot-sdk.min.js @@ -1,2 +1,2 @@ -var ChatbotSDK=function(){"use strict";const e="[ChatbotSDK]";let n=!0,t=null;function r(e){t=e||null}const s={},o={info(t,r){n&&console.log(e,t,void 0!==r?r:"")},warn(t,r){n&&console.warn(e,t,void 0!==r?r:"")},error(n,r){if(console.error(e,n,void 0!==r?r:""),t)try{const e=r instanceof Error&&r.type||"error";t({message:n,code:String(e),detail:r})}catch(e){}},time(e){s[e]=Date.now()},timeEnd(t,r){const o=s[t];if(void 0!==o){const a=Date.now()-o;if(delete s[t],n){const n=r?`${r} ${a}ms`:`${t} ${a}ms`;console.log(e,n)}return a}return 0},lifecycleInit(e,n){this.info(`初始化完成 integrateId=${e} requestDomain=${n}`)},lifecycleDestroy(e){this.info(`销毁实例 integrateId=${e}`)},lifecycleSend(e,n){this.info(`发送消息 integrateId=${e} length=${n}`),this.time(`send_${e}`)},lifecycleReply(e,n){const t=this.timeEnd(`send_${e}`,"AI 回复");this.info(`AI 回复 integrateId=${e} length=${n} duration=${t}ms`)},lifecycleError(e,n,t){this.timeEnd(`send_${e}`),this.error(`请求失败 integrateId=${e} status=${n} message=${t}`)},lifecycleClear(e){this.info(`清空会话 integrateId=${e}`)},lifecycleStreamDone(e,n){const t=this.timeEnd(`send_${e}`,"流式回复");this.info(`流式回复完成 integrateId=${e} length=${n} duration=${t}ms`)},lifecycleCategoryChange(e){this.info(`切换知识库分类 categoryId=${e}`)}},a='\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n';function i(e,n,t){return`\n \n \x3c!-- 高光渐变:模拟玻璃反射 --\x3e\n \n \n \n \n \x3c!-- 机器人身体渐变 --\x3e\n \n \n \n \n \n \x3c!-- 机器人主体(圆角矩形 + 对话气泡尾巴) --\x3e\n \n \n \x3c!-- 高光反射层(左上角弧形高光) --\x3e\n \n \x3c!-- 天线 + 能量球 --\x3e\n \n \n \x3c!-- 眼睛(会眨) --\x3e\n \n \n \x3c!-- 眼睛高光点 --\x3e\n \n \n \x3c!-- 微笑 --\x3e\n \n \x3c!-- 跳动气泡装饰(3 个小圆点) --\x3e\n \n \n \n`}const c=i("rgba(139,92,246,0.6)","rgba(139,92,246,0.45)","rgba(240,171,252,0.85)"),l=i("rgba(16,185,129,0.6)","rgba(16,185,129,0.45)","rgba(110,231,183,0.85)"),d=i("rgba(244,63,94,0.55)","rgba(244,63,94,0.4)","rgba(253,186,116,0.85)"),p=i("rgba(56,189,248,0.6)","rgba(56,189,248,0.45)","rgba(167,139,250,0.85)"),u={"dream-purple":"#A78BFA","mint-tech":"#34D399","coral-peach":"#FB7185","sky-blue":"#7DD3FC"};const k={"zh-CN":{title:"AI 智能助手",minimize:"最小化",close:"关闭",status_online:"在线",welcome_title:"你好,我是 AI 智能助手",welcome_desc:"有什么可以帮你的吗?在下方输入框开始提问吧~",placeholder:"输入您的问题...",send:"发送",stop:"停止生成",new_message:"新消息",copy:"复制",copied:"已复制",retry:"重新生成",retrying:"重新生成中...",loading:"正在思考...",stream_interrupted:"回复被中断",stream_unstable:"网络不稳定,内容可能不完整",category_placeholder:"选择知识库分类",category_all:"全部分类",category_load_error:"加载分类失败",source_title:"参考来源",source_count:"{n} 条参考来源",source_loading:"加载来源中...",clear:"清空对话",clear_confirm:"确定清空所有对话记录?",history_title:"历史会话",history_empty:"暂无历史会话",history_load_error:"加载会话列表失败",history_delete_confirm:"确定删除该会话?",history_export:"导出",history_delete:"删除",history_search:"搜索会话...",history_group_today:"今天",history_group_yesterday:"昨天",history_group_week:"本周",history_group_earlier:"更早",feedback_up:"有帮助",feedback_down:"没帮助",teaser_text:"有什么可以帮你的吗?",new_msg_announce:"收到新消息",error_network:"网络连接失败,请检查网络",error_timeout:"请求超时,请稍后重试",error_server:"服务器异常,请稍后重试",error_cors:"跨域请求被拦截,请联系管理员将当前域名加入 API 白名单",error_auth:"鉴权失败,请联系管理员",error_forbidden:"无访问权限,请联系管理员配置",error_not_found:"请求的资源不存在",error_rate_limit:"请求过于频繁,请稍后重试",error_unavailable:"服务暂不可用,请稍后重试",error_unknown:"请求发生未知错误",error_send:"发送失败,请稍后重试",error_stream_unsupported:"浏览器不支持流式读取"},en:{title:"AI Assistant",minimize:"Minimize",close:"Close",status_online:"Online",welcome_title:"Hi, I am your AI assistant",welcome_desc:"How can I help you? Type your question below to get started.",placeholder:"Type your question...",send:"Send",stop:"Stop generating",new_message:"New message",copy:"Copy",copied:"Copied",retry:"Regenerate",retrying:"Regenerating...",loading:"Thinking...",stream_interrupted:"Response interrupted",stream_unstable:"Network unstable, content may be incomplete",category_placeholder:"Select category",category_all:"All categories",category_load_error:"Failed to load categories",source_title:"Sources",source_count:"{n} source(s)",source_loading:"Loading sources...",clear:"Clear chat",clear_confirm:"Clear all conversation history?",history_title:"History",history_empty:"No conversations yet",history_load_error:"Failed to load conversations",history_delete_confirm:"Delete this conversation?",history_export:"Export",history_delete:"Delete",history_search:"Search conversations...",history_group_today:"Today",history_group_yesterday:"Yesterday",history_group_week:"This Week",history_group_earlier:"Earlier",feedback_up:"Helpful",feedback_down:"Not helpful",teaser_text:"How can I help you?",new_msg_announce:"New message received",error_network:"Network connection failed",error_timeout:"Request timed out, please try again",error_server:"Server error, please try again later",error_cors:"CORS request blocked. Please contact admin to whitelist your domain",error_auth:"Authentication failed, please contact admin",error_forbidden:"Access denied, please contact admin",error_not_found:"Resource not found",error_rate_limit:"Too many requests, please try again later",error_unavailable:"Service temporarily unavailable",error_unknown:"Unknown request error",error_send:"Failed to send, please try again",error_stream_unsupported:"Browser does not support streaming"}};let g="zh-CN";function m(e,n){let t=(k[g]||k["zh-CN"])[e]||k["zh-CN"][e]||e;if(n)for(const[e,r]of Object.entries(n))t=t.replace(`{${e}}`,String(r));return t}let h=null;function b(e){h&&(h.chatId=e)}function f(){return(null==h?void 0:h.chatId)||""}function y(e){if(!h)throw new Error("API 配置未初始化");return`${h.requestDomain.replace(/\/+$/,"")}${e.startsWith("/")?e:`/${e}`}`}function x(e,n,t){null!=t&&("string"==typeof t&&""===t.trim()||e.set(n,String(t)))}async function v(e,n={},t=3e4,r){const s=new AbortController,o=setTimeout(()=>s.abort(),t);r&&(r.aborted?s.abort():r.addEventListener("abort",()=>s.abort(),{once:!0}));try{return await fetch(e,Object.assign(Object.assign({},n),{signal:s.signal,mode:"cors",credentials:"include"}))}catch(e){if(null==r?void 0:r.aborted)throw new w("aborted","aborted");if(e instanceof DOMException&&"AbortError"===e.name)throw new w(m("error_timeout"),"timeout");if(e instanceof TypeError&&e.message.includes("Failed to fetch"))throw new w(m("error_cors"),"cors");throw new w(m("error_network"),"network")}finally{clearTimeout(o)}}class w extends Error{constructor(e,n){super(e),this.name="CskError",this.type=n}}function _(e){switch(e){case 401:return m("error_auth");case 403:return m("error_forbidden");case 404:return m("error_not_found");case 429:return m("error_rate_limit");case 500:return m("error_server");case 502:case 503:return m("error_unavailable");default:return`${m("error_unknown")}(${e})`}}async function E(e){const n=function(e){const n=new URLSearchParams;return n.set("message",e),n.set("chatId",h.chatId),x(n,"roleId",h.integrateId),x(n,"accountId",h.userId),y(`/ai/assistant_app/chat/sync?${n.toString()}`)}(e);o.lifecycleSend(h.integrateId,e.length);try{const e=await v(n);if(!e.ok){const n=_(e.status);throw o.lifecycleError(h.integrateId,String(e.status),n),new w(n,`http_${e.status}`)}const t=await e.text();return o.lifecycleReply(h.integrateId,t.length),t}catch(e){if(e instanceof w)throw e;throw o.lifecycleError(h.integrateId,"unknown",String(e)),new w(m("error_unknown"),"unknown")}}async function C(e,n,t,r,s,a,i){var c;const l=a?function(e,n){const t=new URLSearchParams;return t.set("message",e),t.set("chatId",h.chatId),t.set("rewriteStrategy","REWRITE"),x(t,"roleId",h.integrateId),x(t,"accountId",h.userId),x(t,"categoryId",null!=n?n:h.categoryId),y(`/ai/assistant_app/chat/rag/sse?${t.toString()}`)}(e,s):function(e,n){const t=new URLSearchParams;return t.set("message",e),t.set("chatId",h.chatId),x(t,"roleId",h.integrateId),x(t,"accountId",h.userId),x(t,"categoryId",null!=n?n:h.categoryId),y(`/ai/assistant_app/chat/sse?${t.toString()}`)}(e,s);let d="";o.lifecycleSend(h.integrateId,e.length);try{const e=await v(l,{},6e4,i);if(!e.ok){const n=_(e.status);return o.lifecycleError(h.integrateId,String(e.status),n),void r(new w(n,`http_${e.status}`))}const s=null===(c=e.body)||void 0===c?void 0:c.getReader();if(!s)return void r(new w(m("error_stream_unsupported"),"stream_unsupported"));const a=new TextDecoder("utf-8",{stream:!0});let p="";try{for(;;){const{done:e,value:t}=await s.read();if(e)break;p+=a.decode(t,{stream:!0});const r=p.split("\n");p=r.pop()||"";for(const e of r){const t=e.trim();if(t&&!t.startsWith(":"))if(t.startsWith("data:")){const e=t.substring(5).trim();e&&(d+=e,n(e))}else{if("[DONE]"===t)break;t.startsWith("event:")||t.startsWith("id:")||t.startsWith("retry:")||(d+=t,n(t))}}}if(p.trim()){const e=p.trim();if(e.startsWith("data:")){const t=e.substring(5).trim();t&&(d+=t,n(t))}else"[DONE]"!==e&&(d+=e,n(e))}}catch(e){if(null==i?void 0:i.aborted)o.info(`流式被用户中断,保留已生成内容 length=${d.length}`);else{if(!(d.length>0))throw e;n("\n\n"+m("stream_unstable"))}}finally{s.releaseLock()}o.lifecycleStreamDone(h.integrateId,d.length),t()}catch(e){if((null==i?void 0:i.aborted)||e instanceof w&&"aborted"===e.type)return void t();e instanceof w?r(e):(o.lifecycleError(h.integrateId,"unknown",String(e)),r(new w(m("error_network"),"network")))}}async function I(e,n){const t=function(e,n){const t=new URLSearchParams;return t.set("message",e),t.set("chatId",h.chatId),t.set("rewriteStrategy","REWRITE"),x(t,"roleId",h.integrateId),x(t,"accountId",h.userId),x(t,"categoryId",null!=n?n:h.categoryId),y(`/ai/assistant_app/rag/sources?${t.toString()}`)}(e,n);try{const e=await v(t);if(!e.ok)throw new w(_(e.status),`http_${e.status}`);const n=await e.json();return n.success&&Array.isArray(n.data)?(o.info(`获取引用来源 count=${n.data.length}`),n.data):[]}catch(e){return o.error("获取引用来源失败",e),[]}}async function $(e=1,n=20,t,r){let s=`/conversation/list?page=${e}&size=${n}`;t&&(s+=`&accountId=${encodeURIComponent(t)}`),r&&(s+=`&roleId=${encodeURIComponent(r)}`);const a=y(s);try{const e=await v(a);if(!e.ok)throw new w(_(e.status),`http_${e.status}`);const n=await e.json();return{list:n.success&&Array.isArray(n.data)?n.data:[],total:n.total||0,pages:n.pages||0}}catch(e){return o.error("加载会话列表失败",e),{list:[],total:0,pages:0}}}async function A(e){const n=y(`/conversation/${e}/messages`);try{const e=await v(n);if(!e.ok)throw new w(_(e.status),`http_${e.status}`);const t=await e.json();return{messages:t.success&&Array.isArray(t.data)?t.data:[],total:t.total||0}}catch(e){return o.error("加载会话消息失败",e),{messages:[],total:0}}}async function L(e){const n=y(`/conversation/${e}`);try{const t=await v(n,{method:"DELETE"});if(!t.ok)throw new w(_(t.status),`http_${t.status}`);const r=await t.json();return o.info(`删除会话 id=${e} success=${r.success}`),r.success||!1}catch(e){return o.error("删除会话失败",e),!1}}function S(e){return y(`/conversation/${e}/export`)}async function F(){if(!h)return"";const e=function(e,n){try{return localStorage.getItem(N(e,n))||""}catch(e){return""}}(h.integrateId,h.userId);if(e)return h.chatId=e,o.info(`从缓存恢复 chatId=${e}`),e;try{const e=await $(1,5,h.userId,h.integrateId);if(e.list.length>0){const n=e.list[0],t=n.conversationId||n.chatId||"";if(t)return h.chatId=t,M(h.integrateId,h.userId,t),o.info(`从后端恢复会话 chatId=${t} messageCount=${n.messageCount}`),t}}catch(e){o.warn("查询后端会话列表失败,将生成新 chatId",e)}const n=function(){const e="undefined"!=typeof crypto&&crypto.randomUUID?crypto.randomUUID().substring(0,8):Math.random().toString(36).substring(2,10);return`sdk_${Date.now()}_${e}`}();return h.chatId=n,M(h.integrateId,h.userId,n),o.info(`生成新 chatId=${n}`),n}function N(e,n){return`csk_chatId_${e}${n?"_"+n:""}`}function M(e,n,t){try{t?localStorage.setItem(N(e,n),t):localStorage.removeItem(N(e,n))}catch(e){}}let D=null;function T(e){const n=B(e.primaryColor,-15),t=B(e.primaryColor,18),r=function(e){const n=e.match(/^#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/);return n?`${parseInt(n[1],16)}, ${parseInt(n[2],16)}, ${parseInt(n[3],16)}`:"79, 70, 229"}(e.primaryColor),s=e.launcherTheme?{"dream-purple":{grad1:"#A78BFA",grad2:"#F0ABFC",glow:"167, 139, 250"},"mint-tech":{grad1:"#6EE7B7",grad2:"#34D399",glow:"52, 211, 153"},"coral-peach":{grad1:"#FB7185",grad2:"#FDBA74",glow:"251, 113, 133"},"sky-blue":{grad1:"#7DD3FC",grad2:"#A78BFA",glow:"125, 211, 252"}}[e.launcherTheme]:null;return`\n --csk-primary: ${e.primaryColor};\n --csk-primary-hover: ${n};\n --csk-primary-light: ${t};\n --csk-primary-rgb: ${r};\n --csk-bg-user: linear-gradient(135deg, ${e.primaryColor}, ${n});\n --csk-bg-ai: #ffffff;\n --csk-text-user: #ffffff;\n --csk-text-ai: #1F2937;\n --csk-window-width: ${e.width}px;\n --csk-window-height: ${e.height}px;\n --csk-radius: 16px;\n --csk-shadow-window: 0 12px 48px rgba(15, 23, 42, 0.18), 0 2px 8px rgba(15, 23, 42, 0.06);\n --csk-shadow-bubble: 0 1px 2px rgba(15, 23, 42, 0.06);\n --csk-border: #ECEEF2;\n --csk-bg-app: #F6F7F9;\n ${s?`\n --csk-launcher-grad-1: ${s.grad1};\n --csk-launcher-grad-2: ${s.grad2};\n --csk-launcher-glow: ${s.glow};\n `:""}\n `}function B(e,n){const t=e.match(/^#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/);if(!t)return e;const r=e=>Math.max(0,Math.min(255,e)),s=r(parseInt(t[1],16)+n),o=r(parseInt(t[2],16)+n),a=r(parseInt(t[3],16)+n);return`#${s.toString(16).padStart(2,"0")}${o.toString(16).padStart(2,"0")}${a.toString(16).padStart(2,"0")}`}function q(e){document.querySelector("style[data-csk-sdk]")||(D=document.createElement("style"),D.setAttribute("data-csk-sdk",""),D.textContent=function(e){return`\n/* ChatbotSDK 样式 - csk- 命名空间 */\n.csk-root {\n ${T(e)}\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif;\n font-size: 14px;\n line-height: 1.55;\n color: #1F2937;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n box-sizing: border-box;\n}\n.csk-root *, .csk-root *::before, .csk-root *::after { box-sizing: border-box; }\n\n/* ========== 悬浮按钮 ========== */\n.csk-launcher {\n position: fixed;\n bottom: 24px;\n z-index: 9998;\n width: 60px;\n height: 60px;\n border-radius: 50%;\n background: var(--csk-bg-user);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n color: #fff;\n user-select: none;\n overflow: visible;\n /* 半透明白色光环边框,在白色页面上清晰分离按钮与背景 */\n border: 2.5px solid rgba(255, 255, 255, 0.55);\n /* 三层投影:接地阴影 + 彩色光晕,把按钮从白底「托」出来 */\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.06),\n 0 4px 16px rgba(0, 0, 0, 0.10),\n 0 6px 24px rgba(var(--csk-primary-rgb), 0.28),\n 0 0 48px rgba(var(--csk-primary-rgb), 0.12);\n transition:\n transform 0.25s cubic-bezier(0.34, 1.56, 0.64, 1),\n box-shadow 0.25s ease,\n border-color 0.25s ease;\n animation: csk-launcher-in 0.55s cubic-bezier(0.22, 1, 0.36, 1) both;\n}\n.csk-launcher--right { right: 24px; }\n.csk-launcher--left { left: 24px; }\n\n/* 高光扫过动效 */\n.csk-launcher::before {\n content: '';\n position: absolute;\n top: -50%;\n left: -50%;\n width: 40%;\n height: 200%;\n border-radius: 50%;\n background: linear-gradient(\n 105deg,\n transparent 30%,\n rgba(255, 255, 255, 0.28) 48%,\n rgba(255, 255, 255, 0.1) 52%,\n transparent 70%\n );\n transform: rotate(25deg);\n animation: csk-shimmer 4s ease-in-out infinite;\n pointer-events: none;\n}\n/* 呼吸色晕 — 配合接地阴影,强化白底上的立体存在感 */\n.csk-launcher::after {\n content: '';\n position: absolute;\n inset: -18px;\n border-radius: 50%;\n background: radial-gradient(circle, rgba(var(--csk-primary-rgb), 0.18) 0%, rgba(var(--csk-primary-rgb), 0.05) 45%, transparent 68%);\n animation: csk-breathe 3.5s ease-in-out infinite;\n pointer-events: none;\n}\n.csk-launcher:hover {\n transform: translateY(-3px) scale(1.08);\n border-color: rgba(255, 255, 255, 0.75);\n box-shadow:\n 0 2px 6px rgba(0, 0, 0, 0.10),\n 0 8px 24px rgba(0, 0, 0, 0.14),\n 0 10px 36px rgba(var(--csk-primary-rgb), 0.32),\n 0 0 56px rgba(var(--csk-primary-rgb), 0.14);\n}\n.csk-launcher:hover::before { animation-play-state: paused; }\n.csk-launcher:hover::after {\n animation: none;\n inset: -22px;\n background: radial-gradient(circle, rgba(var(--csk-primary-rgb), 0.22) 0%, rgba(var(--csk-primary-rgb), 0.06) 45%, transparent 68%);\n}\n.csk-launcher:active { transform: scale(0.93); }\n.csk-launcher svg {\n width: 30px;\n height: 30px;\n position: relative;\n z-index: 1;\n filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.15));\n}\n\n@keyframes csk-launcher-in {\n 0% { opacity: 0; transform: scale(0.5) translateY(16px); }\n 60% { transform: scale(1.06) translateY(-2px); }\n 100% { opacity: 1; transform: scale(1) translateY(0); }\n}\n@keyframes csk-shimmer {\n 0%, 100% { left: -60%; opacity: 0; }\n 20% { opacity: 1; }\n 60% { opacity: 1; }\n 80% { left: 120%; opacity: 0; }\n}\n@keyframes csk-breathe {\n 0%, 100% { transform: scale(1); opacity: 1; }\n 50% { transform: scale(1.15); opacity: 0.35; }\n}\n\n/* SVG 图标内部动效:眨眼 */\n.csk-launcher .csk-ico-eye {\n animation: csk-eye-blink 4s ease-in-out infinite;\n}\n@keyframes csk-eye-blink {\n 0%, 42%, 48%, 100% { opacity: 1; }\n 45% { opacity: 0.1; }\n}\n/* SVG 图标内部动效:天线能量闪烁 */\n.csk-launcher .csk-ico-antenna {\n animation: csk-antenna-glow 2s ease-in-out infinite;\n}\n@keyframes csk-antenna-glow {\n 0%, 100% { opacity: 0.5; }\n 50% { opacity: 1; }\n}\n\n/* ========== 磨砂玻璃质感悬浮按钮 ========== */\n.csk-launcher--glass {\n background: linear-gradient(\n 135deg,\n var(--csk-launcher-grad-1, var(--csk-primary)) 0%,\n var(--csk-launcher-grad-2, var(--csk-primary-light)) 100%\n ) !important;\n backdrop-filter: blur(12px) saturate(180%);\n -webkit-backdrop-filter: blur(12px) saturate(180%);\n border: 1.5px solid rgba(255, 255, 255, 0.55) !important;\n /* 多层阴影:接地 + 彩色光晕 + 内阴影立体感 */\n box-shadow:\n 0 2px 4px rgba(0, 0, 0, 0.04),\n 0 6px 20px rgba(0, 0, 0, 0.08),\n 0 8px 32px rgba(var(--csk-launcher-glow, var(--csk-primary-rgb)), 0.30),\n inset 0 1px 1px rgba(255, 255, 255, 0.35),\n inset 0 -1px 1px rgba(0, 0, 0, 0.04) !important;\n}\n.csk-launcher--glass:hover {\n border-color: rgba(255, 255, 255, 0.75) !important;\n box-shadow:\n 0 4px 8px rgba(0, 0, 0, 0.06),\n 0 10px 28px rgba(0, 0, 0, 0.10),\n 0 12px 40px rgba(var(--csk-launcher-glow, var(--csk-primary-rgb)), 0.38),\n inset 0 1px 2px rgba(255, 255, 255, 0.45),\n inset 0 -1px 1px rgba(0, 0, 0, 0.04) !important;\n}\n\n/* 玻璃按钮的呼吸色晕 — 更鲜艳、更醒目 */\n.csk-launcher--glass::after {\n background: radial-gradient(\n circle,\n rgba(var(--csk-launcher-glow, var(--csk-primary-rgb)), 0.28) 0%,\n rgba(var(--csk-launcher-glow, var(--csk-primary-rgb)), 0.10) 40%,\n transparent 65%\n ) !important;\n animation: csk-breathe-glow 3.5s ease-in-out infinite;\n}\n@keyframes csk-breathe-glow {\n 0%, 100% { transform: scale(1); opacity: 0.8; }\n 50% { transform: scale(1.22); opacity: 0.25; }\n}\n\n/* 玻璃按钮的高光扫过 — 更柔和的玻璃质感 */\n.csk-launcher--glass::before {\n background: linear-gradient(\n 115deg,\n transparent 25%,\n rgba(255, 255, 255, 0.35) 45%,\n rgba(255, 255, 255, 0.15) 55%,\n transparent 75%\n ) !important;\n width: 50%;\n animation: csk-shimmer-glass 5s ease-in-out infinite;\n}\n@keyframes csk-shimmer-glass {\n 0%, 100% { left: -70%; opacity: 0; }\n 15% { opacity: 1; }\n 55% { opacity: 1; }\n 70% { left: 130%; opacity: 0; }\n}\n\n/* SVG 内部动效:跳动气泡(3 个小圆点交错弹跳) */\n.csk-launcher .csk-ico-bubble {\n animation: csk-bubble-jump 1.4s ease-in-out infinite;\n}\n.csk-launcher .csk-ico-bubble--1 { animation-delay: 0s; }\n.csk-launcher .csk-ico-bubble--2 { animation-delay: 0.18s; }\n.csk-launcher .csk-ico-bubble--3 { animation-delay: 0.36s; }\n@keyframes csk-bubble-jump {\n 0%, 100% { transform: translateY(0); }\n 40% { transform: translateY(-3.5px); }\n 60% { transform: translateY(-1px); }\n}\n\n/* ========== 聊天弹窗 ========== */\n.csk-window {\n position: fixed;\n bottom: 24px;\n z-index: 9999;\n width: var(--csk-window-width);\n height: var(--csk-window-height);\n max-height: calc(100vh - 48px);\n background: #fff;\n border-radius: var(--csk-radius);\n box-shadow: var(--csk-shadow-window);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n transform-origin: bottom right;\n transition: opacity 0.24s ease, transform 0.24s cubic-bezier(0.34, 1.2, 0.64, 1), visibility 0.24s;\n opacity: 1;\n transform: translateY(0) scale(1);\n visibility: visible;\n pointer-events: auto;\n}\n.csk-window--right { right: 24px; transform-origin: bottom right; }\n.csk-window--left { left: 24px; transform-origin: bottom left; }\n.csk-window--hidden {\n opacity: 0;\n transform: translateY(12px) scale(0.96);\n visibility: hidden;\n pointer-events: none;\n}\n\n/* ========== 头部 ========== */\n.csk-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n min-height: 60px;\n background: var(--csk-bg-user);\n color: #fff;\n cursor: move;\n user-select: none;\n position: relative;\n flex-shrink: 0;\n}\n.csk-header::after {\n content: '';\n position: absolute;\n left: 0; right: 0; bottom: 0;\n height: 24px;\n background: linear-gradient(to bottom, rgba(0,0,0,0.04), transparent);\n pointer-events: none;\n}\n.csk-header__left {\n display: flex;\n align-items: center;\n gap: 12px;\n min-width: 0;\n}\n.csk-header__avatar {\n width: 38px;\n height: 38px;\n border-radius: 50%;\n background: rgba(255, 255, 255, 0.22);\n backdrop-filter: blur(4px);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.25);\n}\n.csk-header__avatar svg { width: 22px; height: 22px; }\n.csk-header__info {\n display: flex;\n flex-direction: column;\n min-width: 0;\n}\n.csk-header__title {\n font-size: 15px;\n font-weight: 600;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n letter-spacing: 0.2px;\n}\n.csk-header__status {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n font-size: 11.5px;\n opacity: 0.9;\n margin-top: 2px;\n}\n.csk-status-dot {\n width: 7px;\n height: 7px;\n border-radius: 50%;\n background: #6EE7B7;\n box-shadow: 0 0 0 0 rgba(110, 231, 183, 0.7);\n animation: csk-status-pulse 2s infinite;\n}\n@keyframes csk-status-pulse {\n 0% { box-shadow: 0 0 0 0 rgba(110, 231, 183, 0.7); }\n 70% { box-shadow: 0 0 0 6px rgba(110, 231, 183, 0); }\n 100% { box-shadow: 0 0 0 0 rgba(110, 231, 183, 0); }\n}\n.csk-header__actions {\n display: flex;\n align-items: center;\n gap: 2px;\n flex-shrink: 0;\n}\n.csk-header__btn,\n.csk-history-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border: none;\n background: transparent;\n color: #fff;\n cursor: pointer;\n border-radius: 8px;\n transition: background 0.15s, transform 0.15s;\n}\n.csk-header__btn:hover,\n.csk-history-btn:hover {\n background: rgba(255, 255, 255, 0.2);\n}\n.csk-header__btn:active,\n.csk-history-btn:active { transform: scale(0.92); }\n\n/* ========== 消息区 ========== */\n.csk-messages {\n flex: 1;\n overflow-y: auto;\n padding: 20px 16px 12px;\n background: var(--csk-bg-app);\n scroll-behavior: smooth;\n}\n.csk-messages::-webkit-scrollbar { width: 6px; }\n.csk-messages::-webkit-scrollbar-track { background: transparent; }\n.csk-messages::-webkit-scrollbar-thumb {\n background: #D8DCE3;\n border-radius: 3px;\n}\n.csk-messages::-webkit-scrollbar-thumb:hover { background: #C2C7D0; }\n\n/* 欢迎空状态 */\n.csk-welcome {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 48px 24px 32px;\n color: #6B7280;\n animation: csk-fade-in 0.3s ease;\n}\n.csk-welcome__avatar {\n width: 56px;\n height: 56px;\n border-radius: 50%;\n background: var(--csk-bg-user);\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 14px;\n box-shadow: 0 6px 18px rgba(var(--csk-primary-rgb), 0.3);\n}\n.csk-welcome__avatar svg { width: 30px; height: 30px; }\n.csk-welcome__title {\n font-size: 15px;\n font-weight: 600;\n color: #1F2937;\n margin-bottom: 4px;\n}\n.csk-welcome__desc {\n font-size: 13px;\n color: #9CA3AF;\n line-height: 1.6;\n}\n\n/* 消息气泡 */\n.csk-msg {\n display: flex;\n margin-bottom: 18px;\n max-width: 100%;\n word-break: break-word;\n animation: csk-msg-in 0.28s cubic-bezier(0.22, 1, 0.36, 1);\n}\n.csk-msg--user {\n flex-direction: row-reverse;\n align-items: flex-end;\n}\n.csk-msg--ai {\n flex-direction: row;\n align-items: flex-start;\n}\n.csk-msg__avatar {\n width: 30px;\n height: 30px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n margin: 0 8px;\n box-shadow: var(--csk-shadow-bubble);\n}\n.csk-msg__avatar svg { width: 18px; height: 18px; }\n.csk-msg__avatar--ai {\n background: #fff;\n color: var(--csk-primary);\n border: 1px solid var(--csk-border);\n}\n.csk-msg__avatar--user {\n background: var(--csk-bg-user);\n color: #fff;\n}\n.csk-msg__content {\n display: flex;\n flex-direction: column;\n min-width: 0;\n max-width: calc(100% - 46px);\n}\n.csk-msg--user .csk-msg__content { align-items: flex-end; }\n.csk-msg--ai .csk-msg__content { align-items: flex-start; }\n.csk-msg__bubble {\n padding: 10px 14px;\n border-radius: 16px;\n font-size: 14px;\n line-height: 1.6;\n box-shadow: var(--csk-shadow-bubble);\n}\n.csk-msg--user .csk-msg__bubble {\n background: var(--csk-bg-user);\n color: var(--csk-text-user);\n border-radius: 16px 16px 4px 16px;\n}\n.csk-msg--ai .csk-msg__bubble {\n background: var(--csk-bg-ai);\n color: var(--csk-text-ai);\n border-radius: 16px 16px 16px 4px;\n border: 1px solid var(--csk-border);\n}\n.csk-msg__time {\n font-size: 11px;\n color: #9CA3AF;\n margin-top: 5px;\n padding: 0 4px;\n}\n\n@keyframes csk-msg-in {\n from { opacity: 0; transform: translateY(8px); }\n to { opacity: 1; transform: translateY(0); }\n}\n@keyframes csk-fade-in {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n/* ========== Loading 动画 ========== */\n.csk-loading {\n display: flex;\n align-items: center;\n margin-bottom: 18px;\n animation: csk-msg-in 0.28s ease;\n}\n.csk-loading__avatar {\n width: 30px;\n height: 30px;\n border-radius: 50%;\n background: #fff;\n color: var(--csk-primary);\n border: 1px solid var(--csk-border);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n margin: 0 8px;\n box-shadow: var(--csk-shadow-bubble);\n}\n.csk-loading__avatar svg { width: 18px; height: 18px; }\n.csk-loading__bubble {\n background: #fff;\n border: 1px solid var(--csk-border);\n border-radius: 16px 16px 16px 4px;\n padding: 12px 16px;\n display: flex;\n align-items: center;\n gap: 5px;\n}\n.csk-loading__dot {\n width: 7px;\n height: 7px;\n border-radius: 50%;\n background: #B4B9C2;\n animation: csk-bounce 1.4s ease-in-out infinite both;\n}\n.csk-loading__dot:nth-child(1) { animation-delay: 0s; }\n.csk-loading__dot:nth-child(2) { animation-delay: 0.16s; }\n.csk-loading__dot:nth-child(3) { animation-delay: 0.32s; }\n\n@keyframes csk-bounce {\n 0%, 80%, 100% { transform: scale(0.6); opacity: 0.6; }\n 40% { transform: scale(1); opacity: 1; }\n}\n\n/* ========== 输入区 ========== */\n.csk-input-area {\n padding: 10px 12px 14px;\n background: #fff;\n border-top: 1px solid var(--csk-border);\n flex-shrink: 0;\n}\n.csk-input-wrap {\n display: flex;\n align-items: flex-end;\n gap: 8px;\n background: var(--csk-bg-app);\n border: 1px solid var(--csk-border);\n border-radius: 14px;\n padding: 6px 6px 6px 14px;\n transition: border-color 0.2s, box-shadow 0.2s, background 0.2s;\n}\n.csk-input-wrap--focus {\n border-color: var(--csk-primary);\n background: #fff;\n box-shadow: 0 0 0 3px rgba(var(--csk-primary-rgb), 0.12);\n}\n.csk-input {\n flex: 1;\n border: none;\n background: transparent;\n padding: 8px 0;\n font-size: 14px;\n outline: none;\n font-family: inherit;\n resize: none;\n min-height: 22px;\n max-height: 120px;\n line-height: 1.5;\n color: #1F2937;\n}\n.csk-input::placeholder { color: #9CA3AF; }\n.csk-root .csk-input:focus-visible { outline: none; }\n.csk-send-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n min-width: 36px;\n border: none;\n border-radius: 10px;\n background: var(--csk-bg-user);\n color: #fff;\n cursor: pointer;\n transition: transform 0.18s, box-shadow 0.18s, opacity 0.18s;\n box-shadow: 0 3px 10px rgba(var(--csk-primary-rgb), 0.3);\n}\n.csk-send-btn:hover:not(:disabled) {\n transform: translateY(-1px);\n box-shadow: 0 5px 14px rgba(var(--csk-primary-rgb), 0.4);\n}\n.csk-send-btn:active:not(:disabled) { transform: scale(0.92); }\n.csk-send-btn:disabled {\n background: #D1D5DB;\n box-shadow: none;\n cursor: not-allowed;\n opacity: 0.7;\n}\n.csk-send-btn svg { width: 18px; height: 18px; }\n\n/* ========== 清空按钮 ========== */\n.csk-clear-btn {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 5px 12px;\n border: 1px solid var(--csk-border);\n border-radius: 999px;\n background: #fff;\n color: #6B7280;\n font-size: 12px;\n cursor: pointer;\n margin: 0 auto 8px;\n transition: all 0.15s;\n font-family: inherit;\n}\n.csk-clear-btn:hover {\n background: #FEF2F2;\n border-color: #FCA5A5;\n color: #DC2626;\n}\n\n/* ========== P1: 知识库分类下拉 ========== */\n.csk-category-bar {\n display: flex;\n align-items: center;\n padding: 8px 12px;\n border-top: 1px solid var(--csk-border);\n background: #FBFBFC;\n gap: 8px;\n flex-shrink: 0;\n}\n.csk-category-bar__label {\n font-size: 13px;\n white-space: nowrap;\n}\n.csk-category-select {\n flex: 1;\n padding: 6px 28px 6px 10px;\n border: 1px solid var(--csk-border);\n border-radius: 8px;\n font-size: 12.5px;\n color: #374151;\n background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%239CA3AF' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E") no-repeat right 9px center;\n appearance: none;\n -webkit-appearance: none;\n outline: none;\n cursor: pointer;\n font-family: inherit;\n transition: border-color 0.2s, box-shadow 0.2s;\n max-width: 220px;\n}\n.csk-category-select:focus {\n border-color: var(--csk-primary);\n box-shadow: 0 0 0 3px rgba(var(--csk-primary-rgb), 0.12);\n}\n\n/* ========== P1: RAG 引用来源卡片 ========== */\n.csk-sources {\n margin-top: 8px;\n border: 1px solid var(--csk-border);\n border-radius: 12px;\n overflow: hidden;\n font-size: 12px;\n max-width: 100%;\n background: #FAFBFC;\n}\n.csk-sources__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 12px;\n background: #F3F4F7;\n cursor: pointer;\n user-select: none;\n transition: background 0.15s;\n}\n.csk-sources__header:hover { background: #ECEEF2; }\n.csk-sources__title {\n display: flex;\n align-items: center;\n gap: 5px;\n font-weight: 500;\n color: #374151;\n}\n.csk-sources__arrow {\n transition: transform 0.2s;\n color: #9CA3AF;\n font-size: 10px;\n}\n.csk-sources--collapsed .csk-sources__arrow { transform: rotate(-90deg); }\n.csk-sources__body {\n border-top: 1px solid var(--csk-border);\n padding: 0;\n}\n.csk-sources--collapsed .csk-sources__body { display: none; }\n.csk-source-item {\n padding: 9px 12px;\n border-bottom: 1px solid #F0F1F4;\n transition: background 0.15s;\n}\n.csk-source-item:last-child { border-bottom: none; }\n.csk-source-item:hover { background: #fff; }\n.csk-source-item__name {\n font-weight: 500;\n color: #1F2937;\n margin-bottom: 3px;\n}\n.csk-source-item__snippet {\n color: #6B7280;\n line-height: 1.5;\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n}\n.csk-source-item__meta {\n font-size: 11px;\n color: #9CA3AF;\n margin-top: 4px;\n}\n\n/* ========== P1: Markdown 渲染样式 ========== */\n.csk-msg--ai .csk-msg__bubble .csk-md-p { margin: 0 0 8px; }\n.csk-msg--ai .csk-msg__bubble .csk-md-p:last-child { margin-bottom: 0; }\n.csk-msg--ai .csk-msg__bubble .csk-md-h1,\n.csk-msg--ai .csk-msg__bubble .csk-md-h2,\n.csk-msg--ai .csk-msg__bubble .csk-md-h3,\n.csk-msg--ai .csk-msg__bubble .csk-md-h4,\n.csk-msg--ai .csk-msg__bubble .csk-md-h5,\n.csk-msg--ai .csk-msg__bubble .csk-md-h6 {\n margin: 14px 0 6px;\n font-weight: 600;\n line-height: 1.3;\n color: #111827;\n}\n.csk-msg--ai .csk-msg__bubble .csk-md-h1 { font-size: 20px; }\n.csk-msg--ai .csk-msg__bubble .csk-md-h2 { font-size: 17px; }\n.csk-msg--ai .csk-msg__bubble .csk-md-h3 { font-size: 15px; }\n.csk-msg--ai .csk-msg__bubble .csk-md-h4 { font-size: 14px; }\n\n.csk-md-code-block {\n background: #1E293B;\n color: #E2E8F0;\n padding: 12px 14px;\n border-radius: 10px;\n overflow-x: auto;\n margin: 8px 0;\n font-size: 13px;\n line-height: 1.55;\n font-family: 'SF Mono', 'Consolas', 'Menlo', 'Monaco', monospace;\n}\n.csk-md-code-block code {\n background: none;\n padding: 0;\n border-radius: 0;\n font-size: inherit;\n color: inherit;\n}\n.csk-md-inline-code {\n background: rgba(var(--csk-primary-rgb), 0.1);\n color: var(--csk-primary);\n padding: 1px 6px;\n border-radius: 5px;\n font-size: 13px;\n font-family: 'SF Mono', 'Consolas', 'Menlo', 'Monaco', monospace;\n}\n.csk-msg--ai .csk-msg__bubble .csk-md-ul,\n.csk-msg--ai .csk-msg__bubble .csk-md-ol {\n padding-left: 22px;\n margin: 6px 0;\n}\n.csk-msg--ai .csk-msg__bubble .csk-md-ul li,\n.csk-msg--ai .csk-msg__bubble .csk-md-ol li { margin-bottom: 4px; }\n.csk-md-blockquote {\n border-left: 3px solid var(--csk-primary);\n padding: 2px 12px;\n margin: 8px 0;\n color: #6B7280;\n background: rgba(var(--csk-primary-rgb), 0.05);\n border-radius: 0 6px 6px 0;\n}\n.csk-md-link {\n color: var(--csk-primary);\n text-decoration: none;\n border-bottom: 1px solid rgba(var(--csk-primary-rgb), 0.3);\n transition: border-color 0.15s;\n}\n.csk-md-link:hover { border-bottom-color: var(--csk-primary); }\n.csk-md-hr {\n border: none;\n border-top: 1px solid var(--csk-border);\n margin: 12px 0;\n}\n\n/* ========== P2: 会话管理面板 ========== */\n.csk-history-panel {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: #fff;\n z-index: 10;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n animation: csk-slide-in 0.24s ease;\n}\n.csk-history-panel--hidden { display: none; }\n@keyframes csk-slide-in {\n from { transform: translateX(100%); opacity: 0.4; }\n to { transform: translateX(0); opacity: 1; }\n}\n.csk-history-panel__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 14px 16px;\n border-bottom: 1px solid var(--csk-border);\n background: var(--csk-bg-app);\n flex-shrink: 0;\n}\n.csk-history-panel__title {\n font-size: 14px;\n font-weight: 600;\n color: #1F2937;\n}\n.csk-history-panel__back {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 5px 12px;\n border: 1px solid var(--csk-border);\n border-radius: 8px;\n background: #fff;\n color: #374151;\n font-size: 12px;\n cursor: pointer;\n transition: all 0.15s;\n font-family: inherit;\n}\n.csk-history-panel__back:hover { background: #F3F4F6; }\n.csk-history-panel__list {\n flex: 1;\n overflow-y: auto;\n padding: 10px;\n}\n.csk-history-panel__list::-webkit-scrollbar { width: 5px; }\n.csk-history-panel__list::-webkit-scrollbar-thumb { background: #E5E7EB; border-radius: 2px; }\n.csk-history-item {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 11px 12px;\n border-radius: 10px;\n cursor: pointer;\n transition: background 0.15s;\n margin-bottom: 5px;\n border: 1px solid transparent;\n}\n.csk-history-item:hover { background: #F3F4F6; }\n.csk-history-item--active {\n background: rgba(var(--csk-primary-rgb), 0.08);\n border-color: rgba(var(--csk-primary-rgb), 0.2);\n}\n.csk-history-item--active:hover { background: rgba(var(--csk-primary-rgb), 0.12); }\n.csk-history-item__info { flex: 1; min-width: 0; }\n.csk-history-item__id {\n font-size: 13px;\n font-weight: 500;\n color: #1F2937;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.csk-history-item__meta {\n font-size: 11px;\n color: #9CA3AF;\n margin-top: 3px;\n}\n.csk-history-item__actions {\n display: flex;\n gap: 4px;\n margin-left: 8px;\n opacity: 0;\n transition: opacity 0.15s;\n}\n.csk-history-item:hover .csk-history-item__actions { opacity: 1; }\n.csk-history-action {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border: none;\n border-radius: 7px;\n cursor: pointer;\n font-size: 12px;\n transition: all 0.15s;\n}\n.csk-history-action--export { background: #EFF6FF; color: #2563EB; }\n.csk-history-action--export:hover { background: #DBEAFE; }\n.csk-history-action--delete { background: #FEF2F2; color: #DC2626; }\n.csk-history-action--delete:hover { background: #FEE2E2; }\n.csk-history-panel__empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 48px 20px;\n color: #9CA3AF;\n font-size: 13px;\n text-align: center;\n}\n.csk-history-panel__empty-icon {\n font-size: 34px;\n margin-bottom: 10px;\n opacity: 0.5;\n}\n.csk-history-panel__loading {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 24px;\n color: #9CA3AF;\n font-size: 13px;\n}\n.csk-history-panel__loadmore {\n display: block;\n width: 100%;\n padding: 10px;\n border: none;\n background: #F9FAFB;\n color: #6B7280;\n font-size: 12px;\n cursor: pointer;\n text-align: center;\n transition: background 0.15s;\n}\n.csk-history-panel__loadmore:hover { background: #F3F4F6; }\n\n/* ========== 快捷问题芯片 ========== */\n.csk-quick-replies {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n justify-content: center;\n margin-top: 18px;\n max-width: 320px;\n}\n.csk-quick-reply {\n border: 1px solid var(--csk-border);\n background: #fff;\n color: #374151;\n font-size: 12.5px;\n padding: 7px 13px;\n border-radius: 999px;\n cursor: pointer;\n font-family: inherit;\n line-height: 1.3;\n transition: all 0.18s ease;\n max-width: 100%;\n}\n.csk-quick-reply:hover {\n border-color: var(--csk-primary);\n color: var(--csk-primary);\n background: rgba(var(--csk-primary-rgb), 0.06);\n transform: translateY(-1px);\n}\n.csk-quick-reply:active { transform: scale(0.96); }\n\n/* ========== AI 消息操作条 ========== */\n.csk-msg__actions {\n display: flex;\n gap: 2px;\n margin-top: 5px;\n padding: 0 2px;\n opacity: 0;\n transition: opacity 0.15s ease;\n}\n.csk-msg--ai:hover .csk-msg__actions { opacity: 1; }\n.csk-msg--streaming .csk-msg__actions { display: none; }\n.csk-action-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 26px;\n height: 26px;\n border: none;\n background: transparent;\n color: #9CA3AF;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n.csk-action-btn:hover {\n background: #F3F4F6;\n color: #374151;\n}\n.csk-action-btn--done { color: #10B981; }\n.csk-action-btn:active { transform: scale(0.9); }\n\n/* ========== 流式打字光标 ========== */\n.csk-caret {\n display: inline-block;\n width: 7px;\n height: 15px;\n margin-left: 2px;\n vertical-align: text-bottom;\n background: var(--csk-primary);\n border-radius: 1px;\n animation: csk-caret-blink 1s step-end infinite;\n}\n@keyframes csk-caret-blink {\n 0%, 50% { opacity: 1; }\n 51%, 100% { opacity: 0; }\n}\n\n/* ========== 代码块复制按钮 ========== */\n.csk-md-code-block { position: relative; }\n.csk-md-code-copy {\n position: absolute;\n top: 8px;\n right: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 26px;\n height: 26px;\n border: none;\n background: rgba(255, 255, 255, 0.12);\n color: #CBD5E1;\n border-radius: 6px;\n cursor: pointer;\n opacity: 0;\n transition: all 0.15s ease;\n}\n.csk-md-code-block:hover .csk-md-code-copy { opacity: 1; }\n.csk-md-code-copy:hover { background: rgba(255, 255, 255, 0.22); color: #fff; }\n.csk-md-code-copy:active { transform: scale(0.9); }\n\n/* ========== 新消息提示按钮 ========== */\n.csk-newmsg {\n position: absolute;\n bottom: 82px;\n left: 50%;\n transform: translateX(-50%);\n z-index: 5;\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 7px 14px;\n border: none;\n background: var(--csk-primary);\n color: #fff;\n font-size: 12px;\n font-family: inherit;\n border-radius: 999px;\n cursor: pointer;\n box-shadow: 0 4px 14px rgba(var(--csk-primary-rgb), 0.38);\n transition: transform 0.2s ease, box-shadow 0.2s ease;\n animation: csk-msg-in 0.25s ease;\n white-space: nowrap;\n}\n.csk-newmsg:hover { transform: translateX(-50%) translateY(-1px); box-shadow: 0 6px 18px rgba(var(--csk-primary-rgb), 0.48); }\n.csk-newmsg:active { transform: translateX(-50%) scale(0.95); }\n.csk-newmsg--hidden { display: none; }\n\n/* ========== 发送按钮停止态 ========== */\n.csk-send-btn--stop {\n background: #EF4444 !important;\n box-shadow: 0 3px 10px rgba(239, 68, 68, 0.35) !important;\n}\n.csk-send-btn--stop:hover:not(:disabled) {\n box-shadow: 0 5px 14px rgba(239, 68, 68, 0.45) !important;\n}\n\n/* ========== 暗色模式 ========== */\n.csk-root.csk-dark {\n --csk-bg-ai: #1E1E2E;\n --csk-text-ai: #E2E8F0;\n --csk-border: #3B3B52;\n --csk-bg-app: #141421;\n color: #E2E8F0;\n}\n.csk-dark .csk-window {\n background: #1A1A2E;\n box-shadow: 0 12px 48px rgba(0, 0, 0, 0.4), 0 2px 8px rgba(0, 0, 0, 0.2);\n}\n.csk-dark .csk-header::after { background: linear-gradient(to bottom, rgba(0,0,0,0.12), transparent); }\n.csk-dark .csk-msg__avatar--ai {\n background: var(--csk-bg-ai);\n color: var(--csk-primary);\n border-color: var(--csk-border);\n}\n.csk-dark .csk-input-area { background: #1A1A2E; border-top-color: var(--csk-border); }\n.csk-dark .csk-input-wrap { background: var(--csk-bg-app); border-color: var(--csk-border); }\n.csk-dark .csk-input-wrap--focus { background: #1A1A2E; border-color: var(--csk-primary); }\n.csk-dark .csk-input { color: #E2E8F0; }\n.csk-dark .csk-loading__avatar { background: var(--csk-bg-ai); border-color: var(--csk-border); }\n.csk-dark .csk-loading__bubble { background: var(--csk-bg-ai); border-color: var(--csk-border); }\n.csk-dark .csk-loading__dot { background: #6B7280; }\n.csk-dark .csk-category-bar { background: #1A1A2E; border-top-color: var(--csk-border); }\n.csk-dark .csk-category-select { background-color: var(--csk-bg-app); border-color: var(--csk-border); color: #E2E8F0; }\n.csk-dark .csk-sources { background: #1E1E2E; border-color: var(--csk-border); }\n.csk-dark .csk-sources__header { background: #25253A; }\n.csk-dark .csk-sources__header:hover { background: #2D2D48; }\n.csk-dark .csk-source-item:hover { background: var(--csk-bg-ai); }\n.csk-dark .csk-source-item__name { color: #E2E8F0; }\n.csk-dark .csk-source-item__meta { color: #6B7280; }\n.csk-dark .csk-history-panel { background: #1A1A2E; }\n.csk-dark .csk-history-panel__header { background: var(--csk-bg-app); border-bottom-color: var(--csk-border); }\n.csk-dark .csk-history-panel__back { background: var(--csk-bg-app); border-color: var(--csk-border); color: #E2E8F0; }\n.csk-dark .csk-history-panel__back:hover { background: #2D2D48; }\n.csk-dark .csk-history-item:hover { background: #25253A; }\n.csk-dark .csk-history-item__id { color: #E2E8F0; }\n.csk-dark .csk-history-item__meta { color: #6B7280; }\n.csk-dark .csk-history-item--active { background: rgba(var(--csk-primary-rgb), 0.15); }\n.csk-dark .csk-history-item--active:hover { background: rgba(var(--csk-primary-rgb), 0.22); }\n.csk-dark .csk-action-btn:hover { background: #2D2D48; color: #E2E8F0; }\n.csk-dark .csk-clear-btn { background: var(--csk-bg-app); border-color: var(--csk-border); color: #9CA3AF; }\n.csk-dark .csk-clear-btn:hover { background: #3B1A1A; border-color: #7F1D1D; color: #FCA5A5; }\n.csk-dark .csk-md-code-block { background: #0F0F1A; }\n.csk-dark .csk-md-blockquote { background: rgba(var(--csk-primary-rgb), 0.08); }\n.csk-dark .csk-md-link { color: var(--csk-primary-light); }\n.csk-dark .csk-msg--ai .csk-msg__bubble { background: var(--csk-bg-ai); color: var(--csk-text-ai); border-color: var(--csk-border); }\n.csk-dark .csk-welcome__title { color: #E2E8F0; }\n.csk-dark .csk-welcome__desc { color: #6B7280; }\n.csk-dark .csk-quick-reply { background: var(--csk-bg-app); border-color: var(--csk-border); color: #CBD5E1; }\n.csk-dark .csk-quick-reply:hover { background: rgba(var(--csk-primary-rgb), 0.12); border-color: var(--csk-primary); color: var(--csk-primary-light); }\n.csk-dark .csk-teaser { background: #2D2D48; color: #E2E8F0; box-shadow: 0 4px 20px rgba(0,0,0,0.35); }\n.csk-dark .csk-teaser::after { border-top-color: #2D2D48; }\n.csk-dark .csk-teaser__close { color: #6B7280; }\n.csk-dark .csk-teaser__close:hover { color: #9CA3AF; }\n.csk-dark .csk-feedback-btn { background: rgba(var(--csk-primary-rgb), 0.1); color: #9CA3AF; }\n.csk-dark .csk-feedback-btn:hover { background: rgba(var(--csk-primary-rgb), 0.2); color: var(--csk-primary-light); }\n.csk-dark .csk-feedback-btn--active { background: rgba(var(--csk-primary-rgb), 0.28); color: var(--csk-primary-light); }\n.csk-dark .csk-history-panel__search-wrap { background: var(--csk-bg-app); border-color: var(--csk-border); }\n.csk-dark .csk-history-panel__search-wrap:focus-within { border-color: var(--csk-primary); }\n.csk-dark .csk-history-panel__search { color: #E2E8F0; }\n.csk-dark .csk-launcher__badge { box-shadow: 0 0 0 2px #1A1A2E; }\n.csk-dark .csk-welcome__avatar { box-shadow: 0 6px 18px rgba(var(--csk-primary-rgb), 0.25); }\n.csk-dark .csk-header__avatar { box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.15); background: rgba(255, 255, 255, 0.1); }\n\n/* ========== Launcher 未读徽章 ========== */\n.csk-launcher__badge {\n position: absolute;\n top: -2px;\n right: -2px;\n width: 16px;\n height: 16px;\n border-radius: 50%;\n background: #EF4444;\n border: 2px solid #fff;\n box-shadow: 0 0 0 2px #fff;\n animation: csk-badge-in 0.28s cubic-bezier(0.34, 1.56, 0.64, 1);\n pointer-events: none;\n}\n.csk-launcher__badge--hidden { display: none; }\n@keyframes csk-badge-in {\n from { transform: scale(0); }\n to { transform: scale(1); }\n}\n\n/* ========== Launcher 提示气泡 ========== */\n.csk-teaser {\n position: fixed;\n bottom: 90px;\n z-index: 9997;\n max-width: 240px;\n padding: 10px 14px;\n background: #fff;\n color: #1F2937;\n font-size: 13px;\n line-height: 1.5;\n border-radius: 12px;\n box-shadow: 0 4px 20px rgba(15, 23, 42, 0.15);\n animation: csk-teaser-in 0.35s cubic-bezier(0.22, 1, 0.36, 1);\n cursor: pointer;\n user-select: none;\n}\n.csk-teaser--right { right: 24px; }\n.csk-teaser--left { left: 24px; }\n.csk-teaser::after {\n content: '';\n position: absolute;\n bottom: -6px;\n right: 28px;\n width: 12px;\n height: 12px;\n background: inherit;\n border-radius: 2px;\n transform: rotate(45deg);\n box-shadow: 2px 2px 4px rgba(15, 23, 42, 0.08);\n}\n.csk-teaser--left::after { right: auto; left: 28px; }\n.csk-teaser__close {\n position: absolute;\n top: 4px;\n right: 6px;\n background: none;\n border: none;\n font-size: 16px;\n color: #9CA3AF;\n cursor: pointer;\n padding: 2px 4px;\n line-height: 1;\n border-radius: 4px;\n}\n.csk-teaser__close:hover { color: #374151; }\n.csk-teaser--hidden { display: none; }\n@keyframes csk-teaser-in {\n from { opacity: 0; transform: translateY(8px) scale(0.95); }\n to { opacity: 1; transform: translateY(0) scale(1); }\n}\n\n/* ========== 消息反馈按钮(👍 / 👎) ========== */\n.csk-feedback-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 26px;\n height: 26px;\n border: none;\n background: rgba(var(--csk-primary-rgb), 0.08);\n color: #9CA3AF;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s ease;\n padding: 0;\n}\n.csk-feedback-btn:hover { background: rgba(var(--csk-primary-rgb), 0.18); color: var(--csk-primary); }\n.csk-feedback-btn--active {\n background: rgba(var(--csk-primary-rgb), 0.28);\n color: var(--csk-primary);\n}\n.csk-feedback-btn--active.down { background: #FEF2F2; color: #EF4444; }\n.csk-feedback-btn:active { transform: scale(0.9); }\n.csk-msg--streaming .csk-feedback-btn { display: none; }\n\n/* ========== 历史会话搜索框 ========== */\n.csk-history-panel__search-wrap {\n padding: 8px 10px;\n border-bottom: 1px solid var(--csk-border);\n flex-shrink: 0;\n}\n.csk-history-panel__search-wrap:focus-within {\n border-bottom-color: var(--csk-primary);\n}\n.csk-history-panel__search {\n width: 100%;\n padding: 7px 10px;\n border: 1px solid var(--csk-border);\n border-radius: 8px;\n font-size: 12.5px;\n font-family: inherit;\n color: #1F2937;\n background: var(--csk-bg-app);\n outline: none;\n transition: border-color 0.2s;\n}\n.csk-history-panel__search:focus { border-color: var(--csk-primary); }\n.csk-history-panel__search::placeholder { color: #9CA3AF; }\n\n/* ========== a11y 焦点指示 ========== */\n.csk-root :focus-visible {\n outline: 2px solid var(--csk-primary);\n outline-offset: 2px;\n}\n.csk-root button:focus-visible {\n outline: 2px solid var(--csk-primary);\n outline-offset: 2px;\n border-radius: inherit;\n}\n/* 弹窗打开时隐藏 launcher 上的焦点环 */\n.csk-launcher:focus-visible {\n outline: none;\n border-color: rgba(255, 255, 255, 0.75);\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.06),\n 0 4px 16px rgba(0, 0, 0, 0.10),\n 0 6px 24px rgba(var(--csk-primary-rgb), 0.28),\n 0 0 48px rgba(var(--csk-primary-rgb), 0.12),\n 0 0 0 4px rgba(var(--csk-primary-rgb), 0.3);\n}\n\n/* ========== a11y aria-live 播报区(视觉隐藏) ========== */\n.csk-sr-only {\n position: absolute !important;\n width: 1px !important;\n height: 1px !important;\n padding: 0 !important;\n margin: -1px !important;\n overflow: hidden !important;\n clip: rect(0,0,0,0) !important;\n white-space: nowrap !important;\n border: 0 !important;\n}\n\n/* ========== 会话分组标题 ========== */\n.csk-history-group {\n margin-bottom: 4px;\n}\n.csk-history-group__label {\n font-size: 11px;\n font-weight: 600;\n color: #9CA3AF;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n padding: 8px 12px 4px;\n user-select: none;\n}\n.csk-dark .csk-history-group__label { color: #6B7280; }\n\n/* ========== 移动端适配 ========== */\n@media (max-width: 480px) {\n .csk-window {\n width: 100vw !important;\n height: 100vh !important;\n max-height: 100vh;\n bottom: 0 !important;\n right: 0 !important;\n left: 0 !important;\n border-radius: 0;\n }\n .csk-window--hidden { transform: translateY(100%); }\n .csk-launcher { bottom: 20px; }\n .csk-launcher--right { right: 20px; }\n .csk-launcher--left { left: 20px; }\n}\n`}(e),document.head.appendChild(D))}function z(){return"undefined"!=typeof crypto&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const n=16*Math.random()|0;return("x"===e?n:3&n|8).toString(16)})}function H(e){const n={"&":"&","<":"<",">":">",'"':""","'":"'"};return e.replace(/[&<>"']/g,e=>n[e]||e)}function j(){return Date.now()}const R='';function P(e,n){const t=document.createElement("div");t.id="csk-launcher";const r=e.launcherTheme?" csk-launcher--glass":"";t.className=`csk-launcher csk-launcher--${"left-bottom"===e.position?"left":"right"}${r}`,t.setAttribute("title",e.title),t.setAttribute("aria-label",e.title),t.setAttribute("role","button"),t.setAttribute("tabindex","0"),t.innerHTML=e.launcherIcon;const s=document.createElement("div");s.className="csk-launcher__badge csk-launcher__badge--hidden",t.appendChild(s);const o=function(e,n){let t=null;return function(...r){null!==t&&clearTimeout(t),t=setTimeout(()=>{e.apply(this,r),t=null},n)}}(n,300);return t.addEventListener("click",o),t.addEventListener("keydown",e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),o())}),t}function U(e,n,t){const r=document.createElement("div");r.className="csk-msg csk-msg--user";const s=document.createElement("div");s.className="csk-msg__avatar csk-msg__avatar--user",s.innerHTML='';const o=document.createElement("div");o.className="csk-msg__content";const a=document.createElement("div");a.className="csk-msg__bubble",a.textContent=n;const i=document.createElement("div");return i.className="csk-msg__time",i.textContent=ne(t),o.appendChild(a),o.appendChild(i),r.appendChild(s),r.appendChild(o),e.appendChild(r),r}function Y(e,n,t,r,s){const o=document.createElement("div");o.className="csk-msg csk-msg--ai",s&&(o.dataset.cskMsgId=s);const a=document.createElement("div");a.className="csk-msg__avatar csk-msg__avatar--ai",a.innerHTML=R;const i=document.createElement("div");i.className="csk-msg__content";const c=document.createElement("div");c.className="csk-msg__bubble",r?c.innerHTML=r(n):c.textContent=n;const l=document.createElement("div");return l.className="csk-msg__time",l.textContent=ne(t),i.appendChild(c),i.appendChild(G(c,o)),i.appendChild(l),o.appendChild(a),o.appendChild(i),e.appendChild(o),X(c),o}const O='',W='';function G(e,n){const t=document.createElement("div");t.className="csk-msg__actions";const r=document.createElement("button");r.type="button",r.className="csk-action-btn",r.setAttribute("title",m("copy")),r.setAttribute("aria-label",m("copy")),r.innerHTML=O,r.addEventListener("click",async n=>{n.stopPropagation();const t=e.textContent||"";await K(t,r)});const s=document.createElement("button");s.type="button",s.className="csk-action-btn",s.setAttribute("title",m("retry")),s.setAttribute("aria-label",m("retry")),s.innerHTML=W,s.addEventListener("click",e=>{e.stopPropagation();const t=n.closest(".csk-window");t&&t.dispatchEvent(new CustomEvent("csk:retry",{detail:{msgId:n.dataset.cskMsgId||""}}))});const o=document.createElement("button");o.type="button",o.className="csk-feedback-btn",o.setAttribute("title",m("feedback_up")),o.setAttribute("aria-label",m("feedback_up")),o.innerHTML='',o.addEventListener("click",e=>{e.stopPropagation();const t=n.closest(".csk-window");t&&t.dispatchEvent(new CustomEvent("csk:feedback",{detail:{msgId:n.dataset.cskMsgId||"",value:"up"}}))});const a=document.createElement("button");return a.type="button",a.className="csk-feedback-btn",a.setAttribute("title",m("feedback_down")),a.setAttribute("aria-label",m("feedback_down")),a.innerHTML='',a.addEventListener("click",e=>{e.stopPropagation();const t=n.closest(".csk-window");t&&t.dispatchEvent(new CustomEvent("csk:feedback",{detail:{msgId:n.dataset.cskMsgId||"",value:"down"}}))}),t.appendChild(r),t.appendChild(s),t.appendChild(o),t.appendChild(a),t}function V(e,n){const t=e.querySelectorAll(".csk-feedback-btn");t.length<2||(t.forEach(e=>e.classList.remove("csk-feedback-btn--active","down")),"up"===n&&t[0]&&t[0].classList.add("csk-feedback-btn--active"),"down"===n&&t[1]&&t[1].classList.add("csk-feedback-btn--active","down"))}async function K(e,n){const t=n.innerHTML;try{if(navigator.clipboard&&window.isSecureContext)await navigator.clipboard.writeText(e);else{const n=document.createElement("textarea");n.value=e,n.style.position="fixed",n.style.opacity="0",document.body.appendChild(n),n.select(),document.execCommand("copy"),document.body.removeChild(n)}n.innerHTML='',n.classList.add("csk-action-btn--done"),setTimeout(()=>{n.innerHTML=t,n.classList.remove("csk-action-btn--done")},1500)}catch(e){}}function X(e){e.querySelectorAll(".csk-md-code-block").forEach(e=>{if(e.querySelector(".csk-md-code-copy"))return;const n=e.querySelector("code"),t=document.createElement("button");t.type="button",t.className="csk-md-code-copy",t.setAttribute("title",m("copy")),t.setAttribute("aria-label",m("copy")),t.innerHTML=O,t.addEventListener("click",async e=>{e.stopPropagation(),await K((null==n?void 0:n.textContent)||"",t)}),e.appendChild(t)})}function J(e,n){e.classList.remove("csk-msg--streaming");const t=n.querySelector(".csk-caret");t&&t.remove(),X(n)}function Q(e,n){const t=e.querySelector(".csk-sources");if(t&&t.remove(),!n||0===n.length)return;const r=document.createElement("div");r.className="csk-sources csk-sources--collapsed";const s=document.createElement("div");s.className="csk-sources__header";const o=document.createElement("span");o.className="csk-sources__title",o.textContent=`📚 ${m("source_count",{n:n.length})}`;const a=document.createElement("span");a.className="csk-sources__arrow",a.textContent="▼",s.appendChild(o),s.appendChild(a),s.addEventListener("click",()=>{r.classList.toggle("csk-sources--collapsed")});const i=document.createElement("div");i.className="csk-sources__body";for(const e of n){const n=document.createElement("div");n.className="csk-source-item";const t=document.createElement("div");if(t.className="csk-source-item__name",t.textContent=e.title||e.sourceName||"未知文档",e.snippet){const t=document.createElement("div");t.className="csk-source-item__snippet",t.textContent=e.snippet,n.appendChild(t)}const r=document.createElement("div");r.className="csk-source-item__meta";const s=[];e.sourceName&&s.push(e.sourceName),void 0!==e.chunkIndex&&s.push(`分块 #${e.chunkIndex}`),void 0!==e.score&&s.push(`相关度 ${(100*e.score).toFixed(0)}%`),r.textContent=s.join(" · "),n.appendChild(t),n.appendChild(r),i.appendChild(n)}r.appendChild(s),r.appendChild(i);const c=e.querySelector(".csk-msg__time");c&&c.parentNode?c.parentNode.insertBefore(r,c):e.appendChild(r)}function Z(e,n,t,r,s,o,a){if(e.innerHTML="",0===n.length){const n=document.createElement("div");return n.className="csk-history-panel__empty",n.innerHTML=`\n
💬
\n
${m("history_empty")}
\n `,void e.appendChild(n)}const i=function(e){const n=new Date,t=new Date(n.getFullYear(),n.getMonth(),n.getDate()).getTime(),r=t-864e5,s=t-864e5*(n.getDay()||7)+864e5,o={today:[],yesterday:[],week:[],earlier:[]};for(const n of e){const e=n.lastMessageTime||n.createdAt,a=e?new Date(e).getTime():0;a>=t?o.today.push(n):a>=r?o.yesterday.push(n):a>=s?o.week.push(n):o.earlier.push(n)}const a=[];return o.today.length&&a.push({label:m("history_group_today"),items:o.today}),o.yesterday.length&&a.push({label:m("history_group_yesterday"),items:o.yesterday}),o.week.length&&a.push({label:m("history_group_week"),items:o.week}),o.earlier.length&&a.push({label:m("history_group_earlier"),items:o.earlier}),a}(n);for(const n of i){if(i.length>1){const t=document.createElement("div");t.className="csk-history-group";const r=document.createElement("div");r.className="csk-history-group__label",r.textContent=n.label,t.appendChild(r),e.appendChild(t)}for(const a of n.items){const n=document.createElement("div");n.className="csk-history-item";const i=a.chatId||a.id;o&&i===o&&n.classList.add("csk-history-item--active");const c=document.createElement("div");c.className="csk-history-item__info";const l=document.createElement("div");l.className="csk-history-item__id",a.lastMessagePreview?l.textContent=a.lastMessagePreview.length>60?a.lastMessagePreview.substring(0,60)+"...":a.lastMessagePreview:l.textContent=i;const d=document.createElement("div");d.className="csk-history-item__meta";const p=[];void 0!==a.messageCount&&p.push(`${a.messageCount} 条消息`),a.lastMessageTime?p.push(a.lastMessageTime):a.createdAt&&p.push(a.createdAt),d.textContent=p.join(" · "),c.appendChild(l),c.appendChild(d);const u=document.createElement("div");u.className="csk-history-item__actions";const k=document.createElement("button");k.className="csk-history-action csk-history-action--export",k.setAttribute("title",m("history_export")),k.innerHTML='',k.addEventListener("click",e=>{e.stopPropagation(),r(a.id)});const g=document.createElement("button");g.className="csk-history-action csk-history-action--delete",g.setAttribute("title",m("history_delete")),g.innerHTML='',g.addEventListener("click",e=>{e.stopPropagation(),s(a.id)}),u.appendChild(k),u.appendChild(g),n.appendChild(c),n.appendChild(u),n.addEventListener("click",()=>{t(i)}),e.appendChild(n)}}}function ee(e){e.scrollTop=e.scrollHeight}function ne(e){const n=new Date(e);return`${String(n.getHours()).padStart(2,"0")}:${String(n.getMinutes()).padStart(2,"0")}`}function te(e){return`csk_history_${e}`}function re(e,n){try{let t=n;t.length>200&&(t=t.slice(50),o.warn(`消息数量达到上限,已裁剪最早 50 条,当前 ${t.length} 条`));const r={messages:t,updatedAt:Date.now()};localStorage.setItem(te(e),JSON.stringify(r))}catch(e){e instanceof Error&&"QuotaExceededError"===e.name?o.error("localStorage 空间不足,会话历史保存失败。建议清空历史记录。"):o.error("保存会话历史失败",e)}}function se(e){try{localStorage.removeItem(te(e))}catch(e){o.warn("清空会话历史失败",e)}}const oe="\0CODEBLOCK_",ae="\0INLINECODE_";function ie(e){if(!e||"string"!=typeof e)return"";const n=[];let t=e;t=t.replace(/```(\w*)\n([\s\S]*?)```/g,(e,t,r)=>{const s=n.length,o=H(r.trimEnd()),a=t?` class="language-${H(t)}"`:"";return n.push(`
${o}
`),`${oe}${s}\0`});const r=[];t=t.replace(/`([^`\n]+)`/g,(e,n)=>{const t=r.length;return r.push(`${H(n)}`),`${ae}${t}\0`}),t=H(t),t=ce(t,oe,n),t=ce(t,ae,r);const s=t.split("\n"),o=[];let a=!1,i="",c=!1,l=[];for(let e=0;e')){p(),u(),k(),o.push(n);continue}const t=n.match(/^(#{1,6})\s+(.+)/);if(t){p(),u(),k();const e=t[1].length;o.push(`${t[2]}`);continue}const r=n.match(/^>\s?(.*)/);if(r){p(),u(),c||(c=!0,o.push('
')),o.push(`

${d(r[1])}

`);continue}c&&k();const g=n.match(/^[\-\*]\s+(.+)/);if(g){p(),k(),a&&"ul"===i||(u(),a=!0,i="ul",o.push('":""),a=!1,i="")}function k(){c&&(o.push("
"),c=!1)}}function ce(e,n,t){return e.replace(new RegExp(n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")+"(\\d+)\0","g"),(e,n)=>t[parseInt(n)]||"")}let le,de=null,pe=[],ue=null,ke=null,ge=null,me=null,he=null,be=null,fe=null,ye=null,xe=null,ve=null,we=null,_e=null,Ee=null,Ce=!1,Ie=null,$e=!0,Ae=[],Le="",Se=!1;function Fe(e,n){de=e,ue=n.messagesContainer,ke=n.inputEl,ge=n.inputEl.parentElement,me=n.sendBtn,he=n.clearBtn,be=n.categorySelect,fe=n.historyPanel,ye=n.welcomeEl,xe=n.newMsgBtn,ve=n.searchInput,we=n.ariaLiveEl,_e=n.showLoading,Ee=n.hideLoading,le=e.categoryId,Se=!!e.categoryId||!!e.showCategorySwitch,function(){if(!ke||!me)return;me.addEventListener("click",()=>{Ce&&Ie?Ie.abort():He()}),ke.addEventListener("keydown",e=>{"Enter"!==e.key||e.shiftKey||e.isComposing||(e.preventDefault(),He())}),ke.addEventListener("input",()=>{ze(),function(){if(!ke)return;ke.style.height="auto",ke.style.height=`${Math.min(ke.scrollHeight,120)}px`}()}),ke.addEventListener("focus",()=>{ge&&ge.classList.add("csk-input-wrap--focus")}),ke.addEventListener("blur",()=>{ge&&ge.classList.remove("csk-input-wrap--focus")}),he&&he.addEventListener("click",()=>function(){if(!de)return;if(!confirm(m("clear_confirm")))return;if(pe=[],ue){ue.querySelectorAll(".csk-msg, .csk-loading").forEach(e=>e.remove())}he&&(he.style.display="none");qe(),se(de.integrateId);const e=function(){const e="undefined"!=typeof crypto&&crypto.randomUUID?crypto.randomUUID().substring(0,8):Math.random().toString(36).substring(2,10);return`sdk_${Date.now()}_${e}`}();b(e),M(de.integrateId,de.userId,e),o.lifecycleClear(de.integrateId),o.info(`新 chatId=${e}`)}())}(),function(){if(!ue)return;ue.addEventListener("scroll",()=>{if(!ue)return;const{scrollTop:e,scrollHeight:n,clientHeight:t}=ue;$e=n-e-t<80,$e&&Me()}),xe&&xe.addEventListener("click",()=>{ue&&ee(ue),$e=!0,Me()})}(),function(){if(!ve)return;ve.addEventListener("input",()=>{Le=ve.value.trim().toLowerCase(),Be()})}(),e.showCategorySwitch&&be&&async function(){if(!be)return;try{const e=await async function(){const e=y("/category/tree");try{const n=await v(e);if(!n.ok)throw new w(_(n.status),`http_${n.status}`);const t=await n.json();return t.success&&Array.isArray(t.data)?(o.info(`加载分类树成功 count=${t.data.length}`),t.data):[]}catch(e){return e instanceof w?o.error(`加载分类树失败: ${e.message}`):o.error("加载分类树失败",e),[]}}();if(0===e.length)return;be.innerHTML=``;const n=(e,t=0)=>{for(const r of e){const e=document.createElement("option");e.value=String(r.id),e.textContent=`${" ".repeat(t)}${r.name}`,void 0!==le&&String(r.id)===String(le)&&(e.selected=!0),be.appendChild(e),r.children&&r.children.length>0&&n(r.children,t+1)}};n(e),o.info(`知识库分类加载成功 count=${e.length}`)}catch(e){o.error(m("category_load_error"),e)}}()}async function Ne(){if(de&&ue&&(await F(),await async function(){if(!de||!ue)return;const e=f();if(!e)return;try{const n=await A(e);n.messages.length>0&&(pe=n.messages.map((e,n)=>({id:z(),role:"USER"===e.messageType?"user":"ai",content:e.content,timestamp:new Date(e.createTime).getTime()})),Re(),o.info(`从后端加载 ${pe.length} 条历史消息`),re(de.integrateId,pe))}catch(e){o.warn("从后端加载历史消息失败",e)}}(),0===pe.length)){const e=function(e){try{const n=localStorage.getItem(te(e));if(!n)return[];const t=JSON.parse(n);return t&&Array.isArray(t.messages)?(o.info(`加载历史消息 integrateId=${e} count=${t.messages.length}`),t.messages):[]}catch(e){return o.warn("加载会话历史失败",e),[]}}(de.integrateId);e.length>0&&(pe=e,Re(),o.info(`从本地缓存恢复 ${e.length} 条消息`))}}function Me(){xe&&xe.classList.add("csk-newmsg--hidden")}function De(){ue&&($e?ee(ue):xe&&xe.classList.remove("csk-newmsg--hidden"))}function Te(e){me&&("stop"===e?(me.classList.add("csk-send-btn--stop"),me.removeAttribute("disabled"),me.setAttribute("title",m("stop")),me.setAttribute("aria-label",m("stop")),me.innerHTML=''):(me.classList.remove("csk-send-btn--stop"),me.setAttribute("title",m("send")),me.setAttribute("aria-label",m("send")),me.innerHTML='',ze()))}function Be(){const e=null==fe?void 0:fe.querySelector("#csk-history-list");if(!e||!de)return;Z(e,Le?Ae.filter(e=>(e.lastMessagePreview||e.chatId||e.id||"").toLowerCase().includes(Le)):Ae,e=>{Pe(e)},e=>{window.open(S(e),"_blank")},async e=>{if(!confirm(m("history_delete_confirm")))return;await L(e)&&(e===f()&&(pe=[],ue&&ue.querySelectorAll(".csk-msg, .csk-loading").forEach(e=>e.remove()),he&&(he.style.display="none"),qe()),Ae=Ae.filter(n=>(n.chatId||n.id)!==e),Be())},f())}function qe(){if(!ye)return;const e=pe.length>0||ue&&ue.querySelector(".csk-msg");ye.style.display=e?"none":""}function ze(){if(!me||!ke)return;ke.value.trim().length>0&&!Ce?me.removeAttribute("disabled"):me.setAttribute("disabled","true")}async function He(){if(!ke||!de||Ce)return;const e=ke.value.trim();if(""===e)return;ke.value="",ze(),ke.style.height="auto";const n=j(),t={id:z(),role:"user",content:e,timestamp:n};ue&&U(ue,e,n),pe.push(t),qe(),he&&pe.length>0&&(he.style.display="inline-flex"),ue&&De(),await je(e)}async function je(e){if(!de||!ue)return;Ce=!0,Te("stop"),de.chatId||await F();const n=j(),t=Se&&(void 0!==le||void 0!==de.categoryId);_e&&_e(),ue&&De();const r=z();let s="";try{de.streaming?s=await async function(e,n,t,r){Ie=new AbortController;const s=Ie.signal;return new Promise((o,a)=>{let i=null,c=null,l="",d=!1;C(e,e=>{if(l+=e,!d&&ue){Ee&&Ee();const{wrapper:e,bubble:t}=function(e,n,t){const r=document.createElement("div");r.className="csk-msg csk-msg--ai csk-msg--streaming",t&&(r.dataset.cskMsgId=t);const s=document.createElement("div");s.className="csk-msg__avatar csk-msg__avatar--ai",s.innerHTML=R;const o=document.createElement("div");o.className="csk-msg__content";const a=document.createElement("div");a.className="csk-msg__bubble",a.innerHTML="";const i=document.createElement("div");return i.className="csk-msg__time",i.textContent=ne(n),o.appendChild(a),o.appendChild(G(a,r)),o.appendChild(i),r.appendChild(s),r.appendChild(o),e.appendChild(r),{wrapper:r,bubble:a}}(ue,n,r);c=e,i=t,d=!0}i&&(i.textContent=l,function(e){if(e.querySelector(".csk-caret"))return;const n=document.createElement("span");n.className="csk-caret",n.setAttribute("aria-hidden","true"),e.appendChild(n)}(i)),ue&&De()},()=>{if(c&&i){if(!d&&""===l)return void E(e).then(o).catch(a);l&&(i.innerHTML=ie(l)),J(c,i)}o(l)},e=>{l.length>0?(i&&(i.innerHTML=ie(l+"\n\n"+m("stream_interrupted")),c&&J(c,i)),o(l)):a(e)},le,t,s)})}(e,n,t,r):(s=await E(e),Ee&&Ee(),ue&&Y(ue,s,n,ie,r));const a={id:r,role:"ai",content:s,timestamp:n};pe.push(a),re(de.integrateId,pe),ue&&De(),function(e){if(!we)return;const n=e.length>120?e.substring(0,120)+"...":e;we.textContent=m("new_msg_announce")+":"+n}(s),ue&&ue.dispatchEvent(new CustomEvent("csk:newMessage",{bubbles:!0,detail:{msg:a}})),t&&async function(e,n){try{const t=await I(e,le);if(t.length>0){const e=t.map(e=>{var n,t;return{documentId:e.documentId||"",title:e.title||"",sourceName:e.sourceName||"",chunkIndex:null!==(n=e.chunkIndex)&&void 0!==n?n:0,score:null!==(t=e.score)&&void 0!==t?t:0,snippet:e.snippet||""}});if(n.sources=e,ue){const n=ue.querySelector(".csk-msg--ai:last-of-type");n&&Q(n,e)}de&&re(de.integrateId,pe)}}catch(e){o.warn("获取引用来源失败",e)}}(e,a)}catch(e){Ee&&Ee();const n=e instanceof w?e.message:m("error_send");if(ue){const e=document.createElement("div");e.className="csk-msg csk-msg--ai";const t=document.createElement("div");t.className="csk-msg__bubble",t.style.color="#DC2626",t.textContent=`⚠ ${n}`,e.appendChild(t),ue.appendChild(e)}o.error(`发送失败 integrateId=${de.integrateId}`,e)}finally{Ce=!1,Ie=null,Te("send"),ze()}}function Re(){if(!ue)return;const e=ue.querySelector(".csk-history-panel");ue.querySelectorAll(".csk-msg, .csk-loading").forEach(e=>e.remove());for(const e of pe)if("user"===e.role)U(ue,e.content,e.timestamp);else{const n=Y(ue,e.content,e.timestamp,ie,e.id);e.sources&&e.sources.length>0&&Q(n,e.sources),e.feedback&&V(n,e.feedback)}$e=!0,ee(ue),he&&pe.length>0&&(he.style.display="inline-flex"),qe(),e&&!ue.contains(e)&&ue.appendChild(e)}async function Pe(e){if(!de||!ue)return;o.info(`切换到会话 conversationId=${e}`),b(e),M(de.integrateId,de.userId,e),fe&&fe.classList.add("csk-history-panel--hidden"),pe=[];ue.querySelectorAll(".csk-msg, .csk-loading").forEach(e=>e.remove());try{const n=await A(e);n.messages.length>0&&(pe=n.messages.map(e=>({id:z(),role:"USER"===e.messageType?"user":"ai",content:e.content,timestamp:new Date(e.createTime).getTime()})),Re(),o.info(`加载会话 ${e} 的 ${pe.length} 条消息`),re(de.integrateId,pe))}catch(n){o.warn(`加载会话消息失败 conversationId=${e}`,n)}he&&pe.length>0&&(he.style.display="inline-flex"),qe()}let Ue=null,Ye=!1,Oe=null,We=null,Ge=null,Ve=null,Ke=null,Xe=null,Je=null,Qe=null,Ze=null,en=null,nn=null,tn=null,rn=null,sn=null,on=null;function an(){if(!tn||!Oe)return;const e=Oe.getBoundingClientRect();"left-bottom"===(null==Ue?void 0:Ue.position)?tn.style.left=`${e.left}px`:tn.style.right=window.innerWidth-e.right+"px",tn.style.bottom=window.innerHeight-e.top+8+"px"}function cn(){if(!tn)return;tn.classList.add("csk-teaser--hidden"),tn.removeEventListener("click",ln);const e=tn.querySelector(".csk-teaser__close");e&&e.removeEventListener("click",dn)}function ln(e){e.target.closest(".csk-teaser__close")||(cn(),gn())}function dn(e){e.stopPropagation(),cn()}function pn(){tn&&!tn.classList.contains("csk-teaser--hidden")&&an()}const un='button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])';function kn(e){"Escape"===e.key&&We&&!We.classList.contains("csk-window--hidden")&&mn(),function(e){if(!We||We.classList.contains("csk-window--hidden"))return;if("Tab"!==e.key)return;const n=Array.from(We.querySelectorAll(un));if(0===n.length)return;const t=n[0],r=n[n.length-1];e.shiftKey?document.activeElement===t&&(e.preventDefault(),r.focus()):document.activeElement===r&&(e.preventDefault(),t.focus())}(e)}function gn(){We&&(We.classList.remove("csk-window--hidden"),cn(),sn&&sn.classList.add("csk-launcher__badge--hidden"),setTimeout(()=>{Ve&&Ve.focus()},80))}function mn(){We&&We.classList.add("csk-window--hidden")}function hn(){We&&(We.classList.contains("csk-window--hidden")?gn():mn())}function bn(e){return`csk_position_${e}`}const fn={init:function(e){if(Ye)return void o.warn("SDK 已初始化,请先调用 destroy() 再重新初始化");const t=function(e){var n,t,r,s,i,k,g,m,h,b;if(!e.integrateId||"string"!=typeof e.integrateId&&"number"!=typeof e.integrateId||"string"==typeof e.integrateId&&""===e.integrateId.trim())return o.error('integrateId 是必传参数(对应后端 roleId 客服角色 ID),请检查 init() 调用。示例:ChatbotSDK.init({ integrateId: 1, requestDomain: "https://api.example.com" })'),null;if(!e.requestDomain||"string"!=typeof e.requestDomain||""===e.requestDomain.trim())return o.error('requestDomain 是必传参数,请检查 init() 调用。示例:ChatbotSDK.init({ integrateId: 1, requestDomain: "https://api.example.com" })'),null;try{new URL(e.requestDomain)}catch(n){return o.error(`requestDomain 不是合法的 URL 格式:${e.requestDomain}。请提供完整的域名,如 https://api.example.com`),null}const f=String(e.integrateId).trim(),y=e.launcherTheme||void 0;let x=e.launcherIcon||a,v=e.primaryColor||"#4F46E5";y&&!e.launcherIcon&&(x={"dream-purple":c,"mint-tech":l,"coral-peach":d,"sky-blue":p}[y]||a,e.primaryColor||(v=u[y]||"#4F46E5"));const w={integrateId:f,requestDomain:e.requestDomain.replace(/\/+$/,""),userId:e.userId,categoryId:e.categoryId,showCategorySwitch:null!==(n=e.showCategorySwitch)&&void 0!==n&&n,title:e.title||"AI 智能助手",width:null!==(t=e.width)&&void 0!==t?t:380,height:Math.max(300,null!==(r=e.height)&&void 0!==r?r:520),position:"left-bottom"===e.position?"left-bottom":"right-bottom",primaryColor:v,launcherTheme:y,launcherIcon:x,showClear:null===(s=e.showClear)||void 0===s||s,showAdminPanel:null!==(i=e.showAdminPanel)&&void 0!==i&&i,quickReplies:Array.isArray(e.quickReplies)?e.quickReplies.map(e=>String(e).trim()).filter(Boolean):[],theme:"dark"===e.theme?"dark":"light",showTeaser:null===(k=e.showTeaser)||void 0===k||k,teaserText:"string"==typeof e.teaserText&&e.teaserText.trim()||"",streaming:null===(g=e.streaming)||void 0===g||g,locale:e.locale||"zh-CN",debug:null===(m=e.debug)||void 0===m||m,sound:null!==(h=e.sound)&&void 0!==h&&h,notification:null!==(b=e.notification)&&void 0!==b&&b,onError:"function"==typeof e.onError?e.onError:void 0,onReady:"function"==typeof e.onReady?e.onReady:void 0,onMessage:"function"==typeof e.onMessage?e.onMessage:void 0,chatId:""};return o.info(`配置解析完成 integrateId(=roleId)=${w.integrateId} userId(=accountId)=${w.userId||"(未设置)"} requestDomain=${w.requestDomain}`),w}(e);if(!t)return;var s;Ue=t,function(e){if(k[e])g=e;else{const n=e.split("-")[0],t=Object.keys(k).find(e=>e.startsWith(n));t&&(g=t)}}(Ue.locale),s=Ue.debug,n=s,r(Ue.onError),function(e){h=e}(Ue),q(Ue),Oe=P(Ue,hn),document.body.appendChild(Oe),sn=Oe.querySelector(".csk-launcher__badge");const i=function(e){const n=document.createElement("div");n.id="csk-window",n.className=`csk-root csk-window csk-window--${"left-bottom"===e.position?"left":"right"} csk-window--hidden${"dark"===e.theme?" csk-dark":""}`,n.setAttribute("role","dialog"),n.setAttribute("aria-label",e.title),n.setAttribute("aria-modal","false");const t=document.createElement("div");t.className="csk-header";const r=document.createElement("div");r.className="csk-header__left";const s=document.createElement("div");s.className="csk-header__avatar",s.innerHTML=R;const o=document.createElement("div");o.className="csk-header__info";const a=document.createElement("span");a.className="csk-header__title",a.textContent=e.title;const i=document.createElement("span");i.className="csk-header__status",i.innerHTML=`${m("status_online")}`,o.appendChild(a),o.appendChild(i),r.appendChild(s),r.appendChild(o);const c=document.createElement("div");c.className="csk-header__actions";const l=document.createElement("button");l.className="csk-history-btn",l.setAttribute("title",m("history_title")),l.innerHTML='';const d=document.createElement("button");d.className="csk-header__btn csk-header__btn--minimize",d.setAttribute("title",m("minimize")),d.innerHTML='',d.addEventListener("click",()=>{n.classList.add("csk-window--hidden")});const p=document.createElement("button");p.className="csk-header__btn csk-header__btn--close",p.setAttribute("title",m("close")),p.innerHTML='',p.addEventListener("click",()=>{n.classList.add("csk-window--hidden")}),c.appendChild(l),c.appendChild(d),c.appendChild(p),t.appendChild(r),t.appendChild(c);const u=document.createElement("div");u.id="csk-messages",u.className="csk-messages";const k=document.createElement("div");if(k.className="csk-welcome",k.innerHTML=`\n
${R}
\n
${m("welcome_title")}
\n
${m("welcome_desc")}
\n `,e.quickReplies.length>0){const t=document.createElement("div");t.className="csk-quick-replies";for(const r of e.quickReplies){const e=document.createElement("button");e.type="button",e.className="csk-quick-reply",e.textContent=r,e.addEventListener("click",()=>{n.dispatchEvent(new CustomEvent("csk:quickReply",{detail:{text:r}}))}),t.appendChild(e)}k.appendChild(t)}u.appendChild(k);const g=document.createElement("button");g.type="button",g.className="csk-newmsg csk-newmsg--hidden",g.innerHTML=`\n \n ${m("new_message")}\n `,n.appendChild(g);const h=document.createElement("div");h.className="csk-history-panel csk-history-panel--hidden",h.innerHTML=`\n
\n ${m("history_title")}\n \n
\n
\n \n
\n
\n `,u.appendChild(h);const b=h.querySelector("#csk-history-back");b&&b.addEventListener("click",()=>{h.classList.add("csk-history-panel--hidden")}),l.addEventListener("click",e=>{e.stopPropagation();const t=h.classList.contains("csk-history-panel--hidden");h.classList.toggle("csk-history-panel--hidden"),t&&n.dispatchEvent(new CustomEvent("csk:loadHistory"))});let f=null;if(e.showCategorySwitch){const e=document.createElement("div");e.className="csk-category-bar";const r=document.createElement("span");r.className="csk-category-bar__label",r.textContent="📚",f=document.createElement("select"),f.id="csk-category-select",f.className="csk-category-select",f.innerHTML=``,f.addEventListener("change",()=>{const e=f.value;n.dispatchEvent(new CustomEvent("csk:categoryChange",{detail:{categoryId:e?Number(e):void 0}}))}),e.appendChild(r),e.appendChild(f),n.appendChild(t),n.appendChild(u),n.appendChild(e)}else n.appendChild(t),n.appendChild(u);const y=document.createElement("div");y.className="csk-input-area";const x=document.createElement("div");x.className="csk-input-wrap";const v=document.createElement("textarea");v.id="csk-input",v.className="csk-input",v.setAttribute("placeholder",m("placeholder")),v.setAttribute("rows","1"),v.setAttribute("autofocus","");const w=document.createElement("button");w.id="csk-send-btn",w.className="csk-send-btn",w.setAttribute("title",m("send")),w.setAttribute("disabled","true"),w.innerHTML='',x.appendChild(v),x.appendChild(w),y.appendChild(x),n.appendChild(y);let _=null;e.showClear&&(_=document.createElement("button"),_.className="csk-clear-btn",_.textContent=m("clear"),_.style.display="none",n.insertBefore(_,y));let E=null;const C=document.createElement("div");C.className="csk-sr-only",C.setAttribute("aria-live","polite"),C.setAttribute("aria-atomic","true"),n.appendChild(C);const I=h.querySelector("#csk-history-search"),$=document.createElement("div");return $.className=`csk-teaser csk-teaser--${"left-bottom"===e.position?"left":"right"} csk-teaser--hidden`,$.setAttribute("role","status"),$.innerHTML=`\n \n ${e.teaserText||m("teaser_text")}\n `,{window:n,messagesContainer:u,inputEl:v,sendBtn:w,clearBtn:_,categorySelect:f,historyPanel:h,welcomeEl:k,newMsgBtn:g,teaserEl:$,searchInput:I,ariaLiveEl:C,showLoading:function(){if(E)return E.style.display="flex",E;const e=document.createElement("div");return e.className="csk-loading",e.innerHTML=`\n
${R}
\n
\n
\n
\n
\n
\n `,u.appendChild(e),E=e,e},hideLoading:function(){E&&E.parentNode&&(E.parentNode.removeChild(E),E=null)}}}(Ue);We=i.window,Ge=i.messagesContainer,Ve=i.inputEl,Ke=i.sendBtn,Xe=i.clearBtn,Je=i.categorySelect,Qe=i.historyPanel,Ze=i.showLoading,en=i.hideLoading,document.body.appendChild(We),tn=i.teaserEl,document.body.appendChild(tn),an();const b=We.querySelector(".csk-header");if(b&&(nn=function(e,n,t){let r=!1,s=0,o=0,a=0,i=0;const c=e=>{if(e.target.closest("button"))return;r=!0,s=e.clientX,o=e.clientY;const t=n.getBoundingClientRect();a=s-t.left,i=o-t.top,document.addEventListener("mousemove",l),document.addEventListener("mouseup",d)},l=e=>{if(!r)return;const t=e.clientX-a,s=e.clientY-i,o=window.innerWidth-n.offsetWidth,c=window.innerHeight-n.offsetHeight;n.style.right="auto",n.style.bottom="auto",n.style.left=`${Math.max(0,Math.min(t,o))}px`,n.style.top=`${Math.max(0,Math.min(s,c))}px`},d=()=>{if(r=!1,document.removeEventListener("mousemove",l),document.removeEventListener("mouseup",d),t){const e=n.getBoundingClientRect();t({x:e.left,y:e.top})}};return e.addEventListener("mousedown",c),()=>{e.removeEventListener("mousedown",c),document.removeEventListener("mousemove",l),document.removeEventListener("mouseup",d)}}(b,We,e=>{!function(e,n){try{localStorage.setItem(bn(e),JSON.stringify(n))}catch(e){}}(Ue.integrateId,e)})),function(e,n){try{const t=localStorage.getItem(bn(e));if(!t)return;const r=JSON.parse(t);if("number"!=typeof r.x||"number"!=typeof r.y)return;const s=window.innerWidth-n.offsetWidth,o=window.innerHeight-n.offsetHeight,a=Math.max(0,Math.min(r.x,s)),i=Math.max(0,Math.min(r.y,o));n.style.right="auto",n.style.bottom="auto",n.style.left=`${a}px`,n.style.top=`${i}px`}catch(e){}}(Ue.integrateId,We),Fe(Ue,{messagesContainer:Ge,inputEl:Ve,sendBtn:Ke,clearBtn:Xe,categorySelect:Je,historyPanel:Qe,welcomeEl:i.welcomeEl,newMsgBtn:i.newMsgBtn,searchInput:i.searchInput,ariaLiveEl:i.ariaLiveEl,showLoading:Ze,hideLoading:en}),We.addEventListener("csk:categoryChange",e=>{var n;n=e.detail.categoryId,le=n,Se=void 0!==n,o.lifecycleCategoryChange(null!=n?n:"全部")}),We.addEventListener("csk:loadHistory",()=>{!async function(){if(!fe||!de)return;const e=fe.querySelector("#csk-history-list");if(e){e.innerHTML='
加载中...
';try{const n=await $(1,50,de.userId,de.integrateId);Ae=n.list.map(e=>({id:e.conversationId||"",chatId:e.conversationId||"",messageCount:e.messageCount,lastMessageTime:e.lastMessageTime,lastMessagePreview:e.lastMessagePreview,createdAt:e.firstMessageTime||e.createdAt})),Le="",ve&&(ve.value=""),Z(e,Ae,e=>{Pe(e)},e=>{window.open(S(e),"_blank")},async e=>{confirm(m("history_delete_confirm"))&&await L(e)&&(e===f()&&(pe=[],ue&&ue.querySelectorAll(".csk-msg, .csk-loading").forEach(e=>e.remove()),he&&(he.style.display="none"),qe()),Ae=Ae.filter(n=>(n.chatId||n.id)!==e),Be())},f())}catch(n){o.error(m("history_load_error"),n),e.innerHTML=`
${m("history_load_error")}
`}}}()}),We.addEventListener("csk:quickReply",e=>{var n;n=e.detail.text,!ke||Ce?Promise.resolve():(ke.value=n,ze(),He())}),We.addEventListener("csk:retry",e=>{!async function(e){if(!de||!ue||Ce)return;const n=pe.findIndex(n=>n.id===e&&"ai"===n.role);if(n<0)return;let t="";for(let e=n-1;e>=0;e--)if("user"===pe[e].role){t=pe[e].content;break}if(!t)return;const r=pe.splice(n),s=new Set(r.map(e=>e.id));ue.querySelectorAll(".csk-msg").forEach(e=>{const n=e.dataset.cskMsgId;n&&s.has(n)&&e.remove()}),re(de.integrateId,pe),qe(),await je(t)}(e.detail.msgId)}),We.addEventListener("csk:feedback",e=>{!function(e,n){if(!ue)return;const t=pe.find(n=>n.id===e&&"ai"===n.role);if(!t)return;const r=t.feedback===n?void 0:n;t.feedback=r;const s=ue.querySelector(`[data-csk-msg-id="${e}"]`);s&&V(s,r),de&&re(de.integrateId,pe),o.info(`消息反馈 msgId=${e} value=${r||"cleared"}`)}(e.detail.msgId,e.detail.value)}),We.addEventListener("csk:newMessage",e=>{var n;if(We&&We.classList.contains("csk-window--hidden")&&(sn&&sn.classList.remove("csk-launcher__badge--hidden"),(null==Ue?void 0:Ue.sound)&&function(){try{on||(on=new(window.AudioContext||window.webkitAudioContext));const e=on;if("suspended"===e.state)return void e.resume();const n=e.currentTime;[0,.15].forEach((t,r)=>{const s=e.createOscillator(),o=e.createGain();s.type="sine",s.frequency.value=0===r?880:1100,o.gain.setValueAtTime(.15,n+t),o.gain.exponentialRampToValueAtTime(.001,n+t+.12),s.connect(o),o.connect(e.destination),s.start(n+t),s.stop(n+t+.12)})}catch(e){}}(),(null==Ue?void 0:Ue.notification)&&function(){try{if(!("Notification"in window))return;"granted"===Notification.permission?new Notification((null==Ue?void 0:Ue.title)||"AI 智能助手",{body:"收到新消息",icon:void 0,silent:!0}):"denied"!==Notification.permission&&Notification.requestPermission()}catch(e){}}()),(null==Ue?void 0:Ue.onMessage)&&(null===(n=e.detail)||void 0===n?void 0:n.msg))try{Ue.onMessage(e.detail.msg)}catch(e){}}),document.addEventListener("keydown",kn),window.addEventListener("resize",pn),Ye=!0,o.lifecycleInit(Ue.integrateId,Ue.requestDomain),Ue.onReady)try{Ue.onReady()}catch(e){}Ue.showTeaser&&(rn=setTimeout(()=>{We&&We.classList.contains("csk-window--hidden")&&function(){if(!tn)return;an(),tn.classList.remove("csk-teaser--hidden"),tn.addEventListener("click",ln);const e=tn.querySelector(".csk-teaser__close");e&&e.addEventListener("click",dn)}()},1500)),Ne().catch(e=>{o.warn("chatId 初始化失败,将在发送消息时重试",e)})},destroy:function(){if(!Ye)return;rn&&(clearTimeout(rn),rn=null),cn(),tn&&tn.parentNode&&(tn.parentNode.removeChild(tn),tn=null),Oe&&Oe.parentNode&&(Oe.parentNode.removeChild(Oe),Oe=null),We&&We.parentNode&&(We.parentNode.removeChild(We),We=null),nn&&(nn(),nn=null),D&&D.parentNode&&(D.parentNode.removeChild(D),D=null),document.querySelectorAll("style[data-csk-sdk]").forEach(e=>e.remove()),document.removeEventListener("keydown",kn),window.removeEventListener("resize",pn),r(void 0);const e=null==Ue?void 0:Ue.integrateId;Ue=null,Ye=!1,Ge=null,Ve=null,Ke=null,Xe=null,Je=null,Qe=null,Ze=null,en=null,sn=null,on=null,o.lifecycleDestroy(e||"")},open:gn,close:mn,toggle:hn,clearHistory:function(){Ue&&(Xe?Xe.click():confirm("确定清空所有对话记录?")&&se(Ue.integrateId))}};return"undefined"!=typeof window&&(window.ChatbotSDK=fn),fn}(); +var ChatbotSDK=function(){"use strict";const n="[ChatbotSDK]";let e=!0,t=null;function r(n){t=n||null}const s={},o={info(t,r){e&&console.log(n,t,void 0!==r?r:"")},warn(t,r){e&&console.warn(n,t,void 0!==r?r:"")},error(e,r){if(console.error(n,e,void 0!==r?r:""),t)try{const n=r instanceof Error&&r.type||"error";t({message:e,code:String(n),detail:r})}catch(n){}},time(n){s[n]=Date.now()},timeEnd(t,r){const o=s[t];if(void 0!==o){const a=Date.now()-o;if(delete s[t],e){const e=r?`${r} ${a}ms`:`${t} ${a}ms`;console.log(n,e)}return a}return 0},lifecycleInit(n,e){this.info(`初始化完成 integrateId=${n} requestDomain=${e}`)},lifecycleDestroy(n){this.info(`销毁实例 integrateId=${n}`)},lifecycleSend(n,e){this.info(`发送消息 integrateId=${n} length=${e}`),this.time(`send_${n}`)},lifecycleReply(n,e){const t=this.timeEnd(`send_${n}`,"AI 回复");this.info(`AI 回复 integrateId=${n} length=${e} duration=${t}ms`)},lifecycleError(n,e,t){this.timeEnd(`send_${n}`),this.error(`请求失败 integrateId=${n} status=${e} message=${t}`)},lifecycleClear(n){this.info(`清空会话 integrateId=${n}`)},lifecycleStreamDone(n,e){const t=this.timeEnd(`send_${n}`,"流式回复");this.info(`流式回复完成 integrateId=${n} length=${e} duration=${t}ms`)},lifecycleCategoryChange(n){this.info(`切换知识库分类 categoryId=${n}`)}},a='\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n';function i(n,e,t){return`\n \n \x3c!-- 高光渐变:模拟玻璃反射 --\x3e\n \n \n \n \n \x3c!-- 机器人身体渐变 --\x3e\n \n \n \n \n \n \x3c!-- 机器人主体(圆角矩形 + 对话气泡尾巴) --\x3e\n \n \n \x3c!-- 高光反射层(左上角弧形高光) --\x3e\n \n \x3c!-- 天线 + 能量球 --\x3e\n \n \n \x3c!-- 眼睛(会眨) --\x3e\n \n \n \x3c!-- 眼睛高光点 --\x3e\n \n \n \x3c!-- 微笑 --\x3e\n \n \x3c!-- 跳动气泡装饰(3 个小圆点) --\x3e\n \n \n \n`}const c=i("rgba(139,92,246,0.6)","rgba(139,92,246,0.45)","rgba(240,171,252,0.85)"),l=i("rgba(16,185,129,0.6)","rgba(16,185,129,0.45)","rgba(110,231,183,0.85)"),d=i("rgba(244,63,94,0.55)","rgba(244,63,94,0.4)","rgba(253,186,116,0.85)"),p=i("rgba(56,189,248,0.6)","rgba(56,189,248,0.45)","rgba(167,139,250,0.85)"),u={"dream-purple":"#A78BFA","mint-tech":"#34D399","coral-peach":"#FB7185","sky-blue":"#7DD3FC"};const k={"zh-CN":{title:"AI 智能助手",minimize:"最小化",close:"关闭",status_online:"在线",welcome_title:"你好,我是 AI 智能助手",welcome_desc:"有什么可以帮你的吗?在下方输入框开始提问吧~",placeholder:"输入您的问题...",send:"发送",stop:"停止生成",new_message:"新消息",copy:"复制",copied:"已复制",retry:"重新生成",retrying:"重新生成中...",loading:"正在思考...",stream_interrupted:"回复被中断",stream_unstable:"网络不稳定,内容可能不完整",category_placeholder:"选择知识库分类",category_all:"全部分类",category_load_error:"加载分类失败",source_title:"参考来源",source_count:"{n} 条参考来源",source_loading:"加载来源中...",clear:"清空对话",clear_confirm:"确定清空所有对话记录?",history_title:"历史会话",history_empty:"暂无历史会话",history_load_error:"加载会话列表失败",history_delete_confirm:"确定删除该会话?",history_export:"导出",history_delete:"删除",history_search:"搜索会话...",history_group_today:"今天",history_group_yesterday:"昨天",history_group_week:"本周",history_group_earlier:"更早",feedback_up:"有帮助",feedback_down:"没帮助",teaser_text:"有什么可以帮你的吗?",new_msg_announce:"收到新消息",error_network:"网络连接失败,请检查网络",error_timeout:"请求超时,请稍后重试",error_server:"服务器异常,请稍后重试",error_cors:"跨域请求被拦截,请联系管理员将当前域名加入 API 白名单",error_auth:"鉴权失败,请联系管理员",error_forbidden:"无访问权限,请联系管理员配置",error_not_found:"请求的资源不存在",error_rate_limit:"请求过于频繁,请稍后重试",error_unavailable:"服务暂不可用,请稍后重试",error_unknown:"请求发生未知错误",error_send:"发送失败,请稍后重试",error_stream_unsupported:"浏览器不支持流式读取"},en:{title:"AI Assistant",minimize:"Minimize",close:"Close",status_online:"Online",welcome_title:"Hi, I am your AI assistant",welcome_desc:"How can I help you? Type your question below to get started.",placeholder:"Type your question...",send:"Send",stop:"Stop generating",new_message:"New message",copy:"Copy",copied:"Copied",retry:"Regenerate",retrying:"Regenerating...",loading:"Thinking...",stream_interrupted:"Response interrupted",stream_unstable:"Network unstable, content may be incomplete",category_placeholder:"Select category",category_all:"All categories",category_load_error:"Failed to load categories",source_title:"Sources",source_count:"{n} source(s)",source_loading:"Loading sources...",clear:"Clear chat",clear_confirm:"Clear all conversation history?",history_title:"History",history_empty:"No conversations yet",history_load_error:"Failed to load conversations",history_delete_confirm:"Delete this conversation?",history_export:"Export",history_delete:"Delete",history_search:"Search conversations...",history_group_today:"Today",history_group_yesterday:"Yesterday",history_group_week:"This Week",history_group_earlier:"Earlier",feedback_up:"Helpful",feedback_down:"Not helpful",teaser_text:"How can I help you?",new_msg_announce:"New message received",error_network:"Network connection failed",error_timeout:"Request timed out, please try again",error_server:"Server error, please try again later",error_cors:"CORS request blocked. Please contact admin to whitelist your domain",error_auth:"Authentication failed, please contact admin",error_forbidden:"Access denied, please contact admin",error_not_found:"Resource not found",error_rate_limit:"Too many requests, please try again later",error_unavailable:"Service temporarily unavailable",error_unknown:"Unknown request error",error_send:"Failed to send, please try again",error_stream_unsupported:"Browser does not support streaming"}};let g="zh-CN";function m(n,e){let t=(k[g]||k["zh-CN"])[n]||k["zh-CN"][n]||n;if(e)for(const[n,r]of Object.entries(e))t=t.replace(`{${n}}`,String(r));return t}let h=null;function b(n){h&&(h.chatId=n)}function f(){return(null==h?void 0:h.chatId)||""}function y(n){if(!h)throw new Error("API 配置未初始化");return`${h.requestDomain.replace(/\/+$/,"")}${n.startsWith("/")?n:`/${n}`}`}function x(n,e,t){null!=t&&("string"==typeof t&&""===t.trim()||n.set(e,String(t)))}async function v(n,e={},t=3e4,r){const s=new AbortController,o=setTimeout(()=>s.abort(),t);r&&(r.aborted?s.abort():r.addEventListener("abort",()=>s.abort(),{once:!0}));try{return await fetch(n,Object.assign(Object.assign({},e),{signal:s.signal,mode:"cors",credentials:"include"}))}catch(n){if(null==r?void 0:r.aborted)throw new w("aborted","aborted");if(n instanceof DOMException&&"AbortError"===n.name)throw new w(m("error_timeout"),"timeout");if(n instanceof TypeError&&n.message.includes("Failed to fetch"))throw new w(m("error_cors"),"cors");throw new w(m("error_network"),"network")}finally{clearTimeout(o)}}class w extends Error{constructor(n,e){super(n),this.name="CskError",this.type=e}}function _(n){switch(n){case 401:return m("error_auth");case 403:return m("error_forbidden");case 404:return m("error_not_found");case 429:return m("error_rate_limit");case 500:return m("error_server");case 502:case 503:return m("error_unavailable");default:return`${m("error_unknown")}(${n})`}}async function E(n){const e=function(n){const e=new URLSearchParams;return e.set("message",n),e.set("chatId",h.chatId),x(e,"roleId",h.integrateId),x(e,"accountId",h.userId),y(`/ai/assistant_app/chat/sync?${e.toString()}`)}(n);o.lifecycleSend(h.integrateId,n.length);try{const n=await v(e);if(!n.ok){const e=_(n.status);throw o.lifecycleError(h.integrateId,String(n.status),e),new w(e,`http_${n.status}`)}const t=await n.text();return o.lifecycleReply(h.integrateId,t.length),t}catch(n){if(n instanceof w)throw n;throw o.lifecycleError(h.integrateId,"unknown",String(n)),new w(m("error_unknown"),"unknown")}}async function C(n,e,t,r,s,a,i){var c;const l=a?function(n,e){const t=new URLSearchParams;return t.set("message",n),t.set("chatId",h.chatId),t.set("rewriteStrategy","REWRITE"),x(t,"roleId",h.integrateId),x(t,"accountId",h.userId),x(t,"categoryId",null!=e?e:h.categoryId),y(`/ai/assistant_app/chat/rag/sse?${t.toString()}`)}(n,s):function(n,e){const t=new URLSearchParams;return t.set("message",n),t.set("chatId",h.chatId),x(t,"roleId",h.integrateId),x(t,"accountId",h.userId),x(t,"categoryId",null!=e?e:h.categoryId),y(`/ai/assistant_app/chat/sse?${t.toString()}`)}(n,s);let d="";o.lifecycleSend(h.integrateId,n.length);try{const n=await v(l,{},6e4,i);if(!n.ok){const e=_(n.status);return o.lifecycleError(h.integrateId,String(n.status),e),void r(new w(e,`http_${n.status}`))}const s=null===(c=n.body)||void 0===c?void 0:c.getReader();if(!s)return void r(new w(m("error_stream_unsupported"),"stream_unsupported"));const a=new TextDecoder("utf-8",{stream:!0});let p="";try{for(;;){const{done:n,value:t}=await s.read();if(n)break;p+=a.decode(t,{stream:!0});const r=p.split("\n");p=r.pop()||"";for(const n of r){const t=n.trim();if(t&&!t.startsWith(":"))if(t.startsWith("data:")){const n=t.substring(5).trim();n&&(d+=n,e(n))}else{if("[DONE]"===t)break;t.startsWith("event:")||t.startsWith("id:")||t.startsWith("retry:")||(d+=t,e(t))}}}if(p.trim()){const n=p.trim();if(n.startsWith("data:")){const t=n.substring(5).trim();t&&(d+=t,e(t))}else"[DONE]"!==n&&(d+=n,e(n))}}catch(n){if(null==i?void 0:i.aborted)o.info(`流式被用户中断,保留已生成内容 length=${d.length}`);else{if(!(d.length>0))throw n;e("\n\n"+m("stream_unstable"))}}finally{s.releaseLock()}o.lifecycleStreamDone(h.integrateId,d.length),t()}catch(n){if((null==i?void 0:i.aborted)||n instanceof w&&"aborted"===n.type)return void t();n instanceof w?r(n):(o.lifecycleError(h.integrateId,"unknown",String(n)),r(new w(m("error_network"),"network")))}}async function I(n,e){const t=function(n,e){const t=new URLSearchParams;return t.set("message",n),t.set("chatId",h.chatId),t.set("rewriteStrategy","REWRITE"),x(t,"roleId",h.integrateId),x(t,"accountId",h.userId),x(t,"categoryId",null!=e?e:h.categoryId),y(`/ai/assistant_app/rag/sources?${t.toString()}`)}(n,e);try{const n=await v(t);if(!n.ok)throw new w(_(n.status),`http_${n.status}`);const e=await n.json();return e.success&&Array.isArray(e.data)?(o.info(`获取引用来源 count=${e.data.length}`),e.data):[]}catch(n){return o.error("获取引用来源失败",n),[]}}async function $(n=1,e=20,t,r){let s=`/conversation/list?page=${n}&size=${e}`;t&&(s+=`&accountId=${encodeURIComponent(t)}`),r&&(s+=`&roleId=${encodeURIComponent(r)}`);const a=y(s);try{const n=await v(a);if(!n.ok)throw new w(_(n.status),`http_${n.status}`);const e=await n.json();return{list:e.success&&Array.isArray(e.data)?e.data:[],total:e.total||0,pages:e.pages||0}}catch(n){return o.error("加载会话列表失败",n),{list:[],total:0,pages:0}}}async function A(n){const e=y(`/conversation/${n}/messages`);try{const n=await v(e);if(!n.ok)throw new w(_(n.status),`http_${n.status}`);const t=await n.json();return{messages:t.success&&Array.isArray(t.data)?t.data:[],total:t.total||0}}catch(n){return o.error("加载会话消息失败",n),{messages:[],total:0}}}async function L(n){const e=y(`/conversation/${n}`);try{const t=await v(e,{method:"DELETE"});if(!t.ok)throw new w(_(t.status),`http_${t.status}`);const r=await t.json();return o.info(`删除会话 id=${n} success=${r.success}`),r.success||!1}catch(n){return o.error("删除会话失败",n),!1}}function S(n){return y(`/conversation/${n}/export`)}async function F(){if(!h)return"";const n=function(n,e){try{return localStorage.getItem(N(n,e))||""}catch(n){return""}}(h.integrateId,h.userId);if(n)return h.chatId=n,o.info(`从缓存恢复 chatId=${n}`),n;try{const n=await $(1,5,h.userId,h.integrateId);if(n.list.length>0){const e=n.list[0],t=e.conversationId||e.chatId||"";if(t)return h.chatId=t,M(h.integrateId,h.userId,t),o.info(`从后端恢复会话 chatId=${t} messageCount=${e.messageCount}`),t}}catch(n){o.warn("查询后端会话列表失败,将生成新 chatId",n)}const e=function(){const n="undefined"!=typeof crypto&&crypto.randomUUID?crypto.randomUUID().substring(0,8):Math.random().toString(36).substring(2,10);return`sdk_${Date.now()}_${n}`}();return h.chatId=e,M(h.integrateId,h.userId,e),o.info(`生成新 chatId=${e}`),e}function N(n,e){return`csk_chatId_${n}${e?"_"+e:""}`}function M(n,e,t){try{t?localStorage.setItem(N(n,e),t):localStorage.removeItem(N(n,e))}catch(n){}}let T=null;function D(n){const e=B(n.primaryColor,-15),t=B(n.primaryColor,18),r=function(n){const e=n.match(/^#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/);return e?`${parseInt(e[1],16)}, ${parseInt(e[2],16)}, ${parseInt(e[3],16)}`:"79, 70, 229"}(n.primaryColor),s=n.launcherTheme?{"dream-purple":{grad1:"#A78BFA",grad2:"#F0ABFC",glow:"167, 139, 250"},"mint-tech":{grad1:"#6EE7B7",grad2:"#34D399",glow:"52, 211, 153"},"coral-peach":{grad1:"#FB7185",grad2:"#FDBA74",glow:"251, 113, 133"},"sky-blue":{grad1:"#7DD3FC",grad2:"#A78BFA",glow:"125, 211, 252"}}[n.launcherTheme]:null;return`\n --csk-primary: ${n.primaryColor};\n --csk-primary-hover: ${e};\n --csk-primary-light: ${t};\n --csk-primary-rgb: ${r};\n --csk-bg-user: linear-gradient(135deg, ${n.primaryColor}, ${e});\n --csk-bg-ai: #ffffff;\n --csk-text-user: #ffffff;\n --csk-text-ai: #1F2937;\n --csk-window-width: ${n.width}px;\n --csk-window-height: ${n.height}px;\n --csk-radius: 16px;\n --csk-shadow-window: 0 12px 48px rgba(15, 23, 42, 0.18), 0 2px 8px rgba(15, 23, 42, 0.06);\n --csk-shadow-bubble: 0 1px 2px rgba(15, 23, 42, 0.06);\n --csk-border: #ECEEF2;\n --csk-bg-app: #F6F7F9;\n ${s?`\n --csk-launcher-grad-1: ${s.grad1};\n --csk-launcher-grad-2: ${s.grad2};\n --csk-launcher-glow: ${s.glow};\n `:""}\n `}function B(n,e){const t=n.match(/^#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/);if(!t)return n;const r=n=>Math.max(0,Math.min(255,n)),s=r(parseInt(t[1],16)+e),o=r(parseInt(t[2],16)+e),a=r(parseInt(t[3],16)+e);return`#${s.toString(16).padStart(2,"0")}${o.toString(16).padStart(2,"0")}${a.toString(16).padStart(2,"0")}`}function q(n){document.querySelector("style[data-csk-sdk]")||(T=document.createElement("style"),T.setAttribute("data-csk-sdk",""),T.textContent=function(n){return`\n/* ChatbotSDK 样式 - csk- 命名空间 */\n.csk-root {\n ${D(n)}\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif;\n font-size: 14px;\n line-height: 1.55;\n color: #1F2937;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n box-sizing: border-box;\n}\n.csk-root *, .csk-root *::before, .csk-root *::after { box-sizing: border-box; }\n\n/* ========== 悬浮按钮 ========== */\n.csk-launcher {\n position: fixed;\n bottom: 24px;\n z-index: 9998;\n width: 60px;\n height: 60px;\n border-radius: 50%;\n background: var(--csk-bg-user);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n color: #fff;\n user-select: none;\n overflow: visible;\n /* 半透明白色光环边框,在白色页面上清晰分离按钮与背景 */\n border: 2.5px solid rgba(255, 255, 255, 0.55);\n /* 三层投影:接地阴影 + 彩色光晕,把按钮从白底「托」出来 */\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.06),\n 0 4px 16px rgba(0, 0, 0, 0.10),\n 0 6px 24px rgba(var(--csk-primary-rgb), 0.28),\n 0 0 48px rgba(var(--csk-primary-rgb), 0.12);\n transition:\n transform 0.25s cubic-bezier(0.34, 1.56, 0.64, 1),\n box-shadow 0.25s ease,\n border-color 0.25s ease;\n animation: csk-launcher-in 0.55s cubic-bezier(0.22, 1, 0.36, 1) both;\n}\n.csk-launcher--right { right: 24px; }\n.csk-launcher--left { left: 24px; }\n\n/* 高光扫过动效 */\n.csk-launcher::before {\n content: '';\n position: absolute;\n top: -50%;\n left: -50%;\n width: 40%;\n height: 200%;\n border-radius: 50%;\n background: linear-gradient(\n 105deg,\n transparent 30%,\n rgba(255, 255, 255, 0.28) 48%,\n rgba(255, 255, 255, 0.1) 52%,\n transparent 70%\n );\n transform: rotate(25deg);\n animation: csk-shimmer 4s ease-in-out infinite;\n pointer-events: none;\n}\n/* 呼吸色晕 — 配合接地阴影,强化白底上的立体存在感 */\n.csk-launcher::after {\n content: '';\n position: absolute;\n inset: -18px;\n border-radius: 50%;\n background: radial-gradient(circle, rgba(var(--csk-primary-rgb), 0.18) 0%, rgba(var(--csk-primary-rgb), 0.05) 45%, transparent 68%);\n animation: csk-breathe 3.5s ease-in-out infinite;\n pointer-events: none;\n}\n.csk-launcher:hover {\n transform: translateY(-3px) scale(1.08);\n border-color: rgba(255, 255, 255, 0.75);\n box-shadow:\n 0 2px 6px rgba(0, 0, 0, 0.10),\n 0 8px 24px rgba(0, 0, 0, 0.14),\n 0 10px 36px rgba(var(--csk-primary-rgb), 0.32),\n 0 0 56px rgba(var(--csk-primary-rgb), 0.14);\n}\n.csk-launcher:hover::before { animation-play-state: paused; }\n.csk-launcher:hover::after {\n animation: none;\n inset: -22px;\n background: radial-gradient(circle, rgba(var(--csk-primary-rgb), 0.22) 0%, rgba(var(--csk-primary-rgb), 0.06) 45%, transparent 68%);\n}\n.csk-launcher:active { transform: scale(0.93); }\n.csk-launcher svg {\n width: 30px;\n height: 30px;\n position: relative;\n z-index: 1;\n filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.15));\n}\n\n@keyframes csk-launcher-in {\n 0% { opacity: 0; transform: scale(0.5) translateY(16px); }\n 60% { transform: scale(1.06) translateY(-2px); }\n 100% { opacity: 1; transform: scale(1) translateY(0); }\n}\n@keyframes csk-shimmer {\n 0%, 100% { left: -60%; opacity: 0; }\n 20% { opacity: 1; }\n 60% { opacity: 1; }\n 80% { left: 120%; opacity: 0; }\n}\n@keyframes csk-breathe {\n 0%, 100% { transform: scale(1); opacity: 1; }\n 50% { transform: scale(1.15); opacity: 0.35; }\n}\n\n/* SVG 图标内部动效:眨眼 */\n.csk-launcher .csk-ico-eye {\n animation: csk-eye-blink 4s ease-in-out infinite;\n}\n@keyframes csk-eye-blink {\n 0%, 42%, 48%, 100% { opacity: 1; }\n 45% { opacity: 0.1; }\n}\n/* SVG 图标内部动效:天线能量闪烁 */\n.csk-launcher .csk-ico-antenna {\n animation: csk-antenna-glow 2s ease-in-out infinite;\n}\n@keyframes csk-antenna-glow {\n 0%, 100% { opacity: 0.5; }\n 50% { opacity: 1; }\n}\n\n/* ========== 磨砂玻璃质感悬浮按钮 ========== */\n.csk-launcher--glass {\n background: linear-gradient(\n 135deg,\n var(--csk-launcher-grad-1, var(--csk-primary)) 0%,\n var(--csk-launcher-grad-2, var(--csk-primary-light)) 100%\n ) !important;\n backdrop-filter: blur(12px) saturate(180%);\n -webkit-backdrop-filter: blur(12px) saturate(180%);\n border: 1.5px solid rgba(255, 255, 255, 0.55) !important;\n /* 多层阴影:接地 + 彩色光晕 + 内阴影立体感 */\n box-shadow:\n 0 2px 4px rgba(0, 0, 0, 0.04),\n 0 6px 20px rgba(0, 0, 0, 0.08),\n 0 8px 32px rgba(var(--csk-launcher-glow, var(--csk-primary-rgb)), 0.30),\n inset 0 1px 1px rgba(255, 255, 255, 0.35),\n inset 0 -1px 1px rgba(0, 0, 0, 0.04) !important;\n}\n.csk-launcher--glass:hover {\n border-color: rgba(255, 255, 255, 0.75) !important;\n box-shadow:\n 0 4px 8px rgba(0, 0, 0, 0.06),\n 0 10px 28px rgba(0, 0, 0, 0.10),\n 0 12px 40px rgba(var(--csk-launcher-glow, var(--csk-primary-rgb)), 0.38),\n inset 0 1px 2px rgba(255, 255, 255, 0.45),\n inset 0 -1px 1px rgba(0, 0, 0, 0.04) !important;\n}\n\n/* 玻璃按钮的呼吸色晕 — 更鲜艳、更醒目 */\n.csk-launcher--glass::after {\n background: radial-gradient(\n circle,\n rgba(var(--csk-launcher-glow, var(--csk-primary-rgb)), 0.28) 0%,\n rgba(var(--csk-launcher-glow, var(--csk-primary-rgb)), 0.10) 40%,\n transparent 65%\n ) !important;\n animation: csk-breathe-glow 3.5s ease-in-out infinite;\n}\n@keyframes csk-breathe-glow {\n 0%, 100% { transform: scale(1); opacity: 0.8; }\n 50% { transform: scale(1.22); opacity: 0.25; }\n}\n\n/* 玻璃按钮的高光扫过 — 更柔和的玻璃质感 */\n.csk-launcher--glass::before {\n background: linear-gradient(\n 115deg,\n transparent 25%,\n rgba(255, 255, 255, 0.35) 45%,\n rgba(255, 255, 255, 0.15) 55%,\n transparent 75%\n ) !important;\n width: 50%;\n animation: csk-shimmer-glass 5s ease-in-out infinite;\n}\n@keyframes csk-shimmer-glass {\n 0%, 100% { left: -70%; opacity: 0; }\n 15% { opacity: 1; }\n 55% { opacity: 1; }\n 70% { left: 130%; opacity: 0; }\n}\n\n/* SVG 内部动效:跳动气泡(3 个小圆点交错弹跳) */\n.csk-launcher .csk-ico-bubble {\n animation: csk-bubble-jump 1.4s ease-in-out infinite;\n}\n.csk-launcher .csk-ico-bubble--1 { animation-delay: 0s; }\n.csk-launcher .csk-ico-bubble--2 { animation-delay: 0.18s; }\n.csk-launcher .csk-ico-bubble--3 { animation-delay: 0.36s; }\n@keyframes csk-bubble-jump {\n 0%, 100% { transform: translateY(0); }\n 40% { transform: translateY(-3.5px); }\n 60% { transform: translateY(-1px); }\n}\n\n/* ========== 聊天弹窗 ========== */\n.csk-window {\n position: fixed;\n bottom: 24px;\n z-index: 9999;\n width: var(--csk-window-width);\n height: var(--csk-window-height);\n max-height: calc(100vh - 48px);\n background: #fff;\n border-radius: var(--csk-radius);\n box-shadow: var(--csk-shadow-window);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n transform-origin: bottom right;\n transition: opacity 0.24s ease, transform 0.24s cubic-bezier(0.34, 1.2, 0.64, 1), visibility 0.24s;\n opacity: 1;\n transform: translateY(0) scale(1);\n visibility: visible;\n pointer-events: auto;\n}\n.csk-window--right { right: 24px; transform-origin: bottom right; }\n.csk-window--left { left: 24px; transform-origin: bottom left; }\n.csk-window--hidden {\n opacity: 0;\n transform: translateY(12px) scale(0.96);\n visibility: hidden;\n pointer-events: none;\n}\n\n/* ========== 头部 ========== */\n.csk-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n min-height: 60px;\n background: var(--csk-bg-user);\n color: #fff;\n cursor: move;\n user-select: none;\n position: relative;\n flex-shrink: 0;\n}\n.csk-header::after {\n content: '';\n position: absolute;\n left: 0; right: 0; bottom: 0;\n height: 24px;\n background: linear-gradient(to bottom, rgba(0,0,0,0.04), transparent);\n pointer-events: none;\n}\n.csk-header__left {\n display: flex;\n align-items: center;\n gap: 12px;\n min-width: 0;\n}\n.csk-header__avatar {\n width: 38px;\n height: 38px;\n border-radius: 50%;\n background: rgba(255, 255, 255, 0.22);\n backdrop-filter: blur(4px);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.25);\n}\n.csk-header__avatar svg { width: 22px; height: 22px; }\n.csk-header__info {\n display: flex;\n flex-direction: column;\n min-width: 0;\n}\n.csk-header__title {\n font-size: 15px;\n font-weight: 600;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n letter-spacing: 0.2px;\n}\n.csk-header__status {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n font-size: 11.5px;\n opacity: 0.9;\n margin-top: 2px;\n}\n.csk-status-dot {\n width: 7px;\n height: 7px;\n border-radius: 50%;\n background: #6EE7B7;\n box-shadow: 0 0 0 0 rgba(110, 231, 183, 0.7);\n animation: csk-status-pulse 2s infinite;\n}\n@keyframes csk-status-pulse {\n 0% { box-shadow: 0 0 0 0 rgba(110, 231, 183, 0.7); }\n 70% { box-shadow: 0 0 0 6px rgba(110, 231, 183, 0); }\n 100% { box-shadow: 0 0 0 0 rgba(110, 231, 183, 0); }\n}\n.csk-header__actions {\n display: flex;\n align-items: center;\n gap: 2px;\n flex-shrink: 0;\n}\n.csk-header__btn,\n.csk-history-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border: none;\n background: transparent;\n color: #fff;\n cursor: pointer;\n border-radius: 8px;\n transition: background 0.15s, transform 0.15s;\n}\n.csk-header__btn:hover,\n.csk-history-btn:hover {\n background: rgba(255, 255, 255, 0.2);\n}\n.csk-header__btn:active,\n.csk-history-btn:active { transform: scale(0.92); }\n\n/* ========== 消息区 ========== */\n.csk-messages {\n flex: 1;\n overflow-y: auto;\n padding: 20px 16px 12px;\n background: var(--csk-bg-app);\n scroll-behavior: smooth;\n}\n.csk-messages::-webkit-scrollbar { width: 6px; }\n.csk-messages::-webkit-scrollbar-track { background: transparent; }\n.csk-messages::-webkit-scrollbar-thumb {\n background: #D8DCE3;\n border-radius: 3px;\n}\n.csk-messages::-webkit-scrollbar-thumb:hover { background: #C2C7D0; }\n\n/* 欢迎空状态 */\n.csk-welcome {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 48px 24px 32px;\n color: #6B7280;\n animation: csk-fade-in 0.3s ease;\n}\n.csk-welcome__avatar {\n width: 56px;\n height: 56px;\n border-radius: 50%;\n background: var(--csk-bg-user);\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 14px;\n box-shadow: 0 6px 18px rgba(var(--csk-primary-rgb), 0.3);\n}\n.csk-welcome__avatar svg { width: 30px; height: 30px; }\n.csk-welcome__title {\n font-size: 15px;\n font-weight: 600;\n color: #1F2937;\n margin-bottom: 4px;\n}\n.csk-welcome__desc {\n font-size: 13px;\n color: #9CA3AF;\n line-height: 1.6;\n}\n\n/* 消息气泡 */\n.csk-msg {\n display: flex;\n margin-bottom: 18px;\n max-width: 100%;\n word-break: break-word;\n animation: csk-msg-in 0.28s cubic-bezier(0.22, 1, 0.36, 1);\n}\n.csk-msg--user {\n flex-direction: row-reverse;\n align-items: flex-end;\n}\n.csk-msg--ai {\n flex-direction: row;\n align-items: flex-start;\n}\n.csk-msg__avatar {\n width: 30px;\n height: 30px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n margin: 0 8px;\n box-shadow: var(--csk-shadow-bubble);\n}\n.csk-msg__avatar svg { width: 18px; height: 18px; }\n.csk-msg__avatar--ai {\n background: #fff;\n color: var(--csk-primary);\n border: 1px solid var(--csk-border);\n}\n.csk-msg__avatar--user {\n background: var(--csk-bg-user);\n color: #fff;\n}\n.csk-msg__content {\n display: flex;\n flex-direction: column;\n min-width: 0;\n max-width: calc(100% - 46px);\n}\n.csk-msg--user .csk-msg__content { align-items: flex-end; }\n.csk-msg--ai .csk-msg__content { align-items: flex-start; }\n.csk-msg__bubble {\n padding: 10px 14px;\n border-radius: 16px;\n font-size: 14px;\n line-height: 1.6;\n box-shadow: var(--csk-shadow-bubble);\n}\n.csk-msg--user .csk-msg__bubble {\n background: var(--csk-bg-user);\n color: var(--csk-text-user);\n border-radius: 16px 16px 4px 16px;\n}\n.csk-msg--ai .csk-msg__bubble {\n background: var(--csk-bg-ai);\n color: var(--csk-text-ai);\n border-radius: 16px 16px 16px 4px;\n border: 1px solid var(--csk-border);\n}\n.csk-msg__time {\n font-size: 11px;\n color: #9CA3AF;\n margin-top: 5px;\n padding: 0 4px;\n}\n\n@keyframes csk-msg-in {\n from { opacity: 0; transform: translateY(8px); }\n to { opacity: 1; transform: translateY(0); }\n}\n@keyframes csk-fade-in {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n/* ========== Loading 动画 ========== */\n.csk-loading {\n display: flex;\n align-items: center;\n margin-bottom: 18px;\n animation: csk-msg-in 0.28s ease;\n}\n.csk-loading__avatar {\n width: 30px;\n height: 30px;\n border-radius: 50%;\n background: #fff;\n color: var(--csk-primary);\n border: 1px solid var(--csk-border);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n margin: 0 8px;\n box-shadow: var(--csk-shadow-bubble);\n}\n.csk-loading__avatar svg { width: 18px; height: 18px; }\n.csk-loading__bubble {\n background: #fff;\n border: 1px solid var(--csk-border);\n border-radius: 16px 16px 16px 4px;\n padding: 12px 16px;\n display: flex;\n align-items: center;\n gap: 5px;\n}\n.csk-loading__dot {\n width: 7px;\n height: 7px;\n border-radius: 50%;\n background: #B4B9C2;\n animation: csk-bounce 1.4s ease-in-out infinite both;\n}\n.csk-loading__dot:nth-child(1) { animation-delay: 0s; }\n.csk-loading__dot:nth-child(2) { animation-delay: 0.16s; }\n.csk-loading__dot:nth-child(3) { animation-delay: 0.32s; }\n\n@keyframes csk-bounce {\n 0%, 80%, 100% { transform: scale(0.6); opacity: 0.6; }\n 40% { transform: scale(1); opacity: 1; }\n}\n\n/* ========== 输入区 ========== */\n.csk-input-area {\n padding: 10px 12px 14px;\n background: #fff;\n border-top: 1px solid var(--csk-border);\n flex-shrink: 0;\n}\n.csk-input-wrap {\n display: flex;\n align-items: flex-end;\n gap: 8px;\n background: var(--csk-bg-app);\n border: 1px solid var(--csk-border);\n border-radius: 14px;\n padding: 6px 6px 6px 14px;\n transition: border-color 0.2s, box-shadow 0.2s, background 0.2s;\n}\n.csk-input-wrap--focus {\n border-color: var(--csk-primary);\n background: #fff;\n box-shadow: 0 0 0 3px rgba(var(--csk-primary-rgb), 0.12);\n}\n.csk-input {\n flex: 1;\n border: none;\n background: transparent;\n padding: 8px 0;\n font-size: 14px;\n outline: none;\n font-family: inherit;\n resize: none;\n min-height: 22px;\n max-height: 120px;\n line-height: 1.5;\n color: #1F2937;\n}\n.csk-input::placeholder { color: #9CA3AF; }\n.csk-root .csk-input:focus-visible { outline: none; }\n.csk-send-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n min-width: 36px;\n border: none;\n border-radius: 10px;\n background: var(--csk-bg-user);\n color: #fff;\n cursor: pointer;\n transition: transform 0.18s, box-shadow 0.18s, opacity 0.18s;\n box-shadow: 0 3px 10px rgba(var(--csk-primary-rgb), 0.3);\n}\n.csk-send-btn:hover:not(:disabled) {\n transform: translateY(-1px);\n box-shadow: 0 5px 14px rgba(var(--csk-primary-rgb), 0.4);\n}\n.csk-send-btn:active:not(:disabled) { transform: scale(0.92); }\n.csk-send-btn:disabled {\n background: #D1D5DB;\n box-shadow: none;\n cursor: not-allowed;\n opacity: 0.7;\n}\n.csk-send-btn svg { width: 18px; height: 18px; }\n\n/* ========== 清空按钮 ========== */\n.csk-clear-btn {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 5px 12px;\n border: 1px solid var(--csk-border);\n border-radius: 999px;\n background: #fff;\n color: #6B7280;\n font-size: 12px;\n cursor: pointer;\n margin: 0 auto 8px;\n transition: all 0.15s;\n font-family: inherit;\n}\n.csk-clear-btn:hover {\n background: #FEF2F2;\n border-color: #FCA5A5;\n color: #DC2626;\n}\n\n/* ========== P1: 知识库分类下拉 ========== */\n.csk-category-bar {\n display: flex;\n align-items: center;\n padding: 8px 12px;\n border-top: 1px solid var(--csk-border);\n background: #FBFBFC;\n gap: 8px;\n flex-shrink: 0;\n}\n.csk-category-bar__label {\n font-size: 13px;\n white-space: nowrap;\n}\n.csk-category-select {\n flex: 1;\n padding: 6px 28px 6px 10px;\n border: 1px solid var(--csk-border);\n border-radius: 8px;\n font-size: 12.5px;\n color: #374151;\n background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%239CA3AF' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E") no-repeat right 9px center;\n appearance: none;\n -webkit-appearance: none;\n outline: none;\n cursor: pointer;\n font-family: inherit;\n transition: border-color 0.2s, box-shadow 0.2s;\n max-width: 220px;\n}\n.csk-category-select:focus {\n border-color: var(--csk-primary);\n box-shadow: 0 0 0 3px rgba(var(--csk-primary-rgb), 0.12);\n}\n\n/* ========== P1: RAG 引用来源卡片 ========== */\n.csk-sources {\n margin-top: 8px;\n border: 1px solid var(--csk-border);\n border-radius: 12px;\n overflow: hidden;\n font-size: 12px;\n max-width: 100%;\n background: #FAFBFC;\n}\n.csk-sources__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 12px;\n background: #F3F4F7;\n cursor: pointer;\n user-select: none;\n transition: background 0.15s;\n}\n.csk-sources__header:hover { background: #ECEEF2; }\n.csk-sources__title {\n display: flex;\n align-items: center;\n gap: 5px;\n font-weight: 500;\n color: #374151;\n}\n.csk-sources__arrow {\n transition: transform 0.2s;\n color: #9CA3AF;\n font-size: 10px;\n}\n.csk-sources--collapsed .csk-sources__arrow { transform: rotate(-90deg); }\n.csk-sources__body {\n border-top: 1px solid var(--csk-border);\n padding: 0;\n}\n.csk-sources--collapsed .csk-sources__body { display: none; }\n.csk-source-item {\n padding: 9px 12px;\n border-bottom: 1px solid #F0F1F4;\n transition: background 0.15s;\n}\n.csk-source-item:last-child { border-bottom: none; }\n.csk-source-item:hover { background: #fff; }\n.csk-source-item__name {\n font-weight: 500;\n color: #1F2937;\n margin-bottom: 3px;\n}\n.csk-source-item__snippet {\n color: #6B7280;\n line-height: 1.5;\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n}\n.csk-source-item__meta {\n font-size: 11px;\n color: #9CA3AF;\n margin-top: 4px;\n}\n\n/* ========== P1: Markdown 渲染样式 ========== */\n.csk-msg--ai .csk-msg__bubble .csk-md-p { margin: 0 0 8px; }\n.csk-msg--ai .csk-msg__bubble .csk-md-p:last-child { margin-bottom: 0; }\n.csk-msg--ai .csk-msg__bubble .csk-md-h1,\n.csk-msg--ai .csk-msg__bubble .csk-md-h2,\n.csk-msg--ai .csk-msg__bubble .csk-md-h3,\n.csk-msg--ai .csk-msg__bubble .csk-md-h4,\n.csk-msg--ai .csk-msg__bubble .csk-md-h5,\n.csk-msg--ai .csk-msg__bubble .csk-md-h6 {\n margin: 14px 0 6px;\n font-weight: 600;\n line-height: 1.3;\n color: #111827;\n}\n.csk-msg--ai .csk-msg__bubble .csk-md-h1 { font-size: 20px; }\n.csk-msg--ai .csk-msg__bubble .csk-md-h2 { font-size: 17px; }\n.csk-msg--ai .csk-msg__bubble .csk-md-h3 { font-size: 15px; }\n.csk-msg--ai .csk-msg__bubble .csk-md-h4 { font-size: 14px; }\n\n.csk-md-code-block {\n background: #1E293B;\n color: #E2E8F0;\n padding: 12px 14px;\n border-radius: 10px;\n overflow-x: auto;\n margin: 8px 0;\n font-size: 13px;\n line-height: 1.55;\n font-family: 'SF Mono', 'Consolas', 'Menlo', 'Monaco', monospace;\n}\n.csk-md-code-block code {\n background: none;\n padding: 0;\n border-radius: 0;\n font-size: inherit;\n color: inherit;\n}\n.csk-md-inline-code {\n background: rgba(var(--csk-primary-rgb), 0.1);\n color: var(--csk-primary);\n padding: 1px 6px;\n border-radius: 5px;\n font-size: 13px;\n font-family: 'SF Mono', 'Consolas', 'Menlo', 'Monaco', monospace;\n}\n.csk-msg--ai .csk-msg__bubble .csk-md-ul,\n.csk-msg--ai .csk-msg__bubble .csk-md-ol {\n padding-left: 22px;\n margin: 6px 0;\n}\n.csk-msg--ai .csk-msg__bubble .csk-md-ul li,\n.csk-msg--ai .csk-msg__bubble .csk-md-ol li { margin-bottom: 4px; }\n.csk-md-blockquote {\n border-left: 3px solid var(--csk-primary);\n padding: 2px 12px;\n margin: 8px 0;\n color: #6B7280;\n background: rgba(var(--csk-primary-rgb), 0.05);\n border-radius: 0 6px 6px 0;\n}\n.csk-md-link {\n color: var(--csk-primary);\n text-decoration: none;\n border-bottom: 1px solid rgba(var(--csk-primary-rgb), 0.3);\n transition: border-color 0.15s;\n}\n.csk-md-link:hover { border-bottom-color: var(--csk-primary); }\n.csk-md-hr {\n border: none;\n border-top: 1px solid var(--csk-border);\n margin: 12px 0;\n}\n\n/* ========== P2: 会话管理面板 ========== */\n.csk-history-panel {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: #fff;\n z-index: 10;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n animation: csk-slide-in 0.24s ease;\n}\n.csk-history-panel--hidden { display: none; }\n@keyframes csk-slide-in {\n from { transform: translateX(100%); opacity: 0.4; }\n to { transform: translateX(0); opacity: 1; }\n}\n.csk-history-panel__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 14px 16px;\n border-bottom: 1px solid var(--csk-border);\n background: var(--csk-bg-app);\n flex-shrink: 0;\n}\n.csk-history-panel__title {\n font-size: 14px;\n font-weight: 600;\n color: #1F2937;\n}\n.csk-history-panel__back {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 5px 12px;\n border: 1px solid var(--csk-border);\n border-radius: 8px;\n background: #fff;\n color: #374151;\n font-size: 12px;\n cursor: pointer;\n transition: all 0.15s;\n font-family: inherit;\n}\n.csk-history-panel__back:hover { background: #F3F4F6; }\n.csk-history-panel__list {\n flex: 1;\n overflow-y: auto;\n padding: 10px;\n}\n.csk-history-panel__list::-webkit-scrollbar { width: 5px; }\n.csk-history-panel__list::-webkit-scrollbar-thumb { background: #E5E7EB; border-radius: 2px; }\n.csk-history-item {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 11px 12px;\n border-radius: 10px;\n cursor: pointer;\n transition: background 0.15s;\n margin-bottom: 5px;\n border: 1px solid transparent;\n}\n.csk-history-item:hover { background: #F3F4F6; }\n.csk-history-item--active {\n background: rgba(var(--csk-primary-rgb), 0.08);\n border-color: rgba(var(--csk-primary-rgb), 0.2);\n}\n.csk-history-item--active:hover { background: rgba(var(--csk-primary-rgb), 0.12); }\n.csk-history-item__info { flex: 1; min-width: 0; }\n.csk-history-item__id {\n font-size: 13px;\n font-weight: 500;\n color: #1F2937;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.csk-history-item__meta {\n font-size: 11px;\n color: #9CA3AF;\n margin-top: 3px;\n}\n.csk-history-item__actions {\n display: flex;\n gap: 4px;\n margin-left: 8px;\n opacity: 0;\n transition: opacity 0.15s;\n}\n.csk-history-item:hover .csk-history-item__actions { opacity: 1; }\n.csk-history-action {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border: none;\n border-radius: 7px;\n cursor: pointer;\n font-size: 12px;\n transition: all 0.15s;\n}\n.csk-history-action--export { background: #EFF6FF; color: #2563EB; }\n.csk-history-action--export:hover { background: #DBEAFE; }\n.csk-history-action--delete { background: #FEF2F2; color: #DC2626; }\n.csk-history-action--delete:hover { background: #FEE2E2; }\n.csk-history-panel__empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 48px 20px;\n color: #9CA3AF;\n font-size: 13px;\n text-align: center;\n}\n.csk-history-panel__empty-icon {\n font-size: 34px;\n margin-bottom: 10px;\n opacity: 0.5;\n}\n.csk-history-panel__loading {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 24px;\n color: #9CA3AF;\n font-size: 13px;\n}\n.csk-history-panel__loadmore {\n display: block;\n width: 100%;\n padding: 10px;\n border: none;\n background: #F9FAFB;\n color: #6B7280;\n font-size: 12px;\n cursor: pointer;\n text-align: center;\n transition: background 0.15s;\n}\n.csk-history-panel__loadmore:hover { background: #F3F4F6; }\n\n/* ========== 快捷问题芯片 ========== */\n.csk-quick-replies {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n justify-content: center;\n margin-top: 18px;\n max-width: 320px;\n}\n.csk-quick-reply {\n border: 1px solid var(--csk-border);\n background: #fff;\n color: #374151;\n font-size: 12.5px;\n padding: 7px 13px;\n border-radius: 999px;\n cursor: pointer;\n font-family: inherit;\n line-height: 1.3;\n transition: all 0.18s ease;\n max-width: 100%;\n}\n.csk-quick-reply:hover {\n border-color: var(--csk-primary);\n color: var(--csk-primary);\n background: rgba(var(--csk-primary-rgb), 0.06);\n transform: translateY(-1px);\n}\n.csk-quick-reply:active { transform: scale(0.96); }\n\n/* ========== AI 消息操作条 ========== */\n.csk-msg__actions {\n display: flex;\n gap: 2px;\n margin-top: 5px;\n padding: 0 2px;\n opacity: 0;\n transition: opacity 0.15s ease;\n}\n.csk-msg--ai:hover .csk-msg__actions { opacity: 1; }\n.csk-msg--streaming .csk-msg__actions { display: none; }\n.csk-action-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 26px;\n height: 26px;\n border: none;\n background: transparent;\n color: #9CA3AF;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n.csk-action-btn:hover {\n background: #F3F4F6;\n color: #374151;\n}\n.csk-action-btn--done { color: #10B981; }\n.csk-action-btn:active { transform: scale(0.9); }\n\n/* ========== 流式打字光标 ========== */\n.csk-caret {\n display: inline-block;\n width: 7px;\n height: 15px;\n margin-left: 2px;\n vertical-align: text-bottom;\n background: var(--csk-primary);\n border-radius: 1px;\n animation: csk-caret-blink 1s step-end infinite;\n}\n@keyframes csk-caret-blink {\n 0%, 50% { opacity: 1; }\n 51%, 100% { opacity: 0; }\n}\n\n/* ========== 代码块复制按钮 ========== */\n.csk-md-code-block { position: relative; }\n.csk-md-code-copy {\n position: absolute;\n top: 8px;\n right: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 26px;\n height: 26px;\n border: none;\n background: rgba(255, 255, 255, 0.12);\n color: #CBD5E1;\n border-radius: 6px;\n cursor: pointer;\n opacity: 0;\n transition: all 0.15s ease;\n}\n.csk-md-code-block:hover .csk-md-code-copy { opacity: 1; }\n.csk-md-code-copy:hover { background: rgba(255, 255, 255, 0.22); color: #fff; }\n.csk-md-code-copy:active { transform: scale(0.9); }\n\n/* ========== 新消息提示按钮 ========== */\n.csk-newmsg {\n position: absolute;\n bottom: 82px;\n left: 50%;\n transform: translateX(-50%);\n z-index: 5;\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 7px 14px;\n border: none;\n background: var(--csk-primary);\n color: #fff;\n font-size: 12px;\n font-family: inherit;\n border-radius: 999px;\n cursor: pointer;\n box-shadow: 0 4px 14px rgba(var(--csk-primary-rgb), 0.38);\n transition: transform 0.2s ease, box-shadow 0.2s ease;\n animation: csk-msg-in 0.25s ease;\n white-space: nowrap;\n}\n.csk-newmsg:hover { transform: translateX(-50%) translateY(-1px); box-shadow: 0 6px 18px rgba(var(--csk-primary-rgb), 0.48); }\n.csk-newmsg:active { transform: translateX(-50%) scale(0.95); }\n.csk-newmsg--hidden { display: none; }\n\n/* ========== 发送按钮停止态 ========== */\n.csk-send-btn--stop {\n background: #EF4444 !important;\n box-shadow: 0 3px 10px rgba(239, 68, 68, 0.35) !important;\n}\n.csk-send-btn--stop:hover:not(:disabled) {\n box-shadow: 0 5px 14px rgba(239, 68, 68, 0.45) !important;\n}\n\n/* ========== 暗色模式 ========== */\n.csk-root.csk-dark {\n --csk-bg-ai: #1E1E2E;\n --csk-text-ai: #E2E8F0;\n --csk-border: #3B3B52;\n --csk-bg-app: #141421;\n color: #E2E8F0;\n}\n.csk-dark .csk-window {\n background: #1A1A2E;\n box-shadow: 0 12px 48px rgba(0, 0, 0, 0.4), 0 2px 8px rgba(0, 0, 0, 0.2);\n}\n.csk-dark .csk-header::after { background: linear-gradient(to bottom, rgba(0,0,0,0.12), transparent); }\n.csk-dark .csk-msg__avatar--ai {\n background: var(--csk-bg-ai);\n color: var(--csk-primary);\n border-color: var(--csk-border);\n}\n.csk-dark .csk-input-area { background: #1A1A2E; border-top-color: var(--csk-border); }\n.csk-dark .csk-input-wrap { background: var(--csk-bg-app); border-color: var(--csk-border); }\n.csk-dark .csk-input-wrap--focus { background: #1A1A2E; border-color: var(--csk-primary); }\n.csk-dark .csk-input { color: #E2E8F0; }\n.csk-dark .csk-loading__avatar { background: var(--csk-bg-ai); border-color: var(--csk-border); }\n.csk-dark .csk-loading__bubble { background: var(--csk-bg-ai); border-color: var(--csk-border); }\n.csk-dark .csk-loading__dot { background: #6B7280; }\n.csk-dark .csk-category-bar { background: #1A1A2E; border-top-color: var(--csk-border); }\n.csk-dark .csk-category-select { background-color: var(--csk-bg-app); border-color: var(--csk-border); color: #E2E8F0; }\n.csk-dark .csk-sources { background: #1E1E2E; border-color: var(--csk-border); }\n.csk-dark .csk-sources__header { background: #25253A; }\n.csk-dark .csk-sources__header:hover { background: #2D2D48; }\n.csk-dark .csk-source-item:hover { background: var(--csk-bg-ai); }\n.csk-dark .csk-source-item__name { color: #E2E8F0; }\n.csk-dark .csk-source-item__meta { color: #6B7280; }\n.csk-dark .csk-history-panel { background: #1A1A2E; }\n.csk-dark .csk-history-panel__header { background: var(--csk-bg-app); border-bottom-color: var(--csk-border); }\n.csk-dark .csk-history-panel__back { background: var(--csk-bg-app); border-color: var(--csk-border); color: #E2E8F0; }\n.csk-dark .csk-history-panel__back:hover { background: #2D2D48; }\n.csk-dark .csk-history-item:hover { background: #25253A; }\n.csk-dark .csk-history-item__id { color: #E2E8F0; }\n.csk-dark .csk-history-item__meta { color: #6B7280; }\n.csk-dark .csk-history-item--active { background: rgba(var(--csk-primary-rgb), 0.15); }\n.csk-dark .csk-history-item--active:hover { background: rgba(var(--csk-primary-rgb), 0.22); }\n.csk-dark .csk-action-btn:hover { background: #2D2D48; color: #E2E8F0; }\n.csk-dark .csk-clear-btn { background: var(--csk-bg-app); border-color: var(--csk-border); color: #9CA3AF; }\n.csk-dark .csk-clear-btn:hover { background: #3B1A1A; border-color: #7F1D1D; color: #FCA5A5; }\n.csk-dark .csk-md-code-block { background: #0F0F1A; }\n.csk-dark .csk-md-blockquote { background: rgba(var(--csk-primary-rgb), 0.08); }\n.csk-dark .csk-md-link { color: var(--csk-primary-light); }\n.csk-dark .csk-msg--ai .csk-msg__bubble { background: var(--csk-bg-ai); color: var(--csk-text-ai); border-color: var(--csk-border); }\n.csk-dark .csk-welcome__title { color: #E2E8F0; }\n.csk-dark .csk-welcome__desc { color: #6B7280; }\n.csk-dark .csk-quick-reply { background: var(--csk-bg-app); border-color: var(--csk-border); color: #CBD5E1; }\n.csk-dark .csk-quick-reply:hover { background: rgba(var(--csk-primary-rgb), 0.12); border-color: var(--csk-primary); color: var(--csk-primary-light); }\n.csk-dark .csk-teaser { background: #2D2D48; color: #E2E8F0; box-shadow: 0 4px 20px rgba(0,0,0,0.35); }\n.csk-dark .csk-teaser::after { border-top-color: #2D2D48; }\n.csk-dark .csk-teaser__close { color: #6B7280; }\n.csk-dark .csk-teaser__close:hover { color: #9CA3AF; }\n.csk-dark .csk-feedback-btn { background: rgba(var(--csk-primary-rgb), 0.1); color: #9CA3AF; }\n.csk-dark .csk-feedback-btn:hover { background: rgba(var(--csk-primary-rgb), 0.2); color: var(--csk-primary-light); }\n.csk-dark .csk-feedback-btn--active { background: rgba(var(--csk-primary-rgb), 0.28); color: var(--csk-primary-light); }\n.csk-dark .csk-history-panel__search-wrap { background: var(--csk-bg-app); border-color: var(--csk-border); }\n.csk-dark .csk-history-panel__search-wrap:focus-within { border-color: var(--csk-primary); }\n.csk-dark .csk-history-panel__search { color: #E2E8F0; }\n.csk-dark .csk-launcher__badge { box-shadow: 0 0 0 2px #1A1A2E; }\n.csk-dark .csk-welcome__avatar { box-shadow: 0 6px 18px rgba(var(--csk-primary-rgb), 0.25); }\n.csk-dark .csk-header__avatar { box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.15); background: rgba(255, 255, 255, 0.1); }\n\n/* ========== Launcher 未读徽章 ========== */\n.csk-launcher__badge {\n position: absolute;\n top: -2px;\n right: -2px;\n width: 16px;\n height: 16px;\n border-radius: 50%;\n background: #EF4444;\n border: 2px solid #fff;\n box-shadow: 0 0 0 2px #fff;\n animation: csk-badge-in 0.28s cubic-bezier(0.34, 1.56, 0.64, 1);\n pointer-events: none;\n}\n.csk-launcher__badge--hidden { display: none; }\n@keyframes csk-badge-in {\n from { transform: scale(0); }\n to { transform: scale(1); }\n}\n\n/* ========== Launcher 提示气泡 ========== */\n.csk-teaser {\n position: fixed;\n bottom: 90px;\n z-index: 9997;\n max-width: 240px;\n padding: 10px 14px;\n background: #fff;\n color: #1F2937;\n font-size: 13px;\n line-height: 1.5;\n border-radius: 12px;\n box-shadow: 0 4px 20px rgba(15, 23, 42, 0.15);\n animation: csk-teaser-in 0.35s cubic-bezier(0.22, 1, 0.36, 1);\n cursor: pointer;\n user-select: none;\n}\n.csk-teaser--right { right: 24px; }\n.csk-teaser--left { left: 24px; }\n.csk-teaser::after {\n content: '';\n position: absolute;\n bottom: -6px;\n right: 28px;\n width: 12px;\n height: 12px;\n background: inherit;\n border-radius: 2px;\n transform: rotate(45deg);\n box-shadow: 2px 2px 4px rgba(15, 23, 42, 0.08);\n}\n.csk-teaser--left::after { right: auto; left: 28px; }\n.csk-teaser__close {\n position: absolute;\n top: 4px;\n right: 6px;\n background: none;\n border: none;\n font-size: 16px;\n color: #9CA3AF;\n cursor: pointer;\n padding: 2px 4px;\n line-height: 1;\n border-radius: 4px;\n}\n.csk-teaser__close:hover { color: #374151; }\n.csk-teaser--hidden { display: none; }\n@keyframes csk-teaser-in {\n from { opacity: 0; transform: translateY(8px) scale(0.95); }\n to { opacity: 1; transform: translateY(0) scale(1); }\n}\n\n/* ========== 消息反馈按钮(👍 / 👎) ========== */\n.csk-feedback-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 26px;\n height: 26px;\n border: none;\n background: rgba(var(--csk-primary-rgb), 0.08);\n color: #9CA3AF;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s ease;\n padding: 0;\n}\n.csk-feedback-btn:hover { background: rgba(var(--csk-primary-rgb), 0.18); color: var(--csk-primary); }\n.csk-feedback-btn--active {\n background: rgba(var(--csk-primary-rgb), 0.28);\n color: var(--csk-primary);\n}\n.csk-feedback-btn--active.down { background: #FEF2F2; color: #EF4444; }\n.csk-feedback-btn:active { transform: scale(0.9); }\n.csk-msg--streaming .csk-feedback-btn { display: none; }\n\n/* ========== 历史会话搜索框 ========== */\n.csk-history-panel__search-wrap {\n padding: 8px 10px;\n border-bottom: 1px solid var(--csk-border);\n flex-shrink: 0;\n}\n.csk-history-panel__search-wrap:focus-within {\n border-bottom-color: var(--csk-primary);\n}\n.csk-history-panel__search {\n width: 100%;\n padding: 7px 10px;\n border: 1px solid var(--csk-border);\n border-radius: 8px;\n font-size: 12.5px;\n font-family: inherit;\n color: #1F2937;\n background: var(--csk-bg-app);\n outline: none;\n transition: border-color 0.2s;\n}\n.csk-history-panel__search:focus { border-color: var(--csk-primary); }\n.csk-history-panel__search::placeholder { color: #9CA3AF; }\n\n/* ========== a11y 焦点指示 ========== */\n.csk-root :focus-visible {\n outline: 2px solid var(--csk-primary);\n outline-offset: 2px;\n}\n.csk-root button:focus-visible {\n outline: 2px solid var(--csk-primary);\n outline-offset: 2px;\n border-radius: inherit;\n}\n/* 弹窗打开时隐藏 launcher 上的焦点环 */\n.csk-launcher:focus-visible {\n outline: none;\n border-color: rgba(255, 255, 255, 0.75);\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.06),\n 0 4px 16px rgba(0, 0, 0, 0.10),\n 0 6px 24px rgba(var(--csk-primary-rgb), 0.28),\n 0 0 48px rgba(var(--csk-primary-rgb), 0.12),\n 0 0 0 4px rgba(var(--csk-primary-rgb), 0.3);\n}\n\n/* ========== a11y aria-live 播报区(视觉隐藏) ========== */\n.csk-sr-only {\n position: absolute !important;\n width: 1px !important;\n height: 1px !important;\n padding: 0 !important;\n margin: -1px !important;\n overflow: hidden !important;\n clip: rect(0,0,0,0) !important;\n white-space: nowrap !important;\n border: 0 !important;\n}\n\n/* ========== 会话分组标题 ========== */\n.csk-history-group {\n margin-bottom: 4px;\n}\n.csk-history-group__label {\n font-size: 11px;\n font-weight: 600;\n color: #9CA3AF;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n padding: 8px 12px 4px;\n user-select: none;\n}\n.csk-dark .csk-history-group__label { color: #6B7280; }\n\n/* ========== 移动端适配 ========== */\n@media (max-width: 480px) {\n .csk-window {\n width: 100vw !important;\n height: 100vh !important;\n max-height: 100vh;\n bottom: 0 !important;\n right: 0 !important;\n left: 0 !important;\n border-radius: 0;\n }\n .csk-window--hidden { transform: translateY(100%); }\n .csk-launcher { bottom: 20px; }\n .csk-launcher--right { right: 20px; }\n .csk-launcher--left { left: 20px; }\n}\n`}(n),document.head.appendChild(T))}function z(){return"undefined"!=typeof crypto&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,n=>{const e=16*Math.random()|0;return("x"===n?e:3&e|8).toString(16)})}function H(n){const e={"&":"&","<":"<",">":">",'"':""","'":"'"};return n.replace(/[&<>"']/g,n=>e[n]||n)}function j(){return Date.now()}const R='';function P(n,e){const t=document.createElement("div");t.id="csk-launcher";const r=n.launcherTheme?" csk-launcher--glass":"";t.className=`csk-launcher csk-launcher--${"left-bottom"===n.position?"left":"right"}${r}`,t.setAttribute("title",n.title),t.setAttribute("aria-label",n.title),t.setAttribute("role","button"),t.setAttribute("tabindex","0"),t.innerHTML=n.launcherIcon;const s=document.createElement("div");s.className="csk-launcher__badge csk-launcher__badge--hidden",t.appendChild(s);const o=function(n,e){let t=null;return function(...r){null!==t&&clearTimeout(t),t=setTimeout(()=>{n.apply(this,r),t=null},e)}}(e,300);return t.addEventListener("click",o),t.addEventListener("keydown",n=>{"Enter"!==n.key&&" "!==n.key||(n.preventDefault(),o())}),t}function U(n,e,t){const r=document.createElement("div");r.className="csk-msg csk-msg--user";const s=document.createElement("div");s.className="csk-msg__avatar csk-msg__avatar--user",s.innerHTML='';const o=document.createElement("div");o.className="csk-msg__content";const a=document.createElement("div");a.className="csk-msg__bubble",a.textContent=e;const i=document.createElement("div");return i.className="csk-msg__time",i.textContent=en(t),o.appendChild(a),o.appendChild(i),r.appendChild(s),r.appendChild(o),n.appendChild(r),r}function O(n,e,t,r,s){const o=document.createElement("div");o.className="csk-msg csk-msg--ai",s&&(o.dataset.cskMsgId=s);const a=document.createElement("div");a.className="csk-msg__avatar csk-msg__avatar--ai",a.innerHTML=R;const i=document.createElement("div");i.className="csk-msg__content";const c=document.createElement("div");c.className="csk-msg__bubble",r?c.innerHTML=r(e):c.textContent=e;const l=document.createElement("div");return l.className="csk-msg__time",l.textContent=en(t),i.appendChild(c),i.appendChild(G(c,o)),i.appendChild(l),o.appendChild(a),o.appendChild(i),n.appendChild(o),X(c),o}const Y='',W='';function G(n,e){const t=document.createElement("div");t.className="csk-msg__actions";const r=document.createElement("button");r.type="button",r.className="csk-action-btn",r.setAttribute("title",m("copy")),r.setAttribute("aria-label",m("copy")),r.innerHTML=Y,r.addEventListener("click",async e=>{e.stopPropagation();const t=n.textContent||"";await K(t,r)});const s=document.createElement("button");s.type="button",s.className="csk-action-btn",s.setAttribute("title",m("retry")),s.setAttribute("aria-label",m("retry")),s.innerHTML=W,s.addEventListener("click",n=>{n.stopPropagation();const t=e.closest(".csk-window");t&&t.dispatchEvent(new CustomEvent("csk:retry",{detail:{msgId:e.dataset.cskMsgId||""}}))});const o=document.createElement("button");o.type="button",o.className="csk-feedback-btn",o.setAttribute("title",m("feedback_up")),o.setAttribute("aria-label",m("feedback_up")),o.innerHTML='',o.addEventListener("click",n=>{n.stopPropagation();const t=e.closest(".csk-window");t&&t.dispatchEvent(new CustomEvent("csk:feedback",{detail:{msgId:e.dataset.cskMsgId||"",value:"up"}}))});const a=document.createElement("button");return a.type="button",a.className="csk-feedback-btn",a.setAttribute("title",m("feedback_down")),a.setAttribute("aria-label",m("feedback_down")),a.innerHTML='',a.addEventListener("click",n=>{n.stopPropagation();const t=e.closest(".csk-window");t&&t.dispatchEvent(new CustomEvent("csk:feedback",{detail:{msgId:e.dataset.cskMsgId||"",value:"down"}}))}),t.appendChild(r),t.appendChild(s),t.appendChild(o),t.appendChild(a),t}function V(n,e){const t=n.querySelectorAll(".csk-feedback-btn");t.length<2||(t.forEach(n=>n.classList.remove("csk-feedback-btn--active","down")),"up"===e&&t[0]&&t[0].classList.add("csk-feedback-btn--active"),"down"===e&&t[1]&&t[1].classList.add("csk-feedback-btn--active","down"))}async function K(n,e){const t=e.innerHTML;try{if(navigator.clipboard&&window.isSecureContext)await navigator.clipboard.writeText(n);else{const e=document.createElement("textarea");e.value=n,e.style.position="fixed",e.style.opacity="0",document.body.appendChild(e),e.select(),document.execCommand("copy"),document.body.removeChild(e)}e.innerHTML='',e.classList.add("csk-action-btn--done"),setTimeout(()=>{e.innerHTML=t,e.classList.remove("csk-action-btn--done")},1500)}catch(n){}}function X(n){n.querySelectorAll(".csk-md-code-block").forEach(n=>{if(n.querySelector(".csk-md-code-copy"))return;const e=n.querySelector("code"),t=document.createElement("button");t.type="button",t.className="csk-md-code-copy",t.setAttribute("title",m("copy")),t.setAttribute("aria-label",m("copy")),t.innerHTML=Y,t.addEventListener("click",async n=>{n.stopPropagation(),await K((null==e?void 0:e.textContent)||"",t)}),n.appendChild(t)})}function J(n,e){n.classList.remove("csk-msg--streaming");const t=e.querySelector(".csk-caret");t&&t.remove(),X(e)}function Q(n,e){const t=n.querySelector(".csk-sources");if(t&&t.remove(),!e||0===e.length)return;const r=document.createElement("div");r.className="csk-sources csk-sources--collapsed";const s=document.createElement("div");s.className="csk-sources__header";const o=document.createElement("span");o.className="csk-sources__title",o.textContent=`📚 ${m("source_count",{n:e.length})}`;const a=document.createElement("span");a.className="csk-sources__arrow",a.textContent="▼",s.appendChild(o),s.appendChild(a),s.addEventListener("click",()=>{r.classList.toggle("csk-sources--collapsed")});const i=document.createElement("div");i.className="csk-sources__body";for(const n of e){const e=document.createElement("div");e.className="csk-source-item";const t=document.createElement("div");if(t.className="csk-source-item__name",t.textContent=n.title||n.sourceName||"未知文档",n.snippet){const t=document.createElement("div");t.className="csk-source-item__snippet",t.textContent=n.snippet,e.appendChild(t)}const r=document.createElement("div");r.className="csk-source-item__meta";const s=[];n.sourceName&&s.push(n.sourceName),void 0!==n.chunkIndex&&s.push(`分块 #${n.chunkIndex}`),void 0!==n.score&&s.push(`相关度 ${(100*n.score).toFixed(0)}%`),r.textContent=s.join(" · "),e.appendChild(t),e.appendChild(r),i.appendChild(e)}r.appendChild(s),r.appendChild(i);const c=n.querySelector(".csk-msg__time");c&&c.parentNode?c.parentNode.insertBefore(r,c):n.appendChild(r)}function Z(n,e,t,r,s,o,a){if(n.innerHTML="",0===e.length){const e=document.createElement("div");return e.className="csk-history-panel__empty",e.innerHTML=`\n
💬
\n
${m("history_empty")}
\n `,void n.appendChild(e)}const i=function(n){const e=new Date,t=new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime(),r=t-864e5,s=t-864e5*(e.getDay()||7)+864e5,o={today:[],yesterday:[],week:[],earlier:[]};for(const e of n){const n=e.lastMessageTime||e.createdAt,a=n?new Date(n).getTime():0;a>=t?o.today.push(e):a>=r?o.yesterday.push(e):a>=s?o.week.push(e):o.earlier.push(e)}const a=[];return o.today.length&&a.push({label:m("history_group_today"),items:o.today}),o.yesterday.length&&a.push({label:m("history_group_yesterday"),items:o.yesterday}),o.week.length&&a.push({label:m("history_group_week"),items:o.week}),o.earlier.length&&a.push({label:m("history_group_earlier"),items:o.earlier}),a}(e);for(const e of i){if(i.length>1){const t=document.createElement("div");t.className="csk-history-group";const r=document.createElement("div");r.className="csk-history-group__label",r.textContent=e.label,t.appendChild(r),n.appendChild(t)}for(const a of e.items){const e=document.createElement("div");e.className="csk-history-item";const i=a.chatId||a.id;o&&i===o&&e.classList.add("csk-history-item--active");const c=document.createElement("div");c.className="csk-history-item__info";const l=document.createElement("div");l.className="csk-history-item__id",a.lastMessagePreview?l.textContent=a.lastMessagePreview.length>60?a.lastMessagePreview.substring(0,60)+"...":a.lastMessagePreview:l.textContent=i;const d=document.createElement("div");d.className="csk-history-item__meta";const p=[];void 0!==a.messageCount&&p.push(`${a.messageCount} 条消息`),a.lastMessageTime?p.push(a.lastMessageTime):a.createdAt&&p.push(a.createdAt),d.textContent=p.join(" · "),c.appendChild(l),c.appendChild(d);const u=document.createElement("div");u.className="csk-history-item__actions";const k=document.createElement("button");k.className="csk-history-action csk-history-action--export",k.setAttribute("title",m("history_export")),k.innerHTML='',k.addEventListener("click",n=>{n.stopPropagation(),r(a.id)});const g=document.createElement("button");g.className="csk-history-action csk-history-action--delete",g.setAttribute("title",m("history_delete")),g.innerHTML='',g.addEventListener("click",n=>{n.stopPropagation(),s(a.id)}),u.appendChild(k),u.appendChild(g),e.appendChild(c),e.appendChild(u),e.addEventListener("click",()=>{t(i)}),n.appendChild(e)}}}function nn(n){n.scrollTop=n.scrollHeight}function en(n){const e=new Date(n);return`${String(e.getHours()).padStart(2,"0")}:${String(e.getMinutes()).padStart(2,"0")}`}function tn(n){return`csk_history_${n}`}function rn(n,e){try{let t=e;t.length>200&&(t=t.slice(50),o.warn(`消息数量达到上限,已裁剪最早 50 条,当前 ${t.length} 条`));const r={messages:t,updatedAt:Date.now()};localStorage.setItem(tn(n),JSON.stringify(r))}catch(n){n instanceof Error&&"QuotaExceededError"===n.name?o.error("localStorage 空间不足,会话历史保存失败。建议清空历史记录。"):o.error("保存会话历史失败",n)}}function sn(n){try{localStorage.removeItem(tn(n))}catch(n){o.warn("清空会话历史失败",n)}}const on="\0CODEBLOCK_",an="\0INLINECODE_";function cn(n){if(!n||"string"!=typeof n)return"";const e=[];let t=n;t=t.replace(/```(\w*)\n([\s\S]*?)```/g,(n,t,r)=>{const s=e.length,o=H(r.trimEnd()),a=t?` class="language-${H(t)}"`:"";return e.push(`
${o}
`),`${on}${s}\0`});const r=[];t=t.replace(/`([^`\n]+)`/g,(n,e)=>{const t=r.length;return r.push(`${H(e)}`),`${an}${t}\0`}),t=H(t),t=ln(t,on,e),t=ln(t,an,r);const s=t.split("\n"),o=[];let a=!1,i="",c=!1,l=[];for(let n=0;n')){p(),u(),k(),o.push(e);continue}const t=e.match(/^(#{1,6})\s+(.+)/);if(t){p(),u(),k();const n=t[1].length;o.push(`${t[2]}`);continue}const r=e.match(/^>\s?(.*)/);if(r){p(),u(),c||(c=!0,o.push('
')),o.push(`

${d(r[1])}

`);continue}c&&k();const g=e.match(/^[\-\*]\s+(.+)/);if(g){p(),k(),a&&"ul"===i||(u(),a=!0,i="ul",o.push('
    ')),o.push(`
  • ${d(g[1])}
  • `);continue}const m=e.match(/^\d+\.\s+(.+)/);m?(p(),k(),a&&"ol"===i||(u(),a=!0,i="ol",o.push('
      ')),o.push(`
    1. ${d(m[1])}
    2. `)):""!==e.trim()?/^(\*{3,}|-{3,}|_{3,})$/.test(e.trim())?(p(),u(),k(),o.push('
      ')):(u(),k(),l.push(d(e))):(p(),u())}return p(),u(),k(),o.join("\n");function d(n){return n=(n=(n=(n=(n=(n=n.replace(/\*\*(.+?)\*\*/g,"$1")).replace(/__(.+?)__/g,"$1")).replace(/\*(.+?)\*/g,"$1")).replace(/(?$1")).replace(/~~(.+?)~~/g,"$1")).replace(/\[([^\]]+)\]\(([^)]+)\)/g,(n,e,t)=>`${e}`)}function p(){l.length>0&&(o.push(`

      ${l.join("
      ")}

      `),l=[])}function u(){a&&(o.push("ul"===i?"
":""),a=!1,i="")}function k(){c&&(o.push("
"),c=!1)}}function ln(n,e,t){return n.replace(new RegExp(e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")+"(\\d+)\0","g"),(n,e)=>t[parseInt(e)]||"")}let dn,pn=null,un=[],kn=null,gn=null,mn=null,hn=null,bn=null,fn=null,yn=null,xn=null,vn=null,wn=null,_n=null,En=null,Cn=null,In=!1,$n=null,An=!0,Ln=[],Sn="",Fn=!1;function Nn(n,e){pn=n,kn=e.messagesContainer,gn=e.inputEl,mn=e.inputEl.parentElement,hn=e.sendBtn,bn=e.clearBtn,fn=e.categorySelect,yn=e.historyPanel,xn=e.welcomeEl,vn=e.newMsgBtn,wn=e.searchInput,_n=e.ariaLiveEl,En=e.showLoading,Cn=e.hideLoading,dn=n.categoryId,Fn=!!n.categoryId||!!n.showCategorySwitch,function(){if(!gn||!hn)return;hn.addEventListener("click",()=>{In&&$n?$n.abort():Rn()}),gn.addEventListener("keydown",n=>{"Enter"!==n.key||n.shiftKey||n.isComposing||(n.preventDefault(),Rn())}),gn.addEventListener("input",()=>{jn(),function(){if(!gn)return;gn.style.height="auto",gn.style.height=`${Math.min(gn.scrollHeight,120)}px`}()}),gn.addEventListener("focus",()=>{mn&&mn.classList.add("csk-input-wrap--focus")}),gn.addEventListener("blur",()=>{mn&&mn.classList.remove("csk-input-wrap--focus")}),bn&&bn.addEventListener("click",()=>function(){if(!pn)return;if(!confirm(m("clear_confirm")))return;if(un=[],kn){kn.querySelectorAll(".csk-msg, .csk-loading").forEach(n=>n.remove())}bn&&(bn.style.display="none");Hn(),sn(pn.integrateId);const n=function(){const n="undefined"!=typeof crypto&&crypto.randomUUID?crypto.randomUUID().substring(0,8):Math.random().toString(36).substring(2,10);return`sdk_${Date.now()}_${n}`}();b(n),M(pn.integrateId,pn.userId,n),o.lifecycleClear(pn.integrateId),o.info(`新 chatId=${n}`)}())}(),function(){if(!kn)return;kn.addEventListener("scroll",()=>{if(!kn)return;const{scrollTop:n,scrollHeight:e,clientHeight:t}=kn;An=e-n-t<80,An&&Tn()}),vn&&vn.addEventListener("click",()=>{kn&&nn(kn),An=!0,Tn()})}(),function(){if(!wn)return;wn.addEventListener("input",()=>{Sn=wn.value.trim().toLowerCase(),qn()})}(),n.showCategorySwitch&&fn&&async function(){if(!fn)return;try{const n=await async function(){const n=y("/category/tree");try{const e=await v(n);if(!e.ok)throw new w(_(e.status),`http_${e.status}`);const t=await e.json();return t.success&&Array.isArray(t.data)?(o.info(`加载分类树成功 count=${t.data.length}`),t.data):[]}catch(n){return n instanceof w?o.error(`加载分类树失败: ${n.message}`):o.error("加载分类树失败",n),[]}}();if(0===n.length)return;fn.innerHTML=``;const e=(n,t=0)=>{for(const r of n){const n=document.createElement("option");n.value=String(r.id),n.textContent=`${" ".repeat(t)}${r.name}`,void 0!==dn&&String(r.id)===String(dn)&&(n.selected=!0),fn.appendChild(n),r.children&&r.children.length>0&&e(r.children,t+1)}};e(n),o.info(`知识库分类加载成功 count=${n.length}`)}catch(n){o.error(m("category_load_error"),n)}}()}async function Mn(){if(pn&&kn&&(await F(),await async function(){if(!pn||!kn)return;const n=f();if(!n)return;try{const e=await A(n);e.messages.length>0&&(un=e.messages.map((n,e)=>({id:z(),role:"USER"===n.messageType?"user":"ai",content:n.content,timestamp:new Date(n.createTime).getTime()})),Un(),o.info(`从后端加载 ${un.length} 条历史消息`),rn(pn.integrateId,un))}catch(n){o.warn("从后端加载历史消息失败",n)}}(),0===un.length)){const n=function(n){try{const e=localStorage.getItem(tn(n));if(!e)return[];const t=JSON.parse(e);return t&&Array.isArray(t.messages)?(o.info(`加载历史消息 integrateId=${n} count=${t.messages.length}`),t.messages):[]}catch(n){return o.warn("加载会话历史失败",n),[]}}(pn.integrateId);n.length>0&&(un=n,Un(),o.info(`从本地缓存恢复 ${n.length} 条消息`))}}function Tn(){vn&&vn.classList.add("csk-newmsg--hidden")}function Dn(){kn&&(An?nn(kn):vn&&vn.classList.remove("csk-newmsg--hidden"))}function Bn(n){hn&&("stop"===n?(hn.classList.add("csk-send-btn--stop"),hn.removeAttribute("disabled"),hn.setAttribute("title",m("stop")),hn.setAttribute("aria-label",m("stop")),hn.innerHTML=''):(hn.classList.remove("csk-send-btn--stop"),hn.setAttribute("title",m("send")),hn.setAttribute("aria-label",m("send")),hn.innerHTML='',jn()))}function qn(){const n=null==yn?void 0:yn.querySelector("#csk-history-list");if(!n||!pn)return;Z(n,Sn?Ln.filter(n=>(n.lastMessagePreview||n.chatId||n.id||"").toLowerCase().includes(Sn)):Ln,n=>{On(n)},n=>{window.open(S(n),"_blank")},async n=>{if(!confirm(m("history_delete_confirm")))return;await L(n)&&(n===f()&&(un=[],kn&&kn.querySelectorAll(".csk-msg, .csk-loading").forEach(n=>n.remove()),bn&&(bn.style.display="none"),Hn()),Ln=Ln.filter(e=>(e.chatId||e.id)!==n),qn())},f())}function zn(n,e){if(!kn)return;const t=un.find(e=>e.id===n&&"ai"===e.role);if(!t)return;const r=t.feedback===e?void 0:e;t.feedback=r;const s=kn.querySelector(`[data-csk-msg-id="${n}"]`);if(s&&V(s,r),pn&&rn(pn.integrateId,un),r){const e="up"===r?"THUMBS_UP":"THUMBS_DOWN";(async function(n,e){if(!h)return!1;const t=y("/feedback");try{const r=await v(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({messageId:String(n),conversationId:h.chatId,feedbackType:e})});return r.ok?(await r.json()).success||!1:(o.error(`反馈提交失败 status=${r.status}`),!1)}catch(n){return o.error("反馈提交异常",n),!1}})(String(n),e).then(e=>{e?o.info(`消息反馈已提交 msgId=${n} value=${r}`):o.warn(`消息反馈提交失败 msgId=${n}(本地状态已更新)`)})}else o.info(`消息反馈已取消 msgId=${n}`)}function Hn(){if(!xn)return;const n=un.length>0||kn&&kn.querySelector(".csk-msg");xn.style.display=n?"none":""}function jn(){if(!hn||!gn)return;gn.value.trim().length>0&&!In?hn.removeAttribute("disabled"):hn.setAttribute("disabled","true")}async function Rn(){if(!gn||!pn||In)return;const n=gn.value.trim();if(""===n)return;gn.value="",jn(),gn.style.height="auto";const e=j(),t={id:z(),role:"user",content:n,timestamp:e};kn&&U(kn,n,e),un.push(t),Hn(),bn&&un.length>0&&(bn.style.display="inline-flex"),kn&&Dn(),await Pn(n)}async function Pn(n){if(!pn||!kn)return;In=!0,Bn("stop"),pn.chatId||await F();const e=j(),t=Fn&&(void 0!==dn||void 0!==pn.categoryId);En&&En(),kn&&Dn();const r=z();let s="";try{pn.streaming?s=await async function(n,e,t,r){$n=new AbortController;const s=$n.signal;return new Promise((o,a)=>{let i=null,c=null,l="",d=!1;C(n,n=>{if(l+=n,!d&&kn){Cn&&Cn();const{wrapper:n,bubble:t}=function(n,e,t){const r=document.createElement("div");r.className="csk-msg csk-msg--ai csk-msg--streaming",t&&(r.dataset.cskMsgId=t);const s=document.createElement("div");s.className="csk-msg__avatar csk-msg__avatar--ai",s.innerHTML=R;const o=document.createElement("div");o.className="csk-msg__content";const a=document.createElement("div");a.className="csk-msg__bubble",a.innerHTML="";const i=document.createElement("div");return i.className="csk-msg__time",i.textContent=en(e),o.appendChild(a),o.appendChild(G(a,r)),o.appendChild(i),r.appendChild(s),r.appendChild(o),n.appendChild(r),{wrapper:r,bubble:a}}(kn,e,r);c=n,i=t,d=!0}i&&(i.textContent=l,function(n){if(n.querySelector(".csk-caret"))return;const e=document.createElement("span");e.className="csk-caret",e.setAttribute("aria-hidden","true"),n.appendChild(e)}(i)),kn&&Dn()},()=>{if(c&&i){if(!d&&""===l)return void E(n).then(o).catch(a);l&&(i.innerHTML=cn(l)),J(c,i)}o(l)},n=>{l.length>0?(i&&(i.innerHTML=cn(l+"\n\n"+m("stream_interrupted")),c&&J(c,i)),o(l)):a(n)},dn,t,s)})}(n,e,t,r):(s=await E(n),Cn&&Cn(),kn&&O(kn,s,e,cn,r));const a={id:r,role:"ai",content:s,timestamp:e};un.push(a),rn(pn.integrateId,un),kn&&Dn(),function(n){if(!_n)return;const e=n.length>120?n.substring(0,120)+"...":n;_n.textContent=m("new_msg_announce")+":"+e}(s),kn&&kn.dispatchEvent(new CustomEvent("csk:newMessage",{bubbles:!0,detail:{msg:a}})),t&&async function(n,e){try{const t=await I(n,dn);if(t.length>0){const n=t.map(n=>{var e,t;return{documentId:n.documentId||"",title:n.title||"",sourceName:n.sourceName||"",chunkIndex:null!==(e=n.chunkIndex)&&void 0!==e?e:0,score:null!==(t=n.score)&&void 0!==t?t:0,snippet:n.snippet||""}});if(e.sources=n,kn){const e=kn.querySelector(".csk-msg--ai:last-of-type");e&&Q(e,n)}pn&&rn(pn.integrateId,un)}}catch(n){o.warn("获取引用来源失败",n)}}(n,a)}catch(n){Cn&&Cn();const e=n instanceof w?n.message:m("error_send");if(kn){const n=document.createElement("div");n.className="csk-msg csk-msg--ai";const t=document.createElement("div");t.className="csk-msg__bubble",t.style.color="#DC2626",t.textContent=`⚠ ${e}`,n.appendChild(t),kn.appendChild(n)}o.error(`发送失败 integrateId=${pn.integrateId}`,n)}finally{In=!1,$n=null,Bn("send"),jn()}}function Un(){if(!kn)return;const n=kn.querySelector(".csk-history-panel");kn.querySelectorAll(".csk-msg, .csk-loading").forEach(n=>n.remove());for(const n of un)if("user"===n.role)U(kn,n.content,n.timestamp);else{const e=O(kn,n.content,n.timestamp,cn,n.id);n.sources&&n.sources.length>0&&Q(e,n.sources),n.feedback&&V(e,n.feedback)}An=!0,nn(kn),bn&&un.length>0&&(bn.style.display="inline-flex"),Hn(),n&&!kn.contains(n)&&kn.appendChild(n)}async function On(n){if(!pn||!kn)return;o.info(`切换到会话 conversationId=${n}`),b(n),M(pn.integrateId,pn.userId,n),yn&&yn.classList.add("csk-history-panel--hidden"),un=[];kn.querySelectorAll(".csk-msg, .csk-loading").forEach(n=>n.remove());try{const e=await A(n);e.messages.length>0&&(un=e.messages.map(n=>({id:z(),role:"USER"===n.messageType?"user":"ai",content:n.content,timestamp:new Date(n.createTime).getTime()})),Un(),o.info(`加载会话 ${n} 的 ${un.length} 条消息`),rn(pn.integrateId,un))}catch(e){o.warn(`加载会话消息失败 conversationId=${n}`,e)}bn&&un.length>0&&(bn.style.display="inline-flex"),Hn()}let Yn=null,Wn=!1,Gn=null,Vn=null,Kn=null,Xn=null,Jn=null,Qn=null,Zn=null,ne=null,ee=null,te=null,re=null,se=null,oe=null,ae=null,ie=null;function ce(){if(!se||!Gn)return;const n=Gn.getBoundingClientRect();"left-bottom"===(null==Yn?void 0:Yn.position)?se.style.left=`${n.left}px`:se.style.right=window.innerWidth-n.right+"px",se.style.bottom=window.innerHeight-n.top+8+"px"}function le(){if(!se)return;se.classList.add("csk-teaser--hidden"),se.removeEventListener("click",de);const n=se.querySelector(".csk-teaser__close");n&&n.removeEventListener("click",pe)}function de(n){n.target.closest(".csk-teaser__close")||(le(),me())}function pe(n){n.stopPropagation(),le()}function ue(){se&&!se.classList.contains("csk-teaser--hidden")&&ce()}const ke='button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])';function ge(n){"Escape"===n.key&&Vn&&!Vn.classList.contains("csk-window--hidden")&&he(),function(n){if(!Vn||Vn.classList.contains("csk-window--hidden"))return;if("Tab"!==n.key)return;const e=Array.from(Vn.querySelectorAll(ke));if(0===e.length)return;const t=e[0],r=e[e.length-1];n.shiftKey?document.activeElement===t&&(n.preventDefault(),r.focus()):document.activeElement===r&&(n.preventDefault(),t.focus())}(n)}function me(){Vn&&(Vn.classList.remove("csk-window--hidden"),le(),ae&&ae.classList.add("csk-launcher__badge--hidden"),setTimeout(()=>{Xn&&Xn.focus()},80))}function he(){Vn&&Vn.classList.add("csk-window--hidden")}function be(){Vn&&(Vn.classList.contains("csk-window--hidden")?me():he())}function fe(n){return`csk_position_${n}`}const ye={init:function(n){if(Wn)return void o.warn("SDK 已初始化,请先调用 destroy() 再重新初始化");const t=function(n){var e,t,r,s,i,k,g,m,h,b;if(!n.integrateId||"string"!=typeof n.integrateId&&"number"!=typeof n.integrateId||"string"==typeof n.integrateId&&""===n.integrateId.trim())return o.error('integrateId 是必传参数(对应后端 roleId 客服角色 ID),请检查 init() 调用。示例:ChatbotSDK.init({ integrateId: 1, requestDomain: "https://api.example.com" })'),null;if(!n.requestDomain||"string"!=typeof n.requestDomain||""===n.requestDomain.trim())return o.error('requestDomain 是必传参数,请检查 init() 调用。示例:ChatbotSDK.init({ integrateId: 1, requestDomain: "https://api.example.com" })'),null;try{new URL(n.requestDomain)}catch(e){return o.error(`requestDomain 不是合法的 URL 格式:${n.requestDomain}。请提供完整的域名,如 https://api.example.com`),null}const f=String(n.integrateId).trim(),y=n.launcherTheme||void 0;let x=n.launcherIcon||a,v=n.primaryColor||"#4F46E5";y&&!n.launcherIcon&&(x={"dream-purple":c,"mint-tech":l,"coral-peach":d,"sky-blue":p}[y]||a,n.primaryColor||(v=u[y]||"#4F46E5"));const w={integrateId:f,requestDomain:n.requestDomain.replace(/\/+$/,""),userId:n.userId,categoryId:n.categoryId,showCategorySwitch:null!==(e=n.showCategorySwitch)&&void 0!==e&&e,title:n.title||"AI 智能助手",width:null!==(t=n.width)&&void 0!==t?t:380,height:Math.max(300,null!==(r=n.height)&&void 0!==r?r:520),position:"left-bottom"===n.position?"left-bottom":"right-bottom",primaryColor:v,launcherTheme:y,launcherIcon:x,showClear:null===(s=n.showClear)||void 0===s||s,showAdminPanel:null!==(i=n.showAdminPanel)&&void 0!==i&&i,quickReplies:Array.isArray(n.quickReplies)?n.quickReplies.map(n=>String(n).trim()).filter(Boolean):[],theme:"dark"===n.theme?"dark":"light",showTeaser:null===(k=n.showTeaser)||void 0===k||k,teaserText:"string"==typeof n.teaserText&&n.teaserText.trim()||"",streaming:null===(g=n.streaming)||void 0===g||g,locale:n.locale||"zh-CN",debug:null===(m=n.debug)||void 0===m||m,sound:null!==(h=n.sound)&&void 0!==h&&h,notification:null!==(b=n.notification)&&void 0!==b&&b,onError:"function"==typeof n.onError?n.onError:void 0,onReady:"function"==typeof n.onReady?n.onReady:void 0,onMessage:"function"==typeof n.onMessage?n.onMessage:void 0,chatId:""};return o.info(`配置解析完成 integrateId(=roleId)=${w.integrateId} userId(=accountId)=${w.userId||"(未设置)"} requestDomain=${w.requestDomain}`),w}(n);if(!t)return;var s;Yn=t,function(n){if(k[n])g=n;else{const e=n.split("-")[0],t=Object.keys(k).find(n=>n.startsWith(e));t&&(g=t)}}(Yn.locale),s=Yn.debug,e=s,r(Yn.onError),function(n){h=n}(Yn),q(Yn),Gn=P(Yn,be),document.body.appendChild(Gn),ae=Gn.querySelector(".csk-launcher__badge");const i=function(n){const e=document.createElement("div");e.id="csk-window",e.className=`csk-root csk-window csk-window--${"left-bottom"===n.position?"left":"right"} csk-window--hidden${"dark"===n.theme?" csk-dark":""}`,e.setAttribute("role","dialog"),e.setAttribute("aria-label",n.title),e.setAttribute("aria-modal","false");const t=document.createElement("div");t.className="csk-header";const r=document.createElement("div");r.className="csk-header__left";const s=document.createElement("div");s.className="csk-header__avatar",s.innerHTML=R;const o=document.createElement("div");o.className="csk-header__info";const a=document.createElement("span");a.className="csk-header__title",a.textContent=n.title;const i=document.createElement("span");i.className="csk-header__status",i.innerHTML=`${m("status_online")}`,o.appendChild(a),o.appendChild(i),r.appendChild(s),r.appendChild(o);const c=document.createElement("div");c.className="csk-header__actions";const l=document.createElement("button");l.className="csk-history-btn",l.setAttribute("title",m("history_title")),l.innerHTML='';const d=document.createElement("button");d.className="csk-header__btn csk-header__btn--minimize",d.setAttribute("title",m("minimize")),d.innerHTML='',d.addEventListener("click",()=>{e.classList.add("csk-window--hidden")});const p=document.createElement("button");p.className="csk-header__btn csk-header__btn--close",p.setAttribute("title",m("close")),p.innerHTML='',p.addEventListener("click",()=>{e.classList.add("csk-window--hidden")}),c.appendChild(l),c.appendChild(d),c.appendChild(p),t.appendChild(r),t.appendChild(c);const u=document.createElement("div");u.id="csk-messages",u.className="csk-messages";const k=document.createElement("div");if(k.className="csk-welcome",k.innerHTML=`\n
${R}
\n
${m("welcome_title")}
\n
${m("welcome_desc")}
\n `,n.quickReplies.length>0){const t=document.createElement("div");t.className="csk-quick-replies";for(const r of n.quickReplies){const n=document.createElement("button");n.type="button",n.className="csk-quick-reply",n.textContent=r,n.addEventListener("click",()=>{e.dispatchEvent(new CustomEvent("csk:quickReply",{detail:{text:r}}))}),t.appendChild(n)}k.appendChild(t)}u.appendChild(k);const g=document.createElement("button");g.type="button",g.className="csk-newmsg csk-newmsg--hidden",g.innerHTML=`\n \n ${m("new_message")}\n `,e.appendChild(g);const h=document.createElement("div");h.className="csk-history-panel csk-history-panel--hidden",h.innerHTML=`\n
\n ${m("history_title")}\n \n
\n
\n \n
\n
\n `,u.appendChild(h);const b=h.querySelector("#csk-history-back");b&&b.addEventListener("click",()=>{h.classList.add("csk-history-panel--hidden")}),l.addEventListener("click",n=>{n.stopPropagation();const t=h.classList.contains("csk-history-panel--hidden");h.classList.toggle("csk-history-panel--hidden"),t&&e.dispatchEvent(new CustomEvent("csk:loadHistory"))});let f=null;if(n.showCategorySwitch){const n=document.createElement("div");n.className="csk-category-bar";const r=document.createElement("span");r.className="csk-category-bar__label",r.textContent="📚",f=document.createElement("select"),f.id="csk-category-select",f.className="csk-category-select",f.innerHTML=``,f.addEventListener("change",()=>{const n=f.value;e.dispatchEvent(new CustomEvent("csk:categoryChange",{detail:{categoryId:n?Number(n):void 0}}))}),n.appendChild(r),n.appendChild(f),e.appendChild(t),e.appendChild(u),e.appendChild(n)}else e.appendChild(t),e.appendChild(u);const y=document.createElement("div");y.className="csk-input-area";const x=document.createElement("div");x.className="csk-input-wrap";const v=document.createElement("textarea");v.id="csk-input",v.className="csk-input",v.setAttribute("placeholder",m("placeholder")),v.setAttribute("rows","1"),v.setAttribute("autofocus","");const w=document.createElement("button");w.id="csk-send-btn",w.className="csk-send-btn",w.setAttribute("title",m("send")),w.setAttribute("disabled","true"),w.innerHTML='',x.appendChild(v),x.appendChild(w),y.appendChild(x),e.appendChild(y);let _=null;n.showClear&&(_=document.createElement("button"),_.className="csk-clear-btn",_.textContent=m("clear"),_.style.display="none",e.insertBefore(_,y));let E=null;const C=document.createElement("div");C.className="csk-sr-only",C.setAttribute("aria-live","polite"),C.setAttribute("aria-atomic","true"),e.appendChild(C);const I=h.querySelector("#csk-history-search"),$=document.createElement("div");return $.className=`csk-teaser csk-teaser--${"left-bottom"===n.position?"left":"right"} csk-teaser--hidden`,$.setAttribute("role","status"),$.innerHTML=`\n \n ${n.teaserText||m("teaser_text")}\n `,{window:e,messagesContainer:u,inputEl:v,sendBtn:w,clearBtn:_,categorySelect:f,historyPanel:h,welcomeEl:k,newMsgBtn:g,teaserEl:$,searchInput:I,ariaLiveEl:C,showLoading:function(){if(E)return E.style.display="flex",E;const n=document.createElement("div");return n.className="csk-loading",n.innerHTML=`\n
${R}
\n
\n
\n
\n
\n
\n `,u.appendChild(n),E=n,n},hideLoading:function(){E&&E.parentNode&&(E.parentNode.removeChild(E),E=null)}}}(Yn);Vn=i.window,Kn=i.messagesContainer,Xn=i.inputEl,Jn=i.sendBtn,Qn=i.clearBtn,Zn=i.categorySelect,ne=i.historyPanel,ee=i.showLoading,te=i.hideLoading,document.body.appendChild(Vn),se=i.teaserEl,document.body.appendChild(se),ce();const b=Vn.querySelector(".csk-header");if(b&&(re=function(n,e,t){let r=!1,s=0,o=0,a=0,i=0;const c=n=>{if(n.target.closest("button"))return;r=!0,s=n.clientX,o=n.clientY;const t=e.getBoundingClientRect();a=s-t.left,i=o-t.top,document.addEventListener("mousemove",l),document.addEventListener("mouseup",d)},l=n=>{if(!r)return;const t=n.clientX-a,s=n.clientY-i,o=window.innerWidth-e.offsetWidth,c=window.innerHeight-e.offsetHeight;e.style.right="auto",e.style.bottom="auto",e.style.left=`${Math.max(0,Math.min(t,o))}px`,e.style.top=`${Math.max(0,Math.min(s,c))}px`},d=()=>{if(r=!1,document.removeEventListener("mousemove",l),document.removeEventListener("mouseup",d),t){const n=e.getBoundingClientRect();t({x:n.left,y:n.top})}};return n.addEventListener("mousedown",c),()=>{n.removeEventListener("mousedown",c),document.removeEventListener("mousemove",l),document.removeEventListener("mouseup",d)}}(b,Vn,n=>{!function(n,e){try{localStorage.setItem(fe(n),JSON.stringify(e))}catch(n){}}(Yn.integrateId,n)})),function(n,e){try{const t=localStorage.getItem(fe(n));if(!t)return;const r=JSON.parse(t);if("number"!=typeof r.x||"number"!=typeof r.y)return;const s=window.innerWidth-e.offsetWidth,o=window.innerHeight-e.offsetHeight,a=Math.max(0,Math.min(r.x,s)),i=Math.max(0,Math.min(r.y,o));e.style.right="auto",e.style.bottom="auto",e.style.left=`${a}px`,e.style.top=`${i}px`}catch(n){}}(Yn.integrateId,Vn),Nn(Yn,{messagesContainer:Kn,inputEl:Xn,sendBtn:Jn,clearBtn:Qn,categorySelect:Zn,historyPanel:ne,welcomeEl:i.welcomeEl,newMsgBtn:i.newMsgBtn,searchInput:i.searchInput,ariaLiveEl:i.ariaLiveEl,showLoading:ee,hideLoading:te}),Vn.addEventListener("csk:categoryChange",n=>{var e;e=n.detail.categoryId,dn=e,Fn=void 0!==e,o.lifecycleCategoryChange(null!=e?e:"全部")}),Vn.addEventListener("csk:loadHistory",()=>{!async function(){if(!yn||!pn)return;const n=yn.querySelector("#csk-history-list");if(n){n.innerHTML='
加载中...
';try{const e=await $(1,50,pn.userId,pn.integrateId);Ln=e.list.map(n=>({id:n.conversationId||"",chatId:n.conversationId||"",messageCount:n.messageCount,lastMessageTime:n.lastMessageTime,lastMessagePreview:n.lastMessagePreview,createdAt:n.firstMessageTime||n.createdAt})),Sn="",wn&&(wn.value=""),Z(n,Ln,n=>{On(n)},n=>{window.open(S(n),"_blank")},async n=>{confirm(m("history_delete_confirm"))&&await L(n)&&(n===f()&&(un=[],kn&&kn.querySelectorAll(".csk-msg, .csk-loading").forEach(n=>n.remove()),bn&&(bn.style.display="none"),Hn()),Ln=Ln.filter(e=>(e.chatId||e.id)!==n),qn())},f())}catch(e){o.error(m("history_load_error"),e),n.innerHTML=`
${m("history_load_error")}
`}}}()}),Vn.addEventListener("csk:quickReply",n=>{var e;e=n.detail.text,!gn||In?Promise.resolve():(gn.value=e,jn(),Rn())}),Vn.addEventListener("csk:retry",n=>{!async function(n){if(!pn||!kn||In)return;const e=un.findIndex(e=>e.id===n&&"ai"===e.role);if(e<0)return;let t="";for(let n=e-1;n>=0;n--)if("user"===un[n].role){t=un[n].content;break}if(!t)return;const r=un.splice(e),s=new Set(r.map(n=>n.id));kn.querySelectorAll(".csk-msg").forEach(n=>{const e=n.dataset.cskMsgId;e&&s.has(e)&&n.remove()}),rn(pn.integrateId,un),Hn(),await Pn(t)}(n.detail.msgId)}),Vn.addEventListener("csk:feedback",n=>{zn(n.detail.msgId,n.detail.value)}),Vn.addEventListener("csk:newMessage",n=>{var e;if(Vn&&Vn.classList.contains("csk-window--hidden")&&(ae&&ae.classList.remove("csk-launcher__badge--hidden"),(null==Yn?void 0:Yn.sound)&&function(){try{ie||(ie=new(window.AudioContext||window.webkitAudioContext));const n=ie;if("suspended"===n.state)return void n.resume();const e=n.currentTime;[0,.15].forEach((t,r)=>{const s=n.createOscillator(),o=n.createGain();s.type="sine",s.frequency.value=0===r?880:1100,o.gain.setValueAtTime(.15,e+t),o.gain.exponentialRampToValueAtTime(.001,e+t+.12),s.connect(o),o.connect(n.destination),s.start(e+t),s.stop(e+t+.12)})}catch(n){}}(),(null==Yn?void 0:Yn.notification)&&function(){try{if(!("Notification"in window))return;"granted"===Notification.permission?new Notification((null==Yn?void 0:Yn.title)||"AI 智能助手",{body:"收到新消息",icon:void 0,silent:!0}):"denied"!==Notification.permission&&Notification.requestPermission()}catch(n){}}()),(null==Yn?void 0:Yn.onMessage)&&(null===(e=n.detail)||void 0===e?void 0:e.msg))try{Yn.onMessage(n.detail.msg)}catch(n){}}),document.addEventListener("keydown",ge),window.addEventListener("resize",ue),Wn=!0,o.lifecycleInit(Yn.integrateId,Yn.requestDomain),Yn.onReady)try{Yn.onReady()}catch(n){}Yn.showTeaser&&(oe=setTimeout(()=>{Vn&&Vn.classList.contains("csk-window--hidden")&&function(){if(!se)return;ce(),se.classList.remove("csk-teaser--hidden"),se.addEventListener("click",de);const n=se.querySelector(".csk-teaser__close");n&&n.addEventListener("click",pe)}()},1500)),Mn().catch(n=>{o.warn("chatId 初始化失败,将在发送消息时重试",n)})},destroy:function(){if(!Wn)return;oe&&(clearTimeout(oe),oe=null),le(),se&&se.parentNode&&(se.parentNode.removeChild(se),se=null),Gn&&Gn.parentNode&&(Gn.parentNode.removeChild(Gn),Gn=null),Vn&&Vn.parentNode&&(Vn.parentNode.removeChild(Vn),Vn=null),re&&(re(),re=null),T&&T.parentNode&&(T.parentNode.removeChild(T),T=null),document.querySelectorAll("style[data-csk-sdk]").forEach(n=>n.remove()),document.removeEventListener("keydown",ge),window.removeEventListener("resize",ue),r(void 0);const n=null==Yn?void 0:Yn.integrateId;Yn=null,Wn=!1,Kn=null,Xn=null,Jn=null,Qn=null,Zn=null,ne=null,ee=null,te=null,ae=null,ie=null,o.lifecycleDestroy(n||"")},open:me,close:he,toggle:be,clearHistory:function(){Yn&&(Qn?Qn.click():confirm("确定清空所有对话记录?")&&sn(Yn.integrateId))}};return"undefined"!=typeof window&&(window.ChatbotSDK=ye),ye}(); //# sourceMappingURL=chatbot-sdk.min.js.map diff --git a/client/dist/chatbot-sdk.min.js.map b/client/dist/chatbot-sdk.min.js.map index f9e7547..9f7ed76 100644 --- a/client/dist/chatbot-sdk.min.js.map +++ b/client/dist/chatbot-sdk.min.js.map @@ -1 +1 @@ -{"version":3,"file":"chatbot-sdk.min.js","sources":["../src/logger.ts","../src/config.ts","../src/i18n.ts","../src/api.ts","../src/styles.ts","../src/utils.ts","../src/dom.ts","../src/storage.ts","../src/markdown.ts","../src/chat.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null],"names":["PREFIX","debugEnabled","errorCallback","setErrorCallback","cb","timers","logger","info","msg","data","console","log","undefined","warn","error","code","Error","type","message","String","detail","_a","time","label","Date","now","timeEnd","prefix","start","duration","lifecycleInit","integrateId","requestDomain","this","lifecycleDestroy","lifecycleSend","length","lifecycleReply","lifecycleError","status","lifecycleClear","lifecycleStreamDone","lifecycleCategoryChange","categoryId","DEFAULT_LAUNCHER_ICON","buildGlassIcon","eyeColor","smileColor","bubbleColor","GLASS_ICON_DREAM_PURPLE","GLASS_ICON_MINT_TECH","GLASS_ICON_CORAL_PEACH","GLASS_ICON_SKY_BLUE","THEME_PRIMARY_COLORS","dictionaries","title","minimize","close","status_online","welcome_title","welcome_desc","placeholder","send","stop","new_message","copy","copied","retry","retrying","loading","stream_interrupted","stream_unstable","category_placeholder","category_all","category_load_error","source_title","source_count","source_loading","clear","clear_confirm","history_title","history_empty","history_load_error","history_delete_confirm","history_export","history_delete","history_search","history_group_today","history_group_yesterday","history_group_week","history_group_earlier","feedback_up","feedback_down","teaser_text","new_msg_announce","error_network","error_timeout","error_server","error_cors","error_auth","error_forbidden","error_not_found","error_rate_limit","error_unavailable","error_unknown","error_send","error_stream_unsupported","en","currentLocale","t","key","params","text","k","v","Object","entries","replace","currentConfig","updateChatId","chatId","getChatId","buildUrl","path","startsWith","setIfPresent","value","trim","set","async","safeFetch","url","options","timeout","externalSignal","controller","AbortController","timer","setTimeout","abort","aborted","addEventListener","once","fetch","assign","signal","mode","credentials","err","CskError","DOMException","name","TypeError","includes","clearTimeout","constructor","super","getHttpErrorMessage","chatRequest","URLSearchParams","userId","toString","buildChatUrl","response","ok","errorMsg","chatSSERequest","onChunk","onDone","onError","useRag","buildChatRAGSSEUrl","buildChatSSEUrl","totalText","REQUEST_TIMEOUT","reader","body","getReader","decoder","TextDecoder","stream","buffer","done","read","decode","lines","split","pop","line","trimmed","substring","readErr","releaseLock","fetchRagSources","buildRagSourcesUrl","json","success","Array","isArray","fetchConversationList","page","size","accountId","roleId","encodeURIComponent","list","total","pages","fetchConversationMessages","conversationId","messages","deleteConversation","method","getConversationExportUrl","initChatId","cachedChatId","localStorage","getItem","chatIdStorageKey","loadCachedChatId","result","latestConv","saveCachedChatId","messageCount","newChatId","random","crypto","randomUUID","Math","generateChatId","setItem","removeItem","styleElement","cssVars","config","darker","adjustColor","primaryColor","lighter","rgb","hex","match","parseInt","hexToRgb","themeColors","launcherTheme","grad1","grad2","glow","width","height","amount","clamp","max","min","r","g","b","padStart","injectStyles","document","querySelector","createElement","setAttribute","textContent","getStyles","head","appendChild","uuid","c","escapeHtml","map","ch","BOT_ICON","createLauncher","onClick","launcher","id","glassClass","className","position","innerHTML","launcherIcon","badge","debouncedClick","fn","delay","args","apply","debounce","e","preventDefault","renderUserBubble","container","timestamp","wrapper","avatar","content","bubble","formatTime","renderAIBubble","renderMd","msgId","dataset","cskMsgId","buildAIActions","enhanceCodeBlocks","COPY_ICON","RETRY_ICON","bar","copyBtn","stopPropagation","copyToClipboard","retryBtn","root","closest","dispatchEvent","CustomEvent","upBtn","downBtn","updateFeedbackUI","btns","querySelectorAll","forEach","btn","classList","remove","add","original","navigator","clipboard","window","isSecureContext","writeText","ta","style","opacity","select","execCommand","removeChild","pre","codeEl","finalizeAIBubble","caret","renderSources","sources","existing","sourcesEl","header","titleSpan","n","arrow","toggle","src","item","sourceName","snippet","meta","metaParts","push","chunkIndex","score","toFixed","join","timeEl","parentNode","insertBefore","renderHistoryList","listEl","items","onSelect","onExport","onDelete","activeChatId","emptyText","empty","groups","todayStart","getFullYear","getMonth","getDate","getTime","yesterdayStart","weekStart","getDay","today","yesterday","week","earlier","timeStr","lastMessageTime","createdAt","ts","groupHistoryByDate","group","groupEl","labelEl","el","convId","idEl","lastMessagePreview","metaEl","actionsEl","exportBtn","deleteBtn","scrollToBottom","scrollTop","scrollHeight","d","getHours","getMinutes","storageKey","saveMessages","slice","updatedAt","JSON","stringify","clearMessages","CODE_BLOCK_PREFIX","INLINE_CODE_PREFIX","renderMarkdown","codeBlocks","processed","_match","lang","idx","escapedCode","trimEnd","langClass","inlineCodes","restorePlaceholders","inList","listType","inBlockquote","paragraphBuffer","i","flushParagraph","closeList","closeBlockquote","headingMatch","level","quoteMatch","inlineFormat","ulMatch","olMatch","test","_m","linkText","replacements","RegExp","currentCategoryId","messagesContainer","inputEl","inputWrap","sendBtn","clearBtn","categorySelect","historyPanel","welcomeEl","newMsgBtn","searchInput","ariaLiveEl","showLoadingFn","hideLoadingFn","isSending","abortController","isNearBottom","historyItems","historySearchText","initChat","cfg","dom","parentElement","showLoading","hideLoading","showCategorySwitch","handleSend","shiftKey","isComposing","updateSendBtnState","autoResizeInput","confirm","display","updateEmptyState","newId","generateNewChatId","handleClear","bindSendEvents","clientHeight","hideNewMsgBtn","bindScrollEvents","toLowerCase","renderFilteredHistory","bindHistorySearch","tree","fetchCategoryTree","addOptions","nodes","indent","node","option","repeat","selected","children","loadCategories","initChatHistory","role","messageType","createTime","renderHistory","loadHistoryFromBackend","cached","raw","parse","loadMessages","smartScrollToBottom","setSendButtonMode","removeAttribute","filter","switchToConversation","open","it","hasMessages","userTimestamp","userMsg","produceAIReply","userText","aiTimestamp","shouldUseRag","aiMsgId","aiContent","streaming","Promise","resolve","reject","bubbleEl","wrapperEl","accumulated","streamStarted","chunk","createEmptyAIBubble","appendStreamingCaret","then","catch","sendStreamMessage","aiMsg","announceMessage","bubbles","ragSources","s","documentId","_b","lastAiMsg","fetchAndRenderSources","errMsg","errorBubble","color","historyPanelEl","feedback","contains","isInitialized","launcherEl","windowEl","dragCleanup","teaserEl","teaserTimer","badgeEl","audioCtx","positionTeaser","rect","getBoundingClientRect","left","right","innerWidth","bottom","innerHeight","top","hideTeaser","removeEventListener","onTeaserClick","closeBtn","onTeaserClose","target","onResize","FOCUSABLE","onKeyDown","focusables","from","first","last","activeElement","focus","trapFocus","positionKey","ChatbotSDK","init","rawConfig","parsed","URL","_l","integrateIdStr","resolvedLauncherIcon","resolvedPrimaryColor","_c","showClear","_d","showAdminPanel","_e","quickReplies","Boolean","theme","showTeaser","_f","teaserText","_g","locale","debug","_h","sound","_j","notification","_k","onReady","onMessage","parseConfig","enabled","matched","keys","find","setLocale","setApiConfig","headerLeft","headerAvatar","headerInfo","titleEl","statusEl","actions","historyBtn","minimizeBtn","chips","reply","chip","backBtn","isHidden","categoryBar","categoryLabel","selectedId","Number","inputArea","loadingEl","createChatWindow","headerEl","onDragEnd","dragging","startX","startY","offsetX","offsetY","onMouseDown","clientX","clientY","onMouseMove","onMouseUp","x","y","maxX","offsetWidth","maxY","offsetHeight","enableDrag","pos","saveWindowPosition","winEl","restoreWindowPosition","firstMessageTime","loadHistoryConversations","aiIndex","findIndex","m","removed","splice","removedIds","Set","has","retryFromMessage","newValue","handleFeedback","AudioContext","webkitAudioContext","ctx","state","resume","currentTime","offset","osc","createOscillator","gain","createGain","frequency","setValueAtTime","exponentialRampToValueAtTime","connect","destination","playNotificationSound","Notification","permission","icon","silent","requestPermission","sendDesktopNotification","destroy","oldIntegrateId","clearHistory","click"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"chatbot-sdk.min.js","sources":["../src/logger.ts","../src/config.ts","../src/i18n.ts","../src/api.ts","../src/styles.ts","../src/utils.ts","../src/dom.ts","../src/storage.ts","../src/markdown.ts","../src/chat.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null],"names":["PREFIX","debugEnabled","errorCallback","setErrorCallback","cb","timers","logger","info","msg","data","console","log","undefined","warn","error","code","Error","type","message","String","detail","_a","time","label","Date","now","timeEnd","prefix","start","duration","lifecycleInit","integrateId","requestDomain","this","lifecycleDestroy","lifecycleSend","length","lifecycleReply","lifecycleError","status","lifecycleClear","lifecycleStreamDone","lifecycleCategoryChange","categoryId","DEFAULT_LAUNCHER_ICON","buildGlassIcon","eyeColor","smileColor","bubbleColor","GLASS_ICON_DREAM_PURPLE","GLASS_ICON_MINT_TECH","GLASS_ICON_CORAL_PEACH","GLASS_ICON_SKY_BLUE","THEME_PRIMARY_COLORS","dictionaries","title","minimize","close","status_online","welcome_title","welcome_desc","placeholder","send","stop","new_message","copy","copied","retry","retrying","loading","stream_interrupted","stream_unstable","category_placeholder","category_all","category_load_error","source_title","source_count","source_loading","clear","clear_confirm","history_title","history_empty","history_load_error","history_delete_confirm","history_export","history_delete","history_search","history_group_today","history_group_yesterday","history_group_week","history_group_earlier","feedback_up","feedback_down","teaser_text","new_msg_announce","error_network","error_timeout","error_server","error_cors","error_auth","error_forbidden","error_not_found","error_rate_limit","error_unavailable","error_unknown","error_send","error_stream_unsupported","en","currentLocale","t","key","params","text","k","v","Object","entries","replace","currentConfig","updateChatId","chatId","getChatId","buildUrl","path","startsWith","setIfPresent","value","trim","set","async","safeFetch","url","options","timeout","externalSignal","controller","AbortController","timer","setTimeout","abort","aborted","addEventListener","once","fetch","assign","signal","mode","credentials","err","CskError","DOMException","name","TypeError","includes","clearTimeout","constructor","super","getHttpErrorMessage","chatRequest","URLSearchParams","userId","toString","buildChatUrl","response","ok","errorMsg","chatSSERequest","onChunk","onDone","onError","useRag","buildChatRAGSSEUrl","buildChatSSEUrl","totalText","REQUEST_TIMEOUT","reader","body","getReader","decoder","TextDecoder","stream","buffer","done","read","decode","lines","split","pop","line","trimmed","substring","readErr","releaseLock","fetchRagSources","buildRagSourcesUrl","json","success","Array","isArray","fetchConversationList","page","size","accountId","roleId","encodeURIComponent","list","total","pages","fetchConversationMessages","conversationId","messages","deleteConversation","method","getConversationExportUrl","initChatId","cachedChatId","localStorage","getItem","chatIdStorageKey","loadCachedChatId","result","latestConv","saveCachedChatId","messageCount","newChatId","random","crypto","randomUUID","Math","generateChatId","setItem","removeItem","styleElement","cssVars","config","darker","adjustColor","primaryColor","lighter","rgb","hex","match","parseInt","hexToRgb","themeColors","launcherTheme","grad1","grad2","glow","width","height","amount","clamp","max","min","r","g","b","padStart","injectStyles","document","querySelector","createElement","setAttribute","textContent","getStyles","head","appendChild","uuid","c","escapeHtml","map","ch","BOT_ICON","createLauncher","onClick","launcher","id","glassClass","className","position","innerHTML","launcherIcon","badge","debouncedClick","fn","delay","args","apply","debounce","e","preventDefault","renderUserBubble","container","timestamp","wrapper","avatar","content","bubble","formatTime","renderAIBubble","renderMd","msgId","dataset","cskMsgId","buildAIActions","enhanceCodeBlocks","COPY_ICON","RETRY_ICON","bar","copyBtn","stopPropagation","copyToClipboard","retryBtn","root","closest","dispatchEvent","CustomEvent","upBtn","downBtn","updateFeedbackUI","btns","querySelectorAll","forEach","btn","classList","remove","add","original","navigator","clipboard","window","isSecureContext","writeText","ta","style","opacity","select","execCommand","removeChild","pre","codeEl","finalizeAIBubble","caret","renderSources","sources","existing","sourcesEl","header","titleSpan","n","arrow","toggle","src","item","sourceName","snippet","meta","metaParts","push","chunkIndex","score","toFixed","join","timeEl","parentNode","insertBefore","renderHistoryList","listEl","items","onSelect","onExport","onDelete","activeChatId","emptyText","empty","groups","todayStart","getFullYear","getMonth","getDate","getTime","yesterdayStart","weekStart","getDay","today","yesterday","week","earlier","timeStr","lastMessageTime","createdAt","ts","groupHistoryByDate","group","groupEl","labelEl","el","convId","idEl","lastMessagePreview","metaEl","actionsEl","exportBtn","deleteBtn","scrollToBottom","scrollTop","scrollHeight","d","getHours","getMinutes","storageKey","saveMessages","slice","updatedAt","JSON","stringify","clearMessages","CODE_BLOCK_PREFIX","INLINE_CODE_PREFIX","renderMarkdown","codeBlocks","processed","_match","lang","idx","escapedCode","trimEnd","langClass","inlineCodes","restorePlaceholders","inList","listType","inBlockquote","paragraphBuffer","i","flushParagraph","closeList","closeBlockquote","headingMatch","level","quoteMatch","inlineFormat","ulMatch","olMatch","test","_m","linkText","replacements","RegExp","currentCategoryId","messagesContainer","inputEl","inputWrap","sendBtn","clearBtn","categorySelect","historyPanel","welcomeEl","newMsgBtn","searchInput","ariaLiveEl","showLoadingFn","hideLoadingFn","isSending","abortController","isNearBottom","historyItems","historySearchText","initChat","cfg","dom","parentElement","showLoading","hideLoading","showCategorySwitch","handleSend","shiftKey","isComposing","updateSendBtnState","autoResizeInput","confirm","display","updateEmptyState","newId","generateNewChatId","handleClear","bindSendEvents","clientHeight","hideNewMsgBtn","bindScrollEvents","toLowerCase","renderFilteredHistory","bindHistorySearch","tree","fetchCategoryTree","addOptions","nodes","indent","node","option","repeat","selected","children","loadCategories","initChatHistory","role","messageType","createTime","renderHistory","loadHistoryFromBackend","cached","raw","parse","loadMessages","smartScrollToBottom","setSendButtonMode","removeAttribute","filter","switchToConversation","open","it","handleFeedback","find","m","newValue","feedback","feedbackType","messageId","headers","submitFeedbackApi","then","hasMessages","userTimestamp","userMsg","produceAIReply","userText","aiTimestamp","shouldUseRag","aiMsgId","aiContent","streaming","Promise","resolve","reject","bubbleEl","wrapperEl","accumulated","streamStarted","chunk","createEmptyAIBubble","appendStreamingCaret","catch","sendStreamMessage","aiMsg","announceMessage","bubbles","ragSources","s","documentId","_b","lastAiMsg","fetchAndRenderSources","errMsg","errorBubble","color","historyPanelEl","contains","isInitialized","launcherEl","windowEl","dragCleanup","teaserEl","teaserTimer","badgeEl","audioCtx","positionTeaser","rect","getBoundingClientRect","left","right","innerWidth","bottom","innerHeight","top","hideTeaser","removeEventListener","onTeaserClick","closeBtn","onTeaserClose","target","onResize","FOCUSABLE","onKeyDown","focusables","from","first","last","activeElement","focus","trapFocus","positionKey","ChatbotSDK","init","rawConfig","parsed","URL","_l","integrateIdStr","resolvedLauncherIcon","resolvedPrimaryColor","_c","showClear","_d","showAdminPanel","_e","quickReplies","Boolean","theme","showTeaser","_f","teaserText","_g","locale","debug","_h","sound","_j","notification","_k","onReady","onMessage","parseConfig","enabled","matched","keys","setLocale","setApiConfig","headerLeft","headerAvatar","headerInfo","titleEl","statusEl","actions","historyBtn","minimizeBtn","chips","reply","chip","backBtn","isHidden","categoryBar","categoryLabel","selectedId","Number","inputArea","loadingEl","createChatWindow","headerEl","onDragEnd","dragging","startX","startY","offsetX","offsetY","onMouseDown","clientX","clientY","onMouseMove","onMouseUp","x","y","maxX","offsetWidth","maxY","offsetHeight","enableDrag","pos","saveWindowPosition","winEl","restoreWindowPosition","firstMessageTime","loadHistoryConversations","aiIndex","findIndex","removed","splice","removedIds","Set","has","retryFromMessage","AudioContext","webkitAudioContext","ctx","state","resume","currentTime","offset","osc","createOscillator","gain","createGain","frequency","setValueAtTime","exponentialRampToValueAtTime","connect","destination","playNotificationSound","Notification","permission","icon","silent","requestPermission","sendDesktopNotification","destroy","oldIntegrateId","clearHistory","click"],"mappings":"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"} \ No newline at end of file diff --git a/client/src/api.ts b/client/src/api.ts index d4538e4..4f69733 100644 --- a/client/src/api.ts +++ b/client/src/api.ts @@ -376,6 +376,39 @@ export async function fetchRagSources(message: string, categoryId?: number): Pro } } +// ==================== P0-002: 消息反馈 ==================== + +/** + * 提交消息反馈(点赞/点踩) + */ +export async function submitFeedbackApi( + messageId: string, + feedbackType: 'THUMBS_UP' | 'THUMBS_DOWN' +): Promise { + if (!currentConfig) return false; + const url = buildUrl('/feedback'); + try { + const response = await safeFetch(url, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + messageId: String(messageId), + conversationId: currentConfig.chatId, + feedbackType, + }), + }); + if (!response.ok) { + logger.error(`反馈提交失败 status=${response.status}`); + return false; + } + const json: ApiResponse = await response.json(); + return json.success || false; + } catch (err) { + logger.error('反馈提交异常', err); + return false; + } +} + // ==================== P2: 会话管理 + chatId 初始化 ==================== /** 会话列表项 */ diff --git a/client/src/chat.ts b/client/src/chat.ts index b432c97..ae247f5 100644 --- a/client/src/chat.ts +++ b/client/src/chat.ts @@ -20,6 +20,7 @@ import { updateChatId, getChatId, saveCachedChatId, + submitFeedbackApi, CskError, } from './api'; import { @@ -342,8 +343,7 @@ function announceMessage(text: string): void { /** * 处理消息反馈:切换 AI 消息的点赞/点踩状态 - * 当前仅前端状态持久化(存入 messages 数组 + localStorage), - * 预留后端对接位:TODO 接口 POST /conversation/message/feedback + * 前端状态持久化(存入 messages 数组 + localStorage)+ 调用后端 API 记录反馈 */ export function handleFeedback(msgId: string, value: 'up' | 'down'): void { if (!messagesContainer) return; @@ -362,7 +362,19 @@ export function handleFeedback(msgId: string, value: 'up' | 'down'): void { // 持久化(localStorage) if (config) saveMessages(config.integrateId, messages); - logger.info(`消息反馈 msgId=${msgId} value=${newValue || 'cleared'}`); + // 调用后端 API 记录反馈 + if (newValue) { + const feedbackType = newValue === 'up' ? 'THUMBS_UP' : 'THUMBS_DOWN'; + submitFeedbackApi(String(msgId), feedbackType).then(success => { + if (success) { + logger.info(`消息反馈已提交 msgId=${msgId} value=${newValue}`); + } else { + logger.warn(`消息反馈提交失败 msgId=${msgId}(本地状态已更新)`); + } + }); + } else { + logger.info(`消息反馈已取消 msgId=${msgId}`); + } } function autoResizeInput(): void { if (!inputEl) return; diff --git a/src/main/java/com/wok/supportbot/advisor/ContentSafetyAdvisor.java b/src/main/java/com/wok/supportbot/advisor/ContentSafetyAdvisor.java new file mode 100644 index 0000000..8201889 --- /dev/null +++ b/src/main/java/com/wok/supportbot/advisor/ContentSafetyAdvisor.java @@ -0,0 +1,228 @@ +package com.wok.supportbot.advisor; + +import com.wok.supportbot.dao.ContentAuditLogMapper; +import com.wok.supportbot.entity.ContentAuditLog; +import com.wok.supportbot.service.ContentSafetyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.ai.chat.client.ChatClientRequest; +import org.springframework.ai.chat.client.ChatClientResponse; +import org.springframework.ai.chat.client.advisor.api.AdvisorChain; +import org.springframework.ai.chat.client.advisor.api.BaseAdvisor; +import org.springframework.ai.chat.messages.AssistantMessage; +import org.springframework.ai.chat.messages.Message; +import org.springframework.ai.chat.messages.UserMessage; +import org.springframework.ai.chat.model.ChatResponse; +import org.springframework.ai.chat.model.Generation; +import org.springframework.ai.chat.prompt.Prompt; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.Ordered; +import org.springframework.stereotype.Component; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * 内容安全过滤 Advisor + *

+ * 在对话链路的最外层拦截,对用户输入和 AI 输出进行敏感词检测与脱敏/拦截处理。 + * 使用 Ordered.HIGHEST_PRECEDENCE 确保最先执行 before、最后执行 after。 + */ +@Slf4j +@Component +public class ContentSafetyAdvisor implements BaseAdvisor { + + /** 安全提示文本 —— 当用户消息被 BLOCK 时替换原始内容 */ + private static final String SAFE_USER_PROMPT = "系统检测到不当内容"; + + /** 安全提示文本 —— 当 AI 输出被拦截时替换原始内容 */ + private static final String SAFE_AI_RESPONSE = "抱歉,该内容无法展示。如有问题请联系管理员。"; + + @Autowired + private ContentSafetyService contentSafetyService; + + @Autowired + private ContentAuditLogMapper contentAuditLogMapper; + + @Override + public String getName() { + return this.getClass().getSimpleName(); + } + + @Override + public int getOrder() { + return Ordered.HIGHEST_PRECEDENCE; + } + + // ==================== before:检查用户输入 ==================== + + @Override + public ChatClientRequest before(ChatClientRequest request, AdvisorChain chain) { + try { + Prompt originalPrompt = request.prompt(); + List messages = new ArrayList<>(originalPrompt.getInstructions()); + + // 提取最后一条用户消息进行检测 + String userText = null; + int lastUserIndex = -1; + for (int i = messages.size() - 1; i >= 0; i--) { + if (messages.get(i) instanceof UserMessage) { + userText = messages.get(i).getText(); + lastUserIndex = i; + break; + } + } + + if (userText == null || userText.isBlank()) { + return request; + } + + // 执行 DFA 检测 + List hits = contentSafetyService.detect(userText); + if (hits.isEmpty()) { + return request; + } + + boolean hasBlocking = contentSafetyService.hasBlockingHit(hits); + String sessionId = extractSessionId(request); + + if (hasBlocking) { + // BLOCK 级别:替换用户消息为安全提示,记录审计日志 + log.warn("内容安全拦截(BLOCK)- 会话:{},命中词:{}", sessionId, + hits.stream().map(ContentSafetyService.HitResult::getWord).collect(Collectors.joining(", "))); + + messages.set(lastUserIndex, new UserMessage(SAFE_USER_PROMPT)); + Prompt newPrompt = new Prompt(messages, originalPrompt.getOptions()); + + saveAuditLog(sessionId, "INPUT", truncate(userText), hits, "BLOCK"); + + return ChatClientRequest.builder() + .prompt(newPrompt) + .context(request.context()) + .build(); + } else { + // WARN 级别:脱敏后替换用户消息,记录审计日志 + String maskedText = contentSafetyService.mask(userText); + log.info("内容安全脱敏(MASK)- 会话:{},命中词:{}", sessionId, + hits.stream().map(ContentSafetyService.HitResult::getWord).collect(Collectors.joining(", "))); + + messages.set(lastUserIndex, new UserMessage(maskedText)); + Prompt newPrompt = new Prompt(messages, originalPrompt.getOptions()); + + saveAuditLog(sessionId, "INPUT", truncate(userText), hits, "MASK"); + + return ChatClientRequest.builder() + .prompt(newPrompt) + .context(request.context()) + .build(); + } + } catch (Exception e) { + log.error("内容安全 before 检查异常,放行请求", e); + return request; + } + } + + // ==================== after:检查 AI 输出 ==================== + + @Override + public ChatClientResponse after(ChatClientResponse response, AdvisorChain chain) { + try { + ChatResponse chatResponse = response.chatResponse(); + if (chatResponse == null || chatResponse.getResult() == null) { + return response; + } + + String aiText = chatResponse.getResult().getOutput().getText(); + if (aiText == null || aiText.isBlank()) { + return response; + } + + // 执行 DFA 检测 + List hits = contentSafetyService.detect(aiText); + if (hits.isEmpty()) { + return response; + } + + boolean hasBlocking = contentSafetyService.hasBlockingHit(hits); + String actionTaken = hasBlocking ? "BLOCK" : "MASK"; + + log.warn("AI 输出内容安全拦截({})- 命中词:{}", actionTaken, + hits.stream().map(ContentSafetyService.HitResult::getWord).collect(Collectors.joining(", "))); + + // 构建替换后的 AI 响应 + String safeText = hasBlocking ? SAFE_AI_RESPONSE : contentSafetyService.mask(aiText); + AssistantMessage safeAssistantMessage = new AssistantMessage(safeText); + Generation safeGeneration = new Generation(safeAssistantMessage, chatResponse.getResult().getMetadata()); + ChatResponse safeChatResponse = new ChatResponse( + Collections.singletonList(safeGeneration), + chatResponse.getMetadata() + ); + + // 保存审计日志(此处 sessionId 可能为空,因为 after 阶段不一定能获取到) + saveAuditLog("", "OUTPUT", truncate(aiText), hits, actionTaken); + + return ChatClientResponse.builder() + .chatResponse(safeChatResponse) + .context(response.context()) + .build(); + } catch (Exception e) { + log.error("内容安全 after 检查异常,放行响应", e); + return response; + } + } + + // ==================== 辅助方法 ==================== + + /** + * 从请求上下文中提取会话ID + */ + private String extractSessionId(ChatClientRequest request) { + Map context = request.context(); + if (context != null && context.containsKey("chatMemoryConversationId")) { + return String.valueOf(context.get("chatMemoryConversationId")); + } + return ""; + } + + /** + * 截断文本至指定长度 + */ + private String truncate(String text) { + if (text == null) { + return ""; + } + return text.length() > 50 ? text.substring(0, 50) + "..." : text; + } + + /** + * 保存审计日志 + */ + private void saveAuditLog(String sessionId, String direction, String originalText, + List hits, String actionTaken) { + try { + // 将命中结果转为 Map 列表存入 JSONB + List> hitWordsList = hits.stream().map(hit -> { + Map m = new LinkedHashMap<>(); + m.put("word", hit.getWord()); + m.put("category", hit.getCategory()); + m.put("level", hit.getLevel()); + return m; + }).collect(Collectors.toList()); + + Map hitWordsMap = new LinkedHashMap<>(); + hitWordsMap.put("hits", hitWordsList); + + ContentAuditLog auditLog = ContentAuditLog.builder() + .sessionId(sessionId) + .direction(direction) + .originalText(originalText) + .hitWords(hitWordsMap) + .actionTaken(actionTaken) + .createTime(new Date()) + .build(); + + contentAuditLogMapper.insert(auditLog); + } catch (Exception e) { + log.error("保存审计日志失败", e); + } + } +} diff --git a/src/main/java/com/wok/supportbot/app/AssistantApp.java b/src/main/java/com/wok/supportbot/app/AssistantApp.java index 76031c3..0b2e505 100644 --- a/src/main/java/com/wok/supportbot/app/AssistantApp.java +++ b/src/main/java/com/wok/supportbot/app/AssistantApp.java @@ -1,5 +1,6 @@ package com.wok.supportbot.app; +import com.wok.supportbot.advisor.ContentSafetyAdvisor; import com.wok.supportbot.advisor.MyLoggerAdvisor; import com.wok.supportbot.advisor.ReReadingAdvisor; import com.wok.supportbot.chatmemory.DatabaseChatMemory; @@ -56,6 +57,9 @@ public class AssistantApp { @Resource private VectorStore pgVectorVectorStore; + @Resource + private ContentSafetyAdvisor contentSafetyAdvisor; + private final ChatModelFactory chatModelFactory; private final DatabaseChatMemory chatMemory; @@ -81,6 +85,7 @@ public class AssistantApp { return ChatClient.builder(chatModel) .defaultSystem(SYSTEM_PROMPT) .defaultAdvisors( + contentSafetyAdvisor, MessageChatMemoryAdvisor.builder(chatMemory).build(), new MyLoggerAdvisor() ) diff --git a/src/main/java/com/wok/supportbot/config/DatabaseInitConfig.java b/src/main/java/com/wok/supportbot/config/DatabaseInitConfig.java index f734574..89bf3ae 100644 --- a/src/main/java/com/wok/supportbot/config/DatabaseInitConfig.java +++ b/src/main/java/com/wok/supportbot/config/DatabaseInitConfig.java @@ -3,6 +3,7 @@ package com.wok.supportbot.config; import jakarta.annotation.PostConstruct; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Component; @@ -17,6 +18,9 @@ public class DatabaseInitConfig { @Autowired private JdbcTemplate jdbcTemplate; + @Value("${knowledge.vector.dimension:1024}") + private int vectorDimension; + @PostConstruct public void init() { try { @@ -75,6 +79,40 @@ public class DatabaseInitConfig { syncDefaultCustomerServiceRoles(); syncDefaultCustomerAccounts(); + // ==================== P0 阶段新增表 ==================== + + // P0-004: 内容安全过滤 + if (!checkTableExists("sensitive_word")) { + log.info("创建敏感词表 sensitive_word"); + createSensitiveWordTable(); + } + if (!checkTableExists("content_audit_log")) { + log.info("创建内容审计日志表 content_audit_log"); + createContentAuditLogTable(); + } + + // P0-002: 用户反馈 + if (!checkTableExists("message_feedback")) { + log.info("创建消息反馈表 message_feedback"); + createMessageFeedbackTable(); + } + + // P0-003: FAQ 知识库 + if (!checkTableExists("knowledge_faq")) { + log.info("创建 FAQ 知识库表 knowledge_faq"); + createKnowledgeFaqTable(); + } + if (!checkTableExists("faq_embedding")) { + log.info("创建 FAQ 向量索引表 faq_embedding"); + createFaqEmbeddingTable(); + } + + // P0-001: 混合检索 - 为 vector_store 添加全文检索列 + initVectorStoreFullTextSearch(); + + // 为所有表添加注释(幂等,可重复执行) + applyTableComments(); + log.info("数据库初始化完成"); } catch (Exception e) { log.error("数据库初始化失败", e); @@ -348,4 +386,317 @@ public class DatabaseInitConfig { } } + // ==================== P0-004: 内容安全过滤 ==================== + + private void createSensitiveWordTable() { + String sql = """ + CREATE TABLE IF NOT EXISTS sensitive_word ( + id BIGSERIAL PRIMARY KEY, + word VARCHAR(256) NOT NULL, + category VARCHAR(64) NOT NULL DEFAULT 'custom', + level INTEGER NOT NULL DEFAULT 1, + is_active BOOLEAN NOT NULL DEFAULT TRUE, + remark VARCHAR(512), + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL, + update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL, + is_delete BOOLEAN DEFAULT FALSE NOT NULL + ) + """; + jdbcTemplate.execute(sql); + jdbcTemplate.execute("CREATE UNIQUE INDEX IF NOT EXISTS uk_sensitive_word_word_category ON sensitive_word (word, category) WHERE is_delete = false"); + jdbcTemplate.execute("CREATE INDEX IF NOT EXISTS idx_sensitive_word_active ON sensitive_word (is_active) WHERE is_delete = false"); + } + + private void createContentAuditLogTable() { + String sql = """ + CREATE TABLE IF NOT EXISTS content_audit_log ( + id BIGSERIAL PRIMARY KEY, + session_id VARCHAR(64), + direction VARCHAR(16) NOT NULL, + original_text TEXT NOT NULL, + hit_words JSONB DEFAULT '[]' NOT NULL, + action_taken VARCHAR(32) NOT NULL, + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL + ) + """; + jdbcTemplate.execute(sql); + jdbcTemplate.execute("CREATE INDEX IF NOT EXISTS idx_audit_log_created ON content_audit_log (create_time DESC)"); + jdbcTemplate.execute("CREATE INDEX IF NOT EXISTS idx_audit_log_session ON content_audit_log (session_id)"); + } + + // ==================== P0-002: 用户反馈 ==================== + + private void createMessageFeedbackTable() { + String sql = """ + CREATE TABLE IF NOT EXISTS message_feedback ( + id BIGSERIAL PRIMARY KEY, + message_id VARCHAR(128) NOT NULL, + conversation_id VARCHAR(64) NOT NULL, + feedback_type VARCHAR(16) NOT NULL, + reason_category VARCHAR(64), + reason_comment TEXT, + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL, + update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL, + is_delete BOOLEAN DEFAULT FALSE NOT NULL + ) + """; + jdbcTemplate.execute(sql); + jdbcTemplate.execute("CREATE UNIQUE INDEX IF NOT EXISTS uk_message_feedback_message ON message_feedback (message_id) WHERE is_delete = false"); + jdbcTemplate.execute("CREATE INDEX IF NOT EXISTS idx_feedback_conversation ON message_feedback (conversation_id)"); + jdbcTemplate.execute("CREATE INDEX IF NOT EXISTS idx_feedback_type ON message_feedback (feedback_type) WHERE is_delete = false"); + jdbcTemplate.execute("CREATE INDEX IF NOT EXISTS idx_feedback_created ON message_feedback (create_time DESC)"); + } + + // ==================== P0-003: FAQ 知识库 ==================== + + private void createKnowledgeFaqTable() { + String sql = """ + CREATE TABLE IF NOT EXISTS knowledge_faq ( + id BIGSERIAL PRIMARY KEY, + question TEXT NOT NULL, + answer TEXT NOT NULL, + similar_questions TEXT DEFAULT '[]' NOT NULL, + category VARCHAR(128), + status VARCHAR(20) NOT NULL DEFAULT 'ENABLED', + priority INTEGER NOT NULL DEFAULT 0, + hit_count BIGINT NOT NULL DEFAULT 0, + source VARCHAR(64) DEFAULT 'manual', + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL, + update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL, + is_delete BOOLEAN DEFAULT FALSE NOT NULL + ) + """; + jdbcTemplate.execute(sql); + jdbcTemplate.execute("CREATE INDEX IF NOT EXISTS idx_faq_status ON knowledge_faq (status) WHERE is_delete = false"); + jdbcTemplate.execute("CREATE INDEX IF NOT EXISTS idx_faq_category ON knowledge_faq (category)"); + jdbcTemplate.execute("CREATE INDEX IF NOT EXISTS idx_faq_priority ON knowledge_faq (priority DESC)"); + } + + private void createFaqEmbeddingTable() { + String sql = """ + CREATE TABLE IF NOT EXISTS faq_embedding ( + id BIGSERIAL PRIMARY KEY, + faq_id BIGINT NOT NULL, + embedding vector(%d) NOT NULL, + model_name VARCHAR(64) NOT NULL, + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL + ) + """.formatted(vectorDimension); + jdbcTemplate.execute(sql); + jdbcTemplate.execute("CREATE INDEX IF NOT EXISTS idx_faq_emb_faq_id ON faq_embedding (faq_id)"); + } + + // ==================== P0-001: 混合检索 - 全文检索 ==================== + + /** + * 为 vector_store 表添加全文检索支持(tsvector 列 + GIN 索引 + 触发器) + * 幂等操作:已存在则跳过 + */ + private void initVectorStoreFullTextSearch() { + try { + // 检查 vector_store 表是否存在 + if (!checkTableExists("vector_store")) { + log.debug("vector_store 表尚未创建,跳过全文检索初始化"); + return; + } + + // 检查 content_tsvector 列是否已存在 + String checkSql = "SELECT COUNT(*) FROM information_schema.columns WHERE table_name = 'vector_store' AND column_name = 'content_tsvector'"; + Integer count = jdbcTemplate.queryForObject(checkSql, Integer.class); + if (count != null && count > 0) { + return; // 已初始化 + } + + log.info("为 vector_store 添加全文检索支持"); + + // 添加 tsvector 列 + jdbcTemplate.execute("ALTER TABLE vector_store ADD COLUMN content_tsvector tsvector"); + + // 填充已有数据 + jdbcTemplate.execute("UPDATE vector_store SET content_tsvector = to_tsvector('simple', coalesce(content, '')) WHERE content_tsvector IS NULL"); + + // GIN 索引 + jdbcTemplate.execute("CREATE INDEX IF NOT EXISTS idx_vector_store_tsvector ON vector_store USING gin(content_tsvector)"); + + // 触发器函数 + jdbcTemplate.execute(""" + CREATE OR REPLACE FUNCTION update_content_tsvector() RETURNS trigger AS $$ + BEGIN + NEW.content_tsvector := to_tsvector('simple', coalesce(NEW.content, '')); + RETURN NEW; + END; + $$ LANGUAGE plpgsql + """); + + // 绑定触发器 + jdbcTemplate.execute("DROP TRIGGER IF EXISTS trg_update_content_tsvector ON vector_store"); + jdbcTemplate.execute(""" + CREATE TRIGGER trg_update_content_tsvector + BEFORE INSERT OR UPDATE ON vector_store + FOR EACH ROW EXECUTE FUNCTION update_content_tsvector() + """); + + log.info("vector_store 全文检索初始化完成"); + } catch (Exception e) { + log.warn("初始化 vector_store 全文检索时出错(可稍后手动执行)", e); + } + } + + /** + * 为所有自动创建的表添加注释(COMMENT ON)。 + * 所有语句均为幂等操作,可安全重复执行。 + */ + private void applyTableComments() { + try { + // ===== chat_message ===== + executeComment("TABLE chat_message", "聊天消息表(存储用户与 AI 助手的对话历史)"); + executeComment("COLUMN chat_message.id", "主键(雪花算法生成)"); + executeComment("COLUMN chat_message.conversation_id", "会话 ID(标识同一次对话)"); + executeComment("COLUMN chat_message.message_type", "消息类型: USER(用户消息) / ASSISTANT(AI回复) / SYSTEM(系统消息)"); + executeComment("COLUMN chat_message.content", "消息内容(实际对话文本)"); + executeComment("COLUMN chat_message.metadata", "元数据(JSON 格式,存储额外信息)"); + executeComment("COLUMN chat_message.create_time", "创建时间"); + executeComment("COLUMN chat_message.update_time", "更新时间"); + executeComment("COLUMN chat_message.is_delete", "逻辑删除: FALSE=正常 TRUE=已删除"); + + // ===== knowledge_category ===== + executeComment("TABLE knowledge_category", "知识库分类表(支持树形结构)"); + executeComment("COLUMN knowledge_category.id", "主键(雪花算法生成)"); + executeComment("COLUMN knowledge_category.name", "分类名称"); + executeComment("COLUMN knowledge_category.description", "分类描述"); + executeComment("COLUMN knowledge_category.parent_id", "父分类 ID(0 表示顶级分类)"); + executeComment("COLUMN knowledge_category.sort_order", "排序权重(数值越大越靠前)"); + executeComment("COLUMN knowledge_category.document_count", "关联文档数量(冗余字段,定期更新)"); + executeComment("COLUMN knowledge_category.create_time", "创建时间"); + executeComment("COLUMN knowledge_category.is_delete", "逻辑删除: FALSE=正常 TRUE=已删除"); + + // ===== knowledge_document ===== + executeComment("TABLE knowledge_document", "知识文档表(记录上传的文档元信息)"); + executeComment("COLUMN knowledge_document.id", "主键(雪花算法生成)"); + executeComment("COLUMN knowledge_document.title", "文档标题"); + executeComment("COLUMN knowledge_document.source_name", "原始文件名"); + executeComment("COLUMN knowledge_document.file_type", "文件类型: pdf / md / json / txt / word / excel 等"); + executeComment("COLUMN knowledge_document.file_size", "文件大小(字节)"); + executeComment("COLUMN knowledge_document.content", "原文内容(截断预览)"); + executeComment("COLUMN knowledge_document.category_id", "所属分类 ID(0 表示未分类)"); + executeComment("COLUMN knowledge_document.tags", "标签(JSON 格式)"); + executeComment("COLUMN knowledge_document.chunk_count", "分块数量"); + executeComment("COLUMN knowledge_document.status", "处理状态: PROCESSING / READY / FAILED"); + executeComment("COLUMN knowledge_document.error_message", "处理失败时的错误信息"); + executeComment("COLUMN knowledge_document.content_hash", "内容 SHA-256 哈希值(用于文档去重)"); + executeComment("COLUMN knowledge_document.create_time", "创建时间"); + executeComment("COLUMN knowledge_document.update_time", "更新时间"); + executeComment("COLUMN knowledge_document.is_delete", "逻辑删除: FALSE=正常 TRUE=已删除"); + + // ===== customer_service_role ===== + executeComment("TABLE customer_service_role", "客服角色表(定义客服角色的身份与系统提示词)"); + executeComment("COLUMN customer_service_role.id", "主键"); + executeComment("COLUMN customer_service_role.role_key", "角色标识符(唯一)"); + executeComment("COLUMN customer_service_role.name", "角色名称"); + executeComment("COLUMN customer_service_role.description", "角色描述"); + executeComment("COLUMN customer_service_role.prompt", "系统提示词(角色人设与行为规范)"); + executeComment("COLUMN customer_service_role.sort_order", "排序权重"); + executeComment("COLUMN customer_service_role.enabled", "是否启用"); + executeComment("COLUMN customer_service_role.create_time", "创建时间"); + executeComment("COLUMN customer_service_role.update_time", "更新时间"); + executeComment("COLUMN customer_service_role.is_delete", "逻辑删除: FALSE=正常 TRUE=已删除"); + + // ===== customer_service_role_category ===== + executeComment("TABLE customer_service_role_category", "客服角色知识库关联表(角色与知识库分类的多对多关系)"); + executeComment("COLUMN customer_service_role_category.id", "主键"); + executeComment("COLUMN customer_service_role_category.role_id", "角色 ID(关联 customer_service_role.id)"); + executeComment("COLUMN customer_service_role_category.category_id", "分类 ID(关联 knowledge_category.id)"); + executeComment("COLUMN customer_service_role_category.create_time", "创建时间"); + executeComment("COLUMN customer_service_role_category.is_delete", "逻辑删除: FALSE=正常 TRUE=已删除"); + + // ===== customer_account ===== + executeComment("TABLE customer_account", "客服账号表(对外暴露的客服入口账号)"); + executeComment("COLUMN customer_account.id", "主键"); + executeComment("COLUMN customer_account.account_key", "账号标识符(唯一)"); + executeComment("COLUMN customer_account.name", "账号名称"); + executeComment("COLUMN customer_account.description", "账号描述"); + executeComment("COLUMN customer_account.role_id", "关联角色 ID(关联 customer_service_role.id)"); + executeComment("COLUMN customer_account.enabled", "是否启用"); + executeComment("COLUMN customer_account.create_time", "创建时间"); + executeComment("COLUMN customer_account.update_time", "更新时间"); + executeComment("COLUMN customer_account.is_delete", "逻辑删除: FALSE=正常 TRUE=已删除"); + + // ===== conversation_session ===== + executeComment("TABLE conversation_session", "会话归属表(记录每个会话归属的账号和角色)"); + executeComment("COLUMN conversation_session.conversation_id", "会话 ID(主键)"); + executeComment("COLUMN conversation_session.account_id", "归属账号 ID(关联 customer_account.id)"); + executeComment("COLUMN conversation_session.role_id", "归属角色 ID(关联 customer_service_role.id)"); + executeComment("COLUMN conversation_session.create_time", "创建时间"); + executeComment("COLUMN conversation_session.update_time", "更新时间"); + + // ===== sensitive_word ===== + executeComment("TABLE sensitive_word", "敏感词表(DFA 引擎驱动的内容安全过滤)"); + executeComment("COLUMN sensitive_word.id", "主键(雪花算法生成)"); + executeComment("COLUMN sensitive_word.word", "敏感词内容"); + executeComment("COLUMN sensitive_word.category", "分类: politics / porn / abuse / custom,默认 custom"); + executeComment("COLUMN sensitive_word.level", "级别: 1=脱敏(MASK) / 2=拦截(BLOCK)"); + executeComment("COLUMN sensitive_word.is_active", "是否启用"); + executeComment("COLUMN sensitive_word.remark", "备注说明"); + executeComment("COLUMN sensitive_word.create_time", "创建时间"); + executeComment("COLUMN sensitive_word.update_time", "更新时间"); + executeComment("COLUMN sensitive_word.is_delete", "逻辑删除: FALSE=正常 TRUE=已删除"); + + // ===== content_audit_log ===== + executeComment("TABLE content_audit_log", "内容审计日志表(记录敏感词命中事件,只追加不删除)"); + executeComment("COLUMN content_audit_log.id", "主键(雪花算法生成)"); + executeComment("COLUMN content_audit_log.session_id", "会话 ID(关联 conversation_session)"); + executeComment("COLUMN content_audit_log.direction", "检测方向: INPUT(用户输入) / OUTPUT(AI 输出)"); + executeComment("COLUMN content_audit_log.original_text", "原始违规内容(截断至前 50 字)"); + executeComment("COLUMN content_audit_log.hit_words", "命中词列表(JSON 数组)"); + executeComment("COLUMN content_audit_log.action_taken", "采取的动作: PASS(放行) / MASK(脱敏) / BLOCK(拦截)"); + executeComment("COLUMN content_audit_log.create_time", "创建时间(事件发生时间)"); + + // ===== message_feedback ===== + executeComment("TABLE message_feedback", "消息反馈表(用户对 AI 回复的点赞/点踩反馈)"); + executeComment("COLUMN message_feedback.id", "主键(雪花算法生成)"); + executeComment("COLUMN message_feedback.message_id", "AI 消息 ID(唯一索引,重复提交覆盖)"); + executeComment("COLUMN message_feedback.conversation_id", "会话 ID"); + executeComment("COLUMN message_feedback.feedback_type", "反馈类型: THUMBS_UP(有帮助) / THUMBS_DOWN(没帮助)"); + executeComment("COLUMN message_feedback.reason_category", "点踩原因分类: inaccurate / irrelevant / incomplete / other"); + executeComment("COLUMN message_feedback.reason_comment", "自由文本补充说明"); + executeComment("COLUMN message_feedback.create_time", "创建时间"); + executeComment("COLUMN message_feedback.update_time", "更新时间(重复提交时覆盖)"); + executeComment("COLUMN message_feedback.is_delete", "逻辑删除: FALSE=正常 TRUE=已删除"); + + // ===== knowledge_faq ===== + executeComment("TABLE knowledge_faq", "FAQ 知识库表(用于意图路由后的精准问答匹配)"); + executeComment("COLUMN knowledge_faq.id", "主键(雪花算法生成)"); + executeComment("COLUMN knowledge_faq.question", "标准问题"); + executeComment("COLUMN knowledge_faq.answer", "标准答案"); + executeComment("COLUMN knowledge_faq.similar_questions", "相似问题列表(JSON 字符串数组)"); + executeComment("COLUMN knowledge_faq.category", "FAQ 分类"); + executeComment("COLUMN knowledge_faq.status", "状态: ENABLED(启用) / DISABLED(禁用)"); + executeComment("COLUMN knowledge_faq.priority", "优先级(数值越大越优先匹配)"); + executeComment("COLUMN knowledge_faq.hit_count", "命中次数统计"); + executeComment("COLUMN knowledge_faq.source", "来源: manual(手动录入) / import(批量导入)"); + executeComment("COLUMN knowledge_faq.create_time", "创建时间"); + executeComment("COLUMN knowledge_faq.update_time", "更新时间"); + executeComment("COLUMN knowledge_faq.is_delete", "逻辑删除: FALSE=正常 TRUE=已删除"); + + // ===== faq_embedding ===== + executeComment("TABLE faq_embedding", "FAQ 向量索引表(存储 FAQ 语义向量,用于相似问题匹配)"); + executeComment("COLUMN faq_embedding.id", "主键"); + executeComment("COLUMN faq_embedding.faq_id", "关联 FAQ ID(对应 knowledge_faq.id)"); + executeComment("COLUMN faq_embedding.embedding", "向量嵌入(维度由 knowledge.vector.dimension 配置)"); + executeComment("COLUMN faq_embedding.model_name", "使用的 Embedding 模型名称"); + executeComment("COLUMN faq_embedding.create_time", "创建时间"); + + log.info("数据库表注释已应用"); + } catch (Exception e) { + log.warn("应用数据库表注释时出错", e); + } + } + + /** + * 执行单条 COMMENT ON 语句 + */ + private void executeComment(String target, String comment) { + jdbcTemplate.execute(String.format("COMMENT ON %s IS '%s'", target, comment.replace("'", "''"))); + } + } diff --git a/src/main/java/com/wok/supportbot/controller/AiController.java b/src/main/java/com/wok/supportbot/controller/AiController.java index f8395ef..539ba90 100644 --- a/src/main/java/com/wok/supportbot/controller/AiController.java +++ b/src/main/java/com/wok/supportbot/controller/AiController.java @@ -8,6 +8,7 @@ import com.wok.supportbot.service.CustomerAccountService.AccountScope; import com.wok.supportbot.service.CustomerServiceRoleService; import com.wok.supportbot.service.CustomerServiceRoleService.RoleScope; import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; import org.springframework.ai.document.Document; import org.springframework.http.MediaType; import org.springframework.http.codec.ServerSentEvent; @@ -29,6 +30,7 @@ import java.util.Map; @RestController +@Slf4j @RequestMapping("/ai") public class AiController { @@ -146,9 +148,14 @@ public class AiController { if (isKbDenied(scope) || shouldBypassKnowledgeRetrieval(message)) { return assistantApp.doChat(message, chatId, sys); } - return assistantApp.doChatWithRagStrategy( - message, chatId, normalizeStrategy(rewriteStrategy), - resolveCategoryIds(scope, categoryId, categoryIds), sys); + try { + return assistantApp.doChatWithRagStrategy( + message, chatId, normalizeStrategy(rewriteStrategy), + resolveCategoryIds(scope, categoryId, categoryIds), sys); + } catch (Exception e) { + log.error("RAG 对话失败 [strategy={}, chatId={}]: {}", rewriteStrategy, chatId, e.getMessage(), e); + return "抱歉,知识库检索出现异常,请稍后重试。"; + } } /** @@ -190,22 +197,27 @@ public class AiController { if (message == null || message.isBlank() || isKbDenied(scope) || shouldBypassKnowledgeRetrieval(message)) { return Map.of("success", true, "data", List.of()); } - List cats = resolveCategoryIds(scope, categoryId, categoryIds); - List docs = assistantApp.retrieveRagSources(message, chatId, normalizeStrategy(rewriteStrategy), cats); - List> out = new ArrayList<>(); - for (Document doc : docs) { - Map meta = doc.getMetadata(); - Map item = new LinkedHashMap<>(); - item.put("documentId", meta.get("documentId")); - item.put("title", meta.get("title")); - item.put("sourceName", meta.get("sourceName")); - item.put("chunkIndex", meta.get("chunkIndex")); - item.put("score", meta.get("distance")); - String text = doc.getText(); - item.put("snippet", text != null && text.length() > 160 ? text.substring(0, 160) + "…" : text); - out.add(item); + try { + List cats = resolveCategoryIds(scope, categoryId, categoryIds); + List docs = assistantApp.retrieveRagSources(message, chatId, normalizeStrategy(rewriteStrategy), cats); + List> out = new ArrayList<>(); + for (Document doc : docs) { + Map meta = doc.getMetadata(); + Map item = new LinkedHashMap<>(); + item.put("documentId", meta.get("documentId")); + item.put("title", meta.get("title")); + item.put("sourceName", meta.get("sourceName")); + item.put("chunkIndex", meta.get("chunkIndex")); + item.put("score", meta.get("distance")); + String text = doc.getText(); + item.put("snippet", text != null && text.length() > 160 ? text.substring(0, 160) + "…" : text); + out.add(item); + } + return Map.of("success", true, "data", out); + } catch (Exception e) { + log.error("获取 RAG 引用来源失败 [strategy={}]: {}", rewriteStrategy, e.getMessage(), e); + return Map.of("success", true, "data", List.of()); } - return Map.of("success", true, "data", out); } /** diff --git a/src/main/java/com/wok/supportbot/controller/DocumentController.java b/src/main/java/com/wok/supportbot/controller/DocumentController.java index aa8e712..d8a8da9 100644 --- a/src/main/java/com/wok/supportbot/controller/DocumentController.java +++ b/src/main/java/com/wok/supportbot/controller/DocumentController.java @@ -468,8 +468,14 @@ public class DocumentController { if (categoryIds.isEmpty() && categoryId != null) { categoryIds = List.of(categoryId); } + String searchMode = (String) body.get("searchMode"); - List results = documentService.searchDocuments(query, topK, similarityThreshold, categoryIds); + List results; + if (searchMode != null && !searchMode.isEmpty()) { + results = documentService.searchDocuments(query, topK, similarityThreshold, categoryIds, searchMode); + } else { + results = documentService.searchDocuments(query, topK, similarityThreshold, categoryIds); + } return ResponseEntity.ok(Map.of( "success", true, "data", results, diff --git a/src/main/java/com/wok/supportbot/controller/FaqController.java b/src/main/java/com/wok/supportbot/controller/FaqController.java new file mode 100644 index 0000000..c8a6a91 --- /dev/null +++ b/src/main/java/com/wok/supportbot/controller/FaqController.java @@ -0,0 +1,277 @@ +package com.wok.supportbot.controller; + +import com.wok.supportbot.entity.KnowledgeFaq; +import com.wok.supportbot.service.FaqService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Map; + +/** + * FAQ 知识库管理控制器 + * 提供 FAQ 的 CRUD、批量导入/导出、匹配统计等功能 + */ +@RestController +@RequestMapping("/faq") +@Slf4j +public class FaqController { + + @Autowired + private FaqService faqService; + + // ==================== 分页列表 ==================== + + /** + * 分页查询 FAQ 列表 + */ + @GetMapping("/list") + public ResponseEntity> list( + @RequestParam(defaultValue = "1") int page, + @RequestParam(defaultValue = "20") int size, + @RequestParam(required = false) String keyword, + @RequestParam(required = false) String category, + @RequestParam(required = false) String status) { + try { + Map data = faqService.list(page, size, keyword, category, status); + return ResponseEntity.ok(Map.of( + "success", true, + "message", "查询成功", + "data", data + )); + } catch (Exception e) { + log.error("FAQ 列表查询失败", e); + return ResponseEntity.status(500).body(Map.of( + "success", false, + "message", "查询失败:" + e.getMessage() + )); + } + } + + // ==================== 新增 ==================== + + /** + * 新增 FAQ + */ + @PostMapping + public ResponseEntity> create(@RequestBody KnowledgeFaq faq) { + try { + if (faq.getQuestion() == null || faq.getQuestion().isBlank()) { + return ResponseEntity.status(400).body(Map.of( + "success", false, + "message", "问题内容不能为空" + )); + } + if (faq.getAnswer() == null || faq.getAnswer().isBlank()) { + return ResponseEntity.status(400).body(Map.of( + "success", false, + "message", "答案内容不能为空" + )); + } + + KnowledgeFaq created = faqService.create(faq); + return ResponseEntity.ok(Map.of( + "success", true, + "message", "创建成功", + "data", created + )); + } catch (Exception e) { + log.error("FAQ 创建失败", e); + return ResponseEntity.status(500).body(Map.of( + "success", false, + "message", "创建失败:" + e.getMessage() + )); + } + } + + // ==================== 修改 ==================== + + /** + * 修改 FAQ + */ + @PutMapping("/{id}") + public ResponseEntity> update(@PathVariable Long id, @RequestBody KnowledgeFaq faq) { + try { + KnowledgeFaq updated = faqService.update(id, faq); + return ResponseEntity.ok(Map.of( + "success", true, + "message", "更新成功", + "data", updated + )); + } catch (IllegalArgumentException e) { + return ResponseEntity.status(400).body(Map.of( + "success", false, + "message", e.getMessage() + )); + } catch (Exception e) { + log.error("FAQ 更新失败: id={}", id, e); + return ResponseEntity.status(500).body(Map.of( + "success", false, + "message", "更新失败:" + e.getMessage() + )); + } + } + + // ==================== 删除 ==================== + + /** + * 删除 FAQ(逻辑删除) + */ + @DeleteMapping("/{id}") + public ResponseEntity> delete(@PathVariable Long id) { + try { + faqService.delete(id); + return ResponseEntity.ok(Map.of( + "success", true, + "message", "删除成功" + )); + } catch (IllegalArgumentException e) { + return ResponseEntity.status(400).body(Map.of( + "success", false, + "message", e.getMessage() + )); + } catch (Exception e) { + log.error("FAQ 删除失败: id={}", id, e); + return ResponseEntity.status(500).body(Map.of( + "success", false, + "message", "删除失败:" + e.getMessage() + )); + } + } + + // ==================== 启用/禁用 ==================== + + /** + * 切换 FAQ 启用/禁用状态 + */ + @PutMapping("/{id}/toggle") + public ResponseEntity> toggleStatus( + @PathVariable Long id, + @RequestParam String status) { + try { + faqService.toggleStatus(id, status); + return ResponseEntity.ok(Map.of( + "success", true, + "message", "状态切换成功" + )); + } catch (IllegalArgumentException e) { + return ResponseEntity.status(400).body(Map.of( + "success", false, + "message", e.getMessage() + )); + } catch (Exception e) { + log.error("FAQ 状态切换失败: id={}", id, e); + return ResponseEntity.status(500).body(Map.of( + "success", false, + "message", "状态切换失败:" + e.getMessage() + )); + } + } + + // ==================== 批量导入 ==================== + + /** + * 批量导入 FAQ + * 请求体格式: {"faqs": [{"question":"...", "answer":"...", "similarQuestions":"[...]", "category":"...", "priority":0}]} + */ + @PostMapping("/batch-import") + public ResponseEntity> batchImport(@RequestBody Map> body) { + try { + List faqs = body.get("faqs"); + if (faqs == null || faqs.isEmpty()) { + return ResponseEntity.status(400).body(Map.of( + "success", false, + "message", "导入数据不能为空" + )); + } + + int count = faqService.batchImport(faqs); + return ResponseEntity.ok(Map.of( + "success", true, + "message", "批量导入成功,共导入 " + count + " 条", + "data", Map.of("importedCount", count) + )); + } catch (Exception e) { + log.error("FAQ 批量导入失败", e); + return ResponseEntity.status(500).body(Map.of( + "success", false, + "message", "批量导入失败:" + e.getMessage() + )); + } + } + + // ==================== 导出 ==================== + + /** + * 导出所有启用的 FAQ(返回 JSON 列表,后续可扩展为 Excel) + */ + @GetMapping("/export") + public ResponseEntity> exportAll() { + try { + List faqs = faqService.exportAll(); + return ResponseEntity.ok(Map.of( + "success", true, + "message", "导出成功", + "data", faqs + )); + } catch (Exception e) { + log.error("FAQ 导出失败", e); + return ResponseEntity.status(500).body(Map.of( + "success", false, + "message", "导出失败:" + e.getMessage() + )); + } + } + + // ==================== 统计 ==================== + + /** + * 获取 FAQ 匹配统计信息 + */ + @GetMapping("/stats") + public ResponseEntity> getStats() { + try { + Map stats = faqService.getStats(); + return ResponseEntity.ok(Map.of( + "success", true, + "message", "查询成功", + "data", stats + )); + } catch (Exception e) { + log.error("FAQ 统计查询失败", e); + return ResponseEntity.status(500).body(Map.of( + "success", false, + "message", "统计查询失败:" + e.getMessage() + )); + } + } + + // ==================== 手动重算向量 ==================== + + /** + * 手动重新计算某条 FAQ 的向量嵌入 + */ + @PostMapping("/{id}/recompute-embedding") + public ResponseEntity> recomputeEmbedding(@PathVariable Long id) { + try { + faqService.recomputeEmbedding(id); + return ResponseEntity.ok(Map.of( + "success", true, + "message", "向量重新计算完成" + )); + } catch (IllegalArgumentException e) { + return ResponseEntity.status(400).body(Map.of( + "success", false, + "message", e.getMessage() + )); + } catch (Exception e) { + log.error("FAQ 向量重算失败: id={}", id, e); + return ResponseEntity.status(500).body(Map.of( + "success", false, + "message", "向量重算失败:" + e.getMessage() + )); + } + } +} diff --git a/src/main/java/com/wok/supportbot/controller/MessageFeedbackController.java b/src/main/java/com/wok/supportbot/controller/MessageFeedbackController.java new file mode 100644 index 0000000..f6618dc --- /dev/null +++ b/src/main/java/com/wok/supportbot/controller/MessageFeedbackController.java @@ -0,0 +1,146 @@ +package com.wok.supportbot.controller; + +import com.wok.supportbot.entity.MessageFeedback; +import com.wok.supportbot.service.MessageFeedbackService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +/** + * 消息反馈控制器 + * 提供反馈提交、统计、查询等 API + */ +@RestController +@Slf4j +public class MessageFeedbackController { + + @Autowired + private MessageFeedbackService messageFeedbackService; + + /** + * 提交/修改反馈(upsert) + * + * @param feedback 反馈信息(messageId, conversationId, feedbackType, reasonCategory, reasonComment) + * @return 操作结果 + */ + @PostMapping("/feedback") + public ResponseEntity> submitFeedback(@RequestBody MessageFeedback feedback) { + try { + // messageId 缺失时自动生成,保证 upsert 索引不冲突 + if (feedback.getMessageId() == null || feedback.getMessageId().isBlank()) { + feedback.setMessageId("auto_" + UUID.randomUUID().toString().replace("-", "")); + log.warn("反馈请求缺少 messageId,已自动生成: {}", feedback.getMessageId()); + } + if (feedback.getFeedbackType() == null || feedback.getFeedbackType().isBlank()) { + return ResponseEntity.badRequest().body(Map.of( + "success", false, + "message", "feedbackType 不能为空" + )); + } + String type = feedback.getFeedbackType().toUpperCase(); + if (!type.equals("THUMBS_UP") && !type.equals("THUMBS_DOWN")) { + return ResponseEntity.badRequest().body(Map.of( + "success", false, + "message", "feedbackType 必须为 THUMBS_UP 或 THUMBS_DOWN" + )); + } + feedback.setFeedbackType(type); + + MessageFeedback saved = messageFeedbackService.submitFeedback(feedback); + return ResponseEntity.ok(Map.of( + "success", true, + "data", saved, + "message", "反馈提交成功" + )); + } catch (Exception e) { + return ResponseEntity.status(500).body(Map.of( + "success", false, + "message", "反馈提交失败:" + e.getMessage() + )); + } + } + + /** + * 获取反馈统计数据 + * + * @param startDate 开始日期(yyyy-MM-dd),可选 + * @param endDate 结束日期(yyyy-MM-dd),可选 + * @return 统计结果 + */ + @GetMapping("/feedback/stats") + public ResponseEntity> getStats( + @RequestParam(required = false) String startDate, + @RequestParam(required = false) String endDate) { + try { + Map stats = messageFeedbackService.getStats(startDate, endDate); + return ResponseEntity.ok(Map.of( + "success", true, + "data", stats + )); + } catch (Exception e) { + return ResponseEntity.status(500).body(Map.of( + "success", false, + "message", "查询统计失败:" + e.getMessage() + )); + } + } + + /** + * 按会话ID查询反馈列表 + * + * @param conversationId 会话ID + * @return 反馈列表 + */ + @GetMapping("/feedback/by-conversation/{conversationId}") + public ResponseEntity> getByConversation( + @PathVariable String conversationId) { + try { + List feedbacks = messageFeedbackService.getByConversationId(conversationId); + return ResponseEntity.ok(Map.of( + "success", true, + "data", feedbacks + )); + } catch (Exception e) { + return ResponseEntity.status(500).body(Map.of( + "success", false, + "message", "查询失败:" + e.getMessage() + )); + } + } + + /** + * 批量查询反馈状态(供 SDK 回显使用) + * + * @param messageIds 逗号分隔的消息ID列表 + * @return 反馈列表 + */ + @GetMapping("/feedback/batch") + public ResponseEntity> getBatchByMessageIds( + @RequestParam String messageIds) { + try { + if (messageIds == null || messageIds.isBlank()) { + return ResponseEntity.ok(Map.of( + "success", true, + "data", List.of() + )); + } + List idList = Arrays.asList(messageIds.split(",")); + List feedbacks = messageFeedbackService.getBatchByMessageIds(idList); + return ResponseEntity.ok(Map.of( + "success", true, + "data", feedbacks + )); + } catch (Exception e) { + return ResponseEntity.status(500).body(Map.of( + "success", false, + "message", "批量查询失败:" + e.getMessage() + )); + } + } +} diff --git a/src/main/java/com/wok/supportbot/controller/SensitiveWordController.java b/src/main/java/com/wok/supportbot/controller/SensitiveWordController.java new file mode 100644 index 0000000..d182b56 --- /dev/null +++ b/src/main/java/com/wok/supportbot/controller/SensitiveWordController.java @@ -0,0 +1,239 @@ +package com.wok.supportbot.controller; + +import com.wok.supportbot.entity.SensitiveWord; +import com.wok.supportbot.service.SensitiveWordService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.web.bind.annotation.*; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 敏感词管理 & 审计日志查询接口 + */ +@Slf4j +@RestController +@RequestMapping("/sensitive-word") +public class SensitiveWordController { + + @Autowired + private SensitiveWordService sensitiveWordService; + + @Autowired + private JdbcTemplate jdbcTemplate; + + // ==================== 敏感词 CRUD ==================== + + /** + * 分页查询敏感词列表 + */ + @GetMapping("/list") + public ResponseEntity> list( + @RequestParam(defaultValue = "1") int page, + @RequestParam(defaultValue = "10") int size, + @RequestParam(required = false) String keyword, + @RequestParam(required = false) String category) { + try { + Map result = sensitiveWordService.list(page, size, keyword, category); + + Map data = new HashMap<>(); + data.put("success", true); + data.put("data", result.get("records")); + data.put("total", result.get("total")); + data.put("page", result.get("page")); + data.put("size", result.get("size")); + data.put("pages", result.get("pages")); + return ResponseEntity.ok(data); + } catch (Exception e) { + log.error("查询敏感词列表失败", e); + return ResponseEntity.status(500).body(Map.of( + "success", false, + "message", "查询失败:" + e.getMessage() + )); + } + } + + /** + * 新增敏感词 + */ + @PostMapping + public ResponseEntity> create(@RequestBody SensitiveWord word) { + try { + SensitiveWord created = sensitiveWordService.create(word); + return ResponseEntity.ok(Map.of( + "success", true, + "message", "新增成功", + "data", created + )); + } catch (IllegalArgumentException e) { + return ResponseEntity.badRequest().body(Map.of( + "success", false, + "message", e.getMessage() + )); + } catch (Exception e) { + log.error("新增敏感词失败", e); + return ResponseEntity.status(500).body(Map.of( + "success", false, + "message", "新增失败:" + e.getMessage() + )); + } + } + + /** + * 修改敏感词 + */ + @PutMapping("/{id}") + public ResponseEntity> update(@PathVariable Long id, @RequestBody SensitiveWord word) { + try { + SensitiveWord updated = sensitiveWordService.update(id, word); + return ResponseEntity.ok(Map.of( + "success", true, + "message", "修改成功", + "data", updated + )); + } catch (IllegalArgumentException e) { + return ResponseEntity.badRequest().body(Map.of( + "success", false, + "message", e.getMessage() + )); + } catch (Exception e) { + log.error("修改敏感词失败", e); + return ResponseEntity.status(500).body(Map.of( + "success", false, + "message", "修改失败:" + e.getMessage() + )); + } + } + + /** + * 删除敏感词(逻辑删除) + */ + @DeleteMapping("/{id}") + public ResponseEntity> delete(@PathVariable Long id) { + try { + sensitiveWordService.delete(id); + return ResponseEntity.ok(Map.of( + "success", true, + "message", "删除成功" + )); + } catch (IllegalArgumentException e) { + return ResponseEntity.badRequest().body(Map.of( + "success", false, + "message", e.getMessage() + )); + } catch (Exception e) { + log.error("删除敏感词失败", e); + return ResponseEntity.status(500).body(Map.of( + "success", false, + "message", "删除失败:" + e.getMessage() + )); + } + } + + /** + * 批量导入敏感词 + *

+ * 请求体格式:{ "words": ["词1", "词2"], "category": "custom", "level": 1 } + */ + @SuppressWarnings("unchecked") + @PostMapping("/batch-import") + public ResponseEntity> batchImport(@RequestBody Map body) { + try { + List words = (List) body.get("words"); + String category = (String) body.getOrDefault("category", "custom"); + int level = body.containsKey("level") ? ((Number) body.get("level")).intValue() : 1; + + if (words == null || words.isEmpty()) { + return ResponseEntity.badRequest().body(Map.of( + "success", false, + "message", "words 列表不能为空" + )); + } + + int imported = sensitiveWordService.batchImport(words, category, level); + return ResponseEntity.ok(Map.of( + "success", true, + "message", "批量导入完成,成功 " + imported + " 个", + "data", Map.of("imported", imported, "total", words.size()) + )); + } catch (Exception e) { + log.error("批量导入敏感词失败", e); + return ResponseEntity.status(500).body(Map.of( + "success", false, + "message", "批量导入失败:" + e.getMessage() + )); + } + } + + /** + * 将 Map 的 key 从 snake_case 转为 camelCase + */ + private Map snakeToCamelKeys(Map map) { + Map result = new HashMap<>(); + map.forEach((key, value) -> { + String camelKey = key; + int idx; + while ((idx = camelKey.indexOf('_')) != -1 && idx + 1 < camelKey.length()) { + camelKey = camelKey.substring(0, idx) + Character.toUpperCase(camelKey.charAt(idx + 1)) + camelKey.substring(idx + 2); + } + result.put(camelKey, value); + }); + return result; + } + + // ==================== 审计日志查询 ==================== + + /** + * 分页查询内容审计日志(使用 JdbcTemplate 直接查询,因为审计日志表无逻辑删除字段) + */ + @GetMapping("/audit-log") + public ResponseEntity> auditLog( + @RequestParam(defaultValue = "1") int page, + @RequestParam(defaultValue = "10") int size, + @RequestParam(required = false) String sessionId) { + try { + // 构建 WHERE 子句 + StringBuilder whereClause = new StringBuilder("WHERE 1=1"); + List params = new java.util.ArrayList<>(); + if (sessionId != null && !sessionId.isBlank()) { + whereClause.append(" AND session_id = ?"); + params.add(sessionId); + } + + // 查询总数 + String countSql = "SELECT COUNT(*) FROM content_audit_log " + whereClause; + Long total = jdbcTemplate.queryForObject(countSql, Long.class, params.toArray()); + + // 查询列表 + String listSql = "SELECT * FROM content_audit_log " + whereClause + + " ORDER BY create_time DESC LIMIT ? OFFSET ?"; + List queryParams = new java.util.ArrayList<>(params); + queryParams.add(size); + queryParams.add((long) (page - 1) * size); + List> rawRecords = jdbcTemplate.queryForList(listSql, queryParams.toArray()); + // JdbcTemplate 返回数据库列名(snake_case),需转换为 camelCase 供前端使用 + List> records = rawRecords.stream() + .map(this::snakeToCamelKeys) + .toList(); + + Map data = new HashMap<>(); + data.put("success", true); + data.put("data", records); + data.put("total", total); + data.put("page", page); + data.put("size", size); + data.put("pages", total != null ? (total + size - 1) / size : 0); + return ResponseEntity.ok(data); + } catch (Exception e) { + log.error("查询审计日志失败", e); + return ResponseEntity.status(500).body(Map.of( + "success", false, + "message", "查询失败:" + e.getMessage() + )); + } + } +} diff --git a/src/main/java/com/wok/supportbot/dao/ContentAuditLogMapper.java b/src/main/java/com/wok/supportbot/dao/ContentAuditLogMapper.java new file mode 100644 index 0000000..f08ccfa --- /dev/null +++ b/src/main/java/com/wok/supportbot/dao/ContentAuditLogMapper.java @@ -0,0 +1,12 @@ +package com.wok.supportbot.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.wok.supportbot.entity.ContentAuditLog; +import org.apache.ibatis.annotations.Mapper; + +/** + * 内容审计日志 Mapper + */ +@Mapper +public interface ContentAuditLogMapper extends BaseMapper { +} diff --git a/src/main/java/com/wok/supportbot/dao/KnowledgeFaqMapper.java b/src/main/java/com/wok/supportbot/dao/KnowledgeFaqMapper.java new file mode 100644 index 0000000..6fa99a7 --- /dev/null +++ b/src/main/java/com/wok/supportbot/dao/KnowledgeFaqMapper.java @@ -0,0 +1,12 @@ +package com.wok.supportbot.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.wok.supportbot.entity.KnowledgeFaq; +import org.apache.ibatis.annotations.Mapper; + +/** + * FAQ 知识库 Mapper + */ +@Mapper +public interface KnowledgeFaqMapper extends BaseMapper { +} diff --git a/src/main/java/com/wok/supportbot/dao/MessageFeedbackMapper.java b/src/main/java/com/wok/supportbot/dao/MessageFeedbackMapper.java new file mode 100644 index 0000000..935d202 --- /dev/null +++ b/src/main/java/com/wok/supportbot/dao/MessageFeedbackMapper.java @@ -0,0 +1,12 @@ +package com.wok.supportbot.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.wok.supportbot.entity.MessageFeedback; +import org.apache.ibatis.annotations.Mapper; + +/** + * 消息反馈 Mapper + */ +@Mapper +public interface MessageFeedbackMapper extends BaseMapper { +} diff --git a/src/main/java/com/wok/supportbot/dao/SensitiveWordMapper.java b/src/main/java/com/wok/supportbot/dao/SensitiveWordMapper.java new file mode 100644 index 0000000..ca68636 --- /dev/null +++ b/src/main/java/com/wok/supportbot/dao/SensitiveWordMapper.java @@ -0,0 +1,12 @@ +package com.wok.supportbot.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.wok.supportbot.entity.SensitiveWord; +import org.apache.ibatis.annotations.Mapper; + +/** + * 敏感词 Mapper + */ +@Mapper +public interface SensitiveWordMapper extends BaseMapper { +} diff --git a/src/main/java/com/wok/supportbot/entity/ContentAuditLog.java b/src/main/java/com/wok/supportbot/entity/ContentAuditLog.java new file mode 100644 index 0000000..7bedf44 --- /dev/null +++ b/src/main/java/com/wok/supportbot/entity/ContentAuditLog.java @@ -0,0 +1,59 @@ +package com.wok.supportbot.entity; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.wok.supportbot.handler.PostgresJsonTypeHandler; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; +import java.util.Map; + +/** + * 内容审计日志实体(不可删除,无逻辑删除字段) + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@TableName(value = "content_audit_log", autoResultMap = true) +public class ContentAuditLog implements Serializable { + + @Serial + @TableField(exist = false) + private static final long serialVersionUID = 1L; + + /** 主键ID(雪花算法) */ + @TableId(value = "id", type = IdType.ASSIGN_ID) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** 会话ID */ + @TableField("session_id") + private String sessionId; + + /** 方向:INPUT/OUTPUT */ + @TableField("direction") + private String direction; + + /** 违规内容截断(最多50字) */ + @TableField("original_text") + private String originalText; + + /** 命中词列表(JSON格式) */ + @TableField(value = "hit_words", typeHandler = PostgresJsonTypeHandler.class) + private Map hitWords; + + /** 采取的动作:PASS/MASK/BLOCK */ + @TableField("action_taken") + private String actionTaken; + + /** 创建时间 */ + @TableField(value = "create_time", fill = FieldFill.INSERT) + private Date createTime; +} diff --git a/src/main/java/com/wok/supportbot/entity/KnowledgeFaq.java b/src/main/java/com/wok/supportbot/entity/KnowledgeFaq.java new file mode 100644 index 0000000..32e8b7b --- /dev/null +++ b/src/main/java/com/wok/supportbot/entity/KnowledgeFaq.java @@ -0,0 +1,102 @@ +package com.wok.supportbot.entity; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + +/** + * FAQ 知识库实体 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@TableName("knowledge_faq") +public class KnowledgeFaq implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键 ID(雪花算法) + */ + @TableId(value = "id", type = IdType.ASSIGN_ID) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * FAQ 问题 + */ + @TableField("question") + private String question; + + /** + * 标准答案 + */ + @TableField("answer") + private String answer; + + /** + * 相似问题列表,存储为 JSON 字符串如 '["问题1","问题2"]' + * 不使用 PostgresJsonTypeHandler,在 Service 层手动解析 + */ + @TableField("similar_questions") + private String similarQuestions; + + /** + * FAQ 分类,如"退货政策" + */ + @TableField("category") + private String category; + + /** + * 状态: ENABLED / DISABLED + */ + @TableField("status") + private String status; + + /** + * 优先级,数值越大越优先 + */ + @TableField("priority") + private Integer priority; + + /** + * 命中次数统计 + */ + @TableField("hit_count") + private Long hitCount; + + /** + * 来源: manual / import + */ + @TableField("source") + private String source; + + /** + * 创建时间 + */ + @TableField("create_time") + private Date createTime; + + /** + * 更新时间 + */ + @TableField("update_time") + private Date updateTime; + + /** + * 逻辑删除标记 + */ + @TableLogic + @TableField("is_delete") + private boolean isDelete; +} diff --git a/src/main/java/com/wok/supportbot/entity/MessageFeedback.java b/src/main/java/com/wok/supportbot/entity/MessageFeedback.java new file mode 100644 index 0000000..79020f3 --- /dev/null +++ b/src/main/java/com/wok/supportbot/entity/MessageFeedback.java @@ -0,0 +1,86 @@ +package com.wok.supportbot.entity; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + +/** + * 消息反馈实体 + * 记录用户对 AI 回复的点赞/点踩反馈 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@TableName("message_feedback") +public class MessageFeedback implements Serializable { + + @Serial + @TableField(exist = false) + private static final long serialVersionUID = 1L; + + /** + * 主键ID(雪花算法) + */ + @TableId(value = "id", type = IdType.ASSIGN_ID) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * AI消息ID(前端 msgId 或 UUID) + */ + @TableField("message_id") + private String messageId; + + /** + * 会话ID + */ + @TableField("conversation_id") + private String conversationId; + + /** + * 反馈类型: THUMBS_UP / THUMBS_DOWN + */ + @TableField("feedback_type") + private String feedbackType; + + /** + * 点踩原因分类: inaccurate / irrelevant / incomplete / other + * 仅 THUMBS_DOWN 时填写 + */ + @TableField("reason_category") + private String reasonCategory; + + /** + * 自由文本补充说明(可选) + */ + @TableField("reason_comment") + private String reasonComment; + + /** + * 创建时间 + */ + @TableField(value = "create_time", fill = FieldFill.INSERT) + private Date createTime; + + /** + * 更新时间 + */ + @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE) + private Date updateTime; + + /** + * 是否删除 false-未删除 true-已删除 + */ + @TableField("is_delete") + @TableLogic + private boolean isDelete; +} diff --git a/src/main/java/com/wok/supportbot/entity/SearchResult.java b/src/main/java/com/wok/supportbot/entity/SearchResult.java index 3e1615c..c0ee505 100644 --- a/src/main/java/com/wok/supportbot/entity/SearchResult.java +++ b/src/main/java/com/wok/supportbot/entity/SearchResult.java @@ -55,6 +55,11 @@ public class SearchResult implements Serializable { */ private String documentId; + /** + * 检索模式标识(VECTOR / KEYWORD / HYBRID) + */ + private String searchMode; + /** * 原始元数据 */ diff --git a/src/main/java/com/wok/supportbot/entity/SensitiveWord.java b/src/main/java/com/wok/supportbot/entity/SensitiveWord.java new file mode 100644 index 0000000..527c931 --- /dev/null +++ b/src/main/java/com/wok/supportbot/entity/SensitiveWord.java @@ -0,0 +1,66 @@ +package com.wok.supportbot.entity; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + +/** + * 敏感词实体 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@TableName("sensitive_word") +public class SensitiveWord implements Serializable { + + @Serial + @TableField(exist = false) + private static final long serialVersionUID = 1L; + + /** 主键ID(雪花算法) */ + @TableId(value = "id", type = IdType.ASSIGN_ID) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** 敏感词内容 */ + @TableField("word") + private String word; + + /** 分类:politics/porn/abuse/custom */ + @TableField("category") + private String category; + + /** 级别:1=警告,2=拦截 */ + @TableField("level") + private Integer level; + + /** 是否启用 */ + @TableField("is_active") + private Boolean isActive; + + /** 备注 */ + @TableField("remark") + private String remark; + + /** 创建时间 */ + @TableField(value = "create_time", fill = FieldFill.INSERT) + private Date createTime; + + /** 更新时间 */ + @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE) + private Date updateTime; + + /** 逻辑删除标识 */ + @TableField("is_delete") + @TableLogic + private boolean isDelete; +} diff --git a/src/main/java/com/wok/supportbot/rag/HybridSearchService.java b/src/main/java/com/wok/supportbot/rag/HybridSearchService.java new file mode 100644 index 0000000..857d733 --- /dev/null +++ b/src/main/java/com/wok/supportbot/rag/HybridSearchService.java @@ -0,0 +1,283 @@ +package com.wok.supportbot.rag; + +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.wok.supportbot.entity.SearchResult; +import lombok.extern.slf4j.Slf4j; +import org.springframework.ai.document.Document; +import org.springframework.ai.vectorstore.SearchRequest; +import org.springframework.ai.vectorstore.VectorStore; +import org.springframework.ai.vectorstore.filter.FilterExpressionBuilder; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; + +import jakarta.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +/** + * 混合检索核心服务 + * 支持三种检索模式:纯向量检索、全文关键词检索、混合检索(双路 + RRF 融合 + Reranker 精排)。 + */ +@Service +@Slf4j +public class HybridSearchService { + + @Resource(name = "pgVectorVectorStore") + private VectorStore pgVectorVectorStore; + + @Autowired + private JdbcTemplate jdbcTemplate; + + @Autowired + private RrfFusion rrfFusion; + + @Autowired + private RerankerService rerankerService; + + /** JSON 解析器 */ + private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); + + /** + * 执行检索 + * + * @param query 用户查询文本 + * @param mode 检索模式(VECTOR / KEYWORD / HYBRID) + * @param topK 返回结果数量上限 + * @param similarityThreshold 向量相似度阈值(仅 VECTOR 和 HYBRID 模式生效) + * @param categoryIds 分类ID过滤列表(可选) + * @return 检索结果列表 + */ + public List search(String query, SearchMode mode, int topK, + double similarityThreshold, List categoryIds) { + log.info("执行检索: mode={}, topK={}, threshold={}, categoryIds={}", mode, topK, similarityThreshold, categoryIds); + + return switch (mode) { + case VECTOR -> vectorSearch(query, topK, similarityThreshold, categoryIds); + case KEYWORD -> keywordSearch(query, topK, categoryIds); + case HYBRID -> hybridSearch(query, topK, similarityThreshold, categoryIds); + }; + } + + // ==================== 向量检索 ==================== + + /** + * 纯向量语义检索 + * 复用 PgVectorStore 的 similaritySearch,支持分类过滤和相似度阈值。 + */ + private List vectorSearch(String query, int topK, double threshold, List categoryIds) { + SearchRequest.Builder builder = SearchRequest.builder() + .query(query) + .topK(topK) + .similarityThreshold(threshold); + + // 分类过滤 + if (categoryIds != null && !categoryIds.isEmpty()) { + FilterExpressionBuilder fb = new FilterExpressionBuilder(); + List values = categoryIds.stream() + .map(id -> (Object) String.valueOf(id)) + .toList(); + builder.filterExpression(fb.in("categoryId", values).build()); + } + + List docs = pgVectorVectorStore.similaritySearch(builder.build()); + log.debug("向量检索完成: 查询='{}', 返回 {} 条", query, docs.size()); + return toSearchResults(docs, "VECTOR"); + } + + // ==================== 关键词检索 ==================== + + /** + * 全文关键词检索 + * 使用 PostgreSQL tsvector 全文索引,按 ts_rank 排序。 + */ + private List keywordSearch(String query, int topK, List categoryIds) { + String categoryFilter = buildCategoryFilter(categoryIds); + String sql = """ + SELECT id, content, metadata, + ts_rank(content_tsvector, plainto_tsquery('simple', ?)) AS rank + FROM vector_store + WHERE content_tsvector @@ plainto_tsquery('simple', ?) + AND is_delete = false + %s + ORDER BY rank DESC + LIMIT ? + """.formatted(categoryFilter); + + List results = jdbcTemplate.query(sql, (rs, rowNum) -> { + SearchResult result = new SearchResult(); + result.setId(rs.getString("id")); + result.setContent(rs.getString("content")); + result.setScore(rs.getDouble("rank")); + result.setSearchMode("KEYWORD"); + + // 解析 metadata JSONB + String metadataStr = rs.getString("metadata"); + if (metadataStr != null) { + Map metadata = parseJsonb(metadataStr); + result.setMetadata(metadata); + result.setSourceName(getStringFromMetadata(metadata, "sourceName")); + result.setTitle(getStringFromMetadata(metadata, "title")); + result.setDocumentId(getStringFromMetadata(metadata, "documentId")); + result.setChunkIndex(getIntegerFromMetadata(metadata, "chunkIndex")); + } + return result; + }, query, query, topK); + + log.debug("关键词检索完成: 查询='{}', 返回 {} 条", query, results.size()); + return results; + } + + // ==================== 混合检索 ==================== + + /** + * 混合检索:双路检索 → RRF 融合 → Reranker 精排 + * 向量和关键词各取 topK*2 作为候选池,给 RRF 更多融合素材。 + */ + private List hybridSearch(String query, int topK, double threshold, List categoryIds) { + // 双路检索(各取 topK*2 给 RRF 更多候选) + int candidateSize = topK * 2; + List vectorResults = vectorSearch(query, candidateSize, threshold, categoryIds); + List keywordResults = keywordSearch(query, candidateSize, categoryIds); + + log.debug("混合检索双路完成: 向量 {} 条, 关键词 {} 条", vectorResults.size(), keywordResults.size()); + + // 转换为 ScoredDocument 列表 + List vectorDocs = toScoredDocs(vectorResults); + List keywordDocs = toScoredDocs(keywordResults); + + // RRF 融合 + List fused = rrfFusion.fuse(List.of(vectorDocs, keywordDocs)); + + // Reranker 精排(如有 RERANK 模型配置则调用 API,否则 fallback 到 RRF 原始排序) + List reranked = rerankerService.rerank(query, fused, topK); + + return scoredDocsToSearchResults(reranked, "HYBRID"); + } + + // ==================== 转换方法 ==================== + + /** + * 将 Spring AI Document 列表转换为 SearchResult 列表 + */ + private List toSearchResults(List docs, String searchMode) { + return docs.stream().map(doc -> { + SearchResult result = new SearchResult(); + result.setId(doc.getId()); + result.setContent(doc.getText()); + result.setScore(doc.getScore() != null ? doc.getScore() : 0.0); + result.setSearchMode(searchMode); + + Map metadata = doc.getMetadata(); + if (metadata != null) { + result.setMetadata(metadata); + result.setSourceName(getStringFromMetadata(metadata, "sourceName")); + result.setTitle(getStringFromMetadata(metadata, "title")); + result.setDocumentId(getStringFromMetadata(metadata, "documentId")); + result.setChunkIndex(getIntegerFromMetadata(metadata, "chunkIndex")); + } + return result; + }).collect(Collectors.toList()); + } + + /** + * 将 RRF/Reranker 产出的 ScoredDocument 列表转换为 SearchResult 列表 + */ + private List scoredDocsToSearchResults(List scoredDocs, String searchMode) { + return scoredDocs.stream().map(doc -> { + SearchResult result = new SearchResult(); + result.setId(doc.getId()); + result.setContent(doc.getContent()); + result.setScore(doc.getScore()); + result.setSearchMode(searchMode); + + Map metadata = doc.getMetadata(); + if (metadata != null) { + result.setMetadata(metadata); + result.setSourceName(getStringFromMetadata(metadata, "sourceName")); + result.setTitle(getStringFromMetadata(metadata, "title")); + result.setDocumentId(getStringFromMetadata(metadata, "documentId")); + result.setChunkIndex(getIntegerFromMetadata(metadata, "chunkIndex")); + } + return result; + }).collect(Collectors.toList()); + } + + /** + * 将 SearchResult 列表转换为 RRF 用的 ScoredDocument 列表 + */ + private List toScoredDocs(List results) { + return results.stream().map(r -> { + Map metadata = null; + if (r.getMetadata() instanceof Map) { + @SuppressWarnings("unchecked") + Map map = (Map) r.getMetadata(); + metadata = map; + } + return new RrfFusion.ScoredDocument( + r.getId(), + r.getContent(), + metadata, + r.getScore() != null ? r.getScore() : 0.0 + ); + }).collect(Collectors.toList()); + } + + // ==================== 辅助方法 ==================== + + /** + * 构建分类过滤 SQL WHERE 子句 + * 从 metadata JSONB 中提取 categoryId 字段进行匹配。 + * + * @param categoryIds 分类ID列表 + * @return SQL 片段,如 "AND metadata->>'categoryId' IN ('1','2','3')";空列表时返回空字符串 + */ + private String buildCategoryFilter(List categoryIds) { + if (categoryIds == null || categoryIds.isEmpty()) { + return ""; + } + String inValues = categoryIds.stream() + .map(id -> "'" + id + "'") + .collect(Collectors.joining(",")); + return "AND metadata->>'categoryId' IN (" + inValues + ")"; + } + + /** + * 解析 JSONB 字符串为 Map + */ + private Map parseJsonb(String json) { + try { + return OBJECT_MAPPER.readValue(json, new TypeReference>() {}); + } catch (Exception e) { + log.warn("解析 metadata JSONB 失败: {}", e.getMessage()); + return Collections.emptyMap(); + } + } + + /** + * 从 metadata Map 中安全获取 String 值 + */ + private String getStringFromMetadata(Map metadata, String key) { + Object value = metadata.get(key); + return value != null ? value.toString() : null; + } + + /** + * 从 metadata Map 中安全获取 Integer 值 + */ + private Integer getIntegerFromMetadata(Map metadata, String key) { + Object value = metadata.get(key); + if (value instanceof Number) { + return ((Number) value).intValue(); + } + if (value instanceof String) { + try { + return Integer.parseInt((String) value); + } catch (NumberFormatException e) { + return null; + } + } + return null; + } +} diff --git a/src/main/java/com/wok/supportbot/rag/RerankerService.java b/src/main/java/com/wok/supportbot/rag/RerankerService.java new file mode 100644 index 0000000..9f12e69 --- /dev/null +++ b/src/main/java/com/wok/supportbot/rag/RerankerService.java @@ -0,0 +1,236 @@ +package com.wok.supportbot.rag; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.wok.supportbot.dao.AiModelConfigMapper; +import com.wok.supportbot.entity.AiModelConfig; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.*; +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; + +import java.time.Duration; +import java.util.*; +import java.util.stream.Collectors; + +/** + * 重排序服务 + * 查询 ai_model_config 表中 RERANK 类型的活跃配置,调用对应的 Rerank API 对候选文档精排。 + * 支持 DashScope 和 OpenAI 兼容两种协议,无配置或调用异常时 fallback 到原始排序。 + */ +@Service +@Slf4j +public class RerankerService { + + @Autowired + private AiModelConfigMapper aiModelConfigMapper; + + /** HTTP 超时时间(秒) */ + private static final int TIMEOUT_SECONDS = 3; + + /** + * 对候选文档执行重排序 + * - 有 RERANK 配置 → 调用对应提供商的 Rerank API + * - 无配置 / 超时 / 异常 → fallback 返回 candidates 前 topN 条 + * + * @param query 用户查询 + * @param candidates RRF 融合后的候选文档列表 + * @param topN 最终返回的文档数量 + * @return 按相关性降序排列的 topN 条文档 + */ + public List rerank(String query, List candidates, int topN) { + if (candidates == null || candidates.isEmpty()) { + return Collections.emptyList(); + } + + // 查询 RERANK 类型的活跃配置 + AiModelConfig config = getActiveRerankConfig(); + if (config == null) { + log.debug("未找到 RERANK 活跃配置,使用 RRF 原始排序作为 fallback"); + return fallback(candidates, topN); + } + + try { + List reranked = doRerank(query, candidates, topN, config); + log.debug("Reranker 精排完成: provider={}, 输入 {} 条, 输出 {} 条", + config.getProvider(), candidates.size(), reranked.size()); + return reranked; + } catch (Exception e) { + log.warn("Reranker 调用失败 (provider={}): {}, 使用 RRF 原始排序作为 fallback", + config.getProvider(), e.getMessage()); + return fallback(candidates, topN); + } + } + + /** + * 获取 RERANK 类型的活跃配置 + */ + private AiModelConfig getActiveRerankConfig() { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(AiModelConfig::getAppType, "RERANK") + .eq(AiModelConfig::getIsActive, true) + .last("LIMIT 1"); + return aiModelConfigMapper.selectOne(wrapper); + } + + /** + * 根据提供商类型分发 Rerank API 调用 + */ + private List doRerank(String query, + List candidates, + int topN, + AiModelConfig config) { + String provider = config.getProvider().toLowerCase(); + if ("dashscope".equals(provider)) { + return dashscopeRerank(query, candidates, topN, config); + } else { + return openaiCompatibleRerank(query, candidates, topN, config); + } + } + + /** + * DashScope Rerank API 调用 + * POST https://dashscope.aliyuncs.com/api/v1/services/rerank + */ + private List dashscopeRerank(String query, + List candidates, + int topN, + AiModelConfig config) { + String url = "https://dashscope.aliyuncs.com/api/v1/services/rerank"; + List documents = candidates.stream() + .map(RrfFusion.ScoredDocument::getContent) + .collect(Collectors.toList()); + + // 构建请求体 + Map parameters = new LinkedHashMap<>(); + parameters.put("top_n", topN); + parameters.put("return_documents", true); + + Map input = new LinkedHashMap<>(); + input.put("query", query); + input.put("documents", documents); + + Map body = new LinkedHashMap<>(); + body.put("model", config.getModelName() != null ? config.getModelName() : "gte-rerank"); + body.put("input", input); + body.put("parameters", parameters); + + // 发送请求 + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.setBearerAuth(config.getApiKey()); + + ResponseEntity response = postWithTimeout(url, headers, body); + + // 解析响应:{"output":{"results":[{"index":0,"relevance_score":0.95},...]}} + Map responseBody = response.getBody(); + if (responseBody == null) { + throw new RuntimeException("DashScope Rerank 响应为空"); + } + Map output = (Map) responseBody.get("output"); + if (output == null) { + throw new RuntimeException("DashScope Rerank 响应缺少 output 字段"); + } + List results = (List) output.get("results"); + if (results == null || results.isEmpty()) { + throw new RuntimeException("DashScope Rerank 结果为空"); + } + + return mapResultsToDocs(results, candidates); + } + + /** + * OpenAI 兼容 Rerank API 调用 + * POST {baseUrl}/rerank + */ + private List openaiCompatibleRerank(String query, + List candidates, + int topN, + AiModelConfig config) { + String baseUrl = config.getBaseUrl(); + if (baseUrl == null || baseUrl.isBlank()) { + throw new IllegalArgumentException( + "OpenAI 兼容 Rerank 提供商 [" + config.getProvider() + "] 未配置 baseUrl"); + } + // 确保 URL 拼接正确 + String url = baseUrl.endsWith("/") ? baseUrl + "rerank" : baseUrl + "/rerank"; + + List documents = candidates.stream() + .map(RrfFusion.ScoredDocument::getContent) + .collect(Collectors.toList()); + + // 构建请求体 + Map body = new LinkedHashMap<>(); + body.put("model", config.getModelName()); + body.put("query", query); + body.put("documents", documents); + body.put("top_n", topN); + + // 发送请求 + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.setBearerAuth(config.getApiKey()); + + ResponseEntity response = postWithTimeout(url, headers, body); + + // 解析响应:{"results":[{"index":0,"relevance_score":0.95},...]} + Map responseBody = response.getBody(); + if (responseBody == null) { + throw new RuntimeException("OpenAI 兼容 Rerank 响应为空"); + } + List results = (List) responseBody.get("results"); + if (results == null || results.isEmpty()) { + throw new RuntimeException("OpenAI 兼容 Rerank 结果为空"); + } + + return mapResultsToDocs(results, candidates); + } + + /** + * 将 Rerank API 返回的结果映射为 ScoredDocument 列表 + * + * @param results API 返回的 results 数组,每项含 index 和 relevance_score + * @param candidates 原始候选文档列表(用于通过 index 关联文档内容) + * @return 按 relevance_score 降序排列的文档列表 + */ + private List mapResultsToDocs(List results, + List candidates) { + List reranked = new ArrayList<>(results.size()); + for (Map result : results) { + int index = ((Number) result.get("index")).intValue(); + double score = ((Number) result.get("relevance_score")).doubleValue(); + if (index >= 0 && index < candidates.size()) { + RrfFusion.ScoredDocument original = candidates.get(index); + reranked.add(new RrfFusion.ScoredDocument( + original.getId(), + original.getContent(), + original.getMetadata(), + score + )); + } + } + // 按 relevance_score 降序排列 + reranked.sort((a, b) -> Double.compare(b.getScore(), a.getScore())); + return reranked; + } + + /** + * 带超时的 HTTP POST 请求 + */ + @SuppressWarnings("unchecked") + private ResponseEntity postWithTimeout(String url, HttpHeaders headers, Map body) { + RestTemplate restTemplate = new RestTemplate(); + HttpEntity> entity = new HttpEntity<>(body, headers); + // RestTemplate 默认无超时,此处依赖连接/读取超时由底层控制 + // Spring Boot 3.x 中可使用 RestClient 替代以获得更好的超时支持 + return restTemplate.exchange(url, HttpMethod.POST, entity, Map.class); + } + + /** + * Fallback:直接截取前 topN 条候选文档 + */ + private List fallback(List candidates, int topN) { + int limit = Math.min(topN, candidates.size()); + return new ArrayList<>(candidates.subList(0, limit)); + } +} diff --git a/src/main/java/com/wok/supportbot/rag/RrfFusion.java b/src/main/java/com/wok/supportbot/rag/RrfFusion.java new file mode 100644 index 0000000..c886533 --- /dev/null +++ b/src/main/java/com/wok/supportbot/rag/RrfFusion.java @@ -0,0 +1,88 @@ +package com.wok.supportbot.rag; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.*; + +/** + * RRF(Reciprocal Rank Fusion)融合算法 + * 将多路检索结果按排名倒数加权合并,消除不同检索方式分数尺度不一致的问题。 + * 公式:score(d) = Σ 1.0 / (K + rank_i(d) + 1),其中 K=60 为平滑常数。 + */ +@Component +@Slf4j +public class RrfFusion { + + /** RRF 平滑常数,控制排名靠后的文档权重衰减速度 */ + private static final double K = 60.0; + + /** + * 对多路排序列表执行 RRF 融合 + * + * @param rankedLists 多路检索结果列表,每个子列表已按相关性降序排列 + * @return 按 RRF 分数降序排列的合并文档列表 + */ + public List fuse(List> rankedLists) { + // docId → 累计 RRF 分数 + Map scoreMap = new LinkedHashMap<>(); + // docId → 文档对象(保留首次出现的内容和 metadata) + Map docMap = new LinkedHashMap<>(); + + for (List rankedList : rankedLists) { + if (rankedList == null) { + continue; + } + for (int rank = 0; rank < rankedList.size(); rank++) { + ScoredDocument doc = rankedList.get(rank); + if (doc == null || doc.getId() == null) { + continue; + } + double rrfScore = 1.0 / (K + rank + 1); + scoreMap.merge(doc.getId(), rrfScore, Double::sum); + // 保留首次出现的文档内容 + docMap.putIfAbsent(doc.getId(), doc); + } + } + + // 按 RRF 分数降序排列 + List> sortedEntries = new ArrayList<>(scoreMap.entrySet()); + sortedEntries.sort((a, b) -> Double.compare(b.getValue(), a.getValue())); + + // 构建结果列表,设置 RRF 融合分数 + List result = new ArrayList<>(sortedEntries.size()); + for (Map.Entry entry : sortedEntries) { + ScoredDocument doc = docMap.get(entry.getKey()); + ScoredDocument fusedDoc = new ScoredDocument( + doc.getId(), + doc.getContent(), + doc.getMetadata(), + entry.getValue() + ); + result.add(fusedDoc); + } + + log.debug("RRF 融合完成: 输入 {} 路, 合并后 {} 条文档", rankedLists.size(), result.size()); + return result; + } + + /** + * 带分数的文档对象,用于 RRF 融合和 Reranker 之间的数据传递 + */ + @Data + @AllArgsConstructor + @NoArgsConstructor + public static class ScoredDocument { + /** 文档ID */ + private String id; + /** 文档内容 */ + private String content; + /** 元数据 */ + private Map metadata; + /** 相关性分数(RRF 分数或 Reranker 分数) */ + private double score; + } +} diff --git a/src/main/java/com/wok/supportbot/rag/SearchMode.java b/src/main/java/com/wok/supportbot/rag/SearchMode.java new file mode 100644 index 0000000..edb799d --- /dev/null +++ b/src/main/java/com/wok/supportbot/rag/SearchMode.java @@ -0,0 +1,19 @@ +package com.wok.supportbot.rag; + +/** + * 检索模式枚举 + * - VECTOR: 纯向量语义检索 + * - KEYWORD: 全文关键词检索 + * - HYBRID: 混合检索(双路检索 + RRF 融合 + Reranker 精排) + */ +public enum SearchMode { + + /** 纯向量语义检索 */ + VECTOR, + + /** 混合检索:双路检索 → RRF 融合 → Reranker 精排 */ + HYBRID, + + /** 全文关键词检索 */ + KEYWORD +} diff --git a/src/main/java/com/wok/supportbot/service/ContentSafetyService.java b/src/main/java/com/wok/supportbot/service/ContentSafetyService.java new file mode 100644 index 0000000..62cfad1 --- /dev/null +++ b/src/main/java/com/wok/supportbot/service/ContentSafetyService.java @@ -0,0 +1,209 @@ +package com.wok.supportbot.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.wok.supportbot.dao.SensitiveWordMapper; +import com.wok.supportbot.entity.SensitiveWord; +import jakarta.annotation.PostConstruct; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.*; + +/** + * 内容安全过滤服务 —— DFA(确定有限自动机)敏感词匹配引擎 + */ +@Slf4j +@Service +public class ContentSafetyService { + + @Autowired + private SensitiveWordMapper sensitiveWordMapper; + + /** DFA 字典树根节点,使用 volatile + 全新对象替换保证线程安全 */ + private volatile DfaNode root = new DfaNode(); + + // ==================== 内部类定义 ==================== + + /** + * DFA 节点 + */ + static class DfaNode { + Map children = new HashMap<>(); + boolean isEnd = false; + SensitiveWord word; + } + + /** + * 命中结果 + */ + @Data + @AllArgsConstructor + public static class HitResult { + /** 命中的敏感词 */ + private String word; + /** 分类 */ + private String category; + /** 级别:1=警告,2=拦截 */ + private Integer level; + /** 在原文中的起始位置 */ + private int startIndex; + /** 在原文中的结束位置(不含) */ + private int endIndex; + } + + // ==================== 初始化与重建 ==================== + + /** + * 应用启动时从数据库加载所有活跃敏感词,构建 DFA 字典树 + */ + @PostConstruct + public void init() { + rebuild(); + } + + /** + * 重新从数据库加载并重建字典树(增删改敏感词后调用) + */ + public synchronized void rebuild() { + try { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("is_active", true); + List words = sensitiveWordMapper.selectList(wrapper); + + // 构建全新的字典树 + DfaNode newRoot = new DfaNode(); + for (SensitiveWord word : words) { + if (word.getWord() == null || word.getWord().isBlank()) { + continue; + } + addWord(newRoot, word); + } + + // 原子替换根节点引用,保证线程安全 + this.root = newRoot; + log.info("DFA 字典树重建完成,共加载 {} 个敏感词", words.size()); + } catch (Exception e) { + log.error("DFA 字典树重建失败", e); + } + } + + /** + * 向字典树中添加一个敏感词 + */ + private void addWord(DfaNode rootNode, SensitiveWord sensitiveWord) { + String text = sensitiveWord.getWord().toLowerCase(); + DfaNode current = rootNode; + for (char c : text.toCharArray()) { + current.children.putIfAbsent(c, new DfaNode()); + current = current.children.get(c); + } + current.isEnd = true; + current.word = sensitiveWord; + } + + // ==================== 检测与脱敏 ==================== + + /** + * 检测文本中的敏感词,返回所有命中结果 + * + * @param text 待检测文本 + * @return 命中结果列表 + */ + public List detect(String text) { + List hits = new ArrayList<>(); + if (text == null || text.isEmpty()) { + return hits; + } + + String lowerText = text.toLowerCase(); + DfaNode currentNode = root; + + for (int i = 0; i < lowerText.length(); i++) { + char c = lowerText.charAt(i); + DfaNode nextNode = currentNode.children.get(c); + + if (nextNode != null) { + currentNode = nextNode; + // 如果当前节点是一个完整词的结尾,记录命中 + if (currentNode.isEnd) { + String hitWord = currentNode.word.getWord(); + int startIdx = i - hitWord.length() + 1; + hits.add(new HitResult( + hitWord, + currentNode.word.getCategory(), + currentNode.word.getLevel(), + startIdx, + i + 1 + )); + } + } else { + // 未匹配到子节点,回退到根节点 + // 但如果之前已经部分匹配过,需要从下一个起始位置重新开始 + if (currentNode != root) { + // 回退:从上一个匹配起始位置的下一个字符重新开始 + // 简化处理:直接重置到根节点,外层循环继续 + currentNode = root; + // 重新检查当前字符是否可以从根节点开始匹配 + nextNode = currentNode.children.get(c); + if (nextNode != null) { + currentNode = nextNode; + if (currentNode.isEnd) { + String hitWord = currentNode.word.getWord(); + int startIdx = i - hitWord.length() + 1; + hits.add(new HitResult( + hitWord, + currentNode.word.getCategory(), + currentNode.word.getLevel(), + startIdx, + i + 1 + )); + } + } + } + } + } + + return hits; + } + + /** + * 将文本中检测到的敏感词替换为 *** + * + * @param text 原始文本 + * @return 脱敏后的文本 + */ + public String mask(String text) { + List hits = detect(text); + if (hits.isEmpty()) { + return text; + } + + // 按起始位置排序 + hits.sort(Comparator.comparingInt(HitResult::getStartIndex)); + + StringBuilder sb = new StringBuilder(text); + int offset = 0; // 记录因替换导致的长度偏移 + for (HitResult hit : hits) { + int start = hit.getStartIndex() + offset; + int end = hit.getEndIndex() + offset; + String replacement = "***"; + sb.replace(start, end, replacement); + offset += replacement.length() - (hit.getEndIndex() - hit.getStartIndex()); + } + + return sb.toString(); + } + + /** + * 判断命中结果中是否存在需要拦截(level >= 2)的条目 + * + * @param hits 命中结果列表 + * @return 是否有拦截级别的命中 + */ + public boolean hasBlockingHit(List hits) { + return hits.stream().anyMatch(h -> h.getLevel() != null && h.getLevel() >= 2); + } +} diff --git a/src/main/java/com/wok/supportbot/service/ConversationService.java b/src/main/java/com/wok/supportbot/service/ConversationService.java index cfee7da..2e6e264 100644 --- a/src/main/java/com/wok/supportbot/service/ConversationService.java +++ b/src/main/java/com/wok/supportbot/service/ConversationService.java @@ -3,6 +3,7 @@ package com.wok.supportbot.service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.wok.supportbot.dao.ChatMessageMapper; import com.wok.supportbot.entity.ChatMessage; +import com.wok.supportbot.entity.MessageFeedback; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; @@ -21,6 +22,9 @@ public class ConversationService { @Autowired private ChatMessageMapper chatMessageMapper; + @Autowired + private MessageFeedbackService messageFeedbackService; + @Autowired private JdbcTemplate jdbcTemplate; @@ -328,6 +332,13 @@ public class ConversationService { return "会话不存在或无任何消息"; } + // 查询该会话的所有反馈,按 messageId 建立索引 + List feedbacks = messageFeedbackService.getByConversationId(conversationId); + Map feedbackMap = new HashMap<>(); + for (MessageFeedback fb : feedbacks) { + feedbackMap.put(fb.getMessageId(), fb); + } + StringBuilder sb = new StringBuilder(); sb.append("====================================\n"); sb.append("会话导出记录\n"); @@ -342,6 +353,10 @@ public class ConversationService { String type = String.valueOf(msg.get("messageType")); String content = String.valueOf(msg.get("content")); String time = String.valueOf(msg.get("createTime")); + // metadata 中可能包含前端生成的 msgId + @SuppressWarnings("unchecked") + Map metadata = (Map) msg.get("metadata"); + String msgId = metadata != null ? (String) metadata.get("msgId") : null; sb.append("[").append(time).append("] "); switch (type) { @@ -351,7 +366,42 @@ public class ConversationService { default -> sb.append(type); } sb.append("\n"); - sb.append(content).append("\n\n"); + sb.append(content).append("\n"); + + // AI 消息后附加反馈信息 + if ("ASSISTANT".equals(type) && msgId != null) { + MessageFeedback fb = feedbackMap.get(msgId); + if (fb != null) { + if ("THUMBS_UP".equals(fb.getFeedbackType())) { + sb.append(" 👍 用户反馈: 有帮助\n"); + } else if ("THUMBS_DOWN".equals(fb.getFeedbackType())) { + sb.append(" 👎 用户反馈: 没帮助"); + String reason = fb.getReasonCategory(); + String comment = fb.getReasonComment(); + if (reason != null || (comment != null && !comment.isBlank())) { + sb.append(" ("); + List parts = new ArrayList<>(); + if (reason != null) { + String reasonLabel = switch (reason) { + case "inaccurate" -> "信息错误"; + case "irrelevant" -> "不相关"; + case "incomplete" -> "不完整"; + case "other" -> "其他"; + default -> reason; + }; + parts.add("原因: " + reasonLabel); + } + if (comment != null && !comment.isBlank()) { + parts.add("补充: " + comment); + } + sb.append(String.join(", ", parts)); + sb.append(")"); + } + sb.append("\n"); + } + } + } + sb.append("\n"); } sb.append("====================================\n"); diff --git a/src/main/java/com/wok/supportbot/service/DocumentService.java b/src/main/java/com/wok/supportbot/service/DocumentService.java index 7b2e08b..86549a0 100644 --- a/src/main/java/com/wok/supportbot/service/DocumentService.java +++ b/src/main/java/com/wok/supportbot/service/DocumentService.java @@ -532,6 +532,39 @@ public class DocumentService { return searchResults; } + /** + * 多模式搜索(P0-001: 支持向量/关键词/混合检索) + * + * @param searchMode 检索模式:VECTOR(默认)/ KEYWORD / HYBRID + */ + public List searchDocuments(String query, int topK, double similarityThreshold, + List categoryIds, String searchMode) { + if (searchMode == null || searchMode.isEmpty() || "VECTOR".equalsIgnoreCase(searchMode)) { + // 默认向量检索,向后兼容 + List results = searchDocuments(query, topK, similarityThreshold, categoryIds); + results.forEach(r -> r.setSearchMode("VECTOR")); + return results; + } + + // 委托给 HybridSearchService 处理 KEYWORD 和 HYBRID 模式 + if (hybridSearchService != null) { + com.wok.supportbot.rag.SearchMode mode; + try { + mode = com.wok.supportbot.rag.SearchMode.valueOf(searchMode.toUpperCase()); + } catch (IllegalArgumentException e) { + mode = com.wok.supportbot.rag.SearchMode.VECTOR; + } + return hybridSearchService.search(query, mode, topK, similarityThreshold, categoryIds); + } + + // HybridSearchService 不可用时降级到向量检索 + log.warn("HybridSearchService 不可用,降级为向量检索"); + return searchDocuments(query, topK, similarityThreshold, categoryIds); + } + + @Autowired(required = false) + private com.wok.supportbot.rag.HybridSearchService hybridSearchService; + private List normalizeCategoryIds(List categoryIds) { if (categoryIds == null || categoryIds.isEmpty()) { return Collections.emptyList(); diff --git a/src/main/java/com/wok/supportbot/service/FaqMatchEngine.java b/src/main/java/com/wok/supportbot/service/FaqMatchEngine.java new file mode 100644 index 0000000..ab0f31e --- /dev/null +++ b/src/main/java/com/wok/supportbot/service/FaqMatchEngine.java @@ -0,0 +1,363 @@ +package com.wok.supportbot.service; + +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.wok.supportbot.config.EmbeddingModelFactory; +import com.wok.supportbot.dao.KnowledgeFaqMapper; +import com.wok.supportbot.entity.KnowledgeFaq; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.springframework.ai.embedding.EmbeddingModel; +import org.springframework.ai.embedding.EmbeddingRequest; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; + +import java.util.*; +import java.util.concurrent.CompletableFuture; + +/** + * FAQ 三级匹配引擎 + * 1. 精确匹配:问题文本完全一致 + * 2. 关键词匹配:similar_questions 字段包含用户问题中的关键词 + * 3. 语义匹配:基于向量余弦距离的相似度匹配 + */ +@Service +@Slf4j +public class FaqMatchEngine { + + @Autowired + private KnowledgeFaqMapper faqMapper; + + @Autowired + private JdbcTemplate jdbcTemplate; + + @Autowired + private EmbeddingModelFactory embeddingModelFactory; + + /** 向量维度,与 PgVectorStore 保持一致 */ + @Value("${knowledge.vector.dimension:1024}") + private int vectorDimension; + + /** 语义匹配相似度阈值 */ + @Value("${knowledge.faq.semantic-threshold:0.85}") + private double semanticThreshold; + + private final ObjectMapper objectMapper = new ObjectMapper(); + + // ==================== 匹配结果内部类 ==================== + + /** + * FAQ 匹配结果 + */ + @Data + @AllArgsConstructor + public static class FaqMatchResult { + /** 匹配到的 FAQ */ + private KnowledgeFaq faq; + /** 匹配类型: EXACT / KEYWORD / SEMANTIC */ + private String matchType; + /** 匹配分数 (0.0 ~ 1.0) */ + private double score; + } + + // ==================== 核心匹配方法 ==================== + + /** + * 对用户问题进行三级匹配 + * + * @param question 用户问题 + * @return 匹配结果(可能为空) + */ + public Optional match(String question) { + if (question == null || question.isBlank()) { + return Optional.empty(); + } + String trimmedQuestion = question.trim(); + + // 第一级:精确匹配 + Optional exactResult = exactMatch(trimmedQuestion); + if (exactResult.isPresent()) { + log.info("FAQ 精确匹配命中: question={}", trimmedQuestion); + return exactResult; + } + + // 第二级:关键词匹配 + Optional keywordResult = keywordMatch(trimmedQuestion); + if (keywordResult.isPresent()) { + log.info("FAQ 关键词匹配命中: question={}", trimmedQuestion); + return keywordResult; + } + + // 第三级:语义匹配 + Optional semanticResult = semanticMatch(trimmedQuestion); + if (semanticResult.isPresent()) { + log.info("FAQ 语义匹配命中: question={}, score={}", trimmedQuestion, semanticResult.get().getScore()); + return semanticResult; + } + + log.debug("FAQ 未匹配: question={}", trimmedQuestion); + return Optional.empty(); + } + + // ==================== 第一级:精确匹配 ==================== + + /** + * 精确匹配:问题文本完全一致 + */ + private Optional exactMatch(String question) { + try { + List results = jdbcTemplate.query( + "SELECT * FROM knowledge_faq WHERE question = ? AND status = 'ENABLED' AND is_delete = false ORDER BY priority DESC LIMIT 1", + (rs, rowNum) -> mapRowToFaq(rs), + question + ); + if (!results.isEmpty()) { + KnowledgeFaq faq = results.get(0); + incrementHitCount(faq.getId()); + return Optional.of(new FaqMatchResult(faq, "EXACT", 1.0)); + } + } catch (Exception e) { + log.error("FAQ 精确匹配异常", e); + } + return Optional.empty(); + } + + // ==================== 第二级:关键词匹配 ==================== + + /** + * 关键词匹配:从用户问题中提取关键词,检查 similar_questions 是否包含 + */ + private Optional keywordMatch(String question) { + try { + List keywords = extractKeywords(question); + if (keywords.isEmpty()) { + return Optional.empty(); + } + + // 构建 ILIKE 条件 + StringBuilder sqlBuilder = new StringBuilder( + "SELECT * FROM knowledge_faq WHERE status = 'ENABLED' AND is_delete = false AND (" + ); + List params = new ArrayList<>(); + for (int i = 0; i < keywords.size(); i++) { + if (i > 0) { + sqlBuilder.append(" OR "); + } + sqlBuilder.append("similar_questions ILIKE ?"); + params.add("%" + keywords.get(i) + "%"); + } + sqlBuilder.append(") ORDER BY priority DESC LIMIT 5"); + + List results = jdbcTemplate.query( + sqlBuilder.toString(), + (rs, rowNum) -> mapRowToFaq(rs), + params.toArray() + ); + + if (!results.isEmpty()) { + KnowledgeFaq faq = results.get(0); + return Optional.of(new FaqMatchResult(faq, "KEYWORD", 0.9)); + } + } catch (Exception e) { + log.error("FAQ 关键词匹配异常", e); + } + return Optional.empty(); + } + + /** + * 简单分词:按空格、标点切分,过滤短词 + */ + private List extractKeywords(String question) { + String[] tokens = question.split("[\\s,,。?!?!、;;::\"\"''\\(\\)()\\[\\]【】]+"); + List keywords = new ArrayList<>(); + for (String token : tokens) { + String trimmed = token.trim(); + // 过滤长度小于2的token(避免单字匹配过于宽泛) + if (trimmed.length() >= 2) { + keywords.add(trimmed); + } + } + return keywords; + } + + // ==================== 第三级:语义匹配 ==================== + + /** + * 语义匹配:计算问题向量,在 faq_embedding 表中做余弦距离查询 + */ + private Optional semanticMatch(String question) { + try { + EmbeddingModel embeddingModel = embeddingModelFactory.getEmbeddingModel(); + float[] embedding = embeddingModel.call(new EmbeddingRequest(List.of(question), null)) + .getResult().getOutput(); + + // 将向量转为 PGVector 格式字符串 + String vectorStr = toPgVectorFormat(embedding); + + // 余弦距离查询:<=> 运算符返回余弦距离,相似度 = 1 - distance + List> results = jdbcTemplate.queryForList( + "SELECT fe.faq_id, fe.embedding <=> ?::vector AS distance, " + + "kf.id, kf.question, kf.answer, kf.similar_questions, kf.category, " + + "kf.status, kf.priority, kf.hit_count, kf.source, kf.create_time, kf.update_time, kf.is_delete " + + "FROM faq_embedding fe " + + "JOIN knowledge_faq kf ON fe.faq_id = kf.id " + + "WHERE kf.status = 'ENABLED' AND kf.is_delete = false " + + "ORDER BY distance ASC LIMIT 5", + vectorStr + ); + + if (!results.isEmpty()) { + Map topResult = results.get(0); + double distance = ((Number) topResult.get("distance")).doubleValue(); + double similarity = 1.0 - distance; + + if (similarity >= semanticThreshold) { + KnowledgeFaq faq = mapResultToFaq(topResult); + incrementHitCount(faq.getId()); + return Optional.of(new FaqMatchResult(faq, "SEMANTIC", similarity)); + } + } + } catch (Exception e) { + log.error("FAQ 语义匹配异常", e); + } + return Optional.empty(); + } + + // ==================== 向量化方法 ==================== + + /** + * 计算并保存单条 FAQ 的向量嵌入 + * + * @param faqId FAQ ID + * @param question FAQ 问题文本 + */ + public void computeAndSaveEmbedding(Long faqId, String question) { + try { + EmbeddingModel embeddingModel = embeddingModelFactory.getEmbeddingModel(); + float[] embedding = embeddingModel.call(new EmbeddingRequest(List.of(question), null)) + .getResult().getOutput(); + + String vectorStr = toPgVectorFormat(embedding); + + // 获取当前模型名称用于记录 + String modelName = "unknown"; + try { + var config = embeddingModel.getClass().getSimpleName(); + modelName = config; + } catch (Exception ignored) { + } + + // 先删除旧记录,再插入新记录 + jdbcTemplate.update("DELETE FROM faq_embedding WHERE faq_id = ?", faqId); + jdbcTemplate.update( + "INSERT INTO faq_embedding (faq_id, embedding, model_name) VALUES (?, ?::vector, ?)", + faqId, vectorStr, modelName + ); + + log.info("FAQ 向量已保存: faqId={}, dimension={}", faqId, embedding.length); + } catch (Exception e) { + log.error("FAQ 向量计算/保存失败: faqId={}", faqId, e); + } + } + + /** + * 批量异步计算 FAQ 向量嵌入 + * + * @param faqIds FAQ ID 列表 + */ + public void batchComputeEmbeddings(List faqIds) { + CompletableFuture.runAsync(() -> { + log.info("开始批量计算 FAQ 向量: count={}", faqIds.size()); + int success = 0; + int fail = 0; + for (Long faqId : faqIds) { + try { + // 查询 FAQ 问题文本 + String question = jdbcTemplate.queryForObject( + "SELECT question FROM knowledge_faq WHERE id = ? AND is_delete = false", + String.class, faqId + ); + if (question != null) { + computeAndSaveEmbedding(faqId, question); + success++; + } + } catch (Exception e) { + log.error("批量计算 FAQ 向量失败: faqId={}", faqId, e); + fail++; + } + } + log.info("批量计算 FAQ 向量完成: success={}, fail={}", success, fail); + }); + } + + // ==================== 工具方法 ==================== + + /** + * 将 float[] 转为 PGVector 格式字符串: [0.1,0.2,0.3] + */ + private String toPgVectorFormat(float[] embedding) { + StringBuilder sb = new StringBuilder("["); + for (int i = 0; i < embedding.length; i++) { + if (i > 0) { + sb.append(","); + } + sb.append(embedding[i]); + } + sb.append("]"); + return sb.toString(); + } + + /** + * 增加 FAQ 命中次数 + */ + private void incrementHitCount(Long faqId) { + try { + jdbcTemplate.update("UPDATE knowledge_faq SET hit_count = hit_count + 1 WHERE id = ?", faqId); + } catch (Exception e) { + log.warn("更新 FAQ 命中次数失败: faqId={}", faqId, e); + } + } + + /** + * 从 ResultSet 映射为 KnowledgeFaq 实体 + */ + private KnowledgeFaq mapRowToFaq(java.sql.ResultSet rs) throws java.sql.SQLException { + KnowledgeFaq faq = new KnowledgeFaq(); + faq.setId(rs.getLong("id")); + faq.setQuestion(rs.getString("question")); + faq.setAnswer(rs.getString("answer")); + faq.setSimilarQuestions(rs.getString("similar_questions")); + faq.setCategory(rs.getString("category")); + faq.setStatus(rs.getString("status")); + faq.setPriority(rs.getInt("priority")); + faq.setHitCount(rs.getLong("hit_count")); + faq.setSource(rs.getString("source")); + faq.setCreateTime(rs.getTimestamp("create_time")); + faq.setUpdateTime(rs.getTimestamp("update_time")); + faq.setDelete(rs.getBoolean("is_delete")); + return faq; + } + + /** + * 从 Map 结果映射为 KnowledgeFaq 实体(语义匹配使用) + */ + private KnowledgeFaq mapResultToFaq(Map result) { + KnowledgeFaq faq = new KnowledgeFaq(); + faq.setId(((Number) result.get("id")).longValue()); + faq.setQuestion((String) result.get("question")); + faq.setAnswer((String) result.get("answer")); + faq.setSimilarQuestions((String) result.get("similar_questions")); + faq.setCategory((String) result.get("category")); + faq.setStatus((String) result.get("status")); + faq.setPriority(((Number) result.get("priority")).intValue()); + faq.setHitCount(((Number) result.get("hit_count")).longValue()); + faq.setSource((String) result.get("source")); + faq.setCreateTime(result.get("create_time") instanceof java.sql.Timestamp ts ? new Date(ts.getTime()) : null); + faq.setUpdateTime(result.get("update_time") instanceof java.sql.Timestamp ts ? new Date(ts.getTime()) : null); + faq.setDelete(Boolean.TRUE.equals(result.get("is_delete"))); + return faq; + } +} diff --git a/src/main/java/com/wok/supportbot/service/FaqService.java b/src/main/java/com/wok/supportbot/service/FaqService.java new file mode 100644 index 0000000..9d10964 --- /dev/null +++ b/src/main/java/com/wok/supportbot/service/FaqService.java @@ -0,0 +1,299 @@ +package com.wok.supportbot.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.wok.supportbot.dao.KnowledgeFaqMapper; +import com.wok.supportbot.entity.KnowledgeFaq; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import java.util.concurrent.CompletableFuture; + +/** + * FAQ 知识库 CRUD 服务 + */ +@Service +@Slf4j +public class FaqService { + + @Autowired + private KnowledgeFaqMapper faqMapper; + + @Autowired + private JdbcTemplate jdbcTemplate; + + @Autowired + private FaqMatchEngine faqMatchEngine; + + private final ObjectMapper objectMapper = new ObjectMapper(); + + // ==================== 分页查询 ==================== + + /** + * 分页查询 FAQ 列表 + * + * @param page 页码(从1开始) + * @param size 每页条数 + * @param keyword 关键词搜索(question LIKE,可选) + * @param category 分类过滤(可选) + * @param status 状态过滤(可选) + * @return 分页结果 Map {total, records} + */ + public Map list(int page, int size, String keyword, String category, String status) { + QueryWrapper wrapper = new QueryWrapper<>(); + + if (keyword != null && !keyword.isBlank()) { + wrapper.like("question", keyword.trim()); + } + if (category != null && !category.isBlank()) { + wrapper.eq("category", category.trim()); + } + if (status != null && !status.isBlank()) { + wrapper.eq("status", status.trim()); + } + + Long total = faqMapper.selectCount(wrapper); + + wrapper.orderByDesc("priority").orderByDesc("create_time"); + wrapper.last("LIMIT " + size + " OFFSET " + (page - 1) * size); + List records = faqMapper.selectList(wrapper); + + Map result = new HashMap<>(); + result.put("total", total); + result.put("records", records); + return result; + } + + // ==================== 新增 ==================== + + /** + * 新增 FAQ,新增后异步计算向量 + */ + @Transactional(rollbackFor = Exception.class) + public KnowledgeFaq create(KnowledgeFaq faq) { + // 设置默认值 + if (faq.getStatus() == null || faq.getStatus().isBlank()) { + faq.setStatus("ENABLED"); + } + if (faq.getPriority() == null) { + faq.setPriority(0); + } + if (faq.getHitCount() == null) { + faq.setHitCount(0L); + } + if (faq.getSource() == null || faq.getSource().isBlank()) { + faq.setSource("manual"); + } + if (faq.getSimilarQuestions() == null) { + faq.setSimilarQuestions("[]"); + } + faq.setCreateTime(new Date()); + faq.setUpdateTime(new Date()); + + faqMapper.insert(faq); + log.info("FAQ 已创建: id={}, question={}", faq.getId(), faq.getQuestion()); + + // 异步计算向量 + CompletableFuture.runAsync(() -> faqMatchEngine.computeAndSaveEmbedding(faq.getId(), faq.getQuestion())); + + return faq; + } + + // ==================== 修改 ==================== + + /** + * 修改 FAQ,修改后重新计算向量 + */ + @Transactional(rollbackFor = Exception.class) + public KnowledgeFaq update(Long id, KnowledgeFaq faq) { + KnowledgeFaq existing = faqMapper.selectById(id); + if (existing == null) { + throw new IllegalArgumentException("FAQ 不存在: id=" + id); + } + + // 更新非空字段 + if (faq.getQuestion() != null) { + existing.setQuestion(faq.getQuestion()); + } + if (faq.getAnswer() != null) { + existing.setAnswer(faq.getAnswer()); + } + if (faq.getSimilarQuestions() != null) { + existing.setSimilarQuestions(faq.getSimilarQuestions()); + } + if (faq.getCategory() != null) { + existing.setCategory(faq.getCategory()); + } + if (faq.getStatus() != null) { + existing.setStatus(faq.getStatus()); + } + if (faq.getPriority() != null) { + existing.setPriority(faq.getPriority()); + } + existing.setUpdateTime(new Date()); + + faqMapper.updateById(existing); + log.info("FAQ 已更新: id={}", id); + + // 问题文本变更时重新计算向量 + CompletableFuture.runAsync(() -> faqMatchEngine.computeAndSaveEmbedding(id, existing.getQuestion())); + + return existing; + } + + // ==================== 删除 ==================== + + /** + * 逻辑删除 FAQ,同时删除 faq_embedding 中对应记录 + */ + @Transactional(rollbackFor = Exception.class) + public void delete(Long id) { + KnowledgeFaq existing = faqMapper.selectById(id); + if (existing == null) { + throw new IllegalArgumentException("FAQ 不存在: id=" + id); + } + + // 逻辑删除 FAQ + faqMapper.deleteById(id); + + // 物理删除对应的向量记录 + jdbcTemplate.update("DELETE FROM faq_embedding WHERE faq_id = ?", id); + + log.info("FAQ 已删除: id={}", id); + } + + // ==================== 启用/禁用 ==================== + + /** + * 切换 FAQ 启用/禁用状态 + */ + @Transactional(rollbackFor = Exception.class) + public void toggleStatus(Long id, String status) { + KnowledgeFaq existing = faqMapper.selectById(id); + if (existing == null) { + throw new IllegalArgumentException("FAQ 不存在: id=" + id); + } + if (!"ENABLED".equals(status) && !"DISABLED".equals(status)) { + throw new IllegalArgumentException("无效的状态值: " + status + ",仅支持 ENABLED/DISABLED"); + } + + existing.setStatus(status); + existing.setUpdateTime(new Date()); + faqMapper.updateById(existing); + + log.info("FAQ 状态已切换: id={}, status={}", id, status); + } + + // ==================== 批量导入 ==================== + + /** + * 批量导入 FAQ(Excel 解析后的数据),批量计算向量 + */ + @Transactional(rollbackFor = Exception.class) + public int batchImport(List faqs) { + if (faqs == null || faqs.isEmpty()) { + return 0; + } + + List importedIds = new ArrayList<>(); + for (KnowledgeFaq faq : faqs) { + // 设置默认值 + if (faq.getStatus() == null || faq.getStatus().isBlank()) { + faq.setStatus("ENABLED"); + } + if (faq.getPriority() == null) { + faq.setPriority(0); + } + if (faq.getHitCount() == null) { + faq.setHitCount(0L); + } + if (faq.getSource() == null || faq.getSource().isBlank()) { + faq.setSource("import"); + } + if (faq.getSimilarQuestions() == null) { + faq.setSimilarQuestions("[]"); + } + faq.setCreateTime(new Date()); + faq.setUpdateTime(new Date()); + + faqMapper.insert(faq); + importedIds.add(faq.getId()); + } + + log.info("FAQ 批量导入完成: count={}", importedIds.size()); + + // 异步批量计算向量 + faqMatchEngine.batchComputeEmbeddings(importedIds); + + return importedIds.size(); + } + + // ==================== 导出 ==================== + + /** + * 导出所有启用的 FAQ + */ + public List exportAll() { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("status", "ENABLED"); + wrapper.orderByDesc("priority").orderByDesc("hit_count"); + return faqMapper.selectList(wrapper); + } + + // ==================== 统计 ==================== + + /** + * 获取 FAQ 匹配统计信息 + * + * @return 统计数据 Map + */ + public Map getStats() { + Map stats = new HashMap<>(); + + // 总 FAQ 数 + Long totalCount = faqMapper.selectCount(new QueryWrapper<>()); + stats.put("totalCount", totalCount); + + // 启用数 + QueryWrapper enabledWrapper = new QueryWrapper<>(); + enabledWrapper.eq("status", "ENABLED"); + Long enabledCount = faqMapper.selectCount(enabledWrapper); + stats.put("enabledCount", enabledCount); + + // 总命中次数 + Long totalHits = jdbcTemplate.queryForObject( + "SELECT COALESCE(SUM(hit_count), 0) FROM knowledge_faq WHERE is_delete = false", + Long.class + ); + stats.put("totalHits", totalHits); + + // Top10 热门 FAQ + List> topFaqs = jdbcTemplate.queryForList( + "SELECT id, question, hit_count, category FROM knowledge_faq " + + "WHERE is_delete = false AND status = 'ENABLED' " + + "ORDER BY hit_count DESC LIMIT 10" + ); + stats.put("topFaqs", topFaqs); + + return stats; + } + + // ==================== 手动重算向量 ==================== + + /** + * 手动重新计算某条 FAQ 的向量 + */ + public void recomputeEmbedding(Long id) { + KnowledgeFaq existing = faqMapper.selectById(id); + if (existing == null) { + throw new IllegalArgumentException("FAQ 不存在: id=" + id); + } + faqMatchEngine.computeAndSaveEmbedding(id, existing.getQuestion()); + log.info("FAQ 向量已重新计算: id={}", id); + } +} diff --git a/src/main/java/com/wok/supportbot/service/IntentRouter.java b/src/main/java/com/wok/supportbot/service/IntentRouter.java new file mode 100644 index 0000000..74dbb0c --- /dev/null +++ b/src/main/java/com/wok/supportbot/service/IntentRouter.java @@ -0,0 +1,119 @@ +package com.wok.supportbot.service; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.wok.supportbot.config.ChatModelFactory; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.ai.chat.model.ChatModel; +import org.springframework.ai.chat.prompt.Prompt; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * LLM 意图分类路由器 + * 使用 ChatModel 对用户问题进行意图分类,决定后续处理流程: + * - FAQ: 常见问题 → FaqMatchEngine 精准匹配 + * - RAG: 知识库检索 → 现有 RAG 流程 + * - CHITCHAT: 闲聊 → 简单对话 + */ +@Service +@Slf4j +public class IntentRouter { + + @Autowired + private ChatModelFactory chatModelFactory; + + private final ObjectMapper objectMapper = new ObjectMapper(); + + /** 意图分类 Prompt 模板 */ + private static final String INTENT_PROMPT_TEMPLATE = """ + 你是一个意图分类器。根据用户问题,判断其属于以下哪个意图: + - FAQ: 常见问题,如产品功能、价格、退换货政策、服务流程等标准问答 + - RAG: 需要查阅文档/知识库才能回答的专业问题或细节问题 + - CHITCHAT: 闲聊、问候、感谢、告别等非业务话题 + + 仅返回JSON格式: {"intent":"FAQ|RAG|CHITCHAT","confidence":0.0-1.0} + 用户问题: %s + """; + + // ==================== 意图结果内部类 ==================== + + /** + * 意图分类结果 + */ + @Data + @AllArgsConstructor + @NoArgsConstructor + public static class IntentResult { + /** 意图类型: FAQ / RAG / CHITCHAT */ + private String intent; + /** 置信度 (0.0 ~ 1.0) */ + private double confidence; + } + + // ==================== 核心路由方法 ==================== + + /** + * 对用户问题进行意图分类 + * + * @param userQuestion 用户问题 + * @return 意图分类结果 + */ + public IntentResult route(String userQuestion) { + if (userQuestion == null || userQuestion.isBlank()) { + return new IntentResult("RAG", 0.0); + } + + try { + ChatModel chatModel = chatModelFactory.getChatModel("CHAT"); + String promptText = INTENT_PROMPT_TEMPLATE.formatted(userQuestion); + Prompt prompt = new Prompt(promptText); + + String response = chatModel.call(prompt).getResult().getOutput().getText(); + log.debug("意图分类原始响应: {}", response); + + return parseIntentResponse(response); + } catch (Exception e) { + log.error("意图分类失败,降级为 RAG: question={}", userQuestion, e); + return new IntentResult("RAG", 0.0); + } + } + + // ==================== 解析方法 ==================== + + /** + * 解析 LLM 返回的 JSON 意图分类结果 + * 如果解析失败,默认返回 RAG(降级到现有流程) + */ + private IntentResult parseIntentResponse(String response) { + try { + // 清理可能的 markdown 代码块包裹 + String cleaned = response.trim(); + if (cleaned.startsWith("```")) { + cleaned = cleaned.replaceAll("^```(?:json)?\\s*", "").replaceAll("\\s*```$", ""); + } + + IntentResult result = objectMapper.readValue(cleaned, IntentResult.class); + + // 校验意图类型有效性 + if (result.getIntent() == null || !isValidIntent(result.getIntent())) { + log.warn("无效的意图类型: {}, 降级为 RAG", result.getIntent()); + return new IntentResult("RAG", 0.5); + } + + return result; + } catch (Exception e) { + log.warn("意图分类 JSON 解析失败,降级为 RAG: response={}", response, e); + return new IntentResult("RAG", 0.0); + } + } + + /** + * 校验意图类型是否有效 + */ + private boolean isValidIntent(String intent) { + return "FAQ".equals(intent) || "RAG".equals(intent) || "CHITCHAT".equals(intent); + } +} diff --git a/src/main/java/com/wok/supportbot/service/MessageFeedbackService.java b/src/main/java/com/wok/supportbot/service/MessageFeedbackService.java new file mode 100644 index 0000000..5d902bd --- /dev/null +++ b/src/main/java/com/wok/supportbot/service/MessageFeedbackService.java @@ -0,0 +1,178 @@ +package com.wok.supportbot.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.wok.supportbot.dao.MessageFeedbackMapper; +import com.wok.supportbot.entity.MessageFeedback; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; + +import java.util.*; + +/** + * 消息反馈服务 + * 提供反馈提交、查询、统计等功能 + */ +@Service +@Slf4j +public class MessageFeedbackService { + + @Autowired + private MessageFeedbackMapper messageFeedbackMapper; + + @Autowired + private JdbcTemplate jdbcTemplate; + + /** + * 提交/修改反馈(upsert 语义) + * 按 messageId 查询,存在则更新(覆盖上次),不存在则插入 + * + * @param feedback 反馈信息 + * @return 保存后的反馈实体 + */ + public MessageFeedback submitFeedback(MessageFeedback feedback) { + // 按 messageId 查询已有反馈 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(MessageFeedback::getMessageId, feedback.getMessageId()); + MessageFeedback existing = messageFeedbackMapper.selectOne(wrapper); + + if (existing != null) { + // 更新已有反馈 + existing.setFeedbackType(feedback.getFeedbackType()); + existing.setReasonCategory(feedback.getReasonCategory()); + existing.setReasonComment(feedback.getReasonComment()); + existing.setUpdateTime(new Date()); + messageFeedbackMapper.updateById(existing); + log.info("更新反馈: messageId={}, type={}", feedback.getMessageId(), feedback.getFeedbackType()); + return existing; + } else { + // 新增反馈 + feedback.setCreateTime(new Date()); + feedback.setUpdateTime(new Date()); + messageFeedbackMapper.insert(feedback); + log.info("新增反馈: messageId={}, type={}", feedback.getMessageId(), feedback.getFeedbackType()); + return feedback; + } + } + + /** + * 按会话ID查询所有反馈 + * + * @param conversationId 会话ID + * @return 反馈列表 + */ + public List getByConversationId(String conversationId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(MessageFeedback::getConversationId, conversationId) + .orderByDesc(MessageFeedback::getCreateTime); + return messageFeedbackMapper.selectList(wrapper); + } + + /** + * 按消息ID查询反馈 + * + * @param messageId 消息ID + * @return 反馈实体(可能为 null) + */ + public MessageFeedback getByMessageId(String messageId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(MessageFeedback::getMessageId, messageId); + return messageFeedbackMapper.selectOne(wrapper); + } + + /** + * 批量查询反馈状态(供 SDK 回显使用) + * + * @param messageIds 消息ID列表 + * @return 反馈列表 + */ + public List getBatchByMessageIds(List messageIds) { + if (messageIds == null || messageIds.isEmpty()) { + return Collections.emptyList(); + } + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(MessageFeedback::getMessageId, messageIds); + return messageFeedbackMapper.selectList(wrapper); + } + + /** + * 获取反馈统计数据 + * + * @param startDate 开始日期(yyyy-MM-dd),可选 + * @param endDate 结束日期(yyyy-MM-dd),可选 + * @return 统计结果 Map + */ + public Map getStats(String startDate, String endDate) { + Map result = new LinkedHashMap<>(); + + // 构建日期过滤条件 + StringBuilder whereClause = new StringBuilder("WHERE is_delete = false "); + List params = new ArrayList<>(); + if (startDate != null && !startDate.isBlank()) { + whereClause.append("AND create_time >= ?::timestamp "); + params.add(startDate + " 00:00:00"); + } + if (endDate != null && !endDate.isBlank()) { + whereClause.append("AND create_time <= ?::timestamp "); + params.add(endDate + " 23:59:59"); + } + + // 总反馈数、👍数、👎数 + String countSql = """ + SELECT + COUNT(*) AS total, + COUNT(*) FILTER (WHERE feedback_type = 'THUMBS_UP') AS thumbs_up, + COUNT(*) FILTER (WHERE feedback_type = 'THUMBS_DOWN') AS thumbs_down + FROM message_feedback + """ + whereClause; + Map counts = jdbcTemplate.queryForMap(countSql, params.toArray()); + long totalFeedbacks = ((Number) counts.get("total")).longValue(); + long thumbsUpCount = ((Number) counts.get("thumbs_up")).longValue(); + long thumbsDownCount = ((Number) counts.get("thumbs_down")).longValue(); + + result.put("totalFeedbacks", totalFeedbacks); + result.put("thumbsUpCount", thumbsUpCount); + result.put("thumbsDownCount", thumbsDownCount); + result.put("satisfactionRate", totalFeedbacks > 0 + ? Math.round((double) thumbsUpCount / totalFeedbacks * 100.0) / 100.0 + : 0.0); + + // 各原因分布(仅统计 THUMBS_DOWN) + String reasonSql = """ + SELECT reason_category, COUNT(*) AS cnt + FROM message_feedback + """ + whereClause + " AND feedback_type = 'THUMBS_DOWN' AND reason_category IS NOT NULL " + + "GROUP BY reason_category ORDER BY cnt DESC"; + List> reasonRows = jdbcTemplate.queryForList(reasonSql, params.toArray()); + Map reasonDistribution = new LinkedHashMap<>(); + for (Map row : reasonRows) { + String category = (String) row.get("reason_category"); + long cnt = ((Number) row.get("cnt")).longValue(); + reasonDistribution.put(category, cnt); + } + result.put("reasonDistribution", reasonDistribution); + + // 按天趋势 + String trendSql = """ + SELECT + DATE(create_time) AS date, + COUNT(*) FILTER (WHERE feedback_type = 'THUMBS_UP') AS up, + COUNT(*) FILTER (WHERE feedback_type = 'THUMBS_DOWN') AS down + FROM message_feedback + """ + whereClause + + " GROUP BY DATE(create_time) ORDER BY date ASC"; + List> trendRows = jdbcTemplate.queryForList(trendSql, params.toArray()); + List> dailyTrends = new ArrayList<>(); + for (Map row : trendRows) { + Map trend = new LinkedHashMap<>(); + trend.put("date", String.valueOf(row.get("date"))); + trend.put("up", ((Number) row.get("up")).longValue()); + trend.put("down", ((Number) row.get("down")).longValue()); + dailyTrends.add(trend); + } + result.put("dailyTrends", dailyTrends); + + return result; + } +} diff --git a/src/main/java/com/wok/supportbot/service/SensitiveWordService.java b/src/main/java/com/wok/supportbot/service/SensitiveWordService.java new file mode 100644 index 0000000..3101ce1 --- /dev/null +++ b/src/main/java/com/wok/supportbot/service/SensitiveWordService.java @@ -0,0 +1,209 @@ +package com.wok.supportbot.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.wok.supportbot.dao.SensitiveWordMapper; +import com.wok.supportbot.entity.SensitiveWord; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 敏感词 CRUD 服务 + */ +@Slf4j +@Service +public class SensitiveWordService { + + @Autowired + private SensitiveWordMapper sensitiveWordMapper; + + @Autowired + private ContentSafetyService contentSafetyService; + + /** + * 分页查询敏感词列表 + * + * @param page 页码(从1开始) + * @param size 每页条数 + * @param keyword 关键词搜索(匹配 word 字段) + * @param category 分类筛选 + * @return 包含 records/total/page/size/pages 的结果 + */ + public Map list(int page, int size, String keyword, String category) { + // 构建计数条件 + QueryWrapper countWrapper = new QueryWrapper<>(); + if (keyword != null && !keyword.isBlank()) { + countWrapper.like("word", keyword); + } + if (category != null && !category.isBlank()) { + countWrapper.eq("category", category); + } + Long total = sensitiveWordMapper.selectCount(countWrapper); + + // 构建列表查询条件 + QueryWrapper listWrapper = new QueryWrapper<>(); + if (keyword != null && !keyword.isBlank()) { + listWrapper.like("word", keyword); + } + if (category != null && !category.isBlank()) { + listWrapper.eq("category", category); + } + listWrapper.orderByDesc("create_time"); + listWrapper.last("LIMIT " + size + " OFFSET " + (long) (page - 1) * size); + List records = sensitiveWordMapper.selectList(listWrapper); + + // 组装返回结果 + Map result = new HashMap<>(); + result.put("records", records); + result.put("total", total); + result.put("page", page); + result.put("size", size); + result.put("pages", (total + size - 1) / size); + return result; + } + + /** + * 新增敏感词(检查重复) + * + * @param word 敏感词实体 + * @return 新增后的实体 + */ + public SensitiveWord create(SensitiveWord word) { + // 检查是否已存在相同的敏感词 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("word", word.getWord()); + Long count = sensitiveWordMapper.selectCount(wrapper); + if (count > 0) { + throw new IllegalArgumentException("敏感词已存在:" + word.getWord()); + } + + // 设置默认值 + if (word.getCategory() == null || word.getCategory().isBlank()) { + word.setCategory("custom"); + } + if (word.getLevel() == null) { + word.setLevel(1); + } + if (word.getIsActive() == null) { + word.setIsActive(true); + } + + sensitiveWordMapper.insert(word); + + // 刷新 DFA 字典树 + contentSafetyService.rebuild(); + log.info("新增敏感词:{}", word.getWord()); + return word; + } + + /** + * 修改敏感词 + * + * @param id 敏感词ID + * @param word 更新内容 + * @return 更新后的实体 + */ + public SensitiveWord update(Long id, SensitiveWord word) { + SensitiveWord existing = sensitiveWordMapper.selectById(id); + if (existing == null) { + throw new IllegalArgumentException("敏感词不存在,ID:" + id); + } + + // 如果修改了 word 内容,检查新词是否与其他记录重复 + if (word.getWord() != null && !word.getWord().equals(existing.getWord())) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("word", word.getWord()); + wrapper.ne("id", id); + Long count = sensitiveWordMapper.selectCount(wrapper); + if (count > 0) { + throw new IllegalArgumentException("敏感词已存在:" + word.getWord()); + } + } + + word.setId(id); + sensitiveWordMapper.updateById(word); + + // 刷新 DFA 字典树 + contentSafetyService.rebuild(); + log.info("修改敏感词,ID:{}", id); + return sensitiveWordMapper.selectById(id); + } + + /** + * 逻辑删除敏感词 + * + * @param id 敏感词ID + */ + public void delete(Long id) { + SensitiveWord existing = sensitiveWordMapper.selectById(id); + if (existing == null) { + throw new IllegalArgumentException("敏感词不存在,ID:" + id); + } + + sensitiveWordMapper.deleteById(id); + + // 刷新 DFA 字典树 + contentSafetyService.rebuild(); + log.info("删除敏感词,ID:{},词:{}", id, existing.getWord()); + } + + /** + * 批量导入敏感词 + * + * @param words 敏感词列表 + * @param category 分类 + * @param level 级别 + * @return 成功导入的数量 + */ + public int batchImport(List words, String category, int level) { + if (words == null || words.isEmpty()) { + return 0; + } + + String cat = (category != null && !category.isBlank()) ? category : "custom"; + int imported = 0; + List toInsert = new ArrayList<>(); + + for (String w : words) { + String trimmed = w.trim(); + if (trimmed.isEmpty()) { + continue; + } + + // 检查是否已存在 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("word", trimmed); + Long count = sensitiveWordMapper.selectCount(wrapper); + if (count > 0) { + continue; // 跳过重复词 + } + + SensitiveWord sw = SensitiveWord.builder() + .word(trimmed) + .category(cat) + .level(level) + .isActive(true) + .build(); + toInsert.add(sw); + imported++; + } + + // 批量插入 + for (SensitiveWord sw : toInsert) { + sensitiveWordMapper.insert(sw); + } + + // 刷新 DFA 字典树 + if (imported > 0) { + contentSafetyService.rebuild(); + log.info("批量导入敏感词完成,成功 {} 个,共提交 {} 个", imported, words.size()); + } + + return imported; + } +} diff --git a/src/main/resources/add-comments.sql b/src/main/resources/add-comments.sql index 57a07b4..c374c67 100644 --- a/src/main/resources/add-comments.sql +++ b/src/main/resources/add-comments.sql @@ -1,3 +1,9 @@ +-- ================================================================ +-- 旧版注释补丁脚本(已合并到 init-database.sql) +-- 如需为已存在的表补充注释,请使用桌面上的 add-table-comments.sql +-- 或直接参考 init-database.sql 中的 COMMENT ON 语句 +-- ================================================================ + -- 重新设置 chat_message 表注释 COMMENT ON TABLE chat_message IS '聊天消息表(存储用户与AI助手的对话历史)'; diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index eed82d0..bb0b96c 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -61,6 +61,9 @@ knowledge: role: # 严格隔离:true=角色未绑定知识库分类时禁止检索任何内容;false=可检索全部知识库 strict-isolation: false + faq: + # FAQ 语义匹配阈值(0-1),低于此值自动降级到 RAG 检索 + semantic-threshold: 0.85 # ==================== Knife4j API 文档通用配置 ==================== # knife4j.enable 开关在各环境 yml 中配置(生产环境建议关闭) diff --git a/src/main/resources/init-database.sql b/src/main/resources/init-database.sql index 03c692c..c68ad0d 100644 --- a/src/main/resources/init-database.sql +++ b/src/main/resources/init-database.sql @@ -1,6 +1,7 @@ -- ============================================================ --- AI 智能客服系统 - 数据库初始化脚本 +-- AI 智能客服系统 - 数据库初始化脚本(完整版) -- 适用环境: PostgreSQL 12+ 且已安装 pgvector 扩展 +-- 表数量: 14 张(基础 8 张 + P0 阶段新增 6 张) -- -- 使用方法: -- 方式一(psql 命令行): @@ -287,7 +288,212 @@ COMMENT ON COLUMN vector_store.embedding IS '向量嵌入(维度 1024)'; COMMENT ON COLUMN vector_store.create_time IS '创建时间'; COMMENT ON COLUMN vector_store.update_time IS '更新时间'; +-- 全文检索列(混合检索 KEYWORD / HYBRID 模式使用) +ALTER TABLE vector_store ADD COLUMN IF NOT EXISTS content_tsvector tsvector; +CREATE INDEX IF NOT EXISTS idx_vector_store_tsvector ON vector_store USING gin(content_tsvector); + +COMMENT ON COLUMN vector_store.content_tsvector IS '全文检索向量列(tsvector,由触发器自动维护)'; + +-- 全文检索触发器函数 +CREATE OR REPLACE FUNCTION update_content_tsvector() RETURNS trigger AS $$ +BEGIN + NEW.content_tsvector := to_tsvector('simple', coalesce(NEW.content, '')); + RETURN NEW; +END; +$$ LANGUAGE plpgsql; + +DROP TRIGGER IF EXISTS trg_update_content_tsvector ON vector_store; +CREATE TRIGGER trg_update_content_tsvector + BEFORE INSERT OR UPDATE ON vector_store + FOR EACH ROW EXECUTE FUNCTION update_content_tsvector(); + +-- ============================================================ +-- 表 9: ai_model_config — AI 大模型配置表 +-- ============================================================ +CREATE TABLE IF NOT EXISTS ai_model_config ( + id BIGINT PRIMARY KEY, + name VARCHAR(100) NOT NULL, + app_type VARCHAR(32) NOT NULL, + provider VARCHAR(64) NOT NULL, + api_key VARCHAR(256), + model_name VARCHAR(128) NOT NULL, + temperature DOUBLE PRECISION DEFAULT 0.7, + max_tokens INTEGER DEFAULT 2048, + base_url VARCHAR(256), + extra_config JSONB DEFAULT '{}' NOT NULL, + is_active BOOLEAN DEFAULT FALSE NOT NULL, + priority INTEGER DEFAULT 0 NOT NULL, + description VARCHAR(500), + create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + is_delete BOOLEAN NOT NULL DEFAULT FALSE +); + +CREATE INDEX IF NOT EXISTS idx_ai_model_config_app_type ON ai_model_config (app_type); +CREATE INDEX IF NOT EXISTS idx_ai_model_config_active ON ai_model_config (is_active) WHERE is_delete = FALSE; + +COMMENT ON TABLE ai_model_config IS 'AI 大模型配置表(管理多套模型配置,按应用类型绑定)'; +COMMENT ON COLUMN ai_model_config.id IS '主键(雪花算法生成)'; +COMMENT ON COLUMN ai_model_config.name IS '配置名称'; +COMMENT ON COLUMN ai_model_config.app_type IS '应用类型: CHAT / EMBEDDING / RAG_REWRITE / RERANK'; +COMMENT ON COLUMN ai_model_config.provider IS '模型提供商: dashscope / openai / deepseek / moonshot / zhipu / volcengine 等'; +COMMENT ON COLUMN ai_model_config.api_key IS 'API Key(数据库加密存储,前端脱敏展示)'; +COMMENT ON COLUMN ai_model_config.model_name IS '模型名称(如 qwen-turbo、gpt-4o)'; +COMMENT ON COLUMN ai_model_config.temperature IS '温度参数(控制输出随机性,0.0~2.0)'; +COMMENT ON COLUMN ai_model_config.max_tokens IS '最大 Token 数(单次生成上限)'; +COMMENT ON COLUMN ai_model_config.base_url IS 'API 基础地址(可选,用于私有化部署或第三方厂商)'; +COMMENT ON COLUMN ai_model_config.extra_config IS '扩展配置(JSONB,存储 topP、dimensions 等自定义参数)'; +COMMENT ON COLUMN ai_model_config.is_active IS '是否激活(每种 App 类型只能有一个激活配置)'; +COMMENT ON COLUMN ai_model_config.priority IS '优先级(数值越大越优先,多套配置时生效)'; +COMMENT ON COLUMN ai_model_config.description IS '配置描述说明'; +COMMENT ON COLUMN ai_model_config.create_time IS '创建时间'; +COMMENT ON COLUMN ai_model_config.update_time IS '更新时间'; +COMMENT ON COLUMN ai_model_config.is_delete IS '逻辑删除: FALSE=正常 TRUE=已删除'; + +-- ============================================================ +-- 表 10: sensitive_word — 敏感词表(P0-004 内容安全过滤) +-- ============================================================ +CREATE TABLE IF NOT EXISTS sensitive_word ( + id BIGSERIAL PRIMARY KEY, + word VARCHAR(256) NOT NULL, + category VARCHAR(64) NOT NULL DEFAULT 'custom', + level INTEGER NOT NULL DEFAULT 1, + is_active BOOLEAN NOT NULL DEFAULT TRUE, + remark VARCHAR(512), + create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + is_delete BOOLEAN NOT NULL DEFAULT FALSE +); + +-- 唯一索引:同一分类下敏感词不重复(仅对未删除记录生效) +CREATE UNIQUE INDEX IF NOT EXISTS uk_sensitive_word_word_category ON sensitive_word (word, category) WHERE is_delete = FALSE; +CREATE INDEX IF NOT EXISTS idx_sensitive_word_active ON sensitive_word (is_active) WHERE is_delete = FALSE; + +COMMENT ON TABLE sensitive_word IS '敏感词表(DFA 引擎驱动的内容安全过滤)'; +COMMENT ON COLUMN sensitive_word.id IS '主键(雪花算法生成)'; +COMMENT ON COLUMN sensitive_word.word IS '敏感词内容'; +COMMENT ON COLUMN sensitive_word.category IS '分类: politics / porn / abuse / custom,默认 custom'; +COMMENT ON COLUMN sensitive_word.level IS '级别: 1=脱敏(MASK) / 2=拦截(BLOCK)'; +COMMENT ON COLUMN sensitive_word.is_active IS '是否启用'; +COMMENT ON COLUMN sensitive_word.remark IS '备注说明'; +COMMENT ON COLUMN sensitive_word.create_time IS '创建时间'; +COMMENT ON COLUMN sensitive_word.update_time IS '更新时间'; +COMMENT ON COLUMN sensitive_word.is_delete IS '逻辑删除: FALSE=正常 TRUE=已删除'; + +-- ============================================================ +-- 表 11: content_audit_log — 内容审计日志表(P0-004,只追加不删除) +-- ============================================================ +CREATE TABLE IF NOT EXISTS content_audit_log ( + id BIGSERIAL PRIMARY KEY, + session_id VARCHAR(64), + direction VARCHAR(16) NOT NULL, + original_text TEXT NOT NULL, + hit_words JSONB NOT NULL DEFAULT '[]', + action_taken VARCHAR(32) NOT NULL, + create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP +); + +CREATE INDEX IF NOT EXISTS idx_audit_log_created ON content_audit_log (create_time DESC); +CREATE INDEX IF NOT EXISTS idx_audit_log_session ON content_audit_log (session_id); + +COMMENT ON TABLE content_audit_log IS '内容审计日志表(记录所有敏感词命中事件,只追加不删除)'; +COMMENT ON COLUMN content_audit_log.id IS '主键(雪花算法生成)'; +COMMENT ON COLUMN content_audit_log.session_id IS '会话ID(关联 conversation_session)'; +COMMENT ON COLUMN content_audit_log.direction IS '检测方向: INPUT(用户输入) / OUTPUT(AI 输出)'; +COMMENT ON COLUMN content_audit_log.original_text IS '原始违规内容(截断至前 50 字)'; +COMMENT ON COLUMN content_audit_log.hit_words IS '命中词列表(JSON 数组,记录触发的敏感词)'; +COMMENT ON COLUMN content_audit_log.action_taken IS '采取的动作: PASS(放行) / MASK(脱敏) / BLOCK(拦截)'; +COMMENT ON COLUMN content_audit_log.create_time IS '创建时间(事件发生时间)'; + +-- ============================================================ +-- 表 12: message_feedback — 消息反馈表(P0-002 用户反馈系统) +-- ============================================================ +CREATE TABLE IF NOT EXISTS message_feedback ( + id BIGSERIAL PRIMARY KEY, + message_id VARCHAR(128) NOT NULL, + conversation_id VARCHAR(64) NOT NULL, + feedback_type VARCHAR(16) NOT NULL, + reason_category VARCHAR(64), + reason_comment TEXT, + create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + is_delete BOOLEAN NOT NULL DEFAULT FALSE +); + +-- 唯一索引:每条消息只能有一条反馈(重复提交覆盖,upsert 语义) +CREATE UNIQUE INDEX IF NOT EXISTS uk_message_feedback_message ON message_feedback (message_id) WHERE is_delete = FALSE; +CREATE INDEX IF NOT EXISTS idx_feedback_conversation ON message_feedback (conversation_id); +CREATE INDEX IF NOT EXISTS idx_feedback_type ON message_feedback (feedback_type) WHERE is_delete = FALSE; +CREATE INDEX IF NOT EXISTS idx_feedback_created ON message_feedback (create_time DESC); + +COMMENT ON TABLE message_feedback IS '消息反馈表(用户对 AI 回复的点赞/点踩反馈)'; +COMMENT ON COLUMN message_feedback.id IS '主键(雪花算法生成)'; +COMMENT ON COLUMN message_feedback.message_id IS 'AI 消息ID(前端 msgId 或 UUID,唯一索引字段)'; +COMMENT ON COLUMN message_feedback.conversation_id IS '会话ID(关联 chat_message)'; +COMMENT ON COLUMN message_feedback.feedback_type IS '反馈类型: THUMBS_UP(有帮助) / THUMBS_DOWN(没帮助)'; +COMMENT ON COLUMN message_feedback.reason_category IS '点踩原因分类: inaccurate / irrelevant / incomplete / other(仅 THUMBS_DOWN 时可选)'; +COMMENT ON COLUMN message_feedback.reason_comment IS '自由文本补充说明(可选)'; +COMMENT ON COLUMN message_feedback.create_time IS '创建时间'; +COMMENT ON COLUMN message_feedback.update_time IS '更新时间(重复提交时覆盖)'; +COMMENT ON COLUMN message_feedback.is_delete IS '逻辑删除: FALSE=正常 TRUE=已删除'; + +-- ============================================================ +-- 表 13: knowledge_faq — FAQ 知识库表(P0-003 意图识别 + FAQ 精准匹配) +-- ============================================================ +CREATE TABLE IF NOT EXISTS knowledge_faq ( + id BIGSERIAL PRIMARY KEY, + question TEXT NOT NULL, + answer TEXT NOT NULL, + similar_questions TEXT NOT NULL DEFAULT '[]', + category VARCHAR(128), + status VARCHAR(20) NOT NULL DEFAULT 'ENABLED', + priority INTEGER NOT NULL DEFAULT 0, + hit_count BIGINT NOT NULL DEFAULT 0, + source VARCHAR(64) DEFAULT 'manual', + create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + is_delete BOOLEAN NOT NULL DEFAULT FALSE +); + +CREATE INDEX IF NOT EXISTS idx_faq_status ON knowledge_faq (status) WHERE is_delete = FALSE; +CREATE INDEX IF NOT EXISTS idx_faq_category ON knowledge_faq (category); +CREATE INDEX IF NOT EXISTS idx_faq_priority ON knowledge_faq (priority DESC); + +COMMENT ON TABLE knowledge_faq IS 'FAQ 知识库表(用于意图路由后的精准问答匹配)'; +COMMENT ON COLUMN knowledge_faq.id IS '主键(雪花算法生成)'; +COMMENT ON COLUMN knowledge_faq.question IS '标准问题'; +COMMENT ON COLUMN knowledge_faq.answer IS '标准答案'; +COMMENT ON COLUMN knowledge_faq.similar_questions IS '相似问题列表(JSON 字符串数组,用于扩展匹配范围)'; +COMMENT ON COLUMN knowledge_faq.category IS 'FAQ 分类'; +COMMENT ON COLUMN knowledge_faq.status IS '状态: ENABLED(启用) / DISABLED(禁用)'; +COMMENT ON COLUMN knowledge_faq.priority IS '优先级(数值越大越优先匹配,默认 0)'; +COMMENT ON COLUMN knowledge_faq.hit_count IS '命中次数统计(用于分析高频问题)'; +COMMENT ON COLUMN knowledge_faq.source IS '来源: manual(手动录入) / import(批量导入)'; +COMMENT ON COLUMN knowledge_faq.create_time IS '创建时间'; +COMMENT ON COLUMN knowledge_faq.update_time IS '更新时间'; +COMMENT ON COLUMN knowledge_faq.is_delete IS '逻辑删除: FALSE=正常 TRUE=已删除'; + +-- ============================================================ +-- 表 14: faq_embedding — FAQ 向量索引表(P0-003,FAQ 语义匹配用) +-- ============================================================ +CREATE TABLE IF NOT EXISTS faq_embedding ( + id BIGSERIAL PRIMARY KEY, + faq_id BIGINT NOT NULL, + embedding vector(1024) NOT NULL, + model_name VARCHAR(64) NOT NULL, + create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP +); + +CREATE INDEX IF NOT EXISTS idx_faq_emb_faq_id ON faq_embedding (faq_id); + +COMMENT ON TABLE faq_embedding IS 'FAQ 向量索引表(存储 FAQ 的语义向量,用于相似问题语义匹配)'; +COMMENT ON COLUMN faq_embedding.id IS '主键'; +COMMENT ON COLUMN faq_embedding.faq_id IS '关联 FAQ ID(对应 knowledge_faq.id)'; +COMMENT ON COLUMN faq_embedding.embedding IS '向量嵌入(维度由 knowledge.vector.dimension 配置,默认 1024)'; +COMMENT ON COLUMN faq_embedding.model_name IS '使用的 Embedding 模型名称(用于检测模型变更后重新计算)'; +COMMENT ON COLUMN faq_embedding.create_time IS '创建时间'; + -- ============================================================ -- 完成! --- 共创建 8 张表及对应索引。 +-- 共创建 14 张表及对应索引。 -- ============================================================ diff --git a/src/main/resources/knowledge-base.sql b/src/main/resources/knowledge-base.sql index fc7d6cd..2436dfe 100644 --- a/src/main/resources/knowledge-base.sql +++ b/src/main/resources/knowledge-base.sql @@ -1,6 +1,7 @@ -- ================================================================ -- 知识库管理增强 - 数据库变更脚本 -- 说明: 为知识库管理功能添加分类表和文档管理表 +-- 注意: 此脚本为早期版本,完整初始化请使用 init-database.sql -- ================================================================ -- ================================================================ @@ -48,6 +49,7 @@ CREATE TABLE IF NOT EXISTS knowledge_document ( chunk_count INTEGER DEFAULT 0 NOT NULL, status VARCHAR(20) DEFAULT 'PROCESSING' NOT NULL, error_message TEXT, + content_hash VARCHAR(64), create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL, update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL, is_delete BOOLEAN DEFAULT FALSE NOT NULL @@ -68,6 +70,7 @@ COMMENT ON COLUMN knowledge_document.tags IS '标签列表(JSON数组)'; COMMENT ON COLUMN knowledge_document.chunk_count IS '分块数量'; COMMENT ON COLUMN knowledge_document.status IS '处理状态 - PROCESSING/READY/FAILED'; COMMENT ON COLUMN knowledge_document.error_message IS '处理失败时的错误信息'; +COMMENT ON COLUMN knowledge_document.content_hash IS '内容 SHA-256 哈希值(用于文档去重校验)'; COMMENT ON COLUMN knowledge_document.create_time IS '创建时间'; COMMENT ON COLUMN knowledge_document.update_time IS '更新时间'; COMMENT ON COLUMN knowledge_document.is_delete IS '删除标志 - false:未删除, true:已删除(逻辑删除)'; @@ -76,3 +79,4 @@ COMMENT ON COLUMN knowledge_document.is_delete IS '删除标志 - false:未删 CREATE INDEX IF NOT EXISTS idx_knowledge_document_category ON knowledge_document (category_id); CREATE INDEX IF NOT EXISTS idx_knowledge_document_status ON knowledge_document (status); CREATE INDEX IF NOT EXISTS idx_knowledge_document_create_time ON knowledge_document (create_time DESC); +CREATE INDEX IF NOT EXISTS idx_knowledge_document_content_hash ON knowledge_document (content_hash); diff --git a/src/main/resources/static/components/ChatPanel.js b/src/main/resources/static/components/ChatPanel.js index 98739f2..ec234ac 100644 --- a/src/main/resources/static/components/ChatPanel.js +++ b/src/main/resources/static/components/ChatPanel.js @@ -2,7 +2,7 @@ * 智能客服对话面板 */ import { ref, computed, nextTick, onMounted } from 'vue' -import { chatSync, chatRagSync, chatSSEUrl, chatRagSSEUrl, getRoleList, getAccountList, truncateConversation, ragSources } from '../js/api.js' +import { chatSync, chatRagSync, chatSSEUrl, chatRagSSEUrl, getRoleList, getAccountList, truncateConversation, ragSources, submitFeedback as submitFeedbackApi } from '../js/api.js' import { toast, readSSEStream, renderMarkdown } from '../js/utils.js' import { store } from '../js/store.js' import MessageSources from './MessageSources.js' @@ -124,6 +124,10 @@ export default { + @@ -201,6 +205,10 @@ export default { return new Date().toLocaleTimeString('zh-CN', { hour: '2-digit', minute: '2-digit' }) } + function generateMsgId() { + return 'msg_' + Date.now() + '_' + Math.random().toString(36).substring(2, 8) + } + function newChatId() { chatId.value = 'web_' + Date.now() + '_' + Math.random().toString(36).slice(2, 8) } @@ -301,9 +309,9 @@ export default { userInput.value = '' lastUserInput.value = text isSending.value = true - messages.value.push({ role: 'user', content: text, streaming: false, time: formatTime() }) + messages.value.push({ id: generateMsgId(), role: 'user', content: text, streaming: false, time: formatTime() }) - const assistantMsg = { role: 'assistant', content: '', streaming: true, time: formatTime(), sources: [] } + const assistantMsg = { id: generateMsgId(), role: 'assistant', content: '', streaming: true, time: formatTime(), sources: [] } messages.value.push(assistantMsg) await scrollToBottom() @@ -426,6 +434,30 @@ export default { } } + // ===== P0-002: 消息反馈 ===== + async function submitFeedback(msgId, type) { + const msgIndex = messages.value.findIndex(m => m.id === msgId && m.role === 'assistant') + if (msgIndex === -1) return + + const msg = messages.value[msgIndex] + const wasActive = msg.feedback === type + const newFeedback = wasActive ? null : type + msg.feedback = newFeedback + + try { + await submitFeedbackApi({ + messageId: String(msgId), + conversationId: chatId.value, + feedbackType: newFeedback ? (newFeedback === 'up' ? 'THUMBS_UP' : 'THUMBS_DOWN') : null + }) + if (newFeedback) { + toast(newFeedback === 'up' ? '感谢反馈 👍' : '感谢反馈,我们会持续改进', 'success') + } + } catch (e) { + console.error('反馈提交失败:', e) + } + } + onMounted(() => { newChatId() store.loadCategories() @@ -464,7 +496,8 @@ export default { startEditMessage, cancelEdit, submitEdit, - regenerate + regenerate, + submitFeedback } } -} +} \ No newline at end of file diff --git a/src/main/resources/static/components/DocSearch.js b/src/main/resources/static/components/DocSearch.js index c605158..b894475 100644 --- a/src/main/resources/static/components/DocSearch.js +++ b/src/main/resources/static/components/DocSearch.js @@ -1,5 +1,5 @@ /** - * 🔍 语义搜索测试 + * 🔍 知识库搜索测试(支持多种检索模式) */ import { ref } from 'vue' import { searchDocuments } from '../js/api.js' @@ -8,15 +8,23 @@ import { toast } from '../js/utils.js' export default { template: `
-

语义搜索测试

-

输入查询语句,测试知识库检索效果

+

知识库搜索测试

+

输入查询语句,测试知识库检索效果(支持向量、关键词、混合检索三种模式)

+ -
@@ -87,6 +90,7 @@ const app = createApp({ +
@@ -110,5 +114,7 @@ app.component('doc-upload', DocUpload) app.component('doc-detail', DocDetail) app.component('conversation-manager', ConversationManager) app.component('model-config-manager', ModelConfigManager) +app.component('sensitive-word-manager', SensitiveWordManager) +app.component('faq-manager', FaqManager) app.mount('#app') diff --git a/src/main/resources/static/sdk/chatbot-sdk.js b/src/main/resources/static/sdk/chatbot-sdk.js index 8ce0418..8bb38df 100644 --- a/src/main/resources/static/sdk/chatbot-sdk.js +++ b/src/main/resources/static/sdk/chatbot-sdk.js @@ -755,6 +755,36 @@ var ChatbotSDK = (function () { return []; } } + // ==================== P0-002: 消息反馈 ==================== + /** + * 提交消息反馈(点赞/点踩) + */ + async function submitFeedbackApi(messageId, feedbackType) { + if (!currentConfig) + return false; + const url = buildUrl('/feedback'); + try { + const response = await safeFetch(url, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + messageId: String(messageId), + conversationId: currentConfig.chatId, + feedbackType, + }), + }); + if (!response.ok) { + logger.error(`反馈提交失败 status=${response.status}`); + return false; + } + const json = await response.json(); + return json.success || false; + } + catch (err) { + logger.error('反馈提交异常', err); + return false; + } + } /** * 获取会话列表 */ @@ -3654,8 +3684,7 @@ var ChatbotSDK = (function () { // ==================== 消息反馈(👍 / 👎) ==================== /** * 处理消息反馈:切换 AI 消息的点赞/点踩状态 - * 当前仅前端状态持久化(存入 messages 数组 + localStorage), - * 预留后端对接位:TODO 接口 POST /conversation/message/feedback + * 前端状态持久化(存入 messages 数组 + localStorage)+ 调用后端 API 记录反馈 */ function handleFeedback(msgId, value) { if (!messagesContainer$1) @@ -3673,7 +3702,21 @@ var ChatbotSDK = (function () { // 持久化(localStorage) if (config$1) saveMessages(config$1.integrateId, messages); - logger.info(`消息反馈 msgId=${msgId} value=${newValue || 'cleared'}`); + // 调用后端 API 记录反馈 + if (newValue) { + const feedbackType = newValue === 'up' ? 'THUMBS_UP' : 'THUMBS_DOWN'; + submitFeedbackApi(String(msgId), feedbackType).then(success => { + if (success) { + logger.info(`消息反馈已提交 msgId=${msgId} value=${newValue}`); + } + else { + logger.warn(`消息反馈提交失败 msgId=${msgId}(本地状态已更新)`); + } + }); + } + else { + logger.info(`消息反馈已取消 msgId=${msgId}`); + } } function autoResizeInput() { if (!inputEl$1) diff --git a/src/main/resources/static/sdk/chatbot-sdk.js.map b/src/main/resources/static/sdk/chatbot-sdk.js.map index fcaef42..dcb2d5b 100644 --- a/src/main/resources/static/sdk/chatbot-sdk.js.map +++ b/src/main/resources/static/sdk/chatbot-sdk.js.map @@ -1 +1 @@ -{"version":3,"file":"chatbot-sdk.js","sources":["../src/logger.ts","../src/config.ts","../src/i18n.ts","../src/api.ts","../src/styles.ts","../src/utils.ts","../src/dom.ts","../src/storage.ts","../src/markdown.ts","../src/chat.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null],"names":["config","messagesContainer","inputEl","sendBtn","clearBtn","categorySelect","historyPanel","showLoadingFn","hideLoadingFn"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"chatbot-sdk.js","sources":["../src/logger.ts","../src/config.ts","../src/i18n.ts","../src/api.ts","../src/styles.ts","../src/utils.ts","../src/dom.ts","../src/storage.ts","../src/markdown.ts","../src/chat.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null],"names":["config","messagesContainer","inputEl","sendBtn","clearBtn","categorySelect","historyPanel","showLoadingFn","hideLoadingFn"],"mappings":"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"} \ No newline at end of file diff --git a/src/main/resources/static/sdk/chatbot-sdk.min.js b/src/main/resources/static/sdk/chatbot-sdk.min.js index cc8da20..24f36fc 100644 --- a/src/main/resources/static/sdk/chatbot-sdk.min.js +++ b/src/main/resources/static/sdk/chatbot-sdk.min.js @@ -1,2 +1,2 @@ -var ChatbotSDK=function(){"use strict";const e="[ChatbotSDK]";let n=!0,t=null;function r(e){t=e||null}const s={},o={info(t,r){n&&console.log(e,t,void 0!==r?r:"")},warn(t,r){n&&console.warn(e,t,void 0!==r?r:"")},error(n,r){if(console.error(e,n,void 0!==r?r:""),t)try{const e=r instanceof Error&&r.type||"error";t({message:n,code:String(e),detail:r})}catch(e){}},time(e){s[e]=Date.now()},timeEnd(t,r){const o=s[t];if(void 0!==o){const a=Date.now()-o;if(delete s[t],n){const n=r?`${r} ${a}ms`:`${t} ${a}ms`;console.log(e,n)}return a}return 0},lifecycleInit(e,n){this.info(`初始化完成 integrateId=${e} requestDomain=${n}`)},lifecycleDestroy(e){this.info(`销毁实例 integrateId=${e}`)},lifecycleSend(e,n){this.info(`发送消息 integrateId=${e} length=${n}`),this.time(`send_${e}`)},lifecycleReply(e,n){const t=this.timeEnd(`send_${e}`,"AI 回复");this.info(`AI 回复 integrateId=${e} length=${n} duration=${t}ms`)},lifecycleError(e,n,t){this.timeEnd(`send_${e}`),this.error(`请求失败 integrateId=${e} status=${n} message=${t}`)},lifecycleClear(e){this.info(`清空会话 integrateId=${e}`)},lifecycleStreamDone(e,n){const t=this.timeEnd(`send_${e}`,"流式回复");this.info(`流式回复完成 integrateId=${e} length=${n} duration=${t}ms`)},lifecycleCategoryChange(e){this.info(`切换知识库分类 categoryId=${e}`)}},a='\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n';function i(e,n,t){return`\n \n \x3c!-- 高光渐变:模拟玻璃反射 --\x3e\n \n \n \n \n \x3c!-- 机器人身体渐变 --\x3e\n \n \n \n \n \n \x3c!-- 机器人主体(圆角矩形 + 对话气泡尾巴) --\x3e\n \n \n \x3c!-- 高光反射层(左上角弧形高光) --\x3e\n \n \x3c!-- 天线 + 能量球 --\x3e\n \n \n \x3c!-- 眼睛(会眨) --\x3e\n \n \n \x3c!-- 眼睛高光点 --\x3e\n \n \n \x3c!-- 微笑 --\x3e\n \n \x3c!-- 跳动气泡装饰(3 个小圆点) --\x3e\n \n \n \n`}const c=i("rgba(139,92,246,0.6)","rgba(139,92,246,0.45)","rgba(240,171,252,0.85)"),l=i("rgba(16,185,129,0.6)","rgba(16,185,129,0.45)","rgba(110,231,183,0.85)"),d=i("rgba(244,63,94,0.55)","rgba(244,63,94,0.4)","rgba(253,186,116,0.85)"),p=i("rgba(56,189,248,0.6)","rgba(56,189,248,0.45)","rgba(167,139,250,0.85)"),u={"dream-purple":"#A78BFA","mint-tech":"#34D399","coral-peach":"#FB7185","sky-blue":"#7DD3FC"};const k={"zh-CN":{title:"AI 智能助手",minimize:"最小化",close:"关闭",status_online:"在线",welcome_title:"你好,我是 AI 智能助手",welcome_desc:"有什么可以帮你的吗?在下方输入框开始提问吧~",placeholder:"输入您的问题...",send:"发送",stop:"停止生成",new_message:"新消息",copy:"复制",copied:"已复制",retry:"重新生成",retrying:"重新生成中...",loading:"正在思考...",stream_interrupted:"回复被中断",stream_unstable:"网络不稳定,内容可能不完整",category_placeholder:"选择知识库分类",category_all:"全部分类",category_load_error:"加载分类失败",source_title:"参考来源",source_count:"{n} 条参考来源",source_loading:"加载来源中...",clear:"清空对话",clear_confirm:"确定清空所有对话记录?",history_title:"历史会话",history_empty:"暂无历史会话",history_load_error:"加载会话列表失败",history_delete_confirm:"确定删除该会话?",history_export:"导出",history_delete:"删除",history_search:"搜索会话...",history_group_today:"今天",history_group_yesterday:"昨天",history_group_week:"本周",history_group_earlier:"更早",feedback_up:"有帮助",feedback_down:"没帮助",teaser_text:"有什么可以帮你的吗?",new_msg_announce:"收到新消息",error_network:"网络连接失败,请检查网络",error_timeout:"请求超时,请稍后重试",error_server:"服务器异常,请稍后重试",error_cors:"跨域请求被拦截,请联系管理员将当前域名加入 API 白名单",error_auth:"鉴权失败,请联系管理员",error_forbidden:"无访问权限,请联系管理员配置",error_not_found:"请求的资源不存在",error_rate_limit:"请求过于频繁,请稍后重试",error_unavailable:"服务暂不可用,请稍后重试",error_unknown:"请求发生未知错误",error_send:"发送失败,请稍后重试",error_stream_unsupported:"浏览器不支持流式读取"},en:{title:"AI Assistant",minimize:"Minimize",close:"Close",status_online:"Online",welcome_title:"Hi, I am your AI assistant",welcome_desc:"How can I help you? Type your question below to get started.",placeholder:"Type your question...",send:"Send",stop:"Stop generating",new_message:"New message",copy:"Copy",copied:"Copied",retry:"Regenerate",retrying:"Regenerating...",loading:"Thinking...",stream_interrupted:"Response interrupted",stream_unstable:"Network unstable, content may be incomplete",category_placeholder:"Select category",category_all:"All categories",category_load_error:"Failed to load categories",source_title:"Sources",source_count:"{n} source(s)",source_loading:"Loading sources...",clear:"Clear chat",clear_confirm:"Clear all conversation history?",history_title:"History",history_empty:"No conversations yet",history_load_error:"Failed to load conversations",history_delete_confirm:"Delete this conversation?",history_export:"Export",history_delete:"Delete",history_search:"Search conversations...",history_group_today:"Today",history_group_yesterday:"Yesterday",history_group_week:"This Week",history_group_earlier:"Earlier",feedback_up:"Helpful",feedback_down:"Not helpful",teaser_text:"How can I help you?",new_msg_announce:"New message received",error_network:"Network connection failed",error_timeout:"Request timed out, please try again",error_server:"Server error, please try again later",error_cors:"CORS request blocked. Please contact admin to whitelist your domain",error_auth:"Authentication failed, please contact admin",error_forbidden:"Access denied, please contact admin",error_not_found:"Resource not found",error_rate_limit:"Too many requests, please try again later",error_unavailable:"Service temporarily unavailable",error_unknown:"Unknown request error",error_send:"Failed to send, please try again",error_stream_unsupported:"Browser does not support streaming"}};let g="zh-CN";function m(e,n){let t=(k[g]||k["zh-CN"])[e]||k["zh-CN"][e]||e;if(n)for(const[e,r]of Object.entries(n))t=t.replace(`{${e}}`,String(r));return t}let h=null;function b(e){h&&(h.chatId=e)}function f(){return(null==h?void 0:h.chatId)||""}function y(e){if(!h)throw new Error("API 配置未初始化");return`${h.requestDomain.replace(/\/+$/,"")}${e.startsWith("/")?e:`/${e}`}`}function x(e,n,t){null!=t&&("string"==typeof t&&""===t.trim()||e.set(n,String(t)))}async function v(e,n={},t=3e4,r){const s=new AbortController,o=setTimeout(()=>s.abort(),t);r&&(r.aborted?s.abort():r.addEventListener("abort",()=>s.abort(),{once:!0}));try{return await fetch(e,Object.assign(Object.assign({},n),{signal:s.signal,mode:"cors",credentials:"include"}))}catch(e){if(null==r?void 0:r.aborted)throw new w("aborted","aborted");if(e instanceof DOMException&&"AbortError"===e.name)throw new w(m("error_timeout"),"timeout");if(e instanceof TypeError&&e.message.includes("Failed to fetch"))throw new w(m("error_cors"),"cors");throw new w(m("error_network"),"network")}finally{clearTimeout(o)}}class w extends Error{constructor(e,n){super(e),this.name="CskError",this.type=n}}function _(e){switch(e){case 401:return m("error_auth");case 403:return m("error_forbidden");case 404:return m("error_not_found");case 429:return m("error_rate_limit");case 500:return m("error_server");case 502:case 503:return m("error_unavailable");default:return`${m("error_unknown")}(${e})`}}async function E(e){const n=function(e){const n=new URLSearchParams;return n.set("message",e),n.set("chatId",h.chatId),x(n,"roleId",h.integrateId),x(n,"accountId",h.userId),y(`/ai/assistant_app/chat/sync?${n.toString()}`)}(e);o.lifecycleSend(h.integrateId,e.length);try{const e=await v(n);if(!e.ok){const n=_(e.status);throw o.lifecycleError(h.integrateId,String(e.status),n),new w(n,`http_${e.status}`)}const t=await e.text();return o.lifecycleReply(h.integrateId,t.length),t}catch(e){if(e instanceof w)throw e;throw o.lifecycleError(h.integrateId,"unknown",String(e)),new w(m("error_unknown"),"unknown")}}async function C(e,n,t,r,s,a,i){var c;const l=a?function(e,n){const t=new URLSearchParams;return t.set("message",e),t.set("chatId",h.chatId),t.set("rewriteStrategy","REWRITE"),x(t,"roleId",h.integrateId),x(t,"accountId",h.userId),x(t,"categoryId",null!=n?n:h.categoryId),y(`/ai/assistant_app/chat/rag/sse?${t.toString()}`)}(e,s):function(e,n){const t=new URLSearchParams;return t.set("message",e),t.set("chatId",h.chatId),x(t,"roleId",h.integrateId),x(t,"accountId",h.userId),x(t,"categoryId",null!=n?n:h.categoryId),y(`/ai/assistant_app/chat/sse?${t.toString()}`)}(e,s);let d="";o.lifecycleSend(h.integrateId,e.length);try{const e=await v(l,{},6e4,i);if(!e.ok){const n=_(e.status);return o.lifecycleError(h.integrateId,String(e.status),n),void r(new w(n,`http_${e.status}`))}const s=null===(c=e.body)||void 0===c?void 0:c.getReader();if(!s)return void r(new w(m("error_stream_unsupported"),"stream_unsupported"));const a=new TextDecoder("utf-8",{stream:!0});let p="";try{for(;;){const{done:e,value:t}=await s.read();if(e)break;p+=a.decode(t,{stream:!0});const r=p.split("\n");p=r.pop()||"";for(const e of r){const t=e.trim();if(t&&!t.startsWith(":"))if(t.startsWith("data:")){const e=t.substring(5).trim();e&&(d+=e,n(e))}else{if("[DONE]"===t)break;t.startsWith("event:")||t.startsWith("id:")||t.startsWith("retry:")||(d+=t,n(t))}}}if(p.trim()){const e=p.trim();if(e.startsWith("data:")){const t=e.substring(5).trim();t&&(d+=t,n(t))}else"[DONE]"!==e&&(d+=e,n(e))}}catch(e){if(null==i?void 0:i.aborted)o.info(`流式被用户中断,保留已生成内容 length=${d.length}`);else{if(!(d.length>0))throw e;n("\n\n"+m("stream_unstable"))}}finally{s.releaseLock()}o.lifecycleStreamDone(h.integrateId,d.length),t()}catch(e){if((null==i?void 0:i.aborted)||e instanceof w&&"aborted"===e.type)return void t();e instanceof w?r(e):(o.lifecycleError(h.integrateId,"unknown",String(e)),r(new w(m("error_network"),"network")))}}async function I(e,n){const t=function(e,n){const t=new URLSearchParams;return t.set("message",e),t.set("chatId",h.chatId),t.set("rewriteStrategy","REWRITE"),x(t,"roleId",h.integrateId),x(t,"accountId",h.userId),x(t,"categoryId",null!=n?n:h.categoryId),y(`/ai/assistant_app/rag/sources?${t.toString()}`)}(e,n);try{const e=await v(t);if(!e.ok)throw new w(_(e.status),`http_${e.status}`);const n=await e.json();return n.success&&Array.isArray(n.data)?(o.info(`获取引用来源 count=${n.data.length}`),n.data):[]}catch(e){return o.error("获取引用来源失败",e),[]}}async function $(e=1,n=20,t,r){let s=`/conversation/list?page=${e}&size=${n}`;t&&(s+=`&accountId=${encodeURIComponent(t)}`),r&&(s+=`&roleId=${encodeURIComponent(r)}`);const a=y(s);try{const e=await v(a);if(!e.ok)throw new w(_(e.status),`http_${e.status}`);const n=await e.json();return{list:n.success&&Array.isArray(n.data)?n.data:[],total:n.total||0,pages:n.pages||0}}catch(e){return o.error("加载会话列表失败",e),{list:[],total:0,pages:0}}}async function A(e){const n=y(`/conversation/${e}/messages`);try{const e=await v(n);if(!e.ok)throw new w(_(e.status),`http_${e.status}`);const t=await e.json();return{messages:t.success&&Array.isArray(t.data)?t.data:[],total:t.total||0}}catch(e){return o.error("加载会话消息失败",e),{messages:[],total:0}}}async function L(e){const n=y(`/conversation/${e}`);try{const t=await v(n,{method:"DELETE"});if(!t.ok)throw new w(_(t.status),`http_${t.status}`);const r=await t.json();return o.info(`删除会话 id=${e} success=${r.success}`),r.success||!1}catch(e){return o.error("删除会话失败",e),!1}}function S(e){return y(`/conversation/${e}/export`)}async function F(){if(!h)return"";const e=function(e,n){try{return localStorage.getItem(N(e,n))||""}catch(e){return""}}(h.integrateId,h.userId);if(e)return h.chatId=e,o.info(`从缓存恢复 chatId=${e}`),e;try{const e=await $(1,5,h.userId,h.integrateId);if(e.list.length>0){const n=e.list[0],t=n.conversationId||n.chatId||"";if(t)return h.chatId=t,M(h.integrateId,h.userId,t),o.info(`从后端恢复会话 chatId=${t} messageCount=${n.messageCount}`),t}}catch(e){o.warn("查询后端会话列表失败,将生成新 chatId",e)}const n=function(){const e="undefined"!=typeof crypto&&crypto.randomUUID?crypto.randomUUID().substring(0,8):Math.random().toString(36).substring(2,10);return`sdk_${Date.now()}_${e}`}();return h.chatId=n,M(h.integrateId,h.userId,n),o.info(`生成新 chatId=${n}`),n}function N(e,n){return`csk_chatId_${e}${n?"_"+n:""}`}function M(e,n,t){try{t?localStorage.setItem(N(e,n),t):localStorage.removeItem(N(e,n))}catch(e){}}let D=null;function T(e){const n=B(e.primaryColor,-15),t=B(e.primaryColor,18),r=function(e){const n=e.match(/^#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/);return n?`${parseInt(n[1],16)}, ${parseInt(n[2],16)}, ${parseInt(n[3],16)}`:"79, 70, 229"}(e.primaryColor),s=e.launcherTheme?{"dream-purple":{grad1:"#A78BFA",grad2:"#F0ABFC",glow:"167, 139, 250"},"mint-tech":{grad1:"#6EE7B7",grad2:"#34D399",glow:"52, 211, 153"},"coral-peach":{grad1:"#FB7185",grad2:"#FDBA74",glow:"251, 113, 133"},"sky-blue":{grad1:"#7DD3FC",grad2:"#A78BFA",glow:"125, 211, 252"}}[e.launcherTheme]:null;return`\n --csk-primary: ${e.primaryColor};\n --csk-primary-hover: ${n};\n --csk-primary-light: ${t};\n --csk-primary-rgb: ${r};\n --csk-bg-user: linear-gradient(135deg, ${e.primaryColor}, ${n});\n --csk-bg-ai: #ffffff;\n --csk-text-user: #ffffff;\n --csk-text-ai: #1F2937;\n --csk-window-width: ${e.width}px;\n --csk-window-height: ${e.height}px;\n --csk-radius: 16px;\n --csk-shadow-window: 0 12px 48px rgba(15, 23, 42, 0.18), 0 2px 8px rgba(15, 23, 42, 0.06);\n --csk-shadow-bubble: 0 1px 2px rgba(15, 23, 42, 0.06);\n --csk-border: #ECEEF2;\n --csk-bg-app: #F6F7F9;\n ${s?`\n --csk-launcher-grad-1: ${s.grad1};\n --csk-launcher-grad-2: ${s.grad2};\n --csk-launcher-glow: ${s.glow};\n `:""}\n `}function B(e,n){const t=e.match(/^#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/);if(!t)return e;const r=e=>Math.max(0,Math.min(255,e)),s=r(parseInt(t[1],16)+n),o=r(parseInt(t[2],16)+n),a=r(parseInt(t[3],16)+n);return`#${s.toString(16).padStart(2,"0")}${o.toString(16).padStart(2,"0")}${a.toString(16).padStart(2,"0")}`}function q(e){document.querySelector("style[data-csk-sdk]")||(D=document.createElement("style"),D.setAttribute("data-csk-sdk",""),D.textContent=function(e){return`\n/* ChatbotSDK 样式 - csk- 命名空间 */\n.csk-root {\n ${T(e)}\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif;\n font-size: 14px;\n line-height: 1.55;\n color: #1F2937;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n box-sizing: border-box;\n}\n.csk-root *, .csk-root *::before, .csk-root *::after { box-sizing: border-box; }\n\n/* ========== 悬浮按钮 ========== */\n.csk-launcher {\n position: fixed;\n bottom: 24px;\n z-index: 9998;\n width: 60px;\n height: 60px;\n border-radius: 50%;\n background: var(--csk-bg-user);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n color: #fff;\n user-select: none;\n overflow: visible;\n /* 半透明白色光环边框,在白色页面上清晰分离按钮与背景 */\n border: 2.5px solid rgba(255, 255, 255, 0.55);\n /* 三层投影:接地阴影 + 彩色光晕,把按钮从白底「托」出来 */\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.06),\n 0 4px 16px rgba(0, 0, 0, 0.10),\n 0 6px 24px rgba(var(--csk-primary-rgb), 0.28),\n 0 0 48px rgba(var(--csk-primary-rgb), 0.12);\n transition:\n transform 0.25s cubic-bezier(0.34, 1.56, 0.64, 1),\n box-shadow 0.25s ease,\n border-color 0.25s ease;\n animation: csk-launcher-in 0.55s cubic-bezier(0.22, 1, 0.36, 1) both;\n}\n.csk-launcher--right { right: 24px; }\n.csk-launcher--left { left: 24px; }\n\n/* 高光扫过动效 */\n.csk-launcher::before {\n content: '';\n position: absolute;\n top: -50%;\n left: -50%;\n width: 40%;\n height: 200%;\n border-radius: 50%;\n background: linear-gradient(\n 105deg,\n transparent 30%,\n rgba(255, 255, 255, 0.28) 48%,\n rgba(255, 255, 255, 0.1) 52%,\n transparent 70%\n );\n transform: rotate(25deg);\n animation: csk-shimmer 4s ease-in-out infinite;\n pointer-events: none;\n}\n/* 呼吸色晕 — 配合接地阴影,强化白底上的立体存在感 */\n.csk-launcher::after {\n content: '';\n position: absolute;\n inset: -18px;\n border-radius: 50%;\n background: radial-gradient(circle, rgba(var(--csk-primary-rgb), 0.18) 0%, rgba(var(--csk-primary-rgb), 0.05) 45%, transparent 68%);\n animation: csk-breathe 3.5s ease-in-out infinite;\n pointer-events: none;\n}\n.csk-launcher:hover {\n transform: translateY(-3px) scale(1.08);\n border-color: rgba(255, 255, 255, 0.75);\n box-shadow:\n 0 2px 6px rgba(0, 0, 0, 0.10),\n 0 8px 24px rgba(0, 0, 0, 0.14),\n 0 10px 36px rgba(var(--csk-primary-rgb), 0.32),\n 0 0 56px rgba(var(--csk-primary-rgb), 0.14);\n}\n.csk-launcher:hover::before { animation-play-state: paused; }\n.csk-launcher:hover::after {\n animation: none;\n inset: -22px;\n background: radial-gradient(circle, rgba(var(--csk-primary-rgb), 0.22) 0%, rgba(var(--csk-primary-rgb), 0.06) 45%, transparent 68%);\n}\n.csk-launcher:active { transform: scale(0.93); }\n.csk-launcher svg {\n width: 30px;\n height: 30px;\n position: relative;\n z-index: 1;\n filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.15));\n}\n\n@keyframes csk-launcher-in {\n 0% { opacity: 0; transform: scale(0.5) translateY(16px); }\n 60% { transform: scale(1.06) translateY(-2px); }\n 100% { opacity: 1; transform: scale(1) translateY(0); }\n}\n@keyframes csk-shimmer {\n 0%, 100% { left: -60%; opacity: 0; }\n 20% { opacity: 1; }\n 60% { opacity: 1; }\n 80% { left: 120%; opacity: 0; }\n}\n@keyframes csk-breathe {\n 0%, 100% { transform: scale(1); opacity: 1; }\n 50% { transform: scale(1.15); opacity: 0.35; }\n}\n\n/* SVG 图标内部动效:眨眼 */\n.csk-launcher .csk-ico-eye {\n animation: csk-eye-blink 4s ease-in-out infinite;\n}\n@keyframes csk-eye-blink {\n 0%, 42%, 48%, 100% { opacity: 1; }\n 45% { opacity: 0.1; }\n}\n/* SVG 图标内部动效:天线能量闪烁 */\n.csk-launcher .csk-ico-antenna {\n animation: csk-antenna-glow 2s ease-in-out infinite;\n}\n@keyframes csk-antenna-glow {\n 0%, 100% { opacity: 0.5; }\n 50% { opacity: 1; }\n}\n\n/* ========== 磨砂玻璃质感悬浮按钮 ========== */\n.csk-launcher--glass {\n background: linear-gradient(\n 135deg,\n var(--csk-launcher-grad-1, var(--csk-primary)) 0%,\n var(--csk-launcher-grad-2, var(--csk-primary-light)) 100%\n ) !important;\n backdrop-filter: blur(12px) saturate(180%);\n -webkit-backdrop-filter: blur(12px) saturate(180%);\n border: 1.5px solid rgba(255, 255, 255, 0.55) !important;\n /* 多层阴影:接地 + 彩色光晕 + 内阴影立体感 */\n box-shadow:\n 0 2px 4px rgba(0, 0, 0, 0.04),\n 0 6px 20px rgba(0, 0, 0, 0.08),\n 0 8px 32px rgba(var(--csk-launcher-glow, var(--csk-primary-rgb)), 0.30),\n inset 0 1px 1px rgba(255, 255, 255, 0.35),\n inset 0 -1px 1px rgba(0, 0, 0, 0.04) !important;\n}\n.csk-launcher--glass:hover {\n border-color: rgba(255, 255, 255, 0.75) !important;\n box-shadow:\n 0 4px 8px rgba(0, 0, 0, 0.06),\n 0 10px 28px rgba(0, 0, 0, 0.10),\n 0 12px 40px rgba(var(--csk-launcher-glow, var(--csk-primary-rgb)), 0.38),\n inset 0 1px 2px rgba(255, 255, 255, 0.45),\n inset 0 -1px 1px rgba(0, 0, 0, 0.04) !important;\n}\n\n/* 玻璃按钮的呼吸色晕 — 更鲜艳、更醒目 */\n.csk-launcher--glass::after {\n background: radial-gradient(\n circle,\n rgba(var(--csk-launcher-glow, var(--csk-primary-rgb)), 0.28) 0%,\n rgba(var(--csk-launcher-glow, var(--csk-primary-rgb)), 0.10) 40%,\n transparent 65%\n ) !important;\n animation: csk-breathe-glow 3.5s ease-in-out infinite;\n}\n@keyframes csk-breathe-glow {\n 0%, 100% { transform: scale(1); opacity: 0.8; }\n 50% { transform: scale(1.22); opacity: 0.25; }\n}\n\n/* 玻璃按钮的高光扫过 — 更柔和的玻璃质感 */\n.csk-launcher--glass::before {\n background: linear-gradient(\n 115deg,\n transparent 25%,\n rgba(255, 255, 255, 0.35) 45%,\n rgba(255, 255, 255, 0.15) 55%,\n transparent 75%\n ) !important;\n width: 50%;\n animation: csk-shimmer-glass 5s ease-in-out infinite;\n}\n@keyframes csk-shimmer-glass {\n 0%, 100% { left: -70%; opacity: 0; }\n 15% { opacity: 1; }\n 55% { opacity: 1; }\n 70% { left: 130%; opacity: 0; }\n}\n\n/* SVG 内部动效:跳动气泡(3 个小圆点交错弹跳) */\n.csk-launcher .csk-ico-bubble {\n animation: csk-bubble-jump 1.4s ease-in-out infinite;\n}\n.csk-launcher .csk-ico-bubble--1 { animation-delay: 0s; }\n.csk-launcher .csk-ico-bubble--2 { animation-delay: 0.18s; }\n.csk-launcher .csk-ico-bubble--3 { animation-delay: 0.36s; }\n@keyframes csk-bubble-jump {\n 0%, 100% { transform: translateY(0); }\n 40% { transform: translateY(-3.5px); }\n 60% { transform: translateY(-1px); }\n}\n\n/* ========== 聊天弹窗 ========== */\n.csk-window {\n position: fixed;\n bottom: 24px;\n z-index: 9999;\n width: var(--csk-window-width);\n height: var(--csk-window-height);\n max-height: calc(100vh - 48px);\n background: #fff;\n border-radius: var(--csk-radius);\n box-shadow: var(--csk-shadow-window);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n transform-origin: bottom right;\n transition: opacity 0.24s ease, transform 0.24s cubic-bezier(0.34, 1.2, 0.64, 1), visibility 0.24s;\n opacity: 1;\n transform: translateY(0) scale(1);\n visibility: visible;\n pointer-events: auto;\n}\n.csk-window--right { right: 24px; transform-origin: bottom right; }\n.csk-window--left { left: 24px; transform-origin: bottom left; }\n.csk-window--hidden {\n opacity: 0;\n transform: translateY(12px) scale(0.96);\n visibility: hidden;\n pointer-events: none;\n}\n\n/* ========== 头部 ========== */\n.csk-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n min-height: 60px;\n background: var(--csk-bg-user);\n color: #fff;\n cursor: move;\n user-select: none;\n position: relative;\n flex-shrink: 0;\n}\n.csk-header::after {\n content: '';\n position: absolute;\n left: 0; right: 0; bottom: 0;\n height: 24px;\n background: linear-gradient(to bottom, rgba(0,0,0,0.04), transparent);\n pointer-events: none;\n}\n.csk-header__left {\n display: flex;\n align-items: center;\n gap: 12px;\n min-width: 0;\n}\n.csk-header__avatar {\n width: 38px;\n height: 38px;\n border-radius: 50%;\n background: rgba(255, 255, 255, 0.22);\n backdrop-filter: blur(4px);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.25);\n}\n.csk-header__avatar svg { width: 22px; height: 22px; }\n.csk-header__info {\n display: flex;\n flex-direction: column;\n min-width: 0;\n}\n.csk-header__title {\n font-size: 15px;\n font-weight: 600;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n letter-spacing: 0.2px;\n}\n.csk-header__status {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n font-size: 11.5px;\n opacity: 0.9;\n margin-top: 2px;\n}\n.csk-status-dot {\n width: 7px;\n height: 7px;\n border-radius: 50%;\n background: #6EE7B7;\n box-shadow: 0 0 0 0 rgba(110, 231, 183, 0.7);\n animation: csk-status-pulse 2s infinite;\n}\n@keyframes csk-status-pulse {\n 0% { box-shadow: 0 0 0 0 rgba(110, 231, 183, 0.7); }\n 70% { box-shadow: 0 0 0 6px rgba(110, 231, 183, 0); }\n 100% { box-shadow: 0 0 0 0 rgba(110, 231, 183, 0); }\n}\n.csk-header__actions {\n display: flex;\n align-items: center;\n gap: 2px;\n flex-shrink: 0;\n}\n.csk-header__btn,\n.csk-history-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border: none;\n background: transparent;\n color: #fff;\n cursor: pointer;\n border-radius: 8px;\n transition: background 0.15s, transform 0.15s;\n}\n.csk-header__btn:hover,\n.csk-history-btn:hover {\n background: rgba(255, 255, 255, 0.2);\n}\n.csk-header__btn:active,\n.csk-history-btn:active { transform: scale(0.92); }\n\n/* ========== 消息区 ========== */\n.csk-messages {\n flex: 1;\n overflow-y: auto;\n padding: 20px 16px 12px;\n background: var(--csk-bg-app);\n scroll-behavior: smooth;\n}\n.csk-messages::-webkit-scrollbar { width: 6px; }\n.csk-messages::-webkit-scrollbar-track { background: transparent; }\n.csk-messages::-webkit-scrollbar-thumb {\n background: #D8DCE3;\n border-radius: 3px;\n}\n.csk-messages::-webkit-scrollbar-thumb:hover { background: #C2C7D0; }\n\n/* 欢迎空状态 */\n.csk-welcome {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 48px 24px 32px;\n color: #6B7280;\n animation: csk-fade-in 0.3s ease;\n}\n.csk-welcome__avatar {\n width: 56px;\n height: 56px;\n border-radius: 50%;\n background: var(--csk-bg-user);\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 14px;\n box-shadow: 0 6px 18px rgba(var(--csk-primary-rgb), 0.3);\n}\n.csk-welcome__avatar svg { width: 30px; height: 30px; }\n.csk-welcome__title {\n font-size: 15px;\n font-weight: 600;\n color: #1F2937;\n margin-bottom: 4px;\n}\n.csk-welcome__desc {\n font-size: 13px;\n color: #9CA3AF;\n line-height: 1.6;\n}\n\n/* 消息气泡 */\n.csk-msg {\n display: flex;\n margin-bottom: 18px;\n max-width: 100%;\n word-break: break-word;\n animation: csk-msg-in 0.28s cubic-bezier(0.22, 1, 0.36, 1);\n}\n.csk-msg--user {\n flex-direction: row-reverse;\n align-items: flex-end;\n}\n.csk-msg--ai {\n flex-direction: row;\n align-items: flex-start;\n}\n.csk-msg__avatar {\n width: 30px;\n height: 30px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n margin: 0 8px;\n box-shadow: var(--csk-shadow-bubble);\n}\n.csk-msg__avatar svg { width: 18px; height: 18px; }\n.csk-msg__avatar--ai {\n background: #fff;\n color: var(--csk-primary);\n border: 1px solid var(--csk-border);\n}\n.csk-msg__avatar--user {\n background: var(--csk-bg-user);\n color: #fff;\n}\n.csk-msg__content {\n display: flex;\n flex-direction: column;\n min-width: 0;\n max-width: calc(100% - 46px);\n}\n.csk-msg--user .csk-msg__content { align-items: flex-end; }\n.csk-msg--ai .csk-msg__content { align-items: flex-start; }\n.csk-msg__bubble {\n padding: 10px 14px;\n border-radius: 16px;\n font-size: 14px;\n line-height: 1.6;\n box-shadow: var(--csk-shadow-bubble);\n}\n.csk-msg--user .csk-msg__bubble {\n background: var(--csk-bg-user);\n color: var(--csk-text-user);\n border-radius: 16px 16px 4px 16px;\n}\n.csk-msg--ai .csk-msg__bubble {\n background: var(--csk-bg-ai);\n color: var(--csk-text-ai);\n border-radius: 16px 16px 16px 4px;\n border: 1px solid var(--csk-border);\n}\n.csk-msg__time {\n font-size: 11px;\n color: #9CA3AF;\n margin-top: 5px;\n padding: 0 4px;\n}\n\n@keyframes csk-msg-in {\n from { opacity: 0; transform: translateY(8px); }\n to { opacity: 1; transform: translateY(0); }\n}\n@keyframes csk-fade-in {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n/* ========== Loading 动画 ========== */\n.csk-loading {\n display: flex;\n align-items: center;\n margin-bottom: 18px;\n animation: csk-msg-in 0.28s ease;\n}\n.csk-loading__avatar {\n width: 30px;\n height: 30px;\n border-radius: 50%;\n background: #fff;\n color: var(--csk-primary);\n border: 1px solid var(--csk-border);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n margin: 0 8px;\n box-shadow: var(--csk-shadow-bubble);\n}\n.csk-loading__avatar svg { width: 18px; height: 18px; }\n.csk-loading__bubble {\n background: #fff;\n border: 1px solid var(--csk-border);\n border-radius: 16px 16px 16px 4px;\n padding: 12px 16px;\n display: flex;\n align-items: center;\n gap: 5px;\n}\n.csk-loading__dot {\n width: 7px;\n height: 7px;\n border-radius: 50%;\n background: #B4B9C2;\n animation: csk-bounce 1.4s ease-in-out infinite both;\n}\n.csk-loading__dot:nth-child(1) { animation-delay: 0s; }\n.csk-loading__dot:nth-child(2) { animation-delay: 0.16s; }\n.csk-loading__dot:nth-child(3) { animation-delay: 0.32s; }\n\n@keyframes csk-bounce {\n 0%, 80%, 100% { transform: scale(0.6); opacity: 0.6; }\n 40% { transform: scale(1); opacity: 1; }\n}\n\n/* ========== 输入区 ========== */\n.csk-input-area {\n padding: 10px 12px 14px;\n background: #fff;\n border-top: 1px solid var(--csk-border);\n flex-shrink: 0;\n}\n.csk-input-wrap {\n display: flex;\n align-items: flex-end;\n gap: 8px;\n background: var(--csk-bg-app);\n border: 1px solid var(--csk-border);\n border-radius: 14px;\n padding: 6px 6px 6px 14px;\n transition: border-color 0.2s, box-shadow 0.2s, background 0.2s;\n}\n.csk-input-wrap--focus {\n border-color: var(--csk-primary);\n background: #fff;\n box-shadow: 0 0 0 3px rgba(var(--csk-primary-rgb), 0.12);\n}\n.csk-input {\n flex: 1;\n border: none;\n background: transparent;\n padding: 8px 0;\n font-size: 14px;\n outline: none;\n font-family: inherit;\n resize: none;\n min-height: 22px;\n max-height: 120px;\n line-height: 1.5;\n color: #1F2937;\n}\n.csk-input::placeholder { color: #9CA3AF; }\n.csk-root .csk-input:focus-visible { outline: none; }\n.csk-send-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n min-width: 36px;\n border: none;\n border-radius: 10px;\n background: var(--csk-bg-user);\n color: #fff;\n cursor: pointer;\n transition: transform 0.18s, box-shadow 0.18s, opacity 0.18s;\n box-shadow: 0 3px 10px rgba(var(--csk-primary-rgb), 0.3);\n}\n.csk-send-btn:hover:not(:disabled) {\n transform: translateY(-1px);\n box-shadow: 0 5px 14px rgba(var(--csk-primary-rgb), 0.4);\n}\n.csk-send-btn:active:not(:disabled) { transform: scale(0.92); }\n.csk-send-btn:disabled {\n background: #D1D5DB;\n box-shadow: none;\n cursor: not-allowed;\n opacity: 0.7;\n}\n.csk-send-btn svg { width: 18px; height: 18px; }\n\n/* ========== 清空按钮 ========== */\n.csk-clear-btn {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 5px 12px;\n border: 1px solid var(--csk-border);\n border-radius: 999px;\n background: #fff;\n color: #6B7280;\n font-size: 12px;\n cursor: pointer;\n margin: 0 auto 8px;\n transition: all 0.15s;\n font-family: inherit;\n}\n.csk-clear-btn:hover {\n background: #FEF2F2;\n border-color: #FCA5A5;\n color: #DC2626;\n}\n\n/* ========== P1: 知识库分类下拉 ========== */\n.csk-category-bar {\n display: flex;\n align-items: center;\n padding: 8px 12px;\n border-top: 1px solid var(--csk-border);\n background: #FBFBFC;\n gap: 8px;\n flex-shrink: 0;\n}\n.csk-category-bar__label {\n font-size: 13px;\n white-space: nowrap;\n}\n.csk-category-select {\n flex: 1;\n padding: 6px 28px 6px 10px;\n border: 1px solid var(--csk-border);\n border-radius: 8px;\n font-size: 12.5px;\n color: #374151;\n background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%239CA3AF' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E") no-repeat right 9px center;\n appearance: none;\n -webkit-appearance: none;\n outline: none;\n cursor: pointer;\n font-family: inherit;\n transition: border-color 0.2s, box-shadow 0.2s;\n max-width: 220px;\n}\n.csk-category-select:focus {\n border-color: var(--csk-primary);\n box-shadow: 0 0 0 3px rgba(var(--csk-primary-rgb), 0.12);\n}\n\n/* ========== P1: RAG 引用来源卡片 ========== */\n.csk-sources {\n margin-top: 8px;\n border: 1px solid var(--csk-border);\n border-radius: 12px;\n overflow: hidden;\n font-size: 12px;\n max-width: 100%;\n background: #FAFBFC;\n}\n.csk-sources__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 12px;\n background: #F3F4F7;\n cursor: pointer;\n user-select: none;\n transition: background 0.15s;\n}\n.csk-sources__header:hover { background: #ECEEF2; }\n.csk-sources__title {\n display: flex;\n align-items: center;\n gap: 5px;\n font-weight: 500;\n color: #374151;\n}\n.csk-sources__arrow {\n transition: transform 0.2s;\n color: #9CA3AF;\n font-size: 10px;\n}\n.csk-sources--collapsed .csk-sources__arrow { transform: rotate(-90deg); }\n.csk-sources__body {\n border-top: 1px solid var(--csk-border);\n padding: 0;\n}\n.csk-sources--collapsed .csk-sources__body { display: none; }\n.csk-source-item {\n padding: 9px 12px;\n border-bottom: 1px solid #F0F1F4;\n transition: background 0.15s;\n}\n.csk-source-item:last-child { border-bottom: none; }\n.csk-source-item:hover { background: #fff; }\n.csk-source-item__name {\n font-weight: 500;\n color: #1F2937;\n margin-bottom: 3px;\n}\n.csk-source-item__snippet {\n color: #6B7280;\n line-height: 1.5;\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n}\n.csk-source-item__meta {\n font-size: 11px;\n color: #9CA3AF;\n margin-top: 4px;\n}\n\n/* ========== P1: Markdown 渲染样式 ========== */\n.csk-msg--ai .csk-msg__bubble .csk-md-p { margin: 0 0 8px; }\n.csk-msg--ai .csk-msg__bubble .csk-md-p:last-child { margin-bottom: 0; }\n.csk-msg--ai .csk-msg__bubble .csk-md-h1,\n.csk-msg--ai .csk-msg__bubble .csk-md-h2,\n.csk-msg--ai .csk-msg__bubble .csk-md-h3,\n.csk-msg--ai .csk-msg__bubble .csk-md-h4,\n.csk-msg--ai .csk-msg__bubble .csk-md-h5,\n.csk-msg--ai .csk-msg__bubble .csk-md-h6 {\n margin: 14px 0 6px;\n font-weight: 600;\n line-height: 1.3;\n color: #111827;\n}\n.csk-msg--ai .csk-msg__bubble .csk-md-h1 { font-size: 20px; }\n.csk-msg--ai .csk-msg__bubble .csk-md-h2 { font-size: 17px; }\n.csk-msg--ai .csk-msg__bubble .csk-md-h3 { font-size: 15px; }\n.csk-msg--ai .csk-msg__bubble .csk-md-h4 { font-size: 14px; }\n\n.csk-md-code-block {\n background: #1E293B;\n color: #E2E8F0;\n padding: 12px 14px;\n border-radius: 10px;\n overflow-x: auto;\n margin: 8px 0;\n font-size: 13px;\n line-height: 1.55;\n font-family: 'SF Mono', 'Consolas', 'Menlo', 'Monaco', monospace;\n}\n.csk-md-code-block code {\n background: none;\n padding: 0;\n border-radius: 0;\n font-size: inherit;\n color: inherit;\n}\n.csk-md-inline-code {\n background: rgba(var(--csk-primary-rgb), 0.1);\n color: var(--csk-primary);\n padding: 1px 6px;\n border-radius: 5px;\n font-size: 13px;\n font-family: 'SF Mono', 'Consolas', 'Menlo', 'Monaco', monospace;\n}\n.csk-msg--ai .csk-msg__bubble .csk-md-ul,\n.csk-msg--ai .csk-msg__bubble .csk-md-ol {\n padding-left: 22px;\n margin: 6px 0;\n}\n.csk-msg--ai .csk-msg__bubble .csk-md-ul li,\n.csk-msg--ai .csk-msg__bubble .csk-md-ol li { margin-bottom: 4px; }\n.csk-md-blockquote {\n border-left: 3px solid var(--csk-primary);\n padding: 2px 12px;\n margin: 8px 0;\n color: #6B7280;\n background: rgba(var(--csk-primary-rgb), 0.05);\n border-radius: 0 6px 6px 0;\n}\n.csk-md-link {\n color: var(--csk-primary);\n text-decoration: none;\n border-bottom: 1px solid rgba(var(--csk-primary-rgb), 0.3);\n transition: border-color 0.15s;\n}\n.csk-md-link:hover { border-bottom-color: var(--csk-primary); }\n.csk-md-hr {\n border: none;\n border-top: 1px solid var(--csk-border);\n margin: 12px 0;\n}\n\n/* ========== P2: 会话管理面板 ========== */\n.csk-history-panel {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: #fff;\n z-index: 10;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n animation: csk-slide-in 0.24s ease;\n}\n.csk-history-panel--hidden { display: none; }\n@keyframes csk-slide-in {\n from { transform: translateX(100%); opacity: 0.4; }\n to { transform: translateX(0); opacity: 1; }\n}\n.csk-history-panel__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 14px 16px;\n border-bottom: 1px solid var(--csk-border);\n background: var(--csk-bg-app);\n flex-shrink: 0;\n}\n.csk-history-panel__title {\n font-size: 14px;\n font-weight: 600;\n color: #1F2937;\n}\n.csk-history-panel__back {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 5px 12px;\n border: 1px solid var(--csk-border);\n border-radius: 8px;\n background: #fff;\n color: #374151;\n font-size: 12px;\n cursor: pointer;\n transition: all 0.15s;\n font-family: inherit;\n}\n.csk-history-panel__back:hover { background: #F3F4F6; }\n.csk-history-panel__list {\n flex: 1;\n overflow-y: auto;\n padding: 10px;\n}\n.csk-history-panel__list::-webkit-scrollbar { width: 5px; }\n.csk-history-panel__list::-webkit-scrollbar-thumb { background: #E5E7EB; border-radius: 2px; }\n.csk-history-item {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 11px 12px;\n border-radius: 10px;\n cursor: pointer;\n transition: background 0.15s;\n margin-bottom: 5px;\n border: 1px solid transparent;\n}\n.csk-history-item:hover { background: #F3F4F6; }\n.csk-history-item--active {\n background: rgba(var(--csk-primary-rgb), 0.08);\n border-color: rgba(var(--csk-primary-rgb), 0.2);\n}\n.csk-history-item--active:hover { background: rgba(var(--csk-primary-rgb), 0.12); }\n.csk-history-item__info { flex: 1; min-width: 0; }\n.csk-history-item__id {\n font-size: 13px;\n font-weight: 500;\n color: #1F2937;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.csk-history-item__meta {\n font-size: 11px;\n color: #9CA3AF;\n margin-top: 3px;\n}\n.csk-history-item__actions {\n display: flex;\n gap: 4px;\n margin-left: 8px;\n opacity: 0;\n transition: opacity 0.15s;\n}\n.csk-history-item:hover .csk-history-item__actions { opacity: 1; }\n.csk-history-action {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border: none;\n border-radius: 7px;\n cursor: pointer;\n font-size: 12px;\n transition: all 0.15s;\n}\n.csk-history-action--export { background: #EFF6FF; color: #2563EB; }\n.csk-history-action--export:hover { background: #DBEAFE; }\n.csk-history-action--delete { background: #FEF2F2; color: #DC2626; }\n.csk-history-action--delete:hover { background: #FEE2E2; }\n.csk-history-panel__empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 48px 20px;\n color: #9CA3AF;\n font-size: 13px;\n text-align: center;\n}\n.csk-history-panel__empty-icon {\n font-size: 34px;\n margin-bottom: 10px;\n opacity: 0.5;\n}\n.csk-history-panel__loading {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 24px;\n color: #9CA3AF;\n font-size: 13px;\n}\n.csk-history-panel__loadmore {\n display: block;\n width: 100%;\n padding: 10px;\n border: none;\n background: #F9FAFB;\n color: #6B7280;\n font-size: 12px;\n cursor: pointer;\n text-align: center;\n transition: background 0.15s;\n}\n.csk-history-panel__loadmore:hover { background: #F3F4F6; }\n\n/* ========== 快捷问题芯片 ========== */\n.csk-quick-replies {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n justify-content: center;\n margin-top: 18px;\n max-width: 320px;\n}\n.csk-quick-reply {\n border: 1px solid var(--csk-border);\n background: #fff;\n color: #374151;\n font-size: 12.5px;\n padding: 7px 13px;\n border-radius: 999px;\n cursor: pointer;\n font-family: inherit;\n line-height: 1.3;\n transition: all 0.18s ease;\n max-width: 100%;\n}\n.csk-quick-reply:hover {\n border-color: var(--csk-primary);\n color: var(--csk-primary);\n background: rgba(var(--csk-primary-rgb), 0.06);\n transform: translateY(-1px);\n}\n.csk-quick-reply:active { transform: scale(0.96); }\n\n/* ========== AI 消息操作条 ========== */\n.csk-msg__actions {\n display: flex;\n gap: 2px;\n margin-top: 5px;\n padding: 0 2px;\n opacity: 0;\n transition: opacity 0.15s ease;\n}\n.csk-msg--ai:hover .csk-msg__actions { opacity: 1; }\n.csk-msg--streaming .csk-msg__actions { display: none; }\n.csk-action-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 26px;\n height: 26px;\n border: none;\n background: transparent;\n color: #9CA3AF;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n.csk-action-btn:hover {\n background: #F3F4F6;\n color: #374151;\n}\n.csk-action-btn--done { color: #10B981; }\n.csk-action-btn:active { transform: scale(0.9); }\n\n/* ========== 流式打字光标 ========== */\n.csk-caret {\n display: inline-block;\n width: 7px;\n height: 15px;\n margin-left: 2px;\n vertical-align: text-bottom;\n background: var(--csk-primary);\n border-radius: 1px;\n animation: csk-caret-blink 1s step-end infinite;\n}\n@keyframes csk-caret-blink {\n 0%, 50% { opacity: 1; }\n 51%, 100% { opacity: 0; }\n}\n\n/* ========== 代码块复制按钮 ========== */\n.csk-md-code-block { position: relative; }\n.csk-md-code-copy {\n position: absolute;\n top: 8px;\n right: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 26px;\n height: 26px;\n border: none;\n background: rgba(255, 255, 255, 0.12);\n color: #CBD5E1;\n border-radius: 6px;\n cursor: pointer;\n opacity: 0;\n transition: all 0.15s ease;\n}\n.csk-md-code-block:hover .csk-md-code-copy { opacity: 1; }\n.csk-md-code-copy:hover { background: rgba(255, 255, 255, 0.22); color: #fff; }\n.csk-md-code-copy:active { transform: scale(0.9); }\n\n/* ========== 新消息提示按钮 ========== */\n.csk-newmsg {\n position: absolute;\n bottom: 82px;\n left: 50%;\n transform: translateX(-50%);\n z-index: 5;\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 7px 14px;\n border: none;\n background: var(--csk-primary);\n color: #fff;\n font-size: 12px;\n font-family: inherit;\n border-radius: 999px;\n cursor: pointer;\n box-shadow: 0 4px 14px rgba(var(--csk-primary-rgb), 0.38);\n transition: transform 0.2s ease, box-shadow 0.2s ease;\n animation: csk-msg-in 0.25s ease;\n white-space: nowrap;\n}\n.csk-newmsg:hover { transform: translateX(-50%) translateY(-1px); box-shadow: 0 6px 18px rgba(var(--csk-primary-rgb), 0.48); }\n.csk-newmsg:active { transform: translateX(-50%) scale(0.95); }\n.csk-newmsg--hidden { display: none; }\n\n/* ========== 发送按钮停止态 ========== */\n.csk-send-btn--stop {\n background: #EF4444 !important;\n box-shadow: 0 3px 10px rgba(239, 68, 68, 0.35) !important;\n}\n.csk-send-btn--stop:hover:not(:disabled) {\n box-shadow: 0 5px 14px rgba(239, 68, 68, 0.45) !important;\n}\n\n/* ========== 暗色模式 ========== */\n.csk-root.csk-dark {\n --csk-bg-ai: #1E1E2E;\n --csk-text-ai: #E2E8F0;\n --csk-border: #3B3B52;\n --csk-bg-app: #141421;\n color: #E2E8F0;\n}\n.csk-dark .csk-window {\n background: #1A1A2E;\n box-shadow: 0 12px 48px rgba(0, 0, 0, 0.4), 0 2px 8px rgba(0, 0, 0, 0.2);\n}\n.csk-dark .csk-header::after { background: linear-gradient(to bottom, rgba(0,0,0,0.12), transparent); }\n.csk-dark .csk-msg__avatar--ai {\n background: var(--csk-bg-ai);\n color: var(--csk-primary);\n border-color: var(--csk-border);\n}\n.csk-dark .csk-input-area { background: #1A1A2E; border-top-color: var(--csk-border); }\n.csk-dark .csk-input-wrap { background: var(--csk-bg-app); border-color: var(--csk-border); }\n.csk-dark .csk-input-wrap--focus { background: #1A1A2E; border-color: var(--csk-primary); }\n.csk-dark .csk-input { color: #E2E8F0; }\n.csk-dark .csk-loading__avatar { background: var(--csk-bg-ai); border-color: var(--csk-border); }\n.csk-dark .csk-loading__bubble { background: var(--csk-bg-ai); border-color: var(--csk-border); }\n.csk-dark .csk-loading__dot { background: #6B7280; }\n.csk-dark .csk-category-bar { background: #1A1A2E; border-top-color: var(--csk-border); }\n.csk-dark .csk-category-select { background-color: var(--csk-bg-app); border-color: var(--csk-border); color: #E2E8F0; }\n.csk-dark .csk-sources { background: #1E1E2E; border-color: var(--csk-border); }\n.csk-dark .csk-sources__header { background: #25253A; }\n.csk-dark .csk-sources__header:hover { background: #2D2D48; }\n.csk-dark .csk-source-item:hover { background: var(--csk-bg-ai); }\n.csk-dark .csk-source-item__name { color: #E2E8F0; }\n.csk-dark .csk-source-item__meta { color: #6B7280; }\n.csk-dark .csk-history-panel { background: #1A1A2E; }\n.csk-dark .csk-history-panel__header { background: var(--csk-bg-app); border-bottom-color: var(--csk-border); }\n.csk-dark .csk-history-panel__back { background: var(--csk-bg-app); border-color: var(--csk-border); color: #E2E8F0; }\n.csk-dark .csk-history-panel__back:hover { background: #2D2D48; }\n.csk-dark .csk-history-item:hover { background: #25253A; }\n.csk-dark .csk-history-item__id { color: #E2E8F0; }\n.csk-dark .csk-history-item__meta { color: #6B7280; }\n.csk-dark .csk-history-item--active { background: rgba(var(--csk-primary-rgb), 0.15); }\n.csk-dark .csk-history-item--active:hover { background: rgba(var(--csk-primary-rgb), 0.22); }\n.csk-dark .csk-action-btn:hover { background: #2D2D48; color: #E2E8F0; }\n.csk-dark .csk-clear-btn { background: var(--csk-bg-app); border-color: var(--csk-border); color: #9CA3AF; }\n.csk-dark .csk-clear-btn:hover { background: #3B1A1A; border-color: #7F1D1D; color: #FCA5A5; }\n.csk-dark .csk-md-code-block { background: #0F0F1A; }\n.csk-dark .csk-md-blockquote { background: rgba(var(--csk-primary-rgb), 0.08); }\n.csk-dark .csk-md-link { color: var(--csk-primary-light); }\n.csk-dark .csk-msg--ai .csk-msg__bubble { background: var(--csk-bg-ai); color: var(--csk-text-ai); border-color: var(--csk-border); }\n.csk-dark .csk-welcome__title { color: #E2E8F0; }\n.csk-dark .csk-welcome__desc { color: #6B7280; }\n.csk-dark .csk-quick-reply { background: var(--csk-bg-app); border-color: var(--csk-border); color: #CBD5E1; }\n.csk-dark .csk-quick-reply:hover { background: rgba(var(--csk-primary-rgb), 0.12); border-color: var(--csk-primary); color: var(--csk-primary-light); }\n.csk-dark .csk-teaser { background: #2D2D48; color: #E2E8F0; box-shadow: 0 4px 20px rgba(0,0,0,0.35); }\n.csk-dark .csk-teaser::after { border-top-color: #2D2D48; }\n.csk-dark .csk-teaser__close { color: #6B7280; }\n.csk-dark .csk-teaser__close:hover { color: #9CA3AF; }\n.csk-dark .csk-feedback-btn { background: rgba(var(--csk-primary-rgb), 0.1); color: #9CA3AF; }\n.csk-dark .csk-feedback-btn:hover { background: rgba(var(--csk-primary-rgb), 0.2); color: var(--csk-primary-light); }\n.csk-dark .csk-feedback-btn--active { background: rgba(var(--csk-primary-rgb), 0.28); color: var(--csk-primary-light); }\n.csk-dark .csk-history-panel__search-wrap { background: var(--csk-bg-app); border-color: var(--csk-border); }\n.csk-dark .csk-history-panel__search-wrap:focus-within { border-color: var(--csk-primary); }\n.csk-dark .csk-history-panel__search { color: #E2E8F0; }\n.csk-dark .csk-launcher__badge { box-shadow: 0 0 0 2px #1A1A2E; }\n.csk-dark .csk-welcome__avatar { box-shadow: 0 6px 18px rgba(var(--csk-primary-rgb), 0.25); }\n.csk-dark .csk-header__avatar { box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.15); background: rgba(255, 255, 255, 0.1); }\n\n/* ========== Launcher 未读徽章 ========== */\n.csk-launcher__badge {\n position: absolute;\n top: -2px;\n right: -2px;\n width: 16px;\n height: 16px;\n border-radius: 50%;\n background: #EF4444;\n border: 2px solid #fff;\n box-shadow: 0 0 0 2px #fff;\n animation: csk-badge-in 0.28s cubic-bezier(0.34, 1.56, 0.64, 1);\n pointer-events: none;\n}\n.csk-launcher__badge--hidden { display: none; }\n@keyframes csk-badge-in {\n from { transform: scale(0); }\n to { transform: scale(1); }\n}\n\n/* ========== Launcher 提示气泡 ========== */\n.csk-teaser {\n position: fixed;\n bottom: 90px;\n z-index: 9997;\n max-width: 240px;\n padding: 10px 14px;\n background: #fff;\n color: #1F2937;\n font-size: 13px;\n line-height: 1.5;\n border-radius: 12px;\n box-shadow: 0 4px 20px rgba(15, 23, 42, 0.15);\n animation: csk-teaser-in 0.35s cubic-bezier(0.22, 1, 0.36, 1);\n cursor: pointer;\n user-select: none;\n}\n.csk-teaser--right { right: 24px; }\n.csk-teaser--left { left: 24px; }\n.csk-teaser::after {\n content: '';\n position: absolute;\n bottom: -6px;\n right: 28px;\n width: 12px;\n height: 12px;\n background: inherit;\n border-radius: 2px;\n transform: rotate(45deg);\n box-shadow: 2px 2px 4px rgba(15, 23, 42, 0.08);\n}\n.csk-teaser--left::after { right: auto; left: 28px; }\n.csk-teaser__close {\n position: absolute;\n top: 4px;\n right: 6px;\n background: none;\n border: none;\n font-size: 16px;\n color: #9CA3AF;\n cursor: pointer;\n padding: 2px 4px;\n line-height: 1;\n border-radius: 4px;\n}\n.csk-teaser__close:hover { color: #374151; }\n.csk-teaser--hidden { display: none; }\n@keyframes csk-teaser-in {\n from { opacity: 0; transform: translateY(8px) scale(0.95); }\n to { opacity: 1; transform: translateY(0) scale(1); }\n}\n\n/* ========== 消息反馈按钮(👍 / 👎) ========== */\n.csk-feedback-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 26px;\n height: 26px;\n border: none;\n background: rgba(var(--csk-primary-rgb), 0.08);\n color: #9CA3AF;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s ease;\n padding: 0;\n}\n.csk-feedback-btn:hover { background: rgba(var(--csk-primary-rgb), 0.18); color: var(--csk-primary); }\n.csk-feedback-btn--active {\n background: rgba(var(--csk-primary-rgb), 0.28);\n color: var(--csk-primary);\n}\n.csk-feedback-btn--active.down { background: #FEF2F2; color: #EF4444; }\n.csk-feedback-btn:active { transform: scale(0.9); }\n.csk-msg--streaming .csk-feedback-btn { display: none; }\n\n/* ========== 历史会话搜索框 ========== */\n.csk-history-panel__search-wrap {\n padding: 8px 10px;\n border-bottom: 1px solid var(--csk-border);\n flex-shrink: 0;\n}\n.csk-history-panel__search-wrap:focus-within {\n border-bottom-color: var(--csk-primary);\n}\n.csk-history-panel__search {\n width: 100%;\n padding: 7px 10px;\n border: 1px solid var(--csk-border);\n border-radius: 8px;\n font-size: 12.5px;\n font-family: inherit;\n color: #1F2937;\n background: var(--csk-bg-app);\n outline: none;\n transition: border-color 0.2s;\n}\n.csk-history-panel__search:focus { border-color: var(--csk-primary); }\n.csk-history-panel__search::placeholder { color: #9CA3AF; }\n\n/* ========== a11y 焦点指示 ========== */\n.csk-root :focus-visible {\n outline: 2px solid var(--csk-primary);\n outline-offset: 2px;\n}\n.csk-root button:focus-visible {\n outline: 2px solid var(--csk-primary);\n outline-offset: 2px;\n border-radius: inherit;\n}\n/* 弹窗打开时隐藏 launcher 上的焦点环 */\n.csk-launcher:focus-visible {\n outline: none;\n border-color: rgba(255, 255, 255, 0.75);\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.06),\n 0 4px 16px rgba(0, 0, 0, 0.10),\n 0 6px 24px rgba(var(--csk-primary-rgb), 0.28),\n 0 0 48px rgba(var(--csk-primary-rgb), 0.12),\n 0 0 0 4px rgba(var(--csk-primary-rgb), 0.3);\n}\n\n/* ========== a11y aria-live 播报区(视觉隐藏) ========== */\n.csk-sr-only {\n position: absolute !important;\n width: 1px !important;\n height: 1px !important;\n padding: 0 !important;\n margin: -1px !important;\n overflow: hidden !important;\n clip: rect(0,0,0,0) !important;\n white-space: nowrap !important;\n border: 0 !important;\n}\n\n/* ========== 会话分组标题 ========== */\n.csk-history-group {\n margin-bottom: 4px;\n}\n.csk-history-group__label {\n font-size: 11px;\n font-weight: 600;\n color: #9CA3AF;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n padding: 8px 12px 4px;\n user-select: none;\n}\n.csk-dark .csk-history-group__label { color: #6B7280; }\n\n/* ========== 移动端适配 ========== */\n@media (max-width: 480px) {\n .csk-window {\n width: 100vw !important;\n height: 100vh !important;\n max-height: 100vh;\n bottom: 0 !important;\n right: 0 !important;\n left: 0 !important;\n border-radius: 0;\n }\n .csk-window--hidden { transform: translateY(100%); }\n .csk-launcher { bottom: 20px; }\n .csk-launcher--right { right: 20px; }\n .csk-launcher--left { left: 20px; }\n}\n`}(e),document.head.appendChild(D))}function z(){return"undefined"!=typeof crypto&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const n=16*Math.random()|0;return("x"===e?n:3&n|8).toString(16)})}function H(e){const n={"&":"&","<":"<",">":">",'"':""","'":"'"};return e.replace(/[&<>"']/g,e=>n[e]||e)}function j(){return Date.now()}const R='';function P(e,n){const t=document.createElement("div");t.id="csk-launcher";const r=e.launcherTheme?" csk-launcher--glass":"";t.className=`csk-launcher csk-launcher--${"left-bottom"===e.position?"left":"right"}${r}`,t.setAttribute("title",e.title),t.setAttribute("aria-label",e.title),t.setAttribute("role","button"),t.setAttribute("tabindex","0"),t.innerHTML=e.launcherIcon;const s=document.createElement("div");s.className="csk-launcher__badge csk-launcher__badge--hidden",t.appendChild(s);const o=function(e,n){let t=null;return function(...r){null!==t&&clearTimeout(t),t=setTimeout(()=>{e.apply(this,r),t=null},n)}}(n,300);return t.addEventListener("click",o),t.addEventListener("keydown",e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),o())}),t}function U(e,n,t){const r=document.createElement("div");r.className="csk-msg csk-msg--user";const s=document.createElement("div");s.className="csk-msg__avatar csk-msg__avatar--user",s.innerHTML='';const o=document.createElement("div");o.className="csk-msg__content";const a=document.createElement("div");a.className="csk-msg__bubble",a.textContent=n;const i=document.createElement("div");return i.className="csk-msg__time",i.textContent=ne(t),o.appendChild(a),o.appendChild(i),r.appendChild(s),r.appendChild(o),e.appendChild(r),r}function Y(e,n,t,r,s){const o=document.createElement("div");o.className="csk-msg csk-msg--ai",s&&(o.dataset.cskMsgId=s);const a=document.createElement("div");a.className="csk-msg__avatar csk-msg__avatar--ai",a.innerHTML=R;const i=document.createElement("div");i.className="csk-msg__content";const c=document.createElement("div");c.className="csk-msg__bubble",r?c.innerHTML=r(n):c.textContent=n;const l=document.createElement("div");return l.className="csk-msg__time",l.textContent=ne(t),i.appendChild(c),i.appendChild(G(c,o)),i.appendChild(l),o.appendChild(a),o.appendChild(i),e.appendChild(o),X(c),o}const O='',W='';function G(e,n){const t=document.createElement("div");t.className="csk-msg__actions";const r=document.createElement("button");r.type="button",r.className="csk-action-btn",r.setAttribute("title",m("copy")),r.setAttribute("aria-label",m("copy")),r.innerHTML=O,r.addEventListener("click",async n=>{n.stopPropagation();const t=e.textContent||"";await K(t,r)});const s=document.createElement("button");s.type="button",s.className="csk-action-btn",s.setAttribute("title",m("retry")),s.setAttribute("aria-label",m("retry")),s.innerHTML=W,s.addEventListener("click",e=>{e.stopPropagation();const t=n.closest(".csk-window");t&&t.dispatchEvent(new CustomEvent("csk:retry",{detail:{msgId:n.dataset.cskMsgId||""}}))});const o=document.createElement("button");o.type="button",o.className="csk-feedback-btn",o.setAttribute("title",m("feedback_up")),o.setAttribute("aria-label",m("feedback_up")),o.innerHTML='',o.addEventListener("click",e=>{e.stopPropagation();const t=n.closest(".csk-window");t&&t.dispatchEvent(new CustomEvent("csk:feedback",{detail:{msgId:n.dataset.cskMsgId||"",value:"up"}}))});const a=document.createElement("button");return a.type="button",a.className="csk-feedback-btn",a.setAttribute("title",m("feedback_down")),a.setAttribute("aria-label",m("feedback_down")),a.innerHTML='',a.addEventListener("click",e=>{e.stopPropagation();const t=n.closest(".csk-window");t&&t.dispatchEvent(new CustomEvent("csk:feedback",{detail:{msgId:n.dataset.cskMsgId||"",value:"down"}}))}),t.appendChild(r),t.appendChild(s),t.appendChild(o),t.appendChild(a),t}function V(e,n){const t=e.querySelectorAll(".csk-feedback-btn");t.length<2||(t.forEach(e=>e.classList.remove("csk-feedback-btn--active","down")),"up"===n&&t[0]&&t[0].classList.add("csk-feedback-btn--active"),"down"===n&&t[1]&&t[1].classList.add("csk-feedback-btn--active","down"))}async function K(e,n){const t=n.innerHTML;try{if(navigator.clipboard&&window.isSecureContext)await navigator.clipboard.writeText(e);else{const n=document.createElement("textarea");n.value=e,n.style.position="fixed",n.style.opacity="0",document.body.appendChild(n),n.select(),document.execCommand("copy"),document.body.removeChild(n)}n.innerHTML='',n.classList.add("csk-action-btn--done"),setTimeout(()=>{n.innerHTML=t,n.classList.remove("csk-action-btn--done")},1500)}catch(e){}}function X(e){e.querySelectorAll(".csk-md-code-block").forEach(e=>{if(e.querySelector(".csk-md-code-copy"))return;const n=e.querySelector("code"),t=document.createElement("button");t.type="button",t.className="csk-md-code-copy",t.setAttribute("title",m("copy")),t.setAttribute("aria-label",m("copy")),t.innerHTML=O,t.addEventListener("click",async e=>{e.stopPropagation(),await K((null==n?void 0:n.textContent)||"",t)}),e.appendChild(t)})}function J(e,n){e.classList.remove("csk-msg--streaming");const t=n.querySelector(".csk-caret");t&&t.remove(),X(n)}function Q(e,n){const t=e.querySelector(".csk-sources");if(t&&t.remove(),!n||0===n.length)return;const r=document.createElement("div");r.className="csk-sources csk-sources--collapsed";const s=document.createElement("div");s.className="csk-sources__header";const o=document.createElement("span");o.className="csk-sources__title",o.textContent=`📚 ${m("source_count",{n:n.length})}`;const a=document.createElement("span");a.className="csk-sources__arrow",a.textContent="▼",s.appendChild(o),s.appendChild(a),s.addEventListener("click",()=>{r.classList.toggle("csk-sources--collapsed")});const i=document.createElement("div");i.className="csk-sources__body";for(const e of n){const n=document.createElement("div");n.className="csk-source-item";const t=document.createElement("div");if(t.className="csk-source-item__name",t.textContent=e.title||e.sourceName||"未知文档",e.snippet){const t=document.createElement("div");t.className="csk-source-item__snippet",t.textContent=e.snippet,n.appendChild(t)}const r=document.createElement("div");r.className="csk-source-item__meta";const s=[];e.sourceName&&s.push(e.sourceName),void 0!==e.chunkIndex&&s.push(`分块 #${e.chunkIndex}`),void 0!==e.score&&s.push(`相关度 ${(100*e.score).toFixed(0)}%`),r.textContent=s.join(" · "),n.appendChild(t),n.appendChild(r),i.appendChild(n)}r.appendChild(s),r.appendChild(i);const c=e.querySelector(".csk-msg__time");c&&c.parentNode?c.parentNode.insertBefore(r,c):e.appendChild(r)}function Z(e,n,t,r,s,o,a){if(e.innerHTML="",0===n.length){const n=document.createElement("div");return n.className="csk-history-panel__empty",n.innerHTML=`\n
💬
\n
${m("history_empty")}
\n `,void e.appendChild(n)}const i=function(e){const n=new Date,t=new Date(n.getFullYear(),n.getMonth(),n.getDate()).getTime(),r=t-864e5,s=t-864e5*(n.getDay()||7)+864e5,o={today:[],yesterday:[],week:[],earlier:[]};for(const n of e){const e=n.lastMessageTime||n.createdAt,a=e?new Date(e).getTime():0;a>=t?o.today.push(n):a>=r?o.yesterday.push(n):a>=s?o.week.push(n):o.earlier.push(n)}const a=[];return o.today.length&&a.push({label:m("history_group_today"),items:o.today}),o.yesterday.length&&a.push({label:m("history_group_yesterday"),items:o.yesterday}),o.week.length&&a.push({label:m("history_group_week"),items:o.week}),o.earlier.length&&a.push({label:m("history_group_earlier"),items:o.earlier}),a}(n);for(const n of i){if(i.length>1){const t=document.createElement("div");t.className="csk-history-group";const r=document.createElement("div");r.className="csk-history-group__label",r.textContent=n.label,t.appendChild(r),e.appendChild(t)}for(const a of n.items){const n=document.createElement("div");n.className="csk-history-item";const i=a.chatId||a.id;o&&i===o&&n.classList.add("csk-history-item--active");const c=document.createElement("div");c.className="csk-history-item__info";const l=document.createElement("div");l.className="csk-history-item__id",a.lastMessagePreview?l.textContent=a.lastMessagePreview.length>60?a.lastMessagePreview.substring(0,60)+"...":a.lastMessagePreview:l.textContent=i;const d=document.createElement("div");d.className="csk-history-item__meta";const p=[];void 0!==a.messageCount&&p.push(`${a.messageCount} 条消息`),a.lastMessageTime?p.push(a.lastMessageTime):a.createdAt&&p.push(a.createdAt),d.textContent=p.join(" · "),c.appendChild(l),c.appendChild(d);const u=document.createElement("div");u.className="csk-history-item__actions";const k=document.createElement("button");k.className="csk-history-action csk-history-action--export",k.setAttribute("title",m("history_export")),k.innerHTML='',k.addEventListener("click",e=>{e.stopPropagation(),r(a.id)});const g=document.createElement("button");g.className="csk-history-action csk-history-action--delete",g.setAttribute("title",m("history_delete")),g.innerHTML='',g.addEventListener("click",e=>{e.stopPropagation(),s(a.id)}),u.appendChild(k),u.appendChild(g),n.appendChild(c),n.appendChild(u),n.addEventListener("click",()=>{t(i)}),e.appendChild(n)}}}function ee(e){e.scrollTop=e.scrollHeight}function ne(e){const n=new Date(e);return`${String(n.getHours()).padStart(2,"0")}:${String(n.getMinutes()).padStart(2,"0")}`}function te(e){return`csk_history_${e}`}function re(e,n){try{let t=n;t.length>200&&(t=t.slice(50),o.warn(`消息数量达到上限,已裁剪最早 50 条,当前 ${t.length} 条`));const r={messages:t,updatedAt:Date.now()};localStorage.setItem(te(e),JSON.stringify(r))}catch(e){e instanceof Error&&"QuotaExceededError"===e.name?o.error("localStorage 空间不足,会话历史保存失败。建议清空历史记录。"):o.error("保存会话历史失败",e)}}function se(e){try{localStorage.removeItem(te(e))}catch(e){o.warn("清空会话历史失败",e)}}const oe="\0CODEBLOCK_",ae="\0INLINECODE_";function ie(e){if(!e||"string"!=typeof e)return"";const n=[];let t=e;t=t.replace(/```(\w*)\n([\s\S]*?)```/g,(e,t,r)=>{const s=n.length,o=H(r.trimEnd()),a=t?` class="language-${H(t)}"`:"";return n.push(`
${o}
`),`${oe}${s}\0`});const r=[];t=t.replace(/`([^`\n]+)`/g,(e,n)=>{const t=r.length;return r.push(`${H(n)}`),`${ae}${t}\0`}),t=H(t),t=ce(t,oe,n),t=ce(t,ae,r);const s=t.split("\n"),o=[];let a=!1,i="",c=!1,l=[];for(let e=0;e')){p(),u(),k(),o.push(n);continue}const t=n.match(/^(#{1,6})\s+(.+)/);if(t){p(),u(),k();const e=t[1].length;o.push(`${t[2]}`);continue}const r=n.match(/^>\s?(.*)/);if(r){p(),u(),c||(c=!0,o.push('
')),o.push(`

${d(r[1])}

`);continue}c&&k();const g=n.match(/^[\-\*]\s+(.+)/);if(g){p(),k(),a&&"ul"===i||(u(),a=!0,i="ul",o.push('
    ')),o.push(`
  • ${d(g[1])}
  • `);continue}const m=n.match(/^\d+\.\s+(.+)/);m?(p(),k(),a&&"ol"===i||(u(),a=!0,i="ol",o.push('
      ')),o.push(`
    1. ${d(m[1])}
    2. `)):""!==n.trim()?/^(\*{3,}|-{3,}|_{3,})$/.test(n.trim())?(p(),u(),k(),o.push('
      ')):(u(),k(),l.push(d(n))):(p(),u())}return p(),u(),k(),o.join("\n");function d(e){return e=(e=(e=(e=(e=(e=e.replace(/\*\*(.+?)\*\*/g,"$1")).replace(/__(.+?)__/g,"$1")).replace(/\*(.+?)\*/g,"$1")).replace(/(?$1")).replace(/~~(.+?)~~/g,"$1")).replace(/\[([^\]]+)\]\(([^)]+)\)/g,(e,n,t)=>`${n}`)}function p(){l.length>0&&(o.push(`

      ${l.join("
      ")}

      `),l=[])}function u(){a&&(o.push("ul"===i?"
":""),a=!1,i="")}function k(){c&&(o.push("
"),c=!1)}}function ce(e,n,t){return e.replace(new RegExp(n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")+"(\\d+)\0","g"),(e,n)=>t[parseInt(n)]||"")}let le,de=null,pe=[],ue=null,ke=null,ge=null,me=null,he=null,be=null,fe=null,ye=null,xe=null,ve=null,we=null,_e=null,Ee=null,Ce=!1,Ie=null,$e=!0,Ae=[],Le="",Se=!1;function Fe(e,n){de=e,ue=n.messagesContainer,ke=n.inputEl,ge=n.inputEl.parentElement,me=n.sendBtn,he=n.clearBtn,be=n.categorySelect,fe=n.historyPanel,ye=n.welcomeEl,xe=n.newMsgBtn,ve=n.searchInput,we=n.ariaLiveEl,_e=n.showLoading,Ee=n.hideLoading,le=e.categoryId,Se=!!e.categoryId||!!e.showCategorySwitch,function(){if(!ke||!me)return;me.addEventListener("click",()=>{Ce&&Ie?Ie.abort():He()}),ke.addEventListener("keydown",e=>{"Enter"!==e.key||e.shiftKey||e.isComposing||(e.preventDefault(),He())}),ke.addEventListener("input",()=>{ze(),function(){if(!ke)return;ke.style.height="auto",ke.style.height=`${Math.min(ke.scrollHeight,120)}px`}()}),ke.addEventListener("focus",()=>{ge&&ge.classList.add("csk-input-wrap--focus")}),ke.addEventListener("blur",()=>{ge&&ge.classList.remove("csk-input-wrap--focus")}),he&&he.addEventListener("click",()=>function(){if(!de)return;if(!confirm(m("clear_confirm")))return;if(pe=[],ue){ue.querySelectorAll(".csk-msg, .csk-loading").forEach(e=>e.remove())}he&&(he.style.display="none");qe(),se(de.integrateId);const e=function(){const e="undefined"!=typeof crypto&&crypto.randomUUID?crypto.randomUUID().substring(0,8):Math.random().toString(36).substring(2,10);return`sdk_${Date.now()}_${e}`}();b(e),M(de.integrateId,de.userId,e),o.lifecycleClear(de.integrateId),o.info(`新 chatId=${e}`)}())}(),function(){if(!ue)return;ue.addEventListener("scroll",()=>{if(!ue)return;const{scrollTop:e,scrollHeight:n,clientHeight:t}=ue;$e=n-e-t<80,$e&&Me()}),xe&&xe.addEventListener("click",()=>{ue&&ee(ue),$e=!0,Me()})}(),function(){if(!ve)return;ve.addEventListener("input",()=>{Le=ve.value.trim().toLowerCase(),Be()})}(),e.showCategorySwitch&&be&&async function(){if(!be)return;try{const e=await async function(){const e=y("/category/tree");try{const n=await v(e);if(!n.ok)throw new w(_(n.status),`http_${n.status}`);const t=await n.json();return t.success&&Array.isArray(t.data)?(o.info(`加载分类树成功 count=${t.data.length}`),t.data):[]}catch(e){return e instanceof w?o.error(`加载分类树失败: ${e.message}`):o.error("加载分类树失败",e),[]}}();if(0===e.length)return;be.innerHTML=``;const n=(e,t=0)=>{for(const r of e){const e=document.createElement("option");e.value=String(r.id),e.textContent=`${" ".repeat(t)}${r.name}`,void 0!==le&&String(r.id)===String(le)&&(e.selected=!0),be.appendChild(e),r.children&&r.children.length>0&&n(r.children,t+1)}};n(e),o.info(`知识库分类加载成功 count=${e.length}`)}catch(e){o.error(m("category_load_error"),e)}}()}async function Ne(){if(de&&ue&&(await F(),await async function(){if(!de||!ue)return;const e=f();if(!e)return;try{const n=await A(e);n.messages.length>0&&(pe=n.messages.map((e,n)=>({id:z(),role:"USER"===e.messageType?"user":"ai",content:e.content,timestamp:new Date(e.createTime).getTime()})),Re(),o.info(`从后端加载 ${pe.length} 条历史消息`),re(de.integrateId,pe))}catch(e){o.warn("从后端加载历史消息失败",e)}}(),0===pe.length)){const e=function(e){try{const n=localStorage.getItem(te(e));if(!n)return[];const t=JSON.parse(n);return t&&Array.isArray(t.messages)?(o.info(`加载历史消息 integrateId=${e} count=${t.messages.length}`),t.messages):[]}catch(e){return o.warn("加载会话历史失败",e),[]}}(de.integrateId);e.length>0&&(pe=e,Re(),o.info(`从本地缓存恢复 ${e.length} 条消息`))}}function Me(){xe&&xe.classList.add("csk-newmsg--hidden")}function De(){ue&&($e?ee(ue):xe&&xe.classList.remove("csk-newmsg--hidden"))}function Te(e){me&&("stop"===e?(me.classList.add("csk-send-btn--stop"),me.removeAttribute("disabled"),me.setAttribute("title",m("stop")),me.setAttribute("aria-label",m("stop")),me.innerHTML=''):(me.classList.remove("csk-send-btn--stop"),me.setAttribute("title",m("send")),me.setAttribute("aria-label",m("send")),me.innerHTML='',ze()))}function Be(){const e=null==fe?void 0:fe.querySelector("#csk-history-list");if(!e||!de)return;Z(e,Le?Ae.filter(e=>(e.lastMessagePreview||e.chatId||e.id||"").toLowerCase().includes(Le)):Ae,e=>{Pe(e)},e=>{window.open(S(e),"_blank")},async e=>{if(!confirm(m("history_delete_confirm")))return;await L(e)&&(e===f()&&(pe=[],ue&&ue.querySelectorAll(".csk-msg, .csk-loading").forEach(e=>e.remove()),he&&(he.style.display="none"),qe()),Ae=Ae.filter(n=>(n.chatId||n.id)!==e),Be())},f())}function qe(){if(!ye)return;const e=pe.length>0||ue&&ue.querySelector(".csk-msg");ye.style.display=e?"none":""}function ze(){if(!me||!ke)return;ke.value.trim().length>0&&!Ce?me.removeAttribute("disabled"):me.setAttribute("disabled","true")}async function He(){if(!ke||!de||Ce)return;const e=ke.value.trim();if(""===e)return;ke.value="",ze(),ke.style.height="auto";const n=j(),t={id:z(),role:"user",content:e,timestamp:n};ue&&U(ue,e,n),pe.push(t),qe(),he&&pe.length>0&&(he.style.display="inline-flex"),ue&&De(),await je(e)}async function je(e){if(!de||!ue)return;Ce=!0,Te("stop"),de.chatId||await F();const n=j(),t=Se&&(void 0!==le||void 0!==de.categoryId);_e&&_e(),ue&&De();const r=z();let s="";try{de.streaming?s=await async function(e,n,t,r){Ie=new AbortController;const s=Ie.signal;return new Promise((o,a)=>{let i=null,c=null,l="",d=!1;C(e,e=>{if(l+=e,!d&&ue){Ee&&Ee();const{wrapper:e,bubble:t}=function(e,n,t){const r=document.createElement("div");r.className="csk-msg csk-msg--ai csk-msg--streaming",t&&(r.dataset.cskMsgId=t);const s=document.createElement("div");s.className="csk-msg__avatar csk-msg__avatar--ai",s.innerHTML=R;const o=document.createElement("div");o.className="csk-msg__content";const a=document.createElement("div");a.className="csk-msg__bubble",a.innerHTML="";const i=document.createElement("div");return i.className="csk-msg__time",i.textContent=ne(n),o.appendChild(a),o.appendChild(G(a,r)),o.appendChild(i),r.appendChild(s),r.appendChild(o),e.appendChild(r),{wrapper:r,bubble:a}}(ue,n,r);c=e,i=t,d=!0}i&&(i.textContent=l,function(e){if(e.querySelector(".csk-caret"))return;const n=document.createElement("span");n.className="csk-caret",n.setAttribute("aria-hidden","true"),e.appendChild(n)}(i)),ue&&De()},()=>{if(c&&i){if(!d&&""===l)return void E(e).then(o).catch(a);l&&(i.innerHTML=ie(l)),J(c,i)}o(l)},e=>{l.length>0?(i&&(i.innerHTML=ie(l+"\n\n"+m("stream_interrupted")),c&&J(c,i)),o(l)):a(e)},le,t,s)})}(e,n,t,r):(s=await E(e),Ee&&Ee(),ue&&Y(ue,s,n,ie,r));const a={id:r,role:"ai",content:s,timestamp:n};pe.push(a),re(de.integrateId,pe),ue&&De(),function(e){if(!we)return;const n=e.length>120?e.substring(0,120)+"...":e;we.textContent=m("new_msg_announce")+":"+n}(s),ue&&ue.dispatchEvent(new CustomEvent("csk:newMessage",{bubbles:!0,detail:{msg:a}})),t&&async function(e,n){try{const t=await I(e,le);if(t.length>0){const e=t.map(e=>{var n,t;return{documentId:e.documentId||"",title:e.title||"",sourceName:e.sourceName||"",chunkIndex:null!==(n=e.chunkIndex)&&void 0!==n?n:0,score:null!==(t=e.score)&&void 0!==t?t:0,snippet:e.snippet||""}});if(n.sources=e,ue){const n=ue.querySelector(".csk-msg--ai:last-of-type");n&&Q(n,e)}de&&re(de.integrateId,pe)}}catch(e){o.warn("获取引用来源失败",e)}}(e,a)}catch(e){Ee&&Ee();const n=e instanceof w?e.message:m("error_send");if(ue){const e=document.createElement("div");e.className="csk-msg csk-msg--ai";const t=document.createElement("div");t.className="csk-msg__bubble",t.style.color="#DC2626",t.textContent=`⚠ ${n}`,e.appendChild(t),ue.appendChild(e)}o.error(`发送失败 integrateId=${de.integrateId}`,e)}finally{Ce=!1,Ie=null,Te("send"),ze()}}function Re(){if(!ue)return;const e=ue.querySelector(".csk-history-panel");ue.querySelectorAll(".csk-msg, .csk-loading").forEach(e=>e.remove());for(const e of pe)if("user"===e.role)U(ue,e.content,e.timestamp);else{const n=Y(ue,e.content,e.timestamp,ie,e.id);e.sources&&e.sources.length>0&&Q(n,e.sources),e.feedback&&V(n,e.feedback)}$e=!0,ee(ue),he&&pe.length>0&&(he.style.display="inline-flex"),qe(),e&&!ue.contains(e)&&ue.appendChild(e)}async function Pe(e){if(!de||!ue)return;o.info(`切换到会话 conversationId=${e}`),b(e),M(de.integrateId,de.userId,e),fe&&fe.classList.add("csk-history-panel--hidden"),pe=[];ue.querySelectorAll(".csk-msg, .csk-loading").forEach(e=>e.remove());try{const n=await A(e);n.messages.length>0&&(pe=n.messages.map(e=>({id:z(),role:"USER"===e.messageType?"user":"ai",content:e.content,timestamp:new Date(e.createTime).getTime()})),Re(),o.info(`加载会话 ${e} 的 ${pe.length} 条消息`),re(de.integrateId,pe))}catch(n){o.warn(`加载会话消息失败 conversationId=${e}`,n)}he&&pe.length>0&&(he.style.display="inline-flex"),qe()}let Ue=null,Ye=!1,Oe=null,We=null,Ge=null,Ve=null,Ke=null,Xe=null,Je=null,Qe=null,Ze=null,en=null,nn=null,tn=null,rn=null,sn=null,on=null;function an(){if(!tn||!Oe)return;const e=Oe.getBoundingClientRect();"left-bottom"===(null==Ue?void 0:Ue.position)?tn.style.left=`${e.left}px`:tn.style.right=window.innerWidth-e.right+"px",tn.style.bottom=window.innerHeight-e.top+8+"px"}function cn(){if(!tn)return;tn.classList.add("csk-teaser--hidden"),tn.removeEventListener("click",ln);const e=tn.querySelector(".csk-teaser__close");e&&e.removeEventListener("click",dn)}function ln(e){e.target.closest(".csk-teaser__close")||(cn(),gn())}function dn(e){e.stopPropagation(),cn()}function pn(){tn&&!tn.classList.contains("csk-teaser--hidden")&&an()}const un='button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])';function kn(e){"Escape"===e.key&&We&&!We.classList.contains("csk-window--hidden")&&mn(),function(e){if(!We||We.classList.contains("csk-window--hidden"))return;if("Tab"!==e.key)return;const n=Array.from(We.querySelectorAll(un));if(0===n.length)return;const t=n[0],r=n[n.length-1];e.shiftKey?document.activeElement===t&&(e.preventDefault(),r.focus()):document.activeElement===r&&(e.preventDefault(),t.focus())}(e)}function gn(){We&&(We.classList.remove("csk-window--hidden"),cn(),sn&&sn.classList.add("csk-launcher__badge--hidden"),setTimeout(()=>{Ve&&Ve.focus()},80))}function mn(){We&&We.classList.add("csk-window--hidden")}function hn(){We&&(We.classList.contains("csk-window--hidden")?gn():mn())}function bn(e){return`csk_position_${e}`}const fn={init:function(e){if(Ye)return void o.warn("SDK 已初始化,请先调用 destroy() 再重新初始化");const t=function(e){var n,t,r,s,i,k,g,m,h,b;if(!e.integrateId||"string"!=typeof e.integrateId&&"number"!=typeof e.integrateId||"string"==typeof e.integrateId&&""===e.integrateId.trim())return o.error('integrateId 是必传参数(对应后端 roleId 客服角色 ID),请检查 init() 调用。示例:ChatbotSDK.init({ integrateId: 1, requestDomain: "https://api.example.com" })'),null;if(!e.requestDomain||"string"!=typeof e.requestDomain||""===e.requestDomain.trim())return o.error('requestDomain 是必传参数,请检查 init() 调用。示例:ChatbotSDK.init({ integrateId: 1, requestDomain: "https://api.example.com" })'),null;try{new URL(e.requestDomain)}catch(n){return o.error(`requestDomain 不是合法的 URL 格式:${e.requestDomain}。请提供完整的域名,如 https://api.example.com`),null}const f=String(e.integrateId).trim(),y=e.launcherTheme||void 0;let x=e.launcherIcon||a,v=e.primaryColor||"#4F46E5";y&&!e.launcherIcon&&(x={"dream-purple":c,"mint-tech":l,"coral-peach":d,"sky-blue":p}[y]||a,e.primaryColor||(v=u[y]||"#4F46E5"));const w={integrateId:f,requestDomain:e.requestDomain.replace(/\/+$/,""),userId:e.userId,categoryId:e.categoryId,showCategorySwitch:null!==(n=e.showCategorySwitch)&&void 0!==n&&n,title:e.title||"AI 智能助手",width:null!==(t=e.width)&&void 0!==t?t:380,height:Math.max(300,null!==(r=e.height)&&void 0!==r?r:520),position:"left-bottom"===e.position?"left-bottom":"right-bottom",primaryColor:v,launcherTheme:y,launcherIcon:x,showClear:null===(s=e.showClear)||void 0===s||s,showAdminPanel:null!==(i=e.showAdminPanel)&&void 0!==i&&i,quickReplies:Array.isArray(e.quickReplies)?e.quickReplies.map(e=>String(e).trim()).filter(Boolean):[],theme:"dark"===e.theme?"dark":"light",showTeaser:null===(k=e.showTeaser)||void 0===k||k,teaserText:"string"==typeof e.teaserText&&e.teaserText.trim()||"",streaming:null===(g=e.streaming)||void 0===g||g,locale:e.locale||"zh-CN",debug:null===(m=e.debug)||void 0===m||m,sound:null!==(h=e.sound)&&void 0!==h&&h,notification:null!==(b=e.notification)&&void 0!==b&&b,onError:"function"==typeof e.onError?e.onError:void 0,onReady:"function"==typeof e.onReady?e.onReady:void 0,onMessage:"function"==typeof e.onMessage?e.onMessage:void 0,chatId:""};return o.info(`配置解析完成 integrateId(=roleId)=${w.integrateId} userId(=accountId)=${w.userId||"(未设置)"} requestDomain=${w.requestDomain}`),w}(e);if(!t)return;var s;Ue=t,function(e){if(k[e])g=e;else{const n=e.split("-")[0],t=Object.keys(k).find(e=>e.startsWith(n));t&&(g=t)}}(Ue.locale),s=Ue.debug,n=s,r(Ue.onError),function(e){h=e}(Ue),q(Ue),Oe=P(Ue,hn),document.body.appendChild(Oe),sn=Oe.querySelector(".csk-launcher__badge");const i=function(e){const n=document.createElement("div");n.id="csk-window",n.className=`csk-root csk-window csk-window--${"left-bottom"===e.position?"left":"right"} csk-window--hidden${"dark"===e.theme?" csk-dark":""}`,n.setAttribute("role","dialog"),n.setAttribute("aria-label",e.title),n.setAttribute("aria-modal","false");const t=document.createElement("div");t.className="csk-header";const r=document.createElement("div");r.className="csk-header__left";const s=document.createElement("div");s.className="csk-header__avatar",s.innerHTML=R;const o=document.createElement("div");o.className="csk-header__info";const a=document.createElement("span");a.className="csk-header__title",a.textContent=e.title;const i=document.createElement("span");i.className="csk-header__status",i.innerHTML=`${m("status_online")}`,o.appendChild(a),o.appendChild(i),r.appendChild(s),r.appendChild(o);const c=document.createElement("div");c.className="csk-header__actions";const l=document.createElement("button");l.className="csk-history-btn",l.setAttribute("title",m("history_title")),l.innerHTML='';const d=document.createElement("button");d.className="csk-header__btn csk-header__btn--minimize",d.setAttribute("title",m("minimize")),d.innerHTML='',d.addEventListener("click",()=>{n.classList.add("csk-window--hidden")});const p=document.createElement("button");p.className="csk-header__btn csk-header__btn--close",p.setAttribute("title",m("close")),p.innerHTML='',p.addEventListener("click",()=>{n.classList.add("csk-window--hidden")}),c.appendChild(l),c.appendChild(d),c.appendChild(p),t.appendChild(r),t.appendChild(c);const u=document.createElement("div");u.id="csk-messages",u.className="csk-messages";const k=document.createElement("div");if(k.className="csk-welcome",k.innerHTML=`\n
${R}
\n
${m("welcome_title")}
\n
${m("welcome_desc")}
\n `,e.quickReplies.length>0){const t=document.createElement("div");t.className="csk-quick-replies";for(const r of e.quickReplies){const e=document.createElement("button");e.type="button",e.className="csk-quick-reply",e.textContent=r,e.addEventListener("click",()=>{n.dispatchEvent(new CustomEvent("csk:quickReply",{detail:{text:r}}))}),t.appendChild(e)}k.appendChild(t)}u.appendChild(k);const g=document.createElement("button");g.type="button",g.className="csk-newmsg csk-newmsg--hidden",g.innerHTML=`\n \n ${m("new_message")}\n `,n.appendChild(g);const h=document.createElement("div");h.className="csk-history-panel csk-history-panel--hidden",h.innerHTML=`\n
\n ${m("history_title")}\n \n
\n
\n \n
\n
\n `,u.appendChild(h);const b=h.querySelector("#csk-history-back");b&&b.addEventListener("click",()=>{h.classList.add("csk-history-panel--hidden")}),l.addEventListener("click",e=>{e.stopPropagation();const t=h.classList.contains("csk-history-panel--hidden");h.classList.toggle("csk-history-panel--hidden"),t&&n.dispatchEvent(new CustomEvent("csk:loadHistory"))});let f=null;if(e.showCategorySwitch){const e=document.createElement("div");e.className="csk-category-bar";const r=document.createElement("span");r.className="csk-category-bar__label",r.textContent="📚",f=document.createElement("select"),f.id="csk-category-select",f.className="csk-category-select",f.innerHTML=``,f.addEventListener("change",()=>{const e=f.value;n.dispatchEvent(new CustomEvent("csk:categoryChange",{detail:{categoryId:e?Number(e):void 0}}))}),e.appendChild(r),e.appendChild(f),n.appendChild(t),n.appendChild(u),n.appendChild(e)}else n.appendChild(t),n.appendChild(u);const y=document.createElement("div");y.className="csk-input-area";const x=document.createElement("div");x.className="csk-input-wrap";const v=document.createElement("textarea");v.id="csk-input",v.className="csk-input",v.setAttribute("placeholder",m("placeholder")),v.setAttribute("rows","1"),v.setAttribute("autofocus","");const w=document.createElement("button");w.id="csk-send-btn",w.className="csk-send-btn",w.setAttribute("title",m("send")),w.setAttribute("disabled","true"),w.innerHTML='',x.appendChild(v),x.appendChild(w),y.appendChild(x),n.appendChild(y);let _=null;e.showClear&&(_=document.createElement("button"),_.className="csk-clear-btn",_.textContent=m("clear"),_.style.display="none",n.insertBefore(_,y));let E=null;const C=document.createElement("div");C.className="csk-sr-only",C.setAttribute("aria-live","polite"),C.setAttribute("aria-atomic","true"),n.appendChild(C);const I=h.querySelector("#csk-history-search"),$=document.createElement("div");return $.className=`csk-teaser csk-teaser--${"left-bottom"===e.position?"left":"right"} csk-teaser--hidden`,$.setAttribute("role","status"),$.innerHTML=`\n \n ${e.teaserText||m("teaser_text")}\n `,{window:n,messagesContainer:u,inputEl:v,sendBtn:w,clearBtn:_,categorySelect:f,historyPanel:h,welcomeEl:k,newMsgBtn:g,teaserEl:$,searchInput:I,ariaLiveEl:C,showLoading:function(){if(E)return E.style.display="flex",E;const e=document.createElement("div");return e.className="csk-loading",e.innerHTML=`\n
${R}
\n
\n
\n
\n
\n
\n `,u.appendChild(e),E=e,e},hideLoading:function(){E&&E.parentNode&&(E.parentNode.removeChild(E),E=null)}}}(Ue);We=i.window,Ge=i.messagesContainer,Ve=i.inputEl,Ke=i.sendBtn,Xe=i.clearBtn,Je=i.categorySelect,Qe=i.historyPanel,Ze=i.showLoading,en=i.hideLoading,document.body.appendChild(We),tn=i.teaserEl,document.body.appendChild(tn),an();const b=We.querySelector(".csk-header");if(b&&(nn=function(e,n,t){let r=!1,s=0,o=0,a=0,i=0;const c=e=>{if(e.target.closest("button"))return;r=!0,s=e.clientX,o=e.clientY;const t=n.getBoundingClientRect();a=s-t.left,i=o-t.top,document.addEventListener("mousemove",l),document.addEventListener("mouseup",d)},l=e=>{if(!r)return;const t=e.clientX-a,s=e.clientY-i,o=window.innerWidth-n.offsetWidth,c=window.innerHeight-n.offsetHeight;n.style.right="auto",n.style.bottom="auto",n.style.left=`${Math.max(0,Math.min(t,o))}px`,n.style.top=`${Math.max(0,Math.min(s,c))}px`},d=()=>{if(r=!1,document.removeEventListener("mousemove",l),document.removeEventListener("mouseup",d),t){const e=n.getBoundingClientRect();t({x:e.left,y:e.top})}};return e.addEventListener("mousedown",c),()=>{e.removeEventListener("mousedown",c),document.removeEventListener("mousemove",l),document.removeEventListener("mouseup",d)}}(b,We,e=>{!function(e,n){try{localStorage.setItem(bn(e),JSON.stringify(n))}catch(e){}}(Ue.integrateId,e)})),function(e,n){try{const t=localStorage.getItem(bn(e));if(!t)return;const r=JSON.parse(t);if("number"!=typeof r.x||"number"!=typeof r.y)return;const s=window.innerWidth-n.offsetWidth,o=window.innerHeight-n.offsetHeight,a=Math.max(0,Math.min(r.x,s)),i=Math.max(0,Math.min(r.y,o));n.style.right="auto",n.style.bottom="auto",n.style.left=`${a}px`,n.style.top=`${i}px`}catch(e){}}(Ue.integrateId,We),Fe(Ue,{messagesContainer:Ge,inputEl:Ve,sendBtn:Ke,clearBtn:Xe,categorySelect:Je,historyPanel:Qe,welcomeEl:i.welcomeEl,newMsgBtn:i.newMsgBtn,searchInput:i.searchInput,ariaLiveEl:i.ariaLiveEl,showLoading:Ze,hideLoading:en}),We.addEventListener("csk:categoryChange",e=>{var n;n=e.detail.categoryId,le=n,Se=void 0!==n,o.lifecycleCategoryChange(null!=n?n:"全部")}),We.addEventListener("csk:loadHistory",()=>{!async function(){if(!fe||!de)return;const e=fe.querySelector("#csk-history-list");if(e){e.innerHTML='
加载中...
';try{const n=await $(1,50,de.userId,de.integrateId);Ae=n.list.map(e=>({id:e.conversationId||"",chatId:e.conversationId||"",messageCount:e.messageCount,lastMessageTime:e.lastMessageTime,lastMessagePreview:e.lastMessagePreview,createdAt:e.firstMessageTime||e.createdAt})),Le="",ve&&(ve.value=""),Z(e,Ae,e=>{Pe(e)},e=>{window.open(S(e),"_blank")},async e=>{confirm(m("history_delete_confirm"))&&await L(e)&&(e===f()&&(pe=[],ue&&ue.querySelectorAll(".csk-msg, .csk-loading").forEach(e=>e.remove()),he&&(he.style.display="none"),qe()),Ae=Ae.filter(n=>(n.chatId||n.id)!==e),Be())},f())}catch(n){o.error(m("history_load_error"),n),e.innerHTML=`
${m("history_load_error")}
`}}}()}),We.addEventListener("csk:quickReply",e=>{var n;n=e.detail.text,!ke||Ce?Promise.resolve():(ke.value=n,ze(),He())}),We.addEventListener("csk:retry",e=>{!async function(e){if(!de||!ue||Ce)return;const n=pe.findIndex(n=>n.id===e&&"ai"===n.role);if(n<0)return;let t="";for(let e=n-1;e>=0;e--)if("user"===pe[e].role){t=pe[e].content;break}if(!t)return;const r=pe.splice(n),s=new Set(r.map(e=>e.id));ue.querySelectorAll(".csk-msg").forEach(e=>{const n=e.dataset.cskMsgId;n&&s.has(n)&&e.remove()}),re(de.integrateId,pe),qe(),await je(t)}(e.detail.msgId)}),We.addEventListener("csk:feedback",e=>{!function(e,n){if(!ue)return;const t=pe.find(n=>n.id===e&&"ai"===n.role);if(!t)return;const r=t.feedback===n?void 0:n;t.feedback=r;const s=ue.querySelector(`[data-csk-msg-id="${e}"]`);s&&V(s,r),de&&re(de.integrateId,pe),o.info(`消息反馈 msgId=${e} value=${r||"cleared"}`)}(e.detail.msgId,e.detail.value)}),We.addEventListener("csk:newMessage",e=>{var n;if(We&&We.classList.contains("csk-window--hidden")&&(sn&&sn.classList.remove("csk-launcher__badge--hidden"),(null==Ue?void 0:Ue.sound)&&function(){try{on||(on=new(window.AudioContext||window.webkitAudioContext));const e=on;if("suspended"===e.state)return void e.resume();const n=e.currentTime;[0,.15].forEach((t,r)=>{const s=e.createOscillator(),o=e.createGain();s.type="sine",s.frequency.value=0===r?880:1100,o.gain.setValueAtTime(.15,n+t),o.gain.exponentialRampToValueAtTime(.001,n+t+.12),s.connect(o),o.connect(e.destination),s.start(n+t),s.stop(n+t+.12)})}catch(e){}}(),(null==Ue?void 0:Ue.notification)&&function(){try{if(!("Notification"in window))return;"granted"===Notification.permission?new Notification((null==Ue?void 0:Ue.title)||"AI 智能助手",{body:"收到新消息",icon:void 0,silent:!0}):"denied"!==Notification.permission&&Notification.requestPermission()}catch(e){}}()),(null==Ue?void 0:Ue.onMessage)&&(null===(n=e.detail)||void 0===n?void 0:n.msg))try{Ue.onMessage(e.detail.msg)}catch(e){}}),document.addEventListener("keydown",kn),window.addEventListener("resize",pn),Ye=!0,o.lifecycleInit(Ue.integrateId,Ue.requestDomain),Ue.onReady)try{Ue.onReady()}catch(e){}Ue.showTeaser&&(rn=setTimeout(()=>{We&&We.classList.contains("csk-window--hidden")&&function(){if(!tn)return;an(),tn.classList.remove("csk-teaser--hidden"),tn.addEventListener("click",ln);const e=tn.querySelector(".csk-teaser__close");e&&e.addEventListener("click",dn)}()},1500)),Ne().catch(e=>{o.warn("chatId 初始化失败,将在发送消息时重试",e)})},destroy:function(){if(!Ye)return;rn&&(clearTimeout(rn),rn=null),cn(),tn&&tn.parentNode&&(tn.parentNode.removeChild(tn),tn=null),Oe&&Oe.parentNode&&(Oe.parentNode.removeChild(Oe),Oe=null),We&&We.parentNode&&(We.parentNode.removeChild(We),We=null),nn&&(nn(),nn=null),D&&D.parentNode&&(D.parentNode.removeChild(D),D=null),document.querySelectorAll("style[data-csk-sdk]").forEach(e=>e.remove()),document.removeEventListener("keydown",kn),window.removeEventListener("resize",pn),r(void 0);const e=null==Ue?void 0:Ue.integrateId;Ue=null,Ye=!1,Ge=null,Ve=null,Ke=null,Xe=null,Je=null,Qe=null,Ze=null,en=null,sn=null,on=null,o.lifecycleDestroy(e||"")},open:gn,close:mn,toggle:hn,clearHistory:function(){Ue&&(Xe?Xe.click():confirm("确定清空所有对话记录?")&&se(Ue.integrateId))}};return"undefined"!=typeof window&&(window.ChatbotSDK=fn),fn}(); +var ChatbotSDK=function(){"use strict";const n="[ChatbotSDK]";let e=!0,t=null;function r(n){t=n||null}const s={},o={info(t,r){e&&console.log(n,t,void 0!==r?r:"")},warn(t,r){e&&console.warn(n,t,void 0!==r?r:"")},error(e,r){if(console.error(n,e,void 0!==r?r:""),t)try{const n=r instanceof Error&&r.type||"error";t({message:e,code:String(n),detail:r})}catch(n){}},time(n){s[n]=Date.now()},timeEnd(t,r){const o=s[t];if(void 0!==o){const a=Date.now()-o;if(delete s[t],e){const e=r?`${r} ${a}ms`:`${t} ${a}ms`;console.log(n,e)}return a}return 0},lifecycleInit(n,e){this.info(`初始化完成 integrateId=${n} requestDomain=${e}`)},lifecycleDestroy(n){this.info(`销毁实例 integrateId=${n}`)},lifecycleSend(n,e){this.info(`发送消息 integrateId=${n} length=${e}`),this.time(`send_${n}`)},lifecycleReply(n,e){const t=this.timeEnd(`send_${n}`,"AI 回复");this.info(`AI 回复 integrateId=${n} length=${e} duration=${t}ms`)},lifecycleError(n,e,t){this.timeEnd(`send_${n}`),this.error(`请求失败 integrateId=${n} status=${e} message=${t}`)},lifecycleClear(n){this.info(`清空会话 integrateId=${n}`)},lifecycleStreamDone(n,e){const t=this.timeEnd(`send_${n}`,"流式回复");this.info(`流式回复完成 integrateId=${n} length=${e} duration=${t}ms`)},lifecycleCategoryChange(n){this.info(`切换知识库分类 categoryId=${n}`)}},a='\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n';function i(n,e,t){return`\n \n \x3c!-- 高光渐变:模拟玻璃反射 --\x3e\n \n \n \n \n \x3c!-- 机器人身体渐变 --\x3e\n \n \n \n \n \n \x3c!-- 机器人主体(圆角矩形 + 对话气泡尾巴) --\x3e\n \n \n \x3c!-- 高光反射层(左上角弧形高光) --\x3e\n \n \x3c!-- 天线 + 能量球 --\x3e\n \n \n \x3c!-- 眼睛(会眨) --\x3e\n \n \n \x3c!-- 眼睛高光点 --\x3e\n \n \n \x3c!-- 微笑 --\x3e\n \n \x3c!-- 跳动气泡装饰(3 个小圆点) --\x3e\n \n \n \n`}const c=i("rgba(139,92,246,0.6)","rgba(139,92,246,0.45)","rgba(240,171,252,0.85)"),l=i("rgba(16,185,129,0.6)","rgba(16,185,129,0.45)","rgba(110,231,183,0.85)"),d=i("rgba(244,63,94,0.55)","rgba(244,63,94,0.4)","rgba(253,186,116,0.85)"),p=i("rgba(56,189,248,0.6)","rgba(56,189,248,0.45)","rgba(167,139,250,0.85)"),u={"dream-purple":"#A78BFA","mint-tech":"#34D399","coral-peach":"#FB7185","sky-blue":"#7DD3FC"};const k={"zh-CN":{title:"AI 智能助手",minimize:"最小化",close:"关闭",status_online:"在线",welcome_title:"你好,我是 AI 智能助手",welcome_desc:"有什么可以帮你的吗?在下方输入框开始提问吧~",placeholder:"输入您的问题...",send:"发送",stop:"停止生成",new_message:"新消息",copy:"复制",copied:"已复制",retry:"重新生成",retrying:"重新生成中...",loading:"正在思考...",stream_interrupted:"回复被中断",stream_unstable:"网络不稳定,内容可能不完整",category_placeholder:"选择知识库分类",category_all:"全部分类",category_load_error:"加载分类失败",source_title:"参考来源",source_count:"{n} 条参考来源",source_loading:"加载来源中...",clear:"清空对话",clear_confirm:"确定清空所有对话记录?",history_title:"历史会话",history_empty:"暂无历史会话",history_load_error:"加载会话列表失败",history_delete_confirm:"确定删除该会话?",history_export:"导出",history_delete:"删除",history_search:"搜索会话...",history_group_today:"今天",history_group_yesterday:"昨天",history_group_week:"本周",history_group_earlier:"更早",feedback_up:"有帮助",feedback_down:"没帮助",teaser_text:"有什么可以帮你的吗?",new_msg_announce:"收到新消息",error_network:"网络连接失败,请检查网络",error_timeout:"请求超时,请稍后重试",error_server:"服务器异常,请稍后重试",error_cors:"跨域请求被拦截,请联系管理员将当前域名加入 API 白名单",error_auth:"鉴权失败,请联系管理员",error_forbidden:"无访问权限,请联系管理员配置",error_not_found:"请求的资源不存在",error_rate_limit:"请求过于频繁,请稍后重试",error_unavailable:"服务暂不可用,请稍后重试",error_unknown:"请求发生未知错误",error_send:"发送失败,请稍后重试",error_stream_unsupported:"浏览器不支持流式读取"},en:{title:"AI Assistant",minimize:"Minimize",close:"Close",status_online:"Online",welcome_title:"Hi, I am your AI assistant",welcome_desc:"How can I help you? Type your question below to get started.",placeholder:"Type your question...",send:"Send",stop:"Stop generating",new_message:"New message",copy:"Copy",copied:"Copied",retry:"Regenerate",retrying:"Regenerating...",loading:"Thinking...",stream_interrupted:"Response interrupted",stream_unstable:"Network unstable, content may be incomplete",category_placeholder:"Select category",category_all:"All categories",category_load_error:"Failed to load categories",source_title:"Sources",source_count:"{n} source(s)",source_loading:"Loading sources...",clear:"Clear chat",clear_confirm:"Clear all conversation history?",history_title:"History",history_empty:"No conversations yet",history_load_error:"Failed to load conversations",history_delete_confirm:"Delete this conversation?",history_export:"Export",history_delete:"Delete",history_search:"Search conversations...",history_group_today:"Today",history_group_yesterday:"Yesterday",history_group_week:"This Week",history_group_earlier:"Earlier",feedback_up:"Helpful",feedback_down:"Not helpful",teaser_text:"How can I help you?",new_msg_announce:"New message received",error_network:"Network connection failed",error_timeout:"Request timed out, please try again",error_server:"Server error, please try again later",error_cors:"CORS request blocked. Please contact admin to whitelist your domain",error_auth:"Authentication failed, please contact admin",error_forbidden:"Access denied, please contact admin",error_not_found:"Resource not found",error_rate_limit:"Too many requests, please try again later",error_unavailable:"Service temporarily unavailable",error_unknown:"Unknown request error",error_send:"Failed to send, please try again",error_stream_unsupported:"Browser does not support streaming"}};let g="zh-CN";function m(n,e){let t=(k[g]||k["zh-CN"])[n]||k["zh-CN"][n]||n;if(e)for(const[n,r]of Object.entries(e))t=t.replace(`{${n}}`,String(r));return t}let h=null;function b(n){h&&(h.chatId=n)}function f(){return(null==h?void 0:h.chatId)||""}function y(n){if(!h)throw new Error("API 配置未初始化");return`${h.requestDomain.replace(/\/+$/,"")}${n.startsWith("/")?n:`/${n}`}`}function x(n,e,t){null!=t&&("string"==typeof t&&""===t.trim()||n.set(e,String(t)))}async function v(n,e={},t=3e4,r){const s=new AbortController,o=setTimeout(()=>s.abort(),t);r&&(r.aborted?s.abort():r.addEventListener("abort",()=>s.abort(),{once:!0}));try{return await fetch(n,Object.assign(Object.assign({},e),{signal:s.signal,mode:"cors",credentials:"include"}))}catch(n){if(null==r?void 0:r.aborted)throw new w("aborted","aborted");if(n instanceof DOMException&&"AbortError"===n.name)throw new w(m("error_timeout"),"timeout");if(n instanceof TypeError&&n.message.includes("Failed to fetch"))throw new w(m("error_cors"),"cors");throw new w(m("error_network"),"network")}finally{clearTimeout(o)}}class w extends Error{constructor(n,e){super(n),this.name="CskError",this.type=e}}function _(n){switch(n){case 401:return m("error_auth");case 403:return m("error_forbidden");case 404:return m("error_not_found");case 429:return m("error_rate_limit");case 500:return m("error_server");case 502:case 503:return m("error_unavailable");default:return`${m("error_unknown")}(${n})`}}async function E(n){const e=function(n){const e=new URLSearchParams;return e.set("message",n),e.set("chatId",h.chatId),x(e,"roleId",h.integrateId),x(e,"accountId",h.userId),y(`/ai/assistant_app/chat/sync?${e.toString()}`)}(n);o.lifecycleSend(h.integrateId,n.length);try{const n=await v(e);if(!n.ok){const e=_(n.status);throw o.lifecycleError(h.integrateId,String(n.status),e),new w(e,`http_${n.status}`)}const t=await n.text();return o.lifecycleReply(h.integrateId,t.length),t}catch(n){if(n instanceof w)throw n;throw o.lifecycleError(h.integrateId,"unknown",String(n)),new w(m("error_unknown"),"unknown")}}async function C(n,e,t,r,s,a,i){var c;const l=a?function(n,e){const t=new URLSearchParams;return t.set("message",n),t.set("chatId",h.chatId),t.set("rewriteStrategy","REWRITE"),x(t,"roleId",h.integrateId),x(t,"accountId",h.userId),x(t,"categoryId",null!=e?e:h.categoryId),y(`/ai/assistant_app/chat/rag/sse?${t.toString()}`)}(n,s):function(n,e){const t=new URLSearchParams;return t.set("message",n),t.set("chatId",h.chatId),x(t,"roleId",h.integrateId),x(t,"accountId",h.userId),x(t,"categoryId",null!=e?e:h.categoryId),y(`/ai/assistant_app/chat/sse?${t.toString()}`)}(n,s);let d="";o.lifecycleSend(h.integrateId,n.length);try{const n=await v(l,{},6e4,i);if(!n.ok){const e=_(n.status);return o.lifecycleError(h.integrateId,String(n.status),e),void r(new w(e,`http_${n.status}`))}const s=null===(c=n.body)||void 0===c?void 0:c.getReader();if(!s)return void r(new w(m("error_stream_unsupported"),"stream_unsupported"));const a=new TextDecoder("utf-8",{stream:!0});let p="";try{for(;;){const{done:n,value:t}=await s.read();if(n)break;p+=a.decode(t,{stream:!0});const r=p.split("\n");p=r.pop()||"";for(const n of r){const t=n.trim();if(t&&!t.startsWith(":"))if(t.startsWith("data:")){const n=t.substring(5).trim();n&&(d+=n,e(n))}else{if("[DONE]"===t)break;t.startsWith("event:")||t.startsWith("id:")||t.startsWith("retry:")||(d+=t,e(t))}}}if(p.trim()){const n=p.trim();if(n.startsWith("data:")){const t=n.substring(5).trim();t&&(d+=t,e(t))}else"[DONE]"!==n&&(d+=n,e(n))}}catch(n){if(null==i?void 0:i.aborted)o.info(`流式被用户中断,保留已生成内容 length=${d.length}`);else{if(!(d.length>0))throw n;e("\n\n"+m("stream_unstable"))}}finally{s.releaseLock()}o.lifecycleStreamDone(h.integrateId,d.length),t()}catch(n){if((null==i?void 0:i.aborted)||n instanceof w&&"aborted"===n.type)return void t();n instanceof w?r(n):(o.lifecycleError(h.integrateId,"unknown",String(n)),r(new w(m("error_network"),"network")))}}async function I(n,e){const t=function(n,e){const t=new URLSearchParams;return t.set("message",n),t.set("chatId",h.chatId),t.set("rewriteStrategy","REWRITE"),x(t,"roleId",h.integrateId),x(t,"accountId",h.userId),x(t,"categoryId",null!=e?e:h.categoryId),y(`/ai/assistant_app/rag/sources?${t.toString()}`)}(n,e);try{const n=await v(t);if(!n.ok)throw new w(_(n.status),`http_${n.status}`);const e=await n.json();return e.success&&Array.isArray(e.data)?(o.info(`获取引用来源 count=${e.data.length}`),e.data):[]}catch(n){return o.error("获取引用来源失败",n),[]}}async function $(n=1,e=20,t,r){let s=`/conversation/list?page=${n}&size=${e}`;t&&(s+=`&accountId=${encodeURIComponent(t)}`),r&&(s+=`&roleId=${encodeURIComponent(r)}`);const a=y(s);try{const n=await v(a);if(!n.ok)throw new w(_(n.status),`http_${n.status}`);const e=await n.json();return{list:e.success&&Array.isArray(e.data)?e.data:[],total:e.total||0,pages:e.pages||0}}catch(n){return o.error("加载会话列表失败",n),{list:[],total:0,pages:0}}}async function A(n){const e=y(`/conversation/${n}/messages`);try{const n=await v(e);if(!n.ok)throw new w(_(n.status),`http_${n.status}`);const t=await n.json();return{messages:t.success&&Array.isArray(t.data)?t.data:[],total:t.total||0}}catch(n){return o.error("加载会话消息失败",n),{messages:[],total:0}}}async function L(n){const e=y(`/conversation/${n}`);try{const t=await v(e,{method:"DELETE"});if(!t.ok)throw new w(_(t.status),`http_${t.status}`);const r=await t.json();return o.info(`删除会话 id=${n} success=${r.success}`),r.success||!1}catch(n){return o.error("删除会话失败",n),!1}}function S(n){return y(`/conversation/${n}/export`)}async function F(){if(!h)return"";const n=function(n,e){try{return localStorage.getItem(N(n,e))||""}catch(n){return""}}(h.integrateId,h.userId);if(n)return h.chatId=n,o.info(`从缓存恢复 chatId=${n}`),n;try{const n=await $(1,5,h.userId,h.integrateId);if(n.list.length>0){const e=n.list[0],t=e.conversationId||e.chatId||"";if(t)return h.chatId=t,M(h.integrateId,h.userId,t),o.info(`从后端恢复会话 chatId=${t} messageCount=${e.messageCount}`),t}}catch(n){o.warn("查询后端会话列表失败,将生成新 chatId",n)}const e=function(){const n="undefined"!=typeof crypto&&crypto.randomUUID?crypto.randomUUID().substring(0,8):Math.random().toString(36).substring(2,10);return`sdk_${Date.now()}_${n}`}();return h.chatId=e,M(h.integrateId,h.userId,e),o.info(`生成新 chatId=${e}`),e}function N(n,e){return`csk_chatId_${n}${e?"_"+e:""}`}function M(n,e,t){try{t?localStorage.setItem(N(n,e),t):localStorage.removeItem(N(n,e))}catch(n){}}let T=null;function D(n){const e=B(n.primaryColor,-15),t=B(n.primaryColor,18),r=function(n){const e=n.match(/^#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/);return e?`${parseInt(e[1],16)}, ${parseInt(e[2],16)}, ${parseInt(e[3],16)}`:"79, 70, 229"}(n.primaryColor),s=n.launcherTheme?{"dream-purple":{grad1:"#A78BFA",grad2:"#F0ABFC",glow:"167, 139, 250"},"mint-tech":{grad1:"#6EE7B7",grad2:"#34D399",glow:"52, 211, 153"},"coral-peach":{grad1:"#FB7185",grad2:"#FDBA74",glow:"251, 113, 133"},"sky-blue":{grad1:"#7DD3FC",grad2:"#A78BFA",glow:"125, 211, 252"}}[n.launcherTheme]:null;return`\n --csk-primary: ${n.primaryColor};\n --csk-primary-hover: ${e};\n --csk-primary-light: ${t};\n --csk-primary-rgb: ${r};\n --csk-bg-user: linear-gradient(135deg, ${n.primaryColor}, ${e});\n --csk-bg-ai: #ffffff;\n --csk-text-user: #ffffff;\n --csk-text-ai: #1F2937;\n --csk-window-width: ${n.width}px;\n --csk-window-height: ${n.height}px;\n --csk-radius: 16px;\n --csk-shadow-window: 0 12px 48px rgba(15, 23, 42, 0.18), 0 2px 8px rgba(15, 23, 42, 0.06);\n --csk-shadow-bubble: 0 1px 2px rgba(15, 23, 42, 0.06);\n --csk-border: #ECEEF2;\n --csk-bg-app: #F6F7F9;\n ${s?`\n --csk-launcher-grad-1: ${s.grad1};\n --csk-launcher-grad-2: ${s.grad2};\n --csk-launcher-glow: ${s.glow};\n `:""}\n `}function B(n,e){const t=n.match(/^#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/);if(!t)return n;const r=n=>Math.max(0,Math.min(255,n)),s=r(parseInt(t[1],16)+e),o=r(parseInt(t[2],16)+e),a=r(parseInt(t[3],16)+e);return`#${s.toString(16).padStart(2,"0")}${o.toString(16).padStart(2,"0")}${a.toString(16).padStart(2,"0")}`}function q(n){document.querySelector("style[data-csk-sdk]")||(T=document.createElement("style"),T.setAttribute("data-csk-sdk",""),T.textContent=function(n){return`\n/* ChatbotSDK 样式 - csk- 命名空间 */\n.csk-root {\n ${D(n)}\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif;\n font-size: 14px;\n line-height: 1.55;\n color: #1F2937;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n box-sizing: border-box;\n}\n.csk-root *, .csk-root *::before, .csk-root *::after { box-sizing: border-box; }\n\n/* ========== 悬浮按钮 ========== */\n.csk-launcher {\n position: fixed;\n bottom: 24px;\n z-index: 9998;\n width: 60px;\n height: 60px;\n border-radius: 50%;\n background: var(--csk-bg-user);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n color: #fff;\n user-select: none;\n overflow: visible;\n /* 半透明白色光环边框,在白色页面上清晰分离按钮与背景 */\n border: 2.5px solid rgba(255, 255, 255, 0.55);\n /* 三层投影:接地阴影 + 彩色光晕,把按钮从白底「托」出来 */\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.06),\n 0 4px 16px rgba(0, 0, 0, 0.10),\n 0 6px 24px rgba(var(--csk-primary-rgb), 0.28),\n 0 0 48px rgba(var(--csk-primary-rgb), 0.12);\n transition:\n transform 0.25s cubic-bezier(0.34, 1.56, 0.64, 1),\n box-shadow 0.25s ease,\n border-color 0.25s ease;\n animation: csk-launcher-in 0.55s cubic-bezier(0.22, 1, 0.36, 1) both;\n}\n.csk-launcher--right { right: 24px; }\n.csk-launcher--left { left: 24px; }\n\n/* 高光扫过动效 */\n.csk-launcher::before {\n content: '';\n position: absolute;\n top: -50%;\n left: -50%;\n width: 40%;\n height: 200%;\n border-radius: 50%;\n background: linear-gradient(\n 105deg,\n transparent 30%,\n rgba(255, 255, 255, 0.28) 48%,\n rgba(255, 255, 255, 0.1) 52%,\n transparent 70%\n );\n transform: rotate(25deg);\n animation: csk-shimmer 4s ease-in-out infinite;\n pointer-events: none;\n}\n/* 呼吸色晕 — 配合接地阴影,强化白底上的立体存在感 */\n.csk-launcher::after {\n content: '';\n position: absolute;\n inset: -18px;\n border-radius: 50%;\n background: radial-gradient(circle, rgba(var(--csk-primary-rgb), 0.18) 0%, rgba(var(--csk-primary-rgb), 0.05) 45%, transparent 68%);\n animation: csk-breathe 3.5s ease-in-out infinite;\n pointer-events: none;\n}\n.csk-launcher:hover {\n transform: translateY(-3px) scale(1.08);\n border-color: rgba(255, 255, 255, 0.75);\n box-shadow:\n 0 2px 6px rgba(0, 0, 0, 0.10),\n 0 8px 24px rgba(0, 0, 0, 0.14),\n 0 10px 36px rgba(var(--csk-primary-rgb), 0.32),\n 0 0 56px rgba(var(--csk-primary-rgb), 0.14);\n}\n.csk-launcher:hover::before { animation-play-state: paused; }\n.csk-launcher:hover::after {\n animation: none;\n inset: -22px;\n background: radial-gradient(circle, rgba(var(--csk-primary-rgb), 0.22) 0%, rgba(var(--csk-primary-rgb), 0.06) 45%, transparent 68%);\n}\n.csk-launcher:active { transform: scale(0.93); }\n.csk-launcher svg {\n width: 30px;\n height: 30px;\n position: relative;\n z-index: 1;\n filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.15));\n}\n\n@keyframes csk-launcher-in {\n 0% { opacity: 0; transform: scale(0.5) translateY(16px); }\n 60% { transform: scale(1.06) translateY(-2px); }\n 100% { opacity: 1; transform: scale(1) translateY(0); }\n}\n@keyframes csk-shimmer {\n 0%, 100% { left: -60%; opacity: 0; }\n 20% { opacity: 1; }\n 60% { opacity: 1; }\n 80% { left: 120%; opacity: 0; }\n}\n@keyframes csk-breathe {\n 0%, 100% { transform: scale(1); opacity: 1; }\n 50% { transform: scale(1.15); opacity: 0.35; }\n}\n\n/* SVG 图标内部动效:眨眼 */\n.csk-launcher .csk-ico-eye {\n animation: csk-eye-blink 4s ease-in-out infinite;\n}\n@keyframes csk-eye-blink {\n 0%, 42%, 48%, 100% { opacity: 1; }\n 45% { opacity: 0.1; }\n}\n/* SVG 图标内部动效:天线能量闪烁 */\n.csk-launcher .csk-ico-antenna {\n animation: csk-antenna-glow 2s ease-in-out infinite;\n}\n@keyframes csk-antenna-glow {\n 0%, 100% { opacity: 0.5; }\n 50% { opacity: 1; }\n}\n\n/* ========== 磨砂玻璃质感悬浮按钮 ========== */\n.csk-launcher--glass {\n background: linear-gradient(\n 135deg,\n var(--csk-launcher-grad-1, var(--csk-primary)) 0%,\n var(--csk-launcher-grad-2, var(--csk-primary-light)) 100%\n ) !important;\n backdrop-filter: blur(12px) saturate(180%);\n -webkit-backdrop-filter: blur(12px) saturate(180%);\n border: 1.5px solid rgba(255, 255, 255, 0.55) !important;\n /* 多层阴影:接地 + 彩色光晕 + 内阴影立体感 */\n box-shadow:\n 0 2px 4px rgba(0, 0, 0, 0.04),\n 0 6px 20px rgba(0, 0, 0, 0.08),\n 0 8px 32px rgba(var(--csk-launcher-glow, var(--csk-primary-rgb)), 0.30),\n inset 0 1px 1px rgba(255, 255, 255, 0.35),\n inset 0 -1px 1px rgba(0, 0, 0, 0.04) !important;\n}\n.csk-launcher--glass:hover {\n border-color: rgba(255, 255, 255, 0.75) !important;\n box-shadow:\n 0 4px 8px rgba(0, 0, 0, 0.06),\n 0 10px 28px rgba(0, 0, 0, 0.10),\n 0 12px 40px rgba(var(--csk-launcher-glow, var(--csk-primary-rgb)), 0.38),\n inset 0 1px 2px rgba(255, 255, 255, 0.45),\n inset 0 -1px 1px rgba(0, 0, 0, 0.04) !important;\n}\n\n/* 玻璃按钮的呼吸色晕 — 更鲜艳、更醒目 */\n.csk-launcher--glass::after {\n background: radial-gradient(\n circle,\n rgba(var(--csk-launcher-glow, var(--csk-primary-rgb)), 0.28) 0%,\n rgba(var(--csk-launcher-glow, var(--csk-primary-rgb)), 0.10) 40%,\n transparent 65%\n ) !important;\n animation: csk-breathe-glow 3.5s ease-in-out infinite;\n}\n@keyframes csk-breathe-glow {\n 0%, 100% { transform: scale(1); opacity: 0.8; }\n 50% { transform: scale(1.22); opacity: 0.25; }\n}\n\n/* 玻璃按钮的高光扫过 — 更柔和的玻璃质感 */\n.csk-launcher--glass::before {\n background: linear-gradient(\n 115deg,\n transparent 25%,\n rgba(255, 255, 255, 0.35) 45%,\n rgba(255, 255, 255, 0.15) 55%,\n transparent 75%\n ) !important;\n width: 50%;\n animation: csk-shimmer-glass 5s ease-in-out infinite;\n}\n@keyframes csk-shimmer-glass {\n 0%, 100% { left: -70%; opacity: 0; }\n 15% { opacity: 1; }\n 55% { opacity: 1; }\n 70% { left: 130%; opacity: 0; }\n}\n\n/* SVG 内部动效:跳动气泡(3 个小圆点交错弹跳) */\n.csk-launcher .csk-ico-bubble {\n animation: csk-bubble-jump 1.4s ease-in-out infinite;\n}\n.csk-launcher .csk-ico-bubble--1 { animation-delay: 0s; }\n.csk-launcher .csk-ico-bubble--2 { animation-delay: 0.18s; }\n.csk-launcher .csk-ico-bubble--3 { animation-delay: 0.36s; }\n@keyframes csk-bubble-jump {\n 0%, 100% { transform: translateY(0); }\n 40% { transform: translateY(-3.5px); }\n 60% { transform: translateY(-1px); }\n}\n\n/* ========== 聊天弹窗 ========== */\n.csk-window {\n position: fixed;\n bottom: 24px;\n z-index: 9999;\n width: var(--csk-window-width);\n height: var(--csk-window-height);\n max-height: calc(100vh - 48px);\n background: #fff;\n border-radius: var(--csk-radius);\n box-shadow: var(--csk-shadow-window);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n transform-origin: bottom right;\n transition: opacity 0.24s ease, transform 0.24s cubic-bezier(0.34, 1.2, 0.64, 1), visibility 0.24s;\n opacity: 1;\n transform: translateY(0) scale(1);\n visibility: visible;\n pointer-events: auto;\n}\n.csk-window--right { right: 24px; transform-origin: bottom right; }\n.csk-window--left { left: 24px; transform-origin: bottom left; }\n.csk-window--hidden {\n opacity: 0;\n transform: translateY(12px) scale(0.96);\n visibility: hidden;\n pointer-events: none;\n}\n\n/* ========== 头部 ========== */\n.csk-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n min-height: 60px;\n background: var(--csk-bg-user);\n color: #fff;\n cursor: move;\n user-select: none;\n position: relative;\n flex-shrink: 0;\n}\n.csk-header::after {\n content: '';\n position: absolute;\n left: 0; right: 0; bottom: 0;\n height: 24px;\n background: linear-gradient(to bottom, rgba(0,0,0,0.04), transparent);\n pointer-events: none;\n}\n.csk-header__left {\n display: flex;\n align-items: center;\n gap: 12px;\n min-width: 0;\n}\n.csk-header__avatar {\n width: 38px;\n height: 38px;\n border-radius: 50%;\n background: rgba(255, 255, 255, 0.22);\n backdrop-filter: blur(4px);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.25);\n}\n.csk-header__avatar svg { width: 22px; height: 22px; }\n.csk-header__info {\n display: flex;\n flex-direction: column;\n min-width: 0;\n}\n.csk-header__title {\n font-size: 15px;\n font-weight: 600;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n letter-spacing: 0.2px;\n}\n.csk-header__status {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n font-size: 11.5px;\n opacity: 0.9;\n margin-top: 2px;\n}\n.csk-status-dot {\n width: 7px;\n height: 7px;\n border-radius: 50%;\n background: #6EE7B7;\n box-shadow: 0 0 0 0 rgba(110, 231, 183, 0.7);\n animation: csk-status-pulse 2s infinite;\n}\n@keyframes csk-status-pulse {\n 0% { box-shadow: 0 0 0 0 rgba(110, 231, 183, 0.7); }\n 70% { box-shadow: 0 0 0 6px rgba(110, 231, 183, 0); }\n 100% { box-shadow: 0 0 0 0 rgba(110, 231, 183, 0); }\n}\n.csk-header__actions {\n display: flex;\n align-items: center;\n gap: 2px;\n flex-shrink: 0;\n}\n.csk-header__btn,\n.csk-history-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border: none;\n background: transparent;\n color: #fff;\n cursor: pointer;\n border-radius: 8px;\n transition: background 0.15s, transform 0.15s;\n}\n.csk-header__btn:hover,\n.csk-history-btn:hover {\n background: rgba(255, 255, 255, 0.2);\n}\n.csk-header__btn:active,\n.csk-history-btn:active { transform: scale(0.92); }\n\n/* ========== 消息区 ========== */\n.csk-messages {\n flex: 1;\n overflow-y: auto;\n padding: 20px 16px 12px;\n background: var(--csk-bg-app);\n scroll-behavior: smooth;\n}\n.csk-messages::-webkit-scrollbar { width: 6px; }\n.csk-messages::-webkit-scrollbar-track { background: transparent; }\n.csk-messages::-webkit-scrollbar-thumb {\n background: #D8DCE3;\n border-radius: 3px;\n}\n.csk-messages::-webkit-scrollbar-thumb:hover { background: #C2C7D0; }\n\n/* 欢迎空状态 */\n.csk-welcome {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 48px 24px 32px;\n color: #6B7280;\n animation: csk-fade-in 0.3s ease;\n}\n.csk-welcome__avatar {\n width: 56px;\n height: 56px;\n border-radius: 50%;\n background: var(--csk-bg-user);\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 14px;\n box-shadow: 0 6px 18px rgba(var(--csk-primary-rgb), 0.3);\n}\n.csk-welcome__avatar svg { width: 30px; height: 30px; }\n.csk-welcome__title {\n font-size: 15px;\n font-weight: 600;\n color: #1F2937;\n margin-bottom: 4px;\n}\n.csk-welcome__desc {\n font-size: 13px;\n color: #9CA3AF;\n line-height: 1.6;\n}\n\n/* 消息气泡 */\n.csk-msg {\n display: flex;\n margin-bottom: 18px;\n max-width: 100%;\n word-break: break-word;\n animation: csk-msg-in 0.28s cubic-bezier(0.22, 1, 0.36, 1);\n}\n.csk-msg--user {\n flex-direction: row-reverse;\n align-items: flex-end;\n}\n.csk-msg--ai {\n flex-direction: row;\n align-items: flex-start;\n}\n.csk-msg__avatar {\n width: 30px;\n height: 30px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n margin: 0 8px;\n box-shadow: var(--csk-shadow-bubble);\n}\n.csk-msg__avatar svg { width: 18px; height: 18px; }\n.csk-msg__avatar--ai {\n background: #fff;\n color: var(--csk-primary);\n border: 1px solid var(--csk-border);\n}\n.csk-msg__avatar--user {\n background: var(--csk-bg-user);\n color: #fff;\n}\n.csk-msg__content {\n display: flex;\n flex-direction: column;\n min-width: 0;\n max-width: calc(100% - 46px);\n}\n.csk-msg--user .csk-msg__content { align-items: flex-end; }\n.csk-msg--ai .csk-msg__content { align-items: flex-start; }\n.csk-msg__bubble {\n padding: 10px 14px;\n border-radius: 16px;\n font-size: 14px;\n line-height: 1.6;\n box-shadow: var(--csk-shadow-bubble);\n}\n.csk-msg--user .csk-msg__bubble {\n background: var(--csk-bg-user);\n color: var(--csk-text-user);\n border-radius: 16px 16px 4px 16px;\n}\n.csk-msg--ai .csk-msg__bubble {\n background: var(--csk-bg-ai);\n color: var(--csk-text-ai);\n border-radius: 16px 16px 16px 4px;\n border: 1px solid var(--csk-border);\n}\n.csk-msg__time {\n font-size: 11px;\n color: #9CA3AF;\n margin-top: 5px;\n padding: 0 4px;\n}\n\n@keyframes csk-msg-in {\n from { opacity: 0; transform: translateY(8px); }\n to { opacity: 1; transform: translateY(0); }\n}\n@keyframes csk-fade-in {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n/* ========== Loading 动画 ========== */\n.csk-loading {\n display: flex;\n align-items: center;\n margin-bottom: 18px;\n animation: csk-msg-in 0.28s ease;\n}\n.csk-loading__avatar {\n width: 30px;\n height: 30px;\n border-radius: 50%;\n background: #fff;\n color: var(--csk-primary);\n border: 1px solid var(--csk-border);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n margin: 0 8px;\n box-shadow: var(--csk-shadow-bubble);\n}\n.csk-loading__avatar svg { width: 18px; height: 18px; }\n.csk-loading__bubble {\n background: #fff;\n border: 1px solid var(--csk-border);\n border-radius: 16px 16px 16px 4px;\n padding: 12px 16px;\n display: flex;\n align-items: center;\n gap: 5px;\n}\n.csk-loading__dot {\n width: 7px;\n height: 7px;\n border-radius: 50%;\n background: #B4B9C2;\n animation: csk-bounce 1.4s ease-in-out infinite both;\n}\n.csk-loading__dot:nth-child(1) { animation-delay: 0s; }\n.csk-loading__dot:nth-child(2) { animation-delay: 0.16s; }\n.csk-loading__dot:nth-child(3) { animation-delay: 0.32s; }\n\n@keyframes csk-bounce {\n 0%, 80%, 100% { transform: scale(0.6); opacity: 0.6; }\n 40% { transform: scale(1); opacity: 1; }\n}\n\n/* ========== 输入区 ========== */\n.csk-input-area {\n padding: 10px 12px 14px;\n background: #fff;\n border-top: 1px solid var(--csk-border);\n flex-shrink: 0;\n}\n.csk-input-wrap {\n display: flex;\n align-items: flex-end;\n gap: 8px;\n background: var(--csk-bg-app);\n border: 1px solid var(--csk-border);\n border-radius: 14px;\n padding: 6px 6px 6px 14px;\n transition: border-color 0.2s, box-shadow 0.2s, background 0.2s;\n}\n.csk-input-wrap--focus {\n border-color: var(--csk-primary);\n background: #fff;\n box-shadow: 0 0 0 3px rgba(var(--csk-primary-rgb), 0.12);\n}\n.csk-input {\n flex: 1;\n border: none;\n background: transparent;\n padding: 8px 0;\n font-size: 14px;\n outline: none;\n font-family: inherit;\n resize: none;\n min-height: 22px;\n max-height: 120px;\n line-height: 1.5;\n color: #1F2937;\n}\n.csk-input::placeholder { color: #9CA3AF; }\n.csk-root .csk-input:focus-visible { outline: none; }\n.csk-send-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n min-width: 36px;\n border: none;\n border-radius: 10px;\n background: var(--csk-bg-user);\n color: #fff;\n cursor: pointer;\n transition: transform 0.18s, box-shadow 0.18s, opacity 0.18s;\n box-shadow: 0 3px 10px rgba(var(--csk-primary-rgb), 0.3);\n}\n.csk-send-btn:hover:not(:disabled) {\n transform: translateY(-1px);\n box-shadow: 0 5px 14px rgba(var(--csk-primary-rgb), 0.4);\n}\n.csk-send-btn:active:not(:disabled) { transform: scale(0.92); }\n.csk-send-btn:disabled {\n background: #D1D5DB;\n box-shadow: none;\n cursor: not-allowed;\n opacity: 0.7;\n}\n.csk-send-btn svg { width: 18px; height: 18px; }\n\n/* ========== 清空按钮 ========== */\n.csk-clear-btn {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 5px 12px;\n border: 1px solid var(--csk-border);\n border-radius: 999px;\n background: #fff;\n color: #6B7280;\n font-size: 12px;\n cursor: pointer;\n margin: 0 auto 8px;\n transition: all 0.15s;\n font-family: inherit;\n}\n.csk-clear-btn:hover {\n background: #FEF2F2;\n border-color: #FCA5A5;\n color: #DC2626;\n}\n\n/* ========== P1: 知识库分类下拉 ========== */\n.csk-category-bar {\n display: flex;\n align-items: center;\n padding: 8px 12px;\n border-top: 1px solid var(--csk-border);\n background: #FBFBFC;\n gap: 8px;\n flex-shrink: 0;\n}\n.csk-category-bar__label {\n font-size: 13px;\n white-space: nowrap;\n}\n.csk-category-select {\n flex: 1;\n padding: 6px 28px 6px 10px;\n border: 1px solid var(--csk-border);\n border-radius: 8px;\n font-size: 12.5px;\n color: #374151;\n background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%239CA3AF' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E") no-repeat right 9px center;\n appearance: none;\n -webkit-appearance: none;\n outline: none;\n cursor: pointer;\n font-family: inherit;\n transition: border-color 0.2s, box-shadow 0.2s;\n max-width: 220px;\n}\n.csk-category-select:focus {\n border-color: var(--csk-primary);\n box-shadow: 0 0 0 3px rgba(var(--csk-primary-rgb), 0.12);\n}\n\n/* ========== P1: RAG 引用来源卡片 ========== */\n.csk-sources {\n margin-top: 8px;\n border: 1px solid var(--csk-border);\n border-radius: 12px;\n overflow: hidden;\n font-size: 12px;\n max-width: 100%;\n background: #FAFBFC;\n}\n.csk-sources__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 12px;\n background: #F3F4F7;\n cursor: pointer;\n user-select: none;\n transition: background 0.15s;\n}\n.csk-sources__header:hover { background: #ECEEF2; }\n.csk-sources__title {\n display: flex;\n align-items: center;\n gap: 5px;\n font-weight: 500;\n color: #374151;\n}\n.csk-sources__arrow {\n transition: transform 0.2s;\n color: #9CA3AF;\n font-size: 10px;\n}\n.csk-sources--collapsed .csk-sources__arrow { transform: rotate(-90deg); }\n.csk-sources__body {\n border-top: 1px solid var(--csk-border);\n padding: 0;\n}\n.csk-sources--collapsed .csk-sources__body { display: none; }\n.csk-source-item {\n padding: 9px 12px;\n border-bottom: 1px solid #F0F1F4;\n transition: background 0.15s;\n}\n.csk-source-item:last-child { border-bottom: none; }\n.csk-source-item:hover { background: #fff; }\n.csk-source-item__name {\n font-weight: 500;\n color: #1F2937;\n margin-bottom: 3px;\n}\n.csk-source-item__snippet {\n color: #6B7280;\n line-height: 1.5;\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n}\n.csk-source-item__meta {\n font-size: 11px;\n color: #9CA3AF;\n margin-top: 4px;\n}\n\n/* ========== P1: Markdown 渲染样式 ========== */\n.csk-msg--ai .csk-msg__bubble .csk-md-p { margin: 0 0 8px; }\n.csk-msg--ai .csk-msg__bubble .csk-md-p:last-child { margin-bottom: 0; }\n.csk-msg--ai .csk-msg__bubble .csk-md-h1,\n.csk-msg--ai .csk-msg__bubble .csk-md-h2,\n.csk-msg--ai .csk-msg__bubble .csk-md-h3,\n.csk-msg--ai .csk-msg__bubble .csk-md-h4,\n.csk-msg--ai .csk-msg__bubble .csk-md-h5,\n.csk-msg--ai .csk-msg__bubble .csk-md-h6 {\n margin: 14px 0 6px;\n font-weight: 600;\n line-height: 1.3;\n color: #111827;\n}\n.csk-msg--ai .csk-msg__bubble .csk-md-h1 { font-size: 20px; }\n.csk-msg--ai .csk-msg__bubble .csk-md-h2 { font-size: 17px; }\n.csk-msg--ai .csk-msg__bubble .csk-md-h3 { font-size: 15px; }\n.csk-msg--ai .csk-msg__bubble .csk-md-h4 { font-size: 14px; }\n\n.csk-md-code-block {\n background: #1E293B;\n color: #E2E8F0;\n padding: 12px 14px;\n border-radius: 10px;\n overflow-x: auto;\n margin: 8px 0;\n font-size: 13px;\n line-height: 1.55;\n font-family: 'SF Mono', 'Consolas', 'Menlo', 'Monaco', monospace;\n}\n.csk-md-code-block code {\n background: none;\n padding: 0;\n border-radius: 0;\n font-size: inherit;\n color: inherit;\n}\n.csk-md-inline-code {\n background: rgba(var(--csk-primary-rgb), 0.1);\n color: var(--csk-primary);\n padding: 1px 6px;\n border-radius: 5px;\n font-size: 13px;\n font-family: 'SF Mono', 'Consolas', 'Menlo', 'Monaco', monospace;\n}\n.csk-msg--ai .csk-msg__bubble .csk-md-ul,\n.csk-msg--ai .csk-msg__bubble .csk-md-ol {\n padding-left: 22px;\n margin: 6px 0;\n}\n.csk-msg--ai .csk-msg__bubble .csk-md-ul li,\n.csk-msg--ai .csk-msg__bubble .csk-md-ol li { margin-bottom: 4px; }\n.csk-md-blockquote {\n border-left: 3px solid var(--csk-primary);\n padding: 2px 12px;\n margin: 8px 0;\n color: #6B7280;\n background: rgba(var(--csk-primary-rgb), 0.05);\n border-radius: 0 6px 6px 0;\n}\n.csk-md-link {\n color: var(--csk-primary);\n text-decoration: none;\n border-bottom: 1px solid rgba(var(--csk-primary-rgb), 0.3);\n transition: border-color 0.15s;\n}\n.csk-md-link:hover { border-bottom-color: var(--csk-primary); }\n.csk-md-hr {\n border: none;\n border-top: 1px solid var(--csk-border);\n margin: 12px 0;\n}\n\n/* ========== P2: 会话管理面板 ========== */\n.csk-history-panel {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: #fff;\n z-index: 10;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n animation: csk-slide-in 0.24s ease;\n}\n.csk-history-panel--hidden { display: none; }\n@keyframes csk-slide-in {\n from { transform: translateX(100%); opacity: 0.4; }\n to { transform: translateX(0); opacity: 1; }\n}\n.csk-history-panel__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 14px 16px;\n border-bottom: 1px solid var(--csk-border);\n background: var(--csk-bg-app);\n flex-shrink: 0;\n}\n.csk-history-panel__title {\n font-size: 14px;\n font-weight: 600;\n color: #1F2937;\n}\n.csk-history-panel__back {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 5px 12px;\n border: 1px solid var(--csk-border);\n border-radius: 8px;\n background: #fff;\n color: #374151;\n font-size: 12px;\n cursor: pointer;\n transition: all 0.15s;\n font-family: inherit;\n}\n.csk-history-panel__back:hover { background: #F3F4F6; }\n.csk-history-panel__list {\n flex: 1;\n overflow-y: auto;\n padding: 10px;\n}\n.csk-history-panel__list::-webkit-scrollbar { width: 5px; }\n.csk-history-panel__list::-webkit-scrollbar-thumb { background: #E5E7EB; border-radius: 2px; }\n.csk-history-item {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 11px 12px;\n border-radius: 10px;\n cursor: pointer;\n transition: background 0.15s;\n margin-bottom: 5px;\n border: 1px solid transparent;\n}\n.csk-history-item:hover { background: #F3F4F6; }\n.csk-history-item--active {\n background: rgba(var(--csk-primary-rgb), 0.08);\n border-color: rgba(var(--csk-primary-rgb), 0.2);\n}\n.csk-history-item--active:hover { background: rgba(var(--csk-primary-rgb), 0.12); }\n.csk-history-item__info { flex: 1; min-width: 0; }\n.csk-history-item__id {\n font-size: 13px;\n font-weight: 500;\n color: #1F2937;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.csk-history-item__meta {\n font-size: 11px;\n color: #9CA3AF;\n margin-top: 3px;\n}\n.csk-history-item__actions {\n display: flex;\n gap: 4px;\n margin-left: 8px;\n opacity: 0;\n transition: opacity 0.15s;\n}\n.csk-history-item:hover .csk-history-item__actions { opacity: 1; }\n.csk-history-action {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border: none;\n border-radius: 7px;\n cursor: pointer;\n font-size: 12px;\n transition: all 0.15s;\n}\n.csk-history-action--export { background: #EFF6FF; color: #2563EB; }\n.csk-history-action--export:hover { background: #DBEAFE; }\n.csk-history-action--delete { background: #FEF2F2; color: #DC2626; }\n.csk-history-action--delete:hover { background: #FEE2E2; }\n.csk-history-panel__empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 48px 20px;\n color: #9CA3AF;\n font-size: 13px;\n text-align: center;\n}\n.csk-history-panel__empty-icon {\n font-size: 34px;\n margin-bottom: 10px;\n opacity: 0.5;\n}\n.csk-history-panel__loading {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 24px;\n color: #9CA3AF;\n font-size: 13px;\n}\n.csk-history-panel__loadmore {\n display: block;\n width: 100%;\n padding: 10px;\n border: none;\n background: #F9FAFB;\n color: #6B7280;\n font-size: 12px;\n cursor: pointer;\n text-align: center;\n transition: background 0.15s;\n}\n.csk-history-panel__loadmore:hover { background: #F3F4F6; }\n\n/* ========== 快捷问题芯片 ========== */\n.csk-quick-replies {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n justify-content: center;\n margin-top: 18px;\n max-width: 320px;\n}\n.csk-quick-reply {\n border: 1px solid var(--csk-border);\n background: #fff;\n color: #374151;\n font-size: 12.5px;\n padding: 7px 13px;\n border-radius: 999px;\n cursor: pointer;\n font-family: inherit;\n line-height: 1.3;\n transition: all 0.18s ease;\n max-width: 100%;\n}\n.csk-quick-reply:hover {\n border-color: var(--csk-primary);\n color: var(--csk-primary);\n background: rgba(var(--csk-primary-rgb), 0.06);\n transform: translateY(-1px);\n}\n.csk-quick-reply:active { transform: scale(0.96); }\n\n/* ========== AI 消息操作条 ========== */\n.csk-msg__actions {\n display: flex;\n gap: 2px;\n margin-top: 5px;\n padding: 0 2px;\n opacity: 0;\n transition: opacity 0.15s ease;\n}\n.csk-msg--ai:hover .csk-msg__actions { opacity: 1; }\n.csk-msg--streaming .csk-msg__actions { display: none; }\n.csk-action-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 26px;\n height: 26px;\n border: none;\n background: transparent;\n color: #9CA3AF;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n.csk-action-btn:hover {\n background: #F3F4F6;\n color: #374151;\n}\n.csk-action-btn--done { color: #10B981; }\n.csk-action-btn:active { transform: scale(0.9); }\n\n/* ========== 流式打字光标 ========== */\n.csk-caret {\n display: inline-block;\n width: 7px;\n height: 15px;\n margin-left: 2px;\n vertical-align: text-bottom;\n background: var(--csk-primary);\n border-radius: 1px;\n animation: csk-caret-blink 1s step-end infinite;\n}\n@keyframes csk-caret-blink {\n 0%, 50% { opacity: 1; }\n 51%, 100% { opacity: 0; }\n}\n\n/* ========== 代码块复制按钮 ========== */\n.csk-md-code-block { position: relative; }\n.csk-md-code-copy {\n position: absolute;\n top: 8px;\n right: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 26px;\n height: 26px;\n border: none;\n background: rgba(255, 255, 255, 0.12);\n color: #CBD5E1;\n border-radius: 6px;\n cursor: pointer;\n opacity: 0;\n transition: all 0.15s ease;\n}\n.csk-md-code-block:hover .csk-md-code-copy { opacity: 1; }\n.csk-md-code-copy:hover { background: rgba(255, 255, 255, 0.22); color: #fff; }\n.csk-md-code-copy:active { transform: scale(0.9); }\n\n/* ========== 新消息提示按钮 ========== */\n.csk-newmsg {\n position: absolute;\n bottom: 82px;\n left: 50%;\n transform: translateX(-50%);\n z-index: 5;\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 7px 14px;\n border: none;\n background: var(--csk-primary);\n color: #fff;\n font-size: 12px;\n font-family: inherit;\n border-radius: 999px;\n cursor: pointer;\n box-shadow: 0 4px 14px rgba(var(--csk-primary-rgb), 0.38);\n transition: transform 0.2s ease, box-shadow 0.2s ease;\n animation: csk-msg-in 0.25s ease;\n white-space: nowrap;\n}\n.csk-newmsg:hover { transform: translateX(-50%) translateY(-1px); box-shadow: 0 6px 18px rgba(var(--csk-primary-rgb), 0.48); }\n.csk-newmsg:active { transform: translateX(-50%) scale(0.95); }\n.csk-newmsg--hidden { display: none; }\n\n/* ========== 发送按钮停止态 ========== */\n.csk-send-btn--stop {\n background: #EF4444 !important;\n box-shadow: 0 3px 10px rgba(239, 68, 68, 0.35) !important;\n}\n.csk-send-btn--stop:hover:not(:disabled) {\n box-shadow: 0 5px 14px rgba(239, 68, 68, 0.45) !important;\n}\n\n/* ========== 暗色模式 ========== */\n.csk-root.csk-dark {\n --csk-bg-ai: #1E1E2E;\n --csk-text-ai: #E2E8F0;\n --csk-border: #3B3B52;\n --csk-bg-app: #141421;\n color: #E2E8F0;\n}\n.csk-dark .csk-window {\n background: #1A1A2E;\n box-shadow: 0 12px 48px rgba(0, 0, 0, 0.4), 0 2px 8px rgba(0, 0, 0, 0.2);\n}\n.csk-dark .csk-header::after { background: linear-gradient(to bottom, rgba(0,0,0,0.12), transparent); }\n.csk-dark .csk-msg__avatar--ai {\n background: var(--csk-bg-ai);\n color: var(--csk-primary);\n border-color: var(--csk-border);\n}\n.csk-dark .csk-input-area { background: #1A1A2E; border-top-color: var(--csk-border); }\n.csk-dark .csk-input-wrap { background: var(--csk-bg-app); border-color: var(--csk-border); }\n.csk-dark .csk-input-wrap--focus { background: #1A1A2E; border-color: var(--csk-primary); }\n.csk-dark .csk-input { color: #E2E8F0; }\n.csk-dark .csk-loading__avatar { background: var(--csk-bg-ai); border-color: var(--csk-border); }\n.csk-dark .csk-loading__bubble { background: var(--csk-bg-ai); border-color: var(--csk-border); }\n.csk-dark .csk-loading__dot { background: #6B7280; }\n.csk-dark .csk-category-bar { background: #1A1A2E; border-top-color: var(--csk-border); }\n.csk-dark .csk-category-select { background-color: var(--csk-bg-app); border-color: var(--csk-border); color: #E2E8F0; }\n.csk-dark .csk-sources { background: #1E1E2E; border-color: var(--csk-border); }\n.csk-dark .csk-sources__header { background: #25253A; }\n.csk-dark .csk-sources__header:hover { background: #2D2D48; }\n.csk-dark .csk-source-item:hover { background: var(--csk-bg-ai); }\n.csk-dark .csk-source-item__name { color: #E2E8F0; }\n.csk-dark .csk-source-item__meta { color: #6B7280; }\n.csk-dark .csk-history-panel { background: #1A1A2E; }\n.csk-dark .csk-history-panel__header { background: var(--csk-bg-app); border-bottom-color: var(--csk-border); }\n.csk-dark .csk-history-panel__back { background: var(--csk-bg-app); border-color: var(--csk-border); color: #E2E8F0; }\n.csk-dark .csk-history-panel__back:hover { background: #2D2D48; }\n.csk-dark .csk-history-item:hover { background: #25253A; }\n.csk-dark .csk-history-item__id { color: #E2E8F0; }\n.csk-dark .csk-history-item__meta { color: #6B7280; }\n.csk-dark .csk-history-item--active { background: rgba(var(--csk-primary-rgb), 0.15); }\n.csk-dark .csk-history-item--active:hover { background: rgba(var(--csk-primary-rgb), 0.22); }\n.csk-dark .csk-action-btn:hover { background: #2D2D48; color: #E2E8F0; }\n.csk-dark .csk-clear-btn { background: var(--csk-bg-app); border-color: var(--csk-border); color: #9CA3AF; }\n.csk-dark .csk-clear-btn:hover { background: #3B1A1A; border-color: #7F1D1D; color: #FCA5A5; }\n.csk-dark .csk-md-code-block { background: #0F0F1A; }\n.csk-dark .csk-md-blockquote { background: rgba(var(--csk-primary-rgb), 0.08); }\n.csk-dark .csk-md-link { color: var(--csk-primary-light); }\n.csk-dark .csk-msg--ai .csk-msg__bubble { background: var(--csk-bg-ai); color: var(--csk-text-ai); border-color: var(--csk-border); }\n.csk-dark .csk-welcome__title { color: #E2E8F0; }\n.csk-dark .csk-welcome__desc { color: #6B7280; }\n.csk-dark .csk-quick-reply { background: var(--csk-bg-app); border-color: var(--csk-border); color: #CBD5E1; }\n.csk-dark .csk-quick-reply:hover { background: rgba(var(--csk-primary-rgb), 0.12); border-color: var(--csk-primary); color: var(--csk-primary-light); }\n.csk-dark .csk-teaser { background: #2D2D48; color: #E2E8F0; box-shadow: 0 4px 20px rgba(0,0,0,0.35); }\n.csk-dark .csk-teaser::after { border-top-color: #2D2D48; }\n.csk-dark .csk-teaser__close { color: #6B7280; }\n.csk-dark .csk-teaser__close:hover { color: #9CA3AF; }\n.csk-dark .csk-feedback-btn { background: rgba(var(--csk-primary-rgb), 0.1); color: #9CA3AF; }\n.csk-dark .csk-feedback-btn:hover { background: rgba(var(--csk-primary-rgb), 0.2); color: var(--csk-primary-light); }\n.csk-dark .csk-feedback-btn--active { background: rgba(var(--csk-primary-rgb), 0.28); color: var(--csk-primary-light); }\n.csk-dark .csk-history-panel__search-wrap { background: var(--csk-bg-app); border-color: var(--csk-border); }\n.csk-dark .csk-history-panel__search-wrap:focus-within { border-color: var(--csk-primary); }\n.csk-dark .csk-history-panel__search { color: #E2E8F0; }\n.csk-dark .csk-launcher__badge { box-shadow: 0 0 0 2px #1A1A2E; }\n.csk-dark .csk-welcome__avatar { box-shadow: 0 6px 18px rgba(var(--csk-primary-rgb), 0.25); }\n.csk-dark .csk-header__avatar { box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.15); background: rgba(255, 255, 255, 0.1); }\n\n/* ========== Launcher 未读徽章 ========== */\n.csk-launcher__badge {\n position: absolute;\n top: -2px;\n right: -2px;\n width: 16px;\n height: 16px;\n border-radius: 50%;\n background: #EF4444;\n border: 2px solid #fff;\n box-shadow: 0 0 0 2px #fff;\n animation: csk-badge-in 0.28s cubic-bezier(0.34, 1.56, 0.64, 1);\n pointer-events: none;\n}\n.csk-launcher__badge--hidden { display: none; }\n@keyframes csk-badge-in {\n from { transform: scale(0); }\n to { transform: scale(1); }\n}\n\n/* ========== Launcher 提示气泡 ========== */\n.csk-teaser {\n position: fixed;\n bottom: 90px;\n z-index: 9997;\n max-width: 240px;\n padding: 10px 14px;\n background: #fff;\n color: #1F2937;\n font-size: 13px;\n line-height: 1.5;\n border-radius: 12px;\n box-shadow: 0 4px 20px rgba(15, 23, 42, 0.15);\n animation: csk-teaser-in 0.35s cubic-bezier(0.22, 1, 0.36, 1);\n cursor: pointer;\n user-select: none;\n}\n.csk-teaser--right { right: 24px; }\n.csk-teaser--left { left: 24px; }\n.csk-teaser::after {\n content: '';\n position: absolute;\n bottom: -6px;\n right: 28px;\n width: 12px;\n height: 12px;\n background: inherit;\n border-radius: 2px;\n transform: rotate(45deg);\n box-shadow: 2px 2px 4px rgba(15, 23, 42, 0.08);\n}\n.csk-teaser--left::after { right: auto; left: 28px; }\n.csk-teaser__close {\n position: absolute;\n top: 4px;\n right: 6px;\n background: none;\n border: none;\n font-size: 16px;\n color: #9CA3AF;\n cursor: pointer;\n padding: 2px 4px;\n line-height: 1;\n border-radius: 4px;\n}\n.csk-teaser__close:hover { color: #374151; }\n.csk-teaser--hidden { display: none; }\n@keyframes csk-teaser-in {\n from { opacity: 0; transform: translateY(8px) scale(0.95); }\n to { opacity: 1; transform: translateY(0) scale(1); }\n}\n\n/* ========== 消息反馈按钮(👍 / 👎) ========== */\n.csk-feedback-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 26px;\n height: 26px;\n border: none;\n background: rgba(var(--csk-primary-rgb), 0.08);\n color: #9CA3AF;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s ease;\n padding: 0;\n}\n.csk-feedback-btn:hover { background: rgba(var(--csk-primary-rgb), 0.18); color: var(--csk-primary); }\n.csk-feedback-btn--active {\n background: rgba(var(--csk-primary-rgb), 0.28);\n color: var(--csk-primary);\n}\n.csk-feedback-btn--active.down { background: #FEF2F2; color: #EF4444; }\n.csk-feedback-btn:active { transform: scale(0.9); }\n.csk-msg--streaming .csk-feedback-btn { display: none; }\n\n/* ========== 历史会话搜索框 ========== */\n.csk-history-panel__search-wrap {\n padding: 8px 10px;\n border-bottom: 1px solid var(--csk-border);\n flex-shrink: 0;\n}\n.csk-history-panel__search-wrap:focus-within {\n border-bottom-color: var(--csk-primary);\n}\n.csk-history-panel__search {\n width: 100%;\n padding: 7px 10px;\n border: 1px solid var(--csk-border);\n border-radius: 8px;\n font-size: 12.5px;\n font-family: inherit;\n color: #1F2937;\n background: var(--csk-bg-app);\n outline: none;\n transition: border-color 0.2s;\n}\n.csk-history-panel__search:focus { border-color: var(--csk-primary); }\n.csk-history-panel__search::placeholder { color: #9CA3AF; }\n\n/* ========== a11y 焦点指示 ========== */\n.csk-root :focus-visible {\n outline: 2px solid var(--csk-primary);\n outline-offset: 2px;\n}\n.csk-root button:focus-visible {\n outline: 2px solid var(--csk-primary);\n outline-offset: 2px;\n border-radius: inherit;\n}\n/* 弹窗打开时隐藏 launcher 上的焦点环 */\n.csk-launcher:focus-visible {\n outline: none;\n border-color: rgba(255, 255, 255, 0.75);\n box-shadow:\n 0 1px 2px rgba(0, 0, 0, 0.06),\n 0 4px 16px rgba(0, 0, 0, 0.10),\n 0 6px 24px rgba(var(--csk-primary-rgb), 0.28),\n 0 0 48px rgba(var(--csk-primary-rgb), 0.12),\n 0 0 0 4px rgba(var(--csk-primary-rgb), 0.3);\n}\n\n/* ========== a11y aria-live 播报区(视觉隐藏) ========== */\n.csk-sr-only {\n position: absolute !important;\n width: 1px !important;\n height: 1px !important;\n padding: 0 !important;\n margin: -1px !important;\n overflow: hidden !important;\n clip: rect(0,0,0,0) !important;\n white-space: nowrap !important;\n border: 0 !important;\n}\n\n/* ========== 会话分组标题 ========== */\n.csk-history-group {\n margin-bottom: 4px;\n}\n.csk-history-group__label {\n font-size: 11px;\n font-weight: 600;\n color: #9CA3AF;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n padding: 8px 12px 4px;\n user-select: none;\n}\n.csk-dark .csk-history-group__label { color: #6B7280; }\n\n/* ========== 移动端适配 ========== */\n@media (max-width: 480px) {\n .csk-window {\n width: 100vw !important;\n height: 100vh !important;\n max-height: 100vh;\n bottom: 0 !important;\n right: 0 !important;\n left: 0 !important;\n border-radius: 0;\n }\n .csk-window--hidden { transform: translateY(100%); }\n .csk-launcher { bottom: 20px; }\n .csk-launcher--right { right: 20px; }\n .csk-launcher--left { left: 20px; }\n}\n`}(n),document.head.appendChild(T))}function z(){return"undefined"!=typeof crypto&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,n=>{const e=16*Math.random()|0;return("x"===n?e:3&e|8).toString(16)})}function H(n){const e={"&":"&","<":"<",">":">",'"':""","'":"'"};return n.replace(/[&<>"']/g,n=>e[n]||n)}function j(){return Date.now()}const R='';function P(n,e){const t=document.createElement("div");t.id="csk-launcher";const r=n.launcherTheme?" csk-launcher--glass":"";t.className=`csk-launcher csk-launcher--${"left-bottom"===n.position?"left":"right"}${r}`,t.setAttribute("title",n.title),t.setAttribute("aria-label",n.title),t.setAttribute("role","button"),t.setAttribute("tabindex","0"),t.innerHTML=n.launcherIcon;const s=document.createElement("div");s.className="csk-launcher__badge csk-launcher__badge--hidden",t.appendChild(s);const o=function(n,e){let t=null;return function(...r){null!==t&&clearTimeout(t),t=setTimeout(()=>{n.apply(this,r),t=null},e)}}(e,300);return t.addEventListener("click",o),t.addEventListener("keydown",n=>{"Enter"!==n.key&&" "!==n.key||(n.preventDefault(),o())}),t}function U(n,e,t){const r=document.createElement("div");r.className="csk-msg csk-msg--user";const s=document.createElement("div");s.className="csk-msg__avatar csk-msg__avatar--user",s.innerHTML='';const o=document.createElement("div");o.className="csk-msg__content";const a=document.createElement("div");a.className="csk-msg__bubble",a.textContent=e;const i=document.createElement("div");return i.className="csk-msg__time",i.textContent=en(t),o.appendChild(a),o.appendChild(i),r.appendChild(s),r.appendChild(o),n.appendChild(r),r}function O(n,e,t,r,s){const o=document.createElement("div");o.className="csk-msg csk-msg--ai",s&&(o.dataset.cskMsgId=s);const a=document.createElement("div");a.className="csk-msg__avatar csk-msg__avatar--ai",a.innerHTML=R;const i=document.createElement("div");i.className="csk-msg__content";const c=document.createElement("div");c.className="csk-msg__bubble",r?c.innerHTML=r(e):c.textContent=e;const l=document.createElement("div");return l.className="csk-msg__time",l.textContent=en(t),i.appendChild(c),i.appendChild(G(c,o)),i.appendChild(l),o.appendChild(a),o.appendChild(i),n.appendChild(o),X(c),o}const Y='',W='';function G(n,e){const t=document.createElement("div");t.className="csk-msg__actions";const r=document.createElement("button");r.type="button",r.className="csk-action-btn",r.setAttribute("title",m("copy")),r.setAttribute("aria-label",m("copy")),r.innerHTML=Y,r.addEventListener("click",async e=>{e.stopPropagation();const t=n.textContent||"";await K(t,r)});const s=document.createElement("button");s.type="button",s.className="csk-action-btn",s.setAttribute("title",m("retry")),s.setAttribute("aria-label",m("retry")),s.innerHTML=W,s.addEventListener("click",n=>{n.stopPropagation();const t=e.closest(".csk-window");t&&t.dispatchEvent(new CustomEvent("csk:retry",{detail:{msgId:e.dataset.cskMsgId||""}}))});const o=document.createElement("button");o.type="button",o.className="csk-feedback-btn",o.setAttribute("title",m("feedback_up")),o.setAttribute("aria-label",m("feedback_up")),o.innerHTML='',o.addEventListener("click",n=>{n.stopPropagation();const t=e.closest(".csk-window");t&&t.dispatchEvent(new CustomEvent("csk:feedback",{detail:{msgId:e.dataset.cskMsgId||"",value:"up"}}))});const a=document.createElement("button");return a.type="button",a.className="csk-feedback-btn",a.setAttribute("title",m("feedback_down")),a.setAttribute("aria-label",m("feedback_down")),a.innerHTML='',a.addEventListener("click",n=>{n.stopPropagation();const t=e.closest(".csk-window");t&&t.dispatchEvent(new CustomEvent("csk:feedback",{detail:{msgId:e.dataset.cskMsgId||"",value:"down"}}))}),t.appendChild(r),t.appendChild(s),t.appendChild(o),t.appendChild(a),t}function V(n,e){const t=n.querySelectorAll(".csk-feedback-btn");t.length<2||(t.forEach(n=>n.classList.remove("csk-feedback-btn--active","down")),"up"===e&&t[0]&&t[0].classList.add("csk-feedback-btn--active"),"down"===e&&t[1]&&t[1].classList.add("csk-feedback-btn--active","down"))}async function K(n,e){const t=e.innerHTML;try{if(navigator.clipboard&&window.isSecureContext)await navigator.clipboard.writeText(n);else{const e=document.createElement("textarea");e.value=n,e.style.position="fixed",e.style.opacity="0",document.body.appendChild(e),e.select(),document.execCommand("copy"),document.body.removeChild(e)}e.innerHTML='',e.classList.add("csk-action-btn--done"),setTimeout(()=>{e.innerHTML=t,e.classList.remove("csk-action-btn--done")},1500)}catch(n){}}function X(n){n.querySelectorAll(".csk-md-code-block").forEach(n=>{if(n.querySelector(".csk-md-code-copy"))return;const e=n.querySelector("code"),t=document.createElement("button");t.type="button",t.className="csk-md-code-copy",t.setAttribute("title",m("copy")),t.setAttribute("aria-label",m("copy")),t.innerHTML=Y,t.addEventListener("click",async n=>{n.stopPropagation(),await K((null==e?void 0:e.textContent)||"",t)}),n.appendChild(t)})}function J(n,e){n.classList.remove("csk-msg--streaming");const t=e.querySelector(".csk-caret");t&&t.remove(),X(e)}function Q(n,e){const t=n.querySelector(".csk-sources");if(t&&t.remove(),!e||0===e.length)return;const r=document.createElement("div");r.className="csk-sources csk-sources--collapsed";const s=document.createElement("div");s.className="csk-sources__header";const o=document.createElement("span");o.className="csk-sources__title",o.textContent=`📚 ${m("source_count",{n:e.length})}`;const a=document.createElement("span");a.className="csk-sources__arrow",a.textContent="▼",s.appendChild(o),s.appendChild(a),s.addEventListener("click",()=>{r.classList.toggle("csk-sources--collapsed")});const i=document.createElement("div");i.className="csk-sources__body";for(const n of e){const e=document.createElement("div");e.className="csk-source-item";const t=document.createElement("div");if(t.className="csk-source-item__name",t.textContent=n.title||n.sourceName||"未知文档",n.snippet){const t=document.createElement("div");t.className="csk-source-item__snippet",t.textContent=n.snippet,e.appendChild(t)}const r=document.createElement("div");r.className="csk-source-item__meta";const s=[];n.sourceName&&s.push(n.sourceName),void 0!==n.chunkIndex&&s.push(`分块 #${n.chunkIndex}`),void 0!==n.score&&s.push(`相关度 ${(100*n.score).toFixed(0)}%`),r.textContent=s.join(" · "),e.appendChild(t),e.appendChild(r),i.appendChild(e)}r.appendChild(s),r.appendChild(i);const c=n.querySelector(".csk-msg__time");c&&c.parentNode?c.parentNode.insertBefore(r,c):n.appendChild(r)}function Z(n,e,t,r,s,o,a){if(n.innerHTML="",0===e.length){const e=document.createElement("div");return e.className="csk-history-panel__empty",e.innerHTML=`\n
💬
\n
${m("history_empty")}
\n `,void n.appendChild(e)}const i=function(n){const e=new Date,t=new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime(),r=t-864e5,s=t-864e5*(e.getDay()||7)+864e5,o={today:[],yesterday:[],week:[],earlier:[]};for(const e of n){const n=e.lastMessageTime||e.createdAt,a=n?new Date(n).getTime():0;a>=t?o.today.push(e):a>=r?o.yesterday.push(e):a>=s?o.week.push(e):o.earlier.push(e)}const a=[];return o.today.length&&a.push({label:m("history_group_today"),items:o.today}),o.yesterday.length&&a.push({label:m("history_group_yesterday"),items:o.yesterday}),o.week.length&&a.push({label:m("history_group_week"),items:o.week}),o.earlier.length&&a.push({label:m("history_group_earlier"),items:o.earlier}),a}(e);for(const e of i){if(i.length>1){const t=document.createElement("div");t.className="csk-history-group";const r=document.createElement("div");r.className="csk-history-group__label",r.textContent=e.label,t.appendChild(r),n.appendChild(t)}for(const a of e.items){const e=document.createElement("div");e.className="csk-history-item";const i=a.chatId||a.id;o&&i===o&&e.classList.add("csk-history-item--active");const c=document.createElement("div");c.className="csk-history-item__info";const l=document.createElement("div");l.className="csk-history-item__id",a.lastMessagePreview?l.textContent=a.lastMessagePreview.length>60?a.lastMessagePreview.substring(0,60)+"...":a.lastMessagePreview:l.textContent=i;const d=document.createElement("div");d.className="csk-history-item__meta";const p=[];void 0!==a.messageCount&&p.push(`${a.messageCount} 条消息`),a.lastMessageTime?p.push(a.lastMessageTime):a.createdAt&&p.push(a.createdAt),d.textContent=p.join(" · "),c.appendChild(l),c.appendChild(d);const u=document.createElement("div");u.className="csk-history-item__actions";const k=document.createElement("button");k.className="csk-history-action csk-history-action--export",k.setAttribute("title",m("history_export")),k.innerHTML='',k.addEventListener("click",n=>{n.stopPropagation(),r(a.id)});const g=document.createElement("button");g.className="csk-history-action csk-history-action--delete",g.setAttribute("title",m("history_delete")),g.innerHTML='',g.addEventListener("click",n=>{n.stopPropagation(),s(a.id)}),u.appendChild(k),u.appendChild(g),e.appendChild(c),e.appendChild(u),e.addEventListener("click",()=>{t(i)}),n.appendChild(e)}}}function nn(n){n.scrollTop=n.scrollHeight}function en(n){const e=new Date(n);return`${String(e.getHours()).padStart(2,"0")}:${String(e.getMinutes()).padStart(2,"0")}`}function tn(n){return`csk_history_${n}`}function rn(n,e){try{let t=e;t.length>200&&(t=t.slice(50),o.warn(`消息数量达到上限,已裁剪最早 50 条,当前 ${t.length} 条`));const r={messages:t,updatedAt:Date.now()};localStorage.setItem(tn(n),JSON.stringify(r))}catch(n){n instanceof Error&&"QuotaExceededError"===n.name?o.error("localStorage 空间不足,会话历史保存失败。建议清空历史记录。"):o.error("保存会话历史失败",n)}}function sn(n){try{localStorage.removeItem(tn(n))}catch(n){o.warn("清空会话历史失败",n)}}const on="\0CODEBLOCK_",an="\0INLINECODE_";function cn(n){if(!n||"string"!=typeof n)return"";const e=[];let t=n;t=t.replace(/```(\w*)\n([\s\S]*?)```/g,(n,t,r)=>{const s=e.length,o=H(r.trimEnd()),a=t?` class="language-${H(t)}"`:"";return e.push(`
${o}
`),`${on}${s}\0`});const r=[];t=t.replace(/`([^`\n]+)`/g,(n,e)=>{const t=r.length;return r.push(`${H(e)}`),`${an}${t}\0`}),t=H(t),t=ln(t,on,e),t=ln(t,an,r);const s=t.split("\n"),o=[];let a=!1,i="",c=!1,l=[];for(let n=0;n')){p(),u(),k(),o.push(e);continue}const t=e.match(/^(#{1,6})\s+(.+)/);if(t){p(),u(),k();const n=t[1].length;o.push(`${t[2]}`);continue}const r=e.match(/^>\s?(.*)/);if(r){p(),u(),c||(c=!0,o.push('
')),o.push(`

${d(r[1])}

`);continue}c&&k();const g=e.match(/^[\-\*]\s+(.+)/);if(g){p(),k(),a&&"ul"===i||(u(),a=!0,i="ul",o.push('
    ')),o.push(`
  • ${d(g[1])}
  • `);continue}const m=e.match(/^\d+\.\s+(.+)/);m?(p(),k(),a&&"ol"===i||(u(),a=!0,i="ol",o.push('
      ')),o.push(`
    1. ${d(m[1])}
    2. `)):""!==e.trim()?/^(\*{3,}|-{3,}|_{3,})$/.test(e.trim())?(p(),u(),k(),o.push('
      ')):(u(),k(),l.push(d(e))):(p(),u())}return p(),u(),k(),o.join("\n");function d(n){return n=(n=(n=(n=(n=(n=n.replace(/\*\*(.+?)\*\*/g,"$1")).replace(/__(.+?)__/g,"$1")).replace(/\*(.+?)\*/g,"$1")).replace(/(?$1")).replace(/~~(.+?)~~/g,"$1")).replace(/\[([^\]]+)\]\(([^)]+)\)/g,(n,e,t)=>`${e}`)}function p(){l.length>0&&(o.push(`

      ${l.join("
      ")}

      `),l=[])}function u(){a&&(o.push("ul"===i?"
":""),a=!1,i="")}function k(){c&&(o.push("
"),c=!1)}}function ln(n,e,t){return n.replace(new RegExp(e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")+"(\\d+)\0","g"),(n,e)=>t[parseInt(e)]||"")}let dn,pn=null,un=[],kn=null,gn=null,mn=null,hn=null,bn=null,fn=null,yn=null,xn=null,vn=null,wn=null,_n=null,En=null,Cn=null,In=!1,$n=null,An=!0,Ln=[],Sn="",Fn=!1;function Nn(n,e){pn=n,kn=e.messagesContainer,gn=e.inputEl,mn=e.inputEl.parentElement,hn=e.sendBtn,bn=e.clearBtn,fn=e.categorySelect,yn=e.historyPanel,xn=e.welcomeEl,vn=e.newMsgBtn,wn=e.searchInput,_n=e.ariaLiveEl,En=e.showLoading,Cn=e.hideLoading,dn=n.categoryId,Fn=!!n.categoryId||!!n.showCategorySwitch,function(){if(!gn||!hn)return;hn.addEventListener("click",()=>{In&&$n?$n.abort():Rn()}),gn.addEventListener("keydown",n=>{"Enter"!==n.key||n.shiftKey||n.isComposing||(n.preventDefault(),Rn())}),gn.addEventListener("input",()=>{jn(),function(){if(!gn)return;gn.style.height="auto",gn.style.height=`${Math.min(gn.scrollHeight,120)}px`}()}),gn.addEventListener("focus",()=>{mn&&mn.classList.add("csk-input-wrap--focus")}),gn.addEventListener("blur",()=>{mn&&mn.classList.remove("csk-input-wrap--focus")}),bn&&bn.addEventListener("click",()=>function(){if(!pn)return;if(!confirm(m("clear_confirm")))return;if(un=[],kn){kn.querySelectorAll(".csk-msg, .csk-loading").forEach(n=>n.remove())}bn&&(bn.style.display="none");Hn(),sn(pn.integrateId);const n=function(){const n="undefined"!=typeof crypto&&crypto.randomUUID?crypto.randomUUID().substring(0,8):Math.random().toString(36).substring(2,10);return`sdk_${Date.now()}_${n}`}();b(n),M(pn.integrateId,pn.userId,n),o.lifecycleClear(pn.integrateId),o.info(`新 chatId=${n}`)}())}(),function(){if(!kn)return;kn.addEventListener("scroll",()=>{if(!kn)return;const{scrollTop:n,scrollHeight:e,clientHeight:t}=kn;An=e-n-t<80,An&&Tn()}),vn&&vn.addEventListener("click",()=>{kn&&nn(kn),An=!0,Tn()})}(),function(){if(!wn)return;wn.addEventListener("input",()=>{Sn=wn.value.trim().toLowerCase(),qn()})}(),n.showCategorySwitch&&fn&&async function(){if(!fn)return;try{const n=await async function(){const n=y("/category/tree");try{const e=await v(n);if(!e.ok)throw new w(_(e.status),`http_${e.status}`);const t=await e.json();return t.success&&Array.isArray(t.data)?(o.info(`加载分类树成功 count=${t.data.length}`),t.data):[]}catch(n){return n instanceof w?o.error(`加载分类树失败: ${n.message}`):o.error("加载分类树失败",n),[]}}();if(0===n.length)return;fn.innerHTML=``;const e=(n,t=0)=>{for(const r of n){const n=document.createElement("option");n.value=String(r.id),n.textContent=`${" ".repeat(t)}${r.name}`,void 0!==dn&&String(r.id)===String(dn)&&(n.selected=!0),fn.appendChild(n),r.children&&r.children.length>0&&e(r.children,t+1)}};e(n),o.info(`知识库分类加载成功 count=${n.length}`)}catch(n){o.error(m("category_load_error"),n)}}()}async function Mn(){if(pn&&kn&&(await F(),await async function(){if(!pn||!kn)return;const n=f();if(!n)return;try{const e=await A(n);e.messages.length>0&&(un=e.messages.map((n,e)=>({id:z(),role:"USER"===n.messageType?"user":"ai",content:n.content,timestamp:new Date(n.createTime).getTime()})),Un(),o.info(`从后端加载 ${un.length} 条历史消息`),rn(pn.integrateId,un))}catch(n){o.warn("从后端加载历史消息失败",n)}}(),0===un.length)){const n=function(n){try{const e=localStorage.getItem(tn(n));if(!e)return[];const t=JSON.parse(e);return t&&Array.isArray(t.messages)?(o.info(`加载历史消息 integrateId=${n} count=${t.messages.length}`),t.messages):[]}catch(n){return o.warn("加载会话历史失败",n),[]}}(pn.integrateId);n.length>0&&(un=n,Un(),o.info(`从本地缓存恢复 ${n.length} 条消息`))}}function Tn(){vn&&vn.classList.add("csk-newmsg--hidden")}function Dn(){kn&&(An?nn(kn):vn&&vn.classList.remove("csk-newmsg--hidden"))}function Bn(n){hn&&("stop"===n?(hn.classList.add("csk-send-btn--stop"),hn.removeAttribute("disabled"),hn.setAttribute("title",m("stop")),hn.setAttribute("aria-label",m("stop")),hn.innerHTML=''):(hn.classList.remove("csk-send-btn--stop"),hn.setAttribute("title",m("send")),hn.setAttribute("aria-label",m("send")),hn.innerHTML='',jn()))}function qn(){const n=null==yn?void 0:yn.querySelector("#csk-history-list");if(!n||!pn)return;Z(n,Sn?Ln.filter(n=>(n.lastMessagePreview||n.chatId||n.id||"").toLowerCase().includes(Sn)):Ln,n=>{On(n)},n=>{window.open(S(n),"_blank")},async n=>{if(!confirm(m("history_delete_confirm")))return;await L(n)&&(n===f()&&(un=[],kn&&kn.querySelectorAll(".csk-msg, .csk-loading").forEach(n=>n.remove()),bn&&(bn.style.display="none"),Hn()),Ln=Ln.filter(e=>(e.chatId||e.id)!==n),qn())},f())}function zn(n,e){if(!kn)return;const t=un.find(e=>e.id===n&&"ai"===e.role);if(!t)return;const r=t.feedback===e?void 0:e;t.feedback=r;const s=kn.querySelector(`[data-csk-msg-id="${n}"]`);if(s&&V(s,r),pn&&rn(pn.integrateId,un),r){const e="up"===r?"THUMBS_UP":"THUMBS_DOWN";(async function(n,e){if(!h)return!1;const t=y("/feedback");try{const r=await v(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({messageId:String(n),conversationId:h.chatId,feedbackType:e})});return r.ok?(await r.json()).success||!1:(o.error(`反馈提交失败 status=${r.status}`),!1)}catch(n){return o.error("反馈提交异常",n),!1}})(String(n),e).then(e=>{e?o.info(`消息反馈已提交 msgId=${n} value=${r}`):o.warn(`消息反馈提交失败 msgId=${n}(本地状态已更新)`)})}else o.info(`消息反馈已取消 msgId=${n}`)}function Hn(){if(!xn)return;const n=un.length>0||kn&&kn.querySelector(".csk-msg");xn.style.display=n?"none":""}function jn(){if(!hn||!gn)return;gn.value.trim().length>0&&!In?hn.removeAttribute("disabled"):hn.setAttribute("disabled","true")}async function Rn(){if(!gn||!pn||In)return;const n=gn.value.trim();if(""===n)return;gn.value="",jn(),gn.style.height="auto";const e=j(),t={id:z(),role:"user",content:n,timestamp:e};kn&&U(kn,n,e),un.push(t),Hn(),bn&&un.length>0&&(bn.style.display="inline-flex"),kn&&Dn(),await Pn(n)}async function Pn(n){if(!pn||!kn)return;In=!0,Bn("stop"),pn.chatId||await F();const e=j(),t=Fn&&(void 0!==dn||void 0!==pn.categoryId);En&&En(),kn&&Dn();const r=z();let s="";try{pn.streaming?s=await async function(n,e,t,r){$n=new AbortController;const s=$n.signal;return new Promise((o,a)=>{let i=null,c=null,l="",d=!1;C(n,n=>{if(l+=n,!d&&kn){Cn&&Cn();const{wrapper:n,bubble:t}=function(n,e,t){const r=document.createElement("div");r.className="csk-msg csk-msg--ai csk-msg--streaming",t&&(r.dataset.cskMsgId=t);const s=document.createElement("div");s.className="csk-msg__avatar csk-msg__avatar--ai",s.innerHTML=R;const o=document.createElement("div");o.className="csk-msg__content";const a=document.createElement("div");a.className="csk-msg__bubble",a.innerHTML="";const i=document.createElement("div");return i.className="csk-msg__time",i.textContent=en(e),o.appendChild(a),o.appendChild(G(a,r)),o.appendChild(i),r.appendChild(s),r.appendChild(o),n.appendChild(r),{wrapper:r,bubble:a}}(kn,e,r);c=n,i=t,d=!0}i&&(i.textContent=l,function(n){if(n.querySelector(".csk-caret"))return;const e=document.createElement("span");e.className="csk-caret",e.setAttribute("aria-hidden","true"),n.appendChild(e)}(i)),kn&&Dn()},()=>{if(c&&i){if(!d&&""===l)return void E(n).then(o).catch(a);l&&(i.innerHTML=cn(l)),J(c,i)}o(l)},n=>{l.length>0?(i&&(i.innerHTML=cn(l+"\n\n"+m("stream_interrupted")),c&&J(c,i)),o(l)):a(n)},dn,t,s)})}(n,e,t,r):(s=await E(n),Cn&&Cn(),kn&&O(kn,s,e,cn,r));const a={id:r,role:"ai",content:s,timestamp:e};un.push(a),rn(pn.integrateId,un),kn&&Dn(),function(n){if(!_n)return;const e=n.length>120?n.substring(0,120)+"...":n;_n.textContent=m("new_msg_announce")+":"+e}(s),kn&&kn.dispatchEvent(new CustomEvent("csk:newMessage",{bubbles:!0,detail:{msg:a}})),t&&async function(n,e){try{const t=await I(n,dn);if(t.length>0){const n=t.map(n=>{var e,t;return{documentId:n.documentId||"",title:n.title||"",sourceName:n.sourceName||"",chunkIndex:null!==(e=n.chunkIndex)&&void 0!==e?e:0,score:null!==(t=n.score)&&void 0!==t?t:0,snippet:n.snippet||""}});if(e.sources=n,kn){const e=kn.querySelector(".csk-msg--ai:last-of-type");e&&Q(e,n)}pn&&rn(pn.integrateId,un)}}catch(n){o.warn("获取引用来源失败",n)}}(n,a)}catch(n){Cn&&Cn();const e=n instanceof w?n.message:m("error_send");if(kn){const n=document.createElement("div");n.className="csk-msg csk-msg--ai";const t=document.createElement("div");t.className="csk-msg__bubble",t.style.color="#DC2626",t.textContent=`⚠ ${e}`,n.appendChild(t),kn.appendChild(n)}o.error(`发送失败 integrateId=${pn.integrateId}`,n)}finally{In=!1,$n=null,Bn("send"),jn()}}function Un(){if(!kn)return;const n=kn.querySelector(".csk-history-panel");kn.querySelectorAll(".csk-msg, .csk-loading").forEach(n=>n.remove());for(const n of un)if("user"===n.role)U(kn,n.content,n.timestamp);else{const e=O(kn,n.content,n.timestamp,cn,n.id);n.sources&&n.sources.length>0&&Q(e,n.sources),n.feedback&&V(e,n.feedback)}An=!0,nn(kn),bn&&un.length>0&&(bn.style.display="inline-flex"),Hn(),n&&!kn.contains(n)&&kn.appendChild(n)}async function On(n){if(!pn||!kn)return;o.info(`切换到会话 conversationId=${n}`),b(n),M(pn.integrateId,pn.userId,n),yn&&yn.classList.add("csk-history-panel--hidden"),un=[];kn.querySelectorAll(".csk-msg, .csk-loading").forEach(n=>n.remove());try{const e=await A(n);e.messages.length>0&&(un=e.messages.map(n=>({id:z(),role:"USER"===n.messageType?"user":"ai",content:n.content,timestamp:new Date(n.createTime).getTime()})),Un(),o.info(`加载会话 ${n} 的 ${un.length} 条消息`),rn(pn.integrateId,un))}catch(e){o.warn(`加载会话消息失败 conversationId=${n}`,e)}bn&&un.length>0&&(bn.style.display="inline-flex"),Hn()}let Yn=null,Wn=!1,Gn=null,Vn=null,Kn=null,Xn=null,Jn=null,Qn=null,Zn=null,ne=null,ee=null,te=null,re=null,se=null,oe=null,ae=null,ie=null;function ce(){if(!se||!Gn)return;const n=Gn.getBoundingClientRect();"left-bottom"===(null==Yn?void 0:Yn.position)?se.style.left=`${n.left}px`:se.style.right=window.innerWidth-n.right+"px",se.style.bottom=window.innerHeight-n.top+8+"px"}function le(){if(!se)return;se.classList.add("csk-teaser--hidden"),se.removeEventListener("click",de);const n=se.querySelector(".csk-teaser__close");n&&n.removeEventListener("click",pe)}function de(n){n.target.closest(".csk-teaser__close")||(le(),me())}function pe(n){n.stopPropagation(),le()}function ue(){se&&!se.classList.contains("csk-teaser--hidden")&&ce()}const ke='button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])';function ge(n){"Escape"===n.key&&Vn&&!Vn.classList.contains("csk-window--hidden")&&he(),function(n){if(!Vn||Vn.classList.contains("csk-window--hidden"))return;if("Tab"!==n.key)return;const e=Array.from(Vn.querySelectorAll(ke));if(0===e.length)return;const t=e[0],r=e[e.length-1];n.shiftKey?document.activeElement===t&&(n.preventDefault(),r.focus()):document.activeElement===r&&(n.preventDefault(),t.focus())}(n)}function me(){Vn&&(Vn.classList.remove("csk-window--hidden"),le(),ae&&ae.classList.add("csk-launcher__badge--hidden"),setTimeout(()=>{Xn&&Xn.focus()},80))}function he(){Vn&&Vn.classList.add("csk-window--hidden")}function be(){Vn&&(Vn.classList.contains("csk-window--hidden")?me():he())}function fe(n){return`csk_position_${n}`}const ye={init:function(n){if(Wn)return void o.warn("SDK 已初始化,请先调用 destroy() 再重新初始化");const t=function(n){var e,t,r,s,i,k,g,m,h,b;if(!n.integrateId||"string"!=typeof n.integrateId&&"number"!=typeof n.integrateId||"string"==typeof n.integrateId&&""===n.integrateId.trim())return o.error('integrateId 是必传参数(对应后端 roleId 客服角色 ID),请检查 init() 调用。示例:ChatbotSDK.init({ integrateId: 1, requestDomain: "https://api.example.com" })'),null;if(!n.requestDomain||"string"!=typeof n.requestDomain||""===n.requestDomain.trim())return o.error('requestDomain 是必传参数,请检查 init() 调用。示例:ChatbotSDK.init({ integrateId: 1, requestDomain: "https://api.example.com" })'),null;try{new URL(n.requestDomain)}catch(e){return o.error(`requestDomain 不是合法的 URL 格式:${n.requestDomain}。请提供完整的域名,如 https://api.example.com`),null}const f=String(n.integrateId).trim(),y=n.launcherTheme||void 0;let x=n.launcherIcon||a,v=n.primaryColor||"#4F46E5";y&&!n.launcherIcon&&(x={"dream-purple":c,"mint-tech":l,"coral-peach":d,"sky-blue":p}[y]||a,n.primaryColor||(v=u[y]||"#4F46E5"));const w={integrateId:f,requestDomain:n.requestDomain.replace(/\/+$/,""),userId:n.userId,categoryId:n.categoryId,showCategorySwitch:null!==(e=n.showCategorySwitch)&&void 0!==e&&e,title:n.title||"AI 智能助手",width:null!==(t=n.width)&&void 0!==t?t:380,height:Math.max(300,null!==(r=n.height)&&void 0!==r?r:520),position:"left-bottom"===n.position?"left-bottom":"right-bottom",primaryColor:v,launcherTheme:y,launcherIcon:x,showClear:null===(s=n.showClear)||void 0===s||s,showAdminPanel:null!==(i=n.showAdminPanel)&&void 0!==i&&i,quickReplies:Array.isArray(n.quickReplies)?n.quickReplies.map(n=>String(n).trim()).filter(Boolean):[],theme:"dark"===n.theme?"dark":"light",showTeaser:null===(k=n.showTeaser)||void 0===k||k,teaserText:"string"==typeof n.teaserText&&n.teaserText.trim()||"",streaming:null===(g=n.streaming)||void 0===g||g,locale:n.locale||"zh-CN",debug:null===(m=n.debug)||void 0===m||m,sound:null!==(h=n.sound)&&void 0!==h&&h,notification:null!==(b=n.notification)&&void 0!==b&&b,onError:"function"==typeof n.onError?n.onError:void 0,onReady:"function"==typeof n.onReady?n.onReady:void 0,onMessage:"function"==typeof n.onMessage?n.onMessage:void 0,chatId:""};return o.info(`配置解析完成 integrateId(=roleId)=${w.integrateId} userId(=accountId)=${w.userId||"(未设置)"} requestDomain=${w.requestDomain}`),w}(n);if(!t)return;var s;Yn=t,function(n){if(k[n])g=n;else{const e=n.split("-")[0],t=Object.keys(k).find(n=>n.startsWith(e));t&&(g=t)}}(Yn.locale),s=Yn.debug,e=s,r(Yn.onError),function(n){h=n}(Yn),q(Yn),Gn=P(Yn,be),document.body.appendChild(Gn),ae=Gn.querySelector(".csk-launcher__badge");const i=function(n){const e=document.createElement("div");e.id="csk-window",e.className=`csk-root csk-window csk-window--${"left-bottom"===n.position?"left":"right"} csk-window--hidden${"dark"===n.theme?" csk-dark":""}`,e.setAttribute("role","dialog"),e.setAttribute("aria-label",n.title),e.setAttribute("aria-modal","false");const t=document.createElement("div");t.className="csk-header";const r=document.createElement("div");r.className="csk-header__left";const s=document.createElement("div");s.className="csk-header__avatar",s.innerHTML=R;const o=document.createElement("div");o.className="csk-header__info";const a=document.createElement("span");a.className="csk-header__title",a.textContent=n.title;const i=document.createElement("span");i.className="csk-header__status",i.innerHTML=`${m("status_online")}`,o.appendChild(a),o.appendChild(i),r.appendChild(s),r.appendChild(o);const c=document.createElement("div");c.className="csk-header__actions";const l=document.createElement("button");l.className="csk-history-btn",l.setAttribute("title",m("history_title")),l.innerHTML='';const d=document.createElement("button");d.className="csk-header__btn csk-header__btn--minimize",d.setAttribute("title",m("minimize")),d.innerHTML='',d.addEventListener("click",()=>{e.classList.add("csk-window--hidden")});const p=document.createElement("button");p.className="csk-header__btn csk-header__btn--close",p.setAttribute("title",m("close")),p.innerHTML='',p.addEventListener("click",()=>{e.classList.add("csk-window--hidden")}),c.appendChild(l),c.appendChild(d),c.appendChild(p),t.appendChild(r),t.appendChild(c);const u=document.createElement("div");u.id="csk-messages",u.className="csk-messages";const k=document.createElement("div");if(k.className="csk-welcome",k.innerHTML=`\n
${R}
\n
${m("welcome_title")}
\n
${m("welcome_desc")}
\n `,n.quickReplies.length>0){const t=document.createElement("div");t.className="csk-quick-replies";for(const r of n.quickReplies){const n=document.createElement("button");n.type="button",n.className="csk-quick-reply",n.textContent=r,n.addEventListener("click",()=>{e.dispatchEvent(new CustomEvent("csk:quickReply",{detail:{text:r}}))}),t.appendChild(n)}k.appendChild(t)}u.appendChild(k);const g=document.createElement("button");g.type="button",g.className="csk-newmsg csk-newmsg--hidden",g.innerHTML=`\n \n ${m("new_message")}\n `,e.appendChild(g);const h=document.createElement("div");h.className="csk-history-panel csk-history-panel--hidden",h.innerHTML=`\n
\n ${m("history_title")}\n \n
\n
\n \n
\n
\n `,u.appendChild(h);const b=h.querySelector("#csk-history-back");b&&b.addEventListener("click",()=>{h.classList.add("csk-history-panel--hidden")}),l.addEventListener("click",n=>{n.stopPropagation();const t=h.classList.contains("csk-history-panel--hidden");h.classList.toggle("csk-history-panel--hidden"),t&&e.dispatchEvent(new CustomEvent("csk:loadHistory"))});let f=null;if(n.showCategorySwitch){const n=document.createElement("div");n.className="csk-category-bar";const r=document.createElement("span");r.className="csk-category-bar__label",r.textContent="📚",f=document.createElement("select"),f.id="csk-category-select",f.className="csk-category-select",f.innerHTML=``,f.addEventListener("change",()=>{const n=f.value;e.dispatchEvent(new CustomEvent("csk:categoryChange",{detail:{categoryId:n?Number(n):void 0}}))}),n.appendChild(r),n.appendChild(f),e.appendChild(t),e.appendChild(u),e.appendChild(n)}else e.appendChild(t),e.appendChild(u);const y=document.createElement("div");y.className="csk-input-area";const x=document.createElement("div");x.className="csk-input-wrap";const v=document.createElement("textarea");v.id="csk-input",v.className="csk-input",v.setAttribute("placeholder",m("placeholder")),v.setAttribute("rows","1"),v.setAttribute("autofocus","");const w=document.createElement("button");w.id="csk-send-btn",w.className="csk-send-btn",w.setAttribute("title",m("send")),w.setAttribute("disabled","true"),w.innerHTML='',x.appendChild(v),x.appendChild(w),y.appendChild(x),e.appendChild(y);let _=null;n.showClear&&(_=document.createElement("button"),_.className="csk-clear-btn",_.textContent=m("clear"),_.style.display="none",e.insertBefore(_,y));let E=null;const C=document.createElement("div");C.className="csk-sr-only",C.setAttribute("aria-live","polite"),C.setAttribute("aria-atomic","true"),e.appendChild(C);const I=h.querySelector("#csk-history-search"),$=document.createElement("div");return $.className=`csk-teaser csk-teaser--${"left-bottom"===n.position?"left":"right"} csk-teaser--hidden`,$.setAttribute("role","status"),$.innerHTML=`\n \n ${n.teaserText||m("teaser_text")}\n `,{window:e,messagesContainer:u,inputEl:v,sendBtn:w,clearBtn:_,categorySelect:f,historyPanel:h,welcomeEl:k,newMsgBtn:g,teaserEl:$,searchInput:I,ariaLiveEl:C,showLoading:function(){if(E)return E.style.display="flex",E;const n=document.createElement("div");return n.className="csk-loading",n.innerHTML=`\n
${R}
\n
\n
\n
\n
\n
\n `,u.appendChild(n),E=n,n},hideLoading:function(){E&&E.parentNode&&(E.parentNode.removeChild(E),E=null)}}}(Yn);Vn=i.window,Kn=i.messagesContainer,Xn=i.inputEl,Jn=i.sendBtn,Qn=i.clearBtn,Zn=i.categorySelect,ne=i.historyPanel,ee=i.showLoading,te=i.hideLoading,document.body.appendChild(Vn),se=i.teaserEl,document.body.appendChild(se),ce();const b=Vn.querySelector(".csk-header");if(b&&(re=function(n,e,t){let r=!1,s=0,o=0,a=0,i=0;const c=n=>{if(n.target.closest("button"))return;r=!0,s=n.clientX,o=n.clientY;const t=e.getBoundingClientRect();a=s-t.left,i=o-t.top,document.addEventListener("mousemove",l),document.addEventListener("mouseup",d)},l=n=>{if(!r)return;const t=n.clientX-a,s=n.clientY-i,o=window.innerWidth-e.offsetWidth,c=window.innerHeight-e.offsetHeight;e.style.right="auto",e.style.bottom="auto",e.style.left=`${Math.max(0,Math.min(t,o))}px`,e.style.top=`${Math.max(0,Math.min(s,c))}px`},d=()=>{if(r=!1,document.removeEventListener("mousemove",l),document.removeEventListener("mouseup",d),t){const n=e.getBoundingClientRect();t({x:n.left,y:n.top})}};return n.addEventListener("mousedown",c),()=>{n.removeEventListener("mousedown",c),document.removeEventListener("mousemove",l),document.removeEventListener("mouseup",d)}}(b,Vn,n=>{!function(n,e){try{localStorage.setItem(fe(n),JSON.stringify(e))}catch(n){}}(Yn.integrateId,n)})),function(n,e){try{const t=localStorage.getItem(fe(n));if(!t)return;const r=JSON.parse(t);if("number"!=typeof r.x||"number"!=typeof r.y)return;const s=window.innerWidth-e.offsetWidth,o=window.innerHeight-e.offsetHeight,a=Math.max(0,Math.min(r.x,s)),i=Math.max(0,Math.min(r.y,o));e.style.right="auto",e.style.bottom="auto",e.style.left=`${a}px`,e.style.top=`${i}px`}catch(n){}}(Yn.integrateId,Vn),Nn(Yn,{messagesContainer:Kn,inputEl:Xn,sendBtn:Jn,clearBtn:Qn,categorySelect:Zn,historyPanel:ne,welcomeEl:i.welcomeEl,newMsgBtn:i.newMsgBtn,searchInput:i.searchInput,ariaLiveEl:i.ariaLiveEl,showLoading:ee,hideLoading:te}),Vn.addEventListener("csk:categoryChange",n=>{var e;e=n.detail.categoryId,dn=e,Fn=void 0!==e,o.lifecycleCategoryChange(null!=e?e:"全部")}),Vn.addEventListener("csk:loadHistory",()=>{!async function(){if(!yn||!pn)return;const n=yn.querySelector("#csk-history-list");if(n){n.innerHTML='
加载中...
';try{const e=await $(1,50,pn.userId,pn.integrateId);Ln=e.list.map(n=>({id:n.conversationId||"",chatId:n.conversationId||"",messageCount:n.messageCount,lastMessageTime:n.lastMessageTime,lastMessagePreview:n.lastMessagePreview,createdAt:n.firstMessageTime||n.createdAt})),Sn="",wn&&(wn.value=""),Z(n,Ln,n=>{On(n)},n=>{window.open(S(n),"_blank")},async n=>{confirm(m("history_delete_confirm"))&&await L(n)&&(n===f()&&(un=[],kn&&kn.querySelectorAll(".csk-msg, .csk-loading").forEach(n=>n.remove()),bn&&(bn.style.display="none"),Hn()),Ln=Ln.filter(e=>(e.chatId||e.id)!==n),qn())},f())}catch(e){o.error(m("history_load_error"),e),n.innerHTML=`
${m("history_load_error")}
`}}}()}),Vn.addEventListener("csk:quickReply",n=>{var e;e=n.detail.text,!gn||In?Promise.resolve():(gn.value=e,jn(),Rn())}),Vn.addEventListener("csk:retry",n=>{!async function(n){if(!pn||!kn||In)return;const e=un.findIndex(e=>e.id===n&&"ai"===e.role);if(e<0)return;let t="";for(let n=e-1;n>=0;n--)if("user"===un[n].role){t=un[n].content;break}if(!t)return;const r=un.splice(e),s=new Set(r.map(n=>n.id));kn.querySelectorAll(".csk-msg").forEach(n=>{const e=n.dataset.cskMsgId;e&&s.has(e)&&n.remove()}),rn(pn.integrateId,un),Hn(),await Pn(t)}(n.detail.msgId)}),Vn.addEventListener("csk:feedback",n=>{zn(n.detail.msgId,n.detail.value)}),Vn.addEventListener("csk:newMessage",n=>{var e;if(Vn&&Vn.classList.contains("csk-window--hidden")&&(ae&&ae.classList.remove("csk-launcher__badge--hidden"),(null==Yn?void 0:Yn.sound)&&function(){try{ie||(ie=new(window.AudioContext||window.webkitAudioContext));const n=ie;if("suspended"===n.state)return void n.resume();const e=n.currentTime;[0,.15].forEach((t,r)=>{const s=n.createOscillator(),o=n.createGain();s.type="sine",s.frequency.value=0===r?880:1100,o.gain.setValueAtTime(.15,e+t),o.gain.exponentialRampToValueAtTime(.001,e+t+.12),s.connect(o),o.connect(n.destination),s.start(e+t),s.stop(e+t+.12)})}catch(n){}}(),(null==Yn?void 0:Yn.notification)&&function(){try{if(!("Notification"in window))return;"granted"===Notification.permission?new Notification((null==Yn?void 0:Yn.title)||"AI 智能助手",{body:"收到新消息",icon:void 0,silent:!0}):"denied"!==Notification.permission&&Notification.requestPermission()}catch(n){}}()),(null==Yn?void 0:Yn.onMessage)&&(null===(e=n.detail)||void 0===e?void 0:e.msg))try{Yn.onMessage(n.detail.msg)}catch(n){}}),document.addEventListener("keydown",ge),window.addEventListener("resize",ue),Wn=!0,o.lifecycleInit(Yn.integrateId,Yn.requestDomain),Yn.onReady)try{Yn.onReady()}catch(n){}Yn.showTeaser&&(oe=setTimeout(()=>{Vn&&Vn.classList.contains("csk-window--hidden")&&function(){if(!se)return;ce(),se.classList.remove("csk-teaser--hidden"),se.addEventListener("click",de);const n=se.querySelector(".csk-teaser__close");n&&n.addEventListener("click",pe)}()},1500)),Mn().catch(n=>{o.warn("chatId 初始化失败,将在发送消息时重试",n)})},destroy:function(){if(!Wn)return;oe&&(clearTimeout(oe),oe=null),le(),se&&se.parentNode&&(se.parentNode.removeChild(se),se=null),Gn&&Gn.parentNode&&(Gn.parentNode.removeChild(Gn),Gn=null),Vn&&Vn.parentNode&&(Vn.parentNode.removeChild(Vn),Vn=null),re&&(re(),re=null),T&&T.parentNode&&(T.parentNode.removeChild(T),T=null),document.querySelectorAll("style[data-csk-sdk]").forEach(n=>n.remove()),document.removeEventListener("keydown",ge),window.removeEventListener("resize",ue),r(void 0);const n=null==Yn?void 0:Yn.integrateId;Yn=null,Wn=!1,Kn=null,Xn=null,Jn=null,Qn=null,Zn=null,ne=null,ee=null,te=null,ae=null,ie=null,o.lifecycleDestroy(n||"")},open:me,close:he,toggle:be,clearHistory:function(){Yn&&(Qn?Qn.click():confirm("确定清空所有对话记录?")&&sn(Yn.integrateId))}};return"undefined"!=typeof window&&(window.ChatbotSDK=ye),ye}(); //# sourceMappingURL=chatbot-sdk.min.js.map diff --git a/src/main/resources/static/sdk/chatbot-sdk.min.js.map b/src/main/resources/static/sdk/chatbot-sdk.min.js.map index f9e7547..9f7ed76 100644 --- a/src/main/resources/static/sdk/chatbot-sdk.min.js.map +++ b/src/main/resources/static/sdk/chatbot-sdk.min.js.map @@ -1 +1 @@ -{"version":3,"file":"chatbot-sdk.min.js","sources":["../src/logger.ts","../src/config.ts","../src/i18n.ts","../src/api.ts","../src/styles.ts","../src/utils.ts","../src/dom.ts","../src/storage.ts","../src/markdown.ts","../src/chat.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null],"names":["PREFIX","debugEnabled","errorCallback","setErrorCallback","cb","timers","logger","info","msg","data","console","log","undefined","warn","error","code","Error","type","message","String","detail","_a","time","label","Date","now","timeEnd","prefix","start","duration","lifecycleInit","integrateId","requestDomain","this","lifecycleDestroy","lifecycleSend","length","lifecycleReply","lifecycleError","status","lifecycleClear","lifecycleStreamDone","lifecycleCategoryChange","categoryId","DEFAULT_LAUNCHER_ICON","buildGlassIcon","eyeColor","smileColor","bubbleColor","GLASS_ICON_DREAM_PURPLE","GLASS_ICON_MINT_TECH","GLASS_ICON_CORAL_PEACH","GLASS_ICON_SKY_BLUE","THEME_PRIMARY_COLORS","dictionaries","title","minimize","close","status_online","welcome_title","welcome_desc","placeholder","send","stop","new_message","copy","copied","retry","retrying","loading","stream_interrupted","stream_unstable","category_placeholder","category_all","category_load_error","source_title","source_count","source_loading","clear","clear_confirm","history_title","history_empty","history_load_error","history_delete_confirm","history_export","history_delete","history_search","history_group_today","history_group_yesterday","history_group_week","history_group_earlier","feedback_up","feedback_down","teaser_text","new_msg_announce","error_network","error_timeout","error_server","error_cors","error_auth","error_forbidden","error_not_found","error_rate_limit","error_unavailable","error_unknown","error_send","error_stream_unsupported","en","currentLocale","t","key","params","text","k","v","Object","entries","replace","currentConfig","updateChatId","chatId","getChatId","buildUrl","path","startsWith","setIfPresent","value","trim","set","async","safeFetch","url","options","timeout","externalSignal","controller","AbortController","timer","setTimeout","abort","aborted","addEventListener","once","fetch","assign","signal","mode","credentials","err","CskError","DOMException","name","TypeError","includes","clearTimeout","constructor","super","getHttpErrorMessage","chatRequest","URLSearchParams","userId","toString","buildChatUrl","response","ok","errorMsg","chatSSERequest","onChunk","onDone","onError","useRag","buildChatRAGSSEUrl","buildChatSSEUrl","totalText","REQUEST_TIMEOUT","reader","body","getReader","decoder","TextDecoder","stream","buffer","done","read","decode","lines","split","pop","line","trimmed","substring","readErr","releaseLock","fetchRagSources","buildRagSourcesUrl","json","success","Array","isArray","fetchConversationList","page","size","accountId","roleId","encodeURIComponent","list","total","pages","fetchConversationMessages","conversationId","messages","deleteConversation","method","getConversationExportUrl","initChatId","cachedChatId","localStorage","getItem","chatIdStorageKey","loadCachedChatId","result","latestConv","saveCachedChatId","messageCount","newChatId","random","crypto","randomUUID","Math","generateChatId","setItem","removeItem","styleElement","cssVars","config","darker","adjustColor","primaryColor","lighter","rgb","hex","match","parseInt","hexToRgb","themeColors","launcherTheme","grad1","grad2","glow","width","height","amount","clamp","max","min","r","g","b","padStart","injectStyles","document","querySelector","createElement","setAttribute","textContent","getStyles","head","appendChild","uuid","c","escapeHtml","map","ch","BOT_ICON","createLauncher","onClick","launcher","id","glassClass","className","position","innerHTML","launcherIcon","badge","debouncedClick","fn","delay","args","apply","debounce","e","preventDefault","renderUserBubble","container","timestamp","wrapper","avatar","content","bubble","formatTime","renderAIBubble","renderMd","msgId","dataset","cskMsgId","buildAIActions","enhanceCodeBlocks","COPY_ICON","RETRY_ICON","bar","copyBtn","stopPropagation","copyToClipboard","retryBtn","root","closest","dispatchEvent","CustomEvent","upBtn","downBtn","updateFeedbackUI","btns","querySelectorAll","forEach","btn","classList","remove","add","original","navigator","clipboard","window","isSecureContext","writeText","ta","style","opacity","select","execCommand","removeChild","pre","codeEl","finalizeAIBubble","caret","renderSources","sources","existing","sourcesEl","header","titleSpan","n","arrow","toggle","src","item","sourceName","snippet","meta","metaParts","push","chunkIndex","score","toFixed","join","timeEl","parentNode","insertBefore","renderHistoryList","listEl","items","onSelect","onExport","onDelete","activeChatId","emptyText","empty","groups","todayStart","getFullYear","getMonth","getDate","getTime","yesterdayStart","weekStart","getDay","today","yesterday","week","earlier","timeStr","lastMessageTime","createdAt","ts","groupHistoryByDate","group","groupEl","labelEl","el","convId","idEl","lastMessagePreview","metaEl","actionsEl","exportBtn","deleteBtn","scrollToBottom","scrollTop","scrollHeight","d","getHours","getMinutes","storageKey","saveMessages","slice","updatedAt","JSON","stringify","clearMessages","CODE_BLOCK_PREFIX","INLINE_CODE_PREFIX","renderMarkdown","codeBlocks","processed","_match","lang","idx","escapedCode","trimEnd","langClass","inlineCodes","restorePlaceholders","inList","listType","inBlockquote","paragraphBuffer","i","flushParagraph","closeList","closeBlockquote","headingMatch","level","quoteMatch","inlineFormat","ulMatch","olMatch","test","_m","linkText","replacements","RegExp","currentCategoryId","messagesContainer","inputEl","inputWrap","sendBtn","clearBtn","categorySelect","historyPanel","welcomeEl","newMsgBtn","searchInput","ariaLiveEl","showLoadingFn","hideLoadingFn","isSending","abortController","isNearBottom","historyItems","historySearchText","initChat","cfg","dom","parentElement","showLoading","hideLoading","showCategorySwitch","handleSend","shiftKey","isComposing","updateSendBtnState","autoResizeInput","confirm","display","updateEmptyState","newId","generateNewChatId","handleClear","bindSendEvents","clientHeight","hideNewMsgBtn","bindScrollEvents","toLowerCase","renderFilteredHistory","bindHistorySearch","tree","fetchCategoryTree","addOptions","nodes","indent","node","option","repeat","selected","children","loadCategories","initChatHistory","role","messageType","createTime","renderHistory","loadHistoryFromBackend","cached","raw","parse","loadMessages","smartScrollToBottom","setSendButtonMode","removeAttribute","filter","switchToConversation","open","it","hasMessages","userTimestamp","userMsg","produceAIReply","userText","aiTimestamp","shouldUseRag","aiMsgId","aiContent","streaming","Promise","resolve","reject","bubbleEl","wrapperEl","accumulated","streamStarted","chunk","createEmptyAIBubble","appendStreamingCaret","then","catch","sendStreamMessage","aiMsg","announceMessage","bubbles","ragSources","s","documentId","_b","lastAiMsg","fetchAndRenderSources","errMsg","errorBubble","color","historyPanelEl","feedback","contains","isInitialized","launcherEl","windowEl","dragCleanup","teaserEl","teaserTimer","badgeEl","audioCtx","positionTeaser","rect","getBoundingClientRect","left","right","innerWidth","bottom","innerHeight","top","hideTeaser","removeEventListener","onTeaserClick","closeBtn","onTeaserClose","target","onResize","FOCUSABLE","onKeyDown","focusables","from","first","last","activeElement","focus","trapFocus","positionKey","ChatbotSDK","init","rawConfig","parsed","URL","_l","integrateIdStr","resolvedLauncherIcon","resolvedPrimaryColor","_c","showClear","_d","showAdminPanel","_e","quickReplies","Boolean","theme","showTeaser","_f","teaserText","_g","locale","debug","_h","sound","_j","notification","_k","onReady","onMessage","parseConfig","enabled","matched","keys","find","setLocale","setApiConfig","headerLeft","headerAvatar","headerInfo","titleEl","statusEl","actions","historyBtn","minimizeBtn","chips","reply","chip","backBtn","isHidden","categoryBar","categoryLabel","selectedId","Number","inputArea","loadingEl","createChatWindow","headerEl","onDragEnd","dragging","startX","startY","offsetX","offsetY","onMouseDown","clientX","clientY","onMouseMove","onMouseUp","x","y","maxX","offsetWidth","maxY","offsetHeight","enableDrag","pos","saveWindowPosition","winEl","restoreWindowPosition","firstMessageTime","loadHistoryConversations","aiIndex","findIndex","m","removed","splice","removedIds","Set","has","retryFromMessage","newValue","handleFeedback","AudioContext","webkitAudioContext","ctx","state","resume","currentTime","offset","osc","createOscillator","gain","createGain","frequency","setValueAtTime","exponentialRampToValueAtTime","connect","destination","playNotificationSound","Notification","permission","icon","silent","requestPermission","sendDesktopNotification","destroy","oldIntegrateId","clearHistory","click"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"chatbot-sdk.min.js","sources":["../src/logger.ts","../src/config.ts","../src/i18n.ts","../src/api.ts","../src/styles.ts","../src/utils.ts","../src/dom.ts","../src/storage.ts","../src/markdown.ts","../src/chat.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null],"names":["PREFIX","debugEnabled","errorCallback","setErrorCallback","cb","timers","logger","info","msg","data","console","log","undefined","warn","error","code","Error","type","message","String","detail","_a","time","label","Date","now","timeEnd","prefix","start","duration","lifecycleInit","integrateId","requestDomain","this","lifecycleDestroy","lifecycleSend","length","lifecycleReply","lifecycleError","status","lifecycleClear","lifecycleStreamDone","lifecycleCategoryChange","categoryId","DEFAULT_LAUNCHER_ICON","buildGlassIcon","eyeColor","smileColor","bubbleColor","GLASS_ICON_DREAM_PURPLE","GLASS_ICON_MINT_TECH","GLASS_ICON_CORAL_PEACH","GLASS_ICON_SKY_BLUE","THEME_PRIMARY_COLORS","dictionaries","title","minimize","close","status_online","welcome_title","welcome_desc","placeholder","send","stop","new_message","copy","copied","retry","retrying","loading","stream_interrupted","stream_unstable","category_placeholder","category_all","category_load_error","source_title","source_count","source_loading","clear","clear_confirm","history_title","history_empty","history_load_error","history_delete_confirm","history_export","history_delete","history_search","history_group_today","history_group_yesterday","history_group_week","history_group_earlier","feedback_up","feedback_down","teaser_text","new_msg_announce","error_network","error_timeout","error_server","error_cors","error_auth","error_forbidden","error_not_found","error_rate_limit","error_unavailable","error_unknown","error_send","error_stream_unsupported","en","currentLocale","t","key","params","text","k","v","Object","entries","replace","currentConfig","updateChatId","chatId","getChatId","buildUrl","path","startsWith","setIfPresent","value","trim","set","async","safeFetch","url","options","timeout","externalSignal","controller","AbortController","timer","setTimeout","abort","aborted","addEventListener","once","fetch","assign","signal","mode","credentials","err","CskError","DOMException","name","TypeError","includes","clearTimeout","constructor","super","getHttpErrorMessage","chatRequest","URLSearchParams","userId","toString","buildChatUrl","response","ok","errorMsg","chatSSERequest","onChunk","onDone","onError","useRag","buildChatRAGSSEUrl","buildChatSSEUrl","totalText","REQUEST_TIMEOUT","reader","body","getReader","decoder","TextDecoder","stream","buffer","done","read","decode","lines","split","pop","line","trimmed","substring","readErr","releaseLock","fetchRagSources","buildRagSourcesUrl","json","success","Array","isArray","fetchConversationList","page","size","accountId","roleId","encodeURIComponent","list","total","pages","fetchConversationMessages","conversationId","messages","deleteConversation","method","getConversationExportUrl","initChatId","cachedChatId","localStorage","getItem","chatIdStorageKey","loadCachedChatId","result","latestConv","saveCachedChatId","messageCount","newChatId","random","crypto","randomUUID","Math","generateChatId","setItem","removeItem","styleElement","cssVars","config","darker","adjustColor","primaryColor","lighter","rgb","hex","match","parseInt","hexToRgb","themeColors","launcherTheme","grad1","grad2","glow","width","height","amount","clamp","max","min","r","g","b","padStart","injectStyles","document","querySelector","createElement","setAttribute","textContent","getStyles","head","appendChild","uuid","c","escapeHtml","map","ch","BOT_ICON","createLauncher","onClick","launcher","id","glassClass","className","position","innerHTML","launcherIcon","badge","debouncedClick","fn","delay","args","apply","debounce","e","preventDefault","renderUserBubble","container","timestamp","wrapper","avatar","content","bubble","formatTime","renderAIBubble","renderMd","msgId","dataset","cskMsgId","buildAIActions","enhanceCodeBlocks","COPY_ICON","RETRY_ICON","bar","copyBtn","stopPropagation","copyToClipboard","retryBtn","root","closest","dispatchEvent","CustomEvent","upBtn","downBtn","updateFeedbackUI","btns","querySelectorAll","forEach","btn","classList","remove","add","original","navigator","clipboard","window","isSecureContext","writeText","ta","style","opacity","select","execCommand","removeChild","pre","codeEl","finalizeAIBubble","caret","renderSources","sources","existing","sourcesEl","header","titleSpan","n","arrow","toggle","src","item","sourceName","snippet","meta","metaParts","push","chunkIndex","score","toFixed","join","timeEl","parentNode","insertBefore","renderHistoryList","listEl","items","onSelect","onExport","onDelete","activeChatId","emptyText","empty","groups","todayStart","getFullYear","getMonth","getDate","getTime","yesterdayStart","weekStart","getDay","today","yesterday","week","earlier","timeStr","lastMessageTime","createdAt","ts","groupHistoryByDate","group","groupEl","labelEl","el","convId","idEl","lastMessagePreview","metaEl","actionsEl","exportBtn","deleteBtn","scrollToBottom","scrollTop","scrollHeight","d","getHours","getMinutes","storageKey","saveMessages","slice","updatedAt","JSON","stringify","clearMessages","CODE_BLOCK_PREFIX","INLINE_CODE_PREFIX","renderMarkdown","codeBlocks","processed","_match","lang","idx","escapedCode","trimEnd","langClass","inlineCodes","restorePlaceholders","inList","listType","inBlockquote","paragraphBuffer","i","flushParagraph","closeList","closeBlockquote","headingMatch","level","quoteMatch","inlineFormat","ulMatch","olMatch","test","_m","linkText","replacements","RegExp","currentCategoryId","messagesContainer","inputEl","inputWrap","sendBtn","clearBtn","categorySelect","historyPanel","welcomeEl","newMsgBtn","searchInput","ariaLiveEl","showLoadingFn","hideLoadingFn","isSending","abortController","isNearBottom","historyItems","historySearchText","initChat","cfg","dom","parentElement","showLoading","hideLoading","showCategorySwitch","handleSend","shiftKey","isComposing","updateSendBtnState","autoResizeInput","confirm","display","updateEmptyState","newId","generateNewChatId","handleClear","bindSendEvents","clientHeight","hideNewMsgBtn","bindScrollEvents","toLowerCase","renderFilteredHistory","bindHistorySearch","tree","fetchCategoryTree","addOptions","nodes","indent","node","option","repeat","selected","children","loadCategories","initChatHistory","role","messageType","createTime","renderHistory","loadHistoryFromBackend","cached","raw","parse","loadMessages","smartScrollToBottom","setSendButtonMode","removeAttribute","filter","switchToConversation","open","it","handleFeedback","find","m","newValue","feedback","feedbackType","messageId","headers","submitFeedbackApi","then","hasMessages","userTimestamp","userMsg","produceAIReply","userText","aiTimestamp","shouldUseRag","aiMsgId","aiContent","streaming","Promise","resolve","reject","bubbleEl","wrapperEl","accumulated","streamStarted","chunk","createEmptyAIBubble","appendStreamingCaret","catch","sendStreamMessage","aiMsg","announceMessage","bubbles","ragSources","s","documentId","_b","lastAiMsg","fetchAndRenderSources","errMsg","errorBubble","color","historyPanelEl","contains","isInitialized","launcherEl","windowEl","dragCleanup","teaserEl","teaserTimer","badgeEl","audioCtx","positionTeaser","rect","getBoundingClientRect","left","right","innerWidth","bottom","innerHeight","top","hideTeaser","removeEventListener","onTeaserClick","closeBtn","onTeaserClose","target","onResize","FOCUSABLE","onKeyDown","focusables","from","first","last","activeElement","focus","trapFocus","positionKey","ChatbotSDK","init","rawConfig","parsed","URL","_l","integrateIdStr","resolvedLauncherIcon","resolvedPrimaryColor","_c","showClear","_d","showAdminPanel","_e","quickReplies","Boolean","theme","showTeaser","_f","teaserText","_g","locale","debug","_h","sound","_j","notification","_k","onReady","onMessage","parseConfig","enabled","matched","keys","setLocale","setApiConfig","headerLeft","headerAvatar","headerInfo","titleEl","statusEl","actions","historyBtn","minimizeBtn","chips","reply","chip","backBtn","isHidden","categoryBar","categoryLabel","selectedId","Number","inputArea","loadingEl","createChatWindow","headerEl","onDragEnd","dragging","startX","startY","offsetX","offsetY","onMouseDown","clientX","clientY","onMouseMove","onMouseUp","x","y","maxX","offsetWidth","maxY","offsetHeight","enableDrag","pos","saveWindowPosition","winEl","restoreWindowPosition","firstMessageTime","loadHistoryConversations","aiIndex","findIndex","removed","splice","removedIds","Set","has","retryFromMessage","AudioContext","webkitAudioContext","ctx","state","resume","currentTime","offset","osc","createOscillator","gain","createGain","frequency","setValueAtTime","exponentialRampToValueAtTime","connect","destination","playNotificationSound","Notification","permission","icon","silent","requestPermission","sendDesktopNotification","destroy","oldIntegrateId","clearHistory","click"],"mappings":"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"} \ No newline at end of file