Spaces:
Sleeping
Sleeping
| # app.py | |
| import gradio as gr | |
| from ai_model import generate_daily_checklist | |
| from sf_mock import log_reflection, get_engagement_score | |
| from utils import plot_engagement_graph, generate_pdf_summary | |
| # UI Logic | |
| def coach_interface(role, project_id, milestones, reflection): | |
| checklist, tips = generate_daily_checklist(role, project_id, milestones, reflection) | |
| log_reflection(role, project_id, reflection) | |
| score = get_engagement_score(role, project_id) | |
| graph_path = plot_engagement_graph(score) | |
| return checklist, tips, score, graph_path | |
| def download_summary(role, project_id): | |
| return generate_pdf_summary(role, project_id) | |
| with gr.Blocks() as demo: | |
| gr.Markdown("# AI Coach for Site Supervisors") | |
| with gr.Row(): | |
| role = gr.Textbox(label="Supervisor Role", placeholder="e.g. Electrical Lead") | |
| project_id = gr.Textbox(label="Project ID") | |
| milestones = gr.Textbox(label="Project Milestones", placeholder="e.g. Foundation, Framing, Wiring...") | |
| reflection = gr.Textbox(label="Reflection Log", lines=4) | |
| submit_btn = gr.Button("Get Today's Coaching") | |
| checklist = gr.Textbox(label="Daily Checklist", lines=4) | |
| tips = gr.Textbox(label="Top 3 Focus Tips", lines=3) | |
| score = gr.Number(label="Engagement Score") | |
| graph = gr.Image(label="Engagement Trend") | |
| submit_btn.click(coach_interface, | |
| inputs=[role, project_id, milestones, reflection], | |
| outputs=[checklist, tips, score, graph]) | |
| gr.Markdown("---") | |
| gr.Markdown("## Download Weekly Summary") | |
| download_btn = gr.Button("Download PDF Summary") | |
| summary_file = gr.File() | |
| download_btn.click(download_summary, inputs=[role, project_id], outputs=summary_file) | |
| if __name__ == "__main__": | |
| demo.launch() | |