""" Supply Roster Optimization Tool - Streamlit App Simplified version with configuration and optimization results """ import streamlit as st import sys import os # Add project root to path BEFORE imports project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) if project_root not in sys.path: sys.path.insert(0, project_root) from ui.pages.config_page import render_config_page from ui.pages.optimization_results import display_optimization_results from src.demand_validation_viz import display_demand_validation # Set page config st.set_page_config( page_title="Supply Roster Optimization Tool", page_icon="📦", layout="wide", initial_sidebar_state="expanded" ) # Sidebar navigation st.sidebar.title("📦 Supply Roster Tool") st.sidebar.markdown("---") # Navigation page = st.sidebar.selectbox( "Navigate to:", ["⚙️ Settings", "📊 Optimization Results", "📋 Demand Validation"], index=0 ) # Main app content if page == "⚙️ Settings": # Import and render the config page st.title("📦 Supply Roster Optimization Tool") st.markdown("---") render_config_page() elif page == "📊 Optimization Results": # Import and render the optimization results page # Check if we have results in session state if 'optimization_results' in st.session_state and st.session_state.optimization_results: display_optimization_results(st.session_state.optimization_results) else: st.title("📊 Optimization Results") st.info("🔄 No optimization results available yet.") st.markdown("Please run an optimization from the **⚙️ Settings** page first to see results here.") # Add helpful instructions st.markdown("### 📋 How to Get Results:") st.markdown("1. Go to **⚙️ Settings** page") st.markdown("2. Configure your optimization parameters") st.markdown("3. Click **🚀 Optimize Schedule**") st.markdown("4. Return here to view detailed results and input data inspection") elif page == "📋 Demand Validation": # Import and render the demand validation page try: st.title("📋 Demand Data Validation") st.markdown("---") display_demand_validation() except ImportError as e: st.error(f"❌ Error loading demand validation module: {str(e)}") st.info("💡 Please ensure the demand validation module is properly installed.") except Exception as e: st.error(f"❌ Error in demand validation: {str(e)}") st.info("💡 Please check the data files and configuration.")