DmitrMakeev commited on
Commit
4493dfe
·
verified ·
1 Parent(s): a46b330

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +20 -6
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)