EngineInfo

←→

L’explication du moteur de difficulté en langage clair, dans une fenêtre ouverte depuis l’accueil ; son contenu (EngineInfoContent) est repris tel quel par la page /methode.

stableÀ valider

Écran ou section propre à Pathou, pas un composant du design system : à ne pas réutiliser ailleurs. Tous les écrans et sections

// Titre : Contenu : comment Pathou décide (EngineInfoContent)
import { EngineInfoContent } from '@pathou/components/EngineInfo';

export default function Exemple() {
  return (
    <div className="ip-main" style={{ width: 720, maxHeight: 680, overflowY: 'auto' }}>
      <EngineInfoContent />
    </div>
  );
}

Installation

Copie le fichier dans ton projet, ainsi que les tokens qu’il utilise.

src/components/EngineInfo.tsx
import { RATING_COLOR } from '../lib/colors';
import { RATINGS, RATING_LABEL } from '../lib/difficulty/rules';
import Modal from './Modal';

/** Explication du moteur de difficulté, en langage clair, ouverte depuis l'accueil. */
export default function EngineInfo({ onClose }: { onClose: () => void }) {
  return (
    <Modal title="Comment Pathou évalue la difficulté" onClose={onClose}>
      <EngineInfoContent />
    </Modal>
  );
}

