From b74084b67c735d3118c24930c4bf648bd03df6a7 Mon Sep 17 00:00:00 2001 From: Denozordec Date: Thu, 1 Oct 2026 16:45:41 +0700 Subject: [PATCH] =?UTF-8?q?fix(backups):=20=D0=B0=D0=B4=D0=B0=D0=BF=D1=82?= =?UTF-8?q?=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D1=82=D1=8C=20=D0=B8=D1=81=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D0=B8=D1=8E=20=D0=B8=20=D1=84=D0=BE=D1=80=D0=BC?= =?UTF-8?q?=D1=8B=20=D0=BA=20=D1=83=D0=B7=D0=BA=D0=B8=D0=BC=20=D1=8D=D0=BA?= =?UTF-8?q?=D1=80=D0=B0=D0=BD=D0=B0=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/(main)/backups/page.tsx | 12 ++++++--- components/backups/backups-settings.tsx | 8 +++--- components/data-grids/backups-data-grid.tsx | 3 ++- docs/ux-ui-plan.md | 11 +++++++- docs/ux-ui-progress.md | 18 ++++++++++++- docs/ux-ui-stage-11a.md | 17 +++++++++++++ docs/ux-ui/screens/backups-create-desktop.png | Bin 0 -> 215598 bytes docs/ux-ui/screens/backups-create-mobile.png | Bin 0 -> 25148 bytes docs/ux-ui/screens/backups-create-narrow.png | Bin 0 -> 24544 bytes .../ux-ui/screens/backups-history-desktop.png | Bin 0 -> 133772 bytes docs/ux-ui/screens/backups-history-mobile.png | Bin 0 -> 51282 bytes docs/ux-ui/screens/backups-history-narrow.png | Bin 0 -> 50157 bytes .../screens/backups-settings-desktop.png | Bin 0 -> 138910 bytes .../ux-ui/screens/backups-settings-mobile.png | Bin 0 -> 55605 bytes .../ux-ui/screens/backups-settings-narrow.png | Bin 0 -> 51360 bytes tests/e2e/backups-layout.spec.ts | 24 ++++++++++++++++++ 16 files changed, 83 insertions(+), 10 deletions(-) create mode 100644 docs/ux-ui/screens/backups-create-desktop.png create mode 100644 docs/ux-ui/screens/backups-create-mobile.png create mode 100644 docs/ux-ui/screens/backups-create-narrow.png create mode 100644 docs/ux-ui/screens/backups-history-desktop.png create mode 100644 docs/ux-ui/screens/backups-history-mobile.png create mode 100644 docs/ux-ui/screens/backups-history-narrow.png create mode 100644 docs/ux-ui/screens/backups-settings-desktop.png create mode 100644 docs/ux-ui/screens/backups-settings-mobile.png create mode 100644 docs/ux-ui/screens/backups-settings-narrow.png create mode 100644 tests/e2e/backups-layout.spec.ts diff --git a/app/(main)/backups/page.tsx b/app/(main)/backups/page.tsx index 1b93354c..45ad3030 100644 --- a/app/(main)/backups/page.tsx +++ b/app/(main)/backups/page.tsx @@ -1,6 +1,7 @@ "use client" import { Suspense, useCallback, useEffect, useRef, useState } from "react" +import { Frame, FramePanel } from "@/components/reui/frame" import { PageHeader } from "@/components/page-header" import { backups as mockBackups, servers as mockServers, type Backup, type Server } from "@/lib/data" import { useBackupsUrlState } from "@/hooks/use-backups-url-state" @@ -147,7 +148,7 @@ function BackupsContent() { canReadServers ? requestJson(backendUrl, "/api/servers", { signal }).then(payload => { const rows = serverListSchema.parse(payload) if (!active()) return - setLiveServers(rows.map(toFrontendServer)); success("servers") + setLiveServers(rows.map(row => ({ ...toFrontendServer(row), status: row.status ?? "unknown" }))); success("servers") }).catch(error => failure("servers", error)) : Promise.resolve(), getBackupScheduleSettings(backendUrl, { signal }).then(row => { if (!active()) return @@ -366,7 +367,7 @@ function BackupsContent() { } return ( -
+
-
+
{urlError && Не удалось прочитать ссылку{urlError}} {!isLive &&

Демонстрационные данные. Операции и сохранение недоступны.

} {!canRead &&

Нет права mm:backups:read

} {isLive && !canReadServers &&

Каталог устройств недоступен без mm:servers:read.

} - {isLive && canRead &&
+ {isLive && canRead &&
{loading ? "Обновление данных…" : resources.backups.receivedAt ? "Получено: " + new Date(resources.backups.receivedAt).toLocaleString("ru-RU") : "Резервные копии пока неизвестны"}
} @@ -419,6 +420,7 @@ function BackupsContent() { } {opError && Операция не подтверждена{opError}} {(job.error || job.storageError) && {jobTerminal ? "Задача завершена с ограничениями" : "Результат задачи пока неизвестен"}{job.error || job.storageError}} +

Резервные копии

История файлов, расписание и подтверждения операций

+ setTab(String(v) as PageTab)} @@ -537,6 +540,7 @@ function BackupsContent() { +
diff --git a/components/backups/backups-settings.tsx b/components/backups/backups-settings.tsx index 9522a200..56689bce 100644 --- a/components/backups/backups-settings.tsx +++ b/components/backups/backups-settings.tsx @@ -152,6 +152,7 @@ export function BackupsSettings({
onScheduleChange("frequency", v)} options={[ @@ -164,7 +165,7 @@ export function BackupsSettings({ {schedule.frequency === "weekly" && ( -
+
{WEEK_DAYS.map((d, i) => (