From db2339e341668d14506c114ee88d6d143d4813b0 Mon Sep 17 00:00:00 2001
From: xuyonghao <898441624@qq.com>
Date: 星期三, 27 十一月 2024 15:33:16 +0800
Subject: [PATCH] 图标修改

---
 src/views/sessionManager/components/seniorAgentSession.vue |  271 ++++++++++++++++++-----------------------------------
 1 files changed, 92 insertions(+), 179 deletions(-)

diff --git a/src/views/sessionManager/components/seniorAgentSession.vue b/src/views/sessionManager/components/seniorAgentSession.vue
index 5ec2c48..3f92ea7 100644
--- a/src/views/sessionManager/components/seniorAgentSession.vue
+++ b/src/views/sessionManager/components/seniorAgentSession.vue
@@ -34,7 +34,7 @@
       </div>
     </div>
   </div>
-  <a-scrollbar
+  <div
     ref="scrollbar"
     id="chatAgentHome"
     class="chat-list"
@@ -58,22 +58,6 @@
           <div :class="{ chartUserText: theme === 'light' }"
             >{{ sessionDetail.content }}
           </div>
-
-          <!-- <div class="uploadFileList fileList">
-              <a-comment
-                content="232323"
-                style="
-                  background: var(--color-bg-2);
-                  padding: 10px;
-                  border-radius: 10px;
-                  font-size: 12px;
-                "
-              >
-                <template #avatar>
-                  <img :src="getIconByExtension('wps')" alt="" />
-                </template>
-              </a-comment>
-            </div> -->
         </template>
       </a-comment>
       <a-comment v-else-if="sessionDetail?.role === 'assistant'">
@@ -85,58 +69,29 @@
           />
         </template>
         <template #content>
-          <!--          <a-card :class="{ chatItemAnswer: theme === 'light' }">-->
-          <!--            <div :class="{ light: theme === 'light' }"-->
-          <!--            >{{ sessionDetail.content }}-->
-          <!--            </div>-->
-          <!--          </a-card>-->
-          <a-textarea
-            v-if="sessionDetail?.content"
-            readonly
-            auto-size
-            v-model="sessionDetail.content"
-            :class="{ chatItemAnswer: theme === 'light' }"
-            :style="{
-              backgroundColor: theme === 'light' ? '#ffffff' : '#000000',
-            }"
-            style="border: none"
-          >
-          </a-textarea>
-          <div v-else>
-            <!-- <a-textarea
-              readonly
-              auto-size
-              :default-value="chartText(sessionDetail.code, sessionDetail.sql)"
-              :class="{ chatItemAnswer: theme === 'light' }"
-              :style="{
-                backgroundColor: theme === 'light' ? '#ffffff' : '#000000',
-              }"
-              style="border: none"
-            >
-            </a-textarea> -->
-            <!-- <codemirror
-              v-model="sessionDetail.code"
-              placeholder="Code gose here..."
-              :style="{ height: '100%' }"
-              :autofocus="true"
-              :tabSize="2"
-            /> -->
-            <div class="codeStle">
-              <div class="language">python</div>
-              <pre
-                style="
+          <div v-if="isExistTip(sessionDetail.content)" :class="{ chartUserText: theme === 'light' }">
+            <div  v-for="(item, breakIndex) in breakLine(sessionDetail)">
+            <span v-if="item.preIndex==0">
+              {{ sessionDetail.content.substring(0, item.index) }}
+            </span>
+              <span v-else>
+              {{ sessionDetail.content.substring(item.preIndex+item.preItem.length, item.index) }}
+            </span>
+              <div class="codeStle">
+                <div class="language">{{ item.item }}</div>
+                <pre
+                  style="
                   background: #2c2c36;
                   padding: 10px;
                   margin-top: 0;
                   margin-bottom: 0;
                 "
-              ><code class="language-js line-numbers">{{ sessionDetail.code}}</code></pre>
-              <div class="language">SQL</div>
-              <pre
-                style="background: #2c2c36; padding: 10px; margin-top: 0"
-              ><code class="language-js line-numbers">{{sessionDetail.sql}}</code></pre>
+                ><code class="language-js line-numbers">{{ item?.tip_content }}</code></pre>
+              </div>
             </div>
