feat: 将数据集从国外员工缺勤数据替换为中国企业缺勤模拟数据

- 新增中国企业员工缺勤模拟数据集生成脚本(generate_dataset.py),覆盖7个行业、180家企业、2600名员工
  - 重构 config.py,更新特征字段为中文名称,调整目标列、员工ID、行业类型等配置
  - 重构 clustering.py,简化聚类逻辑,更新聚类特征和群体命名(高压通勤型、健康波动型等)
  - 重构 feature_mining.py,更新相关性分析和群体比较维度(按行业、班次、婚姻状态等)
  - 新增 model_features.py 定义模型训练特征
  - 更新 preprocessing.py 和 train_model.py 适配新数据结构
  - 更新各 API 路由默认参数(model: random_forest, dimension: industry)
  - 前端更新主题样式和各视图组件适配中文字段
  - 更新系统名称为 China Enterprise Absence Analysis System
This commit is contained in:
2026-03-11 10:46:58 +08:00
parent a39d8b2fd2
commit e63267cef6
39 changed files with 15731 additions and 5648 deletions

View File

@@ -1,613 +1,135 @@
# 系统架构设计文档
# 系统架构设计
## 基于多维特征挖掘的员工缺勤分析与预测系统
## 1. 总体架构
**文档版本**V1.0
**编写日期**2026年3月
**编写人**:张硕
系统采用前后端分离架构:
---
- 前端Vue 3 + Vue Router + Element Plus + ECharts
- 后端Flask + Pandas + Scikit-learn + Joblib
- 数据层CSV 数据文件 + 模型文件
## 1. 概述
整体架构分为四层:
### 1.1 设计目标
1. 表现层:负责页面展示、表单交互和图表可视化
2. 接口层:负责 HTTP 路由转发与请求响应
3. 业务层:负责数据统计、特征分析、预测和聚类逻辑
4. 数据与模型层:负责原始数据、清洗数据、模型文件和训练元数据
本系统架构设计旨在实现以下目标:
## 2. 前端架构设计
1. **高可用性**:系统稳定可靠,能够持续提供服务
2. **可扩展性**:便于后续功能扩展和算法升级
3. **可维护性**:代码结构清晰,便于理解和维护
4. **高性能**:快速响应前端请求,提供流畅的用户体验
### 2.1 模块划分
### 1.2 设计原则
- `Dashboard.vue`:数据概览页
- `FactorAnalysis.vue`:影响因素分析页
- `Prediction.vue`:缺勤预测页
- `Clustering.vue`:员工画像页
| 原则 | 说明 |
|------|------|
| 分层设计 | 前后端分离,后端采用三层架构 |
| 模块化 | 功能模块独立,高内聚低耦合 |
| 单一职责 | 每个模块只负责一个特定功能 |
| 开闭原则 | 对扩展开放,对修改关闭 |
| 接口隔离 | 接口设计精简,避免冗余 |
### 2.2 核心职责
---
## 2. 系统架构
### 2.1 整体架构图
```
┌─────────────────────────────────────────────────────────────────────┐
│ 用户层 (User Layer) │
│ 浏览器 (Chrome/Firefox/Edge) │
└─────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────┐
│ 前端层 (Frontend Layer) │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Dashboard │ │ FactorAnalysis│ │ Prediction │ │ Clustering │ │
│ │ 数据概览 │ │ 影响因素 │ │ 缺勤预测 │ │ 员工画像 │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ 公共组件 (ChartComponent, ResultCard) │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ Vue 3 + Element Plus + ECharts + Axios + Vue Router │ │
│ └─────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
│ HTTP/REST API
┌─────────────────────────────────────────────────────────────────────┐
│ 后端层 (Backend Layer) │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ API Layer (api/) │ │
│ │ overview_routes │ analysis_routes │ predict_routes │ │
│ │ cluster_routes │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ Service Layer (services/) │ │
│ │ data_service │ analysis_service │ predict_service │ │
│ │ cluster_service │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ Core Layer (core/) │ │
│ │ preprocessing │ feature_mining │ train_model │ │
│ │ clustering │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ Flask + scikit-learn + XGBoost + pandas │ │
│ └─────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────┐
│ 数据层 (Data Layer) │
│ ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐ │
│ │ data/raw/ │ │ data/processed/ │ │ models/ │ │
│ │ 原始CSV数据 │ │ 处理后数据 │ │ 模型文件.pkl │ │
│ └──────────────────┘ └──────────────────┘ └──────────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
```
### 2.2 技术架构
```
┌────────────────────────────────────────────────────────────────┐
│ 技术栈总览 │
├────────────────────────────────────────────────────────────────┤
│ │
│ 前端技术栈 后端技术栈 │
│ ┌──────────────────┐ ┌──────────────────┐ │
│ │ Vue 3 │ │ Python 3.8+ │ │
│ │ Element Plus │ │ Flask │ │
│ │ ECharts 5 │ ◄─────► │ scikit-learn │ │
│ │ Axios │ HTTP │ XGBoost │ │
│ │ Vue Router │ REST │ pandas │ │
│ │ Vite │ │ numpy │ │
│ └──────────────────┘ │ joblib │ │
│ └──────────────────┘ │
│ │
│ 算法技术 数据存储 │
│ ┌──────────────────┐ ┌──────────────────┐ │
│ │ 随机森林 (RF) │ │ CSV文件 │ │
│ │ XGBoost │ │ PKL模型文件 │ │
│ │ K-Means │ │ JSON响应 │ │
│ │ StandardScaler │ │ │ │
│ │ OneHotEncoder │ │ │ │
│ └──────────────────┘ └──────────────────┘ │
│ │
└────────────────────────────────────────────────────────────────┘
```
### 2.3 部署架构
```
┌─────────────────────────────────────────────────────────────────┐
│ 单机部署架构 │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 服务器 │ │
│ │ │ │
│ │ ┌─────────────────┐ ┌─────────────────┐ │ │
│ │ │ Flask Server │ │ Vite Dev │ │ │
│ │ │ Port: 5000 │ │ Port: 5173 │ │ │
│ │ │ │ │ │ │ │
│ │ │ - REST API │ │ - Vue App │ │ │
│ │ │ - ML Models │ │ - Static │ │ │
│ │ │ - Data Files │ │ │ │ │
│ │ └─────────────────┘ └─────────────────┘ │ │
│ │ │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ 文件系统 │ │ │
│ │ │ /backend/data/ - 数据文件 │ │ │
│ │ │ /backend/models/ - 模型文件 │ │ │
│ │ │ /frontend/dist/ - 前端构建产物 │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
```
---
- 页面布局与导航
- 图表渲染
- 表单输入与结果展示
- 接口调用与状态管理
## 3. 后端架构设计
### 3.1 分层设计
### 3.1 路由层
后端采用经典的三层架构,各层职责明确:
- `overview_routes.py`
- `analysis_routes.py`
- `predict_routes.py`
- `cluster_routes.py`
| 层级 | 目录 | 职责 | 依赖关系 |
|------|------|------|----------|
| API层 | api/ | 接收HTTP请求参数校验调用服务层返回响应 | 依赖Service层 |
| Service层 | services/ | 业务逻辑处理协调Core层和Data层 | 依赖Core层 |
| Core层 | core/ | 核心算法实现,数据处理,模型训练 | 无依赖 |
### 3.2 服务层
### 3.2 模块划分
- `data_service.py`:负责概览统计
- `analysis_service.py`:负责特征重要性与群体对比
- `predict_service.py`:负责模型加载与预测输出
- `cluster_service.py`:负责聚类结果组织
```
### 3.3 核心算法层
- `generate_dataset.py`:生成企业缺勤事件数据集
- `preprocessing.py`:数据清洗与预处理
- `model_features.py`:特征构建与预测输入映射
- `train_model.py`:模型训练与评估
- `feature_mining.py`:相关性分析与群体对比
- `clustering.py`K-Means 聚类分析
## 4. 数据流设计
### 4.1 训练流程
1. 生成企业缺勤事件数据集
2. 加载并清洗数据
3. 构建衍生特征
4. 进行标签编码和特征筛选
5. 训练多种模型并评估性能
6. 保存模型、特征信息和训练元数据
### 4.2 预测流程
1. 前端输入核心预测字段
2. 后端构建完整预测样本
3. 自动补齐默认字段
4. 执行特征工程和编码
5. 加载模型进行预测
6. 返回缺勤时长、风险等级、模型名称和置信度
### 4.3 分析流程
1. 读取清洗后的数据
2. 计算统计指标或相关关系
3. 组织成前端图表所需结构
4. 返回 JSON 数据供前端展示
## 5. 文件组织结构
```text
backend/
├── app.py # 应用入口Flask实例配置
├── config.py # 配置文件(路径、参数等)
├── requirements.txt # Python依赖清单
├── api/ # API接口层
├── __init__.py
│ ├── overview_routes.py # 数据概览接口
│ ├── analysis_routes.py # 影响因素分析接口
│ ├── predict_routes.py # 预测接口
└── cluster_routes.py # 聚类接口
├── services/ # 业务逻辑层
├── __init__.py
├── data_service.py # 数据服务
├── analysis_service.py # 分析服务
│ ├── predict_service.py # 预测服务
│ └── cluster_service.py # 聚类服务
├── core/ # 核心算法层
│ ├── __init__.py
│ ├── preprocessing.py # 数据预处理
│ ├── feature_mining.py # 特征挖掘
│ ├── train_model.py # 模型训练
│ └── clustering.py # 聚类分析
├── data/ # 数据存储
│ ├── raw/ # 原始数据
│ │ └── Absenteeism_at_work.csv
│ └── processed/ # 处理后数据
│ └── clean_data.csv
├── models/ # 模型存储
│ ├── rf_model.pkl # 随机森林模型
│ ├── xgb_model.pkl # XGBoost模型
│ ├── kmeans_model.pkl # K-Means模型
│ ├── scaler.pkl # 标准化器
│ └── encoder.pkl # 编码器
└── utils/ # 工具函数
├── __init__.py
└── common.py # 通用工具函数
api/
core/
data/
models/
services/
app.py
frontend/
src/
api/
router/
styles/
views/
App.vue
main.js
```
### 3.3 各模块职责详解
## 6. 技术选型说明
#### 3.3.1 API层 (api/)
### 6.1 Flask
| 文件 | 职责 | 主要接口 |
|------|------|----------|
| overview_routes.py | 数据概览相关接口 | /api/overview/stats, /api/overview/trend |
| analysis_routes.py | 影响因素分析接口 | /api/analysis/importance, /api/analysis/correlation |
| predict_routes.py | 缺勤预测接口 | /api/predict/single, /api/predict/model-info |
| cluster_routes.py | 聚类分析接口 | /api/cluster/result, /api/cluster/profile |
- 轻量,适合本科毕设项目
- 路由层清晰,便于拆分接口
#### 3.3.2 Service层 (services/)
### 6.2 Vue 3
| 文件 | 职责 | 核心方法 |
|------|------|----------|
| data_service.py | 数据读取与基础统计 | get_raw_data(), get_statistics() |
| analysis_service.py | 特征分析业务逻辑 | get_importance(), get_correlation() |
| predict_service.py | 预测业务逻辑 | predict_single(), load_model() |
| cluster_service.py | 聚类业务逻辑 | get_clusters(), get_profile() |
- 组件化开发效率较高
- 与 Element Plus、ECharts 配合较好
#### 3.3.3 Core层 (core/)
### 6.3 Scikit-learn
| 文件 | 职责 | 核心类/方法 |
|------|------|-------------|
| preprocessing.py | 数据预处理 | DataPreprocessor类 |
| feature_mining.py | 特征挖掘 | calculate_importance(), calculate_correlation() |
| train_model.py | 模型训练 | train_rf(), train_xgboost() |
| clustering.py | 聚类分析 | KMeansAnalyzer类 |
- 适合传统机器学习建模
- 提供随机森林、GBDT、Extra Trees 等成熟算法
---
## 7. 部署方式
## 4. 前端架构设计
- 本地前端开发服务器Vite
- 本地后端服务Flask 开发服务器
- 模型文件与数据文件均存储在本地项目目录中
### 4.1 组件化设计
## 8. 架构特点
```
frontend/src/
├── components/ # 公共组件
│ ├── ChartComponent.vue # ECharts图表封装组件
│ ├── ResultCard.vue # 预测结果展示卡片
│ ├── KPICard.vue # KPI指标卡片
│ └── LoadingSpinner.vue # 加载动画组件
├── views/ # 页面组件
│ ├── Dashboard.vue # 数据概览页
│ ├── FactorAnalysis.vue # 影响因素分析页
│ ├── Prediction.vue # 缺勤预测页
│ └── Clustering.vue # 员工画像页
├── api/ # API调用
│ ├── request.js # Axios封装
│ ├── overview.js # 概览API
│ ├── analysis.js # 分析API
│ ├── predict.js # 预测API
│ └── cluster.js # 聚类API
├── router/ # 路由配置
│ └── index.js
├── assets/ # 静态资源
│ └── styles/
│ └── main.css
├── App.vue # 根组件
└── main.js # 入口文件
```
### 4.2 状态管理
由于本项目状态较为简单不引入Vuex/Pinia使用以下方式管理状态
- **组件内部状态**使用Vue 3的ref/reactive
- **跨组件通信**使用props和emit
- **API状态**在API层统一管理
### 4.3 路由设计
```javascript
const routes = [
{
path: '/',
redirect: '/dashboard'
},
{
path: '/dashboard',
name: 'Dashboard',
component: () => import('@/views/Dashboard.vue'),
meta: { title: '数据概览' }
},
{
path: '/analysis',
name: 'FactorAnalysis',
component: () => import('@/views/FactorAnalysis.vue'),
meta: { title: '影响因素分析' }
},
{
path: '/prediction',
name: 'Prediction',
component: () => import('@/views/Prediction.vue'),
meta: { title: '缺勤预测' }
},
{
path: '/clustering',
name: 'Clustering',
component: () => import('@/views/Clustering.vue'),
meta: { title: '员工画像' }
}
]
```
---
## 5. 算法架构设计
### 5.1 数据预处理流程
```
┌─────────────────────────────────────────────────────────────────┐
│ 数据预处理流程 │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ 原始CSV数据 │───►│ 数据清洗 │───►│ 特征分离 │ │
│ │ │ │ (缺失值处理) │ │ │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ 处理后数据 │◄───│ 特征合并 │◄───│ 特征编码 │ │
│ │ clean_data │ │ │ │ + 标准化 │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │
│ 特征处理方式: │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ 类别型特征 → OneHotEncoder │ │
│ │ - Reason for absence │ │
│ │ - Month, Day, Seasons │ │
│ │ - Education, Disciplinary failure │ │
│ │ - Social drinker, Social smoker │ │
│ ├────────────────────────────────────────────────────────┤ │
│ │ 数值型特征 → StandardScaler │ │
│ │ - Transportation expense │ │
│ │ - Distance, Service time, Age │ │
│ │ - Work load, Hit target │ │
│ │ - Son, Pet, BMI │ │
│ └────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
```
### 5.2 特征挖掘流程
```
┌─────────────────────────────────────────────────────────────────┐
│ 特征挖掘流程 │
│ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ 特征重要性计算 │ │
│ │ │ │
│ │ 训练数据 ──► 随机森林模型 ──► feature_importances_ │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ 特征重要性排序结果 │ │
│ │ │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ 相关性分析 │ │
│ │ │ │
│ │ 数据矩阵 ──► pandas.DataFrame.corr() ──► 相关系数矩阵 │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ 热力图数据 │ │
│ │ │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
```
### 5.3 预测模型流程
```
┌─────────────────────────────────────────────────────────────────┐
│ 预测模型流程 │
│ │
│ 训练阶段: │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ 处理后数据 │───►│ 划分数据集 │───►│ 模型训练 │ │
│ │ │ │ Train/Test │ │ RF + XGBoost │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────┐ │
│ │ 模型评估 │ │
│ │ - R² (决定系数) │ │
│ │ - MSE (均方误差) │ │
│ │ - RMSE (均方根误差) │ │
│ └──────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────┐ │
│ │ 保存模型 (.pkl文件) │ │
│ └──────────────────────────────────┘ │
│ │
│ 预测阶段: │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ 用户输入 │───►│ 特征预处理 │───►│ 加载模型 │ │
│ │ (表单数据) │ │ (编码+标准化)│ │ 预测推理 │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────┐ │
│ │ 返回预测结果 │ │
│ │ - 预测时长 │ │
│ │ - 风险等级 │ │
│ │ - 置信度 │ │
│ └──────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
```
### 5.4 聚类分析流程
```
┌─────────────────────────────────────────────────────────────────┐
│ 聚类分析流程 │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ 处理后数据 │───►│ 特征选择 │───►│ K-Means │ │
│ │ │ │ (关键维度) │ │ 聚类 │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ 聚类结果 │ │
│ │ │ │
│ │ ┌─────────────────┐ ┌─────────────────┐ │ │
│ │ │ 聚类标签 │ │ 聚类中心 │ │ │
│ │ │ (每条记录所属簇) │ │ (每个簇的中心点) │ │ │
│ │ └─────────────────┘ └─────────────────┘ │ │
│ │ │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ 可视化输出 │ │
│ │ │ │
│ │ - 雷达图:展示各聚类群体的特征分布 │ │
│ │ - 散点图:展示员工在聚类空间的分布 │ │
│ │ - 统计表:各聚类的成员数量、特征均值 │ │
│ │ │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
```
---
## 6. 技术选型
### 6.1 后端技术栈
| 技术 | 版本 | 用途 | 选择理由 |
|------|------|------|----------|
| Python | 3.8+ | 开发语言 | 丰富的数据科学和机器学习库 |
| Flask | 2.x | Web框架 | 轻量级,易于上手,适合中小项目 |
| scikit-learn | 1.x | 机器学习 | 提供完整的机器学习工具链 |
| XGBoost | 1.x | 梯度提升 | 高性能,适合结构化数据预测 |
| pandas | 1.x | 数据处理 | 强大的数据分析和处理能力 |
| numpy | 1.x | 数值计算 | 高效的数组操作 |
| joblib | 1.x | 模型持久化 | 高效的模型序列化 |
### 6.2 前端技术栈
| 技术 | 版本 | 用途 | 选择理由 |
|------|------|------|----------|
| Vue | 3.x | 前端框架 | 组合式API性能优秀生态完善 |
| Element Plus | 2.x | UI组件库 | 组件丰富,文档完善,适合管理后台 |
| ECharts | 5.x | 图表库 | 功能强大,图表类型丰富,国内主流 |
| Axios | 1.x | HTTP客户端 | Promise支持拦截器功能完善 |
| Vue Router | 4.x | 路由管理 | Vue官方路由解决方案 |
| Vite | 4.x | 构建工具 | 开发体验好,构建速度快 |
### 6.3 算法选型
| 算法 | 用途 | 选择理由 |
|------|------|----------|
| 随机森林 | 特征重要性计算、预测 | 可解释性强,能输出特征重要性 |
| XGBoost | 预测模型 | 性能优异,适合回归任务 |
| K-Means | 员工聚类 | 简单高效,适合无监督聚类 |
| StandardScaler | 数值标准化 | 消除量纲影响,提高模型效果 |
| OneHotEncoder | 类别编码 | 处理类别型特征的标准方法 |
---
## 7. 附录
### 7.1 目录结构完整版
```
Absenteeism_Analysis_System/
├── backend/ # 后端项目
│ ├── app.py # 应用入口
│ ├── config.py # 配置文件
│ ├── requirements.txt # 依赖清单
│ │
│ ├── api/ # API接口层
│ │ ├── __init__.py
│ │ ├── overview_routes.py
│ │ ├── analysis_routes.py
│ │ ├── predict_routes.py
│ │ └── cluster_routes.py
│ │
│ ├── services/ # 业务逻辑层
│ │ ├── __init__.py
│ │ ├── data_service.py
│ │ ├── analysis_service.py
│ │ ├── predict_service.py
│ │ └── cluster_service.py
│ │
│ ├── core/ # 核心算法层
│ │ ├── __init__.py
│ │ ├── preprocessing.py
│ │ ├── feature_mining.py
│ │ ├── train_model.py
│ │ └── clustering.py
│ │
│ ├── data/ # 数据目录
│ │ ├── raw/
│ │ │ └── Absenteeism_at_work.csv
│ │ └── processed/
│ │ └── clean_data.csv
│ │
│ ├── models/ # 模型目录
│ │ ├── rf_model.pkl
│ │ ├── xgb_model.pkl
│ │ ├── kmeans_model.pkl
│ │ ├── scaler.pkl
│ │ └── encoder.pkl
│ │
│ └── utils/ # 工具函数
│ ├── __init__.py
│ └── common.py
├── frontend/ # 前端项目
│ ├── public/
│ ├── src/
│ │ ├── api/
│ │ │ ├── request.js
│ │ │ ├── overview.js
│ │ │ ├── analysis.js
│ │ │ ├── predict.js
│ │ │ └── cluster.js
│ │ ├── assets/
│ │ │ └── styles/
│ │ │ └── main.css
│ │ ├── components/
│ │ │ ├── ChartComponent.vue
│ │ │ ├── ResultCard.vue
│ │ │ ├── KPICard.vue
│ │ │ └── LoadingSpinner.vue
│ │ ├── router/
│ │ │ └── index.js
│ │ ├── views/
│ │ │ ├── Dashboard.vue
│ │ │ ├── FactorAnalysis.vue
│ │ │ ├── Prediction.vue
│ │ │ └── Clustering.vue
│ │ ├── App.vue
│ │ └── main.js
│ ├── index.html
│ ├── package.json
│ ├── pnpm-lock.yaml
│ └── vite.config.js
├── docs/ # 文档目录
│ ├── 00_需求规格说明书.md
│ ├── 01_系统架构设计.md
│ ├── 02_接口设计文档.md
│ ├── 03_数据设计文档.md
│ ├── 04_UI原型设计.md
│ └── ...
├── data/ # 原始数据(项目根目录)
│ └── Absenteeism_at_work.csv
└── README.md # 项目说明
```
### 7.2 文档修改历史
| 版本 | 日期 | 修改人 | 修改内容 |
|------|------|--------|----------|
| V1.0 | 2026-03 | 张硕 | 初始版本 |
---
**文档结束**
- 结构清晰,便于答辩说明
- 前后端职责明确
- 支持快速展示图表与预测效果
- 支持后续扩展为数据库或更复杂模型架构