Files
wecom_it_smart_desk/frontend-agent/dist_old/assets/conversation-BQKKYvcD.js
T

2 lines
14 KiB
JavaScript

import{v as Ye,r as i,x as m}from"./index-CnIbBo4X.js";import{a as l}from"./index-ra8jRslb.js";const Y=new Date("2026-06-06T10:30:00+08:00"),o=a=>new Date(Y.getTime()-a*6e4).toISOString(),_=a=>new Date(Y.getTime()-a*36e5).toISOString();o(2).toString(),_(1).toString(),o(2).toString(),o(8).toString(),_(2).toString(),o(8).toString(),o(15).toString(),o(15).toString(),o(15).toString(),o(5).toString(),_(3).toString(),o(5).toString(),o(3).toString(),_(24).toString(),o(3).toString(),o(10).toString(),o(20).toString(),o(20).toString(),o(20).toString(),o(30).toString(),o(30).toString(),o(30).toString(),o(25).toString(),o(25).toString(),o(25).toString(),o(10).toString(),o(10).toString(),o(10).toString(),o(8).toString(),_(2).toString(),_(3).toString(),_(2).toString();const f=(a,n)=>({id:a,conversation_id:"conv-001",created_at:n});({...f("msg-01",o(55))},{...f("msg-02",o(54))}),{...f("msg-03",o(50))},{...f("msg-04",o(48))},{...f("msg-05",o(45))},{...f("msg-06",o(42))},{...f("msg-07",o(40))},{...f("msg-08",o(38))},{...f("msg-09",o(35))},{...f("msg-10",o(30))},{...f("msg-11",o(25))},{...f("msg-12",o(20))};const Z={id:"agent-1",user_id:"songxian",name:"宋献",status:"online",current_load:3,max_load:5,created_at:_(720).toString(),updated_at:o(5).toString()},Ze=[Z,{id:"agent-2",user_id:"liuming",name:"刘明",status:"busy",current_load:5,max_load:5,created_at:_(700).toString(),updated_at:o(5).toString()},{id:"agent-3",user_id:"chenjing",name:"陈静",status:"online",current_load:2,max_load:5,created_at:_(680).toString(),updated_at:o(5).toString()},{id:"agent-4",user_id:"zhaolei",name:"赵磊",status:"online",current_load:1,max_load:5,created_at:_(600).toString(),updated_at:o(5).toString()},{id:"agent-5",user_id:"wangfang",name:"王芳",status:"offline",current_load:0,max_load:5,created_at:_(500).toString(),updated_at:_(1).toString()}];({...Z});function bt(){const a=Ze;return{onlineAgents:a.filter(n=>n.status==="online").length,busyAgents:a.filter(n=>n.status==="busy").length,offlineAgents:a.filter(n=>n.status==="offline").length}}o(55),o(50),o(25),_(26),_(25),_(24).toString(),_(72),_(71),_(70);async function et(a){return await l.get("/conversations",{params:a})}async function tt(a,n){return await l.post(`/conversations/${a}/assign`,{agent_id:n})}async function nt(a,n){return await l.post(`/conversations/${a}/resolve`,{resolve_summary:n})}async function at(a){return await l.post(`/conversations/${a}/pin`)}async function st(a){return await l.post(`/conversations/${a}/todo`)}async function ot(a,n){return await l.post(`/conversations/${a}/transfer`,{agent_id:n})}async function rt(a){return await l.post(`/conversations/${a}/grab`)}async function it(a,n){return await l.post(`/conversations/${a}/invite`,{agent_id:n})}async function lt(a){return await l.post(`/conversations/${a}/leave`)}async function ct(a,n){return await l.post(`/conversations/${a}/invite-participant`,n)}async function _t(a,n){return await l.delete(`/conversations/${a}/participants/${n}`)}async function ut(a,n){return await l.post(`/conversations/${a}/leave-participant`,{employee_id:n})}async function gt(a,n){return await l.get(`/conversations/${a}/messages`,{params:n})}async function dt(a,n,r="text",u){console.log("[sendMessage] 发送消息:",{conversationId:a,content:n,msgType:r,options:u});const p=u?Object.fromEntries(Object.entries(u).filter(([w,S])=>S!==void 0)):{},d={content:n||"",msg_type:r||"text",...p};return console.log("[sendMessage] 请求体:",d),await l.post(`/conversations/${a}/messages`,d,{timeout:3e4})}async function mt(a,n){const r={};return n&&(r.after_message_id=n),await l.get(`/conversations/${a}/messages/poll`,{params:r})}async function K(a,n){return await l.get(`/employees/${a}/history-messages`,{params:n})}async function pt(a){return await l.post(`/conversations/${a}/wingman/draft`)}async function vt(a){return await l.post(`/conversations/${a}/wingman/summary`)}async function ft(a){return await l.post(`/conversations/${a}/wingman/tags`)}async function Ct(a,n){return await l.post(`/conversations/${a}/tags`,{tags:n})}async function xt(a,n,r=0,u=80,p){return await l.post(`/conversations/${a}/wingman/autocomplete`,{current_text:n,cursor_position:r,max_length:u},{signal:p})}async function Mt(a,n,r,u,p){return await l.post(`/conversations/${a}/wingman/tone-adjust`,{selected_text:n,full_text:r,tone:u},{signal:p})}async function kt(a,n,r,u){return await l.post(`/conversations/${a}/wingman/polish`,{text:n,action:r,conversation_context:!0},{signal:u})}async function Pt(a,n,r){return await l.post(`/conversations/${a}/wingman/rewrite`,{current_text:n,generate_count:3,include_knowledge:!0},{signal:r})}const yt={queued:1,serving:2,pending_close:3,ai_handling:4,resolved:5};function Q(a){var r,u,p,d;let n=0;return a.is_pinned&&(n-=1e4),a.is_todo&&(n-=5e3),(r=a.tags)!=null&&r.hand_raise&&(n-=2e3),(u=a.tags)!=null&&u.need_intervene&&(n-=1500),(((p=a.tags)==null?void 0:p.emotion)==="angry"||((d=a.tags)==null?void 0:d.emotion)==="urgent")&&(n-=1e3),a.is_vip&&(n-=800),n-=(a.urgency_score||1)*100,n+=(yt[a.status]||3)*1e4,n}const Tt=Ye("conversation",()=>{const a=i([]),n=i(null),r=i([]),u=i(!1),p=i(!1),d=i(!1),v=i([]),w=i(!1),S=i(!1),x=i({}),b=i(null),$=i(""),ee=i("chat"),N=i(localStorage.getItem("panelMode")||"normal"),C=i(new Map),T=i(new Map),O=i(new Set),h=i(new Map),z=i(null),I=i([]),j=i(""),R=i("medium"),E=i(!1),H=i(!1),q=i(!1),B=i(0);let M=null,k=null;const y=m(()=>[...a.value].sort((e,t)=>{const s=Q(e),g=Q(t);if(s!==g)return s-g;const L=e.last_message_at?new Date(e.last_message_at).getTime():0;return(t.last_message_at?new Date(t.last_message_at).getTime():0)-L})),te=m(()=>y.value.filter(e=>e.status==="queued")),ne=m(()=>y.value.filter(e=>e.status==="serving"&&e.is_mine)),ae=m(()=>y.value.filter(e=>e.status==="serving"&&!e.is_mine)),se=m(()=>y.value.filter(e=>e.status==="serving")),oe=m(()=>y.value.filter(e=>e.status==="ai_handling")),re=m(()=>y.value.filter(e=>e.status==="resolved")),ie=m(()=>y.value.filter(e=>e.is_collaborator&&e.status==="serving")),le=m(()=>y.value.filter(e=>!!(e.status==="queued"||e.status==="serving"&&e.is_mine||e.status==="pending_close"&&e.is_mine||e.is_collaborator&&e.status==="serving"))),ce=m(()=>y.value.filter(e=>e.status==="serving"&&!e.is_mine&&!e.is_collaborator||e.status==="ai_handling")),_e=m(()=>y.value.filter(e=>e.status==="resolved")),P=m(()=>n.value&&a.value.find(e=>e.id===n.value)||null),ue=m(()=>d.value?v.value:r.value),ge=m(()=>d.value);async function c(){try{u.value=!0;const e=await et({page:1,page_size:100});for(const t of e.items)!t.employee_name&&t.employee_id&&(t.employee_name=t.employee_id);a.value=e.items}catch(e){console.error("获取会话列表失败:",e)}finally{u.value=!1}}async function de(e){X(),n.value=e,G(),await W(e),D()}async function W(e){try{p.value=!0;const t=await gt(e,{limit:50});r.value=t.items}catch(t){console.error("获取消息列表失败:",t)}finally{p.value=!1}}async function me(e,t){if(n.value)try{const s={};t&&(s.reply_to_id=t);const g=await dt(n.value,e,"text",s);r.value.push(g),await c()}catch(s){console.error("发送消息失败:",s)}}async function pe(e,t){try{await tt(e,t),await c()}catch(s){console.error("接单失败:",s)}}async function ve(e,t){try{await nt(e,t),await c()}catch(s){throw console.error("结单失败:",s),s}}async function fe(e){try{await at(e),await c()}catch(t){console.error("切换置顶失败:",t)}}async function ye(e){try{await st(e),await c()}catch(t){console.error("切换代办失败:",t)}}async function he(e,t){try{await ot(e,t),await c()}catch(s){console.error("转接失败:",s)}}async function we(e){try{await rt(e),await c()}catch(t){throw console.error("接手失败:",t),t}}async function Se(e,t){try{await it(e,t),await c()}catch(s){throw console.error("邀请协作失败:",s),s}}async function be(e){try{await lt(e),await c(),n.value===e&&(n.value=null,r.value=[])}catch(t){throw console.error("退出协作失败:",t),t}}async function Ce(e,t){try{await ct(e,t),await c()}catch(s){throw console.error("邀请参与者失败:",s),s}}async function xe(e,t){try{await _t(e,t),await c()}catch(s){throw console.error("移除参与者失败:",s),s}}async function Me(e,t){try{await ut(e,t),await c()}catch(s){throw console.error("参与者退出失败:",s),s}}function ke(){c()}function Pe(){c()}function F(){c(),M&&clearInterval(M),M=setInterval(()=>{c()},3e3)}function U(){M&&(clearInterval(M),M=null)}function D(){k&&clearInterval(k),k=setInterval(async()=>{if(n.value)try{const e=r.value.length>0?r.value[r.value.length-1].id:void 0,t=await mt(n.value,e);t.items&&t.items.length>0&&r.value.push(...t.items)}catch(e){console.error("轮询消息失败:",e)}},3e3)}function V(){k&&(clearInterval(k),k=null)}function Te(){F(),D()}function Ae(){U(),V()}async function De(e,t){const s=h.value.get(e);if(!(s!=null&&s.has(t)))try{E.value=!0;const g=await pt(e);h.value.has(e)||h.value.set(e,new Map),h.value.get(e).set(t,g)}catch(g){console.error("获取 AI 草稿失败:",g)}finally{E.value=!1}}async function $e(e){try{H.value=!0;const t=await vt(e);z.value=t}catch(t){console.error("获取会话摘要失败:",t)}finally{H.value=!1}}async function ze(e){try{q.value=!0;const t=await ft(e);I.value=t.suggested_tags,j.value=t.category,R.value=t.priority}catch(t){console.error("获取标签建议失败:",t)}finally{q.value=!1}}function Ie(e,t){const s=h.value.get(e);if(!s)return;const g=s.get(t);g&&($.value=g.content)}function je(e,t){const s=h.value.get(e);if(!s)return;const g=s.get(t);g&&($.value=g.content)}function Re(e,t){const s=h.value.get(e);s&&s.delete(t)}function Ee(e,t){const s=h.value.get(e);return s&&s.get(t)||null}function G(){z.value=null,I.value=[],j.value="",R.value=""}async function He(){if(!P.value)return;const e=P.value.employee_id;if(e){d.value=!0,w.value=!0,V();try{const t=await K(e,{limit:50,current_conversation_id:n.value||void 0});v.value=t.items.reverse(),S.value=t.has_more,x.value=t.conversation_summaries||{},b.value=v.value.length>0?v.value[0].id:null}catch(t){console.error("加载历史消息失败:",t)}finally{w.value=!1}}}function qe(){d.value=!1,v.value=[],x.value={},b.value=null,S.value=!1;const e=P.value;e&&e.status!=="resolved"&&D()}async function Ve(){if(!S.value||w.value||!P.value)return;const e=P.value.employee_id;if(!(!e||!b.value)){w.value=!0;try{const t=await K(e,{limit:50,before:b.value,current_conversation_id:n.value||void 0}),s=t.items.reverse();v.value=[...s,...v.value],S.value=t.has_more,b.value=v.value.length>0?v.value[0].id:null,x.value={...t.conversation_summaries,...x.value}}catch(t){console.error("加载更多历史消息失败:",t)}finally{w.value=!1}}}function X(){d.value=!1,v.value=[],x.value={},b.value=null,S.value=!1,w.value=!1}function Le(e){const t=O.value;if(t.delete(e),t.add(e),t.size>500){const s=t.values().next().value;t.delete(s)}}function Ne(e){if(O.value.has(e.message_id)){console.log(`[WS去重] 跳过重复消息: ${e.message_id}`);return}Le(e.message_id),e.sender_type==="ai"&&(J(e.conversation_id),B.value++),n.value===e.conversation_id&&(r.value.some(s=>s.id===e.message_id)||r.value.push({id:e.message_id,conversation_id:e.conversation_id,sender_type:e.sender_type,sender_id:e.sender_id,sender_name:"",content:e.content,msg_type:e.msg_type||"text",extra_data:e.extra_data,ai_suggestion:!1,is_read:!1,created_at:new Date().toISOString()})),c()}function Oe(e){c()}function Be(e){c()}function We(){c()}function Fe(e){c(),n.value===e.conversation_id&&(n.value=null,r.value=[])}function Ue(e){c()}function Ge(e){N.value=e,localStorage.setItem("panelMode",e)}let A=null;function Xe(e){e.conversation_id&&(C.value.set(e.conversation_id,{sender_id:e.sender_id,sender_name:e.sender_name,timestamp:Date.now()}),A||(A=setInterval(()=>{const t=Date.now(),s=[];C.value.forEach((g,L)=>{t-g.timestamp>5e3&&s.push(L)}),s.forEach(g=>C.value.delete(g)),C.value.size===0&&A&&(clearInterval(A),A=null)},1e3)))}function Je(e){const t=C.value.get(e);return t?Date.now()-t.timestamp>5e3?(C.value.delete(e),""):`${t.sender_name}正在输入...`:""}function Ke(e){e.conversation_id&&T.value.set(e.conversation_id,{timestamp:Date.now(),status:e.status})}function Qe(e){const t=T.value.get(e);return t?Date.now()-t.timestamp>3e4?(T.value.delete(e),""):t.status==="still_thinking"?"AI 仍在思考中...":"AI 正在思考...":""}function J(e){T.value.delete(e)}return{conversations:a,currentConversationId:n,messages:r,loadingConversations:u,loadingMessages:p,pendingReplyText:$,workspaceView:ee,panelMode:N,historyMode:d,historyMessages:v,historyLoading:w,historyHasMore:S,historyConversationSummaries:x,historyCursor:b,aiDrafts:h,currentSummary:z,suggestedTags:I,suggestedCategory:j,suggestedPriority:R,loadingDraft:E,loadingSummary:H,loadingTags:q,sortedConversations:y,handRaiseConversations:te,myServingConversations:ne,otherAgentConversations:ae,servingConversations:se,aiHandlingConversations:oe,resolvedConversations:re,collaboratingConversations:ie,currentConversation:P,myConversations:le,colleagueConversations:ce,historyConversations:_e,displayMessages:ue,isHistoryReadonly:ge,fetchConversations:c,selectConversation:de,fetchMessages:W,sendReply:me,assignConv:pe,resolveConv:ve,togglePinConv:fe,toggleTodoConv:ye,transferConv:he,grabConv:we,inviteToConversation:Se,leaveConvCollaboration:be,inviteParticipants:Ce,removeParticipantFromConv:xe,leaveAsParticipantConv:Me,fetchDraftForMessage:De,fetchSummary:$e,fetchSuggestedTags:ze,acceptDraft:Ie,editDraft:je,ignoreDraft:Re,getDraft:Ee,clearWingmanData:G,startConversationPoll:F,stopConversationPoll:U,startMessagePoll:D,stopMessagePoll:V,startAllPolling:Te,stopAllPolling:Ae,enableHistoryMode:He,disableHistoryMode:qe,loadMoreHistory:Ve,resetHistoryState:X,setPanelMode:Ge,handleNewMessage:Ne,handleConversationUpdated:Oe,handleCollaboratorInvited:Be,handleCollaboratorChanged:We,handleParticipantInvited:ke,handleParticipantChanged:Pe,handlePendingCloseConfirmed:Fe,handlePendingCloseRejected:Ue,handleTypingEvent:Xe,getTypingText:Je,handleAiThinking:Ke,getAiThinkingText:Qe,clearAiThinking:J,aiThinkingConversations:T,recommendRefreshSignal:B,typingUsers:C}});export{Mt as a,xt as b,pt as c,ft as d,Ct as e,bt as g,ct as i,kt as p,Pt as r,dt as s,Tt as u};