DmitrMakeev commited on
Commit
2626c09
·
verified ·
1 Parent(s): 7c2533c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +61 -49
app.py CHANGED
@@ -982,54 +982,62 @@ if __name__ == "__main__":
982
  @app.route('/calculation', methods=['POST'])
983
  def handle_calculation():
984
  try:
985
- data = request.json
986
- print("Полученные данные:", data) # Логирование входящих данных
987
-
988
- # Проверка обязательных полей
989
- if not data or 'fertilizerConstants' not in data or 'profileSettings' not in data:
990
- return jsonify({"error": "Не хватает обязательных данных"}), 400
991
-
992
- # Конвертация удобрений
993
- fertilizers = {
994
- "Кальциевая селитра": {
995
- "N (NO3-)": float(data['fertilizerConstants']['Кальциевая селитра']["N (NO3-)"]),
996
- "Ca": float(data['fertilizerConstants']['Кальциевая селитра']["Ca"])
997
- },
998
- "Калий азотнокислый": {
999
- "N (NO3-)": float(data['fertilizerConstants']['Калий азотнокислый']["N (NO3-)"]),
1000
- "K": float(data['fertilizerConstants']['Калий азотнокислый']["K"])
1001
- },
1002
- "Аммоний азотнокислый": {
1003
- "N (NO3-)": float(data['fertilizerConstants']['Аммоний азотнокислый']["N (NO3-)"]),
1004
- "N (NH4+)": float(data['fertilizerConstants']['Аммоний азотнокислый']["N (NH4+)"])
1005
- },
1006
- "Сульфат магния": {
1007
- "Mg": float(data['fertilizerConstants']['Сульфат магния']["Mg"]),
1008
- "S": float(data['fertilizerConstants']['Сульфат магния']["S"])
1009
- },
1010
- "Монофосфат калия": {
1011
- "P": float(data['fertilizerConstants']['Монофосфат калия']["P"]),
1012
- "K": float(data['fertilizerConstants']['Монофосфат калия']["K"])
1013
- },
1014
- "Калий сернокислый": {
1015
- "K": float(data['fertilizerConstants']['Калий сернокислый']["K"]),
1016
- "S": float(data['fertilizerConstants']['Калий сернокислый']["S"])
 
 
1017
  }
1018
- }
1019
 
1020
- # Настройки профиля
 
1021
  profile = {
1022
- 'P': float(data['profileSettings']['P']),
1023
- 'K': float(data['profileSettings']['K']),
1024
- 'Mg': float(data['profileSettings']['Mg']),
1025
- 'Ca': float(data['profileSettings']['Ca']),
1026
- 'S': float(data['profileSettings']['S']),
1027
- 'N (NO3-)': float(data['profileSettings']['N (NO3-)']),
1028
- 'N (NH4+)': float(data['profileSettings']['N (NH4+)']),
1029
  }
1030
- liters = int(data['profileSettings']['liters'])
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
- print("Результат расчета:", response) # Логирование результата
 
 
 
 
1066
  return jsonify(response)
1067
 
1068
- except KeyError as e:
1069
- error_msg = f"Отсутствует обязательное поле: {str(e)}"
1070
- print(error_msg)
1071
  return jsonify({"error": error_msg}), 400
1072
  except Exception as e:
1073
- error_msg = f"Ошибка расчета: {str(e)}"
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