Files
huang 6dfc5c0301
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m5s
feat: 资产解析接口新增实名时间字段
- AssetResolveResponse 新增 real_name_at 字段:card 类型取 first_realname_at,device 类型取绑定卡中最小的实名时间
- BoundCardInfo 新增 real_name_at 字段:各卡自己的 first_realname_at
- RefreshCardDataFromGateway 手动刷新路径补写实名时间:检测到 0→1 变化时同步写入 first_realname_at
- 同步更新 asset-resolve 规格文档

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-09 12:12:28 +08:00

2.6 KiB
Raw Blame History

MODIFIED Requirements

Requirement: 统一资产解析入口

系统 SHALL 提供统一的资产查找接口,通过任意标识符定位卡或设备,并返回该资产的中等聚合信息。

API 端点: GET /api/admin/assets/resolve/:identifier

响应结构AssetResolveResponse新增字段

通用字段device 和 card 均有)

  • real_name_at*time.Time,可为 null最近一次完成实名的时间
    • card 类型:直接取 IotCard.first_realname_at(未实名过则为 null
    • device 类型:当前所有绑定卡 first_realname_at 中的最小值(无已实名卡则为 null

绑定卡列表字段变更BoundCardInfo

  • real_name_at*time.Time,可为 null该卡最近一次完成实名的时间IotCard.first_realname_at

Scenario: 已实名的卡查询实名时间

  • WHEN 通过标识符解析一张 real_name_status = 1 的卡
  • THEN 响应中 real_name_at 返回该卡最近一次 0→1 变化时的时间戳

Scenario: 未实名的卡查询实名时间

  • WHEN 通过标识符解析一张 real_name_status = 0 的卡
  • THEN 响应中 real_name_at 返回 null

Scenario: 设备视角查询实名时间(部分卡已实名)

  • WHEN 通过标识符解析一台设备,其中绑定了多张卡,部分卡已实名
  • THEN 响应中 real_name_at 返回所有已实名绑定卡中 first_realname_at 最小的时间戳

Scenario: 设备视角查询实名时间(无已实名卡)

  • WHEN 通过标识符解析一台设备,其所有绑定卡均未实名
  • THEN 响应中 real_name_at 返回 null

Scenario: 设备绑定卡列表实名时间

  • WHEN 通过标识符解析一台设备,绑定卡列表非空
  • THEN cards 数组中每个 BoundCardInforeal_name_at 返回各卡自己的 first_realname_at(未实名则为 null

ADDED Requirements

Requirement: 手动刷新路径同步写入实名时间

系统 SHALL 在手动刷新路径(RefreshCardDataFromGateway)检测到实名状态由非已实名变为已实名(0→1)时,同步写入 first_realname_at,与轮询路径行为一致。

Scenario: 手动刷新触发实名状态变更

  • WHEN 调用手动刷新接口,网关返回实名状态为已实名,且卡当前状态为未实名
  • THEN tb_iot_card.first_realname_at 被更新为当前时间戳

Scenario: 手动刷新时实名状态无变化

  • WHEN 调用手动刷新接口,网关返回实名状态与卡当前状态相同
  • THEN tb_iot_card.first_realname_at 不被修改