Refactoring

This commit is contained in:
DahoudG
2025-09-17 17:54:06 +00:00
parent 12d514d866
commit 63fe107f98
165 changed files with 54220 additions and 276 deletions

View File

@@ -0,0 +1,139 @@
import 'package:dartz/dartz.dart';
import '../../../../core/error/failures.dart';
import '../entities/analytics_data.dart';
import '../entities/kpi_trend.dart';
/// Repository abstrait pour les analytics
abstract class AnalyticsRepository {
/// Calcule une métrique analytics pour une période donnée
Future<Either<Failure, AnalyticsData>> calculerMetrique({
required TypeMetrique typeMetrique,
required PeriodeAnalyse periodeAnalyse,
String? organisationId,
});
/// Calcule les tendances d'un KPI sur une période
Future<Either<Failure, KPITrend>> calculerTendanceKPI({
required TypeMetrique typeMetrique,
required PeriodeAnalyse periodeAnalyse,
String? organisationId,
});
/// Obtient tous les KPI pour une organisation
Future<Either<Failure, Map<TypeMetrique, double>>> obtenirTousLesKPI({
required PeriodeAnalyse periodeAnalyse,
String? organisationId,
});
/// Calcule le KPI de performance globale
Future<Either<Failure, double>> calculerPerformanceGlobale({
required PeriodeAnalyse periodeAnalyse,
String? organisationId,
});
/// Obtient les évolutions des KPI par rapport à la période précédente
Future<Either<Failure, Map<TypeMetrique, double>>> obtenirEvolutionsKPI({
required PeriodeAnalyse periodeAnalyse,
String? organisationId,
});
/// Obtient les métriques pour le tableau de bord
Future<Either<Failure, List<AnalyticsData>>> obtenirMetriquesTableauBord({
String? organisationId,
required String utilisateurId,
});
/// Obtient les types de métriques disponibles
Future<Either<Failure, List<TypeMetrique>>> obtenirTypesMetriques();
/// Obtient les périodes d'analyse disponibles
Future<Either<Failure, List<PeriodeAnalyse>>> obtenirPeriodesAnalyse();
/// Met en cache les données analytics
Future<Either<Failure, void>> mettreEnCache({
required String cle,
required Map<String, dynamic> donnees,
Duration? dureeVie,
});
/// Récupère les données depuis le cache
Future<Either<Failure, Map<String, dynamic>?>> recupererDepuisCache({
required String cle,
});
/// Vide le cache analytics
Future<Either<Failure, void>> viderCache();
/// Synchronise les données analytics avec le serveur
Future<Either<Failure, void>> synchroniserDonnees();
/// Vérifie si les données sont à jour
Future<Either<Failure, bool>> verifierMiseAJour({
required TypeMetrique typeMetrique,
required PeriodeAnalyse periodeAnalyse,
String? organisationId,
});
/// Obtient les alertes actives
Future<Either<Failure, List<AnalyticsData>>> obtenirAlertesActives({
String? organisationId,
});
/// Marque une alerte comme lue
Future<Either<Failure, void>> marquerAlerteLue({
required String alerteId,
});
/// Exporte les données analytics
Future<Either<Failure, String>> exporterDonnees({
required List<TypeMetrique> metriques,
required PeriodeAnalyse periodeAnalyse,
String? organisationId,
required String format, // 'json', 'csv', 'excel'
});
/// Obtient l'historique des calculs
Future<Either<Failure, List<AnalyticsData>>> obtenirHistoriqueCalculs({
required TypeMetrique typeMetrique,
String? organisationId,
int limite = 50,
});
/// Sauvegarde une configuration de rapport personnalisé
Future<Either<Failure, void>> sauvegarderConfigurationRapport({
required String nom,
required List<TypeMetrique> metriques,
required PeriodeAnalyse periodeAnalyse,
String? organisationId,
Map<String, dynamic>? configuration,
});
/// Obtient les configurations de rapports sauvegardées
Future<Either<Failure, List<Map<String, dynamic>>>> obtenirConfigurationsRapports({
String? organisationId,
});
/// Supprime une configuration de rapport
Future<Either<Failure, void>> supprimerConfigurationRapport({
required String configurationId,
});
/// Planifie une mise à jour automatique
Future<Either<Failure, void>> planifierMiseAJourAutomatique({
required TypeMetrique typeMetrique,
required PeriodeAnalyse periodeAnalyse,
String? organisationId,
required Duration frequence,
});
/// Annule une mise à jour automatique planifiée
Future<Either<Failure, void>> annulerMiseAJourAutomatique({
required String planificationId,
});
/// Obtient les statistiques d'utilisation des analytics
Future<Either<Failure, Map<String, dynamic>>> obtenirStatistiquesUtilisation({
String? organisationId,
String? utilisateurId,
});
}