from flask import Flask, request, jsonify import joblib import pandas as pd app = Flask(__name__) model = joblib.load("defrost_time_corrector.pkl") feature_columns = ["w", "rho_coal", "rho_ice", "C_coal", "C_ice", "L", "k_coal", "k_ice", "h", "T_air", "T_initial", "T_m", "a", "b", "c"] # 加载训练过的样本信息(用于判断是否相同物料) csv_path = 'C:\\Users\\Administrator\\Desktop\\defrost\\feedback_data.csv' df_train = pd.read_csv(csv_path, parse_dates=["t_formula", "t_real"], encoding='gbk') df_train["material_name"] = df_train["material_name"].astype(str) df_train["manufactured_goods"] = df_train["manufactured_goods"].astype(str) @app.route("/predict_defrost_time", methods=["POST"]) def predict(): data = request.get_json() material = str(data.get("material_name", "")).strip() goods = str(data.get("manufactured_goods", "")).strip() print("传递的物料名称为"+material) print("传递的制造品名称为"+goods) # 强制要求必须传物料+制造品名 if not material or not goods: return jsonify({ "error": "请提供 material_name 和 manufactured_goods 字段" }), 400 # 判断是否是训练数据中见过的组合 is_known = ((df_train["material_name"] == material) & (df_train["manufactured_goods"] == goods)).any() if not is_known: return jsonify({ "predicted_hours": None, "is_known_sample": False, "error": "未知物料组合,无法预测" }) # 进行预测 df = pd.DataFrame([data]) X = df[feature_columns] y_pred = model.predict(X)[0] return jsonify({ "predicted_hours": round(y_pred, 2), "is_known_sample": True }) if __name__ == '__main__': app.run(host='127.0.0.1', port=9994)