admin/test_network_scan.md
lvfengfree 028fd8f444 feat: 实现 AMT 设备网络扫描功能并优化性能
- 新增网络扫描功能,支持批量发现 AMT 设备
- 实现左右分栏布局,左侧扫描配置,右侧结果列表
- 支持 CIDR 和点分十进制两种子网掩码格式
- 优化多线程扫描性能(50 个并发线程)
- 使用 CompletableFuture 提升异步效率
- 添加 HTTP 连接超时配置(连接 3 秒,响应 5 秒)
- 前端请求超时增加到 10 分钟
- 优化进度条显示,使用不确定进度条
- 移除 AMT 自动添加模式下的设备信息输入框
- 添加扫描时间统计和详细日志输出

性能提升:
- 扫描速度提升约 70%
- /24 网段从 26 秒降至 7 秒
- /28 网段从 2 秒降至 0.5 秒
2026-03-01 16:37:51 +08:00

180 lines
4.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 网络扫描功能测试指南
## 功能说明
网络扫描功能允许用户:
1. 输入网络地址和子网掩码来定义扫描范围
2. 选择 AMT 凭证进行批量设备发现
3. 在右侧列表中查看扫描到的设备
4. 批量选择并添加设备到系统
**注意**AMT 自动添加模式下,不需要手动输入设备信息,所有信息都从扫描结果中获取。
## 测试步骤
### 1. 重新编译后端
```bash
cd backend
mvn clean package -DskipTests
```
### 2. 启动后端服务
```bash
cd backend
java -jar target/soybean-admin-1.0.0.jar
```
或使用批处理文件:
```bash
start_backend.bat
```
### 3. 启动前端服务
```bash
pnpm dev
```
### 4. 测试网络扫描
1. 登录系统
2. 进入"设备管理" -> "设备列表"
3. 点击"新增设备"按钮
4. 选择"AMT 自动添加"方式
#### 左侧:扫描配置
- **网络地址**:输入网络号,例如 `192.168.8.0`
- **子网掩码**:输入子网掩码,支持两种格式:
- 点分十进制:`255.255.255.0`
- CIDR 格式:`/24`
- **使用凭证**:选择已保存的 AMT 凭证(如"默认管理员凭证"
- 点击"开始扫描"按钮
#### 右侧:扫描结果
- 扫描过程中会显示进度条
- 扫描完成后,右侧列表会显示发现的设备
- 每个设备显示:
- 设备名称
- IP 地址
- UUID
- MAC 地址
- 状态标签(成功/失败)
#### 批量添加
1. 在右侧列表中勾选要添加的设备
2. 底部显示已选择的设备数量
3. 点击"批量添加"按钮
4. 系统会自动将选中的设备添加到设备列表
5. 弹窗自动关闭
**注意**
- AMT 自动添加模式下,不显示设备信息输入框
- 所有设备信息名称、UUID、IP、MAC都从扫描结果自动获取
- 批量添加后,弹窗会自动关闭,无需点击"确定"按钮
## 测试场景
### 场景 1小网段扫描
- 网络地址:`192.168.8.0`
- 子网掩码:`/24``255.255.255.0`
- 预期:扫描 254 个 IP192.168.8.1 - 192.168.8.254
### 场景 2更小的网段
- 网络地址:`192.168.8.0`
- 子网掩码:`/28``255.255.255.240`
- 预期:扫描 14 个 IP
### 场景 3单个 IP
- 网络地址:`192.168.8.112`
- 子网掩码:`/32``255.255.255.255`
- 预期:只扫描一个 IP
## 预期结果
### 扫描进度
- 进度条实时显示扫描进度
- 显示"已扫描 X / 总数 Y"
- 显示"发现设备: Z"
### 扫描结果列表
- 左侧显示扫描配置
- 右侧显示设备列表(卡片式布局)
- 每个设备可以单独勾选
- 底部显示选择统计和批量添加按钮
### 批量添加
- 成功添加后显示成功消息
- 自动关闭弹窗
- 刷新设备列表
- 新添加的设备状态为"在线"
## 注意事项
1. **扫描时间**:取决于网段大小和网络状况
- /24 网段254个IP约 2-5 分钟
- /28 网段14个IP约 10-30 秒
2. **超时设置**:后端设置了 5 分钟超时
3. **并发扫描**:使用 10 个线程并发扫描,提高效率
4. **错误处理**
- 无法连接的 IP 会被跳过
- 非 AMT 设备会被标记为失败
- 只有成功连接的设备才会显示在列表中
## 故障排查
### 问题 1扫描无结果
- 检查网络地址和子网掩码是否正确
- 确认 AMT 设备在该网段内
- 检查凭证是否正确
### 问题 2扫描超时
- 网段太大,考虑缩小范围
- 网络延迟较高
- 检查后端日志
### 问题 3进度条不更新
- 这是正常的,因为后端是同步扫描
- 扫描完成后会一次性返回所有结果
### 问题 4批量添加失败
- 检查设备 UUID 是否重复
- 查看后端日志获取详细错误信息
- 确认数据库连接正常
## 后端日志查看
扫描过程中,后端会输出详细日志:
```
开始扫描网络: 192.168.8.0/24
生成 IP 列表,共 254 个 IP
发现 AMT 设备: 192.168.8.112 (DESKTOP-ABC123)
扫描完成,发现 3 个设备
```
## UI 改进说明
### 新的布局
- 使用 Grid 布局,左右分栏
- 左侧:扫描配置(固定宽度)
- 右侧:扫描结果列表(自适应)
- AMT 自动添加模式:不显示设备信息输入框
- 手动添加模式:显示完整的设备信息表单
### 扫描结果展示
- 使用 n-list 组件替代 n-data-table
- 卡片式布局,更直观
- 每个设备显示完整信息
- 支持单个勾选和批量操作
- 批量添加后自动关闭弹窗
### 进度显示
- 进度条显示扫描百分比
- 实时显示已扫描数量
- 显示发现的设备数量
- 扫描完成后显示成功标签