DmitrMakeev commited on
Commit
664a3d1
·
verified ·
1 Parent(s): 0dee4ea

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +31 -40
app.py CHANGED
@@ -1098,54 +1098,45 @@ class WebNutrientCalculator:
1098
  @app.route('/calculation', methods=['POST'])
1099
  def handle_calculation():
1100
  try:
1101
- # 1. Получаем данные
1102
  data = request.get_json()
1103
  if not data:
1104
- raise ValueError("No JSON data received")
1105
-
1106
- # 2. Проверяем обязательные поля
1107
- required_fields = ['profileSettings', 'fertilizerConstants']
1108
- for field in required_fields:
1109
- if field not in data:
1110
- raise ValueError(f"Missing required field: {field}")
1111
-
1112
- # 3. Создаем калькулятор (НЕ трогая оригинальный класс)
1113
- calculator = {
1114
- 'volume': float(data['profileSettings'].get('liters', 1)),
1115
- 'target_profile': {
1116
- 'P': float(data['profileSettings'].get('P', 0)),
1117
- 'K': float(data['profileSettings'].get('K', 0)),
1118
- 'Mg': float(data['profileSettings'].get('Mg', 0)),
1119
- 'Ca': float(data['profileSettings'].get('Ca', 0)),
1120
- 'S': float(data['profileSettings'].get('S', 0)),
1121
- 'N_NO3': float(data['profileSettings'].get('N (NO3-)', 0)),
1122
- 'N_NH4': float(data['profileSettings'].get('N (NH4+)', 0))
1123
- },
1124
- 'fertilizers': data['fertilizerConstants']
1125
- }
1126
-
1127
- # 4. Выполняем расчет (упрощенная логика)
1128
- results = {
1129
- 'fertilizers': [],
1130
- 'profile': calculator['target_profile'],
1131
- 'ec': 0.0,
1132
- 'volume': calculator['volume']
1133
  }
1134
 
1135
- # 5. Возвращаем результат
1136
- return jsonify({
1137
- 'status': 'success',
1138
- 'data': results
1139
- })
1140
-
 
 
 
 
 
 
 
1141
  except Exception as e:
1142
- # 6. Обработка ошибок
1143
  return jsonify({
1144
- 'status': 'error',
1145
- 'message': str(e)
1146
  }), 500
1147
 
1148
 
1149
-
1150
  if __name__ == '__main__':
1151
  app.run(host='0.0.0.0', port=int(os.environ.get('PORT', 7860)))
 
1098
  @app.route('/calculation', methods=['POST'])
1099
  def handle_calculation():
1100
  try:
1101
+ # 1. Получаем и проверяем данные
1102
  data = request.get_json()
1103
  if not data:
1104
+ raise ValueError("Не получены данные")
1105
+
1106
+ # 2. Преобразуем данные клиента в серверный формат
1107
+ server_data = {
1108
+ 'fertilizerConstants': convert_client_data(data['fertilizerConstants']),
1109
+ 'profileSettings': {
1110
+ 'P': float(data['profileSettings']['P']),
1111
+ 'K': float(data['profileSettings']['K']),
1112
+ 'Mg': float(data['profileSettings']['Mg']),
1113
+ 'Ca': float(data['profileSettings']['Ca']),
1114
+ 'S': float(data['profileSettings']['S']),
1115
+ 'N (NO3-)': float(data['profileSettings']['N (NO3-)']), # Берем из фронтенда
1116
+ 'N (NH4+)': float(data['profileSettings']['N (NH4+)']), # Берем из фронтенда
1117
+ 'liters': int(data['profileSettings']['liters'])
1118
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1119
  }
1120
 
1121
+ # 3. Используем ТОЛЬКО оригинальный калькулятор
1122
+ calculator = NutrientCalculator(volume_liters=server_data['profileSettings']['liters'])
1123
+
1124
+ # 4. Вручную переопределяем target_profile перед расчетом
1125
+ calculator.target_profile.update(server_data['profileSettings'])
1126
+ calculator.fertilizers = server_data['fertilizerConstants']
1127
+
1128
+ # 5. Выполняем расчет
1129
+ calculator.calculate()
1130
+
1131
+ # 6. Возвращаем результаты
1132
+ return jsonify(calculator.get_web_results())
1133
+
1134
  except Exception as e:
 
1135
  return jsonify({
1136
+ "error": str(e),
1137
+ "message": "Ошибка расчета"
1138
  }), 500
1139
 
1140
 
 
1141
  if __name__ == '__main__':
1142
  app.run(host='0.0.0.0', port=int(os.environ.get('PORT', 7860)))