# iot-card-import-task Specification (Delta)

本变更用于收敛 IoT 卡导入任务相关接口的访问权限：仅超级管理员/平台用户可访问。

## ADDED Requirements

### Requirement: 导入任务创建权限控制

系统 SHALL 仅允许超级管理员与平台用户创建 IoT 卡导入任务。

#### Scenario: 平台用户创建导入任务
- **WHEN** 平台用户请求创建导入任务
- **THEN** 系统创建导入任务并返回任务信息

#### Scenario: 非平台用户创建导入任务被拒绝
- **WHEN** 非平台用户（代理账号/企业账号等）请求创建导入任务
- **THEN** 系统返回 403（Forbidden），并返回统一错误码 `CodeForbidden`

## MODIFIED Requirements

### Requirement: 导入任务列表查询

系统 SHALL 支持查询导入任务列表,用于管理和监控导入任务。

**查询条件**:
- 任务状态(status): 可选,1-待处理 2-处理中 3-已完成 4-失败
- 运营商 ID(carrier_id): 可选
- 批次号(batch_no): 可选,模糊匹配
- 创建时间范围: 可选

**分页**:
- 默认每页 20 条,最大每页 100 条
- 默认按创建时间倒序排列

**权限**:
- 仅超级管理员/平台用户可查询导入任务列表

#### Scenario: 查询所有导入任务

- **WHEN** 平台管理员查询导入任务列表
- **THEN** 系统返回导入任务列表,包含任务编号、状态、运营商、总数、成功数、跳过数、失败数、创建时间

#### Scenario: 按状态筛选导入任务

- **WHEN** 平台管理员查询状态为 2(处理中) 的导入任务
- **THEN** 系统返回所有正在处理的导入任务列表

#### Scenario: 非平台用户查询导入任务列表被拒绝

- **WHEN** 非平台用户（代理账号/企业账号等）查询导入任务列表
- **THEN** 系统返回 403（Forbidden），并返回统一错误码 `CodeForbidden`

### Requirement: 导入任务详情查询

系统 SHALL 支持查询单个导入任务的详细信息,包括跳过/失败记录详情。

**详情信息**:
- 任务基本信息: 任务编号、状态、运营商、批次号、文件名
- 进度统计: 总数、成功数、跳过数、失败数
- 时间信息: 创建时间、开始时间、完成时间
- 跳过记录详情: 行号、ICCID、原因
- 失败记录详情: 行号、ICCID、原因
- 错误信息: 任务级错误(如有)

**权限**:
- 仅超级管理员/平台用户可查询导入任务详情

#### Scenario: 查询导入任务详情

- **WHEN** 平台管理员查询导入任务(ID 为 1)的详情
- **THEN** 系统返回任务完整信息,包括跳过和失败记录的详细列表

#### Scenario: 非平台用户查询导入任务详情被拒绝

- **WHEN** 非平台用户（代理账号/企业账号等）查询导入任务详情
- **THEN** 系统返回 403（Forbidden），并返回统一错误码 `CodeForbidden`
