Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -984,12 +984,35 @@ def handle_calculation():
|
|
984 |
try:
|
985 |
data = request.json
|
986 |
|
987 |
-
#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
988 |
calculator = NutrientCalculator(
|
989 |
volume_liters=data['profileSettings']['liters']
|
990 |
)
|
991 |
|
992 |
-
# Устанавливаем профиль
|
993 |
calculator.target_profile = {
|
994 |
'P': data['profileSettings']['P'],
|
995 |
'K': data['profileSettings']['K'],
|
@@ -1000,13 +1023,12 @@ def handle_calculation():
|
|
1000 |
'N (NH4+)': data['profileSettings']['N (NH4+)']
|
1001 |
}
|
1002 |
|
1003 |
-
# Устанавливаем удобрения
|
1004 |
calculator.fertilizers = data['fertilizerConstants']
|
1005 |
|
1006 |
# Выполняем расчет
|
1007 |
result = calculator.calculate()
|
1008 |
|
1009 |
-
# Возвращаем в СТАРОМ формате (как работало)
|
1010 |
return jsonify({
|
1011 |
"deficits": result.get('deficits', {}),
|
1012 |
"ec": result.get('ec', 0),
|
@@ -1018,7 +1040,7 @@ def handle_calculation():
|
|
1018 |
except Exception as e:
|
1019 |
return jsonify({
|
1020 |
"error": str(e),
|
1021 |
-
"message": "Ошибка расчета
|
1022 |
}), 500
|
1023 |
|
1024 |
|
@@ -1044,7 +1066,6 @@ def handle_calculation():
|
|
1044 |
|
1045 |
|
1046 |
|
1047 |
-
|
1048 |
|
1049 |
|
1050 |
if __name__ == '__main__':
|
|
|
984 |
try:
|
985 |
data = request.json
|
986 |
|
987 |
+
# Проверка наличия всех обязательных полей
|
988 |
+
required_fertilizers = [
|
989 |
+
"Кальциевая селитра", "Калий азотнокислый",
|
990 |
+
"Аммоний азотнокислый", "Сульфат магния",
|
991 |
+
"Монофосфат калия", "Калий сернокислый"
|
992 |
+
]
|
993 |
+
|
994 |
+
for fert in required_fertilizers:
|
995 |
+
if fert not in data['fertilizerConstants']:
|
996 |
+
return jsonify({
|
997 |
+
"error": f"Отсутствует удобрение: {fert}",
|
998 |
+
"message": "Неполные данные об удобрениях"
|
999 |
+
}), 400
|
1000 |
+
|
1001 |
+
# Проверка нулевых значений
|
1002 |
+
for fert_name, fert_data in data['fertilizerConstants'].items():
|
1003 |
+
for element, percent in fert_data.items():
|
1004 |
+
if percent is None:
|
1005 |
+
return jsonify({
|
1006 |
+
"error": f"Не указан процент для {element} в {fert_name}",
|
1007 |
+
"message": "Нулевые значения в удобрениях"
|
1008 |
+
}), 400
|
1009 |
+
|
1010 |
+
# Создаем калькулятор
|
1011 |
calculator = NutrientCalculator(
|
1012 |
volume_liters=data['profileSettings']['liters']
|
1013 |
)
|
1014 |
|
1015 |
+
# Устанавливаем профиль
|
1016 |
calculator.target_profile = {
|
1017 |
'P': data['profileSettings']['P'],
|
1018 |
'K': data['profileSettings']['K'],
|
|
|
1023 |
'N (NH4+)': data['profileSettings']['N (NH4+)']
|
1024 |
}
|
1025 |
|
1026 |
+
# Устанавливаем удобрения
|
1027 |
calculator.fertilizers = data['fertilizerConstants']
|
1028 |
|
1029 |
# Выполняем расчет
|
1030 |
result = calculator.calculate()
|
1031 |
|
|
|
1032 |
return jsonify({
|
1033 |
"deficits": result.get('deficits', {}),
|
1034 |
"ec": result.get('ec', 0),
|
|
|
1040 |
except Exception as e:
|
1041 |
return jsonify({
|
1042 |
"error": str(e),
|
1043 |
+
"message": "Ошибка расчета"
|
1044 |
}), 500
|
1045 |
|
1046 |
|
|
|
1066 |
|
1067 |
|
1068 |
|
|
|
1069 |
|
1070 |
|
1071 |
if __name__ == '__main__':
|