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