File size: 6,769 Bytes
bafbb72
 
a88a5e4
 
bd2e3ec
a88a5e4
 
 
 
 
 
 
 
 
 
 
 
bafbb72
7948f84
bafbb72
 
7948f84
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1ba948e
7948f84
 
 
 
 
 
 
 
 
 
 
 
bafbb72
 
 
 
a88a5e4
 
 
 
 
 
 
aedee99
a88a5e4
 
 
 
 
 
6d22646
a88a5e4
 
 
 
6d22646
a88a5e4
 
 
6d22646
a88a5e4
 
 
 
 
 
 
 
 
7948f84
a88a5e4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bafbb72
a88a5e4
 
 
 
 
 
 
 
 
bafbb72
 
a88a5e4
 
 
 
 
41a94d6
bafbb72
 
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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
import gradio as gr

# ๋กœ๊ทธ์ธ ๊ฒ€์ฆ ํ•จ์ˆ˜
def verify_credentials(username, password):
    if username == "surppp" and password == "useb48":
        return True, "๋กœ๊ทธ์ธ ์„ฑ๊ณต!"
    else:
        return False, "์•„์ด๋”” ๋˜๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ํ‹€๋ ธ์Šต๋‹ˆ๋‹ค."

# ๋กœ๊ทธ์ธ ์ฒ˜๋ฆฌ ํ•จ์ˆ˜
def login(username, password):
    success, message = verify_credentials(username, password)
    if success:
        return gr.update(visible=False), gr.update(visible=True), gr.update(value="")
    else:
        return gr.update(visible=True), gr.update(visible=False), gr.update(value=message)

