Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -744,54 +744,35 @@ class NutrientCalculator:
|
|
744 |
def calculate(self):
|
745 |
# Добавляем аммонийный азот
|
746 |
self._apply_fertilizer("Аммоний азотнокислый", "N (NH4+)", self.target["N (NH4+)"])
|
747 |
-
|
748 |
# Добавляем фосфор
|
749 |
self._apply_fertilizer("Монофосфат калия", "P", self.target["P"])
|
750 |
-
|
751 |
# Добавляем магний через "Сульфат магния", если флаг включен
|
752 |
if self.use_magnesium_sulfate == 1:
|
753 |
mg_needed = self.target["Mg"] - self.actual["Mg"]
|
754 |
if mg_needed > 0:
|
755 |
self._apply_fertilizer("Сульфат магния", "Mg", mg_needed * (1 - self.magnesium_nitrate_ratio))
|
756 |
-
|
757 |
# Балансируем калий и серу
|
758 |
self._balance_k_s()
|
759 |
-
|
760 |
# Добавляем оставшийся магний через "Магний азотнокислый", если коэффициент > 0
|
761 |
if self.magnesium_nitrate_ratio > 0:
|
762 |
mg_remaining = self.target["Mg"] - self.actual["Mg"]
|
763 |
if mg_remaining > 0:
|
764 |
self._apply_fertilizer("Магний азотнокислый", "Mg", mg_remaining)
|
765 |
-
|
766 |
# Распределяем кальций
|
767 |
self._distribute_calcium()
|
768 |
-
|
769 |
# Балансируем нитратный азот
|
770 |
no3_needed = self.target["N (NO3-)"] - self.actual["N (NO3-)"]
|
771 |
if no3_needed > 0:
|
772 |
self._apply_fertilizer("Калий азотнокислый", "N (NO3-)", no3_needed)
|
773 |
-
|
774 |
return self._verify_results()
|
775 |
|
776 |
-
def _balance_k_s(self):
|
777 |
-
k_needed = self.target["K"] - self.actual["K"]
|
778 |
-
s_needed = self.target["S"] - self.actual["S"]
|
779 |
-
|
780 |
-
# Используем "Калий сернокислый" для баланса K и S
|
781 |
-
if k_needed > 0 and s_needed > 0:
|
782 |
-
k_fraction = self.fertilizers["Калий сернокислый"].get("K", 0)
|
783 |
-
s_fraction = self.fertilizers["Калий сернокислый"].get("S", 0)
|
784 |
-
if k_fraction == 0 or s_fraction == 0:
|
785 |
-
print("ПРЕДУПРЕЖДЕНИЕ: Удобрение 'Калий сернокислый' содержит нулевые значения!")
|
786 |
-
return
|
787 |
-
k_from_k2so4 = min(k_needed, s_needed * k_fraction / s_fraction)
|
788 |
-
self._apply_fertilizer("Калий сернокислый", "K", k_from_k2so4)
|
789 |
-
|
790 |
-
# Оставшийся калий добавляем через "Калий азотнокислый"
|
791 |
-
remaining_k = self.target["K"] - self.actual["K"]
|
792 |
-
if remaining_k > 0:
|
793 |
-
self._apply_fertilizer("Калий азотнокислый", "K", remaining_k)
|
794 |
-
|
795 |
def _apply_fertilizer(self, name, element, target_ppm):
|
796 |
if name not in self.fertilizers:
|
797 |
raise KeyError(f"Удобрение '{name}' не найдено!")
|
@@ -809,6 +790,8 @@ def _balance_k_s(self):
|
|
809 |
def _balance_k_s(self):
|
810 |
k_needed = self.target["K"] - self.actual["K"]
|
811 |
s_needed = self.target["S"] - self.actual["S"]
|
|
|
|
|
812 |
if k_needed > 0 and s_needed > 0:
|
813 |
k_fraction = self.fertilizers["Калий сернокислый"].get("K", 0)
|
814 |
s_fraction = self.fertilizers["Калий сернокислый"].get("S", 0)
|
@@ -817,6 +800,8 @@ def _balance_k_s(self):
|
|
817 |
return
|
818 |
k_from_k2so4 = min(k_needed, s_needed * k_fraction / s_fraction)
|
819 |
self._apply_fertilizer("Калий сернокислый", "K", k_from_k2so4)
|
|
|
|
|
820 |
remaining_k = self.target["K"] - self.actual["K"]
|
821 |
if remaining_k > 0:
|
822 |
self._apply_fertilizer("Калий азотнокислый", "K", remaining_k)
|
@@ -858,6 +843,7 @@ def _balance_k_s(self):
|
|
858 |
'total_ppm': round(sum(self.actual.values()), self.rounding_precision)
|
859 |
}
|
860 |
|
|
|
861 |
def generate_report(self, results):
|
862 |
fert_table = []
|
863 |
for name, data in results['fertilizers'].items():
|
|
|
744 |
def calculate(self):
|
745 |
# Добавляем аммонийный азот
|
746 |
self._apply_fertilizer("Аммоний азотнокислый", "N (NH4+)", self.target["N (NH4+)"])
|
747 |
+
|
748 |
# Добавляем фосфор
|
749 |
self._apply_fertilizer("Монофосфат калия", "P", self.target["P"])
|
750 |
+
|
751 |
# Добавляем магний через "Сульфат магния", если флаг включен
|
752 |
if self.use_magnesium_sulfate == 1:
|
753 |
mg_needed = self.target["Mg"] - self.actual["Mg"]
|
754 |
if mg_needed > 0:
|
755 |
self._apply_fertilizer("Сульфат магния", "Mg", mg_needed * (1 - self.magnesium_nitrate_ratio))
|
756 |
+
|
757 |
# Балансируем калий и серу
|
758 |
self._balance_k_s()
|
759 |
+
|
760 |
# Добавляем оставшийся магний через "Магний азотнокислый", если коэффициент > 0
|
761 |
if self.magnesium_nitrate_ratio > 0:
|
762 |
mg_remaining = self.target["Mg"] - self.actual["Mg"]
|
763 |
if mg_remaining > 0:
|
764 |
self._apply_fertilizer("Магний азотнокислый", "Mg", mg_remaining)
|
765 |
+
|
766 |
# Распределяем кальций
|
767 |
self._distribute_calcium()
|
768 |
+
|
769 |
# Балансируем нитратный азот
|
770 |
no3_needed = self.target["N (NO3-)"] - self.actual["N (NO3-)"]
|
771 |
if no3_needed > 0:
|
772 |
self._apply_fertilizer("Калий азотнокислый", "N (NO3-)", no3_needed)
|
773 |
+
|
774 |
return self._verify_results()
|
775 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
776 |
def _apply_fertilizer(self, name, element, target_ppm):
|
777 |
if name not in self.fertilizers:
|
778 |
raise KeyError(f"Удобрение '{name}' не найдено!")
|
|
|
790 |
def _balance_k_s(self):
|
791 |
k_needed = self.target["K"] - self.actual["K"]
|
792 |
s_needed = self.target["S"] - self.actual["S"]
|
793 |
+
|
794 |
+
# Используем "Калий сернокислый" для баланса K и S
|
795 |
if k_needed > 0 and s_needed > 0:
|
796 |
k_fraction = self.fertilizers["Калий сернокислый"].get("K", 0)
|
797 |
s_fraction = self.fertilizers["Калий сернокислый"].get("S", 0)
|
|
|
800 |
return
|
801 |
k_from_k2so4 = min(k_needed, s_needed * k_fraction / s_fraction)
|
802 |
self._apply_fertilizer("Калий сернокислый", "K", k_from_k2so4)
|
803 |
+
|
804 |
+
# Оставшийся калий добавляем через "Калий азотнокислый"
|
805 |
remaining_k = self.target["K"] - self.actual["K"]
|
806 |
if remaining_k > 0:
|
807 |
self._apply_fertilizer("Калий азотнокислый", "K", remaining_k)
|
|
|
843 |
'total_ppm': round(sum(self.actual.values()), self.rounding_precision)
|
844 |
}
|
845 |
|
846 |
+
|
847 |
def generate_report(self, results):
|
848 |
fert_table = []
|
849 |
for name, data in results['fertilizers'].items():
|