diff --git a/docs/superpowers/specs/2026-09-09-unifi-site-manager-integration-design.md b/docs/superpowers/specs/2026-09-09-unifi-site-manager-integration-design.md index a54417eaa..d012df5a6 100644 --- a/docs/superpowers/specs/2026-09-09-unifi-site-manager-integration-design.md +++ b/docs/superpowers/specs/2026-09-09-unifi-site-manager-integration-design.md @@ -268,14 +268,33 @@ dégradé, rouge coupé, gris inconnu. Dans une colonne de tableau elle sera ét c'est le prix de la forme tableau, et c'est ce qui rend l'infobulle nécessaire plutôt que confortable. -**Couleurs.** À valider par le validateur de palette avant écriture, en thème -clair et sombre, comme pour le graphe de débit. Les quatre états doivent rester -distinguables en vision déficiente : la bande n'a pas d'autre encodage que la -couleur, ce qui en fait le cas le plus exigeant du projet. Si un jeu à quatre -états ne passe pas, l'infobulle par segment devient obligatoire, pas optionnelle. +**Couleurs : palette de statut, pas palette catégorielle.** Distinction établie +en cours de conception, après avoir échoué à faire passer un jeu vert/orange/rouge +au validateur — lequel ne couvre que les palettes **catégorielles**. Sain, +dégradé et coupé sont des **statuts**, qui relèvent d'une palette réservée et +fixe, non thémée : -**Infobulle par segment** : heure de la tranche, latence moyenne, perte. C'est -aussi ce qui rend la bande lisible sans distinguer les couleurs. +| État | Couleur | Origine | +|---|---|---| +| `healthy` | `#0ca30c` | statut *good* | +| `degraded` | `#fab219` | statut *warning* | +| `down` | `#d03b3b` | statut *critical* | +| `unknown` | gris neutre de la surface | ce n'est pas un statut, c'est une absence | + +Mesuré au passage : un vert/orange/rouge classique donne un ΔE de **2,9** entre +l'orange et le vert en vision protanope — indistinguables. La palette de statut +ne prétend pas résoudre cela, elle impose une contrepartie. + +**La contrepartie est obligatoire, et plus forte qu'une infobulle.** La règle +attachée aux couleurs de statut est qu'elles ne voyagent jamais seules : icône +et libellé les accompagnent. Une icône par segment étant impossible sur +vingt-quatre segments, la bande est **doublée d'un résumé textuel** — par exemple +`22 h saines · 2 h dégradées` — placé à côté d'elle dans la même colonne. Ce +résumé n'est pas décoratif : c'est le canal qui porte l'information quand la +couleur ne passe pas. + +**Infobulle par segment** : heure de la tranche, latence moyenne, perte. Elle +complète le résumé pour qui veut le détail d'une heure précise. **Badge de fraîcheur** en tête de widget, alimenté par `updatedAt`, comme sur le widget `unifiOs`.