db_query / documentations /kpi_health_check_improvement_roadmap.md
DavMelchi's picture
Add GitHub Actions workflow for Panel app deployment to Hugging Face Spaces with path-based triggers, VS Code project color customization, and comprehensive KPI health check drill-down documentation including group-based filtering, SLA benchmarking, timeline visualization, and complaint sites roadmap
f68be5e

A newer version of the Streamlit SDK is available: 1.57.0

Upgrade

KPI Health Check (Panel) — Plan d’amélioration (Roadmap)

0) Objectif

Consolider l’app KPI Health Check pour une utilisation “NPO / exploitation” plus fluide et plus actionnable.

Axes demandés:

  • [A] Exploitation / priorisation (alert pack, ops queue, snapshot/delta, RCA hints)
  • [B] Visualisation (map des sites, corrélation KPI)

Décision prise:

  • “Complaint sites only” = UI + export Excel (les deux)

Non-scope:

  • Génération PDF / evidence pack (optionnel, non prioritaire).

0.1) Principes (invariants)

  • Compatibilité: ne pas casser l’existant (tables, drill-down, export principal).
  • Performance: éviter les recalculs inutiles (réutiliser caches/versions déjà en place dans l’UI).
  • Robustesse données: gérer proprement NO_DATA, colonnes manquantes, coordonnées absentes.
  • Export Excel: garder des noms d’onglets stables (important pour les utilisateurs qui automatisent).

1) État actuel (déjà en place)

1.1 Flux de l’app

  • Upload KPI 2G/3G/LTE (CSV/ZIP)
  • Normalisation date_only, site_code, enrichissement éventuel City/Lat/Lon
  • Construction + édition des rules (direction, sla)
  • Health-check: OK / DEGRADED / PERSISTENT_DEGRADED / RESOLVED / NO_DATA
  • Synthèses:
    • Site_Summary
    • MultiRAT_Summary (score criticité)
    • Top_Anomalies (score anomaly)
  • Drill-down: trend + heatmap + histogram
  • Export Excel (Datasets / KPI Rules / Summary / Status / MultiRAT / Top)
  • Gestion: presets + profiles
  • Filtre existant: checkbox Only complaint sites (filtre les tables multi-rat / top anomalies)

1.2 Fichiers “source of truth”

  • UI:
    • panel_app/kpi_health_check_panel.py
  • Export:
    • process_kpi/kpi_health_check/export.py
  • Calculs:
    • process_kpi/kpi_health_check/engine.py
    • process_kpi/kpi_health_check/multi_rat.py

2) Roadmap (ordre recommandé)

Phase 1 — Complaint sites only (UI + Export) (priorité haute)

2.1 UI: onglet dédié “Complaint sites only”

But: ne plus dépendre d’un filtre à cocher; fournir un écran prêt à l’emploi.

Contenu onglet:

  • MultiRAT Summary (Complaint)
  • Top Anomalies (Complaint)
  • Optionnel: un petit “mini résumé” (counts)

Spécifications:

  • Les tables doivent être toujours filtrées sur is_complaint_site == True.
  • Les interactions existantes restent:
    • double-click (ou click) pour appliquer le drill-down (_handle_double_click + _apply_drilldown_selection).

Implémentation (point d’intégration):

  • Créer 2 nouveaux Tabulator dans kpi_health_check_panel.py, alimentés par une fonction de refresh dédiée.
  • Réutiliser la logique existante de flag is_complaint_site déjà posée dans _apply_complaint_flags().

Critères d’acceptation:

  • Après Run health check, l’onglet affiche uniquement les complaint sites.
  • Les filtres “city / min score / top RAT / status” ne doivent pas casser l’onglet.
  • Si la liste plaintes est vide/non trouvée, l’onglet reste vide (ou affiche un message) sans erreur.

2.2 Export Excel: feuilles “Complaint sites only”

But: avoir un export directement partageable “ops / plaintes”.

Feuilles proposées:

  • Complaint_MultiRAT
  • Complaint_Top_Anomalies

Option bonus (si utile):

  • Complaint_Ops_Queue (par site) = tri par criticité pondérée trafic si dispo.

Implémentation (point d’intégration):

  • Étendre process_kpi/kpi_health_check/export.py:
    • soit en ajoutant de nouveaux paramètres optionnels,
    • soit en ajoutant des dfs supplémentaires en fin de liste (compatibilité).
  • Dans kpi_health_check_panel.py, construire les df “complaint only” à partir de current_multirat_df / current_top_anomalies_df ou des raw (selon besoin) et les fournir à l’export.

Critères d’acceptation:

  • L’export contient les 2 feuilles complaint.
  • Les feuilles complaint restent vides si aucune liste plaintes n’est chargée et aucun fichier data/complaint_sites.* n’est trouvé.
  • Les noms d’onglets restent < 31 caractères et sans caractères invalides (contrainte Excel).

Phase 2 — Ops Queue + Alert Pack (priorité haute)

2.3 “Ops Queue” (table unique priorisée)

But: une table de travail qui regroupe le besoin exploitation:

  • 1 ligne par site
  • priorité = criticité (pondérée trafic si dispo)
  • infos clés: impacted_rats, persistent_kpis_total, degraded_kpis_total, resolved_kpis_total, is_complaint_site, trafic