# ๊ด‘๊ณ  ์ „๋žต ๋ถ„์„ ํ•จ์ˆ˜
def ๊ด‘๊ณ _์ „๋žต_์ถ”์ฒœ(ad_type, click_rate, conversion_rate):
    result = ""

    if ad_type == "๊ฒ€์ƒ‰ ๊ด‘๊ณ ":
        if click_rate < 1.3 and conversion_rate < 3:
            result = (
                "๊ฒ€์ƒ‰ ๊ด‘๊ณ  ์ „๋žต: ํด๋ฆญ๋ฅ ๊ณผ ์ „ํ™˜์œจ์ด ๋ชจ๋‘ ๋‚ฎ์Šต๋‹ˆ๋‹ค. "
                "ํด๋ฆญ๋ฅ  ๊ฐœ์„ ์„ ์šฐ์„ ์ ์œผ๋กœ ๊ณ ๋ คํ•˜์„ธ์š”. "
                "์ผ์˜ˆ์‚ฐ์„ ๋†’์ด๊ณ  ๊ด‘๊ณ ์ˆ˜์ต๋ฅ (ROAS)์„ 500% ์ดํ•˜๋กœ ๋‚ฎ์ถฐ๋ณด์„ธ์š”. "
                "ํƒ€๊ฒŸ ํ‚ค์›Œ๋“œ๋ฅผ ์žฌ๊ฒ€ํ† ํ•˜๊ณ  ๊ณ ๊ฐ์ธต์„ ๊ตฌ์ฒดํ™”ํ•˜์„ธ์š”."
            )
        elif click_rate < 1.3 and conversion_rate >= 3:
            result = (
                "๊ฒ€์ƒ‰ ๊ด‘๊ณ  ์ „๋žต: ํด๋ฆญ๋ฅ ์ด ๋‚ฎ๊ณ  ์ „ํ™˜์œจ์ด ๋†’์Šต๋‹ˆ๋‹ค. "
                "ํด๋ฆญ์„ ๋งŽ์ด ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ๊ด‘๊ณ ๋ฅผ ์กฐ์ •ํ•˜์„ธ์š”. "
                "์ธ๋„ค์ผ ์ด๋ฏธ์ง€๋ฅผ ํ›„ํ‚น์ด ๊ฐ•ํ•œ ์Šคํƒ€์ผ๋กœ ๋ฐ”๊พธ๊ณ , ์ผ์˜ˆ์‚ฐ์„ 30% ๋†’์ด์„ธ์š”. "
                "๊ด‘๊ณ ์ˆ˜์ต๋ฅ (ROAS)์„ 450% ์ดํ•˜๋กœ ๋‚ฎ์ถ”๋Š” ๊ฒƒ๋„ ๊ณ ๋ คํ•˜์„ธ์š”."
            )
        elif click_rate >= 1.3 and conversion_rate < 3:
            result = (
                "๊ฒ€์ƒ‰ ๊ด‘๊ณ  ์ „๋žต: ํด๋ฆญ๋ฅ ์€ ๋†’์œผ๋‚˜ ์ „ํ™˜์œจ์ด ๋‚ฎ์Šต๋‹ˆ๋‹ค. "
                "์ „ํ™˜์œจ์„ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•œ ์ƒ์„ธํŽ˜์ด์ง€ ๋ฐ ๋ฆฌ๋ทฐ๋ฅผ ์ ๊ฒ€ํ•˜์„ธ์š”. "
                "๊ด‘๊ณ ์ˆ˜์ต๋ฅ (ROAS)์„ ์œ ์ง€ํ•˜๋ฉฐ ์ „ํ™˜์œจ ๋ณ€ํ™”๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜์„ธ์š”."
            )
        elif click_rate >= 1.3 and conversion_rate >= 3:
            result = (
                "๊ฒ€์ƒ‰ ๊ด‘๊ณ  ์ „๋žต: ํด๋ฆญ๋ฅ ๊ณผ ์ „ํ™˜์œจ์ด ๋ชจ๋‘ ๋†’์Šต๋‹ˆ๋‹ค. "
                "๊ด‘๊ณ ๋น„๋ฅผ ๋” ๋†’์ด๊ฑฐ๋‚˜ ์ถ”๊ฐ€ ๊ด‘๊ณ ๋ฅผ ์ง‘ํ–‰ํ•ด ์„ฑ๊ณผ๋ฅผ ๊ทน๋Œ€ํ™”ํ•˜์„ธ์š”. "
                "๋‹ค๋ฅธ ๊ด‘๊ณ  ์ฑ„๋„์—์„œ๋„ ๋™์ผํ•œ ์„ฑ๊ณผ๋ฅผ ๋ชฉํ‘œ๋กœ ์ „๋žต์„ ๊ฒ€ํ† ํ•˜์„ธ์š”."
            )
    elif ad_type == "๋น„๊ฒ€์ƒ‰ ๊ด‘๊ณ ":
        if click_rate < 0.3 and conversion_rate < 2:
            result = (
                "๋น„๊ฒ€์ƒ‰ ๊ด‘๊ณ  ์ „๋žต: ํด๋ฆญ๋ฅ ๊ณผ ์ „ํ™˜์œจ์ด ๋ชจ๋‘ ๋‚ฎ์Šต๋‹ˆ๋‹ค. "
                "ํด๋ฆญ๋ฅ  ๊ฐœ์„ ์„ ์šฐ์„ ์ ์œผ๋กœ ๊ณ ๋ คํ•˜๊ฑฐ๋‚˜ ๊ฒ€์ƒ‰ ๊ด‘๊ณ ์— ๋” ์ง‘์ค‘ํ•˜์„ธ์š”. "
                "์ผ์˜ˆ์‚ฐ์„ ๋Š˜๋ฆฌ๊ณ  ROAS๋ฅผ 300% ์ดํ•˜๋กœ ๋‚ฎ์ถ”๋Š” ๊ฒƒ๋„ ํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค."
            )
        elif click_rate < 0.3 and conversion_rate >= 2:
            result = (
                "๋น„๊ฒ€์ƒ‰ ๊ด‘๊ณ  ์ „๋žต: ํด๋ฆญ๋ฅ ์€ ๋‚ฎ๊ณ  ์ „ํ™˜์œจ์€ ๋†’์Šต๋‹ˆ๋‹ค. "
                "ํƒ€๊ฒŸ ํ™•๋Œ€๋ฅผ ์‹œ๋„ํ•˜๊ณ  ์ดˆ๊ธฐ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜์„ธ์š”. "
                "๊ฒ€์ƒ‰ ์˜์—ญ์œผ๋กœ ์ „ํ™˜ํ•˜๋ฉด ๋†’์€ ์ „ํ™˜์œจ์„ ๋” ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒ€์ƒ‰์˜์—ญ ๊ด‘๊ณ ๋ฅผ ๋Œ๋ ค์„œ ํ‚ค์›Œ๋“œ๋ฅผ ์ฐพ๋Š”๊ฒƒ์— ๋” ์ง‘์ค‘ํ•ด๋ณด์„ธ์š”. ๋” ๋‚˜์€ ์„ฑ๊ณผ๋ฅผ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."
            )
        elif click_rate >= 0.3 and conversion_rate < 2:
            result = (
                "๋น„๊ฒ€์ƒ‰ ๊ด‘๊ณ  ์ „๋žต: ํด๋ฆญ๋ฅ ์€ ๋†’์œผ๋‚˜ ์ „ํ™˜์œจ์ด ๋‚ฎ์Šต๋‹ˆ๋‹ค. "
                "์ƒ์„ธํŽ˜์ด์ง€๋ฅผ ๊ฐœ์„ ํ•˜๊ฑฐ๋‚˜ ์ „ํ™˜์œจ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜์„ธ์š”."
            )
        elif click_rate >= 0.3 and conversion_rate >= 2:
            result = (
                "๋น„๊ฒ€์ƒ‰ ๊ด‘๊ณ  ์ „๋žต: ํด๋ฆญ๋ฅ ๊ณผ ์ „ํ™˜์œจ์ด ๋ชจ๋‘ ๋†’์Šต๋‹ˆ๋‹ค. "
                "๋น„๊ฒ€์ƒ‰ ์˜์—ญ์— ์ถ”๊ฐ€ ํˆฌ์ž๋ฅผ ๊ณ ๋ คํ•˜์„ธ์š”. "
                "๋ฉ”ํƒ€, ํ† ์Šค ๋“ฑ ์™ธ๋ถ€ ๊ด‘๊ณ  ์ฑ„๋„์„ ๋ณ‘ํ–‰ํ•˜์—ฌ ์„ฑ๊ณผ๋ฅผ ๊ทน๋Œ€ํ™”ํ•˜์„ธ์š”."
            )
    return result

