Files
forsetsystem/docs/1.md
shenjianZ a39d8b2fd2 feat: 初始化员工缺勤分析系统项目
搭建完整的前后端分离架构,实现数据概览、预测分析、聚类分析等核心功能模块

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

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

6.9 KiB
Raw Blame History

这是一个典型的前后端分离架构的毕设项目结构。为了契合你的题目《基于多维特征挖掘的员工缺勤分析与预测系统设计与实现》,我们将项目分为 BackendPython 后端,负责算法与逻辑)和 FrontendVue 前端,负责展示与交互)。 以下是详细的工程目录结构及说明:

📁 项目根目录Absenteeism_Analysis_System/

Absenteeism_Analysis_System/
│
├── backend/               # 后端项目目录 (Python/Flask)
│   ├── app.py             # 程序入口文件 (启动服务)
│   ├── config.py          # 配置文件 (路径、密钥等)
│   ├── requirements.txt   # Python依赖库清单 (pandas, scikit-learn, flask等)
│   │
│   ├── data/              # 数据存储目录
│   │   ├── raw/           # 原始数据集
│   │   │   └── Absenteeism_at_work.csv  # 从UCI下载的原始数据
│   │   └── processed/     # 处理后的数据集
│   │       └── clean_data.csv           # 经过清洗、编码后的数据
│   │
│   ├── models/            # 模型存储目录
│   │   ├── rf_model.pkl   # 训练好的随机森林模型文件
│   │   ├── xgb_model.pkl  # 训练好的XGBoost模型文件
│   │   └── kmeans_model.pkl # 聚类模型文件
│   │
│   ├── core/              # 核心算法模块 (对应论文的“多维特征挖掘”)
│   │   ├── __init__.py
│   │   ├── preprocessing.py  # 数据预处理:缺失值填充、独热编码、归一化
│   │   ├── feature_mining.py # 特征挖掘:相关性分析、特征重要性计算
│   │   ├── train_model.py    # 模型训练脚本训练RF/XGBoost并保存模型
│   │   └── clustering.py     # 聚类分析K-Means算法实现
│   │
│   ├── services/          # 业务逻辑层
│   │   ├── __init__.py
│   │   ├── analysis_service.py  # 分析服务:调用特征挖掘模块,返回图表数据
│   │   ├── predict_service.py   # 预测服务:加载模型,进行推理
│   │   └── data_service.py      # 数据服务读取CSV提供基础统计
│   │
│   ├── api/               # API接口层 (路由)
│   │   ├── __init__.py
│   │   ├── analysis_routes.py  # 接口:获取特征重要性、相关性等
│   │   ├── predict_routes.py   # 接口:接收前端表单,返回预测结果
│   │   └── cluster_routes.py   # 接口:返回聚类结果/员工画像
│   │
│   └── utils/             # 工具函数
│       └── common.py      # 通用工具JSON封装、CORS处理等
│
├── frontend/              # 前端项目目录
│   ├── public/            # 静态资源
│   ├── src/
│   │   ├── assets/        # 资源文件 (图片、样式)
│   │   ├── components/    # 公共组件
│   │   │   ├── ChartComponent.vue  # ECharts图表封装组件
│   │   │   └── ResultCard.vue      # 预测结果展示卡片
│   │   │
│   │   ├── views/         # 页面视图 (对应你的前端设计)
│   │   │   ├── Dashboard.vue       # 页面一:数据概览与统计
│   │   │   ├── FactorAnalysis.vue  # 页面二:影响因素分析 (核心)
│   │   │   ├── Prediction.vue      # 页面三:缺勤预测 (输入表单+结果)
│   │   │   └── Clustering.vue      # 页面四:员工画像与聚类
│   │   │
│   │   ├── router/        # 路由配置
│   │   │   └── index.js
│   │   ├── api/           # 前端API调用封装
│   │   │   └── request.js # 配置axios连接后端接口
│   │   ├── App.vue        # 根组件
│   │   └── main.js        # 入口文件
│   │
│   ├── package.json       # 前端依赖 (vue, element-plus, echarts)
│   └── vite.config.js     # Vue构建配置 (如果用Vite) 或 vue.config.js
│
└── README.md              # 项目说明文档

🔧 核心模块功能详解(对应论文)

1. 后端 core/ 模块详解

这是你论文中“算法设计”部分的代码落地:

  • preprocessing.py:
    • 实现 OneHotEncoder 处理 Reason for absence 等类别。
    • 实现 StandardScaler 处理 Transportation expense 等数值。
    • 实现 get_clean_data() 函数,供其他模块调用。
  • feature_mining.py:
    • 实现 calculate_correlation(): 使用 Pandas 计算相关系数矩阵。
    • 实现 get_feature_importance(): 加载随机森林模型,提取 feature_importances_
  • train_model.py:
    • 包含 train_rf()train_xgboost() 函数。
    • 负责划分训练集/测试集,计算 MSE/R2并保存 .pkl 文件。
  • clustering.py:
    • 包含 kmeans_analysis() 函数。
    • 对员工进行分类,并返回每个簇的中心点数据(用于画雷达图)。

2. 后端 api/ 模块详解

这是前后端交互的桥梁:

  • analysis_routes.py:
    • 路由: /api/analysis/importance
    • 作用: 调用 feature_mining.py,返回格式化后的 JSON (例如 {'feature': 'Distance', 'score': 0.45}) 供前端画柱状图。
  • predict_routes.py:
    • 路由: /api/predict/single
    • 作用: 接收前端 POST 过来的 JSON (表单数据),调用 predict_service.py 加载模型,返回预测的小时数。

3. 前端 views/ 模块详解

这是你论文中“系统实现”部分的展示:

  • FactorAnalysis.vue:
    • 引入 ECharts
    • mounted() 生命周期里调用 /api/analysis/importance
    • 渲染:横向柱状图(特征重要性)、热力图(相关性矩阵)。
  • Prediction.vue:
    • 左侧:el-form 表单,字段包含 age, distance, drink 等。
    • 右侧:el-card,初始状态为空,点击“开始预测”后,显示返回的 hours 和风险等级(红/黄/绿标签)。

💡 为什么要这样设计?

  1. 分层清晰MVC模式core 专心算算法,services 处理业务,api 管接口。这在答辩时非常有优势,老师会觉得你代码结构规范,软件工程素养好。
  2. 算法模块化:你没有把算法代码直接写在接口文件里,而是单独封装了 core 目录。这意味着如果以后你想换算法(比如不用随机森林改用神经网络),只需要改 core 里的代码,不需要动接口,这叫**“高内聚低耦合”**。
  3. 数据隔离:原始数据 (raw) 和 清洗数据 (processed) 分开,训练好的模型单独放在 models,这样项目管理非常干净,不会一团乱麻。 按照这个结构去写代码和画图(系统架构图、时序图),你的论文逻辑会非常顺畅!