# CHANGELOG — Coaster World v1.65.0

## Défis de sortie
- Nouveau bloc `Challenges` directement dans la fiche d'une sortie de groupe.
- Deux types de défis automatiques pour cette première version :
  - nombre d'attractions différentes faites pendant la sortie ;
  - nombre de coasters différents faits pendant la sortie.
- Objectif configurable de 1 à 50.
- Jusqu'à 10 défis par sortie.
- Inscription volontaire de chaque participant confirmé.
- Le créateur du défi est inscrit automatiquement s'il participe lui-même à la sortie.

## Progression automatique
- Les scores sont alimentés directement par les attractions enregistrées depuis le Mode Visite.
- Une attraction déjà enregistrée dans la même visite n'est pas comptée deux fois.
- Lorsqu'un participant rejoint un défi en cours de journée, ses attractions déjà enregistrées sur cette sortie sont resynchronisées automatiquement.
- Pour un défi `Coasters`, seules les attractions possédant une fiche coaster sont comptabilisées.
- Une fois l'objectif atteint, la participation passe automatiquement à l'état terminé et le score est figé.

## Classement
- Classement en temps réel trié par score.
- Médailles pour les trois premières positions.
- Mise en évidence de la ligne de l'utilisateur connecté.
- Affichage de l'équipe de sortie du participant lorsqu'il en possède une.
- Progression personnelle avec barre d'avancement et compteur `score / objectif`.

## Gestion et sécurité
- Seuls le propriétaire du groupe et les administrateurs peuvent créer ou clôturer un défi.
- Seuls les membres actifs du groupe ayant confirmé la sortie peuvent rejoindre ou quitter un défi.
- Un défi clôturé ne reçoit plus aucun nouveau point.
- Les scores sont protégés contre les doublons grâce à `challenge_events.dedupe_key`.
- Si un participant refuse ensuite la sortie, sa participation aux défis actifs est retirée du classement.
- L'annulation d'une sortie annule automatiquement ses défis encore actifs.

## Notifications
- Les participants déjà confirmés reçoivent une notification lorsqu'un nouveau défi est créé pour leur sortie.
- Le lien de notification ouvre directement la zone `Challenges` de la sortie.

## Interface
- Cartes de défi responsives ordinateur / tablette / smartphone.
- États `En cours`, `Terminé` et `Objectif atteint` clairement visibles.
- Thèmes clair/sombre conservés.
- Traductions FR / EN / DE / ES / IT.

## Base de données
- Aucun changement de schéma SQL.
- Aucune nouvelle migration.
- La version réutilise les tables sociales déjà existantes :
  - `challenges` ;
  - `challenge_participants` ;
  - `challenge_events`.
