Spaces:
Sleeping
Sleeping
import streamlit as st | |
import requests | |
import pandas as pd | |
import json | |
st.set_page_config(page_title="MMM Platform", layout="wide") | |
st.title("MMM Platform") | |
# Upload CSV file | |
uploaded_file = st.file_uploader("Upload your CSV file", type=["csv"]) | |
if uploaded_file is not None: | |
df = pd.read_csv(uploaded_file) | |
st.write("### Preview of Uploaded Data") | |
st.dataframe(df.head()) | |
if "DATE" in df.columns: | |
# Convert date column to datetime | |
df["DATE"] = pd.to_datetime(df["DATE"], errors="coerce") | |
min_date = df["DATE"].min() | |
max_date = df["DATE"].max() | |
# Date input selectors | |
start_date = st.date_input("Select Start Date", min_value=min_date, max_value=max_date, value=min_date) | |
end_date = st.date_input("Select End Date", min_value=min_date, max_value=max_date, value=max_date) | |
if st.button("Send"): | |
try: | |
# Prepare data for request | |
files = {"file": uploaded_file.getvalue()} | |
data = {"start_date": start_date.strftime("%Y-%m-%d"), "end_date": end_date.strftime("%Y-%m-%d")} | |
with st.spinner("Processing CSV..."): | |
# Send file and date range to FastAPI endpoint | |
response = requests.post("https://yuvabe-ai-robyn-backend.hf.space/upload_csv/", files=files, data=data) | |
if response.status_code == 200: | |
response_data = response.json() | |
st.success("CSV processed successfully!") | |
st.json(response_data) | |
st.write("### Robyn Model is Training...") | |
with st.spinner("Training Robyn model..."): | |
robyn_response = requests.post( | |
"https://yuvabe-ai-robyn-backend.hf.space/run_robyn/", | |
files=files, | |
data={"data": json.dumps(response_data["mmm_data_spec"])} | |
) | |
if robyn_response.status_code == 200: | |
robyn_data = robyn_response.json() | |
st.write(robyn_data) | |
report_url = robyn_data.get("report_urls") | |
st.write(report_url) | |
if report_url: | |
st.success("Robyn model training completed successfully!") | |
st.image(report_url) | |
else: | |
st.error("Failed to retrieve report URL.") | |
else: | |
st.error(f"Robyn training failed: {robyn_response.json().get('error', 'Unknown error')}") | |
else: | |
st.error(f"CSV processing failed: {response.json().get('error', 'Unknown error')}") | |
except Exception as e: | |
st.error(f"An error occurred: {e}") | |
else: | |
st.error("The uploaded CSV must contain a 'DATE' column.") | |