""" Minimal Streamlit UI: add tasks (id, duration), call API, show schedule. Assumes API runs at http://localhost:8000 or set SCHEDULER_API_URL. """ import os import requests import streamlit as st API_URL = os.environ.get("SCHEDULER_API_URL", "http://localhost:8000") def main(): st.title("Scheduling Optimizer") st.markdown("Add tasks and get an optimal single-machine schedule.") n = st.number_input("Number of tasks", min_value=1, max_value=20, value=3) tasks = [] for i in range(int(n)): col1, col2 = st.columns(2) with col1: tid = st.text_input(f"Task {i+1} ID", value=f"T{i+1}", key=f"id_{i}") with col2: dur = st.number_input(f"Duration", min_value=1, value=2, key=f"dur_{i}") tasks.append({"id": tid, "duration": int(dur)}) if st.button("Solve"): try: r = requests.post(f"{API_URL}/schedule", json={"tasks": tasks}, timeout=10) r.raise_for_status() data = r.json() st.success(f"Makespan: {data.get('makespan', 'N/A')}") st.json(data.get("schedule", [])) except requests.exceptions.RequestException as e: st.error(f"API error: {e}. Is the server running? Start with: uvicorn main:app --port 8000") if __name__ == "__main__": main()