系统功能结构总览(重构后)
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 玫瑰粉 |
| 字体 |
Nunito(Google Fonts) |
| 圆角 |
10-16px |
| 阴影 |
靛蓝色调 |
| 页面背景 |
#F8F7FC 暖紫 |