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:
@ -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).
|
||||
@ -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.
|
||||
6
.ideai/tickets/24/carnet.md
Normal file
6
.ideai/tickets/24/carnet.md
Normal file
@ -0,0 +1,6 @@
|
||||
---
|
||||
issueRef: "#24"
|
||||
version: 3
|
||||
updatedBy: {"kind":"user"}
|
||||
updatedAt: 1784328229518
|
||||
---
|
||||
16
.ideai/tickets/24/issue.md
Normal file
16
.ideai/tickets/24/issue.md
Normal 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
|
||||
6
.ideai/tickets/25/carnet.md
Normal file
6
.ideai/tickets/25/carnet.md
Normal file
@ -0,0 +1,6 @@
|
||||
---
|
||||
issueRef: "#25"
|
||||
version: 1
|
||||
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
|
||||
updatedAt: 1784328239814
|
||||
---
|
||||
16
.ideai/tickets/25/issue.md
Normal file
16
.ideai/tickets/25/issue.md
Normal 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.
|
||||
6
.ideai/tickets/26/carnet.md
Normal file
6
.ideai/tickets/26/carnet.md
Normal file
@ -0,0 +1,6 @@
|
||||
---
|
||||
issueRef: "#26"
|
||||
version: 2
|
||||
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
|
||||
updatedAt: 1784328255774
|
||||
---
|
||||
16
.ideai/tickets/26/issue.md
Normal file
16
.ideai/tickets/26/issue.md
Normal 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.
|
||||
6
.ideai/tickets/27/carnet.md
Normal file
6
.ideai/tickets/27/carnet.md
Normal file
@ -0,0 +1,6 @@
|
||||
---
|
||||
issueRef: "#27"
|
||||
version: 3
|
||||
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
|
||||
updatedAt: 1784328260160
|
||||
---
|
||||
16
.ideai/tickets/27/issue.md
Normal file
16
.ideai/tickets/27/issue.md
Normal 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.
|
||||
6
.ideai/tickets/28/carnet.md
Normal file
6
.ideai/tickets/28/carnet.md
Normal file
@ -0,0 +1,6 @@
|
||||
---
|
||||
issueRef: "#28"
|
||||
version: 2
|
||||
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
|
||||
updatedAt: 1784328260662
|
||||
---
|
||||
16
.ideai/tickets/28/issue.md
Normal file
16
.ideai/tickets/28/issue.md
Normal 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".
|
||||
6
.ideai/tickets/29/carnet.md
Normal file
6
.ideai/tickets/29/carnet.md
Normal file
@ -0,0 +1,6 @@
|
||||
---
|
||||
issueRef: "#29"
|
||||
version: 3
|
||||
updatedBy: {"kind":"user"}
|
||||
updatedAt: 1784328670579
|
||||
---
|
||||
16
.ideai/tickets/29/issue.md
Normal file
16
.ideai/tickets/29/issue.md
Normal 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
|
||||
6
.ideai/tickets/30/carnet.md
Normal file
6
.ideai/tickets/30/carnet.md
Normal file
@ -0,0 +1,6 @@
|
||||
---
|
||||
issueRef: "#30"
|
||||
version: 2
|
||||
updatedBy: {"kind":"user"}
|
||||
updatedAt: 1784328751807
|
||||
---
|
||||
16
.ideai/tickets/30/issue.md
Normal file
16
.ideai/tickets/30/issue.md
Normal 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.
|
||||
6
.ideai/tickets/31/carnet.md
Normal file
6
.ideai/tickets/31/carnet.md
Normal file
@ -0,0 +1,6 @@
|
||||
---
|
||||
issueRef: "#31"
|
||||
version: 1
|
||||
updatedBy: {"kind":"user"}
|
||||
updatedAt: 1784328786412
|
||||
---
|
||||
15
.ideai/tickets/31/issue.md
Normal file
15
.ideai/tickets/31/issue.md
Normal 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
|
||||
---
|
||||
@ -1,3 +1,3 @@
|
||||
{
|
||||
"nextNumber": 24
|
||||
"nextNumber": 32
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user