feat: Admin 设用户等级并展示徽章于用户页

补齐 SetUserLevel 表单;用户主页/资料页展示徽章并触发 EvaluateAuto;勾选 §H Exp 与防刷。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-30 04:02:24 +08:00
parent 9e403a7178
commit 4ffcaecba2
13 changed files with 194 additions and 86 deletions

View File

@@ -129,11 +129,11 @@
- [x] 每日签到:基础 5连签每日 +1封顶 15 — `POST /profile/checkin`
- [x] 每日抽奖奖池加权0/2/5/10/20成本 0 — `POST /profile/lottery`
- [x] 积分解锁分成:读者付全额,作者约 70% — 门控 unlock 服务
- [ ] 短龄同 IP 互刷拒绝分成
- [ ] Exp → 等级 Lv110
- [ ] 自动徽章(注册天数 / 获赞 / 创作分成)— 种子定义 + `EvaluateAuto` 已有Admin 可改定义,独立调度 UI 未做
- [x] 短龄同 IP 互刷拒绝分成`UnlockPointsBlock` / `suspiciousUnlockPair`(双方注册未满 7 天且 LastLoginIP 相同)
- [x] Exp → 等级 Lv110 — 门槛推导 + 发帖/评论/获赞加 ExpAdmin 设等级 SSR `/admin/users`
- [x] 自动徽章(注册天数 / 获赞 / 创作分成)— 种子 + `EvaluateAuto`(用户页/资料页访问时评估);无独立定时调度 UI
- [x] 限定徽章:管理员定义与授予/撤销 — SSR `/admin/badges`
- [x] 管理员调整积分、设定认证(免审)— SSR `/admin/users`(等级设定 UI 未做,仅只读展示 Lv
- [x] 管理员调整积分、设定认证(免审)、设定等级 — SSR `/admin/users`
---

View File

@@ -172,7 +172,7 @@
- 公开页:签名、等级/积分只读、统计、最近帖 — SSR `/user/:id`(无邮箱)
- 收藏列表 — SSR `/favorites`
- 积分钱包面板(余额、近 N 条流水、签到/抽奖表单 PRG— SSR `/profile`;导航展示当前积分
- 徽章展示:**未迁**
- 徽章展示:用户主页 / 个人中心 — SSR访问时 `EvaluateAuto`
---
@@ -196,7 +196,7 @@
| Posts | 审核通过/拒绝 — SSR `/admin/moderation`;置顶/版顶/精华/锁编/锁评/软删 — 帖详情 Admin 条;回收站恢复/清除 — SSR `/admin/trash` |
| Comments | 审核 — SSR `/admin/moderation`;修订查看未迁 |
| Reports | 处理动作dismiss / resolve / reject_post / reject_comment — SSR `/admin/reports` |
| Users | 搜索;禁言;认证;调积分 — SSR `/admin/users`设等级 / 授徽章挂在徽章页 |
| Users | 搜索;禁言;认证;调积分;设等级 — SSR `/admin/users`授徽章在 `/admin/badges` |
| Badges | 定义自动/限定徽章;颁发/收回限定 — SSR `/admin/badges` |
| Media | 分类浏览;单删/批量删;同步索引 — SSR `/admin/media` |
| Media | 分类浏览;批量删 |

View File

@@ -12,15 +12,15 @@
| 项 | 值 |
|----|-----|
| **上一刀** | Admin `/admin/media`(列表 / 删除 / 同步索引) |
| **下一刀** | **等级/自动徽章 UI** **防刷分成**`02` §H P2开刀前确认偏好 |
| **上一刀** | P2Admin 设等级 + 用户页徽章;勾选 Exp / 防刷 / 自动徽章 |
| **下一刀** | **P3 体验**(主题 / 伪静态 / 编辑器)**后置**OIDC / 存储热切换 / Gitea需点名 |
| **工作区** | 应干净;有未提交改动时先处理再开新刀 |
---
## 一句话状态
论坛核心闭环 + Admin 用户/徽章/媒体 **已迁完**。余量主要是成长体系与防刷、OIDC/存储产品化与体验打磨
核心论坛 + Admin P1 + §H 成长/防刷(服务层 + Admin 设等级)**已齐**。余量P3 体验打磨与后置产品化OIDC / S3 热切换 / Gitea
```mermaid
flowchart LR
@@ -28,43 +28,28 @@ flowchart LR
admin[Admin用户徽章媒体]
growth[等级徽章防刷]
polish[主题伪静态编辑器]
deferred[Gitea码桶后置]
core --> admin --> growth
admin --> polish
deferred -.-> admin
deferred[OIDC存储Gitea]
core --> admin --> growth --> polish
deferred -.-> polish
```
---
## 已完成里程碑
### 公开站
### 公开站 / Admin / §H
| 域 | 状态 |
|----|------|
| `/install`、登录/注册/忘记密码、opaque session | 已迁 |
| Feed / 板块 / 搜索 / 三栏 / 右栏 widgets | 已迁 |
| 帖详情:赞藏举报、门控、审核横幅、修订历史 | 已迁 |
| 帖类型:`normal` / `question` / `poll` / `bounty` / `lottery` | 已迁 |
| 评论:发评/回复/赞/私密/编辑删除/@/回复通知 | 已迁(扁平楼层;嵌套树未做 |
| 私信/系统通知、收藏、个人中心、用户页 | 已迁 |
| 友链前台 + Admin含复检 | 已迁 |
| 站点单页 | 已迁 |
| `/health``robots.txt``sitemap.xml``/uploads` | 已落地(`02` §O 已勾) |
### Admin
| 路径 | 状态 |
|------|------|
| dashboard / boards / moderation / reports / trash | 已迁 |
| settings品牌、限流、敏感词、SMTP、侧栏、SQLite 备份 | 已迁 |
| friend-links / pages | 已迁 |
| **users / badges / media** | **已迁** |
| settingsOIDC / Gitea / 存储 / 伪静态 Tab | **未迁** |
| 五种帖类型、评论、私信、友链、单页、§O | 已迁 |
| Adminusers / badges / media / settings 基础 | 已迁 |
| Exp→Lv、Admin 设等级、用户页徽章展示 | 已迁 |
| 短龄同 IP 互刷拒绝分成 | 已落地unlock 服务) |
| 自动徽章 EvaluateAuto | 已落地(访问用户页触发 |
### 近期提交(摘)
Admin users → badges → **media**
media → **等级设定 + 徽章展示 / §H 勾选**
---
@@ -72,31 +57,25 @@ Admin users → badges → **media**
### P0 — 小清理(可夹带)
- 发评路径挂 `RateLimiter` `comment` 动作服务层已有键web 未挂)
- Logo/Favicon/OG 上传、头像裁剪等声明为未做的边角
- 发评路径挂 `RateLimiter` `comment` 动作
- Logo/Favicon/OG 上传、头像裁剪
### P1Admin 核心
### P2成长与防刷
1. ~~Admin 用户~~
2. ~~Admin 徽章~~
3. ~~Admin 媒体~~
~~已完成主路径~~无独立「自动徽章定时任务」Admin UI可接受
### P2成长与防刷 ← 当前指针候选
- Exp → Lv110 设定 UI、自动徽章调度说明、短龄同 IP 互刷拒绝分成(`02` §H
### P3 — 体验 / 编辑器(可砍或长期)
### P3体验 / 编辑器 ← 当前候选
- 主题、侧栏折叠、虚拟滚动、`feed_list_style`、伪静态 Admin
- TipTap / Markdown 双模(现行为 textarea + 门控)
- 游客评论、评论嵌套树(建议:全局 `#floor` + 缩进)
- TipTap / Markdown 双模
- 游客评论、评论嵌套树
- 修订 diff、完整 Limits 字数
### 后置(不阻塞验收)
### 后置
- KGitea `/projects`
- LOIDC 产品化 Admin CRUD
- MS3 热切换、WebP thumb 全链路产品化
- MS3 热切换、WebP 全链路产品化
---
@@ -104,39 +83,15 @@ Admin users → badges → **media**
| 序 | 刀 | 产出 |
|----|----|------|
| ✓ | 五种帖类型 + 备份/复检 + §O | 核心闭环 |
| ✓ | Admin users / badges / media | Admin P1 |
| → | 等级设定 **或** 防刷分成 | 需偏好 |
| … | P3 / 后置 | 需明确点名再开 |
| ✓ | 核心闭环 + Admin P1 | … |
| ✓ | §H 等级/防刷/徽章展示 | … |
| → | 需点名 P3 或后置 | … |
---
## 下一刀实现提纲P2 候选
## 已完成计划
> 「继续」前请点名:**等级/Exp UI**、**防刷分成**或其它OIDC/伪静态等)。
### A. 等级
- Admin 设用户 Exp/Lv`SetUserLevel` 已有)
- 公开页等级展示对齐
### B. 防刷分成
- 短龄同 IP 互刷拒绝创作分成(`02` §H
---
## 已完成Admin 媒体
见 [plans/admin-media.md](plans/admin-media.md)。
## 已完成Admin 徽章
见 [plans/admin-badges.md](plans/admin-badges.md)。
## 已完成Admin 用户管理
见 [plans/admin-users.md](plans/admin-users.md)。
- [admin-users](plans/admin-users.md) · [admin-badges](plans/admin-badges.md) · [admin-media](plans/admin-media.md)
---

View File

@@ -0,0 +1,17 @@
# P2 等级设定与徽章展示 — 实现计划
> 状态:已完成
> 分支:`rebuild/gitea-ssr`
## 范围
| 能力 | 实现 |
|------|------|
| Admin 设等级 | `POST /admin/users/:id/level``SetUserLevel`Exp 调至门槛) |
| 公开等级 | 既有 `/user/:id``/profile` Lv/Exp |
| 徽章展示 | 用户页 / 资料页列表;访问时 `EvaluateAuto` |
| 防刷分成 | 确认 `suspiciousUnlockPair` 已落地并勾选 `02` |
## 验证
`build.bat`;冒烟:设用户 Lv5 → Exp=200用户页可见等级。