Files
forsetsystem/backend/api/cluster_routes.py
shenjianZ e63267cef6 feat: 将数据集从国外员工缺勤数据替换为中国企业缺勤模拟数据
- 新增中国企业员工缺勤模拟数据集生成脚本(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
2026-03-11 10:46:58 +08:00

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