feat(admin): show storage policies
This commit is contained in:
@@ -380,6 +380,17 @@
|
||||
- `GET /api/admin/files`
|
||||
- `DELETE /api/admin/files/{fileId}`
|
||||
|
||||
### 5.4 存储策略
|
||||
|
||||
`GET /api/admin/storage-policies`
|
||||
|
||||
说明:
|
||||
|
||||
- 需要管理员登录
|
||||
- 返回当前存储策略的只读列表和结构化能力声明
|
||||
- 当前仅用于管理台查看默认策略、启用状态、存储类型和能力矩阵,不支持新增、编辑、启停或删除策略
|
||||
- `capabilities.multipartUpload` 当前仍为能力声明字段,不代表真实对象存储 multipart 已启用
|
||||
|
||||
## 6. 前端公开路由与接口关系
|
||||
|
||||
前端入口在:
|
||||
|
||||
@@ -452,3 +452,4 @@ Android 壳补充说明:
|
||||
- 2026-04-08 阶段 4 第一小步补充:后端新增存储策略骨架。`StoragePolicyService` 作为 `CommandLineRunner` 在启动时确保存在默认策略,并把当前 `FileStorageProperties` 映射为 `LOCAL` 或 `S3_COMPATIBLE` 策略及 `StoragePolicyCapabilities` JSON;当前能力声明中 `multipartUpload=false`,用于明确真实对象存储分片写入/合并还没有启用。`UploadSession.storagePolicyId` 开始记录默认策略 ID,但 `FileContentStorage` 仍保持单对象上传/校验抽象,旧 `/api/files/**` 生产路径不切换。
|
||||
- 2026-04-08 `files/storage` 合并补充:S3 存储实现拆出多吉云临时密钥客户端与运行期会话提供器。`S3FileContentStorage` 现在通过 `S3SessionProvider.currentSession()` 获取当前 bucket、`S3Client` 和 `S3Presigner`,避免每次操作重复内联多吉云 token 解析逻辑;测试环境可直接注入 mock S3 client/presigner。该改动没有引入 multipart,仍是单对象 PUT/HEAD/GET/COPY/DELETE 路径。
|
||||
- 2026-04-08 阶段 4 第二小步补充:`FileService` 在创建新的 `FileEntity.VERSION` 时会通过 `StoragePolicyService.ensureDefaultPolicy()` 写入默认 `storagePolicyId`;`FileEntityBackfillService` 对历史 `FileBlob` 回填新实体时也写入同一默认策略。复用已有实体时保持原策略字段不变,只增加引用计数,避免在兼容迁移阶段覆盖历史数据。
|
||||
- 2026-04-08 阶段 4 第三小步补充:管理台新增只读存储策略列表。`AdminController` 暴露 `GET /api/admin/storage-policies`,`AdminService` 通过白名单 DTO 返回策略基础字段和结构化 `StoragePolicyCapabilities`;前端 `react-admin` 新增 `storagePolicies` 资源展示能力矩阵。该能力只做配置可视化,不改变旧上传下载路径,不暴露凭证,不启用策略编辑或 multipart。
|
||||
|
||||
@@ -480,7 +480,7 @@ WebDAV 是很有价值但不应太早做的工程。必须等文件模型、权
|
||||
### 阶段 4:存储策略管理
|
||||
|
||||
- 默认策略迁移。
|
||||
- 管理后台只读列表。
|
||||
- 管理后台只读列表和能力矩阵:已通过 `/api/admin/storage-policies` 与前端 `storagePolicies` 管理台资源落地。
|
||||
- 文件写入策略 ID。
|
||||
- 能力矩阵展示。
|
||||
- 2026-04-08 追加评估:不建议在阶段 3 末尾直接把 v2 上传会话接入真实对象存储 multipart。当前仓库的 `FileContentStorage` 只有单对象 PUT/校验/删除抽象,`UploadSession` 还没有 `multipartUploadId` 和 abort 语义;S3 multipart 未完成分片需要显式 abort,不能只靠 `deleteBlob(objectKey)` 清理。先完成本阶段的存储策略与能力声明,把 `multipartUpload`、`directUpload`、`signedDownloadUrl`、`requiresCors` 等能力落库,再按启用策略实现 S3 multipart。
|
||||
|
||||
Reference in New Issue
Block a user