| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 | 
							- 'use client'
 
- import type { FC } from 'react'
 
- import { useTranslation } from 'react-i18next'
 
- import StatusPanel from './status'
 
- import MetaData from './meta'
 
- import CodeEditor from '@/app/components/workflow/nodes/_base/components/editor/code-editor'
 
- import { CodeLanguage } from '@/app/components/workflow/nodes/code/types'
 
- import ErrorHandleTip from '@/app/components/workflow/nodes/_base/components/error-handle/error-handle-tip'
 
- import type {
 
-   AgentLogItemWithChildren,
 
-   NodeTracing,
 
- } from '@/types/workflow'
 
- import { BlockEnum } from '@/app/components/workflow/types'
 
- import { hasRetryNode } from '@/app/components/workflow/utils'
 
- import { IterationLogTrigger } from '@/app/components/workflow/run/iteration-log'
 
- import { LoopLogTrigger } from '@/app/components/workflow/run/loop-log'
 
- import { RetryLogTrigger } from '@/app/components/workflow/run/retry-log'
 
- import { AgentLogTrigger } from '@/app/components/workflow/run/agent-log'
 
- type ResultPanelProps = {
 
-   nodeInfo?: NodeTracing
 
-   inputs?: string
 
-   process_data?: string
 
-   outputs?: string
 
-   status: string
 
-   error?: string
 
-   elapsed_time?: number
 
-   total_tokens?: number
 
-   created_at?: number
 
-   created_by?: string
 
-   finished_at?: number
 
-   steps?: number
 
-   showSteps?: boolean
 
-   exceptionCounts?: number
 
-   execution_metadata?: any
 
-   handleShowIterationResultList?: (detail: NodeTracing[][], iterDurationMap: any) => void
 
-   handleShowLoopResultList?: (detail: NodeTracing[][], loopDurationMap: any) => void
 
-   onShowRetryDetail?: (detail: NodeTracing[]) => void
 
-   handleShowAgentOrToolLog?: (detail?: AgentLogItemWithChildren) => void
 
- }
 
- const ResultPanel: FC<ResultPanelProps> = ({
 
-   nodeInfo,
 
-   inputs,
 
-   process_data,
 
-   outputs,
 
-   status,
 
-   error,
 
-   elapsed_time,
 
-   total_tokens,
 
-   created_at,
 
-   created_by,
 
-   steps,
 
-   showSteps,
 
-   exceptionCounts,
 
-   execution_metadata,
 
-   handleShowIterationResultList,
 
-   handleShowLoopResultList,
 
-   onShowRetryDetail,
 
-   handleShowAgentOrToolLog,
 
- }) => {
 
-   const { t } = useTranslation()
 
-   const isIterationNode = nodeInfo?.node_type === BlockEnum.Iteration && !!nodeInfo?.details?.length
 
-   const isLoopNode = nodeInfo?.node_type === BlockEnum.Loop && !!nodeInfo?.details?.length
 
-   const isRetryNode = hasRetryNode(nodeInfo?.node_type) && !!nodeInfo?.retryDetail?.length
 
-   const isAgentNode = nodeInfo?.node_type === BlockEnum.Agent && !!nodeInfo?.agentLog?.length
 
-   const isToolNode = nodeInfo?.node_type === BlockEnum.Tool && !!nodeInfo?.agentLog?.length
 
-   return (
 
-     <div className='bg-components-panel-bg py-2'>
 
-       <div className='px-4 py-2'>
 
-         <StatusPanel
 
-           status={status}
 
-           time={elapsed_time}
 
-           tokens={total_tokens}
 
-           error={error}
 
-           exceptionCounts={exceptionCounts}
 
-         />
 
-       </div>
 
-       <div className='px-4'>
 
-         {
 
-           isIterationNode && handleShowIterationResultList && (
 
-             <IterationLogTrigger
 
-               nodeInfo={nodeInfo}
 
-               onShowIterationResultList={handleShowIterationResultList}
 
-             />
 
-           )
 
-         }
 
-         {
 
-           isLoopNode && handleShowLoopResultList && (
 
-             <LoopLogTrigger
 
-               nodeInfo={nodeInfo}
 
-               onShowLoopResultList={handleShowLoopResultList}
 
-             />
 
-           )
 
-         }
 
-         {
 
-           isRetryNode && onShowRetryDetail && (
 
-             <RetryLogTrigger
 
-               nodeInfo={nodeInfo}
 
-               onShowRetryResultList={onShowRetryDetail}
 
-             />
 
-           )
 
-         }
 
-         {
 
-           (isAgentNode || isToolNode) && handleShowAgentOrToolLog && (
 
-             <AgentLogTrigger
 
-               nodeInfo={nodeInfo}
 
-               onShowAgentOrToolLog={handleShowAgentOrToolLog}
 
-             />
 
-           )
 
-         }
 
-       </div>
 
-       <div className='flex flex-col gap-2 px-4 py-2'>
 
-         <CodeEditor
 
-           readOnly
 
-           title={<div>{t('workflow.common.input').toLocaleUpperCase()}</div>}
 
-           language={CodeLanguage.json}
 
-           value={inputs}
 
-           isJSONStringifyBeauty
 
-         />
 
-         {process_data && (
 
-           <CodeEditor
 
-             readOnly
 
-             title={<div>{t('workflow.common.processData').toLocaleUpperCase()}</div>}
 
-             language={CodeLanguage.json}
 
-             value={process_data}
 
-             isJSONStringifyBeauty
 
-           />
 
-         )}
 
-         {(outputs || status === 'running') && (
 
-           <CodeEditor
 
-             readOnly
 
-             title={<div>{t('workflow.common.output').toLocaleUpperCase()}</div>}
 
-             language={CodeLanguage.json}
 
-             value={outputs}
 
-             isJSONStringifyBeauty
 
-             tip={<ErrorHandleTip type={execution_metadata?.error_strategy} />}
 
-           />
 
-         )}
 
-       </div>
 
-       <div className='px-4 py-2'>
 
-         <div className='divider-subtle h-[0.5px]' />
 
-       </div>
 
-       <div className='px-4 py-2'>
 
-         <MetaData
 
-           status={status}
 
-           executor={created_by}
 
-           startTime={created_at}
 
-           time={elapsed_time}
 
-           tokens={total_tokens}
 
-           steps={steps}
 
-           showSteps={showSteps}
 
-         />
 
-       </div>
 
-     </div>
 
-   )
 
- }
 
- export default ResultPanel
 
 
  |