Files
2026-05-12 12:24:11 +08:00

44 KiB
Raw Permalink Blame History

道路救援企业培训系统 - 产品需求文档 (PRD)

版本V1.0.1 更新日期2026-01-13 状态:已确认


版本更新记录

V1.0.1 (2026-01-13)

【培训计划】多考试任务支持

变更项 变更前 变更后
考试任务数量 最多关联1个考试 支持关联多个考试
考试属性 支持设置必考/选考
考试排序 支持自定义排序

功能说明:

  • 创建/编辑培训计划时,可添加多个考试任务
  • 每个考试可设置为"必考"或"选考"
  • 学员端展示所有关联考试及通过状态
  • 列表页显示考试任务总数

数据库变更:

  • 新增 tr_plan_exam 关联表
  • 移除 tr_plan 表的 exam_id 字段
  • ⚠️ 不兼容历史数据,需重新初始化数据库

V1.0.0 (2026-01-08)

  • 初始版本发布
  • 包含:系统基础、人员管理、知识库、考题管理、试卷管理、考试管理、培训计划六大模块

一、核心目标 (Mission)

为道路救援企业打造一站式内部培训平台通过知识沉淀、在线考核、培训管理三大核心能力提升500名员工的专业技能水平和服务标准化程度。


二、用户画像 (Persona)

角色 人数估算 核心痛点 使用场景
管理员 3-5人 人员管理分散,培训效果难追踪 配置系统、管理组织架构、分配权限
讲师(技师) 30-50人 知识传承依赖口口相传,出题组卷效率低 上传知识文档、创建题库、发布考试
学员 450人左右 学习资料分散、考试不便、进度不清晰 查阅知识库、完成培训任务、参加考试

三、版本规划

V1最小可行产品 (MVP)

模块一:系统基础与人员管理

功能 说明
企业微信授权登录 企业微信授权登录
组织架构管理 中心 → 部门≤8→ 小组≤10/部门)三级结构
员工管理 管理员手动录入员工信息,分配角色(管理员/讲师/学员)
权限控制 基于角色的权限隔离,数据按部门隔离

模块二:知识库(重点)

功能 说明
分类目录 支持多级分类(如:安全规范 > 高速救援 > 操作手册)
文档管理 支持上传 PDF/Word/Excel/PPT 等常见文档格式
视频管理 支持上传视频文件,在线播放
在线预览 文档、视频无需下载即可在线查看
状态管理 草稿 → 已发布 → 已下架
部门隔离 各部门只能查看本部门的知识内容

模块三:考题管理

功能 说明
题型支持 单选题、多选题、判断题
题目解析 每道题必须填写答案解析
题库分类 按分类/章节管理题目
状态管理 草稿 → 已发布 → 已下架
部门隔离 讲师只能管理本部门题库

模块四:试卷管理

功能 说明
手动组卷 讲师手动从题库选题组成试卷
自动组卷 设置规则单选X题+多选Y题+判断Z题系统随机抽题
试卷配置 设置总分、题目分值、考试时长
试卷预览 组卷完成后可预览试卷效果
状态管理 草稿 → 已发布 → 已下架

模块五:考试管理

功能 说明
发布考试 选择试卷,设置考试名称、时间窗口(开始~结束时间)
指定对象 支持指定部门 / 小组 / 个人参加考试
考试规则 设置及格线、限制考试次数、考试时长
在线答题 学员在线作答,自动计时,超时自动交卷
成绩查看 交卷后立即显示成绩和答案解析

模块六:培训计划

功能 说明
创建培训计划 设置计划名称、培训周期、培训目标
关联知识/考试 一个培训计划可包含多个知识文档 + 多场考试V1.0.1+
考试属性设置 每个考试可设置必考/选考、自定义排序V1.0.1+
分配学员 指定部门/小组/个人参加培训计划
进度跟踪 学员可查看自己的学习进度和考试状态
计划状态 未开始 / 进行中 / 已结束

V2 及以后版本 (Future Releases)

版本 功能 价值
V2 统计报表中心 培训完成率、考试通过率、部门排名等数据看板
V2 线下培训签到 扫码签到/签退,记录实际培训时长
V2 错题本 学员自动收集错题,巩固薄弱知识点
V3 知识库增强 收藏、点赞、评论、全文搜索
V3 奖励体系 积分、勋章、学习排行榜
V3 证书管理 培训/考试

