81 lines
4.1 KiB
Markdown
81 lines
4.1 KiB
Markdown
## 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 因共享组件复用而错误显示该入口
|