114 lines
6.4 KiB
Markdown
114 lines
6.4 KiB
Markdown
# Requirements Document
|
||
|
||
## Introduction
|
||
|
||
本文档定义了机房远程控制系统中局域网 AMT 设备扫描功能的需求。该功能允许用户通过输入网段和子网掩码来扫描局域网中所有支持 Intel AMT (Active Management Technology) 的设备,并将发现的设备添加到管理列表中。系统采用 Spring Boot 后端和 Vue 前端架构,使用异步多线程技术提高扫描效率。
|
||
|
||
## Glossary
|
||
|
||
- **AMT_Scanner**: 负责扫描局域网中支持 Intel AMT 设备的系统组件
|
||
- **Device_Manager**: 管理已发现 AMT 设备列表的系统组件
|
||
- **Frontend**: 基于 Vue 的用户界面
|
||
- **Backend**: 基于 Spring Boot 的服务端应用
|
||
- **RMCP_Ping**: Remote Management Control Protocol Ping,用于检测 AMT 设备的协议
|
||
- **Network_Segment**: 网段,由 IP 地址和子网掩码定义的网络范围
|
||
- **Scan_Task**: 扫描任务,代表一次完整的网络扫描操作
|
||
|
||
## Requirements
|
||
|
||
### Requirement 1: 网络参数输入
|
||
|
||
**User Story:** 作为系统管理员,我希望能够输入网段和子网掩码,以便定义需要扫描的局域网范围。
|
||
|
||
#### Acceptance Criteria
|
||
|
||
1. WHEN 用户访问扫描页面,THEN THE Frontend SHALL 显示网段输入框和子网掩码输入框
|
||
2. WHEN 用户输入网段地址,THEN THE Frontend SHALL 验证输入格式是否为有效的 IPv4 地址
|
||
3. WHEN 用户输入子网掩码,THEN THE Frontend SHALL 验证输入格式是否为有效的子网掩码(如 255.255.255.0 或 CIDR 格式如 /24)
|
||
4. WHEN 用户输入无效的网络参数,THEN THE Frontend SHALL 显示清晰的错误提示信息
|
||
5. WHEN 用户提交有效的网络参数,THEN THE Frontend SHALL 将参数发送到后端并启动扫描任务
|
||
|
||
### Requirement 2: AMT 设备发现
|
||
|
||
**User Story:** 作为系统管理员,我希望系统能够自动发现局域网中所有支持 AMT 的设备,以便进行统一管理。
|
||
|
||
#### Acceptance Criteria
|
||
|
||
1. WHEN 后端接收到扫描请求,THEN THE Backend SHALL 根据网段和子网掩码计算出所有可能的 IP 地址
|
||
2. WHEN 开始扫描,THEN THE AMT_Scanner SHALL 使用 RMCP Ping 协议检测每个 IP 地址是否支持 AMT
|
||
3. WHEN 检测到支持 AMT 的设备,THEN THE AMT_Scanner SHALL 获取设备的基本信息(IP 地址、AMT 版本、UUID 等)
|
||
4. WHEN 设备响应 RMCP Ping,THEN THE AMT_Scanner SHALL 将设备标记为支持 AMT
|
||
5. WHEN 设备不响应或响应超时,THEN THE AMT_Scanner SHALL 跳过该 IP 地址继续扫描
|
||
|
||
### Requirement 3: 异步多线程扫描
|
||
|
||
**User Story:** 作为系统管理员,我希望扫描过程能够快速完成,以便提高工作效率。
|
||
|
||
#### Acceptance Criteria
|
||
|
||
1. WHEN 扫描任务启动,THEN THE Backend SHALL 创建线程池来并发处理多个 IP 地址的检测
|
||
2. WHEN 扫描进行中,THEN THE Backend SHALL 使用异步方式处理扫描任务,不阻塞主线程
|
||
3. WHEN 线程池处理扫描任务,THEN THE Backend SHALL 限制并发线程数量以避免网络拥塞(建议 50-100 个并发)
|
||
4. WHEN 单个 IP 检测超时,THEN THE Backend SHALL 设置合理的超时时间(建议 2-5 秒)并继续处理其他 IP
|
||
5. WHEN 扫描任务完成,THEN THE Backend SHALL 释放线程池资源
|
||
|
||
### Requirement 4: 实时扫描进度反馈
|
||
|
||
**User Story:** 作为系统管理员,我希望能够实时看到扫描进度,以便了解扫描状态和预估完成时间。
|
||
|
||
#### Acceptance Criteria
|
||
|
||
1. WHEN 扫描开始,THEN THE Backend SHALL 通过 WebSocket 或 Server-Sent Events 向前端推送扫描进度
|
||
2. WHEN 扫描进行中,THEN THE Frontend SHALL 显示当前扫描进度百分比
|
||
3. WHEN 扫描进行中,THEN THE Frontend SHALL 显示已扫描的 IP 数量和总 IP 数量
|
||
4. WHEN 发现新的 AMT 设备,THEN THE Frontend SHALL 实时更新设备列表
|
||
5. WHEN 扫描完成,THEN THE Frontend SHALL 显示扫描完成提示和发现的设备总数
|
||
|
||
### Requirement 5: 设备列表管理
|
||
|
||
**User Story:** 作为系统管理员,我希望能够查看和管理已发现的 AMT 设备列表,以便进行后续的远程控制操作。
|
||
|
||
#### Acceptance Criteria
|
||
|
||
1. WHEN 发现 AMT 设备,THEN THE Device_Manager SHALL 将设备信息存储到数据库
|
||
2. WHEN 用户访问设备列表页面,THEN THE Frontend SHALL 显示所有已发现的 AMT 设备
|
||
3. WHEN 显示设备列表,THEN THE Frontend SHALL 展示设备的 IP 地址、AMT 版本、发现时间、在线状态等信息
|
||
4. WHEN 用户查看设备列表,THEN THE Frontend SHALL 提供搜索和过滤功能
|
||
5. WHEN 用户选择设备,THEN THE Frontend SHALL 提供删除设备的功能
|
||
|
||
### Requirement 6: 错误处理和日志记录
|
||
|
||
**User Story:** 作为系统管理员,我希望系统能够妥善处理错误情况并记录日志,以便排查问题。
|
||
|
||
#### Acceptance Criteria
|
||
|
||
1. WHEN 扫描过程中发生网络错误,THEN THE Backend SHALL 记录错误日志并继续扫描其他 IP
|
||
2. WHEN 扫描任务失败,THEN THE Backend SHALL 返回清晰的错误信息给前端
|
||
3. WHEN 发生异常,THEN THE Frontend SHALL 显示用户友好的错误提示
|
||
4. WHEN 扫描任务执行,THEN THE Backend SHALL 记录扫描开始时间、结束时间、发现设备数量等关键信息
|
||
5. WHEN 系统运行,THEN THE Backend SHALL 将所有扫描活动记录到日志文件中
|
||
|
||
### Requirement 7: AMT SDK 集成
|
||
|
||
**User Story:** 作为开发人员,我希望系统能够正确集成 Intel AMT SDK,以便使用其提供的功能检测和管理 AMT 设备。
|
||
|
||
#### Acceptance Criteria
|
||
|
||
1. WHEN 系统初始化,THEN THE Backend SHALL 加载 AMT SDK 的 RMCPPing 模块
|
||
2. WHEN 检测 AMT 设备,THEN THE Backend SHALL 使用 SDK 提供的 RMCP Ping 功能
|
||
3. WHEN 调用 SDK 功能,THEN THE Backend SHALL 正确处理 SDK 返回的设备信息
|
||
4. WHEN SDK 调用失败,THEN THE Backend SHALL 捕获异常并记录详细错误信息
|
||
5. WHEN 系统关闭,THEN THE Backend SHALL 正确释放 SDK 相关资源
|
||
|
||
### Requirement 8: 系统架构和技术栈
|
||
|
||
**User Story:** 作为开发人员,我希望系统采用清晰的架构设计,以便于维护和扩展。
|
||
|
||
#### Acceptance Criteria
|
||
|
||
1. WHEN 开发后端,THEN THE Backend SHALL 使用 Spring Boot 框架
|
||
2. WHEN 开发前端,THEN THE Frontend SHALL 使用 Vue 3 框架
|
||
3. WHEN 设计系统架构,THEN THE Backend SHALL 采用分层架构(Controller、Service、Repository)
|
||
4. WHEN 前后端通信,THEN THE Backend SHALL 提供 RESTful API 接口
|
||
5. WHEN 实时通信,THEN THE Backend SHALL 使用 WebSocket 或 SSE 推送扫描进度
|