四、关键业务逻辑 (Business Rules)

4.1 权限规则

管理员:
  ├── 管理所有中心、部门、小组
  ├── 管理所有用户(增删改查、角色分配)
  ├── 查看全平台数据
  └── 系统配置

讲师:
  ├── 管理本部门知识库(上传/编辑/删除)
  ├── 管理本部门题库(增删改查)
  ├── 创建/管理本部门试卷和考试
  ├── 创建/管理本部门培训计划
  └── 查看本部门学员成绩

学员:
  ├── 查看本部门知识库(只读)
  ├── 参加分配给自己的培训计划
  ├── 参加分配给自己的考试
  └── 查看个人学习记录和成绩

4.2 内容状态流转

┌─────────┐     发布      ┌─────────┐     下架      ┌─────────┐
│  草稿   │ ───────────▶ │  已发布  │ ───────────▶ │  已下架  │
│ DRAFT   │              │PUBLISHED │              │ OFFLINE  │
└─────────┘              └─────────┘              └─────────┘
     ▲                        │                        │
     │                        │        重新上架         │
     │                        ◀────────────────────────┘
     │
     └──────── 可继续编辑 ─────────────────────────────┘
状态 说明 学员可见
草稿 (DRAFT) 讲师编辑中,未完成 不可见
已发布 (PUBLISHED) 正式生效,可被使用 可见
已下架 (OFFLINE) 临时隐藏,保留数据 不可见

4.3 考试规则

规则 说明
时间窗口 只有在考试开放时间内才能进入考试
限时作答 超过考试时长自动交卷
限制次数 达到最大次数后不可再考,取最高分
及格判定 分数 ≥ 及格线 为通过
答题顺序 自动组卷时题目顺序随机打乱

4.4 数据隔离规则

数据类型 隔离方式
知识库 按部门隔离,只能看本部门
题库 按部门隔离,讲师只能操作本部门
试卷/考试 按部门隔离
培训计划 按部门隔离
员工信息 管理员可见全部,讲师可见本部门

4.5 引用保护规则

场景 规则
题目下架 已被试卷引用的题目,下架前需确认警告
试卷下架 已被考试引用的试卷,下架前需确认警告
知识下架 已被培训计划引用的知识,下架前需确认警告

五、数据契约 (Data Contract)

5.1 核心实体

用户 (sys_user)

字段 类型 说明
id Long 主键
wx_userid String 企业微信用户ID
real_name String 姓名
phone String 手机号
role Enum 角色ADMIN/LECTURER/STUDENT
department_id Long 所属部门
group_id Long 所属小组(可空)
status Enum 状态ENABLED/DISABLED
create_time DateTime 创建时间

组织架构 (sys_center / sys_department / sys_group)

字段 类型 说明
id Long 主键
name String 名称
parent_id Long 上级ID部门关联中心小组关联部门
sort_order Integer 排序
create_time DateTime 创建时间

知识分类 (km_category)

字段 类型 说明
id Long 主键
name String 分类名称
parent_id Long 父分类ID
department_id Long 所属部门
sort_order Integer 排序

知识 (km_knowledge)

字段 类型 说明
id Long 主键
title String 标题
category_id Long 所属分类
type Enum 类型DOCUMENT/VIDEO
file_url String 文件地址
file_size Long 文件大小
department_id Long 所属部门
status Enum 状态DRAFT/PUBLISHED/OFFLINE
creator_id Long 创建人
create_time DateTime 创建时间
publish_time DateTime 发布时间

题目 (ex_question)

字段 类型 说明
id Long 主键
type Enum 题型SINGLE/MULTIPLE/JUDGE
content String 题干
options JSON 选项列表(判断题为空)
answer String 正确答案
analysis String 解析
category_id Long 所属分类
department_id Long 所属部门
status Enum 状态DRAFT/PUBLISHED/OFFLINE
creator_id Long 创建人
create_time DateTime 创建时间
publish_time DateTime 发布时间

试卷 (ex_paper)

字段 类型 说明
id Long 主键
title String 试卷名称
total_score Integer 总分
duration Integer 考试时长(分钟)
pass_score Integer 及格分
department_id Long 所属部门
status Enum 状态DRAFT/PUBLISHED/OFFLINE
creator_id Long 创建人
create_time DateTime 创建时间
publish_time DateTime 发布时间

