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.52.2
KPI Health Check – Map v2 (Mode exploitation + recherche)
Objectif
Améliorer l’onglet Map pour l’exploitation quotidienne (≈ 0–3000 sites) avec:
- Vue géographique lisible immédiatement (zoom/centrage automatique)
- Encodage visuel orienté actions (status + criticité)
- Recherche rapide (site_code / City) + navigation vers le drill-down
- Performance stable (pas de lag, pas de sur-affichage de labels)
Non-objectifs
- RCA hints / tags automatiques (Sprint 5)
- Clustering avancé “maison” (geohash/grid) si non indispensable
- Historique temporel sur la map
UX / Fonctionnel
A. Encodage visuel
- Taille: criticité (déjà en place)
- Couleur: status dominant du site (ex:
PERSISTENT_DEGRADED,DEGRADED,RESOLVED,NO_DATA) - Label:
site_code(déjà en place) limité à un Top-N configurable
B. Fit bounds (centrage auto)
- Bouton (ou comportement automatique) “Fit to points”
- À chaque refresh map, centrer/zoomer sur l’ensemble des points affichés (après filtres)
C. Filtres Map (mode exploitation)
Widgets simples dans l’onglet Map:
- Top N sites (par score) + option “All”
- Only complaint sites (reprend le bool déjà existant dans le sidebar)
- RAT impacted (2G/3G/LTE/Any) basé sur
impacted_rats - Option: “Only persistent” (status)
D. Recherche (rapide)
- Champ
Search(texte):- accepte
site_code(entier) ouCity(substring) - résultat:
- si
site_codetrouvé: centre la map sur le site + sélectionne le site (drill-down) - si
City: filtre/centre sur les sites de la ville + propose une petite liste (Top 20) cliquable
- si
- accepte
E. Interaction
- Click point => drill-down (déjà en place)
- Option: bouton “Open Drill-down” à côté des infos (si on ajoute un mini panneau résumé)
Données / Hypothèses
- Les coords sont présentes via
Latitude/Longitude(venant duphysical_db) current_multirat_rawcontient:site_code- scores (
criticality_score_weightedoucriticality_score) impacted_rats- compteurs persistent/degraded/resolved
- Les status par RAT existent dans
current_status_df(parsite_code,RAT,status)
Plan d’implémentation (Map v2)
1) Calcul du status dominant
- À partir de
current_status_df, agréger parsite_code:- règle:
PERSISTENT_DEGRADED>DEGRADED>RESOLVED>OK>NO_DATA - produire une colonne
dominant_status
- règle:
- Merge dans le DF map
2) Color mapping
- Définir une palette stable:
PERSISTENT_DEGRADED-> rouge foncéDEGRADED-> rouge/orangeRESOLVED-> vertOK-> bleuNO_DATA-> gris
- Appliquer via
px.scatter_mapbox(..., color='dominant_status')+category_orders
3) Fit bounds
- Calculer
lat_min/max,lon_min/maxsur les points affichés - Utiliser
fig.update_layout(mapbox=dict(bounds=...))oucenter/zoomestimé - Ajouter un bouton “Fit to points” si on veut éviter un recentrage automatique trop agressif
4) Recherche
- Widget
AutocompleteInputouTextInput+ boutonGo - Si nombre:
- set
site_select+ centre map
- set
- Si texte:
- filtrer sur
Cityet afficher une liste cliquable (Tabulator ou Select)
- filtrer sur
5) Filtres Map
- Implémenter filtres (TopN / complaint / RAT impacted / status) avant rendu
- Ajouter widgets correspondants dans l’onglet Map
6) Tests / Critères de réussite
- 3000 sites: refresh map < 2s (hors 1er chargement)
- Search par
site_code: centre + drill-down correct - Search par
City: restreint l’affichage et fit bounds - Les labels restent limités (Top-N)
Risques / Points d’attention
- Trop de texte (labels) => perf (mitigation: Top-N déjà fait)
- Fit bounds automatique peut “bouger” la map trop souvent (mitigation: bouton / toggle)
dominant_statusdoit être robuste même sicurrent_status_dfvide
Estimation
- Status dominant + colors: 45–90 min
- Fit bounds: 20–40 min
- Recherche: 1–2 h
- Filtres map: 1–2 h
Total: ~3–6 h selon niveau de polish.