- Backend IA :
- Intégration d'OpenCV (WebAssembly) pour la détection et certification des cibles (anneaux concentriques, confiance).
- Ajout du système de journalisation complet des uploads (SQLite, IP, appareil, statut, métadonnées).
- Implémentation du système de modération (bannissement/débannissement de wallets, rejet 403 avec motifs).
- Harmonisation des codes d'erreur et messages JSON (UPLOAD_SUCCESS, WALLET_BANNED, etc.).
- Dashboard Next.js : page dédiée aux logs avec filtres, export CSV et actions de modération en un clic.
- Application Mobile (Flutter) :
- Encapsulation des réponses d'export dans AiExportResult avec gestion fine des erreurs et statuts.
- Mise à jour du disclaimer de participation à l'entraînement IA avec avertissements stricts de bannissement.
- Révocation de l'envoi de photos et affichage d'un bandeau explicatif en cas de suspension.
- Ajout d'un bouton manuel « Actualiser mon statut » dans les paramètres pour synchroniser l'état du compte.
- Possibilité de configurer l'URL/IP du serveur IA directement depuis les paramètres.
- Historique : le filtre par type de cible est désormais appliqué au
chargement ; correction du piège PopupMenuItem(value: null) qui
empêchait l'option « Tous » de réinitialiser le filtre ; icône
colorée quand un filtre est actif
- OpenCV : libération des Mat natifs (img, gray, blurred, circles)
dans un finally — detectTarget tourne toutes les secondes pendant
l'aperçu caméra et faisait grimper la mémoire native en continu
- Export IA : distance, arme et id de session réels transmis depuis
SessionProvider au lieu des placeholders (25 m / "Unknown")
- Tests : remplacement du test widget cassé (BullyApp sans providers)
par 14 tests qui passent — calcul de score concentrique (centre,
hors cible, ratio d'image, anneaux personnalisés), agrégation des
scores, analyse de groupement, et rendu du widget StatsCard
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>