试卷题目关联 (ex_paper_question)

字段 类型 说明
id Long 主键
paper_id Long 试卷ID
question_id Long 题目ID
score Integer 该题分值
sort_order Integer 排序

考试 (ex_exam)

字段 类型 说明
id Long 主键
title String 考试名称
paper_id Long 关联试卷
start_time DateTime 开始时间
end_time DateTime 结束时间
max_attempts Integer 最大考试次数
department_id Long 所属部门
status Enum 状态NOT_STARTED/IN_PROGRESS/ENDED
creator_id Long 创建人
create_time DateTime 创建时间

考试对象 (ex_exam_target)

字段 类型 说明
id Long 主键
exam_id Long 考试ID
target_type Enum 对象类型DEPARTMENT/GROUP/USER
target_id Long 对象ID

考试记录 (ex_exam_record)

字段 类型 说明
id Long 主键
exam_id Long 考试ID
user_id Long 学员ID
attempt_no Integer 第几次考试
score Integer 得分
passed Boolean 是否通过
start_time DateTime 开始时间
submit_time DateTime 提交时间
answers JSON 答题详情

培训计划 (tr_plan)

字段 类型 说明
id Long 主键
title String 计划名称
description String 计划描述
start_date Date 开始日期
end_date Date 结束日期
department_id Long 所属部门
exam_id Long 关联考试(可空)
status Enum 状态NOT_STARTED/IN_PROGRESS/ENDED
creator_id Long 创建人
create_time DateTime 创建时间

培训计划-知识关联 (tr_plan_knowledge)

字段 类型 说明
id Long 主键
plan_id Long 计划ID
knowledge_id Long 知识ID
required Boolean 是否必修
sort_order Integer 排序

培训计划-对象 (tr_plan_target)

字段 类型 说明
id Long 主键
plan_id Long 计划ID
target_type Enum 对象类型DEPARTMENT/GROUP/USER
target_id Long 对象ID

培训进度 (tr_plan_progress)

字段 类型 说明
id Long 主键
plan_id Long 计划ID
user_id Long 学员ID
knowledge_id Long 知识ID
completed Boolean 是否完成
complete_time DateTime 完成时间

六、原型设计方案A - 经典管理后台风格)

6.1 设计理念

左侧固定导航 + 右侧内容区,层级分明,适合功能复杂的企业管理系统。学习成本低,用户容易上手。

6.2 布局结构

┌────────────────────────────────────────────────────────────────────────────┐
│  🚗 道路救援培训系统                              🔔 消息  👤 张三 ▼      │
├──────────────────┬─────────────────────────────────────────────────────────┤
│                  │                                                         │
│  📊 工作台       │                      内容区域                           │
│                  │                                                         │
│  👥 人员管理  ▶  │                                                         │
│    ├ 组织架构    │                                                         │
│    ├ 员工管理    │                                                         │
│    └ 讲师管理    │                                                         │
│                  │                                                         │
│  📚 知识库    ▶  │                                                         │
│    ├ 知识分类    │                                                         │
│    └ 知识列表    │                                                         │
│                  │                                                         │
│  ✏️ 考题管理  ▶  │                                                         │
│    ├ 题库分类    │                                                         │
│    └ 题目列表    │                                                         │
│                  │                                                         │
│  📄 试卷管理     │                                                         │
│                  │                                                         │
│  📝 考试管理     │                                                         │
│                  │                                                         │
│  📅 培训计划     │                                                         │
│                  │                                                         │
│  ──────────────  │                                                         │
│  ⚙️ 系统设置     │                                                         │
│                  │                                                         │
└──────────────────┴─────────────────────────────────────────────────────────┘

6.3 核心页面原型

工作台首页

