Aller au contenu

Tableau de bord

Le coach écrit tout dans votre workspace : séances, nuits, météo, plans, rapports. Le tableau de bord met ces fichiers sous vos yeux : courbe de forme, bilan du matin, semaine planifiée face au réalisé, séances avec leurs splits, prédictions, calendrier — et le texte du coach à côté des chiffres.

Vue « Aujourd'hui » : verdict du coach, bilan du matin, séance du jour et forme

Captures réalisées sur le workspace réel d'un athlète : la préparation et l'ultra-trail de 110 km du 13 septembre 2026, puis la reprise.

Il ne remplace pas la conversation avec le coach : il vous montre ce qui est stocké, et c'est d'autant plus précieux quand le coach tourne sans vous — en mode headless, la synchronisation de chaque matin alimente le tableau sans que vous ouvriez une session.

Lancer

scripts/dashboard.sh

Le navigateur s'ouvre sur http://127.0.0.1:8765/. Ctrl+C arrête le serveur. Rien à installer : un serveur Python de la bibliothèque standard et une page HTML/CSS/JS, sans npm ni étape de build.

scripts/dashboard.sh --port 9000   # autre port (défaut : [dashboard].port)
scripts/dashboard.sh --no-open     # sans ouvrir le navigateur
scripts/dashboard.sh --memory      # index en mémoire : aucun fichier écrit
scripts/dashboard.sh --rebuild     # reconstruit l'index de zéro

L'index se met à jour tout seul : un fichier écrit par un agent — la synchronisation du matin, un rapport, un plan — apparaît en 30 secondes au plus, sans relancer le serveur. La réindexation tourne en arrière-plan, jamais pendant une requête : aucune page n'attend. Un passage sans changement ne recalcule pas les métriques, et un passage avec changement ne recalcule que les séances touchées. Au démarrage, la page s'ouvre tout de suite et les données arrivent dès la fin du premier index (une dizaine de secondes sur un long historique avec fichiers FIT).

Après une mise à jour du moteur

Vos données apparaissent seules, mais le code du tableau de bord est chargé au démarrage. Après un git pull du moteur, relancez scripts/dashboard.sh (ou systemctl --user restart arc-dashboard pour le service décrit dans Machine coach & mode headless) ; en conteneur, reconstruisez l'image (Mettre à jour).

Visite guidée

Chaque vue répond à une question. Un clic sur une carte ouvre sa description détaillée : comment la lire, d'où viennent ses données, que faire si elle est vide.

  • Aujourd'hui

    Aujourd'hui · Je cours, j'allège ou je me repose ?

    Le verdict du coach et sa raison, le bilan du matin situé sur votre référence, la séance du jour avec sa météo.

  • Forme & charge

    Forme & charge · Où en est ma forme ?

    Condition, fatigue et forme sur des mois, le ratio de charge, le volume de chaque semaine.

  • Analyse · Ma technique et ma durabilité progressent-elles ?

    Polarisation 80/20, découplage aérobie, VAM, efficacité en descente, durabilité et segments de montée — tout ce qui vient des échantillons FIT téléchargés par le skill fit-download.

  • Santé

    Santé · Comment mon corps encaisse-t-il ?

    HRV, FC de repos, readiness et sommeil en tendance, avec la frise des verdicts du coach jour par jour.

  • Semaine

    Semaine · Qu'est-ce qui était prévu, qu'est-ce qui a été fait ?

    Le plan du coach face au réalisé, jour par jour, statut et météo compris — et les semaines à venir.

  • Détail d'une séance

    Séances · Comment ça s'est passé ?

    Tout l'historique, triable ; pour chaque séance, les chiffres clés, les splits et l'analyse complète du coach.

  • Performance

    Performance · Que puis-je viser ?

    VO2max estimée, temps prédits pour votre objectif, records au kilomètre — et toutes les hypothèses.

  • Trail Shape

    Trail Shape · Suis-je prêt pour mon objectif ?

    Un score sur 100 : volume, plus longue sortie et D+ des huit dernières semaines face aux exigences de la course — chaque composante détaillée, jamais un verdict.

  • Calendrier

    Calendrier · Suis-je régulier ?

    L'année en carte de chaleur et le cumul de distance comparé d'une année à l'autre.

  • Décisions · Pourquoi cette séance a-t-elle changé ?

    Le journal de chaque ajustement du coach — bilan matinal, garde-fou, blessure, météo, demande de l'athlète — avec ce qui l'a justifié, filtrable par déclencheur.

  • Rapports

    Rapports · Qu'en a conclu le coach ?

    Bilans hebdomadaires, validations, comparaisons de parcours et analyses de course, lisibles sans ouvrir l'IDE.

