File size: 6,534 Bytes
f154467
235357d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
783515c
5c41f19
d1bdca6
6711778
783515c
c07d010
eb20c2a
5c41f19
4c358e9
 
524bab7
 
53d4cd7
 
 
524bab7
 
 
 
 
 
 
4c358e9
245adf7
4c358e9
 
 
245adf7
53d4cd7
 
719256a
53d4cd7
719256a
4c358e9
 
 
41c6af9
 
 
 
 
 
7a6064c
53d4cd7
72d073e
 
7a6064c
 
 
72d073e
 
7a6064c
 
 
72d073e
 
ef0e027
 
 
 
 
4c358e9
 
 
df1915c
 
 
 
235357d
df1915c
 
 
 
 
235357d
df1915c
 
 
 
 
235357d
df1915c
5c41f19
c07d010
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
import gradio as gr
import plotly.graph_objects as go

# Функция для создания спидометра
def create_gauge(value):
    fig = go.Figure(go.Indicator(
        mode="gauge+number",
        value=value,
        gauge={
            'axis': {'range': [0, 100]},
            'bar': {'color': "black"},  # Цвет стрелки
            'steps': [
                {'range': [0, 40], 'color': "#55efc4"},  # Мягкий зеленый
                {'range': [40, 70], 'color': "#ffeaa7"},  # Желтый
                {'range': [70, 100], 'color': "#ff7675"}  # Мягкий красный
            ],
            'threshold': {
                'line': {'color': "black", 'width': 4},
                'thickness': 0.75,
                'value': value
            }
        },
        number={'font': {'size': 48}}  # Размер шрифта числа
    ))
    fig.update_layout(paper_bgcolor="#f8f9fa",  # Цвет фона
                      font={'color': "#2d3436", 'family': "Arial"})  # Цвет текста
    return fig

# Значения для спидометров
def get_success_forecast_1():
    return create_gauge(76)

def get_success_forecast_2():
    return create_gauge(85)

def get_success_forecast_3():
    return create_gauge(62)

# Функция для смены вкладки
def change_tab(id):
    return gr.Tabs(selected=id)

with gr.Blocks() as demo:
    with gr.Tabs() as tabs:
        
        # Вкладка 1: Исходные данные
        with gr.TabItem("Исходные данные", id=0):
            with gr.Row():
                with gr.Column():
                    desc = gr.Textbox(label="Описание предложения", lines=5)  # Увеличенная высота
                    benefits = gr.Textbox(label="Преимущества", lines=5)  # Увеличенная высота
                    key_message = gr.Textbox(label="Ключевое сообщение", lines=5)  # Увеличенная высота
                with gr.Column():
                    gender = gr.Dropdown(label="Пол", choices=["Мужчина", "Женщина", "Не указан"])
                    generation = gr.Dropdown(label="Поколение", choices=["Поколение Z", "Миллениалы", "Поколение X", "Бэби-бумеры"])
                    psychotype = gr.Textbox(label="Психотип")
                    business_stage = gr.Textbox(label="Стадия бизнеса")
                    industry = gr.Textbox(label="Отрасль")
                    opf = gr.Textbox(label="ОПФ")

            btn_to_prompts = gr.Button("Создать")
            btn_to_prompts.click(fn=change_tab, inputs=[gr.Number(value=1, visible=False)], outputs=tabs)
        
        # Вкладка 2: Промпты
        with gr.TabItem("Ассистент", id=1):
            with gr.Row():
                with gr.Column():
                    non_personalized_prompt = gr.Textbox(label="Задание для копирайтера", lines=25)  # Увеличенная высота
                with gr.Column():
                    personalized_prompt = gr.Textbox(label="Задание для редактора", lines=25)  # Увеличенная высота
            
        # Вкладка 3: Сообщения
        with gr.TabItem("Сообщения", id=2):

            # Заголовки столбцов
            with gr.Row():
                gr.Markdown("### Копирайтер")  # Название для столбца "Копирайтер"
                gr.Markdown("### Редактор")  # Название для столбца "Редактор"
                
            # Первый ряд
            with gr.Row():
                non_personalized_1 = gr.Textbox(label="Стандартное сообщение 1", lines=4, interactive=False)
                personalized_1 = gr.Textbox(label="Персонализированное сообщение 1", lines=4, interactive=False)

            # Второй ряд
            with gr.Row():
                non_personalized_2 = gr.Textbox(label="Стандартное сообщение 2", lines=4, interactive=False)
                personalized_2 = gr.Textbox(label="Персонализированное сообщение 2", lines=4, interactive=False)

            # Третий ряд
            with gr.Row():
                non_personalized_3 = gr.Textbox(label="Стандартное сообщение 3", lines=4, interactive=False)
                personalized_3 = gr.Textbox(label="Персонализированное сообщение 3", lines=4, interactive=False)

            # Четвертый ряд
            with gr.Row():
                btn_check = gr.Button("Проверить", elem_id="check3")
                btn_check.click(fn=change_tab, inputs=[gr.Number(value=3, visible=False)], outputs=tabs)

        # Вкладка 4: Проверка
        with gr.TabItem("Проверка", id=3):
            # Первый ряд
            with gr.Row():
                personalized_message_1 = gr.Textbox(label="Персонализированное сообщение 1", lines=4)
                check_message_1 = gr.Textbox(label="Проверка сообщения 1", lines=4)
                success_forecast_1 = gr.Plot(value=get_success_forecast_1(), label="Прогноз успешности сообщения 1")  # Спидометр 1
            
            # Второй ряд
            with gr.Row():
                personalized_message_2 = gr.Textbox(label="Персонализированное сообщение 2", lines=4)
                check_message_2 = gr.Textbox(label="Проверка сообщения 2", lines=4)
                success_forecast_2 = gr.Plot(value=get_success_forecast_2(), label="Прогноз успешности сообщения 2")  # Спидометр 2
            
            # Третий ряд
            with gr.Row():
                personalized_message_3 = gr.Textbox(label="Персонализированное сообщение 3", lines=4)
                check_message_3 = gr.Textbox(label="Проверка сообщения 3", lines=4)
                success_forecast_3 = gr.Plot(value=get_success_forecast_3(), label="Прогноз успешности сообщения 3")  # Спидометр 3


demo.launch()