Fix nav scoping across admin/warehouse/kiosk pages and redesign reporting

Summary

Redesigns the reporting dashboard with per-station KPI boxes and fixes navigation scoping across admin, warehouse, and kiosk pages.

Changes

  • KPI/report services (kpi_service.py, report_service.py): per-station processing time, throughput, waiting time (skipped for each job's entry station), plus per-job output via get_job_output_counts().
  • Routes: admin_reporting now passes job_outputs; added report preview/download/delete routes; kiosk route records scan-arrival events for KPI timing.
  • Reporting template: rebuilt into an Overall box (Throughput + Output) and one box per station (Processing Time, Throughput, Output, Waiting Time). Job selection is now a searchable table (Job | Output | Include) instead of a checkbox list.
  • Nav fix: admin pages link only to each other; transfer_requests.html and individual kiosk pages have no nav (reverted); kiosk_index.html keeps the full hub nav.
  • Tests: added test_reporting_feature.py for cutoff/timestamp/discard-exclusion behavior.

Testing

All 61 tests pass (python -m pytest -v). Manually verified nav scoping and the new reporting layout in-browser.

Merge request reports

Loading