fruitpicker01's picture
Update app.py
7eb0855 verified
raw
history blame
7.4 kB
import gradio as gr
import pandas as pd
# Функция для загрузки данных из вкладок Excel
def load_dropdown_data(file_path, sheet_name, column_name):
"""Загружает уникальные значения из столбца на заданной вкладке и добавляет вариант 'Не выбрано'."""
try:
data = pd.read_excel(file_path, sheet_name=sheet_name)
values = ["Не выбрано"] + data[column_name].dropna().unique().tolist()
print(f"Загружено для '{sheet_name}' столбца '{column_name}': {values}")
return values
except Exception as e:
print(f"Ошибка загрузки данных из листа '{sheet_name}': {e}")
return ["Не выбрано"]
# Путь к файлу Excel
file_path = "Исходные данные.xlsx"
# Загрузка данных из всех вкладок
products = load_dropdown_data(file_path, "Продукты", "Наименование продукта")
data_products = pd.read_excel(file_path, sheet_name="Продукты")
genders = load_dropdown_data(file_path, "Пол", "Пол")
generations = load_dropdown_data(file_path, "Поколение", "Поколение")
psychotypes = load_dropdown_data(file_path, "Психотип", "Психотип")
business_stages = load_dropdown_data(file_path, "Стадия бизнеса", "Стадия бизнеса")
industries = load_dropdown_data(file_path, "Отрасль", "Отрасль")
opfs = load_dropdown_data(file_path, "ОПФ", "ОПФ")
# Функция для заполнения полей на основе выбранного продукта
def fill_product_details(selected_product, data):
if selected_product and selected_product != "Не выбрано":
product_row = data[data["Наименование продукта"] == selected_product].iloc[0]
return (
product_row["Описание предложения"],
product_row["Наименование продукта"],
product_row["Преимущества"],
product_row["Ключевое сообщение"]
)
return "", "", "", ""
# Создание интерфейса
with gr.Blocks(theme="default") as demo:
gr.Markdown("**Процент созданных SMS по выбранному продукту**")
# Прогресс-бар
progress_bar_html = """
<div style="width: 100%; background-color: #e0e0e0; border-radius: 10px; overflow: hidden;">
<div style="width: 0%; background-color: #4caf50; height: 20px; text-align: center; color: white;">
0%
</div>
</div>
"""
gr.HTML(progress_bar_html)
with gr.Row():
with gr.Column(scale=1):
gr.Markdown("**Продукт**")
product_dropdown = gr.Dropdown(
label="Продукт",
choices=products, # Список с опцией "Не выбрано" и данными из файла
value="Не выбрано" # "Не выбрано" установлено по умолчанию
)
description = gr.Textbox(label="Описание предложения", lines=5, value="")
product_name = gr.Textbox(label="Наименование продукта", lines=1, value="")
benefits = gr.Textbox(label="Преимущества", lines=9, value="")
key_message = gr.Textbox(label="Ключевое сообщение", lines=2, value="")
# Обработчик выбора продукта
product_dropdown.change(
fn=lambda selected: fill_product_details(selected, data_products),
inputs=[product_dropdown],
outputs=[description, product_name, benefits, key_message]
)
with gr.Column(scale=1):
gr.Markdown("**Клиент**")
gender_dropdown = gr.Dropdown(label="Пол", choices=genders, value="Не выбрано")
generation_dropdown = gr.Dropdown(label="Поколение", choices=generations, value="Не выбрано")
psychotype_dropdown = gr.Dropdown(label="Психотип", choices=psychotypes, value="Не выбрано")
business_stage_dropdown = gr.Dropdown(label="Стадия бизнеса", choices=business_stages, value="Не выбрано")
industry_dropdown = gr.Dropdown(label="Отрасль", choices=industries, value="Не выбрано")
opf_dropdown = gr.Dropdown(label="ОПФ", choices=opfs, value="Не выбрано")
chosen_approach = gr.Textbox(label="Выбранный подход", lines=1, value="")
presence_in_db = gr.Textbox(label="Наличие в базе", lines=1, value="", interactive=False)
# Кнопки: Вернуть параметры, Создать персонализированное SMS
with gr.Row():
return_params_btn = gr.Button("Вернуть параметры предыдущего запроса")
create_personal_sms_btn = gr.Button("Создать персонализированное SMS")
# Блок для Модель 1, Промпт 1, SMS 1
with gr.Row():
with gr.Column():
model_1_name = gr.Textbox(label="Модель 1", value="Скрыто для слепого тестирования", interactive=False)
prompt_1 = gr.Textbox(label="Промпт 1", value="Скрыто для слепого тестирования", interactive=False)
sms_1 = gr.Textbox(label="SMS 1", lines=3, value="")
# Блок для Модель 2, Промпт 2, SMS 2
with gr.Column():
model_2_name = gr.Textbox(label="Модель 2", value="Скрыто для слепого тестирования", interactive=False)
prompt_2 = gr.Textbox(label="Промпт 2", value="Скрыто для слепого тестирования", interactive=False)
sms_2 = gr.Textbox(label="SMS 2", lines=3, value="")
# Кнопки выбора SMS
with gr.Row():
prefer_sms_1_btn = gr.Button("Я предпочитаю это SMS")
prefer_sms_2_btn = gr.Button("Я предпочитаю это SMS")
# Кнопка "Перегенерировать SMS"
regen_btn = gr.Button("Перегенерировать SMS (не нравится ни одно из SMS)")
# Комментарии к SMS 1 и 2
with gr.Row():
comment_sms_1 = gr.Textbox(label="Комментарий к SMS 1", lines=2, value="")
comment_sms_2 = gr.Textbox(label="Комментарий к SMS 2", lines=2, value="")
# Откорректированные SMS
with gr.Row():
corrected_sms_1 = gr.Textbox(label="Откорректированное SMS 1", lines=3, value="")
corrected_sms_2 = gr.Textbox(label="Откорректированное SMS 2", lines=3, value="")
# Кнопки сохранения
with gr.Row():
save_sms_1_btn = gr.Button("Сохранить в базу")
save_sms_2_btn = gr.Button("Сохранить в базу")
demo.launch()