fix: 将导出列表分成三个模块
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 4m40s
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 4m40s
This commit is contained in:
@@ -0,0 +1,111 @@
|
||||
## ADDED Requirements
|
||||
|
||||
### Requirement: Scene-Specific Export Task Pages
|
||||
|
||||
The admin frontend SHALL replace the single generic export task list entry with three scene-specific export task pages: 导出设备, 导出IOT卡, and 导出订单.
|
||||
|
||||
#### Scenario: Render scene-specific export task navigation
|
||||
|
||||
- **GIVEN** 用户打开资产管理下的导出管理菜单
|
||||
- **WHEN** 系统渲染导出任务导航
|
||||
- **THEN** 系统 MUST provide separate entries for 导出设备, 导出IOT卡, and 导出订单
|
||||
- **AND** 系统 MUST NOT expose the old generic 导出列表 menu entry as the primary navigation entry
|
||||
|
||||
#### Scenario: Query device export tasks
|
||||
|
||||
- **GIVEN** 用户打开导出设备页面
|
||||
- **WHEN** 页面查询导出任务列表
|
||||
- **THEN** 系统 MUST call `GET /api/admin/export-tasks` with `scene=device`
|
||||
- **AND** 用户 MUST NOT be able to change this page to query `iot_card` or `order` tasks through a scene selector
|
||||
|
||||
#### Scenario: Query IOT card export tasks
|
||||
|
||||
- **GIVEN** 用户打开导出IOT卡页面
|
||||
- **WHEN** 页面查询导出任务列表
|
||||
- **THEN** 系统 MUST call `GET /api/admin/export-tasks` with `scene=iot_card`
|
||||
- **AND** 用户 MUST NOT be able to change this page to query `device` or `order` tasks through a scene selector
|
||||
|
||||
#### Scenario: Query order export tasks
|
||||
|
||||
- **GIVEN** 用户打开导出订单页面
|
||||
- **WHEN** 页面查询导出任务列表
|
||||
- **THEN** 系统 MUST call `GET /api/admin/export-tasks` with `scene=order`
|
||||
- **AND** 用户 MUST NOT be able to change this page to query `device` or `iot_card` tasks through a scene selector
|
||||
|
||||
### Requirement: Remove Export Scene Filtering From Scene Pages
|
||||
|
||||
Scene-specific export task pages SHALL remove user-facing export scene filtering because each page has exactly one fixed scene.
|
||||
|
||||
#### Scenario: Hide scene search field
|
||||
|
||||
- **GIVEN** 用户打开任一导出任务场景页面
|
||||
- **WHEN** 页面渲染搜索表单
|
||||
- **THEN** 页面 MUST NOT display a 导出场景 search item
|
||||
- **AND** reset and search actions MUST keep the page's fixed `scene` unchanged
|
||||
|
||||
#### Scenario: Avoid redundant scene column
|
||||
|
||||
- **GIVEN** 用户打开任一导出任务场景页面
|
||||
- **WHEN** 页面渲染任务表格
|
||||
- **THEN** 页面 SHOULD remove or hide the 场景 column by default
|
||||
- **AND** 页面 MUST continue to display task number, status, progress, format, row counts, shard progress, error message, and created time
|
||||
|
||||
### Requirement: Scene-Specific Export Task Permissions
|
||||
|
||||
The admin frontend MUST gate each export task page and page action with scene-specific permission codes so that device, IOT card, and order export task permissions are independent.
|
||||
|
||||
#### Scenario: Gate scene pages independently
|
||||
|
||||
- **GIVEN** 用户 only has `export_task:device:list`
|
||||
- **WHEN** 系统渲染导出管理菜单
|
||||
- **THEN** 系统 MUST show 导出设备
|
||||
- **AND** 系统 MUST NOT show 导出IOT卡 or 导出订单 unless the user also has `export_task:iot_card:list` or `export_task:order:list`
|
||||
|
||||
#### Scenario: Gate device export task actions independently
|
||||
|
||||
- **GIVEN** 用户打开导出设备页面
|
||||
- **WHEN** 页面渲染详情、下载 or 取消操作
|
||||
- **THEN** 系统 MUST use `export_task:device:detail`, `export_task:device:download`, and `export_task:device:cancel` respectively
|
||||
- **AND** 系统 MUST NOT treat IOT card or order export task action permissions as sufficient for device actions
|
||||
|
||||
#### Scenario: Gate IOT card export task actions independently
|
||||
|
||||
- **GIVEN** 用户打开导出IOT卡页面
|
||||
- **WHEN** 页面渲染详情、下载 or 取消操作
|
||||
- **THEN** 系统 MUST use `export_task:iot_card:detail`, `export_task:iot_card:download`, and `export_task:iot_card:cancel` respectively
|
||||
- **AND** 系统 MUST NOT treat device or order export task action permissions as sufficient for IOT card actions
|
||||
|
||||
#### Scenario: Gate order export task actions independently
|
||||
|
||||
- **GIVEN** 用户打开导出订单页面
|
||||
- **WHEN** 页面渲染详情、下载 or 取消操作
|
||||
- **THEN** 系统 MUST use `export_task:order:detail`, `export_task:order:download`, and `export_task:order:cancel` respectively
|
||||
- **AND** 系统 MUST NOT treat device or IOT card export task action permissions as sufficient for order actions
|
||||
|
||||
#### Scenario: Keep business export buttons independent
|
||||
|
||||
- **GIVEN** 用户分别访问设备管理、IOT 卡管理 and 订单列表
|
||||
- **WHEN** 页面渲染创建导出任务按钮
|
||||
- **THEN** 设备管理 MUST use `devices:export`
|
||||
- **AND** IOT 卡管理 MUST use `iot_card:export`
|
||||
- **AND** 订单列表 MUST use `orders:export`
|
||||
- **AND** possessing one of these permissions MUST NOT reveal or enable the other two export buttons
|
||||
|
||||
### Requirement: Scene-Aware Export Task Detail Permissions
|
||||
|
||||
The export task detail page SHALL apply detail, download, and cancel permissions according to the task's scene.
|
||||
|
||||
#### Scenario: Enforce scene permissions on direct detail access
|
||||
|
||||
- **GIVEN** 用户直接打开某个导出任务详情 URL
|
||||
- **WHEN** 系统加载任务详情 and reads the returned `scene`
|
||||
- **THEN** 系统 MUST require the matching scene detail permission before showing the detail content
|
||||
- **AND** 系统 MUST use the matching scene download and cancel permissions before showing detail-page buttons
|
||||
|
||||
#### Scenario: Prevent cross-scene action leakage
|
||||
|
||||
- **GIVEN** 用户 has only order export task download permission
|
||||
- **AND** 用户打开 a completed device export task detail
|
||||
- **WHEN** 页面渲染详情操作区
|
||||
- **THEN** 页面 MUST NOT show the device task download button
|
||||
- **AND** 页面 MUST NOT allow downloading that device task through the order download permission
|
||||
Reference in New Issue
Block a user