|
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 |
|
|
|
|
|
with gr.Blocks() as demo: |
|
|
|
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) |
|
|
|
|
|
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() |
|
|