-
+          </div>
+          <div v-else :class="{ chartUserText: theme === 'light' }">{{ sessionDetail.content }}</div>
+          <div>
             <a-image
               v-if="sessionDetail?.image_name"
               :src="getImg(sessionDetail)"
@@ -264,7 +219,7 @@
         >鍋滄鐢熸垚</div
       >
       <div class="chartStart v-else" @click="stopChat">閲嶆柊鐢熸垚</div> -->
-  </a-scrollbar>
+  </div>
   <div class="chat_bottom">
     <div class="center-bottom">
       <a-textarea
@@ -436,8 +391,8 @@
     agentConversationSetApi,
     agentConverDownloadApi,
     downloadFile,
-    agentUploadApi,
-  } from '@/api/agentSession';
+    agentUploadApi, updateAgentConversation, updateSeniorAgentConversation
+  } from "@/api/agentSession";
   import EventBus from '@/utils/EventBus';
   import useClipboard from 'vue-clipboard3';
   import { addSessionApi, getSessionDetailsApi } from '@/api/session';
@@ -519,6 +474,45 @@
     ],
   };
 
+  const isExistTip = (message: string): boolean => {
+    if (/\$([a-z]+)\$/g.test(message)) {
+      return true;
+    } else {
+      return false;
+    }
+  };
+
+  const breakLine = (detail): string[] => {
+    let indexs: any[] = [];
+    let tip_content: any;
+    let preTip = 0;
+    let preItem="";
+    let matches = detail.content.match(/\$([a-z]+)\$/g);
+    matches?.map((item) => {
+      let i = detail.content.indexOf(item);
+      if (item == "$metadata$") {
+        tip_content = detail.metadata;
+      }
+      if (item == "$sql$") {
+        tip_content = detail.sql;
+      }
+      if (item == "$code$") {
+        tip_content = detail.code;
+      }
+      indexs.push({
+        index: i,
+        item: item,
+        preIndex: preTip,
+        preItem: preItem,
+        tip_content: tip_content,
+        len: matches.length
+      });
+      preTip = i;
+      preItem = item;
+    });
+    return indexs;
+  };
+
   const handleSubmit = async ({ values, errors }) => {
     if (errors) return;
 
@@ -578,88 +572,7 @@
     isHistory.value = false;
     initPage();
   };
-  // 璋冪敤set鏂规硶
-  const agentSet = async () => {
-    const res = await agentSetApi({
-      id: agentObj.id,
-      title: agentObj.title,
-      dsl: agentObj.dsl,
-    });
-    // console.log(res,'agentSet');
-    if (res.code == 0) {
-      conversation_id.value = res.data.conversation_id;
-      agentReset();
-    }
-  };
-  // 璋冪敤reset鏂规硶
-  const agentReset = async () => {
-    const res = await agentResetApi({
-      id: agentObj.id,
-    });
-    if (res.code == 0) {
-      // Message.success('淇敼鎴愬姛');
-      agentCompletion();
-    }
-  };
-  // 璋冪敤completion鏂规硶
-  const agentCompletion = async () => {
-    const response = await fetch('/api/v1/canvas/completion', {
-      method: 'POST',
-      headers: {
-        'Authorization': getAuthorization(),
-        'Content-Type': 'application/json',
-      },
-      body: JSON.stringify({
-        id: agentObj.id,
-      }),
-    });
-    refreshScroll();
 
-    const reader = response?.body
-      ?.pipeThrough(new TextDecoderStream())
-      .pipeThrough(new EventSourceParserStream())
-      .getReader();
-    currIndex.value = 0;
-    while (true) {
-      const x = await reader?.read();
-      if (x) {
-        const { done, value } = x;
-        console.log(x, 8888);
-
-        try {
-          const val = JSON.parse(value?.data || '');
-          const d = val?.data;
-          if (typeof d !== 'boolean') {
-            console.info('data:', d);
-            if (d?.content) {
-              streamStr.value = d.content;
-            } else {
-              streamStr.value = d.code + d.sql;
-            }
-            startDisplayStr();
-          }
-        } catch (e) {
-          console.warn(e);
-        }
-        if (done) {
-          console.info('done');
-          displayedText.value = '';
-          //   queryAgentSessionDetail(activeSessionId.value);
-          break;
-        }
-      }
-    }
-    chatDis.value = false;
-    loading.value = false;
-    inputMsg.value = '';
-    uploaditemList.value = [];
-  };
-
-  //娓叉煋鏂囧瓧
-  const chartText = (val, sql) => {
-    console.log(val + sql, 77);
-    return val + '\n' + sql;
-  };
 
   //鑾峰彇鍥剧墖鍦板潃
   const getImg = (val) => {
@@ -717,19 +630,7 @@
 
     getAentId(session.dialog_id);
     from.name = session.name;
-    const { code, data } = await getSessionDetailsApi(session.id);
-
-    if (code == 200) {
-      sessionDetailList.value = data.message;
-      refreshScroll(); //鍒锋柊婊氬姩鏉′綅缃�
-      //   const res = await getAgentSessionDetailsApi(session.dialog_id);
-      //   if (res.code == 0) {
-      //     Object.assign(agentObj, res.data);
-      //     Object.assign(chatObj, res.data);
-      //     Object.assign(dsl, res.data.dsl);
-      //     refreshScroll(); //鍒锋柊婊氬姩鏉′綅缃�
-      //   }
-    }
+    queryAgentSessionDetails(activeSessionId.value);
   };
 
   const { toClipboard } = useClipboard();
