## ADDED Requirements

### Requirement: 运营商实体定义

系统 SHALL 定义运营商(Carrier)实体，管理四大固定运营商（中国移动、中国联通、中国电信、广电）的渠道信息

**四大运营商固定枚举**：
- **CMCC**：中国移动
- **CUCC**：中国联通
- **CTCC**：中国电信
- **CBN**：广电

**实体字段**：
- `id`：运营商 ID（主键，BIGINT）
- `carrier_type`：运营商类型（VARCHAR(20)，枚举值："CMCC" | "CUCC" | "CTCC" | "CBN"）**【新增】**
- `carrier_name`：运营商名称（VARCHAR(100)，如"中国移动"）
- `carrier_code`：运营商编码（VARCHAR(50)，保留字段，建议填充与 carrier_type 相同）
- `channel_name`：渠道名称（VARCHAR(100)，可自定义，如"北京渠道1"）**【新增】**
- `channel_code`：渠道编码（VARCHAR(50)，可自定义，如"BJ001"）**【新增】**
- `status`：状态（INT，1-启用 2-禁用）
- `creator`：创建人 ID（BIGINT）
- `updater`：更新人 ID（BIGINT）
- `created_at`：创建时间（TIMESTAMP，自动填充）
- `updated_at`：更新时间（TIMESTAMP，自动填充）
- `deleted_at`：删除时间（TIMESTAMP，可空，软删除）

**唯一约束**：`(carrier_type, channel_code)` 在 `deleted_at IS NULL` 条件下唯一

#### Scenario: 创建中国移动的渠道

- **WHEN** 平台创建中国移动的北京渠道，`carrier_type` 为 "CMCC"，`carrier_name` 为 "中国移动"，`channel_name` 为 "北京渠道1"，`channel_code` 为 "BJ001"
- **THEN** 系统创建运营商记录，`carrier_type` 为 "CMCC"，`channel_name` 为 "北京渠道1"，`channel_code` 为 "BJ001"

#### Scenario: 同一运营商创建多个渠道

- **WHEN** 平台为中国移动创建两个渠道：北京渠道（BJ001）和上海渠道（SH001）
- **THEN** 系统创建两条运营商记录，`carrier_type` 都为 "CMCC"，但 `channel_code` 不同

#### Scenario: 渠道编码重复

- **WHEN** 平台创建中国移动的渠道，`carrier_type` 为 "CMCC"，`channel_code` 为已存在的 "BJ001"
- **THEN** 系统拒绝创建，返回错误信息"该运营商的渠道编码已存在"

#### Scenario: 不同运营商可以使用相同渠道编码

- **WHEN** 平台为中国移动创建渠道（carrier_type=CMCC, channel_code=BJ001），然后为中国联通创建渠道（carrier_type=CUCC, channel_code=BJ001）
- **THEN** 系统允许创建，因为 `carrier_type` 不同

#### Scenario: 运营商类型枚举限制

- **WHEN** 平台创建运营商，`carrier_type` 为 "OTHER"（不在枚举中）
- **THEN** 系统拒绝创建，返回错误信息"运营商类型必须是 CMCC/CUCC/CTCC/CBN 之一"

---

### Requirement: 运营商数据校验

系统 SHALL 对运营商数据进行校验，确保数据完整性和一致性。

**校验规则**：
- `carrier_type`：必填，枚举值 "CMCC" | "CUCC" | "CTCC" | "CBN"
- `carrier_name`：必填，长度 1-100 字符
- `carrier_code`：必填，长度 1-50 字符
- `channel_name`：可选，长度 1-100 字符
- `channel_code`：可选，长度 1-50 字符
- `status`：必填，枚举值 1-2

#### Scenario: 创建运营商时 carrier_type 无效

- **WHEN** 创建运营商，`carrier_type` 为 "INVALID"
- **THEN** 系统拒绝创建，返回错误信息"运营商类型无效"

#### Scenario: 创建运营商时 carrier_name 为空

- **WHEN** 创建运营商，`carrier_name` 为空
- **THEN** 系统拒绝创建，返回错误信息"运营商名称不能为空"
