--- name: gametime-ux-exercise-default-targets description: memory note gametime-ux-exercise-default-targets metadata: type: project --- # GameTime — Valeurs cibles par défaut à la création d'exercice (ticket #30, UX 2026-07-18) Décision : ajouter les valeurs cibles par défaut au niveau **Exercice**, obligatoires pour les mesures activées (sauf Score chrono, optionnel). ## Formulaire exercice - Temps activé → champ "Temps par défaut (s)", obligatoire, validation "Saisis un temps supérieur à 0." - Répétitions activé → champ "Répétitions par défaut", obligatoire, validation "Saisis un nombre de répétitions supérieur à 0." - Score activé + mode Saisie libre → nouveau champ "Score par défaut" en plus de "Score à saisir"/"Unité", validation "Saisis un score supérieur à 0." - Score activé + mode Chrono intégré → PAS de "Score par défaut" ; à la place "Objectif de chrono par défaut (optionnel)", validation seulement si rempli ("Saisis un objectif supérieur à 0."). - Mesure désactivée → son champ disparaît, pas de validation dessus. Réactivée → champ revient, doit être rempli avant sauvegarde. ## Champs domaine à ajouter sur Exercise - `defaultTargetTimeSeconds` (obligatoire si hasTimeMeasure) - `defaultTargetReps` (obligatoire si hasRepsMeasure) - `defaultTargetScore` (obligatoire si hasScoreMeasure et scoreInputMode manual) - `defaultTargetScoreTimeMs` (optionnel, seulement si scoreInputMode stopwatch) Contrainte : valeur obligatoire toujours > 0 ; optionnelle (score chrono) mais si présente > 0. ## Utilisation dans programme Quand un exercice est ajouté à un programme (ticket #20), les cibles sont préremplies depuis les valeurs par défaut de l'exercice au lieu des valeurs génériques actuelles : - targetTimeSeconds ← defaultTargetTimeSeconds - targetReps ← defaultTargetReps - targetScore ← defaultTargetScore (score libre) - targetScoreTimeMs ← defaultTargetScoreTimeMs si présent (score chrono) Tout reste modifiable ensuite dans "Personnaliser l'exercice". ## Migration Exercices existants sans valeurs par défaut : l'utilisateur devra compléter les champs manquants au prochain enregistrement de l'exercice (pas de blocage rétroactif immédiat, mais validation bloquante dès la prochaine sauvegarde).