import{o as Re,R as ze,ap as Ie,bs as Me,bz as Ne,bw as Pe,q as n,r as o,O as A,be as Ue,P as c,s as t,T as i,ae as v,aw as ye,v as R,aA as Fe,D as be,L as ge,K as Ke,F as z,G as I,u as ke,by as We,ac as je,bo as Ge,bx as Oe,bu as He,M as d,p as x}from"./.pnpm-Cy9nIqIg.js";import{g as Je,h as Qe,i as Xe}from"./assistantService-CHcfTcwu.js";import Ye from"./WecomThread-DhqP1o6s.js";import{s as he,i as J,e as Q}from"./shared-lpbp3iP7.js";import{_ as Ze}from"./index-BGCyUBQ6.js";const qe={class:"alert-inbox","aria-label":"医助行为预警"},et={key:1,class:"metric-strip","aria-label":"预警汇总"},tt={class:"metric"},at={key:0},st={key:1,class:"metric-text"},lt={class:"inbox-panel"},nt={class:"table-heading"},it={class:"role-switch",role:"group","aria-label":"按身份查看"},ot=["aria-pressed"],ut=["aria-pressed"],rt=["aria-pressed"],ct={key:0,class:"chat-workspace","aria-label":"企微聊天"},vt={class:"people-pane"},dt=["onClick"],ft=["onClick"],mt={key:0,class:"pane-note"},pt={class:"chat-pane"},_t={key:1,class:"table-toolbar"},yt={class:"filter-group",role:"group","aria-label":"筛选预警"},bt=["aria-pressed","onClick"],gt={class:"muted"},kt={key:4,class:"feed"},ht={class:"feed-main"},Ct={class:"feed-who"},xt=["onClick"],$t={key:1},Tt={class:"patient"},At={key:2},Et={class:"snippet"},Vt={key:0,class:"review-note"},wt={class:"feed-meta"},Dt={class:"number"},Lt={key:0,class:"feed-actions"},St={class:"review-actions"},Bt=["disabled","onClick"],Rt=["disabled","onClick"],zt=["disabled","onClick"],It=["onSubmit"],Mt={key:6,class:"table-footer"},Nt={class:"muted"},Pt=Re({__name:"AlertInbox",props:{refreshKey:{},canReview:{type:Boolean}},emits:["open-staff"],setup(X,{emit:Ut}){const Y=X,l=d(null),E=d(!1),k=d(""),M=d(""),Z=d(""),p=d("open"),u=d("all"),h=d(1),$=d(""),V=d(0),N=d(null),f=d({id:0,name:"",account:""}),q=x(()=>{var s;return(((s=N.value)==null?void 0:s.staff)||[]).filter(e=>e.conversations>0)}),P=[{value:"open",label:"待处理",status:"open",severity:"all"},{value:"high",label:"高风险",status:"open",severity:"high"},{value:"all",label:"全部",status:"all",severity:"all"},{value:"confirmed",label:"已成立",status:"confirmed",severity:"all"},{value:"false_positive",label:"误报",status:"false_positive",severity:"all"},{value:"followed",label:"已跟进",status:"followed",severity:"all"}],Ce={open:"待处理",confirmed:"已成立",false_positive:"误报",followed:"已跟进"},xe={high:"高",medium:"中",low:"低"},ee=x(()=>P.find(s=>s.value===p.value)||P[0]),$e=x(()=>{var s;return((s=l.value)==null?void 0:s.coverage.map(e=>e.note).join(" · "))||"通话转写和企微尚未接入"}),C=x(()=>{var s;return(s=l.value)==null?void 0:s.coverage.find(e=>e.channel==="call")}),Te=x(()=>{var s,e;return((s=C.value)==null?void 0:s.status)==="no_transcript"?"无正文":((e=C.value)==null?void 0:e.status)==="not_scanned"?"未检查":"未接入"}),Ae=x(()=>{var s,e;return((s=C.value)==null?void 0:s.status)==="no_transcript"?"医助主叫没有可判定转写":((e=C.value)==null?void 0:e.status)==="not_scanned"?"已有转写,尚未写入预警":"有录音也不计为已检查"}),Ee=x(()=>{var s,e,r;return k.value?"暂时无法读取预警,请重试":l.value&&!l.value.schema_ready?"预警表尚未就绪":((s=l.value)==null?void 0:s.scan.state)==="disabled"?"预警扫描尚未开启":((e=l.value)==null?void 0:e.scan.state)==="waiting"&&!l.value.scan.last_scan_at?"尚未完成首次扫描":p.value==="open"&&u.value==="assistant"?"当前没有医助的待处理预警":p.value==="open"&&u.value==="doctor"?"当前没有医生的待处理预警":p.value==="open"&&((r=l.value)!=null&&r.empty_reason)?l.value.empty_reason:p.value==="open"?"当前没有待处理预警":"当前筛选下没有预警"});let _=!1,U=!0,te=!1,ae=!1,T=0,m,w;const F=()=>U&&(typeof document>"u"||document.visibilityState!=="hidden");function se(s){return s.staff.assistant||s.staff.role_name==="医助"?"assistant":s.staff.role_name==="医生"?"doctor":"other"}function Ve(s){return s==="call"?"通话":s==="wecom"?"企微":s==="im"?"聊天":"其他"}function K(){w&&clearTimeout(w),w=void 0}function le(){K(),!_&&te&&F()&&(w=setTimeout(()=>void y(!0),3e4))}async function y(s=!1){if(_||!F())return!1;const e=++T;m==null||m.abort(),m=new AbortController,s||(E.value=!0),k.value="";try{const r=await Je({keyword:Z.value,status:ee.value.status,severity:ee.value.severity,role:u.value,page_no:h.value,page_size:20},m.signal);if(_||e!==T)return!1;if(!r.summary||!r.scan||!Array.isArray(r.lists))throw new Error("预警数据不完整,请刷新后重试");return l.value=r,!0}catch(r){return!_&&e!==T&&!J(r)&&(s||(l.value=null),k.value=Q(r)),!1}finally{!_&&e===T&&(E.value=!1,le())}}function ne(){Z.value=M.value.trim(),h.value=1,y()}function we(s){p.value!==s&&(p.value=s,h.value=1,V.value=0,y())}let D;function W(){D&&clearTimeout(D),D=void 0}function De(){W(),!_&&u.value==="assistant"&&(D=setTimeout(()=>void ie(!0),15e3))}async function ie(s=!1){try{const e=await Xe();if(_)return;N.value=e;const r=f.value,S=e.accounts.some(b=>b.external_id===r.account),B=e.staff.some(b=>b.id===r.id&&!r.account);if(!S&&!B){const b=e.accounts.find(H=>H.conversations>0)||e.accounts[0];b&&(f.value={id:0,name:b.name||"未命名账号",account:b.external_id})}}catch(e){!_&&!J(e)&&!s&&(k.value=Q(e))}finally{De()}}function j(s){f.value=s,u.value!=="assistant"&&(u.value="assistant",h.value=1,y())}function G(s){u.value!==s&&(u.value=s,h.value=1,V.value=0,s==="assistant"?ie():W(),y())}function Le(){y()}async function L(s,e){if(!(!Y.canReview||s.status===e)){if(e==="false_positive"&&$.value.trim()===""){V.value=s.id,$.value="";return}try{await Qe({id:s.id,status:e,note:e==="false_positive"?$.value.trim():""}),V.value=0,$.value="",await y(!0)}catch(r){J(r)||(k.value=Q(r))}}}function O(){if(!F()){K(),m==null||m.abort(),T++,E.value=!1;return}y(!0)}return ze(()=>Y.refreshKey,(s,e)=>void y(e!==void 0),{immediate:!0,flush:"sync"}),Ie(()=>{te=!0,typeof document<"u"&&(document.addEventListener("visibilitychange",O),ae=!0),le()}),Me(()=>{U=!0}),Ne(()=>{U=!1,O()}),Pe(()=>{_=!0,K(),W(),m==null||m.abort(),T++,ae&&typeof document<"u"&&document.removeEventListener("visibilitychange",O)}),(s,e)=>{var oe,ue,re,ce,ve,de,fe,me,pe,_e;const r=Ue,S=Fe,B=Ke,b=We,H=Oe,Se=He,Be=Ge;return n(),o("section",qe,[(oe=l.value)!=null&&oe.scan.reason?(n(),A(r,{key:0,title:l.value.scan.reason,type:"warning",closable:!1,"show-icon":"",class:"scan-note"},null,8,["title"])):c("",!0),l.value?(n(),o("div",et,[t("article",{class:v(["metric",{"metric--attention":l.value.summary.open>0}])},[e[6]||(e[6]=t("span",null,"待处理",-1)),t("strong",null,i(l.value.summary.open),1),e[7]||(e[7]=t("small",null,"还没有人复核",-1))],2),t("article",{class:v(["metric",{"metric--high":l.value.summary.high_open>0}])},[e[8]||(e[8]=t("span",null,"高风险",-1)),t("strong",null,i(l.value.summary.high_open),1),e[9]||(e[9]=t("small",null,"诊疗、承诺、脱离平台",-1))],2),t("article",tt,[e[10]||(e[10]=t("span",null,"聊天命中",-1)),t("strong",null,i(l.value.summary.im_open),1),e[11]||(e[11]=t("small",null,"员工侧已归档文字",-1))]),t("article",{class:v(["metric",{"metric--attention":((ue=C.value)==null?void 0:ue.status)==="available"&&l.value.summary.call_open>0}])},[e[12]||(e[12]=t("span",null,"通话转写",-1)),((re=C.value)==null?void 0:re.status)==="available"?(n(),o("strong",at,i(l.value.summary.call_open),1)):(n(),o("strong",st,i(Te.value),1)),t("small",null,i(((ce=C.value)==null?void 0:ce.status)==="available"?"员工侧转写命中":Ae.value),1)],2)])):c("",!0),t("div",lt,[t("div",nt,[e[14]||(e[14]=t("div",null,[t("h2",null,"命中记录"),t("p",{class:"muted"},"一条记录是一名员工、一条规则、一处原文。没有记录不等于今天没有沟通。")],-1)),t("form",{class:"search-form",onSubmit:ye(ne,["prevent"])},[R(S,{modelValue:M.value,"onUpdate:modelValue":e[0]||(e[0]=a=>M.value=a),"aria-label":"搜索预警",placeholder:"搜索员工或患者",clearable:"",onClear:ne},null,8,["modelValue"]),R(B,{"native-type":"submit"},{default:be(()=>[...e[13]||(e[13]=[ge("搜索",-1)])]),_:1})],32)]),t("div",it,[t("button",{type:"button",class:v({active:u.value==="assistant"}),"aria-pressed":u.value==="assistant",onClick:e[1]||(e[1]=a=>G("assistant"))},[e[15]||(e[15]=t("span",null,"医助",-1)),t("strong",null,i(((ve=l.value)==null?void 0:ve.summary.assistant_open)??0),1),e[16]||(e[16]=t("small",null,"待处理",-1))],10,ot),t("button",{type:"button",class:v({active:u.value==="doctor"}),"aria-pressed":u.value==="doctor",onClick:e[2]||(e[2]=a=>G("doctor"))},[e[17]||(e[17]=t("span",null,"医生",-1)),t("strong",null,i(((de=l.value)==null?void 0:de.summary.doctor_open)??0),1),e[18]||(e[18]=t("small",null,"待处理",-1))],10,ut),t("button",{type:"button",class:v(["role-switch__all",{active:u.value==="all"}]),"aria-pressed":u.value==="all",onClick:e[3]||(e[3]=a=>G("all"))}," 全部身份 ",10,rt)]),u.value==="assistant"?(n(),o("section",ct,[t("aside",vt,[e[19]||(e[19]=t("p",{class:"pane-label"},"企微账号",-1)),(n(!0),o(z,null,I(((fe=N.value)==null?void 0:fe.accounts)||[],a=>(n(),o("button",{key:a.external_id,type:"button",class:v({active:f.value.account===a.external_id}),onClick:g=>j({id:0,name:a.name||"未命名账号",account:a.external_id})},[t("strong",null,i(a.name||"未命名账号"),1),t("small",null,i(a.conversations)+" 个会话",1)],10,dt))),128)),e[20]||(e[20]=t("p",{class:"pane-label"},"已关联医助",-1)),(n(!0),o(z,null,I(q.value,a=>(n(),o("button",{key:a.id,type:"button",class:v({active:f.value.id===a.id&&!f.value.account}),onClick:g=>j({id:a.id,name:a.name,account:""})},[t("strong",null,i(a.name||"未命名医助"),1),t("small",null,i(a.conversations)+" 个会话",1)],10,ft))),128)),q.value.length?c("",!0):(n(),o("p",mt,"还没有医助和企微账号同名或绑定了同一个 UserId。"))]),t("div",pt,[t("h3",null,i(f.value.name||"选择左侧的人"),1),f.value.id||f.value.account?(n(),A(Ye,{key:0,"assistant-id":f.value.id,account:f.value.account},null,8,["assistant-id","account"])):c("",!0)])])):c("",!0),u.value!=="assistant"?(n(),o("div",_t,[t("div",yt,[(n(),o(z,null,I(P,a=>t("button",{key:a.value,type:"button","aria-pressed":p.value===a.value,class:v({active:p.value===a.value}),onClick:g=>we(a.value)},i(a.label),11,bt)),64))]),t("span",gt,i((me=l.value)!=null&&me.scan.last_scan_at?`最近扫描 ${ke(he)(l.value.scan.last_scan_at)}`:"扫描时间待确认"),1)])):c("",!0),k.value?(n(),A(r,{key:2,title:k.value,type:"error",closable:!1,"show-icon":"",class:"table-error"},null,8,["title"])):c("",!0),u.value!=="assistant"&&E.value&&!l.value?(n(),A(b,{key:3,rows:6,animated:"",class:"table-skeleton"})):u.value!=="assistant"&&((pe=l.value)!=null&&pe.lists.length)?je((n(),o("ul",kt,[(n(!0),o(z,null,I(l.value.lists,a=>(n(),o("li",{key:a.id,class:v(["feed-item",`feed-item--${se(a)}`])},[t("div",ht,[t("div",Ct,[t("span",{class:v(["role-pill",`role-pill--${se(a)}`])},i(a.staff.role_name||"员工"),3),a.staff.assistant?(n(),o("button",{key:0,type:"button",class:"staff-link",onClick:g=>j({id:a.staff.id,name:a.staff.name,account:""})},i(a.staff.name||"未命名医助"),9,xt)):(n(),o("strong",$t,i(a.staff.name||"未命名员工"),1)),t("span",Tt,i(a.patient_name||"未命名患者"),1),a.diagnosis_id?(n(),o("small",At,"诊单 #"+i(a.diagnosis_id),1)):c("",!0)]),t("p",Et,i(a.snippet),1),a.review_note?(n(),o("p",Vt,"复核:"+i(a.review_note),1)):c("",!0),t("div",wt,[t("time",Dt,i(ke(he)(a.occurred_at)),1),t("span",{class:v(["severity",`severity--${a.severity}`])},i(xe[a.severity])+" · "+i(a.rule_label),3),t("span",null,i(Ve(a.channel)),1),t("span",null,i(Ce[a.status]),1)])]),X.canReview?(n(),o("div",Lt,[t("div",St,[t("button",{type:"button",disabled:a.status==="confirmed",onClick:g=>L(a,"confirmed")}," 成立 ",8,Bt),t("button",{type:"button",disabled:a.status==="false_positive",onClick:g=>L(a,"false_positive")}," 误报 ",8,Rt),t("button",{type:"button",disabled:a.status==="followed",onClick:g=>L(a,"followed")}," 已跟进 ",8,zt)]),V.value===a.id?(n(),o("form",{key:0,class:"note-form",onSubmit:ye(g=>L(a,"false_positive"),["prevent"])},[R(S,{modelValue:$.value,"onUpdate:modelValue":e[4]||(e[4]=g=>$.value=g),"aria-label":"误报原因",maxlength:"200",placeholder:"填写误报原因"},null,8,["modelValue"]),R(B,{"native-type":"submit",link:"",type:"primary"},{default:be(()=>[...e[21]||(e[21]=[ge("提交",-1)])]),_:1})],40,It)):c("",!0)])):c("",!0)],2))),128))])),[[Be,E.value]]):u.value!=="assistant"?(n(),A(H,{key:5,"image-size":80,description:Ee.value},null,8,["description"])):c("",!0),u.value!=="assistant"?(n(),o("footer",Mt,[t("span",Nt,i($e.value),1),(_e=l.value)!=null&&_e.count?(n(),A(Se,{key:0,"current-page":h.value,"onUpdate:currentPage":e[5]||(e[5]=a=>h.value=a),total:l.value.count,"page-size":20,layout:"total, prev, pager, next",onCurrentChange:Le},null,8,["current-page","total"])):c("",!0)])):c("",!0)])])}}}),Ot=Ze(Pt,[["__scopeId","data-v-b82ad13f"]]);export{Ot as default};