┌────────────────────────────────────────────────────────────────────────────┐
│  🚗 道路救援培训系统                              🔔 消息  👤 张三 ▼      │
├──────────────────┬─────────────────────────────────────────────────────────┤
│                  │                                                         │
│  📊 工作台   ●   │   欢迎回来,张三                      2026年1月8日     │
│                  │                                                         │
│  👥 人员管理  ▶  │   ┌─────────────┐ ┌─────────────┐ ┌─────────────┐      │
│                  │   │  待学习课程  │ │  待完成考试  │ │  培训进度   │      │
│  📚 知识库    ▶  │   │             │ │             │ │             │      │
│                  │   │     12      │ │      3      │ │   75%      │      │
│  ✏️ 考题管理  ▶  │   │             │ │             │ │   ████░░   │      │
│                  │   └─────────────┘ └─────────────┘ └─────────────┘      │
│  📄 试卷管理     │                                                         │
│                  │   ┌──────────────────────────────────────────────────┐  │
│  📝 考试管理     │   │ 我的培训计划                                      │  │
│                  │   ├──────────────────────────────────────────────────┤  │
│  📅 培训计划     │   │ 📋 2026年Q1安全规范培训     进行中    60%        │  │
│                  │   │ 📋 新员工入职培训           进行中    30%        │  │
│                  │   │ 📋 高速救援操作规范         未开始    --         │  │
│                  │   └──────────────────────────────────────────────────┘  │
│                  │                                                         │
│                  │   ┌──────────────────────────────────────────────────┐  │
│                  │   │ 待完成考试                                        │  │
│                  │   ├──────────────────────────────────────────────────┤  │
│                  │   │ 📝 安全规范考核    截止: 1月15日    [进入考试]   │  │
│                  │   │ 📝 月度技能测试    截止: 1月20日    [进入考试]   │  │
│                  │   └──────────────────────────────────────────────────┘  │
│                  │                                                         │
└──────────────────┴─────────────────────────────────────────────────────────┘

知识库列表页

┌────────────────────────────────────────────────────────────────────────────┐
│  🚗 道路救援培训系统                              🔔 消息  👤 张三 ▼      │
├──────────────────┬─────────────────────────────────────────────────────────┤
│                  │                                                         │
│  📊 工作台       │   知识库 > 安全规范                                     │
│                  │   ─────────────────────────────────────────────────     │
│  👥 人员管理  ▶  │                                                         │
│                  │   [+ 新增知识]  [所有状态 ▼]  [🔍 搜索知识...]         │
│  📚 知识库    ▼  │                                                         │
│  ┌ 知识分类      │   ┌────────────────────────────────────────────────┐    │
│  └ 知识列表  ●   │   │ 标题            类型    状态    更新时间   操作│    │
│                  │   ├────────────────────────────────────────────────┤    │
│  ✏️ 考题管理  ▶  │   │ 高速救援SOP     📄文档  已发布  01-05     编辑│    │
│                  │   │ 安全操作视频    🎬视频  已发布  01-03     编辑│    │
│  📄 试卷管理     │   │ 应急处理流程    📄文档  草稿    01-02     编辑│    │
│                  │   │ 设备使用手册    📄文档  已下架  12-28     编辑│    │
│  📝 考试管理     │   └────────────────────────────────────────────────┘    │
│                  │                                                         │
│  📅 培训计划     │   共 24 条记录                        < 1 2 3 4 5 >     │
│                  │                                                         │
└──────────────────┴─────────────────────────────────────────────────────────┘

在线考试页

┌────────────────────────────────────────────────────────────────────────────┐
│  📝 2026年Q1安全规范考试                          剩余时间: 45:23         │
├────────────────────────────────────────────────────────────────────────────┤
│                                                                            │
│  ┌─────────────────────────────────────────────────────────────────────┐   │
│  │ 第 3 题 / 共 20 题                                        [单选题] │   │
│  ├─────────────────────────────────────────────────────────────────────┤   │
│  │                                                                     │   │
│  │  高速公路救援作业时,警示标志应放置在故障车辆后方多少米处?          │   │
│  │                                                                     │   │
│  │  ○ A. 50米                                                         │   │
│  │  ● B. 150米                                                        │   │
│  │  ○ C. 200米                                                        │   │
│  │  ○ D. 100米                                                        │   │
│  │                                                                     │   │
│  └─────────────────────────────────────────────────────────────────────┘   │
│                                                                            │
│  答题卡:                                                                   │
│  ┌────────────────────────────────────────────────────────────────────┐    │
│  │ ✓1  ✓2  ●3  ○4  ○5  ○6  ○7  ○8  ○9  ○10                          │    │
│  │ ○11 ○12 ○13 ○14 ○15 ○16 ○17 ○18 ○19 ○20                          │    │
│  └────────────────────────────────────────────────────────────────────┘    │
│                                                                            │
│                        [< 上一题]            [下一题 >]     [交卷]        │
│                                                                            │
└────────────────────────────────────────────────────────────────────────────┘

