dahoud
37db88672b
feat: BLoC tests complets + sécurité production + freerasp 7.5.1 migration
...
## Tests BLoC (Task P2.4 Mobile)
- 25 nouveaux fichiers *_bloc_test.dart + mocks générés (build_runner)
- Features couvertes : authentication, admin_users, adhesions, backup,
communication/messaging, contributions, dashboard, finance (approval/budget),
events, explore/network, feed, logs_monitoring, notifications, onboarding,
organizations (switcher/types/CRUD), profile, reports, settings, solidarity
- ~380 tests, > 80% coverage BLoCs
## Sécurité Production (Task P2.2)
- lib/core/security/app_integrity_service.dart (freerasp 7.5.1)
- Migration API breaking changes freerasp 7.5.1 :
- onRootDetected → onPrivilegedAccess
- onDebuggerDetected → onDebug
- onSignatureDetected → onAppIntegrity
- onHookDetected → onHooks
- onEmulatorDetected → onSimulator
- onUntrustedInstallationSourceDetected → onUnofficialStore
- onDeviceBindingDetected → onDeviceBinding
- onObfuscationIssuesDetected → onObfuscationIssues
- Talsec.start() split → start() + attachListener()
- const AndroidConfig/IOSConfig → final (constructors call ConfigVerifier)
- supportedAlternativeStores → supportedStores
## Pubspec
- bloc_test: ^9.1.7 → ^10.0.0 (compat flutter_bloc ^9.0.0)
- freerasp 7.5.1
## Config
- android/app/build.gradle : ajustements release
- lib/core/config/environment.dart : URLs API actualisées
- lib/main.dart + app_router : intégrations sécurité/BLoC
## Cleanup
- Suppression docs intermédiaires (TACHES_*.md, TASK_*_COMPLETION_REPORT.md,
TESTS_UNITAIRES_PROGRESS.md)
- .g.dart régénérés (json_serializable)
- .mocks.dart régénérés (mockito)
## Résultat
- 142 fichiers, +27 596 insertions
- Toutes les tâches P2 mobile complétées
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-21 12:42:35 +00:00
dahoud
dbf6a972ba
feat(features): refontes explore/feed/finance_workflow/help/logs/members/notifications
...
- explore + feed : pages de découverte (réseau, fil d'actualité)
- finance_workflow : approvals bloc + budgets bloc + dialogs
- help : support page avec FAQ + contact
- logs : monitoring bloc avec metrics + alerts + searchLogs
- members : recherche avancée, bulk actions, bloc complet, import/export
- notifications : bloc + page
2026-04-15 20:27:01 +00:00
dahoud
ba779a7a40
feat(ui): dark mode adaptatif sur 15 pages/widgets restants
...
Pattern AppColors pair (isDark ternaries) appliqué sur :
- login_page : SnackBar error color Color(0xFFDC2626) → AppColors.error
(gradient brand intentionnel non modifié)
- help_support : barre de recherche + ExpansionTile + chevrons → scheme adaptatif
- system_settings : état 'Accès réservé' + unselectedLabelColor TabBar
- epargne : date/description/boutons OutlinedButton foregroundColor adaptatifs
- conversation_tile, connected_recent_activities, connected_upcoming_events
- dashboard_notifications_widget
- budgets_list_page, pending_approvals_page, approve/reject_dialog
- create_organization_page, edit_organization_page, about_page
Les couleurs sémantiques (error, success, warning, primary) restent inchangées.
Les blancs/gradients intentionnels (AppBars brand, logos payment) préservés.
2026-04-15 20:14:59 +00:00
dahoud
04896349d6
fix: BUG-02 IC-03 session expirée sur Workflow Financier et Messagerie
...
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.
2026-04-10 20:53:28 +00:00
dahoud
5383df6dcb
refactoring
2026-03-31 09:14:47 +00:00
dahoud
d0e61ead97
Refactoring - Version stable
2026-03-28 14:25:59 +00:00
dahoud
11f9135f90
Refactoring - Version stable
2026-03-28 14:22:16 +00:00
dahoud
b63fc46182
feat(mobile): amélioration UX NotImplementedFailure + SnackbarHelper
...
- 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
2026-03-17 10:06:21 +00:00
dahoud
f4bdd81141
feat(mobile): implémentation 8 méthodes workflow financier manquantes
...
Datasource (finance_workflow_remote_datasource.dart) :
- requestApproval() : POST /api/finance/approvals (avec organizationId optionnel)
- getApprovalsHistory() : GET /api/finance/approvals/history (date + statut)
- updateBudget() : PUT /api/finance/budgets/{id} (updates map)
- deleteBudget() : DELETE /api/finance/budgets/{id}
- getWorkflowStats() : GET /api/finance/stats
- getAuditLogs() : GET /api/finance/audit-logs (filtres complets)
- getAnomalies() : GET /api/finance/audit-logs/anomalies
- exportAuditLogs() : POST /api/finance/audit-logs/export (format CSV/PDF)
Repository (finance_workflow_repository_impl.dart) :
- Remplacement de 8 NotImplementedFailure par vraies implémentations
- Conversion enums (TransactionType, ApprovalStatus, etc.) → String avec .name
- Gestion réseau : NetworkInfo check + RetryPolicy + exception mapping
- FinancialAuditLog.fromJson() pour convertir réponses audit/anomalies
Résultat : 0 erreur compilation, workflow financier 100% fonctionnel
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2026-03-16 21:17:37 +00:00
dahoud
d094d6db9c
Initial commit: unionflow-mobile-apps
...
Application Flutter complète (sans build artifacts).
Signed-off-by: lions dev Team
2026-03-15 16:30:08 +00:00