bobby-deva / app.py
Sivainti's picture
Create app.py
4341293 verified
# app.py (Gradio-based Hugging Face Space Template)
import gradio as gr
import pandas as pd
import plotly.express as px
from utils.model import predict_timeline
from utils.salesforce import fetch_project_data
from utils.export import export_summary_pdf
def process_file(file):
df = pd.read_excel(file.name if hasattr(file, 'name') else file)
gantt_data, delay_risks, summary = predict_timeline(df)
gantt_fig = px.timeline(gantt_data, x_start="Start", x_end="Finish", y="Task", color="Risk")
gantt_fig.update_yaxes(autorange="reversed")
return df, gantt_fig, delay_risks, summary
def generate_pdf(summary):
return export_summary_pdf(summary)
with gr.Blocks() as app:
gr.Markdown("## Infrastructure Project Planner")
with gr.Row():
file_input = gr.File(label="Upload BOQ / Scope (Excel)", type="file")
fetch_button = gr.Button("Fetch from Salesforce")
with gr.Row():
preview = gr.Dataframe(label="BOQ Preview")
gantt_plot = gr.Plot(label="Project Gantt Chart")
risk_display = gr.HighlightedText(label="Delay Risk Analysis")
summary_output = gr.Textbox(label="Project Summary", lines=5)
pdf_button = gr.Button("Export PDF")
pdf_output = gr.File(label="Download Project Kickoff Summary")
file_input.change(process_file, inputs=file_input, outputs=[preview, gantt_plot, risk_display, summary_output])
fetch_button.click(fetch_project_data, outputs=file_input)
pdf_button.click(generate_pdf, inputs=summary_output, outputs=pdf_output)
app.launch()