gerson
2024-08-25 9a8a56f6d2cfe0ab9ec9368d58d03d1cf10ade28
src/components/chat/Chat.vue
@@ -72,7 +72,7 @@
                                 v-if="item.content?.type === AnswerType.Text || item.content?.type === AnswerType.Knowledge"
                              >
                                 <i
                                    class="p-2 ywicon icon-copy cursor-pointer hover:text-[#0284ff] hover:!text-[18px]"
                                    class="p-2 ywifont ywicon-copy cursor-pointer hover:text-[#0284ff] hover:!text-[18px]"
                                    @click="copyClick(item)"
                                 />
                              </div>
@@ -80,14 +80,14 @@
                                 <div class="flex items-center justify-center size-[15px]">
                                    <i
                                       :class="{ 'text-[#0284ff]': item.state === AnswerState.Like }"
                                       class="p-2 ywicon icon-dianzan cursor-pointer hover:text-[#0284ff] font-medium hover:!text-[18px]"
                                       class="p-2 ywifont ywicon-dianzan cursor-pointer hover:text-[#0284ff] font-medium hover:!text-[18px]"
                                       @click="likeClick(item)"
                                    />
                                 </div>
                                 <div class="flex items-center justify-center size-[15px]">
                                    <i
                                       :class="{ 'text-[#0284ff]': item.state === AnswerState.Unlike }"
                                       class="p-2 ywicon icon-buzan cursor-pointer hover:text-[#0284ff] !text-[13px] hover:!text-[15px]"
                                       class="p-2 ywifont ywicon-buzan cursor-pointer hover:text-[#0284ff] !text-[13px] hover:!text-[15px]"
                                       @click="unLikeClick(item)"
                                    />
                                 </div>
@@ -95,7 +95,7 @@
                              <div class="flex items-center justify-center size-[15px] relative">
                                 <i
                                    class="p-2 ywicon icon-wentifankui cursor-pointer hover:text-[#0284ff] !text-[13px] hover:!text-[15px]"
                                    class="p-2 ywifont ywicon-wentifankui cursor-pointer hover:text-[#0284ff] !text-[13px] hover:!text-[15px]"
                                    @click="
                                       ($event) =>
                                          feedbackClick(
@@ -119,7 +119,7 @@
                           </div>
                        </div>
                        <Loding v-else class="w-fit" :process="process" />
                        <Loding v-if="isTalking && index === messageList.length - 1" class="w-fit" :process="process" />
                     </div>
                  </div>
               </div>
@@ -186,18 +186,7 @@
const chatListDom = ref<HTMLDivElement>();
const messageList = ref<ChatMessage[]>([]);
const computedMessageList = computed(() => {
   for (let index = 0; index < messageList.value.length; index++) {
      const item = messageList.value[index];
      if(item?.role===RoleEnum.assistant || !item){
         continue
      }
      item.content.values = messageList.value[index+1]?.content?.origin?.question;
   }
   const filterList =  messageList.value.filter((v) => !!v);
   return filterList;
   return messageList.value.filter((v) => !!v);
});
const parseContent = (res) => {
@@ -270,23 +259,21 @@
   processId.value = uuidv4();
   let judgeParams = null;
   if (!preQuestion.value) {
      const aiContent = computedMessageList.value.filter((item) => item.role === RoleEnum.assistant);
      const lastQuestion = aiContent[aiContent.length - 2]?.content?.origin?.question;
      judgeParams = lastQuestion
         ? {
               prev_question: lastQuestion,
           }
         : {};
      // const aiContent = computedMessageList.value.filter((item) => item.role === RoleEnum.assistant);
      // const lastQuestion = aiContent[aiContent.length - 2]?.content?.origin?.question;
      // judgeParams = lastQuestion
      //    ? {
      //          prev_question: lastQuestion,
      //      }
      //    : {};
         // 正常回答暂时不采用
      judgeParams = {};
   } else {
      judgeParams = {
         prev_question: preQuestion.value,
      };
   }
   // const judgeParams = !preQuestion.value
   //    ? {}
   //    : {
   //          prev_question: preQuestion.value,
   //      };
   const params = {
      process_id: processId.value,
      question: text,
@@ -332,7 +319,7 @@
};
const sendChatMessage = async (content: ChatContent = messageContent.value, cb?: any, isCallExtParams?: any) => {
   if (!content?.values) return;
   if (!content?.values || isTalking.value) return;
   const isNewChat = messageList.value.length === 0;
   if (isNewChat) {
      if (activeSampleId.value) {
@@ -375,6 +362,7 @@
         cb?.(resMsgContent);
      }
      userItem.historyId = questionRes.history_id;
      userItem.content.values = questionRes?.question ?? userItem.content.values;
      assistantItem.historyId = questionRes.history_id;
      appendLastMessageContent(resMsgContent);
   } catch (error: any) {
@@ -415,9 +403,10 @@
   currentSampleId = res?.details?.[0]?.sample_id;
   const resList = await Promise.all((res.details ?? []).map((item) => getAnswerById(item.history_id)));
   let i = 0;
   resList.map((item, index) => {
      const insertIndex = index + 1 + i;
      const userMsg = messageList.value[insertIndex - 1];
      userMsg.content.values = item?.answer?.question ??userMsg.content.values;
      messageList.value.splice(
         insertIndex,
         0,
@@ -432,7 +421,6 @@
      );
      i++;
   });
   if (messageList.value.length === 0) {
      messageContent.value = {