chore: build

This commit is contained in:
王天骄
2026-06-15 17:55:37 +08:00
parent 4c130cee9d
commit 8905768933
29 changed files with 26 additions and 26 deletions
@@ -1 +1 @@
import{C as t,D as e}from"./index-DR4MYR5F.js";const n="/server/api";class r extends Error{constructor(t,e,n){super(t),this.name="ApiRequestError",this.code=e,this.statusCode=n}}function o(t=!1){const n={"Content-Type":"application/json"};if(!t)return n;const r=function(){try{return e("clinical-thinking-access-token")||""}catch{return""}}();return r&&(n.Authorization=`Bearer ${r}`),n}function s(e,n,s="POST",i=!1){return new Promise(((u,a)=>{t({url:`/server/api${e}`,method:s,timeout:1e4,header:o(i),data:n,success:t=>{if(t.statusCode>=200&&t.statusCode<300)return void u(t.data);const e=t.data,n="string"==typeof(null==e?void 0:e.code)?e.code:void 0;a(new r(function(t,e){if(t&&"object"==typeof t){const e=t,n=e.message||e.detail||e.error;if("string"==typeof n&&n.trim())return n}return e}(t.data,`请求失败(${t.statusCode}`),n,t.statusCode))},fail:t=>{a(new r(t.errMsg||"无法连接服务"))}})}))}function i(t,e="login"){return s("/user/auth/send-code/",{phone:t,scene:e})}function u(){return s("/user/institution_list/",null,"GET")}function a(){return s("/user/institution_info/",null,"GET",!0)}function c(){return s("/user/my_departments/",null,"GET",!0)}function f(t){return s("/user/auth/login-code/",t).then((t=>{if(function(t){if(!t||"object"!=typeof t)return!1;const e=t,n=e.tokens;return Boolean(e.tokens&&"string"==typeof(null==n?void 0:n.access)&&"string"==typeof(null==n?void 0:n.refresh))}(t))return t;throw new Error("登录接口返回数据格式异常")}))}export{r as A,n as a,c as b,a as c,u as f,f as l,i as s};
import{C as t,D as e}from"./index-Bv1M0xYX.js";const n="/server/api";class r extends Error{constructor(t,e,n){super(t),this.name="ApiRequestError",this.code=e,this.statusCode=n}}function o(t=!1){const n={"Content-Type":"application/json"};if(!t)return n;const r=function(){try{return e("clinical-thinking-access-token")||""}catch{return""}}();return r&&(n.Authorization=`Bearer ${r}`),n}function s(e,n,s="POST",i=!1){return new Promise(((u,a)=>{t({url:`/server/api${e}`,method:s,timeout:1e4,header:o(i),data:n,success:t=>{if(t.statusCode>=200&&t.statusCode<300)return void u(t.data);const e=t.data,n="string"==typeof(null==e?void 0:e.code)?e.code:void 0;a(new r(function(t,e){if(t&&"object"==typeof t){const e=t,n=e.message||e.detail||e.error;if("string"==typeof n&&n.trim())return n}return e}(t.data,`请求失败(${t.statusCode}`),n,t.statusCode))},fail:t=>{a(new r(t.errMsg||"无法连接服务"))}})}))}function i(t,e="login"){return s("/user/auth/send-code/",{phone:t,scene:e})}function u(){return s("/user/institution_list/",null,"GET")}function a(){return s("/user/institution_info/",null,"GET",!0)}function c(){return s("/user/my_departments/",null,"GET",!0)}function f(t){return s("/user/auth/login-code/",t).then((t=>{if(function(t){if(!t||"object"!=typeof t)return!1;const e=t,n=e.tokens;return Boolean(e.tokens&&"string"==typeof(null==n?void 0:n.access)&&"string"==typeof(null==n?void 0:n.refresh))}(t))return t;throw new Error("登录接口返回数据格式异常")}))}export{r as A,n as a,c as b,a as c,u as f,f as l,i as s};
File diff suppressed because one or more lines are too long
+1
View File
@@ -0,0 +1 @@
import{D as e,s as t,P as n,C as r}from"./index-Bv1M0xYX.js";import{a as i,A as c}from"./auth.hegII4fT.js";const a={recommended:"/case/mobile/recommended/",specialty:"/case/mobile/specialty/",weak:"/case/mobile/weak/",teaching:"/case/mobile/teaching/","teacher-task":"/case/mobile/teacher-task/"},o=["blue","teal","pink","orange","purple","green"];async function s(e="recommended",t={}){const n=a[e]||a.recommended,s=await function(e,t){return new Promise(((n,a)=>{r({url:`${i}${y(e,t)}`,method:"GET",timeout:1e4,header:f(),success:e=>{if(e.statusCode>=200&&e.statusCode<300)return void n(e.data);const t=e.data,r="string"==typeof(null==t?void 0:t.code)?t.code:void 0;a(new c(function(e,t){if(e&&"object"==typeof e){const t=e,n=t.message||t.detail||t.error;if("string"==typeof n&&n.trim())return n}return t}(e.data,`病例列表加载失败(${e.statusCode}`),r,e.statusCode))},fail:e=>{a(new c(e.errMsg||"无法连接服务"))}})}))}(n,t),u=function(e,t){const n=Array.isArray(e.results)?e.results:[];return{count:b(e.count,n.length),next:"string"==typeof e.next?e.next:null,previous:"string"==typeof e.previous?e.previous:null,results:n.map(((e,n)=>function(e,t,n){const r=h(e.id,`case-${n+1}`),i=h(e.title,"未命名病例"),c=(p=e.patient_gender,"female"===p||"女"===p?"女":"男"),a=h(e.department_name,"未配置科室"),s=h(e.case_type),u=h(e.case_type_display,s||"练习病例"),l=h(e.chief_complaint,i),m="teaching"===t||"teaching"===s?"teaching":"training";var p;return{id:r,title:i,patientName:"女"===c?"患者女士":"患者先生",gender:c,age:b(e.patient_age,0),department:a,departmentId:_(e.department),scene:u,caseNo:r,tone:o[n%o.length],mode:m,caseType:s,caseTypeDisplay:u,difficulty:h(e.difficulty),difficultyScore:_(e.difficulty_score),chiefComplaint:l,description:h(e.description),tags:h(e.tags),competencyTags:Array.isArray(e.competency_tags)?e.competency_tags.map(String):[],estimatedMinutes:_(e.estimated_minutes),osceEnabled:Boolean(e.osce_enabled),myBestScore:"number"==typeof e.my_best_score?e.my_best_score:null,myTrainCount:"number"==typeof e.my_train_count?e.my_train_count:null,createdAt:h(e.created_at),source:t}}(e,t,n)))}}(s,e);return u}function u(e){t("clinical-thinking-prefetched-case-list",e)}function l(){n("clinical-thinking-prefetched-case-list")}function m(t,n){const r=e("clinical-thinking-prefetched-case-list");if(!function(e){if(!e||"object"!=typeof e)return!1;const t=e;return function(e){return"recommended"===e||"specialty"===e||"weak"===e||"teaching"===e||"teacher-task"===e}(t.source)&&"object"==typeof t.query&&null!==t.query&&!!t.page&&"object"==typeof t.page&&Array.isArray(t.page.results)&&"number"==typeof t.cachedAt}(r))return null;return Date.now()-r.cachedAt<=6e4?r.source===t&&(i=r.query,c=n,["search","case_type","difficulty","department","page","page_size"].every((e=>g(i[e])===g(c[e]))))?(l(),r.page):null:(l(),null);var i,c}function p(){const t=e("clinical-thinking-selected-case");return t&&"object"==typeof t?t:null}function d(e){if(!e)return 0;const t=Number(e.id);if(Number.isInteger(t)&&t>0)return t;const n=Number(e.caseNo);if(Number.isInteger(n)&&n>0)return n;const r=String(e.id).match(/\d+/),i=r?Number(r[0]):0;return Number.isInteger(i)&&i>0?i:0}function f(){const t={"Content-Type":"application/json",Accept:"application/json"},n=function(){try{const t=e("clinical-thinking-access-token");return"string"==typeof t?t.trim():""}catch{return""}}();return n&&(t.Authorization=`Bearer ${n}`),t}function y(e,t){const n=Object.entries(t).filter((([,e])=>null!=e&&""!==e)).map((([e,t])=>`${encodeURIComponent(e)}=${encodeURIComponent(String(t))}`)).join("&");return n?`${e}?${n}`:e}function g(e){return null==e||""===e?"":String(e)}function h(e,t=""){return"string"==typeof e?e.trim()||t:"number"==typeof e?String(e):t}function b(e,t=0){const n=Number(e);return Number.isFinite(n)?n:t}function _(e){const t=Number(e);return Number.isFinite(t)?t:void 0}export{d as a,l as c,s as f,p as r,u as s,m as t};
-1
View File
@@ -1 +0,0 @@
import{D as e,C as t}from"./index-DR4MYR5F.js";import{a as n,A as r}from"./auth.CseBt7py.js";const i={recommended:"/case/mobile/recommended/",specialty:"/case/mobile/specialty/",weak:"/case/mobile/weak/",teaching:"/case/mobile/teaching/","teacher-task":"/case/mobile/teacher-task/"},o=["blue","teal","pink","orange","purple","green"];async function c(e="recommended",c={}){const s=i[e]||i.recommended,a=await function(e,i){return new Promise(((o,c)=>{t({url:`${n}${m(e,i)}`,method:"GET",timeout:1e4,header:u(),success:e=>{if(e.statusCode>=200&&e.statusCode<300)return void o(e.data);const t=e.data,n="string"==typeof(null==t?void 0:t.code)?t.code:void 0;c(new r(function(e,t){if(e&&"object"==typeof e){const t=e,n=t.message||t.detail||t.error;if("string"==typeof n&&n.trim())return n}return t}(e.data,`病例列表加载失败(${e.statusCode}`),n,e.statusCode))},fail:e=>{c(new r(e.errMsg||"无法连接服务"))}})}))}(s,c),f=function(e,t){const n=Array.isArray(e.results)?e.results:[];return{count:l(e.count,n.length),next:"string"==typeof e.next?e.next:null,previous:"string"==typeof e.previous?e.previous:null,results:n.map(((e,n)=>function(e,t,n){const r=d(e.id,`case-${n+1}`),i=d(e.title,"未命名病例"),c=(y=e.patient_gender,"female"===y||"女"===y?"女":"男"),s=d(e.department_name,"未配置科室"),a=d(e.case_type),u=d(e.case_type_display,a||"练习病例"),m=d(e.chief_complaint,i),f="teaching"===t||"teaching"===a?"teaching":"training";var y;return{id:r,title:i,patientName:"女"===c?"患者女士":"患者先生",gender:c,age:l(e.patient_age,0),department:s,departmentId:p(e.department),scene:u,caseNo:r,tone:o[n%o.length],mode:f,caseType:a,caseTypeDisplay:u,difficulty:d(e.difficulty),difficultyScore:p(e.difficulty_score),chiefComplaint:m,description:d(e.description),tags:d(e.tags),competencyTags:Array.isArray(e.competency_tags)?e.competency_tags.map(String):[],estimatedMinutes:p(e.estimated_minutes),osceEnabled:Boolean(e.osce_enabled),myBestScore:"number"==typeof e.my_best_score?e.my_best_score:null,myTrainCount:"number"==typeof e.my_train_count?e.my_train_count:null,createdAt:d(e.created_at),source:t}}(e,t,n)))}}(a,e);return f}function s(){const t=e("clinical-thinking-selected-case");return t&&"object"==typeof t?t:null}function a(e){if(!e)return 0;const t=Number(e.id);if(Number.isInteger(t)&&t>0)return t;const n=Number(e.caseNo);if(Number.isInteger(n)&&n>0)return n;const r=String(e.id).match(/\d+/),i=r?Number(r[0]):0;return Number.isInteger(i)&&i>0?i:0}function u(){const t={"Content-Type":"application/json",Accept:"application/json"},n=function(){try{const t=e("clinical-thinking-access-token");return"string"==typeof t?t.trim():""}catch{return""}}();return n&&(t.Authorization=`Bearer ${n}`),t}function m(e,t){const n=Object.entries(t).filter((([,e])=>null!=e&&""!==e)).map((([e,t])=>`${encodeURIComponent(e)}=${encodeURIComponent(String(t))}`)).join("&");return n?`${e}?${n}`:e}function d(e,t=""){return"string"==typeof e?e.trim()||t:"number"==typeof e?String(e):t}function l(e,t=0){const n=Number(e);return Number.isFinite(n)?n:t}function p(e){const t=Number(e);return Number.isFinite(t)?t:void 0}export{a,c as f,s as r};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
import{G as o,q as n,P as e}from"./index-DR4MYR5F.js";function i(n){var i;const l=e(),r=Boolean(null==(i=null==l?void 0:l.vnode.props)?void 0:i.onOpenProfile);return function(){r?n("open-profile"):o({url:"/pages/profile/profile"})}}function l(n){var i;const l=e(),r=Boolean(null==(i=null==l?void 0:l.vnode.props)?void 0:i.onOpenSettings);return function(){r?n("open-settings"):o({url:"/pages/config/config"})}}function r(o){var i;const l=e(),r=Boolean(null==(i=null==l?void 0:l.vnode.props)?void 0:i.onGoHome);return function(){r?o("go-home"):n({url:"/pages/home/home"})}}export{l as a,r as b,i as c};
import{G as o,q as n,Q as e}from"./index-Bv1M0xYX.js";function i(n){var i;const l=e(),r=Boolean(null==(i=null==l?void 0:l.vnode.props)?void 0:i.onOpenProfile);return function(){r?n("open-profile"):o({url:"/pages/profile/profile"})}}function l(n){var i;const l=e(),r=Boolean(null==(i=null==l?void 0:l.vnode.props)?void 0:i.onOpenSettings);return function(){r?n("open-settings"):o({url:"/pages/config/config"})}}function r(o){var i;const l=e(),r=Boolean(null==(i=null==l?void 0:l.vnode.props)?void 0:i.onGoHome);return function(){r?o("go-home"):n({url:"/pages/home/home"})}}export{l as a,r as b,i as c};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
import{d as s,a,r as e,o as l,b as t,e as i,f as o,w as n,i as c,E as u,j as r,g as d,t as m,l as f,m as g,F as b,n as _,s as p,G as h,z as v,A as k,y,x as C}from"./index-DR4MYR5F.js";import{_ as j}from"./config-doctor.TgARj_nM.js";import{c as I,a as w}from"./navigation.DbARx0MO.js";import{_ as x}from"./_plugin-vue_export-helper.BCo6x5W8.js";const A=x(s({__name:"home",emits:["open-settings","open-profile"],setup(s,{emit:x}){const A=x,T=I(A),M=w(A),D=a({greeting:"下午好,医生。",highlight:"让我们继续提升您的临床思维能力吧。",remainingModules:3,doctorName:"王主任"}),E=[{title:"精准补强·薄弱环节训练",icon:"trend-icon",source:"weak"},{title:"实战进阶·科室专项训练",icon:"notes-icon",source:"specialty"},{title:"新手入门·教学互动模式训练",icon:"school-icon",source:"teaching"},{title:"精益管理·老师针对性任务训练",icon:"admin-icon",source:"teacher-task"}],F=e(!1),N=e(""),O=e(!1);let P=null;function S(){F.value||(F.value=!0,Promise.resolve({sessionId:`mock-session-${Date.now()}`,startedAt:(new Date).toISOString()}).then((s=>{p("clinical-thinking-session",s),h({url:"/pages/matching/matching?source=recommended"})})).catch((s=>{!function(s){P&&clearTimeout(P);N.value=s,O.value=!0,P=setTimeout((()=>{O.value=!1}),2200)}(s instanceof Error?s.message:"进入训练失败")})).finally((()=>{setTimeout((()=>{F.value=!1}),300)})))}function $(){h({url:"/pages/learning-assistant/learning-assistant"})}return l((function(){Promise.resolve({greeting:"下午好,医生。",highlight:"让我们继续提升您的临床思维能力吧。",remainingModules:3,doctorName:"王主任"}).then((s=>{Object.assign(D,s)}))})),t((()=>{P&&clearTimeout(P)})),(s,a)=>{const e=v,l=k,t=y,p=C;return i(),o(e,{class:"home-page"},{default:n((()=>[c(e,{class:"home-shell"},{default:n((()=>[c(e,{class:"top-bar"},{default:n((()=>[c(l,{class:"icon-button","aria-label":"配置",onClick:u(M)},{default:n((()=>[c(e,{class:"settings-icon"})])),_:1},8,["onClick"]),c(e,{class:"top-spacer"}),c(l,{class:"icon-button","aria-label":"个人中心",onClick:u(T)},{default:n((()=>[c(e,{class:"account-icon"})])),_:1},8,["onClick"])])),_:1}),c(e,{class:"home-main"},{default:n((()=>[c(e,{class:"speech-bubble"},{default:n((()=>[c(t,{class:"bubble-copy"},{default:n((()=>[r("下午好,医生。准备好开始今天的")])),_:1}),c(t,{class:"bubble-strong"},{default:n((()=>[r("带教模拟")])),_:1}),c(t,{class:"bubble-copy"},{default:n((()=>[r(",精进")])),_:1}),c(t,{class:"bubble-highlight"},{default:n((()=>[r("临床思维")])),_:1}),c(t,{class:"bubble-copy"},{default:n((()=>[r("了吗?")])),_:1})])),_:1}),c(e,{class:"doctor-stage"},{default:n((()=>[c(e,{class:"doctor-shadow"}),c(p,{class:"director-image",src:j,mode:"aspectFit"})])),_:1}),c(e,{class:"training-panel"},{default:n((()=>[c(e,{class:"primary-action"},{default:n((()=>[c(l,{class:"start-button",disabled:F.value,onClick:S},{default:n((()=>[F.value?(i(),o(e,{key:0,class:"spinner"})):d("",!0),c(t,null,{default:n((()=>[r(m(F.value?"正在进入...":"开始训练"),1)])),_:1})])),_:1},8,["disabled"]),c(t,{class:"remaining"},{default:n((()=>[r("今日剩余:"+m(D.remainingModules)+"个模块",1)])),_:1})])),_:1}),c(e,{class:"module-grid"},{default:n((()=>[(i(),f(b,null,g(E,(s=>c(l,{key:s.title,class:"module-card",onClick:a=>{return e=s.source,void h({url:`/pages/cases/cases?source=${encodeURIComponent(e)}`});var e}},{default:n((()=>[c(e,{class:_(["module-icon",s.icon])},null,8,["class"]),c(t,{class:"module-title"},{default:n((()=>[r(m(s.title),1)])),_:2},1024)])),_:2},1032,["onClick"]))),64))])),_:1}),c(e,{class:"assistant-actions"},{default:n((()=>[c(l,{class:"assistant-button",onClick:$},{default:n((()=>[c(e,{class:"assistant-icon chat-icon"}),c(t,null,{default:n((()=>[r("AI 学习助手(医院知识库)")])),_:1})])),_:1}),c(l,{class:"assistant-button disabled",disabled:"","aria-disabled":"true"},{default:n((()=>[c(e,{class:"assistant-icon forum-icon"}),c(t,null,{default:n((()=>[r("方老师AI教学助手沟通")])),_:1})])),_:1})])),_:1})])),_:1})])),_:1})])),_:1}),c(e,{class:_(["toast",{visible:O.value}])},{default:n((()=>[r(m(N.value),1)])),_:1},8,["class"])])),_:1})}}}),[["__scopeId","data-v-bc493b9b"]]);export{A as default};
import{d as s,a,r as e,o as l,b as t,e as i,f as o,w as n,i as c,E as u,j as r,g as d,t as m,l as f,m as g,F as b,n as _,s as p,G as h,z as v,A as k,y,x as C}from"./index-Bv1M0xYX.js";import{_ as j}from"./config-doctor.TgARj_nM.js";import{c as I,a as w}from"./navigation.BnvJqTtt.js";import{_ as x}from"./_plugin-vue_export-helper.BCo6x5W8.js";const A=x(s({__name:"home",emits:["open-settings","open-profile"],setup(s,{emit:x}){const A=x,T=I(A),M=w(A),D=a({greeting:"下午好,医生。",highlight:"让我们继续提升您的临床思维能力吧。",remainingModules:3,doctorName:"王主任"}),E=[{title:"精准补强·薄弱环节训练",icon:"trend-icon",source:"weak"},{title:"实战进阶·科室专项训练",icon:"notes-icon",source:"specialty"},{title:"新手入门·教学互动模式训练",icon:"school-icon",source:"teaching"},{title:"精益管理·老师针对性任务训练",icon:"admin-icon",source:"teacher-task"}],F=e(!1),N=e(""),O=e(!1);let P=null;function S(){F.value||(F.value=!0,Promise.resolve({sessionId:`mock-session-${Date.now()}`,startedAt:(new Date).toISOString()}).then((s=>{p("clinical-thinking-session",s),h({url:"/pages/matching/matching?source=recommended"})})).catch((s=>{!function(s){P&&clearTimeout(P);N.value=s,O.value=!0,P=setTimeout((()=>{O.value=!1}),2200)}(s instanceof Error?s.message:"进入训练失败")})).finally((()=>{setTimeout((()=>{F.value=!1}),300)})))}function $(){h({url:"/pages/learning-assistant/learning-assistant"})}return l((function(){Promise.resolve({greeting:"下午好,医生。",highlight:"让我们继续提升您的临床思维能力吧。",remainingModules:3,doctorName:"王主任"}).then((s=>{Object.assign(D,s)}))})),t((()=>{P&&clearTimeout(P)})),(s,a)=>{const e=v,l=k,t=y,p=C;return i(),o(e,{class:"home-page"},{default:n((()=>[c(e,{class:"home-shell"},{default:n((()=>[c(e,{class:"top-bar"},{default:n((()=>[c(l,{class:"icon-button","aria-label":"配置",onClick:u(M)},{default:n((()=>[c(e,{class:"settings-icon"})])),_:1},8,["onClick"]),c(e,{class:"top-spacer"}),c(l,{class:"icon-button","aria-label":"个人中心",onClick:u(T)},{default:n((()=>[c(e,{class:"account-icon"})])),_:1},8,["onClick"])])),_:1}),c(e,{class:"home-main"},{default:n((()=>[c(e,{class:"speech-bubble"},{default:n((()=>[c(t,{class:"bubble-copy"},{default:n((()=>[r("下午好,医生。准备好开始今天的")])),_:1}),c(t,{class:"bubble-strong"},{default:n((()=>[r("带教模拟")])),_:1}),c(t,{class:"bubble-copy"},{default:n((()=>[r(",精进")])),_:1}),c(t,{class:"bubble-highlight"},{default:n((()=>[r("临床思维")])),_:1}),c(t,{class:"bubble-copy"},{default:n((()=>[r("了吗?")])),_:1})])),_:1}),c(e,{class:"doctor-stage"},{default:n((()=>[c(e,{class:"doctor-shadow"}),c(p,{class:"director-image",src:j,mode:"aspectFit"})])),_:1}),c(e,{class:"training-panel"},{default:n((()=>[c(e,{class:"primary-action"},{default:n((()=>[c(l,{class:"start-button",disabled:F.value,onClick:S},{default:n((()=>[F.value?(i(),o(e,{key:0,class:"spinner"})):d("",!0),c(t,null,{default:n((()=>[r(m(F.value?"正在进入...":"开始训练"),1)])),_:1})])),_:1},8,["disabled"]),c(t,{class:"remaining"},{default:n((()=>[r("今日剩余:"+m(D.remainingModules)+"个模块",1)])),_:1})])),_:1}),c(e,{class:"module-grid"},{default:n((()=>[(i(),f(b,null,g(E,(s=>c(l,{key:s.title,class:"module-card",onClick:a=>{return e=s.source,void h({url:`/pages/cases/cases?source=${encodeURIComponent(e)}`});var e}},{default:n((()=>[c(e,{class:_(["module-icon",s.icon])},null,8,["class"]),c(t,{class:"module-title"},{default:n((()=>[r(m(s.title),1)])),_:2},1024)])),_:2},1032,["onClick"]))),64))])),_:1}),c(e,{class:"assistant-actions"},{default:n((()=>[c(l,{class:"assistant-button",onClick:$},{default:n((()=>[c(e,{class:"assistant-icon chat-icon"}),c(t,null,{default:n((()=>[r("AI 学习助手(医院知识库)")])),_:1})])),_:1}),c(l,{class:"assistant-button disabled",disabled:"","aria-disabled":"true"},{default:n((()=>[c(e,{class:"assistant-icon forum-icon"}),c(t,null,{default:n((()=>[r("方老师AI教学助手沟通")])),_:1})])),_:1})])),_:1})])),_:1})])),_:1})])),_:1}),c(e,{class:_(["toast",{visible:O.value}])},{default:n((()=>[r(m(N.value),1)])),_:1},8,["class"])])),_:1})}}}),[["__scopeId","data-v-bc493b9b"]]);export{A as default};
File diff suppressed because one or more lines are too long
-1
View File
@@ -1 +0,0 @@
import{d as a,a as s,r as e,o as l,b as t,e as r,f as n,w as o,i as c,l as i,m as u,F as d,j as g,t as p,H as m,p as f,z as _,y as v,x as b,n as h}from"./index-DR4MYR5F.js";import{_ as y}from"./config-doctor.TgARj_nM.js";import{o as x}from"./uni-app.es.CXV8m51O.js";import{_ as $}from"./_plugin-vue_export-helper.BCo6x5W8.js";const I=$(a({__name:"matching",setup(a){const $=s({message:"王主任正在为您智能匹配病例",subtitle:"正在通过大模型计算最适合您的临床案例库...",progressTarget:92,tags:[]}),I=e([]),j=e(0),w=e("recommended");let M=0,k=null,T=null;function D(){Promise.resolve({message:"王主任正在为您智能匹配病例",subtitle:"正在通过大模型计算最适合您的临床案例库...",progressTarget:92,tags:[{label:"薄弱环节",tone:"secondary"},{label:"主治医级别",tone:"primary"},{label:"高匹配度",tone:"tertiary"},{label:"基于历史偏好",tone:"neutral"}]}).then((a=>{Object.assign($,a),function(){T&&clearInterval(T);j.value=0;const a=Date.now();T=setInterval((()=>{const s=Date.now()-a,e=Math.min(1,s/1e4);if(j.value=Math.round($.progressTarget*e),e>=1)return T&&clearInterval(T),T=null,void f({url:`/pages/cases/cases?source=${encodeURIComponent(w.value)}`})}),100)}()}))}function F(){const a=M++,s=256*Math.random(),e=256*Math.random(),l=150*(Math.random()-.5),t=150*(Math.random()-.5),r=2+3*Math.random();I.value.push({id:a,style:{left:`${s}px`,top:`${e}px`,"--particle-x":`${l}px`,"--particle-y":`${t}px`,animationDuration:`${r}s`}}),setTimeout((()=>{I.value=I.value.filter((s=>s.id!==a))}),1e3*r)}return x((a=>{const s=null==a?void 0:a.source;var e;("recommended"===(e=s)||"specialty"===e||"weak"===e||"teaching"===e||"teacher-task"===e)&&(w.value=s)})),l((()=>{D(),function(){for(let a=0;a<12;a+=1)F();k=setInterval(F,300)}()})),t((()=>{k&&clearInterval(k),T&&clearInterval(T)})),(a,s)=>{const e=_,l=v,t=b;return r(),n(e,{class:"matching-page"},{default:o((()=>[c(e,{class:"matching-shell"},{default:o((()=>[c(e,{class:"top-visual"},{default:o((()=>[c(e,{class:"network"},{default:o((()=>[c(e,{class:"ring ring-large"}),c(e,{class:"ring ring-middle"}),c(e,{class:"ring ring-small"}),c(e,{class:"node node-top"}),c(e,{class:"node node-left"}),c(e,{class:"node node-right"}),(r(!0),i(d,null,u(I.value,(a=>(r(),n(e,{key:a.id,class:"particle",style:m(a.style)},null,8,["style"])))),128))])),_:1})])),_:1}),c(e,{class:"middle-visual"},{default:o((()=>[c(e,{class:"match-bubble"},{default:o((()=>[c(l,null,{default:o((()=>[g(p($.message),1)])),_:1}),c(l,{class:"typing-dots"}),c(e,{class:"bubble-tail"})])),_:1}),c(e,{class:"director-card"},{default:o((()=>[c(t,{class:"director-image",src:y,mode:"aspectFit"})])),_:1}),c(e,{class:"intelligence-area"},{default:o((()=>[c(e,{class:"scan-circle"},{default:o((()=>[c(e,{class:"pulse-ring ring-one"}),c(e,{class:"pulse-ring ring-two"}),c(e,{class:"brain-core"},{default:o((()=>[c(e,{class:"scan-bar"}),c(e,{class:"brain-icon"})])),_:1})])),_:1}),(r(!0),i(d,null,u($.tags,((a,s)=>(r(),n(e,{key:a.label,class:h(["float-tag",[`tag-${a.tone}`,`tag-pos-${s}`]])},{default:o((()=>[c(l,null,{default:o((()=>[g(p(a.label),1)])),_:2},1024)])),_:2},1032,["class"])))),128))])),_:1})])),_:1}),c(e,{class:"bottom-progress"},{default:o((()=>[c(e,{class:"progress-track"},{default:o((()=>[c(e,{class:"progress-fill",style:m({width:`${j.value}%`})},null,8,["style"])])),_:1}),c(l,{class:"progress-subtitle"},{default:o((()=>[g(p($.subtitle),1)])),_:1}),c(e,{class:"security-icon"})])),_:1})])),_:1})])),_:1})}}}),[["__scopeId","data-v-a0c3431a"]]);export{I as default};
+1
View File
@@ -0,0 +1 @@
import{d as a,a as e,r as s,o as l,b as t,e as n,f as r,w as o,i as c,l as i,m as u,F as d,j as m,t as g,H as p,p as f,z as h,y as v,x as _,n as b}from"./index-Bv1M0xYX.js";import{_ as y}from"./config-doctor.TgARj_nM.js";import{o as w}from"./uni-app.es.BI1XpkQ5.js";import{c as M,f as j,s as x}from"./cases.4sMDl7_O.js";import{_ as $}from"./_plugin-vue_export-helper.BCo6x5W8.js";import"./auth.hegII4fT.js";const I=$(a({__name:"matching",setup(a){const $=e({message:"王主任正在为您智能匹配病例",subtitle:"正在通过大模型计算最适合您的临床案例库...",progressTarget:92,tags:[]}),I=s([]),T=s(0),k=s("recommended");let D=0,z=null,F=null,P=null,q=!1,A=!1,C=!1,H=!1;const O={page:1,page_size:10};function R(){Promise.resolve({message:"王主任正在为您智能匹配病例",subtitle:"正在通过大模型计算最适合您的临床案例库...",progressTarget:92,tags:[{label:"薄弱环节",tone:"secondary"},{label:"主治医级别",tone:"primary"},{label:"高匹配度",tone:"tertiary"},{label:"基于历史偏好",tone:"neutral"}]}).then((a=>{Object.assign($,a)}))}function U(){const a=D++,e=256*Math.random(),s=256*Math.random(),l=150*(Math.random()-.5),t=150*(Math.random()-.5),n=2+3*Math.random();I.value.push({id:a,style:{left:`${e}px`,top:`${s}px`,"--particle-x":`${l}px`,"--particle-y":`${t}px`,animationDuration:`${n}s`}}),setTimeout((()=>{I.value=I.value.filter((e=>e.id!==a))}),1e3*n)}async function B(){var a;M(),q=!1,A=!1,C=!1,function(){F&&clearInterval(F),T.value=0;const a=Date.now();F=setInterval((()=>{const e=Date.now()-a,s=Math.min(1,e/3e3),l=e>3e3?Math.min(7,Math.floor((e-3e3)/1e3)):0;T.value=Math.min(99,Math.round($.progressTarget*s+l))}),100)}(),(a=3e3,new Promise((e=>{setTimeout(e,a)}))).then((()=>{q=!0,E()}));try{const a=await j(k.value,O);if(!H)return;x({source:k.value,query:O,page:a,cachedAt:Date.now()})}catch{}finally{A=!0,E()}}function E(){H&&!C&&q&&A&&(C=!0,T.value=100,F&&clearInterval(F),F=null,P=setTimeout((()=>{f({url:`/pages/cases/cases?source=${encodeURIComponent(k.value)}`})}),120))}return w((a=>{const e=null==a?void 0:a.source;var s;("recommended"===(s=e)||"specialty"===s||"weak"===s||"teaching"===s||"teacher-task"===s)&&(k.value=e)})),l((()=>{H=!0,R(),function(){for(let a=0;a<12;a+=1)U();z=setInterval(U,300)}(),B()})),t((()=>{H=!1,z&&clearInterval(z),F&&clearInterval(F),P&&clearTimeout(P)})),(a,e)=>{const s=h,l=v,t=_;return n(),r(s,{class:"matching-page"},{default:o((()=>[c(s,{class:"matching-shell"},{default:o((()=>[c(s,{class:"top-visual"},{default:o((()=>[c(s,{class:"network"},{default:o((()=>[c(s,{class:"ring ring-large"}),c(s,{class:"ring ring-middle"}),c(s,{class:"ring ring-small"}),c(s,{class:"node node-top"}),c(s,{class:"node node-left"}),c(s,{class:"node node-right"}),(n(!0),i(d,null,u(I.value,(a=>(n(),r(s,{key:a.id,class:"particle",style:p(a.style)},null,8,["style"])))),128))])),_:1})])),_:1}),c(s,{class:"middle-visual"},{default:o((()=>[c(s,{class:"match-bubble"},{default:o((()=>[c(l,null,{default:o((()=>[m(g($.message),1)])),_:1}),c(l,{class:"typing-dots"}),c(s,{class:"bubble-tail"})])),_:1}),c(s,{class:"director-card"},{default:o((()=>[c(t,{class:"director-image",src:y,mode:"aspectFit"})])),_:1}),c(s,{class:"intelligence-area"},{default:o((()=>[c(s,{class:"scan-circle"},{default:o((()=>[c(s,{class:"pulse-ring ring-one"}),c(s,{class:"pulse-ring ring-two"}),c(s,{class:"brain-core"},{default:o((()=>[c(s,{class:"scan-bar"}),c(s,{class:"brain-icon"})])),_:1})])),_:1}),(n(!0),i(d,null,u($.tags,((a,e)=>(n(),r(s,{key:a.label,class:b(["float-tag",[`tag-${a.tone}`,`tag-pos-${e}`]])},{default:o((()=>[c(l,null,{default:o((()=>[m(g(a.label),1)])),_:2},1024)])),_:2},1032,["class"])))),128))])),_:1})])),_:1}),c(s,{class:"bottom-progress"},{default:o((()=>[c(s,{class:"progress-track"},{default:o((()=>[c(s,{class:"progress-fill",style:p({width:`${T.value}%`})},null,8,["style"])])),_:1}),c(l,{class:"progress-subtitle"},{default:o((()=>[m(g($.subtitle),1)])),_:1}),c(s,{class:"security-icon"})])),_:1})])),_:1})])),_:1})}}}),[["__scopeId","data-v-c9c34e1f"]]);export{I as default};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
import{C as e,D as t}from"./index-DR4MYR5F.js";import{a as n,A as r}from"./auth.CseBt7py.js";function o(){return d("/user/profile/")}function i(e={}){return d("/user/training-records/",{search:e.search,page:e.page})}function c(){return d("/user/analysis/")}function s(){return d("/user/competency-metrics/")}async function a(e){const t=function(e){if(e&&"object"==typeof e&&"data"in e){const t=e;if(t.code&&"OK"!==t.code&&"ok"!==t.code)throw new r(t.message||"请求失败",t.code);if(void 0!==t.data)return t.data}return e}(await d(`/v1/evaluations/${encodeURIComponent(String(e))}`));return function(e,t){const n=g(e.case)?e.case:{},r=l(e.total_score??e.score??e.current_score,0);return{evaluation_id:l(e.evaluation_id??e.id??e.record_id,t),session_id:l(e.session_id,0),case_id:l(e.case_id??n.id,0),case_title:y(e.case_title??e.caseTitle??n.title,"未命名病例"),score_type:_(e.score_type),total_score:r,dimension_scores:f(e.dimension_scores??e.radar),score_details:p(e.score_details),overall_comment:y(e.overall_comment??e.comment,"本次评价暂无详细点评。"),pdf_file_path:v(e.pdf_file_path??e.pdfFilePath),created_at:v(e.created_at??e.trained_at)}}(t,e)}function d(t,o){return new Promise(((i,c)=>{e({url:`${n}${m(t,o)}`,method:"GET",timeout:1e4,header:u(),success:e=>{if(e.statusCode>=200&&e.statusCode<300)return void i(e.data);const t=e.data,n="string"==typeof(null==t?void 0:t.code)?t.code:void 0;c(new r(function(e,t){if(e&&"object"==typeof e){const t=e,n=t.message||t.detail||t.error;if("string"==typeof n&&n.trim())return n}return t}(e.data,`请求失败(${e.statusCode}`),n,e.statusCode))},fail:e=>{c(new r(e.errMsg||"无法连接服务"))}})}))}function u(){const e={"Content-Type":"application/json",Accept:"application/json"},n=function(){try{const e=t("clinical-thinking-access-token");return"string"==typeof e?e.trim():""}catch{return""}}();return n&&(e.Authorization=`Bearer ${n}`),e}function m(e,t){if(!t)return e;const n=Object.entries(t).filter((([,e])=>null!=e&&""!==e)).map((([e,t])=>`${encodeURIComponent(e)}=${encodeURIComponent(String(t))}`)).join("&");return n?`${e}?${n}`:e}function f(e){return Array.isArray(e)?e.map((e=>{const t=g(e)?e:{};return{dimension:y(t.dimension??t.label,"未命名维度"),score:l(t.score,0),max_score:l(t.max_score,100),comment:v(t.comment),evidence:Array.isArray(t.evidence)?t.evidence.map(String):void 0,deductions:Array.isArray(t.deductions)?t.deductions.map(String):void 0,improvement:v(t.improvement)}})):[]}function p(e){return Array.isArray(e)?e.map((e=>{const t=g(e)?e:{};return{dimension:y(t.dimension,"未命名维度"),score:l(t.score,0),deducted_reason:v(t.deducted_reason),ai_confidence:void 0===t.ai_confidence?void 0:l(t.ai_confidence,0),comment:v(t.comment)}})):[]}function _(e){return"five_point"===e?"five_point":"percentage"}function l(e,t=0){const n=Number(e);return Number.isFinite(n)?n:t}function y(e,t=""){return"string"==typeof e?e.trim()||t:"number"==typeof e?String(e):t}function v(e){return y(e)||void 0}function g(e){return Boolean(e&&"object"==typeof e&&!Array.isArray(e))}export{i as a,a as b,o as c,s as d,c as f};
import{C as e,D as t}from"./index-Bv1M0xYX.js";import{a as n,A as r}from"./auth.hegII4fT.js";function o(){return d("/user/profile/")}function i(e={}){return d("/user/training-records/",{search:e.search,page:e.page})}function c(){return d("/user/analysis/")}function s(){return d("/user/competency-metrics/")}async function a(e){const t=function(e){if(e&&"object"==typeof e&&"data"in e){const t=e;if(t.code&&"OK"!==t.code&&"ok"!==t.code)throw new r(t.message||"请求失败",t.code);if(void 0!==t.data)return t.data}return e}(await d(`/v1/evaluations/${encodeURIComponent(String(e))}`));return function(e,t){const n=g(e.case)?e.case:{},r=l(e.total_score??e.score??e.current_score,0);return{evaluation_id:l(e.evaluation_id??e.id??e.record_id,t),session_id:l(e.session_id,0),case_id:l(e.case_id??n.id,0),case_title:y(e.case_title??e.caseTitle??n.title,"未命名病例"),score_type:_(e.score_type),total_score:r,dimension_scores:f(e.dimension_scores??e.radar),score_details:p(e.score_details),overall_comment:y(e.overall_comment??e.comment,"本次评价暂无详细点评。"),pdf_file_path:v(e.pdf_file_path??e.pdfFilePath),created_at:v(e.created_at??e.trained_at)}}(t,e)}function d(t,o){return new Promise(((i,c)=>{e({url:`${n}${m(t,o)}`,method:"GET",timeout:1e4,header:u(),success:e=>{if(e.statusCode>=200&&e.statusCode<300)return void i(e.data);const t=e.data,n="string"==typeof(null==t?void 0:t.code)?t.code:void 0;c(new r(function(e,t){if(e&&"object"==typeof e){const t=e,n=t.message||t.detail||t.error;if("string"==typeof n&&n.trim())return n}return t}(e.data,`请求失败(${e.statusCode}`),n,e.statusCode))},fail:e=>{c(new r(e.errMsg||"无法连接服务"))}})}))}function u(){const e={"Content-Type":"application/json",Accept:"application/json"},n=function(){try{const e=t("clinical-thinking-access-token");return"string"==typeof e?e.trim():""}catch{return""}}();return n&&(e.Authorization=`Bearer ${n}`),e}function m(e,t){if(!t)return e;const n=Object.entries(t).filter((([,e])=>null!=e&&""!==e)).map((([e,t])=>`${encodeURIComponent(e)}=${encodeURIComponent(String(t))}`)).join("&");return n?`${e}?${n}`:e}function f(e){return Array.isArray(e)?e.map((e=>{const t=g(e)?e:{};return{dimension:y(t.dimension??t.label,"未命名维度"),score:l(t.score,0),max_score:l(t.max_score,100),comment:v(t.comment),evidence:Array.isArray(t.evidence)?t.evidence.map(String):void 0,deductions:Array.isArray(t.deductions)?t.deductions.map(String):void 0,improvement:v(t.improvement)}})):[]}function p(e){return Array.isArray(e)?e.map((e=>{const t=g(e)?e:{};return{dimension:y(t.dimension,"未命名维度"),score:l(t.score,0),deducted_reason:v(t.deducted_reason),ai_confidence:void 0===t.ai_confidence?void 0:l(t.ai_confidence,0),comment:v(t.comment)}})):[]}function _(e){return"five_point"===e?"five_point":"percentage"}function l(e,t=0){const n=Number(e);return Number.isFinite(n)?n:t}function y(e,t=""){return"string"==typeof e?e.trim()||t:"number"==typeof e?String(e):t}function v(e){return y(e)||void 0}function g(e){return Boolean(e&&"object"==typeof e&&!Array.isArray(e))}export{i as a,a as b,o as c,s as d,c as f};
@@ -1 +1 @@
import{D as e,s as t}from"./index-DR4MYR5F.js";const n="/fastapi/api/v1";function s(){const t=e("clinical-thinking-access-token");if("string"!=typeof t||!t.trim())throw new Error("登录已过期,请重新登录");return t}function o(e="application/json"){return{"Content-Type":"application/json",Accept:e,Authorization:`Bearer ${s()}`,"X-Entry-Scene":"vue_frontend"}}async function a(e){const t=await e.text().catch((()=>""));if(!t)return`请求失败(${e.status}`;try{const e=JSON.parse(t),n=e.message||e.detail||e.error;if("string"==typeof n&&n.trim())return n}catch{}return t}function r(){const t=e("clinical-thinking-scenario");return t&&"object"==typeof t?t:null}function i(){var e,t;const n=null==(t=null==(e=r())?void 0:e.session)?void 0:t.session_id;if("number"==typeof n&&Number.isInteger(n)&&n>0)return n;throw new Error("未找到当前会话,请先生成模拟场景")}function c(e){const n=r();(null==n?void 0:n.session)&&t("clinical-thinking-scenario",{...n,session:{...n.session,status:e}})}async function f(e){var t;const n=await fetch("/fastapi/api/v1/sessions",{method:"POST",headers:o(),body:JSON.stringify(e)});if(!n.ok)throw new Error(await a(n));const s=await n.json();if("OK"!==s.code||!(null==(t=s.data)?void 0:t.session_id))throw new Error(s.message||"新建会话失败");return s.data}async function d(e){var t;const n=await fetch(`/fastapi/api/v1/sessions/${e}/complete-inquiry`,{method:"POST",headers:o()});if(!n.ok)throw new Error(await a(n));const s=await n.json();if("OK"!==s.code||!(null==(t=s.data)?void 0:t.session_id))throw new Error(s.message||"完成采集失败");return s.data}async function l(e,t,n,s){var r,i,c;const f=await fetch(`/fastapi/api/v1/sessions/${e}/chat/stream`,{method:"POST",headers:o("text/event-stream"),body:JSON.stringify({message:t}),signal:s});if(!f.ok||!f.body)throw new Error(await a(f));const d=f.body.getReader(),l=new TextDecoder;let u="",w=!1;for(;;){const{value:e,done:t}=await d.read();if(t)break;u+=l.decode(e,{stream:!0});const s=u.split("\n\n");u=s.pop()||"";for(const o of s){const e=null==(r=o.match(/^event:\s*(.+)$/m))?void 0:r[1],t=null==(i=o.match(/^data:\s*(.+)$/m))?void 0:i[1];if(!e||!t)continue;const s=JSON.parse(t);if("message_delta"===e){const e=s.delta;"string"==typeof e&&n.onDelta(e)}else if("message_done"===e)w=!0,null==(c=n.onDone)||c.call(n,s);else if("error"===e)throw new Error("string"==typeof s.message?s.message:"AI 流式回复异常")}}if(!w)throw new Error("AI 流式回复未正常结束,请重试")}async function u(e,t,n,s){var r,i,c;const f={last_user_message:t,scope:"current_conversation"},d=await fetch(`/fastapi/api/v1/sessions/${e}/hints/stream`,{method:"POST",headers:o("text/event-stream"),body:JSON.stringify(f),signal:s});if(!d.ok||!d.body)throw new Error(await a(d));const l=d.body.getReader(),u=new TextDecoder;let w="",h=!1;for(;;){const{value:e,done:t}=await l.read();if(t)break;w+=u.decode(e,{stream:!0});const s=w.split("\n\n");w=s.pop()||"";for(const o of s){const e=null==(r=o.match(/^event:\s*(.+)$/m))?void 0:r[1],t=null==(i=o.match(/^data:\s*(.+)$/m))?void 0:i[1];if(!e||!t)continue;const s=JSON.parse(t);if("hint_delta"===e){const e=s.delta;"string"==typeof e&&n.onDelta(e)}else if("hint_done"===e)h=!0,null==(c=n.onDone)||c.call(n,s);else if("error"===e)throw new Error("string"==typeof s.message?s.message:"练习提示生成失败,请稍后重试")}}if(!h)throw new Error("练习提示未正常结束,请重试")}export{n as F,o as a,r as b,f as c,d,u as e,i as f,a as r,l as s,c as u};
import{D as e,s as t}from"./index-Bv1M0xYX.js";const n="/fastapi/api/v1";function s(){const t=e("clinical-thinking-access-token");if("string"!=typeof t||!t.trim())throw new Error("登录已过期,请重新登录");return t}function o(e="application/json"){return{"Content-Type":"application/json",Accept:e,Authorization:`Bearer ${s()}`,"X-Entry-Scene":"vue_frontend"}}async function a(e){const t=await e.text().catch((()=>""));if(!t)return`请求失败(${e.status}`;try{const e=JSON.parse(t),n=e.message||e.detail||e.error;if("string"==typeof n&&n.trim())return n}catch{}return t}function r(){const t=e("clinical-thinking-scenario");return t&&"object"==typeof t?t:null}function i(){var e,t;const n=null==(t=null==(e=r())?void 0:e.session)?void 0:t.session_id;if("number"==typeof n&&Number.isInteger(n)&&n>0)return n;throw new Error("未找到当前会话,请先生成模拟场景")}function c(e){const n=r();(null==n?void 0:n.session)&&t("clinical-thinking-scenario",{...n,session:{...n.session,status:e}})}async function f(e){var t;const n=await fetch("/fastapi/api/v1/sessions",{method:"POST",headers:o(),body:JSON.stringify(e)});if(!n.ok)throw new Error(await a(n));const s=await n.json();if("OK"!==s.code||!(null==(t=s.data)?void 0:t.session_id))throw new Error(s.message||"新建会话失败");return s.data}async function d(e){var t;const n=await fetch(`/fastapi/api/v1/sessions/${e}/complete-inquiry`,{method:"POST",headers:o()});if(!n.ok)throw new Error(await a(n));const s=await n.json();if("OK"!==s.code||!(null==(t=s.data)?void 0:t.session_id))throw new Error(s.message||"完成采集失败");return s.data}async function l(e,t,n,s){var r,i,c;const f=await fetch(`/fastapi/api/v1/sessions/${e}/chat/stream`,{method:"POST",headers:o("text/event-stream"),body:JSON.stringify({message:t}),signal:s});if(!f.ok||!f.body)throw new Error(await a(f));const d=f.body.getReader(),l=new TextDecoder;let u="",w=!1;for(;;){const{value:e,done:t}=await d.read();if(t)break;u+=l.decode(e,{stream:!0});const s=u.split("\n\n");u=s.pop()||"";for(const o of s){const e=null==(r=o.match(/^event:\s*(.+)$/m))?void 0:r[1],t=null==(i=o.match(/^data:\s*(.+)$/m))?void 0:i[1];if(!e||!t)continue;const s=JSON.parse(t);if("message_delta"===e){const e=s.delta;"string"==typeof e&&n.onDelta(e)}else if("message_done"===e)w=!0,null==(c=n.onDone)||c.call(n,s);else if("error"===e)throw new Error("string"==typeof s.message?s.message:"AI 流式回复异常")}}if(!w)throw new Error("AI 流式回复未正常结束,请重试")}async function u(e,t,n,s){var r,i,c;const f={last_user_message:t,scope:"current_conversation"},d=await fetch(`/fastapi/api/v1/sessions/${e}/hints/stream`,{method:"POST",headers:o("text/event-stream"),body:JSON.stringify(f),signal:s});if(!d.ok||!d.body)throw new Error(await a(d));const l=d.body.getReader(),u=new TextDecoder;let w="",h=!1;for(;;){const{value:e,done:t}=await l.read();if(t)break;w+=u.decode(e,{stream:!0});const s=w.split("\n\n");w=s.pop()||"";for(const o of s){const e=null==(r=o.match(/^event:\s*(.+)$/m))?void 0:r[1],t=null==(i=o.match(/^data:\s*(.+)$/m))?void 0:i[1];if(!e||!t)continue;const s=JSON.parse(t);if("hint_delta"===e){const e=s.delta;"string"==typeof e&&n.onDelta(e)}else if("hint_done"===e)h=!0,null==(c=n.onDone)||c.call(n,s);else if("error"===e)throw new Error("string"==typeof s.message?s.message:"练习提示生成失败,请稍后重试")}}if(!h)throw new Error("练习提示未正常结束,请重试")}export{n as F,o as a,r as b,f as c,d,u as e,i as f,a as r,l as s,c as u};
+1
View File
@@ -0,0 +1 @@
import{T as s,U as a,Q as o,V as r}from"./index-Bv1M0xYX.js";const t=((r,t=0)=>(t,e=o())=>{!s&&a(r,t,e)})(r,2);export{t as o};
-1
View File
@@ -1 +0,0 @@
import{R as s,T as a,P as o,U as r}from"./index-DR4MYR5F.js";const t=((r,t=0)=>(t,e=o())=>{!s&&a(r,t,e)})(r,2);export{t as o};
+1 -1
View File
@@ -14,7 +14,7 @@
<title>AI思维临床训练</title>
<!--preload-links-->
<!--app-context-->
<script type="module" crossorigin src="./assets/index-DR4MYR5F.js"></script>
<script type="module" crossorigin src="./assets/index-Bv1M0xYX.js"></script>
<link rel="stylesheet" crossorigin href="./assets/index-C7PPi8dw.css">
</head>
<body>