# 系统架构设计

## 1. 总体架构

系统采用前后端分离架构：

- 前端：Vue 3 + Vue Router + Element Plus + ECharts
- 后端：Flask + Pandas + Scikit-learn + PyTorch + Joblib
- 数据层：CSV 数据文件 + 模型文件 + 训练元数据

整体架构分为四层：

1. 表现层：负责页面展示、表单交互和图表可视化
2. 接口层：负责 HTTP 路由转发与请求响应
3. 业务层：负责数据统计、特征分析、`JD-R` 解释、预测和聚类逻辑
4. 数据与模型层：负责原始数据、清洗数据、模型文件和训练元数据

## 2. 前端架构设计

### 2.1 模块划分

- `Dashboard.vue`：数据概览页
- `FactorAnalysis.vue`：影响因素分析页
- `JDRAnalysis.vue`：`JD-R` 理论分析页
- `Prediction.vue`：缺勤预测页
- `Clustering.vue`：员工画像页

### 2.2 核心职责

- 页面布局与导航
- 图表渲染
- 表单输入与结果展示
- 接口调用与状态管理
- 将 `JD-R` 理论指标、路径关系与 `SHAP` 结果可视化

## 3. 后端架构设计

### 3.1 路由层

- `overview_routes.py`
- `analysis_routes.py`
- `predict_routes.py`
- `cluster_routes.py`
- `jdr_routes.py`
- `shap_routes.py`

### 3.2 服务层

- `data_service.py`：负责概览统计
- `analysis_service.py`：负责特征重要性与群体对比
- `predict_service.py`：负责模型加载、预测输出与风险分类
- `cluster_service.py`：负责聚类结果组织
- `jdr_service.py`：负责 `JD-R` 理论指标、路径和画像分析
- `shap_service.py`：负责全局/局部可解释分析结果封装

### 3.3 核心算法层

- `generate_dataset.py`：生成中国企业缺勤事件数据集并补充 `JD-R` 基础维度
- `preprocessing.py`：数据清洗与预处理
- `model_features.py`：特征构建、`JD-R` 复合指标计算与预测输入映射
- `train_model.py`：传统模型训练与评估
- `deep_learning_model.py`：时序注意力融合深度学习模型训练与推理
- `feature_mining.py`：相关性分析与群体对比
- `clustering.py`：`K-Means` 聚类分析
- `shap_analysis.py`：基于 `SHAP` 的全局、局部与交互解释分析

## 4. 数据流设计

### 4.1 训练流程

1. 生成中国企业缺勤事件数据集
2. 加载并清洗数据
3. 补充 `JD-R` 理论基础维度
4. 构建衍生特征与 `JD-R` 复合指标
5. 进行编码、特征筛选与模型训练
6. 保存模型、特征信息和训练元数据

其中深度学习路径采用：

- `8` 步时间窗口组织员工缺勤事件序列
- 时序分支编码 `15` 个事件/上下文特征
- 静态分支编码 `13` 个员工稳定属性特征
- `Transformer` 编码 + 门控融合输出缺勤时长回归结果

### 4.2 预测流程

1. 前端输入核心预测字段
2. 后端构建完整预测样本
3. 自动补齐默认字段
4. 执行特征工程、`JD-R` 指标构建和编码
5. 加载模型进行预测
6. 返回缺勤时长、风险等级、风险概率、模型名称和置信度
7. 调用 `SHAP` 生成局部解释结果

### 4.3 分析流程

1. 读取清洗后的数据
2. 计算统计指标、相关关系与群体差异
3. 按 `JD-R` 理论聚合工作要求、工作资源、个人资源、倦怠与投入
4. 组织成前端图表所需结构
5. 返回 JSON 数据供前端展示

## 5. 文件组织结构

```text
backend/
  api/
  core/
  data/
  models/
  outputs/
  services/
  app.py

frontend/
  src/
    api/
    router/
    styles/
    views/
    App.vue
    main.js
```

## 6. 技术选型说明

### 6.1 Flask

- 轻量，适合本科毕设项目
- 路由层清晰，便于拆分接口

### 6.2 Vue 3

- 组件化开发效率较高
- 与 Element Plus、ECharts 配合较好

### 6.3 Scikit-learn

- 适合传统机器学习建模
- 提供随机森林、GBDT、Extra Trees 等成熟算法
- 便于输出特征重要性并配合 `SHAP` 解释

### 6.4 PyTorch

- 用于实现深度学习时序建模
- 支持 `Transformer` 编码与静态特征门控融合
- 便于在论文中增加时序预测对比实验内容

## 7. 部署方式

- 本地前端开发服务器：Vite
- 本地后端服务：Flask 开发服务器
- 模型文件与数据文件均存储在本地项目目录中

## 8. 架构特点

- 结构清晰，便于答辩说明
- 前后端职责明确
- 同时支持统计、预测、聚类和理论解释
- 支持 `SHAP` 全局与局部可解释分析
- 构成“数据生成 - 特征工程 - 理论解释 - 预测决策”的闭环