试卷组卷页

┌────────────────────────────────────────────────────────────────────────────┐
│  🚗 道路救援培训系统                              🔔 消息  👤 张三 ▼      │
├──────────────────┬─────────────────────────────────────────────────────────┤
│                  │                                                         │
│  📊 工作台       │   创建试卷 > 第2步选择题目                            │
│                  │   ═══════════════════════════════════════════════════   │
│  👥 人员管理  ▶  │    ① 基本信息  ──────  ② 选择题目  ──────  ③ 预览确认  │
│                  │                            ●                            │
│  📚 知识库    ▶  │                                                         │
│                  │   ┌─────────────────────┐  ┌────────────────────────┐   │
│  ✏️ 考题管理  ▶  │   │ 📂 题库             │  │ 📋 已选题目 (15)        │   │
│                  │   │ ┌─────────────────┐ │  │                        │   │
│  📄 试卷管理 ●   │   │ │ [全选] 安全(48) │ │  │  单选题 x10    30分    │   │
│                  │   │ │  ☑ 高速警示...  │ │  │  多选题 x3     15分    │   │
│  📝 考试管理     │   │ │  ☑ 夜间灯光...  │ │  │  判断题 x2      5分    │   │
│                  │   │ │  ☐ 拖车规范...  │ │  │  ───────────────       │   │
│  📅 培训计划     │   │ └─────────────────┘ │  │  总分: 50分            │   │
│                  │   │                     │  │                        │   │
│                  │   │ ── 或自动组卷 ──   │  │  [自动组卷]            │   │
│                  │   │ 单选: [10] 题       │  │  单选: [10] 题         │   │
│                  │   │ 多选: [ 5] 题       │  │  多选: [ 5] 题         │   │
│                  │   │ 判断: [ 5] 题       │  │  判断: [ 5] 题         │   │
│                  │   │    [随机抽题]       │  │  [确认随机抽取]        │   │
│                  │   └─────────────────────┘  └────────────────────────┘   │
│                  │                                                         │
│                  │                      [上一步]        [下一步:预览]      │
└──────────────────┴─────────────────────────────────────────────────────────┘

七、架构设计蓝图

7.1 系统架构总览

┌─────────────────────────────────────────────────────────────────────────┐
│                              客户端层                                    │
│  ┌─────────────────┐  ┌─────────────────┐  ┌─────────────────┐         │
│  │   PC浏览器      │  │   企业微信H5    │  │   移动端浏览器  │         │
│  │  (管理员/讲师)  │  │    (学员)       │  │    (学员)       │         │
│  └────────┬────────┘  └────────┬────────┘  └────────┬────────┘         │
└───────────┼─────────────────────┼─────────────────────┼─────────────────┘
            │                     │                     │
            └─────────────────────┼─────────────────────┘
                                  ▼
┌─────────────────────────────────────────────────────────────────────────┐
│                              网关层                                      │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │                    Spring Boot 应用                              │   │
│  │  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐           │   │
│  │  │ JWT认证  │ │ 权限拦截 │ │ 日志记录 │ │ 异常处理 │           │   │
│  │  └──────────┘ └──────────┘ └──────────┘ └──────────┘           │   │
│  └─────────────────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────────────────┘
                                  │
                                  ▼
┌─────────────────────────────────────────────────────────────────────────┐
│                              业务层                                      │
│  ┌───────────┐ ┌───────────┐ ┌───────────┐ ┌───────────┐ ┌───────────┐ │
│  │  认证模块  │ │  组织模块  │ │ 知识库模块│ │  考试模块  │ │  培训模块  │ │
│  │           │ │           │ │           │ │           │ │           │ │
│  │ ·企微登录 │ │ ·组织架构 │ │ ·分类管理 │ │ ·题库管理 │ │ ·计划管理 │ │
│  │ ·Token管理│ │ ·员工管理 │ │ ·知识CRUD │ │ ·试卷管理 │ │ ·任务分配 │ │
│  │ ·权限校验 │ │ ·角色管理 │ │ ·文件上传 │ │ ·考试管理 │ │ ·进度跟踪 │ │
│  └───────────┘ └───────────┘ └───────────┘ └───────────┘ └───────────┘ │
└─────────────────────────────────────────────────────────────────────────┘
                                  │
                                  ▼
