chore(tickets): clôture des tickets #80 et #81

Met à jour les métadonnées IdeA (statut closed, carnets de suivi) suite à
la livraison et au merge sur develop du code des tickets #80 (bibliothèque
de drills basket de démarrage) et #81 (dernière performance / meilleur
score à l'exécution).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-22 08:12:03 +02:00
parent 0813327bef
commit fdb301f746
5 changed files with 39 additions and 39 deletions

View File

@ -1,18 +1,23 @@
---
issueRef: "#81"
version: 3
version: 5
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedAt: 1784665481490
updatedAt: 1784700197992
---
## Spec UX (livrée)
## Lot backend — TERMINÉ, commité (ac51c16) sur feature/derniere-performance-execution
Bloc compact "Références" dans l'écran d'exécution (workout_execution_screen.dart), sous le nom de l'exercice, avant la séquence d'étapes/champs de résultat. Deux infos max : "Dernière" (résultat de la même série que l'historique le plus récent, fallback dernière série dispo) et "Record" (meilleure valeur toutes séances confondues, règle de meilleur selon type de mesure : score manuel/reps = max, score chrono = min, temps = max). États : loading, avec dernière+record, dernière seule, record seul, vide sans historique ("Première fois sur cet exercice"), vide sans mesure pertinente, erreur (non bloquant). Pour exercices à étapes : reste au niveau série dans le bloc principal, détail par étape optionnel (bottom sheet), non bloquant pour le ticket.
Migration Drift v17 (sourceExerciseIdSnapshot + backfill), port ExercisePerformanceReferenceRepository, use case ExercisePerformanceReferenceUseCase.getExercisePerformanceReference. Priorité record : score > reps > time.
Exigences techniques :
- Use case `getExercisePerformanceReference(exerciseId, activeMeasures, currentSetIndex)` retournant `ExercisePerformanceReference { last, record, hasAnyHistoryForExercise }`
- Matching par identité stable de l'exercice source (pas par nom sauf fallback validé Architect), historiques d'exercices archivés restent exploitables
- Ignorer séries skipped/valeurs nulles, ne lire que historiques terminés (pas séance active)
- Chargement non bloquant, skeleton/"Chargement…", erreur non bloquante "Références indisponibles"
- Composant DevFrontend réutilisable `PerformanceReferenceCard` avec formatage temps/score selon règles UX
## Lot frontend — TERMINÉ
Prochaine étape : Architect cadre l'implémentation technique (requêtes historique, ports/use case, découpage Dev).
Fichiers : workout_execution_screen.dart (composant PerformanceReferenceCard, appel use case, états UX, formatage), home_screen.dart / workout_template_screen.dart / history_screen.dart (propagation du use case depuis le bootstrap jusqu'aux points de lancement d'une séance).
Écart assumé : détail par étape (bottom sheet) non implémenté (optionnel, hors MVP). Unité affichée pour score manuel vient du snapshot courant plutôt que d'une unité historique dédiée (le DTO backend ne l'expose pas) — acceptable, cohérent avec la spec qui n'exigeait pas de tracking d'unité historique séparée.
## Vérification finale (Main)
- `dart analyze` sur tous les fichiers backend+frontend : aucune erreur, seulement lints/infos préexistants (dont les warnings BuildContext async confirmés hors du diff #81).
- `flutter test` (suite complète, 178 tests) : 4 échecs, identiques et déjà confirmés préexistants sans rapport (mêmes 4 que sur #80).
- Aucune régression introduite par #81.
**Verdict final : GO. Prêt à committer/merger/clôturer.**

View File

@ -2,7 +2,7 @@
id: "3d94d624-86a2-4f92-8766-2e5d06815f40"
number: 81
title: "Afficher la dernière performance / meilleur score pendant l'exécution"
status: "inProgress"
status: "closed"
priority: "high"
sprint: null
links: []
@ -10,8 +10,8 @@ agentRefs: []
createdBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
createdAt: 1784650712105
updatedAt: 1784665481490
version: 3
updatedAt: 1784700197992
version: 5
---
Constat Commercial : les trackers de référence (Hevy, Strong) motivent l'utilisateur en montrant la dernière série ou le record pendant qu'il saisit sa performance en cours. GameTime ne l'affiche pas encore pendant l'exécution.