---
title: hylms 产品功能设计文档 v1
---


hylms 是企业内部使用的培训、学习、考试系统。 包括如下功能：

1. 系统管理员维护部门、员工账号和用户组权限。
2. 被授权员工制作课程。
3. 培训管理员、系统管理员或被授权员工把课程分派给部门学习。
4. 员工学习课程、完成课时考试。
5. 系统管理员、培训管理员和部门领导查看学习/考试情况。



## 核心业务对象

### 部门

部门为树状结构。

字段：

- 部门名称。
- 上级部门。
- 部门领导。
- 状态：启用、停用。

规则：

- 支持多级部门。
- 一个部门可以设置一个或多个部门领导。
- 部门领导默认可查看本部门及所有子部门的学习/考试情况。
- 设置或取消部门领导身份不改变员工所属用户组。
- 停用部门后，不再用于新任务发布，但历史数据保留。

### 员工

员工是系统基础用户。

字段：

- 姓名。
- 工号。
- 登录账号。
- 所属部门。
- 状态：启用、停用。
- 权限：课程制作、任务发布、数据查看。

规则：

- 每个员工至少归属一个部门。
- 员工可以归属多个部门。
- 员工停用后不可登录，历史学习和考试记录保留。

### 课程

课程是学习内容集合。

字段：

- 课程名称。
- 课程简介。
- 课程类型：必修、选修。
- 课时列表。
- 创建人。
- 状态：草稿、已发布。

规则：

- 课程至少包含一个课时后才允许发布。
- 属于系统管理员或培训管理员用户组的员工，可以创建、编辑、发布所有课程。

### 课时

课时是课程中的学习单元。

包含：

- 课时标题。
- 课时排序。
- 课时富文本内容。
- 关联考试。

内容规则：

- 富文本支持文字、图片、视频、插入任意文件。
- 内容可以设置：1-4级标题，红蓝绿黄 4种文本颜色 ，粗体字体
- 图片、视频直接在课时中展示。
- 插入文件在课时内容中以图标占位块展示，点击可以下载。
- 员工点击视频图标后，弹出播放器播放。

完成规则：

- 第一阶段课时完成条件保持简单。
- 无考试课时：员工点击“标记完成”后完成。
- 有考试课时：员工考试通过后课时完成。

### 考试

考试用于课时学习后的检验。

字段：

- 考试名称。
- 题目列表。
- 通过分。
- 允许考试次数。
- 是否显示答案解析。

题型：

- 单选题。
- 多选题。
- 判断题。

规则：

- 第一阶段不做独立题库，题目直接维护在考试中。
- 第一阶段不做随机组卷。
- 系统自动判分。
- 员工达到通过分即为通过。
- 考试通过后，关联课时完成。

### 学习任务

学习任务用于把课程分派给员工学习。

字段：

- 任务名称。
- 关联课程。
- 任务类型：必修、选修。
- 指派部门。
- 开始时间。
- 截止时间。
- 发布人。
- 状态：草稿、已发布、已停用、已撤销。

规则：

- 属于系统管理员或培训管理员用户组的员工，可以发布到任意部门。
- 有任务发布权限的员工，只能选择系统管理员授权范围内的部门。
- 发布给某部门时，默认包含该部门所有子部门员工。
- 任务发布后生成被指派员工名单。
- 第一阶段不支持任务发布后的自动追加新员工（比如，部门新来了员工）。
- 误发任务可撤销；撤销后员工端不再展示，且不可继续学习，但历史记录保留。
- 已发布任务可停用；停用后员工端不再展示，且不可继续学习，但历史记录保留。




## 权限设计

权限系统采用“用户 + 用户组 + 功能权限”的方式。

- 用户：对应用户账号。
- 用户组：例如系统管理员、培训管理员。
- 功能权限：用于控制是否能访问某个功能或执行某个操作。


第一阶段预置以下用户组：

