st-comp 0.0.261 → 0.0.263

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,5 @@
1
- "use strict";const C=require("./base-ef747d02.cjs"),R=require("./el-dialog-1b185570.cjs");require("./el-overlay-ea65cb05.cjs");const K=require("./el-button-974ff9e9.cjs"),U=require("./el-input-fa18ef84.cjs"),e=require("vue"),M=require("./dayjs.min-2c20abe6.cjs"),W=require("./index-8901a38c.cjs"),D=require("./index-33f80550.cjs"),X=require("./_plugin-vue_export-helper-f246444f.cjs"),P=require("./index-6ca95c8a.cjs"),A=require("./use-form-common-props-d3ed62c6.cjs");require("./index-28e03bad.cjs");require("./index-9780a537.cjs");require("./index-bb833443.cjs");require("./index-f1c702f6.cjs");require("./vnode-b906ae6d.cjs");require("./scroll-b108dabd.cjs");require("./use-global-config-c80f33a4.cjs");require("./index-37b8d3c6.cjs");require("./index-eea0bcb3.cjs");require("./typescript-b63f8e83.cjs");require("./index-7dce9f59.cjs");require("./config-provider-2ae47cc8.cjs");const G=C.buildProps({size:{type:[Number,String],values:A.componentSizes,default:"",validator:c=>C.isNumber(c)},shape:{type:String,values:["circle","square"],default:"circle"},icon:{type:A.iconPropType},src:{type:String,default:""},alt:String,srcSet:String,fit:{type:C.definePropType(String),default:"cover"}}),Q={error:c=>c instanceof Event},Z=e.defineComponent({name:"ElAvatar"}),ee=e.defineComponent({...Z,props:G,emits:Q,setup(c,{emit:N}){const k=c,r=C.useNamespace("avatar"),v=e.ref(!1),l=e.computed(()=>{const{size:n,icon:b,shape:E}=k,a=[r.b()];return C.isString(n)&&a.push(r.m(n)),b&&a.push(r.m("icon")),E&&a.push(r.m(E)),a}),y=e.computed(()=>{const{size:n}=k;return C.isNumber(n)?r.cssVarBlock({size:C.addUnit(n)||""}):void 0}),m=e.computed(()=>({objectFit:k.fit}));e.watch(()=>k.src,()=>v.value=!1);function d(n){v.value=!0,N("error",n)}return(n,b)=>(e.openBlock(),e.createElementBlock("span",{class:e.normalizeClass(e.unref(l)),style:e.normalizeStyle(e.unref(y))},[(n.src||n.srcSet)&&!v.value?(e.openBlock(),e.createElementBlock("img",{key:0,src:n.src,alt:n.alt,srcset:n.srcSet,style:e.normalizeStyle(e.unref(m)),onError:d},null,44,["src","alt","srcset"])):n.icon?(e.openBlock(),e.createBlock(e.unref(D.ElIcon),{key:1},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.icon)))]),_:1})):e.renderSlot(n.$slots,"default",{key:2})],6))}});var te=C._export_sfc(ee,[["__file","avatar.vue"]]);const se=C.withInstall(te);const ae=async({appId:c,apiKey:N,value:k,callback:r})=>{var v;try{const l=await fetch(`https://dashscope.aliyuncs.com/api/v1/apps/${c}/completion`,{method:"POST",body:JSON.stringify({input:{prompt:k},parameters:{incremental_output:"true"},debug:{}}),headers:{Authorization:`Bearer ${N}`,"Content-Type":"application/json","X-DashScope-SSE":"enable"}});if(!l.ok){r("error",`HTTP ${l.status}: ${l.statusText}`);return}const y=l.body.getReader(),m=new TextDecoder;let d="",n=null;for(;;){const{done:b,value:E}=await y.read();if(b){d.trim()&&ne(d,r),r("finish","");break}d+=m.decode(E,{stream:!0});let a;for(;(a=d.indexOf(`
2
- `))!==-1;){const h=d.substring(0,a).trim();if(d=d.substring(a+1),h.startsWith("event:")){n=h.substring(6).trim();continue}if(h.startsWith("data:")){const _=h.substring(5).trim();if(n==="error"||_&&_.startsWith("{"))try{const p=JSON.parse(_);if(p.code||p.message||n==="error"){const F=p.message||p.code||"未知错误";r("error",`百炼服务端错误: ${F}`);return}const x=(v=p==null?void 0:p.output)==null?void 0:v.text;x&&r&&r("message",x)}catch{console.debug("JSON 解析失败:",_)}n=null}}}}catch(l){console.error("流式请求失败:",l),r("error",l.message)}},ne=(c,N)=>{var v;const k=c.split(`
3
- `);let r=null;for(const l of k){if(l.startsWith("event:")){r=l.substring(6).trim();continue}if(l.startsWith("data:")){const y=l.substring(5).trim();if(y&&y!=="[DONE]")try{const m=JSON.parse(y);if(r==="error"||m.code||m.message){const n=m.message||m.code||"未知错误";N("error",`百炼服务端错误: ${n}`);return}const d=(v=m==null?void 0:m.output)==null?void 0:v.text;d&&N&&N("message",d)}catch{}r=null}}};const w=c=>(e.pushScopeId("data-v-536916ba"),c=c(),e.popScopeId(),c),oe={class:"ai-dialog-body"},re={class:"avatar"},ie={class:"message-content"},le=["innerHTML"],ce={key:1,class:"message-text"},ue={class:"message-createTime"},de=w(()=>e.createElementVNode("div",{class:"message-createTime"},"请问对本轮查询结果是否满意?",-1)),me={class:"feedback-buttons"},pe=["onClick"],fe=w(()=>e.createElementVNode("span",{class:"btn-emoji"},"👍",-1)),ve=w(()=>e.createElementVNode("span",{class:"btn-text"},"满意",-1)),ge=[fe,ve],he=["onClick"],_e=w(()=>e.createElementVNode("span",{class:"btn-emoji"},"👎",-1)),ke=w(()=>e.createElementVNode("span",{class:"btn-text"},"不满意",-1)),ye=[_e,ke],be={key:1,class:"message-createTime"},Te={key:0,class:"message-item assistant"},Ne={class:"avatar"},Ee=w(()=>e.createElementVNode("div",{class:"message-content"},[e.createElementVNode("div",{class:"typing-indicator"},[e.createElementVNode("span"),e.createElementVNode("span"),e.createElementVNode("span")])],-1)),Ve={class:"input-area"},Ce={class:"input-actions"},we=w(()=>e.createElementVNode("div",{class:"input-hint"},[e.createElementVNode("span",null,"Enter 发送 | Ctrl + Enter 换行")],-1)),Se={class:"feedback-dialog-content"},Be=w(()=>e.createElementVNode("div",{class:"feedback-emoji"},"😟",-1)),qe=w(()=>e.createElementVNode("p",{class:"feedback-tip"},"很抱歉没能帮到您,请告诉我们哪里需要改进:",-1)),xe={class:"dialog-footer"},Me={__name:"index",props:{defaultMessage:{type:String,default:`你好呀!我是你的品种池AI助手,会根据您的自然语言去进行品种的条件查询
1
+ "use strict";const f=require("./base-ef747d02.cjs"),R=require("./el-dialog-1b185570.cjs");require("./el-overlay-ea65cb05.cjs");const U=require("./el-button-974ff9e9.cjs"),K=require("./el-input-fa18ef84.cjs"),e=require("vue"),w=require("./dayjs.min-2c20abe6.cjs"),G=require("./index-8901a38c.cjs"),Q=require("./aiTools-2e1f92d2.cjs"),S=require("./index-33f80550.cjs"),W=require("./_plugin-vue_export-helper-f246444f.cjs"),M=require("./index-6ca95c8a.cjs"),z=require("./use-form-common-props-d3ed62c6.cjs");require("./index-28e03bad.cjs");require("./index-9780a537.cjs");require("./index-bb833443.cjs");require("./index-f1c702f6.cjs");require("./vnode-b906ae6d.cjs");require("./scroll-b108dabd.cjs");require("./use-global-config-c80f33a4.cjs");require("./index-37b8d3c6.cjs");require("./index-eea0bcb3.cjs");require("./typescript-b63f8e83.cjs");require("./index-7dce9f59.cjs");require("./config-provider-2ae47cc8.cjs");const X=f.buildProps({size:{type:[Number,String],values:z.componentSizes,default:"",validator:c=>f.isNumber(c)},shape:{type:String,values:["circle","square"],default:"circle"},icon:{type:z.iconPropType},src:{type:String,default:""},alt:String,srcSet:String,fit:{type:f.definePropType(String),default:"cover"}}),Z={error:c=>c instanceof Event},ee=e.defineComponent({name:"ElAvatar"}),te=e.defineComponent({...ee,props:X,emits:Z,setup(c,{emit:D}){const T=c,d=f.useNamespace("avatar"),k=e.ref(!1),E=e.computed(()=>{const{size:o,icon:g,shape:_}=T,n=[d.b()];return f.isString(o)&&n.push(d.m(o)),g&&n.push(d.m("icon")),_&&n.push(d.m(_)),n}),B=e.computed(()=>{const{size:o}=T;return f.isNumber(o)?d.cssVarBlock({size:f.addUnit(o)||""}):void 0}),F=e.computed(()=>({objectFit:T.fit}));e.watch(()=>T.src,()=>k.value=!1);function q(o){k.value=!0,D("error",o)}return(o,g)=>(e.openBlock(),e.createElementBlock("span",{class:e.normalizeClass(e.unref(E)),style:e.normalizeStyle(e.unref(B))},[(o.src||o.srcSet)&&!k.value?(e.openBlock(),e.createElementBlock("img",{key:0,src:o.src,alt:o.alt,srcset:o.srcSet,style:e.normalizeStyle(e.unref(F)),onError:q},null,44,["src","alt","srcset"])):o.icon?(e.openBlock(),e.createBlock(e.unref(S.ElIcon),{key:1},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(o.icon)))]),_:1})):e.renderSlot(o.$slots,"default",{key:2})],6))}});var ae=f._export_sfc(te,[["__file","avatar.vue"]]);const se=f.withInstall(ae);const v=c=>(e.pushScopeId("data-v-536916ba"),c=c(),e.popScopeId(),c),ne={class:"ai-dialog-body"},oe={class:"avatar"},re={class:"message-content"},le=["innerHTML"],ie={key:1,class:"message-text"},ce={class:"message-createTime"},ue=v(()=>e.createElementVNode("div",{class:"message-createTime"},"请问对本轮查询结果是否满意?",-1)),de={class:"feedback-buttons"},me=["onClick"],pe=v(()=>e.createElementVNode("span",{class:"btn-emoji"},"👍",-1)),fe=v(()=>e.createElementVNode("span",{class:"btn-text"},"满意",-1)),ve=[pe,fe],ge=["onClick"],ke=v(()=>e.createElementVNode("span",{class:"btn-emoji"},"👎",-1)),_e=v(()=>e.createElementVNode("span",{class:"btn-text"},"不满意",-1)),he=[ke,_e],ye={key:1,class:"message-createTime"},be={key:0,class:"message-item assistant"},Te={class:"avatar"},Ve=v(()=>e.createElementVNode("div",{class:"message-content"},[e.createElementVNode("div",{class:"typing-indicator"},[e.createElementVNode("span"),e.createElementVNode("span"),e.createElementVNode("span")])],-1)),Ne={class:"input-area"},Ee={class:"input-actions"},Ce=v(()=>e.createElementVNode("div",{class:"input-hint"},[e.createElementVNode("span",null,"Enter 发送 | Ctrl + Enter 换行")],-1)),we={class:"feedback-dialog-content"},Se=v(()=>e.createElementVNode("div",{class:"feedback-emoji"},"😟",-1)),Be=v(()=>e.createElementVNode("p",{class:"feedback-tip"},"很抱歉没能帮到您,请告诉我们哪里需要改进:",-1)),qe={class:"dialog-footer"},Me={__name:"index",props:{defaultMessage:{type:String,default:`你好呀!我是你的品种池AI助手,会根据您的自然语言去进行品种的条件查询
4
2
 
5
3
  示例:
6
- 帮我查A股科创板下品种转价差上证50并且总市值大于1千万, 最近一次红箱的开盘价大于前5根K线的最高价, 并按照总市值升序进行排序`}},emits:["callBack"],setup(c,{expose:N,emit:k}){const r=e.inject("stConfig"),v=e.reactive(W.V()),l=e.ref(!1),y=k,m=c,d=e.ref(),n=e.ref(!1),b=e.ref(!1),E=e.ref(null),a=e.ref([{role:"assistant",content:m.defaultMessage,userContent:null,showFeedback:!1,hasFeedback:!1,createTime:M.dayjs().format("YYYY-MM-DD HH:mm:ss"),resTime:0,firstPackageTime:0}]),h=e.ref(""),_=e.ref(!1),p=e.ref(""),x=e.ref({}),F=o=>{if(typeof o!="string")return!1;try{const t=JSON.parse(o);return t!==null&&typeof t=="object"}catch{return!1}},O=o=>{if(!F(o))return null;try{const t=JSON.parse(o),{parsedConditions:s,...i}=t;return{parsedConditions:s,webParams:i}}catch{return null}},z=o=>{var s;if(!o)return"";let t="";return(s=o.parsedConditions)!=null&&s.length&&(t+='<div class="parsed-conditions">',o.parsedConditions.forEach(i=>{t+=`<div class="parsed-conditions-item">${i}</div>`}),t+="</div>"),t},B=async(o,t)=>{switch(o){case"satisfied":{const s=a.value[t],i={userName:v.username,userContent:s.userContent,aiContent:s.content,type:1,createTime:s.createTime,resTime:s.resTime,firstPackageTime:s.firstPackageTime,isSolved:1,logOrigin:1};await r.request.post("/alarm/deliversign/addVarietyAiHelperLog",i),P.ElMessage.success("感谢您的评价!"),a.value[t].hasFeedback=!0;break}case"open":{x.value=t,_.value=!0;break}case"unsatisfied":{const s=a.value[t],i={userName:v.username,userContent:s.userContent,userSuggestion:p.value,aiContent:s.content,type:2,resTime:s.resTime,createTime:s.createTime,firstPackageTime:s.firstPackageTime,isSolved:0,logOrigin:1};await r.request.post("/alarm/deliversign/addVarietyAiHelperLog",i),P.ElMessage.success("感谢您的反馈!我们将持续跟踪并进行优化"),_.value=!1,a.value[t].hasFeedback=!0;break}case"default":{const s=a.value[t],i={userName:v.username,userContent:s.userContent,userSuggestion:p.value,aiContent:s.content,type:null,resTime:s.resTime,createTime:s.createTime,firstPackageTime:s.firstPackageTime,isSolved:1,logOrigin:1};await r.request.post("/alarm/deliversign/addVarietyAiHelperLog",i)}}},H=async()=>{const o=h.value.trim();if(!o)return P.ElMessage.warning("请输入消息内容");if(n.value)return;a.value.push({role:"user",content:o,createTime:M.dayjs().format("YYYY-MM-DD HH:mm:ss")}),h.value="",await S(),a.value.push({role:"assistant",content:"",userContent:o,showFeedback:!1,hasFeedback:!1,createTime:M.dayjs().format("YYYY-MM-DD HH:mm:ss"),resTime:0,firstPackageTime:0}),await S(),n.value=!0,b.value=!0;let t="",s=new Date().getTime();try{await ae({appId:"9e54d112acfe4531bd1fc4fee8827fef",apiKey:"sk-d995eb26a4334bdeb2ccb4cbfaf51de8",value:o,callback:(V,g)=>{var u;if(V==="error"){b.value=!1,n.value=!1,a.value.pop(),a.value.push({role:"assistant",userContent:o,content:`❌ ${g}`,showFeedback:!1,hasFeedback:!1,createTime:M.dayjs().format("YYYY-MM-DD HH:mm:ss"),resTime:new Date().getTime()-s,firstPackageTime:0}),B("default",a.value.length-1),S();return}else if(V==="message"){t+=g;const f=a.value[a.value.length-1];f&&f.role==="assistant"&&(f.content=t,S()),f.firstPackageTime===0&&(f.firstPackageTime=new Date().getTime()-s)}else if(V==="finish"){b.value=!1,n.value=!1;const f=a.value[a.value.length-1];f&&f.role==="assistant"&&(f.showFeedback=!0,f.resTime=new Date().getTime()-s,B("default",a.value.length-1)),console.log(t);try{const T=JSON.parse(t);if(T.parsedConditions&&delete T.parsedConditions,(u=T.customTagNames)!=null&&u.length){const L=T.customTagNames.reduce((Y,J)=>{const $=d.value[J];return $&&Y.push($),Y},[]);delete T.customTagNames,T.customTag=L}y("callBack",T)}catch{y("callBack",t)}}}})}catch(i){P.ElMessage.error(`AI响应异常: ${i}`),a.value.pop(),a.value.push({role:"assistant",userContent:o,content:"❌ 抱歉,AI服务响应异常,请稍后重试。",showFeedback:!0,hasFeedback:!1,createTime:M.dayjs().format("YYYY-MM-DD HH:mm:ss"),resTime:new Date().getTime()-s,firstPackageTime:0}),B("default",a.value.length-1),await S(),n.value=!1,b.value=!1}},j=o=>{if(o.key==="Enter")if(o.ctrlKey){o.preventDefault();const t=o.target,s=t.selectionStart,i=t.selectionEnd;h.value=h.value.substring(0,s)+`
7
- `+h.value.substring(i),e.nextTick(()=>{t.selectionStart=t.selectionEnd=s+1})}else o.preventDefault(),H()},S=async()=>{await e.nextTick(),E.value&&(E.value.scrollTop=E.value.scrollHeight)},I=async()=>{const o=await Promise.all([r.request.post("/alarm/deliversign/findTagsByUserId"),r.request.post("/alarm/deliversign/findSystemTagsByTagName")]);d.value=o.reduce((t,s)=>{var i;return{...t,...(i=s.body)==null?void 0:i.reduce((q,V)=>({...q,[V.tagName]:V.id}),{})}},{})};return e.onMounted(()=>{I()}),e.watch(()=>a.value,()=>{S()},{deep:!0}),e.watch(()=>_.value,o=>{o||(p.value="")}),N({open:()=>{l.value=!0,e.nextTick(()=>{S()})}}),(o,t)=>{const s=se,i=U.ElInput,q=K.ElButton,V=R.ElDialog;return e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createVNode(V,{class:"ai-dialog",modelValue:l.value,"onUpdate:modelValue":t[1]||(t[1]=g=>l.value=g),title:"✨ 品种池参数解析AI助手",width:"500px",center:"",draggable:"",overflow:"",modal:!1,"modal-penetrable":!0},{default:e.withCtx(()=>{var g;return[e.createElementVNode("div",oe,[e.createElementVNode("div",{ref_key:"messageListRef",ref:E,class:"message-list"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,(u,f)=>(e.openBlock(),e.createElementBlock("div",{key:f,class:e.normalizeClass([u.role,"message-item"])},[u.content?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("div",re,[e.createVNode(s,{size:32,icon:u.role==="user"?e.unref(D.user_filled_default):e.unref(D.service_default)},null,8,["icon"])]),e.createElementVNode("div",ie,[F(u.content)?(e.openBlock(),e.createElementBlock("div",{key:0,class:"message-json",innerHTML:z(O(u.content))},null,8,le)):(e.openBlock(),e.createElementBlock("div",ce,e.toDisplayString(u.content),1)),e.createElementVNode("div",ue,e.toDisplayString(u.createTime),1),u.role==="assistant"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[u.showFeedback&&!u.hasFeedback?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[de,e.createElementVNode("div",me,[e.createElementVNode("button",{class:"feedback-btn satisfied-btn",onClick:T=>B("satisfied",f)},ge,8,pe),e.createElementVNode("button",{class:"feedback-btn unsatisfied-btn",onClick:T=>B("open",f)},ye,8,he)])],64)):e.createCommentVNode("",!0),u.showFeedback&&u.hasFeedback?(e.openBlock(),e.createElementBlock("div",be,"感谢您进行的评价反馈")):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0)])],64)):e.createCommentVNode("",!0)],2))),128)),b.value&&!((g=a.value[a.value.length-1])!=null&&g.content)?(e.openBlock(),e.createElementBlock("div",Te,[e.createElementVNode("div",Ne,[e.createVNode(s,{size:32,icon:e.unref(D.service_default)},null,8,["icon"])]),Ee])):e.createCommentVNode("",!0)],512),e.createElementVNode("div",Ve,[e.createVNode(i,{class:"message-input",modelValue:h.value,"onUpdate:modelValue":t[0]||(t[0]=u=>h.value=u),type:"textarea",rows:4,autosize:{minRows:2,maxRows:4},placeholder:"输入您想查询的品种条件...",onKeydown:j},null,8,["modelValue"]),e.createElementVNode("div",Ce,[we,e.createVNode(q,{class:"send-btn",type:"primary",icon:e.unref(D.promotion_default),loading:n.value,onClick:H,round:""},{default:e.withCtx(()=>[e.createTextVNode(" 发送 ")]),_:1},8,["icon","loading"])])])])]}),_:1},8,["modelValue"]),e.createVNode(V,{modelValue:_.value,"onUpdate:modelValue":t[5]||(t[5]=g=>_.value=g),title:"📝 反馈意见",width:"400px"},{footer:e.withCtx(()=>[e.createElementVNode("span",xe,[e.createVNode(q,{onClick:t[3]||(t[3]=g=>_.value=!1)},{default:e.withCtx(()=>[e.createTextVNode("取消")]),_:1}),e.createVNode(q,{type:"primary",onClick:t[4]||(t[4]=g=>B("unsatisfied",x.value))},{default:e.withCtx(()=>[e.createTextVNode("提交反馈")]),_:1})])]),default:e.withCtx(()=>[e.createElementVNode("div",Se,[Be,qe,e.createVNode(i,{modelValue:p.value,"onUpdate:modelValue":t[2]||(t[2]=g=>p.value=g),type:"textarea",rows:4,placeholder:"[非必填]例如:回答不够准确、查询结果有误、界面体验不佳..."},null,8,["modelValue"])])]),_:1},8,["modelValue"])],64)}}},De=X._export_sfc(Me,[["__scopeId","data-v-536916ba"]]),Fe={install(c){c.component("st-varietyAiHelper",De)}};module.exports=Fe;
4
+ 帮我查A股科创板下品种转价差上证50并且总市值大于1千万, 最近一次红箱的开盘价大于前5根K线的最高价, 并按照总市值升序进行排序`}},emits:["callBack"],setup(c,{expose:D,emit:T}){const d=e.inject("stConfig"),k=e.reactive(G.V()),E=e.ref(!1),B=T,F=c,q=e.ref(),o=e.ref(!1),g=e.ref(!1),_=e.ref(null),n=e.ref([{role:"assistant",content:F.defaultMessage,userContent:null,showFeedback:!1,hasFeedback:!1,createTime:w.dayjs().format("YYYY-MM-DD HH:mm:ss"),resTime:0,firstPackageTime:0}]),h=e.ref(""),V=e.ref(!1),C=e.ref(""),x=e.ref({}),Y=s=>{if(typeof s!="string")return!1;try{const t=JSON.parse(s);return t!==null&&typeof t=="object"}catch{return!1}},j=s=>{if(!Y(s))return null;try{const t=JSON.parse(s),{parsedConditions:a,...r}=t;return{parsedConditions:a,webParams:r}}catch{return null}},L=s=>{var a;if(!s)return"";let t="";return(a=s.parsedConditions)!=null&&a.length&&(t+='<div class="parsed-conditions">',s.parsedConditions.forEach(r=>{t+=`<div class="parsed-conditions-item">${r}</div>`}),t+="</div>"),t},N=async(s,t)=>{switch(s){case"satisfied":{const a=n.value[t],r={userName:k.username,userContent:a.userContent,aiContent:a.content,type:1,createTime:a.createTime,resTime:a.resTime,firstPackageTime:a.firstPackageTime,isSolved:1,logOrigin:1};await d.request.post("/alarm/deliversign/addVarietyAiHelperLog",r),M.ElMessage.success("感谢您的评价!"),n.value[t].hasFeedback=!0;break}case"open":{x.value=t,V.value=!0;break}case"unsatisfied":{const a=n.value[t],r={userName:k.username,userContent:a.userContent,userSuggestion:C.value,aiContent:a.content,type:2,resTime:a.resTime,createTime:a.createTime,firstPackageTime:a.firstPackageTime,isSolved:0,logOrigin:1};await d.request.post("/alarm/deliversign/addVarietyAiHelperLog",r),M.ElMessage.success("感谢您的反馈!我们将持续跟踪并进行优化"),V.value=!1,n.value[t].hasFeedback=!0;break}case"default":{const a=n.value[t],r={userName:k.username,userContent:a.userContent,userSuggestion:C.value,aiContent:a.content,type:null,resTime:a.resTime,createTime:a.createTime,firstPackageTime:a.firstPackageTime,isSolved:1,logOrigin:1};await d.request.post("/alarm/deliversign/addVarietyAiHelperLog",r)}}},H=async()=>{const s=h.value.trim();if(!s)return M.ElMessage.warning("请输入消息内容");if(o.value)return;n.value.push({role:"user",content:s,createTime:w.dayjs().format("YYYY-MM-DD HH:mm:ss")}),h.value="",await y(),n.value.push({role:"assistant",content:"",userContent:s,showFeedback:!1,hasFeedback:!1,createTime:w.dayjs().format("YYYY-MM-DD HH:mm:ss"),resTime:0,firstPackageTime:0}),await y(),o.value=!0,g.value=!0;let t="",a=new Date().getTime();try{const r="9e54d112acfe4531bd1fc4fee8827fef",b="sk-d995eb26a4334bdeb2ccb4cbfaf51de8";await Q.sendToBaiLianAppStreaming({appId:r,apiKey:b,value:s,callback:(p,u)=>{var l;if(p==="error"){g.value=!1,o.value=!1,n.value.pop(),n.value.push({role:"assistant",userContent:s,content:`❌ ${u}`,showFeedback:!1,hasFeedback:!1,createTime:w.dayjs().format("YYYY-MM-DD HH:mm:ss"),resTime:new Date().getTime()-a,firstPackageTime:0}),N("default",n.value.length-1),y();return}else if(p==="message"){t+=u;const i=n.value[n.value.length-1];i&&i.role==="assistant"&&(i.content=t,y()),i.firstPackageTime===0&&(i.firstPackageTime=new Date().getTime()-a)}else if(p==="finish"){g.value=!1,o.value=!1;const i=n.value[n.value.length-1];i&&i.role==="assistant"&&(i.showFeedback=!0,i.resTime=new Date().getTime()-a,N("default",n.value.length-1)),console.log(t);try{const m=JSON.parse(t);if(m.parsedConditions&&delete m.parsedConditions,(l=m.customTagNames)!=null&&l.length){const O=m.customTagNames.reduce((P,J)=>{const A=q.value[J];return A&&P.push(A),P},[]);delete m.customTagNames,m.customTag=O}B("callBack",m)}catch{B("callBack",t)}}}})}catch(r){M.ElMessage.error(`AI响应异常: ${r}`),n.value.pop(),n.value.push({role:"assistant",userContent:s,content:"❌ 抱歉,AI服务响应异常,请稍后重试。",showFeedback:!0,hasFeedback:!1,createTime:w.dayjs().format("YYYY-MM-DD HH:mm:ss"),resTime:new Date().getTime()-a,firstPackageTime:0}),N("default",n.value.length-1),await y(),o.value=!1,g.value=!1}},$=s=>{if(s.key==="Enter")if(s.ctrlKey){s.preventDefault();const t=s.target,a=t.selectionStart,r=t.selectionEnd;h.value=h.value.substring(0,a)+`
5
+ `+h.value.substring(r),e.nextTick(()=>{t.selectionStart=t.selectionEnd=a+1})}else s.preventDefault(),H()},y=async()=>{await e.nextTick(),_.value&&(_.value.scrollTop=_.value.scrollHeight)},I=async()=>{const s=await Promise.all([d.request.post("/alarm/deliversign/findTagsByUserId"),d.request.post("/alarm/deliversign/findSystemTagsByTagName")]);q.value=s.reduce((t,a)=>{var r;return{...t,...(r=a.body)==null?void 0:r.reduce((b,p)=>({...b,[p.tagName]:p.id}),{})}},{})};return e.onMounted(()=>{I()}),e.watch(()=>n.value,()=>{y()},{deep:!0}),e.watch(()=>V.value,s=>{s||(C.value="")}),D({open:()=>{E.value=!0,e.nextTick(()=>{y()})}}),(s,t)=>{const a=se,r=K.ElInput,b=U.ElButton,p=R.ElDialog;return e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createVNode(p,{class:"ai-dialog",modelValue:E.value,"onUpdate:modelValue":t[1]||(t[1]=u=>E.value=u),title:"✨ 品种池参数解析AI助手",width:"500px",center:"",draggable:"",overflow:"",modal:!1,"modal-penetrable":!0},{default:e.withCtx(()=>{var u;return[e.createElementVNode("div",ne,[e.createElementVNode("div",{ref_key:"messageListRef",ref:_,class:"message-list"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.value,(l,i)=>(e.openBlock(),e.createElementBlock("div",{key:i,class:e.normalizeClass([l.role,"message-item"])},[l.content?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("div",oe,[e.createVNode(a,{size:32,icon:l.role==="user"?e.unref(S.user_filled_default):e.unref(S.service_default)},null,8,["icon"])]),e.createElementVNode("div",re,[Y(l.content)?(e.openBlock(),e.createElementBlock("div",{key:0,class:"message-json",innerHTML:L(j(l.content))},null,8,le)):(e.openBlock(),e.createElementBlock("div",ie,e.toDisplayString(l.content),1)),e.createElementVNode("div",ce,e.toDisplayString(l.createTime),1),l.role==="assistant"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[l.showFeedback&&!l.hasFeedback?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[ue,e.createElementVNode("div",de,[e.createElementVNode("button",{class:"feedback-btn satisfied-btn",onClick:m=>N("satisfied",i)},ve,8,me),e.createElementVNode("button",{class:"feedback-btn unsatisfied-btn",onClick:m=>N("open",i)},he,8,ge)])],64)):e.createCommentVNode("",!0),l.showFeedback&&l.hasFeedback?(e.openBlock(),e.createElementBlock("div",ye,"感谢您进行的评价反馈")):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0)])],64)):e.createCommentVNode("",!0)],2))),128)),g.value&&!((u=n.value[n.value.length-1])!=null&&u.content)?(e.openBlock(),e.createElementBlock("div",be,[e.createElementVNode("div",Te,[e.createVNode(a,{size:32,icon:e.unref(S.service_default)},null,8,["icon"])]),Ve])):e.createCommentVNode("",!0)],512),e.createElementVNode("div",Ne,[e.createVNode(r,{class:"message-input",modelValue:h.value,"onUpdate:modelValue":t[0]||(t[0]=l=>h.value=l),type:"textarea",rows:4,autosize:{minRows:2,maxRows:4},placeholder:"输入您想查询的品种条件...",onKeydown:$},null,8,["modelValue"]),e.createElementVNode("div",Ee,[Ce,e.createVNode(b,{class:"send-btn",type:"primary",icon:e.unref(S.promotion_default),loading:o.value,onClick:H,round:""},{default:e.withCtx(()=>[e.createTextVNode(" 发送 ")]),_:1},8,["icon","loading"])])])])]}),_:1},8,["modelValue"]),e.createVNode(p,{modelValue:V.value,"onUpdate:modelValue":t[5]||(t[5]=u=>V.value=u),title:"📝 反馈意见",width:"400px"},{footer:e.withCtx(()=>[e.createElementVNode("span",qe,[e.createVNode(b,{onClick:t[3]||(t[3]=u=>V.value=!1)},{default:e.withCtx(()=>[e.createTextVNode("取消")]),_:1}),e.createVNode(b,{type:"primary",onClick:t[4]||(t[4]=u=>N("unsatisfied",x.value))},{default:e.withCtx(()=>[e.createTextVNode("提交反馈")]),_:1})])]),default:e.withCtx(()=>[e.createElementVNode("div",we,[Se,Be,e.createVNode(r,{modelValue:C.value,"onUpdate:modelValue":t[2]||(t[2]=u=>C.value=u),type:"textarea",rows:4,placeholder:"[非必填]例如:回答不够准确、查询结果有误、界面体验不佳..."},null,8,["modelValue"])])]),_:1},8,["modelValue"])],64)}}},De=W._export_sfc(Me,[["__scopeId","data-v-536916ba"]]),Fe={install(c){c.component("st-varietyAiHelper",De)}};module.exports=Fe;