Status: ready-for-human

## Parent

`.scratch/enterprise-auth-and-asset-enhancements/PRD.md`

## What to build

在 standalone 卡列表响应和设备列表响应中暴露换货相关字段，使运营人员能直接在列表中识别资产的换货历史。

**`StandaloneIotCardResponse` 新增三个字段：**
- `asset_status int`：业务状态（1=在库, 2=已销售, 3=已换货, 4=已停用）
- `asset_status_name string`：对应中文名称
- `generation int`：资产世代编号（初始值1，每次换货+旧资产转新后 +1）

**`DeviceResponse` 同步新增相同三个字段。**

语义约定（写入注释和 description）：
- `asset_status = 3`：该资产已换货且尚未执行"旧资产转新"，不再流通
- `generation > 1`：该资产历史上曾执行过换货后转新，目前仍在使用

Service 层组装响应时直接从 Model 取值，`asset_status_name` 通过 constants 中的方法转换。

## Acceptance criteria

- [x] `/api/admin/iot-cards/standalone` 响应中每条记录包含 `asset_status`、`asset_status_name`、`generation` 三个字段
- [x] `/api/admin/devices` 响应中每条记录包含相同三个字段
- [x] 已换货未转新的卡/设备返回 `asset_status=3`、`asset_status_name="已换货"`
- [x] 经过换货转新重入库的卡/设备返回 `generation=2`（或更高）且 `asset_status=1`
- [x] 普通未经历换货的资产返回 `generation=1`

## Blocked by

None - can start immediately
