- 新增中国企业员工缺勤模拟数据集生成脚本(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
69 lines
1.9 KiB
Python
69 lines
1.9 KiB
Python
from flask import Blueprint, jsonify, request
|
|
|
|
from services.cluster_service import cluster_service
|
|
|
|
cluster_bp = Blueprint('cluster', __name__, url_prefix='/api/cluster')
|
|
|
|
|
|
@cluster_bp.route('/result', methods=['GET'])
|
|
def get_result():
|
|
try:
|
|
n_clusters = request.args.get('n_clusters', 3, type=int)
|
|
n_clusters = max(2, min(10, n_clusters))
|
|
|
|
result = cluster_service.get_cluster_result(n_clusters)
|
|
return jsonify({
|
|
'code': 200,
|
|
'message': 'success',
|
|
'data': result
|
|
})
|
|
except Exception as e:
|
|
return jsonify({
|
|
'code': 500,
|
|
'message': str(e),
|
|
'data': None
|
|
}), 500
|
|
|
|
|
|
@cluster_bp.route('/profile', methods=['GET'])
|
|
def get_profile():
|
|
try:
|
|
n_clusters = request.args.get('n_clusters', 3, type=int)
|
|
n_clusters = max(2, min(10, n_clusters))
|
|
|
|
result = cluster_service.get_cluster_profile(n_clusters)
|
|
return jsonify({
|
|
'code': 200,
|
|
'message': 'success',
|
|
'data': result
|
|
})
|
|
except Exception as e:
|
|
return jsonify({
|
|
'code': 500,
|
|
'message': str(e),
|
|
'data': None
|
|
}), 500
|
|
|
|
|
|
@cluster_bp.route('/scatter', methods=['GET'])
|
|
def get_scatter():
|
|
try:
|
|
n_clusters = request.args.get('n_clusters', 3, type=int)
|
|
x_axis = request.args.get('x_axis', '月均加班时长')
|
|
y_axis = request.args.get('y_axis', '缺勤时长(小时)')
|
|
|
|
n_clusters = max(2, min(10, n_clusters))
|
|
|
|
result = cluster_service.get_scatter_data(n_clusters, x_axis, y_axis)
|
|
return jsonify({
|
|
'code': 200,
|
|
'message': 'success',
|
|
'data': result
|
|
})
|
|
except Exception as e:
|
|
return jsonify({
|
|
'code': 500,
|
|
'message': str(e),
|
|
'data': None
|
|
}), 500
|