A Streamlit data visualization tool for monitoring Floor Health and Andon performance at an Amazon fulfillment center (LCY3). Built by Manish Karki.
- Python 3.12
- Streamlit (port 5000, 0.0.0.0)
- Pandas, Plotly, openpyxl, pyarrow
app.py — Main Streamlit application
history_db.py — Persistent storage layer (Parquet + JSON)
report_builder.py — Excel report generation (daily + weekly .xlsx)
requirements.txt
.streamlit/config.toml
history/ — Persistent upload history (created at runtime)
├── daily/ — Per-day aggregated Parquet files
├── weekly/ — Per-week aggregated Parquet files
├── processed/ — Full raw DataFrames (one per upload)
└── metadata.json — Index of all saved records
.andon_data/ — Legacy storage location (backward-compat, read-only)
- Overview — bar chart of top resolvers, donut of andon types, daily trend spline
- Leaderboard — ranked resolver table with colour-coded performance badges
- AFM Profile — individual resolver deep-dive
- Root Cause — recurring issue analysis
- AFM Performance — team performance metrics
- By Andon Type / Equipment / Zone / Shift / Blocking / Equipment ID — pivot breakdowns (optional columns unlock these)
- Weekly Breakdown — weekly trend charts
- Hourly Trend / Heatmap — time-of-day analysis
- Raw Data — full filtered DataFrame view
- Export — download multi-sheet Excel reports
- History — browse saved daily, weekly, and processed datasets per upload
Every uploaded file is saved to history/:
processed/<hash>.parquet— full raw datadaily/<hash>_daily.parquet— aggregated by date: total andons, avg resolve time, resolved count, top andon type, top resolverweekly/<hash>_weekly.parquet— same metrics grouped by ISO week numbermetadata.json— index with file name, upload date, week numbers, date range, andon count
Key functions: compute_hash, hash_exists, get_existing_name, record_upload, load_dataframe, load_daily, load_weekly, get_history, remove_entry, clear_history
- Dark mode toggle
- Saved Datasets list — Load/Unload and Remove buttons per file, ACTIVE badge, Clear All
- ✅ On target
⚠️ Above target⚠️ Average (was "🚨 Slow" — renamed)
SHA-256 hash of uploaded file bytes; re-uploads are blocked and auto-pointed to the saved copy.
dark_mode— booleansaved_active_hashes— list of file hashes currently loaded into the dashboardduplicate_warnings— list of warning messages
Status, Resolver, Andon Type, Dwell Time (hh:mm:ss), Time Created
Equipment Type, Zone, Shift, Blocking, Equipment ID