Files
GameTime/.ideai/tickets/155/carnet.md
Blomios 917777e18b chore(wip): consolidation intermédiaire multi-tickets (sprints Statistiques, UI, Bug resolution, Serveur-client)
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>
2026-07-28 16:48:54 +02:00

148 lines
6.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
issueRef: "#155"
version: 5
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedAt: 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 à lexé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 lexécution ; les stats live restent secondaires et compactes.
- **Montre** : lécran principal reste centré sur létat deffort ; la `FC live` seule y a droit en permanence, `distance` et `calories` partent 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 lexistant `programme > exercice > série`, et niveau `étape` quand disponible.
- **Silence par défaut** : si une donnée nexiste pas, la surface se resserre sans placeholder, sans warning, sans écran vide.
### Téléphone pendant la séance
Ajouter sous le bloc dexé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 dexécution, ni les contrôles de série.
- `FC` en premier, puis `Distance`, puis `Calories`.
- chaque métrique napparaît que si elle est disponible.
- si aucune métrique nest disponible, la barre nexiste 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 live` apparaî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 lautre sens : `Stats`
Contenu de lécran `Stats` :
- `FC`
- `Distance`
- `Calories`
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 nexiste, lécran `Stats` nest 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 dexécution.
Résumé global attendu :
- `FC moyenne`
- `FC min`
- `FC max`
- `Distance`
- `Calories`
Graphiques à afficher quand la donnée existe :
- `FC` : courbe temporelle de séance
- `Distance` : progression cumulée sur la séance
- `Calories` : progression cumulée sur la séance
Pour la FC, ajouter si possible des repères visuels simples sur la courbe :
- séparateurs dexercices
- 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 ;
- labsence dune stat nempêche pas dafficher 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 dune séance historique
Le détail historique reprend la même structure que laprè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 nest pas compatible, **aucune surface dédiée napparaî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 lutilise 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 dexécution.
- **Montre séance** : `FC live` sur lécran principal, écran `Stats` secondaire par glissement inverse de `Actions` pour `FC + distance + calories`.
- **Après-séance / Historique** : résumé global + graphiques + détail hiérarchique `exercice / série / étape` quand disponible.
- **Fallback** : disparition silencieuse des données absentes, sans message ni friction.