Compare commits

..
2 Commits
4 changed files with 15 additions and 1 deletions
@@ -248,6 +248,7 @@ class AnalysisProvider extends ChangeNotifier {
String? sessionId, String? sessionId,
int? distance, int? distance,
String? caliber, String? caliber,
int? expectedShots,
}) async { }) async {
if (_imagePath == null || _targetType == null) { if (_imagePath == null || _targetType == null) {
_errorMessage = "Impossible d'exporter : image ou type de cible manquant."; _errorMessage = "Impossible d'exporter : image ou type de cible manquant.";
@@ -273,6 +274,7 @@ class AnalysisProvider extends ChangeNotifier {
shots: _shots, shots: _shots,
distanceMeters: distance ?? 25, distanceMeters: distance ?? 25,
caliber: caliber ?? 'unknown', caliber: caliber ?? 'unknown',
expectedShots: expectedShots,
); );
_state = AnalysisState.success; _state = AnalysisState.success;
@@ -943,6 +943,11 @@ class _AnalysisScreenContentState extends State<_AnalysisScreenContent> {
sessionId: sessionProvider.activeSessionId, sessionId: sessionProvider.activeSessionId,
distance: sessionProvider.distance, distance: sessionProvider.distance,
caliber: sessionProvider.currentWeaponCaliber, caliber: sessionProvider.currentWeaponCaliber,
// Hors session, shotsPerTarget vaut sa valeur par defaut : mieux
// vaut ne rien annoncer qu'annoncer un nombre faux.
expectedShots: sessionProvider.isSessionActive
? sessionProvider.shotsPerTarget
: null,
); );
messenger.hideCurrentSnackBar(); messenger.hideCurrentSnackBar();
} }
+2 -1
View File
@@ -463,7 +463,8 @@ class _SettingsScreenState extends State<SettingsScreen> {
const SizedBox(height: 14), const SizedBox(height: 14),
const Text( const Text(
'📤 Ce qui est envoyé : la photo de la cible, la position des ' '📤 Ce qui est envoyé : la photo de la cible, la position des '
'impacts que vous avez placés, la distance de tir et le calibre.', 'impacts que vous avez placés, la distance de tir, le calibre et '
'le nombre de coups prévus.',
style: TextStyle(fontSize: 13), style: TextStyle(fontSize: 13),
), ),
const SizedBox(height: 10), const SizedBox(height: 10),
+6
View File
@@ -108,6 +108,7 @@ class AiExportService {
required List<Shot> shots, required List<Shot> shots,
int distanceMeters = 25, int distanceMeters = 25,
String caliber = 'unknown', String caliber = 'unknown',
int? expectedShots,
String? apiUrl, String? apiUrl,
}) async { }) async {
try { try {
@@ -172,6 +173,11 @@ class AiExportService {
"type": targetType.name, "type": targetType.name,
"distance_meters": distanceMeters, "distance_meters": distanceMeters,
"caliber": caliber, "caliber": caliber,
// Nombre de coups prevus pour cette cible, null hors session.
// Un ecart avec le nombre d'impacts ne signifie pas que le
// marquage est faux (un coup peut etre parti hors papier) : c'est
// au tri du dataset d'en decider, pas au client.
"expected_shots": expectedShots,
}, },
"plotting": { "plotting": {
"target_corners": corners, "target_corners": corners,