docs(ideai): met à jour la mémoire et les tickets après la config score chronométré
Ajoute le plan de reprise mémoire, clôture le ticket #26, reflète le ticket #35, ajoute le cadrage des tickets #37/#38. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@ -9,3 +9,4 @@
|
||||
- [gametime-architecture-set-editing](gametime-architecture-set-editing.md) — memory note gametime-architecture-set-editing
|
||||
- [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
|
||||
|
||||
48
.ideai/memory/gametime-resume-plan-2026-07-18.md
Normal file
48
.ideai/memory/gametime-resume-plan-2026-07-18.md
Normal file
@ -0,0 +1,48 @@
|
||||
---
|
||||
name: gametime-resume-plan-2026-07-18
|
||||
description: memory note gametime-resume-plan-2026-07-18
|
||||
metadata:
|
||||
type: project
|
||||
---
|
||||
# GameTime — Plan de reprise (consigné suite à interruption pour limite de tokens, 2026-07-18)
|
||||
|
||||
## Instruction utilisateur explicite
|
||||
1. Attendre le reset de tokens (~3h du matin) avant de reprendre.
|
||||
2. Terminer ce qui était en cours (voir "État exact au moment de l'interruption" ci-dessous).
|
||||
3. Enchaîner ensuite sur TOUS les tickets restants, en commençant par ceux du sprint **"Bug resolution"**.
|
||||
4. Puis les autres tickets par ordre de priorité, en tenant compte des dépendances — l'utilisateur laisse Main juger de l'ordre exact, il ne sera pas devant l'écran.
|
||||
5. **Règle importante pour les bugs** : ne PAS passer les tickets de bug en `closed` une fois corrigés — les passer en statut `QA`. L'utilisateur testera lui-même avec l'APK et les clôturera à la main.
|
||||
6. Une fois absolument tout terminé, rebuild l'APK final (`flutter build apk --debug`), pour que l'utilisateur ait un seul APK à jour avec tous les tickets faits.
|
||||
|
||||
## État exact au moment de l'interruption
|
||||
Ticket **#26** ([DevFrontend] Configuration du Score chrono — exercice + programme), branche `feature/#26-score-chrono-config`, en cours de débogage d'un dernier test qui échoue de façon persistante après plusieurs itérations :
|
||||
|
||||
Test : `test/presentation/exercise_library_screen_test.dart` — "basculer en chrono intégré masque l'unité et affiche le badge" (ligne ~129).
|
||||
Échec : `expect(find.bySemanticsLabel('Score chrono'), findsOneWidget)` ne trouve rien, alors que :
|
||||
- Le widget `MeasureBadge` (lib/presentation/exercise_library_screen.dart ~ligne 655-684) a bien la logique correcte : si `measure == WorkoutMeasure.score && scoreInputMode == ScoreInputMode.stopwatch`, `label = 'Score chrono'`, rendu via `Semantics(label: label, child: Chip(...))`.
|
||||
- Le site d'appel dans `ExerciseListTile` (~ligne 246) passe bien `scoreInputMode: exercise.scoreInputMode` à `MeasureBadge`.
|
||||
- Le test vérifie bien `saved.scoreInputMode == ScoreInputMode.stopwatch` à la ligne 120 (ça passe), puis reconstruit `ExerciseListTile(exercise: saved)` dans un nouveau `pumpWidget` (lignes 122-127), `pumpAndSettle()`, puis cherche le badge (ligne 129) — et ne le trouve pas.
|
||||
|
||||
**Hypothèse non encore vérifiée à l'interruption** : `exercise.availableMeasures` (domain/entities.dart ligne 166) dépend de `hasScoreMeasure` — vérifier si `saved.hasScoreMeasure` est bien `true` après la sauvegarde du formulaire en mode "Chrono intégré" (il est possible que le formulaire ne coche/persiste pas `hasScoreMeasure=true` correctement quand on passe directement en mode chrono sans que le switch "Score" ait été committé avant le changement de mode radio — à vérifier dans `exercise_library_screen.dart`, la logique de sauvegarde du formulaire ExerciseFormScreen, autour de la construction de l'objet Exercise final avant `save()`). C'est la piste la plus probable à vérifier en premier à la reprise, avant de relancer un nouvel aller-retour avec DevFrontend.
|
||||
|
||||
## Chaîne de tickets score chrono (ticket parent #18)
|
||||
- #25 [DevBackend] Domain et migration — **terminé et mergé** (tag v1.5.0-debug + ce qui suit).
|
||||
- #26 [DevFrontend] Configuration Score chrono — **en cours**, cf. ci-dessus. Branche `feature/#26-score-chrono-config` non mergée.
|
||||
- #27 [DevFrontend] Chrono score intégré dans l'exécution — dépend de #25, #26. Pas commencé.
|
||||
- #28 [DevFrontend] Affichage Score chrono dans plan/historique — dépend de #27. Pas commencé.
|
||||
|
||||
## État des branches/tags au moment de l'interruption
|
||||
- `main`/`develop` à jour au tag `v1.5.0-debug` (inclut tickets #1-23, #12, #31).
|
||||
- Branche `feature/#26-score-chrono-config` en cours, non mergée, contient le travail du ticket #26 (avec le test encore rouge).
|
||||
|
||||
## Tickets connus restants après #26/#27/#28
|
||||
- Tout ticket dans le sprint "Bug resolution" (sprintId `abc4f969-b169-45f7-988c-daeeab762201`) — vérifier `idea_ticket_list` pour la liste à jour, le sprint pourrait contenir de nouveaux tickets créés pendant l'interruption/l'absence de l'utilisateur.
|
||||
- Vérifier aussi `idea_ticket_list` pour tout ticket créé par l'utilisateur pendant l'absence (comme le ticket #31 et #18 créés en cours de route précédemment) — ne pas supposer que la liste est figée.
|
||||
|
||||
## Environnement de build (rappel)
|
||||
Voir mémoire "gametime-dev-environment" pour les commandes exactes (ANDROID_HOME, PATH, flutter analyze/test/build). Toujours vérifier soi-même (Main) via Bash après chaque implémentation d'agent, les sandbox des agents n'ont pas accès réseau.
|
||||
|
||||
## Process à respecter pour chaque ticket restant
|
||||
Même cycle que jusqu'ici : Git crée la branche → agent (DevBackend/DevFrontend selon le domaine) implémente → Main vérifie réellement (pub get si besoin, build_runner si schéma Drift touché, analyze, test, build apk) → relais des échecs réels bruts à l'agent si besoin → Git merge dans main + develop + nettoyage branche + tag incrémental (vX.Y.0-debug). Consulter UX/Architect en amont si un ticket touche à la conception produit ou au modèle de données de façon non triviale (comme cela a été fait pour #18 → #25/#26/#27/#28).
|
||||
|
||||
Pour les tickets de type [Bug] : à la fin de l'implémentation et de la vérification technique (analyze/test/build OK), passer le statut à `QA` (pas `closed`) et laisser un message clair dans le carnet du ticket résumant ce qui a été corrigé, pour que l'utilisateur puisse tester sur l'APK final.
|
||||
@ -1,6 +1,6 @@
|
||||
---
|
||||
issueRef: "#26"
|
||||
version: 2
|
||||
version: 4
|
||||
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
|
||||
updatedAt: 1784328255774
|
||||
updatedAt: 1784358479742
|
||||
---
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
id: "37a022d8-b152-48c9-a4d1-72528e2d63af"
|
||||
number: 26
|
||||
title: "[DevFrontend] Configuration du Score chrono (exercice + programme)"
|
||||
status: "open"
|
||||
status: "closed"
|
||||
priority: "high"
|
||||
sprint: null
|
||||
links: [{"target":"#18","kind":"relatesTo"},{"target":"#25","kind":"dependsOn"}]
|
||||
@ -10,7 +10,7 @@ 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
|
||||
updatedAt: 1784358479742
|
||||
version: 4
|
||||
---
|
||||
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.
|
||||
@ -1,6 +1,6 @@
|
||||
---
|
||||
issueRef: "#35"
|
||||
version: 3
|
||||
version: 5
|
||||
updatedBy: {"kind":"user"}
|
||||
updatedAt: 1784329588125
|
||||
updatedAt: 1784329838645
|
||||
---
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
---
|
||||
id: "3f1a583a-320b-43c3-9993-52d249c9c430"
|
||||
number: 35
|
||||
title: "Proposer de emttre plsuieurs images pour un exercice"
|
||||
title: "Proposer de mettre plsuieurs images pour un exercice"
|
||||
status: "open"
|
||||
priority: "low"
|
||||
sprint: null
|
||||
@ -10,7 +10,7 @@ agentRefs: [{"agentId":"57695b92-24d0-4876-837c-76116e70a6ae","role":"assigned"}
|
||||
createdBy: {"kind":"user"}
|
||||
updatedBy: {"kind":"user"}
|
||||
createdAt: 1784329532159
|
||||
updatedAt: 1784329588125
|
||||
version: 3
|
||||
updatedAt: 1784329838645
|
||||
version: 5
|
||||
---
|
||||
J'iamerais que lors de la création d'un exercice, ils oit possible d'associer jusqu'a 5 images
|
||||
J'aimerais que lors de la création d'un exercice, ils oit possible d'associer jusqu'a 5 images
|
||||
6
.ideai/tickets/37/carnet.md
Normal file
6
.ideai/tickets/37/carnet.md
Normal file
@ -0,0 +1,6 @@
|
||||
---
|
||||
issueRef: "#37"
|
||||
version: 3
|
||||
updatedBy: {"kind":"user"}
|
||||
updatedAt: 1784330063749
|
||||
---
|
||||
16
.ideai/tickets/37/issue.md
Normal file
16
.ideai/tickets/37/issue.md
Normal file
@ -0,0 +1,16 @@
|
||||
---
|
||||
id: "d472ee06-f4f1-4796-9797-b5d8a65000f3"
|
||||
number: 37
|
||||
title: "Pouvoir supprimer un programme, une séance ou 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: 1784329898629
|
||||
updatedAt: 1784330063749
|
||||
version: 3
|
||||
---
|
||||
Il faut que l'utilisateur puisse supprimer un exercice qu'il a créé, un programme qu'il a créé ou une séance qu'il a créé. Si on supprime une exerccie, alors il est retiré des programmes dans lequel il se trouve. Si on supprime un programme alors il est supprimé des séances dans lequel il se trouve. Pour l'historique, il faut cependant que les datas soient persistantes, même si un exercice a été supprimé par exemple, il faut quand meme quie l'on puisse garder les données d'affichées. La séance ne pourra par contre pas être relancée, il faudra donc afficher un message qui l'explique.
|
||||
6
.ideai/tickets/38/carnet.md
Normal file
6
.ideai/tickets/38/carnet.md
Normal file
@ -0,0 +1,6 @@
|
||||
---
|
||||
issueRef: "#38"
|
||||
version: 3
|
||||
updatedBy: {"kind":"user"}
|
||||
updatedAt: 1784330204091
|
||||
---
|
||||
16
.ideai/tickets/38/issue.md
Normal file
16
.ideai/tickets/38/issue.md
Normal file
@ -0,0 +1,16 @@
|
||||
---
|
||||
id: "51e8769d-7b2b-4b4d-8de1-dc784881e575"
|
||||
number: 38
|
||||
title: "Proposer de mettre une image pour l'icone de l'exercice"
|
||||
status: "open"
|
||||
priority: "medium"
|
||||
sprint: null
|
||||
links: []
|
||||
agentRefs: [{"agentId":"57695b92-24d0-4876-837c-76116e70a6ae","role":"assigned"}]
|
||||
createdBy: {"kind":"user"}
|
||||
updatedBy: {"kind":"user"}
|
||||
createdAt: 1784330169746
|
||||
updatedAt: 1784330204091
|
||||
version: 3
|
||||
---
|
||||
J'aimerais qu'en plus des images que l'on peut ajouter, qu'il soit possible de mettre une image comme icone de l'exercice
|
||||
@ -1,3 +1,3 @@
|
||||
{
|
||||
"nextNumber": 37
|
||||
"nextNumber": 39
|
||||
}
|
||||
@ -291,13 +291,13 @@
|
||||
"issueRef": "#26",
|
||||
"path": "26",
|
||||
"title": "[DevFrontend] Configuration du Score chrono (exercice + programme)",
|
||||
"status": "open",
|
||||
"status": "closed",
|
||||
"priority": "high",
|
||||
"sprint": null,
|
||||
"assignedAgentIds": [
|
||||
"9933c93a-b8a1-4164-a3bb-7063fdad747d"
|
||||
],
|
||||
"updatedAt": 1784328255774
|
||||
"updatedAt": 1784358479742
|
||||
},
|
||||
{
|
||||
"issueRef": "#27",
|
||||
@ -392,14 +392,14 @@
|
||||
{
|
||||
"issueRef": "#35",
|
||||
"path": "35",
|
||||
"title": "Proposer de emttre plsuieurs images pour un exercice",
|
||||
"title": "Proposer de mettre plsuieurs images pour un exercice",
|
||||
"status": "open",
|
||||
"priority": "low",
|
||||
"sprint": null,
|
||||
"assignedAgentIds": [
|
||||
"57695b92-24d0-4876-837c-76116e70a6ae"
|
||||
],
|
||||
"updatedAt": 1784329588125
|
||||
"updatedAt": 1784329838645
|
||||
},
|
||||
{
|
||||
"issueRef": "#36",
|
||||
@ -412,6 +412,30 @@
|
||||
"57695b92-24d0-4876-837c-76116e70a6ae"
|
||||
],
|
||||
"updatedAt": 1784329810425
|
||||
},
|
||||
{
|
||||
"issueRef": "#37",
|
||||
"path": "37",
|
||||
"title": "Pouvoir supprimer un programme, une séance ou un exercice",
|
||||
"status": "open",
|
||||
"priority": "high",
|
||||
"sprint": null,
|
||||
"assignedAgentIds": [
|
||||
"57695b92-24d0-4876-837c-76116e70a6ae"
|
||||
],
|
||||
"updatedAt": 1784330063749
|
||||
},
|
||||
{
|
||||
"issueRef": "#38",
|
||||
"path": "38",
|
||||
"title": "Proposer de mettre une image pour l'icone de l'exercice",
|
||||
"status": "open",
|
||||
"priority": "medium",
|
||||
"sprint": null,
|
||||
"assignedAgentIds": [
|
||||
"57695b92-24d0-4876-837c-76116e70a6ae"
|
||||
],
|
||||
"updatedAt": 1784330204091
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user