## ADDED Requirements ### Requirement: 批量设置卡的套餐系列 系统 SHALL 允许代理批量为 IoT 卡设置套餐系列分配。只能设置当前店铺被分配且启用的套餐系列。 #### Scenario: 成功批量设置 - **WHEN** 代理提交多个 ICCID 和一个有效的 series_allocation_id - **THEN** 系统更新这些卡的 series_allocation_id 字段 #### Scenario: 系列未分配给店铺 - **WHEN** 代理尝试设置一个未分配给卡所属店铺的系列 - **THEN** 系统返回错误 "该套餐系列未分配给此店铺" #### Scenario: 系列分配已禁用 - **WHEN** 代理尝试设置一个已禁用的系列分配 - **THEN** 系统返回错误 "该套餐系列分配已禁用" #### Scenario: ICCID 不存在 - **WHEN** 提交的 ICCID 中有不存在的卡 - **THEN** 系统返回错误,列出不存在的 ICCID #### Scenario: 卡不属于当前店铺 - **WHEN** 代理尝试设置不属于自己店铺的卡 - **THEN** 系统返回错误 "部分卡不属于您的店铺" --- ### Requirement: 清除卡的套餐系列关联 系统 SHALL 允许代理清除卡的套餐系列关联(将 series_allocation_id 设为 0)。 #### Scenario: 清除单卡关联 - **WHEN** 代理将卡的 series_allocation_id 设为 0 - **THEN** 系统清除该卡的套餐系列关联 #### Scenario: 批量清除关联 - **WHEN** 代理批量提交 ICCID 列表,series_allocation_id 为 0 - **THEN** 系统清除这些卡的套餐系列关联 --- ### Requirement: 查询卡的套餐系列信息 系统 SHALL 在卡详情和列表中返回套餐系列关联信息。 #### Scenario: 卡详情包含系列信息 - **WHEN** 查询卡详情 - **THEN** 响应包含 series_allocation_id、关联的系列名称、佣金状态 #### Scenario: 卡列表支持按系列筛选 - **WHEN** 代理按 series_allocation_id 筛选卡列表 - **THEN** 系统只返回关联该系列的卡 --- ### Requirement: IotCard 模型新增字段 系统 MUST 在 IotCard 模型中新增以下字段: - `series_allocation_id`:套餐系列分配 ID - `first_commission_paid`:一次性佣金是否已发放(默认 false) - `accumulated_recharge`:累计充值金额(默认 0) #### Scenario: 新卡默认值 - **WHEN** 创建新的 IoT 卡 - **THEN** series_allocation_id 为空,first_commission_paid 为 false,accumulated_recharge 为 0 #### Scenario: 字段在响应中可见 - **WHEN** 查询卡信息 - **THEN** 响应包含这三个新字段