feat: Admin 徽章定义 CRUD 与限定颁发收回

SSR /admin/badges 复用 UpsertDef/AwardLimited/Revoke,并新增 DeleteDef;指针指向 media。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-30 03:42:41 +08:00
parent 02a5ad0c30
commit 0c5fe8a1b4
13 changed files with 518 additions and 21 deletions

View File

@@ -131,8 +131,8 @@
- [x] 积分解锁分成:读者付全额,作者约 70% — 门控 unlock 服务
- [ ] 短龄同 IP 互刷拒绝分成
- [ ] Exp → 等级 Lv110
- [ ] 自动徽章(注册天数 / 获赞 / 创作分成)
- [ ] 限定徽章:管理员定义与授予/撤销
- [ ] 自动徽章(注册天数 / 获赞 / 创作分成)— 种子定义 + `EvaluateAuto` 已有Admin 可改定义,独立调度 UI 未做
- [x] 限定徽章:管理员定义与授予/撤销 — SSR `/admin/badges`
- [x] 管理员调整积分、设定认证(免审)— SSR `/admin/users`(等级设定 UI 未做,仅只读展示 Lv
---

View File

@@ -53,10 +53,11 @@
| `/admin/pages` | 站点单页 CRUD / 发布 | 已迁 |
| `/admin/reports` | 举报处理 | 已迁 |
| `/admin/users` | 用户列表、禁言、认证、调积分 | 已迁 |
| `/admin/badges` | 徽章定义 CRUD、限定颁发/收回 | 已迁 |
| `/admin/trash` | 帖回收站 | 已迁 |
| `/admin/login` | 重定向前台登录 | 已迁 |
未迁(原 SPAbadges / media / 完整 Limits 等。
未迁(原 SPAmedia / 完整 Limits 等。
---
@@ -194,8 +195,8 @@
| Posts | 审核通过/拒绝 — SSR `/admin/moderation`;置顶/版顶/精华/锁编/锁评/软删 — 帖详情 Admin 条;回收站恢复/清除 — SSR `/admin/trash` |
| Comments | 审核 — SSR `/admin/moderation`;修订查看未迁 |
| Reports | 处理动作dismiss / resolve / reject_post / reject_comment — SSR `/admin/reports` |
| Users | 搜索;禁言;认证;设等级;调积分;授徽章 |
| Badges | 定义自动/限定徽章 |
| Users | 搜索;禁言;认证;调积分 — SSR `/admin/users`(设等级 / 授徽章挂在徽章页) |
| Badges | 定义自动/限定徽章;颁发/收回限定 — SSR `/admin/badges` |
| Media | 分类浏览;批量删 |
| Settings | Tab论坛限制、侧栏组件、伪静态、邮件、OIDC+客户端、Gitea、存储、品牌、敏感词、备份 — SSR `/admin/settings` 已迁品牌/限流/侧栏/敏感词/邮件/SQLite 备份OIDC/Gitea/存储/伪静态未迁) |

View File

@@ -12,15 +12,15 @@
| 项 | 值 |
|----|-----|
| **上一刀** | Admin `/admin/users`(禁言 / 认证 / 调积分 |
| **下一刀** | **Admin `/admin/badges`**徽章定义 CRUD + 授予/撤销 |
| **上一刀** | Admin `/admin/badges`(定义 CRUD + 限定颁发/收回 |
| **下一刀** | **Admin `/admin/media`**媒体列表 / 删除 |
| **工作区** | 应干净;有未提交改动时先处理再开新刀 |
---
## 一句话状态
论坛核心闭环安装、认证、Feed、五种帖类型、评论、私信、友链、审核、回收站、基础设置、备份**已迁完**。余量主要是 Admin 用户/徽章/媒体、成长体系、OIDC/存储产品化与体验打磨。
论坛核心闭环安装、认证、Feed、五种帖类型、评论、私信、友链、审核、回收站、基础设置、备份**已迁完**。Admin 用户徽章已齐;余量主要是媒体、成长体系、OIDC/存储产品化与体验打磨。
```mermaid
flowchart LR
@@ -60,12 +60,13 @@ flowchart LR
| settings品牌、限流、敏感词、SMTP、侧栏、SQLite 备份 | 已迁 |
| friend-links / pages | 已迁 |
| **users**(禁言 / 认证 / 调积分) | **已迁** |
| **badges / media** | **** |
| **badges**(定义 CRUD + 限定颁发/收回) | **** |
| **media** | **未迁** |
| settingsOIDC / Gitea / 存储 / 伪静态 Tab | **未迁** |
### 近期提交(摘)
`poll` → SQLite 备份 → 友链复检 → `question``bounty``lottery`**Admin users**
`lottery` → Admin users**Admin badges**
---
@@ -79,12 +80,12 @@ flowchart LR
### P1 — 推荐刀序(服务层多半已齐)
1. ~~Admin 用户~~
2. **Admin 徽章** ← 当前指针
3. Admin 媒体列表/删除
2. ~~Admin 徽章~~
3. **Admin 媒体** ← 当前指针
### P2 — 成长与防刷
- Exp → Lv110、自动徽章、短龄同 IP 互刷拒绝分成(`02` §H
- Exp → Lv110、自动徽章调度 UI、短龄同 IP 互刷拒绝分成(`02` §H
### P3 — 体验 / 编辑器(可砍或长期)
@@ -108,29 +109,33 @@ flowchart LR
| ✓ | 五种帖类型 + 备份/复检 + §O 勾选 | 核心闭环 |
| ✓ | 本文 `09` | 可查阅进度 |
| ✓ | Admin `/admin/users` | 禁言/认证/调积分 |
| | Admin `/admin/badges` | 徽章 CRUD + 授予 |
| 4 | Admin `/admin/media` | 媒体列表删除 |
| | Admin `/admin/badges` | 徽章 CRUD + 授予 |
| | Admin `/admin/media` | 媒体列表删除 |
| 5 | 等级/自动徽章 **或** 防刷分成 | 按当时偏好 |
| … | P3 / 后置 | 需明确点名再开 |
---
## 下一刀实现提纲Admin 徽章
## 下一刀实现提纲Admin 媒体
> 确认「继续」后实现限定徽章定义与授予/撤销;复用 `services/badge.go`
> 确认「继续」后实现媒体库列表与删除;对齐既有上传/存储服务
### 范围(草案)
- `GET/POST /admin/badges`:徽章定义列表与创建/编辑/删除
- 授予/撤销:挂在用户页或徽章详情(`GrantBadge` / 撤销)
- 回写 `02` §H 限定徽章;指针 → media
- `GET /admin/media`:按时间分页列表(缩略图 / 路径 / 引用粗览)
- `POST /admin/media/:id/delete`:删库文件 + 记录
- 回写 `02` / `06`;指针 → 成长或按偏好
### 不做
自动徽章规则引擎P2、等级设定 UI
S3 热切换产品化、全站未引用扫描清理器
---
## 已完成Admin 徽章
见 [plans/admin-badges.md](plans/admin-badges.md);路由 `/admin/badges` + award / revoke。
## 已完成Admin 用户管理
见 [plans/admin-users.md](plans/admin-users.md);路由 `/admin/users` + ban / verify / points。

View File

@@ -0,0 +1,22 @@
# Admin 徽章管理SSR— 实现计划
> 状态已完成SSR `/admin/badges`
> 分支:`rebuild/gitea-ssr`
## 范围
| 能力 | 服务 | 路由 |
|------|------|------|
| 列表(含停用) | `BadgeService.ListDefs(true)` | `GET /admin/badges` |
| 创建/更新定义 | `UpsertDef` | `POST /admin/badges``POST /admin/badges/:id` |
| 删除定义 | `DeleteDef`(清 `user_badges` | `POST /admin/badges/:id/delete` |
| 颁发限定 | `AwardLimited` | `POST /admin/badges/award` |
| 收回 | `Revoke` | `POST /admin/badges/revoke` |
## 不做
自动徽章规则引擎调度 UIP2服务层 `EvaluateAuto` 仍可被触发)、等级设定。
## 验证
`build.bat`;冒烟:创建限定徽章 → 颁发给用户 → 收回 → 删除。