| import gradio as gr |
| import pandas as pd |
| from app.controller.session_loader import load_google_ads_data |
|
|
|
|
| def get_dashboard_data(): |
| dfs = load_google_ads_data() |
| df = dfs["campaigns"].copy() |
|
|
| if df.empty: |
| return 0, 0, 0, 0, pd.DataFrame(columns=["Campaign", "Spend", "Leads", "CPL", "CTR"]) |
|
|
| df["leads"] = df.get("conversions", 0) |
| df["cpl"] = df["cost"] / df["leads"].replace(0, 1) |
| df["ctr"] = df.get("ctr", 0) |
|
|
| formatted = pd.DataFrame({ |
| "Campaign": df["name"], |
| "Spend": df["cost"], |
| "Leads": df["leads"], |
| "CPL": df["cpl"], |
| "CTR": df["ctr"], |
| }) |
|
|
| return ( |
| round(formatted["Spend"].sum(), 2), |
| int(formatted["Leads"].sum()), |
| round(formatted["CPL"].mean(), 2), |
| len(formatted), |
| formatted |
| ) |
|
|
|
|
| def build_dashboard(): |
| |
| campaign_table = gr.Dataframe( |
| label="Campaign Performance", |
| interactive=True |
| ) |
| return campaign_table |
|
|