library-picturebook-activity/docs/design/super-admin/results-publish-optimization.md
aid 418aa57ea8 Day4: 超管端设计优化 + UGC绘本创作社区P0实现
一、超管端设计优化
- 文档管理SOP体系建立,docs目录重组
- 统一用户管理:跨租户全局视角,合并用户管理+公众用户
- 活动监管全模块重构:全部活动(统计卡片+阶段筛选+SuperDetail详情页)、报名数据/作品数据/评审进度(两层合一扁平列表)、成果发布(去Tab+统计+隐藏写操作)
- 菜单精简:移除评委管理/评审规则/通知管理
- Bug修复:租户编辑丢失隐藏菜单、pageSize限制、主色统一

二、UGC绘本创作社区P0
- 数据库:10张新表(user_works/user_work_pages/work_tags等)
- 子女账号独立化:Child升级为独立User,家长切换+独立登录
- 用户作品库:CRUD+发布审核,8个API
- AI创作流程:提交→生成→保存到作品库,4个API
- 作品广场:首页改造为推荐流,标签+搜索+排序
- 内容审核(超管端):作品审核+作品管理+标签管理
- 活动联动:WorkSelector作品选择器
- 布局改造:底部5Tab(发现/创作/活动/作品库/我的)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 22:20:25 +08:00

5.8 KiB
Raw Blame History

成果发布模块优化 — 设计方案

所属端:超管端 状态:已实现(待验收) 创建日期2026-03-27 最后更新2026-03-27


1. 背景与问题

成果发布是活动全生命周期的最后一环,超管需要监控"哪些活动发布了成果、哪些还没有"。当前模块保留两层结构合理(第一层看活动维度的发布状态,第二层看获奖名单),但存在以下问题:

问题 说明
第一层有冗余的个人/团队 Tab 成果发布不需要按参与方式分 Tab发布状态是活动级别的
缺少统计概览 没有已发布/未发布的数量统计
写操作未隔离 详情页有"发布成果/撤回发布"按钮,超管不应有
搜索能力不足 只有活动名称,缺少发布状态筛选
样式不一致 主色 #1890ff

2. 现状分析

2.1 第一层成果发布列表results/Index.vue

  • 个人/团队 Tab冗余
  • 数据来源:contestsApi.getList() 按活动类型过滤
  • 搜索:仅活动名称
  • 表格列:序号/活动名称/主办机构/报名人数/提交作品数/发布状态/操作
  • 操作:详情 → 跳转 Detail

2.2 第二层成果详情results/Detail.vue

  • 数据来源:resultsApi.getResults(contestId)
  • 搜索:作品编号/报名账号
  • 表格列:序号/作品编号/评委评分/姓名/账号/机构信息/指导老师
  • 写操作:"发布成果"/"撤回发布"按钮

3. 设计方案

3.1 整体思路

保留两层结构(活动维度 → 获奖名单),但优化超管视角:第一层去掉 Tab + 增加统计卡片 + 增加发布状态筛选,第二层隐藏写操作。机构端保持不变。

3.2 第一层优化

┌─ 标题卡片 ──────────────────────────────────────────────┐
│  成果发布                                                │
└─────────────────────────────────────────────────────────┘

┌─ 统计卡片 ──────────────────────────────────────────────┐
│ [全部 12] [已发布 8] [未发布 4]                           │
└─────────────────────────────────────────────────────────┘

┌─ 筛选栏 ────────────────────────────────────────────────┐
│ 活动名称:[______] 发布状态:[下拉] 主办机构:[下拉]         │
│                                     [搜索] [重置]        │
└─────────────────────────────────────────────────────────┘

┌─ 数据表格 ──────────────────────────────────────────────┐
│ 活动名称 | 主办机构 | 活动类型 | 报名人数 | 作品数 |      │
│ 发布状态 | 发布时间 | 操作                               │
└─────────────────────────────────────────────────────────┘

统计卡片3 张):

卡片 数据 颜色
全部 所有已发布状态的活动数 主色
已发布 resultState='published' 绿色
未发布 resultState!='published' 灰色

统计基于 contests 列表的 resultState 在前端计算即可,无需新增后端接口。

筛选栏

筛选项 组件 说明
活动名称 Input 模糊搜索
发布状态 Select 已发布 / 未发布
主办机构 Select 下拉搜索,复用租户列表

表格列(超管端):

宽度 说明
序号 60
活动名称 200
主办机构 120 creatorTenant.name
活动类型 90 Tag 个人/团队
报名人数 80 _count.registrations
作品数 80 _count.works
发布状态 90 Tag 已发布(绿)/ 未发布(灰)
发布时间 150 resultPublishTime未发布显示"-"
操作 100 查看详情

去掉个人/团队 Tab所有活动放在一个列表中。

3.3 第二层优化

超管进入成果详情页时:

  • 隐藏"发布成果/撤回发布"按钮(通过 isSuperAdmin 判断)
  • 其他保持不变(获奖列表 + 搜索 + 作品详情弹框)
  • 样式修复为 #6366f1

3.4 后端改动

无新增接口。现有 contestsApi.getList() 返回的数据已包含 resultStateresultPublishTime


4. 前端改动

文件 操作 说明
frontend/src/views/contests/results/Index.vue 修改 超管端去掉 Tab + 增加统计卡片 + 发布状态/机构筛选 + 优化表格列 + 样式修复
frontend/src/views/contests/results/Detail.vue 修改 超管端隐藏"发布/撤回"按钮 + 样式修复

5. 实施记录

2026-03-27 — 首次实现

后端改动:无

前端改动2 个文件):

  • frontend/src/views/contests/results/Index.vue — 超管端去掉个人/团队 Tab改为统计卡片全部/已发布/未发布)+ 发布状态和机构筛选 + 优化表格列(增加活动类型、发布时间),机构端保持不变;样式修复为 #6366f1
  • frontend/src/views/contests/results/Detail.vue — 超管端隐藏"发布成果/撤回发布"按钮v-if="!isSuperAdmin");样式修复为 #6366f1