Files
sexygoat 28246f5345
Some checks failed
构建并部署前端到测试环境 / build-and-deploy (push) Failing after 3h10m20s
fix: 优化体验
2026-05-09 16:13:39 +08:00

5.6 KiB

ADDED Requirements

Requirement: Agent IoT Card List SHALL Surface Device Binding Status

The agent-side IoT card list SHALL derive a device-binding status from the device_virtual_no field returned by GET /api/admin/iot-cards/standalone and show that status in each IoT card list item.

Scenario: Card is not bound to a device

  • WHEN an IoT card item has device_virtual_no equal to null, undefined, an empty string, or a whitespace-only string
  • THEN the list item SHALL show a status tag with 未绑定设备
  • AND the UI SHALL NOT display a fabricated device identifier
  • AND the UI SHALL NOT prepend an extra 设备绑定 label before the tag

Scenario: Card is bound to a device

  • WHEN an IoT card item has a non-empty device_virtual_no
  • THEN the list item SHALL show a status tag with 已绑定设备
  • AND the UI MAY keep the raw device_virtual_no hidden

Requirement: Agent Asset Lists SHALL Support Cascaded Shop Filtering

The agent-side asset lists SHALL provide a cascaded shop filter that is backed by GET /api/admin/shops/cascade and applies the selected shop ID to the active list request.

Scenario: User chooses a shop node under the IoT card tab

  • WHEN the user opens the shop filter under the IoT卡 tab and confirms a shop node
  • THEN the selected node id SHALL be sent as shop_id in the subsequent IoT card list request
  • AND the list SHALL refresh using that shop filter

Scenario: User chooses a shop node under the device tab

  • WHEN the user opens the shop filter under the 设备 tab and confirms a shop node
  • THEN the selected node id SHALL be sent as shop_id in the subsequent device list request
  • AND the device list SHALL refresh using that shop filter
  • AND the device list request SHALL keep its existing search semantics and append shop_id in addition to them

Scenario: Selected shop has children

  • WHEN a shop node returned from GET /api/admin/shops/cascade has has_children = true
  • THEN the UI SHALL allow the user to continue drilling down to child shops
  • AND the UI SHALL use parent_id to load the next level

Scenario: User clears the shop filter

  • WHEN the user clears the shop filter
  • THEN subsequent IoT card list requests SHALL omit shop_id
  • AND subsequent device list requests SHALL omit shop_id

Scenario: Device tab is active

  • WHEN the active asset tab is 设备
  • THEN the shop filter SHALL still be shown
  • AND device list requests SHALL support shop_id

Requirement: Agent Asset Search Input SHALL Be Fixed By Active Tab

The agent asset list SHALL remove the manual search-type selector and bind search semantics directly to the active tab.

  • WHEN the active tab is IoT卡
  • THEN the search field SHALL target iccid
  • AND the search placeholder SHALL be 搜索ICCID
  • AND the UI SHALL NOT show a search-type switcher
  • WHEN the active tab is 设备
  • THEN the search field SHALL target virtual_no
  • AND the user-facing search label SHALL be 设备号
  • AND the search placeholder SHALL be 搜索设备号
  • AND the UI SHALL NOT show a search-type switcher

Requirement: Agent Asset List Controls SHALL Stay Fixed At The Top

The agent-side asset list page SHALL keep the search input and the filter/tab control area fixed at the top of the page while the list content scrolls independently underneath.

Scenario: User scrolls a long IoT card list

  • WHEN the active tab is IoT卡 and the user scrolls the list
  • THEN the search input SHALL remain visible at the top
  • AND the filter and tab controls directly below it SHALL remain visible at the top
  • AND only the list content area SHALL scroll

Scenario: User scrolls a long device list

  • WHEN the active tab is 设备 and the user scrolls the list
  • THEN the search input SHALL remain visible at the top
  • AND the filter and tab controls directly below it SHALL remain visible at the top
  • AND only the list content area SHALL scroll

Scenario: Fixed controls do not cover list content

  • WHEN the fixed top control area is rendered
  • THEN the list content SHALL start below that area
  • AND the first list item SHALL remain fully visible and operable

Requirement: Agent Asset Lists SHALL Use Explicit Load-More Pagination

The agent-side IoT card list and device list SHALL stop automatic pagination triggered by scrolling to the bottom and SHALL use an explicit footer button to load the next page.

Scenario: IoT card tab still has more pages

  • WHEN the active tab is IoT卡 and the current IoT card result set has more pages available
  • THEN the footer SHALL show a button labeled 加载更多
  • AND the next page SHALL NOT be requested until the user clicks that button

Scenario: Device tab still has more pages

  • WHEN the active tab is 设备 and the current device result set has more pages available
  • THEN the footer SHALL show a button labeled 加载更多
  • AND the next page SHALL NOT be requested until the user clicks that button

Scenario: User clicks the load-more button

  • WHEN the user clicks the 加载更多 button for the active tab
  • THEN the UI SHALL request the next page for that tab using the existing active filters and search parameters
  • AND the returned items SHALL append to the existing list instead of replacing it

Scenario: No more pages remain

  • WHEN the active list has no more pages available
  • THEN the 加载更多 button SHALL NOT be shown