# 设备管理命令文档

本文档描述了用于设备管理的Django自定义命令。这些命令用于批量创建测试设备和清理测试设备数据。

## 环境准备

在执行命令前，请先切换到正确的Conda环境：

```bash
conda activate lty
```

## 创建测试设备

### 命令名称

`create_test_devices`

### 功能描述

批量创建测试用设备数据，包括设备类型、批次和设备。每个设备都有唯一的设备码和MAC地址。

### 参数选项

| 参数 | 类型 | 默认值 | 说明 |
|------|------|--------|------|
| `--type-count` | 整数 | 3 | 要创建的设备类型数量 |
| `--batch-count` | 整数 | 2 | 每种设备类型的批次数量 |
| `--device-count` | 整数 | 10 | 每个批次的设备数量 |

### 使用示例

1. 使用默认参数创建测试设备：

```bash
python manage.py create_test_devices
```

这将创建3种设备类型，每种2个批次，每个批次10台设备，总共60台设备。

2. 自定义数量创建测试设备：

```bash
python manage.py create_test_devices --type-count=2 --batch-count=3 --device-count=5
```

这将创建2种设备类型，每种3个批次，每个批次5台设备，总共30台设备。

### 输出说明

命令执行过程中会显示创建的每个设备的信息，包括：
- 设备类型名称和代码
- 批次编号
- 设备的序列号和MAC地址
- 设备码（自动生成，格式为：类型代码-批次号-序列号）

执行结束后会显示创建的总数据量统计。

## 清理测试设备

### 命令名称

`clean_test_devices`

### 功能描述

清理数据库中的测试设备数据，可以选择只清理测试设备或清理所有设备数据。

### 参数选项

| 参数 | 类型 | 默认值 | 说明 |
|------|------|--------|------|
| `--test-only` | 标志 | - | 只清理名称中包含"测试"的设备数据 |
| `--all` | 标志 | - | 清理所有设备数据（慎用） |
| `--force` | 标志 | - | 强制删除，不提示确认 |

### 使用示例

1. 清理所有测试设备数据（会提示确认）：

```bash
python manage.py clean_test_devices --test-only
```

2. 清理所有设备数据（会提示确认）：

```bash
python manage.py clean_test_devices --all
```

3. 强制清理测试设备数据（不提示确认）：

```bash
python manage.py clean_test_devices --test-only --force
```

### 输出说明

命令执行过程中会显示删除的数据数量，包括：
- 用户设备关联记录数
- 设备数量
- 批次数量
- 设备类型数量

执行结束后会显示清理的总数据量统计。

## 数据结构说明

创建的测试数据结构如下：

1. **设备类型(DeviceType)**
   - 名称格式：测试设备类型-{序号}
   - 代码格式：T{序号:02d}（例如：T01, T02, ...）
   - 每个类型有唯一的名称和代码

2. **设备批次(DeviceBatch)**
   - 批次号格式：B{设备类型代码}{批次序号:02d}（例如：BT0101, BT0102, ...）
   - 每个批次关联到特定设备类型
   - 生产日期设为当前日期

3. **设备(Device)**
   - 序列号格式：{序号:05d}（例如：00001, 00002, ...）
   - MAC地址：随机生成的唯一地址
   - 设备码格式：{类型代码}-{批次号}-{序列号}（例如：T01-BT0101-00001）
   - 初始状态设为未激活（is_active=False）

## 注意事项

1. 创建测试设备前，建议先清理之前的测试数据，避免重复数据冲突
2. 使用 `--all` 参数清理设备数据时请谨慎，这将删除所有设备相关数据
3. 测试设备可用于开发和测试环境，不建议在生产环境中使用 