# Gradio ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌ์„ฑ
with gr.Blocks() as demo:
    # ๋กœ๊ทธ์ธ UI
    with gr.Row(visible=True) as login_ui:
        gr.Markdown("## ๋กœ๊ทธ์ธ")
        username = gr.Textbox(label="์•„์ด๋””", placeholder="์•„์ด๋””๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”")
        password = gr.Textbox(label="๋น„๋ฐ€๋ฒˆํ˜ธ", type="password", placeholder="๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”")
        login_button = gr.Button("๋กœ๊ทธ์ธ")
        login_message = gr.Textbox(label="์•Œ๋ฆผ", interactive=False)

    # ๊ธฐ์กด ๊ธฐ๋Šฅ UI
    with gr.Row(visible=False) as main_ui:
        gr.Markdown("## ์œ ์ฆˆ๋น„ ์บ ํŽ˜์ธ ์ „๋žต ์ฝ”๋””๋„ค์ดํ„ฐ")
        gr.Markdown(
            """
            ### ๊ด‘๊ณ  ๊ธฐ์ค€

            **๊ฒ€์ƒ‰ ๊ด‘๊ณ **  
            ํด๋ฆญ๋ฅ (CTR):  
            - 1.3% ์ด์ƒ โ†’ ์ข‹์Œ  
            - 1.3% ๋ฏธ๋งŒ โ†’ ๊ฐœ์„  ํ•„์š”  

            ์ „ํ™˜์œจ(CVR):  
            - 3% ์ด์ƒ โ†’ ์ข‹์Œ  
            - 3% ๋ฏธ๋งŒ โ†’ ๊ฐœ์„  ํ•„์š”  

            **๋น„๊ฒ€์ƒ‰ ๊ด‘๊ณ **  
            ํด๋ฆญ๋ฅ (CTR):  
            - 0.3% ์ด์ƒ โ†’ ์ข‹์Œ  
            - 0.3% ๋ฏธ๋งŒ โ†’ ๊ฐœ์„  ํ•„์š”  

            ์ „ํ™˜์œจ(CVR):  
            - 2% ์ด์ƒ โ†’ ์ข‹์Œ  
            - 2% ๋ฏธ๋งŒ โ†’ ๊ฐœ์„  ํ•„์š”  
            """
        )
        with gr.Row():
            ad_type_dropdown = gr.Dropdown(
                choices=["๊ฒ€์ƒ‰ ๊ด‘๊ณ ", "๋น„๊ฒ€์ƒ‰ ๊ด‘๊ณ "],
                label="๊ด‘๊ณ  ์œ ํ˜• ์„ ํƒ",
                value="๊ฒ€์ƒ‰ ๊ด‘๊ณ ",
            )
        with gr.Row():
            click_rate_slider = gr.Slider(
                minimum=0.01, maximum=100.0, step=0.01, label="ํด๋ฆญ๋ฅ (CTR) ์ž…๋ ฅ (%)", value=1.0, interactive=True
            )
            conversion_rate_slider = gr.Slider(
                minimum=0.01, maximum=100.0, step=0.01, label="์ „ํ™˜์œจ(CVR) ์ž…๋ ฅ (%)", value=3.0, interactive=True
            )

        result_output = gr.Textbox(label="์ถ”์ฒœ ๊ด‘๊ณ  ์ „๋žต")

        # ์ด๋ฒคํŠธ ์—ฐ๊ฒฐ
        ad_type_dropdown.change(
            fn=๊ด‘๊ณ _์ „๋žต_์ถ”์ฒœ,
            inputs=[ad_type_dropdown, click_rate_slider, conversion_rate_slider],
            outputs=result_output
        )
        click_rate_slider.change(
            fn=๊ด‘๊ณ _์ „๋žต_์ถ”์ฒœ,
            inputs=[ad_type_dropdown, click_rate_slider, conversion_rate_slider],
            outputs=result_output
        )
        conversion_rate_slider.change(
            fn=๊ด‘๊ณ _์ „๋žต_์ถ”์ฒœ,
            inputs=[ad_type_dropdown, click_rate_slider, conversion_rate_slider],
            outputs=result_output
        )

    # ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ ํด๋ฆญ ์ด๋ฒคํŠธ
    login_button.click(
        login,
        inputs=[username, password],
        outputs=[login_ui, main_ui, login_message]
    )

demo.launch()