4.1 KiB
4.1 KiB
ADDED Requirements
Requirement: Admin Import Tasks Provide Source File Download Actions
The admin import task pages SHALL provide a source-file download action for eligible task rows and SHALL gate the action with page-specific permissions.
Scenario: Show download action on IoT card task rows
- GIVEN 后台 IoT 卡任务列表中的某条任务记录包含可下载的原始文件标识
- AND 当前用户具备该页面的下载文件权限
- WHEN 任务列表渲染该条记录
- THEN 该条记录的操作列 MUST 显示“下载文件”
- AND 用户点击后,页面 MUST 通过
POST /api/admin/storage/batch-download-urls获取该文件的下载地址并发起下载
Scenario: Show download action on device task rows
- GIVEN 后台设备任务列表中的某条任务记录包含可下载的原始文件标识
- AND 当前用户具备该页面的下载文件权限
- WHEN 任务列表渲染该条记录
- THEN 该条记录的操作列 MUST 显示“下载文件”
- AND 用户点击后,页面 MUST 通过
POST /api/admin/storage/batch-download-urls获取该文件的下载地址并发起下载
Scenario: Hide task download action when permission or file key is missing
- GIVEN 某条任务记录缺少可下载文件标识,或当前用户不具备该页面的下载文件权限
- WHEN 任务列表渲染该条记录
- THEN 页面 MUST NOT 显示“下载文件”入口
Requirement: Admin Operation Logs Provide Inline File Download Actions
The admin asset operation log views SHALL append an inline download action next to 文件存储键 / file_key values when a downloadable file exists.
Scenario: Asset detail operation log shows inline download action
- GIVEN 用户在资产详情页查看操作审计日志
- AND 某条日志变更内容包含
文件存储键或file_key - AND 当前用户具备资产详情页日志下载权限
- WHEN 该日志内容被渲染
- THEN 页面 MUST 在对应文件键值后显示“下载文件”
- AND 用户点击后,页面 MUST 通过
POST /api/admin/storage/batch-download-urls获取该文件的下载地址并发起下载
Scenario: IoT card list log dialog shows inline download action
- GIVEN 用户从 IoT 卡列表打开操作审计日志弹窗
- AND 某条日志变更内容包含
文件存储键或file_key - AND 当前用户具备 IoT 卡列表日志下载权限
- WHEN 该日志内容被渲染
- THEN 页面 MUST 在对应文件键值后显示“下载文件”
Scenario: Device list log dialog shows inline download action
- GIVEN 用户从设备列表打开操作审计日志弹窗
- AND 某条日志变更内容包含
文件存储键或file_key - AND 当前用户具备设备列表日志下载权限
- WHEN 该日志内容被渲染
- THEN 页面 MUST 在对应文件键值后显示“下载文件”
Scenario: Hide inline log download action without permission or file key
- GIVEN 某条日志不包含可下载文件键值,或当前用户不具备当前入口的日志下载权限
- WHEN 该日志内容被渲染
- THEN 页面 MUST NOT 显示“下载文件”入口
Requirement: Admin File Download Permissions Remain Entry-Specific
The admin file-download entry points MUST use distinct permission checks per page context instead of sharing one global download permission.
Scenario: Task page permissions are isolated
- GIVEN 某用户具备设备任务页的下载文件权限,但不具备 IoT 卡任务页的下载文件权限
- WHEN 用户分别访问两个任务页
- THEN 设备任务页 MAY 显示“下载文件”
- AND IoT 卡任务页 MUST NOT 因设备任务权限而显示该入口
Scenario: Shared log component respects caller-specific permissions
- GIVEN 某用户具备 IoT 卡列表日志下载权限,但不具备设备列表日志下载权限
- WHEN 同一共享日志组件分别在两个入口渲染包含
file_key的日志 - THEN IoT 卡列表入口 MAY 显示“下载文件”
- AND 设备列表入口 MUST NOT 因共享组件复用而错误显示该入口