library-picturebook-activity/docs/design/super-admin/content-management.md

353 lines
16 KiB
Markdown
Raw Normal View History

# 超管端内容管理模块 — 设计方案
> 所属端:超管端
> 状态:待开发
> 创建日期2026-03-27
> 最后更新2026-03-27
---
## 1. 背景
用户端升级为 UGC 绘本创作社区后,超管端需要新增**内容管理**一级菜单,承担内容审核和安全治理职能。
---
## 2. 菜单结构
```
内容管理(新增一级菜单)
├── 作品审核 — P0审核用户发布的作品
├── 作品管理 — P0全平台已发布作品的查看/下架/置顶
├── 标签管理 — P0作品标签/分类的维护
├── 评论审核 — P1审核用户评论
└── 举报处理 — P1处理用户举报
```
---
## 3. 作品审核P0
### 3.1 审核流程
```
用户点击"发布" → status 变为 pending_review
→ 机器预审(敏感词检测 + 图片安全检测)→ 标记预审结果
→ 进入人工审核队列
→ 审核员操作:
通过 → status 变为 published通知用户
拒绝 → status 变为 rejected + 拒绝原因,通知用户
```
### 3.2 页面设计
```
┌─ 标题卡片 ──────────────────────────────────────────────┐
│ 作品审核 │
└─────────────────────────────────────────────────────────┘
┌─ 统计卡片 ──────────────────────────────────────────────┐
│ [待审核 28] [今日已审 56] [今日通过 50] [今日拒绝 6] │
└─────────────────────────────────────────────────────────┘
┌─ 筛选栏 ────────────────────────────────────────────────┐
│ 审核状态:[下拉] 提交时间:[日期范围] 作者:[______] │
│ 机器预审:[下拉] [搜索] [重置] │
└─────────────────────────────────────────────────────────┘
┌─ 审核队列表格 ──────────────────────────────────────────┐
│ 封面 | 作品名称 | 页数 | 作者 | 标签 | 机器预审 | │
│ | 提交时间 | 审核状态 | 操作 │
└─────────────────────────────────────────────────────────┘
```
### 3.3 表格列
| 列 | 宽度 | 说明 |
|----|------|------|
| 封面 | 80 | 缩略图 |
| 作品名称 | 180 | 标题,可点击预览 |
| 页数 | 60 | 绘本页数 |
| 作者 | 120 | 昵称,点击可查看作者信息 |
| 标签 | 140 | Tag 列表 |
| 机器预审 | 90 | Tag安全绿/ 疑似违规(红)/ 未检测(灰)|
| 提交时间 | 150 | YYYY-MM-DD HH:mm |
| 审核状态 | 90 | Tag待审核/ 已通过(绿)/ 已拒绝(红)|
| 操作 | 180 | 快捷通过 / 快捷拒绝 / 查看详情 |
### 3.4 审核详情 Drawer
点击"查看详情"打开右侧 Drawer
```
作品信息区
├── 作品名称 / 标签 / 可见性设置
├── 作者信息(昵称 / 账号 / 是否子女账号)
├── 提交时间
└── 机器预审结果(安全/疑似违规 + 标记原因)
绘本内容预览区
├── 封面大图
├── 内页翻页浏览(每页:插图 + 文字 + 播放配音按钮)
└── 页码指示器1/8
审核操作区
├── [通过] 按钮
├── [拒绝] 按钮 → 展开拒绝原因选择
│ ├── ○ 含不适宜未成年人的内容
│ ├── ○ 含个人隐私信息(姓名/地址/电话)
│ ├── ○ 涉嫌抄袭/侵权
│ ├── ○ 内容质量不符合发布标准
│ └── ○ 其他:[自定义填写]
└── 审核备注(可选文本框)
```
### 3.5 快捷操作
- 列表中"快捷通过"按钮:一键通过,无需打开 Drawer
- 列表中"快捷拒绝"按钮:弹出拒绝原因选择 Popover选择后直接拒绝
- 支持键盘快捷键Drawer 中按 A 通过、按 R 拒绝、按 → 下一个(提升审核效率)
### 3.6 后端 API
```
GET /api/content-review/works — 审核队列列表
参数page, pageSize, status(pending/approved/rejected), startTime, endTime, keyword, machineResult
GET /api/content-review/works/stats — 审核统计(待审核/今日已审/今日通过/今日拒绝)
GET /api/content-review/works/:id — 审核详情(含绘本分页内容)
POST /api/content-review/works/:id/approve — 通过
POST /api/content-review/works/:id/reject — 拒绝body: { reason, note? }
GET /api/content-review/logs — 审核操作日志
```
---
## 4. 作品管理P0
管理全平台已发布的作品,可查看数据、下架违规内容、推荐优质作品。
### 4.1 页面设计
```
┌─ 标题卡片 ──────────────────────────────────────────────┐
│ 作品管理 │
└─────────────────────────────────────────────────────────┘
┌─ 统计卡片 ──────────────────────────────────────────────┐
│ [总作品数 520] [今日新增 12] [累计浏览 8.5万] [已下架 3] │
└─────────────────────────────────────────────────────────┘
┌─ 筛选栏 ────────────────────────────────────────────────┐
│ 作品/作者:[______] 标签:[下拉] 发布时间:[日期范围] │
│ 排序:[最新/最热/浏览最多] [搜索] [重置] │
└─────────────────────────────────────────────────────────┘
┌─ 作品表格 ──────────────────────────────────────────────┐
│ 封面 | 作品名称 | 作者 | 标签 | 浏览 | 点赞 | 收藏 | │
│ | 评论 | 发布时间 | 状态 | 操作 │
└─────────────────────────────────────────────────────────┘
```
### 4.2 表格列
| 列 | 宽度 | 说明 |
|----|------|------|
| 封面 | 80 | 缩略图 |
| 作品名称 | 180 | 标题 |
| 作者 | 120 | 昵称 |
| 标签 | 140 | Tag 列表 |
| 浏览 | 70 | viewCount |
| 点赞 | 70 | likeCount |
| 收藏 | 70 | favoriteCount |
| 评论 | 70 | commentCount |
| 发布时间 | 150 | |
| 状态 | 80 | Tag正常绿/ 已下架(红)|
| 操作 | 140 | 查看详情 / 下架 或 恢复 / 置顶推荐 |
### 4.3 操作说明
| 操作 | 说明 |
|------|------|
| 查看详情 | Drawer 展示绘本内容 + 作者信息 + 互动数据 |
| 下架 | 弹窗确认 + 选择下架原因status 改为 taken_down通知用户 |
| 恢复 | 已下架的作品恢复为 published |
| 置顶推荐 | 标记为推荐作品在广场优先展示P2 可做推荐配置页面) |
### 4.4 后端 API
```
GET /api/content-management/works — 已发布作品列表
参数page, pageSize, keyword, tagId, sortBy(latest/hot/views), startTime, endTime, status(published/taken_down)
GET /api/content-management/works/stats — 统计(总数/今日新增/累计浏览/已下架)
GET /api/content-management/works/:id — 作品详情
POST /api/content-management/works/:id/takedown — 下架body: { reason }
POST /api/content-management/works/:id/restore — 恢复
POST /api/content-management/works/:id/recommend — 置顶推荐/取消推荐
```
---
## 5. 标签管理P0
维护作品标签/分类体系,用户发布作品时选择标签。
### 5.1 页面设计
```
┌─ 标题卡片 ──────────────────────────────────────────────┐
│ 标签管理 [新增标签] │
└─────────────────────────────────────────────────────────┘
┌─ 标签表格 ──────────────────────────────────────────────┐
│ 标签名称 | 分类 | 使用次数 | 排序 | 状态 | 操作 │
└─────────────────────────────────────────────────────────┘
```
### 5.2 表格列
| 列 | 宽度 | 说明 |
|----|------|------|
| 标签名称 | 150 | |
| 分类 | 120 | 一级分类(如:主题/风格/情感)|
| 使用次数 | 100 | 有多少作品使用了该标签 |
| 排序 | 80 | 数字,影响用户端展示顺序 |
| 状态 | 80 | Tag启用 / 禁用 |
| 操作 | 150 | 编辑 / 启用或禁用 / 删除 |
### 5.3 新增/编辑弹窗
```
标签名称:[______]
所属分类:[下拉选择 / 新建分类]
排序权重:[数字]
状态: [启用/禁用]
```
### 5.4 后端 API
```
GET /api/tags — 标签列表(超管端,含使用统计)
POST /api/tags — 创建标签
PUT /api/tags/:id — 编辑标签
DELETE /api/tags/:id — 删除标签(无作品使用时才可删除)
PATCH /api/tags/:id/status — 启用/禁用
GET /api/tags/categories — 标签分类列表
POST /api/tags/categories — 创建分类
```
---
## 6. 评论审核P1
### 6.1 页面设计
```
┌─ 标题卡片 ──────────────────────────────────────────────┐
│ 评论审核 │
└─────────────────────────────────────────────────────────┘
┌─ 统计卡片 ──────────────────────────────────────────────┐
│ [待审核 15] [今日已审 42] [今日通过 38] [今日拒绝 4] │
└─────────────────────────────────────────────────────────┘
┌─ 筛选栏 ────────────────────────────────────────────────┐
│ 审核状态:[下拉] 提交时间:[日期范围] 评论者:[______] │
│ [搜索] [重置] │
└─────────────────────────────────────────────────────────┘
┌─ 审核队列表格 ──────────────────────────────────────────┐
│ 评论内容 | 评论者 | 所属作品 | 机器预审 | │
│ 提交时间 | 审核状态 | 操作 │
└─────────────────────────────────────────────────────────┘
```
### 6.2 表格列
| 列 | 宽度 | 说明 |
|----|------|------|
| 评论内容 | 250 | 评论文本,超长省略 |
| 评论者 | 120 | 昵称 |
| 所属作品 | 160 | 作品名称,可点击跳转 |
| 机器预审 | 90 | Tag安全/疑似违规 |
| 提交时间 | 150 | |
| 审核状态 | 90 | Tag |
| 操作 | 160 | 通过 / 拒绝 / 查看上下文 |
支持批量操作:勾选多条 → 批量通过 / 批量拒绝
### 6.3 后端 API
```
GET /api/content-review/comments — 评论审核队列
GET /api/content-review/comments/stats — 统计
POST /api/content-review/comments/:id/approve — 通过
POST /api/content-review/comments/:id/reject — 拒绝
POST /api/content-review/comments/batch — 批量操作body: { ids, action }
```
---
## 7. 举报处理P1
### 7.1 页面设计
```
┌─ 标题卡片 ──────────────────────────────────────────────┐
│ 举报处理 │
└─────────────────────────────────────────────────────────┘
┌─ 统计卡片 ──────────────────────────────────────────────┐
│ [待处理 8] [今日已处理 12] [已忽略 3] │
└─────────────────────────────────────────────────────────┘
┌─ 筛选栏 ────────────────────────────────────────────────┐
│ 举报类型:[下拉] 处理状态:[下拉] 举报时间:[日期范围] │
│ [搜索] [重置] │
└─────────────────────────────────────────────────────────┘
┌─ 举报队列表格 ──────────────────────────────────────────┐
│ 举报类型 | 举报原因 | 被举报内容摘要 | 举报人 | │
│ 被举报人 | 举报时间 | 处理状态 | 操作 │
└─────────────────────────────────────────────────────────┘
```
### 7.2 处理操作
点击"处理"打开 Drawer
```
举报信息
├── 举报类型(作品/评论/用户)
├── 举报原因
├── 举报人信息
├── 举报时间
被举报内容
├── 作品:展示绘本预览
├── 评论:展示评论内容+上下文
├── 用户:展示用户主页信息
处理操作
├── [下架内容] — 将被举报的作品/评论下架
├── [警告用户] — 向被举报用户发送警告通知
├── [禁用账号] — 禁用被举报用户的账号
├── [忽略举报] — 举报不成立,不做处理
└── 处理备注:[文本框]
```
### 7.3 后端 API
```
GET /api/content-review/reports — 举报队列
GET /api/content-review/reports/stats — 统计
GET /api/content-review/reports/:id — 举报详情
POST /api/content-review/reports/:id/handle — 处理举报
body: { action: 'takedown'|'warn'|'ban'|'ignore', note? }
```
---
## 8. 实施记录
(开发过程中记录)