Compare commits

...
4 changed files with 15 additions and 1 deletions
@@ -248,6 +248,7 @@ class AnalysisProvider extends ChangeNotifier {
String? sessionId,
int? distance,
String? caliber,
int? expectedShots,
}) async {
if (_imagePath == null || _targetType == null) {
_errorMessage = "Impossible d'exporter : image ou type de cible manquant.";
@@ -273,6 +274,7 @@ class AnalysisProvider extends ChangeNotifier {
shots: _shots,
distanceMeters: distance ?? 25,
caliber: caliber ?? 'unknown',
expectedShots: expectedShots,
);
_state = AnalysisState.success;
@@ -943,6 +943,11 @@ class _AnalysisScreenContentState extends State<_AnalysisScreenContent> {
sessionId: sessionProvider.activeSessionId,
distance: sessionProvider.distance,
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();
}
+2 -1
View File
@@ -463,7 +463,8 @@ class _SettingsScreenState extends State<SettingsScreen> {
const SizedBox(height: 14),
const Text(
'📤 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),
),
const SizedBox(height: 10),
+6
View File
@@ -108,6 +108,7 @@ class AiExportService {
required List<Shot> shots,
int distanceMeters = 25,
String caliber = 'unknown',
int? expectedShots,
String? apiUrl,
}) async {
try {
@@ -172,6 +173,11 @@ class AiExportService {
"type": targetType.name,
"distance_meters": distanceMeters,
"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": {
"target_corners": corners,