┌─────────────────────────────────────────────────────────────────────────┐
│                              数据层                                      │
│  ┌─────────────────────────┐  ┌─────────────────────────┐              │
│  │       MySQL 8.0         │  │     文件存储服务         │              │
│  │   (MyBatis Plus ORM)    │  │  (本地/OSS/MinIO)       │              │
│  └─────────────────────────┘  └─────────────────────────┘              │
└─────────────────────────────────────────────────────────────────────────┘

7.2 核心流程图

用户登录流程企业微信OAuth

sequenceDiagram
    participant U as 用户
    participant FE as 前端页面
    participant BE as 后端服务
    participant WX as 企业微信API
    participant DB as 数据库

    U->>FE: 点击"企业微信登录"
    FE->>WX: 跳转企微授权页面
    WX->>U: 显示授权确认
    U->>WX: 确认授权
    WX->>FE: 回调返回code
    FE->>BE: 携带code请求登录
    BE->>WX: 用code换取access_token
    WX-->>BE: 返回access_token
    BE->>WX: 获取用户信息(userid)
    WX-->>BE: 返回用户信息
    BE->>DB: 查询用户是否存在
    alt 用户存在
        DB-->>BE: 返回用户信息
        BE->>BE: 生成JWT Token
        BE-->>FE: 返回Token+用户信息
        FE->>FE: 存储Token跳转工作台
    else 用户不存在
        BE-->>FE: 返回错误:用户未录入
        FE->>U: 提示联系管理员
    end

在线考试流程

sequenceDiagram
    participant S as 学员
    participant FE as 前端页面
    participant BE as 后端服务
    participant DB as 数据库

    S->>FE: 进入考试列表
    FE->>BE: 获取我的考试列表
    BE->>DB: 查询分配给该学员的考试
    DB-->>BE: 返回考试列表
    BE-->>FE: 返回考试列表(含剩余次数)

    S->>FE: 点击"开始考试"
    FE->>BE: 请求开始考试
    BE->>DB: 校验考试状态/次数/时间窗口
    alt 校验通过
        BE->>DB: 创建考试记录(开始时间)
        BE->>DB: 获取试卷题目
        DB-->>BE: 返回题目列表
        BE-->>FE: 返回试卷内容+考试时长
        FE->>FE: 启动倒计时

        loop 答题过程
            S->>FE: 选择/修改答案
            FE->>FE: 本地暂存答案
            FE->>BE: 定时自动保存(每30秒)
            BE->>DB: 更新答题记录
        end

        alt 主动交卷
            S->>FE: 点击"交卷"
        else 时间到
            FE->>FE: 倒计时结束
        end

        FE->>BE: 提交试卷
        BE->>BE: 自动判分(客观题)
        BE->>DB: 保存成绩+答案详情
        BE-->>FE: 返回考试成绩
        FE->>S: 显示成绩+答案解析
    else 校验失败
        BE-->>FE: 返回错误(次数用尽/不在时间窗口)
        FE->>S: 提示无法参加考试
    end

培训计划执行流程

flowchart TB
    subgraph 讲师操作
        A[创建培训计划] --> B[设置基本信息]
        B --> C[关联知识内容]
        C --> D[关联考试-可选]
        D --> E[指定培训对象]
        E --> F[发布培训计划]
    end

    subgraph 学员学习
        F --> G[学员收到培训通知]
        G --> H[进入培训计划]
        H --> I[学习知识内容]
        I --> J{知识学完?}
        J -->|否| I
        J -->|是| K{有关联考试?}
        K -->|否| L[培训完成]
        K -->|是| M[参加考试]
        M --> N{考试通过?}
        N -->|是| L
        N -->|否| O{还有考试次数?}
        O -->|是| M
        O -->|否| P[培训未通过]
    end

    subgraph 进度追踪
        I --> Q[更新学习进度]
        M --> R[记录考试成绩]
        L --> S[标记培训完成]
    end

7.3 技术选型

层次 技术 版本 说明
构建 Maven 3.8+ 依赖管理
框架 Spring Boot 3.1.2 主框架
ORM MyBatis Plus 3.5.3+ 简化CRUD
数据库 MySQL 8.0 主数据库
认证 java-jwt 4.4+ JWT Token生成验证
加密 Spring Security 6.x BCrypt密码加密
文档 Springdoc OpenAPI 2.2+ API文档
工具 Lombok 1.18+ 简化代码
JSON Jackson 内置 JSON序列化
文件 本地存储 / MinIO - V1先用本地V2可扩展
前端 HTML + CSS + JS - 原生技术栈

