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