diff --git a/web/app/components/app/text-generate/item/index.tsx b/web/app/components/app/text-generate/item/index.tsx index 9794967d9d..aca2cd7044 100644 --- a/web/app/components/app/text-generate/item/index.tsx +++ b/web/app/components/app/text-generate/item/index.tsx @@ -307,7 +307,7 @@ const GenerationItem: FC = ({
{siteInfo && siteInfo.show_workflow_steps && workflowProcessData && ( - + )} {workflowProcessData && !isError && ( diff --git a/web/app/components/app/workflow-log/detail.tsx b/web/app/components/app/workflow-log/detail.tsx index dc5127b6e7..2ee9f83c54 100644 --- a/web/app/components/app/workflow-log/detail.tsx +++ b/web/app/components/app/workflow-log/detail.tsx @@ -13,7 +13,7 @@ const DetailPanel: FC = ({ runID, onClose }) => { const { t } = useTranslation() return ( -
+
diff --git a/web/app/components/base/chat/chat/answer/index.tsx b/web/app/components/base/chat/chat/answer/index.tsx index 49491efc3d..f66f51a1aa 100644 --- a/web/app/components/base/chat/chat/answer/index.tsx +++ b/web/app/components/base/chat/chat/answer/index.tsx @@ -140,7 +140,6 @@ const Answer: FC = ({ ) @@ -151,7 +150,6 @@ const Answer: FC = ({ ) diff --git a/web/app/components/base/chat/chat/answer/workflow-process.tsx b/web/app/components/base/chat/chat/answer/workflow-process.tsx index 99fe99c5e8..13fda84a68 100644 --- a/web/app/components/base/chat/chat/answer/workflow-process.tsx +++ b/web/app/components/base/chat/chat/answer/workflow-process.tsx @@ -20,17 +20,13 @@ import { useStore as useAppStore } from '@/app/components/app/store' type WorkflowProcessProps = { data: WorkflowProcess item?: ChatItem - grayBg?: boolean expand?: boolean - hideInfo?: boolean hideProcessDetail?: boolean } const WorkflowProcessItem = ({ data, item, - grayBg, expand = false, - hideInfo = false, hideProcessDetail = false, }: WorkflowProcessProps) => { const { t } = useTranslation() @@ -40,6 +36,8 @@ const WorkflowProcessItem = ({ const failed = data.status === WorkflowRunningStatus.Failed || data.status === WorkflowRunningStatus.Stopped const background = useMemo(() => { + if (collapse) + return 'linear-gradient(90deg, rgba(200, 206, 218, 0.20) 0%, rgba(200, 206, 218, 0.04) 100%)' if (running && !collapse) return 'linear-gradient(180deg, #E1E4EA 0%, #EAECF0 100%)' @@ -67,41 +65,36 @@ const WorkflowProcessItem = ({ return (
setCollapse(!collapse)} > { running && ( - + ) } { succeeded && ( - + ) } { failed && ( - + ) } -
+
{t('workflow.common.workflowProcess')}
- +
{ !collapse && ( @@ -111,7 +104,7 @@ const WorkflowProcessItem = ({
diff --git a/web/app/components/base/message-log-modal/index.tsx b/web/app/components/base/message-log-modal/index.tsx index 0807450776..7bbd3f311d 100644 --- a/web/app/components/base/message-log-modal/index.tsx +++ b/web/app/components/base/message-log-modal/index.tsx @@ -39,7 +39,7 @@ const MessageLogModal: FC = ({ return (
= ({
{ type === InputVarType.textInput && ( - onChange(e.target.value)} placeholder={t('appDebug.variableConig.inputPlaceholder')!} diff --git a/web/app/components/workflow/panel/debug-and-preview/user-input.tsx b/web/app/components/workflow/panel/debug-and-preview/user-input.tsx index d80e3b6005..45023b5598 100644 --- a/web/app/components/workflow/panel/debug-and-preview/user-input.tsx +++ b/web/app/components/workflow/panel/debug-and-preview/user-input.tsx @@ -29,7 +29,7 @@ const UserInput = () => { return null return ( -
+
{variables.map((variable, index) => (
{ return (
-
+
{`Test Run#${historyWorkflowData?.sequence_number}`}
= ({ hideResult, activeTab = 'RESULT', runID, getRe >{t('runLog.tracing')}
{/* panel detal */} -
+
{loading && (
diff --git a/web/app/components/workflow/run/node.tsx b/web/app/components/workflow/run/node.tsx index f0f7ec5173..bc63503ece 100644 --- a/web/app/components/workflow/run/node.tsx +++ b/web/app/components/workflow/run/node.tsx @@ -3,24 +3,25 @@ import { useTranslation } from 'react-i18next' import type { FC } from 'react' import { useCallback, useEffect, useState } from 'react' import { + RiAlertFill, RiArrowRightSLine, - RiCheckboxCircleLine, - RiErrorWarningLine, + RiCheckboxCircleFill, + RiErrorWarningFill, RiLoader2Line, } from '@remixicon/react' import BlockIcon from '../block-icon' import { BlockEnum } from '../types' import Split from '../nodes/_base/components/split' import cn from '@/utils/classnames' +import StatusContainer from '@/app/components/workflow/run/status-container' import CodeEditor from '@/app/components/workflow/nodes/_base/components/editor/code-editor' import { CodeLanguage } from '@/app/components/workflow/nodes/code/types' -import { AlertTriangle } from '@/app/components/base/icons/src/vender/line/alertsAndFeedback' import type { NodeTracing } from '@/types/workflow' type Props = { className?: string nodeInfo: NodeTracing - hideInfo?: boolean + inMessage?: boolean hideProcessDetail?: boolean onShowIterationDetail?: (detail: NodeTracing[][]) => void notShowIterationNav?: boolean @@ -30,7 +31,7 @@ type Props = { const NodePanel: FC = ({ className, nodeInfo, - hideInfo = false, + inMessage = false, hideProcessDetail, onShowIterationDetail, notShowIterationNav, @@ -72,65 +73,64 @@ const NodePanel: FC = ({ onShowIterationDetail?.(nodeInfo.details || []) } return ( -
-
+
+
setCollapseState(!collapseState)} > {!hideProcessDetail && ( )} - - +
{nodeInfo.title}
- {nodeInfo.status !== 'running' && !hideInfo && ( -
{`${getTime(nodeInfo.elapsed_time || 0)} · ${getTokenCount(nodeInfo.execution_metadata?.total_tokens || 0)} tokens`}
+ {nodeInfo.status !== 'running' && !inMessage && ( +
{`${getTime(nodeInfo.elapsed_time || 0)} · ${getTokenCount(nodeInfo.execution_metadata?.total_tokens || 0)} tokens`}
)} {nodeInfo.status === 'succeeded' && ( - + )} {nodeInfo.status === 'failed' && ( - + )} {nodeInfo.status === 'stopped' && ( - + )} {nodeInfo.status === 'running' && ( -
- Running - -
+ )}
{!collapseState && !hideProcessDetail && ( -
+
{/* The nav to the iteration detail */} {isIterationNode && !notShowIterationNav && (
-
{t('workflow.nodes.iteration.iteration', { count: nodeInfo.metadata?.iterator_length })}
+
{t('workflow.nodes.iteration.iteration', { count: nodeInfo.metadata?.iterator_length })}
{justShowIterationNavArrow ? ( - + ) : ( -
-
{t('workflow.common.viewDetailInTracingPanel')}
+
+
{t('workflow.common.viewDetailInTracingPanel')}
)} @@ -138,16 +138,20 @@ const NodePanel: FC = ({
)} -
+
{nodeInfo.status === 'stopped' && ( -
{t('workflow.tracing.stopBy', { user: nodeInfo.created_by ? nodeInfo.created_by.name : 'N/A' })}
+ + {t('workflow.tracing.stopBy', { user: nodeInfo.created_by ? nodeInfo.created_by.name : 'N/A' })} + )} {nodeInfo.status === 'failed' && ( -
{nodeInfo.error}
+ + {nodeInfo.error} + )}
{nodeInfo.inputs && ( -
+
{t('workflow.common.input').toLocaleUpperCase()}
} @@ -158,7 +162,7 @@ const NodePanel: FC = ({
)} {nodeInfo.process_data && ( -
+
{t('workflow.common.processData').toLocaleUpperCase()}
} @@ -169,7 +173,7 @@ const NodePanel: FC = ({
)} {nodeInfo.outputs && ( -
+
{t('workflow.common.output').toLocaleUpperCase()}
} diff --git a/web/app/components/workflow/run/status.tsx b/web/app/components/workflow/run/status.tsx index 53abccb6af..6299302209 100644 --- a/web/app/components/workflow/run/status.tsx +++ b/web/app/components/workflow/run/status.tsx @@ -62,7 +62,7 @@ const StatusPanel: FC = ({
{t('runLog.resultPanel.time')}
-
+
{status === 'running' && (
)} @@ -73,7 +73,7 @@ const StatusPanel: FC = ({
{t('runLog.resultPanel.tokens')}
-
+
{status === 'running' && (
)} diff --git a/web/app/components/workflow/run/tracing-panel.tsx b/web/app/components/workflow/run/tracing-panel.tsx index de2eb09b39..874e05576a 100644 --- a/web/app/components/workflow/run/tracing-panel.tsx +++ b/web/app/components/workflow/run/tracing-panel.tsx @@ -10,7 +10,7 @@ type TracingPanelProps = { const TracingPanel: FC = ({ list, onShowIterationDetail }) => { return ( -
+
{list.map(node => (