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>
This commit is contained in:
147
.ideai/tickets/155/carnet.md
Normal file
147
.ideai/tickets/155/carnet.md
Normal file
@ -0,0 +1,147 @@
|
||||
---
|
||||
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 à 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 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 l’existant `programme > exercice > série`, et niveau `étape` quand 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.
|
||||
- `FC` en premier, puis `Distance`, puis `Calories`.
|
||||
- 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 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 l’autre 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 n’existe, l’écran `Stats` n’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 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 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 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.
|
||||
Reference in New Issue
Block a user