From 121be43b1b3bec4e1c9b3c2fc4a1fcf629ce997a Mon Sep 17 00:00:00 2001 From: xuans Date: Sat, 26 Sep 2026 13:42:23 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E9=BD=90SSH=E5=BC=95=E5=AF=BC?= =?UTF-8?q?=E7=A7=81=E9=92=A5=E5=90=8D=E7=A7=B0=E8=81=94=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 补充内嵌SSH引导默认私钥名称的联动逻辑,并保留用户手工指定名称不被覆盖的行为。测试顺序将在后续检查点中对齐真实页面流程。 --- frontend/src/views/Dashboard/Dashboard.js | 7 +++++++ frontend/src/views/Dashboard/Dashboard.test.js | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/frontend/src/views/Dashboard/Dashboard.js b/frontend/src/views/Dashboard/Dashboard.js index 3865ac6..3b0a009 100644 --- a/frontend/src/views/Dashboard/Dashboard.js +++ b/frontend/src/views/Dashboard/Dashboard.js @@ -316,6 +316,13 @@ export function useDashboard() { () => String(serverForm.value.address || "").trim() || "服务器地址", ); + watch(sshKeyFileName, (fileName, previousFileName) => { + if (!showEmbeddedSSHKeyGuide.value) return; + const currentName = String(sshKeyForm.value.name || "").trim(); + if (!currentName || currentName === previousFileName) { + sshKeyForm.value.name = fileName; + } + }); async function fetchAdmin(path, options = {}) { const response = await fetch(path, { ...options, diff --git a/frontend/src/views/Dashboard/Dashboard.test.js b/frontend/src/views/Dashboard/Dashboard.test.js index 740200a..0ed0b7b 100644 --- a/frontend/src/views/Dashboard/Dashboard.test.js +++ b/frontend/src/views/Dashboard/Dashboard.test.js @@ -154,14 +154,21 @@ test("编辑服务器正确保留已有密码状态,新建和未配置密码 test("SSH引导目标直接跟随服务器配置中的地址和用户", async (t) => { const { state } = await setup(t, () => verifiedResponse()); state.openServerCreate(); + state.openSSHKeyCreate({ embedded: true }); state.serverForm.value.username = "root"; state.serverForm.value.address = "45.136.13.241"; await nextTick(); assert.equal(state.sshKeyCommandUsername.value, "root"); assert.equal(state.sshKeyCommandHost.value, "45.136.13.241"); + assert.equal(state.sshKeyForm.value.name, state.sshKeyFileName.value); assert.match(state.sshPublicKeyCommands.value.windows, /ssh root@45\.136\.13\.241/); assert.match(state.sshPublicKeyCommands.value.linux, /root@45\.136\.13\.241/); + + state.sshKeyForm.value.name = "manual-key-name"; + state.serverForm.value.username = "deploy"; + await nextTick(); + assert.equal(state.sshKeyForm.value.name, "manual-key-name"); }); async function fill(state) {