DmitrMakeev commited on
Commit
9c604bc
·
verified ·
1 Parent(s): 5f91311

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +20 -37
app.py CHANGED
@@ -982,52 +982,35 @@ if __name__ == "__main__":
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
- print("Профиль настроек:", raw_data['profileSettings'])
1006
 
1007
- # Преобразуем данные клиента в серверный формат
1008
- client_data = convert_client_data(raw_data['fertilizerConstants'])
 
 
1009
 
1010
- # Создаём объект калькулятора
1011
- calculator = NutrientCalculator(volume_liters=VOLUME_LITERS)
 
 
 
 
 
 
1012
 
1013
- # Расчёт с данными клиента
 
 
 
1014
  calculator.calculate()
1015
 
1016
- # Генерация отчёта
1017
- report = calculator.get_web_results()
1018
-
1019
- return jsonify({
1020
- "status": "success",
1021
- "report": report
1022
- })
1023
 
1024
  except Exception as e:
1025
- print(f"Ошибка при расчёте: {str(e)}")
1026
- return jsonify({
1027
- "status": "error",
1028
- "message": str(e)
1029
- }), 400
1030
-
1031
 
1032
 
1033
 
 
982
  @app.route('/calculation', methods=['POST'])
983
  def handle_calculation():
984
  try:
 
985
  raw_data = request.json
986
  print("\n=== ПРИНЯТЫЕ ДАННЫЕ ===")
987
+ print(raw_data)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
988
 
989
+ # 1. Извлекаем значения азота из запроса
990
+ no3 = float(raw_data['profileSettings'].get('N (NO3-)', 0))
991
+ nh4 = float(raw_data['profileSettings'].get('N (NH4+)', 0))
992
+ liters = int(raw_data['profileSettings'].get('liters', VOLUME_LITERS))
993
 
994
+ # 2. Создаём калькулятор с РУЧНОЙ установкой азота
995
+ calculator = NutrientCalculator(volume_liters=liters)
996
+
997
+ # 3. ПЕРЕЗАПИСЫВАЕМ расчёт азота (главное исправление!)
998
+ calculator.target_profile.update({
999
+ 'N (NO3-)': no3,
1000
+ 'N (NH4+)': nh4
1001
+ })
1002
 
1003
+ # 4. Устанавливаем кастомные удобрения
1004
+ calculator.fertilizers = convert_client_data(raw_data['fertilizerConstants'])
1005
+
1006
+ # 5. Запускаем расчёт
1007
  calculator.calculate()
1008
 
1009
+ return jsonify(calculator.get_web_results())
 
 
 
 
 
 
1010
 
1011
  except Exception as e:
1012
+ print(f"Ошибка: {str(e)}")
1013
+ return jsonify({"error": str(e)}), 500
 
 
 
 
1014
 
1015
 
1016