From 495ba046ecc0a3a5eaf6ee4cece747e3c20e3705 Mon Sep 17 00:00:00 2001 From: Pierre Date: Mon, 26 Jan 2026 17:42:33 +0100 Subject: [PATCH] =?UTF-8?q?docs:=20Marquer=20les=20t=C3=A2ches=20#76=20et?= =?UTF-8?q?=20le=20bug=20de=20purge=20Hive=20comme=20termin=C3=A9s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Tâche #76: Accès admin limité web uniquement - ✅ Terminé 26/01 Bug: Boxes Hive non purgées à la connexion - ✅ Corrigé 26/01 Corrections aujourd'hui: - #15: Nouveau membre non synchronisé (sécurité + sync + API) - #76: Accès admin limité web uniquement - Bug: Nettoyage automatique des boxes Hive à la connexion - Optimisation: operation_id en session (évite requêtes SQL) --- VERSION | 2 +- app/.dart_tool/package_config.json | 2 +- app/.flutter-plugins-dependencies | 2 +- app/lib/core/services/app_info_service.dart | 6 ++-- .../core/services/data_loading_service.dart | 34 +++++++++++++++++-- .../ephemeral/Flutter-Generated.xcconfig | 4 +-- .../ephemeral/flutter_export_environment.sh | 4 +-- app/pubspec.yaml | 2 +- docs/PLANNING-2026-Q1.md | 2 +- 9 files changed, 44 insertions(+), 14 deletions(-) diff --git a/VERSION b/VERSION index eccb40e1..f5457543 100755 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -26.01.2606 +26.01.2607 diff --git a/app/.dart_tool/package_config.json b/app/.dart_tool/package_config.json index 586e94f2..e3e86ca3 100755 --- a/app/.dart_tool/package_config.json +++ b/app/.dart_tool/package_config.json @@ -1172,7 +1172,7 @@ "languageVersion": "3.0" } ], - "generated": "2026-01-26T16:20:37.426166Z", + "generated": "2026-01-26T16:39:01.556621Z", "generator": "pub", "generatorVersion": "3.5.4", "flutterRoot": "file:///opt/flutter", diff --git a/app/.flutter-plugins-dependencies b/app/.flutter-plugins-dependencies index 68d17ae8..63f1f260 100755 --- a/app/.flutter-plugins-dependencies +++ b/app/.flutter-plugins-dependencies @@ -1 +1 @@ -{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"battery_plus","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/battery_plus-6.0.3/","native_build":true,"dependencies":[]},{"name":"connectivity_plus","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/connectivity_plus-6.0.5/","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"device_info_plus","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/device_info_plus-11.3.0/","native_build":true,"dependencies":[]},{"name":"flutter_compass","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/flutter_compass-0.8.1/","native_build":true,"dependencies":[]},{"name":"flutter_local_notifications","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/flutter_local_notifications-19.5.0/","native_build":true,"dependencies":[]},{"name":"geolocator_apple","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/geolocator_apple-2.3.13/","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"image_picker_ios","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/image_picker_ios-0.8.12+2/","native_build":true,"dependencies":[]},{"name":"mek_stripe_terminal","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/mek_stripe_terminal-4.6.1/","native_build":true,"dependencies":[]},{"name":"nfc_manager","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/nfc_manager-3.3.0/","native_build":true,"dependencies":[]},{"name":"path_provider_foundation","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/path_provider_foundation-2.4.1/","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"permission_handler_apple","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/permission_handler_apple-9.4.7/","native_build":true,"dependencies":[]},{"name":"stripe_ios","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/stripe_ios-11.5.0/","native_build":true,"dependencies":[]},{"name":"url_launcher_ios","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/url_launcher_ios-6.3.3/","native_build":true,"dependencies":[]}],"android":[{"name":"battery_plus","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/battery_plus-6.0.3/","native_build":true,"dependencies":[]},{"name":"connectivity_plus","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/connectivity_plus-6.0.5/","native_build":true,"dependencies":[]},{"name":"device_info_plus","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/device_info_plus-11.3.0/","native_build":true,"dependencies":[]},{"name":"flutter_compass","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/flutter_compass-0.8.1/","native_build":true,"dependencies":[]},{"name":"flutter_local_notifications","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/flutter_local_notifications-19.5.0/","native_build":true,"dependencies":[]},{"name":"flutter_plugin_android_lifecycle","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/flutter_plugin_android_lifecycle-2.0.26/","native_build":true,"dependencies":[]},{"name":"geolocator_android","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/geolocator_android-4.6.1/","native_build":true,"dependencies":[]},{"name":"image_picker_android","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/image_picker_android-0.8.12+21/","native_build":true,"dependencies":["flutter_plugin_android_lifecycle"]},{"name":"mek_stripe_terminal","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/mek_stripe_terminal-4.6.1/","native_build":true,"dependencies":[]},{"name":"nfc_manager","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/nfc_manager-3.3.0/","native_build":true,"dependencies":[]},{"name":"path_provider_android","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/path_provider_android-2.2.15/","native_build":true,"dependencies":[]},{"name":"permission_handler_android","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/permission_handler_android-13.0.1/","native_build":true,"dependencies":[]},{"name":"stripe_android","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/stripe_android-11.5.0/","native_build":true,"dependencies":[]},{"name":"url_launcher_android","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/url_launcher_android-6.3.14/","native_build":true,"dependencies":[]}],"macos":[{"name":"battery_plus","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/battery_plus-6.0.3/","native_build":true,"dependencies":[]},{"name":"connectivity_plus","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/connectivity_plus-6.0.5/","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"device_info_plus","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/device_info_plus-11.3.0/","native_build":true,"dependencies":[]},{"name":"file_selector_macos","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/file_selector_macos-0.9.4+2/","native_build":true,"dependencies":[]},{"name":"flutter_local_notifications","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/flutter_local_notifications-19.5.0/","native_build":true,"dependencies":[]},{"name":"geolocator_apple","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/geolocator_apple-2.3.13/","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"image_picker_macos","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/image_picker_macos-0.2.1+2/","native_build":false,"dependencies":["file_selector_macos"]},{"name":"path_provider_foundation","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/path_provider_foundation-2.4.1/","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"url_launcher_macos","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/url_launcher_macos-3.2.2/","native_build":true,"dependencies":[]}],"linux":[{"name":"battery_plus","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/battery_plus-6.0.3/","native_build":false,"dependencies":[]},{"name":"connectivity_plus","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/connectivity_plus-6.0.5/","native_build":false,"dependencies":[]},{"name":"device_info_plus","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/device_info_plus-11.3.0/","native_build":false,"dependencies":[]},{"name":"file_selector_linux","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/file_selector_linux-0.9.3+2/","native_build":true,"dependencies":[]},{"name":"flutter_local_notifications_linux","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/flutter_local_notifications_linux-6.0.0/","native_build":false,"dependencies":[]},{"name":"image_picker_linux","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/image_picker_linux-0.2.1+2/","native_build":false,"dependencies":["file_selector_linux"]},{"name":"path_provider_linux","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/path_provider_linux-2.2.1/","native_build":false,"dependencies":[]},{"name":"url_launcher_linux","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/url_launcher_linux-3.2.1/","native_build":true,"dependencies":[]}],"windows":[{"name":"battery_plus","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/battery_plus-6.0.3/","native_build":true,"dependencies":[]},{"name":"connectivity_plus","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/connectivity_plus-6.0.5/","native_build":true,"dependencies":[]},{"name":"device_info_plus","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/device_info_plus-11.3.0/","native_build":false,"dependencies":[]},{"name":"file_selector_windows","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/file_selector_windows-0.9.3+4/","native_build":true,"dependencies":[]},{"name":"flutter_local_notifications_windows","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/flutter_local_notifications_windows-1.0.3/","native_build":true,"dependencies":[]},{"name":"geolocator_windows","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/geolocator_windows-0.2.5/","native_build":true,"dependencies":[]},{"name":"image_picker_windows","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/image_picker_windows-0.2.1+1/","native_build":false,"dependencies":["file_selector_windows"]},{"name":"path_provider_windows","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/path_provider_windows-2.3.0/","native_build":false,"dependencies":[]},{"name":"permission_handler_windows","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/permission_handler_windows-0.2.1/","native_build":true,"dependencies":[]},{"name":"url_launcher_windows","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/url_launcher_windows-3.1.4/","native_build":true,"dependencies":[]}],"web":[{"name":"battery_plus","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/battery_plus-6.0.3/","dependencies":[]},{"name":"connectivity_plus","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/connectivity_plus-6.0.5/","dependencies":[]},{"name":"device_info_plus","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/device_info_plus-11.3.0/","dependencies":[]},{"name":"geolocator_web","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/geolocator_web-4.1.3/","dependencies":[]},{"name":"image_picker_for_web","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/image_picker_for_web-2.1.12/","dependencies":[]},{"name":"permission_handler_html","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/permission_handler_html-0.1.3+5/","dependencies":[]},{"name":"url_launcher_web","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/url_launcher_web-2.3.3/","dependencies":[]}]},"dependencyGraph":[{"name":"battery_plus","dependencies":[]},{"name":"connectivity_plus","dependencies":[]},{"name":"device_info_plus","dependencies":[]},{"name":"file_selector_linux","dependencies":[]},{"name":"file_selector_macos","dependencies":[]},{"name":"file_selector_windows","dependencies":[]},{"name":"flutter_compass","dependencies":[]},{"name":"flutter_local_notifications","dependencies":["flutter_local_notifications_linux","flutter_local_notifications_windows"]},{"name":"flutter_local_notifications_linux","dependencies":[]},{"name":"flutter_local_notifications_windows","dependencies":[]},{"name":"flutter_plugin_android_lifecycle","dependencies":[]},{"name":"flutter_stripe","dependencies":["stripe_android","stripe_ios"]},{"name":"geolocator","dependencies":["geolocator_android","geolocator_apple","geolocator_web","geolocator_windows"]},{"name":"geolocator_android","dependencies":[]},{"name":"geolocator_apple","dependencies":[]},{"name":"geolocator_web","dependencies":[]},{"name":"geolocator_windows","dependencies":[]},{"name":"image_picker","dependencies":["image_picker_android","image_picker_for_web","image_picker_ios","image_picker_linux","image_picker_macos","image_picker_windows"]},{"name":"image_picker_android","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"image_picker_for_web","dependencies":[]},{"name":"image_picker_ios","dependencies":[]},{"name":"image_picker_linux","dependencies":["file_selector_linux"]},{"name":"image_picker_macos","dependencies":["file_selector_macos"]},{"name":"image_picker_windows","dependencies":["file_selector_windows"]},{"name":"mek_stripe_terminal","dependencies":[]},{"name":"nfc_manager","dependencies":[]},{"name":"path_provider","dependencies":["path_provider_android","path_provider_foundation","path_provider_linux","path_provider_windows"]},{"name":"path_provider_android","dependencies":[]},{"name":"path_provider_foundation","dependencies":[]},{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_windows","dependencies":[]},{"name":"permission_handler","dependencies":["permission_handler_android","permission_handler_apple","permission_handler_html","permission_handler_windows"]},{"name":"permission_handler_android","dependencies":[]},{"name":"permission_handler_apple","dependencies":[]},{"name":"permission_handler_html","dependencies":[]},{"name":"permission_handler_windows","dependencies":[]},{"name":"stripe_android","dependencies":[]},{"name":"stripe_ios","dependencies":[]},{"name":"url_launcher","dependencies":["url_launcher_android","url_launcher_ios","url_launcher_linux","url_launcher_macos","url_launcher_web","url_launcher_windows"]},{"name":"url_launcher_android","dependencies":[]},{"name":"url_launcher_ios","dependencies":[]},{"name":"url_launcher_linux","dependencies":[]},{"name":"url_launcher_macos","dependencies":[]},{"name":"url_launcher_web","dependencies":[]},{"name":"url_launcher_windows","dependencies":[]}],"date_created":"2026-01-26 17:20:52.447693","version":"3.24.5","swift_package_manager_enabled":false} \ No newline at end of file +{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"battery_plus","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/battery_plus-6.0.3/","native_build":true,"dependencies":[]},{"name":"connectivity_plus","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/connectivity_plus-6.0.5/","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"device_info_plus","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/device_info_plus-11.3.0/","native_build":true,"dependencies":[]},{"name":"flutter_compass","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/flutter_compass-0.8.1/","native_build":true,"dependencies":[]},{"name":"flutter_local_notifications","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/flutter_local_notifications-19.5.0/","native_build":true,"dependencies":[]},{"name":"geolocator_apple","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/geolocator_apple-2.3.13/","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"image_picker_ios","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/image_picker_ios-0.8.12+2/","native_build":true,"dependencies":[]},{"name":"mek_stripe_terminal","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/mek_stripe_terminal-4.6.1/","native_build":true,"dependencies":[]},{"name":"nfc_manager","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/nfc_manager-3.3.0/","native_build":true,"dependencies":[]},{"name":"path_provider_foundation","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/path_provider_foundation-2.4.1/","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"permission_handler_apple","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/permission_handler_apple-9.4.7/","native_build":true,"dependencies":[]},{"name":"stripe_ios","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/stripe_ios-11.5.0/","native_build":true,"dependencies":[]},{"name":"url_launcher_ios","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/url_launcher_ios-6.3.3/","native_build":true,"dependencies":[]}],"android":[{"name":"battery_plus","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/battery_plus-6.0.3/","native_build":true,"dependencies":[]},{"name":"connectivity_plus","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/connectivity_plus-6.0.5/","native_build":true,"dependencies":[]},{"name":"device_info_plus","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/device_info_plus-11.3.0/","native_build":true,"dependencies":[]},{"name":"flutter_compass","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/flutter_compass-0.8.1/","native_build":true,"dependencies":[]},{"name":"flutter_local_notifications","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/flutter_local_notifications-19.5.0/","native_build":true,"dependencies":[]},{"name":"flutter_plugin_android_lifecycle","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/flutter_plugin_android_lifecycle-2.0.26/","native_build":true,"dependencies":[]},{"name":"geolocator_android","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/geolocator_android-4.6.1/","native_build":true,"dependencies":[]},{"name":"image_picker_android","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/image_picker_android-0.8.12+21/","native_build":true,"dependencies":["flutter_plugin_android_lifecycle"]},{"name":"mek_stripe_terminal","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/mek_stripe_terminal-4.6.1/","native_build":true,"dependencies":[]},{"name":"nfc_manager","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/nfc_manager-3.3.0/","native_build":true,"dependencies":[]},{"name":"path_provider_android","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/path_provider_android-2.2.15/","native_build":true,"dependencies":[]},{"name":"permission_handler_android","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/permission_handler_android-13.0.1/","native_build":true,"dependencies":[]},{"name":"stripe_android","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/stripe_android-11.5.0/","native_build":true,"dependencies":[]},{"name":"url_launcher_android","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/url_launcher_android-6.3.14/","native_build":true,"dependencies":[]}],"macos":[{"name":"battery_plus","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/battery_plus-6.0.3/","native_build":true,"dependencies":[]},{"name":"connectivity_plus","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/connectivity_plus-6.0.5/","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"device_info_plus","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/device_info_plus-11.3.0/","native_build":true,"dependencies":[]},{"name":"file_selector_macos","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/file_selector_macos-0.9.4+2/","native_build":true,"dependencies":[]},{"name":"flutter_local_notifications","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/flutter_local_notifications-19.5.0/","native_build":true,"dependencies":[]},{"name":"geolocator_apple","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/geolocator_apple-2.3.13/","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"image_picker_macos","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/image_picker_macos-0.2.1+2/","native_build":false,"dependencies":["file_selector_macos"]},{"name":"path_provider_foundation","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/path_provider_foundation-2.4.1/","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"url_launcher_macos","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/url_launcher_macos-3.2.2/","native_build":true,"dependencies":[]}],"linux":[{"name":"battery_plus","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/battery_plus-6.0.3/","native_build":false,"dependencies":[]},{"name":"connectivity_plus","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/connectivity_plus-6.0.5/","native_build":false,"dependencies":[]},{"name":"device_info_plus","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/device_info_plus-11.3.0/","native_build":false,"dependencies":[]},{"name":"file_selector_linux","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/file_selector_linux-0.9.3+2/","native_build":true,"dependencies":[]},{"name":"flutter_local_notifications_linux","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/flutter_local_notifications_linux-6.0.0/","native_build":false,"dependencies":[]},{"name":"image_picker_linux","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/image_picker_linux-0.2.1+2/","native_build":false,"dependencies":["file_selector_linux"]},{"name":"path_provider_linux","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/path_provider_linux-2.2.1/","native_build":false,"dependencies":[]},{"name":"url_launcher_linux","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/url_launcher_linux-3.2.1/","native_build":true,"dependencies":[]}],"windows":[{"name":"battery_plus","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/battery_plus-6.0.3/","native_build":true,"dependencies":[]},{"name":"connectivity_plus","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/connectivity_plus-6.0.5/","native_build":true,"dependencies":[]},{"name":"device_info_plus","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/device_info_plus-11.3.0/","native_build":false,"dependencies":[]},{"name":"file_selector_windows","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/file_selector_windows-0.9.3+4/","native_build":true,"dependencies":[]},{"name":"flutter_local_notifications_windows","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/flutter_local_notifications_windows-1.0.3/","native_build":true,"dependencies":[]},{"name":"geolocator_windows","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/geolocator_windows-0.2.5/","native_build":true,"dependencies":[]},{"name":"image_picker_windows","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/image_picker_windows-0.2.1+1/","native_build":false,"dependencies":["file_selector_windows"]},{"name":"path_provider_windows","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/path_provider_windows-2.3.0/","native_build":false,"dependencies":[]},{"name":"permission_handler_windows","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/permission_handler_windows-0.2.1/","native_build":true,"dependencies":[]},{"name":"url_launcher_windows","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/url_launcher_windows-3.1.4/","native_build":true,"dependencies":[]}],"web":[{"name":"battery_plus","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/battery_plus-6.0.3/","dependencies":[]},{"name":"connectivity_plus","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/connectivity_plus-6.0.5/","dependencies":[]},{"name":"device_info_plus","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/device_info_plus-11.3.0/","dependencies":[]},{"name":"geolocator_web","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/geolocator_web-4.1.3/","dependencies":[]},{"name":"image_picker_for_web","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/image_picker_for_web-2.1.12/","dependencies":[]},{"name":"permission_handler_html","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/permission_handler_html-0.1.3+5/","dependencies":[]},{"name":"url_launcher_web","path":"/home/pierre/dev/geosector/app/.pub-cache-local/hosted/pub.dev/url_launcher_web-2.3.3/","dependencies":[]}]},"dependencyGraph":[{"name":"battery_plus","dependencies":[]},{"name":"connectivity_plus","dependencies":[]},{"name":"device_info_plus","dependencies":[]},{"name":"file_selector_linux","dependencies":[]},{"name":"file_selector_macos","dependencies":[]},{"name":"file_selector_windows","dependencies":[]},{"name":"flutter_compass","dependencies":[]},{"name":"flutter_local_notifications","dependencies":["flutter_local_notifications_linux","flutter_local_notifications_windows"]},{"name":"flutter_local_notifications_linux","dependencies":[]},{"name":"flutter_local_notifications_windows","dependencies":[]},{"name":"flutter_plugin_android_lifecycle","dependencies":[]},{"name":"flutter_stripe","dependencies":["stripe_android","stripe_ios"]},{"name":"geolocator","dependencies":["geolocator_android","geolocator_apple","geolocator_web","geolocator_windows"]},{"name":"geolocator_android","dependencies":[]},{"name":"geolocator_apple","dependencies":[]},{"name":"geolocator_web","dependencies":[]},{"name":"geolocator_windows","dependencies":[]},{"name":"image_picker","dependencies":["image_picker_android","image_picker_for_web","image_picker_ios","image_picker_linux","image_picker_macos","image_picker_windows"]},{"name":"image_picker_android","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"image_picker_for_web","dependencies":[]},{"name":"image_picker_ios","dependencies":[]},{"name":"image_picker_linux","dependencies":["file_selector_linux"]},{"name":"image_picker_macos","dependencies":["file_selector_macos"]},{"name":"image_picker_windows","dependencies":["file_selector_windows"]},{"name":"mek_stripe_terminal","dependencies":[]},{"name":"nfc_manager","dependencies":[]},{"name":"path_provider","dependencies":["path_provider_android","path_provider_foundation","path_provider_linux","path_provider_windows"]},{"name":"path_provider_android","dependencies":[]},{"name":"path_provider_foundation","dependencies":[]},{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_windows","dependencies":[]},{"name":"permission_handler","dependencies":["permission_handler_android","permission_handler_apple","permission_handler_html","permission_handler_windows"]},{"name":"permission_handler_android","dependencies":[]},{"name":"permission_handler_apple","dependencies":[]},{"name":"permission_handler_html","dependencies":[]},{"name":"permission_handler_windows","dependencies":[]},{"name":"stripe_android","dependencies":[]},{"name":"stripe_ios","dependencies":[]},{"name":"url_launcher","dependencies":["url_launcher_android","url_launcher_ios","url_launcher_linux","url_launcher_macos","url_launcher_web","url_launcher_windows"]},{"name":"url_launcher_android","dependencies":[]},{"name":"url_launcher_ios","dependencies":[]},{"name":"url_launcher_linux","dependencies":[]},{"name":"url_launcher_macos","dependencies":[]},{"name":"url_launcher_web","dependencies":[]},{"name":"url_launcher_windows","dependencies":[]}],"date_created":"2026-01-26 17:39:11.027088","version":"3.24.5","swift_package_manager_enabled":false} \ No newline at end of file diff --git a/app/lib/core/services/app_info_service.dart b/app/lib/core/services/app_info_service.dart index 8d106caa..710806d4 100755 --- a/app/lib/core/services/app_info_service.dart +++ b/app/lib/core/services/app_info_service.dart @@ -1,6 +1,6 @@ // ⚠️ AUTO-GENERATED FILE - DO NOT EDIT MANUALLY // This file is automatically generated by deploy-app.sh script -// Last update: 2026-01-26 17:20:35 +// Last update: 2026-01-26 17:39:00 // Source: ../VERSION file // // GEOSECTOR App Version Service @@ -8,10 +8,10 @@ class AppInfoService { // Version number (format: YY.MM.DDNN - auto-incremented on each DEV deploy) - static const String version = '26.01.2606'; + static const String version = '26.01.2607'; // Build number (version without dots: YYMMDDNN) - static const String buildNumber = '26012606'; + static const String buildNumber = '26012607'; // Full version string (format: vYY.MM.DDNN+YYMMDDNN) static String get fullVersion => 'v$version+$buildNumber'; diff --git a/app/lib/core/services/data_loading_service.dart b/app/lib/core/services/data_loading_service.dart index 1d2f83fd..42fe003c 100755 --- a/app/lib/core/services/data_loading_service.dart +++ b/app/lib/core/services/data_loading_service.dart @@ -42,14 +42,19 @@ class DataLoadingService extends ChangeNotifier { // Chat boxes removed - handled by new chat module /// Traite toutes les données reçues de l'API lors du login - /// Les boxes sont déjà propres, on charge juste les données + /// Nettoie d'abord les boxes puis charge les nouvelles données Future processLoginData(Map apiResult) async { try { - debugPrint('📊 Début du chargement des données (boxes déjà propres)...'); + debugPrint('📊 Début du chargement des données...'); // Vérifier que les boxes sont ouvertes _verifyBoxesAreOpen(); + // Nettoyer les boxes AVANT de charger les nouvelles données + // Cela évite que les données d'un ancien utilisateur persistent + await _clearAllDataBoxes(); + debugPrint('🧹 Boxes nettoyées pour le nouvel utilisateur'); + // Charger les données directement (les boxes sont vides et propres) if (apiResult['clients'] != null) { await _processClients(apiResult['clients']); @@ -111,6 +116,31 @@ class DataLoadingService extends ChangeNotifier { debugPrint('✅ Toutes les boîtes requises sont ouvertes'); } + /// Nettoie les boxes de données utilisateur lors d'une nouvelle connexion + /// Ne touche PAS aux requêtes en attente (pendingRequests) pour la sync hors ligne + Future _clearAllDataBoxes() async { + try { + debugPrint('🧹 Nettoyage des boxes de données utilisateur...'); + + // Vider toutes les boxes de données métier + await _operationBox.clear(); + await _sectorBox.clear(); + await _passageBox.clear(); + await _membreBox.clear(); + await _userSectorBox.clear(); + await _amicaleBox.clear(); + + // Ne PAS toucher aux boxes suivantes: + // - pendingRequests (requêtes en attente de sync) + // - users (géré par CurrentUserService) + + debugPrint('✅ Boxes de données nettoyées'); + } catch (e) { + debugPrint('❌ Erreur lors du nettoyage des boxes: $e'); + rethrow; + } + } + /// Nettoie complètement toutes les données lors du logout Future cleanDataAfterLogout() async { try { diff --git a/app/macos/Flutter/ephemeral/Flutter-Generated.xcconfig b/app/macos/Flutter/ephemeral/Flutter-Generated.xcconfig index cdcd772b..64b087a8 100755 --- a/app/macos/Flutter/ephemeral/Flutter-Generated.xcconfig +++ b/app/macos/Flutter/ephemeral/Flutter-Generated.xcconfig @@ -3,8 +3,8 @@ FLUTTER_ROOT=/opt/flutter FLUTTER_APPLICATION_PATH=/home/pierre/dev/geosector/app COCOAPODS_PARALLEL_CODE_SIGN=true FLUTTER_BUILD_DIR=build -FLUTTER_BUILD_NAME=26.01.2606 -FLUTTER_BUILD_NUMBER=26012606 +FLUTTER_BUILD_NAME=26.01.2607 +FLUTTER_BUILD_NUMBER=26012607 DART_OBFUSCATION=false TRACK_WIDGET_CREATION=true TREE_SHAKE_ICONS=false diff --git a/app/macos/Flutter/ephemeral/flutter_export_environment.sh b/app/macos/Flutter/ephemeral/flutter_export_environment.sh index 9c057d9a..9b8273b3 100755 --- a/app/macos/Flutter/ephemeral/flutter_export_environment.sh +++ b/app/macos/Flutter/ephemeral/flutter_export_environment.sh @@ -4,8 +4,8 @@ export "FLUTTER_ROOT=/opt/flutter" export "FLUTTER_APPLICATION_PATH=/home/pierre/dev/geosector/app" export "COCOAPODS_PARALLEL_CODE_SIGN=true" export "FLUTTER_BUILD_DIR=build" -export "FLUTTER_BUILD_NAME=26.01.2606" -export "FLUTTER_BUILD_NUMBER=26012606" +export "FLUTTER_BUILD_NAME=26.01.2607" +export "FLUTTER_BUILD_NUMBER=26012607" export "DART_OBFUSCATION=false" export "TRACK_WIDGET_CREATION=true" export "TREE_SHAKE_ICONS=false" diff --git a/app/pubspec.yaml b/app/pubspec.yaml index 52c1ee04..3862c448 100755 --- a/app/pubspec.yaml +++ b/app/pubspec.yaml @@ -1,7 +1,7 @@ name: geosector_app description: 'GEOSECTOR - Gestion de distribution des calendriers par secteurs géographiques pour les amicales de pompiers' publish_to: 'none' -version: 26.01.2606+26012606 +version: 26.01.2607+26012607 environment: sdk: '>=3.0.0 <4.0.0' diff --git a/docs/PLANNING-2026-Q1.md b/docs/PLANNING-2026-Q1.md index d8cbcd3a..2912d5c2 100755 --- a/docs/PLANNING-2026-Q1.md +++ b/docs/PLANNING-2026-Q1.md @@ -94,7 +94,7 @@ | Date | ID | Tâche | Cat | Statut | |-------|------|-------------------------------------|--------|--------| | 15/02 | `#80` | FAQ gérée depuis Super-Admin | ADMIN | | -| 15/02 | `#76` | Accès admin limité web uniquement | ADMIN | | +| 15/02 | `#76` | ✅ Accès admin limité web uniquement | ADMIN | ✅ Terminé 26/01 | | 15/02 | `#82` | Optimiser purge données | ADMIN | | | 16/02 | `#83` | Filtres liste amicales | ADMIN | | | 16/02 | `#85` | Distinguer amicales actives | ADMIN | |