feat(certif) : code couleur d'état de membre (aperçu d'un coup d'œil)
Résumé
Ajoute un badge circulaire coloré qui résume d'un coup d'œil la santé d'un membre : un chiffre = le nombre de certifications reçues, une couleur = son état, avec une infobulle par badge et une légende explicative.
Objectif : voir immédiatement qui alerter (adhésion ou statut de référent bientôt perdus) sans avoir à éplucher les dates.
Le code couleur (cascade « le plus grave gagne »)
| Couleur | Signification |
|---|---|
| compte révoqué | |
| compte expiré | |
| pas assez de certifications reçues (sous le seuil d'adhésion) | |
| assez de certifications mais pas (encore) membre | |
| risque de perdre l'adhésion d'ici 2 mois | |
| risque de perdre (ou n'a pas) le statut de référent d'ici 5 mois | |
| membre référent, certifications valides |
Les niveaux violet/bleu/vert sont prédictifs : on projette combien de certifications resteront valides à l'horizon (2 mois pour l'adhésion, 5 mois pour le référent) plutôt que de signaler « une certif expire bientôt » (presque toujours vrai). Le statut de référent exige assez de certifications reçues ET émises (comme la règle de distance).
Les seuils sont lus dynamiquement depuis la chaîne (seuil d'adhésion = minCertForMembership ; seuil référent = ⌈membres^(1/stepMax)⌉) — corrects sur Ğ1 comme sur les réseaux de test, et sans le téléchargement lourd de la toile de confiance.
Où ça apparaît
- Bilan des certifications (mobile + modale desktop) : un badge résumé + la légende en en-tête.
- Chaque ligne des listes reçues/envoyées : un badge par membre. Version compacte (pas de requête d'historique par ligne) pour rester fluide sur de longues listes.
- File d'attente des certifications : un badge sur l'avatar de chaque destinataire.
Qualité
- Logique de décision extraite en fonction pure
computeMemberStatusLevel, couverte par 18 tests unitaires (cascade, mode compact, mode prédictif, cas de frontière). - Providers en
autoDispose(pas de souscription au nœud qui traîne). - Traductions fr / en / es / it / de / eo.
flutter analyzepropre,dart format(120) appliqué.- Passé par un audit pré-MR multi-agents (sécurité, perf, régressions, cohérence, i18n).
Note
La lenteur du calcul de la règle de distance est traitée séparément dans l'issue #204 (closed) (le calcul est fait côté client — indépendant de cette MR).
Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com