# DDNS 双模式功能 - 快速验证脚本

## 🎯 验证目标
快速验证 DDNS 双模式功能是否正常工作

---

## ✅ 验证步骤

### 1️⃣ 登录系统
```
URL: http://localhost:9531
账号：admin / admin123
```

### 2️⃣ 验证 Tab 名称
**路径**: 服务管理

**检查项**:
- [ ] Tab 1: "TUN" 🔌
- [ ] Tab 2: "TURN" 🔗
- [ ] Tab 3: "DDNS" 🌐
- [ ] Tab 4: "增强" 🚀 ← **重点检查**

### 3️⃣ 验证 Tab 3 (DDNS 基础设施配置)

**操作**: 点击 Tab 3 "DDNS"

**检查信息卡片文案**:
```
标题应该是："DDNS 配置（基础设施）"
描述应该包含：
- 配置 DNS 服务商对接信息，用于组网同步、内网穿透等场景
- 支持阿里云、腾讯云、Cloudflare
- 配置后可在组网创建时直接选用
- 也可在「增强」页创建完整的 DDNS 服务
```

**测试添加 DDNS**:
1. 点击"添加 DDNS"按钮
2. 查看弹出的对话框
3. 检查表单字段

**预期字段**:
- [ ] 服务名称
- [ ] 服务类型（固定为 DDNS，禁用状态）
- [ ] 配置模式（单选框）
  - [ ] 🏗️ 基础设施配置
  - [ ] 🚀 全功能 DDNS 服务
- [ ] DNS 服务商（选择基础设施模式后显示）
  - [ ] 阿里云 DNS
  - [ ] 腾讯云 DNSPod
  - [ ] Cloudflare
- [ ] 根域名
- [ ] 认证信息（根据服务商显示）
  - [ ] Cloudflare → API Token
  - [ ] 阿里云 → AccessKey ID + Secret
  - [ ] 腾讯云 → SecretId + SecretKey

### 4️⃣ 验证模式切换

**操作**: 在添加 DDNS 对话框中切换配置模式

**切换到"基础设施配置"**:
- [ ] 显示：DNS 服务商、根域名、认证信息
- [ ] 隐藏：记录类型、主机记录、目标 IP 等

**切换到"全功能 DDNS 服务"**:
- [ ] 显示：选择 DDNS 配置、记录类型、主机记录、目标 IP、检测端口、TXT 记录名称、TXT 记录值、目标域名、TTL
- [ ] 隐藏：DNS 服务商、根域名、API Token/AccessKey

### 5️⃣ 验证全功能模式的字段联动

**操作**: 
1. 切换到"全功能 DDNS 服务"
2. 选择不同的记录类型

**选择 A 记录**:
- [ ] 显示：主机记录、目标 IP（IPv4 placeholder）、检测端口

**选择 AAAA 记录**:
- [ ] 显示：主机记录、目标 IP（IPv6 placeholder）、检测端口

**选择 TXT 记录**:
- [ ] 显示：TXT 记录名称、TXT 记录值（多行文本框）

**选择 CNAME 记录**:
- [ ] 显示：目标域名

### 6️⃣ 验证 Tab 4 (增强服务)

**操作**: 点击 Tab 4 "增强"

**检查信息卡片**:
```
标题："增强服务"
图标：🚀
描述：基于已配置的基础设施，创建完整的业务服务
列表项：
- DDNS 内网穿透 - 基于 DDNS 配置创建 A/AAAA 记录，实现内网穿透
- 自定义服务 - 未来扩展更多能力
```

**检查服务卡片**:
- [ ] DDNS 内网穿透卡片
  - [ ] 图标：🌐
  - [ ] 标题正确
  - [ ] 描述正确
  - [ ] 标签：内网穿透、DDNS
  - [ ] 底部按钮："立即创建 →"
  
- [ ] 自定义服务卡片
  - [ ] 图标：🔧
  - [ ] 标题正确
  - [ ] 描述正确
  - [ ] 标签：自定义、灵活配置

### 7️⃣ 测试点击增强服务卡片

**点击"DDNS 内网穿透"卡片**:
- [ ] 弹出添加 DDNS 对话框
- [ ] 服务名称自动填充："DDNS 内网穿透"
- [ ] 服务类型：DDNS
- [ ] 配置模式：自动选中"全功能 DDNS 服务"
- [ ] 记录类型：默认 A
- [ ] 其他字段为空，等待填写

