update application data and remove obsolete report
这是一个基于 Python、Flask、SQLite、Pandas 和 scikit-learn 的员工离职分析系统。项目围绕 IBM HR Attrition 数据集实现员工管理、离职统计看板、离职风险预测、风险排名、AI 风险分析、离职洞察和综合报告导出。
依赖定义在 pyproject.toml。
pyproject.toml
. ├── app.py # Flask 应用入口 ├── models.py # SQLAlchemy 数据模型 ├── init_users.py # 初始化用户脚本 ├── blueprints/ # Flask 蓝图 │ ├── dashboard.py # 数据看板 API │ ├── employee.py # 员工 CRUD 与 CSV 导出 │ ├── predict.py # 预测、风险分析、洞察、报告接口 │ └── user.py # 用户管理与个人中心 ├── analysis/ # 模型训练与分析脚本 │ ├── train_model.py # 训练并保存离职预测模型 │ ├── predict_new_employee.py # 新员工预测示例 │ └── factor.py # 相关性分析与热力图 ├── model/ # 已训练模型与预处理对象 ├── report/ # 综合 PNG 报告生成模块 ├── reports/ # 生成后的报告文件 ├── static/ # 数据集、前端静态资源、图片 ├── templates/ # 页面模板 └── task/ # 课程练习与辅助脚本
uv sync
如果不使用 uv,可按 pyproject.toml 安装对应依赖。
uv
python app.py
应用启动时会执行 db.create_all(),在项目根目录使用 data.db。
db.create_all()
data.db
python init_users.py
默认访问地址:
http://127.0.0.1:5000/
/
/register
/home
/dashboard
/employee/list
/predict/
/predict/ranking
/predict/insight
/user/list
/user/profile
训练模型:
python analysis/train_model.py
训练脚本会读取:
static/WA_Fn-UseC_-HR-Employee-Attrition.csv
并输出以下文件到 model/:
model/
attrition_model.pkl
scaler.pkl
feature_columns.pkl
label_encoders.pkl
运行新员工预测示例:
python analysis/predict_new_employee.py
洞察页提供“生成分析报告图”按钮。点击后会调用后端生成 PNG 报告,报告保存到:
reports/analysis_report.png
相关接口:
POST /predict/api/report/generate/analysis
GET /predict/api/report/download/analysis
GET /predict/api/report/download/analysis?download=1
也可以直接运行:
python report/generate_analysis_report.py
报告包含:
task/risk_warning_polling.py 可独立轮询批量预测接口,在终端输出高风险员工提醒:
task/risk_warning_polling.py
python task/risk_warning_polling.py --base-url http://127.0.0.1:5000
只检查一次:
python task/risk_warning_polling.py --once
风险排名页的 AI 分析接口支持 OpenAI 兼容服务。可通过环境变量配置:
MENGZHEN_OPENAI_API_KEY
OPENAI_API_KEY
MENGZHEN_OPENAI_URL
MENGZHEN_OPENAI_BASE_URL
OPENAI_BASE_URL
MENGZHEN_OPENAI_MODEL
OPENAI_MODEL
也可以创建 .env.local 放置本地配置。.env 和 .env.* 已被忽略,不会进入版本库。
.env.local
.env
.env.*
未配置 API Key 时,系统会使用本地规则生成可用的风险分析报告。
Python 语法检查:
python -m py_compile app.py blueprints/predict.py report/config.py report/generate_analysis_report.py
生成综合报告:
检查 Git 状态:
git status --short
blueprints/predict.py
markdown/
word/
Microsoft YaHei
SimHei
Arial Unicode MS
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
基于python的员工离职与预警系统
这是一个基于 Python、Flask、SQLite、Pandas 和 scikit-learn 的员工离职分析系统。项目围绕 IBM HR Attrition 数据集实现员工管理、离职统计看板、离职风险预测、风险排名、AI 风险分析、离职洞察和综合报告导出。
功能概览
技术栈
依赖定义在
pyproject.toml。目录结构
快速开始
如果不使用
uv,可按pyproject.toml安装对应依赖。应用启动时会执行
db.create_all(),在项目根目录使用data.db。默认访问地址:
主要页面
/:登录页/register:注册页/home:系统首页/dashboard:数据看板/employee/list:员工管理/predict/:单员工离职风险预测/predict/ranking:全员离职风险排名/predict/insight:离职洞察与综合报告导出/user/list:用户管理(管理员)/user/profile:个人中心模型训练与预测
训练模型:
训练脚本会读取:
并输出以下文件到
model/:attrition_model.pklscaler.pklfeature_columns.pkllabel_encoders.pkl运行新员工预测示例:
综合离职分析报告
洞察页提供“生成分析报告图”按钮。点击后会调用后端生成 PNG 报告,报告保存到:
相关接口:
POST /predict/api/report/generate/analysis:生成综合报告图GET /predict/api/report/download/analysis:预览报告图GET /predict/api/report/download/analysis?download=1:下载报告图也可以直接运行:
报告包含:
风险预警轮询脚本
task/risk_warning_polling.py可独立轮询批量预测接口,在终端输出高风险员工提醒:只检查一次:
AI 风险分析配置
风险排名页的 AI 分析接口支持 OpenAI 兼容服务。可通过环境变量配置:
MENGZHEN_OPENAI_API_KEY或OPENAI_API_KEYMENGZHEN_OPENAI_URL、MENGZHEN_OPENAI_BASE_URL或OPENAI_BASE_URLMENGZHEN_OPENAI_MODEL或OPENAI_MODEL也可以创建
.env.local放置本地配置。.env和.env.*已被忽略,不会进入版本库。未配置 API Key 时,系统会使用本地规则生成可用的风险分析报告。
常用验证命令
Python 语法检查:
生成综合报告:
检查 Git 状态:
数据与文件说明
data.db:SQLite 数据库文件,当前已被 Git 跟踪,适合课程演示。model/:已训练模型和预处理文件,应用启动时由blueprints/predict.py加载。static/WA_Fn-UseC_-HR-Employee-Attrition.csv:模型训练和报告生成使用的数据集。reports/analysis_report.png:当前生成的综合离职分析报告样例。注意事项
markdown/和word/目录被忽略,不作为项目运行必要文件提交。Microsoft YaHei、SimHei或Arial Unicode MS字体。