@@ -956,24 +857,34 @@
       .pipeThrough(new EventSourceParserStream())
       .getReader();
     currIndex.value = 0;
+    let end_msg={};
     while (true) {
       const x = await reader?.read();
       if (x) {
         const { done, value } = x;
         console.log(x, 999);
-
+        loading.value = false;
         if (value && value?.event == 'message') {
           try {
             const val = JSON.parse(value?.data || '');
-            const d = val?.data;
+             const d = val?.data;
 
             if (typeof d !== 'boolean') {
               console.info('data:', d);
-
               if (d?.content) {
-                streamStr.value = d.content;
-              } else {
-                streamStr.value = d.code;
+                let msg = d.content;
+                //灏哾.output涓�$metadata$鏇挎崲涓篸.metadata
+                msg = msg.replace('$metadata$', d.metadata);
+                //d.content涓瓨鍦�$sql$
+                if (d.content.includes('$sql$')) {
+                  msg = msg.replace('$sql$', d.sql);
+                }
+                //d.content涓瓨鍦�$code$
+                if (d.content.includes('$code$')) {
+                  msg = msg.replace('$code$', d.code);
+                }
+                end_msg=d;
+                streamStr.value = msg;
               }
               EventBus.emit('queryAgent', uploaditemList.value);
               startDisplayStr();
@@ -985,20 +896,20 @@
 
         if (done) {
           console.info('done');
-          //   displayedText.value = '';
-          if (isStopChat.value) {
-            isStopChat.value = false;
-            setChatDataMeg(chatDataMeg);
-          } else {
-            // queryAgentSessionDetail(activeSessionId.value);
-            // EventBus.emit('queryAppUsageList');
+          if (!chatObj?.message) {
+            chatObj.message = [];
           }
+          chatObj.message.push(end_msg) ;
+          await updateSeniorAgentConversation({
+            converson_id: activeSessionId.value,
+            message: chatObj.message
+          });
+          setChatDataMeg(chatDataMeg);
           break;
         }
       }
     }
     chatDis.value = false;
-    loading.value = false;
   };
 
   const stopChat = async () => {
@@ -1062,13 +973,10 @@
 
     if (currIndex.value < res.length) {
       displayedText.value += res[currIndex.value];
-
       currIndex.value++;
-      setTimeout(startDisplayStr, 100);
+      setTimeout(startDisplayStr, 50);
       refreshScroll();
     } else {
-      displayedText.value = '';
-      queryAgentSessionDetails(activeSessionId.value);
       clearTimeout(timer!);
       timer = null;
     }
@@ -1078,7 +986,12 @@
   const refreshScroll = () => {
     nextTick(() => {
       const container = document.getElementById('chatAgentHome');
-      scrollbar.value.scrollTop(container.scrollHeight);
+      //婊氬姩鍒皊crollbar搴曠
+      if (container) {
+container.scrollTop = container.scrollHeight;
+      }
+
+      scrollbar.scrollTop(container.scrollHeight);
     });
   };
 

--
Gitblit v1.8.0