- 系统管理员组。
- 培训管理员组。

员工通过加入不同用户组获得额外能力：

- 加入“系统管理员”用户组：获得系统级管理能力。
- 加入“培训管理员”用户组：获得培训业务管理能力。

一个员工可以同时属于多个用户组。


### 系统管理员用户组

系统管理员用户组拥有全部权限：

- 部门管理。
- 员工管理。
- 用户组管理。
- 课程管理。
- 考试管理。
- 学习任务管理。
- 学习/考试统计查看。

系统安装完成后，默认创建一个系统管理员账号，由企业管理员负责保管和使用。

### 培训管理员用户组

培训管理员用户组拥有培训业务管理权限：

- 课程管理。
- 考试管理。
- 学习任务管理。
- 学习/考试统计查看。

权限边界：

- 可以管理全部课程、考试和学习任务。
- 可以查看全公司学习/考试统计。
- 不负责部门树、员工账号、用户组、权限和系统配置等系统级管理。

### 普通员工

未加入管理类用户组的员工，默认拥有以下权限：

- 查看自己的学习任务。
- 学习课程。
- 参加考试。
- 查看自己的学习和考试记录。



### 部门数据查看权限

部门数据查看权限由功能权限和数据范围两部分组成。

功能权限：

- 是否可以查看学习/考试统计。
- 是否可以查看员工学习/考试明细。

数据范围：

- 被设置为部门领导。
- 被系统管理员手动授权可查看某些部门。

部门领导数据范围规则：

- 设置为部门领导后，系统自动生成该部门及子部门的数据查看范围。
- 取消部门领导身份后，系统回收由该领导身份自动生成的数据查看范围。
- 部门领导身份与“培训管理员”用户组相互独立，不自动加入或移出该用户组。

查看范围：

- 默认包含授权部门及所有子部门。
- 可查看部门统计。
- 可查看单个员工的学习状态和考试结果。




## 后台管理操作界面

### 后台首页

属于系统管理员用户组或培训管理员用户组的员工登录后，可进入后台首页。

模块范围：

- 系统管理员用户组可见全部后台模块。
- 培训管理员用户组可见课程管理、考试管理、学习任务管理、统计查看模块。

首页展示：

- 当前已发布任务数（应学记录）。
- 学习任务完成数 和 完成率。
- 考试通过数 和 通过率。
- 逾期未完成数量。

快捷入口：

- 新增部门。
- 新增员工。
- 新建课程。
- 发布学习任务。

快捷入口按当前登录用户拥有的权限展示，培训管理员用户组不显示新增部门、新增员工入口。

### 部门管理

适用用户组：系统管理员。

界面布局：

- 左侧：部门树。
- 右侧：部门详情。

功能：

- 新增部门。
- 编辑部门名称。
- 选择上级部门。
- 设置部门领导。
- 停用部门。

部门领导设置：

- 系统管理员可搜索员工并添加为部门领导。
- 部门可以有多个领导。
- 保存后，领导自动拥有本部门及子部门的数据查看权限。
- 保存或取消部门领导时，不自动变更该员工所属用户组。

### 员工与权限管理

适用用户组：系统管理员。

员工列表：

- 按姓名、工号、部门、状态筛选。
- 系统管理员可新增、编辑、停用员工。
- 培训管理员不可新增、编辑员工，也不可维护员工用户组或权限。

员工详情：

- 姓名。
- 工号。
- 登录账号。
- 所属部门。
- 状态。
- 所属用户组。
- 是哪些部门的部门领导。

权限设置：

- 所属用户组。

当前版本约定：

- 系统管理员、培训管理员默认可发布到任意部门，查看范围也为全公司。

权限边界：

- 只有系统管理员可维护员工账号、部门归属、用户组和所有权限。
- 培训管理员不能增加/修改员工，也不能修改员工权限。

### 课程管理

适用用户组：系统管理员、培训管理员。

课程列表：

