docs(ideai): met à jour la mémoire et les tickets après la préparation sync

Ajoute les notes mémoire sur l'architecture et l'UX du score
chronométré, clôture le ticket #12, ajoute le cadrage des tickets
#24 à #31.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-18 00:54:04 +02:00
parent e38dd75f69
commit c83906332d
23 changed files with 346 additions and 8 deletions

View File

@ -1,7 +1,7 @@
---
issueRef: "#12"
version: 3
version: 5
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedAt: 1784301400489
updatedAt: 1784328818712
---
Portée volontairement limitée : pas de backend à développer. Juste s'assurer que change_log est alimenté de façon fiable à chaque mutation (create/update/delete/archive) sur les agrégats définis en #3, et qu'une interface de sync (no-op) existe pour ne pas avoir à toucher au domaine quand le serveur arrivera. Documenter aussi où s'accrochera la notion de profil utilisateur (futureOwnerProfileId, nullable pour l'instant).

View File

@ -2,7 +2,7 @@
id: "756cfcb4-8f5a-412f-ba13-5038284679bd"
number: 12
title: "[DevBackend] Préparation technique de la synchro serveur future"
status: "open"
status: "closed"
priority: "low"
sprint: null
links: [{"target":"#4","kind":"dependsOn"}]
@ -10,7 +10,7 @@ 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: 1784301314769
updatedAt: 1784301400489
version: 3
updatedAt: 1784328818712
version: 5
---
Alimenter la table change_log à chaque mutation d'agrégat. Définir une interface abstraite de synchronisation (no-op pour l'instant, sans backend serveur). Documenter les invariants nécessaires à une future synchro incrémentale multi-device (résolution de conflits, gestion des profils utilisateurs à venir). Pas de développement serveur à ce stade.

View File

@ -0,0 +1,6 @@
---
issueRef: "#24"
version: 3
updatedBy: {"kind":"user"}
updatedAt: 1784328229518
---

View File

@ -0,0 +1,16 @@
---
id: "3dbea39a-1466-47d9-b12a-95a601ec287d"
number: 24
title: "Popup \"Exercie ajouté\" qui ne s'enlève pas quand on ajoute un exercice"
status: "open"
priority: "high"
sprint: null
links: []
agentRefs: [{"agentId":"57695b92-24d0-4876-837c-76116e70a6ae","role":"assigned"}]
createdBy: {"kind":"user"}
updatedBy: {"kind":"user"}
createdAt: 1784328185359
updatedAt: 1784328229518
version: 3
---
Quand j'ajoute un exercice, la popup "Exercie ajouté" s'affiche mais ne s'enleve pas. Il faudrait qu'elle s'enleve au bout que 3 sec par exemple ou si on appuie sur Personnlaiser

View File

@ -0,0 +1,6 @@
---
issueRef: "#25"
version: 1
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedAt: 1784328239814
---

View File