Implémentation:

  • Construire ops_queue_df à partir de current_multirat_raw (qui contient déjà scores + flags).
  • Ajouter un onglet UI “Ops Queue” + une feuille Excel.

2.4 “Alert Pack” export court

But: un export “prêt à envoyer” (résumé + ops queue + top anomalies) sans l’exhaustivité.

  • Nouveau bouton export, ou une option dans l’export existant.

Phase 3 — Snapshot + Delta (priorité haute)

2.5 Snapshot de run

But: figer un run (résultats + paramètres + rules) pour audit et comparaison.

Format recommandé:

  • json (simple) ou parquet (plus robuste pour gros volumes). Pour MVP: JSON.

Contenu snapshot (proposition):

  • snapshot_version: int
  • created_at: ISO datetime
  • profile_config: dict (baseline/recent/thr/min streak + filtres)
  • rules_df: list[dict] (records)
  • multirat_df: list[dict]
  • top_anomalies_df: list[dict]

UI:

  • FileDownload “Save snapshot”
  • FileInput “Load snapshot”

2.6 Delta entre runs

But: sortir les variations entre snapshot chargé et run courant:

  • New degraded
  • Still degraded
  • Resolved
  • Severity up / down

Sorties:

  • onglet UI “Delta”
  • feuille Excel “Delta”

Phase 4 — Visualisation (Map + Corrélation) (priorité moyenne)

2.7 Map des sites dégradés

But: voir des clusters (zone / ville) et naviguer vers le drill-down.

Pré-requis:

  • Latitude / Longitude disponibles (normalisation ou physical db).

Affichage:

  • Plotly scatter_mapbox (style open-street-map) ou scatter_geo
  • Couleur = status (ou degraded/persistent)
  • Taille = criticité (weighted si dispo)

Interaction:

  • click point => sélection site dans drill-down

2.8 KPI Correlation Explorer

But: RCA rapide sur un site/RAT.

  • Matrice corrélation des KPI sélectionnés (Pearson/Spearman)
  • fenêtre: recent / baseline / full filtered range
  • sortie: heatmap Plotly (px.imshow)

3) RCA Hints (bonus mais très utile)

Objectif: rendre Top_Anomalies plus actionnable.

Ajouts colonnes:

  • delta_pct
  • sla_breached
  • reason (texte)
  • data_quality_flag

Ces colonnes peuvent être calculées:

  • lors de la génération de Top_Anomalies (dans multi_rat.py),
  • ou côté Panel lors du refresh (plus rapide à itérer).

4) Découpage technique (recommandé)

Pour éviter d’alourdir kpi_health_check_panel.py:

  • process_kpi/kpi_health_check/snapshot.py

    • save/load snapshot + validation version
    • compute delta
  • process_kpi/kpi_health_check/ops_queue.py

    • build ops queue df
  • panel_app/kpi_health_check_maps.py

    • build map figure
  • process_kpi/kpi_health_check/correlation.py

    • build correlation matrix

4.1) Qualité des données & garde-fous (à intégrer dès Sprint 1)

  • Validation d’inputs:
    • dataset vide / pas de date_only / pas de site_code
    • aucun point dans la analysis_range
  • Validation complaint list:
    • parsing robuste (csv/txt/xlsx déjà prévu)
    • normalisation des codes site (cast int + extraction regex si besoin)
  • Fail-safe: si is_complaint_site n’existe pas, ne pas crasher (considérer False).

4.2) Performance / mémoire (à surveiller)

  • Limiter le volume affiché dans les tables (ex: top N) quand nécessaire.
  • Éviter les copies inutiles de DataFrames lors des refresh.
  • Garder les calculs lourds dans process_kpi/* et l’UI comme orchestration.

4.3) Tests rapides (smoke tests) / DoD

Minimum avant de considérer une phase “done”:

  • Charger un petit sample 2G/3G/LTE et exécuter Load + Run sans erreur.
  • Vérifier:
    • export Excel principal
    • export complaint
    • double-click tables => drill-down
    • aucun crash si complaint list absente

5) Critères de réussite globaux

  • Exploitation: obtenir une liste priorisée + top anomalies complaint en < 1 minute.
  • Partage: export Excel avec onglets complaint + delta.
  • Visualisation: map cliquable et corrélation sur drill-down.

6) Plan de livraison (sprints)

  • Sprint 1: Complaint UI tab + Export complaint sheets
  • Sprint 2: Ops Queue + Alert Pack
  • Sprint 3: Snapshot + Delta
  • Sprint 4: Map + Correlation explorer
  • Sprint 5 (option): RCA hints (reason/tags)

7) Risques & mitigations

  • Volumes importants (beaucoup de sites/KPI/jours):
    • mitigation: top-N dans certaines vues + pagination Tabulator + éviter les figures avec trop de traces.
  • Coordonnées manquantes (pas de Lat/Lon):
    • mitigation: la map doit être optionnelle et afficher un message clair si données insuffisantes.
  • Excel / automatisation utilisateur (noms d’onglets attendus):
    • mitigation: ajouter les nouveaux onglets sans renommer les existants.