Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -806,7 +806,7 @@ class NutrientCalculator:
|
|
806 |
main_element = weight_data["main_element"]
|
807 |
required_ppm = self.target_profile[main_element] - self.actual_profile[main_element]
|
808 |
if required_ppm > 0.1:
|
809 |
-
self.
|
810 |
|
811 |
def _compensate_nitrogen(self):
|
812 |
"""Компенсация азота (NO3-, NH4+)"""
|
@@ -814,7 +814,7 @@ class NutrientCalculator:
|
|
814 |
required_ppm = self.target_profile[nitrogen_type] - self.actual_profile[nitrogen_type]
|
815 |
if required_ppm > 0.1:
|
816 |
fert_name = self.compensation_weights[nitrogen_type]["fert"]
|
817 |
-
self.
|
818 |
|
819 |
def _compensate_secondary_elements(self):
|
820 |
"""Компенсация второстепенных элементов (K, S)"""
|
@@ -824,15 +824,17 @@ class NutrientCalculator:
|
|
824 |
main_element = weight_data["main_element"]
|
825 |
required_ppm = self.target_profile[main_element] - self.actual_profile[main_element]
|
826 |
if required_ppm > 0.1:
|
827 |
-
self.
|
828 |
|
829 |
-
def
|
|
|
830 |
if required_ppm <= 0:
|
831 |
return
|
832 |
-
|
833 |
try:
|
834 |
content = self.fertilizers[fert_name][main_element]
|
835 |
-
|
|
|
836 |
|
837 |
if fert_name not in self.results:
|
838 |
result = {
|
@@ -863,15 +865,6 @@ class NutrientCalculator:
|
|
863 |
def calculate_ec(self):
|
864 |
return round(self.total_ec, 2)
|
865 |
|
866 |
-
def print_initial_nitrogen_report(self):
|
867 |
-
try:
|
868 |
-
print("Исходный расчёт азота:")
|
869 |
-
print(f" NO3-: {self.initial_n_profile['NO3-']} ppm")
|
870 |
-
print(f" NH4+: {self.initial_n_profile['NH4+']} ppm")
|
871 |
-
except Exception as e:
|
872 |
-
print(f"Ошибка при выводе отчёта: {str(e)}")
|
873 |
-
raise
|
874 |
-
|
875 |
def print_initial_nitrogen_report(self):
|
876 |
try:
|
877 |
print("Исходный расчёт азота:")
|
|
|
806 |
main_element = weight_data["main_element"]
|
807 |
required_ppm = self.target_profile[main_element] - self.actual_profile[main_element]
|
808 |
if required_ppm > 0.1:
|
809 |
+
self._apply_with_limit(fert_name, main_element, required_ppm)
|
810 |
|
811 |
def _compensate_nitrogen(self):
|
812 |
"""Компенсация азота (NO3-, NH4+)"""
|
|
|
814 |
required_ppm = self.target_profile[nitrogen_type] - self.actual_profile[nitrogen_type]
|
815 |
if required_ppm > 0.1:
|
816 |
fert_name = self.compensation_weights[nitrogen_type]["fert"]
|
817 |
+
self._apply_with_limit(fert_name, nitrogen_type, required_ppm)
|
818 |
|
819 |
def _compensate_secondary_elements(self):
|
820 |
"""Компенсация второстепенных элементов (K, S)"""
|
|
|
824 |
main_element = weight_data["main_element"]
|
825 |
required_ppm = self.target_profile[main_element] - self.actual_profile[main_element]
|
826 |
if required_ppm > 0.1:
|
827 |
+
self._apply_with_limit(fert_name, main_element, required_ppm)
|
828 |
|
829 |
+
def _apply_with_limit(self, fert_name, main_element, required_ppm):
|
830 |
+
"""Применение удобрения с ограничением по перебору"""
|
831 |
if required_ppm <= 0:
|
832 |
return
|
833 |
+
|
834 |
try:
|
835 |
content = self.fertilizers[fert_name][main_element]
|
836 |
+
max_allowed_ppm = self.target_profile[main_element] - self.actual_profile[main_element]
|
837 |
+
grams = min((required_ppm * self.volume) / (content * 1000), (max_allowed_ppm * self.volume) / (content * 1000))
|
838 |
|
839 |
if fert_name not in self.results:
|
840 |
result = {
|
|
|
865 |
def calculate_ec(self):
|
866 |
return round(self.total_ec, 2)
|
867 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
868 |
def print_initial_nitrogen_report(self):
|
869 |
try:
|
870 |
print("Исходный расчёт азота:")
|