useb_adv / app.py
SUHHHH's picture
Update app.py
bd2e3ec verified
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()