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
noir compte révoqué
🔴 rouge compte expiré
🟠 orange pas assez de certifications reçues (sous le seuil d'adhésion)
🟡 jaune assez de certifications mais pas (encore) membre
🟣 violet risque de perdre l'adhésion d'ici 2 mois
🔵 bleu risque de perdre (ou n'a pas) le statut de référent d'ici 5 mois
🟢 vert 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 analyze propre, 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

Merge request reports

Loading