2026-03-27 22:20:25 +08:00
|
|
|
|
# 系统功能结构总览(重构后)
|
|
|
|
|
|
|
|
|
|
|
|
## 1. 系统架构概览
|
|
|
|
|
|
|
2026-04-11 19:30:26 +08:00
|
|
|
|
智创未来采用**多端 + 多租户**架构,共分为 3 个端:
|
2026-03-27 22:20:25 +08:00
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
┌──────────────────────────────────────────────────────────┐
|
2026-04-11 19:30:26 +08:00
|
|
|
|
│ 智创未来 │
|
2026-03-27 22:20:25 +08:00
|
|
|
|
├──────────┬───────────────────┬───────────────────────────┤
|
|
|
|
|
|
│ 公众端 │ 机构管理端 │ 平台管理端(超管) │
|
|
|
|
|
|
│ /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` 暖紫 |
|