# Bienvenue sur les ressources FormaPulse (/docs)
Cette documentation t'accompagne dans toutes les manipulations courantes sur ton espace **coach FormaPulse** : créer ton club, ajouter tes joueurs, planifier tes séances, exploiter les statistiques et le suivi santé, jusqu'aux analyses avancées Pro Analytics.
Chaque guide est construit sur le même format :
* une **vue d'ensemble** pour comprendre l'objectif,
* une **vidéo tutorielle** courte (issue de notre [chaîne YouTube](https://www.youtube.com/@Formapulse)),
* les **étapes détaillées** pas à pas,
* les **erreurs fréquentes** à éviter,
* des **liens** pour aller plus loin.
## Par où commencer ? [#par-où-commencer-]
## Tu ne trouves pas ? [#tu-ne-trouves-pas-]
* Utilise la **recherche** en haut de page (raccourci ⌘ + K).
* Consulte les [erreurs fréquentes](/docs/erreurs-frequentes/connexion-impossible).
* Si rien ne convient, [signale-nous le problème](/docs/signaler-un-probleme).
# Signaler un problème (/docs/signaler-un-probleme)
## Tu as rencontré un problème ? [#tu-as-rencontré-un-problème-]
Avant de nous contacter, **deux réflexes** qui résolvent 80% des cas :
1. Vérifier les [erreurs fréquentes](/docs/erreurs-frequentes/connexion-impossible) — la solution y est peut-être.
2. Utiliser la **recherche** en haut de page (⌘ K) avec quelques mots-clés.
Si rien ne convient, écris-nous.
## Bien rédiger ton signalement [#bien-rédiger-ton-signalement]
Plus ton message est précis, plus la réponse est rapide. Voici les **5 informations clés** :
### 1. Où ? [#1-où-]
La **page** ou l'**écran** concerné(e).
*Exemple : « Sur l'écran Statistiques > GPS d'une équipe Seniors »*
### 2. Quand ? [#2-quand-]
La **date et l'heure** approximatives du problème.
### 3. Comment reproduire ? [#3-comment-reproduire-]
Les **étapes précises** pour que nous voyions le bug nous-mêmes.
*Exemple :*
> 1. J'ouvre la séance du 12 mars
> 2. Je clique sur « Importer GPS »
> 3. Je glisse mon fichier Catapult
> 4. → Erreur 500
### 4. Ce que tu attendais [#4-ce-que-tu-attendais]
Le **comportement attendu** (parfois c'est un changement d'UX, pas un vrai bug).
### 5. Ce qui s'est passé [#5-ce-qui-sest-passé]
Le **comportement observé** : message d'erreur exact, capture d'écran si possible.
## Bonus utiles [#bonus-utiles]
* **Capture d'écran** ou **vidéo** du problème
* **Navigateur et version** (Chrome 120, Safari 17…)
* **OS** (macOS, Windows, iOS, Android)
* **Numéro de joueur / d'équipe** concerné(e) si applicable
Le bouton **Signaler un bug** ouvre directement ton client mail avec un
modèle pré-rempli. Tu n'as plus qu'à compléter et envoyer.
## Et après ? [#et-après-]
Tu reçois un **accusé de réception** sous quelques heures (heures ouvrées). Les bugs critiques (impossible de te connecter, perte de données) sont traités en priorité.
# Affilier un membre du staff (/docs/club-equipes/affilier-staff)
## Vue d'ensemble [#vue-densemble]
FormaPulse permet à plusieurs membres du staff (co-coachs, préparateurs physiques, kinés, analystes vidéo…) de **collaborer sur les mêmes équipes**. Chacun reçoit un accès **scopé** : il ne voit que les équipes et les sportifs qui lui ont été explicitement affiliés.
## Prérequis [#prérequis]
* L'équipe existe déjà ([créer une équipe](/docs/club-equipes/creer-une-equipe)).
* Le membre à affilier dispose **déjà** d'un compte FormaPulse rattaché au club.
* Tu as le rôle **manager** sur le club.
Seul un **manager** peut affilier un staff. Si l'action « Affilier à un coach »
n'apparaît pas dans le menu groupé, c'est que tu n'as pas ce rôle — contacte
le manager principal du club.
## Étapes [#étapes]
### 1. Ouvrir la page Équipes [#1-ouvrir-la-page-équipes]
Depuis la barre latérale, clique sur **Équipes**.
### 2. Sélectionner une ou plusieurs équipes [#2-sélectionner-une-ou-plusieurs-équipes]
Coche les équipes concernées dans le tableau. Tu peux affilier plusieurs équipes d'un coup — pratique pour un kiné qui suit toutes les catégories.
### 3. Cliquer sur « Affilier à un coach » [#3-cliquer-sur--affilier-à-un-coach-]
L'action apparaît dans le **menu d'actions groupées** une fois la sélection faite.
### 4. Sélectionner les membres du staff [#4-sélectionner-les-membres-du-staff]
La liste des staffs présents dans ton club s'affiche. Coche celui ou ceux à qui tu veux donner accès aux équipes sélectionnées.
### 5. Valider [#5-valider]
Clique sur **Affilier (X)** (X = nombre de staffs cochés). L'accès est appliqué immédiatement.
## Scope d'accès [#scope-daccès]
Chaque staff voit **uniquement** les équipes et les sportifs qui lui ont été explicitement affiliés. La portée est volontairement **réduite et contrôlée** :
* Affilier une équipe → le staff voit l'équipe **et tous ses sportifs**.
* Pour élargir l'accès, refais une affiliation avec d'autres équipes.
* Pour le retirer, **désaffilie** depuis la même interface.
## Le rôle manager [#le-rôle-manager]
Le **manager** est un statut séparé du rôle fonctionnel (entraineur, kiné, préparateur physique…). Il s'ajoute au compte d'un staff existant et lui confère les droits d'administration sur le club :
* Affilier ou désaffilier un staff à des équipes/sportifs.
* Gérer la structure du club (équipes, catégories).
* Voir l'ensemble des équipes et des sportifs sans avoir à être affilié.
Le manager **contourne le scope d'affiliation** : il accède à tout le club par
défaut. Limite ce statut à 1 ou 2 personnes de confiance — un coach assistant
ou un kiné n'a pas besoin d'être manager pour faire son travail.
## Erreurs à éviter [#erreurs-à-éviter]
* **Affilier trop largement** : le scope réduit est une force. Affilie un staff aux équipes/sportifs qu'il suit réellement, plutôt que de tout ouvrir par défaut.
* **Oublier de désaffilier un ancien staff** en début de saison : tant qu'il reste affilié, il conserve l'accès aux équipes et aux sportifs concernés.
* **Utiliser une adresse email partagée** : chaque membre doit avoir son propre compte pour que le suivi des actions (qui a saisi quoi) reste fiable.
## Aller plus loin [#aller-plus-loin]
# Créer une équipe (/docs/club-equipes/creer-une-equipe)
## Vue d'ensemble [#vue-densemble]
L'équipe est l'**unité de base** de ton club FormaPulse. Tout est organisé autour d'elle : les joueurs y sont affiliés, les séances sont planifiées pour une équipe, et les statistiques sont calculées par équipe.
## Prérequis [#prérequis]
* Avoir **au moins un joueur** déjà créé dans ton club. La création d'équipe exige la sélection d'au moins un joueur — si tu n'en as encore aucun, commence par [ajouter un joueur](/docs/joueurs/ajouter-un-joueur).
* *Optionnel* : une image (logo, photo d'équipe) au format `.jpg`, `.jpeg` ou `.png`.
## Étapes [#étapes]
### 1. Accéder à la section Équipes [#1-accéder-à-la-section-équipes]
Depuis le menu latéral, ouvre **Club** (ou **Équipes** si tu n'as pas de compte club) → **Gestion équipes** → **Équipes**.
### 2. Cliquer sur « Créer une team » [#2-cliquer-sur--créer-une-team-]
Le bouton se trouve en haut à droite de la liste des équipes. Un formulaire s'ouvre dans une fenêtre.
### 3. Remplir les informations [#3-remplir-les-informations]
| Champ | Description |
| -------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
| **Nom de la team** | Le nom affiché partout dans l'app (ex: « U17 Élite »). 100 caractères max. |
| **Sélectionner les joueurs** | Choisis au moins un joueur dans la liste. Tu pourras en ajouter ou en retirer plus tard depuis la fiche de l'équipe. |
| **Image de la team** *(optionnel)* | Logo ou photo d'équipe. Formats acceptés : `.jpg`, `.jpeg`, `.png`. |
### 4. Valider [#4-valider]
Clique sur **Créer la team**. Un message de confirmation apparaît et l'équipe rejoint la liste.
À la création, la couleur de l'équipe est attribuée par défaut. Tu peux la
modifier ensuite depuis la liste des équipes (colonne **Couleur**) ou depuis
la fiche de l'équipe.
## Activer l'équipe (compte club) [#activer-léquipe-compte-club]
Sur un compte club, créer une équipe ne suffit pas à la rendre visible partout dans l'app : il faut aussi l'**activer**.
1. En bas du menu latéral, clique sur le bandeau qui affiche le **nom de ton club**.
2. La liste de toutes tes équipes apparaît, chacune avec un **switch** à droite.
3. Active le switch des équipes que tu veux voir dans le reste de l'app (calendrier, séances, statistiques, etc.).
Tu peux activer **plusieurs équipes en même temps**. Les équipes désactivées
restent créées et conservent leurs joueurs et leur historique — elles sont
simplement masquées des vues filtrées.
## Une fois l'équipe créée [#une-fois-léquipe-créée]
Trois actions à enchaîner :
1. **Activer l'équipe** depuis le bandeau en bas du menu latéral (cf. section ci-dessus) pour qu'elle apparaisse dans le reste de l'app.
2. **Affilier ton staff** (autres coachs, préparateurs physiques, kiné…) → [Affilier un staff](/docs/club-equipes/affilier-staff)
3. **Configurer les permissions** si plusieurs membres du staff partagent la gestion de l'équipe (réservé au manager du club) → [Gérer les permissions](/docs/club-equipes/gerer-permissions)
Tu peux aussi **ajouter d'autres joueurs** à l'équipe à tout moment depuis la fiche de l'équipe → [Ajouter un joueur](/docs/joueurs/ajouter-un-joueur).
## Erreurs à éviter [#erreurs-à-éviter]
* **Confondre équipe et catégorie d'âge** : si tu as deux groupes U13 (U13 A et U13 B), crée bien deux équipes distinctes — une par groupe d'entraînement réel.
* **Oublier d'activer l'équipe** sur un compte club : si l'équipe n'est pas activée depuis le bandeau du sidebar, elle n'apparaîtra pas dans le calendrier, les séances ni les statistiques filtrées.
* **Créer une équipe « test »** sans la supprimer : elle continuera de peser dans tes statistiques globales et faussera certaines moyennes.
## Aller plus loin [#aller-plus-loin]
# Gérer les permissions (/docs/club-equipes/gerer-permissions)
## Vue d'ensemble [#vue-densemble]
FormaPulse propose **plusieurs systèmes de permissions distincts**, chacun avec sa propre logique. Cette page les détaille un par un :
1. **Permissions sur les dashboards** — qui peut voir et modifier un dashboard.
2. **Permissions sur les questionnaires** — qui peut voir, modifier et supprimer un questionnaire.
3. **Affiliation des équipes au staff** — quelles équipes un membre du staff voit.
4. **Affiliation des joueurs au staff** — quels joueurs un membre du staff voit.
5. **Permissions joueur — sections accessibles dans l'app mobile** — ce que le joueur voit dans son app.
6. **Rôles staff et accès aux pages** — quelles pages de l'app un membre du staff peut ouvrir selon son rôle.
***
## 1. Permissions sur les dashboards [#1-permissions-sur-les-dashboards]
Chaque dashboard que tu crées a **un créateur** et peut être **partagé** à d'autres membres du staff.
### Les 3 niveaux d'accès [#les-3-niveaux-daccès]
| Rôle | Lecture | Modification | Partage / Suppression |
| ------------------------------------------------------ | ------- | ------------ | --------------------- |
| **Créateur** | Oui | Oui | Oui |
| **Viewer en lecture seule** | Oui | Non | Non |
| **Viewer avec édition** *(option à activer)* | Oui | Oui | Non |
### Comment ça se configure [#comment-ça-se-configure]
Au moment de **sauvegarder** un dashboard, une modale te propose :
* la **liste des utilisateurs autorisés** (multi-sélection des membres du staff),
* un toggle **« Dashboard modifiable »** : si activé, les viewers peuvent modifier le dashboard ; sinon ils sont en lecture seule.
Le **créateur garde toujours la main** sur le partage et la suppression : un viewer (même avec droits d'édition) ne peut ni re-partager, ni supprimer le dashboard.
***
## 2. Permissions sur les questionnaires [#2-permissions-sur-les-questionnaires]
Un questionnaire a un **périmètre** : personnel, club ou FormaPulse. Le périmètre conditionne qui peut le voir, le modifier ou le supprimer.
Pour les **questionnaires club**, tu peux en plus **affilier le questionnaire à une ou plusieurs équipes** : seuls les coachs ayant accès à ces équipes le verront.
### Affiliation d'un questionnaire à une (ou plusieurs) équipes [#affiliation-dun-questionnaire-à-une-ou-plusieurs-équipes]
Sur un questionnaire **club**, tu peux gérer une liste d'**équipes affiliées** :
* **À la création** du questionnaire — tu sélectionnes les équipes concernées dès le départ.
* **Plus tard** — un manager peut modifier la liste à tout moment depuis le **tableau des questionnaires**, en cliquant sur le **bouton Action** de la ligne du questionnaire concerné. La nouvelle liste **remplace** l'ancienne.
Cas typiques :
* Questionnaire « Bilan U17 fin de saison » → affilié à l'équipe U17 uniquement.
* Questionnaire général « Wellness quotidien » → aucune équipe affiliée définie, visible par toutes les équipes du club.
Seul un **manager du club** peut **modifier les équipes affiliées** à
un questionnaire club existant. Le créateur peut modifier le contenu
(questions, libellés…) mais pas les équipes affiliées s'il n'est pas
manager.
### Visibilité [#visibilité]
* **Questionnaire personnel** → visible par son auteur uniquement.
* **Questionnaire club, créé par toi** → toujours visible.
* **Questionnaire club, manager du club** → visible **sans exception** (le manager voit tous les questionnaires du club).
* **Questionnaire club affilié à une ou plusieurs équipes** → visible si une de tes équipes appartient à la liste affiliée.
* **Questionnaire FormaPulse** → visible par tout le monde, en lecture.
### Modification [#modification]
| Action | Personnel | Club |
| ------------------------------------------ | ----------------- | --------------------------------------------- |
| Modifier le contenu (questions, libellés…) | Auteur uniquement | Auteur **OU** manager du club |
| Modifier les équipes affiliées | — | **Manager uniquement** |
| Supprimer | Auteur uniquement | **Manager uniquement** (même si pas créateur) |
Les questionnaires **FormaPulse** ne peuvent **jamais** être supprimés.
→ Voir [Questionnaires — club vs personnel](/docs/questionnaires/club-vs-personnel) pour le détail.
***
## 3. Affiliation des équipes au staff [#3-affiliation-des-équipes-au-staff]
Sur un compte **club**, chaque membre du staff voit un sous-ensemble des équipes — pas forcément toutes.
### Les rôles staff dans le club [#les-rôles-staff-dans-le-club]
* **Manager du club** → voit **toutes** les équipes et **tous** les sportifs du club, sans configuration. Aucune affiliation à gérer pour lui.
* **Staff non-manager** → voit uniquement les équipes auxquelles tu l'as **affilié** explicitement.
### Comment affilier un staff à des équipes [#comment-affilier-un-staff-à-des-équipes]
Depuis le **tableau des équipes**, sélectionne une ou plusieurs lignes puis utilise le **bouton Action** pour affilier les équipes choisies à un ou plusieurs membres du staff. Le système ajoute ces équipes à la liste des **équipes autorisées** du staff.
Quand tu affilies un staff à une **équipe**, **tous les sportifs** de
cette équipe sont **automatiquement** ajoutés à ses sportifs autorisés.
Tu n'as pas besoin de les affilier individuellement.
### Cas particulier — propagation [#cas-particulier--propagation]
À la création d'une nouvelle équipe (ou d'un nouveau sportif), l'équipe (ou le sportif) est **automatiquement ajoutée** au manager et au propriétaire du club. Pas besoin d'intervention manuelle.
***
## 4. Affiliation des joueurs au staff [#4-affiliation-des-joueurs-au-staff]
Pour les sportifs **non rattachés à une équipe** (par exemple un joueur en suivi individuel), tu peux affilier directement un staff à un ou plusieurs joueurs.
### Comment ça fonctionne [#comment-ça-fonctionne]
Depuis le **tableau des sportifs**, sélectionne une ou plusieurs lignes puis utilise le **bouton Action** pour affilier les sportifs choisis à un ou plusieurs membres du staff. Les sportifs sont ajoutés à la liste des **sportifs autorisés** du staff.
À partir de ce moment, le staff voit le sportif dans :
* la liste des sportifs,
* les statistiques individuelles,
* les questionnaires et tests qui lui sont liés,
* les écrans de planification individuelle.
### Manager — toujours tout [#manager--toujours-tout]
Comme pour les équipes, un **manager du club** voit tous les sportifs du club sans configuration.
***
## 5. Permissions joueur — sections accessibles dans l'app mobile [#5-permissions-joueur--sections-accessibles-dans-lapp-mobile]
Le coach contrôle ce que **le joueur voit dans l'app mobile**. Par défaut, **toutes les sections sont fermées** : le joueur ne voit que ses **informations personnelles** (toujours accessibles).
### Les 8 sections que tu peux activer [#les-8-sections-que-tu-peux-activer]
| Section | Ce que voit le joueur |
| ----------------------------- | --------------------------------------------------- |
| **Suivi anthropométrique** | Historique de ses prises (poids, taille, IMC, PHV…) |
| **Suivi tests physiques** | Résultats de ses tests, évolution |
| **Statistiques d'événements** | Ses stats par séance, match, etc. |
| **Suivi des présences** | Son taux de présence, ses absences |
| **Notes de suivi joueur** | Les notes que tu as ajoutées sur ses événements |
| **Suivi médical** | Ses blessures et leur historique |
| **Données questionnaires** | Ses propres réponses aux questionnaires |
| **Données GPS** | Ses indicateurs GPS par session |
Les **informations personnelles** (nom, prénom, photo, etc.) sont **toujours visibles** par le joueur — elles ne sont pas modulaires.
### Comment configurer [#comment-configurer]
La gestion se fait dans **Profil > Préférences** sur la section dédiée aux permissions de lecture des sportifs. Tu peux aussi modifier les permissions **directement depuis le tableau des sportifs**, en sélectionnant une ou plusieurs lignes et en cliquant sur le **bouton Action**. Dans tous les cas tu peux :
* modifier les permissions d'**un sportif** ou de **plusieurs sportifs en lot**,
* activer / désactiver chaque section indépendamment,
* conserver les autres réglages — la modification ne touche que les sections que tu modifies.
### Par défaut [#par-défaut]
Pour un joueur nouvellement créé, le champ est vide. **Toutes les sections sont fermées**. À toi d'activer ce que tu veux partager.
### Garde-fous d'accès [#garde-fous-daccès]
* **Sur un compte club** : tu ne peux modifier les permissions **que des sportifs auxquels tu es affilié** (ou de tous ceux du club si tu es manager).
* **Sur un compte coach individuel** : tu ne peux modifier les permissions **que des sportifs que tu as créés**.
***
## 6. Rôles staff et accès aux pages [#6-rôles-staff-et-accès-aux-pages]
En complément des affiliations équipes / joueurs, chaque membre du staff a un **rôle fonctionnel** qui détermine **quelles pages de l'app il peut ouvrir**.
Les rôles fonctionnels sont **attachés au compte FormaPulse** du staff
(et **non choisis au moment de l'affiliation**). Ils sont définis **en
adéquation avec le club**, à la mise en place du club FormaPulse.
### Rôles disponibles [#rôles-disponibles]
* **Directeur**
* **Entraineur**
* **Préparateur physique**
* **Préparateur mental**
* **Nutritioniste**
* **Reathletiseur**
* **Data scientist**
* **Médecin**
* **Kinésithérapeute**
* **Psychologue**
* **Scolarité**
Selon le rôle, certaines pages de l'app sont **accessibles** ou **masquées**. Par exemple, la section médicale n'est ouverte qu'aux rôles à vocation médicale ou paramédicale.
### Si tu n'as pas accès à une page [#si-tu-nas-pas-accès-à-une-page]
Si une page que tu attends n'est **pas visible** dans ton menu, c'est très probablement parce que **ton rôle n'y donne pas accès**.
Dans ce cas :
1. Contacte le **référent club** de ton équipe / structure.
2. Le référent club fait remonter la demande à **FormaPulse** pour ajuster ton rôle ou les accès du club.
Tu ne peux **pas** modifier toi-même ton rôle ni élargir tes accès — c'est une décision qui passe par ton club et FormaPulse.
***
## Synthèse — quel système pour quoi [#synthèse--quel-système-pour-quoi]
| Tu veux contrôler… | Système |
| ---------------------------------------------- | -------------------------------- |
| Qui voit / modifie ce dashboard | Permissions dashboard |
| Qui voit / modifie / supprime ce questionnaire | Permissions questionnaire |
| Quelles équipes voit ce membre du staff | Affiliation équipes |
| Quels joueurs voit ce membre du staff | Affiliation joueurs |
| Ce que mon joueur voit dans son app mobile | Permissions joueur (app mobile) |
| Quelles pages de l'app un staff peut ouvrir | Rôle staff (défini avec le club) |
## Aller plus loin [#aller-plus-loin]
# Gérer le compte et l'abonnement (/docs/compte-abonnement/gerer-abonnement)
## Vue d'ensemble [#vue-densemble]
Cette page t'explique ce que tu peux faire depuis ton **profil** FormaPulse. La page profil est organisée en plusieurs onglets : **Mon profil**, **Sécurité**, **Services**, **Facturation** et **Centre d'aide**.
## Ce que tu peux gérer [#ce-que-tu-peux-gérer]
### Onglet **Mon profil** [#onglet-mon-profil]
* Changer ta **photo de profil**.
* Te **déconnecter**.
* Activer ou désactiver la **newsletter**.
* Gérer ton **statut étudiant** (utilisé pour l'accès à des tarifs réduits sur les formations).
### Onglet **Sécurité** [#onglet-sécurité]
* Changer ton **mot de passe**.
* **Supprimer définitivement** ton compte.
### Onglet **Services** [#onglet-services]
* Gérer le **multi-comptes** : lier plusieurs comptes FormaPulse pour basculer facilement entre eux (utile si tu as un compte coach + un compte club par exemple). → [Multi-comptes](/docs/compte-abonnement/multi-comptes)
* Connecter ton **calendrier externe** (Google ou Outlook). → [Synchroniser ses calendriers](/docs/compte-abonnement/sync-calendriers)
### Onglet **Facturation** [#onglet-facturation]
* Voir ton **abonnement actuel**.
* Cliquer sur **Espace client** pour ouvrir le **portail client de paiement** : c'est là que se gèrent le mode de paiement, les factures, l'annulation et toute la partie facturation à proprement parler.
* Cliquer sur **Changer** pour aller voir et modifier ta **formule d'abonnement**.
## Étapes — accéder à ton profil [#étapes--accéder-à-ton-profil]
### 1. Ouvrir la page profil [#1-ouvrir-la-page-profil]
Depuis le menu, va sur **Profil**.
### 2. Choisir l'onglet souhaité [#2-choisir-longlet-souhaité]
Mon profil, Sécurité, Services ou Facturation.
## Étapes — modifier l'abonnement [#étapes--modifier-labonnement]
### 1. Aller sur l'onglet Facturation [#1-aller-sur-longlet-facturation]
Profil > **Facturation**.
### 2. Voir ton abonnement actuel [#2-voir-ton-abonnement-actuel]
Le type d'abonnement est affiché, ainsi que le nombre maximum de sportifs autorisé.
### 3. Changer de formule [#3-changer-de-formule]
Clique sur **Changer**. Tu arrives sur la page **Abonnements** qui te montre les formules disponibles. Tu peux y souscrire ou changer de plan.
### 4. Gérer la facturation, le mode de paiement et les factures [#4-gérer-la-facturation-le-mode-de-paiement-et-les-factures]
Tout cela se fait dans l'**Espace client** dédié au paiement (accessible depuis l'onglet **Facturation > Espace client**) — c'est lui qui gère :
* les **modes de paiement** (carte bancaire),
* les **factures** (téléchargement, historique),
* l'**annulation** ou la résiliation de l'abonnement.
Si tu es sur une formule **Pro** ou que ton compte est rattaché à un
**club**, l'abonnement est géré différemment et l'écran « Changer »
n'est pas accessible — c'est le club ou ton interlocuteur dédié qui
gère le contrat.
## Cas particulier — connexion calendrier externe [#cas-particulier--connexion-calendrier-externe]
La connexion d'un calendrier externe (Google ou Outlook) est **réservée aux abonnements payants** : si tu es sur un compte gratuit, l'option n'apparaît pas dans l'onglet **Services**.
## Erreurs à éviter [#erreurs-à-éviter]
* **Vouloir modifier nom ou email depuis le profil** : ces informations sont **affichées en lecture seule** dans la page profil. Pour un changement d'email, contacte le support.
* **Chercher tes factures dans FormaPulse** : elles ne sont pas dans l'app. Passe par **Espace client** (onglet Facturation) — c'est lui qui te donne accès à toutes tes factures et à ton mode de paiement.
* **Confondre déconnexion et suppression** : la déconnexion termine ta session ; la suppression efface définitivement ton compte.
## Aller plus loin [#aller-plus-loin]
# Gérer le multi-comptes FormaPulse (/docs/compte-abonnement/multi-comptes)
## Vue d'ensemble [#vue-densemble]
Si tu interviens dans **plusieurs structures** (ton club + une sélection régionale + un staff fédéral), FormaPulse te permet de **regrouper plusieurs comptes** sous une même session et de basculer de l'un à l'autre en un clic.
## Cas d'usage [#cas-dusage]
* Coach principal **club** + sélectionneur **District**
* Préparateur physique **deux clubs** différents
* Coach de plusieurs **catégories** sur des espaces séparés
* Test d'un compte **partenaire** ou club externe
## Étapes [#étapes]
### 1. Lier un nouveau compte [#1-lier-un-nouveau-compte]
Avatar > **Mes comptes** > **Ajouter un compte**. Saisis l'email de l'autre compte.
### 2. Confirmer [#2-confirmer]
Tu reçois un email de validation. Clique sur le lien pour confirmer la liaison.
### 3. Basculer [#3-basculer]
Une fois lié, le **menu de bascule** apparaît dans ton avatar. Un clic suffit pour passer d'un compte à l'autre — pas besoin de te déconnecter.
### 4. Définir le compte par défaut [#4-définir-le-compte-par-défaut]
Tu peux choisir le compte ouvert **par défaut** à la connexion.
Chaque compte garde ses propres **équipes**, **joueurs** et **données**.
Les informations ne sont **pas mutualisées** entre comptes — c'est une
séparation stricte.
## Erreurs à éviter [#erreurs-à-éviter]
* **Confondre multi-comptes et multi-équipes** : si toutes tes équipes sont **dans le même club**, tu n'as qu'un seul compte avec plusieurs équipes. Le multi-comptes sert à séparer des **structures différentes**.
* **Basculer pendant une saisie** : un changement de compte peut perdre les saisies non enregistrées. Sauvegarde avant.
* **Liaison à mauvais email** : vérifie deux fois l'adresse — chaque liaison doit être confirmée par email.
## Aller plus loin [#aller-plus-loin]
# Synchroniser ses calendriers (/docs/compte-abonnement/sync-calendriers)
## Vue d'ensemble [#vue-densemble]
La **synchronisation calendrier** te permet de connecter ton compte FormaPulse à ton **calendrier personnel** pour retrouver tes séances et matchs au même endroit que le reste de ton agenda.
## Fournisseurs supportés [#fournisseurs-supportés]
FormaPulse supporte **deux fournisseurs** :
* **Google Calendar** (Gmail, Google Workspace)
* **Outlook** (Outlook.com, Microsoft 365)
La connexion se fait via **OAuth2** : tu te connectes à ton compte Google ou Outlook, tu accordes les autorisations à FormaPulse, et la liaison est établie. Aucun mot de passe n'est saisi sur FormaPulse, et tu peux **déconnecter** à tout moment.
## Étapes [#étapes]
### 1. Accéder aux préférences calendrier [#1-accéder-aux-préférences-calendrier]
Depuis ton avatar, va sur **Préférences > Calendrier**.
### 2. Choisir le fournisseur [#2-choisir-le-fournisseur]
Clique sur **Connecter Google** ou **Connecter Outlook**. Tu es redirigé vers la page d'authentification du fournisseur.
### 3. Accorder les autorisations [#3-accorder-les-autorisations]
Connecte-toi à ton compte (si ce n'est pas déjà fait) puis **autorise FormaPulse** à consulter et écrire dans ton calendrier. Coche bien les cases proposées par Google ou Outlook lors de cette étape.
### 4. Retour automatique sur FormaPulse [#4-retour-automatique-sur-formapulse]
Une fois autorisé, tu es redirigé sur FormaPulse et la connexion apparaît dans la liste de tes calendriers connectés (avec l'email du compte connecté).
## Gérer une connexion existante [#gérer-une-connexion-existante]
Depuis **Préférences > Calendrier**, tu vois la liste de tes connexions actives. Pour chaque connexion tu peux :
* voir l'**email** du compte connecté,
* **déconnecter** la liaison à tout moment.
Une fois déconnecté, FormaPulse n'a plus accès à ton calendrier. Tu peux te reconnecter quand tu veux en relançant le flow OAuth.
Lors de la première autorisation, Google peut afficher un message
« **Application non vérifiée** ». Ce message indique que l'application
est encore en cours de vérification chez Google — la liaison reste
fonctionnelle et **sans risque**, tu peux continuer.
## Erreurs à éviter [#erreurs-à-éviter]
* **Refuser une autorisation lors du flow OAuth** : si tu décoches les permissions de lecture/écriture demandées, FormaPulse ne pourra pas synchroniser. Refais le flow et accepte toutes les autorisations.
* **Délai de propagation** : après une nouvelle séance créée côté FormaPulse, Google et Outlook peuvent prendre **plusieurs heures** pour la faire apparaître dans ton calendrier. C'est normal.
* **Connexion perdue** : si tu changes le mot de passe de ton compte Google/Outlook ou si tu révoques l'accès depuis leur interface, la liaison est cassée. Il faut **déconnecter puis reconnecter** depuis FormaPulse.
## Aller plus loin [#aller-plus-loin]
# Composants graphiques (/docs/dashboards/composants-graphiques)
## Vue d'ensemble [#vue-densemble]
Le constructeur expose **12 types de composants graphiques**. Chacun répond à une question différente : « comment ça évolue ? », « comment ça se distribue ? », « combien ça vaut maintenant ? », « est-ce que ça déclenche une alerte ? »
Cette page détaille **chaque composant**, ses **options spécifiques** et ce qu'elles produisent. Pour la liste des indicateurs sélectionnables, voir [Indicateurs disponibles](/docs/dashboards/indicateurs-disponibles).
## Options communes à tous les composants [#options-communes-à-tous-les-composants]
Avant d'entrer dans le détail, voici les options que tu retrouveras sur **tous les composants** (onglet **Général** et **Visuel** du configurateur) :
* **Titre du composant** — texte affiché en en-tête.
* **Largeur** (en colonnes de la grille, de 5 à 50 % de la largeur disponible).
* **Hauteur** (de 50 px « Mini » à 500 px « XXL »).
* **Afficher la légende** — masquable pour gagner de la place.
* **Afficher la grille** — désactivable pour un rendu plus épuré.
* **Afficher les points** sur les courbes / **valeurs sur les points**.
* **Couleurs personnalisées** par indicateur (palette FormaPulse modifiable).
Les composants temporels exposent en plus :
* **Granularité temporelle** : **jour**, **semaine** (agrégation hebdomadaire), **mois** (agrégation mensuelle).
* **Méthode d'agrégation** : moyenne, médiane, somme.
* **Remplacement des valeurs manquantes** : aucun (ignorer), zéro, valeur précédente.
## Détail par composant [#détail-par-composant]
### Courbe [#courbe]
**Évolution temporelle** d'un ou plusieurs indicateurs. Le réflexe pour suivre une métrique dans le temps.
* **Indicateurs supportés** : 1 à 10.
* **Cas d'usage** : suivi de charge UA sur 60 jours, évolution du score de fatigue d'un joueur, courbes croisées charge / RPE / GPS.
* **Options spécifiques** :
* granularité jour / semaine / mois,
* agrégation moyenne / médiane / somme,
* **norme de référence** : ligne horizontale optionnelle (issue d'un test ou d'une valeur GPS), couleur et style configurables (plein, tirets, pointillés),
* **analyses avancées** disponibles (voir section dédiée plus bas) : moyennes mobiles SMA / EMA, Z-Score, ACWR, zones de sollicitation à la tendance.
### Histogramme [#histogramme]
**Comparaison de valeurs** par période ou par sportif. Idéal pour mettre en avant les écarts.
* **Indicateurs supportés** : 1 à 10.
* **Cas d'usage** : durée de séance par jour, charge totale par semaine, distance GPS par joueur sur le dernier match.
* **Options spécifiques** :
* mêmes options de granularité, agrégation et valeurs manquantes que la courbe,
* **empilement des barres** quand plusieurs indicateurs sont sélectionnés,
* analyses avancées disponibles.
### Aire [#aire]
**Évolution avec remplissage** sous la courbe. Met en valeur les volumes accumulés.
* **Indicateurs supportés** : 1 à 5 (limité pour la lisibilité, l'aire surcharge vite).
* **Cas d'usage** : charge cumulée sur la phase de préparation, distance totale parcourue.
* **Options spécifiques** : identiques à la courbe, avec le remplissage en plus.
### Composé [#composé]
**Double axe Y** mixant barres et lignes. Le composant pour croiser deux ordres de grandeur différents.
* **Indicateurs supportés** : 2 à 10, **répartis explicitement** entre l'axe gauche et l'axe droit.
* **Cas d'usage** : durée de séance (barres, axe gauche, en minutes) + RPE (ligne, axe droit, sur 10) — deux échelles dans un seul graphique.
* **Options spécifiques** :
* **Type de série par axe** : barres ou ligne (configurable indépendamment à gauche et à droite),
* **empilement des barres** activable,
* **analyses avancées** par axe.
### Nuage de points [#nuage-de-points]
**Corrélation entre deux indicateurs**. Un point = une observation.
* **Indicateurs supportés** : exactement **2** (axe X, axe Y).
* **Cas d'usage** : RPE vs charge UA (les joueurs sur-RPE ressortent), distance GPS vs vitesse max, fatigue vs sommeil.
* **Options spécifiques** :
* **Mode d'affichage** : *Un point par sportif* (chaque joueur = un point) ou *Un point par date* (chaque séance = un point),
* **Couleur unique** pour tous les points.
### Radar [#radar]
**Profil multidimensionnel**. Une vue synthétique en forme d'étoile.
* **Indicateurs supportés** : 3 à 8.
* **Cas d'usage** : profil physique d'un joueur (vitesse / endurance / explosivité / force / agilité / récupération), comparaison de deux périodes, comparaison équipe vs benchmark.
* **Options spécifiques** :
* **Mode d'affichage** : *Collectif* (moyenne de l'équipe filtrée) ou *Par sportif* (un polygone par joueur, code couleur).
### Box plot [#box-plot]
**Distribution statistique** : médiane, quartiles, valeurs extrêmes.
* **Indicateurs supportés** : 1 à 5.
* **Cas d'usage** : dispersion de la charge UA dans l'équipe (qui est en haut, qui est en bas), distribution des sprints par séance.
* **Options spécifiques** :
* **Mode d'affichage** : *Sur la période* (un box plot pour toute la fenêtre filtrée) ou *Sur le jour* (un box plot par jour),
* **affichage Q1**, **affichage médiane**, **affichage Q3** indépendamment activables.
### Jauge [#jauge]
**Valeur actuelle** avec **seuils** colorés.
* **Indicateurs supportés** : exactement **1**.
* **Cas d'usage** : charge hebdomadaire vs zone optimale, score de fraîcheur, taux de présence de l'équipe sur les 7 derniers jours.
* **Options spécifiques** : min / max et seuils colorés configurables.
### KPI [#kpi]
**Indicateur clé** affiché en gros chiffre, avec **variation période vs période précédente**.
* **Indicateurs supportés** : exactement **1**.
* **Cas d'usage** : distance totale parcourue cette semaine, charge UA moyenne, nombre de sprints — avec tendance ↑ / ↓ vs semaine précédente.
* **Options spécifiques** : format d'affichage, comparaison période sur période.
### Tableau [#tableau]
**Données tabulaires** — jusqu'à **20 colonnes**. Le composant le plus dense pour un compte-rendu.
* **Indicateurs supportés** : 1 à 20.
* **Cas d'usage** : récapitulatif hebdo équipe (1 ligne = 1 joueur, colonnes = charge / GPS / présences / blessures / dernier test), historique chronologique d'un joueur.
* **Options spécifiques** :
* **Mode d'affichage** : *Par date* (lignes = jours, colonnes = indicateurs agrégés) ou *Par sportif* (lignes = joueurs, colonnes = indicateurs).
### Système d'alerte [#système-dalerte]
**Règles d'alertes personnalisées** avec **scoring par joueur**. Le composant le plus avancé. Voir la section dédiée [Système d'alerte](#système-dalerte---focus) plus bas.
* **Indicateurs supportés** : 1 à 20 (utilisés comme variables des règles).
### Texte [#texte]
**Annotation libre** dans un éditeur de texte riche.
* **Indicateurs supportés** : aucun (composant purement éditorial).
* **Cas d'usage** : titre de section dans un dashboard long, commentaire d'analyse, légende, instructions pour le staff qui consulte.
## Analyses avancées (composants temporels) [#analyses-avancées-composants-temporels]
Pour les composants **Courbe**, **Histogramme**, **Aire** et **Composé**, l'onglet **Analyses** du configurateur ajoute des couches statistiques par-dessus les indicateurs bruts.
### Moyennes mobiles (SMA et EMA) [#moyennes-mobiles-sma-et-ema]
* **SMA** (Simple Moving Average) — moyenne arithmétique sur une fenêtre glissante.
* **EMA** (Exponential Moving Average) — moyenne pondérée qui réagit plus vite aux dernières valeurs.
* **Fenêtres disponibles** : 3, 5, 7, 10, 14, 21, 28, 42, 56, 90 jours.
Tu peux activer plusieurs fenêtres simultanément (ex : SMA 7 + SMA 28 pour comparer court terme et tendance de fond).
### Z-Score [#z-score]
Détecte les **anomalies statistiques** : combien d'écarts-types sépare la valeur du jour de la moyenne récente.
* **Fenêtre** : 5 jours par défaut (ajustable).
* **Seuils** : alerte à **2.0**, critique à **3.0** (visualisés sur le graphique).
### ACWR — Acute:Chronic Workload Ratio [#acwr--acutechronic-workload-ratio]
Le rapport **charge aiguë / charge chronique**, indicateur clé de prévention des blessures.
* **Fenêtre aiguë** : 7 jours par défaut.
* **Fenêtre chronique** : 28 jours par défaut.
* **6 zones de risque** affichées : sous-entraînement sévère / sous-entraînement modéré / **zone optimale** / surcharge modérée / surcharge sévère / non déterminé.
* **Disponible uniquement sur la source Charge** (UA, durée, RPE).
### Zones de sollicitation à la tendance [#zones-de-sollicitation-à-la-tendance]
Découpage en **zones colorées** basé sur la moyenne mobile exponentielle :
* **Zone verte** — sollicitation normale,
* **Zone bleue** — sous-sollicitation,
* **Zone jaune** — sur-sollicitation.
Disponible sur les composants Histogramme, Composé et Tableau (où la notion de zone est lisible).
### Norme de référence [#norme-de-référence]
Ligne horizontale optionnelle, basée sur la valeur d'un **test physique** ou d'une **norme GPS**. Couleur et style configurables (plein, tirets, pointillés). Pratique pour visualiser à quelle distance on est d'un objectif.
## Système d'alerte — focus [#système-dalerte--focus]
Le composant **Système d'alerte** permet de construire des **règles personnalisées** qui scorent chaque joueur.
### Builder de règles [#builder-de-règles]
Une règle compare une **métrique** d'un indicateur à une valeur seuil ou à une autre métrique, avec un comparateur. Plusieurs règles se combinent en **ET / OU** imbriqués.
**Comparateurs (8)** : `<`, `≤`, `=`, `≥`, `>`, `≠`, **entre** \[min, max], **hors de** \[min, max].
**Opérateurs mathématiques entre opérandes (4)** : `+`, `−`, `×`, `÷` — pour bâtir des expressions du type `Charge UA × 0.7 + RPE`.
**Traitement appliqué** avant calcul : granularité (jour / semaine / mois), agrégation (moyenne / somme / min / max / médiane), gestion des valeurs manquantes (ignorer / précédente / zéro).
### Métriques disponibles [#métriques-disponibles]
Les métriques sont organisées en **10 catégories**. Pour chaque indicateur, tu choisis la métrique sur laquelle la règle s'applique :
| Catégorie | Exemples |
| -------------------------- | ----------------------------------------------------------------- |
| **Valeurs** | Valeur brute, Minimum, Maximum, Première, Dernière |
| **Moyennes mobiles** | SMA 3 / 7 / 14 / 21 / 28j (+ custom), MME 7 / 14 / 28j (+ custom) |
| **Variations temporelles** | Δ T-1 (%), Δ T-N (%), Δ T-1 (pts), Δ T-N (pts) |
| **Ratio ACWR** | ACWR SMA (7/28), ACWR EWMA (7/28), versions custom |
| **Z-Score** | Z-Score 7j, Z-Score sur fenêtre custom |
| **Tendance & Écarts** | Écart SMA en points / %, Écart MME en points / % |
| **Statistiques** | Q1, Médiane, Q3, Percentile custom, IQR, Écart-type |
| **Comptages & Séquences** | Jours ↑ consécutifs, Jours ↓ consécutifs, Jours > seuil |
| **Accumulation** | Jours consécutifs / total au-delà d'un seuil (SMA ou MME) |
| **Dérive** | Pente (%/période), Direction de dérive, Dérive détectée |
### Scoring et niveaux d'importance [#scoring-et-niveaux-dimportance]
Chaque règle se voit assigner un **niveau d'importance** qui définit son poids dans le score global. **5 niveaux** disponibles, chacun associé à une couleur :
| Niveau | Couleur | Poids |
| --------------- | ------- | ----- |
| **Très faible** | gris | 1 |
| **Faible** | vert | 2 |
| **Moyen** | jaune | 3 |
| **Élevé** | orange | 4 |
| **Critique** | rouge | 5 |
Le composant trie les joueurs par score cumulé et met en avant ceux qui dépassent un seuil. Chaque règle déclenchée affiche en plus une **icône** et une **couleur** que tu choisis librement dans le builder.
### Modes d'affichage [#modes-daffichage]
* **Compact** — ligne par joueur avec score et icônes des règles déclenchées.
* **Détaillé** — historique des déclenchements par joueur sur la fenêtre filtrée.
## Aller plus loin [#aller-plus-loin]
# Constructeur de dashboard (/docs/dashboards/construire-dashboard)
## Vue d'ensemble [#vue-densemble]
Un **dashboard FormaPulse** est un tableau de bord sur mesure que tu construis toi-même : tu poses des **composants graphiques** (courbes, jauges, KPI, tableaux, alertes…) sur une grille, tu choisis les **indicateurs** à tracer, tu appliques des **filtres** (équipe, période, joueur, tags) et tu obtiens une vue qui se rejoue à volonté.
Un même dashboard peut être :
* consulté en interne par toi-même,
* **partagé** au reste du staff (en lecture seule ou avec droits d'édition),
* exporté en **PDF** pour une réunion ou un rapport,
* rejoué sur n'importe quel joueur ou équipe **sans le reconstruire** grâce aux filtres dynamiques.
## Anatomie du constructeur [#anatomie-du-constructeur]
Le constructeur est divisé en **trois zones** complémentaires.
### 1. Le header dynamique (en haut) [#1-le-header-dynamique-en-haut]
Une barre persistante qui contient :
* le **titre** du dashboard (éditable au clic),
* les **filtres globaux** : période, sportif, équipe, type d'événement, tags,
* le bouton **Recharger** (force le re-fetch des données),
* le bouton **Exporter en PDF**,
* le bouton **Partager / Sauvegarder** (ouvre la modale de partage).
Tous les composants posés sur le canvas réagissent automatiquement aux filtres du header. C'est le mécanisme qui te permet de construire un dashboard une seule fois et de le rejouer pour n'importe quel joueur ou n'importe quelle période. Pour tout détail sur les filtres, voir [Filtres dynamiques](/docs/dashboards/filtres-dynamiques).
### 2. La sidebar des composants (à droite) [#2-la-sidebar-des-composants-à-droite]
C'est ta **palette d'outils**. Elle contient :
* les **12 types de composants graphiques** disponibles (courbe, histogramme, aire, composé, scatter, radar, box plot, jauge, KPI, tableau, système d'alerte, texte),
* les **6 sources de données** (Questionnaires, Charge U.A., Tests physiques, Blessures, GPS, Formules) avec la liste des indicateurs disponibles dans chacune.
Pour ajouter un composant, tu le **glisses-déposes** depuis la sidebar vers le canvas : il apparaît à l'endroit du drop, prêt à être configuré. Pour la liste détaillée et les options de chaque composant, voir [Composants graphiques](/docs/dashboards/composants-graphiques).
### 3. Le canvas (au centre) [#3-le-canvas-au-centre]
Une **grille de 12 colonnes** sur laquelle tu poses tes composants. Tu peux :
* **glisser** un composant pour le repositionner,
* **redimensionner** un composant (largeur 1 à 12 colonnes, hauteur libre),
* **dupliquer** ou **supprimer** un composant via son menu contextuel,
* **cliquer** sur un composant pour ouvrir son **configurateur** dans une modale.
## Construire pas à pas [#construire-pas-à-pas]
### 1. Créer le dashboard [#1-créer-le-dashboard]
Depuis le menu principal, ouvre **Dashboards > Constructeur de dashboard**. Tu arrives directement sur un constructeur vide.
### 2. Ajouter un premier composant [#2-ajouter-un-premier-composant]
Dans la sidebar de droite, attrape un type — par exemple **Courbe** pour suivre l'évolution d'un indicateur dans le temps — et **glisse-le sur le canvas**. Le composant apparaît à l'endroit du drop.
### 3. Choisir les indicateurs [#3-choisir-les-indicateurs]
Clique sur le composant pour ouvrir le **configurateur** puis va dans l'onglet **Indicateurs**. Sélectionne un ou plusieurs indicateurs depuis la liste organisée par source. La barre de recherche permet de filtrer par nom.
**Croiser plusieurs sources** est l'une des forces de FormaPulse. Tu
peux par exemple superposer sur une même courbe : la **charge UA** des
séances, le **RPE** des joueurs et la **distance GPS** parcourue —
pour visualiser instantanément la corrélation entre charge subjective
et charge objective.
### 4. Configurer le composant [#4-configurer-le-composant]
Le configurateur expose plusieurs onglets selon le type de composant :
* **Général** — titre, taille (largeur en colonnes, hauteur en pixels), granularité temporelle (jour / semaine / mois), modes spécifiques (par sportif, par date, collectif…).
* **Indicateurs** — sélection des données.
* **Traitement** — méthode d'agrégation (moyenne, médiane, somme), gestion des valeurs manquantes (ignorer, remplacer par zéro, valeur précédente).
* **Metrics** — colonnes affichées dans les composants tabulaires.
* **Analyses** — moyennes mobiles SMA / EMA, Z-Score, ACWR, zones de sollicitation à la tendance, norme de référence.
* **Règles d'alertes** — pour les composants de type Système d'alerte uniquement.
* **Visuel** — palette de couleurs personnalisable par indicateur.
Le détail de chaque option est documenté dans [Composants graphiques](/docs/dashboards/composants-graphiques).
### 5. Disposer sur la grille [#5-disposer-sur-la-grille]
Glisse-dépose le composant à l'endroit voulu. Saisis un coin pour le redimensionner. Répète l'opération pour ajouter d'autres composants.
### 6. Sauvegarder et partager [#6-sauvegarder-et-partager]
Clique sur **Sauvegarder le dashboard** dans le header. Une modale s'ouvre :
* **Nom du dashboard** — apparaît dans le menu, sous **Dashboards > Mes dashboards**.
* **Utilisateurs autorisés (Staff)** — multi-sélection des membres du staff qui pourront consulter le dashboard.
* **Toggle « Dashboard modifiable »** — autorise les utilisateurs partagés à modifier le dashboard (par défaut : lecture seule).
## Permissions et partage [#permissions-et-partage]
FormaPulse distingue **trois niveaux d'accès** :
| Rôle | Lecture | Édition | Partage / Suppression |
| --------------------------------------- | ------- | ------- | --------------------- |
| **Créateur** (propriétaire) | Oui | Oui | Oui |
| **Viewer en lecture seule** | Oui | Non | Non |
| **Viewer avec édition** (toggle activé) | Oui | Oui | Non |
Le **créateur** garde toujours la main sur le partage et la suppression. Les viewers à qui l'édition est ouverte peuvent modifier la config (ajouter / retirer des composants, changer les indicateurs) mais ne peuvent ni re-partager, ni supprimer le dashboard.
**Cas concret** — un préparateur physique construit un dashboard de suivi de charge :
* il le partage à son **adjoint** en **lecture seule** : l'adjoint consulte mais ne peut pas casser la config,
* il le partage au **coach principal** avec **droits d'édition** : le coach peut affiner les composants au fil de la saison,
* il garde lui-même la maîtrise du partage et de la suppression.
## Croiser les données — le cœur de la puissance [#croiser-les-données--le-cœur-de-la-puissance]
Là où FormaPulse se distingue, c'est sa capacité à **mélanger toutes les sources** dans un même graphique.
Quelques exemples d'analyses croisées qui ne demandent qu'un seul composant :
* **Courbe** charge UA + RPE + distance GPS sur une même série temporelle, pour valider que la charge perçue suit bien la charge mesurée.
* **Composé** double axe : barres de **durée de séance** à gauche, courbe de **score de fatigue** (questionnaire) à droite, pour repérer si la fatigue subjective dérive sur les semaines chargées.
* **Radar** à 6 indicateurs (vitesse max, distance haute intensité, sprints, charge UA, RPE moyen, score de bien-être) pour visualiser un profil de joueur sur la dernière période.
* **Tableau** par sportif avec 8 colonnes croisées (charge, GPS, présences, blessures actives, dernier test) — un compte-rendu hebdomadaire en un clic.
* **Système d'alerte** combinant règles sur la charge, la fatigue subjective et l'historique de blessures pour détecter les joueurs à risque.
Pour la liste exhaustive des indicateurs croisables, voir [Indicateurs disponibles](/docs/dashboards/indicateurs-disponibles).
## Exporter en PDF [#exporter-en-pdf]
Le bouton **Exporter en PDF** du header capture le dashboard tel qu'il est affiché à l'écran (avec les filtres en cours) et génère un PDF prêt à imprimer ou à transmettre.
Astuce : pose tes filtres avant l'export. Si tu changes de joueur dans le filtre **Sportif** puis que tu exports, tu obtiens un rapport individuel personnalisé en deux clics.
## Erreurs à éviter [#erreurs-à-éviter]
* **Trop de composants** — un dashboard de 15 widgets devient illisible. Reste sur 4 à 8 composants clés et crée plusieurs dashboards thématiques plutôt qu'un seul fourre-tout.
* **Filtres incohérents** — si un composant filtre implicitement sur une équipe via ses indicateurs et qu'un autre n'a pas le même contexte, le rapport mélange les niveaux. Explicite-le dans le titre du dashboard ou des composants.
* **Périodes absolues figées** — un dashboard avec une période « du 1er août au 31 décembre » ne se met pas à jour à la rentrée. Privilégie les **périodes glissantes** (« 60 derniers jours ») pour les dashboards récurrents.
* **Oublier le partage** — un dashboard non partagé est invisible au reste du staff. Pense à ouvrir l'accès dès la sauvegarde.
## Aller plus loin [#aller-plus-loin]
# Filtres dynamiques du header (/docs/dashboards/filtres-dynamiques)
## Pourquoi des filtres globaux [#pourquoi-des-filtres-globaux]
Un dashboard FormaPulse n'est pas figé sur une équipe ou un joueur. Les **filtres du header** redéfinissent le contexte de tous les composants en un clic. Tu peux donc :
* construire **un seul** dashboard « Compte-rendu individuel » et l'utiliser pour les 25 joueurs de ton effectif,
* comparer la même semaine sur deux équipes différentes,
* basculer instantanément d'une vue « 60 derniers jours » à une vue « saison complète »,
* exporter un PDF personnalisé par joueur sans rien reconstruire.
## Filtres disponibles dans le header [#filtres-disponibles-dans-le-header]
### Période — 3 modes au choix [#période--3-modes-au-choix]
| Mode | À quoi ça sert |
| ----------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| **Plage de dates** (du / au) | Choisir une période fixe (saison, phase de préparation, cycle de matchs). |
| **Nombre de jours glissants** | Toujours afficher les **30**, **60**, **90**, **180** ou **365 derniers jours** depuis aujourd'hui. Idéal pour un dashboard récurrent. |
| **Date unique** | Centrer le dashboard sur une seule journée (compte-rendu de match, séance précise). |
Pour un dashboard que tu consulteras toutes les semaines, **privilégie
toujours le mode glissant**. Une plage absolue figée demande de la
maintenance manuelle à chaque saison.
### Sportif [#sportif]
Dropdown avec photo qui filtre tous les composants sur **un seul joueur**. C'est la base du **compte-rendu individuel** : tu changes le sportif sélectionné, le dashboard se rejoue intégralement.
### Équipe [#équipe]
Dropdown qui filtre sur une **équipe** de ton club. Combinable avec les autres filtres.
### Type d'événement [#type-dévénement]
Trois options :
* **Tous** — séances + matchs,
* **Séances** uniquement,
* **Matchs** uniquement.
Utile par exemple pour comparer la charge GPS en match vs en entraînement.
### Tags ressources [#tags-ressources]
Multi-sélection des **tags colorés** posés sur tes séances. Permet de cibler une catégorie d'entraînement (ex: « tactique », « récupération », « test physique ») sans changer toute la configuration du dashboard.
### Bouton Recharger [#bouton-recharger]
Force un **re-fetch** complet des données. À utiliser après avoir saisi de nouvelles données (séance, GPS, test) sans avoir à recharger la page entière.
## Comportement de propagation [#comportement-de-propagation]
Les filtres du header s'appliquent **automatiquement à tous les composants** posés sur le canvas. C'est une propagation implicite : tu n'as rien à configurer composant par composant.
**Conséquence pratique** : un dashboard est un **modèle**. Le contenu (charge, GPS, présences, blessures…) reste défini par les composants, mais le **scope** (qui ? quand ?) est piloté depuis le header.
## Cas pratique : le compte-rendu individuel [#cas-pratique--le-compte-rendu-individuel]
L'usage le plus puissant des filtres dynamiques.
### 1. Construire le modèle une fois [#1-construire-le-modèle-une-fois]
Crée un dashboard « Compte-rendu individuel ». Pose les composants utiles pour suivre un joueur :
* une **courbe** charge UA + RPE sur 60 jours,
* un **KPI** distance totale parcourue,
* un **box plot** distribution des sprints par séance,
* un **tableau** des derniers tests physiques,
* un **système d'alerte** sur les seuils de fatigue.
Sélectionne un joueur type pour valider visuellement.
### 2. Le partager au staff [#2-le-partager-au-staff]
Sauvegarde le dashboard, partage-le aux entraîneurs et préparateurs concernés (lecture seule suffit la plupart du temps).
### 3. Rejouer pour n'importe quel joueur [#3-rejouer-pour-nimporte-quel-joueur]
Chaque coach ouvre le dashboard, change le filtre **Sportif** → toutes les courbes, KPI, tableaux et alertes se recalculent **pour le joueur sélectionné**, sans toucher au modèle.
### 4. Exporter en PDF [#4-exporter-en-pdf]
Bouton **Exporter en PDF** du header → un PDF prêt à transmettre, généré pour le joueur courant. Recommencer pour chaque joueur prend quelques secondes.
## Filtres header vs options de composant [#filtres-header-vs-options-de-composant]
Il faut bien distinguer **deux niveaux** de filtrage :
| Niveau | Outil | Effet |
| ----------------------- | -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| **Dashboard** (scope) | Header dynamique | Définit *qui* / *quand* / *quoi* — propagé à tous les composants. |
| **Composant** (analyse) | Configurateur du composant | Définit *comment* la donnée est traitée — granularité, agrégation, valeurs manquantes, moyennes mobiles, Z-Score, ACWR, zones de sollicitation. |
Autrement dit : le header répond à « **sur quel périmètre** ? », le configurateur répond à « **avec quel traitement statistique** ? ». Les options analytiques sont détaillées dans [Composants graphiques](/docs/dashboards/composants-graphiques).
## Mise en cache des résultats [#mise-en-cache-des-résultats]
Les calculs des dashboards sont **mis en cache** pour rester fluides même sur de gros volumes (charge, GPS, tests). Quand tu rouvres un dashboard avec les mêmes filtres que la veille, l'affichage est quasi instantané.
Si tu viens de saisir de nouvelles données (séance, GPS, test,
questionnaire) et qu'elles n'apparaissent pas immédiatement, clique
sur le bouton **Recharger** du header pour forcer le recalcul.
## Aller plus loin [#aller-plus-loin]
# Indicateurs disponibles (/docs/dashboards/indicateurs-disponibles)
## Vue d'ensemble [#vue-densemble]
Un **indicateur** est une donnée mesurable que tu peux tracer dans un composant graphique : la charge d'une séance, une distance GPS, un score de questionnaire, un résultat de test, le nombre de blessures actives…
Tous les indicateurs viennent de **6 sources de données** disponibles dans la sidebar du constructeur. Tu peux en sélectionner **plusieurs** sur un même composant pour croiser les analyses — c'est le cœur de la puissance des dashboards.
## Les 6 sources de données [#les-6-sources-de-données]
### Charge U.A. [#charge-ua]
Indicateurs issus de tes **séances et matchs** :
* **Durée** (en minutes) — durée totale de l'événement,
* **Charge UA** (Unités Arbitraires) — charge calculée = durée × RPE,
* **RPE** — Rating of Perceived Exertion (échelle de Borg, ressenti du joueur).
Filtrable par joueur, équipe, type d'événement (séance / match), tags.
### GPS [#gps]
Indicateurs issus des **séances équipées d'un boîtier GPS** (catalogue dynamique selon ton prestataire et ta configuration) :
* distances parcourues (totale, par zone de vitesse, haute intensité…),
* vitesse maximale, vitesse moyenne,
* nombre de **sprints**, nombre d'**accélérations** et **décélérations**,
* densité d'effort, charge GPS,
* toute métrique additionnelle exposée par ton prestataire (PlayerLoad, etc.).
Filtrable par joueur, équipe, type d'événement, tags.
### Tests physiques [#tests-physiques]
Résultats de tes **tests physiques** — catalogue dynamique selon les tests que tu as définis :
* tests classiques (1RM, VMA, sprints sur distance, CMJ, T-test…),
* tests **VBT** (vélocité, puissance, force),
* tests spécifiques que tu as créés.
Chaque test expose ses propres unités (kg, km/h, cm, s, m, W, N, m/s).
### Questionnaires [#questionnaires]
Réponses **numériques** aux questionnaires que tu fais remplir aux joueurs :
* bien-être (sommeil, fatigue, stress, humeur, courbatures…),
* douleur, fraîcheur,
* tout item numérique custom que tu as défini.
Le nom de l'indicateur correspond au libellé de la question.
### Blessures [#blessures]
* **Nombre de blessures actives** par jour pour le périmètre filtré (joueur, équipe).
Permet de superposer instantanément l'historique de blessures sur une courbe de charge ou de fatigue.
### Formules [#formules]
Indicateurs **calculés** à partir des autres sources, créés via le **gestionnaire de formules**. Exemples :
* ratio charge / fraîcheur,
* moyenne pondérée de plusieurs items de questionnaire,
* score composite GPS personnalisé.
Une fois la formule créée, elle se sélectionne comme n'importe quel autre indicateur dans n'importe quel composant.
## Croiser plusieurs indicateurs sur un même composant [#croiser-plusieurs-indicateurs-sur-un-même-composant]
C'est ce qui distingue un dashboard d'un simple graphique unique.
### Exemples concrets [#exemples-concrets]
**1. Charge subjective vs charge objective**
Une **courbe** avec : charge UA + RPE + distance GPS sur 60 jours. Tu visualises immédiatement si la charge perçue suit la charge mesurée — utile pour repérer les joueurs qui sous-estiment ou surestiment leur ressenti.
**2. Suivi fatigue/charge**
Un **composé** double axe : barres de **durée de séance** à gauche, courbe de **score de fatigue** (questionnaire) à droite. La dérive de la fatigue sur les semaines chargées saute aux yeux.
**3. Profil de joueur**
Un **radar** à 6 indicateurs (vitesse max, distance haute intensité, sprints, charge UA moyenne, RPE moyen, score de bien-être). Une signature visuelle d'un joueur sur la dernière période, comparable d'une période à l'autre.
**4. Compte-rendu hebdomadaire en un tableau**
Un **tableau par sportif** avec 8 colonnes croisées : charge UA, distance GPS totale, sprints, présences, dernier RPE, dernier score de fatigue, blessures actives, dernier résultat de test. Une vue d'ensemble pour la réunion staff hebdomadaire.
**5. Système d'alerte multi-source**
Un composant **Système d'alerte** qui combine des règles sur :
* la charge (Z-Score > 2),
* le score de fatigue (en zone rouge depuis 3 jours),
* l'historique de blessures (blessure récente sur la même zone).
Tu obtiens un score de risque par joueur, mis à jour en temps réel.
### Limites par type de composant [#limites-par-type-de-composant]
Tous les composants n'acceptent pas le même nombre d'indicateurs :
| Composant | Min | Max |
| ------------------------- | --- | --- |
| Courbe, Histogramme | 1 | 10 |
| Aire | 1 | 5 |
| Composé | 2 | 10 |
| Nuage de points (scatter) | 2 | 2 |
| Radar | 3 | 8 |
| Box plot | 1 | 5 |
| Jauge, KPI | 1 | 1 |
| Tableau | 1 | 20 |
| Système d'alerte | 1 | 20 |
| Texte | 0 | 0 |
Le configurateur t'avertit si tu sors de ces bornes (par exemple si tu n'as qu'un seul indicateur sur un radar).
## Couleurs et identification [#couleurs-et-identification]
Chaque indicateur tracé reçoit une **couleur unique** issue de la palette FormaPulse, modifiable dans l'onglet **Visuel** du configurateur. La légende reprend le nom de l'indicateur et sa source pour éviter toute confusion quand tu en croises plusieurs.
Certains indicateurs **réservés** (charge, blessures, zone de
douleur) sont protégés des collisions de noms entre sources. Tu peux
donc créer un indicateur custom appelé « charge musculaire » sans
qu'il interfère avec la charge UA standard.
## Aller plus loin [#aller-plus-loin]
# Blocs réutilisables (/docs/creation-seances/blocs-reutilisables)
## Vue d'ensemble [#vue-densemble]
Un **bloc** est un élément que tu enregistres une fois pour le réutiliser dans plusieurs séances. Trois types de blocs existent dans FormaPulse :
* **Bloc séance** : un ensemble de **sections** d'une séance (échauffement, ateliers, etc.) que tu sélectionnes via des **checkboxes** dans la structure de la séance.
* **Bloc terrain** *(type interne « exercice »)* : une configuration d'éléments (images, matériels, structures) posés sur le **canvas terrain** d'un exercice.
* **Bloc libre** : une configuration d'éléments posés sur le **canvas libre**, indépendante d'un exercice terrain.
## Quand utiliser un bloc plutôt qu'un exercice [#quand-utiliser-un-bloc-plutôt-quun-exercice]
| Situation | Préférence |
| -------------------------------------------------------------------------- | ------------ |
| Un exercice unique qui revient parfois | Exercice |
| Un enchaînement de sections toujours identique (ex: échauffement standard) | Bloc séance |
| Une configuration d'éléments terrain qui revient | Bloc terrain |
| Un schéma / contenu créé sur le canvas libre à réutiliser tel quel | Bloc libre |
## Étape 1 — Toujours commencer par « Outils » [#étape-1--toujours-commencer-par--outils-]
Quel que soit le type de bloc, tu démarres depuis le panneau **Outils** dans le créateur de séance :
1. Ouvre le créateur (**Création > Créateur**).
2. Clique sur **Outils** dans la barre.
3. Selon le mode dans lequel tu te trouves, le bouton affiche :
* **« Créer bloc séance »** quand tu es sur la structure de la séance.
* **« Créer bloc spécifique »** quand tu es sur un canvas terrain (mode exercice) ou sur le canvas libre.
4. Clique dessus. Tu passes en **mode sélection** : un bandeau vert apparaît en haut.
La suite dépend du type de bloc.
***
## Créer un bloc séance [#créer-un-bloc-séance]
**Contexte** : tu es sur la structure de séance (mode par défaut du créateur).
### Sélectionner les sections [#sélectionner-les-sections]
Une fois en mode sélection, une **checkbox apparaît à gauche de chaque section** de ta séance. Coche toutes les sections que tu veux inclure dans le bloc.
Le bandeau vert en haut affiche en temps réel :
> *« X section(s) sélectionnée(s) (Y série(s)) »*
### Valider la sélection [#valider-la-sélection]
Clique sur **Créer le bloc** dans le bandeau vert. Une fenêtre **« Créer un bloc réutilisable »** s'ouvre.
### Renseigner les informations [#renseigner-les-informations]
| Champ | Description |
| ------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
| **Nom du bloc** | Ex : *« Échauffement standard »*, *« Circuit cardio »* |
| **Type de bloc** | Préselectionné sur **Bloc séance** (non modifiable) |
| **Catégorie** *(optionnel)* | Choisis une catégorie existante ou crée-en une nouvelle. C'est elle qui détermine le rangement du bloc dans **Mes blocs**. |
Récapitulatif affiché : nombre de sections sélectionnées + nombre de séries incluses.
### Enregistrer [#enregistrer]
Clique sur **Créer le bloc**. Le bloc est sauvegardé et disponible dans **Mes blocs** sous l'onglet **Séance**.
***
## Créer un bloc terrain ou libre [#créer-un-bloc-terrain-ou-libre]
**Contexte** : tu es sur un **canvas** — soit le canvas terrain d'un exercice (mode terrain), soit le canvas libre.
### Sélectionner les éléments sur le canvas [#sélectionner-les-éléments-sur-le-canvas]
Avant de cliquer dans Outils, **sélectionne d'abord les éléments** que tu veux inclure dans le bloc directement sur le canvas (images, matériels, structures, dessins). Tu peux sélectionner plusieurs éléments d'un coup avec un rectangle de sélection.
### Lancer la création [#lancer-la-création]
Ouvre **Outils** et clique sur **Créer bloc spécifique**. Le bouton affiche le nombre d'éléments sélectionnés :
> *« Créer un bloc (N) »*
Si aucun élément n'est sélectionné, le bouton est grisé.
### Renseigner les informations [#renseigner-les-informations-1]
La même fenêtre **« Créer un bloc réutilisable »** s'ouvre :
| Champ | Description |
| ------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
| **Nom du bloc** | Ex : *« Plot couloir 5m »*, *« Circuit conduite de balle »* |
| **Type de bloc** | Préselectionné sur **Bloc terrain** (depuis un canvas exercice) ou **Bloc libre** (depuis le canvas libre) — non modifiable |
| **Catégorie** *(optionnel)* | Choisis une catégorie existante ou crée-en une nouvelle |
Récapitulatif affiché : *« Éléments sélectionnés : N »*.
### Enregistrer [#enregistrer-1]
Clique sur **Créer le bloc**. Le bloc est sauvegardé et disponible dans **Mes blocs** sous l'onglet **Exercice** ou **Libre** selon le contexte.
***
## Réutiliser un bloc [#réutiliser-un-bloc]
À chaque endroit pertinent du créateur, un panneau **Mes blocs** est disponible :
* Dans la **structure de séance** : bouton **Blocs** à côté du bouton « Ajouter une section ». Onglet **Séance** disponible.
* Sur un **canvas terrain** : bouton **Mes blocs** dans le header du canvas. Onglet **Exercice** disponible.
* Sur le **canvas libre** : bouton **Mes blocs** dans le header du canvas. Onglet **Libre** disponible.
Dans le popover :
* Recherche par nom ou catégorie : *« Rechercher (nom ou catégorie)… »*
* Affichage groupé par catégorie (accordéon)
* Pour chaque bloc : nom + métadonnées (*« X sections · Y séries »* ou *« X éléments »*)
* Lien **Tous mes blocs** en bas du popover → ouvre la bibliothèque complète
Clique sur un bloc pour l'insérer. Le bloc inséré devient **indépendant** : tu peux l'adapter sans impacter le bloc d'origine.
## Bibliothèque complète [#bibliothèque-complète]
URL : **/creation/blocs** — accessible aussi via le lien **Tous mes blocs** dans le popover.
Titre de la page : **Mes blocs réutilisables**.
Tu y retrouves tous tes blocs avec :
* **Onglets** : *Tous*, *Séance*, *Exercice*, *Libre*
* **Recherche** : *« Rechercher un bloc… »*
* **Filtre catégorie** : *Toutes les catégories* par défaut, ou filtre sur une catégorie précise
* **Gérer les catégories** : bouton qui ouvre la fenêtre de gestion (renommer, changer la couleur, supprimer)
* Sur chaque bloc : actions **Modifier** et **Supprimer**
## Erreurs à éviter [#erreurs-à-éviter]
* **Bloc trop figé** : si ton bloc échauffement contient les 8 mêmes exercices à chaque fois, le staff finit par s'ennuyer. Garde 2-3 variantes.
* **Modifier un bloc et s'attendre à ce que ça impacte les séances passées** : non, les blocs insérés deviennent indépendants. Pour propager une modification, recrée les séances concernées.
* **Cliquer sur « Créer bloc spécifique » sans avoir sélectionné d'éléments sur le canvas** : le bouton reste grisé et le bloc ne peut pas être créé.
## Aller plus loin [#aller-plus-loin]
# Créer un exercice (/docs/creation-seances/creer-exercices)
## Vue d'ensemble [#vue-densemble]
L'exercice est l'**unité de base** de tes séances : un objectif, des consignes, un schéma, des variables. Bien construit, il est réutilisable des dizaines de fois et adaptable à différents contextes.
## Ce que contient un exercice [#ce-que-contient-un-exercice]
* **Titre** explicite (ex: « Conservation 4 contre 4 + 2 »)
* **Catégorie** : technique, tactique, physique, mental, transversal
* **Objectifs** : 1 à 3 objectifs prioritaires
* **Consignes** : règles, contraintes, scoring
* **Schéma terrain** : éditeur graphique intégré (joueurs, plots, ballons, déplacements)
* **Variables** : paramètres ajustables (taille du terrain, nombre de touches, durée…)
## Étapes [#étapes]
### 1. Lancer la création [#1-lancer-la-création]
Va sur **Création > Créateur exercice**, remplis ta fiche, puis clique sur **Enregistrer**.
### 2. Renseigner l'identité [#2-renseigner-lidentité]
Titre, catégorie, objectifs et durée moyenne.
### 3. Créer ton exercice [#3-créer-ton-exercice]
Utilise l'éditeur visuel pour construire ton exercice : place les **joueurs**, **plots**, **ballons** et les **flèches de déplacement** sur le terrain. Tu peux exporter le schéma comme image pour tes documents papier.
### 4. Enregistrer [#4-enregistrer]
L'exercice rejoint ta bibliothèque et est immédiatement utilisable dans tes séances.
Tu peux **dupliquer** un exercice existant pour en créer une variante (par
exemple, version surdimensionnée pour les gardiens). Les deux versions
restent indépendantes.
## Importer un exercice [#importer-un-exercice]
Tu peux aussi créer un exercice à partir d'un **média existant** plutôt que de le dessiner sur le canvas. Le processus est **exactement le même** que pour la création — tu renseignes l'identité (titre, catégorie, objectifs, consignes), les variables, etc. — sauf qu'à l'étape **« Créer ton exercice »**, tu remplaces l'éditeur visuel par un import.
Tu peux importer :
* une **image** (schéma, photo, capture d'écran) à la place du canvas,
* une **vidéo** d'illustration de l'exercice.
L'exercice rejoint ta bibliothèque comme n'importe quel autre exercice : il est dupliquable, modifiable et réutilisable dans tes séances.
## Erreurs à éviter [#erreurs-à-éviter]
* **Titre vague** : « Jeu réduit » ne dit rien. Préfère « Conservation 4c4 + 2 appuis ».
* **Pas d'objectifs** : un exercice sans objectif clair est vite abandonné par le staff. Force-toi à en lister 1 à 3.
* **Schéma flou** : un schéma peu lisible perd toute valeur de transmission. Prends 2 minutes de plus.
## Aller plus loin [#aller-plus-loin]
# Créateurs de séances et d'exercices (/docs/creation-seances/creer-seance-exercice)
## Vue d'ensemble [#vue-densemble]
FormaPulse propose deux **créateurs** complémentaires pour bâtir tes contenus pédagogiques :
* le **créateur de séance** — assemble plusieurs exercices et blocs en un enchaînement logique,
* le **créateur d'exercice** — décrit une situation précise (objectifs, consignes, schéma sur le terrain, variables).
Comprendre comment ils s'articulent te permet de construire une **bibliothèque réutilisable** plutôt que de tout recréer à chaque séance.
## Comment ça s'articule [#comment-ça-sarticule]
```
Séance
├── Bloc « Échauffement » ← blocs réutilisables
│ ├── Exercice 1
│ └── Exercice 2
├── Bloc « Situation tactique »
│ └── Exercice 3 ← exercices créés une fois, utilisés partout
└── Bloc « Retour au calme »
└── Exercice 4
```
Chaque **exercice** vit dans ta bibliothèque et peut être réutilisé dans plusieurs séances. Chaque **bloc** peut lui aussi être enregistré comme bloc réutilisable.
## Étapes [#étapes]
### 1. Créer tes exercices d'abord [#1-créer-tes-exercices-dabord]
Avant de bâtir une séance, prends 30 minutes pour créer tes 10-15 exercices types. Tu les retrouveras ensuite à la volée. → [Créer un exercice](/docs/creation-seances/creer-exercices)
### 2. Construire la séance [#2-construire-la-séance]
Depuis **Création > Créateur séance**, ajoute des blocs et glisse-dépose tes exercices, puis clique sur **Créer**.
### 3. Sauvegarder en bloc réutilisable *(optionnel)* [#3-sauvegarder-en-bloc-réutilisable-optionnel]
Si tu réutilises souvent la même phase d'échauffement, enregistre-la comme **bloc**. → [Blocs réutilisables](/docs/creation-seances/blocs-reutilisables)
## Erreurs à éviter [#erreurs-à-éviter]
* **Recréer un exercice à chaque séance** : utilise ta bibliothèque, ça paye à long terme.
* **Mélanger séance et exercice** : un exercice unitaire reste un exercice. Une séance assemble plusieurs exercices.
* **Bibliothèque trop fournie sans tags** : sans étiquettes (objectif, intensité, durée), retrouver le bon exercice devient impossible.
## Aller plus loin [#aller-plus-loin]
# Créer une séance (/docs/creation-seances/creer-une-seance)
## Vue d'ensemble [#vue-densemble]
Une séance FormaPulse est un **enchaînement de blocs** : échauffement, exercice tactique, jeu réduit, retour au calme… Chaque bloc contient des **exercices** issus de ta bibliothèque, avec des paramètres (durée, intensité, charge GPS prévisionnelle).
Tu peux construire une séance de zéro, ou partir d'une **trame** (modèle réutilisable) que tu adapteras.
**Aucun prérequis** : FormaPulse propose nativement plus de **2000 exercices**
et **250 méthodes** prêts à l'emploi. Tu peux créer ta première séance
immédiatement, sans avoir à alimenter ta bibliothèque au préalable.
## Étapes [#étapes]
### 1. Lancer la création [#1-lancer-la-création]
Depuis **Création > Créateur séance**, ouvre l'éditeur de séance.
### 2. Configurer les détails, l'équipe, les joueurs et la personnalisation [#2-configurer-les-détails-léquipe-les-joueurs-et-la-personnalisation]
C'est ici que tu paramètres tout ce qui définit la séance. Tu peux partir de trois points de départ :
* **Vierge** — tu construis tout
* **À partir d'une trame** — tu pars d'un modèle pré-rempli
* **Dupliquer une séance existante** — tu copies une séance déjà créée
Puis tu renseignes :
| Champ | Description |
| ---------------- | ---------------------------------------------------------------------------------- |
| Titre | Nom affiché dans le calendrier et l'app joueur |
| Description | Précisions sur l'intention de la séance |
| Objectif | Tactique, physique, technique, mental |
| Équipe | L'équipe destinataire |
| Joueurs | Sélection des sportifs concernés (toute l'équipe ou un sous-groupe) |
| Date | *(facultatif à ce stade — tu pourras placer la séance plus tard sur un événement)* |
| Personnalisation | Couleurs d'en-tête pour l'export PDF |
| Durée totale | Calculée automatiquement à partir des exercices |
### 3. Enregistrer [#3-enregistrer]
Clique sur **Créer**. La séance est immédiatement **enregistrée** et apparaît dans la liste **Séances**. Tu peux ensuite l'utiliser dans un **événement** pour la transmettre aux sportifs concernés.
Tu peux à tout moment **dupliquer une séance** existante pour en créer une
nouvelle similaire. Très utile pour les séances récurrentes (ex: même
échauffement chaque mardi).
## Étapes suivantes [#étapes-suivantes]
1. **Créer un événement** dans le calendrier de l'équipe et y rattacher la séance pour la transmettre aux sportifs.
2. **Partager** la séance aux joueurs (composition, vidéos d'exercices, charge prévisionnelle…).
## Erreurs à éviter [#erreurs-à-éviter]
* **Oublier de préciser l'objectif** : sans objectif, ta séance ne sera pas correctement classée dans les statistiques (charge tactique vs physique).
* **Charge GPS prévisionnelle incohérente** : si tu prévois 3000 m de course haute intensité sur 30 min, c'est probablement irréaliste. Compare avec tes séances passées avant de valider.
* **Ne pas dupliquer** : si tu refais des séances similaires, n'en recrée pas une de zéro à chaque fois — utilise la **duplication** ou les **trames**.
## Aller plus loin [#aller-plus-loin]
# Individualiser l'endurance (/docs/creation-seances/individualiser-endurance)
## Vue d'ensemble [#vue-densemble]
L'**individualisation** de l'endurance consiste à proposer à chaque joueur des intensités cibles **adaptées à sa VMA** (ou à un autre indicateur de référence). Sur une même séance d'intermittent, le joueur A court à 14 km/h pendant que le joueur B court à 16 km/h — chacun à 90% de sa propre capacité.
## Prérequis [#prérequis]
* Chaque joueur dispose d'une **VMA récente** dans sa fiche (idéalement \< 6 mois). → [Faire passer un test physique](/docs/joueurs/tests-physiques)
* L'exercice utilisé contient une **variable** ou un **mapper** lié à la VMA (ex: `vitesse_cible = vma * 0.9`).
## Étapes [#étapes]
### 1. Configurer le mapper d'individualisation [#1-configurer-le-mapper-dindividualisation]
Sur l'exercice (ex: `15-15` ou `30-30`), définis le mapper qui calcule la cible : `vitesse_cible_kmh = vma_joueur * pourcentage_cible / 100`.
### 2. Préciser le pourcentage cible [#2-préciser-le-pourcentage-cible]
Saisis la valeur souhaitée (ex: 90% pour du seuil, 105% pour du VO2max). C'est la **seule valeur** à modifier si tu veux changer l'intensité globale.
### 3. Insérer dans la séance [#3-insérer-dans-la-séance]
Quand tu utilises l'exercice dans une séance, FormaPulse calcule **automatiquement** la cible pour chaque joueur affilié à l'équipe.
### 4. Distribuer aux joueurs [#4-distribuer-aux-joueurs]
Via l'app joueur, chaque joueur voit **sa** consigne personnalisée (ex: « Cours à 14,4 km/h pendant 15 secondes »).
## Erreurs à éviter [#erreurs-à-éviter]
* **Ne pas avoir créé un test VMA sur l'exercice cible** : utiliser un exercice « Course » qui n'est pas considéré comme un test ne permet pas l'individualisation. Le sportif doit avoir un **test VMA** rattaché à l'exercice utilisé dans la séance, sinon FormaPulse n'a pas de référence pour calculer sa cible personnalisée.
## Aller plus loin [#aller-plus-loin]
# Mappers et variables personnalisés (/docs/creation-seances/mappers-variables)
## Vue d'ensemble [#vue-densemble]
Un **mapper** est une **fiche de paramètres** que tu attaches à un exercice ou à une séance. Il contient un ensemble de **variables** (charge, séries, répétitions, %VMA, RPE, distance, vitesse, hauteur de saut…) que tu peux saisir, individualiser par sportif, ou faire calculer automatiquement.
Concrètement, un mapper te permet de :
* prescrire une charge en pourcentage (par exemple **80 % du 1RM**) qui devient automatiquement une **charge en kg** propre à chaque joueur,
* prescrire une vitesse en pourcentage de VMA qui devient une **vitesse en km/h** propre à chaque joueur,
* faire calculer automatiquement le **tonnage**, le **1RM estimé** (formule Epley), la **perte de vitesse VBT**, le **RSI**, etc., dès que les variables nécessaires sont saisies.
## Étapes — créer un mapper [#étapes--créer-un-mapper]
### 1. Aller sur la page Mappers [#1-aller-sur-la-page-mappers]
Depuis le menu, va sur **Création > Mappers**, puis lance la création d'un nouveau mapper.
### 2. Nommer le mapper et choisir une catégorie [#2-nommer-le-mapper-et-choisir-une-catégorie]
Donne un nom explicite (par exemple « Force max — squat ») et sélectionne (ou crée) une **catégorie** pour le ranger.
### 3. Sélectionner les variables [#3-sélectionner-les-variables]
La bibliothèque de variables est organisée en grandes catégories :
* **Volume** — séries, répétitions, charge, %1RM, tonnage, distance…
* **Intensité** — RPE, RIR, vitesse VBT, fréquence cardiaque, %VMA, watts…
* **Tempo** — phases excentrique/concentrique, isométrie, modalité de contraction, TST…
* **Récupération** — temps de récupération inter-série, temps de travail/récup en circuit, ratios…
* **Pliométrie** — hauteur de saut, temps de contact, RSI, distance/temps/vitesse de sprint…
* **Organisation** — type d'organisation (station, circuit, superset, EMOM, AMRAP…), latéralité, matériel…
* **Qualitatif** — critère technique, commentaire coach, vidéo explicative…
Tu **glisses-déposes** les variables qui t'intéressent dans la zone du mapper. Tu peux aussi en créer une nouvelle de toutes pièces avec son nom, son type (nombre, texte…) et son unité.
### 4. Vérifier les dépendances [#4-vérifier-les-dépendances]
Pour les variables calculées ou individualisées, FormaPulse t'affiche **les variables nécessaires** (« Nécessite : … »). Si toutes les dépendances sont présentes, une coche verte apparaît : **« Variables minimales présentes, calcul automatique possible »**.
### 5. Définir les séries (optionnel) [#5-définir-les-séries-optionnel]
Tu peux pré-remplir des séries types (par exemple 4×6 à 80 % du 1RM avec 2 min de récup) qui seront proposées par défaut quand le mapper sera utilisé.
### 6. Enregistrer [#6-enregistrer]
Le mapper rejoint ta bibliothèque. Tu pourras l'attacher à n'importe quel exercice ou séance.
## Variables individualisées par un test [#variables-individualisées-par-un-test]
Certaines variables prennent une **valeur en pourcentage** que FormaPulse traduit automatiquement en **valeur absolue** propre à chaque sportif, en utilisant un **test de référence** rattaché à sa fiche.
| Variable | Test de référence | Calcul automatique |
| -------------------- | --------------------------- | ---------------------------------------------- |
| **% 1RM** | 1RM (test de poids) | %1RM × 1RM du sportif → charge en kg |
| **% Poids de corps** | Anthropométrie (poids) | %PDC × poids du sportif → charge en kg |
| **% VMA** | Test VMA | %VMA × VMA du sportif → vitesse en km/h |
| **% FCmax** | Test FCmax | %FCmax × FCmax du sportif → FC cible en bpm |
| **% PeakForce** | Test de force | %PeakForce × force max du sportif → force en N |
| **% Vmax** | Test de vitesse d'exécution | %Vmax × Vmax du sportif → vitesse cible |
| **Distance** | Test VMA | %VMA × VMA × durée de travail → distance en m |
| **Hauteur de saut** | Test de hauteur de saut | Hauteur de référence du sportif (cm) |
| **Temps sprint** | Test de temps de sprint | Temps de référence du sportif |
**Comment ça marche** : tu prescris la **valeur en %** (par exemple 80 % du 1RM) au niveau de la séance ou du programme. Quand le sportif accède à sa séance, FormaPulse va chercher son **test de référence** le plus récent et calcule sa cible personnalisée.
Pour qu'une variable individualisée fonctionne, le sportif doit avoir
un **test du bon type récent** dans sa fiche. Sans ce test, le calcul
ne se fait pas et la cible reste vide. → [Variable du mapper qui ne se
calcule pas automatiquement](/docs/erreurs-frequentes/variable-mapper-non-calculee)
## Variables calculées à partir d'autres variables [#variables-calculées-à-partir-dautres-variables]
Certaines variables sont **calculées automatiquement** dès que les variables sources nécessaires sont saisies — sans intervention manuelle. Voici les principales :
| Variable | Variables nécessaires | Calcul |
| --------------------------------- | ------------------------------------------ | ---------------------------------------- |
| **1RM estimé** | Charge + Répétitions | Charge × (1 + Reps / 30) — formule Epley |
| **Tonnage** | Charge + Répétitions (× Séries si présent) | Charge × Reps × Séries |
| **Tonnage relatif** | Tonnage + 1RM estimé | Tonnage / 1RM estimé |
| **INOL** | Répétitions + %1RM | Reps / (100 − %1RM) |
| **Volume de charge (NL)** | Répétitions (× Séries si présent) | Total des répétitions effectuées |
| **TST (temps sous tension)** | Tempo (ou temps iso) + Reps + Séries | (Tempo + Temps iso) × Reps × Séries |
| **Perte de vitesse VBT** | Vitesse 1ʳᵉ rép + Vitesse dernière rép | (V1ʳᵉ − Vdernière) / V1ʳᵉ × 100 |
| **% FCmax** | Fréquence cardiaque mesurée | FC / FCmax estimée × 100 |
| **Ratio Travail:Repos** | Temps travail + Temps récup (circuit) | Temps travail / Temps récup |
| **RSI (Reactive Strength Index)** | Hauteur de saut + Temps de contact au sol | Hauteur (m) / Temps contact (s) |
**Comment ça marche** : tu ajoutes la variable calculée à ton mapper ET tu ajoutes les variables sources nécessaires. Dès que tu (ou le sportif) saisis les valeurs des variables sources, la variable calculée s'affiche automatiquement.
Si une variable source manque, le calcul reste vide. C'est volontaire pour ne pas afficher de valeur tronquée.
Certaines variables calculées acceptent des **dépendances alternatives**
(par exemple Reps OU Reps/côté OU Reps droite + Reps gauche). FormaPulse
prend la première combinaison disponible.
## Exemples concrets [#exemples-concrets]
### Exemple terrain — % VMA pour un intermittent [#exemple-terrain---vma-pour-un-intermittent]
Tu crées un mapper « Intermittent VMA » avec **% VMA**, **durée de travail**, **récupération** et **séries**. Tu prescris 105 % de VMA pendant 15 s avec 15 s de récup, 4 séries de 6 répétitions. Chaque joueur reçoit dans son app sa **vitesse cible en km/h** (ex: Joueur A à 16,8 km/h, Joueur B à 15,7 km/h selon leur VMA respective).
### Exemple musculation — % 1RM pour un squat [#exemple-musculation---1rm-pour-un-squat]
Tu crées un mapper « Force max squat » avec **% 1RM**, **séries**, **répétitions**, **récupération**, **RPE**. Tu prescris 4×6 à 80 % du 1RM. Chaque joueur reçoit dans son app sa **charge en kg** calculée à partir de son 1RM (ex: 100 kg pour un 1RM à 125 kg). FormaPulse calcule aussi automatiquement le **tonnage** post-séance.
### Exemple pliométrie — RSI calculé [#exemple-pliométrie--rsi-calculé]
Tu crées un mapper « Drop jump » avec **hauteur de saut** et **temps de contact au sol**. Le sportif (ou le coach) saisit les deux mesures. FormaPulse calcule automatiquement le **RSI** (Reactive Strength Index) sans intervention.
## Erreurs à éviter [#erreurs-à-éviter]
* **Trop de variables** : un mapper de 15 variables est illisible. Reste sur les 4-6 paramètres clés pour ton objectif.
* **Variable individualisée sans test sur la fiche du sportif** : le calcul ne se fait pas. Vérifie que les sportifs ont un test du bon type avant de lancer la séance.
* **Variables calculées sans leurs dépendances** : si tu ajoutes « Tonnage » mais pas « Charge » dans ton mapper, le tonnage ne pourra jamais se calculer.
* **Mélanger les unités** : un test de VMA en km/h et une variable cible en m/s ne s'alimentent pas correctement. Reste cohérent.
## Aller plus loin [#aller-plus-loin]
# Je ne parviens pas à me connecter (/docs/erreurs-frequentes/connexion-impossible)
## Symptôme [#symptôme]
Tu saisis tes identifiants mais la connexion échoue avec un message du type :
* *« Email ou mot de passe incorrect »*
* *« Compte temporairement bloqué »*
* *« Aucun compte associé à cet email »*
## Causes possibles [#causes-possibles]
### 1. Mot de passe oublié [#1-mot-de-passe-oublié]
Lance la procédure de **réinitialisation** depuis l'écran de connexion. Tu reçois un email avec un lien valable 10 minutes.
### 2. Email saisi avec une faute [#2-email-saisi-avec-une-faute]
Vérifie l'orthographe (espaces, tirets, points). Les emails ne sont **pas sensibles à la casse** mais une faute de frappe bloque tout.
### 3. Compte multi-comptes [#3-compte-multi-comptes]
Si tu as plusieurs comptes liés, vérifie que tu utilises l'**email** et le **mot de passe** du compte cible. → [Multi-comptes](/docs/compte-abonnement/multi-comptes)
### 4. Trop de tentatives [#4-trop-de-tentatives]
Après plusieurs échecs de connexion (3 tentatives), le compte est bloqué temporairement par souci de sécurité (2 heures). Attends puis réessaie, ou [contacte-nous](mailto:formapulse@formafoot.fr?subject=R%C3%A9activation%20de%20mon%20compte%20FormaPulse) pour qu'on réactive ton compte.
## Si rien ne fonctionne [#si-rien-ne-fonctionne]
# Je ne vois pas mes données dans mes cycles planifiés (/docs/erreurs-frequentes/donnees-cycles-planifies-vides)
## Symptôme [#symptôme]
Tu as planifié un **cycle d'analyse** (collectif ou individuel) sur le calendrier, mais quand tu l'ouvres :
* aucune donnée joueur ne remonte,
* les graphiques sont vides,
* l'équipe ou les joueurs concernés n'apparaissent pas dans le cycle.
## À comprendre avant tout [#à-comprendre-avant-tout]
Un **cycle est un événement à part entière**, au même titre qu'une séance ou un match. Il fonctionne de la même façon : il faut **explicitement rattacher** ce que le cycle doit analyser.
Créer un cycle ne suffit pas. Il faut aller **à l'intérieur du cycle** et glisser :
* une **équipe** si c'est un **cycle collectif**,
* un ou plusieurs **joueurs** si c'est un **cycle individuel**.
Sans ce rattachement, le cycle reste une coquille vide et aucune donnée ne peut être agrégée.
## Causes possibles [#causes-possibles]
### 1. Aucune équipe / aucun joueur n'a été glissé dans le cycle [#1-aucune-équipe--aucun-joueur-na-été-glissé-dans-le-cycle]
C'est la cause la plus fréquente. Le cycle a été créé et planifié, mais on a oublié l'étape de **glisser-déposer** l'équipe (cycle collectif) ou les joueurs (cycle individuel) à l'intérieur du cycle.
→ Ouvre le cycle depuis le calendrier, puis glisse l'équipe ou les joueurs concernés dans la zone dédiée du cycle.
### 2. Cycle collectif sans les joueurs rattachés [#2-cycle-collectif-sans-les-joueurs-rattachés]
Pour un **cycle collectif**, glisser **uniquement l'équipe ne suffit pas** pour récupérer les valeurs individuelles des joueurs.
Pour que les données joueur remontent dans un cycle collectif, il faut que **les joueurs soient également présents dans le cycle**, en plus de l'équipe.
→ Ouvre le cycle, vérifie que l'équipe est bien rattachée **et** que les joueurs de cette équipe sont également glissés à l'intérieur.
### 3. Mauvais type de cycle [#3-mauvais-type-de-cycle]
Tu as créé un cycle **individuel** alors que tu voulais analyser une équipe (ou l'inverse). Le type de cycle conditionne ce que tu peux y glisser.
→ Vérifie le type du cycle. Si besoin, supprime-le et recrée-le avec le bon type.
### 4. Période du cycle sans données [#4-période-du-cycle-sans-données]
Le cycle couvre une période sur laquelle **aucune séance / match / test** n'a généré de données pour les joueurs ou l'équipe rattachés.
→ Vérifie qu'il y a bien des événements avec des données (GPS, charge, tests…) dans la fenêtre temporelle du cycle.
## Liste de contrôle [#liste-de-contrôle]
**Cycle collectif :**
* ✅ L'**équipe** est glissée dans le cycle
* ✅ Les **joueurs** de l'équipe sont également glissés dans le cycle
* ✅ Des données existent sur la période du cycle
**Cycle individuel :**
* ✅ Au moins **un joueur** est glissé dans le cycle
* ✅ Des données existent pour ces joueurs sur la période du cycle
## Si rien ne fonctionne [#si-rien-ne-fonctionne]
# Mes données GPS ne s'importent pas (/docs/erreurs-frequentes/donnees-gps-non-importees)
## Symptôme [#symptôme]
Tes données GPS n'arrivent pas correctement dans FormaPulse. Deux contextes possibles :
* **Import manuel** d'un fichier CSV / Excel exporté depuis ton GPS — l'import est rejeté ou les données n'apparaissent pas dans la séance.
* **Synchronisation automatique via API** (Catapult, STATSports, Polar Team Pro, GPSports…) — les activités sont récupérées mais **rattachées à la mauvaise séance**, ou aucune séance candidate n'est détectée.
***
## Cas 1 — Import manuel d'un fichier (CSV / Excel) [#cas-1--import-manuel-dun-fichier-csv--excel]
Tu as exporté un fichier depuis ton GPS et tu l'importes via **Statistiques > GPS > Importer**.
### 1. Format du fichier non supporté [#1-format-du-fichier-non-supporté]
FormaPulse accepte **CSV**, **Excel** et certains formats propriétaires. Vérifie que ton fichier n'est pas en `.json` ou `.xml` non standard. Re-exporte au format CSV si possible.
### 2. Encodage du fichier [#2-encodage-du-fichier]
Un fichier exporté avec un mauvais encodage (UTF-16, Windows-1252) peut être illisible. Ouvre-le dans Excel et **enregistre-le sous** au format **CSV UTF-8**.
### 3. Mapping des joueurs incomplet [#3-mapping-des-joueurs-incomplet]
À la première utilisation d'un GPS, FormaPulse demande la correspondance entre les noms du fichier et les joueurs FormaPulse. Si certains joueurs n'ont pas été mappés, leurs données n'apparaîtront pas. Va dans **Paramètres > GPS > Mapping** pour compléter.
### 4. Date du fichier ≠ date de la séance [#4-date-du-fichier--date-de-la-séance]
FormaPulse rattache automatiquement le fichier à la séance la plus proche. Si l'écart est trop grand (> 24h), aucune séance n'est trouvée. Vérifie la date du fichier.
### 5. Doublon détecté [#5-doublon-détecté]
Si le fichier a déjà été importé, FormaPulse demande de choisir entre **écraser** ou **ignorer**. Si tu cliques « ignorer » par erreur, les données ne sont pas mises à jour.
***
## Cas 2 — Synchronisation automatique via API [#cas-2--synchronisation-automatique-via-api]
Si tu as connecté ton compte GPS (Catapult, STATSports…), FormaPulse récupère **automatiquement** les activités après chaque session. Pour décider à quelle séance rattacher chaque activité, l'algorithme de matching croise :
* la **date** (et heure approximative) de l'activité GPS,
* les **noms des joueurs** présents dans l'activité,
* la **liste des événements planifiés** (séances, matchs) dans la même fenêtre temporelle pour les équipes auxquelles ces joueurs appartiennent.
### 1. Aucune séance candidate trouvée [#1-aucune-séance-candidate-trouvée]
Aucun événement n'était planifié sur le créneau de l'activité GPS, ou les joueurs présents ne sont rattachés à aucune équipe avec une séance planifiée à ce moment-là.
→ Crée la séance manquante dans le calendrier, puis utilise la **synchronisation manuelle** ci-dessous pour rattacher l'activité.
### 2. Plusieurs séances candidates en parallèle [#2-plusieurs-séances-candidates-en-parallèle]
Deux équipes avaient une séance au même créneau (ex: U17 et U19 partageant le terrain). L'algorithme ne peut pas trancher seul et peut rattacher au mauvais événement.
→ Bascule via la **synchronisation manuelle** depuis l'événement cible. Tu verras apparaitre la bonne séance.
### 3. La séance auto-rattachée n'est pas la bonne [#3-la-séance-auto-rattachée-nest-pas-la-bonne]
Un joueur invité ponctuellement sur une autre équipe peut brouiller le matching, ou les fenêtres horaires se chevauchent.
→ Ouvre l'événement actuellement rattaché, **clique sur synchrosiné les données** l'activité GPS, puis choisis la bonne séance de ton provider.
### Synchronisation manuelle — comment faire [#synchronisation-manuelle--comment-faire]
Depuis l'événement de planification cible (séance ou match) :
1. Passe la soucis sur le "+" de ton evenement
2. Clique sur "Synchroniser GPS"
3. Tu verras apparaitre les séances de ton provider pour cet date. Pour un setup GPS manuel, tu es invité à importer le fichier CSV de la séance.
4. Clique sur **Synchroniser**.
L'activité est rattachée à l'événement et **remplace** le rattachement automatique ou manuel précédent s'il existait.
La synchronisation manuelle écrase toujours le rattachement automatique ou le rattachement en cours.
Tu peux aussi l'utiliser pour **rattacher une activité à un événement
passé** que l'algorithme aurait raté.
***
## Liste de contrôle [#liste-de-contrôle]
**Pour un import manuel :**
* ✅ Le fichier est en CSV ou Excel
* ✅ Encodage UTF-8
* ✅ Tous les joueurs sont mappés (vérifier dans **Paramètres > GPS**)
* ✅ La séance correspondante existe et est dans la même fenêtre temporelle
* ✅ Pas de doublon
**Pour la sync automatique :**
* ✅ Ton compte GPS est bien **connecté** dans **Paramètres > GPS > Intégrations**
* ✅ Les **noms des joueurs** côté GPS correspondent à ceux côté FormaPulse (mapping)
* ✅ L'événement de planification existe sur le créneau de l'activité
* ✅ Si plusieurs équipes en parallèle : utilise la **synchronisation manuelle**
## Si rien ne fonctionne [#si-rien-ne-fonctionne]
# Un joueur ne voit pas ses données dans l'app mobile (/docs/erreurs-frequentes/joueur-invisible-app-mobile)
## Symptôme [#symptôme]
Le joueur a installé **l'app FormaPulse Joueur**, s'est connecté avec son email, mais :
* son **profil est vide**,
* aucune **séance** ne s'affiche,
* aucun **questionnaire** ne lui parvient,
* ses **statistiques** sont absentes.
## Causes possibles [#causes-possibles]
### 1. Le joueur n'est pas affilié à l'évenement [#1-le-joueur-nest-pas-affilié-à-lévenement]
Dans votre évenement de planification, veillez à bien ajouter le joueur à l'évenement cible.
### 2. L'email du compte joueur ne correspond pas à celui de la fiche [#2-lemail-du-compte-joueur-ne-correspond-pas-à-celui-de-la-fiche]
L'email saisi sur sa fiche FormaPulse doit être **exactement** le même que celui utilisé pour créer son compte mobile. Une majuscule ou un espace suffit à bloquer la liaison. → [Ajouter un joueur](/docs/joueurs/ajouter-un-joueur)
### 3. Le questionnaire n'est pas disponible [#3-le-questionnaire-nest-pas-disponible]
Si l'evenement n'a pas encore eu lieu (date dans le futur par rapport au moment t), le questionnaire n'apparait pas encore. Le questionnaire apprait seulement après que la séance soit terminé. Pour des questionnaires de suivi wellness simple, mettez un evenement a 6-7 heure du matin. Le questionnaire apparaitre dès le reveil du joueur.
### 4. Permissions de visualisation refusées [#4-permissions-de-visualisation-refusées]
Vérifie que tu n'as pas explicitement **bloqué** la visualisation de certaines données pour ce joueur (ex: données médicales, GPS). Tu peux gérer ses permissions dans la page Préférences.
### 5. Mon joueur a oublié son mot de passe [#5-mon-joueur-a-oublié-son-mot-de-passe]
2 possibilités. Vous pouvez cliquer sur **Envoyer une invitation** depuis l'espace Sportif. Un email sera renvoyer pour que le joueur change son mot de passe. Sinon, vous pouvez également lui definir un mot de passe et lui transmettre ce-dernier, de manière sécurisé.
Un joueur **ne peux pas lui même reinitialiser son mot de passe**.
## Diagnostic rapide [#diagnostic-rapide]
| Action côté coach | Effet attendu côté joueur |
| ----------------------------------------------- | ------------------------------------------ |
| Ouvrir fiche joueur, change le **mot de passe** | Directement opperationnel |
| Vérifier l'**email** sur sa fiche | Doit correspondre à celui du compte mobile |
| Vérifier l'**affiliation** à un évenement | Sinon il n'a pas accès à l'evenement |
## Si rien ne fonctionne [#si-rien-ne-fonctionne]
# Je n'ai pas accès à un module (/docs/erreurs-frequentes/permissions-manquantes)
## Symptôme [#symptôme]
Un module est **grisé**, **invisible** dans le menu, ou affiche un message du type :
* *« Vous n'avez pas accès à cette fonctionnalité »*
* *« Permission refusée »*
* *« Cet écran est réservé au staff médical »*
## Causes possibles [#causes-possibles]
### 1. Permissions limitées par l'admin [#1-permissions-limitées-par-ladmin]
Le coach principal ou l'admin du club a peut-être limité ton accès. Demande-lui de vérifier dans **Mon club > Staff > \[Toi] > Permissions**. → [Gérer les permissions](/docs/club-equipes/gerer-permissions)
### 2. Module non inclus dans ton abonnement [#2-module-non-inclus-dans-ton-abonnement]
Certains modules (Pro Analytics, GPS avancés) sont liés à des **formules** spécifiques. Vérifie ton abonnement actif. → [Gérer l'abonnement](/docs/compte-abonnement/gerer-abonnement)
### 3. Données médicales — permission spécifique [#3-données-médicales--permission-spécifique]
Le **suivi santé** et les **zones de douleur** sont protégés par défaut. Seul un membre marqué **staff médical** y accède.
### 4. Affilié à la mauvaise équipe [#4-affilié-à-la-mauvaise-équipe]
Si tu es coach de l'équipe A mais que tu essaies de consulter des données de l'équipe B, l'accès est refusé. Vérifie ton **affiliation**.
### 5. Compte multi-comptes [#5-compte-multi-comptes]
Tu es peut-être connecté sur le **mauvais compte**. Vérifie l'avatar en haut à droite et bascule si besoin. → [Multi-comptes](/docs/compte-abonnement/multi-comptes)
## Liste de contrôle [#liste-de-contrôle]
* ✅ Tu es sur le **bon compte** (multi-comptes)
* ✅ Tu es **affilié** à l'équipe concernée
* ✅ L'admin t'a accordé les **permissions** sur le module
* ✅ Ton **abonnement** inclut le module
## Si rien ne fonctionne [#si-rien-ne-fonctionne]
# Le PHV ne se calcule pas (/docs/erreurs-frequentes/phv-ne-se-calcule-pas)
## Symptôme [#symptôme]
Tu as enregistré une prise anthropométrique pour un sportif, mais le champ **Indice de maturité (PHV)** reste **vide** dans la fiche du joueur ou dans la liste des prises.
## Pourquoi ça arrive [#pourquoi-ça-arrive]
Le PHV est calculé selon la formule de **Mirwald et al. 2002**. Cette formule a besoin **de toutes ces données simultanément** :
**Sur la prise anthropométrique :**
* Poids (kg)
* Taille (cm)
* Taille assise (cm)
* Hauteur du banc utilisé pour la taille assise (cm)
**Sur la fiche du sportif :**
* Date de naissance
* Genre (Homme ou Femme)
**Si une seule de ces 6 données manque ou est invalide, le PHV reste vide.** C'est volontaire : FormaPulse préfère ne rien afficher plutôt qu'une valeur tronquée ou erronée.
## Causes possibles [#causes-possibles]
### 1. Une mensuration manque sur la prise [#1-une-mensuration-manque-sur-la-prise]
La cause la plus fréquente. Vérifie que la prise contient bien **les 4 mesures** : poids, taille, **taille assise** et **hauteur du banc**. Beaucoup oublient la **hauteur du banc** car ils pensent qu'elle vaut 0 par défaut — non, il faut la saisir explicitement.
→ Édite la prise et complète les valeurs manquantes. Le PHV est recalculé automatiquement.
### 2. La date de naissance n'est pas renseignée sur le sportif [#2-la-date-de-naissance-nest-pas-renseignée-sur-le-sportif]
Le PHV a besoin de l'âge précis (en années décimales). Sans date de naissance, impossible de calculer.
→ Va sur la fiche du sportif > **Informations supplémentaires > Informations générales > Date de naissance**. Renseigne la date au format JJ/MM/AAAA ou AAAA-MM-DD. Modifie ensuite la prise (sans rien changer d'autre) pour déclencher le recalcul.
### 3. Le genre du sportif n'est pas renseigné, ou utilise une valeur non reconnue [#3-le-genre-du-sportif-nest-pas-renseigné-ou-utilise-une-valeur-non-reconnue]
La formule a besoin du genre pour appliquer la bonne équation (deux variantes distinctes selon Homme ou Femme). Si le genre est absent ou utilise une valeur non standard, le calcul ne peut pas se faire.
→ Vérifie sur la fiche du sportif > **Informations supplémentaires > Informations générales > Genre**. Sélectionne **Homme** ou **Femme**.
### 4. Date de prise antérieure à la date de naissance [#4-date-de-prise-antérieure-à-la-date-de-naissance]
Si la date saisie sur la prise est **avant** la date de naissance du sportif (faute de frappe, mauvais sportif sélectionné…), l'âge calculé devient négatif et le PHV ne peut pas être déterminé.
→ Vérifie la cohérence date de prise / date de naissance.
### 5. Format de date invalide sur la fiche du sportif [#5-format-de-date-invalide-sur-la-fiche-du-sportif]
Si la date de naissance a été saisie dans un format non standard (par exemple « 15-mars-2010 »), elle n'est pas reconnue et le calcul échoue.
→ Repasse en format JJ/MM/AAAA ou AAAA-MM-DD.
### 6. Calcul de maturité automatique désactivé à la création [#6-calcul-de-maturité-automatique-désactivé-à-la-création]
Lors de la création en lot, le calcul automatique du PHV est activé par défaut. Si l'option a été désactivée explicitement (cas rare), le PHV ne sera jamais calculé pour ces prises.
→ Modifie la prise concernée : la modification déclenche un recalcul automatique du PHV dès qu'une variable impliquée est touchée.
## Diagnostic rapide [#diagnostic-rapide]
| Vérification | Où | Valeur attendue |
| --------------------------------- | ------------------------------- | ------------------------------------- |
| Poids présent | Prise anthropométrique | > 0 |
| Taille présente | Prise anthropométrique | en **cm** (par exemple 175, pas 1.75) |
| Taille assise présente | Prise anthropométrique | en cm |
| Hauteur du banc présente | Prise anthropométrique | en cm |
| Date de naissance | Fiche sportif > Infos générales | format JJ/MM/AAAA |
| Genre | Fiche sportif > Infos générales | Homme ou Femme |
| Date de prise > Date de naissance | Cohérence | oui |
## Si rien ne fonctionne [#si-rien-ne-fonctionne]
# Une séance n'apparaît pas sur le calendrier (/docs/erreurs-frequentes/seance-non-affichee-calendrier)
## Symptôme [#symptôme]
Tu as créé une séance, elle apparaît dans la liste **Mes séances**, mais elle est **absente du calendrier** quand tu ouvres la vue planification.
## Spécificités [#spécificités]
Lorsque tu créés une séance, et que tu affilie cette séance a un joueur ou une equipe, elle n'as pas disponible dans le calendrier. Il faut bien l planifier dans un evenement du calendrier.
Par contre, tu peux filtrer les séances par equipe et sportifs.
## Causes possibles [#causes-possibles]
### 1. La séance est en statut « Brouillon » [#1-la-séance-est-en-statut--brouillon-]
Une séance créée mais **non placée sur un créneau** reste en brouillon. Elle n'apparaît pas sur le calendrier tant qu'elle n'a pas une date/heure.
### 2. L'équipe sélectionnée n'est pas la bonne [#2-léquipe-sélectionnée-nest-pas-la-bonne]
Le calendrier filtre **par équipe**. Vérifie l'équipe affichée en haut du calendrier. Si tu as un evenement avec une séance, sans equipe, et que tu as une equipe de selectionné dans le calendrier. Alors elle n'apparaitra pas.
C'est le meme principe pour les autres evenements (cycle, reunion etc)
### 3. Filtre actif sur un tag [#3-filtre-actif-sur-un-tag]
Si tu as appliqué un **filtre par tag**, les séances sans ce tag n'apparaissent pas. Réinitialise les filtres.
### 5. Vue restreinte [#5-vue-restreinte]
Tu es peut-être en vue **semaine** alors que la séance est dans une autre semaine. Navigue vers la bonne période.
## Liste de contrôle [#liste-de-contrôle]
* ✅ La séance a bien une **date** et un **horaire**
* ✅ Tu es sur la bonne **équipe**
* ✅ Aucun **filtre tag** n'exclut la séance
* ✅ Tu navigues sur la bonne **période**
## Si rien ne fonctionne [#si-rien-ne-fonctionne]
# La synchronisation calendrier ne fonctionne pas (/docs/erreurs-frequentes/synchronisation-calendrier-bloquee)
## Connexion [#connexion]
Lors de la connexion aux providers de calendrier, vous pouvez avoir un message d'alerte "application non vérifiée".
Si vous voyez ce message, la vérification est encore en cours chez Google. Vous pouvez continuer le processus de synchronisation **SANS AUCUN RISQUE**.
## Symptôme [#symptôme]
Tu as connecté ton calendrier externe (Google, Apple, Outlook) à FormaPulse via le flux iCal, mais :
* les **séances ne s'affichent pas** dans le calendrier externe,
* les anciennes séances apparaissent mais **les nouvelles non**,
* les **modifications** côté FormaPulse ne se reflètent pas.
## Causes possibles [#causes-possibles]
### 1. Délai normal [#1-délai-normal]
Google et Apple peuvent prendre **plusieurs heures** pour rafraîchir un flux iCal externe. C'est imposé par eux, pas par FormaPulse. Patience.
### 2. La connexion a été perdu [#2-la-connexion-a-été-perdu]
La connexion a peut être été perdu entre les calendriers. Dans ce cas, détache le calendrier et refait la synchronisation.
### 3. Vou sn'avez pas autoriser l'accès a votre calendrier lors du setup [#3-vou-snavez-pas-autoriser-laccès-a-votre-calendrier-lors-du-setup]
Quand vous synchroniser les calendrier, il faut autoriser formapulse a consulter et ecrire dans votre calendrier. Une case est a cochée, lors de la synchronisation a Google et outlook. -> Refaire la synchronisation ci-besoin.
## Solution synchronisation calendrier [#solution-synchronisation-calendrier]
Détacher votre calendrier et refaite votre synchronisation à partir de la page Profil.
## Si rien ne fonctionne [#si-rien-ne-fonctionne]
# Variable du mapper qui ne se calcule pas automatiquement (/docs/erreurs-frequentes/variable-mapper-non-calculee)
## Symptôme [#symptôme]
Tu utilises un mapper avec une variable **calculée automatiquement** (par exemple « Tonnage », « 1RM estimé », « RSI ») ou une variable **individualisée par un test** (par exemple « % 1RM », « % VMA », « % FCmax »). Mais la valeur **reste vide** dans l'app du sportif ou dans la séance.
## Pourquoi ça arrive [#pourquoi-ça-arrive]
FormaPulse ne calcule une variable que si **toutes les conditions** sont remplies en même temps. Si une seule manque, le calcul est ignoré pour éviter d'afficher une valeur tronquée ou erronée.
Il y a deux familles de variables qui peuvent rester vides :
1. Les **variables calculées à partir d'autres variables** (1RM estimé, tonnage, RSI, %FCmax, perte de vitesse, ratio travail:repos, TST…)
2. Les **variables individualisées par un test** (%1RM, %VMA, %FCmax, %PeakForce, %Vmax, %PDC, distance, hauteur de saut, temps sprint…)
## Variables calculées — les besoins [#variables-calculées--les-besoins]
Une variable calculée s'affiche **uniquement si toutes ses variables sources sont saisies** dans le mapper et renseignées avec une valeur.
| Variable calculée | Variables sources nécessaires |
| ---------------------------- | --------------------------------------------------------------------- |
| **1RM estimé** | Charge **et** Répétitions (ou Reps/côté ou Reps droite + Reps gauche) |
| **Tonnage** | Charge **et** Répétitions (Séries en multiplicateur si présent) |
| **Tonnage relatif** | Tonnage **et** 1RM estimé |
| **INOL** | Répétitions **et** %1RM |
| **Volume de charge (NL)** | Répétitions (Séries en multiplicateur si présent) |
| **TST (temps sous tension)** | Tempo (ou temps de maintien iso) **et** Répétitions **et** Séries |
| **Perte de vitesse VBT** | Vitesse 1ʳᵉ répétition **et** Vitesse dernière répétition |
| **% FCmax** | Fréquence cardiaque mesurée |
| **Ratio Travail:Repos** | Temps de travail (circuit) **et** Temps de récupération (circuit) |
| **RSI** | Hauteur de saut **et** Temps de contact au sol |
### Cause typique [#cause-typique]
Tu as ajouté la variable calculée à ton mapper mais tu as **oublié une variable source**. Par exemple : tu as « Tonnage » et « Charge » mais pas « Répétitions ».
→ **Solution** : édite le mapper, ajoute la variable source manquante. Quand tu sélectionnes une variable calculée, FormaPulse t'affiche le bandeau **« Nécessite : … »**. Vérifie que toutes les variables listées en orange sont ajoutées (elles passent en vert quand elles sont présentes).
## Variables individualisées — les besoins [#variables-individualisées--les-besoins]
Une variable individualisée par un test (par exemple **% 1RM**) a besoin que **le sportif possède un test de référence du bon type sur sa fiche**.
| Variable | Test de référence requis sur la fiche du sportif |
| ------------------------------------------- | --------------------------------------------------------------- |
| **% 1RM** | Un test de **poids** (1RM) sur l'exercice concerné |
| **% Poids de corps** | Une mesure d'**anthropométrie** (poids) |
| **% VMA** | Un test de **vitesse d'endurance** (VMA) |
| **% FCmax** (cible) | Un test de **fréquence cardiaque** (FCmax) |
| **% PeakForce** | Un test de **force** (force max) |
| **% Vmax** | Un test de **vitesse d'exécution** (Vmax) |
| **Distance** *(individualisée)* | Un test de **vitesse d'endurance** (VMA) + une durée de travail |
| **Hauteur de saut** *(référence)* | Un test de **hauteur** |
| **Temps sprint** *(référence)* | Un test de **temps** sur la distance concernée |
### Cause typique 1 — pas de test sur la fiche [#cause-typique-1--pas-de-test-sur-la-fiche]
Le sportif n'a **jamais** passé le test de référence requis. La variable individualisée n'a aucune valeur sur laquelle s'appuyer.
→ **Solution** : fais passer le test au sportif avant la séance. → [Saisir des tests physiques](/docs/joueurs/tests-physiques)
### Cause typique 2 — test trop ancien ou non rattaché à l'exercice [#cause-typique-2--test-trop-ancien-ou-non-rattaché-à-lexercice]
Pour le **% 1RM**, FormaPulse a besoin d'un 1RM **rattaché à l'exercice concerné** (un 1RM squat ne sert pas pour un développé couché). Si l'exercice n'a aucun 1RM dans l'historique du sportif, le calcul échoue.
→ **Solution** : vérifie qu'un 1RM **récent** existe pour l'exercice concerné dans la fiche du sportif.
### Cause typique 3 — durée de travail manquante [#cause-typique-3--durée-de-travail-manquante]
Pour la variable **Distance** individualisée, le calcul prend %VMA × VMA × **durée de travail**. Si la durée de travail n'est pas renseignée, la distance ne se calcule pas.
→ **Solution** : ajoute la variable **Durée de travail** dans le mapper et renseigne-la.
## Liste de contrôle [#liste-de-contrôle]
**Pour une variable calculée :**
* ✅ Toutes les variables sources listées dans « Nécessite : … » sont ajoutées au mapper
* ✅ Les variables sources sont **renseignées** avec une valeur (pas vides)
* ✅ Pour les calculs avec multiplicateur de séries : les **séries** sont saisies si tu veux le total cumulé
**Pour une variable individualisée :**
* ✅ Le sportif a un **test du bon type** dans sa fiche
* ✅ Le test est **récent** et représentatif
* ✅ Pour le %1RM : le test est rattaché au **bon exercice**
* ✅ Si la variable a besoin d'une durée de travail, celle-ci est saisie
## Si rien ne fonctionne [#si-rien-ne-fonctionne]
# Bien démarrer avec FormaPulse (/docs/premiers-pas/bienvenue)
## Vue d'ensemble [#vue-densemble]
FormaPulse est ta **plateforme de gestion sportive** : tu y centralises tes équipes, tes joueurs, tes séances, tes statistiques et le suivi santé. Cette page te guide dans tes tout premiers réflexes après ton inscription.
## L'organisation de ton espace [#lorganisation-de-ton-espace]
Ton espace coach est structuré autour de **6 grands modules** accessibles depuis le menu latéral :
1. **Mon club & équipes** — l'organisation de ton club
2. **Joueurs** — la fiche de chaque athlète, ses tests et son anthropométrie
3. **Planification** — la création de séances et le calendrier
4. **Statistiques** — séances, matchs, GPS et suivi longitudinal
5. **Suivi santé** — blessures, épidémiologie, historique médical
6. **Dashboards & rapports** — synthèses et exports
## Les premières actions à réaliser [#les-premières-actions-à-réaliser]
### 1. Ajouter tes joueurs [#1-ajouter-tes-joueurs]
Tu peux les saisir un par un ou en masse via un import en nous demandant.
→ [Ajouter un joueur](/docs/joueurs/ajouter-un-joueur)
### 2. Créer ta première équipe [#2-créer-ta-première-équipe]
C'est l'unité de base de ton organisation. Une équipe regroupe des joueurs.
→ [Créer une équipe](/docs/club-equipes/creer-une-equipe)
### 3. Planifier ta première séance [#3-planifier-ta-première-séance]
Construis ta séance puis place-la sur le calendrier de l'équipe ou du sportif, dans l'onglet planification.
→ [Créer une séance](/docs/creation-seances/creer-une-seance)
Tu peux compléter ces étapes dans l'ordre que tu veux : FormaPulse n'impose
pas de parcours figé. Mais pour **créer une équipe**, il te faut au minimum un joueur.
## Erreurs fréquentes au démarrage [#erreurs-fréquentes-au-démarrage]
* **Oublier de sélectionner une équipe active** : la plupart des écrans (planification, statistiques) sont filtrés par équipes actives. Tu peux le faire dans la sidebar après avoir créé ton equipe.
* **Créer plusieurs équipes pour le même groupe** : si tu veux distinguer un sous-groupe (ex: gardiens), utilise plutôt les **postes** au sein d'une seule équipe.
* **Ignorer les permissions** : si tu travailles avec des co-coachs, configure les rôles dès le départ pour éviter de devoir reprendre l'accès plus tard.
## Aller plus loin [#aller-plus-loin]
# Configurer tes préférences (/docs/premiers-pas/configurer-son-club)
## Vue d'ensemble [#vue-densemble]
Avant de créer tes équipes et d'ajouter tes joueurs, prends 2 minutes pour **configurer tes préférences**. Ces informations te permettront une meilleur expérience utilisateur et tu découvrir la granularité que peux t'offrir Formapulse.
## Ce que tu peux personnaliser [#ce-que-tu-peux-personnaliser]
* **Couleurs** principales (utilisées dans les rapports et l'app joueur)
* **Préférences d'affichage** : thème clair/sombre, format des dates
* **Préférences d'analyse** : périodes, type d'analyse, analyses prioritaires
* **Préférences de création** : terrain par default, couleur, premier outil dans les création
* **Préférences de synchronisation** : temps, à quel moment, automatique ou non
## Étapes [#étapes]
### 1. Accéder aux préférences [#1-accéder-aux-préférences]
Depuis le menu latéral, clique sur ton avatar puis **Préférences**.
### 2. Catégories [#2-catégories]
Les préférences sont distinguer par catégorie. Tu peux les parcourir et définir tes besoins.
## Erreurs à éviter [#erreurs-à-éviter]
* **Couleurs avec trop peu de contraste** : le texte blanc sur fond très clair devient illisible dans les rapports exportés.
* **Periode d'analyse trop longue**: Avec des période d'analyse longue, le temps de chargement est plus long. Privilegié des periodes courte, et switcher sur sur long ci-besoin directement dans le système d'analyse.
## Aller plus loin [#aller-plus-loin]
# Bases du système de planification (/docs/planification/bases-planification)
## Vue d'ensemble [#vue-densemble]
Le système de planification FormaPulse est conçu pour gérer **toute l'activité** d'un club : entraînements, matchs, RDV para-sportifs, réunions, cycles de programmation. Chaque type d'événement a son comportement et ses règles propres.
## Les types d'événements [#les-types-dévénements]
| Type | Comportement |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| **Séance** | Génère statistiques, charge, présences |
| **Match** | Comme la séance + score, composition, GPS, statistiques individuelles |
| **RDV para-sportif** | RDV médical / kiné / ostéo / psy / nutrition / podologue / dentiste — peut être marqué visible uniquement par le staff médical |
| **Réunion** | Pas d'impact sur la charge, simple repère calendaire |
| **Cycle** | Période de programmation qui couvre plusieurs jours / semaines (préparation, championnat, transition…) |
### Spécificités de chaque type [#spécificités-de-chaque-type]
#### Séance [#séance]
* Génère les **présences** des sportifs et participe au calcul de la **charge** d'entraînement.
* Peut être rattachée à une **séance pédagogique** créée depuis le créateur de séance (exercices, blocs, mappers).
* Peut être **synchronisée avec un GPS** pour récupérer les données d'activité.
* Peut porter un **questionnaire** (à remplir par le sportif ou par le coach).
#### Match [#match]
* Toutes les caractéristiques d'une séance (présences, charge, questionnaire).
* En plus, ses statistiques remontent dans la **section matchs** plutôt que dans la section séances.
* **Composition / domicile-extérieur** : si match à l'extérieur, FormaPulse propose par défaut un **transport** de 60 minutes ; à domicile, 0 minute. Tu paramètres aussi l'**heure de RDV**, l'**heure d'échauffement** et la **durée de transport**.
* **RPE prévisionnel par défaut = 8** (contre 5 pour les autres types) — reflet de l'intensité d'un match.
* **GPS** et **statistiques individuelles** sont activées comme pour la séance.
#### RDV para-sportif [#rdv-para-sportif]
* Conçu pour les rendez-vous **médicaux et para-médicaux** : médical, kiné, ostéo, psy, nutrition, podologue, dentiste…
* Tu précises le **type de consultation**, le **praticien**, le **motif**, le degré d'**urgence** et, si pertinent, le **lien avec une blessure** existante.
* Peut être marqué **« visible uniquement par le staff médical »** — un coach non-médical ne le verra pas dans son calendrier.
* N'est **pas pris en compte** dans la charge d'entraînement.
#### Réunion [#réunion]
* Simple **repère calendaire** : ne génère pas de statistiques, ne pèse pas sur la charge.
* Utile pour synchroniser le staff (debrief, video meeting, rdv physique…).
* Peut être attaché à une équipe ou rester au niveau staff.
#### Cycle [#cycle]
* Période **multi-jours** (préparation estivale, championnat phase aller, trêve hivernale…).
* **Toujours sur des journées complètes** : un cycle s'étend sur plusieurs jours pleins, tu ne précises pas d'heure de début ni de fin.
* Affiché en **bandeau** sur le calendrier (dans la vue mensuelle / agenda) plutôt qu'en case horaire.
* Sert ensuite à délimiter la période d'analyse dans **Pro Analytics > Analyses des cycles**.
## La granularité [#la-granularité]
Tu peux planifier au niveau :
1. **Club** — un événement vu par tout le monde (ex: tournoi).
2. **Équipe** — la majorité des cas.
3. **Joueur** — pour des séances individualisées (rééducation, retour de blessure).
## Étapes [#étapes]
### 1. Choisir le bon niveau (équipe / joueurs) [#1-choisir-le-bon-niveau-équipe--joueurs]
Le niveau de l'événement se décide en sélectionnant **une équipe** et/ou **des joueurs** dans l'onglet **Participants** du formulaire d'événement.
* **Une équipe** sélectionnée → événement collectif d'équipe (tous les sportifs de l'équipe sont participants par défaut).
* **Des joueurs** sélectionnés sans équipe → événement individuel (utile pour les soins, la réathlétisation, les séances individualisées).
* **Équipe + sous-ensemble de joueurs** → événement d'équipe restreint à un sous-groupe.
### 2. Choisir le bon type [#2-choisir-le-bon-type]
Sélectionne le type adapté (Séance, Match, Soin/Kiné, Réunion ou Cycle) en fonction de la nature de l'événement. Par exemple : une séance individuelle de réathlétisation = type **Séance** avec sélection d'**un seul joueur** dans Participants. Un soin kiné = type **Soin / Kiné** avec ou sans flag médical.
### 3. Renseigner la date et l'heure [#3-renseigner-la-date-et-lheure]
Ne pas oublier le créneau exact : c'est ce qui pilote les rappels envoyés via l'app joueur. Pour un **cycle**, seule la plage de dates (jours pleins) est demandée, sans heure.
### 4. Sélectionner les détails de l'événement [#4-sélectionner-les-détails-de-lévénement]
Dans l'onglet **Détails**, complète les informations spécifiques au type d'événement : objectif, infrastructure utilisée, mappers de données, tags, commentaires généraux, etc. Ce sont ces détails qui rendent l'événement exploitable dans les statistiques et analyses ensuite.
## Erreurs à éviter [#erreurs-à-éviter]
* **Confondre type et tag** : le type structure l'événement (calculs, permissions). Les tags servent au filtrage. → [Tags d'événements](/docs/planification/tags-evenements)
* **Planifier sans équipe ni joueur** : un événement sans participant n'apparaît dans aucune vue filtrée et n'envoie pas de notifications.
* **Confondre cycle et série récurrente** : un cycle est UNE période continue (par exemple 6 semaines de préparation). Une série récurrente est une succession d'événements identiques (par exemple un entraînement chaque mardi). → [Événements récurrents](/docs/planification/evenements-recurrents)
## Aller plus loin [#aller-plus-loin]
# Documents d'événements (/docs/planification/documents-evenements)
## Vue d'ensemble [#vue-densemble]
Tu peux **attacher des documents** à n'importe quel événement : feuille de match, vidéo de l'adversaire, plan tactique, contrat, photo… Ils sont visibles selon les **permissions** que tu définis.
## Types de documents supportés [#types-de-documents-supportés]
* **PDF** (feuilles de match, brief tactique, fiches médicales)
* **Images** (schémas, photos)
* **Vidéos** (analyse vidéo, débrief)
* **Documents Office** (Word, Excel, PowerPoint)
* **Liens externes** (Google Drive, YouTube, etc.)
## Étapes [#étapes]
### 1. Ouvrir les ressources d'événements [#1-ouvrir-les-ressources-dévénements]
Va sur **Planification > Ressources d'événements**. Tu y retrouves la liste de tes documents dans la sidebar.
### 2. Rendre le document affichable ou non [#2-rendre-le-document-affichable-ou-non]
Sur chaque document de la sidebar, choisis simplement s'il est **affichable** ou non.
Tu peux aussi créer tes documents directement depuis la page **Ressources > Mes documents**.
### 3. Ajouter le document à un événement [#3-ajouter-le-document-à-un-événement]
Deux façons :
* Depuis les **détails de l'événement**, clique sur **Ajouter un document** et choisis-le dans ta liste de ressources.
* En **drag & drop** : glisse le document depuis la sidebar directement sur l'événement dans le calendrier.
Si la visibilité concerne les joueurs, ils reçoivent une notification dans l'app joueur dès la mise en ligne.
Les documents médicaux (résultats d'examen, ordonnances) doivent rester
en visibilité **staff médical** uniquement. Vérifie la permission avant
d'envoyer.
## Erreurs à éviter [#erreurs-à-éviter]
* **Fichiers trop lourds** : un PDF de 50 Mo bloque le téléchargement sur mobile. Compresse à \< 5 Mo si possible.
* **Liens privés** : un lien Google Drive non partagé est inutile. Vérifie les permissions du lien avant de coller.
* **Oublier de retirer** : les documents tactiques d'un match passé peuvent être archivés ou supprimés pour alléger.
## Aller plus loin [#aller-plus-loin]
# Créer des événements récurrents (/docs/planification/evenements-recurrents)
## Vue d'ensemble [#vue-densemble]
Plutôt que de recréer manuellement la même séance chaque mardi, configure un **événement récurrent**. FormaPulse génère automatiquement toutes les occurrences sur la période souhaitée (jusqu'à **365 événements** par série).
## Étapes [#étapes]
### 1. Créer le premier événement [#1-créer-le-premier-événement]
Dans le calendrier, ouvre le dialogue de création d'événement et renseigne ses détails comme d'habitude (titre, séance, équipe, sportifs, créneau).
### 2. Activer la récurrence [#2-activer-la-récurrence]
Active le **switch « Récurrence »** dans le dialogue. Un panneau de configuration apparaît.
La récurrence ne se configure qu'à la **création** de l'événement. Sur un
événement déjà créé, tu n'as plus accès au panneau — il faut alors gérer
via les options « cet événement / toute la série ».
### 3. Choisir la fréquence [#3-choisir-la-fréquence]
Trois modes possibles :
| Fréquence | Configuration |
| ---------------- | ----------------------------------------------------------------------------------------------------------------- |
| **Quotidien** | Champ *« Répéter tous les X jours »* (1 à 30). Pour « tous les 15 jours », mets X = 15. |
| **Hebdomadaire** | Sélection d'un ou plusieurs **jours de la semaine** (Dim, Lun, Mar, Mer, Jeu, Ven, Sam). Au moins un jour requis. |
| **Mensuel** | Champ *« Répéter tous les X mois »* (1 à 30). |
### 4. Préciser la fin de la série [#4-préciser-la-fin-de-la-série]
Deux modes au choix :
* **Nombre d'occurrences** — la série s'arrête après N événements (1 à 365).
* **Date de fin** — la série s'arrête à la date sélectionnée.
Un aperçu *« 📅 X événement(s) seront créés »* s'affiche en temps réel. Si tu dépasses 365, FormaPulse refuse de créer la série.
### 5. Valider [#5-valider]
Tous les événements de la série sont créés en une fois et partagent un même **identifiant de série**. Sur le calendrier, ils sont reconnaissables à un **badge avec icône de répétition** + le nombre total.
## Modifier ou supprimer un événement récurrent [#modifier-ou-supprimer-un-événement-récurrent]
Quand tu interviens sur un événement appartenant à une série, FormaPulse t'ouvre un dialogue de choix.
### Modification [#modification]
| Option | Effet |
| ------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------- |
| **Mettre à jour uniquement cet événement** | La modification ne touche que l'occurrence sélectionnée. Les autres événements de la série restent inchangés. |
| **Mettre à jour toute la série** | Tous les événements de la série sont modifiés (titre, couleur, séance, sportifs, métadonnées). Les **dates et créneaux** sont conservés. |
### Suppression [#suppression]
| Option | Effet |
| -------------------------------------- | --------------------------------------------------------------------------- |
| **Supprimer uniquement cet événement** | Seule l'occurrence sélectionnée est supprimée. Les autres restent intactes. |
| **Supprimer toute la série** | Tous les événements de la série sont supprimés en bloc. |
Il n'existe pas d'option *« cet événement et les suivants »* : c'est soit
l'occurrence seule, soit toute la série. Pour exclure une seule occurrence
(jour férié, tournoi…), supprime-la individuellement.
## Erreurs à éviter [#erreurs-à-éviter]
* **Récurrence trop longue** : une série de 200+ événements sera lourde à modifier en bloc. Préfère des séries de 4 à 8 semaines, quitte à en recréer une nouvelle ensuite.
* **Confondre série et microcycle** : la récurrence répète **un événement**. Le microcycle structure une **semaine entière**. Pour structurer une semaine, utilise plutôt la programmation.
* **Modifier toute la série quand un seul événement doit changer** : par défaut, applique la modification à l'occurrence seule. *« Toute la série »* est une action en bloc qui peut écraser des ajustements ponctuels.
## Aller plus loin [#aller-plus-loin]
# Mappers data d'événements (/docs/planification/mappers-data-evenements)
## Vue d'ensemble [#vue-densemble]
Un **mapper data d'événement** est un **formulaire personnalisé** que tu attaches à un événement pour saisir des données spécifiques à ton contexte : suivi médical, données externes saisies à la main, ressentis joueurs, infos de match…
C'est avant tout un **moyen pour le coach (ou le staff) d'intégrer de la donnée**, à la différence des [questionnaires](/docs/questionnaires/creer-un-questionnaire) qui sont eux un canal pour **récolter de la donnée auprès des joueurs**.
Concrètement : tu définis une **liste de champs** (texte, nombre, date, choix, oui/non, couleur…) avec une **portée** (« événement » ou « par joueur »), tu sauvegardes le mapper, et tu peux ensuite l'attacher à n'importe quel événement où une grille de saisie apparaîtra.
**Mapper data ≠ Mapper de variables.** Les
[mappers de variables](/docs/creation-seances/mappers-variables) sont
attachés à un **exercice** et calculent automatiquement des charges
(1RM, VMA…). Les mappers data décrits ici sont attachés à un
**événement** et ne font **aucun calcul** : ce sont des conteneurs
de champs que tu remplis à la main.
## Anatomie d'un mapper [#anatomie-dun-mapper]
Trois éléments :
1. **Nom du mapper** — apparaît dans la sidebar et dans la fiche événement.
2. **Couleur** — pour le repérer visuellement.
3. **Portée** :
* **Événement** — une seule saisie pour l'événement entier (ex: météo et arbitre d'un match).
* **Par joueur** — un tableau avec une ligne par joueur convoqué (ex: ressenti post-séance individuel).
4. **Champs personnalisés** — ce que l'utilisateur devra remplir.
### Les 13 types de champs disponibles [#les-13-types-de-champs-disponibles]
| Type | Cas d'usage |
| ---------- | --------------------------------------------------------------- |
| `text` | Texte court (nom d'arbitre, libellé) |
| `textarea` | Texte long (commentaire, observations) |
| `number` | Valeur numérique (distance, RPE, sévérité 1-10) |
| `date` | Date isolée (date d'apparition d'une douleur) |
| `time` | Heure (heure de prise de RPE) |
| `datetime` | Date + heure |
| `boolean` | Vrai / Faux |
| `checkbox` | Case à cocher (présence d'un signe, validation) |
| `select` | Choix dans une liste (état physique : frais / normal / fatigué) |
| `color` | Sélecteur de couleur |
| `email` | E-mail (avec validation format) |
| `url` | URL (avec validation format) |
| `phone` | Numéro de téléphone |
Chaque champ peut avoir une **valeur par défaut** et être marqué **obligatoire**.
## Créer un mapper [#créer-un-mapper]
1. Ouvre le calendrier de **Planification**, dans la sidebar gauche, déplie la section **Mappers data**.
2. Clique sur **+** à côté de « Mes mappers » pour ouvrir la modale de création.
3. Renseigne :
* **Nom du mapper** (ex: « Informations médicales »)
* **Couleur** dans la palette
* **Portée du mapper** — toggle entre « Événement » et « Par joueur »
4. Ajoute un ou plusieurs **champs personnalisés** :
* **Nom du champ**
* **Type de champ** (parmi les 13 listés)
* **Options** (si type = `select` — au moins une option requise)
* **Valeur par défaut** (optionnel)
* **Champ obligatoire** (switch)
5. Tu peux **réordonner** les champs en les glissant (poignée à gauche).
6. Bouton **Créer le mapper**.
## Attacher un mapper à un événement [#attacher-un-mapper-à-un-événement]
Deux façons :
### Depuis la fiche événement (onglet Data) [#depuis-la-fiche-événement-onglet-data]
À la création ou à l'édition d'un événement, dans l'onglet **Data**, tu coches les mappers à attacher. Selon la portée :
* **Portée « Événement »** — une grille de saisie en 3 colonnes apparaît avec les champs du mapper.
* **Portée « Par joueur »** — un tableau apparaît : 1 ligne par joueur convoqué, 1 colonne par champ du mapper.
Les valeurs sont **enregistrées avec l'événement** quand tu cliques Sauvegarder. Pour **retirer** un mapper attaché, décoche-le ou utilise le bouton X — les données saisies sont perdues.
### Drag & drop sur un événement existant [#drag--drop-sur-un-événement-existant]
Depuis la sidebar, **glisse un mapper** sur un événement du calendrier. Le mapper s'attache à l'événement sans avoir à rouvrir la fiche.
## Préenregistrer un mapper sur un template [#préenregistrer-un-mapper-sur-un-template]
Un template d'événement peut **inclure un ou plusieurs mappers par défaut**. Tous les événements créés à partir du template auront ces mappers attachés automatiquement, prêts à remplir.
Cas typique : un template Match qui inclut un mapper « Conditions du match » (météo, arbitre, surface) — chaque match créé via le template attend simplement la saisie au moment du report.
Voir [Templates d'événement](/docs/planification/templates-personnalises).
## 4 cas d'usage concrets [#4-cas-dusage-concrets]
**1. Suivi médical par événement**
Mapper « Bilan séance » en portée **Événement**, avec : zone douloureuse (text), sévérité (number 1-10), commentaire médecin (textarea). Attaché aux séances de réathlétisation, rempli en fin de séance par le préparateur ou le kiné.
**2. Saisie GPS manuelle**
Mapper « GPS manuel » en portée **Par joueur**, avec : distance totale (number), vitesse max (number), nombre de sprints (number), distance haute intensité (number). Utile quand tu n'as pas de boîtier GPS sur certaines séances mais que tu veux garder un suivi homogène.
**3. Ressenti post-séance par joueur**
Mapper « Post-séance » en portée **Par joueur**, avec : RPE perçu (number 0-10), état physique (select : frais / normal / fatigué / très fatigué), commentaire libre (textarea). Le staff remplit la ligne de chaque joueur en fin d'entraînement.
**4. Conditions de match**
Mapper « Match : conditions » en portée **Événement**, avec : arbitre principal (text), météo (select : beau / nuageux / pluie / neige), surface (select : herbe / synthétique / hybride), incidents notables (textarea). Préenregistré sur le template Match.
## Mappers personnels vs mappers club [#mappers-personnels-vs-mappers-club]
* **Personnels** — créés par un coach pour son usage propre.
* **Club** — créés par un compte club ou rattaché à un club, partagés avec tout le staff.
Seul le **propriétaire** peut modifier ou supprimer un mapper.
## Limites actuelles [#limites-actuelles]
À garder en tête :
* **Pas de calcul automatique, pas de formule** — un mapper ne fait que **stocker** les valeurs saisies. Aucune dérivation, aucune agrégation.
* **Pas de rétro-application** — attacher un mapper à un événement n'est valable que pour cet événement. Pour collecter une même donnée sur tous les événements existants, il faut les rouvrir un à un.
Si tu cherches à **suivre statistiquement** une donnée dans le temps, regarde plutôt :
* [Questionnaires](/docs/questionnaires/creer-un-questionnaire) — pour les données subjectives (bien-être, douleur, fatigue) que tu veux suivre dans la durée.
* [Indicateurs de dashboard](/docs/dashboards/indicateurs-disponibles) — pour les sources standardisées (charge, GPS, tests, blessures).
## Erreurs à éviter [#erreurs-à-éviter]
* **Mapper pour une donnée déjà standard** — avant de créer un mapper « RPE » en saisie manuelle, vérifie qu'un questionnaire RPE ne ferait pas mieux le job (il alimente les dashboards, le mapper non).
* **Trop de champs dans un mapper** — passé 6-8 champs, la saisie devient pénible. Mieux vaut deux mappers dédiés (médical + logistique) qu'un mapper fourre-tout.
* **Confusion portée Événement / Par joueur** — un ressenti se remplit par joueur (portée Par joueur), une condition de match se remplit une fois pour tous (portée Événement). Choisir la mauvaise portée oblige à recréer le mapper.
## Aller plus loin [#aller-plus-loin]
# Planifier les cycles de travail (/docs/planification/planifier-cycles-travail)
## Vue d'ensemble [#vue-densemble]
Un **cycle de travail** est une **période de planification** (date début → date fin) qui sert de cadre logique à un bloc d'entraînement : préparation, compétition, transition, retour de blessure, stage… Il s'affiche dans le calendrier sous forme de **barre horizontale colorée** qui s'étend du jour de début au jour de fin.
Planifier en cycles n'est pas une obligation pour utiliser FormaPulse — tu peux très bien poser des séances et des matchs sans cycle. Mais c'est ce qui transforme un **calendrier d'événements** en une vraie **programmation pensée**, et c'est ce qui débloque les analyses comparatives dans pro-analytics.
## Pourquoi planifier en cycles ? [#pourquoi-planifier-en-cycles-]
### 1. Donner du sens à la suite d'événements [#1-donner-du-sens-à-la-suite-dévénements]
Sans cycle, tu as une succession de séances qui s'enchaînent sans intention claire. Avec un cycle, chaque événement de la période s'inscrit dans **un objectif global** : préparation foncière, montée en puissance, affûtage avant compétition, récupération active après match difficile, etc.
Le cycle répond à la question : **« pourquoi je travaille comme ça cette semaine / ces 3 semaines / ce mois ? »**
### 2. Structurer la charge sur la durée [#2-structurer-la-charge-sur-la-durée]
Une saison se construit par **alternance de blocs** : charge → décharge → charge → pic → récupération. Les cycles te permettent de **rendre cette alternance lisible** et d'éviter d'enchaîner mécaniquement des semaines à 100 % sans jamais relâcher.
### 3. Pouvoir comparer [#3-pouvoir-comparer]
C'est probablement la raison la plus puissante. Un cycle est l'**unité d'analyse** qu'utilise pro-analytics pour comparer :
* Comparer **deux phases similaires** entre deux saisons (« ma préparation 2025-26 vs 2024-25 »).
* Comparer **deux blocs successifs** dans la même saison (« phase aller vs phase retour »).
* Comparer **deux types de stage** (« stage en altitude vs stage en bord de mer »).
Sans cycle, ces comparaisons sont impossibles parce qu'il n'y a pas de **borne** sur ce que tu compares.
### 4. Documenter pour soi-même et pour le staff [#4-documenter-pour-soi-même-et-pour-le-staff]
À la fin de saison, en regardant tes cycles, tu peux faire un **bilan structuré** : qu'est-ce qui a marché en préparation ? Quel mésocycle a généré le plus de blessures ? Quelle phase a produit la meilleure disponibilité ?
## Les 3 niveaux de cycle [#les-3-niveaux-de-cycle]
FormaPulse n'impose pas de typologie stricte, mais la pratique standard en sport collectif distingue 3 niveaux **emboîtés** :
| Cycle | Durée typique | Rôle |
| -------------- | -------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| **Microcycle** | 1 semaine | Structure d'une **semaine type** (ex : lundi off, mardi technique, mercredi physique, jeudi tactique, vendredi activation, samedi match) |
| **Mésocycle** | 3 à 6 semaines | **Bloc** avec un objectif global (préparation, compétition, transition, récupération post-blessure) |
| **Macrocycle** | Saison entière | **Vision long terme** : pic de forme, périodes de charge, périodes de décharge, alternance des phases |
Tu peux **superposer** les niveaux : un macrocycle « Saison 2025-26 » qui contient plusieurs mésocycles (« Préparation », « Phase aller », « Trêve », « Phase retour »), chacun composé de plusieurs microcycles hebdomadaires.
## Étapes — créer et déployer un cycle [#étapes--créer-et-déployer-un-cycle]
### 1. Créer le cycle [#1-créer-le-cycle]
Depuis la page **Programmation**, dans la barre latérale, ouvre la section **Cycles de travail** et clique sur **Créer un cycle**.
Renseigne :
* **Titre** (ex : « Préparation championnat 2026 », « Bloc force max », « Stage Andorre »)
* **Type de cycle** : microcycle / mésocycle / macrocycle
* **Date de début et date de fin**
* **Couleur** (utilisée pour la barre dans le calendrier et la pastille en pro-analytics)
* **Phase** : préparation, compétition, transition, récupération
* **Objectifs principaux et secondaires**
* **Thèmes prioritaires** (endurance, vitesse, force, technique, tactique…)
* **Nombre prévisionnel de séances et de matchs** sur la période
* Optionnellement : **équipe(s) concernée(s)**, **sportif(s) concerné(s)**, **tags**
### 2. Poser le cycle sur le calendrier [#2-poser-le-cycle-sur-le-calendrier]
Glisse le cycle créé sur la **plage de dates** correspondante dans le calendrier. Il s'affiche immédiatement sous forme de barre horizontale colorée qui couvre la période.
### 3. Remplir le cycle d'événements [#3-remplir-le-cycle-dévénements]
Un cycle vide ne sert à rien. Pose dedans tes **séances**, **matchs**, **réunions** et **RDV para-sportifs**, conformément à la structure que tu as prévue (microcycle type, alternance charge/décharge, etc.).
→ Voir [Planification et programmation](/docs/planification/programmation) pour les détails sur la création et la duplication d'événements.
### 4. Décliner sur plusieurs semaines [#4-décliner-sur-plusieurs-semaines]
Tu peux **dupliquer un microcycle** (clic droit → Dupliquer) sur les semaines suivantes, puis ajuster les exceptions au cas par cas (matchs imposés, jours fériés, RDV médicaux). Regroupe ensuite les microcycles sous un **mésocycle** plus large.
### 5. Modifier en cours de route [#5-modifier-en-cours-de-route]
Si la dynamique de saison évolue (blessures, calendrier compétition modifié, charge mal calibrée), tu peux :
* **Ajuster les dates** d'un cycle existant (les analyses se réajustent automatiquement à la prochaine ouverture).
* **Modifier les objectifs / thèmes** sans changer les dates.
* **Supprimer** un cycle qui ne correspond plus.
## Lien avec l'analyse data avancée [#lien-avec-lanalyse-data-avancée]
Une fois tes cycles créés et remplis, ils sont **directement exploitables** dans la section pro-analytics :
### Analyses des cycles [#analyses-des-cycles]
La page **Analyses des cycles** liste tous tes cycles disponibles et permet d'en sélectionner un pour analyser :
* **Présences par statut** : qui a été apte / adapté / réhab / absent pendant le cycle, et combien de temps
* **Distribution par tag** : quels objectifs (technique, physique, tactique…) ont été le plus travaillés
* **Distribution par type d'événement** : ratio séances / matchs / RDV / réunions
* **Timeline des présences** : séquence visuelle de chaque sportif
→ Voir [Analyses des cycles](/docs/pro-analytics/analyses-cycles).
### Comparaison de cycles A vs B [#comparaison-de-cycles-a-vs-b]
Le mode **Comparer** te permet de mettre **deux cycles côte à côte** et d'analyser les **écarts** :
* Variation du nombre d'événements
* Variation du temps total
* Évolution du taux de disponibilité par sportif
* Variation de la distribution des tags / types
Idéal pour comparer ta préparation actuelle à celle de l'an dernier, ou deux blocs successifs dans la même saison.
→ Voir [Notion de cycle](/docs/pro-analytics/cycles) pour les cas d'usage détaillés.
## Cas d'usage typiques [#cas-dusage-typiques]
### Cas 1 — Préparation de saison [#cas-1--préparation-de-saison]
* Créer un **mésocycle** « Préparation championnat 2026 » du 1er au 31 août
* À l'intérieur, créer 4 **microcycles** hebdomadaires : `S1 - Reprise`, `S2 - Foncier`, `S3 - Intensification`, `S4 - Affûtage`
* Chaque microcycle a sa structure type (alternance technique / physique / récupération)
* En fin de prépa, comparer avec la prépa de l'an dernier en pro-analytics
### Cas 2 — Bloc force max sur 3 semaines [#cas-2--bloc-force-max-sur-3-semaines]
* Créer un **mésocycle** « Bloc force max » du 15 octobre au 5 novembre
* Tag dominant : **musculation force**
* Comparer ce bloc à celui de la saison précédente (volume, charge cumulée, blessures associées)
### Cas 3 — Stage en altitude [#cas-3--stage-en-altitude]
* Créer un **microcycle** « Stage Font-Romeu » du 12 au 19 février
* Phase : préparation spécifique
* Couleur dédiée pour le repérer instantanément dans le calendrier
* Comparer à un stage équivalent en bord de mer pour mesurer l'effet altitude
### Cas 4 — Retour de blessure [#cas-4--retour-de-blessure]
* Créer un **microcycle** « Retour à la compétition - Joueur X » sur 2-3 semaines
* Phase : récupération
* Suivi spécifique sur ce sportif uniquement
* Vérifier en fin de cycle le ratio Apte / Adapté / Réhab pour valider le retour
## Erreurs à éviter [#erreurs-à-éviter]
* **Cycles vides** : créer un cycle qui ne contient aucun événement n'apporte rien. Le cycle est un **conteneur**, il a besoin de séances, matchs, RDV pour exister.
* **Cycles qui se chevauchent** mal pensés : si tu poses 2 mésocycles qui se recouvrent en partie, l'analyse pourra devenir confuse. Privilégie des cycles **non-chevauchants** au même niveau (ou utilise les niveaux : un macrocycle peut englober plusieurs mésocycles, c'est normal).
* **Modifier les dates après analyse** : si tu changes les dates d'un cycle déjà analysé, l'analyse devra se recalculer. Verrouille les dates en début de cycle si possible.
* **Pas de couleur, pas de phase** : un cycle sans couleur distinctive et sans phase renseignée perd 50 % de sa valeur en analyse (impossible de le repérer visuellement, impossible de filtrer par phase).
* **Programmer trop loin** : au-delà de 4-6 semaines, les cycles deviennent théoriques. Travaille par **mésocycles glissants** que tu ajustes au fur et à mesure.
* **Confondre cycle et événement** : un cycle ne se substitue pas à une séance. Cycle = pourquoi tu travailles cette semaine. Événement = ce que tu fais ce jour-là.
## Aller plus loin [#aller-plus-loin]
# Planification et programmation (/docs/planification/programmation)
## Vue d'ensemble [#vue-densemble]
La **programmation** va plus loin que la planification au jour le jour : elle te permet de construire la **structure type** d'une semaine d'entraînement, puis de la dérouler automatiquement sur plusieurs semaines.
Tout se passe sur la page **Programmation** du créateur, accessible depuis le menu **Création > Planification**. La page se compose d'une **sidebar gauche** (templates et ressources) et d'un **calendrier** au centre (vue mois / semaine / jour / agenda).
## Concepts clés [#concepts-clés]
### Les cycles de travail [#les-cycles-de-travail]
Les cycles structurent ta saison en grandes phases. Tu les retrouves dans la sidebar sous **« Cycles de travail »**.
| Cycle | Durée | Rôle |
| -------------- | -------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| **Microcycle** | 1 semaine | Structure d'une semaine type (ex: lundi off, mardi technique, mercredi physique, jeudi tactique, vendredi activation, samedi match) |
| **Mésocycle** | 3 à 6 semaines | Bloc avec un objectif global (préparation, compétition, transition) |
| **Macrocycle** | Saison entière | Vision long terme : pic de forme, périodes de charge, périodes de décharge |
Un cycle est un **conteneur temporel** : il s'affiche en bandeau sur plusieurs jours et regroupe visuellement les événements qu'il couvre. À la création, tu choisis sa **phase** (préparation, compétition, récupération, transition), ses **objectifs principaux et secondaires**, ses **thèmes prioritaires** (endurance, vitesse, force…), et le **nombre prévisionnel de séances et de matchs**.
### Les événements [#les-événements]
Là où le cycle planifie la **structure**, l'événement représente l'**action concrète** posée un jour donné, à une heure donnée. Quatre types d'événements coexistent dans la programmation, chacun avec son objectif propre.
| Type | Sidebar | Bouton de création | Objectif |
| -------------------- | ----------------- | ------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Séance** | Séances | « Créer une séance » | Entraînement avec **RPE attendu**, charge, thème principal (terrain, musculation, ré-athlétisation, adaptée), consignes, infrastructure et questionnaire associé |
| **Match** | Matchs | « Créer un match » | Compétition avec **adversaire**, niveau, domicile/extérieur, compétition + phase, score, heure de RDV, échauffement, transport, système de jeu, titulaires/remplaçants |
| **Réunion** | Réunions | « Créer une réunion » | Échange avec **type** (technique, tactique, individuelle, collective, vidéo, médicale), **plateforme** (présentiel, Teams, Zoom, Meet) + lien visio, ordre du jour, compte-rendu |
| **RDV para-sportif** | RDV para-sportifs | « Créer un RDV extra-sportif » | RDV médical / kiné / ostéo / psy / nutrition / podologue / dentiste avec praticien, motif, type de consultation, urgence, lien éventuel avec une blessure |
Chaque type a sa **couleur dédiée** dans le calendrier (séance bleu, match orange, réunion cyan, para-sportif vert) pour repérer d'un coup d'œil l'équilibre de ta semaine.
### Cycle vs événement, en bref [#cycle-vs-événement-en-bref]
* **Cycle** = pourquoi tu travailles cette semaine (objectif, phase, thèmes).
* **Événement** = ce que tu fais ce jour-là, à cette heure-là (séance précise, match, réunion, RDV).
Un cycle bien construit donne du sens à la suite d'événements qu'il couvre. Sans cycle, tu as un calendrier ; avec cycle, tu as une **programmation**.
## Étapes [#étapes]
### 1. Définir ton microcycle type [#1-définir-ton-microcycle-type]
Depuis la sidebar, ouvre la section **Cycles de travail** et clique sur **Créer un cycle**. Choisis le type **Microcycle**, sa phase, ses objectifs et ses thèmes prioritaires. Glisse-le ensuite sur la semaine voulue dans le calendrier.
Ajoute les événements de la semaine en glissant **Séance**, **Match**, **Réunion** ou **RDV para-sportif** depuis la sidebar sur les bons jours et créneaux horaires.
### 2. Décliner sur plusieurs semaines [#2-décliner-sur-plusieurs-semaines]
Duplique ton microcycle sur les semaines suivantes (clic droit > **Dupliquer**) et regroupe-les sous un **mésocycle** (3 à 6 semaines avec un objectif global). Ajuste les exceptions au cas par cas : matchs imposés, jours fériés, RDV médicaux.
Tu peux **dupliquer** un mésocycle d'une saison précédente pour partir d'une
base éprouvée plutôt que de tout reconstruire.
## Astuces pour aller plus vite [#astuces-pour-aller-plus-vite]
La programmation est conçue pour qu'on évite d'ouvrir une grande modale à chaque retouche. Trois mécanismes te permettent d'agir directement depuis le calendrier.
### Drag and drop [#drag-and-drop]
Tout est draggable, et le drop a un comportement intelligent selon ce que tu glisses :
* **Depuis la sidebar vers le calendrier** : crée directement un nouvel événement (séance, match, cycle, réunion, RDV) à la date et à l'heure cible.
* **D'un événement vers un autre jour ou créneau** : déplace l'événement en conservant sa durée. En vue **semaine**, l'heure d'origine est conservée — seul le jour change.
* **D'un événement sur un autre événement** : aligne les deux sur le même horaire (utile pour un chevauchement intentionnel : double séance, séance + RDV kiné).
* **Tag → événement** : ajoute le tag à l'événement.
* **Document → événement** : attache le document à l'événement.
* **Mapper data → événement** : ajoute une instance du mapper (avec la bonne portée selon que le mapper est *par événement* ou *par sportif*).
### Clic droit sur un événement [#clic-droit-sur-un-événement]
Un menu contextuel s'ouvre directement sur l'événement, sans avoir à l'ouvrir :
* **Dupliquer** — clone complet de l'événement (paramètres, participants, métadonnées).
* **Synchroniser GPS** ou **Modifier session GPS** — visible uniquement sur les séances et matchs si le GPS est configuré.
* **Voir statistiques** — bascule sur la page de stats de la séance ou du match concerné.
* **Supprimer** — suppression définitive (avec confirmation pour les événements récurrents).
### Tooltip « + » : édition rapide sans ouvrir la modale [#tooltip-----édition-rapide-sans-ouvrir-la-modale]
Quand tu survoles un événement, un **bouton rond noir avec un « + »** apparaît en haut à droite. Clique dessus pour ouvrir un **tooltip d'édition rapide** sur le côté de l'événement.
Tu peux y modifier directement, sans ouvrir le grand formulaire :
* L'**horaire** et la **durée** affichés en clair.
* Le **RPE attendu** avec les boutons − / + (couleur dégradée du bleu au rouge selon l'intensité).
* La **séance liée** (recherche + sélection paginée).
* L'**équipe** rattachée.
* Les **participants** (cases à cocher avec recherche).
* Le **questionnaire** associé et son taux de remplissage (badge coloré).
* Les **tags**, **documents** et **mappers data** déjà présents.
* L'état de la **session GPS** (sur séance ou match).
Les modifications sont **sauvegardées automatiquement** via debounce — tu n'as rien à valider. Deux raccourcis utiles en bas du tooltip : **Voir statistiques** et **Dupliquer / Supprimer** dans le header.
Réflexe à prendre : pour un ajustement rapide (déplacer un créneau, modifier
un RPE, ajouter un participant), passe par le **drag and drop** ou le
**tooltip +**. Réserve l'ouverture du grand formulaire aux créations et aux
modifications structurelles.
## Erreurs à éviter [#erreurs-à-éviter]
* **Programmer trop loin** : au-delà de 4 semaines, la programmation devient théorique. Travaille par mésocycles glissants.
* **Oublier les matchs** : la programmation doit s'articuler autour des matchs déjà fixés, pas l'inverse.
* **Charger toutes les semaines à 100 %** : intègre des semaines de **décharge** (60-70 % de charge) toutes les 3 à 4 semaines.
* **Confondre cycle et événement** : un cycle ne se contente pas d'« exister » — sans événements posés à l'intérieur, il ne sert à rien. À l'inverse, des événements sans cycle ne forment pas une programmation.
## Aller plus loin [#aller-plus-loin]
# Tags d'événements (/docs/planification/tags-evenements)
## Vue d'ensemble [#vue-densemble]
Un **tag d'événement** est une étiquette **colorée**, **libre** et **multi-affectable** que tu colles sur n'importe quel événement (séance, match, réunion, RDV, cycle). Les tags servent à :
* **catégoriser** un événement transversalement à son type (ex: tagger une séance comme « J-2 » + « Tactique » + « Niveau 2 »),
* **filtrer** le calendrier et les dashboards par tag,
* **pré-tagger** les événements créés depuis un template.
## Tag vs type d'événement [#tag-vs-type-dévénement]
C'est une distinction importante :
| | **Type** d'événement | **Tag** |
| ------------------------- | ------------------------------------------------------ | --------------------------------------------- |
| Valeurs possibles | 5 fixes : Séance / Match / Réunion / RDV Extra / Cycle | Libres, créés par toi |
| Modifiable après création | Non | Oui à tout moment |
| Multi | Non — un événement = un type | Oui — un événement = autant de tags que voulu |
| Impact UI | Détermine le formulaire et la couleur de l'événement | Affichage en chips, sert au filtrage |
Autrement dit : le **type** définit ce qu'est l'événement, le **tag** ajoute des étiquettes pour t'y retrouver.
## Anatomie d'un tag [#anatomie-dun-tag]
Un tag est composé de :
* **Nom du tag** — texte libre, unique pour ton compte (ou pour ton club si partagé).
* **Couleur** — choisie dans la palette FormaPulse.
## Tags fournis par défaut [#tags-fournis-par-défaut]
À l'inscription, FormaPulse pré-installe une **bibliothèque de tags** prêts à l'emploi.
### Tags temporels (8 tags) [#tags-temporels-8-tags]
`J-3`, `J-2`, `J-1`, `J`, `J+1`, `J+2`, `J+3`, `J+4`
Pour situer la séance par rapport à un match. Très utile pour piloter la charge sur la semaine type.
### Tags d'activité (4 tags) [#tags-dactivité-4-tags]
| Tag | Usage |
| -------------- | -------------------------------------------------- |
| `Match` | Marquer un événement comme match (en plus du type) |
| `Entraînement` | Catégorisation générique des séances |
| `Test` | Identifier les séances de tests physiques |
| `Protocole` | Séances suivant un protocole défini |
### Tags Retour à la performance (2 tags) [#tags-retour-à-la-performance-2-tags]
| Tag | Usage |
| ----- | -------------------------------------------------------------- |
| `RTP` | Return To Performance — phases de réathlétisation |
| `RTF` | Return To Function — phases plus précoces du retour à l'effort |
### Tags d'intensité (3 tags) [#tags-dintensité-3-tags]
`Niveau 1`, `Niveau 2`, `Niveau 3` — estimation a priori de l'intensité de la séance.
### Tags de format de séance (3 tags) [#tags-de-format-de-séance-3-tags]
`Musculation`, `Individuelle`, `Collective`
## Créer un tag [#créer-un-tag]
Deux façons :
### Création rapide depuis la sidebar [#création-rapide-depuis-la-sidebar]
Dans le calendrier de **Planification**, sidebar gauche, déplie la section **Tags** puis clique sur **+** à côté de « Mes tags ». Une modale « Créer un tag personnalisé » s'ouvre avec :
* **Nom du tag** (placeholder « Ex: Échauffement, Récupération… »)
* **Couleur du tag** (palette de couleurs)
* **Aperçu** en temps réel
Bouton **Créer le tag**.
### Édition depuis le panneau du tag [#édition-depuis-le-panneau-du-tag]
Cliquer sur un tag existant dans la sidebar ouvre un **panneau latéral** avec :
* **Aperçu** du tag
* **Nom du tag** (modifiable)
* **Couleur** (palette plus large que la modale rapide)
* **Identifiant** (lecture seule)
* **Date de création** (lecture seule)
* Boutons **Enregistrer** / **Supprimer ce tag**
## Appliquer un tag à un événement [#appliquer-un-tag-à-un-événement]
Trois façons :
### 1. Depuis la fiche événement [#1-depuis-la-fiche-événement]
Dans la modale de création / édition d'événement, popover **+ Ajouter des tags** : recherche + liste de checkbox. Tu coches les tags voulus, ils s'affichent ensuite comme **chips colorées** au-dessus du popover (avec un X pour les retirer).
### 2. Drag & drop sur un événement existant [#2-drag--drop-sur-un-événement-existant]
Depuis la sidebar, **glisse un tag** directement sur un événement du calendrier. Le tag s'ajoute sans avoir à rouvrir la fiche événement.
### 3. Préréglé via un template [#3-préréglé-via-un-template]
Si un template d'événement contient des tags par défaut, ils sont **automatiquement appliqués** à chaque événement créé à partir de ce template (cf. [Templates d'événement](/docs/planification/templates-personnalises)).
## Filtrer par tag [#filtrer-par-tag]
* **Calendrier de planification** — filtres au-dessus du calendrier pour n'afficher que les événements portant certains tags.
* **Dashboards** — filtre **Tags ressources** dans le header du dashboard. Toutes les données sont restreintes aux événements portant les tags sélectionnés. Voir [Filtres dynamiques des dashboards](/docs/dashboards/filtres-dynamiques).
## Tags personnels vs tags club [#tags-personnels-vs-tags-club]
* **Personnels** — créés par un coach pour son usage propre, invisibles aux autres.
* **Club** — créés par un compte club ou rattaché à un club, visibles par tous les membres du staff.
Les tags par défaut fournis par FormaPulse sont accessibles à tous. Seul le **propriétaire** peut modifier ou supprimer un tag personnalisé.
## Erreurs à éviter [#erreurs-à-éviter]
* **Trop de tags** — passé 15-20 tags, plus personne ne s'y retrouve. Préfère des **familles** claires (temporel, intensité, type, retour-perf) à un tag spécifique pour chaque cas.
* **Doublons orthographiques** — `tactique`, `Tactique` et `Tactique ` créent **trois tags différents**. Standardise (tout minuscule, sans accent, sans espace final) ou utilise les seeds existants.
* **Confondre tag et type** — un événement « vidéo analyse » récurrent mérite plutôt un **template Réunion** dédié qu'un tag posé à chaque fois sur un événement vide. Le tag catégorise, le template structure.
## Aller plus loin [#aller-plus-loin]
# Templates d'événement (/docs/planification/templates-personnalises)
## Vue d'ensemble [#vue-densemble]
Un **template d'événement** est un événement préréglé que tu sauvegardes une fois et que tu **glisses-déposes** ensuite sur le calendrier autant de fois que nécessaire. L'événement créé hérite de **tous les réglages** du template : durée, équipe, joueurs convoqués, staff, infrastructure, tags, questionnaire associé, mappers de données, RPE attendu, etc.
C'est l'outil principal pour **accélérer la planification** quand un même type d'événement revient régulièrement (séance de réathlétisation, séance technique du mardi, match de championnat, cycle de préparation, réunion staff hebdomadaire…).
## Les 5 types de templates [#les-5-types-de-templates]
FormaPulse propose **5 types d'événement** reflétant la réalité du quotidien d'un staff. Chaque type a sa propre structure de réglages.
| Type | À quoi ça sert |
| ------------- | ------------------------------------------------------------------------------------- |
| **Séance** | Entraînements de tous types (collectifs, individuels, musculation, technique, rehab…) |
| **Match** | Rencontres officielles ou amicales |
| **Cycle** | Phases pluri-jours de la saison (préparation, transition, micro-cycle…) |
| **Réunion** | Réunions staff, équipe, individuelles, débriefings |
| **RDV Extra** | Rendez-vous médicaux, kiné, psy, nutritionniste, tests, visites |
## Ce qu'un template peut préremplir [#ce-quun-template-peut-préremplir]
### Template Séance [#template-séance]
* **Durée** par défaut
* **Description** et **objectifs** de la séance
* **Thème principal** + **thèmes secondaires**
* **Équipe** et **joueurs** convoqués
* **Staff** affecté
* **Infrastructure** (terrain, salle…)
* **Questionnaire** associé (douleur, fraîcheur, RPE post-séance…)
* **Tags** par défaut (par exemple « J+1 » + « RTP » + « Niveau 2 »)
* **Documents** attachés (programme, fiche…)
* **Mappers de données** à remplir au report
* **RPE attendu**
### Template Match [#template-match]
* **Durée** (90 min par défaut)
* **Type de match** : championnat, coupe, amical
* **Lieu** : domicile / extérieur
* **Compétition**
* **Système de jeu**
* **Objectifs du match**
* **Équipe**, **joueurs convoqués**, **staff**, **infrastructure**
* **RPE attendu**
### Template Cycle [#template-cycle]
* **Durée par défaut** (en jours, 7 par défaut)
* **Objectif principal**
* **Type de cycle**
* **Phase de la saison**
* **Description**
### Template Réunion [#template-réunion]
* **Durée**
* **Type de réunion** : staff, équipe, individuelle, débriefing, parents
* **Sujet principal**
* **Ordre du jour**
* **Plateforme** et **lien de visioconférence**
### Template RDV Extra [#template-rdv-extra]
* **Durée**
* **Type de RDV** : médical, kiné, psy, nutritionniste, test, visite
* **Motif**
## Créer un template [#créer-un-template]
Deux entrées possibles, qui ouvrent la même modale.
### Depuis la page « Templates d'événements » [#depuis-la-page--templates-dévénements-]
Dans le menu, sous **Planification**, ouvre **Templates d'événements**. Cinq onglets te listent les templates existants par type : **Séances**, **Matchs**, **Cycles**, **Réunions**, **RDV**. Le bouton **Nouveau template** lance la création dans le type courant.
### Depuis la sidebar du calendrier [#depuis-la-sidebar-du-calendrier]
Dans le calendrier de planification, la sidebar gauche regroupe tes templates par type (« Séances », « Matchs », « Réunions », « RDV para-sportifs », « Cycles de travail »). Chaque section a un bouton **+** qui crée un template du type correspondant.
### La modale de création [#la-modale-de-création]
Une modale s'ouvre — c'est le **même formulaire que pour créer un événement**, en mode « template » : pas de date ni de récurrence, mais une **durée** à la place.
### Remplir les étapes [#remplir-les-étapes]
Le formulaire est découpé en plusieurs étapes :
* **Informations générales** — titre, durée, type d'événement, couleur
* **Participants** — équipe, joueurs convoqués, staff
* **Contenu** — champs spécifiques au type (objectifs, thèmes pour séance ; adversaire, lieu, système pour match ; sujet, ordre du jour pour réunion…)
* **Data** — questionnaire associé, mappers de données à remplir au report
* **Logistique** — infrastructure, adresse, transport, RDV
* **Détails** — métadonnées additionnelles, tags
Tout ce que tu renseignes ici sera **pré-rempli automatiquement** sur chaque événement créé à partir du template.
### Enregistrer [#enregistrer]
Une fois validé, le template apparaît immédiatement dans son onglet de la page « Templates d'événements » **et** dans la sidebar du calendrier, prêt à être glissé.
## Appliquer un template à un événement [#appliquer-un-template-à-un-événement]
Le flux d'application repose sur le **drag & drop** depuis la sidebar gauche du calendrier :
1. Ouvre le calendrier de **Planification**.
2. La sidebar gauche liste tes templates par catégorie (Séances, Matchs, Réunions, RDV para-sportifs, Cycles de travail) avec une barre de recherche en haut.
3. **Saisis le template** avec la souris et **glisse-le** sur la date / créneau voulu du calendrier.
4. L'événement se crée pré-rempli avec tous les réglages du template — il ne te reste qu'à confirmer ou ajuster ce qui change ce jour-là (l'adversaire d'un match, un joueur absent, un tag spécifique).
Tu peux aussi **glisser un tag, un document ou un mapper** depuis la
sidebar **directement sur un événement existant** du calendrier pour
l'enrichir sans rouvrir la fiche événement.
## Gérer ses templates [#gérer-ses-templates]
Sur la page **Templates d'événements** :
* **Cliquer sur un template** ouvre un panneau latéral avec ses détails complets (lecture seule).
* **Bouton œil** : masque / réaffiche le template dans la sidebar du calendrier (sans le supprimer). Pratique pour mettre en sommeil un template saisonnier.
* **Bouton corbeille** : supprime définitivement le template.
## Templates personnels vs templates club [#templates-personnels-vs-templates-club]
Un template peut être :
* **Personnel** — créé par un coach pour son usage propre. Personne d'autre ne le voit.
* **Club** — créé par un compte club ou rattaché à un club. Visible par tous les membres du staff de ce club, modifiable selon les droits.
La portée est définie automatiquement à la création selon ton compte. Le **propriétaire** (créateur, ou admin du club) garde la main sur la modification et la suppression.
## 4 cas d'usage concrets [#4-cas-dusage-concrets]
**1. Séance de réathlétisation J+1**
Template Séance avec : durée 45 min, thème principal « Réathlétisation », tag « RTP », tag « J+1 », questionnaire « Douleur post-blessure » associé, et la liste des joueurs en retour de blessure préaffectée. À chaque fois qu'un joueur reprend, tu glisses le template sur la date — les préréglages s'appliquent, tu n'as qu'à ajuster la liste des sportifs.
**2. Match de championnat à domicile**
Template Match avec : durée 90 min, type « championnat », lieu « domicile », compétition pré-saisie, infrastructure « stade principal », équipe première préaffectée, système de jeu type. Pour chaque match domicile, un drag & drop sur la date suffit — il ne reste qu'à saisir l'adversaire.
**3. Cycle de préparation 28 jours**
Template Cycle avec : durée par défaut 28 jours, objectif principal « Reprise progressive », type « préparation », phase de saison « pré-saison ». Glissé en début de chaque pré-saison.
**4. Réunion staff hebdomadaire**
Template Réunion avec : durée 60 min, type « staff », sujet « Bilan semaine », ordre du jour pré-rédigé, plateforme « visio », lien Zoom récurrent. Drag & drop chaque lundi matin.
## Erreurs à éviter [#erreurs-à-éviter]
* **Créer un template pour un événement unique** — si l'événement n'arrivera qu'une seule fois (un test exceptionnel, un déplacement particulier), pas la peine, crée-le directement comme événement libre.
* **Multiplier les variantes proches** — un template « Séance technique 60 min » et un template « Séance technique 90 min » peuvent généralement n'en faire qu'un, dont tu ajustes la durée à la création.
* **Oublier de masquer les templates obsolètes** — un template plus utilisé encombre la sidebar. Préfère le **masquer via le bouton œil** plutôt que de le supprimer si tu penses le réutiliser plus tard.
## Aller plus loin [#aller-plus-loin]
# Ajouter un joueur sur l'app mobile (/docs/joueurs/ajouter-joueur-app-mobile)
## Vue d'ensemble [#vue-densemble]
Une fois un joueur créé dans la page **Sportifs**, tu peux lui ouvrir l'accès à l'**application mobile FormaPulse Joueur**. Cet accès lui permet :
* de **consulter ses séances et matchs** à venir,
* de **répondre aux questionnaires** que tu lui envoies,
* de visualiser **ses propres statistiques** (présences, charge, ressentis),
* de recevoir tes **notifications de rappel** (questionnaires non remplis, convocations, etc.).
Deux méthodes pour lui donner accès :
1. **Invitation par email** — tu lui envoies un lien, il choisit lui-même son mot de passe à la première connexion.
2. **Création directe des identifiants** — tu définis toi-même son mot de passe lors de la création de la fiche, puis tu lui transmets ses identifiants par le canal de ton choix.
## Pré-requis [#pré-requis]
* Le joueur doit avoir un **email valide** renseigné sur sa fiche (champ `Email` du formulaire de création — voir [Ajouter un joueur](/docs/joueurs/ajouter-un-joueur)).
* L'app mobile **FormaPulse Joueur** doit être installée par le joueur sur son téléphone (iOS ou Android).
* L'option **« Mot de passe »** dans la fiche du joueur sert à ouvrir directement un accès sans passer par l'invitation.
## Méthode 1 — Invitation par email [#méthode-1--invitation-par-email]
C'est la méthode standard, recommandée quand tu veux que le joueur **gère lui-même** son mot de passe.
### Étapes [#étapes]
1. Depuis la **page Sportifs**, ouvre la fiche du joueur.
2. Vérifie que son **email est correctement renseigné** (sans faute, sans espace, sans majuscule en trop — voir les erreurs à éviter).
3. Clique sur **Envoyer une invitation** (ou équivalent selon la version).
4. Un email est automatiquement envoyé au joueur avec un **lien personnalisé** qui le redirige vers l'app mobile (ou vers le store s'il ne l'a pas encore installée).
5. À la première ouverture du lien, le joueur **définit lui-même son mot de passe** et accède à son compte.
### Avantages [#avantages]
* Le joueur a la main sur son mot de passe.
* Pas de partage d'identifiants à gérer côté coach.
* Compatible avec les politiques de sécurité (le coach ne connaît jamais le mot de passe).
### Inconvénients [#inconvénients]
* Demande une action du joueur (ouvrir l'email, cliquer, choisir un mot de passe).
* Si l'email part en spam ou si le joueur ne le voit pas, il faut le relancer.
## Méthode 2 — Création directe des identifiants [#méthode-2--création-directe-des-identifiants]
Pratique quand tu veux **pouvoir transmettre les identifiants de la main à la main** (ex: en début de saison, lors d'une réunion d'équipe), ou quand le joueur n'a pas un usage avancé du mail.
### Étapes [#étapes-1]
1. Au moment de **créer la fiche du joueur** (ou en l'éditant ensuite), renseigne les champs :
* **Email** (servira d'identifiant de connexion)
* **Mot de passe** (que tu choisis)
2. Valide la fiche.
3. **Transmets les identifiants au joueur** par le canal de ton choix (verbal, papier, message privé). L'idéal est de lui demander de **changer son mot de passe** à la première connexion.
4. Le joueur ouvre l'app mobile, se connecte avec ces identifiants et accède directement à son compte.
### Avantages [#avantages-1]
* Le joueur peut se connecter immédiatement, sans dépendre d'un email.
* Pratique en réunion d'équipe pour activer tout le monde d'un coup.
### Inconvénients [#inconvénients-1]
* Le coach connaît le mot de passe initial — il faut donc inciter le joueur à le changer.
* Saisie manuelle, donc plus de risque d'erreur.
## Que voit le joueur dans l'app ? [#que-voit-le-joueur-dans-lapp-]
Une fois connecté, le joueur accède à :
* **Son agenda** : séances, matchs, RDV à venir.
* **Ses questionnaires en attente** : avec rappel push si configuré (voir [Notifications de rappel questionnaire](/docs/statistiques/notifications-rappel-questionnaire)).
* **Ses statistiques personnelles** : présences, ressentis, charge, blessures (selon les autorisations de lecture configurées par le coach).
## Erreurs à éviter [#erreurs-à-éviter]
* **Email mal formaté** : un email avec une faute (espace, majuscule en trop, point manquant) bloquera l'invitation et la connexion. Vérifie soigneusement avant d'envoyer.
* **Mot de passe trop simple** : si tu crées toi-même le mot de passe, évite `123456` ou `motdepasse`. Demande au joueur de le changer dès la première connexion.
* **Oublier de renseigner l'email** : sans email, ni l'invitation ni la création directe ne fonctionnent. C'est l'identifiant unique de connexion.
* **Plusieurs joueurs avec le même email** : un email = un compte. Si deux joueurs partagent un email familial, l'un d'eux ne pourra pas avoir son propre compte.
* **App mobile pas installée** : si le joueur clique sur le lien d'invitation sans avoir l'app, il est redirigé vers le store. Préviens-le qu'il doit d'abord installer **FormaPulse Joueur**.
* **Tester avec un compte fictif sans suivre la procédure** : si tu veux te mettre à la place du joueur, crée-toi un compte test avec un email différent du tien — sinon les liens d'invitation entrent en conflit.
## Cas d'usage typiques [#cas-dusage-typiques]
* **Début de saison, équipe entière** : crée tous les joueurs avec **mot de passe direct**, distribue les identifiants en réunion d'équipe, demande à chacun de le changer.
* **Recrue en cours de saison** : crée la fiche, **envoie l'invitation par email**, vérifie que le joueur reçoit bien l'email (sinon spam).
* **Joueur sans smartphone ou sans email** : ne crée pas d'accès mobile, le coach saisira les questionnaires pour lui (mode dégradé) ou le joueur viendra remplir sur un poste partagé.
* **Famille avec un seul email** : utiliser un alias `joueur+formapulse@example.com` (gmail accepte les `+` qui redirigent vers la même boîte) pour avoir des identifiants distincts.
## Aller plus loin [#aller-plus-loin]
# Ajouter un joueur (/docs/joueurs/ajouter-un-joueur)
## Vue d'ensemble [#vue-densemble]
Tu ajoutes tes joueurs **un par un**, depuis la page **Sportifs** (menu **Équipes > Sportifs**). Une fois le joueur créé, tu pourras le rattacher à une équipe et lui envoyer une invitation pour l'app mobile joueur, ou le faire en même temps que la création du joueur en lui envoyant ses identifiants.
## Étapes [#étapes]
### 1. Accéder à la page Sportifs [#1-accéder-à-la-page-sportifs]
Depuis le menu latéral, va sur **Équipes > Sportifs**.
### 2. Cliquer sur « Ajouter un sportif » [#2-cliquer-sur--ajouter-un-sportif-]
Le formulaire de création s'ouvre.
### 3. Remplir la fiche [#3-remplir-la-fiche]
| Champ | Obligatoire | Détails |
| -------------------------------- | ----------- | ------------------------------------------------------------------ |
| **Nom** | Oui | — |
| **Prénom** | Oui | — |
| **Sport** | Oui | Sport pratiqué (football, basket, rugby…) |
| **Couleur** | Oui | Couleur d'identification visuelle du joueur dans l'app |
| **Photo** | Non | Affichée dans l'effectif et l'app joueur |
| **Email** | Non | Indispensable pour lui donner accès à **l'app mobile joueur** |
| **Téléphone** | Non | — |
| **Poste** | Non | À choisir parmi les **postes** que tu as configurés |
| **Mot de passe** | Non | Pour ouvrir directement un accès à l'app mobile joueur |
| **Informations supplémentaires** | Non | Champs libres (taille, poids, latéralité, numéro de licence, etc.) |
### 4. Valider [#4-valider]
Clique sur **Créer**. Le joueur est ajouté à la liste de tes sportifs.
## Étapes suivantes [#étapes-suivantes]
Une fois le joueur créé :
1. **Rattache-le à une équipe** depuis la page de l'équipe (sinon il restera un sportif individuel sans équipe). → [Créer une équipe](/docs/club-equipes/creer-une-equipe)
2. **Envoie-lui une invitation à l'app mobile** (s'il a un email renseigné) pour qu'il puisse consulter ses séances et répondre aux questionnaires ou bien créé lui l'accès directement et envoie lui ses identifiants.
3. **Configure les permissions de lecture** dans les préférences si tu veux restreindre certaines données.
Les **postes** disponibles sont ceux que tu as créé. Si le poste exact n'existe pas, tu peux le créer puis
l'affecter au joueur ensuite.
## Erreurs à éviter [#erreurs-à-éviter]
* **Email mal formaté** : un email avec une faute (espace, majuscule en trop) bloquera la liaison avec l'app mobile joueur.
* **Oublier la couleur** : la couleur est obligatoire et sert à identifier le joueur dans les vues de groupe (calendrier, statistiques). Choisis une couleur unique par joueur de l'équipe pour éviter les confusions visuelles.
* **Saisir des données dans « Informations supplémentaires » sans cohérence** : ce champ étant libre, sa valeur dans les analyses dépend de toi. Garde le même format pour tous tes joueurs (par ex. taille en cm, jamais en m).
* **Créer le joueur sans le rattacher à une équipe** : il reste alors orphelin et n'apparaît pas dans les vues équipe (planification, stats équipe). Si tu fais un accompagnement individuel, tu peux le laisser sans equipe. Mais tu ne pourras pas alors faire d'analyse collective. Si tu souhaites analyser collectivement, attaque le a une **equipe indiivduelle**.
## Aller plus loin [#aller-plus-loin]
# Saisir l'anthropométrie (/docs/joueurs/prises-anthropometriques)
## Vue d'ensemble [#vue-densemble]
L'anthropométrie regroupe les **mensurations corporelles** que tu saisis périodiquement pour suivre le développement d'un joueur. FormaPulse enregistre les mesures, calcule l'**IMC** automatiquement et — si toutes les données nécessaires sont renseignées — calcule également l'**indice de maturité (PHV)** selon la formule de **Mirwald et al. 2002**.
La saisie se fait **en lot** pour une même date : tu choisis une date de prise, tu sélectionnes un ou plusieurs sportifs, et tu remplis les colonnes pour chacun.
## Champs disponibles [#champs-disponibles]
| Champ | Unité | Calculé automatiquement ? |
| ----------------------------------------------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------ |
| **Poids** | kg | — |
| **Taille** | cm | — |
| **Taille assise** | cm | — |
| **Hauteur du banc** *(utilisé pour mesurer la taille assise)* | cm | — |
| **Masse grasse** | % | — |
| **IMC** | kg/m² | ✅ Oui — à partir du poids et de la taille |
| **Indice de maturité (PHV)** | années | ✅ Oui — si poids, taille, taille assise, hauteur banc, date de naissance et genre du sportif sont renseignés |
## Étapes [#étapes]
### 1. Accéder à la saisie d'anthropométrie [#1-accéder-à-la-saisie-danthropométrie]
Depuis le menu latéral, va sur **Équipes > Anthropométrie**.
### 2. Démarrer une nouvelle prise [#2-démarrer-une-nouvelle-prise]
Clique sur **Nouvelle prise**. La date est commune à toutes les prises saisies dans ce lot (par défaut : aujourd'hui).
### 3. Sélectionner les sportifs [#3-sélectionner-les-sportifs]
Coche les sportifs de l'équipe pour lesquels tu veux saisir une prise. Tu peux saisir plusieurs joueurs en une seule session.
### 4. Saisir les mesures [#4-saisir-les-mesures]
Pour chaque sportif, remplis les colonnes que tu as mesurées. Tu n'es **pas obligé** de tout renseigner — par exemple, tu peux ne saisir que poids et taille à certaines périodes.
### 5. Valider [#5-valider]
L'IMC est calculé immédiatement (s'il y a poids + taille). L'indice de maturité (PHV) est calculé automatiquement **si toutes les données nécessaires sont disponibles** (voir section suivante).
## Le calcul du PHV (indice de maturité) [#le-calcul-du-phv-indice-de-maturité]
Le PHV (Peak Height Velocity, ou « pic de croissance ») est un indicateur clé de la **maturation biologique** chez les jeunes athlètes. FormaPulse utilise la formule de **Mirwald et al. 2002**, avec deux équations distinctes selon le genre.
### Variables nécessaires au calcul [#variables-nécessaires-au-calcul]
Le PHV n'est calculé que si **TOUTES** les données suivantes sont disponibles :
**Sur la prise anthropométrique :**
* ✅ Poids (kg)
* ✅ Taille (cm)
* ✅ Taille assise (cm)
* ✅ Hauteur du banc (cm)
**Sur la fiche du sportif** (dans **Informations supplémentaires > Informations générales**) :
* ✅ Date de naissance (format JJ/MM/AAAA ou AAAA-MM-DD)
* ✅ Genre (Homme ou Femme)
### Ce que renvoie le calcul [#ce-que-renvoie-le-calcul]
Le PHV est exprimé en **années** : c'est l'écart entre l'âge actuel du sportif et son âge au pic de croissance.
* **PHV négatif** (ex: -1,5) → le sportif est **avant** son pic de croissance (encore en pré-puberté ou en pleine croissance)
* **PHV ≈ 0** → le sportif est **au pic** de croissance
* **PHV positif** (ex: +1,5) → le sportif est **après** son pic (croissance en ralentissement / fin de maturation)
Si une seule des données nécessaires manque, le PHV reste à **null** sans
bloquer l'enregistrement de la prise. Tu peux toujours renseigner les
données manquantes plus tard et **modifier la prise** pour relancer le
calcul.
## Modification d'une prise [#modification-dune-prise]
Si tu modifies une prise existante et que tu touches à un champ impliqué dans le calcul PHV (poids, taille, taille assise, hauteur banc, ou date de la prise), le PHV est **automatiquement recalculé** avec les nouvelles valeurs.
## Erreurs à éviter [#erreurs-à-éviter]
* **Mélanger les unités** : la taille en cm, le poids en kg, la masse grasse en %. FormaPulse n'effectue pas de conversion automatique.
* **Saisir la taille en m au lieu de cm** : pour une taille de 1,75 m, saisis `175`, pas `1.75`. Sinon l'IMC et le PHV seront aberrants.
* **Oublier la hauteur du banc** : le banc utilisé pour mesurer la taille assise n'est pas toujours à 0 cm. Mesure-le et saisis-le. Sans cette valeur, le PHV ne se calcule pas.
* **Date de naissance ou genre non renseignés sur le sportif** : sans ces deux informations sur la fiche du sportif, le PHV est **systématiquement null**. → [Le PHV ne se calcule pas](/docs/erreurs-frequentes/phv-ne-se-calcule-pas)
* **Saisir des plis cutanés en pensant que ça calcule la masse grasse** : FormaPulse ne calcule pas la masse grasse à partir des plis. Tu saisis directement le **% de masse grasse** que tu obtiens via ta méthode (impédancemétrie, plis, DEXA, etc.).
## Aller plus loin [#aller-plus-loin]
# Saisir des tests physiques (/docs/joueurs/tests-physiques)
## Vue d'ensemble [#vue-densemble]
FormaPulse te permet d'enregistrer les résultats des **tests physiques** de tes joueurs (vitesse, VMA, détente, force…). Tu as **deux façons** de saisir les résultats :
* **Un par un** — pour saisir le résultat d'un sportif sur un test donné (cas typique : un test ponctuel).
* **Import CSV** — pour saisir en masse les résultats de plusieurs joueurs sur plusieurs tests à la fois (cas typique : journée de tests d'équipe).
Pour le **test lui-même** (ce que tu mesures), trois possibilités :
1. utiliser un **test existant** dans ta bibliothèque d'exercices,
2. **créer un nouveau test** à la volée pendant la saisie,
3. à l'import CSV : créer plusieurs nouveaux tests d'un coup à partir des colonnes du fichier.
## Méthode 1 — Saisie unitaire [#méthode-1--saisie-unitaire]
Tu enregistres **un résultat** pour **un sportif** à **une date donnée**.
### Champs disponibles [#champs-disponibles]
| Champ | Obligatoire | Détails |
| ---------------------------- | ----------- | --------------------------------------------------------------- |
| Sportif | Oui | Le joueur testé |
| Résultat | Oui | La valeur du test |
| Type de mesure | Oui | Type de la grandeur mesurée (temps, distance, % de RM…) |
| Exercice / test | Non | Lier à un exercice de ta bibliothèque |
| Nom du test | Non | Si tu ne lies pas à un exercice existant |
| Date | Non | Par défaut : aujourd'hui |
| Type de test | Non | Classique par défaut. D'autres types existent (par exemple VBT) |
| Unité | Non | s, m, %, kg… |
| Informations supplémentaires | Non | Champ libre pour le contexte (météo, surface, charge…) |
### Étapes [#étapes]
1. Va sur **Équipes > Tests**.
2. Lance la création d'un nouveau test.
3. Saisis le sportif, l'exercice (ou le nom du test si nouveau), la date, le résultat et l'unité.
4. Valide.
## Méthode 2 — Import CSV [#méthode-2--import-csv]
Tu importes un fichier `.csv` qui contient **une ligne par sportif** et **plusieurs colonnes** (chaque colonne = un test). FormaPulse créé automatiquement un résultat par cellule.
### Ce que tu fournis à l'import [#ce-que-tu-fournis-à-limport]
1. Le **fichier CSV**.
2. La **colonne qui identifie le joueur** — par exemple « Nom » ou « Email ».
3. La **colonne qui contient la date** du test.
4. Pour chaque autre colonne (chaque test), tu choisis :
* **Test existant** — tu lies la colonne à un exercice déjà présent dans ta bibliothèque.
* **Nouveau test** — tu donnes un nom, un type de mesure et une unité. FormaPulse crée le test à la volée.
5. Le **mapping des joueurs** — FormaPulse te montre les noms qui apparaissent dans la colonne joueur et te demande à quel sportif FormaPulse les rattacher.
### Sauvegarder la configuration d'import [#sauvegarder-la-configuration-dimport]
À la fin du paramétrage, tu peux **sauvegarder la configuration** (option activée par défaut). FormaPulse mémorise :
* les colonnes joueur et date,
* le mapping de chaque colonne vers un test (existant ou nouveau),
* le mapping des joueurs.
À l'import suivant **du même format de fichier**, FormaPulse te propose la configuration sauvegardée — tu n'as pas à tout reparamétrer.
Le nom de la configuration est généré automatiquement à partir du nom
du fichier importé. Tu peux le renommer à la sauvegarde.
### Résumé d'import [#résumé-dimport]
À la fin du traitement, tu obtiens un récapitulatif :
* **Lignes traitées** — nombre de lignes du fichier
* **Tests prévus** — total des cellules de tests à traiter (lignes × colonnes de tests)
* **Tests créés** — résultats effectivement créés
* **Tests mis à jour** — résultats existants mis à jour
* **Sportifs créés** — joueurs nouvellement créés si l'import en a généré
* **Erreurs** — liste des lignes en erreur
## Normes de test [#normes-de-test]
Une **norme** est une valeur de référence à laquelle on compare les résultats. FormaPulse propose **deux types** de normes :
### Normes fixes [#normes-fixes]
Tu **saisis manuellement** la valeur de référence (par exemple VMA cible = 16 km/h).
### Normes dynamiques [#normes-dynamiques]
Calculées automatiquement à partir de l'**historique de tes résultats**, sur une période en jours (par défaut 365). Tu choisis la méthode de calcul parmi :
| Méthode | Description |
| -------------- | -------------------------------------------------------------- |
| Moyenne | Moyenne des résultats sur la période |
| Médiane | Résultat du milieu (la moitié au-dessus, la moitié en dessous) |
| 75ᵉ percentile | Valeur en dessous de laquelle se situent 75 % des résultats |
| 90ᵉ percentile | Valeur en dessous de laquelle se situent 90 % des résultats |
| Maximum | Meilleur résultat de la période |
| Minimum | Pire résultat de la période |
### Spécificité d'une norme [#spécificité-dune-norme]
Une norme peut être :
* **Globale** — s'applique à tous les sportifs.
* **Par équipe** — limite la norme aux sportifs d'une équipe.
* **Par poste** — limite la norme aux sportifs occupant un poste.
* **Par équipe ET poste** — la norme la plus spécifique.
Quand un résultat est comparé, FormaPulse choisit **la norme la plus spécifique applicable** (poste + équipe > équipe > poste > globale).
Les normes ne génèrent **pas de classement** des joueurs. Elles servent
uniquement de référentiel pour situer un résultat individuel par rapport
à une cible ou à une distribution.
### Recalcul des normes dynamiques [#recalcul-des-normes-dynamiques]
Quand tes données évoluent (nouveaux tests passés), tu peux **recalculer** les normes dynamiques pour qu'elles intègrent les résultats récents. Le recalcul met à jour :
* la **valeur** de la norme,
* le **nombre d'échantillons** (combien de résultats ont servi au calcul),
* la **date du calcul**.
## Erreurs à éviter [#erreurs-à-éviter]
* **Mélanger les unités** : une même définition de test doit toujours être saisie dans la même unité (secondes, centièmes, mètres, %). Ne mélange pas un test saisi en secondes avec d'autres en minutes.
* **Conditions de test différentes** : un sprint sur surface synthétique vs herbe naturelle ne se compare pas. Utilise les **informations supplémentaires** pour noter les conditions.
* **Importer un CSV avec des noms de joueurs différents de FormaPulse** : si « Dupont J. » dans le CSV n'est pas mappé à « Dupont Jean » dans FormaPulse, ses résultats ne seront pas attribués. Le mapping initial est crucial.
* **Norme dynamique calculée sur trop peu d'échantillons** : si une norme est basée sur 3 résultats, elle n'est pas fiable. FormaPulse t'indique sur combien de résultats elle a été calculée.
* **Comparer des normes calculées avec des méthodes différentes** : moyenne et 75ᵉ percentile ne représentent pas la même chose. Choisis une méthode et garde-la.
## Aller plus loin [#aller-plus-loin]
# Questionnaire club vs personnel (/docs/questionnaires/club-vs-personnel)
## Vue d'ensemble [#vue-densemble]
Un questionnaire FormaPulse a **un périmètre** : soit **personnel** (privé à toi), soit **club** (partagé dans ton club). Le périmètre conditionne **qui peut voir, modifier et supprimer** le questionnaire.
Il existe aussi un troisième périmètre « système » pour les questionnaires fournis par FormaPulse.
## Les 3 périmètres [#les-3-périmètres]
| Périmètre | Visibilité par défaut |
| -------------- | ------------------------------------------- |
| **Personnel** | Toi seul |
| **Club** | Membres du club selon les règles ci-dessous |
| **FormaPulse** | Tout le monde, en lecture |
## Visibilité d'un questionnaire club [#visibilité-dun-questionnaire-club]
Pour un questionnaire **club**, FormaPulse applique les règles suivantes (du plus permissif au plus restrictif) :
* **Si tu es manager du club** → tu vois **tous** les questionnaires du club, sans exception.
* **Si tu es le créateur du questionnaire** → tu le vois toujours.
* **Si le questionnaire a une liste d'équipes autorisées** → tu le vois si une de tes équipes appartient à cette liste.
* **Sinon** → tu ne le vois pas.
Cela signifie qu'un coach assistant qui n'est manager d'aucune équipe ne voit pas les questionnaires créés par d'autres si aucune équipe ne lui est explicitement rattachée.
## Permissions de modification [#permissions-de-modification]
| Action | Personnel | Club |
| ----------------------------------- | ----------------- | --------------------------------------------- |
| **Voir** | Auteur uniquement | Selon les règles ci-dessus |
| **Modifier le contenu** | Auteur uniquement | Auteur OU manager du club |
| **Modifier les équipes autorisées** | — | **Manager uniquement** |
| **Supprimer** | Auteur uniquement | **Manager uniquement** (même si pas créateur) |
Les questionnaires **FormaPulse** ne peuvent **jamais** être supprimés.
## Restreindre un questionnaire club à certaines équipes [#restreindre-un-questionnaire-club-à-certaines-équipes]
Sur un questionnaire **club**, tu peux définir une liste d'**équipes autorisées**. Seuls les coachs qui ont accès à au moins une de ces équipes verront le questionnaire.
**Cas d'usage typiques** :
* Un questionnaire « Bilan U17 fin de saison » → restreint à l'équipe U17.
* Un questionnaire « Suivi blessures » → restreint au staff médical (via les permissions équipes du staff médical).
* Un questionnaire général « Wellness quotidien » → aucune restriction, visible par toutes les équipes du club.
### Modifier les équipes autorisées [#modifier-les-équipes-autorisées]
Seul **un manager** du club peut modifier la liste des équipes autorisées sur un questionnaire club existant. Si tu as créé le questionnaire mais que tu n'es pas manager, tu peux modifier le **contenu** mais pas les **équipes autorisées**.
La modification se fait depuis le **tableau des questionnaires** : sélectionne la ligne du questionnaire concerné puis utilise le **bouton Action** pour ouvrir la gestion des équipes affiliées.
## Comment choisir le périmètre ? [#comment-choisir-le-périmètre-]
| Question | Réponse → Périmètre |
| ----------------------------------------------------------- | -------------------------------------------------------------- |
| Tu travailles seul, c'est pour toi seulement | Personnel |
| Plusieurs coachs doivent voir les réponses | Club |
| Tu veux limiter à une équipe précise | Club + équipes autorisées |
| Le questionnaire doit être visible de tout le staff médical | Club + équipes autorisées (équipes que ton staff médical suit) |
Tu ne peux pas faire migrer un questionnaire **personnel → club** (ni
l'inverse) directement. Si tu changes d'avis, recrée-le dans le bon
périmètre.
## Erreurs à éviter [#erreurs-à-éviter]
* **Créer un questionnaire personnel pour un usage collectif** : tes co-coachs ne le verront jamais. Reproblématise dès la création : si plusieurs personnes doivent y accéder, c'est un questionnaire **club**.
* **Ne pas définir d'équipes autorisées quand c'est sensible** : un questionnaire « Suivi médical » sans restriction est visible par tout coach du club, y compris les non-médicaux. Restreins explicitement.
* **Vouloir supprimer un questionnaire club dont tu n'es pas le manager** : tu obtiendras une erreur, même si tu en es le créateur. Demande au manager.
## Aller plus loin [#aller-plus-loin]
# Créer un questionnaire (/docs/questionnaires/creer-un-questionnaire)
## Vue d'ensemble [#vue-densemble]
Un **questionnaire** est un ensemble de **questions** que tu peux faire remplir à tes sportifs (depuis leur app mobile) ou que tu peux remplir toi-même pour eux (depuis l'espace coach). Toute réponse est **liée à un événement** du calendrier (séance, match, soin…).
## Étapes [#étapes]
### 1. Aller sur la page Questionnaires [#1-aller-sur-la-page-questionnaires]
Depuis le menu latéral, va sur **Équipes > Questionnaires**.
### 2. Créer un nouveau questionnaire [#2-créer-un-nouveau-questionnaire]
Clique sur **Nouveau questionnaire**. Renseigne :
* **Nom** du questionnaire (champ obligatoire)
* **Liste des questions** que tu veux y inclure
### 3. Ajouter des questions [#3-ajouter-des-questions]
Pour chaque question, tu choisis un **type** parmi 4 (numérique, chiffre, texte, zone de douleur). Voir [Types de questions](/docs/questionnaires/types-de-questions) pour le détail.
Pour chaque question, tu renseignes :
| Champ | Description |
| ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Libellé** | La question telle qu'elle apparaîtra (ex: « Comment as-tu dormi cette nuit ? ») |
| **Nom de l'indicateur** | Nom court réutilisable (par exemple « qualité du sommeil ») — sert à agréger les réponses dans les dashboards. → [Indicateurs](/docs/questionnaires/indicateurs) |
| **Précision** | Description détaillée (optionnelle) |
| **Bornes** | Valeur basse / valeur haute (pour les types numériques) |
| **Indications** | Textes affichés aux extrémités (ex: « Très mauvaise » / « Très bonne ») |
### 4. Choisir le périmètre [#4-choisir-le-périmètre]
* **Questionnaire personnel** — visible uniquement par toi.
* **Questionnaire club** — partagé avec ton club, avec possibilité de le restreindre à certaines équipes.
→ Voir [Club vs personnel](/docs/questionnaires/club-vs-personnel).
### 5. Valider [#5-valider]
Ton questionnaire est créé et apparaît dans la liste. Il est prêt à être attaché à un événement.
## Le flux complet [#le-flux-complet]
1. Tu **crées** le questionnaire.
2. Tu l'**attaches** à un événement (séance, match, soin…).
3. Soit **le sportif** répond depuis l'app mobile, soit **toi (le coach)** tu remplis sa réponse manuellement.
4. Les réponses sont **agrégées par indicateur** dans les dashboards.
Une réponse est **toujours rattachée à un événement**. Tu ne peux pas
répondre à un questionnaire « hors contexte ». Pense à attacher le
questionnaire à l'événement concerné avant la séance.
## Cas particulier — questionnaires FormaPulse [#cas-particulier--questionnaires-formapulse]
Certains questionnaires sont **fournis par FormaPulse**. Tu peux **les utiliser** mais tu **ne peux pas les supprimer** ni en modifier le contenu de fond.
## Erreurs à éviter [#erreurs-à-éviter]
* **Trop de questions** : un questionnaire de 20 questions est rarement rempli. Reste sur 3-5 questions max pour un usage quotidien.
* **Réutiliser un nom d'indicateur réservé** : certains noms sont **interdits** (charge, RPE, blessures, zone de douleur…). Voir [Indicateurs réservés](/docs/questionnaires/indicateurs#noms-réservés).
* **Mélanger questionnaire et événement** : pas de réponse possible sans événement. Si le sportif ne voit rien dans son app, vérifie que le questionnaire est bien rattaché à un événement à venir ou en cours.
* **Choisir « personnel » alors que ton staff doit accéder aux réponses** : un questionnaire personnel n'est visible que par son auteur. Si ton co-coach doit voir les réponses, fais-en un questionnaire **club**.
## Aller plus loin [#aller-plus-loin]
# Indicateurs et agrégation des réponses (/docs/questionnaires/indicateurs)
## Vue d'ensemble [#vue-densemble]
Chaque question d'un questionnaire est rattachée à un **indicateur** identifié par un **nom court** (par exemple « qualité du sommeil »). Ce nom est la **clé d'agrégation** des réponses dans les dashboards.
Comprendre cet aspect est essentiel pour exploiter correctement tes réponses dans les analyses.
## Où se configure l'indicateur [#où-se-configure-lindicateur]
Tout se passe dans le **modal « Ajouter une question »**, depuis l'éditeur d'un questionnaire. En **haut du modal**, un sélecteur **« Réutiliser un indicateur existant »** te propose deux choix :
* **Choisir un indicateur déjà créé** (partagé entre tes questionnaires) → ses paramètres sont chargés automatiquement et **verrouillés** dans le modal. Pour les ajuster, il faut passer par l'édition de l'indicateur (voir [Modifier un indicateur existant](#modifier-un-indicateur-existant)).
* **« + Créer un nouvel indicateur »** → tu remplis tous les champs (nom de l'item, question, type, bornes, indications, etc.). C'est le **seul moment** où tu définis le nom court et le type.
Le **type de question** et le **nom court** sont posés à ce moment précis.
Le type est figé ensuite ; le nom court reste modifiable tant qu'aucune
réponse n'a été enregistrée.
## Comment fonctionne l'agrégation [#comment-fonctionne-lagrégation]
Quand tu ajoutes une question dans un questionnaire, FormaPulse cherche s'il existe déjà un indicateur qui combine **les trois éléments suivants** :
* le **même nom court** (insensible à la casse, espaces ignorés)
* ET le **même type de question** (numérique, chiffre, texte ou zone de douleur)
* ET dans le **même périmètre** (même club, ou personnel pour le même utilisateur)
**Si oui** → l'indicateur existant est **réutilisé**. Toutes les réponses, anciennes et nouvelles, sont agrégées sur le même bucket dans le dashboard.
**Si non** → un nouvel indicateur est créé.
## Exemple concret [#exemple-concret]
Tu crées deux questionnaires :
* **Questionnaire « Wellness matin »**
* Question 1 : « Comment as-tu dormi ? » — nom court « qualité du sommeil », type numérique 1-10
* Question 2 : « Stress ressenti » — nom court « stress », type numérique 1-10
* **Questionnaire « Bilan match »**
* Question 1 : « Qualité du sommeil » — **même nom court** « qualité du sommeil », même type numérique 1-10
Comme le nom court et le type sont identiques, FormaPulse réutilise l'indicateur existant. Résultat : dans tes dashboards, tu as **un seul indicateur « qualité du sommeil »** alimenté par les réponses des deux questionnaires.
Cette réutilisation est **automatique et silencieuse**. Pour la voir,
regarde ta liste d'indicateurs : « qualité du sommeil » apparaît une
seule fois.
## Noms réservés [#noms-réservés]
Certains noms d'indicateurs sont **réservés** par FormaPulse pour des indicateurs natifs du dashboard. Tu ne peux pas créer un indicateur de questionnaire avec ces noms (ça mélangerait les données dans le même bucket).
Les noms réservés actuels :
| Nom réservé | Source native |
| ------------------ | ------------------------------------------------- |
| Charge U.A. | Indicateur de charge calculé à partir des séances |
| Durée (min) | Indicateur de durée de séance |
| RPE | RPE post-séance |
| Blessures en cours | Compteur de blessures actives |
| Zone de douleur | Indicateur système des zones de douleur |
Si tu essaies de créer un indicateur avec un de ces noms, tu obtiens une erreur à la création ou à la modification du questionnaire.
## Indicateurs système [#indicateurs-système]
Certains indicateurs sont **fournis et gérés par FormaPulse**. Ils sont partagés avec tous les utilisateurs et **non modifiables par les coachs**.
L'exemple le plus important est la **zone de douleur** : c'est un indicateur système unique, utilisé pour la carte interactive du corps. Tu ne peux pas l'éditer ni le dupliquer.
## Modifier un indicateur existant [#modifier-un-indicateur-existant]
L'édition d'un indicateur se fait **depuis le modal « Ajouter une question »** : sélectionne l'indicateur dans le sélecteur en haut, puis ouvre la fenêtre d'édition dédiée. Les modifications sont **propagées à tous les questionnaires** qui utilisent cet indicateur.
Voici ce qui est modifiable :
| Élément | Modifiable ? |
| ------------------------------ | ------------------------------------------------------------- |
| Libellé visible de la question | Oui |
| Nom court (clé d'agrégation) | **Non — verrouillé pour préserver l'historique des réponses** |
| Description / précision | Oui |
| Bornes basse et haute | Oui |
| Indications aux extrémités | Oui |
| Type de question | **Non — figé à la création** |
Le **nom court** et le **type** ne sont définis qu'à la création de l'indicateur.
Si tu veux changer le nom court, il faut **créer un nouvel indicateur** (et accepter
que les anciennes réponses restent attachées à l'ancien).
## Bonnes pratiques [#bonnes-pratiques]
* **Choisir des noms cohérents** : utilise un format unique et lisible (par exemple en français, sans accents).
* **Anticiper la réutilisation** : avant de créer un nouvel indicateur, vérifie qu'il n'existe pas déjà sous un nom légèrement différent.
* **Documenter les indicateurs métier** : si plusieurs coachs créent des questionnaires, fais une liste interne des noms à utiliser pour éviter les doublons (« fatigue » vs « fatigue post séance » vs « niveau de fatigue » donnent trois indicateurs distincts).
* **Pas de nom qui change selon l'humeur** : un indicateur stable dans le temps vaut mieux que trois indicateurs sémantiquement proches.
## Erreurs à éviter [#erreurs-à-éviter]
* **Créer un indicateur dont le nom est réservé** : erreur à la création, renomme.
* **Vouloir renommer un indicateur après coup** : impossible, le nom court est verrouillé dès la création pour préserver l'historique. Bien le choisir au départ depuis le modal « Ajouter une question ».
* **Mélanger types pour le même nom** : « fatigue » en numérique et « fatigue » en texte sont **deux indicateurs différents**, même nom. Cela complique l'analyse, évite-le.
* **Créer des indicateurs « jetables »** pour un usage unique : ils restent dans ta liste pour toujours et polluent les dashboards. Préfère réutiliser un indicateur existant ou bien nommer dès le départ.
## Aller plus loin [#aller-plus-loin]
# Répondre à un questionnaire (/docs/questionnaires/repondre)
## Vue d'ensemble [#vue-densemble]
Une **réponse** à un questionnaire FormaPulse est **toujours liée à un événement** du calendrier (séance, match, soin…). Elle ne peut pas exister hors contexte.
Il y a **deux façons** de remplir une réponse :
1. **Le sportif** répond depuis son **app mobile**.
2. **Le coach** répond pour le sportif depuis son **espace coach**.
Les deux chemins produisent le même résultat : une réponse rattachée au sportif, à l'événement et au questionnaire.
## Méthode 1 — Le sportif répond depuis l'app mobile [#méthode-1--le-sportif-répond-depuis-lapp-mobile]
### Conditions [#conditions]
* Le sportif a un **compte app mobile** activé (email + invitation).
* Le questionnaire est **rattaché à un événement** sur lequel le sportif est concerné (séance/match de son équipe, ou rendez-vous individuel).
* Le sportif a accès au questionnaire selon les règles de visibilité (personnel / club / équipes autorisées).
### Flux côté sportif [#flux-côté-sportif]
1. Le sportif ouvre son app mobile.
2. Il voit l'événement à venir (ou en cours) dans son calendrier.
3. Le questionnaire associé apparaît avec une notification.
4. Il répond aux questions.
5. La réponse est envoyée et associée au sportif, à l'événement et au questionnaire.
## Méthode 2 — Le coach répond pour le sportif [#méthode-2--le-coach-répond-pour-le-sportif]
Cas d'usage typiques :
* Le sportif n'a pas d'app mobile (joueur jeune, configuration partielle).
* Le coach observe directement (par exemple, charge perçue donnée à voix haute après la séance).
* Le sportif n'a pas répondu et le coach veut quand même tracer une donnée.
### Flux côté coach [#flux-côté-coach]
Tu peux répondre depuis **deux endroits** :
* **L'app mobile coach** sur le terrain
* **L'espace coach web**, depuis la **page des statistiques de la séance** concernée
Étapes :
1. Ouvre la page des statistiques de la séance (ou ouvre la séance dans l'app mobile coach).
2. Accède à la section **Questionnaires**.
3. Choisis le sportif et le questionnaire.
4. Remplis les réponses pour lui.
5. La réponse est créée pour le joueur, et l'auteur de l'action est toi (le coach).
Une réponse créée par le coach et une réponse créée par le sportif
sont stockées de la même façon. Elles ne sont **pas distinguées**
dans les dashboards — la donnée est traitée pareillement.
## Récupérer les réponses [#récupérer-les-réponses]
Tu as deux modes de récupération côté coach :
* **Vue allégée** : pagination des réponses pour les listes et les exports.
* **Vue détaillée** : à partir d'un événement, on récupère toutes les réponses liées à cet événement.
## Erreurs à éviter [#erreurs-à-éviter]
* **Vouloir répondre sans événement** : impossible. Toute réponse est rattachée à un événement. Rattache d'abord le questionnaire à un événement.
* **Le sportif ne voit pas le questionnaire dans son app** : vérifie qu'il est bien dans une équipe rattachée à l'événement, et que le questionnaire est attaché à l'événement. → [Joueur invisible app mobile](/docs/erreurs-frequentes/joueur-invisible-app-mobile)
* **Réponses fragmentées par questionnaire** : si tu as posé la même question dans deux questionnaires différents avec un nom court identique, les réponses sont **fusionnées** sur le même indicateur dans les dashboards. C'est voulu. Sinon, change le nom.
## Aller plus loin [#aller-plus-loin]
# Types de questions (/docs/questionnaires/types-de-questions)
## Vue d'ensemble [#vue-densemble]
FormaPulse supporte **4 types de questions** dans un questionnaire. Chaque type a son comportement propre et ses champs spécifiques.
## Les 4 types [#les-4-types]
### 1. Numérique [#1-numérique]
Une **valeur chiffrée bornée**, typiquement utilisée pour des échelles (1 à 10, RPE de Borg, qualité de sommeil…).
**Champs disponibles** :
* **Valeur basse** — borne minimum (par exemple 1)
* **Valeur haute** — borne maximum (par exemple 10)
* **Indication basse** — libellé affiché à la borne min (par exemple « Très mauvais »)
* **Indication haute** — libellé affiché à la borne max (par exemple « Excellent »)
Le sportif voit une échelle entre les deux bornes avec les libellés aux extrémités.
### 2. Chiffre [#2-chiffre]
Une **valeur chiffrée libre**, sans bornes obligatoires. Pour des données factuelles : « Combien d'heures as-tu dormi ? », « Combien de litres d'eau bus aujourd'hui ? ».
Mêmes champs disponibles que pour le type numérique (bornes haute et basse, indications), mais ils ne sont **pas obligatoires**.
### 3. Texte [#3-texte]
Une **réponse libre en texte**. Pour les commentaires, ressentis qualitatifs, contexte particulier.
**Pas de bornes ni d'indications** sur ce type.
### 4. Zone de douleur [#4-zone-de-douleur]
Un type **spécial** : le sportif sélectionne une **zone du corps** sur une carte interactive (avant / arrière, plusieurs zones possibles). Voir [Zone de douleur](#zone-de-douleur--cas-particulier) ci-dessous.
## Tableau récapitulatif [#tableau-récapitulatif]
| Type | Bornes | Indications | Cas d'usage |
| --------------- | ------------ | ------------ | ------------------------------- |
| Numérique | Oui | Oui | Échelle 1-10, RPE, sommeil |
| Chiffre | Optionnelles | Optionnelles | Heures de sommeil, litres d'eau |
| Texte | Non | Non | Commentaire libre |
| Zone de douleur | Non | Non | Carte interactive du corps |
## Zone de douleur — cas particulier [#zone-de-douleur--cas-particulier]
La question de type **zone de douleur** est un **indicateur système** géré par FormaPulse :
* C'est un indicateur **unique** au niveau de la plateforme.
* Son nom est **réservé** : tu ne peux pas créer un autre indicateur avec ce nom.
* Il n'est **pas modifiable** par les coachs.
* Le sportif sélectionne une ou plusieurs zones du corps (carte avant/arrière) au lieu d'une valeur numérique.
Quand tu ajoutes une question « zone de douleur » à un questionnaire, FormaPulse réutilise l'**unique indicateur système** existant — pas besoin de le créer toi-même.
Les permissions sur les zones de douleur sont **liées aux permissions
médicales** sur le sportif. Si un membre du staff n'a pas accès aux
données médicales, il ne verra pas les réponses zone de douleur.
## Réutilisation des questions [#réutilisation-des-questions]
Quand tu ajoutes une question dans un questionnaire avec un nom court qui existe déjà dans ton périmètre (perso ou club) **et le même type**, FormaPulse **réutilise** la question existante. Toutes les réponses sont alors **agrégées sur le même indicateur** dans les dashboards.
Exemple : tu crées un questionnaire « Wellness matin » avec une question « qualité du sommeil » (numérique 1-10), puis un autre questionnaire « Bilan match » avec aussi « qualité du sommeil ». Les réponses des deux questionnaires alimentent le **même indicateur** dans tes dashboards.
→ Voir [Indicateurs](/docs/questionnaires/indicateurs) pour le détail du mécanisme et les noms réservés.
## Erreurs à éviter [#erreurs-à-éviter]
* **Bornes incohérentes** : valeur basse à 10 et valeur haute à 1 n'a pas de sens. Mets toujours basse \< haute.
* **Indications inversées** : si « Excellent » correspond à 10, mets-le sur la borne haute, pas sur la borne basse. Sinon le sportif est désorienté.
* **Type texte pour des données analysables** : si tu veux exploiter la donnée dans un dashboard, prends numérique ou chiffre. Le texte libre n'est pas agrégé.
* **Créer plusieurs indicateurs « qualité du sommeil » avec des types différents** : un même nom décliné en numérique et en chiffre donne **deux indicateurs distincts** — ce qui complique l'analyse.
## Aller plus loin [#aller-plus-loin]
# Déclarer une blessure (/docs/sante/declarer-blessure)
## Vue d'ensemble [#vue-densemble]
Une déclaration de blessure dans FormaPulse permet de **tracer** l'épisode (date, mécanisme, zone), d'estimer une **gravité** et de suivre la **reprise**. Les données alimentent ensuite ton épidémiologie de saison.
## Prérequis [#prérequis]
* Tu disposes de la **permission médicale** sur l'équipe concernée ([gérer les permissions](/docs/club-equipes/gerer-permissions)).
## Étapes [#étapes]
### 1. Ouvrir la page Blessure [#1-ouvrir-la-page-blessure]
Depuis la barre latérale, va sur **Santé > Blessure**.
### 2. Cliquer sur « Ajouter une blessure » [#2-cliquer-sur--ajouter-une-blessure-]
Un panneau latéral s'ouvre avec le formulaire complet de déclaration.
### 3. Renseigner les informations [#3-renseigner-les-informations]
Tous les champs ci-dessous sont **requis** pour valider la déclaration :
| Champ | Description |
| ------------------------------ | ------------------------------------------------------------------------------------- |
| **Sportif** | Le joueur concerné (recherche dans la liste de l'équipe) |
| **Date de la blessure** | Date de survenue |
| **Localisation** | Zone du corps via le sélecteur de localisation |
| **Latéralité** | Centre / Droite / Gauche — déduite automatiquement de la zone choisie |
| **Mécanisme lésionnel** | Le geste/situation à l'origine |
| **Type de structure atteinte** | Muscle / Tendon / Os / Ligament |
| **Type d'apparition** | Aiguë / Progressive |
| **Gravité** | Stade 0 / Stade 1 / Stade 2 / Stade 3 |
| **Récidive** | Oui / Non |
| **Type d'entraînement** | Match / Entraînement / Autre |
| **Jour** | J, J-1, J-2, J-3, J+1, J+2, J+3, J+4 ou Reprise (positionnement par rapport au match) |
| **Surface** | Herbe / Synthétique / Autre |
| **Météo** | Sec / Forte chaleur / Pluie / Forte gelée / Autre |
| **Contact** | Direct / Indirect / Sans contact |
### 4. Renseigner les dates de retour *(optionnel)* [#4-renseigner-les-dates-de-retour-optionnel]
Quand l'information est connue, complète :
* **Date RTP** *(Retour à l'Entraînement Progressif)*
* **Date RTR** *(Retour à la Compétition)*
### 5. Valider [#5-valider]
La blessure est créée avec le statut **En cours** par défaut.
## Faire évoluer le statut [#faire-évoluer-le-statut]
Depuis la liste des blessures, le statut se modifie via le **menu déroulant** sur la ligne du joueur. Trois valeurs possibles :
| Statut | Quand l'utiliser |
| --------------------------------------- | --------------------------------------------------------------------- |
| **En cours** *(badge orange)* | Blessure active, joueur en cours de prise en charge |
| **Guérie** *(badge vert)* | Épisode clos, le joueur est de nouveau disponible |
| **Chronique** *(badge rouge)* | Lésion qui persiste ou récidive régulièrement, à suivre dans la durée |
Dès qu'une blessure passe en **Guérie** ou **Chronique**, elle sort de la liste des blessures actives.
Les informations médicales sont sensibles. Vérifie qui dans ton staff a
accès au module santé avant de saisir des détails.
## Erreurs à éviter [#erreurs-à-éviter]
* **Saisir trop tard** : déclare la blessure dès qu'elle survient, même sans diagnostic complet. Tu pourras affiner les dates RTP/RTR plus tard.
* **Oublier de clore l'épisode** : à la reprise complète, passe le statut en **Guérie**. Sinon le joueur reste comptabilisé comme blessé dans l'épidémiologie.
* **Confondre récidive et nouvelle blessure** : une rechute sur la même zone doit être déclarée avec **Récidive = Oui**, pas comme un nouvel épisode indépendant.
## Aller plus loin [#aller-plus-loin]
# Épidémiologie des blessures (/docs/sante/epidemiologie)
## Vue d'ensemble [#vue-densemble]
L'écran **Épidémiologie** synthétise les blessures saisies dans FormaPulse sur une **période donnée**, en mode **collectif** (par équipe) ou **individuel** (par sportif). Il combine :
* des **cartes de métriques** (temps cumulés, nombre de blessures, joueurs touchés…),
* une **répartition** sous forme de pie chart, configurable selon **12 critères**,
* deux **bodymaps** (vue antérieure et dorsale) qui montrent les zones les plus touchées en carte de chaleur.
## Filtres d'analyse [#filtres-danalyse]
Tous les filtres se règlent depuis la **sidebar gauche** de la page.
### Mode d'analyse [#mode-danalyse]
* **Collectif** — une équipe entière. Tu sélectionnes l'équipe à analyser.
* **Individuel** — un sportif unique. Tu sélectionnes le joueur à analyser.
Le mode et l'entité par défaut peuvent être pré-réglés dans tes **préférences médicales** (équipe par défaut / sportif par défaut).
### Période [#période]
Deux modes possibles :
* **X derniers jours** — par exemple les 180 derniers jours (valeur par défaut, modifiable dans tes préférences).
* **Plage de dates** — sélection libre d'une date de début et d'une date de fin.
La période sélectionnée filtre **toutes les métriques et tous les graphiques** de la page.
## Les 7 cartes de métriques [#les-7-cartes-de-métriques]
| Carte | Définition |
| --------------------------- | ----------------------------------------------------------------------------------------------------------------- |
| **Temps total de blessure** | Somme en jours = RTP − date de blessure (durée totale d'indisponibilité avant retour à l'entraînement progressif) |
| **Temps total d'arrêt** | Somme en jours = RTR − date de blessure (durée totale jusqu'au retour à la compétition) |
| **Temps de réhabilitation** | Somme en jours = RTR − RTP (durée de la phase de réhab entre reprise progressive et retour compétition) |
| **Durée moyenne d'arrêt** | Temps total d'arrêt ÷ nombre de blessures (jours / blessure) |
| **Nombre de blessures** | Total des blessures sur la période |
| **Blessures en cours** | Blessures actives (ni guéries ni chroniques) |
| **Joueurs touchés** | Nombre de sportifs uniques avec au moins une blessure sur la période |
Chaque carte a une infobulle qui rappelle sa formule.
## Répartition — pie chart à 12 critères [#répartition--pie-chart-à-12-critères]
Le pie chart te permet de voir la répartition des blessures selon le critère que tu choisis. Tu changes de critère via le bouton **liste** en haut à droite du graphique.
**Les 12 critères disponibles** :
* **Localisation** (zone du corps)
* **Type de structure** (muscle, tendon, os, ligament)
* **Latéralité** (centre / droite / gauche)
* **Mécanisme lésionnel**
* **Type d'entraînement** (match, entraînement, autre)
* **Gravité** (stade 0 à 3)
* **Type d'apparition** (aiguë, progressive)
* **Surface** (herbe, synthétique, autre)
* **Météo** (sec, forte chaleur, pluie, forte gelée, autre)
* **Contact** (direct, indirect, sans contact)
* **Jour** (J, J-1…, J+1…, Reprise)
* **Récidive** (oui / non)
Le tooltip affiche pour chaque tranche le **nombre de blessures** et le **pourcentage**.
## Bodymaps — cartes de chaleur antérieure et dorsale [#bodymaps--cartes-de-chaleur-antérieure-et-dorsale]
Deux bodymaps côte à côte affichent les **zones du corps les plus touchées** sur la période :
* **Vue antérieure** — face avant du corps.
* **Vue dorsale** — face arrière du corps.
L'intensité de la couleur correspond au **nombre cumulé de blessures** déclarées sur cette zone (en mode collectif). Les libellés de zones suivent la nomenclature du sélecteur de localisation utilisée à la déclaration de blessure.
## Étapes [#étapes]
### 1. Accéder à l'épidémiologie [#1-accéder-à-lépidémiologie]
Va sur **Médical > Épidémiologie**.
### 2. Choisir le mode et l'entité [#2-choisir-le-mode-et-lentité]
Mode **collectif** (équipe) ou **individuel** (sportif), puis sélectionne l'équipe ou le sportif.
### 3. Définir la période [#3-définir-la-période]
Choisis entre **X derniers jours** (180 par défaut) ou une **plage de dates** précise. Valide ta période.
### 4. Lire les métriques [#4-lire-les-métriques]
Les 7 cartes te donnent une vue chiffrée d'ensemble.
### 5. Explorer la répartition [#5-explorer-la-répartition]
Change le critère du pie chart pour voir où se concentrent les blessures (par type de structure, mécanisme, surface, etc.).
### 6. Inspecter les zones [#6-inspecter-les-zones]
Croise avec les deux bodymaps pour voir **anatomiquement** où le groupe est le plus exposé.
## Erreurs à éviter [#erreurs-à-éviter]
* **Période trop courte** : sur 30 jours, tu n'as quasiment pas de matière à analyser. Travaille au minimum sur 90 à 180 jours pour une lecture fiable.
* **Comparer mode collectif et individuel** : un joueur unique sur 6 mois n'est pas comparable à une équipe sur la même durée. Reste cohérent dans ta lecture.
* **Lire le pie chart sans regarder le bodymap** : le pie chart te dit *combien*, le bodymap te dit *où*. Les deux se croisent.
* **Ignorer les blessures en cours** : la carte « Blessures en cours » te dit combien de joueurs sont indisponibles aujourd'hui — c'est une donnée d'effectif, pas seulement un indicateur historique.
## Aller plus loin [#aller-plus-loin]
# Analyses des cycles (/docs/pro-analytics/analyses-cycles)
## Vue d'ensemble [#vue-densemble]
La page **Analyses des cycles** permet d'analyser ce qui s'est passé pendant un cycle de planification : qui était présent, sous quel statut, sur quels types d'événements, avec quels tags. Elle propose en plus un mode **comparaison A vs B** pour mettre deux cycles côte à côte (anciennement *« comparer expositions des cycles »*, désormais intégré ici via le toggle **Comparer**).
Page accessible via le menu **pro-analytics > Analyse avancée > Analyses des cycles**.
La **création** d'un cycle ne se fait pas ici. Un cycle est un événement de
type *cycle* créé depuis la page **Planification** (sidebar **Cycles de
travail > Créer un cycle**). Cette page se contente d'analyser les cycles
existants. Voir
[Planification et programmation](/docs/planification/programmation).
## Sidebar [#sidebar]
### Mode d'analyse [#mode-danalyse]
Deux options :
* **Collectif** — analyse par équipe.
* **Individuel** — analyse par joueur (compte club) ou athlète (compte athlète).
Changer de mode réinitialise l'entité sélectionnée.
### Entité [#entité]
* En collectif : section **Équipes**, recherche *« Rechercher une équipe… »*.
* En individuel : section **Joueurs** ou **Athlètes**, recherche *« Rechercher un joueur… »* / *« Rechercher un athlète… »*.
### Cycles [#cycles]
Liste des cycles existants pour l'entité sélectionnée, classés du plus récent au plus ancien. Chaque ligne affiche : pastille couleur, titre, dates *(début - fin)*.
* En **mode simple** : un coche vert sur le cycle sélectionné.
* En **mode comparaison** : un cycle marqué **A** (bleu) et un cycle marqué **B** (orange).
La hauteur de la liste est ajustable via un séparateur draggable entre la section *Entité* et la section *Cycles* (la position est mémorisée localement).
### Toggle Comparer [#toggle-comparer]
Switch désactivé tant qu'aucun cycle n'est sélectionné. Une fois activé, tu sélectionnes deux cycles (A puis B) pour basculer en mode comparaison.
## Onglets [#onglets]
| Onglet | État |
| ---------------------------------- | ----------------------------------------- |
| **Expositions** | Actif — seul onglet fonctionnel à ce jour |
| **Questionnaires (Prochainement)** | Désactivé |
| **GPS (Prochainement)** | Désactivé |
## Contenu de l'onglet Expositions [#contenu-de-longlet-expositions]
### En-tête [#en-tête]
* **Mode simple** : pastille couleur, nom du cycle, dates, durée en jours, nombre d'événements.
* **Mode comparaison** : deux cartouches *A* et *B* séparés par une icône de bascule, chacun avec couleur, nom et dates.
### Cartes KPI *(mode comparaison uniquement)* [#cartes-kpi-mode-comparaison-uniquement]
Cinq cartes de comparaison :
* **Événements** — nombre total
* **Durée totale**
* Trois cartes de pourcentage par statut (ex. *% Apte*, *% Adapté*, …)
Chaque carte affiche `valeur A → valeur B` et le **delta** (vert si positif sur un statut positif, rouge si négatif, et l'inverse pour les statuts dits négatifs : *Arrêt*, *Discipline*, *Absence*).
### Présences par statut [#présences-par-statut]
Titre : **PRÉSENCES PAR STATUT**.
Deux visualisations côte à côte :
* **Barres horizontales empilées** — une ligne par athlète, axe X 0-100 %, segments par statut.
* **Donut** — répartition globale (deux donuts empilés en mode comparaison : *Cycle A* et *Cycle B*).
Statuts gérés (ordre et couleurs standards FormaPulse) :
| Statut | Libellé court |
| --------------------- | ------------- |
| Apte | Apte |
| Adapté | Adapté |
| Réhab | Réhab |
| RTP | RTP |
| RTR | RTR |
| Arrêt | Arrêt |
| Discipline | Discipline |
| Récupération | Récup. |
| Optimisation sportive | Optim. |
| Absence | Absence |
Bulle d'aide au survol : statut, nombre d'événements concernés, pourcentage, durée.
### Distribution des tags [#distribution-des-tags]
Titre : **DISTRIBUTION DES TAGS**.
Même mise en page (barres + donut). Si aucun événement du cycle ne porte de tag, un message *« Aucun tag sur les événements de ce cycle »* est affiché à la place.
### Distribution par type [#distribution-par-type]
Titre : **DISTRIBUTION PAR TYPE**.
Types d'événements pris en compte : **Séance**, **Match**, **Médical**, **Kiné**, **Psy**, **Nutritionniste**, **Test**, **Visite**, **Réunion**, **Autre RDV** (chacun avec sa couleur).
### Timeline des présences [#timeline-des-présences]
Titre : **TIMELINE DES PRÉSENCES**.
Une ligne par athlète, séquence de petits carrés (un par événement du cycle), couleur = statut de présence sur cet événement.
* En mode simple : un compteur de présences par statut (badges) et la durée à droite.
* En mode comparaison : deux lignes par athlète (*A* en plein, *B* en semi-transparent), sans badges.
Bulle d'aide au survol d'un carré : titre de l'événement, date, statut.
### Récapitulatif [#récapitulatif]
Tableau récapitulatif (`RÉCAPITULATIF`) — une ligne par athlète, colonnes dynamiques :
* **Joueur** — avatar + nom complet, cliquable pour trier.
* Une colonne par **statut** présent dans la période.
* Une colonne par **tag** présent (avec pastille couleur).
Chaque cellule affiche un pourcentage (principal) et une durée (secondaire). En mode comparaison : `XX % → YY %` + delta `±Z pts`.
## Calcul des analyses [#calcul-des-analyses]
L'analyse d'un cycle (et la comparaison A vs B) peut prendre quelques secondes la première fois — un suivi de progression apparaît en haut de l'écran si le calcul est long. Tu peux continuer à naviguer pendant ce temps. Les résultats sont mémorisés temporairement, donc rouvrir le même cycle est instantané.
## Lien avec la planification [#lien-avec-la-planification]
Les cycles affichés ici sont créés depuis la **planification** (événements de type cycle). Les présences viennent des statuts saisis sur chaque événement (Apte, Adapté, Réhab, etc.). Les tags et types proviennent des événements eux-mêmes.
## Limites actuelles [#limites-actuelles]
* Onglets **Questionnaires** et **GPS** non encore implémentés (libellés *« Prochainement »*).
* La comparaison est limitée à **deux cycles** (A vs B).
* Pas d'export PDF / Excel à ce jour.
## Aller plus loin [#aller-plus-loin]
# Notion de cycle (/docs/pro-analytics/cycles)
## Vue d'ensemble [#vue-densemble]
Un **cycle** dans FormaPulse est une **période** (date début → date fin) qui sert de cadre logique à un bloc d'entraînement (préparation, compétition, transition…) ou à toute fenêtre temporelle qu'on veut analyser comme un tout.
Concrètement :
* Côté **planification** : un cycle s'affiche dans le calendrier sous forme de **barre horizontale** colorée qui s'étend du jour de début au jour de fin.
* Côté **pro-analytics** : la page **Analyses des cycles** liste les cycles disponibles et les utilise pour analyser ce qui s'est passé pendant leur période (présences, expositions, tags…).
Cette page explique :
* Comment **créer** un cycle (depuis la planification, pas depuis pro-analytics)
* Comment il est **utilisé** dans les autres pages
## Création — depuis la planification [#création--depuis-la-planification]
⚠️ **La création d'un cycle ne se passe pas dans pro-analytics.** Pro-analytics se contente de lister et d'analyser les cycles **déjà créés** dans la planification.
### Étapes [#étapes]
1. Aller sur **Planification**.
2. Dans la sidebar, ouvrir **Cycles de travail > Créer un cycle** (ou équivalent selon la version).
3. Renseigner :
* **Titre** (ex: « Préparation championnat », « Récupération hiver », « Stage »)
* **Date de début** et **date de fin**
* **Couleur** (utilisée pour la barre du calendrier et la pastille dans pro-analytics)
* Optionnellement : **équipe(s) concernée(s)**, **sportif(s) concerné(s)**, **tags**
4. Sauvegarder. Le cycle apparaît immédiatement comme une **barre colorée** dans le calendrier de planification, et devient disponible dans **pro-analytics > Analyses des cycles**.
### Modification / suppression [#modification--suppression]
* **Modifier** : ouvrir la fiche du cycle depuis le calendrier (clic sur la barre) → édition des champs.
* **Supprimer** : action depuis la fiche.
⚠️ Modifier les **dates** d'un cycle déjà analysé dans pro-analytics relance le calcul d'analyse à la prochaine ouverture.
## Comment pro-analytics liste les cycles [#comment-pro-analytics-liste-les-cycles]
Dans la sidebar de **Analyses des cycles**, section **Cycles**. Chaque ligne : pastille couleur, titre, dates `dd MMM yyyy - dd MMM yyyy`. Cliquer sélectionne le cycle pour analyse.
Les cycles affichés correspondent à l'entité (équipe ou sportif) sélectionnée dans la sidebar.
## Comment pro-analytics analyse un cycle [#comment-pro-analytics-analyse-un-cycle]
Quand tu sélectionnes un cycle, FormaPulse :
1. Récupère tous les **événements** (séances, matchs, RDV extra, réunions) dont la date tombe dans la plage du cycle.
2. Filtre par l'entité (équipe ou sportif).
3. Calcule les **expositions** : pour chaque sportif, % de présence par statut, durée par statut, distribution par tag, distribution par type d'événement.
4. Construit la **timeline** : pour chaque sportif, séquence d'événements ordonnés avec leur statut.
L'analyse peut prendre quelques secondes la première fois ; un suivi de progression apparaît en haut de l'écran si elle est longue. Les résultats sont mémorisés temporairement, donc rouvrir le même cycle est instantané.
L'affichage se fait dans l'onglet **Expositions** de la page Analyses des cycles, voir [Analyses des cycles](/docs/pro-analytics/analyses-cycles) pour le détail des blocs (KPI, présences par statut, distribution des tags/types, timeline, récap).
## Comparaison de cycles A vs B [#comparaison-de-cycles-a-vs-b]
### Activation [#activation]
Toggle **Comparer** dans la sidebar de la page Analyses des cycles. Désactivé tant qu'aucun cycle n'est sélectionné. Une fois activé :
* Le cycle A reste sélectionné
* Le clic suivant sélectionne le cycle B (badge orange)
* Un troisième clic remplace B
### Calcul [#calcul]
Comparaison automatique entre les expositions des deux cycles :
* Variation du nombre total d'événements
* Variation de la durée totale
* Pour chaque statut : pourcentage A, pourcentage B, écart
* Pour chaque sportif : présences par statut avec valeurs A/B et écart
* Pour chaque tag : écart de pourcentage
* Pour chaque type d'événement : écart de pourcentage
### Affichage [#affichage]
5 cartes KPI en haut — Événements, Durée totale, %Apte, %Adapté, etc. L'écart est **vert** si l'évolution est bonne, **rouge** sinon. Pour les statuts dits négatifs (Arrêt, Discipline, Absence), la convention est inversée (une augmentation de %Absence est rouge).
Voir le détail dans [Analyses des cycles](/docs/pro-analytics/analyses-cycles).
## Cas d'usage typiques [#cas-dusage-typiques]
### Analyse d'une préparation [#analyse-dune-préparation]
* Cycle : « Préparation championnat 2026 » (1er au 31 août)
* Vérifier le **% d'aptes** sur la période, identifier les sportifs qui ont accumulé du temps en `Adapté` ou `Réhab`.
* Comparer la distribution **Séances vs Matchs** : ratio attendu pour une prépa typique = beaucoup de séances, peu de matchs amicaux.
### Comparaison saison N vs saison N-1 [#comparaison-saison-n-vs-saison-n-1]
* Cycle A : « Phase aller 2025-26 »
* Cycle B : « Phase aller 2024-25 »
* Voir le **delta de disponibilité** par joueur, le delta de **distribution des tags** (utile pour vérifier si la programmation a évolué comme prévu).
### Décision retour de blessure [#décision-retour-de-blessure]
* Cycle « Retour à la compétition » (10 → 24 mars)
* Vérifier que le sportif a bien suivi le **plan progressif** (% Adapté décroissant, % Apte croissant, types d'événements évoluant de RDV médical → séance individuelle → séance collective → match).
## Limites actuelles [#limites-actuelles]
* Onglets **Questionnaires** et **GPS** de la page Analyses des cycles sont **désactivés** (libellé « Prochainement »).
* La comparaison est limitée à **2 cycles** A vs B.
* Pas d'export (PDF / Excel).
* Pas de notion de **cycle composé** (un cycle parent qui contiendrait plusieurs sous-cycles).
## Aller plus loin [#aller-plus-loin]
# Modélisation GPS athlètes (/docs/pro-analytics/modelisation-gps-athletes)
## Vue d'ensemble [#vue-densemble]
La page **Modélisation GPS athlètes** affiche les normes GPS calculées sur tes données réelles. Tu peux les consulter **par joueur**, ou agrégées **par poste** ou **par tag**, et les filtrer par type d'événement (séance / match) et par croisements configurés.
Page accessible via le menu **pro-analytics > Modélisation GPS > Modélisation GPS athlètes**.
## Prérequis [#prérequis]
* **Configuration GPS** active dans tes préférences. Sinon, la page affiche un écran *« Paramétrez une clé GPS »* avec un bouton **Configurer GPS** vers `/profil/preferences`.
* **Configuration des normes** (croisements actifs, période, durée minimale de match) — réglable via l'icône engrenage en bas de la sidebar.
## Sidebar [#sidebar]
### Croisement [#croisement]
Sélecteur en haut de la sidebar avec deux types d'options :
* **Personnalisé** — tu construis librement le filtre.
* Les **croisements actifs** définis dans la configuration des normes (ex : `Type évent × Poste`, `Poste`, `Tag`, `Poste × Tag`…).
Choisir un croisement applique automatiquement les filtres correspondants.
### Par joueur [#par-joueur]
Section dépliée par défaut. Permet de sélectionner :
* Des **équipes** (sélectionner une équipe coche tous ses joueurs ; la décocher les décoche tous).
* Des **joueurs** individuels.
Le badge à droite du titre affiche le total *(joueurs + équipes)* sélectionnés. Les joueurs hors des postes sélectionnés sont désactivés.
### Par poste [#par-poste]
Section repliée par défaut. Liste des postes du club.
* **Toggle « Agréger par poste »** — quand actif :
* désactive la sélection manuelle de postes,
* sélectionne tous les joueurs,
* bascule l'affichage : **une ligne par poste** au lieu d'une par joueur.
Si le croisement par poste n'est pas activé dans la configuration, un message d'indisponibilité apparaît.
### Par tags [#par-tags]
Section repliée par défaut.
* En mode normal : sélection **exclusive** (un seul tag).
* Avec le **toggle « Agréger par tag »** activé : sélection **multiple**, tous les tags sont cochés par défaut, et l'affichage devient **une ligne par tag**.
Comme pour les postes, le croisement *Tag* (ou *Poste × Tag*) doit être activé dans la configuration pour être disponible.
### Par type d'événement [#par-type-dévénement]
Section repliée par défaut. Trois boutons (sélection unique) :
* **Tous**
* **Séance** *(défaut)*
* **Match**
### Footer [#footer]
* **Mettre à jour les normes** — déclenche le recalcul. Un message de confirmation *« Normes GPS mises à jour avec succès »* s'affiche en fin de calcul.
* **Configuration** (icône engrenage) — ouvre une fenêtre latérale avec les réglages : *durée minimale de match*, *période en jours*, *croisements actifs*.
## Tableau des normes [#tableau-des-normes]
Le tableau central s'adapte au mode actif.
### Sélecteur Référencentiel [#sélecteur-référencentiel]
Au-dessus du tableau, le select **Référencentiel** définit la méthode de calcul affichée :
| Méthode | Description |
| -------------- | ------------------------------------- |
| **Moyenne** | Moyenne arithmétique |
| **Max** | Valeur maximale |
| **Top3 Avg** | Moyenne des 3 valeurs les plus hautes |
| **P25** | Percentile 25 |
| **P50** | Percentile 50 (médiane) |
| **P75** | Percentile 75 |
| **P90** | Percentile 90 |
| **Ecart Type** | Écart-type |
Changer le référentiel recharge les valeurs du tableau en temps réel.
### Colonnes [#colonnes]
1. **Checkbox** — sélection multiple des lignes.
2. **Joueur / Poste / Tag** selon le mode :
* Par joueur : avatar (initiales `prenom[0] + nom[0]`), nom complet, sous-texte *« N échantillons »*.
* Agrégé par poste : avatar à 2 lettres, nom du poste, sous-texte *« X joueurs · Y échantillons »*.
* Agrégé par tag : avatar coloré (couleur du tag), libellé du tag, sous-texte *« X joueurs · Y échantillons »*.
3. **Une colonne par métrique GPS** — libellé *« Nom métrique (unité) »*, valeurs formatées à une décimale, en police mono. Cellule grisée si valeur nulle.
### Histogramme [#histogramme]
Un graphique en barres horizontales affiche les valeurs de la métrique sélectionnée pour la méthode choisie. Le sélecteur de métrique se trouve au-dessus du graphique. L'ordre et la visibilité des barres sont configurables.
## Calcul des normes [#calcul-des-normes]
Le recalcul peut prendre plusieurs minutes selon la taille de l'effectif et la période. Un suivi de progression apparaît en haut de l'écran ; tu peux continuer à naviguer pendant ce temps. Une fois terminé, le tableau est rafraîchi avec les nouvelles valeurs.
## Limites et bonnes pratiques [#limites-et-bonnes-pratiques]
* Les normes ne sont pertinentes qu'avec un volume d'échantillons suffisant — surveille la colonne *« N échantillons »*.
* L'agrégation **par poste** et **par tag** est exclusive (les deux toggles ne s'activent pas en même temps).
* Pour modéliser à l'**exercice près**, utilise la page jumelle [Modélisation GPS exercices](/docs/pro-analytics/modelisation-gps-exercices).
## Aller plus loin [#aller-plus-loin]
# Modélisation GPS exercices (/docs/pro-analytics/modelisation-gps-exercices)
## Vue d'ensemble [#vue-densemble]
La page **Modélisation GPS exercices** te permet de **rattacher des périodes GPS à un exercice** : tu sélectionnes une activité GPS (une session enregistrée), tu déposes une ou plusieurs de ses périodes sur un exercice donné, et l'app calcule en temps réel les stats agrégées (brutes et par minute) que tu peux ensuite **sauvegarder comme référence** pour cet exercice.
## Pré-requis [#pré-requis]
* **Configuration GPS** active. Sinon, l'écran « Paramétrez une clé GPS » s'affiche avec un bouton **Configurer GPS**.
* Au moins une **activité GPS** importée avec des périodes définies.
* Les **exercices** que tu veux référencer existent dans ta bibliothèque.
## Layout de la page [#layout-de-la-page]
La page est composée de quatre zones :
```
┌──────────────────┬────────────────┬──────────────────────────┐
│ Activités GPS │ Activité │ Recherche exercice │
│ (sidebar) │ sélectionnée │ + détail exercice │
│ │ ├──────────────────────────┤
│ │ │ Tableaux d'aperçu stats │
│ │ │ │
│ │ │ [Sauvegarder N réf.] │
├──────────────────┴────────────────┴──────────────────────────┤
│ Zone de dépôt des périodes (toujours visible en bas) │
└──────────────────────────────────────────────────────────────┘
```
## Zone 1 — Activités GPS [#zone-1--activités-gps]
Sidebar gauche, titre **Activités GPS**, sous-titre « X activité(s) ».
Chaque ligne affiche :
* **Nom** de l'activité.
* Date et heure de début (« dd MMM yyyy • HH:mm »).
* Badge « X période(s) » si l'activité a des périodes.
* Une poignée à gauche pour la déplacer.
Pagination : 20 par 20, bouton « Charger plus » en bas. Cliquer sur une ligne sélectionne l'activité (bordure pointillée verte). Tu peux aussi la **glisser** vers la zone centrale.
## Zone 2 — Activité sélectionnée [#zone-2--activité-sélectionnée]
Au centre, à gauche.
* **État vide** : icône d'activité, texte « Zone de dépôt », sous-texte « Sélectionnez ou glissez une activité GPS ». Au survol pendant un déplacement : « Déposez l'activité ici ».
* **État chargé** :
* En-tête (bordure pointillée verte) : nom de l'activité, date longue, créneau horaire et durée totale, tags.
* Section **Périodes (X)** : liste des périodes déplaçables avec leur nom et un état « Déposée » si déjà rattachées. Sous-titre « Glissez/déposez vers la droite ».
## Zone 3 — Recherche exercice + détail [#zone-3--recherche-exercice--détail]
À droite, en haut.
* **Champ recherche** « Rechercher un exercice… » avec placeholder « Nom de l'exercice… ». Pagination 20 par 20.
* **État vide** : icône d'haltère, texte « Sélectionnez un exercice ».
* **État chargé** : nom de l'exercice, métadonnées (catégorie · muscle · type), tags, consignes, image *(s'il y en a une)*. Bouton **X** en haut à droite pour désélectionner.
## Zone 4 — Zone de dépôt des périodes (en bas) [#zone-4--zone-de-dépôt-des-périodes-en-bas]
C'est ici que tu rattaches les périodes à l'exercice sélectionné.
États possibles :
* **Pas d'exercice sélectionné** : « ⚠️ Sélectionnez d'abord un exercice » (en rouge).
* **Survol pendant un déplacement valide** : « Déposez la période ici » (en vert).
* **Au repos** : « Glissez une période ici pour créer une référence ».
Quand des périodes ont été déposées, elles s'affichent comme : « nom de la période → nom de l'exercice » avec une icône de flèche, un bouton **X** au survol pour retirer.
Messages d'alerte affichés à l'écran :
* « La période "X" est déjà dans les références » si tu glisses une période déjà déposée.
* Erreur si pas d'exercice ou pas d'activité sélectionnée.
## Tableaux d'aperçu des statistiques [#tableaux-daperçu-des-statistiques]
Dès qu'au moins une période est déposée, les stats s'affichent dans la zone droite, sous le détail de l'exercice.
En-tête : « X période(s) sélectionnée(s) • Durée totale : HHh MMm SSs ».
Deux onglets :
| Onglet | Colonnes |
| ------------------ | ------------------------------------------------------------ |
| **Valeurs Brutes** | Métrique · Moyenne · Min · Max · Somme · Écart-type |
| **Valeurs/Minute** | Métrique · Moy/min · Min/min · Max/min · Somme/min · É-T/min |
Les valeurs sont formatées intelligemment :
* ≥ 1000 → sans décimales, format français.
* ≥ 10 → 1 décimale.
* \< 10 → 2 décimales.
* Vide → « - ».
L'aperçu temps réel calcule moyenne / min / max / somme / écart-type pour chaque période. Les métriques en pourcentage sont traitées spécialement (pas de division par durée).
En **mode test**, l'aperçu n'est pas disponible. La zone affiche
« Mode test activé » et un bouton **Voir les exercices**.
## Sauvegarder les références [#sauvegarder-les-références]
Le bouton **« Sauvegarder X référence(s) »** apparaît en bas à droite de la zone stats dès qu'au moins une période est déposée. Il est désactivé si aucun exercice n'est sélectionné.
Au clic :
1. Validation : exercice + périodes + aperçu des stats présents.
2. Création (ou mise à jour) de la référence GPS pour l'exercice avec les stats brutes et stats par minute.
3. Message de confirmation : « Référence créée/mise à jour pour "\[nom de l'exercice]" (X période(s)) ».
4. La zone de dépôt et les stats sont réinitialisées.
## Aller plus loin [#aller-plus-loin]
# Pro Longitudinal (/docs/pro-analytics/pro-longitudinal)
## Vue d'ensemble [#vue-densemble]
**Pro Longitudinal** est le dashboard principal de la section pro-analytics. Il analyse l'évolution dans le temps de trois familles d'indicateurs (**Charge**, **Questionnaire**, **GPS**) sur l'équipe ou sur un joueur, avec plusieurs méthodes de calcul (brute, moyennes mobiles simples, exponentielles, Z-score, analyse contextuelle complète).
## Structure de la page [#structure-de-la-page]
La page se compose de deux zones :
* **Sidebar gauche** — tous les filtres et réglages.
* **Zone principale** — un en-tête avec les onglets et le sélecteur de type d'analyse, puis le contenu de l'onglet actif.
## Sidebar [#sidebar]
### Mode d'analyse [#mode-danalyse]
Deux choix mutuellement exclusifs :
* **Collectif** — analyse d'une équipe.
* **Individuel** — analyse d'un joueur (ou d'un athlète selon le type de compte).
### Entité [#entité]
Le libellé change selon le mode :
* En **Collectif** : section **Équipes**, recherche « Rechercher une équipe… ».
* En **Individuel** : section **Joueurs** (compte club) ou **Athlètes** (compte athlète), recherche « Rechercher un joueur… ».
Sélection unique dans la liste (vignette + nom).
### Période [#période]
Bouton qui ouvre une fenêtre avec deux modes :
* **X jours depuis aujourd'hui** — sélecteur avec les valeurs **7, 14, 30, 60, 90, 180, 365, 730 jours**. La plage calculée est affichée en clair sous le sélecteur.
* **Entre deux dates** — un calendrier double-mois en mode plage. Bouton **Valider la période** en bas (désactivé tant que les deux dates ne sont pas posées).
Affichage compact dans le bouton principal : « 60 jours » ou « 01 jan - 31 jan 2026 ».
### Type d'événement [#type-dévénement]
Trois boutons en grille (sélection unique) :
* **Tous** *(défaut)*
* **Séances**
* **Matchs**
### Tags [#tags]
Multi-sélection dans une fenêtre, peuplée avec les tags de ton club. Recherche textuelle disponible. Le bouton affiche un résumé : « Aucun », « 1 tag », « X tags ».
### Réglages avancés [#réglages-avancés]
Fenêtre qui regroupe les paramètres fins de l'analyse. Le bouton affiche un résumé dynamique (ex : « Moyenne · Jour · MM 7/28j »).
#### Valeurs manquantes [#valeurs-manquantes]
| Valeur | Effet |
| -------------------------------- | ----------------------------------------------------- |
| **Exclure** *(défaut)* | La date sans donnée est ignorée |
| **Remplacer par zéro** | La date sans donnée prend la valeur 0 |
| **Reporter dernière valeur** | La date sans donnée reprend la dernière valeur connue |
#### Agrégation intra-jour [#agrégation-intra-jour]
| Valeur | Effet |
| -------------------------------- | --------------------------- |
| **Moyenne** *(défaut)* | Moyenne des valeurs du jour |
| **Somme** | Somme des valeurs du jour |
| **Médiane** | Médiane des valeurs du jour |
#### Granularité [#granularité]
| Valeur | Effet |
| ----------------------------- | -------------------------- |
| **Jour** *(défaut)* | Un point par jour |
| **Semaine** | Agrégation par semaine ISO |
| **Mois** | Agrégation par mois |
#### Fenêtres glissantes (jours) [#fenêtres-glissantes-jours]
Visible uniquement quand le type d'analyse utilise des moyennes mobiles. Boutons à activer/désactiver parmi **3, 7, 14, 21, 28**. Au moins une fenêtre doit rester sélectionnée. Par défaut **\[7, 28]**.
## Onglets [#onglets]
Trois onglets dans l'en-tête :
| Onglet | Affichage |
| ----------------- | ------------------------------------------------------------------------------------------------------- |
| **Charge** | Toujours visible |
| **Questionnaire** | Toujours visible |
| **GPS** | Visible si le GPS est configuré ; sinon écran « Paramétrez une clé GPS » avec bouton **Configurer GPS** |
À droite des onglets, un sélecteur **Type d'analyse** avec les valeurs suivantes :
| Type d'analyse | Description |
| ------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------- |
| **Données brutes** | Valeurs telles quelles, sans lissage |
| **Moyennes mobiles simples (SMA)** | Lissage par fenêtres glissantes (cf. réglages avancés) |
| **Moyenne mobile exponentielle (EMA)** | Pondération exponentielle des valeurs récentes |
| **Z-score** | Écart à la moyenne normalisé |
| **Analyse contextuelle complète** *(défaut)* | Inclut l'analyse de la sollicitation à la tendance, les alertes, l'écart à la tendance, l'ACWR pour la charge |
→ Détail complet de chaque type : voir [Les 5 types d'analyse](/docs/pro-analytics/types-analyses).
Chaque onglet est lui-même découpé en sous-onglets : **Graphiques** (ou **Sollicitations** en mode contextuel), **Alertes** (uniquement en mode contextuel), **Statistiques**.
→ Pour comprendre la mécanique des **zones de sollicitation**, des **scénarios d'alerte** et du **score de risque** affichés en mode contextuel, voir [Score de risque et alertes](/docs/pro-analytics/score-risque-alertes).
## Onglet Charge [#onglet-charge]
### Graphiques (mode non contextuel) [#graphiques-mode-non-contextuel]
* **Graphique principal** — titre dynamique selon le type d'analyse (« Données brutes - Charge U.A. », « Moyennes mobiles simples », « Moyenne mobile exponentielle », « Analyse Z-score »). Une case à cocher **Données brutes** permet de superposer la courbe brute en pointillés en mode SMA/EMA.
* **Ratio Charge Aiguë / Chronique (ACWR)** *(SMA/EMA uniquement)* — sous-titre « SMA 7 jours / SMA 28 jours » (ou EMA selon le type). Colonnes du ratio + zones colorées et lignes de référence.
### Sollicitations (mode contextuel) [#sollicitations-mode-contextuel]
* **Score de risque charge** — score sur 10 avec niveau d'attention textuel.
* **Zones de sollicitation - Charge U.A.** — zones colorées par jour selon l'écart à la tendance.
* **Écart à la tendance** — écart en % avec lignes seuil et zones colorées.
* **Historique par date** — tableau récapitulatif jour par jour.
### Alertes (mode contextuel) [#alertes-mode-contextuel]
* Trois cartes **Résumé alertes** sur 7, 14 et 28 jours.
* **Tableau d'alertes** avec date, type, scénario, valeur et seuil.
### Statistiques [#statistiques]
* **Distribution longitudinale - Charge U.A.** — boîte à moustaches par date (Q1, Médiane, Q3, min, max).
## Onglet Questionnaire [#onglet-questionnaire]
Spécificités par rapport à Charge :
* **Sélecteur de questionnaire** en haut du contenu (premier questionnaire pré-sélectionné automatiquement). La liste est filtrée par les filtres de la sidebar (période, type d'événement, tags).
* **Bouton « Métriques »** — multi-sélection des indicateurs à superposer dans le graphique principal.
* **Bouton « Indicateur »** — choix de l'indicateur affiché dans le graphique des zones de sollicitation.
* **Lignes de référence Q1, Médiane, Q3** activables par métrique.
* **Cartes indicateurs** en mode contextuel.
* Les autres blocs (sollicitations, écart à la tendance, alertes, box plot) reprennent la même logique que l'onglet Charge.
## Onglet GPS [#onglet-gps]
Visible uniquement si le GPS est configuré sur ton compte.
Spécificités :
* **Bouton « Indicateur GPS »** — choix de la métrique affichée dans le graphique des zones de sollicitation.
* **Bouton « Métriques »** — multi-sélection des métriques GPS pour le graphique principal (au moins une).
* **Bouton « Quartiles »** — toggle Q1 / Médiane / Q3 par métrique.
* **Sous-onglet « Comparaison tendance »** disponible en mode contextuel + multi-métriques.
## Calcul des analyses [#calcul-des-analyses]
Si beaucoup de paramètres sont demandés ou que la période est longue, l'analyse peut prendre quelques secondes. Un **suivi de progression** est démarré en haut de l'écran si l'analyse est longue ; tu peux continuer à naviguer pendant ce temps.
Selon tes préférences, certaines analyses sont **préchargées** pour qu'elles soient directement disponibles à l'ouverture. Les résultats sont aussi mémorisés temporairement : revenir sur un onglet déjà consulté avec les mêmes paramètres est instantané. Tout changement de paramètre relance le calcul.
## Préférences mémorisées [#préférences-mémorisées]
Plusieurs réglages sont sauvegardés dans tes préférences personnelles et restaurés à chaque visite : mode d'analyse, équipe/sportif par défaut, durée de la période, type d'analyse, onglet par défaut.
## Aller plus loin [#aller-plus-loin]
# Score de risque et alertes (/docs/pro-analytics/score-risque-alertes)
## Vue d'ensemble [#vue-densemble]
L'**analyse contextuelle complète** (un des types d'analyse du dashboard pro-analytics) ne se contente pas de tracer une courbe : elle calcule un **score de risque**, classifie chaque jour dans une **zone de sollicitation** par rapport à la tendance moyenne, détecte des **alertes** sur des scénarios prédéfinis et agrège l'ensemble en un **score global**.
Cette page détaille la mécanique, les seuils, les widgets associés.
## L'analyse de la sollicitation à la tendance [#lanalyse-de-la-sollicitation-à-la-tendance]
C'est la méthode utilisée pour **classifier chaque jour** par rapport à la tendance de fond du sportif (ou de l'équipe). Le principe : on compare la valeur du jour à la **tendance lissée** sur les dernières semaines, et on situe cette valeur dans une **zone** (sous-sollicitation, normale, sursollicitation).
### Comment l'écart à la tendance est calculé [#comment-lécart-à-la-tendance-est-calculé]
La tendance utilisée est une **moyenne mobile exponentielle** : les jours récents pèsent plus que les anciens, ce qui rend la tendance réactive aux changements tout en lissant le bruit ponctuel.
L'écart entre la valeur du jour et cette tendance est ensuite **rapporté à l'échelle de l'indicateur** : pour un RPE noté sur 10, un écart d'1 point pèse beaucoup plus que pour une charge U.A. à plusieurs centaines. Cette mise à l'échelle permet d'utiliser les **mêmes seuils** quel que soit l'indicateur — qu'il s'agisse d'un questionnaire, de la charge U.A. ou d'une métrique GPS.
### 5 zones de sollicitation [#5-zones-de-sollicitation]
| Zone | Couleur | Sens |
| ---------------- | ---------- | ----------------------------------- |
| **Verte** | Vert | Variation habituelle, dans la norme |
| **Bleue claire** | Bleu clair | Sous-sollicitation légère |
| **Bleue foncée** | Bleu foncé | Sous-sollicitation forte |
| **Orange** | Orange | Sursollicitation légère |
| **Rouge** | Rouge | Sursollicitation forte |
Les seuils qui séparent les zones sont **adaptés automatiquement** à la nature de l'indicateur (un RPE et une distance n'ont pas la même variabilité naturelle).
### Affichage [#affichage]
* **Graphique des zones** — chaque jour est affiché par une barre colorée selon sa zone, avec la courbe de tendance superposée et les bandes des seuils.
* **Graphique d'écart à la tendance** — l'écart en pourcentage avec les **lignes de référence** délimitant les zones.
* **Tableau récapitulatif** — historique date par date avec valeur, tendance, écart en %, zone.
## Les scénarios d'alerte [#les-scénarios-dalerte]
Le système d'alerte évalue **4 scénarios** indépendants pour chaque indicateur. Plusieurs scénarios peuvent être actifs simultanément sur le même indicateur ; leurs scores se cumulent.
### Scénario A — Écart ponctuel significatif [#scénario-a--écart-ponctuel-significatif]
Un seul jour où la valeur s'écarte fortement de la tendance, au-delà de la zone normale (±8 %). Signale un **événement isolé** : pic de fatigue, journée exceptionnelle, séance très intense ou très légère par rapport au reste de la période.
* **Direction** : *surcharge* (valeur au-dessus de la tendance) ou *désentraînement* (valeur en-dessous).
* **Détail affiché** : « Écart de +X% par rapport à la tendance ».
### Scénario B — Persistance en zone de sollicitation [#scénario-b--persistance-en-zone-de-sollicitation]
**Plusieurs jours consécutifs** au-delà du seuil normal, **dans la même direction** (toujours en sursollicitation, ou toujours en sous-sollicitation). Si la direction change en cours de série, le compteur reprend à zéro.
Le score augmente avec le nombre de jours consécutifs (jusqu'à un plafond) — plus la situation persiste, plus l'alerte pèse dans le score de risque.
* **Direction** : surcharge ou désentraînement.
* **Détail affiché** : « N jours consécutifs en zone de sursollicitation » (ou de sous-sollicitation).
### Scénario C — Dérive progressive (tendance cachée) [#scénario-c--dérive-progressive-tendance-cachée]
Tendance qui glisse **régulièrement sur plusieurs semaines**, dans une direction (montée ou descente).
Distinction entre **dérive légère** et **dérive marquée** selon l'ampleur de la pente. Signale un **changement de fond**, parfois invisible au quotidien parce que chaque jour reste proche du précédent — c'est l'accumulation qui pose problème.
* **Direction** : *surcharge progressive* ou *désentraînement progressif*.
* **Détail affiché** : « Dérive marquée : surcharge progressive (X%/jour) » par exemple.
### Scénario D — Ratio ACWR anormal (charge uniquement) [#scénario-d--ratio-acwr-anormal-charge-uniquement]
Spécifique à la **charge U.A.** Pour les autres indicateurs (questionnaires, GPS), ce scénario ne s'applique pas.
Le ratio ACWR (Charge Aiguë / Charge Chronique) compare la charge des derniers jours à la charge de fond. Cinq zones :
| Zone | Ratio | Sens |
| ------------------------ | --------- | --------------------- |
| Sous-entraînement sévère | \< 0.5 | Décrochage important |
| Sous-entraînement modéré | 0.5 → 0.8 | Charge insuffisante |
| **Zone optimale** | 0.8 → 1.3 | Pas d'alerte |
| Surcharge modérée | 1.3 → 1.5 | Charge accumulée |
| Surcharge sévère | > 1.5 | Risque blessure élevé |
Hors zone optimale, le scénario D s'active.
### Sortie : le détail d'alerte [#sortie--le-détail-dalerte]
Chaque alerte produite contient : date, indicateur, scénario, direction (surcharge / désentraînement), score, et un détail textuel lisible (« Écart de +14% par rapport à la tendance », « 3 jours consécutifs en zone de sursollicitation », etc.).
## Le score de risque [#le-score-de-risque]
### Score par indicateur [#score-par-indicateur]
Pour **chaque indicateur** analysé, un score de risque est calculé en fonction de :
* Le **nombre de zones d'alerte** (orange / rouge) récentes
* La **persistance** des alertes (combien de jours consécutifs)
* L'**intensité** des écarts à la tendance
* Le **type de scénario** déclenché (certains scénarios pèsent plus que d'autres)
### Score global (agrégation multi-indicateurs) [#score-global-agrégation-multi-indicateurs]
Pour les analyses **multi-indicateurs** (ex: questionnaire avec plusieurs questions), les scores par indicateur sont agrégés en un **score final** :
* **Score sur 10**
* **Niveau d'attention** : Faible / Modéré / Élevé / Critique
* **Nombre d'indicateurs impactés** sur le total
* **Ratio d'impact** (ex: 3 indicateurs sur 5)
* **Nombre de scénarios actifs**
* **Date d'analyse**
### Niveaux d'attention et couleurs [#niveaux-dattention-et-couleurs]
| Score | Niveau | Couleur |
| ------ | ------------ | ------- |
| 0 - 3 | **Faible** | Vert |
| 3 - 5 | **Modéré** | Jaune |
| 5 - 7 | **Élevé** | Orange |
| 7 - 10 | **Critique** | Rouge |
**Une alerte n'impose pas une action.** C'est avant tout un signal de **vigilance** : le système te dit *« quelque chose sort de l'ordinaire ici, ça mérite un coup d'œil »*. À toi ensuite d'**approfondir l'analyse** (regarder les autres indicateurs, croiser avec le ressenti du joueur, vérifier le contexte de la séance ou de la période) pour décider s'il y a quelque chose à faire — ou pas. Une alerte critique peut très bien être expliquée par un événement isolé qui ne nécessite aucune intervention ; à l'inverse, une accumulation de petites alertes modérées peut justifier un changement.
### Affichage [#affichage-1]
* **Widget de score de risque** (mode questionnaire) — gros cercle avec score, niveau, ratio d'indicateurs impactés, scénarios actifs.
* **Widget de score de risque charge** (mode charge) — variante focalisée sur la charge U.A., avec contexte ACWR.
## Les résumés d'alertes (3 cartes) [#les-résumés-dalertes-3-cartes]
Sous-onglet **Alertes** du dashboard pro-analytics — uniquement en mode contextuel.
Trois cartes de résumé :
* **7 jours** — alertes des 7 derniers jours
* **14 jours**
* **28 jours**
Chaque carte affiche :
* Nombre total d'alertes sur la période
* **Ventilation par scénario** (badge avec nombre)
* **Ventilation par sévérité** (modérée / élevée / critique)
Bulle d'aide au survol pour les détails.
## Le tableau d'alertes [#le-tableau-dalertes]
Tableau complet sous les 3 cartes. Colonnes :
| Colonne | Contenu |
| -------------- | ------------------------ |
| **Date** | Date du déclenchement |
| **Type** | Catégorie d'alerte |
| **Scénario** | Libellé long du scénario |
| **Valeur** | Valeur observée |
| **Seuil** | Seuil dépassé |
| **Indicateur** | Métrique concernée |
Filtre + tri sur les colonnes.
## Cartes d'indicateurs [#cartes-dindicateurs]
Mode **questionnaire** + **contextuel** uniquement. Une carte par indicateur sélectionné, avec :
* **Valeur actuelle** + date formatée
* **Variation %** sur la période (7 jours par défaut)
* **Tendance** (icône hausse / baisse / stable)
* **Zone du dernier point** (couleur de fond)
* **Tendance moyenne 28j** + **écart à la tendance** en valeur brute
* **Interprétation textuelle** (Augmentation significative / Légère hausse / Stable / Légère baisse / Diminution significative)
Seuils utilisés :
* `|variation| > 12%` → significatif
* `|variation| > 8%` → léger
* Sinon → stable
## Lecture pratique [#lecture-pratique]
### Cas 1 — Fatigue physique : 3 jours consécutifs en sursollicitation [#cas-1--fatigue-physique--3-jours-consécutifs-en-sursollicitation]
* Indicateur **fatigue physique** (questionnaire pré-séance)
* Tendance moyenne récente : **5.2 / 10**
* 3 derniers jours : **6.5**, **6.8**, **7.1** — soit un écart constant entre +13 % et +20 % au-dessus de la tendance, dans la **zone rouge**
* Scénario actif : **persistance en zone de sollicitation** (3 jours consécutifs en sursollicitation), score qui s'accumule
→ **Vigilance — agir sur l'alternance des charges, injecter de la récupération, ou questionner le sportif** (sommeil, vie hors sport, début de pathologie). Si le contexte de la semaine était volontairement intense (bloc choc, prépa de match difficile), c'est cohérent ; sinon, ajuster.
### Cas 2 — Charge ressentie en zone bleue (sous-sollicitation) [#cas-2--charge-ressentie-en-zone-bleue-sous-sollicitation]
* Indicateur **charge ressentie** (RPE × durée)
* Tendance moyenne : **350 U.A.**
* Valeur du jour : **240 U.A.** — soit **-31 %** par rapport à la tendance, dans la **zone bleue foncée**
* Scénario actif : **écart ponctuel significatif** dans le sens du désentraînement
→ **Petite alerte, on se questionne sur le contexte** : est-ce un jour de récupération planifié ? Si oui, parfait — la sous-sollicitation est cohérente avec l'intention. Si non, attention : la séance a été **moins sollicitante que ce que tu visais** (groupe peu motivé, exercice mal calibré, conditions extérieures…). Croiser avec le détail de la séance pour comprendre.
### Cas 3 — Dérive progressive du sommeil [#cas-3--dérive-progressive-du-sommeil]
* Indicateur **qualité de sommeil** (questionnaire matin)
* Tendance qui glisse régulièrement à la baisse depuis 3 semaines : de **7.8** → **6.5** sur la période
* Pas forcément un seul jour en zone rouge, mais une **pente négative continue**
* Scénario actif : **dérive progressive** (désentraînement progressif sur l'indicateur sommeil), niveau « marquée »
→ **Détérioration progressive du sommeil** — invisible au quotidien (chaque jour reste proche du précédent), mais cumulée sur 3 semaines, c'est significatif. **Action : échange avec le joueur** pour comprendre (charge cumulée, stress extra-sportif, hygiène de vie, problèmes personnels). Adapter la planification si la fatigue est confirmée.
## Pourquoi seulement en mode contextuel ? [#pourquoi-seulement-en-mode-contextuel-]
* En mode `brute`, `SMA`, `EMA`, `zscore`, le système **ne calcule pas** les zones de sollicitation ni les alertes (économie de calcul).
* Le score de risque dépend des alertes ; les alertes dépendent des zones ; les zones dépendent du calcul de tendance. C'est un **pipeline contextuel** qui s'active uniquement en mode `analyse contextuelle complète`.
## Erreurs à éviter [#erreurs-à-éviter]
* **Réagir à un seul jour rouge** : l'analyse signale, elle ne décide pas. Il faut **plusieurs jours dans la même zone** pour parler de tendance.
* **Comparer les scores de deux sportifs** sans contexte : un score de 6 sur un sprinter peut être normal si sa charge habituelle est haute ; un score de 6 sur un junior peut être un signe d'alerte. Le score est **relatif à l'historique du sportif/équipe**.
* **Ignorer les zones bleues** : la sous-sollicitation est aussi un signal (désentraînement, démotivation, blessure non déclarée).
* **Croire que score = action automatique** : c'est un outil d'aide à la décision. Croiser avec le ressenti joueur, les questionnaires, l'observation terrain.
## Aller plus loin [#aller-plus-loin]
# Les 5 types d'analyse (/docs/pro-analytics/types-analyses)
## Vue d'ensemble [#vue-densemble]
Le sélecteur **Type d'analyse** (en haut à droite du dashboard pro-analytics) propose 5 méthodes statistiques. Chaque méthode change ce qui est affiché dans les graphiques et active/désactive certains widgets (notamment l'ACWR et les alertes contextuelles). Cette page détaille chacune d'elles : formule, cas d'usage, paramètres associés.
| Type d'analyse | Description courte |
| ------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------- |
| **Données brutes** | Valeurs telles quelles, sans lissage |
| **Moyennes mobiles simples (SMA)** | Lissage par fenêtres glissantes |
| **Moyenne mobile exponentielle (EMA)** | Pondération exponentielle des valeurs récentes |
| **Z-score** | Écart à la moyenne normalisé |
| **Analyse contextuelle complète** *(défaut)* | Analyse de la sollicitation à la tendance, alertes, score de risque, écart à la tendance, ACWR pour la charge |
## 1. Données brutes [#1-données-brutes]
### Ce que ça affiche [#ce-que-ça-affiche]
* Une seule courbe : la **valeur quotidienne** (ou hebdomadaire / mensuelle selon la granularité) de l'indicateur, sans aucun lissage.
### Quand l'utiliser [#quand-lutiliser]
* Pour **vérifier** les valeurs réelles avant tout traitement statistique.
* Pour **détecter une saisie aberrante** (pic isolé qui pourrait être une erreur de saisie).
### Limites [#limites]
* Très **bruité** sur des indicateurs subjectifs (RPE, sommeil) ou très variables (sprints, distance haute intensité).
* Pas de **tendance** visible sur des fenêtres courtes — il faut interpréter les variations à l'œil.
* **Pas d'alertes**, pas d'ACWR, pas de zones de sollicitation.
## 2. Moyennes mobiles simples — SMA [#2-moyennes-mobiles-simples--sma]
### Formule [#formule]
Pour chaque date `t` et chaque fenêtre `w` configurée :
```
SMA_w(t) = ( valeur(t-w+1) + valeur(t-w+2) + ... + valeur(t) ) / w
```
C'est la **moyenne arithmétique** des `w` derniers jours.
### Ce que ça affiche [#ce-que-ça-affiche-1]
* **Une courbe par fenêtre** sélectionnée dans **Réglages avancés > Fenêtres glissantes** (défaut `[7, 28]`).
* **Style visuel adaptatif** par fenêtre (la plus longue en trait plein épais, les autres en pointillés de plus en plus légers).
* Optionnellement la **courbe brute** superposée en pointillés via le toggle **Données brutes**.
* Un **graphique ACWR** dédié si les fenêtres `7j` et `28j` sont actives → calcule `SMA_7 / SMA_28` (ratio aigu/chronique).
### Cas d'usage [#cas-dusage]
* **Charge programmée** sur 7 et 28 jours pour piloter le ratio ACWR (zone optimale 0,8 → 1,3).
* **Questionnaire récupération** sur 7 et 14 jours pour lisser le bruit individuel.
* Comparer la **tendance courte** (7j) à la **tendance longue** (28j).
### Limites [#limites-1]
* Une SMA donne **autant de poids** aux valeurs anciennes qu'aux récentes — moins réactif aux changements.
* Aux premiers jours d'une fenêtre, la SMA n'est pas encore représentative (on a besoin de `w` jours d'historique).
## 3. Moyenne mobile exponentielle — EMA [#3-moyenne-mobile-exponentielle--ema]
### Formule [#formule-1]
Pour chaque date `t` :
```
α = 2 / (w + 1)
EMA_w(t) = α × valeur(t) + (1 - α) × EMA_w(t-1)
```
C'est une moyenne **pondérée** où les valeurs récentes pèsent plus que les anciennes (décroissance exponentielle).
### Ce que ça affiche [#ce-que-ça-affiche-2]
Identique à SMA :
* Une courbe par fenêtre configurée
* Toggle **Données brutes** pour superposer la courbe brute
* ACWR avec `EMA_7 / EMA_28` si les deux fenêtres sont actives
### Cas d'usage [#cas-dusage-1]
* Quand tu veux que ta tendance **réagisse plus vite** aux changements récents (idéal sur RPE, sommeil, fatigue ressentie).
* Quand l'effectif a un historique court : l'EMA donne un résultat exploitable plus tôt qu'une SMA.
### Limites [#limites-2]
* Plus **sensible aux pics isolés** que la SMA — un point très haut isolé tirera la courbe vers le haut plus longtemps.
* Moins **interprétable** intuitivement : les coachs sont habitués aux moyennes simples.
## 4. Z-score [#4-z-score]
### Formule [#formule-2]
Pour chaque date `t` :
```
z(t) = ( valeur(t) - moyenne(historique) ) / écart-type(historique)
```
L'historique de référence est calculé sur une fenêtre de 28 jours par défaut.
### Ce que ça affiche [#ce-que-ça-affiche-3]
* Une courbe par indicateur sélectionné, **valeur en z-score** (typiquement entre -3 et +3).
* Pas d'ACWR (le z-score ne se prête pas à un ratio).
* Pas de zones de sollicitation (calculées en mode contextuel uniquement).
### Lecture [#lecture]
* `z = 0` → valeur = moyenne historique
* `z = +1` → valeur = moyenne + 1 écart-type (un peu plus haut que d'habitude)
* `z = +2` → valeur = moyenne + 2 écarts-types (significativement plus haut)
* `|z| > 2` → **valeur anormale** statistiquement (95e percentile sur une distribution normale)
### Cas d'usage [#cas-dusage-2]
* **Comparer des indicateurs d'unités différentes** sur le même graphique (RPE et distance HI ne se comparent pas en valeur, mais en z-score, oui).
* **Détecter un point aberrant** sur un sportif (z > 2 ou z \< -2 sur sa propre référence).
### Limites [#limites-3]
* Suppose une **distribution approximativement normale** (peu robuste si la donnée est fortement asymétrique).
* Sensible à la **fenêtre de référence** : avec 28 jours, un changement saisonnier déforme l'écart-type.
## 5. Analyse contextuelle complète — défaut [#5-analyse-contextuelle-complète--défaut]
### Concept [#concept]
C'est le **mode le plus riche**. Il combine plusieurs analyses :
1. **Analyse de la sollicitation à la tendance** — découpage en **5 zones** de sollicitation par rapport à la tendance moyenne.
2. **Écart à la tendance** — détection en pourcentage.
3. **Score de risque** par indicateur + score global agrégé.
4. **Système d'alertes** (scénarios) avec résumés sur 7, 14, 28 jours.
→ Détail complet dans [Score de risque et alertes](/docs/pro-analytics/score-risque-alertes).
### Ce que ça affiche [#ce-que-ça-affiche-4]
* Un **widget de score de risque** avec score sur 10 + niveau d'attention textuel (Faible / Modéré / Élevé / Critique)
* Un **graphique des zones de sollicitation** avec les valeurs colorées par zone (Verte / Bleu clair / Bleu foncé / Orange / Rouge)
* Un **graphique d'écart à la tendance** avec l'écart en % et les seuils
* Un **tableau récapitulatif** jour par jour
* Sous-onglet **Alertes** avec :
* 3 cartes de **résumé d'alertes** sur 7j, 14j, 28j
* Un **tableau d'alertes** détaillant chaque déclenchement (date, type, scénario, valeur, seuil)
* Onglet **Statistiques** avec un **box plot longitudinal** (Q1, Médiane, Q3, min, max par date)
### Quand l'utiliser [#quand-lutiliser-1]
* C'est le **mode par défaut** car il fournit une vision complète. Utiliser les autres modes pour des analyses ciblées.
* Avant de prendre une décision (ajuster la charge, mettre un sportif au repos), basculer en contextuel pour avoir le score, les alertes et le contexte.
### Limites [#limites-4]
* **Calcul plus long** que les autres modes (toutes les sections sont calculées simultanément).
* Nécessite **au moins \~28 jours** de données pour que la tendance, les écarts et les zones soient pertinents.
## Paramètres communs (Réglages avancés) [#paramètres-communs-réglages-avancés]
Quel que soit le type d'analyse, ces paramètres modifient le calcul :
| Paramètre | Effet |
| ------------------------- | ------------------------------------------------------------------------- |
| **Valeurs manquantes** | `exclure` (défaut) / `0` / `forward fill` |
| **Agrégation intra-jour** | `moyenne` / `somme` / `médiane` quand un jour a plusieurs séances |
| **Granularité** | `jour` / `semaine` / `mois` |
| **Fenêtres glissantes** | Valeurs `[3, 7, 14, 21, 28]` toggleables — visible seulement en SMA / EMA |
## Quel type choisir ? — Tableau récap [#quel-type-choisir---tableau-récap]
| Cas d'usage | Type recommandé |
| ----------------------------------------------- | ------------------------------------ |
| Vérifier les saisies | Données brutes |
| Piloter la charge globale | Moyennes mobiles simples (avec ACWR) |
| Détecter les changements rapides (RPE, sommeil) | Moyenne mobile exponentielle |
| Comparer plusieurs indicateurs hétérogènes | Z-score |
| Décision globale, débrief, suivi continu | Analyse contextuelle complète |
## Aller plus loin [#aller-plus-loin]
# Analyse data avancée — vue d'ensemble (/docs/pro-analytics/vue-densemble)
## Vue d'ensemble [#vue-densemble]
La section **Analyse data avancée** regroupe les outils d'analyse statistique poussée et de modélisation GPS. Tu y accèdes depuis le menu latéral sous l'item **pro-analytics**. C'est une section réservée aux comptes premium.
Différence avec la section [Statistiques](/docs/statistiques/stats-seance) :
* **Statistiques** = vues **descriptives** (lire ce qui s'est passé sur une séance, un match, un sportif).
* **pro-analytics** = vues **analytiques** (z-score, moyennes mobiles, analyse de la sollicitation à la tendance, alertes contextuelles, comparaison de cycles, calcul de normes individualisées, modélisation par exercice).
## Les outils disponibles [#les-outils-disponibles]
| Outil | À quoi ça sert |
| -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| **Pro Longitudinal** (page principale) | Dashboard d'analyse longitudinale (Charge, Questionnaire, GPS) avec 5 types d'analyse (brute / SMA / EMA / Z-score / Analyse contextuelle) |
| **Analyses des cycles** | Analyser un cycle (présences, expositions, tags, types) et comparer A vs B |
| **Modélisation GPS athlètes** | Calculer les **normes GPS** de l'effectif (par joueur, poste, tag) à partir des données réelles |
| **Modélisation GPS exercices** | Lier des **périodes GPS de référence** à des exercices pour construire un référentiel par exercice |
## Organisation du menu [#organisation-du-menu]
Le menu **pro-analytics** est divisé en deux groupes :
* **Analyse avancée**
* **Pro Longitudinal**
* **Analyses des cycles**
* **Modélisation GPS**
* **Modélisation GPS athlètes**
* **Modélisation GPS exercices**
## Pages associées dans cette doc [#pages-associées-dans-cette-doc]
Pour les détails des concepts récurrents, voir aussi :
* [Les 5 types d'analyse](/docs/pro-analytics/types-analyses) — brute, SMA, EMA, Z-score, contextuelle
* [Score de risque et alertes](/docs/pro-analytics/score-risque-alertes) — sollicitation à la tendance, zones, scénarios, score global
* [Notion de cycle](/docs/pro-analytics/cycles) — création depuis la planification
## Pré-requis [#pré-requis]
* **Compte premium** — la section pro-analytics est réservée aux abonnements premium. Sans abonnement, le menu n'est pas visible.
* **Configuration GPS** active dans tes préférences pour accéder à l'onglet GPS du dashboard et aux deux pages de modélisation. Sans configuration, ces vues affichent un écran « Paramétrez une clé GPS » avec un bouton **Configurer GPS**.
* **Cycles créés** dans la planification pour que la page *Analyses des cycles* affiche quelque chose. La création se passe dans la **planification**, pas dans pro-analytics. Voir [Notion de cycle](/docs/pro-analytics/cycles).
* **Données suffisantes** : la plupart des analyses nécessitent au moins 4 semaines de données pour être pertinentes (moyennes mobiles 28 jours, z-score, ACWR, normes individuelles…).
## Calcul des analyses [#calcul-des-analyses]
**Toutes les analyses lourdes** (charge, questionnaire, GPS, événements de cycle, comparaison de cycles) fonctionnent de la même façon :
* Si le résultat existe déjà en mémoire pour les mêmes paramètres → il s'affiche **instantanément**.
* Sinon → un **calcul est lancé en arrière-plan**. Tu vois un petit cercle de progression en haut de l'écran ; tu peux continuer à naviguer pendant ce temps. Une fois terminé, le résultat s'affiche.
Conséquence pratique : la **première analyse** peut prendre quelques secondes (le temps que le calcul tourne en arrière-plan). Les suivantes, avec les mêmes paramètres, sont instantanées.
## Préférences mémorisées [#préférences-mémorisées]
Plusieurs réglages sont sauvegardés dans tes préférences personnelles et restaurés à chaque visite : onglet d'arrivée, période d'analyse en jours, type d'analyse par défaut, mode (collectif / individuel), équipe et sportif pré-sélectionnés.
## Aller plus loin [#aller-plus-loin]
# Données GPS (/docs/statistiques/donnees-gps)
## Vue d'ensemble [#vue-densemble]
FormaPulse intègre les données issues de **fournisseurs GPS** (Catapult, STATSports, Polar Team Pro, Playermaker, ou GPS génériques via CSV). Une fois la configuration GPS active, les sessions sont rapatriées et **liées à des événements** (séances ou matchs), pour produire des statistiques par sportif, par période d'activité (échauffement, opposition, retour au calme…), et des **références individualisées** servant de base à toutes les comparaisons.
Cette page explique :
* Le pré-requis : la **configuration GPS** dans Préférences
* Comment les données sont **lues** dans chacune des pages statistiques
* Comment fonctionnent les **références GPS individualisées** (croisements, méthodes, tendances)
Pour la **synchronisation** d'une session sur un événement (auto + manuelle/CSV), voir [Synchroniser une session GPS](/docs/statistiques/synchroniser-gps).
## 1. Configurer le GPS (pré-requis) [#1-configurer-le-gps-pré-requis]
### Accès [#accès]
**Profil > Préférences > section GPS**.
Sans configuration GPS active, l'onglet GPS des pages stats affiche un bandeau **« Configuration GPS requise »** avec un bouton qui redirige vers cette page.
### Modes de fournisseur [#modes-de-fournisseur]
* **Fournisseur connecté** — authentification directe vers le fournisseur (clé d'accès ou login). Les sessions sont récupérées automatiquement à la date de l'événement.
* **Fournisseur manuel (CSV)** — import de fichiers CSV avec un format personnalisé : séparateur, encodage (UTF-8 par défaut), lignes d'en-tête à ignorer, séparateur décimal. Permet de connecter n'importe quelle source GPS qui sait exporter un CSV (montre connectée, traceur amateur, etc.).
### Métriques sélectionnées [#métriques-sélectionnées]
Au moment de la configuration, tu choisis **les métriques à conserver** parmi celles que retourne le provider. Pour chaque métrique, FormaPulse stocke son libellé, son unité, sa catégorie.
Seules les métriques cochées sont stockées et apparaissent dans les statistiques. Pour ajouter une métrique manquante, modifier la configuration et **ré-importer** les sessions concernées.
### Une fois la configuration active [#une-fois-la-configuration-active]
Une fois configuré, l'accès suivant est débloqué :
* L'onglet GPS des pages stats > séances/matchs
* L'onglet Réf. GPS de stats individuelles
* L'onglet GPS du suivi longitudinal
* Les pages pro-analytics (Modélisation GPS athlètes, Modélisation GPS exercices, onglet GPS du dashboard)
* Le bouton **Synchroniser** dans les modales GPS
## 2. Lecture des données GPS dans chaque page [#2-lecture-des-données-gps-dans-chaque-page]
### Stats > Séances/Matchs — Onglet GPS [#stats--séancesmatchs--onglet-gps]
Trois cas d'affichage :
**Cas A — Données présentes** :
En-tête de l'activité :
* Nom de la session GPS chez le fournisseur.
* Heure de début / fin / durée.
* **Confiance de liaison** (en pourcentage) — qualité de la liaison automatique. Plus c'est haut, plus la liaison est fiable. Une valeur faible signale un horaire d'événement potentiellement décalé.
* Type de liaison : automatique ou manuelle.
Tableau :
* Une **ligne par sportif** filtré par le mode individuel / collectif de la page.
* Colonnes = métriques sélectionnées dans ta configuration GPS, avec une icône et une couleur dédiées par famille (distance, vitesse, charge, sprints, intensité…).
Vue **par périodes** si la session est découpée :
* Bascule **Afficher par période** : éclate les valeurs par échauffement, 1ère mi-temps, 2ème mi-temps, récupération…
* Une ligne *« Moyenne équipe »* est insérée en tête de chaque groupe de période.
* Bascule **Afficher par minute** : normalise en intensité par minute.
* Durée de chaque période affichée en minutes / secondes.
**Cas B — Pas de données mais configuration active** :
* Message *« Aucune donnée GPS pour cette séance »*.
* Bouton **Synchroniser** ([Synchroniser une session GPS](/docs/statistiques/synchroniser-gps)).
**Cas C — Pas de configuration GPS** :
* Message *« Configuration GPS requise »*.
* Bouton **Configurer le GPS** → redirige vers tes préférences.
### Stats > Individuelles — Onglet Réf. GPS [#stats--individuelles--onglet-réf-gps]
Vue spécifique au sportif sélectionné : ses **références GPS individualisées**.
#### Pré-requis : suffisamment d'historique [#pré-requis--suffisamment-dhistorique]
Si le sportif n'a pas assez d'historique pour calculer des normes individualisées, la page affiche un message explicatif. Sinon :
#### Sélecteur du type de croisement [#sélecteur-du-type-de-croisement]
Liste des **types de croisements disponibles** :
* Par tag d'événement uniquement
* Par poste du sportif uniquement
* Par type d'événement (séance / match)
* Croisements composites : type d'événement × poste, type d'événement × tag, poste × tag, etc.
Chaque croisement est calculé indépendamment et donne un **tableau de comparaison** distinct.
#### Tableau pour chaque croisement [#tableau-pour-chaque-croisement]
* En-tête : nombre d'échantillons individuels + date de dernier calcul
* Une **ligne par métrique GPS**
* Colonnes = **méthodes d'agrégation** disponibles : moyenne, médiane (P50), P75, P90, max, top 3 average, écart-type
* Cellules : valeur **individuelle** vs valeur **collective** + écart en valeur brute et en %
* **Icône de tendance** :
* **Hausse** (vert) — l'écart au collectif est en hausse depuis le dernier calcul
* **Baisse** (rouge) — en baisse
* **Stable** (gris) — pas de changement significatif
#### Lecture pratique [#lecture-pratique]
C'est ici qu'on lit, pour un joueur :
* « Sa **distance HI** moyenne en match championnat est à **+12%** du collectif au poste de milieu défensif » → tendance hausse = il s'écarte du collectif vers le haut
* « Sa **vitesse max** en séance est sous le **P75 collectif** depuis 3 mois » → tendance baisse = il décroche
### Suivi longitudinal — Onglet GPS [#suivi-longitudinal--onglet-gps]
Vue **série temporelle** des métriques GPS sur la période choisie. Voir [Suivi longitudinal](/docs/statistiques/suivi-longitudinal#onglet-gps).
### Pro-analytics — Modélisation et Pro Longitudinal GPS [#pro-analytics--modélisation-et-pro-longitudinal-gps]
* **Modélisation GPS athlètes** — page de calcul des **normes par croisements** (joueurs × poste × tag × métrique × méthode). Sert de base aux références individuelles. Voir [Modélisation GPS athlètes](/docs/pro-analytics/modelisation-gps-athletes).
* **Modélisation GPS exercices** — associer des **périodes GPS de référence** à des **exercices** pour construire un référentiel par exercice. Voir [Modélisation GPS exercices](/docs/pro-analytics/modelisation-gps-exercices).
* **Pro Longitudinal — Onglet GPS** — analyse longitudinale avancée (z-score, moyennes mobiles, alertes). Voir [Pro Longitudinal](/docs/pro-analytics/pro-longitudinal#onglet-gps).
## 3. Re-lier ou délier une activité GPS [#3-re-lier-ou-délier-une-activité-gps]
Si une activité est mal liée (mauvais événement, sportif manquant) :
1. Ouvre la fenêtre **Synchroniser** sur l'événement.
2. Sélectionne une **autre activité** dans la liste (ou ré-importe un CSV avec une correspondance corrigée).
3. La nouvelle liaison **remplace** la précédente — les statistiques se rafraîchissent.
→ Détail : [Synchroniser une session GPS](/docs/statistiques/synchroniser-gps).
## 4. Recalcul des références individualisées [#4-recalcul-des-références-individualisées]
Les références (Réf. GPS de stats individuelles) sont recalculées automatiquement :
* Quand de nouvelles données GPS sont importées
* Périodiquement par le système
Tu peux **forcer un recalcul** depuis la page **Modélisation GPS athlètes** (cf. lien plus haut).
## Erreurs à éviter [#erreurs-à-éviter]
* **Configurer le GPS depuis le mauvais compte** : la configuration est **par utilisateur**. Si tu utilises un compte coach partagé, vérifie que la clé est bien sur le bon profil.
* **Correspondance CSV oubliée** : un athlète présent dans le CSV mais non associé à un sportif FormaPulse verra ses données ignorées. Vérifie bien l'aperçu (athlètes total vs athlètes associés) avant la validation finale.
* **Importer un même CSV deux fois** : la liaison est unique par événement, le second import **remplace** le premier. Pour fusionner deux sources, fais la fusion en amont.
* **Confondre métriques sélectionnées et toutes les colonnes du CSV** : seules les métriques cochées dans la configuration sont conservées.
* **Comparer des seuils différents en cours de saison** : les références individuelles sont recalculées à partir de l'historique. Si tu modifies massivement la base d'événements (suppressions de séances, changements de poste), les normes peuvent évoluer de façon contre-intuitive.
* **Onglet GPS toujours vide** : vérifie l'**heure de l'événement** dans la planification ET la **correspondance athlètes** dans la configuration GPS (l'horaire pilote la liaison automatique).
* **Confiance de liaison faible** (sous 50 %) : la liaison est probablement erronée. Re-synchronise manuellement.
## Aller plus loin [#aller-plus-loin]
# Modifier la présence (/docs/statistiques/modifier-presence)
## Vue d'ensemble [#vue-densemble]
Depuis la page **Stats > Séances** ou **Stats > Matchs > onglet Présence**, on peut **éditer en direct** la présence des sportifs : leur **statut médical/sportif** (Apte, Adapté, Réhab…) et leur **indicateur Présent/Absent**. L'édition est immédiate (l'interface réagit tout de suite) avec retour automatique en cas d'échec.
## Statuts disponibles [#statuts-disponibles]
Liste fixe ordonnée :
| Statut | Catégorie | Sens |
| ------------------------- | ------------ | -------------------------------------------------- |
| **Apte** | Disponible | Joueur disponible sans restriction |
| **Adapté** | Disponible | Joueur disponible avec adaptation (charge réduite) |
| **Réhab** | Indisponible | En réhabilitation |
| **RTP** | Indisponible | Return To Play (transition vers compétition) |
| **RTR** | Indisponible | Return To Running (transition vers entraînement) |
| **Arrêt** | Indisponible | Arrêt complet |
| **Discipline** | Indisponible | Sanction disciplinaire |
| **Récupération** | Indisponible | Récupération volontaire |
| **Optimisation sportive** | Indisponible | Programme individualisé hors équipe |
| **Absence** | Indisponible | Absence non médicale (vacances, école, etc.) |
L'**ordre d'affichage** sur l'onglet Présence regroupe les sportifs par statut dans cet ordre.
Le **calcul de disponibilité** (% de dispo dans Suivi individuel et Médical) considère **Apte + Adapté** comme disponibles.
## Édition [#édition]
### Modifier le statut [#modifier-le-statut]
Sur chaque carte sportif de l'onglet Présence, un **sélecteur** affiche le statut courant avec sa couleur. Au clic, une liste déroule tous les statuts disponibles. La nouvelle valeur s'applique immédiatement.
Si l'enregistrement échoue, le statut **revient automatiquement** à sa valeur précédente.
### Bascule Présent / Absent [#bascule-présent--absent]
À droite de chaque carte, un rond cliquable :
* Vert avec une coche — Présent.
* Rouge avec une croix — Absent.
Au clic, la valeur bascule immédiatement. Si l'enregistrement échoue, retour à la valeur précédente.
## Comportement particulier [#comportement-particulier]
### Pourquoi le sportif reste-t-il dans son groupe initial après modif ? [#pourquoi-le-sportif-reste-t-il-dans-son-groupe-initial-après-modif-]
L'onglet Présence groupe les sportifs par statut au moment du **chargement initial**. Quand tu modifies un statut, la valeur change dans la carte (sélecteur + couleur du badge), mais le **regroupement n'est pas recalculé en temps réel** — tu dois changer d'onglet et revenir, ou recharger la page, pour voir la nouvelle ventilation.
C'est volontaire : si on regroupait à chaque modif, le sportif que tu viens d'éditer disparaîtrait visuellement de sa position, ce qui rendrait l'édition en série pénible.
## Cas d'usage [#cas-dusage]
### Cas 1 — Joueur arrivé en retard [#cas-1--joueur-arrivé-en-retard]
À la fin de la séance, tu vois qu'un joueur n'a pas été coché présent alors qu'il était bien là (oubli à l'appel). Tu cliques sur le rond rouge → il bascule au vert avec une coche.
### Cas 2 — Joueur passe en réhab après séance [#cas-2--joueur-passe-en-réhab-après-séance]
Pendant la séance, blessure. Tu peux soit :
* Modifier ici (Stats > Séances > Présence) le statut en `Réhab` pour cette séance précisément
* Aller dans la fiche du joueur (Athlètes > fiche) pour modifier son statut de **manière permanente**
Les deux endroits ne se confondent pas : la modif depuis Stats > Présence change la présence pour **cet événement** ; la fiche joueur change le statut **par défaut**.
### Cas 3 — Annuler une convocation passée [#cas-3--annuler-une-convocation-passée]
Si un joueur était convoqué (présent par défaut) mais a finalement été absent, tu mets `Absent` + statut `Absence`. Cela impacte ensuite :
* Les % de disponibilité calculés sur la période
* Le compte d'absences dans Stats > Individuelles > Suivi
* Les réponses aux questionnaires (un sportif absent n'est pas attendu sur le questionnaire)
## Pourquoi pas de bouton « Sauvegarder » ? [#pourquoi-pas-de-bouton--sauvegarder--]
L'édition est en direct : pas besoin de cliquer sur Sauvegarder. Si l'enregistrement échoue, le retour à la valeur précédente est automatique.
## Erreurs à éviter [#erreurs-à-éviter]
* **Cliquer plusieurs fois rapidement** : chaque clic déclenche un enregistrement. Si tu changes de statut 5 fois en 2 secondes, 5 enregistrements partent. Seul le dernier compte, mais c'est inutile.
* **Modifier la présence pour une séance future** : techniquement possible mais court-circuite la logique de convocation/relance. Préférer modifier directement depuis la planification pour les événements à venir.
* **Confondre statut événement et statut profil** : le statut sur Stats > Présence est **par événement**. Le statut sur la fiche joueur est **par défaut** pour les futurs événements. Modifier l'un ne propage pas vers l'autre rétroactivement.
* **Changer le statut d'un joueur qui n'a pas été convoqué** : si le joueur n'apparaît pas sur l'onglet Présence, c'est qu'il n'est pas dans la convocation. Ajouter via la planification.
* **Penser que retour à l'état initial = erreur silencieuse** : si tu vois une valeur revenir à son état initial sans message, c'est probablement un échec de sauvegarde (session expirée, permissions). Recharger la page et retenter.
## Aller plus loin [#aller-plus-loin]
# Notifications de rappel questionnaire (/docs/statistiques/notifications-rappel-questionnaire)
## Vue d'ensemble [#vue-densemble]
Quand un événement (séance ou match) a un **questionnaire associé**, FormaPulse pousse une notification mobile vers les sportifs concernés pour leur rappeler de répondre. Il existe **deux mécanismes complémentaires** :
1. **Rappel automatique** — des rappels sont envoyés automatiquement aux sportifs **n'ayant pas répondu**, **toutes les 4 heures** pendant les **16 heures qui suivent la fin de la séance** (soit **4 rappels maximum** par sportif et par questionnaire).
2. **Rappel manuel** — depuis la page **Stats > Séances/Matchs > onglet Questionnaire**, un bouton **cloche** permet d'envoyer un rappel **immédiat** aux sportifs n'ayant pas encore répondu.
Les deux mécanismes utilisent le même canal de notification mobile.
## Pré-requis côté joueur [#pré-requis-côté-joueur]
Pour qu'un sportif reçoive une notification :
* Il doit avoir installé l'**application mobile FormaPulse Joueur** et s'être connecté
* L'app doit avoir **enregistré son token de notification** lors de la première connexion
* Les notifications push doivent être **autorisées** au niveau de l'OS du téléphone
Si un sportif n'a pas autorisé les notifications, le rappel est silencieusement ignoré pour lui (les autres sportifs valides la reçoivent quand même).
## 1. Rappel automatique (toutes les 4h pendant 16h) [#1-rappel-automatique-toutes-les-4h-pendant-16h]
### Fonctionnement [#fonctionnement]
Après la fin d'une séance ayant un questionnaire associé, le système envoie un rappel **toutes les 4 heures** aux sportifs n'ayant pas répondu, et ce **pendant 16 heures**. Cela représente au maximum **4 notifications** par sportif et par questionnaire :
| Échéance | Notification |
| -------------------------- | ------------------- |
| 4h après la fin de séance | 1er rappel |
| 8h après la fin de séance | 2e rappel |
| 12h après la fin de séance | 3e rappel |
| 16h après la fin de séance | 4e rappel (dernier) |
À chaque tour, le système :
1. Sélectionne les **séances terminées depuis moins de 16 heures** ayant un questionnaire associé.
2. Pour chaque séance, identifie les sportifs **n'ayant toujours pas répondu**.
3. Construit un titre et un message contextuels (nom du questionnaire + nom et date de la séance).
4. Envoie une notification push aux sportifs concernés.
Dès qu'un sportif répond, il **n'est plus relancé** par les rappels suivants.
### Quand un sportif ne reçoit-il PAS le rappel auto ? [#quand-un-sportif-ne-reçoit-il-pas-le-rappel-auto-]
* Il a déjà répondu au questionnaire (les rappels suivants l'ignorent)
* La séance est terminée depuis **plus de 16 heures** (la fenêtre de relance est passée)
* Son téléphone n'autorise pas les notifications, ou il n'a jamais ouvert l'app
* L'événement n'a **pas de questionnaire** associé
## 2. Rappel manuel via la cloche [#2-rappel-manuel-via-la-cloche]
### Où ? [#où-]
Page **Statistiques > Séances** (ou **Matchs**) → onglet **Questionnaire** → colonne de gauche.
Une cloche s'affiche **à côté du % de réponses** uniquement si :
* Un questionnaire est attaché à l'événement
* Au moins un sportif n'a **pas encore répondu**
Info-bulle au survol : *« Envoyer une notification de rappel à N sportif(s) »*.
### Action [#action]
Au clic :
1. La cloche pulse pendant l'envoi (bouton désactivé).
2. Le rappel est envoyé aux sportifs n'ayant pas répondu **uniquement** (ceux qui ont déjà rempli le questionnaire ne sont pas dérangés).
3. Message de confirmation : *« Notifications envoyées à N sportif(s) »*.
4. En cas d'échec : message d'erreur en rouge *« Erreur lors de l'envoi des notifications »*.
### Message envoyé [#message-envoyé]
Par défaut, le message est :
* **Titre** : « 📋 Questionnaire à remplir »
* **Corps** : *« N'oubliez pas de remplir \[nom du questionnaire] pour la séance "\[nom de la séance]" du \[date] »*
### Quand utiliser le manuel ? [#quand-utiliser-le-manuel-]
* Tu veux relancer **avant le prochain créneau auto** (les rappels auto tombent toutes les 4h, donc tu peux gagner du temps en envoyant tout de suite)
* La fenêtre des 16h est **dépassée** : il n'y a plus de rappel auto, seul le manuel reste disponible pour relancer les retardataires
* Tu as ajouté un questionnaire **après coup** à une séance déjà terminée et tu veux notifier immédiatement
## 3. Différences entre auto et manuel [#3-différences-entre-auto-et-manuel]
| Aspect | Rappel auto (4h × 4) | Rappel manuel (cloche) |
| --------------------------- | ------------------------------------------------------------------ | ----------------------------------------------- |
| Déclenchement | Automatique, toutes les 4h | Clic utilisateur |
| Nombre de relances | Jusqu'à **4** par sportif | Illimité (à chaque clic) |
| Sélection des destinataires | Tous les sportifs non-répondus de **toutes** les séances éligibles | Sportifs non-répondus de **la séance affichée** |
| Cible temporelle | Séances terminées depuis **moins de 16h** | Toute séance affichée |
| Visibilité staff | Aucune (silencieux) | Message de confirmation ou d'erreur à l'écran |
## Erreurs à éviter [#erreurs-à-éviter]
* **Spammer la cloche** : chaque clic envoie une notification. Si tu cliques 5 fois, les sportifs reçoivent 5 push (en plus des rappels auto déjà programmés toutes les 4h). Laisse passer un cycle avant de relancer.
* **Cumuler manuel + auto au mauvais moment** : si tu cliques sur la cloche juste avant un créneau auto (ex: 3h59 après la séance), le sportif peut recevoir 2 notifs très rapprochées. Préfère cliquer juste après un créneau auto, ou bien à la toute fin de séance.
* **Attendre passé 16h** : après 16h depuis la fin de la séance, **plus aucun rappel auto** ne part. Si des sportifs n'ont toujours pas répondu, seul le bouton **manuel** permet de les relancer.
* **Téléphone reconfiguré** : si un sportif change de téléphone et ne se reconnecte pas à l'app, ses anciennes notifications sont obsolètes. La notification est ignorée silencieusement. Lui demander de se reconnecter à l'app.
* **Croire que la notif réveille l'app** : sur iOS en mode silencieux ou batterie économique, la notif peut être différée. Ce n'est pas un bug FormaPulse.
## Aller plus loin [#aller-plus-loin]
# Statistiques individuelles (/docs/statistiques/stats-individuelles)
## Vue d'ensemble [#vue-densemble]
La page **Statistiques > Individuelles** centralise toute la donnée d'**un sportif unique** : profil, historique de présence, résultats aux tests physiques, références GPS individualisées, et — pour le personnel médical autorisé — historique de blessures.
Le sportif sélectionné doit être dans ton effectif (ou dans une équipe que tu pilotes pour les comptes club). L'onglet **Médical** est masqué tant que tu n'as pas l'autorisation médicale sur ton compte.
## Filtres globaux [#filtres-globaux]
### Sélecteur de joueur [#sélecteur-de-joueur]
Sidebar gauche, liste filtrable. Le **premier joueur** est sélectionné automatiquement, sauf si tu arrives via un lien qui spécifie déjà un sportif. Changer de joueur **rejoue tous les chargements** et remet à zéro les sélections de l'onglet Tests (courbes, radar, profilage, etc.).
### Période d'analyse [#période-danalyse]
Bouton **période** qui ouvre une fenêtre, avec deux modes :
* **Période en jours** depuis aujourd'hui — défaut : ta préférence personnelle (180 jours par défaut). Présélections rapides : 1 mois (30 j), 3 mois (90 j), 6 mois (180 j), 1 an (365 j).
* **Plage de dates** explicite via calendrier.
La nouvelle période ne s'applique qu'après clic sur **Valider**. À ce moment, les données précédemment chargées sont rechargées.
### Autorisation médicale [#autorisation-médicale]
L'onglet **Médical** n'est visible **que** si tu as l'autorisation médicale sur ton compte (statut ajouté par un administrateur). Sans cette autorisation, l'onglet est masqué.
## Les 5 onglets [#les-5-onglets]
À chaque changement d'onglet, les données ne sont chargées que si elles ne l'ont pas déjà été pour ce couple *(sportif, période)*. Un retour sur un onglet déjà consulté est instantané.
### Onglet Informations [#onglet-informations]
Vue carte d'identité, organisée en **4 cartes** :
#### Identité [#identité]
* Nom, prénom, date de naissance + **âge calculé**
* Lieu de naissance, nationalité
* Langue, genre
#### Contacts [#contacts]
* Email, téléphone, adresse postale
#### Informations sportives [#informations-sportives]
* Sport, poste
* **Statut** affiché en badge coloré
* International (Oui / Non)
* **Anciens clubs** sous forme de badges
* Compte actif et compte vérifié
#### Anthropométrie (dernière mesure connue) [#anthropométrie-dernière-mesure-connue]
Chaque ligne affiche la valeur + sous-texte « Mesuré le \{date} » :
* **Taille** (cm)
* **Poids** (kg)
* **Masse grasse** (%)
* **PHV** (indice de maturité, années) — badge coloré selon la zone :
* **≤ -3** → vert (loin avant pic)
* **-2 à -1.4** → lime
* **-1.4 à -0.8** → jaune
* **-0.8 à 0.8** → **rouge** (zone du pic, sollicitation maximale)
* **0.8 à 1.4** → orange
* **1.4 à 2** → jaune
* **> 3** → vert
→ Pour la saisie, voir [Saisir l'anthropométrie](/docs/joueurs/prises-anthropometriques).
### Onglet Suivi [#onglet-suivi]
Vue d'**historique des événements** auxquels le sportif a participé (séances, matchs, RDV extra, réunions). Pagination de l'historique uniquement, sans recharger les KPI/timeline qui restent affichés pendant le changement de page.
#### Bouton « Voir / Masquer les statistiques détaillées » [#bouton--voir--masquer-les-statistiques-détaillées-]
Affiche/masque 6 cartes de comptage en grille :
| Carte | Contenu |
| ------------------ | ------------------------------------------------------------------------------------------------------------ |
| **Séances** | Nombre + % disponibilité (Apte + Adapté), ventilation par statut |
| **Matchs** | Idem |
| **ParaSportif** | Nombre + ventilation par type (médical / kiné / ostéo / psy / nutritionniste / podologue / dentiste / autre) |
| **Réunions** | Nombre + ventilation par type (staff / équipe / individuelle / parents / débriefing / autre) |
| **Total** | Tous types confondus |
| **Questionnaires** | Taux de réponse + nombre répondus / attendus |
#### Camembert « Présence par statut » [#camembert--présence-par-statut-]
Répartition de tous les événements par statut, avec légende, barre de progression et durées totales.
#### Timeline des présences [#timeline-des-présences]
Barres verticales colorées par statut, scroll horizontal, bulle d'aide avec titre + date + type. Permet de visualiser **les séries** de disponibilité/indisponibilité dans le temps. Calculs locaux :
* **Plus longue série** consécutive de jours disponibles
* **Série en cours**
#### Tableau historique paginé [#tableau-historique-paginé]
Colonnes : Date, Type, Titre, Équipe, Durée, Statut. Une **action œil** par ligne ouvre une fenêtre latérale d'édition.
#### Fenêtre d'édition des informations [#fenêtre-dédition-des-informations]
Pour les RDV extra et réunions, permet d'éditer **inline** trois blocs :
* **Motif** : motif (texte), urgence (boolean), lien blessure (boolean), type de consultation
* **Documents** : notes pratiques + upload de documents (max 15 Mo)
* **Commentaires** : notes libres
L'enregistrement met à jour l'événement et invalide le cache du suivi.
Boutons supplémentaires :
* **Dissocier** un document : retire le doc de l'événement (le fichier reste accessible ailleurs)
* **Supprimer** un document définitivement
* **Naviguer vers les stats de l'événement** : redirige vers Stats > Séances ou Stats > Matchs avec ce sportif comme filtre
### Onglet Tests [#onglet-tests]
Visualisation des résultats aux **tests physiques** du sportif sur la période. Quatre modes d'affichage via le bouton **Type de graphique** :
#### Évolution dans le temps [#évolution-dans-le-temps]
* Courbe d'**un test principal** sélectionné dans le panneau de gauche.
* Possibilité de superposer plusieurs **courbes additionnelles** — chaque test a sa couleur.
* **Normes** affichables selon le périmètre choisi : auto / âge / poste / équipe (le mode auto choisit la norme la plus pertinente).
* Tu peux activer l'affichage des normes par défaut dans tes préférences.
#### Comparaison à barres [#comparaison-à-barres]
* Graphe à **deux barres** comparant deux tests sur les mêmes dates de passation.
* Possibilité d'ajouter des **lignes additionnelles** au-dessus des barres.
* Idéal pour comparer l'évolution de deux tests liés (par exemple force et vitesse).
#### Profilage 2D [#profilage-2d]
* Nuage de points test X vs test Y.
* Sélecteur d'**événement par axe** : par défaut la passation la plus récente du test ; tu peux fixer l'événement de référence.
* Affichage optionnel des **zones de normes** en 4 quadrants colorés.
* Ajustement automatique des bornes des axes.
#### Profil multi-tests (radar) [#profil-multi-tests-radar]
* Radar sur **plusieurs tests sélectionnés** simultanément.
* Comparaison du sportif aux normes du périmètre choisi.
* Idéal pour visualiser un profil complet sur une seule passation.
→ Voir [Faire passer un test physique](/docs/joueurs/tests-physiques) pour la définition des tests et des normes.
### Onglet Réf. GPS [#onglet-réf-gps]
Affiche les **références GPS individualisées** du sportif :
* Si l'historique du sportif est **insuffisant** → message « Pas encore assez d'historique pour calculer des normes »
* Sinon, pour chaque **croisement** (par type d'événement, par poste, par tag, ou combinaisons) :
* Tableau avec une ligne par métrique GPS
* Colonnes = méthodes d'agrégation : moyenne, médiane (P50), P75, P90, max, top 3 average, écart-type
* Cellules : valeur **individuelle** vs valeur **collectif**, avec **écart** (brut, %) et **icône de tendance** (hausse / baisse / stable)
* Header avec le nombre d'échantillons individuels et la date de dernier calcul
Sélecteur de **type de croisement** en haut.
→ Voir [Données GPS](/docs/statistiques/donnees-gps) pour le pipeline de calcul des normes.
### Onglet Médical (réservé) [#onglet-médical-réservé]
⚠️ **Visible uniquement si tu as l'autorisation médicale**. Sans cette autorisation, l'onglet est masqué et l'accès aux données est refusé.
#### KPI blessures (4 cartes) [#kpi-blessures-4-cartes]
| Carte | Contenu |
| --------------------------- | ------------------------------------------------------------------------------------------------------------------ |
| **Total blessures** | Nombre total de blessures sur la période |
| **Jours d'indisponibilité** | Cumul des jours d'arrêt |
| **Incidence** | Nombre de blessures pour 1000 heures d'exposition (méthode épidémiologique standard) + sous-texte « X h exposées » |
| **Disponibilité** | % de séances + matchs où le statut était Apte ou Adapté |
#### Bodymap [#bodymap]
À côté des cartes, deux silhouettes (avant + arrière) avec **carte de chaleur** : chaque blessure incrémente la zone correspondante. Les zones les plus touchées sont rouges, les autres en dégradé.
Bouton **agrandir** → ouvre une fenêtre en bas avec les deux silhouettes en grand.
#### Graphique disponibilité [#graphique-disponibilité]
Barres journalières sur la période. Couleur : **rouge** s'il y a une blessure en cours ce jour, **vert** sinon. Une bulle d'aide au survol liste les blessures actives à la date avec leur localisation.
#### Tableau historique des blessures [#tableau-historique-des-blessures]
Colonnes :
* **Date de blessure**
* **Localisation** (label de la zone)
* **Jours d'indisponibilité** (suffixé `(en cours)` si pas de date RTP)
* **Gravité** (badge coloré : Minime / Légère / Modérée / Sévère / Grave)
* **Récidive** (icône orange si oui)
* **Statut** (En cours / Terminée)
## Comportement des données chargées [#comportement-des-données-chargées]
* Les données restent en mémoire par triplet *(sportif, onglet, période)*.
* Changer de **joueur** → tout est rechargé + les sélections de l'onglet Tests sont remises à zéro.
* Changer de **période** (clic Valider) → tout est rechargé.
* Changer d'**onglet** → chargement uniquement si la donnée n'a pas déjà été consultée.
* Sur le Suivi, la **pagination** de l'historique ne recharge ni les compteurs ni la timeline.
## Erreurs à éviter [#erreurs-à-éviter]
* **Période trop courte sur l'onglet Tests** : avec 30 jours, un seul test → modes Comparaison/Profilage/Radar vides. Élargir à 6 mois ou 1 an.
* **Onglet Médical absent** : tu n'as pas l'autorisation médicale. Contacter un administrateur.
* **PHV en rouge** : ce **n'est pas une alerte de blessure** mais le marqueur que le joueur est en zone de pic de croissance. Voir [Saisir l'anthropométrie](/docs/joueurs/prises-anthropometriques) pour l'échelle complète.
* **Disponibilité = Apte + Adapté** : si tu veux un taux strict d'Apte, il faut le lire depuis le camembert en additionnant manuellement.
* **Période non appliquée** : la nouvelle période ne s'applique qu'après le clic **Valider** dans la fenêtre de sélection.
* **Pas de normes en Réf. GPS** : il faut un minimum d'historique pour générer les normes individualisées.
* **Onglet Suivi - tableau qui ne se rafraîchit pas après édition** : changer de page de pagination ne rafraîchit que l'historique. Pour tout recharger, change d'onglet et reviens, ou change de période.
## Aller plus loin [#aller-plus-loin]
# Statistiques de match (/docs/statistiques/stats-match)
## Vue d'ensemble [#vue-densemble]
La page **Statistiques > Matchs** reprend exactement la même architecture que la page Statistiques > Séances, mais filtre la liste des événements sur les **matchs** (championnat, coupe, amical, tournoi, échauffement).
## Différences avec les séances [#différences-avec-les-séances]
### Sidebar — différences [#sidebar--différences]
Le rendu est strictement identique à la page séances, à deux détails près :
* Chaque carte d'événement affiche en plus le **type de match** sous la date (en ambré) :
* Championnat
* Coupe
* Amical
* Tournoi
* Échauffement
* Les **préférences** mémorisées sont propres à la page Matchs (équipe par défaut, sportif par défaut, mode d'analyse, mode d'affichage).
→ Pour le détail de la sidebar, voir [Statistiques de séance](/docs/statistiques/stats-seance#la-sidebar-de-gauche).
### Onglets — différences [#onglets--différences]
Les six onglets sont les mêmes (Informations, Présence, Exercice, Questionnaire, GPS, Données). **Seul l'onglet Informations change**.
## Onglet Informations — version match [#onglet-informations--version-match]
Bloc droit avec **4 cartes KPI** au lieu de 3.
### Carte 1 — Score / Résultat [#carte-1--score--résultat]
Source : score équipe, score adversaire, résultat saisis dans la fiche match.
* Si un score est saisi → affiche *« score équipe - score adversaire »* avec la couleur du résultat.
* Sinon → affiche la lettre **V** (victoire), **D** (défaite), **N** (nul), ou un tiret si rien n'est connu.
**Couleur du résultat** :
* Victoire → vert
* Défaite → rouge
* Match nul → jaune
* Inconnu → gris
### Cartes 2-3-4 — Durée, RPE, Charge U.A. [#cartes-2-3-4--durée-rpe-charge-ua]
Identiques aux séances :
| Carte | Contenu |
| --------------- | ----------------------------------- |
| **Durée** | Durée prévue du match en minutes |
| **RPE attendu** | Note RPE planifiée + libellé coloré |
| **Charge U.A.** | Charge planifiée |
### Sections additionnelles spécifiques au match [#sections-additionnelles-spécifiques-au-match]
Sous le bloc KPI, des sections contextuelles propres à un match (chacune ne s'affiche que si renseignée) :
#### Adversaire [#adversaire]
* Nom de l'équipe adverse
* Badge **Domicile** / **Extérieur**
* Badge niveau adversaire
#### Compétition [#compétition]
* Nom de la compétition
* Phase (poule, 1/4, 1/2, finale, …)
#### Objectifs du match [#objectifs-du-match]
Texte libre saisi à la planification.
#### Système de jeu [#système-de-jeu]
Système tactique (4-3-3, 4-4-2…) en badge.
#### Lieu [#lieu]
Infrastructure + adresse.
#### Horaires [#horaires]
* **RDV** — heure de rendez-vous
* **Échauffement** — heure d'échauffement
#### Transport [#transport]
Moyen de transport + durée en minutes.
#### Notes post-match [#notes-post-match]
Texte mis en forme saisi en débrief.
#### Commentaires staff [#commentaires-staff]
Une carte par commentaire, mise en forme préservée (sauts de ligne respectés).
## Onglets identiques aux séances [#onglets-identiques-aux-séances]
* **Présence** : groupement par statut, édition inline (voir [Modifier la présence](/docs/statistiques/modifier-presence))
* **Exercice** : si une séance/échauffement est rattachée au match, son détail s'affiche ici (cas typique : trame d'échauffement standardisée avant match)
* **Questionnaire** : mêmes vues collectif/individuel, cloche de rappel manuelle (voir [Notifications de rappel questionnaire](/docs/statistiques/notifications-rappel-questionnaire))
* **GPS** : trois cas (données / synchroniser / configurer) — voir [Synchroniser une session GPS](/docs/statistiques/synchroniser-gps)
* **Données** : mappers personnalisés (stats individuelles match, ressentis post-match, données spécifiques compétition…)
→ Détail des onglets communs : voir [Statistiques de séance](/docs/statistiques/stats-seance#les-onglets-de-la-zone-principale).
## Cas d'usage typiques [#cas-dusage-typiques]
* **Mapper « Stats individuelles match »** : créer un mapper avec champs **buts**, **passes décisives**, **tirs cadrés**, **cartons jaunes**, **cartons rouges** côté valeurs par sportif. À chaque match, l'onglet Données permet de saisir ces stats par joueur.
* **Mapper « Conditions de jeu »** : champs **température**, **pluie** (boolean), **état terrain** (sélection) côté valeurs collectives. Saisi au coup d'envoi, lu en analyse longitudinale.
* **Notes post-match** : utiliser le champ rich text pour le débrief tactique. Apparaît dans la fiche Informations + dans le suivi longitudinal individuel.
* **Échauffement attaché** : créer une séance d'échauffement et la lier au match → l'onglet Exercice du match affiche son contenu (utile pour comparer la charge d'échauffement standardisée vs la charge match).
## Erreurs à éviter [#erreurs-à-éviter]
* **Score non renseigné** : si tu oublies de saisir le score post-match, la carte affiche `0 - 0` et le résultat est vide. Pense à compléter la fiche match.
* **Mauvais type d'événement** : si tu crées un match en type séance, il n'apparaîtra pas dans cette page. Le type est défini dans le formulaire de création (Planification).
* **Stats individuelles match sans mapper** : sans mapper dédié, les buts/passes par joueur ne sont pas stockés. Configure-le **avant** la saison ou en début de match.
* **RPE attendu vs ressenti** : la carte RPE est la valeur **prévue**. Le ressenti se lit dans l'onglet Questionnaire (si un questionnaire post-match est attaché à l'événement).
* **Métadonnées vides après création rapide** : si tu crées le match en quick-add, seuls le titre et la date sont renseignés. Reviens sur la fiche pour saisir adversaire, compétition, etc.
## Aller plus loin [#aller-plus-loin]
# Statistiques de séance (/docs/statistiques/stats-seance)
## Vue d'ensemble [#vue-densemble]
La page **Statistiques > Séances** permet de consulter, événement par événement, tout ce qui a été produit autour d'une séance d'entraînement. La page est construite en deux zones : une **sidebar à gauche** (filtres et liste paginée des séances) et un **espace de visualisation à droite** (six onglets de détail).
## La sidebar de gauche [#la-sidebar-de-gauche]
La sidebar est divisée en trois blocs verticaux **redimensionnables** : mode d'analyse en tête, sélecteur d'entité, liste d'événements. La hauteur de chaque bloc est conservée d'une visite à l'autre, par mode (Collectif / Individuel).
### Bloc 1 — Mode d'analyse (Collectif / Individuel) [#bloc-1--mode-danalyse-collectif--individuel]
Bascule en haut avec deux choix :
* **Collectif** — les statistiques portent sur une **équipe entière**. Le sélecteur en dessous bascule sur la liste des équipes.
* **Individuel** — les statistiques sont restreintes à **un sportif**. Le sélecteur bascule sur la liste des sportifs.
**Pré-sélection au chargement** :
* Au premier accès, ton **équipe par défaut** (paramétrable dans tes préférences) ou la première équipe disponible est pré-sélectionnée en mode Collectif ; même chose côté sportif.
* Si tu arrives sur la page via un lien qui contient déjà un sportif ou une équipe (depuis Suivi individuel ou Planification), c'est ce filtre qui prévaut.
**Bascule en cours de session** : changer de mode réinitialise l'entité du mode sortant et applique le défaut du nouveau mode. L'événement sélectionné repasse au plus récent pour relancer le chargement.
### Bloc 2 — Sélecteur d'entité [#bloc-2--sélecteur-dentité]
Liste filtrable avec un champ de recherche. Chaque ligne affiche une vignette + le nom + une coche verte si l'élément est sélectionné.
### Bloc 3 — Liste des événements [#bloc-3--liste-des-événements]
**Filtre période** (3 modes) :
* **Tous** — affichage chronologique simple, 20 par page. Un bouton **Charger plus** en bas affiche la page suivante.
* **Semaine** — 12 semaines listées au format *« S\{numéro} · \{lundi} → \{dimanche} »*. Cliquer sur une semaine recharge la liste sur cette plage. Un bouton **Précédent** en bas remonte 12 semaines supplémentaires.
* **Mois** — équivalent mensuel.
Le mode par défaut est ta préférence personnelle. Si tu arrives sur la page avec une date dans le lien, le mode **Semaine** s'active automatiquement sur la semaine correspondante.
**Carte d'événement** :
* Titre, date, heure.
* Bouton de **lien externe** (visible au survol) → ouvre la séance dans la planification.
* L'événement actuellement sélectionné est mis en avant par un liseré vertical à gauche.
## Sélection automatique du premier événement [#sélection-automatique-du-premier-événement]
Quand la liste des événements est chargée, le premier événement est sélectionné automatiquement. Si tu arrives sur la page via un lien qui pointe déjà sur un événement précis, c'est lui qui s'ouvre (utile pour les liens depuis Suivi individuel ou Planification).
## Les onglets de la zone principale [#les-onglets-de-la-zone-principale]
Six onglets. À chaque changement d'onglet, **seules les données nécessaires** à cet onglet sont chargées, puis conservées en mémoire : revenir sur un onglet déjà consulté pour la même séance est instantané. Changer d'événement vide cette mémoire et tout est rechargé pour le nouvel événement.
Un **badge filtre joueur** apparaît à droite des onglets si tu as sélectionné un sportif spécifique dans la liste de gauche (badge avec son nom + une croix pour repasser en collectif).
### Onglet Informations [#onglet-informations]
Vue de synthèse, organisée en **deux blocs côte à côte**.
**Bloc gauche — Informations générales** :
* Titre de la séance.
* Date et heure formatée.
* Tags colorés.
* Bouton **lien externe** → planification.
* Bouton **trombone** → ouvre la liste *« Documents liés »* (PDF de la séance + tous les documents attachés).
**Bloc droit — 3 cartes KPI** :
| Carte | Contenu |
| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Durée** | Durée prévue en minutes |
| **RPE attendu** | Note RPE planifiée + libellé (Repos / Très faible / Faible / Modéré / Élevé / Maximal), avec une couleur qui va du froid au chaud selon l'intensité (0 → 10) |
| **Charge U.A. attendue** | Charge planifiée en unités arbitraires |
**Sections additionnelles** (s'affichent si renseignées) :
* **Objectifs** — texte simple
* **Thèmes** — badge thème principal + texte des thèmes secondaires
* **Consignes spécifiques**
* **Lieu** — infrastructure + adresse
* **Notes** — rich text mis en forme
* **Documents liés** — liste cliquable
* **Commentaires staff** — un bloc par commentaire
### Onglet Présence [#onglet-présence]
Liste des sportifs **groupés par statut**, dans l'ordre fixe :
`Apte → Adapté → Réhab → RTP → RTR → Arrêt → Discipline → Récupération → Optimisation sportive → Absence`
Pour chaque joueur (cartes en 3 colonnes) :
* Vignette + nom + poste.
* **Sélecteur de statut** modifiable directement, avec la couleur du statut courant.
* **Bascule Présent / Absent** (rond vert avec une coche / rouge avec une croix).
L'édition est immédiate — voir [Modifier la présence](/docs/statistiques/modifier-presence).
### Onglet Exercice [#onglet-exercice]
Affichage du **détail complet de la séance** telle qu'elle a été construite dans le créateur de séances : enchaînement des blocs/exercices, séries, durées, intensités attendues, méthodes (force, endurance, mixte, etc.).
Stats agrégées par exercice :
* Nombre de séries
* Répétitions (totales, par côté, droite, gauche)
* Charge (kg) et **tonnage** (charge × reps si pas fourni)
* TST (Temps Sous Tension) calculé depuis le tempo
* RPE moyen
* Distance, récupération
* Tous les autres champs numériques saisis sur les séries
Affichage en histogramme avec une couleur dédiée par catégorie (musculation / course / terrain / autre). Un bouton **réglages** permet de choisir les métriques affichées.
Si la séance n'a pas été construite dans FormaPulse (séance importée, RDV simple, etc.), un message *« Aucune donnée d'exercice pour cette séance »* s'affiche.
### Onglet Questionnaire [#onglet-questionnaire]
Layout en deux colonnes : **liste des sportifs** à gauche, **statistiques** à droite.
**Colonne gauche** :
* En-tête : nom du questionnaire + **% de réponses** (vert si 100 %, rouge sinon).
* **Cloche** à côté du pourcentage, visible uniquement s'il reste des sportifs n'ayant pas répondu — envoi d'un rappel manuel, voir [Notifications de rappel questionnaire](/docs/statistiques/notifications-rappel-questionnaire).
* Carte **Collectif** avec les vignettes des joueurs et le total.
* Liste des sportifs avec une coche verte (a répondu) ou une croix rouge (n'a pas répondu).
**Colonne droite** :
* Filtre les réponses selon le sportif sélectionné (collectif vs joueur).
* Pour les questions **numériques** (échelles), un camembert montre la répartition des réponses.
* Pour les questions **texte libre**, la liste des réponses s'affiche avec auteur, photo, texte.
* Pour les questions **zone de douleur**, une carte de chaleur s'applique sur une silhouette.
* Sous le graphique : commentaires staff associés à l'événement.
### Onglet GPS [#onglet-gps]
Trois cas d'affichage :
1. **Données présentes** :
* En-tête : nom de l'activité GPS, durée totale, **confiance de liaison** (en pourcentage, qualité de la liaison automatique), type de liaison (auto / manuelle).
* Tableau : une ligne par sportif filtré, colonnes = métriques sélectionnées dans ta configuration GPS, avec une icône et une couleur dédiées par famille (distance, vitesse, charge, sprints, intensité…).
* Bascule **Afficher par période** : éclate les valeurs par échauffement, opposition, récupération… avec une ligne *« Moyenne équipe »* en tête de chaque groupe.
* Bascule **Afficher par minute** : normalise les valeurs en intensité par minute.
2. **Pas de données mais configuration GPS active** :
* Message *« Aucune donnée GPS pour cette séance »*.
* Bouton **Synchroniser** qui ouvre la fenêtre de synchronisation, voir [Synchroniser une session GPS](/docs/statistiques/synchroniser-gps).
3. **Pas de configuration GPS** :
* Message *« Configuration GPS requise »*.
* Bouton **Configurer le GPS** qui redirige vers tes préférences.
### Onglet Données [#onglet-données]
Affichage des **mappers personnalisés** rattachés à la séance — c'est ici que l'on retrouve les données saisies dans les feuilles de saisie personnalisées (charge externe maison, RPE, ressenti, etc.).
Pour chaque mapper :
* **Champs collectifs** en lecture (passage en édition via une icône crayon).
* **Valeurs par sportif** sous forme de tableau, une ligne par sportif.
* Types de champs gérés : texte, nombre, date, heure, date+heure, oui/non, choix dans une liste, couleur, e-mail, lien web, téléphone, zone de texte long.
Voir [Mappers de données](/docs/planification/mappers-data-evenements) pour la création des mappers.
## Comportement des données chargées [#comportement-des-données-chargées]
* Une fois consulté, chaque onglet d'une séance est gardé en mémoire : changer d'onglet et revenir n'entraîne pas de nouveau chargement.
* Changer d'événement, ou modifier le filtre sportif/équipe, **vide cette mémoire** et recharge l'onglet en cours.
## Erreurs à éviter [#erreurs-à-éviter]
* **Comparer Collectif et Individuel** sans le préciser : la charge moyenne d'une équipe ne se compare pas au RPE d'un joueur seul.
* **RPE/Charge = valeurs attendues**, pas le ressenti des joueurs (qui se trouve dans l'onglet Questionnaire).
* **Modifier un statut de présence pour une séance future** : techniquement possible mais court-circuite la convocation/relance automatique. Préférer la planification pour les événements à venir.
* **Confondre Données et GPS** : Données = mappers personnalisés saisis manuellement ; GPS = traces du fournisseur GPS.
* **Onglet Questionnaire en mode Individuel** : si tu sélectionnes un joueur dans la liste de gauche, la vue se filtre. Pour comparer plusieurs joueurs entre eux, repasse en Collectif.
## Aller plus loin [#aller-plus-loin]
# Suivi longitudinal (/docs/statistiques/suivi-longitudinal)
## Vue d'ensemble [#vue-densemble]
Le **Suivi longitudinal** agrège, sur une période choisie, l'ensemble des données générées par les événements (séances et matchs) d'un sportif ou d'une équipe : **charges programmées**, **réponses aux questionnaires**, **données de séance** (mappers + exercices), **métriques GPS**.
Différence avec les pages stats :
* Les pages **Statistiques > Séances/Matchs/Individuelles** analysent **un événement** ou **un sportif** sur une fenêtre courte.
* Le **Suivi longitudinal** analyse une **série temporelle** sur la période choisie. C'est le point d'entrée pour repérer une tendance, une dérive, ou comparer des fenêtres.
Ne pas confondre avec **pro-analytics** qui ajoute par-dessus l'analyse statistique avancée (z-score, moyennes mobiles, alertes contextuelles, score de risque). Le Suivi longitudinal est une vue **descriptive** ; pro-analytics est une couche d'**analyse statistique**.
## Pré-requis : un filtre valide [#pré-requis--un-filtre-valide]
Pour que des données s'affichent, il faut une équipe (mode collectif) ou un sportif (mode individuel). Tant qu'aucun n'est sélectionné, la zone de visualisation reste vide.
## La sidebar — paramètres globaux [#la-sidebar--paramètres-globaux]
Six rangées de paramètres.
### 1. Mode d'analyse [#1-mode-danalyse]
Bascule **Collectif / Individuel**. Tes préférences personnelles déterminent le mode par défaut, l'équipe par défaut et le sportif par défaut.
### 2. Période [#2-période]
* **Mode période en jours** depuis aujourd'hui — défaut : ta préférence personnelle (60 jours par défaut)
* **Mode plage de dates** explicite via calendrier
* Validation seulement après clic sur **Valider**
### 3. Type d'événement [#3-type-dévénement]
`Tous` / `Séances` / `Matchs`. Filtre les événements inclus dans le calcul.
### 4. Filtre par tags [#4-filtre-par-tags]
Multi-sélection des **tags d'événement** disponibles. Seuls les événements avec **au moins un tag sélectionné** sont inclus. Bouton **Réinitialiser** pour vider la sélection.
→ Création des tags : voir [Tags d'événements](/docs/planification/tags-evenements).
### 5. Réglages avancés [#5-réglages-avancés]
Quatre paramètres pilotent **comment** les données sont agrégées :
#### Type d'agrégation [#type-dagrégation]
`moyenne` / `somme` / `médiane` — comment combiner plusieurs valeurs **sur la même fenêtre** (ex: plusieurs séances dans une semaine).
#### Granularité [#granularité]
`jour` / `semaine` / `mois` — taille de la fenêtre.
Une granularité `semaine` regroupe tous les événements d'une même semaine en un seul point ; `mois` agrège à l'échelle d'un mois.
#### Agrégation intra-événement [#agrégation-intra-événement]
`moyenne` / `somme` / `médiane` — comment agréger les données **au sein d'un même événement** (ex: plusieurs séries d'un même exercice). Une fenêtre explicative est accessible via le bouton info.
#### Imputation des données manquantes [#imputation-des-données-manquantes]
`exclure` (défaut) / `0` / `interpoler` — comment gérer les fenêtres sans donnée. Une fenêtre explicative dédiée est disponible.
Ces 4 paramètres relancent le calcul à chaque changement.
## Les onglets de la zone principale [#les-onglets-de-la-zone-principale]
Quatre onglets. Tu peux configurer ton onglet d'arrivée par défaut dans tes préférences.
Compteurs en haut à droite après chargement : `{total} événements · {séances} séances · {matchs} matchs`.
### Onglet Charge programmée [#onglet-charge-programmée]
Vue **planifiée** : ce qui a été programmé par le coach (RPE attendu, durée, charge U.A.).
**1. Indicateurs généraux** :
* RPE attendu (échelle 0-10).
* Durée de la séance.
* Charge U.A. attendue.
* Toute autre métadonnée d'événement disponible.
Chaque indicateur a son propre graphique, avec les **dates de match** superposées en repères verticaux. Un bouton ouvre une liste pour activer ou masquer chaque graphique.
**2. Métriques Foster** :
* **Charge aiguë** (semaine en cours)
* **Charge chronique** (moyenne 4 semaines)
* **Ratio aigu/chronique (ACWR)** avec zone optimale 0,8 → 1,3
* **Monotonie** hebdomadaire
* **Strain** hebdomadaire
Repères verticaux des **dates de match** superposés pour contextualiser les pics. Méthode Foster utilisée pour quantifier le **risque de surcharge**.
### Onglet Questionnaires [#onglet-questionnaires]
Vue **ressentie** : réponses agrégées aux questionnaires attachés aux événements.
* **Graphique principal** — courbe agrégée par questionnaire / question, avec un sélecteur multi-questions.
* **Graphique multi-courbes** — superposition de plusieurs séries de questionnaires (par défaut les deux premières).
Permet de croiser, par exemple, sommeil et niveau de motivation sur la période.
### Onglet Données séances [#onglet-données-séances]
Vue **réalisée** : ce qui a été saisi en séance via les mappers et le détail d'exercice.
**1. Graphiques entraînement** — séries d'entraînement, regroupées **par exercice** ou **par métrique** au choix :
* **Filtre par méthode** (Force, Endurance, etc.)
* **Filtre par métrique** (Répétitions, % 1RM, Charges (kg), Tempo, etc.)
* Sélection multi-séries pour superposer plusieurs exercices ou métriques
**2. Graphiques mappers** — regroupés par mapper :
* Chaque mapper attaché aux événements de la période génère ses propres séries
* Sélection des séries à afficher par mapper
→ Création de mappers : voir [Mappers de données](/docs/planification/mappers-data-evenements).
### Onglet GPS [#onglet-gps]
Vue **performance** : métriques GPS des sessions synchronisées sur les événements de la période.
* Affiché uniquement si tu as configuré le GPS dans tes préférences
* Graphiques par métrique GPS : distance totale, distance haute intensité, sprints, charge GPS, vitesse max, accélérations…
* Sélection multi-séries pour comparer plusieurs métriques sur le même graphique
→ Pour les données GPS, voir [Données GPS](/docs/statistiques/donnees-gps).
## Calcul des analyses [#calcul-des-analyses]
Si beaucoup de paramètres ou une longue période sont demandés, l'analyse peut prendre quelques secondes. Un **indicateur de progression** apparaît en haut de l'écran ; tu peux continuer à naviguer pendant ce temps.
Selon tes préférences, certaines analyses peuvent être **préchargées** pour être directement disponibles à l'ouverture. Les résultats sont conservés temporairement : revenir sur un onglet déjà consulté avec les mêmes paramètres est instantané. Tout changement de paramètre relance le calcul.
## Repères visuels [#repères-visuels]
* **Dates de matchs** — repères verticaux superposés sur tous les graphiques pour situer les variations.
* **Info-bulle** — au survol d'un point, le titre des événements de la fenêtre s'affiche.
* **Compteurs** en haut à droite : nombre total + ventilation séances / matchs.
## Erreurs à éviter [#erreurs-à-éviter]
* **Aucune donnée affichée** alors qu'il y a des séances : vérifie qu'une équipe (Collectif) ou un sportif (Individuel) est sélectionné — tant que rien n'est choisi, rien ne charge.
* **Granularité trop fine sur longue période** : *Jour* sur 1 an → 365 points illisibles. Préférer *Semaine* ou *Mois*.
* **Imputation à zéro au lieu de l'exclusion** : si tu remplaces les valeurs manquantes par zéro, les moyennes sont tirées vers le bas. N'utilise zéro que quand l'absence signifie réellement « zéro » (ex : 0 sprint).
* **Comparer des périodes avec paramètres différents** : si tu changes le type d'agrégation entre deux analyses, les valeurs ne sont plus comparables. Verrouille les paramètres avant de comparer.
* **Onglet GPS vide** : pas de configuration GPS → cet onglet ne charge rien. Configure d'abord ton fournisseur dans **Préférences > GPS** (voir [Données GPS](/docs/statistiques/donnees-gps)).
* **Tendance sur trop peu de points** : avec une granularité *Mois* sur 60 jours → 2 points. Élargis la période.
## Aller plus loin [#aller-plus-loin]
# Synchroniser une session GPS (/docs/statistiques/synchroniser-gps)
## Vue d'ensemble [#vue-densemble]
Quand FormaPulse n'a pas pu lier automatiquement une session GPS à un événement (horaires décalés, source CSV, fournisseur sans synchronisation directe…), l'onglet GPS de la page **Stats > Séances** ou **Stats > Matchs** affiche un bouton **Synchroniser** qui ouvre une fenêtre de synchronisation. Cette page détaille tout ce qu'on peut y faire.
## Pré-requis [#pré-requis]
* Configuration GPS active sur ton compte. Sinon, le bouton Synchroniser n'apparaît pas et on est redirigé vers **Préférences > GPS**.
* Voir [Données GPS](/docs/statistiques/donnees-gps) pour la configuration initiale.
## Ouvrir la fenêtre [#ouvrir-la-fenêtre]
Depuis l'onglet **GPS** d'une page stats :
* **Stats > Séances** → onglet GPS → bouton **Synchroniser**.
* **Stats > Matchs** → onglet GPS → bouton **Synchroniser**.
À l'ouverture, la fenêtre interroge le fournisseur GPS pour la **date de l'événement**. La réponse détermine le **mode** :
* Si ton compte est connecté à un fournisseur (Catapult, STATSports…) → mode **Fournisseur connecté** (liste d'activités).
* Si ton compte est en fournisseur manuel (CSV) → mode **CSV manuel** avec ta configuration de lecture pré-chargée.
## Mode 1 — Fournisseur connecté [#mode-1--fournisseur-connecté]
### Affichage [#affichage]
La fenêtre affiche la **liste des activités GPS** disponibles à la date de l'événement.
Pour chaque activité :
* Nom de la session.
* Heure de début / fin.
* Durée.
* Nombre d'athlètes inclus.
* **Score de correspondance automatique** : la confiance calculée par FormaPulse pour la liaison automatique (si elle a échoué).
### Action [#action]
1. Tu sélectionnes une activité (clic).
2. Tu cliques sur **Synchroniser**.
3. La liaison est créée et marquée comme **manuelle**.
4. La page se recharge automatiquement et les statistiques GPS apparaissent.
## Mode 2 — Fournisseur manuel (CSV) [#mode-2--fournisseur-manuel-csv]
Activé quand ton compte est configuré en fournisseur générique CSV.
### Paramètres de lecture [#paramètres-de-lecture]
La fenêtre utilise les **paramètres de lecture** que tu as définis dans ta configuration GPS :
* Séparateur de colonnes (virgule, point-virgule, tabulation…).
* Encodage du fichier (UTF-8 par défaut, ou autre selon le format d'export).
* Lignes à ignorer en début de fichier (en-têtes avant les données réelles).
* Séparateur décimal (point ou virgule).
Et :
* La **liste de correspondances athlète CSV ↔ sportif FormaPulse** mémorisée des imports précédents.
* Les **métriques** que tu as cochées dans la configuration.
### Étape 1 — Choix du fichier [#étape-1--choix-du-fichier]
Tu sélectionnes un fichier CSV. Il est **lu localement** dans ton navigateur (pas d'envoi tant que la lecture n'est pas validée).
### Étape 2 — Aperçu et correspondances [#étape-2--aperçu-et-correspondances]
Après lecture, la fenêtre affiche un **aperçu** :
* Nombre total d'athlètes détectés dans le CSV.
* Combien sont associés à un sportif FormaPulse.
* Nombre de lignes valides.
* Nombre de périodes détectées (si le CSV contient une colonne période).
* Nombre de métriques exploitables.
Tu peux **ajuster les correspondances** athlètes CSV → sportifs FormaPulse. Elles sont mémorisées pour les imports suivants.
### Étape 3 — Sélection des métriques [#étape-3--sélection-des-métriques]
Tu coches les colonnes du CSV à conserver. Toutes les autres colonnes sont ignorées même si présentes.
### Étape 4 — Validation finale [#étape-4--validation-finale]
Au clic **Synchroniser**, le fichier est transmis :
* Création de la session GPS à partir des données lues.
* Liaison à l'événement (marquée comme manuelle).
* Calcul des stats par sportif et par période (si des périodes existent).
Les **références GPS individualisées** du sportif (visibles dans Stats > Individuelles > onglet Réf. GPS) sont automatiquement rafraîchies après l'import.
## Re-lier ou délier [#re-lier-ou-délier]
Pour **re-lier** une activité (changer la liaison existante) :
1. Rouvrir la fenêtre Synchroniser.
2. Sélectionner une autre activité ou ré-importer un autre CSV.
3. La nouvelle liaison **remplace** la précédente — pas besoin de délier explicitement.
Pour **délier** complètement (pas de bouton dédié dans la fenêtre) : il faut passer par l'**administration GPS** (selon les permissions) ou contacter le support. La logique privilégie le remplacement.
## Confiance de liaison [#confiance-de-liaison]
Une fois liée, l'activité conserve un **score de confiance de liaison** (0-100 %) :
* **Liaison automatique** : score calculé par le système (proximité horaire, durée, nombre d'athlètes correspondants).
* **Liaison manuelle** : généralement 100 % (la liaison a été validée explicitement par un humain).
## Erreurs à éviter [#erreurs-à-éviter]
* **Ré-importer le même CSV deux fois** : la deuxième liaison **remplace** la première. Si tu as ajouté des athlètes aux correspondances entre-temps, le ré-import est nécessaire pour qu'ils soient pris en compte.
* **Format de date dans le CSV non standard** : si la colonne date n'est pas dans un format reconnu, la lecture peut échouer. Vérifier l'aperçu avant validation.
* **Encodage incorrect** : un CSV exporté dans un encodage différent de celui déclaré dans ta configuration produit des accents cassés. Adapter l'encodage dans la config GPS.
* **Séparateur décimal incorrect** : si tu déclares la virgule comme séparateur décimal alors que le CSV utilise le point, les valeurs numériques sont lues comme du texte. Vérifier la config.
* **Lignes d'en-tête incorrectes** : si le nombre de lignes à ignorer est mal réglé, l'app lit les en-têtes comme des données. L'aperçu te le montrera (lignes très bizarres).
* **Cliquer Synchroniser sans avoir attendu la lecture** : pendant la lecture locale, le bouton doit être désactivé. Si tu vois un état de chargement, attends.
* **Croire que la fenêtre recharge automatiquement les stats** : si tu fermes la fenêtre via la croix, le rechargement n'a pas lieu. Il n'est déclenché qu'après une synchronisation aboutie.
## Aller plus loin [#aller-plus-loin]