import sys import os sys.path.append(os.path.dirname(os.path.abspath(__file__))) import streamlit as st import pandas as pd from utils.load_data import load_logs from utils.visualize import plot_usage from utils.report import generate_pdf from models.anomaly import detect_anomalies from utils.amc import upcoming_amc_devices st.set_page_config(page_title="LabOps Dashboard", layout="wide") st.title("📊 Multi-Device LabOps Dashboard") uploaded_files = st.file_uploader("Upload Device Logs (CSV)", accept_multiple_files=True) if uploaded_files: df = load_logs(uploaded_files) st.subheader("📋 Uploaded Logs") st.dataframe(df.head()) st.subheader("📈 Daily Usage Chart") st.pyplot(plot_usage(df)) st.subheader("🚨 Detected Anomalies") try: anomalies = detect_anomalies(df) st.dataframe(anomalies) except Exception as e: st.error(f"Failed to compute anomalies: {e}") st.subheader("🛠 Upcoming AMC Devices") if "amc_expiry" in df.columns: try: amc_df = upcoming_amc_devices(df) st.dataframe(amc_df) except Exception as e: st.error(f"Failed to process AMC dates: {e}") else: st.info("Column `amc_expiry` not found in uploaded data.") if st.button("📄 Generate PDF Report"): try: generate_pdf(df) st.success("✅ PDF report generated and saved to /tmp/labops_report.pdf") except Exception as e: st.error(f"Failed to generate PDF: {e}")