Spaces:
Running
Running
Update app.py
Browse files
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(
|
| 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 |
-
|
|
|
|
|
|
|
| 1009 |
|
| 1010 |
-
# Создаём
|
| 1011 |
-
calculator = NutrientCalculator(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"Ошибка
|
| 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 |
|