Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -982,54 +982,62 @@ if __name__ == "__main__":
|
|
982 |
@app.route('/calculation', methods=['POST'])
|
983 |
def handle_calculation():
|
984 |
try:
|
985 |
-
|
986 |
-
|
987 |
-
|
988 |
-
|
989 |
-
|
990 |
-
|
991 |
-
|
992 |
-
|
993 |
-
|
994 |
-
|
995 |
-
|
996 |
-
|
997 |
-
|
998 |
-
|
999 |
-
|
1000 |
-
|
1001 |
-
}
|
1002 |
-
|
1003 |
-
|
1004 |
-
|
1005 |
-
|
1006 |
-
"
|
1007 |
-
|
1008 |
-
|
1009 |
-
|
1010 |
-
|
1011 |
-
|
1012 |
-
"
|
1013 |
-
|
1014 |
-
|
1015 |
-
"K": float(
|
1016 |
-
"
|
|
|
|
|
1017 |
}
|
1018 |
-
}
|
1019 |
|
1020 |
-
#
|
|
|
1021 |
profile = {
|
1022 |
-
'P': float(
|
1023 |
-
'K': float(
|
1024 |
-
'Mg': float(
|
1025 |
-
'Ca': float(
|
1026 |
-
'S': float(
|
1027 |
-
'N (NO3-)': float(
|
1028 |
-
'N (NH4+)': float(
|
1029 |
}
|
1030 |
-
liters = int(
|
1031 |
|
1032 |
-
#
|
|
|
|
|
|
|
|
|
|
|
|
|
1033 |
calculator = NutrientCalculator(volume_liters=liters)
|
1034 |
calculator.fertilizers = fertilizers
|
1035 |
calculator.target_profile.update(profile)
|
@@ -1062,16 +1070,20 @@ def handle_calculation():
|
|
1062 |
"ppm": round(value, 1)
|
1063 |
})
|
1064 |
|
1065 |
-
|
|
|
|
|
|
|
|
|
1066 |
return jsonify(response)
|
1067 |
|
1068 |
-
except
|
1069 |
-
error_msg = f"
|
1070 |
-
print(error_msg)
|
1071 |
return jsonify({"error": error_msg}), 400
|
1072 |
except Exception as e:
|
1073 |
-
error_msg = f"Ошибка
|
1074 |
-
print(error_msg)
|
1075 |
return jsonify({"error": error_msg}), 500
|
1076 |
|
1077 |
|
|
|
982 |
@app.route('/calculation', methods=['POST'])
|
983 |
def handle_calculation():
|
984 |
try:
|
985 |
+
# Получаем и логируем сырые данные
|
986 |
+
raw_data = request.json
|
987 |
+
print("\n=== ПРИНЯТЫЕ ДАННЫЕ ===")
|
988 |
+
print("Тип данных:", type(raw_data))
|
989 |
+
print("Содержимое:", raw_data)
|
990 |
+
|
991 |
+
# Проверка структуры данных
|
992 |
+
if not isinstance(raw_data, dict):
|
993 |
+
raise ValueError("Данные должны быть в формате JSON-объекта")
|
994 |
+
|
995 |
+
if 'fertilizerConstants' not in raw_data or 'profileSettings' not in raw_data:
|
996 |
+
raise ValueError("Отсутствуют обязательные поля fertilizerConstants или profileSettings")
|
997 |
+
|
998 |
+
# Логируем удобрения
|
999 |
+
print("\n=== УДОБРЕНИЯ ===")
|
1000 |
+
for fert_name, fert_data in raw_data['fertilizerConstants'].items():
|
1001 |
+
print(f"{fert_name}: {fert_data}")
|
1002 |
+
|
1003 |
+
# Логируем настройки профиля
|
1004 |
+
print("\n=== НАСТРОЙКИ ПРОФИЛЯ ===")
|
1005 |
+
for param, value in raw_data['profileSettings'].items():
|
1006 |
+
print(f"{param}: {value} (тип: {type(value)})")
|
1007 |
+
|
1008 |
+
# Преобразуем данные удобрений
|
1009 |
+
fertilizers = {}
|
1010 |
+
for fert_name, fert_data in raw_data['fertilizerConstants'].items():
|
1011 |
+
fertilizers[fert_name] = {
|
1012 |
+
"N (NO3-)": float(fert_data.get("N (NO3-)", 0)),
|
1013 |
+
"N (NH4+)": float(fert_data.get("N (NH4+)", 0)),
|
1014 |
+
"P": float(fert_data.get("P", 0)),
|
1015 |
+
"K": float(fert_data.get("K", 0)),
|
1016 |
+
"Ca": float(fert_data.get("Ca", 0)),
|
1017 |
+
"Mg": float(fert_data.get("Mg", 0)),
|
1018 |
+
"S": float(fert_data.get("S", 0))
|
1019 |
}
|
|
|
1020 |
|
1021 |
+
# Преобразуем настройки профиля
|
1022 |
+
profile_settings = raw_data['profileSettings']
|
1023 |
profile = {
|
1024 |
+
'P': float(profile_settings.get('P', 0)),
|
1025 |
+
'K': float(profile_settings.get('K', 0)),
|
1026 |
+
'Mg': float(profile_settings.get('Mg', 0)),
|
1027 |
+
'Ca': float(profile_settings.get('Ca', 0)),
|
1028 |
+
'S': float(profile_settings.get('S', 0)),
|
1029 |
+
'N (NO3-)': float(profile_settings.get('N (NO3-)', 0)),
|
1030 |
+
'N (NH4+)': float(profile_settings.get('N (NH4+)', 0))
|
1031 |
}
|
1032 |
+
liters = int(profile_settings.get('liters', 100))
|
1033 |
|
1034 |
+
# Логируем преобразованные данные
|
1035 |
+
print("\n=== ПРЕОБРАЗОВАННЫЕ ДАННЫЕ ===")
|
1036 |
+
print("Удобрения:", fertilizers)
|
1037 |
+
print("Профиль:", profile)
|
1038 |
+
print("Литры:", liters)
|
1039 |
+
|
1040 |
+
# Создаем калькулятор
|
1041 |
calculator = NutrientCalculator(volume_liters=liters)
|
1042 |
calculator.fertilizers = fertilizers
|
1043 |
calculator.target_profile.update(profile)
|
|
|
1070 |
"ppm": round(value, 1)
|
1071 |
})
|
1072 |
|
1073 |
+
# Логируем результат
|
1074 |
+
print("\n=== РЕЗУЛЬТАТ РАСЧЕТА ===")
|
1075 |
+
print(response)
|
1076 |
+
print("\n")
|
1077 |
+
|
1078 |
return jsonify(response)
|
1079 |
|
1080 |
+
except ValueError as e:
|
1081 |
+
error_msg = f"Ошибка данных: {str(e)}"
|
1082 |
+
print(f"\n!!! ОШИБКА: {error_msg}\n")
|
1083 |
return jsonify({"error": error_msg}), 400
|
1084 |
except Exception as e:
|
1085 |
+
error_msg = f"Ошибка сервера: {str(e)}"
|
1086 |
+
print(f"\n!!! КРИТИЧЕСКАЯ ОШИБКА: {error_msg}\n")
|
1087 |
return jsonify({"error": error_msg}), 500
|
1088 |
|
1089 |
|