# TODO

## Parcours client avec information et consentement
- [x] Dans `/relay/index.php`, présenter l’information avant le recueil : responsable, finalité, types de données, destinataires, durée, contact et version du texte. La case d’acceptation des offres est décochée par défaut; sans consentement explicite, aucune préférence n’est recueillie. Enregistrer la version et la date du choix. L’avis décrit aussi le cookie technique et les signaux de présence; aucun outil d’audience tiers n’est intégré à l’application. Permettre le retrait et la suppression depuis le navigateur concerné.
- [x] Fournir `/relay/wait.php` avec spinner accessible, progression et transition de repli; `/relay/vehicle.php` avec type de véhicule et budget; `/relay/credit.php` avec type de financement uniquement, sans données bancaires ou identifiants; `/relay/thanks.php` avec confirmation claire.
- [x] Traiter les formulaires avec méthode POST, validation serveur, champs à choix contrôlés, jetons CSRF et réponses hors URL, logs et Telegram. Échapper les sorties dynamiques.

## Présence pseudonyme et pilotage
- [x] Créer un identifiant visiteur aléatoire, conservé en cookie de session et stocké haché côté serveur. Ne pas utiliser, afficher ou rechercher les sessions par adresse IP; ne pas collecter de géolocalisation ou d’empreinte navigateur détaillée.
- [x] Envoyer un heartbeat léger toutes les 8 secondes au premier plan après consentement. Marquer « en ligne » si l’activité date de moins de 60 secondes, sinon « hors ligne », avec dernière activité et expiration/purge automatiques.
- [x] Depuis le panel authentifié, permettre de choisir la prochaine étape parmi `wait`, `vehicle`, `credit`, `thanks` pour une session pseudonyme en ligne. Appliquer la commande lors de la prochaine vérification du navigateur, avec retour d’état, contrôle CSRF et journal d’audit minimal.

## Panel et sécurité opérationnelle
- [x] Fournir connexion, tableau de bord, action de redirection et déconnexion. Protéger par mot de passe haché, limitation des tentatives, rotation et expiration de session administrateur, cookies HttpOnly/Secure/SameSite, contrôle d’accès et protections CSRF. Aucun lien public de panel ni contournement de connexion.
- [x] Fournir une création initiale d’administrateur via CLI sans mot de passe codé en dur et une purge des sessions expirées et des journaux anciens. Garder stockage et base hors du document root public.

## Telegram minimisé et documentation
- [x] Garder Telegram désactivé par défaut et charger ses paramètres exclusivement depuis l’environnement; si activé, envoyer uniquement une notification générique après consentement, avec lien vers la connexion du panel. Ne pas envoyer IP, réponses, géolocalisation, navigateur détaillé ou secret d’accès.
- [x] Livrer `.env.example` sans secret réel, `.gitignore`, README d’installation/déploiement HTTPS, configuration, création admin, rétention/purge et suppression. Ajouter un manifeste des routes synchronisé, styles responsives et en-têtes de sécurité compatibles avec le Preview intégré.
- [ ] Avant toute collecte réelle, remplacer les valeurs d’exemple par l’identité légale du responsable, le contact confidentialité, la version et les durées validées; vérifier l’avis sur les pratiques réelles, définir un stockage persistant protégé et sauvegardé, activer HTTPS, créer le compte administrateur sur le serveur cible et ne configurer Telegram que si nécessaire.
