Files
forsetsystem/docs/01_系统架构设计.md

162 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 系统架构设计
## 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` 全局与局部可解释分析
- 构成“数据生成 - 特征工程 - 理论解释 - 预测决策”的闭环