Files
one-pipe-system/openspec/changes/add-admin-task-and-audit-log-file-download/proposal.md
sexygoat 950520635d
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 3m54s
feat: 文件下载
2026-04-30 18:04:01 +08:00

55 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 方法层面的破坏性变更;主要是后台入口、权限和前端类型契约的增量扩展