关键依赖库

用途 说明
企业微信SDK weixin-java-cp 企业微信Java SDK
文件预览 kkFileView / OnlyOffice 文档在线预览(可选外部服务)
视频播放 video.js 前端视频播放器
Excel导入导出 EasyExcel 阿里开源,性能好
工具库 Hutool 常用工具集合

7.4 风险评估

风险点 等级 描述 应对策略
企业微信对接 🟡 需要企业微信管理员配置应用 提前准备配置文档,预留账号密码登录作为备选
文件预览 🟡 不同格式文档预览兼容性 V1优先支持PDF+图片+视频,复杂格式提示下载
大文件上传 🟡 视频文件可能较大 限制单文件大小,支持分片上传
考试并发 🟢 500人规模并发压力不大 合理设计索引,必要时加缓存
数据隔离 🟢 部门数据隔离逻辑 统一在Service层实现隔离过滤

7.5 项目结构

training-system/
├── pom.xml
├── src/
│   └── main/
│       ├── java/com/sino/training/
│       │   ├── TrainingApplication.java          # 启动类
│       │   │
│       │   ├── common/                           # 通用模块
│       │   │   ├── config/                       # 配置类
│       │   │   ├── exception/                    # 异常处理
│       │   │   ├── result/                       # 统一响应
│       │   │   ├── interceptor/                  # 拦截器
│       │   │   └── utils/                        # 工具类
│       │   │
│       │   ├── module/                           # 业务模块
│       │   │   ├── auth/                         # 认证模块
│       │   │   ├── system/                       # 系统管理
│       │   │   ├── knowledge/                    # 知识库模块
│       │   │   ├── exam/                         # 考试模块
│       │   │   └── training/                     # 培训模块
│       │   │
│       │   └── integration/                      # 外部集成
│       │       └── wechat/                       # 企业微信
│       │
│       └── resources/
│           ├── application.yml                   # 主配置
│           ├── application-dev.yml               # 开发环境
│           ├── application-prod.yml              # 生产环境
│           ├── mapper/                           # MyBatis XML
│           ├── static/                           # 静态资源
│           └── templates/                        # 页面模板
│
├── docs/
│   └── PRD.md                                    # 产品需求文档
│
└── sql/
    └── init.sql                                  # 数据库初始化脚本

八、附录

8.1 角色菜单权限对照表

菜单 管理员 讲师 学员
工作台
组织架构管理
员工管理 👁️ 本部门只读
讲师管理
知识库-分类管理 本部门
知识库-知识列表 本部门 👁️ 本部门已发布
考题管理-题库分类 本部门
考题管理-题目列表 本部门
试卷管理 本部门
考试管理 本部门 👁️ 我的考试
培训计划 本部门 👁️ 我的培训
系统设置

8.2 状态枚举定义

// 内容状态
public enum ContentStatus {
    DRAFT,      // 草稿
    PUBLISHED,  // 已发布
    OFFLINE     // 已下架
}

// 用户角色
public enum UserRole {
    ADMIN,      // 管理员
    LECTURER,   // 讲师
    STUDENT     // 学员
}

// 用户状态
public enum UserStatus {
    ENABLED,    // 启用
    DISABLED    // 禁用
}

// 题目类型
public enum QuestionType {
    SINGLE,     // 单选题
    MULTIPLE,   // 多选题
    JUDGE       // 判断题
}

// 知识类型
public enum KnowledgeType {
    DOCUMENT,   // 文档
    VIDEO       // 视频
}

// 考试/培训目标类型
public enum TargetType {
    DEPARTMENT, // 部门
    GROUP,      // 小组
    USER        // 个人
}

// 考试状态
public enum ExamStatus {
    NOT_STARTED,  // 未开始
    IN_PROGRESS,  // 进行中
    ENDED         // 已结束
}

// 培训计划状态
public enum PlanStatus {
    NOT_STARTED,  // 未开始
    IN_PROGRESS,  // 进行中
    ENDED         // 已结束
}

文档状态:已确认,等待开发启动