File size: 1,554 Bytes
4341293
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# 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()