library-picturebook-activity/docs/project/07-system-overview.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

13 KiB
Raw Permalink Blame History

系统功能结构总览(重构后)

1. 系统架构概览

乐绘世界创想活动乐园采用多端 + 多租户架构,共分为 3 个端:

┌──────────────────────────────────────────────────────────┐
│                 乐绘世界创想活动乐园                       │
├──────────┬───────────────────┬───────────────────────────┤
│  公众端   │    机构管理端      │       平台管理端(超管)    │
│  /p/...  │  /:tenantCode/... │    /super/...             │
├──────────┼───────────────────┼───────────────────────────┤
│ H5 响应式 │    Web 后台        │       Web 后台            │
│ 面向公众  │  面向机构工作人员   │     面向平台运营团队       │
└──────────┴───────────────────┴───────────────────────────┘

2. 公众端H5

2.1 定位

面向全国家长和少儿的活动参与入口。用户自主注册,浏览公开活动、报名、管理子女、提交作品。

2.2 访问方式

  • 入口地址/p/activities(活动大厅)
  • 登录地址/p/login(登录/注册合一)
  • 适配终端手机浏览器、微信内置浏览器、PC 浏览器(响应式设计)
  • 登录方式:一期:用户名+密码;二期:手机号验证码 + 微信扫码

2.3 用户角色

角色 角色编码 说明
公众用户 public_user 自主注册,归属"公众用户"系统租户code=public

2.4 功能清单

公众端
├── 🔓 无需登录
│   ├── 活动大厅 (/p/activities)
│   │   ├── 活动卡片网格展示
│   │   ├── 按名称搜索
│   │   └── 分页浏览
│   └── 活动详情 (/p/activities/:id)
│       ├── 活动封面/海报
│       ├── 活动信息(时间、类型、主办方)
│       ├── 活动详情(富文本)
│       ├── 活动公告列表
│       └── 附件下载
│
├── 🔐 需要登录
│   ├── 活动报名
│   │   ├── 选择参与者(我自己 / 子女)
│   │   └── 确认报名
│   │
│   ├── 个人中心 (/p/mine)
│   │   ├── 用户信息展示
│   │   └── 功能入口导航
│   │
│   ├── 我的报名 (/p/mine/registrations)
│   │   ├── 报名记录列表
│   │   ├── 报名状态(待审核/已通过/已拒绝)
│   │   └── 参与者标识(本人/子女)
│   │
│   ├── 我的作品 (/p/mine/works)
│   │   └── 提交的作品网格展示
│   │
│   └── 子女管理 (/p/mine/children)
│       ├── 子女列表
│       ├── 添加子女(姓名、性别、生日、年级、城市、学校)
│       ├── 编辑子女信息
│       └── 删除子女(软删除)
│
└── 📱 H5 适配
    ├── 移动端:底部 Tab 导航(首页 / 我的)
    └── PC 端:顶部导航栏

2.5 API 端点

方法 路径 认证 说明
POST /api/public/auth/register 公开 注册
POST /api/public/auth/login 公开 登录
GET /api/public/activities 公开 公开活动列表
GET /api/public/activities/:id 公开 活动详情
POST /api/public/activities/:id/register 需登录 报名活动
GET /api/public/mine/profile 需登录 个人信息
PUT /api/public/mine/profile 需登录 更新个人信息
GET/POST/PUT/DELETE /api/public/mine/children 需登录 子女 CRUD
GET /api/public/mine/registrations 需登录 我的报名
GET /api/public/mine/works 需登录 我的作品

3. 机构管理端

3.1 定位

面向入驻机构的管理人员,负责活动的创建、发布、报名审核、评审管理和成果发布。

3.2 已入驻机构

机构 租户编码 类型 登录地址 账号
广东省立中山图书馆 gdlib 图书馆 /gdlib/login admin / admin@gdlib

3.3 支持的机构类型

类型编码 名称 说明
library 图书馆 公共图书馆
kindergarten 幼儿园 幼儿教育机构
school 学校 中小学校
institution 社会机构 美术培训等
other 其他 未分类

3.4 用户角色

角色 角色编码 说明
机构管理员 tenant_admin 活动管理全部权限

3.5 功能清单

