# CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

## Project Overview

This is a Flutter application called "bully" targeting multiple platforms (Android, iOS, Linux, macOS, Web, Windows).

## Build Commands

```bash
# Get dependencies
flutter pub get

# Run the app (debug mode)
flutter run

# Run on a specific device
flutter run -d <device_id>

# Build for release
flutter build apk          # Android
flutter build ios          # iOS
flutter build web          # Web
flutter build windows      # Windows
flutter build macos        # macOS
flutter build linux        # Linux

# Analyze code for issues
flutter analyze

# Run all tests
flutter test

# Run a single test file
flutter test test/widget_test.dart

# Run tests with coverage
flutter test --coverage
```

## Features

### Analyse de cibles de tir
- Support de cibles concentriques (anneaux) et silhouettes
- Chargement d'images de cibles depuis la galerie ou la caméra
- Détection automatique du centre et du rayon de la cible

### Calibration des cibles
- Ajustement manuel du centre, du rayon et du nombre d'anneaux (1-10)
- **Calibration individuelle des anneaux** : cliquer sur un anneau pour l'ajuster indépendamment
- Slider global pour redimensionner tous les anneaux proportionnellement
- Visualisation en temps réel des zones de score

### Détection d'impacts
- **Ajout manuel** : cliquer sur l'image pour placer un impact
- **Détection automatique** : algorithme de détection de blobs avec paramètres ajustables
  - Seuil de luminosité
  - Taille min/max des impacts
  - Circularité minimale
  - Ratio de remplissage (distingue les trous pleins des cercles vides)
- **Détection par références** : sélectionner 2-4 impacts manuellement, l'algorithme apprend leurs caractéristiques et détecte les impacts similaires

### Calcul des scores
- Score automatique basé sur la position de l'impact dans les zones
- Cibles concentriques : score de 10 (centre) à 1 (bord externe)
- Support des anneaux calibrés individuellement pour un calcul précis
- Affichage du score total et de la distribution

### Analyse de groupement
- Calcul du diamètre de groupement
- Visualisation du cercle de groupement
- Centre de groupement affiché

### Statistiques
- **Zones chaudes (Heat Map)** : visualisation en brouillard avec gradient bleu (froid) à rouge (chaud)
- **Précision** : pourcentage de précision, score moyen
- **Écart-type** : dispersion horizontale et verticale
- **Distribution régionale** : répartition des tirs par quadrant
- Filtrage par période : session, semaine, mois, toutes les sessions

### Historique des sessions
- Sauvegarde des sessions avec date, score, notes
- Visualisation des sessions passées
- Suppression de sessions

### Interface utilisateur
- Thème sombre adapté au tir
- Support multilingue (Français)
- Interface responsive pour mobile et desktop

## Architecture

Standard Flutter project structure:
- `lib/` - Dart source code (entry point: `lib/main.dart`)
- `test/` - Widget and unit tests
- Platform directories: `android/`, `ios/`, `linux/`, `macos/`, `web/`, `windows/`

The app uses `flutter_lints` for static analysis (configured in `analysis_options.yaml`).


# description des pages

En-têtes ajoutés
Fichier	En-tête
home_screen.dart	        Écran d'accueil - Dashboard principal avec stats et navigation
stats_card.dart	          Widget carte réutilisable pour afficher une statistique
capture_screen.dart	      Écran de capture - Sélection type cible et source image
target_type_selector.dart	Sélecteur de type de cible (concentrique/silhouette)
image_source_button.dart	Bouton pour choisir caméra ou galerie
analysis_screen.dart	    Écran principal d'analyse avec overlay et scores
analysis_provider.dart	  Gestionnaire d'état (ChangeNotifier) pour l'analyse
target_overlay.dart	      Overlay visuel avec anneaux, impacts et groupement
target_calibration.dart	  Outil de calibration du centre, rayon et anneaux
score_card.dart	          Carte d'affichage des scores et distribution
grouping_stats.dart	      Statistiques de groupement avec indicateur qualité
history_screen.dart	      Écran historique avec liste et graphique d'évolution
session_detail_screen.dart	Détail d'une session avec visualisation complète
session_list_item.dart	  Item de liste représentant une session
history_chart.dart	      Graphique d'évolution des 10 dernières sessions
statistics_screen.dart	  Écran statistiques avec filtrage par période
heat_map_widget.dart	    Heat map avec gradient bleu→rouge
