## ADDED Requirements ### Requirement: Admin Device Detail Status Fields Use A Selected Bound Card The admin asset information view SHALL source the device detail `实名状态`, `在线状态`, and `实名时间` fields from a selected bound card in the device `cards` list instead of mixing device top-level status fields. #### Scenario: Device detail uses the only bound card when exactly one card is bound - **GIVEN** 用户正在查看后台“资产信息”中的设备资产详情 - **AND** 设备详情响应中的 `cards` 列表仅包含一条绑定卡记录 - **WHEN** 页面渲染设备基础信息区域 - **THEN** 页面 MUST 将 `实名状态` 映射为这条绑定卡的 `real_name_status` - **AND** 页面 MUST 将 `在线状态` 映射为这条绑定卡的 `network_status` - **AND** 页面 MUST 将 `实名时间` 映射为这条绑定卡的 `real_name_at` - **AND** 页面 MUST NOT 要求这条唯一绑定卡必须带有 `is_current=true` 才可被选中 #### Scenario: Device detail uses the current bound card when multiple cards are bound - **GIVEN** 用户正在查看后台“资产信息”中的设备资产详情 - **AND** 设备详情响应中的 `cards` 列表包含多条绑定卡记录 - **AND** 其中一条绑定卡记录的 `is_current` 为 `true` - **WHEN** 页面渲染设备基础信息区域 - **THEN** 页面 MUST 将 `实名状态` 映射为该当前绑定卡的 `real_name_status` - **AND** 页面 MUST 将 `在线状态` 映射为该当前绑定卡的 `network_status` - **AND** 页面 MUST 将 `实名时间` 映射为该当前绑定卡的 `real_name_at` - **AND** 页面 MUST NOT 使用任意非当前绑定卡的对应字段填充这三个展示项 - **AND** 页面 MUST NOT 在已选出当前绑定卡后继续混用设备顶层 `real_name_status`、`online_status`、`real_name_at` #### Scenario: Device detail keeps stable placeholders when no eligible bound card can be selected - **GIVEN** 用户正在查看后台“资产信息”中的设备资产详情 - **AND** `cards` 列表为空,或 `cards` 列表包含多条记录但不存在 `is_current=true` 的绑定卡 - **WHEN** 页面渲染 `实名状态`、`在线状态`、`实名时间` 这三个展示项 - **THEN** 页面 MUST 保留这三个字段标签 - **AND** 页面 MUST 显示稳定占位内容 - **AND** 页面 MUST NOT 猜测性地回退到任意非当前绑定卡 ### Requirement: Admin Device Bound Card Status Contract Compatibility The admin asset information integration SHALL accept and preserve the bound-card fields needed by the device detail status source selection rule. #### Scenario: Device asset detail contract accepts bound-card real-name time - **GIVEN** `GET /api/admin/assets/resolve/:identifier` 返回设备资产详情 - **AND** 响应中的 `cards` 列表包含每张绑定卡的 `real_name_status`、`network_status`、`real_name_at`、`is_current` - **WHEN** 前端解析设备资产详情响应 - **THEN** 前端绑定卡类型契约 MUST 支持 `real_name_at` - **AND** 前端状态模型 MUST 保留每张绑定卡的 `real_name_status`、`network_status`、`real_name_at`、`is_current` #### Scenario: Realtime merge preserves selected-card real-name time for device detail display - **GIVEN** 前端已解析设备资产详情,并持有绑定卡的 `real_name_at` - **AND** `GET /api/admin/assets/:identifier/realtime-status` 或 `POST /api/admin/assets/:identifier/refresh` 返回了设备实时状态 - **WHEN** 前端将实时返回的 `cards` 数据与已有绑定卡状态合并 - **THEN** 绑定卡已有的 `real_name_at` MUST NOT 因实时合并而无故丢失 - **AND** 后续设备详情展示 MUST 继续按选中的绑定卡读取 `real_name_at`