S'y ajoutent la vue Nutrition, si le nutritionniste fait partie du staff, et la liste des fichiers hors contrat. Toutes les vues suivent le thème sombre et tiennent sur un téléphone : captures.

Au quotidien

Le tableau de bord ne pose pas de questions : il montre ce que le coach a écrit. Quelques habitudes suffisent pour qu'il soit toujours à jour.

Quand Ouvrir Ce qu'on y cherche
Le matin Aujourd'hui Le verdict et la séance du jour. Pas de verdict ? Demandez au coach « je cours aujourd'hui ? » : il fait le bilan, tranche et l'écrit.
Après une séance Séances → détail Les splits, la FC, l'analyse du coach — une fois la séance synchronisée.
Le dimanche Semaine, Forme & charge Le réalisé face au plan, la tendance de forme. Puis, avec le coach, le plan de la semaine suivante.
Quand le coach planifie Semaine Que chaque semaine du plan est bien lisible : un fichier planning/Semaine_<lundi>.md par semaine, ou un seul fichier multi-semaines (weeks[], #69) — les deux formes s'affichent semaine par semaine.
Avant une course Performance, Rapports Les temps prédits, le plan de course du stratège.

Avec une machine coach, la synchronisation de chaque matin fait le premier pas pour vous : le bilan et la séance de la veille sont déjà là quand vous ouvrez la page.

Le détail de chaque vue, captures à l'appui : Les vues.

Il suit votre configuration : sur route, le dénivelé disparaît et le volume se compte en kilomètres ; avec [health].morning_check = "off", la vue Santé l'indique au lieu d'afficher des trous ; sans nutritionniste dans le staff, la vue Nutrition n'apparaît pas ; en unités impériales, tout s'affiche en miles.

D'où viennent les chiffres

Les agents ouvrent chaque fichier par un petit bloc de données — le contrat de données. Le tableau de bord lit ces blocs, jamais la prose, et les range dans une base SQLite dérivée : .arc/coach.db dans votre workspace. Elle est jetable : la supprimer ne perd rien, elle se reconstruit depuis vos fichiers. Elle est ignorée par git.

Les indicateurs de forme sont calculés, pas demandés au modèle : le coach observe et juge, le code compte.

  • Charge d'une séance : TRIMP de Banister (FC moyenne, FC max et FC de repos du profil), ou effort perçu faute de fréquence cardiaque.
  • Condition, fatigue, forme : la condition et la fatigue sont des moyennes exponentielles de la charge sur 42 et 7 jours ; la forme est leur écart.
  • VO2max effective et prédictions : estimées à partir de l'allure et de la FC moyennes des séances de course. Des ordres de grandeur, pas des mesures ; la vue Performance liste toutes les hypothèses.

Renseignez votre profil

Sans FC max ni FC de repos de référence dans planning/Runner_Profile.md, la charge est estimée d'après l'effort perçu. Ajoutez-les (et la FC au seuil si vous la connaissez) : toutes les courbes en profitent.

Vos fichiers d'avant

Si votre workspace existait avant le contrat, le tableau de bord lit déjà vos anciens fichiers, au mieux, et signale ceux qu'il comprend mal (« fichiers hors contrat » dans le menu). Pour tout remettre d'aplomb : Migrer vos fichiers.

Sécurité

  • Le serveur n'écoute que sur 127.0.0.1 : rien n'est visible depuis le réseau. scripts/dashboard.sh n'offre aucun moyen d'en changer.
  • Lecture seule : il n'écrit que sa propre base, dans .arc/.
  • Une page tierce qui tenterait de l'atteindre en se faisant passer pour localhost est refusée (protection contre le DNS rebinding).
  • Vos données ne quittent pas la machine. Seules les polices de caractères (Inter, Sora) sont chargées depuis Google Fonts à l'ouverture de la page ; hors ligne, le navigateur se rabat sur ses polices système.

Pour le consulter depuis une autre machine, passez par un tunnel SSH plutôt que d'ouvrir un port : voir Machine coach & mode headless. Si votre serveur a déjà un reverse proxy avec authentification, le tableau de bord peut s'y ranger en conteneur, workspace en lecture seule : Derrière un reverse proxy (Docker).