From a430284aa21e3ae1f0d5654e55b2ad2852519cc2 Mon Sep 17 00:00:00 2001
From: wwf <yearningwang@iqtogether.com>
Date: 星期三, 04 六月 2025 15:17:49 +0800
Subject: [PATCH] 初始化

---
 app/components/app/log/list.tsx |   97 +++++++++++++++++++++++-------------------------
 1 files changed, 46 insertions(+), 51 deletions(-)

diff --git a/app/components/app/log/list.tsx b/app/components/app/log/list.tsx
index 7ce164c..383aeb1 100644
--- a/app/components/app/log/list.tsx
+++ b/app/components/app/log/list.tsx
@@ -41,7 +41,6 @@
 import { buildChatItemTree, getThreadMessages } from '@/app/components/base/chat/utils'
 import { getProcessedFilesFromResponse } from '@/app/components/base/file-uploader/utils'
 import cn from '@/utils/classnames'
-import { noop } from 'lodash-es'
 
 dayjs.extend(utc)
 dayjs.extend(timezone)
@@ -73,19 +72,16 @@
 const HandThumbIconWithCount: FC<{ count: number; iconType: 'up' | 'down' }> = ({ count, iconType }) => {
   const classname = iconType === 'up' ? 'text-primary-600 bg-primary-50' : 'text-red-600 bg-red-50'
   const Icon = iconType === 'up' ? HandThumbUpIcon : HandThumbDownIcon
-  return <div className={`inline-flex w-fit items-center rounded-md p-1 text-xs ${classname} mr-1 last:mr-0`}>
-    <Icon className={'mr-0.5 h-3 w-3 rounded-md'} />
+  return <div className={`inline-flex items-center w-fit rounded-md p-1 text-xs ${classname} mr-1 last:mr-0`}>
+    <Icon className={'h-3 w-3 mr-0.5 rounded-md'} />
     {count > 0 ? count : null}
   </div>
 }
 
 const statusTdRender = (statusCount: StatusCount) => {
-  if (!statusCount)
-    return null
-
   if (statusCount.partial_success + statusCount.failed === 0) {
     return (
-      <div className='system-xs-semibold-uppercase inline-flex items-center gap-1'>
+      <div className='inline-flex items-center gap-1 system-xs-semibold-uppercase'>
         <Indicator color={'green'} />
         <span className='text-util-colors-green-green-600'>Success</span>
       </div>
@@ -93,7 +89,7 @@
   }
   else if (statusCount.failed === 0) {
     return (
-      <div className='system-xs-semibold-uppercase inline-flex items-center gap-1'>
+      <div className='inline-flex items-center gap-1 system-xs-semibold-uppercase'>
         <Indicator color={'green'} />
         <span className='text-util-colors-green-green-600'>Partial Success</span>
       </div>
@@ -101,7 +97,7 @@
   }
   else {
     return (
-      <div className='system-xs-semibold-uppercase inline-flex items-center gap-1'>
+      <div className='inline-flex items-center gap-1 system-xs-semibold-uppercase'>
         <Indicator color={'red'} />
         <span className='text-util-colors-red-red-600'>{statusCount.failed} {`${statusCount.failed > 1 ? 'Failures' : 'Failure'}`}</span>
       </div>
@@ -361,13 +357,13 @@
   }, [])
 
   return (
-    <div ref={ref} className='flex h-full flex-col rounded-xl border-[0.5px] border-components-panel-border'>
+    <div ref={ref} className='rounded-xl border-[0.5px] border-components-panel-border h-full flex flex-col'>
       {/* Panel Header */}
-      <div className='flex shrink-0 items-center gap-2 rounded-t-xl bg-components-panel-bg pb-2 pl-4 pr-3 pt-3'>
+      <div className='shrink-0 pl-4 pt-3 pr-3 pb-2 flex items-center gap-2 bg-components-panel-bg rounded-t-xl'>
         <div className='shrink-0'>
-          <div className='system-xs-semibold-uppercase mb-0.5 text-text-primary'>{isChatMode ? t('appLog.detail.conversationId') : t('appLog.detail.time')}</div>
+          <div className='mb-0.5 text-text-primary system-xs-semibold-uppercase'>{isChatMode ? t('appLog.detail.conversationId') : t('appLog.detail.time')}</div>
           {isChatMode && (
-            <div className='system-2xs-regular-uppercase flex items-center text-text-secondary'>
+            <div className='flex items-center text-text-secondary system-2xs-regular-uppercase'>
               <Tooltip
                 popupContent={detail.id}
               >
@@ -377,19 +373,19 @@
             </div>
           )}
           {!isChatMode && (
-            <div className='system-2xs-regular-uppercase text-text-secondary'>{formatTime(detail.created_at, t('appLog.dateTimeFormat') as string)}</div>
+            <div className='text-text-secondary system-2xs-regular-uppercase'>{formatTime(detail.created_at, t('appLog.dateTimeFormat') as string)}</div>
           )}
         </div>
-        <div className='flex grow flex-wrap items-center justify-end gap-y-1'>
+        <div className='grow flex items-center flex-wrap gap-y-1 justify-end'>
           {!isAdvanced && <ModelInfo model={detail.model_config.model} />}
         </div>
         <ActionButton size='l' onClick={onClose}>
-          <RiCloseLine className='h-4 w-4 text-text-tertiary' />
+          <RiCloseLine className='w-4 h-4 text-text-tertiary' />
         </ActionButton>
       </div>
       {/* Panel Body */}
-      <div className='shrink-0 px-1 pt-1'>
-        <div className='rounded-t-xl bg-background-section-burn p-3 pb-2'>
+      <div className='shrink-0 pt-1 px-1'>
+        <div className='p-3 pb-2 rounded-t-xl bg-background-section-burn'>
           {(varList.length > 0 || (!isChatMode && message_files.length > 0)) && (
             <VarPanel
               varList={varList}
@@ -398,12 +394,12 @@
           )}
         </div>
       </div>
-      <div className='mx-1 mb-1 grow overflow-auto rounded-b-xl bg-background-section-burn'>
+      <div className='grow mx-1 mb-1 bg-background-section-burn rounded-b-xl overflow-auto'>
         {!isChatMode
           ? <div className="px-6 py-4">
             <div className='flex h-[18px] items-center space-x-3'>
-              <div className='system-xs-semibold-uppercase text-text-tertiary'>{t('appLog.table.header.output')}</div>
-              <div className='h-[1px] grow' style={{
+              <div className='text-text-tertiary system-xs-semibold-uppercase'>{t('appLog.table.header.output')}</div>
+              <div className='grow h-[1px]' style={{
                 background: 'linear-gradient(270deg, rgba(243, 244, 246, 0) 0%, rgb(243, 244, 246) 100%)',
               }}></div>
             </div>
@@ -412,24 +408,26 @@
               content={detail.message.answer}
               messageId={detail.message.id}
               isError={false}
-              onRetry={noop}
+              onRetry={() => { }}
               isInstalledApp={false}
               supportFeedback
               feedback={detail.message.feedbacks.find((item: any) => item.from_source === 'admin')}
               onFeedback={feedback => onFeedback(detail.message.id, feedback)}
+              supportAnnotation
               isShowTextToSpeech
+              appId={appDetail?.id}
+              varList={varList}
               siteInfo={null}
             />
           </div>
           : threadChatItems.length < 8
-            ? <div className="mb-4 pt-4">
+            ? <div className="pt-4 mb-4">
               <Chat
                 config={{
                   appId: appDetail?.id,
                   text_to_speech: {
                     enabled: true,
                   },
-                  questionEditEnable: false,
                   supportAnnotation: true,
                   annotation_reply: {
                     enabled: true,
@@ -463,7 +461,7 @@
                 dataLength={threadChatItems.length}
                 next={fetchData}
                 hasMore={hasMore}
-                loader={<div className='system-xs-regular text-center text-text-tertiary'>{t('appLog.detail.loading')}...</div>}
+                loader={<div className='text-center text-text-tertiary system-xs-regular'>{t('appLog.detail.loading')}...</div>}
                 // endMessage={<div className='text-center'>Nothing more to show</div>}
                 // below props only if you need pull down functionality
                 refreshFunction={fetchData}
@@ -485,7 +483,6 @@
                     text_to_speech: {
                       enabled: true,
                     },
-                    questionEditEnable: false,
                     supportAnnotation: true,
                     annotation_reply: {
                       enabled: true,
@@ -549,7 +546,7 @@
       notify({ type: 'success', message: t('common.actionMsg.modifiedSuccessfully') })
       return true
     }
-    catch {
+    catch (err) {
       notify({ type: 'error', message: t('common.actionMsg.modifiedUnsuccessfully') })
       return false
     }
@@ -562,7 +559,7 @@
       notify({ type: 'success', message: t('common.actionMsg.modifiedSuccessfully') })
       return true
     }
-    catch {
+    catch (err) {
       notify({ type: 'error', message: t('common.actionMsg.modifiedUnsuccessfully') })
       return false
     }
@@ -593,7 +590,7 @@
       notify({ type: 'success', message: t('common.actionMsg.modifiedSuccessfully') })
       return true
     }
-    catch {
+    catch (err) {
       notify({ type: 'error', message: t('common.actionMsg.modifiedUnsuccessfully') })
       return false
     }
@@ -605,7 +602,7 @@
       notify({ type: 'success', message: t('common.actionMsg.modifiedSuccessfully') })
       return true
     }
-    catch {
+    catch (err) {
       notify({ type: 'error', message: t('common.actionMsg.modifiedUnsuccessfully') })
       return false
     }
@@ -635,10 +632,9 @@
   const [currentConversation, setCurrentConversation] = useState<ChatConversationGeneralDetail | CompletionConversationGeneralDetail | undefined>() // Currently selected conversation
   const isChatMode = appDetail.mode !== 'completion' // Whether the app is a chat app
   const isChatflow = appDetail.mode === 'advanced-chat' // Whether the app is a chatflow app
-  const { setShowPromptLogModal, setShowAgentLogModal, setShowMessageLogModal } = useAppStore(useShallow(state => ({
+  const { setShowPromptLogModal, setShowAgentLogModal } = useAppStore(useShallow(state => ({
     setShowPromptLogModal: state.setShowPromptLogModal,
     setShowAgentLogModal: state.setShowAgentLogModal,
-    setShowMessageLogModal: state.setShowMessageLogModal,
   })))
 
   // Annotated data needs to be highlighted
@@ -646,8 +642,8 @@
     return (
       <Tooltip
         popupContent={
-          <span className='inline-flex items-center text-xs text-text-tertiary'>
-            <RiEditFill className='mr-1 h-3 w-3' />{`${t('appLog.detail.annotationTip', { user: annotation?.account?.name })} ${formatTime(annotation?.created_at || dayjs().unix(), 'MM-DD hh:mm A')}`}
+          <span className='text-xs text-text-tertiary inline-flex items-center'>
+            <RiEditFill className='w-3 h-3 mr-1' />{`${t('appLog.detail.annotationTip', { user: annotation?.account?.name })} ${formatTime(annotation?.created_at || dayjs().unix(), 'MM-DD hh:mm A')}`}
           </span>
         }
         popupClassName={(isHighlight && !isChatMode) ? '' : '!hidden'}
@@ -665,7 +661,6 @@
     setCurrentConversation(undefined)
     setShowPromptLogModal(false)
     setShowAgentLogModal(false)
-    setShowMessageLogModal(false)
   }
 
   if (!logs)
@@ -676,41 +671,41 @@
       <table className={cn('mt-2 w-full min-w-[440px] border-collapse border-0')}>
         <thead className='system-xs-medium-uppercase text-text-tertiary'>
           <tr>
-            <td className='w-5 whitespace-nowrap rounded-l-lg bg-background-section-burn pl-2 pr-1'></td>
-            <td className='whitespace-nowrap bg-background-section-burn py-1.5 pl-3'>{isChatMode ? t('appLog.table.header.summary') : t('appLog.table.header.input')}</td>
-            <td className='whitespace-nowrap bg-background-section-burn py-1.5 pl-3'>{t('appLog.table.header.endUser')}</td>
-            {isChatflow && <td className='whitespace-nowrap bg-background-section-burn py-1.5 pl-3'>{t('appLog.table.header.status')}</td>}
-            <td className='whitespace-nowrap bg-background-section-burn py-1.5 pl-3'>{isChatMode ? t('appLog.table.header.messageCount') : t('appLog.table.header.output')}</td>
-            <td className='whitespace-nowrap bg-background-section-burn py-1.5 pl-3'>{t('appLog.table.header.userRate')}</td>
-            <td className='whitespace-nowrap bg-background-section-burn py-1.5 pl-3'>{t('appLog.table.header.adminRate')}</td>
-            <td className='whitespace-nowrap bg-background-section-burn py-1.5 pl-3'>{t('appLog.table.header.updatedTime')}</td>
-            <td className='whitespace-nowrap rounded-r-lg bg-background-section-burn py-1.5 pl-3'>{t('appLog.table.header.time')}</td>
+            <td className='pl-2 pr-1 w-5 rounded-l-lg bg-background-section-burn whitespace-nowrap'></td>
+            <td className='pl-3 py-1.5 bg-background-section-burn whitespace-nowrap'>{isChatMode ? t('appLog.table.header.summary') : t('appLog.table.header.input')}</td>
+            <td className='pl-3 py-1.5 bg-background-section-burn whitespace-nowrap'>{t('appLog.table.header.endUser')}</td>
+            {isChatflow && <td className='pl-3 py-1.5 bg-background-section-burn whitespace-nowrap'>{t('appLog.table.header.status')}</td>}
+            <td className='pl-3 py-1.5 bg-background-section-burn whitespace-nowrap'>{isChatMode ? t('appLog.table.header.messageCount') : t('appLog.table.header.output')}</td>
+            <td className='pl-3 py-1.5 bg-background-section-burn whitespace-nowrap'>{t('appLog.table.header.userRate')}</td>
+            <td className='pl-3 py-1.5 bg-background-section-burn whitespace-nowrap'>{t('appLog.table.header.adminRate')}</td>
+            <td className='pl-3 py-1.5 bg-background-section-burn whitespace-nowrap'>{t('appLog.table.header.updatedTime')}</td>
+            <td className='pl-3 py-1.5 rounded-r-lg bg-background-section-burn whitespace-nowrap'>{t('appLog.table.header.time')}</td>
           </tr>
         </thead>
-        <tbody className="system-sm-regular text-text-secondary">
+        <tbody className="text-text-secondary system-sm-regular">
           {logs.data.map((log: any) => {
             const endUser = log.from_end_user_session_id || log.from_account_name
             const leftValue = get(log, isChatMode ? 'name' : 'message.inputs.query') || (!isChatMode ? (get(log, 'message.query') || get(log, 'message.inputs.default_input')) : '') || ''
             const rightValue = get(log, isChatMode ? 'message_count' : 'message.answer')
             return <tr
               key={log.id}
-              className={cn('cursor-pointer border-b border-divider-subtle hover:bg-background-default-hover', currentConversation?.id !== log.id ? '' : 'bg-background-default-hover')}
+              className={cn('border-b border-divider-subtle hover:bg-background-default-hover cursor-pointer', currentConversation?.id !== log.id ? '' : 'bg-background-default-hover')}
               onClick={() => {
                 setShowDrawer(true)
                 setCurrentConversation(log)
               }}>
               <td className='h-4'>
                 {!log.read_at && (
-                  <div className='flex items-center p-3 pr-0.5'>
-                    <span className='inline-block h-1.5 w-1.5 rounded bg-util-colors-blue-blue-500'></span>
+                  <div className='p-3 pr-0.5 flex items-center'>
+                    <span className='inline-block bg-util-colors-blue-blue-500 h-1.5 w-1.5 rounded'></span>
                   </div>
                 )}
               </td>
-              <td className='w-[160px] p-3 pr-2' style={{ maxWidth: isChatMode ? 300 : 200 }}>
+              <td className='p-3 pr-2 w-[160px]' style={{ maxWidth: isChatMode ? 300 : 200 }}>
                 {renderTdValue(leftValue || t('appLog.table.empty.noChat'), !leftValue, isChatMode && log.annotated)}
               </td>
               <td className='p-3 pr-2'>{renderTdValue(endUser || defaultValue, !endUser)}</td>
-              {isChatflow && <td className='w-[160px] p-3 pr-2' style={{ maxWidth: isChatMode ? 300 : 200 }}>
+              {isChatflow && <td className='p-3 pr-2 w-[160px]' style={{ maxWidth: isChatMode ? 300 : 200 }}>
                 {statusTdRender(log.status_count)}
               </td>}
               <td className='p-3 pr-2' style={{ maxWidth: isChatMode ? 100 : 200 }}>
@@ -745,7 +740,7 @@
         onClose={onCloseDrawer}
         mask={isMobile}
         footer={null}
-        panelClassName='mt-16 mx-2 sm:mr-2 mb-4 !p-0 !max-w-[640px] rounded-xl bg-components-panel-bg'
+        panelClassname='mt-16 mx-2 sm:mr-2 mb-4 !p-0 !max-w-[640px] rounded-xl bg-components-panel-bg'
       >
         <DrawerContext.Provider value={{
           onClose: onCloseDrawer,

--
Gitblit v1.8.0