chore: clarify tracing error copy to direct users to the Tracing tab (#35153)

This commit is contained in:
Joel 2026-04-14 16:15:07 +08:00 committed by GitHub
parent a951cc996b
commit d7ad2baf79
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
32 changed files with 167 additions and 52 deletions

12
pnpm-lock.yaml generated
View File

@ -24,9 +24,6 @@ catalogs:
'@cucumber/cucumber':
specifier: 12.8.0
version: 12.8.0
'@date-fns/tz':
specifier: 1.4.1
version: 1.4.1
'@egoist/tailwindcss-icons':
specifier: 1.9.2
version: 1.9.2
@ -270,9 +267,6 @@ catalogs:
cron-parser:
specifier: 5.5.0
version: 5.5.0
date-fns:
specifier: 4.1.0
version: 4.1.0
dayjs:
specifier: 1.11.20
version: 1.11.20
@ -655,9 +649,6 @@ importers:
'@base-ui/react':
specifier: 'catalog:'
version: 1.4.0(@date-fns/tz@1.4.1)(@types/react@19.2.14)(date-fns@4.1.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@date-fns/tz':
specifier: 'catalog:'
version: 1.4.1
'@emoji-mart/data':
specifier: 'catalog:'
version: 1.2.1
@ -760,9 +751,6 @@ importers:
cron-parser:
specifier: 'catalog:'
version: 5.5.0
date-fns:
specifier: 'catalog:'
version: 4.1.0
dayjs:
specifier: 'catalog:'
version: 1.11.20

View File

@ -42,12 +42,10 @@ const renderOpenSelect = ({
describe('Select wrappers', () => {
describe('Select root integration', () => {
it('should associate the hidden input with an external form and preserve autocomplete hints', () => {
const formId = 'profile-form'
it('should submit the hidden input value and preserve autocomplete hints inside a form', () => {
const { container } = render(
<>
<form id={formId} />
<Select defaultValue="seattle" name="city" form={formId} autoComplete="address-level2">
<form aria-label="profile form">
<Select defaultValue="seattle" name="city" autoComplete="address-level2">
<SelectTrigger aria-label="city select">
<SelectValue />
</SelectTrigger>
@ -56,13 +54,12 @@ describe('Select wrappers', () => {
<SelectItem value="new-york">New York</SelectItem>
</SelectContent>
</Select>
</>,
</form>,
)
const hiddenInput = container.querySelector('input[name="city"]')
const form = container.querySelector(`#${formId}`) as HTMLFormElement
const form = screen.getByRole('form', { name: 'profile form' }) as HTMLFormElement
expect(hiddenInput).toHaveAttribute('form', formId)
expect(hiddenInput).toHaveAttribute('autocomplete', 'address-level2')
expect(new FormData(form).get('city')).toBe('seattle')
})

View File

@ -33,7 +33,18 @@ vi.mock('@/app/components/workflow/hooks', () => ({
}))
vi.mock('@/app/components/workflow/run/result-panel', () => ({
default: ({ status }: { status?: string }) => <div data-testid="result-panel">{status}</div>,
default: ({
status,
onOpenTracingTab,
}: {
status?: string
onOpenTracingTab?: () => void
}) => (
<div data-testid="result-panel">
<div>{status}</div>
<button type="button" onClick={onOpenTracingTab}>open-tracing</button>
</div>
),
}))
vi.mock('@/app/components/workflow/run/result-text', () => ({
@ -329,6 +340,33 @@ describe('WorkflowPreview', () => {
expect(screen.getByTestId('result-panel')).toBeInTheDocument()
})
it('should switch to the tracing tab when result panel requests it', async () => {
const user = userEvent.setup()
renderWorkflowComponent(
<WorkflowPreview />,
{
initialStoreState: {
workflowRunningData: {
...createWorkflowRunningData({
result: createWorkflowResult({
status: 'partial-succeeded',
files: [],
}),
tracing: [createNodeTracing()],
}),
resultText: 'ready',
} as NonNullable<Shape['workflowRunningData']>,
},
},
)
await user.click(screen.getByText('runLog.detail'))
await user.click(screen.getByRole('button', { name: 'open-tracing' }))
expect(screen.getByTestId('tracing-panel')).toHaveTextContent('1')
})
it('should resize the preview panel within the allowed workflow canvas bounds', async () => {
const { container, store } = renderWorkflowComponent(
<WorkflowPreview />,

View File

@ -101,6 +101,10 @@ const WorkflowPreview = () => {
await submitHumanInputForm(formToken, formData)
}, [])
const handleOpenTracingTab = useCallback(() => {
switchTab('TRACING')
}, [])
return (
<div
className="relative flex h-full flex-col rounded-l-2xl border-[0.5px] border-components-panel-border bg-components-panel-bg shadow-xl"
@ -236,6 +240,7 @@ const WorkflowPreview = () => {
created_by={(workflowRunningData?.result?.created_by as any)?.name}
steps={workflowRunningData?.result?.total_steps}
exceptionCounts={workflowRunningData?.result?.exceptions_count}
onOpenTracingTab={handleOpenTracingTab}
/>
)}
{currentTab === 'DETAIL' && !workflowRunningData?.result && (

View File

@ -1,11 +1,60 @@
import type { WorkflowPausedDetailsResponse } from '@/models/log'
import { render, screen } from '@testing-library/react'
import { fireEvent, render, screen } from '@testing-library/react'
import { cloneElement, isValidElement } from 'react'
import { createDocLinkMock, resolveDocLink } from '../../__tests__/i18n'
import Status from '../status'
const mockDocLink = createDocLinkMock()
const mockUseWorkflowPausedDetails = vi.fn()
vi.mock('react-i18next', () => ({
useTranslation: () => ({
t: (key: string, options?: Record<string, unknown>) => {
const fullKey = options?.ns ? `${options.ns}.${key}` : key
if (fullKey === 'workflow.nodes.common.errorHandle.partialSucceeded.tip')
return 'There are {{num}} nodes in the process running abnormally, please go to TRACING to check the logs.'
const params = { ...options }
delete params.ns
const suffix = Object.keys(params).length > 0 ? `:${JSON.stringify(params)}` : ''
return `${fullKey}${suffix}`
},
}),
Trans: ({
i18nKey,
values,
components,
}: {
i18nKey: string
values?: {
num?: string | number
}
components?: Record<string, React.ReactNode>
}) => {
if (i18nKey !== 'nodes.common.errorHandle.partialSucceeded.tip')
return <span>{i18nKey}</span>
const tracingLink = components?.tracingLink
const tracingNode = isValidElement(tracingLink)
? cloneElement(tracingLink, undefined, 'TRACING')
: 'TRACING'
return (
<span>
There are
{' '}
{values?.num}
{' '}
nodes in the process running abnormally, please go to
{' '}
{tracingNode}
{' '}
to check the logs.
</span>
)
},
}))
vi.mock('@/context/i18n', () => ({
useDocLink: () => mockDocLink,
}))
@ -64,14 +113,24 @@ describe('Status', () => {
expect(screen.getByText('FAIL')).toBeInTheDocument()
expect(screen.getByText('Something broke')).toBeInTheDocument()
expect(screen.getByText('workflow.nodes.common.errorHandle.partialSucceeded.tip:{"num":2}')).toBeInTheDocument()
expect(screen.getAllByText((_, element) => element?.textContent === 'There are 2 nodes in the process running abnormally, please go to TRACING to check the logs.')).toHaveLength(2)
})
it('renders the partial-succeeded warning summary', () => {
render(<Status status="partial-succeeded" exceptionCounts={3} />)
expect(screen.getByText('PARTIAL SUCCESS')).toBeInTheDocument()
expect(screen.getByText('workflow.nodes.common.errorHandle.partialSucceeded.tip:{"num":3}')).toBeInTheDocument()
expect(screen.getAllByText((_, element) => element?.textContent === 'There are 3 nodes in the process running abnormally, please go to TRACING to check the logs.')).toHaveLength(2)
})
it('opens the tracing tab when clicking the TRACING link', () => {
const onOpenTracingTab = vi.fn()
render(<Status status="partial-succeeded" exceptionCounts={3} onOpenTracingTab={onOpenTracingTab} />)
fireEvent.click(screen.getByRole('link', { name: 'TRACING' }))
expect(onOpenTracingTab).toHaveBeenCalledTimes(1)
})
it('renders the exception learn-more link', () => {

View File

@ -174,6 +174,7 @@ const RunPanel: FC<RunProps> = ({
exceptionCounts={runDetail.exceptions_count}
isListening={isListening}
workflowRunId={runDetail.id}
onOpenTracingTab={() => switchTab('TRACING')}
/>
)}
{!loading && currentTab === 'DETAIL' && !runDetail && isListening && (

View File

@ -42,6 +42,7 @@ export type ResultPanelProps = {
execution_metadata?: any
isListening?: boolean
workflowRunId?: string
onOpenTracingTab?: () => void
handleShowIterationResultList?: (detail: NodeTracing[][], iterDurationMap: any) => void
handleShowLoopResultList?: (detail: NodeTracing[][], loopDurationMap: any) => void
onShowRetryDetail?: (detail: NodeTracing[]) => void
@ -69,6 +70,7 @@ const ResultPanel: FC<ResultPanelProps> = ({
execution_metadata,
isListening = false,
workflowRunId,
onOpenTracingTab,
handleShowIterationResultList,
handleShowLoopResultList,
onShowRetryDetail,
@ -92,6 +94,7 @@ const ResultPanel: FC<ResultPanelProps> = ({
exceptionCounts={exceptionCounts}
isListening={isListening}
workflowRunId={workflowRunId}
onOpenTracingTab={onOpenTracingTab}
/>
</div>
<div className="px-4">

View File

@ -1,7 +1,7 @@
'use client'
import type { FC } from 'react'
import { useMemo } from 'react'
import { useTranslation } from 'react-i18next'
import { Trans, useTranslation } from 'react-i18next'
import Indicator from '@/app/components/header/indicator'
import StatusContainer from '@/app/components/workflow/run/status-container'
import { useDocLink } from '@/context/i18n'
@ -16,6 +16,7 @@ type ResultProps = {
exceptionCounts?: number
isListening?: boolean
workflowRunId?: string
onOpenTracingTab?: () => void
}
const StatusPanel: FC<ResultProps> = ({
@ -26,6 +27,7 @@ const StatusPanel: FC<ResultProps> = ({
exceptionCounts,
isListening = false,
workflowRunId,
onOpenTracingTab,
}) => {
const { t } = useTranslation()
const docLink = useDocLink()
@ -65,6 +67,30 @@ const StatusPanel: FC<ResultProps> = ({
return inputURLs
}, [pausedDetails])
const partialSucceededTip = exceptionCounts
? (
<Trans
i18nKey="nodes.common.errorHandle.partialSucceeded.tip"
ns="workflow"
values={{ num: exceptionCounts }}
components={{
tracingLink: onOpenTracingTab
? (
<a
href="#tracing"
className="cursor-pointer text-text-accent hover:underline"
onClick={(e) => {
e.preventDefault()
onOpenTracingTab()
}}
/>
)
: <span />,
}}
/>
)
: null
return (
<StatusContainer status={status}>
<div className="flex">
@ -160,7 +186,7 @@ const StatusPanel: FC<ResultProps> = ({
<>
<div className="my-2 h-[0.5px] bg-divider-subtle" />
<div className="system-xs-regular text-text-destructive">
{t('nodes.common.errorHandle.partialSucceeded.tip', { ns: 'workflow', num: exceptionCounts })}
{partialSucceededTip}
</div>
</>
)
@ -172,7 +198,7 @@ const StatusPanel: FC<ResultProps> = ({
<>
<div className="my-2 h-[0.5px] bg-divider-deep" />
<div className="system-xs-medium text-text-warning">
{t('nodes.common.errorHandle.partialSucceeded.tip', { ns: 'workflow', num: exceptionCounts })}
{partialSucceededTip}
</div>
</>
)

View File

@ -433,7 +433,7 @@
"nodes.common.errorHandle.failBranch.title": "فرع الفشل",
"nodes.common.errorHandle.none.desc": "ستتوقف العقدة عن العمل في حالة حدوث استثناء ولم يتم التعامل معه",
"nodes.common.errorHandle.none.title": "لا شيء",
"nodes.common.errorHandle.partialSucceeded.tip": "هناك {{num}} عقد في العملية تعمل بشكل غير طبيعي، يرجى الانتقال إلى التتبع للتحقق من السجلات.",
"nodes.common.errorHandle.partialSucceeded.tip": "هناك {{num}} عقد في العملية تعمل بشكل غير طبيعي، يرجى الانتقال إلى <tracingLink>التتبع</tracingLink> للتحقق من السجلات.",
"nodes.common.errorHandle.tip": "استراتيجية التعامل مع الاستثناءات، يتم تشغيلها عندما تواجه العقدة استثناءً.",
"nodes.common.errorHandle.title": "معالجة الأخطاء",
"nodes.common.inputVars": "متغيرات الإدخال",

View File

@ -433,7 +433,7 @@
"nodes.common.errorHandle.failBranch.title": "Fehlgeschlagener Zweig",
"nodes.common.errorHandle.none.desc": "Der Knoten wird nicht mehr ausgeführt, wenn eine Ausnahme auftritt und nicht behandelt wird",
"nodes.common.errorHandle.none.title": "Nichts",
"nodes.common.errorHandle.partialSucceeded.tip": "Es gibt {{num}} Knoten im Prozess, die nicht normal laufen, bitte gehen Sie zur Ablaufverfolgung, um die Protokolle zu überprüfen.",
"nodes.common.errorHandle.partialSucceeded.tip": "Es gibt {{num}} Knoten im Prozess, die nicht normal laufen, bitte gehen Sie zur <tracingLink>Ablaufverfolgung</tracingLink>, um die Protokolle zu überprüfen.",
"nodes.common.errorHandle.tip": "Ausnahmebehandlungsstrategie, die ausgelöst wird, wenn ein Knoten auf eine Ausnahme stößt.",
"nodes.common.errorHandle.title": "Fehlerbehandlung",
"nodes.common.inputVars": "Eingabevariablen",

View File

@ -433,7 +433,7 @@
"nodes.common.errorHandle.failBranch.title": "Fail Branch",
"nodes.common.errorHandle.none.desc": "The node will stop running if an exception occurs and is not handled",
"nodes.common.errorHandle.none.title": "None",
"nodes.common.errorHandle.partialSucceeded.tip": "There are {{num}} nodes in the process running abnormally, please go to tracing to check the logs.",
"nodes.common.errorHandle.partialSucceeded.tip": "There are {{num}} nodes in the process running abnormally, please go to <tracingLink>TRACING</tracingLink> to check the logs.",
"nodes.common.errorHandle.tip": "Exception handling strategy, triggered when a node encounters an exception.",
"nodes.common.errorHandle.title": "Error Handling",
"nodes.common.inputVars": "Input Variables",

View File

@ -433,7 +433,7 @@
"nodes.common.errorHandle.failBranch.title": "Rama de error",
"nodes.common.errorHandle.none.desc": "El nodo dejará de ejecutarse si se produce una excepción y no se controla",
"nodes.common.errorHandle.none.title": "Ninguno",
"nodes.common.errorHandle.partialSucceeded.tip": "Hay nodos {{num}} en el proceso que se ejecutan de manera anormal, vaya a rastreo para verificar los registros.",
"nodes.common.errorHandle.partialSucceeded.tip": "Hay nodos {{num}} en el proceso que se ejecutan de manera anormal, vaya a <tracingLink>rastreo</tracingLink> para verificar los registros.",
"nodes.common.errorHandle.tip": "Estrategia de control de excepciones, que se desencadena cuando un nodo encuentra una excepción.",
"nodes.common.errorHandle.title": "Manejo de errores",
"nodes.common.inputVars": "Variables de entrada",

View File

@ -433,7 +433,7 @@
"nodes.common.errorHandle.failBranch.title": "شاخه شکست",
"nodes.common.errorHandle.none.desc": "اگر استثنایی رخ دهد و مدیریت نشود، گره از کار می‌افتد",
"nodes.common.errorHandle.none.title": "هیچ‌کدام",
"nodes.common.errorHandle.partialSucceeded.tip": "{{num}} گره با خطا مواجه شدند؛ برای بررسی لاگ‌ها به ردیابی مراجعه کنید.",
"nodes.common.errorHandle.partialSucceeded.tip": "{{num}} گره با خطا مواجه شدند؛ برای بررسی لاگ‌ها به <tracingLink>ردیابی</tracingLink> مراجعه کنید.",
"nodes.common.errorHandle.tip": "استراتژی مدیریت استثنا؛ زمانی که گره با خطا مواجه شود فعال می‌شود.",
"nodes.common.errorHandle.title": "مدیریت خطا",
"nodes.common.inputVars": "متغیرهای ورودی",

View File

@ -433,7 +433,7 @@
"nodes.common.errorHandle.failBranch.title": "Branche déchec",
"nodes.common.errorHandle.none.desc": "Le nœud cessera de sexécuter si une exception se produit et nest pas gérée",
"nodes.common.errorHandle.none.title": "Aucun",
"nodes.common.errorHandle.partialSucceeded.tip": "Il y a des nœuds {{num}} dans le processus qui fonctionnent anormalement, veuillez aller dans le traçage pour vérifier les journaux.",
"nodes.common.errorHandle.partialSucceeded.tip": "Il y a des nœuds {{num}} dans le processus qui fonctionnent anormalement, veuillez aller dans le <tracingLink>traçage</tracingLink> pour vérifier les journaux.",
"nodes.common.errorHandle.tip": "Stratégie de gestion des exceptions, déclenchée lorsquun nœud rencontre une exception.",
"nodes.common.errorHandle.title": "Gestion des erreurs",
"nodes.common.inputVars": "Variables dentrée",

View File

@ -433,7 +433,7 @@
"nodes.common.errorHandle.failBranch.title": "असफल शाखा",
"nodes.common.errorHandle.none.desc": "यदि कोई अपवाद होता है और हैंडल नहीं किया जाता है, तो नोड चलना बंद कर देगा",
"nodes.common.errorHandle.none.title": "कोई नहीं",
"nodes.common.errorHandle.partialSucceeded.tip": "प्रक्रिया में {{num}} नोड्स असामान्य रूप से चल रहे हैं, कृपया लॉग की जांच करने के लिए ट्रेसिंग पर जाएं।",
"nodes.common.errorHandle.partialSucceeded.tip": "प्रक्रिया में {{num}} नोड्स असामान्य रूप से चल रहे हैं, कृपया लॉग की जांच करने के लिए <tracingLink>ट्रेसिंग</tracingLink> पर जाएं।",
"nodes.common.errorHandle.tip": "अपवाद हैंडलिंग रणनीति, ट्रिगर जब एक नोड एक अपवाद का सामना करता है।",
"nodes.common.errorHandle.title": "त्रुटि हैंडलिंग",
"nodes.common.inputVars": "इनपुट चर",

View File

@ -433,7 +433,7 @@
"nodes.common.errorHandle.failBranch.title": "Cabang Gagal",
"nodes.common.errorHandle.none.desc": "Node akan berhenti berjalan jika pengecualian terjadi dan tidak ditangani",
"nodes.common.errorHandle.none.title": "Tidak",
"nodes.common.errorHandle.partialSucceeded.tip": "Ada {{num}} node dalam proses yang berjalan tidak normal, silakan pergi ke tracing untuk memeriksa log.",
"nodes.common.errorHandle.partialSucceeded.tip": "Ada {{num}} node dalam proses yang berjalan tidak normal, silakan pergi ke <tracingLink>tracing</tracingLink> untuk memeriksa log.",
"nodes.common.errorHandle.tip": "Strategi penanganan pengecualian, dipicu ketika simpul menemukan pengecualian.",
"nodes.common.errorHandle.title": "Penanganan Kesalahan",
"nodes.common.inputVars": "Variabel Masukan",

View File

@ -433,7 +433,7 @@
"nodes.common.errorHandle.failBranch.title": "Ramo fallito",
"nodes.common.errorHandle.none.desc": "L'esecuzione del nodo verrà interrotta se si verifica un'eccezione e non viene gestita",
"nodes.common.errorHandle.none.title": "Nessuno",
"nodes.common.errorHandle.partialSucceeded.tip": "Ci sono {{num}} nodi nel processo che funzionano in modo anomalo, si prega di andare su tracing per controllare i log.",
"nodes.common.errorHandle.partialSucceeded.tip": "Ci sono {{num}} nodi nel processo che funzionano in modo anomalo, si prega di andare su <tracingLink>tracing</tracingLink> per controllare i log.",
"nodes.common.errorHandle.tip": "Strategia di gestione delle eccezioni, attivata quando un nodo rileva un'eccezione.",
"nodes.common.errorHandle.title": "Gestione degli errori",
"nodes.common.inputVars": "Variabili di input",

View File

@ -433,7 +433,7 @@
"nodes.common.errorHandle.failBranch.title": "例外分岐",
"nodes.common.errorHandle.none.desc": "例外発生時に処理を停止",
"nodes.common.errorHandle.none.title": "処理なし",
"nodes.common.errorHandle.partialSucceeded.tip": "{{num}}個のノードで異常発生。ログはトレース画面で確認可能",
"nodes.common.errorHandle.partialSucceeded.tip": "{{num}}個のノードで異常発生。ログは<tracingLink>トレース</tracingLink>画面で確認可能",
"nodes.common.errorHandle.tip": "ノード例外発生時の処理ポリシーを設定",
"nodes.common.errorHandle.title": "例外処理",
"nodes.common.inputVars": "入力変数",

View File

@ -433,7 +433,7 @@
"nodes.common.errorHandle.failBranch.title": "실패 분기",
"nodes.common.errorHandle.none.desc": "예외가 발생하고 처리되지 않으면 노드 실행이 중지됩니다",
"nodes.common.errorHandle.none.title": "없음",
"nodes.common.errorHandle.partialSucceeded.tip": "프로세스에 {{num}} 노드가 비정상적으로 실행 중입니다. 추적으로 이동하여 로그를 확인하십시오.",
"nodes.common.errorHandle.partialSucceeded.tip": "프로세스에 {{num}} 노드가 비정상적으로 실행 중입니다. <tracingLink>추적</tracingLink>으로 이동하여 로그를 확인하십시오.",
"nodes.common.errorHandle.tip": "노드에 예외가 발생할 때 트리거되는 예외 처리 전략입니다.",
"nodes.common.errorHandle.title": "오류 처리",
"nodes.common.inputVars": "입력 변수",

View File

@ -433,7 +433,7 @@
"nodes.common.errorHandle.failBranch.title": "Fail Branch",
"nodes.common.errorHandle.none.desc": "The node will stop running if an exception occurs and is not handled",
"nodes.common.errorHandle.none.title": "None",
"nodes.common.errorHandle.partialSucceeded.tip": "There are {{num}} nodes in the process running abnormally, please go to tracing to check the logs.",
"nodes.common.errorHandle.partialSucceeded.tip": "There are {{num}} nodes in the process running abnormally, please go to <tracingLink>tracing</tracingLink> to check the logs.",
"nodes.common.errorHandle.tip": "Exception handling strategy, triggered when a node encounters an exception.",
"nodes.common.errorHandle.title": "Error Handling",
"nodes.common.inputVars": "Input Variables",

View File

@ -433,7 +433,7 @@
"nodes.common.errorHandle.failBranch.title": "Gałąź Fail (Gałąź Niepowodzenia",
"nodes.common.errorHandle.none.desc": "Węzeł przestanie działać, jeśli wystąpi wyjątek i nie zostanie obsłużony",
"nodes.common.errorHandle.none.title": "Żaden",
"nodes.common.errorHandle.partialSucceeded.tip": "W procesie {{num}} węzły działają nieprawidłowo, przejdź do śledzenia, aby sprawdzić dzienniki.",
"nodes.common.errorHandle.partialSucceeded.tip": "W procesie {{num}} węzły działają nieprawidłowo, przejdź do <tracingLink>śledzenia</tracingLink>, aby sprawdzić dzienniki.",
"nodes.common.errorHandle.tip": "Strategia obsługi wyjątków, wyzwalana, gdy węzeł napotka wyjątek.",
"nodes.common.errorHandle.title": "Obsługa błędów",
"nodes.common.inputVars": "Zmienne wejściowe",

View File

@ -433,7 +433,7 @@
"nodes.common.errorHandle.failBranch.title": "Ramificação com falha",
"nodes.common.errorHandle.none.desc": "O nó deixará de ser executado se ocorrer uma exceção e não for tratada",
"nodes.common.errorHandle.none.title": "Nenhum",
"nodes.common.errorHandle.partialSucceeded.tip": "Existem {{num}} nós no processo em execução anormal, vá para rastreamento para verificar os logs.",
"nodes.common.errorHandle.partialSucceeded.tip": "Existem {{num}} nós no processo em execução anormal, vá para <tracingLink>rastreamento</tracingLink> para verificar os logs.",
"nodes.common.errorHandle.tip": "Estratégia de tratamento de exceções, disparada quando um nó encontra uma exceção.",
"nodes.common.errorHandle.title": "Tratamento de erros",
"nodes.common.inputVars": "Variáveis de entrada",

View File

@ -433,7 +433,7 @@
"nodes.common.errorHandle.failBranch.title": "Ramură Fail",
"nodes.common.errorHandle.none.desc": "Nodul se va opri din rulare dacă apare o excepție și nu este gestionat",
"nodes.common.errorHandle.none.title": "Niciunul",
"nodes.common.errorHandle.partialSucceeded.tip": "Există {{num}} noduri în proces care rulează anormal, vă rugăm să mergeți la urmărire pentru a verifica jurnalele.",
"nodes.common.errorHandle.partialSucceeded.tip": "Există {{num}} noduri în proces care rulează anormal, vă rugăm să mergeți la <tracingLink>urmărire</tracingLink> pentru a verifica jurnalele.",
"nodes.common.errorHandle.tip": "Strategie de gestionare a excepțiilor, declanșată atunci când un nod întâlnește o excepție.",
"nodes.common.errorHandle.title": "Gestionarea erorilor",
"nodes.common.inputVars": "Variabile de intrare",

View File

@ -433,7 +433,7 @@
"nodes.common.errorHandle.failBranch.title": "Неудачная ветвь",
"nodes.common.errorHandle.none.desc": "Узел перестанет работать, если произойдет исключение и оно не будет обработано",
"nodes.common.errorHandle.none.title": "Никакой",
"nodes.common.errorHandle.partialSucceeded.tip": "В процессе есть {{num}} узлов, которые работают ненормально, пожалуйста, перейдите к трассировке, чтобы проверить логи.",
"nodes.common.errorHandle.partialSucceeded.tip": "В процессе есть {{num}} узлов, которые работают ненормально, пожалуйста, перейдите к <tracingLink>трассировке</tracingLink>, чтобы проверить логи.",
"nodes.common.errorHandle.tip": "Стратегия обработки исключений, запускаемая при обнаружении исключения на узле.",
"nodes.common.errorHandle.title": "Обработка ошибок",
"nodes.common.inputVars": "Входные переменные",

View File

@ -433,7 +433,7 @@
"nodes.common.errorHandle.failBranch.title": "Napaka veja",
"nodes.common.errorHandle.none.desc": "Vozlišče se bo prenehalo izvajati, če pride do izjeme, ki ni obravnavana.",
"nodes.common.errorHandle.none.title": "Noben",
"nodes.common.errorHandle.partialSucceeded.tip": "V procesu je {{num}} vozlišč, ki delujejo nenormalno, prosim, pojdite na sledenje, da preverite dnevnike.",
"nodes.common.errorHandle.partialSucceeded.tip": "V procesu je {{num}} vozlišč, ki delujejo nenormalno, prosim, pojdite na <tracingLink>sledenje</tracingLink>, da preverite dnevnike.",
"nodes.common.errorHandle.tip": "Strategija ravnanja z izjemo, ki se sproži, ko vozlišče naleti na izjemo.",
"nodes.common.errorHandle.title": "Obvladovanje napak",
"nodes.common.inputVars": "Vhodne spremenljivke",

View File

@ -433,7 +433,7 @@
"nodes.common.errorHandle.failBranch.title": "สาขาล้มเหลว",
"nodes.common.errorHandle.none.desc": "โหนดจะหยุดทํางานหากเกิดข้อยกเว้นและไม่ได้รับการจัดการ",
"nodes.common.errorHandle.none.title": "ไม่มีใคร",
"nodes.common.errorHandle.partialSucceeded.tip": "มีโหนด {{num}} ในกระบวนการที่ทํางานผิดปกติ โปรดไปที่การติดตามเพื่อตรวจสอบบันทึก",
"nodes.common.errorHandle.partialSucceeded.tip": "มีโหนด {{num}} ในกระบวนการที่ทํางานผิดปกติ โปรดไปที่<tracingLink>การติดตาม</tracingLink>เพื่อตรวจสอบบันทึก",
"nodes.common.errorHandle.tip": "กลยุทธ์การจัดการข้อยกเว้น ทริกเกอร์เมื่อโหนดพบข้อยกเว้น",
"nodes.common.errorHandle.title": "การจัดการข้อผิดพลาด",
"nodes.common.inputVars": "ตัวแปรอินพุต",

View File

@ -433,7 +433,7 @@
"nodes.common.errorHandle.failBranch.title": "Başarısız Dal",
"nodes.common.errorHandle.none.desc": "Bir özel durum oluşursa ve işlenmezse düğüm çalışmayı durdurur",
"nodes.common.errorHandle.none.title": "Hiç kimse",
"nodes.common.errorHandle.partialSucceeded.tip": "İşlemde anormal şekilde çalışan {{num}} düğümleri var, lütfen günlükleri kontrol etmek için izlemeye gidin.",
"nodes.common.errorHandle.partialSucceeded.tip": "İşlemde anormal şekilde çalışan {{num}} düğümleri var, lütfen günlükleri kontrol etmek için <tracingLink>izlemeye</tracingLink> gidin.",
"nodes.common.errorHandle.tip": "Bir düğüm bir özel durumla karşılaştığında tetiklenen özel durum işleme stratejisi.",
"nodes.common.errorHandle.title": "Hata İşleme",
"nodes.common.inputVars": "Giriş Değişkenleri",

View File

@ -433,7 +433,7 @@
"nodes.common.errorHandle.failBranch.title": "Гілка невдачі",
"nodes.common.errorHandle.none.desc": "Вузол припинить роботу, якщо виникне виняток і не буде оброблений",
"nodes.common.errorHandle.none.title": "Ніхто",
"nodes.common.errorHandle.partialSucceeded.tip": "У процесі є вузли {{num}}, які працюють ненормально, будь ласка, перейдіть до трасування, щоб перевірити логи.",
"nodes.common.errorHandle.partialSucceeded.tip": "У процесі є вузли {{num}}, які працюють ненормально, будь ласка, перейдіть до <tracingLink>трасування</tracingLink>, щоб перевірити логи.",
"nodes.common.errorHandle.tip": "Стратегія обробки винятків, що спрацьовує, коли вузол стикається з винятком.",
"nodes.common.errorHandle.title": "Обробка помилок",
"nodes.common.inputVars": "Вхідні змінні",

View File

@ -433,7 +433,7 @@
"nodes.common.errorHandle.failBranch.title": "Chi nhánh thất bại",
"nodes.common.errorHandle.none.desc": "Nút sẽ ngừng chạy nếu xảy ra ngoại lệ và không được xử lý",
"nodes.common.errorHandle.none.title": "Không ai",
"nodes.common.errorHandle.partialSucceeded.tip": "Có {{num}} node trong quá trình chạy bất thường, vui lòng truy tìm để kiểm tra nhật ký.",
"nodes.common.errorHandle.partialSucceeded.tip": "Có {{num}} node trong quá trình chạy bất thường, vui lòng vào <tracingLink>truy tìm</tracingLink> để kiểm tra nhật ký.",
"nodes.common.errorHandle.tip": "Chiến lược xử lý ngoại lệ, được kích hoạt khi một nút gặp phải ngoại lệ.",
"nodes.common.errorHandle.title": "Xử lý lỗi",
"nodes.common.inputVars": "Biến đầu vào",

View File

@ -433,7 +433,7 @@
"nodes.common.errorHandle.failBranch.title": "异常分支",
"nodes.common.errorHandle.none.desc": "当发生异常且未处理时,节点将停止运行",
"nodes.common.errorHandle.none.title": "无",
"nodes.common.errorHandle.partialSucceeded.tip": "流程中有 {{num}} 个节点运行异常,请前往追踪查看日志。",
"nodes.common.errorHandle.partialSucceeded.tip": "流程中有 {{num}} 个节点运行异常,请前往<tracingLink>追踪</tracingLink>查看日志。",
"nodes.common.errorHandle.tip": "配置异常处理策略,当节点发生异常时触发。",
"nodes.common.errorHandle.title": "异常处理",
"nodes.common.inputVars": "输入变量",

View File

@ -433,7 +433,7 @@
"nodes.common.errorHandle.failBranch.title": "失敗分支",
"nodes.common.errorHandle.none.desc": "如果發生異常且未得到處理,節點將停止運行",
"nodes.common.errorHandle.none.title": "沒有",
"nodes.common.errorHandle.partialSucceeded.tip": "進程中有 {{num}} 個節點運行異常,請前往 tracing 查看日誌。",
"nodes.common.errorHandle.partialSucceeded.tip": "進程中有 {{num}} 個節點運行異常,請前往<tracingLink>tracing</tracingLink>查看日誌。",
"nodes.common.errorHandle.tip": "異常處理策略,當節點遇到異常時觸發。",
"nodes.common.errorHandle.title": "錯誤處理",
"nodes.common.inputVars": "輸入變數",

View File

@ -56,7 +56,6 @@
"@amplitude/analytics-browser": "catalog:",
"@amplitude/plugin-session-replay-browser": "catalog:",
"@base-ui/react": "catalog:",
"@date-fns/tz": "catalog:",
"@emoji-mart/data": "catalog:",
"@floating-ui/react": "catalog:",
"@formatjs/intl-localematcher": "catalog:",
@ -91,7 +90,6 @@
"cmdk": "catalog:",
"copy-to-clipboard": "catalog:",
"cron-parser": "catalog:",
"date-fns": "catalog:",
"dayjs": "catalog:",
"decimal.js": "catalog:",
"dompurify": "catalog:",