diff --git a/.ideai/memory/MEMORY.md b/.ideai/memory/MEMORY.md index 97e182d..098275b 100644 --- a/.ideai/memory/MEMORY.md +++ b/.ideai/memory/MEMORY.md @@ -10,3 +10,4 @@ - [gametime-ux-score-chrono](gametime-ux-score-chrono.md) — memory note gametime-ux-score-chrono - [gametime-architecture-score-chrono](gametime-architecture-score-chrono.md) — memory note gametime-architecture-score-chrono - [gametime-resume-plan-2026-07-18](gametime-resume-plan-2026-07-18.md) — memory note gametime-resume-plan-2026-07-18 +- [gametime-ux-exercise-default-targets](gametime-ux-exercise-default-targets.md) — memory note gametime-ux-exercise-default-targets diff --git a/.ideai/memory/gametime-ux-exercise-default-targets.md b/.ideai/memory/gametime-ux-exercise-default-targets.md new file mode 100644 index 0000000..523a147 --- /dev/null +++ b/.ideai/memory/gametime-ux-exercise-default-targets.md @@ -0,0 +1,35 @@ +--- +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). \ No newline at end of file diff --git a/.ideai/tickets/30/carnet.md b/.ideai/tickets/30/carnet.md index 2539cfb..fab30dc 100644 --- a/.ideai/tickets/30/carnet.md +++ b/.ideai/tickets/30/carnet.md @@ -1,6 +1,6 @@ --- issueRef: "#30" -version: 2 -updatedBy: {"kind":"user"} -updatedAt: 1784328751807 +version: 4 +updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"} +updatedAt: 1784362687149 --- diff --git a/.ideai/tickets/30/issue.md b/.ideai/tickets/30/issue.md index c69f683..3edb995 100644 --- a/.ideai/tickets/30/issue.md +++ b/.ideai/tickets/30/issue.md @@ -2,15 +2,15 @@ id: "d4793c3f-a308-42f3-89e6-335cb2f95310" number: 30 title: "Ajouter ajouter des valeurs par défaut à la création d'un exercice" -status: "open" +status: "closed" priority: "critical" sprint: null links: [] agentRefs: [] createdBy: {"kind":"user"} -updatedBy: {"kind":"user"} +updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"} createdAt: 1784328704260 -updatedAt: 1784328751807 -version: 2 +updatedAt: 1784362687149 +version: 4 --- Il faut qu'a la création d'un exercice, il soit obligatoire de donner des valeurs par défaut pour les cibles choisies pour l'exercice. Il faut que ces valeurs oient positives et différentes de 0 pour éviter tout soucis. \ No newline at end of file diff --git a/.ideai/tickets/39/carnet.md b/.ideai/tickets/39/carnet.md new file mode 100644 index 0000000..171a69c --- /dev/null +++ b/.ideai/tickets/39/carnet.md @@ -0,0 +1,6 @@ +--- +issueRef: "#39" +version: 3 +updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"} +updatedAt: 1784362685685 +--- diff --git a/.ideai/tickets/39/issue.md b/.ideai/tickets/39/issue.md new file mode 100644 index 0000000..f2239d3 --- /dev/null +++ b/.ideai/tickets/39/issue.md @@ -0,0 +1,16 @@ +--- +id: "8f581a08-3963-495a-863c-22e8a58b3867" +number: 39 +title: "[DevBackend] Valeurs cibles par défaut sur Exercise" +status: "closed" +priority: "critical" +sprint: null +links: [{"target":"#30","kind":"relatesTo"}] +agentRefs: [{"agentId":"10ee045b-1c41-479e-ba03-dceed9edd495","role":"assigned"}] +createdBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"} +updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"} +createdAt: 1784361529389 +updatedAt: 1784362685685 +version: 3 +--- +Ajouter defaultTargetTimeSeconds/defaultTargetReps/defaultTargetScore/defaultTargetScoreTimeMs sur Exercise (migration Drift), avec validation domaine : valeur obligatoire >0 si la mesure correspondante est active (sauf score chrono où l'objectif par défaut reste optionnel mais >0 si renseigné). Cf. mémoire "gametime-ux-exercise-default-targets" pour le détail complet. \ No newline at end of file diff --git a/.ideai/tickets/40/carnet.md b/.ideai/tickets/40/carnet.md new file mode 100644 index 0000000..584f5ae --- /dev/null +++ b/.ideai/tickets/40/carnet.md @@ -0,0 +1,6 @@ +--- +issueRef: "#40" +version: 4 +updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"} +updatedAt: 1784362686414 +--- diff --git a/.ideai/tickets/40/issue.md b/.ideai/tickets/40/issue.md new file mode 100644 index 0000000..4a5e49f --- /dev/null +++ b/.ideai/tickets/40/issue.md @@ -0,0 +1,16 @@ +--- +id: "6bb171cc-2a3a-45b2-a952-5453de1cf1fc" +number: 40 +title: "[DevFrontend] Formulaire exercice : champs de valeurs par défaut + préremplissage programme" +status: "closed" +priority: "critical" +sprint: null +links: [{"target":"#30","kind":"relatesTo"},{"target":"#39","kind":"dependsOn"}] +agentRefs: [{"agentId":"9933c93a-b8a1-4164-a3bb-7063fdad747d","role":"assigned"}] +createdBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"} +updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"} +createdAt: 1784361532790 +updatedAt: 1784362686414 +version: 4 +--- +Ajouter les champs de valeur par défaut dans le formulaire de création/édition d'exercice (Temps par défaut, Répétitions par défaut, Score par défaut, Objectif de chrono par défaut optionnel), avec validation bloquante >0. Utiliser ces valeurs par défaut pour préremplir les cibles quand l'exercice est ajouté à un programme (au lieu des valeurs génériques actuelles). Cf. mémoire "gametime-ux-exercise-default-targets" pour le détail complet. \ No newline at end of file diff --git a/.ideai/tickets/counter.json b/.ideai/tickets/counter.json index d6298b5..d1b41b9 100644 --- a/.ideai/tickets/counter.json +++ b/.ideai/tickets/counter.json @@ -1,3 +1,3 @@ { - "nextNumber": 39 + "nextNumber": 41 } \ No newline at end of file diff --git a/.ideai/tickets/index.json b/.ideai/tickets/index.json index 85776a2..38fc634 100644 --- a/.ideai/tickets/index.json +++ b/.ideai/tickets/index.json @@ -337,11 +337,11 @@ "issueRef": "#30", "path": "30", "title": "Ajouter ajouter des valeurs par défaut à la création d'un exercice", - "status": "open", + "status": "closed", "priority": "critical", "sprint": null, "assignedAgentIds": [], - "updatedAt": 1784328751807 + "updatedAt": 1784362687149 }, { "issueRef": "#31", @@ -436,6 +436,30 @@ "57695b92-24d0-4876-837c-76116e70a6ae" ], "updatedAt": 1784330204091 + }, + { + "issueRef": "#39", + "path": "39", + "title": "[DevBackend] Valeurs cibles par défaut sur Exercise", + "status": "closed", + "priority": "critical", + "sprint": null, + "assignedAgentIds": [ + "10ee045b-1c41-479e-ba03-dceed9edd495" + ], + "updatedAt": 1784362685685 + }, + { + "issueRef": "#40", + "path": "40", + "title": "[DevFrontend] Formulaire exercice : champs de valeurs par défaut + préremplissage programme", + "status": "closed", + "priority": "critical", + "sprint": null, + "assignedAgentIds": [ + "9933c93a-b8a1-4164-a3bb-7063fdad747d" + ], + "updatedAt": 1784362686414 } ] } \ No newline at end of file