diff --git a/apps/web/messages/en.json b/apps/web/messages/en.json index ea7cf65a..4500b1ec 100644 --- a/apps/web/messages/en.json +++ b/apps/web/messages/en.json @@ -163,7 +163,39 @@ "connectionError": "Connection failed", "metaVersion": "Version", "metaStats": "Stats", - "metaUpdatedAt": "Updated" + "metaUpdatedAt": "Updated", + "tabs": { + "overview": "Overview", + "alerts": "Alerts & Approvals", + "stream": "Activity Stream", + "disposition": "Disposition Stats" + }, + "alertEvents": "Alert Events", + "noActiveAlerts": "No active alerts", + "pendingApprovalsTitle": "Pending Approvals", + "noPendingApprovals": "No pending approvals", + "approve": "Approve", + "reject": "Reject", + "activityStream": "System Activity Stream", + "sseConnected": "SSE Connected", + "sseDisconnected": "Disconnected", + "waitingEvents": "Waiting for events...", + "statusLabel": "Status", + "hostsLabel": "Hosts", + "eventsCount": "{count} events", + "noDispositionData": "No disposition data available", + "totalDispositions": "Total Dispositions", + "autoRate": "Automation Rate", + "humanRate": "Human Intervention Rate", + "autoRepairLabel": "Auto Repair", + "humanApprovedLabel": "Human Approved", + "manualResolvedLabel": "Manual Resolved", + "coldStartLabel": "Cold Start", + "dispositionBreakdown": "Disposition Breakdown", + "hostView": "Hosts", + "topoView": "Topology", + "waitingHostData": "Waiting for host data...", + "dashboardConnecting": "Dashboard API connecting..." }, "openclaw": { "name": "OpenClaw", diff --git a/apps/web/messages/zh-TW.json b/apps/web/messages/zh-TW.json index 7074368e..bbbb5562 100644 --- a/apps/web/messages/zh-TW.json +++ b/apps/web/messages/zh-TW.json @@ -164,7 +164,39 @@ "connectionError": "無法連線", "metaVersion": "版本", "metaStats": "統計", - "metaUpdatedAt": "更新" + "metaUpdatedAt": "更新", + "tabs": { + "overview": "戰情總覽", + "alerts": "告警 & 授權", + "stream": "活動串流", + "disposition": "處置統計" + }, + "alertEvents": "告警事件", + "noActiveAlerts": "目前無活躍告警", + "pendingApprovalsTitle": "待批准授權", + "noPendingApprovals": "無待批准項目", + "approve": "批准", + "reject": "拒絕", + "activityStream": "系統活動串流", + "sseConnected": "SSE 連線中", + "sseDisconnected": "連線中斷", + "waitingEvents": "等待即時事件...", + "statusLabel": "狀態", + "hostsLabel": "主機", + "eventsCount": "{count} 筆", + "noDispositionData": "目前無處置統計資料", + "totalDispositions": "處置總次數", + "autoRate": "自動化率", + "humanRate": "人工介入率", + "autoRepairLabel": "自動修復", + "humanApprovedLabel": "人工審核", + "manualResolvedLabel": "手動處理", + "coldStartLabel": "冷啟動", + "dispositionBreakdown": "處置方式分佈", + "hostView": "主機", + "topoView": "拓撲", + "waitingHostData": "等待主機資料...", + "dashboardConnecting": "Dashboard API 連線中" }, "openclaw": { "name": "OpenClaw", diff --git a/apps/web/src/app/[locale]/automation/page.tsx b/apps/web/src/app/[locale]/automation/page.tsx index b8a3e5cc..c9bfe493 100644 --- a/apps/web/src/app/[locale]/automation/page.tsx +++ b/apps/web/src/app/[locale]/automation/page.tsx @@ -11,13 +11,15 @@ import { lazy, Suspense } from 'react' import { useTranslations } from 'next-intl' import { AppLayout } from '@/components/layout' import { PageTabs, type TabConfig } from '@/components/layout/page-tabs' +import { LobsterLoading } from '@/components/shared/lobster-loading' const AutoRepairContent = lazy(() => import('@/app/[locale]/auto-repair/page')) const NeuralCommandContent = lazy(() => import('@/app/[locale]/neural-command/page')) const DriftContent = lazy(() => import('@/app/[locale]/drift/page')) +// C3 修正: 用 LobsterLoading 取代硬編碼「載入中」 function Loading() { - return