mirror of
https://github.com/langgenius/dify.git
synced 2026-04-16 02:16:57 +08:00
chore: clarify tracing error copy to direct users to the Tracing tab (#35153)
This commit is contained in:
parent
a951cc996b
commit
d7ad2baf79
12
pnpm-lock.yaml
generated
12
pnpm-lock.yaml
generated
@ -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
|
||||
|
||||
@ -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')
|
||||
})
|
||||
|
||||
@ -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 />,
|
||||
|
||||
@ -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 && (
|
||||
|
||||
@ -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', () => {
|
||||
|
||||
@ -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 && (
|
||||
|
||||
@ -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">
|
||||
|
||||
@ -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>
|
||||
</>
|
||||
)
|
||||
|
||||
@ -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": "متغيرات الإدخال",
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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": "متغیرهای ورودی",
|
||||
|
||||
@ -433,7 +433,7 @@
|
||||
"nodes.common.errorHandle.failBranch.title": "Branche d’échec",
|
||||
"nodes.common.errorHandle.none.desc": "Le nœud cessera de s’exécuter si une exception se produit et n’est 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 lorsqu’un nœud rencontre une exception.",
|
||||
"nodes.common.errorHandle.title": "Gestion des erreurs",
|
||||
"nodes.common.inputVars": "Variables d’entrée",
|
||||
|
||||
@ -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": "इनपुट चर",
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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": "入力変数",
|
||||
|
||||
@ -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": "입력 변수",
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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": "Входные переменные",
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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": "ตัวแปรอินพุต",
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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": "Вхідні змінні",
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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": "输入变量",
|
||||
|
||||
@ -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": "輸入變數",
|
||||
|
||||
@ -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:",
|
||||
|
||||
Loading…
Reference in New Issue
Block a user