@ -0,0 +1,16 @@
---
id: "da78f1df-ff9b-4745-b108-b312eec9efe7"
number: 25
title: "[DevBackend] Domain et migration pour le score chronométré"
status: "open"
priority: "high"
sprint: null
links: [{"target":"#18","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: 1784328239814
updatedAt: 1784328239814
version: 1
---
Fondation du ticket #18 (score chronométré). Ajouter ScoreInputMode (manual|stopwatch) sur Exercise avec propagation snapshot pattern (ProgramExercise, snapshot de séance, ActiveSetResult, WorkoutHistorySetResult). Ajouter actualScoreTimeMs/targetScoreTimeMs/targetScoreTimeMsOverride distincts de actualScore/targetScore/targetScoreOverride. Nouvelle table Drift ActiveScoreStopwatchState (status running|stopped, startedAt, accumulatedMs, stoppedAt, clé programIndex/exerciseIndex/setIndex). Migration Drift schemaVersion 2 -> 3. Use cases : démarrer/arrêter/reprendre/réinitialiser le chrono d'une série, copie de la durée finale vers ActiveSetResult à la validation. Cf. mémoires "gametime-ux-score-chrono" et "gametime-architecture-score-chrono" pour le détail complet.

View File

@ -0,0 +1,6 @@
---
issueRef: "#26"
version: 2
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedAt: 1784328255774
---

View File

@ -0,0 +1,16 @@
---
id: "37a022d8-b152-48c9-a4d1-72528e2d63af"
number: 26
title: "[DevFrontend] Configuration du Score chrono (exercice + programme)"
status: "open"
priority: "high"
sprint: null
links: [{"target":"#18","kind":"relatesTo"},{"target":"#25","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: 1784328244539
updatedAt: 1784328255774
version: 2
---
Dans la création/édition d'exercice (lib/presentation/exercise_library_screen.dart), si Score est activé, ajouter le sous-choix "Mode de saisie" : Saisie libre (actuel) vs Chrono intégré (label par défaut "Temps réalisé", pas d'unité libre). Badge résumé "Score chrono" pour ce mode. Dans l'écran de personnalisation d'exercice en programme (lib/presentation/program_screen.dart), pour un exercice en Score chrono : champ "Objectif de chrono" optionnel au lieu de "cible score". Avertissement si Temps ET Score chrono actifs simultanément. Cf. mémoire "gametime-ux-score-chrono" pour le détail complet.

View File

@ -0,0 +1,6 @@
---
issueRef: "#27"
version: 3
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedAt: 1784328260160
---

View File

@ -0,0 +1,16 @@
---
id: "1b0116c4-ccb5-4d58-b977-fbe122e043fa"
number: 27
title: "[DevFrontend] Chrono score intégré dans l'exécution de séance"
status: "open"
priority: "high"
sprint: null
links: [{"target":"#18","kind":"relatesTo"},{"target":"#25","kind":"dependsOn"},{"target":"#26","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: 1784328248186
updatedAt: 1784328260160
version: 3
---
Dans lib/presentation/workout_execution_screen.dart, bloc dédié "Chrono score" (affichage mm:ss.d, boutons Démarrer/Arrêter/Reprendre/Réinitialiser) quand la mesure Score est en mode chrono. Terminer la série avec chrono non démarré -> confirmation "Aucun temps chronométré" (Démarrer le chrono / Terminer sans chrono). Terminer avec chrono en cours -> auto-stop et enregistrement. Passer pendant que le chrono tourne -> confirmation. Pause de séance -> chrono se met en pause avec la séance. Action secondaire "Modifier le temps" pour correction manuelle. Cf. mémoire "gametime-ux-score-chrono" pour le détail complet des cas limites.

View File

@ -0,0 +1,6 @@
---
issueRef: "#28"
version: 2
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedAt: 1784328260662
---

View File

@ -0,0 +1,16 @@
---
id: "dd96c2f3-63a7-4e0d-b976-b1e4a2f58240"
number: 28
title: "[DevFrontend] Affichage du Score chrono dans le plan de séance et l'historique"
status: "open"
priority: "medium"
sprint: null
links: [{"target":"#18","kind":"relatesTo"},{"target":"#27","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: 1784328251633
updatedAt: 1784328260662
version: 2
---
Dans le plan de séance (bottom sheet de workout_execution_screen.dart) et l'écran d'historique (history_screen.dart) : afficher "Score chrono" avec la durée formatée (ex "00:38.7") au lieu d'un score numérique brut, avec l'objectif si défini ("00:38.7 / objectif 00:45"). La bottom sheet "Modifier la série" (édition ponctuelle, ticket #23) doit permettre de saisir/corriger manuellement une durée (min/s/dixièmes) pour une série en Score chrono. Cf. mémoire "gametime-ux-score-chrono".

View File

@ -0,0 +1,6 @@
---
issueRef: "#29"
version: 3
updatedBy: {"kind":"user"}
updatedAt: 1784328670579
---

View File

@ -0,0 +1,16 @@
---
id: "89da284b-871c-4e5b-9bfa-ab16f386ba8f"
number: 29
title: "[Bug] Serie qu'on ne peut pas temriner"
status: "open"
priority: "critical"
sprint: null
links: []
agentRefs: []
createdBy: {"kind":"user"}
updatedBy: {"kind":"user"}
createdAt: 1784328426827
updatedAt: 1784328670579
version: 3
---
Dans un programme j'ai un exercice qui se compose de 3 series, une mesure a suivre de temps, de répétition et un score. J'ai mis le temps cible à 30, le nombre de répétition à 5. Une fois dans ma séance, je suis sur la série 2/3, temps indiqué à 30 s, j'ai mis Répétitions sur 3 et score sur 5, mais quand je clique sur temriner la série, rien ne se passe

View File

@ -0,0 +1,6 @@
---
issueRef: "#30"
version: 2
updatedBy: {"kind":"user"}
updatedAt: 1784328751807
---

View File

@ -0,0 +1,16 @@
---
id: "d4793c3f-a308-42f3-89e6-335cb2f95310"
number: 30
title: "Ajouter ajouter des valeurs par défaut à la création d'un exercice"
status: "open"
priority: "critical"
sprint: null
links: []
agentRefs: []
createdBy: {"kind":"user"}
updatedBy: {"kind":"user"}
createdAt: 1784328704260
updatedAt: 1784328751807
version: 2
---
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.

View File

@ -0,0 +1,6 @@
---
issueRef: "#31"
version: 1
updatedBy: {"kind":"user"}
updatedAt: 1784328786412
---

View File

@ -0,0 +1,15 @@
---
id: "2f55c804-65e7-465a-9296-f66dd6db684a"
number: 31
title: "[Bug] Fleche retour non fonctionnelle dans une seance en cours"
status: "open"
priority: "high"
sprint: null
links: []
agentRefs: []
createdBy: {"kind":"user"}
updatedBy: {"kind":"user"}
createdAt: 1784328786412
updatedAt: 1784328786412
version: 1
---

View File

@ -1,3 +1,3 @@
{
"nextNumber": 24
"nextNumber": 32
}

View File

@ -137,13 +137,13 @@
"issueRef": "#12",
"path": "12",
"title": "[DevBackend] Préparation technique de la synchro serveur future",
"status": "open",
"status": "closed",
"priority": "low",
"sprint": null,
"assignedAgentIds": [
"10ee045b-1c41-479e-ba03-dceed9edd495"
],
"updatedAt": 1784301400489
"updatedAt": 1784328818712
},
{
"issueRef": "#13",
@ -262,6 +262,96 @@
"9933c93a-b8a1-4164-a3bb-7063fdad747d"
],
"updatedAt": 1784327862613
},
{
"issueRef": "#24",
"path": "24",
"title": "Popup \"Exercie ajouté\" qui ne s'enlève pas quand on ajoute un exercice",
"status": "open",
"priority": "high",
"sprint": null,
"assignedAgentIds": [
"57695b92-24d0-4876-837c-76116e70a6ae"
],
"updatedAt": 1784328229518
},
{
"issueRef": "#25",
"path": "25",
"title": "[DevBackend] Domain et migration pour le score chronométré",
"status": "open",
"priority": "high",
"sprint": null,
"assignedAgentIds": [
"10ee045b-1c41-479e-ba03-dceed9edd495"
],
"updatedAt": 1784328239814
},
{
"issueRef": "#26",
"path": "26",
"title": "[DevFrontend] Configuration du Score chrono (exercice + programme)",
"status": "open",
"priority": "high",
"sprint": null,
"assignedAgentIds": [
"9933c93a-b8a1-4164-a3bb-7063fdad747d"
],
"updatedAt": 1784328255774
},
{
"issueRef": "#27",
"path": "27",
"title": "[DevFrontend] Chrono score intégré dans l'exécution de séance",
"status": "open",
"priority": "high",
"sprint": null,
"assignedAgentIds": [
"9933c93a-b8a1-4164-a3bb-7063fdad747d"
],
"updatedAt": 1784328260160
},
{
"issueRef": "#28",
"path": "28",
"title": "[DevFrontend] Affichage du Score chrono dans le plan de séance et l'historique",
"status": "open",
"priority": "medium",
"sprint": null,
"assignedAgentIds": [
"9933c93a-b8a1-4164-a3bb-7063fdad747d"
],
"updatedAt": 1784328260662
},
{
"issueRef": "#29",
"path": "29",
"title": "[Bug] Serie qu'on ne peut pas temriner",
"status": "open",
"priority": "critical",
"sprint": null,
"assignedAgentIds": [],
"updatedAt": 1784328670579
},
{
"issueRef": "#30",
"path": "30",
"title": "Ajouter ajouter des valeurs par défaut à la création d'un exercice",
"status": "open",
"priority": "critical",
"sprint": null,
"assignedAgentIds": [],
"updatedAt": 1784328751807
},
{
"issueRef": "#31",
"path": "31",
"title": "[Bug] Fleche retour non fonctionnelle dans une seance en cours",
"status": "open",
"priority": "high",
"sprint": null,
"assignedAgentIds": [],
"updatedAt": 1784328786412
}
]
}