Files
vueapp/dist/assets/pages-learning-assistant-learning-assistant.CBrk0md4.js
T

2 lines
12 KiB
JavaScript
Raw Normal View History

2026-06-24 10:50:58 +08:00
import{D as t,s as a,d as e,r as s,o as l,b as n,e as o,f as i,w as r,i as c,E as u,j as d,l as f,m as p,F as m,n as _,k as v,g as h,t as g,u as y,z as w,A as b,y as k,x as C,S as j,N as x}from"./index-DVBIT0nD.js";import{_ as A}from"./config-doctor.TgARj_nM.js";import{F as E,a as S,r as $}from"./session.DeeNJsIT.js";import{b as D}from"./navigation.RN4abuPi.js";import{_ as O}from"./_plugin-vue_export-helper.BCo6x5W8.js";async function I(t){const a=(null==t?void 0:t.trim())?{title:t.trim().slice(0,100)}:{},e=await fetch(`${E}/learning-assistant/sessions`,{method:"POST",headers:S(),body:JSON.stringify(a)});if(!e.ok)throw new Error(await $(e));const s=await e.json();if("OK"!==s.code||!s.data)throw new Error(s.message||"新建会话失败");const l=function(t){const a=t.assistant_session_id||t.session_id||t.id;return"number"==typeof a||"string"==typeof a?a:""}(s.data);if(!l)throw new Error("新建会话返回缺少 assistant_session_id");return{...s.data,assistant_session_id:l}}async function T(t){var a;const e=await fetch("http://8.160.178.88:8088/v1/workflows/run",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json",Authorization:"Bearer app-9BapxGXgF2qQi9HHkq4R95Y7"},body:JSON.stringify({inputs:{input:"临床思维训练书籍"},response_mode:"blocking",user:q()}),signal:t});if(!e.ok)throw new Error(await async function(t){const a=await t.text().catch((()=>""));if(!a)return`临床思维训练书籍请求失败(${t.status}`;try{const t=JSON.parse(a),e=t.message||t.detail||t.error;if("string"==typeof e&&e.trim())return e}catch{}return a}(e));const s=await e.json();if((null==(a=s.data)?void 0:a.status)&&"succeeded"!==s.data.status)throw new Error(s.data.error||"临床思维训练书籍生成失败");const l=function(t){const a=t.data;if(a&&"object"==typeof a){const t=N(a.outputs)||N(a.output)||N(a.answer)||N(a.text)||N(a.result);if(t)return t}return N(t.output)||N(t.answer)||N(t.text)||N(t.result)}(s);if(!l)throw new Error("临床思维训练书籍内容为空,请稍后重试");return l}function q(){const e="clinical-thinking-workflow-user-id",s=t(e);if("string"==typeof s&&s.trim())return s;const l=`clinical-thinking-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;return a(e,l),l}function N(t){if("string"==typeof t)return t.trim();if(Array.isArray(t))return t.map(N).filter(Boolean).join("\n");if(!t||"object"!=typeof t)return"";const a=t,e=["answer","text","result","output","content","markdown","data"];for(const s of e){const t=N(a[s]);if(t)return t}return Object.entries(a).map((([t,a])=>{const e=N(a);return e?`${t}${e}`:""})).filter(Boolean).join("\n")}function F(t,a){var e,s,l;const n=(null==(e=t.match(/^event:\s*(.+)$/m))?void 0:e[1])||"",o=t.split("\n").filter((t=>t.startsWith("data:"))).map((t=>t.replace(/^data:\s?/,"")));if(0===o.length)return;const i=o.join("\n");if("[DONE]"===i)return void(null==(s=a.onDone)||s.call(a,{}));let r=i;try{r=JSON.parse(i)}catch{}if("error"===n){const t="object"==typeof r&&r?r.message:r;throw new Error("string"==typeof t?t:"AI 学习助手回复失败")}const c=function(t){if("string"==typeof t)return t;if(!t||"object"!=typeof t)return"";const a=t,e=a.delta||a.content||a.answer||a.text;if("string"==typeof e)return e;const s=a.data;if(s&&"object"==typeof s){const t=s,a=t.delta||t.content||t.answer||t.text;if("string"==typeof a)return a}return""}(r);c&&a.onDelta(c),"done"!==n&&"message_done"!==n||null==(l=a.onDone)||l.call(a,"object"==typeof r&&r?r:{})}const J=O(e({__name:"learning-assistant",emits:["go-home","open-settings","open-profile"],setup(e,{emit:O}){const q=D(O),N=[{index:"1",title:"早期识别",description:"10分钟内完成12导联心电图。"},{index:"2",title:"药物干预",description:"阿司匹林、氯吡格雷。"},{index:"3",title:"再灌注策略",description:"STEMI需紧急PCI。"}],J=s([]),B=s(""),P=s(!1),H=s(!1),M=s(""),V=s(!1),z=s(0),R=s(null),G=s(!1);let K=null,Q=null,U=null;async function W(){if(G.value)return;J.value.push({id:`user-${Date.now()}`,role:"user",content:"临床思维训练书籍"}),H.value=!0,G.value=!0