Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
@@ -886,24 +886,45 @@ def handle_calculation():
|
|
886 |
print("\n=== ВХОДНЫЕ ДАННЫЕ ===")
|
887 |
print(json.dumps(data, indent=2, ensure_ascii=False))
|
888 |
|
889 |
-
# 2.
|
890 |
-
|
891 |
-
|
892 |
-
|
893 |
-
#
|
894 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
895 |
results = calculator.calculate()
|
896 |
|
897 |
-
#
|
898 |
element_contributions = {}
|
899 |
for fert_name in calculator.fertilizers.keys():
|
900 |
grams = calculator.results[fert_name]['граммы']
|
901 |
element_contributions[fert_name] = {}
|
902 |
for element, percent in calculator.fertilizers[fert_name].items():
|
903 |
added_ppm = (grams * percent * 1000) / calculator.volume
|
904 |
-
element_contributions[fert_name][element] = round(added_ppm,
|
905 |
|
906 |
-
#
|
907 |
response = {
|
908 |
"fertilizers": results['fertilizers'],
|
909 |
"actual_profile": results['actual_profile'],
|
@@ -912,8 +933,8 @@ def handle_calculation():
|
|
912 |
"element_contributions": element_contributions,
|
913 |
"nitrogen_ratios": {
|
914 |
"NH4_RATIO": 1,
|
915 |
-
"NO3_RATIO":
|
916 |
-
"TOTAL_NITROGEN":
|
917 |
}
|
918 |
}
|
919 |
|
@@ -936,8 +957,6 @@ def handle_calculation():
|
|
936 |
|
937 |
|
938 |
|
939 |
-
|
940 |
-
|
941 |
|
942 |
|
943 |
if __name__ == '__main__':
|
|
|
886 |
print("\n=== ВХОДНЫЕ ДАННЫЕ ===")
|
887 |
print(json.dumps(data, indent=2, ensure_ascii=False))
|
888 |
|
889 |
+
# 2. Извлекаем основные параметры
|
890 |
+
fertilizer_constants = data.get("fertilizerConstants", {})
|
891 |
+
profile_settings = data.get("profileSettings", {})
|
892 |
+
|
893 |
+
# Проверяем наличие необходимых полей
|
894 |
+
if not fertilizer_constants or not profile_settings:
|
895 |
+
return jsonify({"error": "Missing fertilizerConstants or profileSettings"}), 400
|
896 |
+
|
897 |
+
# 3. Извлекаем дополнительные параметры
|
898 |
+
liters = profile_settings.get("liters", 100) # Объем раствора (литры)
|
899 |
+
rounding_precision = profile_settings.get("rounding_precision", 3) # Точность округления
|
900 |
+
activation_cacl = profile_settings.get("activation_cacl", 0) # Активация CaCl
|
901 |
+
enhancement_cacl = profile_settings.get("enhancement_cacl", 0) # Усиление CaCl
|
902 |
+
|
903 |
+
# 4. Добавляем "Кальций хлористый", если его нет
|
904 |
+
if "Кальций хлорид" not in fertilizer_constants:
|
905 |
+
fertilizer_constants["Кальций хлорид"] = {"Ca": 0.18294, "Cl": 0.32366}
|
906 |
+
|
907 |
+
# 5. Создаем и запускаем калькулятор
|
908 |
+
calculator = NutrientCalculator(
|
909 |
+
fertilizer_constants=fertilizer_constants,
|
910 |
+
profile_settings=profile_settings,
|
911 |
+
liters=liters,
|
912 |
+
rounding_precision=rounding_precision,
|
913 |
+
activation_cacl=activation_cacl,
|
914 |
+
enhancement_cacl=enhancement_cacl
|
915 |
+
)
|
916 |
results = calculator.calculate()
|
917 |
|
918 |
+
# 6. Формируем дополнительные данные
|
919 |
element_contributions = {}
|
920 |
for fert_name in calculator.fertilizers.keys():
|
921 |
grams = calculator.results[fert_name]['граммы']
|
922 |
element_contributions[fert_name] = {}
|
923 |
for element, percent in calculator.fertilizers[fert_name].items():
|
924 |
added_ppm = (grams * percent * 1000) / calculator.volume
|
925 |
+
element_contributions[fert_name][element] = round(added_ppm, rounding_precision)
|
926 |
|
927 |
+
# 7. Формируем полный ответ
|
928 |
response = {
|
929 |
"fertilizers": results['fertilizers'],
|
930 |
"actual_profile": results['actual_profile'],
|
|
|
933 |
"element_contributions": element_contributions,
|
934 |
"nitrogen_ratios": {
|
935 |
"NH4_RATIO": 1,
|
936 |
+
"NO3_RATIO": profile_settings.get("NO3_RAT", 0),
|
937 |
+
"TOTAL_NITROGEN": profile_settings.get("TOTAL_NITROG", 0)
|
938 |
}
|
939 |
}
|
940 |
|
|
|
957 |
|
958 |
|
959 |
|
|
|
|
|
960 |
|
961 |
|
962 |
if __name__ == '__main__':
|