DmitrMakeev commited on
Commit
867a2cd
·
verified ·
1 Parent(s): 9ced072

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +34 -22
app.py CHANGED
@@ -979,41 +979,53 @@ if __name__ == "__main__":
979
 
980
 
981
 
982
-
983
  @app.route('/calculation', methods=['POST'])
984
  def handle_calculation():
985
  try:
986
- # Получаем данные запроса
987
- data = request.get_json()
988
 
989
- # Проверяем наличие необходимых данных
990
- if not data or 'ratios' not in data:
991
- return jsonify({"error": "Invalid request data"}), 400
992
 
993
- # Обновляем глобальные переменные из запроса
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
994
  global NO3_RATIO, NH4_RATIO
995
- NO3_RATIO = float(data['ratios']['NO3_RATIO'])
996
- NH4_RATIO = float(data['ratios']['NH4_RATIO'])
997
 
998
- # Создаем калькулятор (он будет использовать обновленные глобальные переменные)
999
- calculator = NutrientCalculator(volume_liters=data.get('liters', VOLUME_LITERS))
 
 
1000
 
1001
  # Выполняем расчет
1002
  calculator.calculate()
1003
 
1004
- # Возвращаем только результаты расчета
1005
- return jsonify({
1006
- "fertilizers": calculator._format_fertilizers(),
1007
- "profile": calculator._format_profile(),
1008
- "ec": calculator.calculate_ec(),
1009
- "deficits": calculator.calculate_deficits()
1010
- })
1011
 
 
 
 
 
1012
  except Exception as e:
1013
- return jsonify({
1014
- "error": "Calculation failed",
1015
- "details": str(e)
1016
- }), 500
1017
 
1018
 
1019
  if __name__ == '__main__':
 
979
 
980
 
981
 
 
982
  @app.route('/calculation', methods=['POST'])
983
  def handle_calculation():
984
  try:
985
+ # Получаем сырые данные запроса
986
+ raw_data = request.get_json()
987
 
988
+ # Проверяем базовую структуру
989
+ if not raw_data or 'fertilizerConstants' not in raw_data or 'profileSettings' not in raw_data:
990
+ return jsonify({"error": "Invalid request structure"}), 400
991
 
992
+ # Преобразуем данные клиента в серверный формат
993
+ data = {
994
+ 'fertilizerConstants': convert_client_data(raw_data['fertilizerConstants']),
995
+ 'profileSettings': {
996
+ 'P': float(raw_data['profileSettings'].get('P', 0)),
997
+ 'K': float(raw_data['profileSettings'].get('K', 0)),
998
+ 'Mg': float(raw_data['profileSettings'].get('Mg', 0)),
999
+ 'Ca': float(raw_data['profileSettings'].get('Ca', 0)),
1000
+ 'S': float(raw_data['profileSettings'].get('S', 0)),
1001
+ 'N (NO3-)': float(raw_data['profileSettings'].get('NO3', 0)),
1002
+ 'N (NH4+)': float(raw_data['profileSettings'].get('NH4', 0)),
1003
+ 'liters': int(raw_data['profileSettings'].get('liters', 100))
1004
+ }
1005
+ }
1006
+
1007
+ # Обновляем глобальные переменные
1008
  global NO3_RATIO, NH4_RATIO
1009
+ NO3_RATIO = float(raw_data.get('NO3_RATIO', 8.25))
1010
+ NH4_RATIO = float(raw_data.get('NH4_RATIO', 1.00))
1011
 
1012
+ # Создаем и настраиваем калькулятор
1013
+ calculator = NutrientCalculator(volume_liters=data['profileSettings']['liters'])
1014
+ calculator.fertilizers = data['fertilizerConstants']
1015
+ calculator.target_profile.update(data['profileSettings'])
1016
 
1017
  # Выполняем расчет
1018
  calculator.calculate()
1019
 
1020
+ # Возвращаем результаты
1021
+ return jsonify(calculator.get_web_results())
 
 
 
 
 
1022
 
1023
+ except ValueError as e:
1024
+ return jsonify({"error": f"Invalid numeric value: {str(e)}"}), 400
1025
+ except KeyError as e:
1026
+ return jsonify({"error": f"Missing required field: {str(e)}"}), 400
1027
  except Exception as e:
1028
+ return jsonify({"error": f"Calculation error: {str(e)}"}), 500
 
 
 
1029
 
1030
 
1031
  if __name__ == '__main__':