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

@ -1,6 +1,6 @@
---
issueRef: "#46"
version: 7
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedAt: 1784488112374
version: 8
updatedBy: {"kind":"user"}
updatedAt: 1784566354283
---

View File

@ -2,15 +2,15 @@
id: "dda499ac-7197-4321-bd2b-a303510b1bbe"
number: 46
title: "Créer un serveur headless pour l'application"
status: "qa"
status: "closed"
priority: "low"
sprint: "4237adfd-91eb-45ff-9f32-6ce1daa39822"
links: []
agentRefs: [{"agentId":"57695b92-24d0-4876-837c-76116e70a6ae","role":"assigned"}]
createdBy: {"kind":"user"}
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedBy: {"kind":"user"}
createdAt: 1784379695135
updatedAt: 1784488112374
version: 7
updatedAt: 1784566354283
version: 8
---
J'aimerais que l'application puisse proposer des services online aussi. Un peu a la manière de Heavy avec la possibilité de partager ses séances etc. A la manière de Heavy, j'aimerais que l'on puisse se créer un compte et s'y connecter, synchroniser son historique de seances, ses séances, ses programmes ainsi que ses exercices. Ce ticket est la partie serveur/web API, il faudra que ça soit un serveur headless linux qui tourne dans un container docker. Il faudra que je puisse y acceder via un reverse proxy qui tourne sur une machine différente de celle du serveur headless mais dans le même réseau local. J'y accederais via une adresse https. le container se lancera ensuite à partir d'un docker-compose.yaml dans lequel tu laissera les champs libre de tout ce qui sera necessaire de configurer (adresse ip du reverse proxy, de la machine sur laquelle tourne le docker si necessaire etc.). Pour la création du serveur, créé un subdirectory spécialement pour cette partie serveur. Dans le dossier serveur à lma racine, je veux un script pour pouvoir push le container sur le gitea qui est déjà lié au projet, je veux aussi le docker-compose.yaml demandé.

View File

@ -1,6 +1,6 @@
---
issueRef: "#54"
version: 5
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedAt: 1784487430850
version: 6
updatedBy: {"kind":"user"}
updatedAt: 1784566315824
---

View File

@ -2,15 +2,15 @@
id: "7e6894d5-36ad-413b-9fda-be3ba26db6cb"
number: 54
title: "Exercice à plusieurs étapes"
status: "qa"
status: "closed"
priority: "medium"
sprint: "1bb8bdf2-9c35-4f53-9a31-1390a47bec63"
links: []
agentRefs: [{"agentId":"57695b92-24d0-4876-837c-76116e70a6ae","role":"assigned"}]
createdBy: {"kind":"user"}
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedBy: {"kind":"user"}
createdAt: 1784449895047
updatedAt: 1784487430850
version: 5
updatedAt: 1784566315824
version: 6
---
Dans certains exercices, il peut être interessant qu'il y ai plusieurs étapes. Par exemple, pour un exercice de dribble, il peut être interessant de dire "dribbler main droite pendant 10 sec, puis dribller main gauche pendant 10 secondes, effectuer un double pas et réaliser 10 pompes" par exemple. Le tout représente alors une répétition mais se décompose en 4 étapes avec deux étapes qui se base sur un temps, et deux étapes sur un nombre de répétitions. J'aimerais donc pouvoir définir des étapes pour chaque exercice. L'ensemble de toutes les étape de l'exercice forme une répetition d'une série. Comme pour une série, chacune des étape doit pouvoir avoir un temps à définir (avec une valeur par défaut obligatoire > 0) ou un nombre de répétitions. Dans le cas d'une étape avec un temps, un chronometre est lancé. Dans les 3 dernieres secondes, un bip retenti pour chaque seconde et quand le temps arrive à 0 le bip est plus long que les autres. dans le cas ou deux étapes avec un temps s'enchainent, le second chronometre part directement à la fin de l'etape précédent. Le but est d'enchainer les étapes, il n'y a pas de pauses entre les différentes étapes. On eput aussi proposer de renseigner un score pour chaque étape de la même façon que pour les série.

View File