- 按课程 名称、类型、状态、分类、标签 筛选。

- 查看课程。

- 编辑课程。

- 发布课程。 
  
  `发布课程`是把课程状态从 `草稿` 改为 `已发布`，和`发布学习任务`不同。
  
  发布课程后，才可以被作为学习任务发布选择。

- 删除草稿课程。


课程编辑：

- 填写课程名称。
- 选择课程类型：必修、选修。
- 填写课程分类
- 选择课程标签
- 填写课程简介。
- 管理课时列表。

  一个 `课程` 包括一个或多个 `课时`，课程编辑页提供课时的增删改功能。


课时编辑：

- 填写课时标题。

- 填写课程预计学习时长（分钟）
   缺省为20分钟，这个也包括了考试时间，后续可以根据实际情况调整。
   这个值用作统计时展示任务学习时长用的。

- 编辑课时富文本内容，课时内容里面可以插入图片，视频，Excel，Word，pdf 等等各种文件。

- 每个课时可以关联考试。


视频展示：

- 编辑时，视频在富文本中显示为视频组件。
- 学习时，视频显示为占位块，显示首帧图片。
- 点击后弹出播放器。


### 考试管理

适用用户组：系统管理员、培训管理员。

目前考试都是放在一个课时的后面，没有独立的考试。

一套课程的结束考试，目前可以作为最后一个课时的考试来设计，课时内容设置为空。

后续如果有独立考试的需求，再做调整。

<br>

考试编辑：

- 考试名称。
- 通过分。
- 允许考试次数。
- 是否交卷后显示答案解析。
- 题目列表。

题目编辑：

- 单选题：题干、选项个数、正确答案、解析。选项正文由编辑者写入题干。
- 多选题：题干、选项个数、正确答案、解析。选项正文由编辑者写入题干。
- 判断题：题干、正确答案、解析。



### 学习任务管理

适用用户组：系统管理员、培训管理员。

❇️ 任务列表：

- 按任务名称、状态筛选。
- 查看任务详情。
- 新建任务。
- 对已发布任务执行撤销。
- 对已发布任务执行停用。

❇️ 发布任务：

可以在任务管理界面， 点击 `新建任务`  发布；

也可以在课程管理界面，选择课程，点击 `发布` 按钮发布。

1. 填写任务名称（不填默认就是课程名称）。
2. 选择已发布课程。
3. 选择指派部门（按住 Ctrl 可多选），系统自动包含子部门员工。
4. 选择任务类型：必修、选修。
5. 设置开始时间和截止时间。
6. 预览被指派员工名单。
7. 发布任务。


❇️ 任务统计：

- 任务基本信息。
- 指派部门。
- 指派员工总数。
- 已完成数量。
- 未完成数量。
- 已通过考试数量。
- 未通过考试数量。

点击某个统计数据， 比如考试未通过数量， 可以查看对应的员工明细。 员工明细列表展示姓名、工号、所属部门等基本信息。

考试未通过的员工明细列表中，点击某个员工，可以查看该员该任务的考试记录详情，包括每次考试的得分、是否通过、考试内容等信息。


<br>

有的时候刚发布了一个任务之后，指派的部门又新来了员工，为了解决这种问题，提供如下功能：

**已发布任务可编辑，但指派范围只能扩大，不能缩小**

已发布任务允许修改：

- 任务名称：影响所有已收到员工的显示。
- 任务类型：影响所有已收到员工的显示。
- 截止时间：只允许延长截止时间，不能缩短；
- 指派部门： 只能在原部门基础上增加，不能移除原已指派部门。否则界面上提示错误。
  即使部门没有变化，也可以保存并触发一次“补齐员工任务”，用于覆盖新加入这些部门的员工。

不允许修改：

- 课程。
- 开始时间。


保存已发布任务时提示：“系统将为新增覆盖员工生成学习任务，已有员工进度不受影响。”
如果指派部门少于原部门，直接提示：“已发布任务的指派部门只能增加，不能移除。”

