feat: 初始化员工缺勤分析系统项目

搭建完整的前后端分离架构,实现数据概览、预测分析、聚类分析等核心功能模块

  详细版:
  feat: 初始化员工缺勤分析系统项目

  - 后端:基于 Flask 搭建 RESTful API,包含数据概览、特征分析、预测模型、聚类分析四大模块
  - 前端:基于 Vue.js 构建单页应用,实现 Dashboard、预测、聚类、因子分析等页面
  - 模型:集成随机森林、XGBoost、LightGBM、Stacking 等多种机器学习模型
  - 文档:完成需求规格说明、系统架构设计、接口设计、数据设计、UI原型设计等文档
This commit is contained in:
2026-03-08 14:48:26 +08:00
commit a39d8b2fd2
48 changed files with 9546 additions and 0 deletions

83
docs/0.md Normal file
View File

@@ -0,0 +1,83 @@
既然你的题目是**《基于多维特征挖掘的员工缺勤影响因素分析与预测研究》**,你的前端就不应该是一个“考勤录入系统”(比如点击“打卡”按钮),而应该是一个**“数据分析与可视化大屏”**。
你的前端核心任务是:**把算法跑出来的结果,用图表漂亮地展示出来,并提供一个交互式的“预测窗口”。**
以下是为你规划的**前端功能模块4-5个页面**,每个页面都直接对应你的题目和算法:
---
### 页面一:数据概览与全局统计
**目的:** 让人一眼看懂数据集的整体情况。
* **关键指标卡片KPI**
* 总样本数例如740
* 平均缺勤时长
* 高风险员工占比
* 最常见的缺勤原因(例如:牙科咨询)
* **可视化图表:**
* **缺勤原因分布饼图:** 展示各种 ICD 疾病代码(或医疗咨询、献血等)的比例。
* **每月缺勤趋势折线图:** 横轴是1-12月纵轴是缺勤总时长看看哪个月大家最爱请假是不是夏天
* **星期几缺勤热力图:** 周一到周五,哪天颜色最深(缺勤最多)。
---
### 页面二:影响因素分析 —— **对应题目的“影响因素分析”**
**目的:** 展示你的核心算法成果(特征重要性、相关性),回答“为什么缺勤”。
* **核心图表 1特征重要性排序条形图**
* **内容:** 横轴是特征距离、BMI、饮酒、工龄...),纵轴是重要性得分。
* **设计:** 降序排列,最高的那个(比如 Reason for absence 或 Service time在最上面或最左边。
* **交互:** 鼠标悬停显示具体分数。
* **核心图表 2相关性热力图**
* **内容:** 展示各个字段之间的相关系数矩阵。
* **亮点:** 高亮显示“饮酒”与“缺勤时长”的交点,或者“通勤距离”与“缺勤时长”的交点,颜色越深代表关联越强。
* **群体对比分析:**
* **柱状图:** 饮酒者 vs 不饮酒者的平均缺勤时长对比。
* **柱状图:** 高学历 vs 低学历的缺勤时长对比。
---
### 页面三:缺勤预测模型 —— **对应题目的“预测研究”**
**目的:** 提供一个交互窗口,演示你的 XGBoost/随机森林模型是如何工作的。
* **左侧:参数输入表单**
* 设计一个表单,列出数据集中的关键字段(供用户填写):
* *ID*:随意填(如 36
* *Reason for absence*下拉菜单1-28 或 归类后的“疾病/个人事务”)
* *Month*下拉菜单1-12
* *Day of week*:下拉菜单(周一-周五)
* *Transportation expense*滑动条或输入框例如200
* *Distance from Residence to Work*输入框例如15
* *Service time*输入框例如10年
* *Age*输入框例如35
* *Work load Average/day*输入框例如250000
* *Hit target*输入框例如90%
* *Disciplinary failure*:单选框(是/否)
* *Education*:下拉菜单(高中/本科/硕士...
* *Son*数字输入0, 1, 2...
* *Social drinker*:单选框(是/否)
* *Social smoker*:单选框(是/否)
* *Pet*:数字输入
* *Body mass index*输入框例如25
* **底部按钮:** **“开始预测”**
* **右侧:预测结果展示**
* **结果数字:** 预测的缺勤时长(例如:预测结果 8 小时)。
* **风险等级:**
* < 4小时绿色标签低风险
* 4-8小时黄色标签中风险
* > 8小时红色标签高风险警钟图标
* **模型可信度:** 显示当前模型的准确率例如85% Accuracy
---
### 页面四:员工画像与聚类 —— **对应“多维特征挖掘”的进阶**
**目的:** 展示 K-Means 聚类算法挖掘出的群体特征。
* **雷达图:**
* 画 3-4 个多边形,代表 3-4 类员工(如:模范型、压力型、生活习惯型)。
* 轴向维度:[年龄, 工龄, 负荷, BMI, 缺勤倾向]。
* 让人一眼看出不同群体的差异(例如:压力型的“负荷”轴特别长)。
* **散点图:**
* 横轴:年龄,纵轴:缺勤时长。点按聚类结果着色(红点、蓝点、绿点)。
---
### 推荐技术栈(实现难度低,效果好)
为了在短时间内做出漂亮的图表,推荐以下组合:
1. **前端框架:** **Vue.js** (Vue 3) 或 **React**。推荐 Vue国内毕设用得极多文档好查。
2. **UI 组件库:** **Element Plus** (配合 Vue) 或 **Ant Design**
* 这里面的表单组件、卡片、按钮可以直接拖过来用,不用自己写 CSS。
3. **图表库:** **ECharts** (百度开源的)。
* **必杀技:** 它的柱状图、饼图、雷达图、热力图效果非常炫酷,支持动画,非常适合答辩演示。
4. **后端接口:** Python **Flask****FastAPI**
* 写几个简单的 API 接口(`/api/predict`, `/api/feature_importance`),前端调这些接口拿数据。
### 答辩时的演示脚本
1. **打开页面一:** “大家请看,这是 700 多条数据的概览,我们发现周五的缺勤率最高...”
2. **打开页面二:** “通过随机森林算法,我们计算了各因素的影响权重,发现‘通勤距离’和‘工作负荷’是导致缺勤的两大主因...”
3. **打开页面三:** “为了验证模型实用性,我构建了这个预测模块。假设我们有一个 35 岁、住得很远、爱喝酒的员工,系统预测他可能会缺勤 8 小时,属于高风险...”
4. **打开页面四:** “最后通过聚类分析我们将员工分为了三类红色群体是高压高负荷群体建议HR重点关注...”
这样一套下来,你的前端不仅漂亮,而且逻辑紧扣题目,绝对是加分项!