# 系统架构设计 ## 1. 总体架构 系统采用前后端分离架构: - 前端:Vue 3 + Vue Router + Element Plus + ECharts - 后端:Flask + Pandas + Scikit-learn + Joblib - 数据层:CSV 数据文件 + 模型文件 整体架构分为四层: 1. 表现层:负责页面展示、表单交互和图表可视化 2. 接口层:负责 HTTP 路由转发与请求响应 3. 业务层:负责数据统计、特征分析、预测和聚类逻辑 4. 数据与模型层:负责原始数据、清洗数据、模型文件和训练元数据 ## 2. 前端架构设计 ### 2.1 模块划分 - `Dashboard.vue`:数据概览页 - `FactorAnalysis.vue`:影响因素分析页 - `Prediction.vue`:缺勤预测页 - `Clustering.vue`:员工画像页 ### 2.2 核心职责 - 页面布局与导航 - 图表渲染 - 表单输入与结果展示 - 接口调用与状态管理 ## 3. 后端架构设计 ### 3.1 路由层 - `overview_routes.py` - `analysis_routes.py` - `predict_routes.py` - `cluster_routes.py` ### 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/ api/ core/ data/ models/ 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 等成熟算法 ## 7. 部署方式 - 本地前端开发服务器:Vite - 本地后端服务:Flask 开发服务器 - 模型文件与数据文件均存储在本地项目目录中 ## 8. 架构特点 - 结构清晰,便于答辩说明 - 前后端职责明确 - 支持快速展示图表与预测效果 - 支持后续扩展为数据库或更复杂模型架构