docs(ideai): mémoire chaînage de chronos, clôture ticket #75, cadrage #76-#79
Ajoute les notes mémoire d'architecture et UX pour l'auto-enchaînement des chronos d'étapes, clôture le ticket #75, reflète les tickets #63/#70, ajoute le cadrage des tickets #76 à #79. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@ -1,6 +1,6 @@
|
||||
---
|
||||
issueRef: "#63"
|
||||
version: 8
|
||||
updatedBy: {"kind":"user"}
|
||||
updatedAt: 1784482673684
|
||||
version: 9
|
||||
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
|
||||
updatedAt: 1784533228302
|
||||
---
|
||||
|
||||
@ -2,15 +2,15 @@
|
||||
id: "17f54d9f-0317-429d-a275-480966976ced"
|
||||
number: 63
|
||||
title: "Ajouter les features déjà présentes sur le serveur au client"
|
||||
status: "open"
|
||||
status: "qa"
|
||||
priority: "medium"
|
||||
sprint: "4237adfd-91eb-45ff-9f32-6ce1daa39822"
|
||||
links: [{"target":"#57","kind":"dependsOn"},{"target":"#46","kind":"dependsOn"}]
|
||||
agentRefs: [{"agentId":"57695b92-24d0-4876-837c-76116e70a6ae","role":"assigned"}]
|
||||
createdBy: {"kind":"user"}
|
||||
updatedBy: {"kind":"user"}
|
||||
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
|
||||
createdAt: 1784482089895
|
||||
updatedAt: 1784482673684
|
||||
version: 8
|
||||
updatedAt: 1784533228302
|
||||
version: 9
|
||||
---
|
||||
Une première version du serveur est disponible. J'aimerais que les features serveur soient ajouté à l'application (j'entends ici l'ajout de la totalité de la stack de la logique méier comme la sync des historiques etc, à la connexion). Pour la connexion, comme indiqué dans le ticket #57, la connexion n'est pas obligatoire pour l'acces à l'applicaiton, elle ne doit être que optionnelle, je pense entre autre à un menu "Profile" à créer. Le bon fonctionnement de l'application reste prioritaire sur le serveur, à savoir que le serveur sert l'applciation et pas l'inverse, c'est a dire que si une structure de donnée est actuellement différente entre le serveur et l'applciation, alors il faut modifier le serveur pour qu'il accepte la donnée du client. Je pense par exemple aux exercices, entre la création serveur et la réalisation du ticket, je pense que la forme des exercice a été modifiée (ajout entre autre des étapes dans une serie d'un exercice), il faudra alors adapter le serveur à ça.
|
||||
@ -1,6 +1,6 @@
|
||||
---
|
||||
issueRef: "#70"
|
||||
version: 1
|
||||
updatedBy: {"kind":"agent","agent_id":"f8f40941-ecf7-4830-b9de-8818a099f448"}
|
||||
updatedAt: 1784488373778
|
||||
version: 2
|
||||
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
|
||||
updatedAt: 1784533224103
|
||||
---
|
||||
|
||||
@ -2,15 +2,15 @@
|
||||
id: "cb93ee24-0041-4926-b0c6-3ab26aab46ec"
|
||||
number: 70
|
||||
title: "[QA] Validation client online offline-first"
|
||||
status: "open"
|
||||
status: "qa"
|
||||
priority: "medium"
|
||||
sprint: null
|
||||
links: [{"target":"#63","kind":"relatesTo"},{"target":"#68","kind":"dependsOn"},{"target":"#69","kind":"dependsOn"}]
|
||||
agentRefs: [{"agentId":"7efa512f-3b3a-47b5-ade0-a2dd13073055","role":"assigned"}]
|
||||
createdBy: {"kind":"agent","agent_id":"f8f40941-ecf7-4830-b9de-8818a099f448"}
|
||||
updatedBy: {"kind":"agent","agent_id":"f8f40941-ecf7-4830-b9de-8818a099f448"}
|
||||
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
|
||||
createdAt: 1784488373778
|
||||
updatedAt: 1784488373778
|
||||
version: 1
|
||||
updatedAt: 1784533224103
|
||||
version: 2
|
||||
---
|
||||
Valider le chantier client online : app utilisable sans compte, login/register/logout optionnels, tokens persistés, profil cache hors ligne, sync push/pull LWW, erreurs réseau silencieuses, retry différé, partage sortant ciblé, inbox, accept/decline/revoke, import local offline, absence de régression sur les parcours locaux exercices/programmes/séances/historique.
|
||||
6
.ideai/tickets/75/carnet.md
Normal file
6
.ideai/tickets/75/carnet.md
Normal file
@ -0,0 +1,6 @@
|
||||
---
|
||||
issueRef: "#75"
|
||||
version: 1
|
||||
updatedBy: {"kind":"agent","agent_id":"f8f40941-ecf7-4830-b9de-8818a099f448"}
|
||||
updatedAt: 1784547220555
|
||||
---
|
||||
16
.ideai/tickets/75/issue.md
Normal file
16
.ideai/tickets/75/issue.md
Normal file
@ -0,0 +1,16 @@
|
||||
---
|
||||
id: "0197daa2-674e-4b03-9142-d0180874ffc4"
|
||||
number: 75
|
||||
title: "[DevBackend] Modèle et migration pour auto-enchaînement des chronos d'étapes"
|
||||
status: "open"
|
||||
priority: "medium"
|
||||
sprint: null
|
||||
links: [{"target":"#73","kind":"relatesTo"}]
|
||||
agentRefs: [{"agentId":"10ee045b-1c41-479e-ba03-dceed9edd495","role":"assigned"}]
|
||||
createdBy: {"kind":"agent","agent_id":"f8f40941-ecf7-4830-b9de-8818a099f448"}
|
||||
updatedBy: {"kind":"agent","agent_id":"f8f40941-ecf7-4830-b9de-8818a099f448"}
|
||||
createdAt: 1784547220555
|
||||
updatedAt: 1784547220555
|
||||
version: 1
|
||||
---
|
||||
Ajouter le réglage `autoStartNextTimedStep` côté modèle. Sur `Exercise` : bool non-null par défaut true. Sur `ProgramExercise` : `autoStartNextTimedStepSnapshot` non-null + `autoStartNextTimedStepOverride` nullable pour revenir au réglage exercice snapshoté. Sur `WorkoutTemplateExerciseOverride` : `autoStartNextTimedStepOverride` nullable, décision consciente d'élargir l'override séance à un comportement booléen non structurel. Propager dans `ProgramExerciseConfig`, `_ProgramExerciseDraft`, snapshots JSON et mappers Drift. Migration Drift schemaVersion 13 -> 14 avec defaults true et colonnes nullable d'override.
|
||||
6
.ideai/tickets/76/carnet.md
Normal file
6
.ideai/tickets/76/carnet.md
Normal file
@ -0,0 +1,6 @@
|
||||
---
|
||||
issueRef: "#76"
|
||||
version: 1
|
||||
updatedBy: {"kind":"agent","agent_id":"f8f40941-ecf7-4830-b9de-8818a099f448"}
|
||||
updatedAt: 1784547227107
|
||||
---
|
||||
16
.ideai/tickets/76/issue.md
Normal file
16
.ideai/tickets/76/issue.md
Normal file
@ -0,0 +1,16 @@
|
||||
---
|
||||
id: "8896c34d-bc57-424b-967f-d3ef767185e1"
|
||||
number: 76
|
||||
title: "[DevBackend] Résolution effective et auto-advance des chronos d'étapes"
|
||||
status: "open"
|
||||
priority: "medium"
|
||||
sprint: null
|
||||
links: [{"target":"#73","kind":"relatesTo"},{"target":"#75","kind":"dependsOn"}]
|
||||
agentRefs: [{"agentId":"10ee045b-1c41-479e-ba03-dceed9edd495","role":"assigned"}]
|
||||
createdBy: {"kind":"agent","agent_id":"f8f40941-ecf7-4830-b9de-8818a099f448"}
|
||||
updatedBy: {"kind":"agent","agent_id":"f8f40941-ecf7-4830-b9de-8818a099f448"}
|
||||
createdAt: 1784547227107
|
||||
updatedAt: 1784547227107
|
||||
version: 1
|
||||
---
|
||||
Adapter la résolution de séance et `ActiveExerciseStepUseCases` pour appliquer `séance > programme > exercice` à `autoStartNextTimedStep`. Inclure la valeur effective dans le snapshot résolu ou dans `_StepSequenceContext`. Modifier `_advanceState` et `_autoAdvanceElapsedTimers` : si une étape Temps expirée est suivie d'une étape Temps et que la valeur effective est false, enregistrer le résultat de l'étape expirée puis s'arrêter sur l'étape suivante en `stoppedTimer`, sans consommer l'overflow ni démarrer le chrono suivant. Conserver l'auto-enchaînement existant quand true.
|
||||
6
.ideai/tickets/77/carnet.md
Normal file
6
.ideai/tickets/77/carnet.md
Normal file
@ -0,0 +1,6 @@
|
||||
---
|
||||
issueRef: "#77"
|
||||
version: 1
|
||||
updatedBy: {"kind":"agent","agent_id":"f8f40941-ecf7-4830-b9de-8818a099f448"}
|
||||
updatedAt: 1784547232756
|
||||
---
|
||||
16
.ideai/tickets/77/issue.md
Normal file
16
.ideai/tickets/77/issue.md
Normal file
@ -0,0 +1,16 @@
|
||||
---
|
||||
id: "835be070-248f-42fb-b996-4df86445f154"
|
||||
number: 77
|
||||
title: "[DevFrontend] Réglages auto-enchaînement exercice, programme et séance"
|
||||
status: "open"
|
||||
priority: "medium"
|
||||
sprint: null
|
||||
links: [{"target":"#73","kind":"relatesTo"},{"target":"#75","kind":"dependsOn"}]
|
||||
agentRefs: [{"agentId":"9933c93a-b8a1-4164-a3bb-7063fdad747d","role":"assigned"}]
|
||||
createdBy: {"kind":"agent","agent_id":"f8f40941-ecf7-4830-b9de-8818a099f448"}
|
||||
updatedBy: {"kind":"agent","agent_id":"f8f40941-ecf7-4830-b9de-8818a099f448"}
|
||||
createdAt: 1784547232756
|
||||
updatedAt: 1784547232756
|
||||
version: 1
|
||||
---
|
||||
Ajouter l'UI du réglage `Enchaîner automatiquement les chronos consécutifs` aux trois niveaux : `ExerciseFormScreen` valeur de base visible si séquence activée; `ProgramExerciseCustomizationScreen` override nullable avec indication héritage et action `Revenir au réglage de l'exercice`; `WorkoutTemplateProgramDetailScreen` override nullable avec action `Revenir au réglage du programme`. Attention à propager le champ dans `ProgramExerciseConfig` et `_ProgramExerciseDraft` comme pour `exerciseStepsSnapshot` corrigé au #72.
|
||||
6
.ideai/tickets/78/carnet.md
Normal file
6
.ideai/tickets/78/carnet.md
Normal file
@ -0,0 +1,6 @@
|
||||
---
|
||||
issueRef: "#78"
|
||||
version: 1
|
||||
updatedBy: {"kind":"agent","agent_id":"f8f40941-ecf7-4830-b9de-8818a099f448"}
|
||||
updatedAt: 1784547239512
|
||||
---
|
||||
16
.ideai/tickets/78/issue.md
Normal file
16
.ideai/tickets/78/issue.md
Normal file
@ -0,0 +1,16 @@
|
||||
---
|
||||
id: "e7769413-3d3d-48af-b55e-361c69aef4b2"
|
||||
number: 78
|
||||
title: "[DevFrontend] État d'exécution Chrono suivant prêt"
|
||||
status: "open"
|
||||
priority: "medium"
|
||||
sprint: null
|
||||
links: [{"target":"#73","kind":"relatesTo"},{"target":"#76","kind":"dependsOn"},{"target":"#77","kind":"dependsOn"}]
|
||||
agentRefs: [{"agentId":"9933c93a-b8a1-4164-a3bb-7063fdad747d","role":"assigned"}]
|
||||
createdBy: {"kind":"agent","agent_id":"f8f40941-ecf7-4830-b9de-8818a099f448"}
|
||||
updatedBy: {"kind":"agent","agent_id":"f8f40941-ecf7-4830-b9de-8818a099f448"}
|
||||
createdAt: 1784547239512
|
||||
updatedAt: 1784547239512
|
||||
version: 1
|
||||
---
|
||||
Adapter l'écran d'exécution des étapes pour afficher `Chrono suivant prêt` quand une étape Temps est prête après une étape Temps et que l'auto-enchaînement effectif est désactivé. Réutiliser `stoppedTimer` côté domaine; l'UI dérive le libellé/bouton depuis l'étape courante, le résultat précédent et la valeur effective. Bouton `Démarrer le chrono`, pas de pause séance, pas de rouge/erreur. Après kill/reprise, l'écran doit revenir à cet état sans démarrage automatique.
|
||||
6
.ideai/tickets/79/carnet.md
Normal file
6
.ideai/tickets/79/carnet.md
Normal file
@ -0,0 +1,6 @@
|
||||
---
|
||||
issueRef: "#79"
|
||||
version: 1
|
||||
updatedBy: {"kind":"agent","agent_id":"f8f40941-ecf7-4830-b9de-8818a099f448"}
|
||||
updatedAt: 1784547247343
|
||||
---
|
||||
16
.ideai/tickets/79/issue.md
Normal file
16
.ideai/tickets/79/issue.md
Normal file
@ -0,0 +1,16 @@
|
||||
---
|
||||
id: "107fc29b-cd1d-40cc-9505-61180d081022"
|
||||
number: 79
|
||||
title: "[QA] Validation auto-enchaînement configurable des chronos d'étapes"
|
||||
status: "open"
|
||||
priority: "medium"
|
||||
sprint: null
|
||||
links: [{"target":"#73","kind":"relatesTo"},{"target":"#78","kind":"dependsOn"}]
|
||||
agentRefs: [{"agentId":"7efa512f-3b3a-47b5-ade0-a2dd13073055","role":"assigned"}]
|
||||
createdBy: {"kind":"agent","agent_id":"f8f40941-ecf7-4830-b9de-8818a099f448"}
|
||||
updatedBy: {"kind":"agent","agent_id":"f8f40941-ecf7-4830-b9de-8818a099f448"}
|
||||
createdAt: 1784547247343
|
||||
updatedAt: 1784547247343
|
||||
version: 1
|
||||
---
|
||||
Valider le réglage d'auto-enchaînement des chronos d'étapes : défaut true sur anciens/nouveaux exercices, override programme puis séance avec retour héritage, résolution séance > programme > exercice, comportement Temps->Temps true et false, plusieurs chronos consécutifs, fin de passage vers passage suivant, pause/reprise/kill app dans l'état `Chrono suivant prêt`, absence de régression sur étapes répétitions et skips.
|
||||
@ -1,3 +1,3 @@
|
||||
{
|
||||
"nextNumber": 75
|
||||
"nextNumber": 80
|
||||
}
|
||||
@ -703,13 +703,13 @@
|
||||
"issueRef": "#63",
|
||||
"path": "63",
|
||||
"title": "Ajouter les features déjà présentes sur le serveur au client",
|
||||
"status": "open",
|
||||
"status": "qa",
|
||||
"priority": "medium",
|
||||
"sprint": "4237adfd-91eb-45ff-9f32-6ce1daa39822",
|
||||
"assignedAgentIds": [
|
||||
"57695b92-24d0-4876-837c-76116e70a6ae"
|
||||
],
|
||||
"updatedAt": 1784482673684
|
||||
"updatedAt": 1784533228302
|
||||
},
|
||||
{
|
||||
"issueRef": "#64",
|
||||
@ -787,13 +787,13 @@
|
||||
"issueRef": "#70",
|
||||
"path": "70",
|
||||
"title": "[QA] Validation client online offline-first",
|
||||
"status": "open",
|
||||
"status": "qa",
|
||||
"priority": "medium",
|
||||
"sprint": null,
|
||||
"assignedAgentIds": [
|
||||
"7efa512f-3b3a-47b5-ade0-a2dd13073055"
|
||||
],
|
||||
"updatedAt": 1784488373778
|
||||
"updatedAt": 1784533224103
|
||||
},
|
||||
{
|
||||
"issueRef": "#71",
|
||||
@ -842,6 +842,66 @@
|
||||
"57695b92-24d0-4876-837c-76116e70a6ae"
|
||||
],
|
||||
"updatedAt": 1784526657602
|
||||
},
|
||||
{
|
||||
"issueRef": "#75",
|
||||
"path": "75",
|
||||
"title": "[DevBackend] Modèle et migration pour auto-enchaînement des chronos d'étapes",
|
||||
"status": "open",
|
||||
"priority": "medium",
|
||||
"sprint": null,
|
||||
"assignedAgentIds": [
|
||||
"10ee045b-1c41-479e-ba03-dceed9edd495"
|
||||
],
|
||||
"updatedAt": 1784547220555
|
||||
},
|
||||
{
|
||||
"issueRef": "#76",
|
||||
"path": "76",
|
||||
"title": "[DevBackend] Résolution effective et auto-advance des chronos d'étapes",
|
||||
"status": "open",
|
||||
"priority": "medium",
|
||||
"sprint": null,
|
||||
"assignedAgentIds": [
|
||||
"10ee045b-1c41-479e-ba03-dceed9edd495"
|
||||
],
|
||||
"updatedAt": 1784547227107
|
||||
},
|
||||
{
|
||||
"issueRef": "#77",
|
||||
"path": "77",
|
||||
"title": "[DevFrontend] Réglages auto-enchaînement exercice, programme et séance",
|
||||
"status": "open",
|
||||
"priority": "medium",
|
||||
"sprint": null,
|
||||
"assignedAgentIds": [
|
||||
"9933c93a-b8a1-4164-a3bb-7063fdad747d"
|
||||
],
|
||||
"updatedAt": 1784547232756
|
||||
},
|
||||
{
|
||||
"issueRef": "#78",
|
||||
"path": "78",
|
||||
"title": "[DevFrontend] État d'exécution Chrono suivant prêt",
|
||||
"status": "open",
|
||||
"priority": "medium",
|
||||
"sprint": null,
|
||||
"assignedAgentIds": [
|
||||
"9933c93a-b8a1-4164-a3bb-7063fdad747d"
|
||||
],
|
||||
"updatedAt": 1784547239512
|
||||
},
|
||||
{
|
||||
"issueRef": "#79",
|
||||
"path": "79",
|
||||
"title": "[QA] Validation auto-enchaînement configurable des chronos d'étapes",
|
||||
"status": "open",
|
||||
"priority": "medium",
|
||||
"sprint": null,
|
||||
"assignedAgentIds": [
|
||||
"7efa512f-3b3a-47b5-ade0-a2dd13073055"
|
||||
],
|
||||
"updatedAt": 1784547247343
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user