📝 Note

pro/mjf dashboard/architecture

Architecture — MJF-Dashboard

Liens : Decisions · Journal

Vue d’ensemble

Dashboard de monitoring read-only. Chaque connecteur interroge sa source, met en cache les données, et expose des DataFrames Pandas à l’app Streamlit.

Composants principaux

ComposantRôle
app.pyPoint d’entrée Streamlit, routing des vues
connectors/s3.pyClient boto3 → Pure Storage S3
connectors/catdv.pyClient REST → CatDV API v11
connectors/flashblade.pyClient REST → FlashBlade API v2
connectors/emby.pyClient HTTP → Emby API
views/overview.pyKPIs globaux cross-sources
views/storage.pyMétriques S3 (buckets, extensions, top objets)
views/collection.pyClips CatDV, coverage proxy/thumbnail
views/encoding.pyCouverture H265 Emby vs CatDV
check_*.pyScripts utilitaires de contrôle croisé

Flux de données

Pure S3 ──────────────────────┐
CatDV REST API ────────────── connectors/*.py ──> cache (.cache/) ──> views/*.py ──> Streamlit UI
FlashBlade REST API ───────────┤
Emby HTTP API ────────────────┘

Dépendances externes

  • Pure Storage FlashBlade : S3 (boto3) + filesystem (REST v2)
  • CatDV : REST API v11, auth basic ou token
  • Emby : HTTP API, clé API

Schémas

Voir README.md du repo pour le schéma ASCII complet.

Déploiement

  • Local : streamlit run app.py
  • Docker : docker compose up -d → port 8501
  • Kubernetes : kubectl apply -k k8s/