- build.gradle : tâche generateDevConfig qui propage dev.host vers
network_security_config.xml et lib/core/config/local_config.dart à chaque build
- environment.dart : import kDevHost depuis local_config.dart pour les URLs dev
(apiBaseUrl, keycloakBaseUrl, wsBaseUrl) — plus de constante IP hardcodée
- local_config.dart : fichier auto-généré (ne pas éditer directement)
- network_security_config.xml : autorisation cleartext pour 192.168.1.13
Pour changer l'IP : modifier uniquement android/local.properties → dev.host
Ajoute KeycloakAuthService.getValidAccessToken() qui vérifie l'expiration
du JWT et rafraîchit automatiquement avant de retourner le token.
FinanceWorkflowRemoteDatasource et MessagingRemoteDatasource injectent
désormais KeycloakAuthService au lieu de FlutterSecureStorage directement,
ce qui évite d'envoyer un Bearer expiré et d'obtenir un 401 silencieux.
- Epargne: badge LCB-FT (bouclier ambre) sur comptes avec fonds bloques + note recap
- EpargneDetail: historique pagine (page/size), affichage soldeAvant/soldeApres/motif dans chaque transaction, bouton "Charger plus"
- TransactionEpargneRepository: getByCompte accepte page et size, gere reponse paginee Spring (content[])
- MessagingDatasource: markMessageAsRead silencieuse (pas d'endpoint unitaire), getUnreadCount somme unreadCount des conversations
- OrganizationDetail: _memberCount charge le vrai nombre depuis GET /membres/count, affiche la valeur reelle au lieu de nombreMembres (toujours 0)
- AuthStatusResult: nouveau champ reAuthRequired (ancien compte nécessitant UPDATE_PASSWORD)
- AuthBloc._onLoginRequested: si reAuthRequired → logout silencieux + re-déclenchement AppAuth
automatique (Keycloak affiche l'écran de changement de mot de passe dans Chrome Custom Tab)
- AuthBloc._onStatusChecked: si reAuthRequired → logout + AuthUnauthenticated (redirection login)
- Remplacement du flux premierLoginComplet (boolean) par enum côté backend
- Suppression de AuthPasswordChangeRequired, AuthPasswordChanging, change_password_page.dart
- Import KycStatusWidget dans ProfilePage
- Ajout BlocBuilder dans _buildSecurityTab()
- Affichage KYC en premier dans onglet Sécurité
- Données depuis ProfileLoaded state (niveauVigilanceKyc, statutKyc, dateVerificationIdentite)
Spec 001-mutuelles-anti-blanchiment - Phase 4 Mobile
Task T027 complétée : Widget KYC intégré dans UI profil
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- NotImplementedFailure: ajout userFriendlyMessage et icon construction (blue)
- ErrorDisplayWidget: support spécial pour NotImplementedFailure (bientôt disponible)
- SnackbarHelper: classe centralisée pour messages cohérents (success, error, warning, info, notImplemented)
- budgets_list_page: remplace generic snackbar par SnackbarHelper.showNotImplemented
- conversations_page: remplace 2 TODOs par SnackbarHelper.showNotImplemented
- export_members: met à jour TODO obsolète (endpoint PDF maintenant disponible)
- cache_service: fix AppLogger.error calls (error: named param)
- cached_datasource_decorator: fix AppLogger.error call
Task #64 - Fix Snackbar Placeholders + NotImplementedFailure UX