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>
90 lines
4.0 KiB
Markdown
90 lines
4.0 KiB
Markdown
## Objectif
|
|
|
|
Produire des fiches de drills basket homogènes, directement exploitables par
|
|
DevBackend pour créer les seed data GameTime (entités `Exercise`, `Program`,
|
|
`WorkoutTemplate` de `lib/domain/entities.dart`), sans aller-retour d'interprétation.
|
|
|
|
Ce skill est destiné à l'agent **Coach**, dans le cadre du ticket **#80 —
|
|
Bibliothèque de drills basket de démarrage + séance exemple modifiable**, et
|
|
réutilisable pour tout futur enrichissement de la bibliothèque de contenu basket.
|
|
|
|
## Catégories à couvrir pour une bibliothèque de démarrage
|
|
|
|
- Shoot (tir extérieur, mi-distance)
|
|
- Lancers francs
|
|
- Dribble / ball-handling
|
|
- Finition (layups, floaters, contact)
|
|
- Conditionnement (endurance, explosivité spécifique basket)
|
|
- Défense (individuelle, déplacements)
|
|
- Mobilité / échauffement
|
|
|
|
Une bibliothèque de démarrage complète vise au moins un drill par catégorie, sans
|
|
obligation d'exhaustivité — mieux vaut peu de drills bien spécifiés que beaucoup de
|
|
drills vagues.
|
|
|
|
## Gabarit de fiche — un exercice (`Exercise`)
|
|
|
|
Pour chaque drill, remplir tous les champs suivants avant de le considérer prêt :
|
|
|
|
```
|
|
Nom : (court, concret, ex. "Lancers francs — série de 10")
|
|
Catégorie : (une des catégories ci-dessus)
|
|
Description : (2-4 phrases : geste, placement, objectif ; vocabulaire basket précis)
|
|
Matériel : (ballon / panier / cônes / chrono — jamais de matériel connecté ou de caméra)
|
|
Niveau conseillé : (debutant / intermediaire / tous niveaux)
|
|
|
|
Mesures activées (au moins une) :
|
|
- Temps (hasTimeMeasure) : oui/non — si oui, defaultTargetTimeSeconds
|
|
- Répétitions (hasRepsMeasure) : oui/non — si oui, defaultTargetReps
|
|
- Score (hasScoreMeasure) : oui/non
|
|
- scoreInputMode : manual | stopwatch
|
|
- si manual : scoreLabel (ex. "Paniers marqués"), scoreUnit (ex. "sur 10")
|
|
- defaultTargetScore ou defaultTargetScoreTimeMs selon le mode
|
|
|
|
Étapes (steps, optionnel — seulement si le drill a plusieurs phases distinctes) :
|
|
- Étape 1 : nom, type (time|reps), defaultTargetValue, score optionnel
|
|
- Étape 2 : ...
|
|
|
|
Média souhaité : image et/ou vidéo (décrire l'intention : ex. "photo du placement des
|
|
pieds" — ne pas fournir de fichier, c'est à DevBackend/DevFrontend de le résoudre)
|
|
```
|
|
|
|
Règles de cohérence à vérifier avant de livrer la fiche :
|
|
- Au moins une mesure activée.
|
|
- Si score en mode manuel : `scoreLabel` ET `scoreUnit` renseignés.
|
|
- Les cibles par défaut (`defaultTarget*`) doivent avoir un sens réel pour un débutant
|
|
raisonnable (pas de surcharge, pas de valeur arbitraire).
|
|
- Si le drill a plusieurs phases nettement différentes (ex. échauffement puis
|
|
chronométré), utiliser `steps` plutôt que de forcer plusieurs mesures sur un seul
|
|
exercice plat.
|
|
|
|
## Gabarit de fiche — un programme (`Program`)
|
|
|
|
```
|
|
Nom : (ex. "Séance shoot & finition")
|
|
Repos par défaut entre séries (defaultRestSeconds) : (valeur réaliste, ex. 30-60s)
|
|
|
|
Exercices (dans l'ordre) :
|
|
1. [Nom exercice] — setsCount : X, mesures activées : [...], cibles : [...], repos
|
|
spécifique (restSecondsOverride) si différent du défaut
|
|
2. ...
|
|
```
|
|
|
|
## Gabarit de fiche — une séance-modèle (`WorkoutTemplate`)
|
|
|
|
```
|
|
Nom : (ex. "Séance découverte basket")
|
|
Programmes inclus (dans l'ordre) : [Nom programme 1], [Nom programme 2], ...
|
|
```
|
|
|
|
## Checklist finale avant de transmettre à Architect/DevBackend
|
|
|
|
- [ ] Au moins un drill par catégorie listée ci-dessus.
|
|
- [ ] Chaque fiche exercice respecte le gabarit et les règles de cohérence.
|
|
- [ ] Au moins un programme d'exemple cohérent (drills compatibles, ordre logique
|
|
échauffement → technique → conditionnement).
|
|
- [ ] Au moins une séance-modèle d'exemple composée du/des programme(s).
|
|
- [ ] Rien ne dépasse le modèle de données actuel (`Exercise`/`Program`/
|
|
`WorkoutTemplate`/`ExerciseStep`) — sinon, remonter à Architect avant de livrer.
|
|
- [ ] Aucun drill ne nécessite de matériel connecté, de caméra ou d'abonnement tiers.
|
|
- [ ] Le contenu reste éditable/supprimable : pas d'hypothèse de donnée protégée. |