4.5 KiB
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
# 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