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

2 lines
12 KiB
JavaScript
Raw Normal View History

2026-06-24 11:16:18 +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 c,i as r,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 b,z as w,A as y,y as k,x as C,S as j,N as x}from"./index-DfCP9RI3.js";import{_ as A}from"./config-doctor.TgARj_nM.js";import{F as S,a as E,r as $}from"./session.D2K7L0GR.js";import{b as O}from"./navigation.Bg2Ef9wA.js";import{_ as D}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(`${S}/learning-assistant/sessions`,{method:"POST",headers:E(),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,a){var e;const s=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:t},response_mode:"blocking",user:q()}),signal:a});if(!s.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}(s));const l=await s.json();if((null==(e=l.data)?void 0:e.status)&&"succeeded"!==l.data.status)throw new Error(l.data.error||"临床思维训练书籍生成失败");const n=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)}(l);if(!n)throw new Error("临床思维训练书籍内容为空,请稍后重试");return n}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 c=i;try{c=JSON.parse(i)}catch{}if("error"===n){const t="object"==typeof c&&c?c.message:c;throw new Error("string"==typeof t?t:"AI 学习助手回复失败")}const r=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""}(c);r&&a.onDelta(r),"done"!==n&&"message_done"!==n||null==(l=a.onDone)||l.call(a,"object"==typeof c&&c?c:{})}const J=D(e({__name:"learning-assistant",emits:["go-home","open-settings","open-profile"],setup(e,{emit:D}){const q=O(D),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),K=s("");let Q=null,U=null,W=null;function X(){G.value||(K.value="clinical-books"===K.value?"":"clinical-books")}async function Y(){const t=B.value.trim();if(!t)return void Z("请输入问题");