作品审核: - 批量通过/批量拒绝 + 撤销审核机制 - 默认筛选待审核,表格加描述预览+审核时间列 - 详情Drawer加上一个/下一个导航,审核后自动跳下一个 - 操作日志时间线展示,筛选下拉自动查询 作品管理: - 修复筛选/排序失效,新增推荐中筛选 - 下架改为弹窗选择原因,取消推荐二次确认 - 详情Drawer补全描述/标签/操作按钮/操作日志 - 统计卡片可点击筛选,下架自动取消推荐 标签管理: - 按分类分组卡片式展示,分类改为下拉选择 - 新增标签颜色字段(预设色+自定义) - 上移/下移排序按钮,使用次数可点击跳转作品管理 - 新增/编辑时实时预览用户端标签效果 广场推荐: - 新增推荐作品列表接口 GET /public/gallery/recommended - 广场顶部新增「编辑推荐」横向滚动栏 文档更新:内容管理设计文档补充实施记录,UGC开发计划P1-1标记已完成 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
19 KiB
19 KiB
超管端内容管理模块 — 设计方案
所属端:超管端 状态: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),标签颜色)