机构管理端(以广东省图为例)
│
├── 📋 活动管理
│   ├── 活动列表
│   │   ├── 创建活动(含可见范围:公开/指定机构/仅内部)
│   │   ├── 编辑活动
│   │   ├── 发布/撤回活动
│   │   ├── 结束/重新开启活动
│   │   └── 删除活动
│   │
│   ├── 评委管理
│   │   ├── 添加评委
│   │   ├── 查看关联活动
│   │   └── 移除评委
│   │
│   ├── 报名管理
│   │   ├── 查看报名记录(个人参与/团队参与分 Tab
│   │   ├── 参与方式标识(本人参与/代子女报名+子女姓名)
│   │   ├── 审核报名(通过/拒绝)
│   │   └── 批量操作
│   │
│   ├── 作品管理
│   │   ├── 查看提交的作品
│   │   └── 作品详情
│   │
│   ├── 评审进度
│   │   ├── 评审整体进度统计
│   │   └── 评委评审进度详情
│   │
│   ├── 评审规则
│   │   ├── 创建评审规则
│   │   ├── 编辑评审规则
│   │   └── 关联活动
│   │
│   ├── 成果发布
│   │   ├── 查看活动成果列表
│   │   ├── 设置奖项
│   │   └── 发布/撤回成果
│   │
│   └── 通知管理
│       ├── 创建活动公告
│       ├── 编辑公告
│       └── 删除公告
│
└── ⚙️ 系统管理
    ├── 用户管理(管理机构内部工作人员账号)
    ├── 角色管理(配置机构内的角色权限)
    └── 日志记录(查看本机构操作日志)

4. 平台管理端(超管)

4.1 定位

面向乐绘世界运营团队,管理整个平台的机构、系统配置和全局数据。

4.2 访问方式

项目
租户编码 super
登录地址 /super/login
角色 超级管理员 (super_admin)

4.3 功能清单(重构后,动态菜单驱动)

平台管理端(超管)— 只读监管模式,不可创建/编辑/删除活动
│
├── 📋 活动监管(全局只读视角)
│   ├── 全部活动(查看所有机构创建的活动,隐藏写操作按钮)
│   ├── 报名数据
│   ├── 作品数据
│   ├── 评审进度
│   ├── 评委管理
│   ├── 评审规则
│   ├── 成果发布
│   └── 通知管理
│
├── 🏛️ 机构管理(去租户化,精简后的机构列表)
│
├── 👥 用户中心
│   ├── 用户管理(全局用户)
│   ├── 公众用户管理
│   └── 角色管理
│
└── ⚙️ 系统设置
    ├── 菜单管理
    ├── 权限管理
    ├── 数据字典
    ├── 系统配置
    └── 系统日志

4.5 评委端

定位

面向受邀参与活动评审的专业评委,提供评审工作台和评语管理功能。

访问方式

项目
租户编码 judge
登录地址 /judge/login
账号 admin / admin@judge
角色 评委 (judge)

功能清单

评委端
├── 我的评审
│   ├── 评审任务(我参与评审的活动列表,含进度条和完成状态)
│   └── 预设评语(管理常用评语模板,可跨活动同步)
│
└── 评审工作台(从任务列表点击"进入评审"进入)
    ├── 分配给我的作品列表(分页、搜索、筛选已评/未评)
    ├── 评审打分(打开作品详情,按评审规则维度打分)
    └── 撰写评语(使用预设评语或手动输入)

业务流程

机构管理端                                评委端
1. 创建活动 + 配置评审规则
2. 在"评委管理"中添加评委
3. 报名截止后,在"评审进度"中
   分配作品给评委
   (支持手动/批量/自动分配)
                                         4. 登录评委端
                                         5. "评审任务"看到活动列表和进度
                                         6. 进入某活动 → 看到分配的作品
                                         7. 逐个作品打分 + 写评语
                                         8. 全部评审完成
9. 查看评审进度(实时同步)
10. 所有评委评完后发布成果

4.4 超管独有能力

  • 跨租户查看所有活动、报名、作品、评审数据(只读监管,不可创建/编辑/删除活动)
  • 管理机构(去租户化的机构列表)
  • 管理公众用户(自主注册的公众端用户)
  • 配置系统级菜单和权限
  • 查看全局日志

5. 三端关系与数据流

5.1 活动发布流程

机构管理端                              公众端
┌───────────────┐                    ┌────────────────┐
│ 广东省图管理员 │                    │   公众用户      │
│               │                    │                │
│ 1. 创建活动    │                    │                │
│ 2. 设置可见范围│                    │                │
│    = "公开"    │                    │                │
│ 3. 发布活动   ─┼───── 活动可见 ────►│ 4. 浏览活动     │
│               │                    │ 5. 注册/登录    │
│               │                    │ 6. 选择参与者   │
│               │◄── 报名数据 ───────┤ 7. 报名         │
│ 8. 审核报名   │                    │                │
│               │◄── 作品数据 ───────┤ 9. 提交作品     │
│ 10. 分配评委  │                    │                │
│ 11. 评审打分  │                    │                │
│ 12. 发布成果  ─┼─── 成果可见 ─────►│ 13. 查看成果    │
└───────────────┘                    └────────────────┘

5.2 用户体系

用户来源
├── 管理员创建 (user_source = 'admin_created')
│   ├── 超管用户 → 归属超级租户 (super)
│   ├── 机构用户 → 归属对应机构租户 (gdlib, school, ...)
│   └── 评委用户 → 归属评委租户 (judge)
│
└── 自主注册 (user_source = 'self_registered')
    └── 公众用户 → 归属公众租户 (public)
        ├── 可以自己报名活动 (participant_type = 'self')
        └── 可以代子女报名 (participant_type = 'child')
            └── 通过 children 表管理子女信息

6. 数据库新增/变更汇总

6.1 新增表

表名 说明
children 子女信息表parent_id → users.id

6.2 变更字段

新增字段 说明
tenants tenant_type 租户类型library/school/kindergarten/institution/other
users wx_openid, wx_unionid 微信登录预留
users user_source 用户来源admin_created/self_registered
users city, birthday 公众用户信息
users phone (unique) 手机号唯一约束
t_contest visibility 活动可见范围public/designated/internal
t_contest_registration participant_type 参与者类型self/child
t_contest_registration child_id 子女 ID 关联

7. 技术要点

7.1 公众端架构决策

  • 公众租户方案:创建 public 系统租户承载公众用户,而非将 tenantId 改为可空。避免改动整条认证链路,风险最低。
  • JWT 兼容:公众端和管理端共用同一套 JWT 签发/验证机制token 格式一致。
  • 路由隔离:公众端路由 /p/ 前缀,路由守卫中直接放行,不走管理端认证逻辑。

7.2 响应式适配

一套 Vue 代码CSS 媒体查询适配:
├── < 768px  → H5 移动端(底部 Tab 导航)
└── >= 768px → Web 端(顶部导航栏)

7.3 UI 设计体系

维度
主色 #6366F1 Creative Indigo
强调色 #EC4899 玫瑰粉
字体 NunitoGoogle Fonts
圆角 10-16px
阴影 靛蓝色调
页面背景 #F8F7FC 暖紫