---
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).