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_noequal tonull,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_nohidden
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
idSHALL be sent asshop_idin 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
idSHALL be sent asshop_idin 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_idin addition to them
Scenario: Selected shop has children
- WHEN a shop node returned from
GET /api/admin/shops/cascadehashas_children = true - THEN the UI SHALL allow the user to continue drilling down to child shops
- AND the UI SHALL use
parent_idto 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.
Scenario: IoT card tab search
- 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
Scenario: Device tab search
- 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