# 2026-06-02 服务器添加/编辑表单重设计

## 摘要

Vuetify 服务器页的添加/编辑对话框与 `ServerCreate` 及 2026-05 设计文档对齐：认证方式、密码/SSH 密钥预设、目标路径、分类 combobox、平台/节点高级项。

## 动机

迁移 SPA 后表单仅含名称、错误字段 `address`、裸密码框，无法使用凭据预设与密钥认证，且缺少必填 `target_path`，导致与后端及旧版 `servers.html` 行为不一致。

## 涉及文件

- `frontend/src/composables/servers/useServerFormDialog.ts`（新建）
- `frontend/src/components/servers/ServerFormDialog.vue`（新建）
- `frontend/src/pages/ServersPage.vue`
- `docs/design/specs/2026-06-02-server-form-redesign.md`
- `docs/design/plans/2026-06-02-server-form-redesign.md`

## 迁移 / 重启

- 仅前端构建产物；需 `vite build` 后部署 `web/app/`
- 后端无变更，无需重启（仅前端更新时不必重启 nexus）

## 验证

1. 服务器页 → **添加**：可见「密码 / SSH 密钥」切换、密码预设下拉、目标路径默认 `/www/wwwroot`
2. 选择密码预设后 SSH 密码框隐藏
3. 保存后 Network 中 `POST /api/servers/` 含 `auth_method`、`target_path`、`preset_id` 等
4. **编辑** 回填 `auth_method`、`preset_id`、`target_path`、分类

## 部署记录（2026-06-02）

- 构建：`npx vite build`（Windows Node 20+）
- 上传：`scp` → `root@47.254.123.106:/tmp/nexus-frontend.tar.gz`
- 解压：`/www/wwwroot/api.synaglobal.vip/web/app`
- 清理：`prune_frontend_assets.py`（removed=2203, kept=173）
- 重启：`supervisorctl restart nexus`
- 健康：`/health` → `ok`，`/app/` → HTTP 200
- 产物：`ServersPage-CmUnLCji.js` 已含 `ServerFormDialog`（认证方式/密码预设/目标路径等文案）
- 说明：本机 Cursor 内置浏览器访问 `https://api.synaglobal.vip/app/login` 为黑屏（环境网络/渲染限制），请在已登录浏览器打开 `/app/servers` 点「添加」终验
