From e189ceb397a70cfa3505dc2a04d2d3f189ee7df7 Mon Sep 17 00:00:00 2001 From: Jingyi Date: Tue, 16 Jun 2026 18:25:05 -0700 Subject: [PATCH] fix: align app and knowledge detail shell styles (#37555) --- .../(appDetailLayout)/[appId]/layout-main.tsx | 15 ++- .../[appId]/overview/chart-view.tsx | 94 ++++++++++--------- .../[appId]/overview/page.tsx | 12 ++- .../[appId]/overview/tracing/panel.tsx | 4 +- .../[appId]/style.module.css | 6 -- .../__tests__/layout-main.spec.tsx | 81 +++++++++++++++- .../[datasetId]/layout-main.tsx | 17 +++- .../app-sidebar/app-detail-section.tsx | 14 ++- web/app/components/app/overview/app-chart.tsx | 8 +- web/app/components/app/workflow-log/index.tsx | 7 +- web/i18n/ar-TN/app-log.json | 1 + web/i18n/de-DE/app-log.json | 1 + web/i18n/en-US/app-log.json | 1 + web/i18n/es-ES/app-log.json | 1 + web/i18n/fa-IR/app-log.json | 1 + web/i18n/fr-FR/app-log.json | 1 + web/i18n/hi-IN/app-log.json | 1 + web/i18n/id-ID/app-log.json | 1 + web/i18n/it-IT/app-log.json | 1 + web/i18n/ja-JP/app-log.json | 1 + web/i18n/ko-KR/app-log.json | 1 + web/i18n/nl-NL/app-log.json | 1 + web/i18n/pl-PL/app-log.json | 1 + web/i18n/pt-BR/app-log.json | 1 + web/i18n/ro-RO/app-log.json | 1 + web/i18n/ru-RU/app-log.json | 1 + web/i18n/sl-SI/app-log.json | 1 + web/i18n/th-TH/app-log.json | 1 + web/i18n/tr-TR/app-log.json | 1 + web/i18n/uk-UA/app-log.json | 1 + web/i18n/vi-VN/app-log.json | 1 + web/i18n/zh-Hans/app-log.json | 1 + web/i18n/zh-Hant/app-log.json | 1 + 33 files changed, 208 insertions(+), 73 deletions(-) delete mode 100644 web/app/(commonLayout)/app/(appDetailLayout)/[appId]/style.module.css diff --git a/web/app/(commonLayout)/app/(appDetailLayout)/[appId]/layout-main.tsx b/web/app/(commonLayout)/app/(appDetailLayout)/[appId]/layout-main.tsx index d0187b67fc..8eb6a9bd0e 100644 --- a/web/app/(commonLayout)/app/(appDetailLayout)/[appId]/layout-main.tsx +++ b/web/app/(commonLayout)/app/(appDetailLayout)/[appId]/layout-main.tsx @@ -13,7 +13,6 @@ import useDocumentTitle from '@/hooks/use-document-title' import { usePathname, useRouter } from '@/next/navigation' import { fetchAppDetailDirect } from '@/service/apps' import { AppModeEnum } from '@/types/app' -import s from './style.module.css' type IAppDetailLayoutProps = { children: React.ReactNode @@ -116,9 +115,19 @@ const AppDetailLayout: FC = (props) => { ) } + const isWorkflowPage = pathname.endsWith('/workflow') + return ( -
-
+
+
{children}
diff --git a/web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/chart-view.tsx b/web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/chart-view.tsx index 0fbc41eb6b..e935fee8f3 100644 --- a/web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/chart-view.tsx +++ b/web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/chart-view.tsx @@ -10,6 +10,7 @@ import { TIME_PERIOD_MAPPING as LONG_TIME_PERIOD_MAPPING } from '@/app/component import { AvgResponseTime, AvgSessionInteractions, AvgUserInteractions, ConversationsChart, CostChart, EndUsersChart, MessagesChart, TokenPerSecond, UserSatisfactionRate, WorkflowCostChart, WorkflowDailyTerminalsChart, WorkflowMessagesChart } from '@/app/components/app/overview/app-chart' import { useStore as useAppStore } from '@/app/components/app/store' import { IS_CLOUD_EDITION } from '@/config' +import { useDocLink } from '@/context/i18n' import LongTimeRangePicker from './long-time-range-picker' import TimeRangePicker from './time-range-picker' @@ -34,6 +35,7 @@ type IChartViewProps = { export default function ChartView({ appId, headerRight }: IChartViewProps) { const { t } = useTranslation() + const docLink = useDocLink() const appDetail = useAppStore(state => state.appDetail) const isChatApp = appDetail?.mode !== 'completion' && appDetail?.mode !== 'workflow' const isWorkflow = appDetail?.mode === 'workflow' @@ -46,10 +48,26 @@ export default function ChartView({ appId, headerRight }: IChartViewProps) { return null return ( -
-
-
{t('appMenus.overview', { ns: 'common' })}
-
+
+
+
+
+

{t('appMenus.overview', { ns: 'common' })}

+
+
+

{t('monitoring.description', { ns: 'appLog' })}

+ + {t('operation.learnMore', { ns: 'common' })} + +
+
+
{IS_CLOUD_EDITION ? (
- {!isWorkflow && ( -
- - +
+
+ {!isWorkflow && ( + <> + + + {isChatApp + ? ( + + ) + : ( + + )} + + + + {isChatApp && } + + )} + {isWorkflow && ( + <> + + + + + + )}
- )} - {!isWorkflow && ( -
- {isChatApp - ? ( - - ) - : ( - - )} - -
- )} - {!isWorkflow && ( -
- - -
- )} - {!isWorkflow && isChatApp && ( -
- -
- )} - {isWorkflow && ( -
- - -
- )} - {isWorkflow && ( -
- - -
- )} +
) } diff --git a/web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/page.tsx b/web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/page.tsx index 39c42d067d..92ec0d59ec 100644 --- a/web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/page.tsx +++ b/web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/page.tsx @@ -15,12 +15,14 @@ const Overview = async (props: IDevelopProps) => { } = params return ( -
+
- } - /> +
+ } + /> +
) } diff --git a/web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/tracing/panel.tsx b/web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/tracing/panel.tsx index b03fd6e30d..a12a28a701 100644 --- a/web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/tracing/panel.tsx +++ b/web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/tracing/panel.tsx @@ -247,7 +247,7 @@ const Panel: FC = () => { >
@@ -286,7 +286,7 @@ const Panel: FC = () => { >
diff --git a/web/app/(commonLayout)/app/(appDetailLayout)/[appId]/style.module.css b/web/app/(commonLayout)/app/(appDetailLayout)/[appId]/style.module.css deleted file mode 100644 index 45c7d197b4..0000000000 --- a/web/app/(commonLayout)/app/(appDetailLayout)/[appId]/style.module.css +++ /dev/null @@ -1,6 +0,0 @@ -.app { - flex-grow: 1; - height: 0; - border-radius: 16px 16px 0px 0px; - box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.05), 0px 0px 2px -1px rgba(0, 0, 0, 0.03); -} diff --git a/web/app/(commonLayout)/datasets/(datasetDetailLayout)/[datasetId]/__tests__/layout-main.spec.tsx b/web/app/(commonLayout)/datasets/(datasetDetailLayout)/[datasetId]/__tests__/layout-main.spec.tsx index 11ddc89b4c..ae1fedf831 100644 --- a/web/app/(commonLayout)/datasets/(datasetDetailLayout)/[datasetId]/__tests__/layout-main.spec.tsx +++ b/web/app/(commonLayout)/datasets/(datasetDetailLayout)/[datasetId]/__tests__/layout-main.spec.tsx @@ -1,5 +1,5 @@ import { render, screen, waitFor } from '@testing-library/react' -import { useRouter } from '@/next/navigation' +import { usePathname, useRouter } from '@/next/navigation' import { useDatasetDetail } from '@/service/knowledge/use-dataset' import DatasetDetailLayout from '../layout-main' @@ -31,11 +31,13 @@ vi.mock('@/hooks/use-document-title', () => ({ })) const mockUseRouter = vi.mocked(useRouter) +const mockUsePathname = vi.mocked(usePathname) const mockUseDatasetDetail = vi.mocked(useDatasetDetail) describe('DatasetDetailLayout', () => { beforeEach(() => { vi.clearAllMocks() + mockUsePathname.mockReturnValue('/datasets/dataset-1/documents') mockUseRouter.mockReturnValue({ back: vi.fn(), forward: vi.fn(), @@ -118,5 +120,82 @@ describe('DatasetDetailLayout', () => { expect(screen.getByText('Pipeline content')).toBeInTheDocument() expect(mockReplace).not.toHaveBeenCalled() }) + + it('should apply the dataset surface outside pipeline pages', () => { + // Arrange + mockUseDatasetDetail.mockReturnValue({ + data: { + id: 'dataset-1', + name: 'Dataset 1', + provider: 'vendor', + runtime_mode: 'rag_pipeline', + is_published: true, + }, + error: null, + refetch: vi.fn(), + } as unknown as ReturnType) + + // Act + render( + +
Documents content
+
, + ) + + // Assert + expect(screen.getByText('Documents content').parentElement).toHaveClass('rounded-lg') + }) + + it('should keep pipeline pages unframed', () => { + // Arrange + mockUsePathname.mockReturnValue('/datasets/dataset-1/pipeline') + mockUseDatasetDetail.mockReturnValue({ + data: { + id: 'dataset-1', + name: 'Dataset 1', + provider: 'vendor', + runtime_mode: 'rag_pipeline', + is_published: false, + }, + error: null, + refetch: vi.fn(), + } as unknown as ReturnType) + + // Act + render( + +
Pipeline content
+
, + ) + + // Assert + expect(screen.getByText('Pipeline content').parentElement).not.toHaveClass('rounded-lg') + }) + + it('should keep create-from-pipeline pages unframed', () => { + // Arrange + mockUsePathname.mockReturnValue('/datasets/dataset-1/documents/create-from-pipeline') + mockUseDatasetDetail.mockReturnValue({ + data: { + id: 'dataset-1', + name: 'Dataset 1', + provider: 'vendor', + runtime_mode: 'rag_pipeline', + is_published: false, + }, + error: null, + refetch: vi.fn(), + } as unknown as ReturnType) + + // Act + render( + +
Create from pipeline content
+
, + ) + + // Assert + expect(screen.getByText('Create from pipeline content').parentElement).not.toHaveClass('rounded-lg') + }) }) }) diff --git a/web/app/(commonLayout)/datasets/(datasetDetailLayout)/[datasetId]/layout-main.tsx b/web/app/(commonLayout)/datasets/(datasetDetailLayout)/[datasetId]/layout-main.tsx index cbe5371477..dd08e31254 100644 --- a/web/app/(commonLayout)/datasets/(datasetDetailLayout)/[datasetId]/layout-main.tsx +++ b/web/app/(commonLayout)/datasets/(datasetDetailLayout)/[datasetId]/layout-main.tsx @@ -7,7 +7,7 @@ import { useTranslation } from 'react-i18next' import Loading from '@/app/components/base/loading' import DatasetDetailContext from '@/context/dataset-detail' import useDocumentTitle from '@/hooks/use-document-title' -import { useRouter } from '@/next/navigation' +import { usePathname, useRouter } from '@/next/navigation' import { useDatasetDetail } from '@/service/knowledge/use-dataset' type IAppDetailLayoutProps = { @@ -35,6 +35,7 @@ const DatasetDetailLayout: FC = (props) => { } = props const { t } = useTranslation() const router = useRouter() + const pathname = usePathname() const { data: datasetRes, error, refetch: mutateDatasetRes } = useDatasetDetail(datasetId) const shouldRedirect = shouldRedirectToDatasetList(error) @@ -52,11 +53,13 @@ const DatasetDetailLayout: FC = (props) => { if (shouldRedirect) return + const isPipelinePage = pathname.endsWith('/pipeline') || pathname.includes('/create-from-pipeline') + return (
= (props) => { mutateDatasetRes, }} > -
{children}
+
+ {children} +
) diff --git a/web/app/components/app-sidebar/app-detail-section.tsx b/web/app/components/app-sidebar/app-detail-section.tsx index 6eecb81b9e..9d77e17df7 100644 --- a/web/app/components/app-sidebar/app-detail-section.tsx +++ b/web/app/components/app-sidebar/app-detail-section.tsx @@ -1,5 +1,6 @@ 'use client' +import type { ComponentProps } from 'react' import type { NavIcon } from './nav-link' import { cn } from '@langgenius/dify-ui/cn' import { @@ -31,6 +32,15 @@ type AppDetailNavItem = { selectedIcon: NavIcon } +const AnnotationNavIcon = ({ className, ...props }: ComponentProps) => ( + +) + +AnnotationNavIcon.displayName = 'Annotations' + const isLogsNavItem = (item: AppDetailNavItem) => item.href.endsWith('/logs') const isAnnotationsNavItem = (item: AppDetailNavItem) => item.href.endsWith('/annotations') @@ -98,8 +108,8 @@ const AppDetailSection = ({ ? [{ name: t('appMenus.annotations', { ns: 'common' }), href: `/app/${appId}/annotations`, - icon: Annotations, - selectedIcon: Annotations, + icon: AnnotationNavIcon, + selectedIcon: AnnotationNavIcon, }] : [])] : [] diff --git a/web/app/components/app/overview/app-chart.tsx b/web/app/components/app/overview/app-chart.tsx index 10e022151f..d05a83f0b7 100644 --- a/web/app/components/app/overview/app-chart.tsx +++ b/web/app/components/app/overview/app-chart.tsx @@ -95,11 +95,11 @@ const Chart: React.FC = ({ const tokenSummary = getTokenSummary(statistics) return ( -
-
+
+
-
+
= ({ textStyle={{ main: `text-3xl! font-normal! ${summaryValue === '0' || summaryValue === '0 ms' ? 'text-text-quaternary!' : ''}` }} />
- +
) } diff --git a/web/app/components/app/workflow-log/index.tsx b/web/app/components/app/workflow-log/index.tsx index ea7c6c178b..8780d686ad 100644 --- a/web/app/components/app/workflow-log/index.tsx +++ b/web/app/components/app/workflow-log/index.tsx @@ -16,6 +16,7 @@ import Loading from '@/app/components/base/loading' import { APP_PAGE_LIMIT } from '@/config' import { userProfileQueryOptions } from '@/features/account-profile/client' import { useWorkflowLogs } from '@/service/use-log' +import PageTitle from '../log-annotation/page-title' import Filter, { TIME_PERIOD_MAPPING } from './filter' import List from './list' @@ -67,8 +68,10 @@ const Logs: FC = ({ appDetail }) => { return (
-

{t('workflowTitle', { ns: 'appLog' })}

-

{t('workflowSubtitle', { ns: 'appLog' })}

+
{/* workflow log */} diff --git a/web/i18n/ar-TN/app-log.json b/web/i18n/ar-TN/app-log.json index aeb817c620..af2b643265 100644 --- a/web/i18n/ar-TN/app-log.json +++ b/web/i18n/ar-TN/app-log.json @@ -42,6 +42,7 @@ "filter.period.today": "اليوم", "filter.period.yearToDate": "السنة حتى الآن", "filter.sortBy": "رتب حسب:", + "monitoring.description": "يسجل الرصد حالة تشغيل التطبيق، بما في ذلك الأداء ونشاط المستخدمين والتكاليف.", "promptLog": "سجل المطالبة", "runDetail.fileListDetail": "تفاصيل", "runDetail.fileListLabel": "تفاصيل الملف", diff --git a/web/i18n/de-DE/app-log.json b/web/i18n/de-DE/app-log.json index 9be1ee948f..f6055b4c00 100644 --- a/web/i18n/de-DE/app-log.json +++ b/web/i18n/de-DE/app-log.json @@ -42,6 +42,7 @@ "filter.period.today": "Heute", "filter.period.yearToDate": "Jahr bis heute", "filter.sortBy": "Sortieren nach:", + "monitoring.description": "Das Monitoring zeichnet den Betriebsstatus der Anwendung auf, einschließlich Leistung, Nutzeraktivität und Kosten.", "promptLog": "Prompt-Protokoll", "runDetail.fileListDetail": "Detail", "runDetail.fileListLabel": "Details zur Datei", diff --git a/web/i18n/en-US/app-log.json b/web/i18n/en-US/app-log.json index c25d509d8a..6d04d33aa7 100644 --- a/web/i18n/en-US/app-log.json +++ b/web/i18n/en-US/app-log.json @@ -42,6 +42,7 @@ "filter.period.today": "Today", "filter.period.yearToDate": "Year to date", "filter.sortBy": "Sort by:", + "monitoring.description": "Monitoring records the running status of the application, including performance, user activity, and costs.", "promptLog": "Prompt Log", "runDetail.fileListDetail": "Detail", "runDetail.fileListLabel": "File Details", diff --git a/web/i18n/es-ES/app-log.json b/web/i18n/es-ES/app-log.json index ceb62524cd..4f13700bc1 100644 --- a/web/i18n/es-ES/app-log.json +++ b/web/i18n/es-ES/app-log.json @@ -42,6 +42,7 @@ "filter.period.today": "Hoy", "filter.period.yearToDate": "Año hasta la fecha", "filter.sortBy": "Ordenar por:", + "monitoring.description": "La monitorización registra el estado de ejecución de la aplicación, incluyendo rendimiento, actividad de los usuarios y costes.", "promptLog": "Registro de Indicación", "runDetail.fileListDetail": "Detalle", "runDetail.fileListLabel": "Detalles del archivo", diff --git a/web/i18n/fa-IR/app-log.json b/web/i18n/fa-IR/app-log.json index d27a5b0cc4..4c6e6e1f2c 100644 --- a/web/i18n/fa-IR/app-log.json +++ b/web/i18n/fa-IR/app-log.json @@ -42,6 +42,7 @@ "filter.period.today": "امروز", "filter.period.yearToDate": "از ابتدای سال تاکنون", "filter.sortBy": "مرتب‌سازی بر اساس:", + "monitoring.description": "مانیتورینگ وضعیت اجرای برنامه را ثبت می‌کند، از جمله عملکرد، فعالیت کاربران و هزینه‌ها.", "promptLog": "لاگ درخواست", "runDetail.fileListDetail": "جزئیات", "runDetail.fileListLabel": "جزئیات فایل", diff --git a/web/i18n/fr-FR/app-log.json b/web/i18n/fr-FR/app-log.json index be16121b1c..15fb81152b 100644 --- a/web/i18n/fr-FR/app-log.json +++ b/web/i18n/fr-FR/app-log.json @@ -42,6 +42,7 @@ "filter.period.today": "Aujourd'hui", "filter.period.yearToDate": "Année à ce jour", "filter.sortBy": "Trier par :", + "monitoring.description": "Le monitoring enregistre l’état de fonctionnement de l’application, notamment les performances, l’activité des utilisateurs et les coûts.", "promptLog": "Journal de consigne", "runDetail.fileListDetail": "Détail", "runDetail.fileListLabel": "Détails du fichier", diff --git a/web/i18n/hi-IN/app-log.json b/web/i18n/hi-IN/app-log.json index 7ca4d40e48..dc38f9b00d 100644 --- a/web/i18n/hi-IN/app-log.json +++ b/web/i18n/hi-IN/app-log.json @@ -42,6 +42,7 @@ "filter.period.today": "आज", "filter.period.yearToDate": "वर्ष तक तिथि", "filter.sortBy": "इसके अनुसार क्रमबद्ध करें:", + "monitoring.description": "मॉनिटरिंग एप्लिकेशन की रनिंग स्थिति रिकॉर्ड करती है, जिसमें प्रदर्शन, उपयोगकर्ता गतिविधि और लागतें शामिल हैं।", "promptLog": "प्रॉम्प्ट लॉग", "runDetail.fileListDetail": "विस्तार", "runDetail.fileListLabel": "फ़ाइल विवरण", diff --git a/web/i18n/id-ID/app-log.json b/web/i18n/id-ID/app-log.json index 529b2e3f46..aaddb00454 100644 --- a/web/i18n/id-ID/app-log.json +++ b/web/i18n/id-ID/app-log.json @@ -42,6 +42,7 @@ "filter.period.today": "Hari Ini", "filter.period.yearToDate": "Tahun hingga saat ini", "filter.sortBy": "Urutkan berdasarkan", + "monitoring.description": "Monitoring mencatat status berjalan aplikasi, termasuk performa, aktivitas pengguna, dan biaya.", "promptLog": "Prompt Log", "runDetail.fileListDetail": "Detail", "runDetail.fileListLabel": "Rincian File", diff --git a/web/i18n/it-IT/app-log.json b/web/i18n/it-IT/app-log.json index 43b34d67db..0cc5da3dec 100644 --- a/web/i18n/it-IT/app-log.json +++ b/web/i18n/it-IT/app-log.json @@ -42,6 +42,7 @@ "filter.period.today": "Oggi", "filter.period.yearToDate": "Anno corrente", "filter.sortBy": "Ordina per:", + "monitoring.description": "Il monitoraggio registra lo stato di esecuzione dell’applicazione, inclusi prestazioni, attività degli utenti e costi.", "promptLog": "Registro Prompt", "runDetail.fileListDetail": "Dettaglio", "runDetail.fileListLabel": "Dettagli del file", diff --git a/web/i18n/ja-JP/app-log.json b/web/i18n/ja-JP/app-log.json index d6a93bcb08..b197afb75f 100644 --- a/web/i18n/ja-JP/app-log.json +++ b/web/i18n/ja-JP/app-log.json @@ -42,6 +42,7 @@ "filter.period.today": "今日", "filter.period.yearToDate": "年初から今日まで", "filter.sortBy": "並べ替え", + "monitoring.description": "モニタリングは、パフォーマンス、ユーザー活動、コストを含むアプリケーションの実行状況を記録します。", "promptLog": "プロンプトログ", "runDetail.fileListDetail": "詳細", "runDetail.fileListLabel": "ファイルの詳細", diff --git a/web/i18n/ko-KR/app-log.json b/web/i18n/ko-KR/app-log.json index 8bb71864bb..5a39f79eb5 100644 --- a/web/i18n/ko-KR/app-log.json +++ b/web/i18n/ko-KR/app-log.json @@ -42,6 +42,7 @@ "filter.period.today": "오늘", "filter.period.yearToDate": "연 초부터 오늘까지", "filter.sortBy": "정렬 기준:", + "monitoring.description": "모니터링은 성능, 사용자 활동, 비용을 포함한 애플리케이션 실행 상태를 기록합니다.", "promptLog": "프롬프트 로그", "runDetail.fileListDetail": "세부", "runDetail.fileListLabel": "파일 세부 정보", diff --git a/web/i18n/nl-NL/app-log.json b/web/i18n/nl-NL/app-log.json index a58e11e809..c14b8dad84 100644 --- a/web/i18n/nl-NL/app-log.json +++ b/web/i18n/nl-NL/app-log.json @@ -42,6 +42,7 @@ "filter.period.today": "Today", "filter.period.yearToDate": "Year to date", "filter.sortBy": "Sort by:", + "monitoring.description": "Monitoring records the running status of the application, including performance, user activity, and costs.", "promptLog": "Prompt Log", "runDetail.fileListDetail": "Detail", "runDetail.fileListLabel": "File Details", diff --git a/web/i18n/pl-PL/app-log.json b/web/i18n/pl-PL/app-log.json index d78e58deeb..6578b0754a 100644 --- a/web/i18n/pl-PL/app-log.json +++ b/web/i18n/pl-PL/app-log.json @@ -42,6 +42,7 @@ "filter.period.today": "Dzisiaj", "filter.period.yearToDate": "Od początku roku", "filter.sortBy": "Sortuj według:", + "monitoring.description": "Monitoring rejestruje stan działania aplikacji, w tym wydajność, aktywność użytkowników i koszty.", "promptLog": "Dziennik monitów", "runDetail.fileListDetail": "Detal", "runDetail.fileListLabel": "Szczegóły pliku", diff --git a/web/i18n/pt-BR/app-log.json b/web/i18n/pt-BR/app-log.json index 34d28e3ff0..fec79667f8 100644 --- a/web/i18n/pt-BR/app-log.json +++ b/web/i18n/pt-BR/app-log.json @@ -42,6 +42,7 @@ "filter.period.today": "Hoje", "filter.period.yearToDate": "Ano até hoje", "filter.sortBy": "Ordenar por:", + "monitoring.description": "O monitoramento registra o status de execução do aplicativo, incluindo desempenho, atividade dos usuários e custos.", "promptLog": "Registro de Prompt", "runDetail.fileListDetail": "Detalhe", "runDetail.fileListLabel": "Detalhes do arquivo", diff --git a/web/i18n/ro-RO/app-log.json b/web/i18n/ro-RO/app-log.json index 9523cd1aec..41f1251bb8 100644 --- a/web/i18n/ro-RO/app-log.json +++ b/web/i18n/ro-RO/app-log.json @@ -42,6 +42,7 @@ "filter.period.today": "Astăzi", "filter.period.yearToDate": "Anul curent", "filter.sortBy": "Sortează după:", + "monitoring.description": "Monitorizarea înregistrează starea de funcționare a aplicației, inclusiv performanța, activitatea utilizatorilor și costurile.", "promptLog": "Jurnal prompt", "runDetail.fileListDetail": "Amănunt", "runDetail.fileListLabel": "Detalii fișier", diff --git a/web/i18n/ru-RU/app-log.json b/web/i18n/ru-RU/app-log.json index e4c0c338b5..ab2cdec984 100644 --- a/web/i18n/ru-RU/app-log.json +++ b/web/i18n/ru-RU/app-log.json @@ -42,6 +42,7 @@ "filter.period.today": "Сегодня", "filter.period.yearToDate": "С начала года", "filter.sortBy": "Сортировать по:", + "monitoring.description": "Мониторинг записывает состояние работы приложения, включая производительность, активность пользователей и затраты.", "promptLog": "Журнал подсказок", "runDetail.fileListDetail": "Подробность", "runDetail.fileListLabel": "Сведения о файле", diff --git a/web/i18n/sl-SI/app-log.json b/web/i18n/sl-SI/app-log.json index cd35989345..8d47c89711 100644 --- a/web/i18n/sl-SI/app-log.json +++ b/web/i18n/sl-SI/app-log.json @@ -42,6 +42,7 @@ "filter.period.today": "Danes", "filter.period.yearToDate": "Leto do danes", "filter.sortBy": "Razvrsti po:", + "monitoring.description": "Spremljanje beleži stanje delovanja aplikacije, vključno z zmogljivostjo, dejavnostjo uporabnikov in stroški.", "promptLog": "Dnevnik PROMPT-ov", "runDetail.fileListDetail": "Podrobnosti", "runDetail.fileListLabel": "Podrobnosti o datoteki", diff --git a/web/i18n/th-TH/app-log.json b/web/i18n/th-TH/app-log.json index b85e6d81fc..3a099363ad 100644 --- a/web/i18n/th-TH/app-log.json +++ b/web/i18n/th-TH/app-log.json @@ -42,6 +42,7 @@ "filter.period.today": "วันนี้", "filter.period.yearToDate": "ปีจนถึงปัจจุบัน", "filter.sortBy": "เมืองสีดํา:", + "monitoring.description": "การมอนิเตอร์บันทึกสถานะการทำงานของแอปพลิเคชัน รวมถึงประสิทธิภาพ กิจกรรมผู้ใช้ และค่าใช้จ่าย", "promptLog": "บันทึกพร้อมท์", "runDetail.fileListDetail": "รายละเอียด", "runDetail.fileListLabel": "รายละเอียดไฟล์", diff --git a/web/i18n/tr-TR/app-log.json b/web/i18n/tr-TR/app-log.json index 4bc1483c99..8968c5ef0a 100644 --- a/web/i18n/tr-TR/app-log.json +++ b/web/i18n/tr-TR/app-log.json @@ -42,6 +42,7 @@ "filter.period.today": "Bugün", "filter.period.yearToDate": "Yıl Başlangıcından İtibaren", "filter.sortBy": "Sıralama ölçütü:", + "monitoring.description": "İzleme, performans, kullanıcı etkinliği ve maliyetler dahil olmak üzere uygulamanın çalışma durumunu kaydeder.", "promptLog": "Prompt Günlüğü", "runDetail.fileListDetail": "Ayrıntı", "runDetail.fileListLabel": "Dosya Detayları", diff --git a/web/i18n/uk-UA/app-log.json b/web/i18n/uk-UA/app-log.json index 1c5202f0fd..5b3ff87fc6 100644 --- a/web/i18n/uk-UA/app-log.json +++ b/web/i18n/uk-UA/app-log.json @@ -42,6 +42,7 @@ "filter.period.today": "Сьогодні", "filter.period.yearToDate": "Рік до сьогодні", "filter.sortBy": "Сортувати за:", + "monitoring.description": "Моніторинг фіксує робочий стан застосунку, зокрема продуктивність, активність користувачів і витрати.", "promptLog": "Журнал Запитань", "runDetail.fileListDetail": "Деталь", "runDetail.fileListLabel": "Подробиці файлу", diff --git a/web/i18n/vi-VN/app-log.json b/web/i18n/vi-VN/app-log.json index baaf51f93d..36cf9e1a45 100644 --- a/web/i18n/vi-VN/app-log.json +++ b/web/i18n/vi-VN/app-log.json @@ -42,6 +42,7 @@ "filter.period.today": "Hôm nay", "filter.period.yearToDate": "Năm hiện tại", "filter.sortBy": "Sắp xếp theo:", + "monitoring.description": "Giám sát ghi lại trạng thái hoạt động của ứng dụng, bao gồm hiệu suất, hoạt động người dùng và chi phí.", "promptLog": "Nhật ký lời nhắc", "runDetail.fileListDetail": "Chi tiết", "runDetail.fileListLabel": "Chi tiết tệp", diff --git a/web/i18n/zh-Hans/app-log.json b/web/i18n/zh-Hans/app-log.json index 29788ebb79..23da8cf656 100644 --- a/web/i18n/zh-Hans/app-log.json +++ b/web/i18n/zh-Hans/app-log.json @@ -42,6 +42,7 @@ "filter.period.today": "今天", "filter.period.yearToDate": "本年至今", "filter.sortBy": "排序:", + "monitoring.description": "监控记录应用的运行情况,包括性能、用户活动和成本。", "promptLog": "Prompt 日志", "runDetail.fileListDetail": "详情", "runDetail.fileListLabel": "文件详情", diff --git a/web/i18n/zh-Hant/app-log.json b/web/i18n/zh-Hant/app-log.json index 29b2156740..ca1336c912 100644 --- a/web/i18n/zh-Hant/app-log.json +++ b/web/i18n/zh-Hant/app-log.json @@ -42,6 +42,7 @@ "filter.period.today": "今天", "filter.period.yearToDate": "本年至今", "filter.sortBy": "排序:", + "monitoring.description": "監控記錄應用的執行情況,包括效能、使用者活動和成本。", "promptLog": "Prompt 日誌", "runDetail.fileListDetail": "細節", "runDetail.fileListLabel": "檔詳細資訊",