<br>

如果有某个任务需要额外的其它部门挑出几个员工参加，可以临时创建一个部门（tmp1），把员工加入。
因为员工可以属于多个部门。


<br>

任务可以 撤销 和 停用，具体含义前面 `核心业务对象` 那段已经描述过。

任务不可以删除。




### 统计查看

属于`系统管理员` 或 `培训管理员` 用户组的员工可查看全公司统计。

部门领导 可查看 他所管理部门的 统计数据。



任务统计查看规则：

- 页面默认展示当前可查看部门范围内所有任务的合并统计汇总，并明确提示当前统计范围。
- 属于系统管理员或培训管理员用户组的员工，默认统计范围为全公司。
- 如果当前统计范围部门存在下级部门，可继续选择下级部门查看该部门及其下级部门的合并统计汇总。
- 点击已完成人数、未完成人数、逾期未完成人数、考试通过人数、考试未通过人数，可查看对应员工明细。
- 员工明细列表展示姓名、工号、所属部门等基本信息。

统计指标：

- 应学人数，学习完成率，考试通过率。
- 已完成人数。
- 未完成人数。
- 逾期未完成人数。
- 考试通过人数。
- 考试未通过人数。
- 平均分。

上面这些数据都展示在 统计卡片中。

点击（不为0的）人数统计卡片，比如 已完成人数，未完成人数等 ， 可以查看到具体的人员列表 








## 员工操作界面

### 我的学习

员工登录后进入“我的学习”页面。

展示如下统计卡片：

- 待完成任务（多少个已逾期）。
- 已完成任务。
- 本月学习时长。
- 考试通过率。


我的学习任务区，展示学习任务列表。可以按照 `任务的状态`  和 `任务对应课程的 分类/标签` 进行选择。


<br>


每个学习任务展示为一个任务卡片。

任务卡片包含：
- 任务名称（默认为课程名称）
- 完成状态（未开始/已开始/已完成）
- 任务简介
- 必修/选修
- 分类
- 截止时间
- 课程评分
- 完成进度
- 学习/查看 按钮。  未完成的显示 `学习` 按钮，已经完成的显示 `查看` 按钮。 点击后都进入 课程学习 页面 



<br>

右下角有：


- 近期截止提醒，展示未完成 并且截止时间在未来 14 天内的任务
  
  包括 已经逾期但未完成的任务

  列表最多显示 5 条，并按截止时间从早到晚排序。



 - “最近学习动态” 时间线，展示员工最近的学习考试动态。最多显示8条最近的学习记录。


### 课程学习页

页面内容：

- 任务名称。
- 课程名称。
- 课程简介。
- 课程真整体完成情况
- 评分组件。

  员工可对课程进行评分，评分后可以修改评分，最多评分两次，匿名提交。
  评分是 0~5颗星，以后面的评分为准，覆盖前面的评分。
  
   目前是强制匿名的方式，不显示谁提交的评分

- 课时目录，点击学习按钮可以进入。
- 课时内容。
- 课时完成状态。


<br>


学习操作：

- 阅读文字内容。
- 查看图片。
- 点击视频图标弹窗播放视频。
- 无考试课时点击“标记完成”，视为完成。
- 有考试课时点击“开始考试”，考试通过后视为完成。

已经完成考试的课时还可以再次复习。

员工已完成的课时，如果有关联考试的，并且已经考试通过的（不通过的不能查看），自己可以查看历次的考试内容（每一题当时做的结果），以及最后的得分，是否通过等信息。




### 考试页

考试开始前展示：

- 考试名称。
- 总分，通过分。 可以考 几次，剩余几次。

答题页展示：

- 题目。
- 选项。
- 提交按钮。

交卷后展示：

- 得分。
- 是否通过。
- 答案解析，是否展示由考试设置决定。




### 修改密码

