library-picturebook-activity/docs/design/super-admin/content-management.md
aid f246b38fc1 Day5: 超管端内容管理模块全面优化 + 广场推荐作品展示
作品审核:
- 批量通过/批量拒绝 + 撤销审核机制
- 默认筛选待审核,表格加描述预览+审核时间列
- 详情Drawer加上一个/下一个导航,审核后自动跳下一个
- 操作日志时间线展示,筛选下拉自动查询

作品管理:
- 修复筛选/排序失效,新增推荐中筛选
- 下架改为弹窗选择原因,取消推荐二次确认
- 详情Drawer补全描述/标签/操作按钮/操作日志
- 统计卡片可点击筛选,下架自动取消推荐

标签管理:
- 按分类分组卡片式展示,分类改为下拉选择
- 新增标签颜色字段(预设色+自定义)
- 上移/下移排序按钮,使用次数可点击跳转作品管理
- 新增/编辑时实时预览用户端标签效果

广场推荐:
- 新增推荐作品列表接口 GET /public/gallery/recommended
- 广场顶部新增「编辑推荐」横向滚动栏

文档更新:内容管理设计文档补充实施记录,UGC开发计划P1-1标记已完成

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 15:21:21 +08:00

19 KiB
Raw Blame History

超管端内容管理模块 — 设计方案

所属端:超管端 状态P0 已实现并优化 创建日期2026-03-27 最后更新2026-03-31


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. 实施记录

Day5 (2026-03-31) — P0 全面优化

作品审核

  • 基础功能:统计卡片、筛选、审核队列表格、拒绝弹窗(预设理由+自定义)、详情 Drawer绘本翻页预览
  • 批量审核:支持勾选待审核作品批量通过/批量拒绝
  • 撤销机制:已通过/已拒绝的作品支持撤销恢复为待审核(操作列常驻按钮+二次确认)
  • 操作日志:详情 Drawer 底部展示审核操作时间线(通过/拒绝/下架/恢复/撤销)
  • 体验优化:默认筛选待审核、表格加描述预览列+审核时间列、详情加「上一个/下一个」导航(审核完自动跳下一个)、统计卡片点击筛选、筛选下拉自动查询

作品管理

  • 基础功能:统计卡片、筛选(关键词+状态+排序)、作品表格、推荐/下架/恢复操作
  • 筛选修复:状态筛选支持 published+taken_down+推荐中,排序参数传后端真正生效
  • 下架原因下架改为弹窗选择原因4个预设+自定义),取代写死的「管理员下架」
  • 详情 Drawer补全作品描述、标签、绘本预览、操作按钮推荐/下架/恢复)、操作日志
  • 推荐联动:推荐作品在公众端广场顶部「编辑推荐」横栏展示,下架时自动取消推荐
  • 体验优化:统计卡片可点击筛选、表格加描述预览列、取消推荐二次确认、筛选自动查询

标签管理

  • 基础功能:标签 CRUD、启用/禁用、删除保护(已使用不可删)
  • 分类分组:标签按分类分组展示(每组有颜色标识+计数),未分类单独一组
  • 分类下拉:新增/编辑时分类改为下拉选择(支持选已有+创建新分类),杜绝手动输入不一致
  • 标签颜色:数据库新增 color 字段10个预设色+自定义 hex卡片左侧颜色条+用户端预览
  • 排序按钮:每个标签有上/下箭头,点击交换排序值并持久化
  • 使用次数可点击:跳转作品管理页带标签名搜索
  • 实时预览:新增/编辑弹窗底部实时渲染用户端标签效果

新增后端 API

POST   /api/content-review/works/batch-approve     — 批量通过
POST   /api/content-review/works/batch-reject      — 批量拒绝
POST   /api/content-review/works/:id/revoke        — 撤销审核
GET    /api/content-review/works (新增参数)          — sortBy 排序 + isRecommended 筛选
GET    /api/public/gallery/recommended              — 推荐作品列表(公众端)
POST   /api/tags/batch-sort                         — 标签批量排序

数据库变更

  • work_tags 表新增 color 字段VARCHAR(20),标签颜色)