DmitrMakeev commited on
Commit
e36c9e6
·
verified ·
1 Parent(s): 82fc4ed

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +23 -43
app.py CHANGED
@@ -983,8 +983,8 @@ if __name__ == "__main__":
983
  def handle_calculation():
984
  try:
985
  data = request.json
986
-
987
- # Проверка наличия всех обязательных полей
988
  required_fertilizers = [
989
  "Кальциевая селитра", "Калий азотнокислый",
990
  "Аммоний азотнокислый", "Сульфат магния",
@@ -992,57 +992,37 @@ def handle_calculation():
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'],
1019
- 'Mg': data['profileSettings']['Mg'],
1020
- 'Ca': data['profileSettings']['Ca'],
1021
- 'S': data['profileSettings']['S'],
1022
- 'N (NO3-)': data['profileSettings']['N (NO3-)'],
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),
1035
- "fertilizers": result.get('fertilizers', []),
1036
- "profile": result.get('profile', []),
1037
- "volume": data['profileSettings']['liters']
1038
- })
1039
 
1040
  except Exception as e:
1041
- return jsonify({
1042
- "error": str(e),
1043
- "message": "Ошибка расчета"
1044
- }), 500
1045
-
1046
 
1047
 
1048
 
 
983
  def handle_calculation():
984
  try:
985
  data = request.json
986
+
987
+ # Проверка обязательных полей
988
  required_fertilizers = [
989
  "Кальциевая селитра", "Калий азотнокислый",
990
  "Аммоний азотнокислый", "Сульфат магния",
 
992
  ]
993
 
994
  for fert in required_fertilizers:
995
+ if fert not in data.get('fertilizerConstants', {}):
996
+ return jsonify({"error": f"Не хватает удобрения: {fert}"}), 400
 
 
 
 
 
 
 
 
 
 
 
 
997
 
998
  # Создаем калькулятор
999
+ calculator = NutrientCalculator(volume_liters=data['profileSettings']['liters'])
 
 
1000
 
1001
  # Устанавливаем профиль
1002
  calculator.target_profile = {
1003
+ 'P': float(data['profileSettings']['P']),
1004
+ 'K': float(data['profileSettings']['K']),
1005
+ 'Mg': float(data['profileSettings']['Mg']),
1006
+ 'Ca': float(data['profileSettings']['Ca']),
1007
+ 'S': float(data['profileSettings']['S']),
1008
+ 'N (NO3-)': float(data['profileSettings']['N (NO3-)']),
1009
+ 'N (NH4+)': float(data['profileSettings']['N (NH4+)'])
1010
  }
1011
 
1012
+ # Устанавливаем удобрения (проверяем проценты)
1013
+ calculator.fertilizers = {
1014
+ fert: {el: max(float(p), 0) for el, p in nutrients.items()}
1015
+ for fert, nutrients in data['fertilizerConstants'].items()
1016
+ }
1017
+
1018
+ # Расчет
1019
+ calculator.calculate()
1020
+ result = calculator.get_web_results()
1021
 
1022
+ return jsonify(result)
 
 
 
 
 
 
1023
 
1024
  except Exception as e:
1025
+ return jsonify({"error": str(e)}), 500
 
 
 
 
1026
 
1027
 
1028