chore(ideai): synchronise l'état de suivi (tickets, agents, skills, mémoire)

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>
This commit is contained in:
2026-07-21 22:26:20 +02:00
parent 9981f02659
commit 73cfa644c2
42 changed files with 1085 additions and 44 deletions

View File

@ -0,0 +1,43 @@
---
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.