Regroupe l'état de travail en cours réalisé dans un même worktree sur plusieurs tickets/sprints (#85, #136, #145, #155-160, #162-164), mélangeant des tickets QA et inProgress. Ne constitue pas une feature terminée : commit de sauvegarde avant triage/split par ticket en branches feature/* dédiées. Exclut les dossiers d'environnement de build locaux et le heap dump parasite (.gitignore mis à jour). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
6.2 KiB
issueRef, version, updatedBy, updatedAt
| issueRef | version | updatedBy | updatedAt | ||||
|---|---|---|---|---|---|---|---|
| #155 | 5 |
|
1785248859142 |
Entrée produit utilisateur — Main (2026-07-27)
UX doit cadrer les surfaces suivantes :
Téléphone en séance
- afficher seulement fréquence cardiaque live, distance live, calories live ;
- surface légère, non dominante.
Montre en séance
- écran principal : fréquence cardiaque live uniquement ;
- glissement inverse du menu action : écran secondaire avec fréquence cardiaque live + distance + calories.
Après séance / historique
- graphiques et lecture détaillée des statistiques conservées ;
- fréquence cardiaque détaillée par étape, série et exercice ;
- distance et calories également restituées dans l'historique.
Contraintes fortes
- silence total si donnée absente ;
- uniquement pour montres compatibles ;
- aucun message bloquant.
Cadrage UX — agent UX (2026-07-27)
Décision produit
Les stats capteurs (FC live, distance live, calories live) sont une couche de lecture légère ajoutée à l’exécution existante, jamais une nouvelle navigation principale ni une nouvelle logique de séance.
Principes à respecter :
- Téléphone : la surface séance reste centrée sur l’exécution ; les stats live restent secondaires et compactes.
- Montre : l’écran principal reste centré sur l’état d’effort ; la
FC liveseule y a droit en permanence,distanceetcaloriespartent dans un écran secondaire dédié. - Après-séance / Historique : les stats deviennent consultables en détail, avec restitution hiérarchique cohérente avec l’existant
programme > exercice > série, et niveauétapequand disponible. - Silence par défaut : si une donnée n’existe pas, la surface se resserre sans placeholder, sans warning, sans écran vide.
Téléphone pendant la séance
Ajouter sous le bloc d’exécution principal une barre stats live compacte, toujours sur la surface séance, sans ouvrir de panneau dédié.
Ordre fixe :
FC 142 bpm · 0,84 km · 186 kcal
Règles :
- une seule ligne si tout tient ;
- retour sur 2 lignes max si nécessaire sur petit écran ;
- style secondaire visuellement, plus discret que chrono / répétitions / score ;
- ne jamais concurrencer le bloc temps, les CTA d’exécution, ni les contrôles de série.
FCen premier, puisDistance, puisCalories.- chaque métrique n’apparaît que si elle est disponible.
- si aucune métrique n’est disponible, la barre n’existe pas.
États :
- en séance active : valeurs live visibles et rafraîchies discrètement ;
- en pause : conserver la dernière valeur connue ;
- en repos : la barre reste visible si des valeurs existent.
Montre pendant la séance
Écran principal
L’écran principal Séance active conserve sa hiérarchie actuelle. On y ajoute la FC live uniquement en lecture secondaire.
Placement exact :
- la
FC liveapparaît sur la ligne secondaire sous le libellé du chrono dominant et au-dessus du CTA principal. - sur l’écran principal montre, jamais distance ni calories.
- si la FC live est absente, cette ligne disparaît purement et simplement.
Écran secondaire Stats
Ajouter un écran secondaire stats accessible par glissement inverse du menu Actions.
Navigation montre :
- swipe dans un sens :
Actions - swipe dans l’autre sens :
Stats
Contenu de l’écran Stats :
FCDistanceCalories
Règles :
- une carte/ligne par métrique disponible ;
- ordre fixe :
FC,Distance,Calories; - si une métrique manque, ne pas réserver sa place ;
- si aucune stat n’existe, l’écran
Statsn’est pas exposé du tout.
Après-séance
Ajouter dans l’écran de fin de séance une section dédiée Statistiques après le récap principal d’exécution.
Résumé global attendu :
FC moyenneFC minFC maxDistanceCalories
Graphiques à afficher quand la donnée existe :
FC: courbe temporelle de séanceDistance: progression cumulée sur la séanceCalories: progression cumulée sur la séance
Pour la FC, ajouter si possible des repères visuels simples sur la courbe :
- séparateurs d’exercices
- séparateurs de séries
- étapes quand disponibles
Détail hiérarchique
Dans le détail existant, enrichir chaque niveau quand la donnée existe.
- Exercice : sous-résumé stats
- Série : sous-résumé compact
- Étape : seulement si les données sont réellement disponibles à ce niveau
Règles :
- ne jamais fabriquer un faux niveau de précision ;
- l’absence d’une stat n’empêche pas d’afficher les autres.
Historique
Liste historique
Dans chaque carte de séance historique, ajouter au plus une ligne de résumé stats sous le résumé existant, uniquement si des données existent.
Exemple : FC 148 moy · 2,84 km · 426 kcal
Détail d’une séance historique
Le détail historique reprend la même structure que l’après-séance :
- résumé global ;
- graphiques ;
- détail par exercice ;
- détail par série ;
- détail par étape quand disponible.
Fallback silencieux et compatibilité
Règles impératives :
- Feature active uniquement sur montres compatibles.
- Si la montre n’est pas compatible, aucune surface dédiée n’apparaît.
- Si un capteur ou une métrique est indisponible, ne rien afficher pour cette métrique.
- Aucun message bloquant, aucune alerte, aucun placeholder.
- En cas de donnée partielle : afficher seulement ce qui existe.
- En cas de perte temporaire de mesure live : garder la dernière valeur connue si la session l’utilise déjà ; sinon masquer la métrique.
Décision finale de surface
- Téléphone séance : une barre stats live compacte intégrée à l’écran d’exécution.
- Montre séance :
FC livesur l’écran principal, écranStatssecondaire par glissement inverse deActionspourFC + distance + calories. - Après-séance / Historique : résumé global + graphiques + détail hiérarchique
exercice / série / étapequand disponible. - Fallback : disparition silencieuse des données absentes, sans message ni friction.