Files
junhong_cmp_fiber/.scratch/enterprise-auth-and-asset-enhancements/issues/03-asset-exchange-status-fields.md
break 3b7b856e48
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m9s
企业授权增强与资产列表扩展
- 企业卡授权唯一约束:新增 DB 迁移(000154),卡级部分唯一索引防止同一张卡被多个企业同时持有,Service 层新增跨企业冲突检测
- 单卡列表新增 network_status 过滤参数
- 单卡/设备列表新增 asset_status、asset_status_name、generation 响应字段
- 单卡/设备列表新增企业维度过滤(authorized_enterprise_id、is_authorized_to_enterprise)及响应中企业授权信息(批量加载,无 N+1)
- 主钱包流水/退款列表新增 asset_identifier 精确过滤参数
- 企业卡授权/收回接口升级为三模式(list/range/filter),企业设备授权/收回升级为双模式(list/filter)
- 升级 sonic v1.14.2 → v1.15.2 以兼容 Go 1.26

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-17 16:23:03 +09:00

1.4 KiB
Raw Blame History

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

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

Blocked by

None - can start immediately