Files
forsetsystem/backend/api/predict_routes.py
shenjianZ a39d8b2fd2 feat: 初始化员工缺勤分析系统项目
搭建完整的前后端分离架构,实现数据概览、预测分析、聚类分析等核心功能模块

  详细版:
  feat: 初始化员工缺勤分析系统项目

  - 后端:基于 Flask 搭建 RESTful API,包含数据概览、特征分析、预测模型、聚类分析四大模块
  - 前端:基于 Vue.js 构建单页应用,实现 Dashboard、预测、聚类、因子分析等页面
  - 模型:集成随机森林、XGBoost、LightGBM、Stacking 等多种机器学习模型
  - 文档:完成需求规格说明、系统架构设计、接口设计、数据设计、UI原型设计等文档
2026-03-08 14:48:26 +08:00

103 lines
2.5 KiB
Python

from flask import Blueprint, jsonify, request
from services.predict_service import predict_service
predict_bp = Blueprint('predict', __name__, url_prefix='/api/predict')
@predict_bp.route('/single', methods=['POST'])
def predict_single():
try:
data = request.get_json()
if not data:
return jsonify({
'code': 400,
'message': 'Request body is required',
'data': None
}), 400
model_type = data.get('model_type')
result = predict_service.predict_single(data, model_type)
return jsonify({
'code': 200,
'message': 'success',
'data': result
})
except Exception as e:
return jsonify({
'code': 500,
'message': str(e),
'data': None
}), 500
@predict_bp.route('/compare', methods=['POST'])
def predict_compare():
try:
data = request.get_json()
if not data:
return jsonify({
'code': 400,
'message': 'Request body is required',
'data': None
}), 400
results = predict_service.predict_compare(data)
return jsonify({
'code': 200,
'message': 'success',
'data': {
'results': results,
'total_models': len(results)
}
})
except Exception as e:
return jsonify({
'code': 500,
'message': str(e),
'data': None
}), 500
@predict_bp.route('/models', methods=['GET'])
def get_models():
try:
models = predict_service.get_available_models()
return jsonify({
'code': 200,
'message': 'success',
'data': {
'models': models,
'total': len(models)
}
})
except Exception as e:
return jsonify({
'code': 500,
'message': str(e),
'data': None
}), 500
@predict_bp.route('/model-info', methods=['GET'])
def get_model_info():
try:
result = predict_service.get_model_info()
return jsonify({
'code': 200,
'message': 'success',
'data': result
})
except Exception as e:
return jsonify({
'code': 500,
'message': str(e),
'data': None
}), 500