fruitpicker01 commited on
Commit
cc4b607
·
verified ·
1 Parent(s): 9192fe9

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +21 -15
app.py CHANGED
@@ -3,9 +3,11 @@ 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
- return data[column_name].dropna().unique().tolist()
 
 
9
 
10
  # Путь к файлу
11
  file_path = "Исходные данные.xlsx"
@@ -24,7 +26,7 @@ approaches_data = pd.read_excel(file_path, sheet_name="Подход")
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,28 +47,32 @@ def get_approaches(gender, generation, psychotype, approaches_df):
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,7 +95,7 @@ with gr.Blocks(theme="default") as demo:
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,12 +111,12 @@ with gr.Blocks(theme="default") as demo:
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
 
 
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
 
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
  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
  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
 
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