Spaces:
Sleeping
Sleeping
Update app.py
Browse files
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 |
-
|
|
|
|
|
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=
|
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=
|
109 |
-
generation_dropdown = gr.Dropdown(label="Поколение", choices=generations, value=
|
110 |
-
psychotype_dropdown = gr.Dropdown(label="Психотип", choices=psychotypes, value=
|
111 |
-
business_stage_dropdown = gr.Dropdown(label="Стадия бизнеса", choices=business_stages, value=
|
112 |
-
industry_dropdown = gr.Dropdown(label="Отрасль", choices=industries, value=
|
113 |
-
opf_dropdown = gr.Dropdown(label="ОПФ", choices=opfs, value=
|
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 |
|