20 KiB
20 KiB
V2 统计报表中心 - 产品需求文档
版本:V2.0.0-draft 作者:Product Agent 日期:2026-02-04 状态:待评审
一、功能概述
1.1 背景与目标
背景:V1 版本完成了培训系统的基础功能,但管理层无法量化培训效果,讲师无法追踪学员学习情况,缺乏数据支撑决策。
目标:构建统计报表中心,让培训效果可量化、可追踪、可对比。
1.2 目标用户
| 角色 | 核心诉求 |
|---|---|
| 管理员 | 全局数据概览,跨部门对比,发现问题部门 |
| 讲师 | 本部门数据,学员学习进度,考试成绩分布 |
| 学员 | 个人学习记录,成绩趋势,与平均水平对比 |
1.3 功能边界
| 范围 | 说明 |
|---|---|
| 包含 | 数据看板、培训统计、考试统计、学员统计、数据导出 |
| 不包含 | 实时监控、预测分析、自定义报表设计器 |
二、功能清单
2.1 模块总览
统计报表中心
├── 2.1 数据概览看板
│ ├── 关键指标卡片
│ ├── 趋势图表
│ └── 快捷入口
│
├── 2.2 培训统计
│ ├── 培训计划完成率
│ ├── 知识学习统计
│ └── 部门培训排名
│
├── 2.3 考试统计
│ ├── 考试通过率
│ ├── 成绩分布
│ └── 题目正确率分析
│
├── 2.4 学员统计
│ ├── 学员学习排行
│ ├── 个人学习报告
│ └── 学习时长统计
│
└── 2.5 数据导出
├── Excel 导出
└── 定期报表
三、详细需求
3.1 数据概览看板
3.1.1 功能描述
为不同角色提供个性化的数据概览首页,一目了然掌握关键指标。
3.1.2 管理员看板
关键指标卡片(4个):
| 指标 | 计算方式 | 对比 |
|---|---|---|
| 总学员数 | 状态=启用的学员数量 | 较上月增减 |
| 本月培训完成率 | 本月已完成培训人次 / 本月应完成培训人次 | 较上月变化 |
| 本月考试通过率 | 本月通过考试人次 / 本月参考人次 | 较上月变化 |
| 活跃学员数 | 本月有学习行为的学员数 | 较上月增减 |
趋势图表:
- 近6个月培训完成率趋势(折线图)
- 近6个月考试通过率趋势(折线图)
- 部门培训完成率排名(横向柱状图,TOP 8)
快捷入口:
- 查看详细培训报表
- 查看详细考试报表
- 导出月度汇总
3.1.3 讲师看板
关键指标卡片(4个):
| 指标 | 范围 |
|---|---|
| 本部门学员数 | 本部门 |
| 本部门培训完成率 | 本部门本月 |
| 本部门考试通过率 | 本部门本月 |
| 待批阅数 | 如有主观题(V2暂无) |
趋势图表:
- 本部门近6个月培训完成率趋势
- 本部门学员学习进度分布(饼图:已完成/进行中/未开始)
3.1.4 学员看板
关键指标卡片(4个):
| 指标 | 说明 |
|---|---|
| 我的培训进度 | 已完成/总计划数 |
| 我的考试成绩 | 最近一次考试分数 |
| 学习排名 | 在本部门的排名 |
| 累计学习时长 | 总学习时长 |
图表:
- 我的成绩趋势(近5次考试)
- 与部门平均分对比
3.1.5 验收标准
Feature: 数据概览看板
Scenario: 管理员查看全局看板
Given 我是管理员角色
When 我进入统计报表中心
Then 我应该看到4个关键指标卡片
And 我应该看到培训完成率趋势图
And 我应该看到部门排名图表
And 所有数据应反映全平台数据
Scenario: 讲师查看部门看板
Given 我是讲师角色
When 我进入统计报表中心
Then 所有数据应仅包含本部门数据
And 我不应该看到其他部门的数据
Scenario: 指标卡片显示环比变化
Given 当前月份培训完成率为 80%
And 上月培训完成率为 75%
When 我查看培训完成率卡片
Then 应显示 "+5%" 的环比增长标记
And 增长应显示为绿色
3.2 培训统计
3.2.1 培训计划完成率
筛选条件:
- 时间范围:本月/本季度/本年度/自定义
- 部门:全部/指定部门(管理员可选)
- 培训计划:全部/指定计划
统计维度:
| 维度 | 指标 |
|---|---|
| 按计划 | 计划名称、应参加人数、实际完成人数、完成率 |
| 按部门 | 部门名称、计划数、完成率、排名 |
| 按时间 | 月度完成率趋势 |
列表展示:
| 培训计划 | 部门 | 应参加 | 已完成 | 完成率 | 状态 |
|---|---|---|---|---|---|
| 2026Q1安全培训 | 救援一部 | 50 | 45 | 90% | 进行中 |
| 新员工入职培训 | 救援二部 | 20 | 20 | 100% | 已结束 |
3.2.2 知识学习统计
统计内容:
- 知识总数、已发布数
- 学习总人次
- 热门知识 TOP 10(按学习人次)
- 最少学习知识(提醒优化或下架)
3.2.3 验收标准
Feature: 培训统计
Scenario: 按部门查看培训完成率
Given 我是管理员
When 我选择按部门维度查看
Then 应显示所有部门的培训完成率列表
And 列表应按完成率降序排列
And 应显示部门排名
Scenario: 筛选指定时间范围
Given 我在培训统计页面
When 我选择时间范围为 "2026年1月"
Then 所有数据应仅包含该月份的培训数据
Scenario: 导出培训报表
Given 我在培训统计页面
When 我点击导出按钮
Then 应下载 Excel 文件
And 文件应包含当前筛选条件下的所有数据
3.3 考试统计
3.3.1 考试通过率
筛选条件:
- 时间范围:本月/本季度/本年度/自定义
- 部门:全部/指定部门
- 考试:全部/指定考试
统计指标:
| 指标 | 说明 |
|---|---|
| 参考人数 | 实际参加考试的人数 |
| 通过人数 | 分数 >= 及格线的人数 |
| 通过率 | 通过人数 / 参考人数 |
| 平均分 | 所有考生的平均分数 |
| 最高分 / 最低分 | 分数极值 |
3.3.2 成绩分布
图表展示:
- 分数段分布(柱状图):0-59 / 60-69 / 70-79 / 80-89 / 90-100
- 各部门平均分对比(横向柱状图)
列表展示:
| 考试名称 | 参考人数 | 通过率 | 平均分 | 最高分 | 最低分 |
|---|---|---|---|---|---|
| 安全规范考核 | 120 | 85% | 78.5 | 98 | 42 |
| 月度技能测试 | 95 | 72% | 71.2 | 100 | 35 |
3.3.3 题目正确率分析
功能描述:分析每道题的正确率,发现难题和易错题。
统计内容:
| 字段 | 说明 |
|---|---|
| 题目内容 | 题干摘要(前50字) |
| 题型 | 单选/多选/判断 |
| 作答人次 | 该题被作答的总次数 |
| 正确率 | 正确人次 / 作答人次 |
| 错误选项分布 | 各错误选项的选择占比 |
排序:
- 默认按正确率升序(易错题优先)
- 可切换按作答人次排序
用途:
- 正确率 < 30% 的题目:可能题目有问题或知识点难度大
- 正确率 > 95% 的题目:可能过于简单
3.3.4 验收标准
Feature: 考试统计
Scenario: 查看考试成绩分布
Given 我在考试统计页面
When 我选择某场考试
Then 应显示分数段分布柱状图
And 应显示通过率、平均分等指标
Scenario: 查看题目正确率
Given 我在考试统计页面
When 我点击 "题目分析"
And 选择某场考试
Then 应显示该考试所有题目的正确率
And 默认按正确率升序排列
And 可以查看每道题的错误选项分布
Scenario: 识别易错题
Given 某道题的正确率为 25%
When 我查看题目分析列表
Then 该题应标记为 "易错题"
And 应显示主要错误选项
3.4 学员统计
3.4.1 学员学习排行
排行维度:
- 学习时长排行(本月/本季度)
- 考试成绩排行(平均分/最高分)
- 培训完成数排行
展示内容:
| 排名 | 学员 | 部门 | 学习时长 | 完成培训数 | 平均分 |
|---|---|---|---|---|---|
| 1 | 张三 | 救援一部 | 45h | 8 | 92 |
| 2 | 李四 | 救援二部 | 42h | 7 | 88 |
范围控制:
- 管理员:可查看全平台排行
- 讲师:仅可查看本部门排行
- 学员:可查看本部门排行,自己会高亮显示
3.4.2 个人学习报告
入口:
- 讲师点击学员姓名进入
- 学员点击"我的学习报告"进入
报告内容:
| 模块 | 内容 |
|---|---|
| 基本信息 | 姓名、部门、入职时间、角色 |
| 学习概览 | 累计学习时长、完成培训数、参加考试数 |
| 培训记录 | 参加的培训计划列表,包含进度和状态 |
| 考试记录 | 参加的考试列表,包含成绩和是否通过 |
| 成绩趋势 | 近10次考试成绩折线图 |
| 能力雷达图 | 按知识分类的掌握程度(基于考试正确率) |
3.4.3 学习时长统计
统计规则:
- 知识学习:从打开到关闭/切换的时长(上限30分钟/次)
- 视频学习:实际播放时长
- 考试时长:从开始到交卷的时长
展示:
- 个人:日/周/月学习时长统计
- 部门:部门平均学习时长、学习时长分布
3.4.4 验收标准
Feature: 学员统计
Scenario: 查看学习排行榜
Given 我是讲师
When 我进入学员排行榜页面
Then 应显示本部门学员排行
And 不应显示其他部门学员
Scenario: 查看个人学习报告
Given 我是讲师
When 我点击某学员的姓名
Then 应进入该学员的学习报告页面
And 应显示该学员的培训记录
And 应显示该学员的考试记录
And 应显示成绩趋势图
Scenario: 学员查看自己的报告
Given 我是学员
When 我点击 "我的学习报告"
Then 应显示我的学习报告
And 应显示我在部门中的排名
3.5 数据导出
3.5.1 Excel 导出
支持导出的报表:
| 报表 | 内容 | 权限 |
|---|---|---|
| 培训完成率报表 | 按计划/部门的完成率明细 | 管理员、讲师 |
| 考试成绩报表 | 学员成绩明细 | 管理员、讲师 |
| 学员学习报表 | 学员学习时长和完成情况 | 管理员、讲师 |
| 题目分析报表 | 题目正确率明细 | 管理员、讲师 |
导出规则:
- 导出当前筛选条件下的数据
- 文件名格式:
报表类型_日期_导出人.xlsx - 单次导出上限:10000 条记录
3.5.2 验收标准
Feature: 数据导出
Scenario: 导出考试成绩报表
Given 我在考试统计页面
And 当前筛选条件为 "2026年1月"
When 我点击导出按钮
Then 应下载 Excel 文件
And 文件名应为 "考试成绩报表_20260204_张三.xlsx"
And 数据应仅包含2026年1月的考试成绩
Scenario: 导出数据量限制
Given 当前筛选条件下有 15000 条记录
When 我点击导出按钮
Then 应提示 "数据量超过限制,请缩小筛选范围"
四、数据模型(建议)
4.1 新增统计表(可选,用于性能优化)
日统计汇总表 (stat_daily_summary)
| 字段 | 类型 | 说明 |
|---|---|---|
| id | Long | 主键 |
| stat_date | Date | 统计日期 |
| department_id | Long | 部门ID(0=全平台) |
| total_users | Integer | 学员总数 |
| active_users | Integer | 活跃学员数 |
| training_complete_count | Integer | 培训完成人次 |
| exam_pass_count | Integer | 考试通过人次 |
| exam_total_count | Integer | 考试参与人次 |
| total_learning_minutes | Long | 总学习时长(分钟) |
学习时长记录表 (stat_learning_log)
| 字段 | 类型 | 说明 |
|---|---|---|
| id | Long | 主键 |
| user_id | Long | 用户ID |
| knowledge_id | Long | 知识ID |
| start_time | DateTime | 开始时间 |
| end_time | DateTime | 结束时间 |
| duration_seconds | Integer | 学习时长(秒) |
| create_time | DateTime | 创建时间 |
五、页面原型
5.1 管理员数据看板
┌────────────────────────────────────────────────────────────────────────────┐
│ 统计报表中心 │
├────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐ │
│ │ 总学员数 │ │ 培训完成率 │ │ 考试通过率 │ │ 活跃学员数 │ │
│ │ 486 │ │ 82% │ │ 78% │ │ 312 │ │
│ │ +12 ↑ │ │ +5% ↑ │ │ -2% ↓ │ │ +28 ↑ │ │
│ └────────────┘ └────────────┘ └────────────┘ └────────────┘ │
│ │
│ ┌─────────────────────────────────┐ ┌─────────────────────────────────┐ │
│ │ 培训完成率趋势 │ │ 部门培训完成率排名 │ │
│ │ │ │ │ │
│ │ 100%│ │ │ 救援一部 ████████████ 92% │ │
│ │ 80%│ ╭──╮ ╭──╮ │ │ 救援三部 ██████████ 85% │ │
│ │ 60%│╭──╯ ╰──╮╭╯ ╰── │ │ 救援二部 █████████ 80% │ │
│ │ 40%│ ╰ │ │ 救援四部 ███████ 72% │ │
│ │ └───────────────── │ │ 综合部 ██████ 65% │ │
│ │ 9 10 11 12 1 2 │ │ │ │
│ └─────────────────────────────────┘ └─────────────────────────────────┘ │
│ │
│ [查看培训详情] [查看考试详情] [导出月度报表] │
│ │
└────────────────────────────────────────────────────────────────────────────┘
5.2 考试统计页面
┌────────────────────────────────────────────────────────────────────────────┐
│ 统计报表中心 > 考试统计 │
├────────────────────────────────────────────────────────────────────────────┤
│ │
│ 时间范围: [本月 ▼] 部门: [全部 ▼] 考试: [全部 ▼] [查询] [导出] │
│ │
│ ┌─────────────────────────────────┐ ┌─────────────────────────────────┐ │
│ │ 成绩分布 │ │ 汇总指标 │ │
│ │ │ │ │ │
│ │ ┌───┐ │ │ 参考人数: 320 │ │
│ │ │ │ ┌───┐ │ │ 通过人数: 256 │ │
│ │ ┌───┐│ │ │ │ ┌───┐ │ │ 通过率: 80% │ │
│ │ │ ││ │ │ │ │ │ ┌───┐ │ │ 平均分: 76.5 │ │
│ │ │ ││ │ │ │ │ │ │ │ │ │ 最高分: 100 │ │
│ │ └───┘└───┘ └───┘ └───┘ └───┘ │ │ 最低分: 32 │ │
│ │ 0-59 60-69 70-79 80-89 90-100 │ │ │ │
│ └─────────────────────────────────┘ └─────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────────────────────┐ │
│ │ 考试名称 参考人数 通过率 平均分 最高分 操作 │ │
│ ├──────────────────────────────────────────────────────────────────────┤ │
│ │ 安全规范考核 120 85% 78.5 98 [详情][分析] │ │
│ │ 月度技能测试 95 72% 71.2 100 [详情][分析] │ │
│ │ 新员工入职考试 45 91% 82.3 96 [详情][分析] │ │
│ └──────────────────────────────────────────────────────────────────────┘ │
│ │
│ < 1 2 3 > │
└────────────────────────────────────────────────────────────────────────────┘
六、非功能需求
| 类型 | 要求 |
|---|---|
| 性能 | 看板页面加载时间 < 2秒 |
| 性能 | 报表查询响应时间 < 3秒(万级数据) |
| 兼容性 | 支持 Chrome、Edge、Firefox 最新版本 |
| 数据安全 | 严格按角色和部门隔离数据 |
| 导出 | Excel 导出支持 .xlsx 格式 |
七、不做什么(Out of Scope)
| 排除项 | 原因 |
|---|---|
| 实时数据监控 | V2 不需要实时性,T+1 统计即可 |
| 自定义报表设计器 | 复杂度高,用户需求不明确 |
| 数据预测/AI分析 | 数据量不足,价值有限 |
| 打印报表 | 使用 Excel 导出替代 |
八、里程碑建议
| 阶段 | 内容 | 建议周期 |
|---|---|---|
| M1 | 数据看板(管理员+讲师+学员) | - |
| M2 | 培训统计 + 考试统计 | - |
| M3 | 学员统计 + 数据导出 | - |
| M4 | 测试 + 优化 | - |
九、开放问题
| 问题 | 待确认 |
|---|---|
| 学习时长统计是否需要精确到秒级? | 建议分钟级即可 |
| 是否需要支持定时自动发送报表邮件? | 建议 V3 考虑 |
| 能力雷达图的维度如何定义? | 建议按知识分类一级目录 |
文档状态:待评审