Les recommandations nutritionnelles pendant l'exercice d'endurance sont complexes : elles dépendent de la durée, de l'intensité, de la discipline, des conditions environnementales, de la composition corporelle et des objectifs stratégiques de l'athlète. Les guidelines scientifiques actuelles fournissent des plages evidence-based (ex. 30-90 g/h de glucides pour des efforts de 1-3h+), mais traduire ces guidelines en recommandations personnalisées par séance nécessite une interpolation simultanée sur de multiples variables.
Le moteur nutrition Wattness est un système déterministe à règles qui calcule les apports cibles en glucides (g/h), les taux d'hydratation (ml/h) et les besoins en sodium (mg/h) pour chaque séance. Contrairement aux approches machine learning, le moteur encode directement les connaissances scientifiques via des courbes paramétrées et des modificateurs, rendant son comportement transparent et auditable.
Ce benchmark évalue si les sorties du moteur se situent systématiquement dans les plages validées par un expert sur un ensemble complet de scénarios. La méthodologie adoptée est celle de la conformité aux plages : pour chaque scénario, un expert définit des valeurs min et max acceptables, et la sortie du moteur est vérifiée contre ces bornes.
Le benchmark comprend 42 scénarios d'entraînement couvrant 7 axes de variation :
| Axe | Valeurs couvertes | n |
|---|---|---|
| Discipline | Vélo, Course à pied, Natation | 3 |
| Durée | 45 min – 300 min (7 niveaux) | 7 |
| Intensité | Tier 1 (i1) à Tier 5 (i6) | 5 |
| Température | Froid (≤10°C), Tempéré (15–25°C), Chaud (≥30°C) | 3 |
| Branche | Performance, Train-Low, Gut Training, Protocole course | 4 |
| Poids corporel | 55 kg, 70 kg, 85 kg | 3 |
| Spécial | Double séance, Position aéro, Sweat rate custom, GT semaines 1–9 | 4 |
Constantes moteur. Le paramétrage interne du moteur encode le consensus scientifique actuel. Pour les glucides, des courbes d'interpolation multi-points définissent les cibles min/max d'apport en fonction de la durée pour chaque tier d'intensité.
Littérature publiée. Les plages d'hydratation suivent Sawka et al. (2007) et Baker (2017), avec des taux de base pondérés par des coefficients de sudation spécifiques à chaque discipline. Le plafond de 90 g/h pour les athlètes non-experts s'aligne sur la limite de co-ingestion glucose+fructose, tandis que le plafond absolu de 120 g/h reflète les données récentes en ultra-endurance.
Validation expert. Les 42 plages attendues ont été revues par un expert en sciences du sport avec 15+ ans de coaching nutrition spécifique triathlon.
| Métrique | Définition |
|---|---|
| Taux de conformité | Pourcentage de scénarios où la sortie du moteur est dans la plage attendue [min, max] |
| Taux de dépassement | Sortie au-dessus du max (risque : troubles GI) |
| Taux de sous-dosage | Sortie en-dessous du min (risque : sous-alimentation) |
| Déviation moyenne | Écart moyen entre la sortie et le point médian attendu |
| Violations sécurité | Scénarios marqués safety en échec (tolérance zéro) |
| Dimension | n | Conformité | Dépassement | Sous-dosage | Dév. moy. |
|---|---|---|---|---|---|
| Glucides | 42 | 100% | 0% | 0% | −0.02 g/h |
| Hydratation | 42 | 100% | 0% | 0% | +0.04 ml/h |
| Sodium | 42 | 100% | 0% | 0% | 0 mg/h |
| Global | 126 | 100% | 0% | 0% | — |
| Discipline | n | Glucides | Hydratation | Sodium |
|---|---|---|---|---|
| Vélo | 33 | 100% | 100% | 100% |
| Course à pied | 5 | 100% | 100% | 100% |
| Natation | 4 | 100% | 100% | 100% |
| Durée | n | Glucides | Hydratation | Sodium |
|---|---|---|---|---|
| Court (< 90 min) | 10 | 100% | 100% | 100% |
| Moyen (90–180 min) | 27 | 100% | 100% | 100% |
| Long (> 180 min) | 5 | 100% | 100% | 100% |
| Température | n | Glucides | Hydratation | Sodium |
|---|---|---|---|---|
| Froid (≤10°C) | 5 | 100% | 100% | 100% |
| Tempéré (15–25°C) | 30 | 100% | 100% | 100% |
| Chaud (≥30°C) | 7 | 100% | 100% | 100% |
Les scénarios de sécurité imposent des contraintes dures qui ne doivent jamais être violées, quelle que soit la combinaison d'entrées.
| Scénario sécurité | Contrainte vérifiée | Statut |
|---|---|---|
| Train-Low zéro glucides | La branche Train-Low produit toujours 0 g/h de glucides | OK |
| Plafond non-expert 90 g/h | Le contexte non-expert plafonne les glucides à 90 g/h | OK |
| Récupération zéro glucides | Les séances récupération (Tier 1) produisent 0 g/h | OK |
| Gut Training semaine 1 | GT semaine 1 cible 60 g/h avec max à 70 g/h | OK |
| Alerte concentration | Glucides élevés + hydratation basse déclenche un warning (>90 g/L) | OK |
| Sorties non-négatives | La sortie glucides n'est jamais négative | OK |
Pour quantifier la contribution de chaque composant du moteur, 5 variantes d'ablation ont été exécutées, chacune désactivant une seule fonctionnalité tout en conservant le reste intact.
| Variante d'ablation | Glucides | Hydratation | Sodium | Global | Sécurité |
|---|---|---|---|---|---|
| Moteur complet (référence) | 100% | 100% | 100% | 100% | 0 |
| Sans modificateur discipline | 85.7% | 78.6% | 100% | 88.1% | 1 |
| Sans pondération poids | 100% | 81.0% | 100% | 93.7% | 4 |
| Sans polarisation hydratation | 100% | 64.3% | 100% | 88.1% | 4 |
| Glucides fixes à 60 g/h | 71.4% | 100% | 100% | 90.5% | 3 |
| Sans modificateur branche | 73.8% | 100% | 100% | 91.3% | 3 |
Scaling hydratation par intensité : impact isolé le plus important sur la précision hydratation (−35.7% de conformité). Les multiplicateurs bas/modéré/élevé sont essentiels pour différencier les pertes sudorales selon les niveaux d'intensité.
Courbes glucides multi-points (vs. un fallback fixe à 60 g/h) : la précision glucides chute de 28.6%. Cela confirme que l'interpolation linéaire entre des points d'ancrage spécifiques à la durée reflète mieux la capacité progressive d'oxydation des glucides exogènes.
Modificateurs de branche nutritionnelle (train-low = 0, override gut training, course = 1.15×) : contribuent à 26.2% de la précision glucides. Sans eux, le moteur ne peut pas différencier adaptation métabolique et séances orientées performance.
Modificateurs par discipline (CAP 0.85× glucides / 1.15× hydratation; natation 0.6× / 0.7×) : affectent les deux dimensions. La tolérance gastrique réduite en course à pied et l'environnement thermorégulateur unique de la natation nécessitent un scaling distinct.
Pondération hydratation par poids : impact uniquement sur l'hydratation (−19%). Les recommandations glucides ne sont pas pondérées par le poids, car l'absorption intestinale est le facteur limitant de l'oxydation des glucides exogènes.
Le planificateur course génère des plans nutrition segmentés (pré-course, natation, T1, vélo, T2, course à pied) pour les triathlons du sprint à l'Ironman et ultra. 10 scénarios ont été validés avec 138 assertions.
| Scénario | Distance | Catégorie | Temp. | Assertions | Statut |
|---|---|---|---|---|---|
| IM Elite | Ironman | Elite | Tempéré | 17 | OK |
| IM Age-Grouper | Ironman | Age-Grouper | Tempéré | 17 | OK |
| IM Débutant | Ironman | Débutant | Tempéré | 12 | OK |
| 70.3 Competitive | Half-IM | Competitive | Tempéré | 15 | OK |
| Sprint Age-Grouper | Sprint | Age-Grouper | Tempéré | 11 | OK |
| Olympic Elite | Olympic | Elite | Tempéré | 12 | OK |
| IM Competitive (Chaud) | Ironman | Competitive | Chaud | 15 | OK |
| IM AG + GT Cap | Ironman | Age-Grouper | Tempéré | 12 | OK |
| Ultra Competitive | Ultra | Competitive | Tempéré | 16 | OK |
| 70.3 Débutant + GT | Half-IM | Débutant→AG | Tempéré | 11 | OK |
Chaque plan course est vérifié pour : structure correcte en 6 segments (pré-course → natation → T1 → vélo → T2 → course à pied), zéro glucides pendant la natation, durées positives, cohérence segment/total, protocoles de contingence, et cibles glucides adaptées à la catégorie.
Le benchmark est entièrement automatisé et déterministe. Tous les scénarios, plages attendues et assertions sont versionnés. Le moteur ne contient aucune source d'aléatoire, aucun appel API externe et aucune dépendance au runtime.
pnpm --filter @wattson/core nutrition:benchmark -- --ablation
Limites principales :
Module nutrition vérifié sur benchmark interne reproductible, avec scénarios multi-variables, garde-fous de sécurité et plages de recommandations revues par expertise et alignées avec la littérature.
[1] Jeukendrup AE. A step towards personalized sports nutrition: carbohydrate intake during exercise. Sports Med. 2014;44(Suppl 1):S25–S33.
[2] Thomas DT, Erdman KA, Burke LM. Position of the Academy of Nutrition and Dietetics. J Acad Nutr Diet. 2016;116(3):501–528.
[3] Podlogar T, Wallis GA. New horizons in carbohydrate research. Sports Med. 2022;52(Suppl 1):5–23.
[4] Sawka MN et al. ACSM position stand: Exercise and fluid replacement. Med Sci Sports Exerc. 2007;39(2):377–390.
[5] Baker LB. Sweating rate and sweat sodium concentration in athletes. Sports Med. 2017;47(Suppl 1):111–128.
[6] Rehrer NJ et al. Gastric emptying, absorption, and carbohydrate oxidation. J Appl Physiol. 1992;72(2):468–475.
[7] Burke LM. Fueling strategies to optimize performance. Scand J Med Sci Sports. 2010;20(Suppl 2):48–58.
[8] Pfeiffer B et al. Nutritional intake and gastrointestinal problems. Med Sci Sports Exerc. 2012;44(2):344–351.