DmitrMakeev commited on
Commit
7d93a53
·
verified ·
1 Parent(s): ae24f7a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +62 -0
app.py CHANGED
@@ -900,7 +900,69 @@ class NutrientCalculator:
900
  def _format_profile(self):
901
  return [{'element': k, 'ppm': round(v, 1)}
902
  for k, v in self.actual_profile.items()]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
903
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
904
 
905
  if __name__ == "__main__":
906
  try:
 
900
  def _format_profile(self):
901
  return [{'element': k, 'ppm': round(v, 1)}
902
  for k, v in self.actual_profile.items()]
903
+ def calculate_deficits(self):
904
+ """Вычисляет остаточные дефициты элементов"""
905
+ return {
906
+ k: max(self.target_profile[k] - self.actual_profile[k], 0)
907
+ for k in self.target_profile
908
+ }
909
+
910
+ def get_web_results(self):
911
+ """Возвращает данные в формате для web-интерфейса"""
912
+ return {
913
+ 'fertilizers': self._format_fertilizers(),
914
+ 'profile': self._format_profile(),
915
+ 'ec': self.calculate_ec(),
916
+ 'deficits': self.calculate_deficits(),
917
+ 'volume': self.volume
918
+ }
919
 
920
+ def _format_fertilizers(self):
921
+ formatted = []
922
+ for name, data in self.results.items():
923
+ fert = {
924
+ 'name': name,
925
+ 'grams': round(data['граммы'], 3),
926
+ 'adds': {}
927
+ }
928
+ for k, v in data.items():
929
+ if k.startswith('внесет'):
930
+ fert['adds'][k.replace('внесет ', '')] = round(v, 1)
931
+ formatted.append(fert)
932
+ return formatted
933
+
934
+ def _format_profile(self):
935
+ return [{'element': k.replace(' (NO3-)', '-NO3').replace(' (NH4+)', '-NH4'),
936
+ 'ppm': round(v, 1)}
937
+ for k, v in self.actual_profile.items()]
938
+
939
+ # Функции для преобразования данных от клиента
940
+ FERTILIZER_NAME_MAP = {
941
+ "CaN2O6": "Кальциевая селитра",
942
+ "KNO3": "Калий азотнокислый",
943
+ "K2SO4": "Калий сернокислый",
944
+ "NH4NO3": "Аммоний азотнокислый",
945
+ "MgSO4": "Сульфат магния",
946
+ "KH2PO4": "Монофосфат калия"
947
+ }
948
+
949
+ NUTRIENT_MAP = {
950
+ "NO3": "N (NO3-)",
951
+ "NH4": "N (NH4+)"
952
+ }
953
+
954
+ def convert_client_data(client_data):
955
+ """Преобразует данные от клиента в серверный формат"""
956
+ server_format = {}
957
+ for chem_form, nutrients in client_data.items():
958
+ fert_name = FERTILIZER_NAME_MAP.get(chem_form, chem_form)
959
+ server_format[fert_name] = {}
960
+
961
+ for element, value in nutrients.items():
962
+ server_element = NUTRIENT_MAP.get(element, element)
963
+ server_format[fert_name][server_element] = value
964
+
965
+ return server_format
966
 
967
  if __name__ == "__main__":
968
  try: