1 line
21 KiB
JavaScript
1 line
21 KiB
JavaScript
import{D as e,E as t,On as n,_ as r,b as i,bt as a,ft as o,g as s,gn as ee,k as te,mt as c,nt as ne,o as l,ot as re,qt as u,tr as d,v as f,vn as p,y as m}from"./runtime-core.esm-bundler-DkysjgTd.js";import{t as ie}from"./objectSpread2-BmonrgTA.js";import{n as h}from"./objectWithoutProperties-BjoYlK0I.js";import{t as ae}from"./download-DUHREPuF.js";import{i as g}from"./store-y5EHvASf.js";import{t as oe}from"./use-access-Br5jO9DN.js";import{a as se}from"./useConfigInject-DomGmy3z.js";import{t as ce}from"./table-DTfeEvaQ.js";import{t as _}from"./form-Dgny3EsJ.js";import{t as v}from"./select-B6mbPqz1.js";import{M as y,P as b}from"./console-CY19X8pv.js";import{a as x}from"./config-provider-Dz5iOevd.js";import{t as S}from"./alert-CETHTRlw.js";import{t as C}from"./button-BmeX6K_E.js";import{t as le}from"./checkbox-CxirtQf_.js";import{t as w}from"./tag-EV85tNJT.js";import{t as T}from"./input-CmV6qN-W.js";import{t as ue}from"./input-number-Of9scmoU.js";import{t as de}from"./modal-DmfLEG-j.js";import{t as E}from"./space-CBX6VIMJ.js";import{t as fe}from"./switch-CszVV22m.js";import{t as pe}from"./archive-account-selector-CNbHDnRm.js";import{t as me}from"./use-archive-load-BINKTMOh.js";function D(e,t,n={}){return`/knowledge/${e}?${new URLSearchParams(Object.entries(ie({account_id:t},n)).map(([e,t])=>[e,String(t)]))}`}var he=(e,t)=>g.get(D(`overview`,e),{signal:t}),ge=(e,t)=>g.get(D(`jobs`,e),{signal:t}),_e=(e,t,n,r,i)=>g.get(D(`items`,e,{page:r,query:n,status:t}),{signal:i}),ve=(e,t)=>g.get(D(`items/${t}`,e)),ye=(e,t)=>g.put(D(`items/${t.id}`,e),t),be=(e,t,n,r=!1,i=0)=>g.post(D(`items/${t.id}/${n}`,e),{confirmed:r,restore_revision:i,revision:t.revision}),xe=(e,t)=>g.post(D(`jobs`,e),t),Se=(e,t,n)=>g.post(D(`jobs/${t}/${n}`,e)),Ce=(e,t)=>g.post(D(`search`,e),{query:t}),we=(e,t)=>g.put(D(`settings`,e),{enabled:t}),Te=(e,t)=>g.get(D(`retrievals`,e),{signal:t}),Ee=e=>g.get(D(`export`,e),{responseType:`blob`,responseReturn:`body`}),De=(e,t,n)=>g.put(D(`watch/${t}`,e),{enabled:n}),Oe={class:`space-y-4 p-5`},ke={class:`mb-5 grid grid-cols-2 gap-3 md:grid-cols-4`},Ae={class:`text-gray-500`},je={class:`mt-2 text-2xl font-semibold`},Me={key:0,class:`mb-4 space-y-2`},Ne={class:`max-w-xs text-red-500`},Pe={class:`my-4`},Fe={class:`whitespace-pre-wrap`},Ie={class:`text-gray-500`},Le={key:0},Re={key:1},ze={class:`mt-4 grid gap-6 md:grid-cols-2`},Be={class:`mb-1 text-xs text-gray-500`},Ve={class:`m-0 whitespace-pre-wrap break-words`},He={class:`mt-5 border-t pt-3`},O=te({__name:`center`,setup(te){let{hasAccessByCodes:g}=oe(),D=e=>e.every(e=>g([e])),O=s(()=>D([`knowledge:write`,`im:content:read`])),k=s(()=>D([`knowledge:review`,`im:content:read`])),A=s(()=>D([`knowledge:publish`,`im:content:read`])),Ue=s(()=>g([`knowledge:export`])),We=s(()=>g([`stats:read`])),j=p(-1),M=s(()=>j.value!==-1),N=p(`items`),P=p(null),F=p([]),I=p([]),Ge=p([]),Ke=p(0),L=p(1),qe=p(``),Je=p(``),Ye=p(``),R=p(null),z=p(null),B=p(``),V=e=>JSON.stringify([e.title,e.question,e.answer,e.conditions,e.category,e.kind,e.valid_until]),Xe=s(()=>!!z.value&&V(z.value)!==B.value),H=p(!1),U=p(!1),W=p(!1),G=p(!1),Ze=me(),{loading:Qe}=Ze,$e=!0,K,q=0,J=ee({source_account_id:``,conversation_id:``,date_from:``,date_to:``,engine:`rules`,max_messages:1e4,max_model_calls:100,staff_confirmed:!1,auto_watch:!1}),Y={draft:`待审核`,approved:`待发布`,published:`已发布`,rejected:`已驳回`,disabled:`已停用`,stale:`来源已变化`,queued:`等待处理`,running:`处理中`,paused:`已暂停`,completed:`已完成`,failed:`失败`},et={draft:`orange`,approved:`blue`,published:`green`,rejected:`red`,stale:`red`,completed:`green`,failed:`red`,running:`blue`},tt={lexical:`关键词检索`,hybrid:`关键词与语义检索`,lexical_fallback:`语义服务暂不可用,已使用关键词`,unavailable:`检索暂不可用`},nt=[{value:``,label:`全部状态`},...[`draft`,`approved`,`published`,`rejected`,`disabled`,`stale`].map(e=>({value:e,label:Y[e]}))],rt=[{value:`qa`,label:`标准问答`},{value:`procedure`,label:`业务流程`},{value:`case`,label:`对话案例`}],it=s(()=>{var e;return(((e=P.value)==null?void 0:e.source_accounts)||[]).map(e=>({value:e.id,label:e.display_name||e.external_account_id}))});function X(){return at.apply(this,arguments)}function at(){return at=h(function*(){yield Ze.run(function(){var e=h(function*(e){let t=j.value,[n,r,i,a]=yield Promise.all([he(t,e),_e(t,qe.value,Je.value,L.value,e),ge(t,e),We.value?Te(t,e):Promise.resolve({items:[]})]);return{summary:n,entries:r,tasks:i,logs:a}});return function(t){return e.apply(this,arguments)}}(),e=>{P.value=e.summary,F.value=e.entries.items,Ke.value=e.entries.total,I.value=e.tasks.items,Ge.value=e.logs.items}),ot()}),at.apply(this,arguments)}function ot(){K&&clearTimeout(K),!(!$e||!I.value.some(e=>[`queued`,`running`].includes(e.status)))&&(K=setTimeout(()=>{document.visibilityState===`visible`&&!G.value?X():ot()},5e3))}function st(){q++,z.value=null,H.value=!1,U.value=!1,F.value=[],I.value=[],Ge.value=[],R.value=null,P.value=null,J.source_account_id=``,J.staff_confirmed=!1,L.value=1,X()}function ct(e){return lt.apply(this,arguments)}function lt(){return lt=h(function*(e){if(!M.value){x.info(`请先选择具体账号,再查看和审核知识`);return}let t=++q,n=yield ve(j.value,e);t===q&&(z.value=n,B.value=V(n),W.value=!1,H.value=!0)}),lt.apply(this,arguments)}function Z(e){return ut.apply(this,arguments)}function ut(){return ut=h(function*(e){if(!G.value){G.value=!0;try{yield e(),yield X()}finally{G.value=!1}}}),ut.apply(this,arguments)}function dt(){return ft.apply(this,arguments)}function ft(){return ft=h(function*(){let e=z.value;if(!e)return;let t=j.value,n=q;yield Z(h(function*(){let r=yield ye(t,e);n===q&&(z.value=r,B.value=V(r),W.value=!1),x.success(`已保存为草稿,需要重新审核后发布`)}))}),ft.apply(this,arguments)}function Q(e){return $.apply(this,arguments)}function $(){return $=h(function*(e,t=0){let n=z.value;if(!n)return;let r=j.value,i=q;yield Z(h(function*(){let a=yield be(r,n,e,W.value,t);i===q&&(z.value=a,B.value=V(a),W.value=!1),x.success(e===`restore`?`已恢复为草稿,请审核后重新发布`:`操作成功`)}))}),$.apply(this,arguments)}function pt(){return mt.apply(this,arguments)}function mt(){return mt=h(function*(){let e=j.value,t=ie({},J);yield Z(h(function*(){yield xe(e,t),U.value=!1,N.value=`jobs`,x.success(`任务已加入队列`)}))}),mt.apply(this,arguments)}function ht(e,t){return gt.apply(this,arguments)}function gt(){return gt=h(function*(e,t){let n=j.value;yield Z(()=>Se(n,e,t))}),gt.apply(this,arguments)}function _t(e){return vt.apply(this,arguments)}function vt(){return vt=h(function*(e){let t=j.value;yield Z(()=>we(t,e))}),vt.apply(this,arguments)}function yt(){return bt.apply(this,arguments)}function bt(){return bt=h(function*(){let e=j.value,t=q;yield Z(h(function*(){let n=yield Ce(e,Ye.value);t===q&&(R.value=n)}))}),bt.apply(this,arguments)}function xt(){return St.apply(this,arguments)}function St(){return St=h(function*(){let e=j.value;yield Z(h(function*(){let t=yield Ee(e);ae({fileName:`knowledge.jsonl`,source:t})}))}),St.apply(this,arguments)}function Ct(){$e=!1,q++,Ze.cancel(),K&&clearTimeout(K)}return ne(()=>{$e=!0,ot()}),re(Ct),o(Ct),(o,s)=>(c(),i(`div`,Oe,[e(n(y),{title:`知识中心`},{extra:u(()=>[e(pe,{modelValue:j.value,"onUpdate:modelValue":s[0]||(s[0]=e=>j.value=e),onChange:st},null,8,[`modelValue`])]),default:u(()=>[s[36]||(s[36]=r(`p`,{class:`mb-4 text-gray-500`},`把历史聊天整理成可追溯的知识,审核发布后供客服回答时参考。`,-1)),r(`div`,ke,[(c(),i(l,null,a([`draft`,`approved`,`published`,`stale`],e=>{var t;return r(`div`,{key:e,class:`rounded-lg border p-4`},[r(`div`,Ae,d(Y[e]),1),r(`div`,je,d(((t=P.value)==null?void 0:t.counts[e])||0),1)])}),64))]),e(n(E),{wrap:``},{default:u(()=>{var i;return[e(n(w),null,{default:u(()=>{var e;return[t(d((e=P.value)!=null&&e.semantic_configured?`支持语义与关键词检索`:`关键词检索已就绪`),1)]}),_:1}),s[35]||(s[35]=r(`span`,null,`客服使用知识`,-1)),e(n(fe),{checked:!!((i=P.value)!=null&&(i=i.settings)!=null&&i.enabled),disabled:!M.value||!A.value||G.value,onChange:s[1]||(s[1]=e=>_t(!!e))},null,8,[`checked`,`disabled`]),O.value?(c(),f(n(C),{key:0,type:`primary`,disabled:!M.value,onClick:s[2]||(s[2]=e=>U.value=!0)},{default:u(()=>[...s[32]||(s[32]=[t(`从聊天整理知识`,-1)])]),_:1},8,[`disabled`])):m(``,!0),Ue.value?(c(),f(n(C),{key:1,disabled:!M.value||G.value,onClick:xt},{default:u(()=>[...s[33]||(s[33]=[t(`导出已发布知识`,-1)])]),_:1},8,[`disabled`])):m(``,!0),e(n(C),{loading:n(Qe),onClick:X},{default:u(()=>[...s[34]||(s[34]=[t(`刷新`,-1)])]),_:1},8,[`loading`])]}),_:1}),M.value?m(``,!0):(c(),f(n(S),{key:0,class:`mt-4`,type:`info`,"show-icon":``,message:`当前汇总全部授权账号。整理、审核、发布和测试前,请选择具体账号。`}))]),_:1}),e(n(y),null,{default:u(()=>[e(n(b),{"active-key":N.value,"onUpdate:activeKey":s[9]||(s[9]=e=>N.value=e)},{default:u(()=>[e(n(b).TabPane,{key:`items`,tab:`知识与审核`},{default:u(()=>[e(n(E),{class:`mb-4`,wrap:``},{default:u(()=>[e(n(v),{value:qe.value,"onUpdate:value":s[3]||(s[3]=e=>qe.value=e),options:nt,style:{width:`150px`},onChange:s[4]||(s[4]=()=>{L.value=1,X()})},null,8,[`value`]),e(n(T).Search,{value:Je.value,"onUpdate:value":s[5]||(s[5]=e=>Je.value=e),placeholder:`搜索标题或问题`,style:{width:`300px`},onSearch:s[6]||(s[6]=()=>{L.value=1,X()})},null,8,[`value`])]),_:1}),e(n(ce),{"data-source":F.value,"row-key":`id`,loading:n(Qe),pagination:{current:L.value,pageSize:30,total:Ke.value,showSizeChanger:!1},onChange:s[7]||(s[7]=e=>{L.value=e.current||1,X()}),columns:[{title:`问题 / 标题`,dataIndex:`title`,key:`title`},{title:`分类`,dataIndex:`category`},{title:`状态`,key:`status`,width:130},{title:`版本`,dataIndex:`revision`,width:75},{title:`更新时间`,dataIndex:`updated_at`,width:230}]},{bodyCell:u(({column:e,record:r})=>[e.key===`title`?(c(),f(n(C),{key:0,type:`link`,class:`!h-auto whitespace-normal text-left`,onClick:e=>ct(r.id)},{default:u(()=>[t(d(r.title),1)]),_:2},1032,[`onClick`])):e.key===`status`?(c(),f(n(w),{key:1,color:et[r.status]},{default:u(()=>[t(d(Y[r.status]),1)]),_:2},1032,[`color`])):m(``,!0)]),_:1},8,[`data-source`,`loading`,`pagination`])]),_:1}),e(n(b).TabPane,{key:`jobs`,tab:`加工任务`},{default:u(()=>{var o;return[e(n(S),{class:`mb-4`,type:`info`,"show-icon":``,message:`任务分批处理,可暂停和继续。只有角色明确的单聊文本会整理为草稿;采样末尾不完整的问答会丢弃。`}),M.value&&(o=P.value)!=null&&o.watches.length?(c(),i(`div`,Me,[(c(!0),i(l,null,a(P.value.watches,t=>{var a;return c(),i(`div`,{key:t.source_account_id,class:`flex items-center gap-3`},[r(`span`,null,d((a=it.value.find(e=>e.value===t.source_account_id))==null?void 0:a.label)+` · 自动整理新增聊天`,1),e(n(fe),{checked:!!t.enabled,disabled:!O.value||G.value,onChange:e=>Z(()=>n(De)(j.value,t.source_account_id,!!e))},null,8,[`checked`,`disabled`,`onChange`])])}),128))])):m(``,!0),e(n(ce),{"data-source":I.value,"row-key":`id`,pagination:{pageSize:15},columns:[{title:`创建时间`,dataIndex:`created_at`},{title:`状态`,key:`status`},{title:`处理结果`,key:`progress`},{title:`模型用量`,key:`usage`},{title:`操作`,key:`actions`}]},{bodyCell:u(({column:a,record:o})=>[a.key===`status`?(c(),i(l,{key:0},[e(n(w),{color:et[o.status]},{default:u(()=>[t(d(Y[o.status]),1)]),_:2},1032,[`color`]),r(`div`,Ne,d(o.error),1)],64)):a.key===`progress`?(c(),i(l,{key:1},[t(`已读 `+d(o.processed)+` / 上限 `+d(o.options.max_messages)+` 条`,1),s[37]||(s[37]=r(`br`,null,null,-1)),t(`草稿 `+d(o.created_items)+` · 重复 `+d(o.duplicates)+` · 无效消息 `+d(o.skipped),1)],64)):a.key===`usage`?(c(),i(l,{key:2},[t(d(o.model_calls)+` 次调用`,1),s[38]||(s[38]=r(`br`,null,null,-1)),t(`输入 `+d(o.input_chars)+` / 输出 `+d(o.output_chars)+` 字符`,1)],64)):a.key===`actions`&&M.value&&O.value?(c(),i(l,{key:3},[[`queued`,`running`].includes(o.status)?(c(),f(n(C),{key:0,disabled:G.value,onClick:e=>ht(o.id,`pause`)},{default:u(()=>[...s[39]||(s[39]=[t(`暂停`,-1)])]),_:1},8,[`disabled`,`onClick`])):m(``,!0),[`paused`,`failed`].includes(o.status)?(c(),f(n(C),{key:1,disabled:G.value,onClick:e=>ht(o.id,`resume`)},{default:u(()=>[...s[40]||(s[40]=[t(`继续 / 重试`,-1)])]),_:1},8,[`disabled`,`onClick`])):m(``,!0)],64)):m(``,!0)]),_:1},8,[`data-source`])]}),_:1}),e(n(b).TabPane,{key:`test`,tab:`检索测试`},{default:u(()=>[s[42]||(s[42]=r(`p`,{class:`text-gray-500`},`测试只检索已发布知识,不发送客服消息。相关度是排序参考,不代表事实正确率。`,-1)),e(n(T).Search,{value:Ye.value,"onUpdate:value":s[8]||(s[8]=e=>Ye.value=e),placeholder:`输入一个真实业务问题`,"enter-button":`检索`,disabled:!M.value,loading:G.value,onSearch:yt},null,8,[`value`,`disabled`,`loading`]),R.value?(c(),i(l,{key:0},[r(`p`,Pe,d(tt[R.value.mode]||R.value.mode)+` · `+d(R.value.elapsed_ms)+` ms · `+d(R.value.hits.length)+` 条命中`,1),R.value.hits.length?m(``,!0):(c(),f(n(se),{key:0,description:`没有可靠命中。请补充问题信息,或整理相应知识。`})),(c(!0),i(l,null,a(R.value.hits,i=>(c(),f(n(y),{key:i.id,class:`mb-3`,title:i.title},{extra:u(()=>[e(n(C),{type:`link`,onClick:e=>ct(i.id)},{default:u(()=>[...s[41]||(s[41]=[t(`查看来源`,-1)])]),_:1},8,[`onClick`])]),default:u(()=>[r(`p`,Fe,d(i.answer),1),r(`p`,Ie,`适用条件:`+d(i.conditions),1),e(n(w),null,{default:u(()=>[t(`版本 `+d(i.revision),1)]),_:2},1024),e(n(w),null,{default:u(()=>[t(`相关度 `+d(i.score),1)]),_:2},1024)]),_:2},1032,[`title`]))),128))],64)):m(``,!0)]),_:1}),We.value?(c(),f(n(b).TabPane,{key:`traces`,tab:`引用记录`},{default:u(()=>[e(n(ce),{"data-source":Ge.value,"row-key":`id`,pagination:{pageSize:15},columns:[{title:`时间`,dataIndex:`created_at`},{title:`问题`,dataIndex:`query`},{title:`知识来源`,key:`hits`},{title:`检索方式`,key:`mode`},{title:`耗时 ms`,dataIndex:`elapsed_ms`}]},{bodyCell:u(({column:e,record:r})=>[e.key===`hits`?(c(),i(l,{key:0},[r.hits.length?m(``,!0):(c(),i(`span`,Le,`无命中`)),(c(!0),i(l,null,a(r.hits,e=>(c(),f(n(C),{key:e.id,type:`link`,onClick:t=>ct(e.id)},{default:u(()=>[t(d(e.id.slice(0,8))+` · v`+d(e.revision),1)]),_:2},1032,[`onClick`]))),128))],64)):e.key===`mode`?(c(),i(`span`,Re,d(tt[r.mode]||r.mode),1)):m(``,!0)]),_:1},8,[`data-source`])]),_:1})):m(``,!0)]),_:1},8,[`active-key`])]),_:1}),e(n(de),{open:U.value,"onUpdate:open":s[18]||(s[18]=e=>U.value=e),title:`从聊天整理知识`,"confirm-loading":G.value,"ok-button-props":{disabled:!M.value||!J.source_account_id||!J.staff_confirmed},"ok-text":`创建任务`,onOk:pt},{default:u(()=>[e(n(_),{layout:`vertical`},{default:u(()=>[e(n(_).Item,{label:`客服来源账号`},{default:u(()=>[e(n(v),{value:J.source_account_id,"onUpdate:value":s[10]||(s[10]=e=>J.source_account_id=e),options:it.value,placeholder:`请选择归档来源账号`},null,8,[`value`,`options`])]),_:1}),e(n(E),null,{default:u(()=>[e(n(_).Item,{label:`开始日期(北京时间)`},{default:u(()=>[e(n(T),{value:J.date_from,"onUpdate:value":s[11]||(s[11]=e=>J.date_from=e),type:`date`},null,8,[`value`])]),_:1}),e(n(_).Item,{label:`结束日期`},{default:u(()=>[e(n(T),{value:J.date_to,"onUpdate:value":s[12]||(s[12]=e=>J.date_to=e),type:`date`},null,8,[`value`])]),_:1})]),_:1}),e(n(_).Item,{label:`处理消息上限`},{default:u(()=>[e(n(ue),{value:J.max_messages,"onUpdate:value":s[13]||(s[13]=e=>J.max_messages=e),min:1,max:1e6},null,8,[`value`])]),_:1}),e(n(_).Item,{label:`整理方式`},{default:u(()=>[e(n(v),{value:J.engine,"onUpdate:value":s[14]||(s[14]=e=>J.engine=e),options:[{value:`rules`,label:`规则整理:保留原意,人工编辑审核`},{value:`model`,label:`模型整理:脱敏后使用已配置模型生成草稿`}]},null,8,[`value`])]),_:1}),J.engine===`model`?(c(),f(n(_).Item,{key:0,label:`模型调用上限(达到后停止)`},{default:u(()=>[e(n(ue),{value:J.max_model_calls,"onUpdate:value":s[15]||(s[15]=e=>J.max_model_calls=e),min:1,max:1e4},null,8,[`value`])]),_:1})):m(``,!0),e(n(_).Item,null,{default:u(()=>[e(n(le),{checked:J.auto_watch,"onUpdate:checked":s[16]||(s[16]=e=>J.auto_watch=e)},{default:u(()=>[...s[43]||(s[43]=[t(`持续整理该来源账号的新增或修改会话(静默 30 分钟后生成规则草稿,仍须审核)`,-1)])]),_:1},8,[`checked`])]),_:1}),e(n(le),{checked:J.staff_confirmed,"onUpdate:checked":s[17]||(s[17]=e=>J.staff_confirmed=e)},{default:u(()=>[...s[44]||(s[44]=[t(`确认所选账号由客服使用,这些聊天允许用于知识整理。个人情况不能直接发布为通用结论。`,-1)])]),_:1},8,[`checked`])]),_:1})]),_:1},8,[`open`,`confirm-loading`,`ok-button-props`]),e(n(de),{open:H.value,"onUpdate:open":s[31]||(s[31]=e=>H.value=e),title:`知识审核与来源`,width:`1100px`,footer:null,"destroy-on-close":!0},{default:u(()=>{var o;return[z.value?(c(),i(l,{key:0},[e(n(E),{class:`mb-4`},{default:u(()=>[e(n(w),{color:et[z.value.status]},{default:u(()=>[t(d(Y[z.value.status]),1)]),_:1},8,[`color`]),e(n(w),null,{default:u(()=>[t(`版本 `+d(z.value.revision),1)]),_:1})]),_:1}),(c(!0),i(l,null,a(z.value.flags,e=>(c(),f(n(S),{key:e,message:e,type:`warning`,class:`mb-2`},null,8,[`message`]))),128)),r(`div`,ze,[r(`div`,null,[s[45]||(s[45]=r(`h3`,{class:`mb-3 font-semibold`},`来源对话(已自动脱敏)`,-1)),(o=z.value.sources)!=null&&o.length?m(``,!0):(c(),f(n(se),{key:0,description:`暂无可查看的来源,请检查正文查看权限`})),(c(!0),i(l,null,a(z.value.sources,e=>(c(),i(`div`,{key:e.message_id,class:`mb-3 rounded border p-3`},[r(`div`,Be,d(e.role===`staff`?`客服`:`客户`)+` · `+d(e.sent_at)+` · v`+d(e.version_no),1),r(`p`,Ve,d(e.content),1)]))),128))]),e(n(_),{layout:`vertical`},{default:u(()=>[e(n(_).Item,{label:`标题`},{default:u(()=>[e(n(T),{value:z.value.title,"onUpdate:value":s[19]||(s[19]=e=>z.value.title=e),maxlength:160,disabled:!O.value},null,8,[`value`,`disabled`])]),_:1}),e(n(E),null,{default:u(()=>[e(n(_).Item,{label:`类型`},{default:u(()=>[e(n(v),{value:z.value.kind,"onUpdate:value":s[20]||(s[20]=e=>z.value.kind=e),options:rt,disabled:!O.value,style:{width:`140px`}},null,8,[`value`,`disabled`])]),_:1}),e(n(_).Item,{label:`分类`},{default:u(()=>[e(n(T),{value:z.value.category,"onUpdate:value":s[21]||(s[21]=e=>z.value.category=e),disabled:!O.value},null,8,[`value`,`disabled`])]),_:1})]),_:1}),e(n(_).Item,{label:`完整问题`},{default:u(()=>[e(n(T).TextArea,{value:z.value.question,"onUpdate:value":s[22]||(s[22]=e=>z.value.question=e),rows:3,maxlength:4e3,disabled:!O.value},null,8,[`value`,`disabled`])]),_:1}),e(n(_).Item,{label:`标准答案 / 步骤`},{default:u(()=>[e(n(T).TextArea,{value:z.value.answer,"onUpdate:value":s[23]||(s[23]=e=>z.value.answer=e),rows:7,maxlength:8e3,disabled:!O.value},null,8,[`value`,`disabled`])]),_:1}),e(n(_).Item,{label:`适用条件(必填)`},{default:u(()=>[e(n(T).TextArea,{value:z.value.conditions,"onUpdate:value":s[24]||(s[24]=e=>z.value.conditions=e),rows:3,maxlength:2e3,disabled:!O.value},null,8,[`value`,`disabled`])]),_:1}),e(n(_).Item,{label:`有效期截止日期(可选)`},{default:u(()=>[e(n(T),{value:z.value.valid_until,"onUpdate:value":s[25]||(s[25]=e=>z.value.valid_until=e),type:`date`,disabled:!O.value},null,8,[`value`,`disabled`])]),_:1})]),_:1})]),Xe.value?(c(),f(n(S),{key:0,class:`my-3`,type:`info`,message:`修改尚未保存。请先保存草稿,再审核或发布。`})):m(``,!0),z.value.status===`draft`&&k.value?(c(),f(n(le),{key:1,checked:W.value,"onUpdate:checked":s[26]||(s[26]=e=>W.value=e),class:`my-4`},{default:u(()=>[...s[46]||(s[46]=[t(`已核对客服身份、事实、适用条件和脱敏;内容可作为通用经验。涉及医疗内容已完成专业审核。`,-1)])]),_:1},8,[`checked`])):m(``,!0),e(n(E),{wrap:``},{default:u(()=>[O.value?(c(),f(n(C),{key:0,loading:G.value,disabled:z.value.status===`stale`,onClick:dt},{default:u(()=>[...s[47]||(s[47]=[t(`保存草稿`,-1)])]),_:1},8,[`loading`,`disabled`])):m(``,!0),k.value&&z.value.status===`draft`?(c(),f(n(C),{key:1,type:`primary`,disabled:!W.value||G.value||Xe.value,onClick:s[27]||(s[27]=e=>Q(`approve`))},{default:u(()=>[...s[48]||(s[48]=[t(`审核通过`,-1)])]),_:1},8,[`disabled`])):m(``,!0),k.value&&[`draft`,`approved`].includes(z.value.status)?(c(),f(n(C),{key:2,danger:``,disabled:G.value,onClick:s[28]||(s[28]=e=>Q(`reject`))},{default:u(()=>[...s[49]||(s[49]=[t(`驳回`,-1)])]),_:1},8,[`disabled`])):m(``,!0),A.value&&z.value.status===`approved`?(c(),f(n(C),{key:3,type:`primary`,loading:G.value,disabled:Xe.value,onClick:s[29]||(s[29]=e=>Q(`publish`))},{default:u(()=>[...s[50]||(s[50]=[t(`发布到知识库`,-1)])]),_:1},8,[`loading`,`disabled`])):m(``,!0),A.value&&z.value.status===`published`?(c(),f(n(C),{key:4,danger:``,disabled:G.value,onClick:s[30]||(s[30]=e=>Q(`disable`))},{default:u(()=>[...s[51]||(s[51]=[t(`停用`,-1)])]),_:1},8,[`disabled`])):m(``,!0)]),_:1}),r(`div`,He,[s[53]||(s[53]=r(`h3`,{class:`font-semibold`},`版本与操作记录`,-1)),(c(!0),i(l,null,a(z.value.history,(e,a)=>(c(),i(`div`,{key:a,class:`flex items-center justify-between py-1 text-sm`},[r(`span`,null,`v`+d(e.revision)+` · `+d(e.action)+` · `+d(e.created_at),1),O.value&&e.revision<z.value.revision?(c(),f(n(C),{key:0,type:`link`,disabled:G.value,onClick:t=>Q(`restore`,e.revision)},{default:u(()=>[...s[52]||(s[52]=[t(`恢复为草稿`,-1)])]),_:1},8,[`disabled`,`onClick`])):m(``,!0)]))),128))])],64)):m(``,!0)]}),_:1},8,[`open`])]))}});export{O as default}; |