From f6319374cd454c50aed7f20e8c8752b92dabe925 Mon Sep 17 00:00:00 2001 From: chick Date: Mon, 7 Sep 2026 00:45:44 +0800 Subject: [PATCH] feat(web): add console update panel, system maintenance path and connection settings UI - Add online update workflow with plan, backup and install states. - Expose maintenance paths, component backup jobs and connection authorization modes. - Align auth and automation screens with the fused control plane. --- apps/web/src/auth/console-auth-settings.tsx | 21 +- apps/web/src/auth/console-auth.test.tsx | 63 ++- apps/web/src/auth/console-auth.tsx | 38 +- .../src/automation/automation-page.test.tsx | 16 +- apps/web/src/automation/automation-page.tsx | 62 ++- .../component-backup-api-data-source.test.ts | 40 +- .../component-backup-api-data-source.ts | 35 +- .../settings/component-backup-panel.test.tsx | 50 +- .../src/settings/component-backup-panel.tsx | 127 ++++- .../connection-settings-panel.test.tsx | 37 +- .../settings/connection-settings-panel.tsx | 43 +- .../console-update-api-data-source.test.ts | 162 ++++++ .../console-update-api-data-source.ts | 195 +++++++ .../settings/console-update-panel.test.tsx | 172 ++++++ .../web/src/settings/console-update-panel.tsx | 337 ++++++++++++ ...system-maintenance-api-data-source.test.ts | 70 +++ .../system-maintenance-api-data-source.ts | 20 +- .../settings/system-maintenance-page.test.tsx | 48 +- .../src/settings/system-maintenance-page.tsx | 22 +- apps/web/src/styles.css | 494 ++++++++++++++++++ 20 files changed, 1985 insertions(+), 67 deletions(-) create mode 100644 apps/web/src/settings/console-update-api-data-source.test.ts create mode 100644 apps/web/src/settings/console-update-api-data-source.ts create mode 100644 apps/web/src/settings/console-update-panel.test.tsx create mode 100644 apps/web/src/settings/console-update-panel.tsx diff --git a/apps/web/src/auth/console-auth-settings.tsx b/apps/web/src/auth/console-auth-settings.tsx index a65efc0..fdd9237 100644 --- a/apps/web/src/auth/console-auth-settings.tsx +++ b/apps/web/src/auth/console-auth-settings.tsx @@ -14,6 +14,7 @@ export function ConsoleAuthSettings({ const [enabled, setEnabled] = useState(false); const [password, setPassword] = useState(''); const [confirmation, setConfirmation] = useState(''); + const [idleMinutes, setIdleMinutes] = useState('30'); const [saving, setSaving] = useState(false); const [notice, setNotice] = useState(''); const [error, setError] = useState(''); @@ -25,6 +26,7 @@ export function ConsoleAuthSettings({ if (!active) return; setStatus(next); setEnabled(next.protectionEnabled); + setIdleMinutes(String(next.sessionIdleTimeoutMinutes)); }, () => { if (active) setError('无法读取密码保护设置。'); @@ -52,11 +54,15 @@ export function ConsoleAuthSettings({ } setSaving(true); try { - const input = - enabled && !status.configured ? { enabled: true, newPassword: password } : { enabled }; + const input = { + enabled, + ...(enabled && !status.configured ? { newPassword: password } : {}), + idleTimeoutMinutes: Math.min(1440, Math.max(5, Math.round(Number(idleMinutes) || 30))), + }; const next = await source.update(input); setStatus(next); setEnabled(next.protectionEnabled); + setIdleMinutes(String(next.sessionIdleTimeoutMinutes)); setPassword(''); setConfirmation(''); setNotice(next.protectionEnabled ? '密码保护已启用。' : '密码保护已关闭。'); @@ -115,6 +121,17 @@ export function ConsoleAuthSettings({ ) : null} {status.configured ?

访问密码已配置,不会在页面或 API 中回显。

: null} + + setIdleMinutes(event.target.value)} + /> + 无操作达到该时长后自动退出,范围 5 到 1440 分钟。 {error ?

{error}

: null} {notice ?

{notice}

: null} + ))} + + ) : null} {form.targetMode === 'group' ? ( +

+ 发送时可插入 {'${time}'}{'${random}'}。 +