File size: 7,436 Bytes
04c268e
2fe1da4
04c268e
15a7be8
 
d3b5e6f
7eb0855
 
0cd7447
 
7eb0855
 
 
 
 
15a7be8
7eb0855
15a7be8
7eb0855
 
 
 
 
15a7be8
 
 
 
 
 
2fe1da4
 
 
d3b5e6f
2fe1da4
 
 
 
 
 
 
 
 
 
8976186
b033846
2fe1da4
8837319
2fe1da4
 
 
 
 
 
 
8837319
4fdbb1d
 
 
 
8837319
 
3c27bb8
0cd7447
8837319
bdd1b10
8837319
bdd1b10
8837319
4fdbb1d
15a7be8
 
 
 
 
 
2fe1da4
4fdbb1d
 
0cd7447
 
 
 
 
 
8837319
e630a4b
2818eb7
0cd7447
2818eb7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15a7be8
 
4fdbb1d
2fe1da4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
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)
        unique_values = data[column_name].dropna().unique().tolist()
        values = ["Не выбрано"] + unique_values  # "Не выбрано" добавлено в начало
        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)
            generation_dropdown = gr.Dropdown(label="Поколение", choices=generations)
            psychotype_dropdown = gr.Dropdown(label="Психотип", choices=psychotypes)
            business_stage_dropdown = gr.Dropdown(label="Стадия бизнеса", choices=business_stages)
            industry_dropdown = gr.Dropdown(label="Отрасль", choices=industries)
            opf_dropdown = gr.Dropdown(label="ОПФ", choices=opfs)
            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()