## 1. Proposal Review

- [x] 1.1 确认本提案仅覆盖后台管理端，不包含 C 端页面与 C 端接口消费逻辑。
- [x] 1.2 确认 5 个新增下载入口需要使用彼此独立的权限编码。
- [x] 1.3 确认 IoT 卡任务下载权限是否沿用提案建议 `iot_card_task:download_file`，还是改为 `lot_task:download_file`。
- [ ] 1.4 确认导入任务列表/详情接口是否已经提供原始文件下载所需的 `file_key`。

## 2. Implementation

- [x] 2.1 补齐 IoT 卡导入任务与设备导入任务的前端类型契约，接收原始文件下载所需字段。
- [x] 2.2 在 IoT 卡任务列表操作列增加“下载文件”，并接入独立权限编码。
- [x] 2.3 在设备任务列表操作列增加“下载文件”，并接入独立权限编码。
- [x] 2.4 复用 `POST /api/admin/storage/batch-download-urls` 实现单文件下载流程。
- [x] 2.5 扩展共享操作审计日志组件，在 `文件存储键` / `file_key` 后增加“下载文件”入口。
- [x] 2.6 让资产详情页、IoT 卡列表日志弹窗、设备列表日志弹窗分别传入各自的日志下载权限编码。
- [x] 2.7 确保无权限或无 `file_key` 时不显示下载入口，且下载失败不影响原有内容渲染。

## 3. Verification

- [ ] 3.1 验证 IoT 卡任务页仅在具备对应权限且记录存在可下载文件时显示“下载文件”。
- [ ] 3.2 验证设备任务页仅在具备对应权限且记录存在可下载文件时显示“下载文件”。
- [ ] 3.3 验证资产详情页操作审计日志中，`文件存储键` 后可按权限显示“下载文件”。
- [ ] 3.4 验证 IoT 卡列表操作审计日志弹窗中，`文件存储键` 后可按权限显示“下载文件”。
- [ ] 3.5 验证设备列表操作审计日志弹窗中，`文件存储键` 后可按权限显示“下载文件”。
- [ ] 3.6 验证 5 个下载入口均通过 `batch-download-urls` 正常发起下载。
