feat: introduce trigger functionality (#27644)

Signed-off-by: lyzno1 <yuanyouhuilyz@gmail.com>
Co-authored-by: Stream <Stream_2@qq.com>
Co-authored-by: lyzno1 <92089059+lyzno1@users.noreply.github.com>
Co-authored-by: zhsama <torvalds@linux.do>
Co-authored-by: Harry <xh001x@hotmail.com>
Co-authored-by: lyzno1 <yuanyouhuilyz@gmail.com>
Co-authored-by: yessenia <yessenia.contact@gmail.com>
Co-authored-by: hjlarry <hjlarry@163.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: WTW0313 <twwu@dify.ai>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
Yeuoly
2025-11-12 17:59:37 +08:00
committed by GitHub
parent ca7794305b
commit b76e17b25d
785 changed files with 41186 additions and 3725 deletions

View File

@@ -5,6 +5,8 @@ import { useContext } from 'use-context-selector'
import { useTranslation } from 'react-i18next'
import OutputPanel from './output-panel'
import ResultPanel from './result-panel'
import StatusPanel from './status'
import { WorkflowRunningStatus } from '@/app/components/workflow/types'
import TracingPanel from './tracing-panel'
import cn from '@/utils/classnames'
import { ToastContext } from '@/app/components/base/toast'
@@ -12,6 +14,8 @@ import Loading from '@/app/components/base/loading'
import { fetchRunDetail, fetchTracingList } from '@/service/log'
import type { NodeTracing } from '@/types/workflow'
import type { WorkflowRunDetailResponse } from '@/models/log'
import { useStore } from '../store'
export type RunProps = {
hideResult?: boolean
activeTab?: 'RESULT' | 'DETAIL' | 'TRACING'
@@ -33,6 +37,7 @@ const RunPanel: FC<RunProps> = ({
const [loading, setLoading] = useState<boolean>(true)
const [runDetail, setRunDetail] = useState<WorkflowRunDetailResponse>()
const [list, setList] = useState<NodeTracing[]>([])
const isListening = useStore(s => s.isListening)
const executor = useMemo(() => {
if (runDetail?.created_by_role === 'account')
@@ -89,6 +94,11 @@ const RunPanel: FC<RunProps> = ({
await getTracingList()
}
useEffect(() => {
if (isListening)
setCurrentTab('DETAIL')
}, [isListening])
useEffect(() => {
// fetch data
if (runDetailUrl && tracingListUrl)
@@ -166,6 +176,11 @@ const RunPanel: FC<RunProps> = ({
exceptionCounts={runDetail.exceptions_count}
/>
)}
{!loading && currentTab === 'DETAIL' && !runDetail && isListening && (
<StatusPanel
status={WorkflowRunningStatus.Running}
/>
)}
{!loading && currentTab === 'TRACING' && (
<TracingPanel
className='bg-background-section-burn'

View File

@@ -14,6 +14,7 @@ const StatusContainer: FC<Props> = ({
children,
}) => {
const { theme } = useTheme()
return (
<div
className={cn(

View File

@@ -5,6 +5,7 @@ import cn from '@/utils/classnames'
import Indicator from '@/app/components/header/indicator'
import StatusContainer from '@/app/components/workflow/run/status-container'
import { useDocLink } from '@/context/i18n'
import { useStore } from '../store'
type ResultProps = {
status: string
@@ -23,6 +24,7 @@ const StatusPanel: FC<ResultProps> = ({
}) => {
const { t } = useTranslation()
const docLink = useDocLink()
const isListening = useStore(s => s.isListening)
return (
<StatusContainer status={status}>
@@ -45,7 +47,7 @@ const StatusPanel: FC<ResultProps> = ({
{status === 'running' && (
<>
<Indicator color={'blue'} />
<span>Running</span>
<span>{isListening ? 'Listening' : 'Running'}</span>
</>
)}
{status === 'succeeded' && (

View File

@@ -148,7 +148,7 @@ const format = (list: NodeTracing[], t: any, isPrint?: boolean): NodeTracing[] =
return false
const isParallelStartNode = node.parallelDetail?.isParallelStartNode
// eslint-disable-next-line sonarjs/prefer-single-boolean-return
if (!isParallelStartNode)
return false