# 2026-06-10 — 3389 独立 RDP 主机管理

## 摘要

RDP 远程桌面改为在「3389远程」页单独添加/管理，不再依赖子机列表或服务器编辑表单。

## 动机

3389 目标数量少、与 SSH 子机资产无关；用户希望在 RDP 页直接录入地址与凭据后点击连接。

## 涉及文件

- `server/domain/models/__init__.py` — `rdp_hosts` 表
- `server/infrastructure/database/migrations.py`
- `server/infrastructure/database/rdp_host_repo.py`
- `server/api/rdp_hosts.py` — CRUD + connect
- `server/api/rdp.py` — WS `/ws/rdp/hosts/{id}`
- `frontend/src/pages/RdpPage.vue` — 列表、添加、连接
- `frontend/src/components/rdp/RdpHostFormDialog.vue`
- `frontend/src/composables/rdp/useRdpHostList.ts`
- 移除服务器表单与子机页 RDP 入口

## 行为

- `GET/POST/PUT/DELETE /api/rdp/hosts/` 管理独立 RDP 主机
- 添加成功后自动跳转连接；列表项可「连接 / 编辑 / 删除」
- 密码 Fernet 加密存储；connect 接口仅管理员 JWT

## 修复（2026-06-10 晚）

- WS 鉴权 token 改路径 `/ws/rdp/hosts/{id}/tunnel/{jwt}`，避免 Guacamole `connect()` 追加 `?hostname=` 破坏 `?token=` 查询串

## 验证

- `pytest tests/test_rdp_hosts.py`
- 3389远程 → 添加 → 连接 Windows RDP
