# Change: 为后台任务页与操作审计日志补充文件下载入口 ## Why 当前后台已经具备对象存储上传能力和下载 URL 获取接口,但与“下载文件”相关的运营入口仍然缺失两块关键能力: - IoT 卡任务页和设备任务页虽然展示了导入任务记录,但操作列里没有“下载文件”入口,运营无法直接回看任务原始导入文件。 - 资产操作审计日志已经会显示 `文件存储键` / `file_key`,但仍然只是纯文本,无法直接从日志里发起下载。 同时,本次需求明确要求这些下载入口按页面上下文拆分权限,不允许任务页和三个审计日志入口共用同一个按钮权限编码。 如果不补齐这些入口,后台用户仍然需要依赖复制 `file_key`、跳外部系统或人工排查对象存储文件,审计与任务追溯链路会继续断裂。 本提案仅覆盖后台管理端(admin)能力,不包含 C 端页面和 C 端接口消费逻辑。 ## What Changes - 为后台任务管理增加原始导入文件下载入口: - 在 IoT 卡任务列表操作列增加“下载文件” - 在设备任务列表操作列增加“下载文件” - 两个任务页分别使用独立按钮权限编码 - 为后台资产操作审计日志增加基于 `file_key` 的下载入口: - 当日志变更内容包含 `文件存储键` / `file_key` 时,在对应值后追加“下载文件” - 资产详情页、IoT 卡列表审计日志弹窗、设备列表审计日志弹窗分别使用独立按钮权限编码 - 共享日志组件需要支持由不同入口传入对应的下载权限上下文 - 明确复用现有下载接口: - 所有下载入口统一通过 `POST /api/admin/storage/batch-download-urls` 获取预签名下载 URL - 本次不新增新的对象存储下载 API - 范围约束: - 不改造上传流程 - 不扩展为“文件中心”或批量多文件下载能力 - 不顺带统一现有全部权限命名历史差异,仅为本次新增入口定义可审查的权限编码 ## Impact - Affected specs: - `admin-file-download` - Affected code: - `src/api/modules/storage.ts` - `src/views/asset-management/task-management/iot-card-task/index.vue` - `src/views/asset-management/task-management/device-task/index.vue` - `src/views/asset-management/asset-information/components/OperationLogsCard.vue` - `src/components/business/OperationLogsDialog.vue` - `src/views/asset-management/asset-information/index.vue` - `src/views/asset-management/iot-card-management/index.vue` - `src/views/asset-management/device-list/index.vue` - `src/types/api/card.ts` - `src/types/api/device.ts` - Dependencies: - 依赖现有 `POST /api/admin/storage/batch-download-urls` 可为单个 `file_key` 返回可直接下载的预签名 URL - 与活跃变更 `update-admin-asset-device-signal-and-audit-logs` 存在 `OperationLogsCard.vue` 共享组件交集,实施前需要基于其最新状态合并 - 导入任务列表/详情接口需要提供可下载所需的 `file_key`;如果当前接口尚未返回,实施阶段需要同步补齐契约 - Breaking changes: - 无外部接口路径和 HTTP 方法层面的破坏性变更;主要是后台入口、权限和前端类型契约的增量扩展