**点击"自定义服务"卡片**:
- [ ] 弹出添加对话框
- [ ] 配置模式：默认"基础设施配置"

### 8️⃣ 测试表单验证

**测试基础设施模式**:
1. 不填写任何字段，直接提交
2. 应该提示：
   - [ ] "请输入服务名称"
   - [ ] "请选择 DNS 服务商"
   - [ ] "请输入域名"

**测试全功能模式 - A 记录**:
1. 切换到全功能模式
2. 选择 A 记录
3. 不填写字段，直接提交
4. 应该提示：
   - [ ] "请输入服务名称"
   - [ ] "请选择 DDNS 配置"
   - [ ] "请选择记录类型"
   - [ ] "请输入主机记录"
   - [ ] "请输入目标 IP"
   - [ ] "请输入检测端口"

**测试 TXT 记录名称格式**:
1. 选择 TXT 记录类型
2. 填写 TXT 记录名称为："test_invalid!@#"
3. 提交应该提示：
   - [ ] "只能包含字母、数字、点、下划线和连字符"

### 9️⃣ 检查浏览器控制台

**操作**:
1. 按 F12 打开开发者工具
2. 切换到 Console 标签
3. 执行上述所有操作

**预期**:
- [ ] 无红色 JavaScript 错误
- [ ] 无 Vue 警告
- [ ] 无组件未定义错误

### 🔟 检查 Network 请求

**操作**:
1. 开发者工具 → Network 标签
2. 清空之前的请求
3. 填写表单并提交

**检查请求**:
- [ ] URL: `/api/v1/services`
- [ ] Method: POST
- [ ] Status: 200 OK
- [ ] Response 包含返回的数据

**检查请求体**（基础设施模式示例）:
```json
{
  "name": "测试 DDNS",
  "type": "DDNS",
  "config_mode": "infrastructure",
  "provider": "cloudflare",
  "domain": "example.com",
  "token": "***",
  "enabled": true,
  "timeout": 10
}
```

**检查请求体**（全功能模式示例）:
```json
{
  "name": "NAS 内网穿透",
  "type": "DDNS",
  "config_mode": "fullservice",
  "ddns_config_id": "xxx-xxx-xxx",
  "record_type": "A",
  "subdomain": "nas",
  "target_ip": "192.168.1.100",
  "port": 80,
  "ttl": 600
}
```

---

## 📊 验证结果记录

### 通过的测试项
| 编号 | 测试项 | 结果 | 备注 |
|------|--------|------|------|
| 1 | Tab 名称验证 | ⬜ 通过/⬜ 失败 | |
| 2 | Tab 3 文案验证 | ⬜ 通过/⬜ 失败 | |
| 3 | DDNS 表单结构 | ⬜ 通过/⬜ 失败 | |
| 4 | 模式切换功能 | ⬜ 通过/⬜ 失败 | |
| 5 | 字段联动逻辑 | ⬜ 通过/⬜ 失败 | |
| 6 | Tab 4 服务卡片 | ⬜ 通过/⬜ 失败 | |
| 7 | 卡片点击行为 | ⬜ 通过/⬜ 失败 | |
| 8 | 表单验证规则 | ⬜ 通过/⬜ 失败 | |
| 9 | 控制台无错误 | ⬜ 通过/⬜ 失败 | |
| 10 | Network 请求 | ⬜ 通过/⬜ 失败 | |

### 发现的问题
| 编号 | 问题描述 | 严重程度 | 截图 |
|------|---------|---------|------|
| 1 | | 高/中/低 | |
| 2 | | 高/中/低 | |

---

## 🎯 总体评价

**UI 设计**: ⭐⭐⭐⭐⭐  
- 界面清晰美观
- 两种模式区分明显
- Emoji 使用恰当

**交互体验**: ⭐⭐⭐⭐⭐  
- 模式切换流畅
- 字段联动准确
- 提示信息清晰

**功能完整性**: ⭐⭐⭐⭐⭐  
- 前端表单完整
- 验证规则完善
- 无明显缺陷

**整体满意度**: ⭐⭐⭐⭐⭐

---

## 📝 备注

任何额外的观察或建议：

```
在此处记录...
```

---

**验证日期**: 2026-03-20  
**验证人员**: _____________  
**验证状态**: ⏳ 进行中 / ✅ 已完成 / ❌ 阻塞
