Rattrapage de l'état runtime IdeA (nouveaux tickets #80-#91, agents coach/commercial, skills, permissions MCP) resté non commité depuis la clôture du ticket #79. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
43 lines
2.2 KiB
Markdown
43 lines
2.2 KiB
Markdown
---
|
|
name: gametime-session-execution-timer-refactor
|
|
description: memory note gametime-session-execution-timer-refactor
|
|
metadata:
|
|
type: project
|
|
---
|
|
# GameTime — Refonte exécution séance et logique chronos
|
|
|
|
Décision UX/architecture issue de la demande utilisateur du 2026-07-20.
|
|
|
|
## Principe d'affichage
|
|
|
|
L'écran d'exécution de séance doit organiser les informations autour d'une carte `Exercice actif`, placée sous le compteur `SÉRIE X / Y`.
|
|
|
|
Cette carte regroupe :
|
|
- nom de l'exercice ;
|
|
- accès médias ;
|
|
- `Temps de série` si la mesure temps est active ;
|
|
- action primaire `Démarrer l'exercice` quand un chrono doit démarrer au début de la série.
|
|
|
|
Le temps de série ne doit plus être une information isolée en bas de l'écran.
|
|
|
|
## Principe de démarrage
|
|
|
|
`Démarrer l'exercice` est le point de départ global. Il lance tous les chronos qui commencent logiquement au début de la série :
|
|
- timer de série si `timeEnabled` ;
|
|
- chrono de la première étape si cette première étape est de type temps ;
|
|
- chrono score de série si `scoreInputMode == stopwatch`.
|
|
|
|
L'objectif est de minimiser les actions pendant l'effort, notamment quand l'utilisateur n'a pas le téléphone près de lui.
|
|
|
|
## États et invariants
|
|
|
|
- Le timer de série est un état persistant dédié, pas un simple `DateTime` UI volatile.
|
|
- Pause séance suspend tous les chronos running : série, score chrono, étape, score chrono étape si présent, repos.
|
|
- Reprise restaure l'état exact ; un état `Chrono suivant prêt` reste prêt et ne démarre pas automatiquement.
|
|
- `Terminer la série` arrête/enregistre les chronos actifs.
|
|
- `Passer la série` ignore les chronos et confirme si un chrono ou une séquence est en cours.
|
|
- Le repos démarre seulement après terminer/passer la série et doit être pause-aware (`pausedAt` + `accumulatedPausedMs`).
|
|
|
|
## Implémentation locale
|
|
|
|
Une implémentation a été réalisée sans commit : domaine/application/persistance, écran Flutter et tests ciblés. QA a validé les vérifications exécutables dans le sandbox (`git diff --check`, `dart analyze` exit 0). Les commandes `flutter analyze` et `flutter test` restent à relancer dans un environnement où le SDK Flutter peut écrire dans son cache. |