fruitpicker01 commited on
Commit
857cd67
·
verified ·
1 Parent(s): cc4b607

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +15 -21
app.py CHANGED
@@ -3,11 +3,9 @@ import pandas as pd
3
 
4
  # Функция для загрузки данных из вкладок Excel
5
  def load_dropdown_data(file_path, sheet_name, column_name):
6
- """Загружает уникальные значения из столбца на заданной вкладке и добавляет 'Не выбрано'."""
7
  data = pd.read_excel(file_path, sheet_name=sheet_name)
8
- unique_values = data[column_name].dropna().unique().tolist()
9
- unique_values = ["Не выбрано"] + unique_values # Добавляем 'Не выбрано' в начало списка
10
- return unique_values
11
 
12
  # Путь к файлу
13
  file_path = "Исходные данные.xlsx"
@@ -26,7 +24,7 @@ approaches_data = pd.read_excel(file_path, sheet_name="Подход")
26
 
27
  # Функция для заполнения полей на основе выбранного продукта
28
  def fill_product_details(selected_product, data):
29
- if selected_product and selected_product != "Не выбрано":
30
  product_row = data[data["Наименование продукта"] == selected_product].iloc[0]
31
  return (
32
  product_row.get("Описание предложения", ""),
@@ -47,32 +45,28 @@ def get_approaches(gender, generation, psychotype, approaches_df):
47
  filters.append(approaches_df[param_name].fillna('') == param_value)
48
  else:
49
  filters.append(approaches_df[param_name].isnull() | (approaches_df[param_name].fillna('') == ''))
50
-
51
  combined_filter = filters[0]
52
  for f in filters[1:]:
53
  combined_filter &= f
54
-
55
  matching_rows = approaches_df[combined_filter]
56
  if matching_rows.empty:
57
  return "Подход не найден для выбранных параметров."
58
-
59
  approach_list = []
60
  for approaches in matching_rows['Подход']:
61
  approach_names = [a.strip() for a in str(approaches).split(',')]
62
  approach_list.extend(approach_names)
63
-
64
  # Убираем дубликаты
65
  approach_list = list(set(approach_list))
66
-
67
  selected_approaches_text_content = ', '.join(approach_list)
68
  return selected_approaches_text_content
69
 
70
  # Функция-обёртка для обновления подхода
71
  def update_approach(gender, generation, psychotype):
72
- # Заменяем 'Не выбрано' на None
73
- gender = None if gender == "Не выбрано" else gender
74
- generation = None if generation == "Не выбрано" else generation
75
- psychotype = None if psychotype == "Не выбрано" else psychotype
76
  return get_approaches(gender, generation, psychotype, approaches_data)
77
 
78
  # Создание интерфейса
@@ -95,7 +89,7 @@ with gr.Blocks(theme="default") as demo:
95
  product_dropdown = gr.Dropdown(
96
  label="Продукт",
97
  choices=products,
98
- value="Не выбрано" # Устанавливаем 'Не выбрано' как значение по умолчанию
99
  )
100
  description = gr.Textbox(label="Описание предложения", lines=5, value="")
101
  product_name = gr.Textbox(label="Наименование продукта", lines=1, value="")
@@ -111,12 +105,12 @@ with gr.Blocks(theme="default") as demo:
111
 
112
  with gr.Column(scale=1):
113
  gr.Markdown("**Клиент**")
114
- gender_dropdown = gr.Dropdown(label="Пол", choices=genders, value="Не выбрано")
115
- generation_dropdown = gr.Dropdown(label="Поколение", choices=generations, value="Не выбрано")
116
- psychotype_dropdown = gr.Dropdown(label="Психотип", choices=psychotypes, value="Не выбрано")
117
- business_stage_dropdown = gr.Dropdown(label="Стадия бизнеса", choices=business_stages, value="Не выбрано")
118
- industry_dropdown = gr.Dropdown(label="Отрасль", choices=industries, value="Не выбрано")
119
- opf_dropdown = gr.Dropdown(label="ОПФ", choices=opfs, value="Не выбрано")
120
  chosen_approach = gr.Textbox(label="Выбранный подход", lines=1, value="")
121
  presence_in_db = gr.Textbox(label="Наличие в базе", lines=1, value="", interactive=False)
122
 
 
3
 
4
  # Функция для загрузки данных из вкладок Excel
5
  def load_dropdown_data(file_path, sheet_name, column_name):
6
+ """Загружает уникальные значения из столбца на заданной вкладке."""
7
  data = pd.read_excel(file_path, sheet_name=sheet_name)
8
+ return data[column_name].dropna().unique().tolist()
 
 
9
 
10
  # Путь к файлу
11
  file_path = "Исходные данные.xlsx"
 
24
 
25
  # Функция для заполнения полей на основе выбранного продукта
26
  def fill_product_details(selected_product, data):
27
+ if selected_product:
28
  product_row = data[data["Наименование продукта"] == selected_product].iloc[0]
29
  return (
30
  product_row.get("Описание предложения", ""),
 
45
  filters.append(approaches_df[param_name].fillna('') == param_value)
46
  else:
47
  filters.append(approaches_df[param_name].isnull() | (approaches_df[param_name].fillna('') == ''))
48
+
49
  combined_filter = filters[0]
50
  for f in filters[1:]:
51
  combined_filter &= f
52
+
53
  matching_rows = approaches_df[combined_filter]
54
  if matching_rows.empty:
55
  return "Подход не найден для выбранных параметров."
56
+
57
  approach_list = []
58
  for approaches in matching_rows['Подход']:
59
  approach_names = [a.strip() for a in str(approaches).split(',')]
60
  approach_list.extend(approach_names)
61
+
62
  # Убираем дубликаты
63
  approach_list = list(set(approach_list))
64
+
65
  selected_approaches_text_content = ', '.join(approach_list)
66
  return selected_approaches_text_content
67
 
68
  # Функция-обёртка для обновления подхода
69
  def update_approach(gender, generation, psychotype):
 
 
 
 
70
  return get_approaches(gender, generation, psychotype, approaches_data)
71
 
72
  # Создание интерфейса
 
89
  product_dropdown = gr.Dropdown(
90
  label="Продукт",
91
  choices=products,
92
+ value=None
93
  )
94
  description = gr.Textbox(label="Описание предложения", lines=5, value="")
95
  product_name = gr.Textbox(label="Наименование продукта", lines=1, value="")
 
105
 
106
  with gr.Column(scale=1):
107
  gr.Markdown("**Клиент**")
108
+ gender_dropdown = gr.Dropdown(label="Пол", choices=genders, value=None)
109
+ generation_dropdown = gr.Dropdown(label="Поколение", choices=generations, value=None)
110
+ psychotype_dropdown = gr.Dropdown(label="Психотип", choices=psychotypes, value=None)
111
+ business_stage_dropdown = gr.Dropdown(label="Стадия бизнеса", choices=business_stages, value=None)
112
+ industry_dropdown = gr.Dropdown(label="Отрасль", choices=industries, value=None)
113
+ opf_dropdown = gr.Dropdown(label="ОПФ", choices=opfs, value=None)
114
  chosen_approach = gr.Textbox(label="Выбранный подход", lines=1, value="")
115
  presence_in_db = gr.Textbox(label="Наличие в базе", lines=1, value="", interactive=False)
116