Files
sexygoat 950520635d
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 3m54s
feat: 文件下载
2026-04-30 18:04:01 +08:00

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