| 123 |
- import{_ as $,o as c,d as _,e as l,l as ne,m as B,g as D,h as x,f as m,w as A,c as F,F as oe,n as se,p as E,r as b,q as z,s as K,k as ae,v as ie,x as P,y as le,u as ce,i as re}from"./index-CXQ8C7gm.js";import{L as ue}from"./LayoutExperience-Cr7BROOv.js";import{C as de}from"./ContentContainer-C_KiuhUF.js";import{C as _e}from"./ChatAsideMenu-DbayP1du.js";import{j as G,a as V}from"./utils-nRFFHnCp.js";import{u as fe}from"./use-all-agents-Bv7h4i5q.js";import"./Header-BfHHwAv-.js";import"./use-current-user-BgLEegvQ.js";const ge={},he={class:"dialog-aside-left"};function pe(e,n){return c(),_("div",he,n[0]||(n[0]=[l("div",null,"对话左侧边栏",-1)]))}const me=$(ge,[["render",pe],["__scopeId","data-v-76fa4cd7"]]),ve={},ye={class:"dialog-header"};function we(e,n){return c(),_("div",ye,n[0]||(n[0]=[l("div",null,"对话顶部",-1)]))}const be=$(ve,[["render",we],["__scopeId","data-v-6d289eea"]]),$e={class:"dialog-welcome-content"},Ce={__name:"DialogWelcome",props:{suggestion:Object},setup(e){return(n,t)=>(c(),_("div",$e,t[0]||(t[0]=[l("div",null,"对话欢迎内容:欢迎内容应该按照agent进行配置,最好是从后端进行返回",-1)])))}},Se=$(Ce,[["__scopeId","data-v-d67ff057"]]),xe={class:"dialog-item-select question-select"},qe={__name:"BtnSelectItem",props:{is_selected:Boolean},emits:["change"],setup(e,{emit:n}){return(t,s)=>(c(),_("div",xe))}},J=$(qe,[["__scopeId","data-v-b88b55f4"]]),ke={class:"dialog-chat-answer-content"},Ie={__name:"DialogContent",props:{type:String,content:String},setup(e){return(n,t)=>(c(),_("div",ke,[t[0]||(t[0]=l("div",null,"这是用户提问的内容区域这是用户提问的内容区域这是用户提问的内容区域",-1)),ne(n.$slots,"default",{},void 0,!0)]))}},X=$(Ie,[["__scopeId","data-v-5d086165"]]),De={class:"dialog-item dialog-question"},Ae={class:"dialog-main question-main"},Be={class:"dialog-content question-content"},We={__name:"DialogQuestion",props:{show_select:!0,question:Object},setup(e){const n=e,t=B(()=>n.show_select===!0),s=()=>{};return(a,i)=>(c(),_("div",De,[t.value?(c(),D(J,{key:0,onChange:s})):x("",!0),l("div",Ae,[l("div",Be,[l("div",null,[m(X,{content:e.question.content},null,8,["content"])])]),i[0]||(i[0]=l("div",{class:"dialog-icon question-icon"},null,-1))])]))}},Re=$(We,[["__scopeId","data-v-725008a0"]]),Fe={class:"dialog-actions-container"},Me={__name:"DialogActions",emits:["copy","retry","share"],setup(e,{emit:n}){const t=n,s=()=>{t("copy")},a=()=>{t("retry")},i=()=>{t("share")},o=()=>{},r=()=>{};return(f,p)=>(c(),_("div",Fe,[l("div",{class:"dialog-action-part dialog-action-left"},[l("div",{class:"action-btn-item",onClick:s},"复制"),l("div",{class:"action-btn-item",onClick:a},"再试一次"),l("div",{class:"action-btn-item",onClick:i},"分享")]),l("div",{class:"dialog-action-part dialog-action-right"},[l("div",{class:"action-btn-item",onClick:o},"赞"),l("div",{class:"action-btn-item",onClick:r},"踩")])]))}},Ee=$(Me,[["__scopeId","data-v-3e5fc44a"]]),Le={__name:"BtnStopChat",emits:["stop"],setup(e,{emit:n}){const t=n,s=()=>{t("stop")};return(a,i)=>(c(),_("div",{onClick:s},"停止生成"))}},Ue={class:"dialog-item dialog-anwser"},je={class:"dialog-main answer-main"},ze={class:"dialog-content answer-content"},Ne={__name:"DialogAnswer",props:{show_select:!0,answer:Object},emits:["stop","retry","select"],setup(e,{emit:n}){const t=e,s=n,a=B(()=>t.show_select===!0),i=()=>{s("select")},o=()=>{s("stop")},r=()=>{},f=()=>{},p=()=>{s("retry")};return(y,u)=>(c(),_("div",Ue,[a.value?(c(),D(J,{key:0,onChange:i})):x("",!0),l("div",je,[u[0]||(u[0]=l("div",{class:"dialog-icon answer-icon"},null,-1)),l("div",ze,[l("div",null,[m(X,null,{default:A(()=>[m(Ee,{class:"answer-actions-btns",onCopy:r,onShare:f,onRetry:p})]),_:1}),m(Le,{onStop:o})])])])]))}},Te=$(Ne,[["__scopeId","data-v-bab4f018"]]),Ve={class:"dialog-item-container"},Oe={__name:"DialogItem",props:{dialog:Object},emits:["stop","retry","select"],setup(e,{emit:n}){const t=e,s=n,a=B(()=>({content:t.dialog.question})),i=B(()=>{const p={};return t.dialog.answer&&(p.content=t.dialog.answer),p}),o=()=>{s("stop")},r=()=>{s("retry")},f=()=>{s("select")};return(p,y)=>(c(),_("div",Ve,[m(Re,{question:a.value},null,8,["question"]),m(Te,{answer:i.value,onStop:o,onRetry:r,onSelect:f},null,8,["answer"])]))}},Qe=$(Oe,[["__scopeId","data-v-8a4c6af6"]]),He={class:"dialog-suggestion"},Ke={__name:"DialogSuggestion",props:{suggestion:Object},setup(e){return(n,t)=>(c(),_("div",He,t[0]||(t[0]=[l("div",null,"对话推荐项,当一轮对话结束后,可能有其他推荐的内容项目,在对话结束处进行展示。",-1)])))}},Pe=$(Ke,[["__scopeId","data-v-c9a060e3"]]),Ge={key:0,class:"dialog-welcome"},Je={key:1,class:"dialog-list"},Xe={__name:"DialogList",props:{height:Number,agent_id:String,list:Array,suggestion:Array,show_welcome:Boolean},setup(e){const n=e,t=B(()=>({height:n.height+"px",overflow:"auto"}));return(s,a)=>{const i=F("a-scrollbar");return c(),D(i,{type:"track",style:E(t.value)},{default:A(()=>[e.show_welcome?(c(),_("div",Ge,[m(Se)])):x("",!0),e.show_welcome?x("",!0):(c(),_("div",Je,[(c(!0),_(oe,null,se(e.list,(o,r)=>(c(),D(Qe,{dialog:o,index:r,key:o.id},null,8,["dialog","index"]))),128)),e.suggestion.length!==0?(c(),D(Pe,{key:0,suggestion:e.suggestion},null,8,["suggestion"])):x("",!0)]))]),_:1},8,["style"])}}},Ye=$(Xe,[["__scopeId","data-v-94a6cb10"]]),Ze={class:"dialog-input-actions"},et={class:"dialog-input-action-right"},tt={__name:"InputActions",props:{disabled:{type:Boolean,default:!1,required:!1},enable_file_upload:{type:Boolean,default:!0,required:!1},enable_frequent_question:{type:Boolean,default:!0,required:!1},enable_voice_recognition:{type:Boolean,default:!1,required:!1},file_upload_type:{type:String,default:"*",required:!1},file_upload_limit:{type:Number,default:0,required:!1}},emits:["fileUpload","questionDefine","voiceRecognize","submit"],setup(e,{emit:n}){const t=n,s=()=>{t("questionDefine")},a=()=>{t("fileUpload")},i=()=>{t("voiceRecognize")},o=()=>{t("submit")};return(r,f)=>(c(),_("div",Ze,[f[0]||(f[0]=l("div",{class:"dialog-input-action-left"},[l("div",null,"联网查询")],-1)),l("div",et,[e.enable_frequent_question?(c(),_("div",{key:0,onClick:s},"常用问题定义")):x("",!0),e.enable_file_upload?(c(),_("div",{key:1,onClick:a},"文件上传")):x("",!0),e.enable_voice_recognition?(c(),_("div",{key:2,onClick:i},"语音识别")):x("",!0),l("div",{onClick:o},"发送")])]))}},nt=$(tt,[["__scopeId","data-v-26be9f9b"]]),ot={class:"dialog-input"},st={__name:"DialogInput",props:{disabled:{type:Boolean,default:!1,required:!1},enable_file_upload:{type:Boolean,default:!0,required:!1},enable_frequent_question:{type:Boolean,default:!0,required:!1},enable_voice_recognition:{type:Boolean,default:!1,required:!1},file_upload_type:{type:String,default:"*",required:!1},file_upload_limit:{type:Number,default:0,required:!1},text_placeholder:{type:String},text_limit:{type:Number,default:0,required:!1},show_text_count:{type:Boolean,default:!1,required:!1}},emits:["inputTextChange","inputFileChange","submit"],setup(e,{emit:n}){const t=e,s=b(""),a=n,i=()=>{t.disabled||a("submit")},o=()=>{},r=()=>{},f=()=>{},p=()=>{s.value=s.value.replace(/\n/,"")},y=(d,v)=>{t.disabled||(s.value=d,a("inputTextChange",s.value))},u=d=>{if(t.disabled){d.keyCode===13&&p();return}d.keyCode===13&&(d.ctrlKey||(p(),a("submit")))};return(d,v)=>{const q=F("a-textarea");return c(),_("div",ot,[l("div",null,[m(q,{placeholder:"输入文本内容","model-value":s.value,"allow-clear":"","auto-size":{minRows:1,maxRows:4},onInput:y,onKeyup:u},null,8,["model-value"])]),m(nt,{disabled:e.disabled,enable_file_upload:e.enable_file_upload,enable_frequent_question:e.enable_frequent_question,enable_voice_recognition:e.enable_voice_recognition,file_upload_type:e.file_upload_type,file_upload_limit:e.file_upload_limit,onFileUpload:o,onQuestionDefine:r,onVoiceRecognize:f,onSubmit:i},null,8,["disabled","enable_file_upload","enable_frequent_question","enable_voice_recognition","file_upload_type","file_upload_limit"]),v[0]||(v[0]=l("div",null,"文件上传预览区: 当点击文件上传,选择某个文件后,此处需要展示进行预览。",-1))])}}},at=$(st,[["__scopeId","data-v-a697767c"]]),it={},lt={class:"dialog-footer"};function ct(e,n){return c(),_("div",lt,n[0]||(n[0]=[l("div",null,"对话底部",-1)]))}const rt=$(it,[["render",ct],["__scopeId","data-v-1c6ae20a"]]),ut={},dt={class:"dialog-aside-right"};function _t(e,n){return c(),_("div",dt,n[0]||(n[0]=[l("div",null,"对话右侧边栏",-1)]))}const ft=$(ut,[["render",_t],["__scopeId","data-v-07f31c8f"]]);function gt(e){const n=b(0),t=b(0),{proxy:s}=ae(),a=()=>{const i=s.$refs[e];n.value=i.offsetHeight,t.value=i.offsetWidth};return z(()=>{a(),window.addEventListener("resize",a)}),K(()=>{window.removeEventListener("resize",a)}),{height:n,width:t}}function ht(e,n,t){const s=location.host,a=ie.get();return e==="report"?`ws://${s}/api/${e}/ws/${n}/${t}?token=${a}`:e==="chat"?`ws://${s}/api/${e}/ws/${n}/${t}?token=${a}`:e==="excel"?`ws://${s}/api/document/ws/excel`:`ws://${s}/api/chat/ws/${n}/${t}?token=${a}`}function j(e){return typeof e=="function"?e:Function.prototype}function pt(e){let n=[];const t=j(e.onMessage),s=j(e.onClose),a=j(e.onError);b(-1);function i(r,f,p){const y=ht(p,r,f),u=new WebSocket(y);return u.onopen=function(d){n.forEach(v=>{u.send(v)}),n=[]},u.onclose=function(d){s(d)},u.onerror=function(d){a(d)},u.onmessage=d=>{t(d)},u}let o=null;return{initWSConnection(r,f,p){return o===null&&(o=i(r,f,p)),o},sendWSMessage(r){o===null&&(o=i()),o.readyState===0&&n.push(r),o.readyState===1&&o.send(r),o.readyState===2&&console.log("web socket正在关闭"),o.readyState===3&&(n.push(r),o=i())},getWSInstance(){return o},closeWSConnect(){o!==null&&o.close()}}}const mt=e=>P.get(`/api/agent/get-chat-id/${e}`),vt=(e,n)=>P.get(`/api/agent/${e}/${n}/session_log`);function yt(e){return{}}function wt(e){const n=[];return e.forEach(t=>{const s=yt();n.push(s)}),n}function bt(e,n){return G({message:e})}const $t=e=>`<pre><code class="hljs language-python">
- ${e}</code></pre>`,Ct=e=>`<pre><code class="hljs language-sql">
- ${e}</code></pre>`;function St(){return{client_custom_chat_type:2,client_custom_chat_status:0,question:"",answer:""}}function xt(e,n){const t=V(e);console.log("收到消息::"),console.log(t);const s=V(G(n)),a=t.type,i=t.message;t.reference,t.step_message;const o=t.files,r=t.message_files,f=t.download_url,p=t.file_url,y=t.file_name,u=t.image_url,d=t.excel_url,v=t.excel_name,q=t.code,M=t.sql,w={client_custom_chat_type:2,client_custom_chat_status:1,question:t.question};for(let g in s)g==="client_custom_chat_type"||g==="client_custom_chat_status"||(w[g]=s[g]);let k=0,L="";if(a==="message"){if(k=1,w.answer=i,u){const g=window.location.port?`:${window.location.port}`:"",C=`http://${window.location.hostname}${g}${u}`;w.image_url=C}if(d&&v){const g=window.location.port?`:${window.location.port}`:"",C={file_type:"excel",file_url:`http://${window.location.hostname}${g}${d}`,file_name:`${v}.xlsx`||"点击下载"};w.file=C}if(p&&y){const g=window.location.port?`:${window.location.port}`:"",C={file_type:"word",file_url:`http://${window.location.hostname}${g}${p}`,file_name:`${y}.docx`||"点击下载"};w.file=C}if(q){const g=$t(q);w.code=g}if(M){const g=Ct(M);w.sql=g}if(f){const g=decodeURIComponent(f).split("/"),C=g[g.length-1],W={file_type:"word",file_url:f,file_name:`${C}.docx`||"点击下载"};w.file=W}}if(a==="stream"&&(k=1,n&&n.answer?w.answer=n.answer+i:w.answer=i,o)){const C=o[0].file_name.split("."),W=C[C.length-1],R={file_name:o[0].file_name,file_url:o[0].file_url};W==="xlsx"&&(R.file_type="excel"),W==="docx"&&(R.file_type="word"),w.file=R}return a==="system"&&(k=1),a==="close"&&(k=2,w.client_custom_chat_status=2,w.client_custom_chat_type=1,r&&Array.isArray(r)&&r.forEach((g,C)=>{})),a==="error"&&(k=3),{status:k,message:L,data:w}}const qt={class:"conversation-chat-container"},kt={class:"conversation-chat-left"},It={class:"conversation-chat-main",ref:"chat_main"},Dt={class:"conversation-chat-content"},At={class:"conversation-chat-right"},O=30,Q=30,H=100,Bt={__name:"ConversationChatContainer",props:{agent_id:String,session_id:String,chat_type:String},setup(e){const n=e,{width:t,height:s}=gt("chat_main"),a=B(()=>s.value-O-Q-H),i=b([]),o=b([]),r=b({});b(0);const f=B(()=>[].concat(i.value,o.value)),p=b(!0),y=h=>{},u=h=>{},d=b(""),v=b([]),q=b(!1),M=h=>{d.value=h},w=h=>{v.value=h},k=async()=>{let h=null;try{const S=await mt(n.agent_id);if(S.code/1===200)h=S.data.chat_id;else return}catch(S){console.log(S);return}v.value.length;const I=bt(d.value,v.value);Y(h,I)},L={onMessage:Z,onError:ee,onClose:te},{initWSConnection:g,sendWSMessage:C,getWSInstance:W,closeWSConnect:R}=pt(L);function Y(h,I){const S=St();o.value.push(S),g(n.agent_id,h,n.chat_type),C(I),d.value="",v.value=[]}function Z(h){const I=h.data,S=o.value[o.value.length-1],U=xt(I,S),N=U.status,T=U.data;N===1&&(o.value.pop(),o.value.push(T)),N===2&&(o.value.pop(),o.value.push(T))}function ee(h){}function te(h){}return z(()=>{n.session_id&&vt(n.agent_id,n.session_id).then(h=>{if(console.log(h),h.code/1===200){const I=h.data,S=wt(I);i.value=S}}).catch(h=>{console.log(h)})}),K(()=>{R()}),(h,I)=>(c(),_("div",qt,[l("div",kt,[m(me)]),l("div",It,[m(be,{class:"conversation-chat-header",style:E({height:O+"px"})},null,8,["style"]),l("div",Dt,[m(Ye,{class:"conversation-chat-list",height:a.value,agent_id:e.agent_id,list:f.value,suggestion:r.value,show_welcome:p.value,onShare:y,onSubmit:u},null,8,["height","agent_id","list","suggestion","show_welcome"]),m(at,{class:"conversation-chat-input",style:E({height:H+"px"}),disabled:q.value,onInputTextChange:M,onInputFileChange:w,onSubmit:k},null,8,["style","disabled"])]),m(rt,{class:"conversation-chat-footer",style:E({height:Q+"px"})},null,8,["style"])],512),l("div",At,[m(ft)])]))}},Wt=$(Bt,[["__scopeId","data-v-ab606b6a"]]),Nt={__name:"ConversationQA",setup(e){const n=le(),t=ce(),s=fe(),a=b(""),i=b(""),o=b(1),r=b(""),f=()=>{t.back()};async function p(y){if(!y)return!1;const u=s.getList();return u.length===0?!0:!!u.find(v=>v.id===y)}return z(async()=>{const y=n.query,u=y.agent,d=y.session;if(!u){o.value=3,r.value="非法操作:参数异常";return}if(!await p(u)){o.value=3,r.value="非法操作:参数异常";return}o.value=2,r.value="success",a.value=u,i.value=d}),(y,u)=>{const d=F("a-button"),v=F("a-space"),q=F("a-result");return c(),D(ue,null,{default:A(()=>[m(de,null,{default:A(()=>[m(_e),o.value===2?(c(),D(Wt,{key:0,agent_id:a.value,session_id:i.value},null,8,["agent_id","session_id"])):x("",!0),o.value===3?(c(),D(q,{key:1,status:"error",title:r.value},{extra:A(()=>[m(v,null,{default:A(()=>[m(d,{type:"primary",onClick:f},{default:A(()=>u[0]||(u[0]=[re("返回")])),_:1})]),_:1})]),_:1},8,["title"])):x("",!0)]),_:1})]),_:1})}}};export{Nt as default};
|