feat: Admin 媒体库列表、删除与同步索引

SSR /admin/media 复用 ListMedia/DeleteMedia,并支持按 ID 批量删与扫盘回填。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-30 03:47:20 +08:00
parent 0c5fe8a1b4
commit 9e403a7178
11 changed files with 570 additions and 34 deletions

View File

@@ -175,11 +175,11 @@
## M. 媒体与存储
- [ ] 本地 uploads 或 S3 兼容存储(可热切换配置)
- [ ] 头像 / 帖图 / 站点品牌资源分类
- [ ] 图片展示可选 WebP 转换(`/media/thumb/...`
- [ ] 管理后台媒体列表与删除
- [ ] 媒体索引表同步
- [ ] 本地 uploads 或 S3 兼容存储(可热切换配置)— 后端已支持Admin 热切换 UI 未迁
- [x] 头像 / 帖图 / 站点品牌资源分类 — 上传路径 + Admin 分类筛选
- [ ] 图片展示可选 WebP 转换(`/media/thumb/...`— 路由已有;全站默认策略未产品化
- [x] 管理后台媒体列表与删除 — SSR `/admin/media`
- [x] 媒体索引表同步 — 启动扫盘 + Admin「同步索引」
---

View File

@@ -54,10 +54,11 @@
| `/admin/reports` | 举报处理 | 已迁 |
| `/admin/users` | 用户列表、禁言、认证、调积分 | 已迁 |
| `/admin/badges` | 徽章定义 CRUD、限定颁发/收回 | 已迁 |
| `/admin/media` | 媒体库分类浏览、删除、同步索引 | 已迁 |
| `/admin/trash` | 帖回收站 | 已迁 |
| `/admin/login` | 重定向前台登录 | 已迁 |
未迁(原 SPAmedia / 完整 Limits 等。
未迁(原 SPA完整 Limits / OIDC·Gitea·存储热切换 Admin 等。
---
@@ -197,6 +198,7 @@
| Reports | 处理动作dismiss / resolve / reject_post / reject_comment — SSR `/admin/reports` |
| Users | 搜索;禁言;认证;调积分 — SSR `/admin/users`(设等级 / 授徽章挂在徽章页) |
| Badges | 定义自动/限定徽章;颁发/收回限定 — SSR `/admin/badges` |
| Media | 分类浏览;单删/批量删;同步索引 — SSR `/admin/media` |
| Media | 分类浏览;批量删 |
| Settings | Tab论坛限制、侧栏组件、伪静态、邮件、OIDC+客户端、Gitea、存储、品牌、敏感词、备份 — SSR `/admin/settings` 已迁品牌/限流/侧栏/敏感词/邮件/SQLite 备份OIDC/Gitea/存储/伪静态未迁) |

View File

@@ -12,15 +12,15 @@
| 项 | 值 |
|----|-----|
| **上一刀** | Admin `/admin/badges`(定义 CRUD + 限定颁发/收回 |
| **下一刀** | **Admin `/admin/media`**(媒体列表 / 删除 |
| **上一刀** | Admin `/admin/media`(列表 / 删除 / 同步索引 |
| **下一刀** | **等级/自动徽章 UI****防刷分成**`02` §H P2开刀前确认偏好 |
| **工作区** | 应干净;有未提交改动时先处理再开新刀 |
---
## 一句话状态
论坛核心闭环安装、认证、Feed、五种帖类型、评论、私信、友链、审核、回收站、基础设置、备份**已迁完**。Admin 用户徽章已齐;余量主要是媒体、成长体系、OIDC/存储产品化与体验打磨。
论坛核心闭环 + Admin 用户/徽章/媒体 **已迁完**余量主要是成长体系与防刷、OIDC/存储产品化与体验打磨。
```mermaid
flowchart LR
@@ -59,14 +59,12 @@ flowchart LR
| dashboard / boards / moderation / reports / trash | 已迁 |
| settings品牌、限流、敏感词、SMTP、侧栏、SQLite 备份 | 已迁 |
| friend-links / pages | 已迁 |
| **users**(禁言 / 认证 / 调积分) | **已迁** |
| **badges**(定义 CRUD + 限定颁发/收回) | **已迁** |
| **media** | **未迁** |
| **users / badges / media** | **已迁** |
| settingsOIDC / Gitea / 存储 / 伪静态 Tab | **未迁** |
### 近期提交(摘)
`lottery` → Admin users → **Admin badges**
Admin users → badges → **media**
---
@@ -77,15 +75,15 @@ flowchart LR
- 发评路径挂 `RateLimiter` `comment` 动作服务层已有键web 未挂)
- Logo/Favicon/OG 上传、头像裁剪等声明为未做的边角
### P1 — 推荐刀序(服务层多半已齐)
### P1 — Admin 核心
1. ~~Admin 用户~~
2. ~~Admin 徽章~~
3. **Admin 媒体** ← 当前指针
3. ~~Admin 媒体~~
### P2 — 成长与防刷
### P2 — 成长与防刷 ← 当前指针候选
- Exp → Lv110、自动徽章调度 UI、短龄同 IP 互刷拒绝分成(`02` §H
- Exp → Lv110 设定 UI、自动徽章调度说明、短龄同 IP 互刷拒绝分成(`02` §H
### P3 — 体验 / 编辑器(可砍或长期)
@@ -98,7 +96,7 @@ flowchart LR
- KGitea `/projects`
- LOIDC 产品化 Admin CRUD
- MS3 热切换、WebP thumb 全链路
- MS3 热切换、WebP thumb 全链路产品化
---
@@ -106,39 +104,39 @@ flowchart LR
| 序 | 刀 | 产出 |
|----|----|------|
| ✓ | 五种帖类型 + 备份/复检 + §O 勾选 | 核心闭环 |
| ✓ | 本文 `09` | 可查阅进度 |
| | Admin `/admin/users` | 禁言/认证/调积分 |
| ✓ | Admin `/admin/badges` | 徽章 CRUD + 授予 |
| → | Admin `/admin/media` | 媒体列表删除 |
| 5 | 等级/自动徽章 **或** 防刷分成 | 按当时偏好 |
| ✓ | 五种帖类型 + 备份/复检 + §O | 核心闭环 |
| ✓ | Admin users / badges / media | Admin P1 |
| | 等级设定 **或** 防刷分成 | 需偏好 |
| … | P3 / 后置 | 需明确点名再开 |
---
## 下一刀实现提纲:Admin 媒体
## 下一刀实现提纲:P2 候选
> 确认「继续」后实现媒体库列表与删除;对齐既有上传/存储服务
> 「继续」前请点名:**等级/Exp UI**、**防刷分成**或其它OIDC/伪静态等)
### 范围(草案)
### A. 等级
- `GET /admin/media`:按时间分页列表(缩略图 / 路径 / 引用粗览
- `POST /admin/media/:id/delete`:删库文件 + 记录
- 回写 `02` / `06`;指针 → 成长或按偏好
- Admin 设用户 Exp/Lv`SetUserLevel` 已有
- 公开页等级展示对齐
### 不做
### B. 防刷分成
S3 热切换产品化、全站未引用扫描清理器。
- 短龄同 IP 互刷拒绝创作分成(`02` §H
---
## 已完成Admin 媒体
见 [plans/admin-media.md](plans/admin-media.md)。
## 已完成Admin 徽章
见 [plans/admin-badges.md](plans/admin-badges.md);路由 `/admin/badges` + award / revoke
见 [plans/admin-badges.md](plans/admin-badges.md)。
## 已完成Admin 用户管理
见 [plans/admin-users.md](plans/admin-users.md);路由 `/admin/users` + ban / verify / points
见 [plans/admin-users.md](plans/admin-users.md)。
---

View File

@@ -0,0 +1,21 @@
# Admin 媒体库SSR— 实现计划
> 状态已完成SSR `/admin/media`
> 分支:`rebuild/gitea-ssr`
## 范围
| 能力 | 服务 | 路由 |
|------|------|------|
| 分类/搜索/分页列表 | `UploadStore.ListMedia` | `GET /admin/media` |
| 单删 | `DeleteMediaByIDs` | `POST /admin/media/:id/delete` |
| 批量删 | 同上 | `POST /admin/media/delete` |
| 同步索引 | `SyncMediaIndex` | `POST /admin/media/sync` |
## 不做
S3 热切换 Admin、全站未引用扫描清理、WebP 产品化默认策略。
## 验证
`build.bat`;冒烟:写入 uploads → 同步索引 → 列表可见 → 删除。