DmitrMakeev commited on
Commit
7a7932a
·
verified ·
1 Parent(s): d5710ba

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +8 -15
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._apply(fert_name, main_element, required_ppm)
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._apply(fert_name, nitrogen_type, required_ppm)
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._apply(fert_name, main_element, required_ppm)
828
 
829
- def _apply(self, fert_name, main_element, required_ppm):
 
830
  if required_ppm <= 0:
831
  return
832
-
833
  try:
834
  content = self.fertilizers[fert_name][main_element]
835
- grams = (required_ppm * self.volume) / (content * 1000)
 
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("Исходный расчёт азота:")