feat: WebSocket temps réel + Finance Workflow + corrections

- Task #6: WebSocket /ws/dashboard + Kafka events (5 topics)
  * Backend: KafkaEventProducer, KafkaEventConsumer
  * Mobile: WebSocketService (reconnection, heartbeat, typed events)
  * DashboardBloc: Auto-refresh depuis WebSocket events

- Finance Workflow: approbations + budgets (backend + mobile)
  * Backend: entities, services, resources, migrations Flyway V6
  * Mobile: features finance_workflow complète avec BLoC

- Corrections DI: interfaces IRepository partout
  * IProfileRepository, IOrganizationRepository, IMembreRepository
  * GetIt configuré avec @injectable

- Spec-Kit: constitution + templates mis à jour
  * .specify/memory/constitution.md enrichie
  * Templates agent, plan, spec, tasks, checklist

- Nettoyage: fichiers temporaires supprimés

Signed-off-by: lions dev Team
This commit is contained in:
dahoud
2026-03-15 02:12:17 +00:00
parent bbc409de9d
commit e8ad874015
635 changed files with 58160 additions and 20674 deletions

View File

@@ -0,0 +1,61 @@
/// Interface du repository des organisations (Clean Architecture - Domain Layer)
library organization_repository;
import '../../data/models/organization_model.dart';
/// Interface du repository pour la gestion des organisations
/// Contrat défini dans la couche Domain, implémenté dans la couche Data
abstract class IOrganizationRepository {
/// Récupère la liste des organisations avec pagination
Future<List<OrganizationModel>> getOrganizations({
int page = 0,
int size = 20,
String? recherche,
});
/// Récupère les organisations du membre connecté (pour OrgAdmin)
Future<List<OrganizationModel>> getMesOrganisations();
/// Récupère une organisation par son ID
Future<OrganizationModel?> getOrganizationById(String id);
/// Crée une nouvelle organisation (SuperAdmin)
Future<OrganizationModel> createOrganization(OrganizationModel organization);
/// Met à jour une organisation (OrgAdmin)
Future<OrganizationModel> updateOrganization(String id, OrganizationModel organization);
/// Supprime une organisation (SuperAdmin)
Future<void> deleteOrganization(String id);
/// Active une organisation
Future<OrganizationModel> activateOrganization(String id);
/// Suspend une organisation
Future<OrganizationModel> suspendOrganization(String id);
/// Recherche avancée d'organisations
Future<List<OrganizationModel>> searchOrganizations({
String? nom,
TypeOrganization? type,
StatutOrganization? statut,
String? ville,
String? region,
String? pays,
int page = 0,
int size = 20,
});
/// Récupère les membres d'une organisation (GET /api/organisations/{id}/membres)
Future<List<Map<String, dynamic>>> getOrganizationMembers(String organizationId);
/// Met à jour la configuration d'une organisation (PUT /api/organisations/{id}/configuration)
/// Configuration: logo, couleurs, préférences, modules activés, etc.
Future<OrganizationModel> updateOrganizationConfig(
String id,
Map<String, dynamic> config,
);
/// Récupère les statistiques des organisations
Future<Map<String, dynamic>> getOrganizationsStats();
}