Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -732,7 +732,7 @@ class NutrientCalculator:
|
|
732 |
self.results = {}
|
733 |
self.target_profile = BASE_PROFILE.copy()
|
734 |
self.actual_profile = {k: 0.0 for k in BASE_PROFILE}
|
735 |
-
self.fertilizers = NUTRIENT_CONTENT_IN_FERTILIZERS
|
736 |
self.total_ec = 0.0
|
737 |
|
738 |
# Расчёт азота
|
@@ -821,7 +821,7 @@ class NutrientCalculator:
|
|
821 |
content = self.fertilizers[fert_name][main_element]
|
822 |
max_allowed_ppm = self.target_profile[main_element] - self.actual_profile[main_element]
|
823 |
grams = min((required_ppm * self.volume) / (content * 1000), (max_allowed_ppm * self.volume) / (content * 1000))
|
824 |
-
|
825 |
if fert_name not in self.results:
|
826 |
result = {
|
827 |
'граммы': 0.0,
|
@@ -831,17 +831,17 @@ class NutrientCalculator:
|
|
831 |
for element in self.fertilizers[fert_name]:
|
832 |
result[f'внесет {self._label(element)}'] = 0.0
|
833 |
self.results[fert_name] = result
|
834 |
-
|
835 |
self.results[fert_name]['граммы'] += grams
|
836 |
self.results[fert_name]['миллиграммы'] += int(grams * 1000)
|
837 |
-
|
838 |
fert_ec = 0.0
|
839 |
for element, percent in self.fertilizers[fert_name].items():
|
840 |
added_ppm = (grams * percent * 1000) / self.volume
|
841 |
self.results[fert_name][f'внесет {self._label(element)}'] += added_ppm
|
842 |
self.actual_profile[element] += added_ppm
|
843 |
fert_ec += added_ppm * EC_COEFFICIENTS.get(element, 0.0015)
|
844 |
-
|
845 |
self.results[fert_name]['вклад в EC'] += fert_ec
|
846 |
self.total_ec += fert_ec
|
847 |
except KeyError as e:
|
@@ -853,8 +853,22 @@ class NutrientCalculator:
|
|
853 |
for element in self.actual_profile:
|
854 |
if self.actual_profile[element] > self.target_profile[element]:
|
855 |
overage = self.actual_profile[element] - self.target_profile[element]
|
856 |
-
self.actual_profile[element] -= overage
|
857 |
print(f"Корректировка перебора: {element} уменьшен на {overage:.2f} ppm")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
858 |
|
859 |
def calculate_ec(self):
|
860 |
return round(self.total_ec, 2)
|
|
|
732 |
self.results = {}
|
733 |
self.target_profile = BASE_PROFILE.copy()
|
734 |
self.actual_profile = {k: 0.0 for k in BASE_PROFILE}
|
735 |
+
self.fertilizers = NUTRIENT_CONTENT_IN_FERTILIZERS
|
736 |
self.total_ec = 0.0
|
737 |
|
738 |
# Расчёт азота
|
|
|
821 |
content = self.fertilizers[fert_name][main_element]
|
822 |
max_allowed_ppm = self.target_profile[main_element] - self.actual_profile[main_element]
|
823 |
grams = min((required_ppm * self.volume) / (content * 1000), (max_allowed_ppm * self.volume) / (content * 1000))
|
824 |
+
|
825 |
if fert_name not in self.results:
|
826 |
result = {
|
827 |
'граммы': 0.0,
|
|
|
831 |
for element in self.fertilizers[fert_name]:
|
832 |
result[f'внесет {self._label(element)}'] = 0.0
|
833 |
self.results[fert_name] = result
|
834 |
+
|
835 |
self.results[fert_name]['граммы'] += grams
|
836 |
self.results[fert_name]['миллиграммы'] += int(grams * 1000)
|
837 |
+
|
838 |
fert_ec = 0.0
|
839 |
for element, percent in self.fertilizers[fert_name].items():
|
840 |
added_ppm = (grams * percent * 1000) / self.volume
|
841 |
self.results[fert_name][f'внесет {self._label(element)}'] += added_ppm
|
842 |
self.actual_profile[element] += added_ppm
|
843 |
fert_ec += added_ppm * EC_COEFFICIENTS.get(element, 0.0015)
|
844 |
+
|
845 |
self.results[fert_name]['вклад в EC'] += fert_ec
|
846 |
self.total_ec += fert_ec
|
847 |
except KeyError as e:
|
|
|
853 |
for element in self.actual_profile:
|
854 |
if self.actual_profile[element] > self.target_profile[element]:
|
855 |
overage = self.actual_profile[element] - self.target_profile[element]
|
|
|
856 |
print(f"Корректировка перебора: {element} уменьшен на {overage:.2f} ppm")
|
857 |
+
|
858 |
+
# Уменьшаем фактическое значение
|
859 |
+
self.actual_profile[element] -= overage
|
860 |
+
|
861 |
+
# Обновляем результаты удобрений
|
862 |
+
for fert_name, fert_data in self.results.items():
|
863 |
+
if f'внесет {self._label(element)}' in fert_data:
|
864 |
+
fert_data[f'внесет {self._label(element)}'] -= overage
|
865 |
+
|
866 |
+
# Пересчитываем граммы удобрения
|
867 |
+
if element in self.fertilizers[fert_name]:
|
868 |
+
content = self.fertilizers[fert_name][element]
|
869 |
+
grams_to_remove = (overage * self.volume) / (content * 1000)
|
870 |
+
fert_data['граммы'] -= grams_to_remove
|
871 |
+
fert_data['миллиграммы'] -= int(grams_to_remove * 1000)
|
872 |
|
873 |
def calculate_ec(self):
|
874 |
return round(self.total_ec, 2)
|