Spaces:
Sleeping
Sleeping
Update app.py
Browse files
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 |
-
|
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
|
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 |
|