114 lines
6.4 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.

# 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 PingTHEN 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 推送扫描进度