/** Contenu de la modale, repris tel quel par la page /methode. */
export function EngineInfoContent() {
  return (
    <div className="engine-info">
      <p className="modal-lead">
        Pathou découpe ta trace en points tous les 10 m et juge chacun d’eux selon ta pratique et ton niveau, en croisant le relief, la nature réelle du
        chemin et sa technicité. Les points sont ensuite regroupés en passages, en points d’attention et en un verdict.
      </p>

      <ol>
        <li>
          <h3>Le relief</h3>
          <p>
            L’altitude vient du modèle de l’institut géographique national quand le pays est couvert (IGN RGE ALTI en France, précis au mètre&nbsp;; la liste complète est dans «&nbsp;Pays couverts&nbsp;»), pas du GPS de ta montre, souvent faux de plusieurs dizaines de mètres. La
            trace est recalée sur le chemin cartographié avant de mesurer l’altitude, puis lissée. Pathou en tire la pente moyenne sur 100 m, les montées et
            le dénivelé.
          </p>
        </li>
        <li>
          <h3>La nature du chemin</h3>
          <p>
            Chaque point est rattaché au chemin OpenStreetMap qu’il emprunte, classé en six familles&nbsp;: route goudronnée, piste roulante, piste cassante,
            chemin de terre, sentier et sentier technique. Là où OpenStreetMap ne connaît pas le passage, la base nationale des chemins prend le relais&nbsp;: BD TOPO de l’IGN en France, BTN de l’IGN España (pistes) en Espagne.
          </p>
        </li>
        <li>
          <h3>La technicité</h3>
          <p>
            Elle suit l’échelle VTT S0 à S5. Pathou prend la cotation d’OpenStreetMap quand elle existe&nbsp;; sinon il l’estime d’après le type de sentier et l’état du
            sol.
          </p>
        </li>
        <li>
          <h3>Ton profil</h3>
          <p>
            Ta pratique et ton niveau fixent des limites&nbsp;: la technicité où tu restes à l’aise, la pente que tu montes sans pousser selon le type de sol, la
            pente où une descente devient engagée, et ton rythme. Le bouton «&nbsp;i&nbsp;» à côté du niveau les détaille.
          </p>
        </li>
        <li>
          <h3>La cotation de chaque point</h3>
          <p>Quatre critères sont évalués&nbsp;; le plus sévère l’emporte&nbsp;:</p>
          <ul>
            <li>
              <b>Chemin et pratique</b> : un sentier technique pénalise le gravel, tout ce qui n’est pas goudronné est inadapté en route.
            </li>
            <li>
              <b>Technicité</b> : à ta limite, le passage est difficile&nbsp;; un cran au-dessus, très difficile&nbsp;; deux crans, inadapté. La pente
              module la cotation&nbsp;: un sentier compte un cran de plus en descente raide, un cran de moins à plat à partir de S2.
            </li>
            <li>
              <b>Montée</b> : au-delà de ta limite pour ce type de sol, c’est un poussage probable. Avec une altitude fine (5 m ou mieux, comme en France, en Espagne ou en Suisse), Pathou repère
              aussi les rampes courtes (pente sur 50 m) que la moyenne sur 100 m efface&nbsp;: difficile au-delà de ta limite, poussage à 3 points de plus.
            </li>
            <li>
              <b>Descente</b> : au-delà de ta limite, elle est très difficile&nbsp;; à une fois et demie ta limite, inadaptée.
            </li>
          </ul>
          <div className="engine-scale">
            {RATINGS.map((r) => (
              <span key={r}>
                <i style={{ background: RATING_COLOR[r] }} />
                {RATING_LABEL[r]}
              </span>
            ))}
          </div>
        </li>
        <li>
          <h3>Les points d’attention</h3>
          <p>
            Les passages difficiles voisins sont regroupés. S’y ajoutent les obstacles (échaliers, gués, escaliers), les accès interdits ou privés, les
            sentiers exposés au vide (pente du terrain mesurée de part et d’autre du chemin), les sentiers peu visibles et les passages hors de tout
            réseau connu.
          </p>
          <p>
            Pour chaque passage très difficile, inadapté ou à pousser, Pathou cherche une alternative sur les chemins OpenStreetMap autour de la trace&nbsp;:
            il part d’un carrefour avant le passage, en rejoint un après, et préfère les chemins faciles pour toi, pente comprise. Le contournement
            retenu est ensuite coté comme la trace, avec l’altitude précise du pays. S’il reste difficile par endroits, il est présenté comme «&nbsp;moins dur&nbsp;»&nbsp;;
            s’il n’existe pas, ou s’il rallonge de plus de 3 km (ou du double du passage), Pathou le dit. Seuls les chemins cartographiés dans OpenStreetMap près
            de la trace sont connus&nbsp;: un détour plus large ou un sentier absent de la carte ne sera pas proposé. Le verdict, lui, juge toujours la
            trace telle quelle.
          </p>
        </li>
        <li>
          <h3>Le verdict</h3>
          <table className="engine-verdict">
            <tbody>
              <tr>
                <th>Non adaptée</th>
                <td>plus de 3 % de la distance au-delà de ton niveau (à faire à pied), ou un accès interdit ou privé</td>
              </tr>
              <tr>
                <th>Exigeante</th>
                <td>plus de 6 % en très difficile ou inadapté, ou une sortie très longue pour ton niveau</td>
              </tr>
              <tr>
                <th>Engagée</th>
                <td>plus de 12 % en difficile ou au-delà, au moins un court passage à pied, ou une sortie longue pour ton niveau</td>
              </tr>
              <tr>
                <th>Adaptée</th>
                <td>sinon</td>
              </tr>
            </tbody>
          </table>
          <p>
            Un court passage à faire à pied ne condamne donc pas la trace&nbsp;: il est signalé dans les points d’attention et compté dans le verdict, qui
            indique la distance concernée. Le volume compte aussi&nbsp;: au-delà d’une durée en roulant propre à chaque niveau (par exemple 4 h 30, puis 7 h
            pour un intermédiaire), la sortie devient engagée, puis exigeante, mais jamais «&nbsp;non adaptée&nbsp;»&nbsp;: on peut toujours rouler plus lentement.
            Quand seule la durée relève le verdict, la trace est dite «&nbsp;longue&nbsp;» ou «&nbsp;très longue pour ton niveau&nbsp;», pas engagée&nbsp;: elle
            reste facile techniquement. Si tu saisis ta vitesse moyenne, c’est elle qui compte.
          </p>
          <p>
            Une jauge de confiance l’accompagne. Elle dit sur quelles données le verdict repose, au kilomètre près&nbsp;: cotation VTT renseignée, cotation
            randonnée ou état du sol, revêtement seul, simple type de chemin ou passage hors de tout réseau. L’altitude compte aussi&nbsp;: celle d’un modèle national est plus sûre que celle
            du GPS. Une confiance faible ne veut pas dire que la trace est dure, seulement qu’il faut vérifier davantage sur place ou sur les photos.
          </p>
        </li>
        <li>
          <h3>Le temps estimé</h3>
          <p>
            Il part d’une vitesse de base selon ta pratique et ton niveau, réduite selon le type de sol, freinée en montée (entre 450 et 1 050 m de
            dénivelé par heure selon le niveau) et ramenée au pas là où tu pousses. Si tu saisis ta vitesse moyenne, elle remplace ce calcul.
          </p>
        </li>
      </ol>

      <p className="muted small">
        Tout reste indicatif&nbsp;: la qualité du résultat dépend de ce qui est cartographié, et ni la boue ni la météo ne sont prises en compte. Vérifie les
        passages signalés sur la photo aérienne et les photos au sol. Sans les chemins OpenStreetMap (serveurs indisponibles), seule la pente est jugée.
      </p>
    </div>
  );
}

Tokens : --panel --text --muted --line --accent --chip --ease-out

Utilisation

import EngineInfo, { EngineInfoContent } from './components/EngineInfo';

{open && <EngineInfo onClose={() => setOpen(false)} />}

Exemples

Dans sa fenêtre (EngineInfo)

// Titre : Dans sa fenêtre (EngineInfo)
import { useState } from 'react';
import EngineInfo from '@pathou/components/EngineInfo';

export default function Exemple() {
  const [open, setOpen] = useState(true);
  return (
    <div style={{ minHeight: 600 }}>
      <button type="button" onClick={() => setOpen(true)}>
        Comment Pathou décide
      </button>
      {open && <EngineInfo onClose={() => setOpen(false)} />}
    </div>
  );
}

Guidelines

  • MUST
    Garder un seul contenu pour la fenêtre et la page /methode (EngineInfoContent).
  • MUST
    Tirer les seuils cités des règles du moteur (lib/difficulty/rules.ts).

Référence de l’API

EngineInfo (export par défaut)

PropTypeDéfaut
onClose() => voidrequis

EngineInfoContent

Aucune prop.