@ -1,8 +1,8 @@
---
issueRef: "#61"
version: 3
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedAt: 1784485187502
version: 5
updatedBy: {"kind":"user"}
updatedAt: 1784650797661
---
Plan de séance : résumé de séquence par série (via `ActiveExerciseStepUseCases.readProgress`). Historique : détail des résultats d'étapes groupés par passage (durée/répétitions, score d'étape, badge "Passée" pour skipped), réutilise `WorkoutHistory.stepResults` déjà peuplé par #58. 102/102 tests verts, `flutter analyze` clean, APK debug buildé avec succès.

View File

@ -8,9 +8,9 @@ sprint: null
links: [{"target":"#54","kind":"relatesTo"},{"target":"#58","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":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedBy: {"kind":"user"}
createdAt: 1784481541650
updatedAt: 1784485187502
version: 3
updatedAt: 1784650797661
version: 5
---
Afficher les résultats d'étapes dans le plan de séance et l'historique sans remplacer les résultats de série. Une série avec étapes garde son état global `à faire/en cours/terminée/passée`; le détail affiche les passages, étapes terminées/passées, durées/répétitions et scores d'étape. L'édition ponctuelle d'une série passée/terminée permet de corriger les valeurs enregistrées sans rejouer la séquence interactive et sans déplacer la progression courante.

View File

@ -1,6 +1,6 @@
---
issueRef: "#73"
version: 4
updatedBy: {"kind":"user"}
updatedAt: 1784493253775
version: 5
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedAt: 1784565595136
---

View File

@ -2,15 +2,15 @@
id: "5ebceb98-b5d4-4a7d-8d4e-ab88c73a4c76"
number: 73
title: "Pouvoir enchainer les chronos des étapes"
status: "open"
status: "qa"
priority: "medium"
sprint: null
links: [{"target":"#72","kind":"relatesTo"}]
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: 1784493103354
updatedAt: 1784493253775
version: 4
updatedAt: 1784565595136
version: 5
---
Dans le cas ou deux étapes à chronos s'enchainent, j'aimerais qu'une option proposant d'enchainer le start des chrono lorsque le rpécédent arrive à 0 soit proposé. Cette option serait disponible à la création de l'exercice, mais pourrait aussi être override dans le programme ainsi que dans la séance

View File

@ -1,6 +1,6 @@
---
issueRef: "#79"
version: 1
updatedBy: {"kind":"agent","agent_id":"f8f40941-ecf7-4830-b9de-8818a099f448"}
updatedAt: 1784547247343
version: 2
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedAt: 1784565590789
---

View File

@ -2,15 +2,15 @@
id: "107fc29b-cd1d-40cc-9505-61180d081022"
number: 79
title: "[QA] Validation auto-enchaînement configurable des chronos d'étapes"
status: "open"
status: "qa"
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"}
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
createdAt: 1784547247343
updatedAt: 1784547247343
version: 1
updatedAt: 1784565590789
version: 2
---
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.

View File

@ -0,0 +1,28 @@
---
issueRef: "#80"
version: 4
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedAt: 1784665470112
---
## Spec UX (livrée)
Bibliothèque d'exercices basket de démarrage (7 catégories, ~20 exercices), programme "Fondations basket - 45 min" (8 exercices), séance-modèle "Séance exemple - Fondations basket", règles UX (badge Exemple, éditable/supprimable, anti-réapparition, états vides). Détail complet dans l'historique de la conversation d'orchestration Main.
## Plan technique Architect (livré)
Migration Drift v16 : ajout `category` (enum ExerciseCategory: shoot, freeThrows, dribble, finishing, conditioning, defense, mobility, uncategorized) + `is_example` sur exercises/programs/workout_templates. Table `local_seed_metadata` (key, version, applied_at) pour tracker `starterSeedVersion=1`. Use case `SeedStarterContentUseCase` appelé dans `AppBootstrap.create()`, transactionnel, "base vide" = aucune ligne (y compris soft-deleted) dans exercises/programs/workout_templates. IDs stables déterministes type `starter-v1-exercise-form-shooting`. Données seed en Dart const (`lib/application/starter_content/basket_starter_seed_v1.dart`), pas JSON. Séance-modèle via `WorkoutTemplateProgram.snapshotFromProgram`. Contenu seed = `syncState=localOnly`, pas de sync serveur automatique.
Découpage :
- Lot B1 (DevBackend) : schéma/domaine — ExerciseCategory, champs category/isExample, migration v16, mappers, tests migration.
- Lot B2 (DevBackend) : seed applicatif — ports StarterSeedStateRepository/StarterContentRepository, SeedStarterContentUseCase, basket_starter_seed_v1.dart (contenu complet UX), adapter Drift transactionnel, branchement AppBootstrap.
- Lot B3 (DevBackend/QA) : tests (seed unique, non-réapparition, snapshots programme/séance corrects, catégories/isExample persistés).
- Lot F1/F2 (DevFrontend) : badge "Exemple" bibliothèque/programmes/séances, affichage category.
- Lot F3 (DevFrontend) : première ouverture / états vides, dépend du résultat du seed use case.
## Décisions Main sur questions Architect
1. Badge "Exemple" conservé après modification par l'utilisateur (provenance, pas immutabilité) → OK, suivre la reco Architect.
2. Contenu exemple non synchronisé au serveur par défaut → OK, suivre la reco Architect.
3. Catégorie `uncategorized` visible sous "Autres" dans l'UI si nécessaire → OK, suivre la reco Architect.
4. Liste complète des ~20 exercices : transmise intégralement à DevBackend par Main (spec UX complète disponible).
Prochaine étape : Git pour la branche, puis DevBackend (B1+B2+B3).

View File

@ -0,0 +1,25 @@
---
id: "8f4ea0ec-ef5a-42e0-bcf4-9eaa751bea94"
number: 80
title: "Bibliothèque de drills basket de démarrage + séance exemple modifiable"
status: "inProgress"
priority: "high"
sprint: null
links: []
agentRefs: []
createdBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
createdAt: 1784650708413
updatedAt: 1784665470112
version: 4
---
Constat Commercial : le socle applicatif (exercices/programmes/séances/exécution/historique) est déjà solide, mais l'app démarre vide. Les concurrents basket (94FEETOFGAME) et musculation (Hevy, JEFIT) gagnent en crédibilité grâce à un contenu de départ.
Objectif : fournir dès l'installation une bibliothèque d'exercices basket courants (shoot, lancers francs, dribble, finition, conditionnement, défense, mobilité) et au moins un programme + une séance-modèle exemple, immédiatement modifiables, pour qu'un nouvel utilisateur n'ait jamais un écran vide.
Périmètre global (à cadrer/découper par UX puis Architect avant implémentation) :
- Contenu basket de départ (liste d'exercices, mesures par défaut, textes).
- Programme(s) et séance(s)-modèle d'exemple pré-remplis.
- Stratégie de seed (première ouverture, pas de compte requis, éditable/supprimable sans casser l'app).
Priorité court terme d'après l'analyse marché (cf. mémoire gametime-commercial-positioning-2026-07).

View File

@ -0,0 +1,18 @@
---
issueRef: "#81"
version: 3
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedAt: 1784665481490
---
## Spec UX (livrée)
Bloc compact "Références" dans l'écran d'exécution (workout_execution_screen.dart), sous le nom de l'exercice, avant la séquence d'étapes/champs de résultat. Deux infos max : "Dernière" (résultat de la même série que l'historique le plus récent, fallback dernière série dispo) et "Record" (meilleure valeur toutes séances confondues, règle de meilleur selon type de mesure : score manuel/reps = max, score chrono = min, temps = max). États : loading, avec dernière+record, dernière seule, record seul, vide sans historique ("Première fois sur cet exercice"), vide sans mesure pertinente, erreur (non bloquant). Pour exercices à étapes : reste au niveau série dans le bloc principal, détail par étape optionnel (bottom sheet), non bloquant pour le ticket.
Exigences techniques :
- Use case `getExercisePerformanceReference(exerciseId, activeMeasures, currentSetIndex)` retournant `ExercisePerformanceReference { last, record, hasAnyHistoryForExercise }`
- Matching par identité stable de l'exercice source (pas par nom sauf fallback validé Architect), historiques d'exercices archivés restent exploitables
- Ignorer séries skipped/valeurs nulles, ne lire que historiques terminés (pas séance active)
- Chargement non bloquant, skeleton/"Chargement…", erreur non bloquante "Références indisponibles"
- Composant DevFrontend réutilisable `PerformanceReferenceCard` avec formatage temps/score selon règles UX
Prochaine étape : Architect cadre l'implémentation technique (requêtes historique, ports/use case, découpage Dev).

View File

@ -0,0 +1,24 @@
---
id: "3d94d624-86a2-4f92-8766-2e5d06815f40"
number: 81
title: "Afficher la dernière performance / meilleur score pendant l'exécution"
status: "inProgress"
priority: "high"
sprint: null
links: []
agentRefs: []
createdBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
createdAt: 1784650712105
updatedAt: 1784665481490
version: 3
---
Constat Commercial : les trackers de référence (Hevy, Strong) motivent l'utilisateur en montrant la dernière série ou le record pendant qu'il saisit sa performance en cours. GameTime ne l'affiche pas encore pendant l'exécution.
Objectif : pendant l'exécution d'une séance, afficher pour l'exercice en cours la dernière valeur enregistrée (répétitions/score/temps) et éventuellement le meilleur score, en s'appuyant sur l'historique déjà existant.
Périmètre global (à cadrer UX puis Architect/DevBackend/DevFrontend) :
- Requête historique la plus récente / meilleure par exercice.
- Affichage discret dans l'écran d'exécution, sans surcharger l'UI existante.
Priorité court terme d'après l'analyse marché (cf. mémoire gametime-commercial-positioning-2026-07).

View File

@ -0,0 +1,6 @@
---
issueRef: "#82"
version: 1
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedAt: 1784650716408
---

View File

@ -0,0 +1,24 @@
---
id: "b9f867d4-b67d-4edf-b6c3-c3c7547dcb50"
number: 82
title: "Statistiques de progression (volume, progression par exercice/programme)"
status: "open"
priority: "medium"
sprint: null
links: []
agentRefs: []
createdBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
createdAt: 1784650716408
updatedAt: 1784650716408
version: 1
---
Constat Commercial : l'historique actuel liste les séances jouées mais ne donne pas de lecture de progression. Les concurrents (JEFIT, Fitbod) valorisent fortement les graphiques de progression et le volume d'entraînement pour donner une raison de revenir.
Objectif : ajouter une vue statistiques simple mais motivante — volume de séances/temps total, progression d'un score/mesure par exercice dans le temps, éventuellement un indicateur de régularité (streak) non culpabilisant.
Périmètre global (UX pour la forme des stats, Architect pour l'agrégation des données d'historique, DevFrontend pour l'écran) :
- Choix des métriques initiales (rester simple, cohérent avec le principe "stats simples" déjà acté).
- Écran ou section dédiée, alimentée par les données d'historique existantes.
Priorité moyen terme d'après l'analyse marché (cf. mémoire gametime-commercial-positioning-2026-07).

View File

@ -0,0 +1,6 @@
---
issueRef: "#83"
version: 1
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedAt: 1784650720801
---

View File

@ -0,0 +1,24 @@
---
id: "f9bee681-581c-4c65-a39a-34ed9cf67feb"
number: 83
title: "Duplication rapide de programmes/séances-modèles + tags de filtrage"
status: "open"
priority: "medium"
sprint: null
links: []
agentRefs: []
createdBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
createdAt: 1784650720801
updatedAt: 1784650720801
version: 1
---
Constat Commercial : les apps concurrentes permettent de dupliquer/adapter rapidement un programme existant plutôt que de le recréer, et d'organiser une bibliothèque grandissante par tags (compétence, matériel, durée, intensité).
Objectif : permettre de dupliquer un programme ou une séance-modèle en un geste pour l'adapter, et ajouter un système de tags/filtres simple sur exercices/programmes/séances pour garder la bibliothèque exploitable quand elle grossit.
Périmètre global (Architect pour le modèle de tags et la duplication en profondeur, UX pour l'emplacement des actions et filtres, DevBackend/DevFrontend pour l'implémentation) :
- Duplication d'un programme/séance-modèle avec ses exercices/cibles.
- Modèle de tags léger, filtrage dans les écrans de bibliothèque existants.
Priorité moyen terme d'après l'analyse marché (cf. mémoire gametime-commercial-positioning-2026-07).

View File

@ -0,0 +1,6 @@
---
issueRef: "#84"
version: 1
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedAt: 1784650724409
---

View File

@ -0,0 +1,24 @@
---
id: "d21e84b6-f863-4225-ba75-840b84880491"
number: 84
title: "Export/import local des données (sauvegarde indépendante de la sync serveur)"
status: "open"
priority: "medium"
sprint: null
links: []
agentRefs: []
createdBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
createdAt: 1784650724409
updatedAt: 1784650724409
version: 1
---
Constat Commercial : la différenciation offline-first de GameTime doit rester crédible même sans compte ni serveur. Un utilisateur qui n'active jamais la couche online doit pouvoir sauvegarder/restaurer ses données autrement.
Objectif : permettre d'exporter puis réimporter localement l'ensemble des données utilisateur (exercices, programmes, séances-modèles, historique), en fichier, indépendamment du compte/sync en cours de finalisation (#63-70).
Périmètre global (Architect pour le format d'export et les garanties de cohérence, DevBackend pour l'implémentation, QA pour la validation round-trip) :
- Format d'export stable et complet.
- Import avec gestion des conflits/doublons.
Priorité moyen terme d'après l'analyse marché (cf. mémoire gametime-commercial-positioning-2026-07).

View File

@ -0,0 +1,6 @@
---
issueRef: "#85"
version: 1
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedAt: 1784650728867
---

View File

@ -0,0 +1,22 @@
---
id: "78ce00f0-b70c-4e21-a22a-42a78f31fa48"
number: 85
title: "Packs de séances partageables (au-delà du partage ciblé existant)"
status: "open"
priority: "low"
sprint: null
links: []
agentRefs: []
createdBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
createdAt: 1784650728867
updatedAt: 1784650728867
version: 1
---
Constat Commercial : certains concurrents s'appuient sur des contenus créés par des coachs/communauté. GameTime a déjà une base de partage ciblé de programmes/séances entre comptes (#51, #66, #69, en QA) ; l'étape suivante serait des "packs" de séances plus larges (coach ou communauté), mais uniquement après arbitrage explicite de Main sur le positionnement (éviter de dériver vers un réseau social ou une marketplace).
Objectif : cadrer si et comment proposer des packs de séances/programmes prêts à l'emploi, en s'appuyant sur la mécanique de partage déjà construite, sans complexifier prématurément.
Ne pas démarrer avant validation Main + retour d'usage sur le partage ciblé actuel.
Priorité long terme d'après l'analyse marché (cf. mémoire gametime-commercial-positioning-2026-07).

View File

@ -0,0 +1,6 @@
---
issueRef: "#86"
version: 1
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedAt: 1784650732823
---

View File

@ -0,0 +1,22 @@
---
id: "c739bebd-bdf5-4729-8b0a-76d8b3e25efc"
number: 86
title: "Analytics basket avancées (zones de tir, charge d'entraînement)"
status: "open"
priority: "low"
sprint: null
links: []
agentRefs: []
createdBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
createdAt: 1784650732823
updatedAt: 1784650732823
version: 1
---
Constat Commercial : les apps basket avancées (HomeCourt) proposent des analytics spécifiques (zones de tir, charge, fatigue) qui dépassent les stats simples déjà prévues. C'est un axe de différenciation réel mais avancé, à envisager seulement une fois le socle manuel (exécution, historique, stats simples) mature.
Objectif : explorer des analytics basket-spécifiques construites sur les mesures/scores déjà saisis manuellement (pas de tracking caméra), par exemple répartition de réussite par exercice de tir, charge hebdomadaire estimée, ressenti de fatigue optionnel.
À ne cadrer qu'après la mise en place des statistiques de progression simples (ticket dédié plus haut) et validation Main/UX/Architect sur la pertinence et la complexité.
Priorité long terme d'après l'analyse marché (cf. mémoire gametime-commercial-positioning-2026-07).

View File

@ -0,0 +1,6 @@
---
issueRef: "#87"
version: 1
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedAt: 1784650736449
---

View File

@ -0,0 +1,22 @@
---
id: "2a9fcbda-9bd3-4e1b-853d-02abf3f2ef8c"
number: 87
title: "Veille : tracking caméra/IA basket (exploration, pas d'implémentation)"
status: "open"
priority: "low"
sprint: null
links: []
agentRefs: []
createdBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
createdAt: 1784650736449
updatedAt: 1784650736449
version: 1
---
Constat Commercial : HomeCourt/DribbleUp montrent qu'un tracking caméra ou assisté par IA est différenciant mais coûteux, risqué techniquement et souvent lié à du matériel ou de l'abonnement. Ce n'est pas une priorité tant que le socle manuel de GameTime n'est pas excellent.
Objectif : ticket de veille/R&D, pas d'implémentation. Revisiter périodiquement avec Commercial une fois les phases court et moyen terme closes, pour décider si une expérimentation ciblée (ex. simple comptage de tirs via caméra) a un ROI justifiable pour GameTime.
Ne pas démarrer sans arbitrage explicite de Main.
Priorité long terme d'après l'analyse marché (cf. mémoire gametime-commercial-positioning-2026-07).

View File

@ -0,0 +1,6 @@
---
issueRef: "#88"
version: 3
updatedBy: {"kind":"user"}
updatedAt: 1784665050645
---

View File

@ -0,0 +1,16 @@
---
id: "da3a2685-d581-4a50-a439-be01b8e596ee"
number: 88
title: "[Bug] error au lancement d'un exercice"
status: "qa"
priority: "critical"
sprint: null
links: []
agentRefs: []
createdBy: {"kind":"user"}
updatedBy: {"kind":"user"}
createdAt: 1784651166409
updatedAt: 1784665050645
version: 3
---
Quand j'essaie de lancer le chrono d'un exercice, j'ai une erreur qui dit Impossible de demarrer l'exerccie: Invalid arguments (params[1]): Allowed parameters must either be null or or bool, int, nul, string...

View File

@ -0,0 +1,6 @@
---
issueRef: "#90"
version: 4
updatedBy: {"kind":"user"}
updatedAt: 1784665064484
---

View File

@ -0,0 +1,16 @@
---
id: "a04feb24-2a6f-46b7-8e36-b8a113b7c2b5"
number: 90
title: "[UI] Rework UI séance pour enlever le scroll"
status: "qa"
priority: "medium"
sprint: null
links: []
agentRefs: [{"agentId":"f3408f5d-469c-4f64-9485-d8b218f3ff26","role":"assigned"}]
createdBy: {"kind":"user"}
updatedBy: {"kind":"user"}
createdAt: 1784651486750
updatedAt: 1784665064484
version: 4
---
J'aimerais que l'UI pednant une séance soit légèrement revu pour faire en sorte que l'affichage n'ai aps de scroll, et que tout rentre directement dans l'écran du téléphone lorsqu'on a plusieurs étapes dans un exercice. Actuellement, lorsqu'un exercice propose plusieurs étapes, un scroll est obligatoire pour afficher l'étape et les bouton "Terminer la série" et "Passer la série". J'aiemrais une proposition d'UI/UX pour ça

View File

@ -0,0 +1,6 @@
---
issueRef: "#91"
version: 3
updatedBy: {"kind":"user"}
updatedAt: 1784656427938
---

View File

@ -0,0 +1,16 @@
---
id: "990a5e5a-8490-43ab-b7f6-7cae61be25fd"
number: 91
title: "Interface montre synchronisée"
status: "open"
priority: "low"
sprint: null
links: []
agentRefs: []
createdBy: {"kind":"user"}
updatedBy: {"kind":"user"}
createdAt: 1784656109713
updatedAt: 1784656427938
version: 3
---
J'aimerais avoir une version pour ma montre android qui soit synchronisée avec l'application téléphone. Elle me permettrait entre autre de lancer/arrêter les chronos (donc dans le cas d'un exercice sous chrono, de lancer le chrono ou de le mettre en pause) ou dans le cas d'une étape de lancer le chrono de l'étape, en gardant la décision prise comme quoi si la première étape est un chrono et que l'exercice est sous chrono, le lancement de chrono est commun a l'exercice et à l'étape. Ca permettrait en plus de ça de pouvoir passer une étape, une séquence, une série ou terminer une série. Bref, pouvoir gérer sa séance depuis sa montre. l'UX/UI est bien sur a voir avec l'agent UX pour savoir comment organiser ça. Heavy propose une fonctionnalité similaire si il y a besoin d'une inspiration

View File

@ -1,3 +1,3 @@
{
"nextNumber": 80
"nextNumber": 92
}

View File

@ -525,13 +525,13 @@
"issueRef": "#46",
"path": "46",
"title": "Créer un serveur headless pour l'application",
"status": "qa",
"status": "closed",
"priority": "low",
"sprint": "4237adfd-91eb-45ff-9f32-6ce1daa39822",
"assignedAgentIds": [
"57695b92-24d0-4876-837c-76116e70a6ae"
],
"updatedAt": 1784488112374
"updatedAt": 1784566354283
},
{
"issueRef": "#47",
@ -607,13 +607,13 @@
"issueRef": "#54",
"path": "54",
"title": "Exercice à plusieurs étapes",
"status": "qa",
"status": "closed",
"priority": "medium",
"sprint": "1bb8bdf2-9c35-4f53-9a31-1390a47bec63",
"assignedAgentIds": [
"57695b92-24d0-4876-837c-76116e70a6ae"
],
"updatedAt": 1784487430850
"updatedAt": 1784566315824
},
{
"issueRef": "#56",
@ -685,7 +685,7 @@
"assignedAgentIds": [
"9933c93a-b8a1-4164-a3bb-7063fdad747d"
],
"updatedAt": 1784485187502
"updatedAt": 1784650797661
},
{
"issueRef": "#62",
@ -823,13 +823,13 @@
"issueRef": "#73",
"path": "73",
"title": "Pouvoir enchainer les chronos des étapes",
"status": "open",
"status": "qa",
"priority": "medium",
"sprint": null,
"assignedAgentIds": [
"57695b92-24d0-4876-837c-76116e70a6ae"
],
"updatedAt": 1784493253775
"updatedAt": 1784565595136
},
{
"issueRef": "#74",
@ -895,13 +895,125 @@
"issueRef": "#79",
"path": "79",
"title": "[QA] Validation auto-enchaînement configurable des chronos d'étapes",
"status": "open",
"status": "qa",
"priority": "medium",
"sprint": null,
"assignedAgentIds": [
"7efa512f-3b3a-47b5-ade0-a2dd13073055"
],
"updatedAt": 1784547247343
"updatedAt": 1784565590789
},
{
"issueRef": "#80",
"path": "80",
"title": "Bibliothèque de drills basket de démarrage + séance exemple modifiable",
"status": "inProgress",
"priority": "high",
"sprint": null,
"assignedAgentIds": [],
"updatedAt": 1784665470112
},
{
"issueRef": "#81",
"path": "81",
"title": "Afficher la dernière performance / meilleur score pendant l'exécution",
"status": "inProgress",
"priority": "high",
"sprint": null,
"assignedAgentIds": [],
"updatedAt": 1784665481490
},
{
"issueRef": "#82",
"path": "82",
"title": "Statistiques de progression (volume, progression par exercice/programme)",
"status": "open",
"priority": "medium",
"sprint": null,
"assignedAgentIds": [],
"updatedAt": 1784650716408
},
{
"issueRef": "#83",
"path": "83",
"title": "Duplication rapide de programmes/séances-modèles + tags de filtrage",
"status": "open",
"priority": "medium",
"sprint": null,
"assignedAgentIds": [],
"updatedAt": 1784650720801
},
{
"issueRef": "#84",
"path": "84",
"title": "Export/import local des données (sauvegarde indépendante de la sync serveur)",
"status": "open",
"priority": "medium",
"sprint": null,
"assignedAgentIds": [],
"updatedAt": 1784650724409
},
{
"issueRef": "#85",
"path": "85",
"title": "Packs de séances partageables (au-delà du partage ciblé existant)",
"status": "open",
"priority": "low",
"sprint": null,
"assignedAgentIds": [],
"updatedAt": 1784650728867
},
{
"issueRef": "#86",
"path": "86",
"title": "Analytics basket avancées (zones de tir, charge d'entraînement)",
"status": "open",
"priority": "low",
"sprint": null,
"assignedAgentIds": [],
"updatedAt": 1784650732823
},
{
"issueRef": "#87",
"path": "87",
"title": "Veille : tracking caméra/IA basket (exploration, pas d'implémentation)",
"status": "open",
"priority": "low",
"sprint": null,
"assignedAgentIds": [],
"updatedAt": 1784650736449
},
{
"issueRef": "#88",
"path": "88",
"title": "[Bug] error au lancement d'un exercice",
"status": "qa",
"priority": "critical",
"sprint": null,
"assignedAgentIds": [],
"updatedAt": 1784665050645
},
{
"issueRef": "#90",
"path": "90",
"title": "[UI] Rework UI séance pour enlever le scroll",
"status": "qa",
"priority": "medium",
"sprint": null,
"assignedAgentIds": [
"f3408f5d-469c-4f64-9485-d8b218f3ff26"
],
"updatedAt": 1784665064484
},
{
"issueRef": "#91",
"path": "91",
"title": "Interface montre synchronisée",
"status": "open",
"priority": "low",
"sprint": null,
"assignedAgentIds": [],
"updatedAt": 1784656427938
}
]
}