# Foulée — étape 1 : base de données et moteur

« Foulée » est un nom de travail. Tout le texte de marque est centralisé dans `config/config.php`.

## Ce que contient cette étape

- `database/schema.sql` : les 12 tables du site complet.
- `database/seed.sql` : réglages, 3 produits (10 km 29 €, semi 39 €, marathon 49 €), 3 routines renfo, 81 séances.
- `app/Pace.php` : modèle d'allures VMA + indice d'endurance.
- `app/Blocks.php` : format des séances, calcul des km, durées, charge, et texte avec les allures.
- `app/PlanGenerator.php` : le moteur complet.
- `tools/simulate.php` : génère et affiche un plan sans rien enregistrer.

Aucune page web dans cette étape : elles arrivent aux étapes 2 (site public et paiement), 3 (espace athlète) et 4 (back office).

## Installer en local

1. Crée une base MySQL `foulee` en utf8mb4.
2. Importe `database/schema.sql` puis `database/seed.sql` (phpMyAdmin ou `mysql foulee < fichier.sql`).
3. Copie `config/config.sample.php` en `config/config.php` et renseigne l'accès à la base.
4. Lance une simulation :

```
php tools/simulate.php 21k 2026-12-06 4 vma=16
php tools/simulate.php 42k 2027-04-11 5 chrono=10:42:30 detail=1
php tools/simulate.php 10k 2026-11-22 3 vma=14 chrono=10:50:00 objectif=48:00
```

`chrono=10:42:30` signifie 10 km en 42'30. `detail=1` affiche chaque séance avec les allures.

## Règles du moteur

- Calendrier à rebours depuis la date de course. Plus de semaines que nécessaire : le début est décalé. Moins : la prépa générale est raccourcie jusqu'au minimum (6, 8 ou 12 semaines).
- Affûtage, jour de course inclus : 10 km = 7 jours, semi = 10 jours, marathon = 14 jours (réglage `taper_days`).
- Construction : 55 % de prépa générale, 45 % de spécifique, une semaine allégée toutes les 4 semaines (-25 %), test VMA dans la première semaine allégée.
- Qualité : 1 séance par semaine en 3-4 séances, 2 en 5-6 séances. Semi et marathon : sortie longue spécifique une semaine sur deux.
- Sélection : bonne catégorie, phase, distance et niveau ; difficulté qui monte avec la phase ; pas de répétition avant 3 semaines (`no_repeat_weeks`).
- Les allures ne sont jamais stockées : elles se recalculent depuis la VMA du plan. Une VMA mise à jour après le test met tout le plan à jour.

## Ajouter des séances

En attendant l'éditeur du back office (étape 4), ajoute une ligne dans `library_sessions`. Exemple :

```sql
INSERT INTO library_sessions (code, category, title, blocks_json, phases, distances, level_min, level_max, difficulty)
VALUES ('VL12', 'vma_longue', '4 × 1200 m',
 '[{"t":"wu"},{"t":"rep","n":4,"m":1200,"z":[90,94],"r":"2''30\\""},{"t":"cd"}]',
 'gen,spe', '10k,21k,42k', 4, 6, 4);
```

Catégories : `vma_courte`, `vma_longue`, `cotes`, `seuil`, `tempo`, `spe_10k`, `spe_21k`, `spe_42k`, `sl`, `test`, `mj`.
Phases : `gen`, `spe`, `lite`, `taper`, `race`. Le format des blocs est décrit en tête de `app/Blocks.php`.