规则：

必须输入原密码
新密码至少 8 位
新密码不能和原密码相同
修改成功后保持当前登录状态






## 关键业务流程

### 初始化流程

1. 系统管理员创建部门树。
2. 系统管理员创建员工。
3. 系统管理员给员工设置所属部门。
4. 系统管理员设置部门领导，系统仅自动授予对应部门及子部门的数据查看范围。
5. 属于系统管理员用户组的员工把需要负责培训业务的员工加入培训管理员用户组。

### 课程制作流程

1. 属于 系统管理员、培训管理员 用户组的员工创建课程。
2. 创建课时。
3. 编辑课时富文本内容。
4. 插入图片或视频。
5. 如需要考试，则创建课时考试。
6. 属于系统管理员或培训管理员用户组的员工发布课程。

### 学习任务发布流程

1. 发布人选择已发布课程。
2. 选择指派部门。
3. 系统自动展开子部门员工。
4. 发布人设置开始时间和截止时间。
5. 系统生成员工学习任务。

### 员工学习考试流程

1. 员工进入“我的学习”。
2. 打开学习任务。
3. 按课时学习内容。
4. 无考试课时标记完成。
5. 有考试课时参加考试。
6. 所有课时完成后，任务完成。



## 状态规则

课程状态：

- 草稿。
- 已发布。

任务状态：

- 草稿。
- 已发布。
- 已停用。
- 已撤销。

员工任务状态：

- 未开始。
- 学习中。
- 已完成。
- 逾期未完成。

考试状态：

- 未考试。
- 已通过。
- 未通过。
- 次数已用完。

## 统计查看

✳️ **应学人次：**

被指派员工人次数（部门任务发布时，包含子部门员工）。

比如，部门A有10人，部门B有5人，部门B是部门A的子部门。发布一个任务给部门A，那么应学人次就是15人次。

再发布一个任务给部门B，那么合计应学人次就是20人次。

通常系统管理员账号不在任何部门，所以不会被指派到任何部门学习任务中，不会产生应学人次。


<br>

✳️ **学习完成率：**

- 已完成人次数 / 应学习人次数。

<br>

✳️ **考试通过率：**

- 已通过人次数 / 已经考试人次数。

<br>

✳️ **逾期未完成：**

- 当前时间超过任务截止时间，且员工任务仍未完成 人次数量。

任务生命周期对统计的影响：

- 默认汇总统计仅计算已发布任务。
- 已停用、已撤销任务不再进入默认汇总统计，但保留单任务历史统计用于追溯。

<br>

✳️ **部门统计：**

- 查看时，可以选中部门范围。

<br>

✳️ **多部门员工：**

- 员工被多个部门任务覆盖时，同一个任务只生成一条学习记录。
- 部门统计中，该员工可出现在其所属的多个部门下。

## 课程分类和标签功能

为便于课程归类检索和管理，提供课程分类（Category）与课程标签（Tag）功能，设计如下：

- 课程分类（Category）：
	- 示例：公司文化规章制度、新员工培训、安全消防、外部培训、QA相关、合成技能。
	- 课程可以不指定分类，或者指定一个分类，**只能指定一个分类**（不可多选）。

- 课程标签（Tag）：
	- 示例：人事规章制度、财务规章制度、行政规章制度、IT信息安全制度、办公技能。
	- 课程可以不选择标签，也可以选择 **1 个或多个标签**（多选）。

- 分类与标签的管理：
	- 在后台的“课程管理”模块下新增“分类/标签管理”入口，用于创建、编辑、删除分类与标签。
	- 前端课程编辑页面需要展示当前可选的分类与标签列表并支持选择/取消。

- 删除行为：
	- 分类或标签可以被删除，即使已有课程关联了它们。
	- 当删除某个分类/标签时，所有课程对该分类/标签的关联将一并移除（课程不被删除，相关字段置为空或从多对多关系中删除）。

