# Asset Allocation Record - Delta Spec

## MODIFIED Requirements

### Requirement: 资产分配记录查询

系统 SHALL 提供资产分配记录的查询功能，支持查看卡和设备在平台与代理商之间的流转历史。

**记录类型**:
- `allocate`: 分配记录（上级分配给下级）
- `recall`: 回收记录（上级从下级回收）

**资产类型**:
- `iot_card`: 物联网卡（单卡）
- `device`: 设备

**查询条件**:
- `allocation_type`（可选）: 分配类型，枚举值 "allocate" | "recall"
- `asset_type`（可选）: 资产类型，枚举值 "iot_card" | "device"
- `asset_identifier`（可选）: 资产标识符（ICCID 或设备号），模糊匹配
- `allocation_no`（可选）: 分配单号，精确匹配
- `from_shop_id`（可选）: 来源店铺 ID
- `to_shop_id`（可选）: 目标店铺 ID
- `operator_id`（可选）: 操作人 ID
- `created_at_start`（可选）: 创建时间起始
- `created_at_end`（可选）: 创建时间结束

**分页**:
- 默认每页 20 条，最大每页 100 条
- 返回总记录数和总页数

**数据权限**:
- 平台用户可查看所有记录
- 代理用户只能查看与自己店铺相关的记录（作为来源或目标）

**API 端点**: `GET /api/admin/asset-allocation-records`

**响应字段**:
- `id`: 记录 ID
- `allocation_no`: 分配单号
- `allocation_type`: 分配类型
- `allocation_type_name`: 分配类型名称（分配/回收）
- `asset_type`: 资产类型
- `asset_type_name`: 资产类型名称（物联网卡/设备）
- `asset_id`: 资产 ID
- `asset_identifier`: 资产标识符
- `related_device_id`: 关联设备 ID（单卡分配时，如果卡绑定了设备）
- `related_card_ids`: 关联卡 ID 列表（设备分配时，包含设备绑定的所有卡 ID）
- `from_owner_type`: 来源所有者类型
- `from_owner_id`: 来源所有者 ID
- `from_owner_name`: 来源所有者名称
- `to_owner_type`: 目标所有者类型
- `to_owner_id`: 目标所有者 ID
- `to_owner_name`: 目标所有者名称
- `operator_id`: 操作人 ID
- `operator_name`: 操作人名称
- `remark`: 备注
- `created_at`: 创建时间

#### Scenario: 查询所有分配记录

- **WHEN** 平台管理员查询分配记录列表，不带任何筛选条件
- **THEN** 系统返回所有分配和回收记录，按创建时间倒序排列

#### Scenario: 按资产类型筛选记录

- **WHEN** 管理员查询资产类型为 "iot_card" 的记录
- **THEN** 系统只返回物联网卡的分配/回收记录，不包含设备记录

#### Scenario: 按资产类型筛选设备记录

- **WHEN** 管理员查询资产类型为 "device" 的记录
- **THEN** 系统只返回设备的分配/回收记录，不包含单卡记录

#### Scenario: 按分配类型筛选记录

- **WHEN** 管理员查询分配类型为 "allocate" 的记录
- **THEN** 系统只返回分配记录，不包含回收记录

#### Scenario: 按 ICCID 模糊查询

- **WHEN** 管理员输入 asset_identifier = "8986001"
- **THEN** 系统返回 ICCID 包含 "8986001" 的所有分配记录

#### Scenario: 按设备号模糊查询

- **WHEN** 管理员输入 asset_identifier = "GPS"
- **THEN** 系统返回设备号包含 "GPS" 的所有分配记录

#### Scenario: 代理查询自己相关的记录

- **WHEN** 代理用户（店铺 ID=10）查询分配记录
- **THEN** 系统只返回 from_owner_id=10 或 to_owner_id=10 的记录

---

### Requirement: 资产分配记录详情

系统 SHALL 提供资产分配记录详情查询功能。

**API 端点**: `GET /api/admin/asset-allocation-records/:id`

**响应**:
- 包含记录的所有字段
- `related_card_ids`: 关联卡 ID 列表（设备分配时，包含设备绑定的所有卡 ID）

#### Scenario: 查询分配记录详情

- **WHEN** 管理员查询分配记录详情（ID=1）
- **THEN** 系统返回该记录的完整信息，包括来源/目标所有者名称、操作人名称等

#### Scenario: 查询设备分配记录详情

- **WHEN** 管理员查询设备分配记录详情
- **THEN** 系统返回该记录的完整信息，包括 related_card_ids（设备绑定的所有卡 ID）

#### Scenario: 查询不存在的记录

- **WHEN** 管理员查询不存在的分配记录（ID=999）
- **THEN** 系统返回 404 错误，提示"分配记录不存在"
