/** * Types TypeScript pour le Dashboard - Correspondance exacte avec les DTOs backend * Backend: DashboardResource.java */ // === DASHBOARD PRINCIPAL === export interface DashboardPrincipalResponse { chantiers: { total: number; actifs: number; tauxActivite: number; }; equipes: { total: number; disponibles: number; tauxDisponibilite: number; }; employes: { total: number; actifs: number; tauxActivite: number; }; materiel: { total: number; disponible: number; tauxDisponibilite: number; }; maintenance: { enRetard: number; planifiees: number; alerteRetard: boolean; }; planning: { evenementsAujourdhui: number; disponibilitesEnAttente: number; }; documents: { total: number; recents: DocumentRecent[]; }; derniereMAJ: string; // ISO DateTime } export interface DocumentRecent { id: string; nom: string; type: string; dateCreation: string; // ISO DateTime } // === DASHBOARD CHANTIERS === export interface DashboardChantiersResponse { statistiques: ChantierStatistiques; chantiersActifs: ChantierActifDTO[]; chantiersEnRetard: ChantierEnRetardDTO[]; } export interface ChantierStatistiques { total: number; enCours: number; planifies: number; termines: number; annules: number; tauxReussite: number; budgetTotal: number; coutReelTotal: number; margeGlobale: number; } export interface ChantierActifDTO { id: string; nom: string; adresse: string; dateDebut: string; // ISO Date dateFinPrevue: string; // ISO Date statut: string; client: string; budget: number; coutReel: number; avancement: number; // 0-100 } export interface ChantierEnRetardDTO { id: string; nom: string; dateFinPrevue: string; // ISO Date joursRetard: number; } // === DASHBOARD MAINTENANCE === export interface DashboardMaintenanceResponse { statistiques: MaintenanceStatistiques; maintenancesEnRetard: MaintenanceEnRetardDTO[]; prochainesMaintenances: ProchaineMaintenanceDTO[]; } export interface MaintenanceStatistiques { total: number; enRetard: number; planifiees: number; terminees: number; tauxRealisation: number; } export interface MaintenanceEnRetardDTO { id: string; materiel: string; type: string; datePrevue: string; // ISO Date joursRetard: number; priorite: string; } export interface ProchaineMaintenanceDTO { id: string; materiel: string; type: string; datePrevue: string; // ISO Date joursRestants: number; } // === DASHBOARD RESSOURCES === export interface DashboardRessourcesResponse { statsEquipes: EquipeStatistiques; statsEmployes: EmployeStatistiques; statsMateriel: MaterielStatistiques; disponibilitesActuelles: DisponibiliteDTO[]; disponibilitesEnAttente: DisponibiliteDTO[]; } export interface EquipeStatistiques { total: number; disponibles: number; occupees: number; enConge: number; tauxUtilisation: number; } export interface EmployeStatistiques { total: number; actifs: number; enConge: number; disponibles: number; tauxActivite: number; } export interface MaterielStatistiques { total: number; disponible: number; enUtilisation: number; enMaintenance: number; horsService: number; tauxUtilisation: number; } export interface DisponibiliteDTO { id: string; employe: string; dateDebut: string; // ISO Date dateFin: string; // ISO Date type: string; statut: string; } // === DASHBOARD ALERTES === export interface DashboardAlertesResponse { maintenancesEnRetard: MaintenanceEnRetardDTO[]; chantiersEnRetard: ChantierEnRetardDTO[]; disponibilitesEnAttente: DisponibiliteDTO[]; conflitsPlanifies: ConflitPlanningDTO[]; alertesCritiques: AlerteCritiqueDTO[]; } export interface ConflitPlanningDTO { id: string; type: string; description: string; dateConflit: string; // ISO Date ressourcesConcernees: string[]; } export interface AlerteCritiqueDTO { id: string; type: 'MAINTENANCE' | 'CHANTIER' | 'PLANNING' | 'RESSOURCE'; severite: 'CRITIQUE' | 'HAUTE' | 'MOYENNE' | 'BASSE'; titre: string; description: string; dateCreation: string; // ISO DateTime } // === DASHBOARD FINANCES === export interface DashboardFinancesResponse { chiffreAffaires: { realise: number; prevu: number; objectif: number; tauxRealisation: number; }; depenses: { total: number; parCategorie: CategorieDepenseDTO[]; }; rentabilite: { margeGlobale: number; tauxMarge: number; beneficeNet: number; }; factures: { total: number; payees: number; enAttente: number; enRetard: number; montantTotal: number; montantPaye: number; montantEnAttente: number; }; devis: { total: number; acceptes: number; enAttente: number; refuses: number; tauxAcceptation: number; montantTotal: number; }; } export interface CategorieDepenseDTO { categorie: string; montant: number; pourcentage: number; } // === DASHBOARD PERFORMANCE === export interface DashboardPerformanceResponse { periodeJours: number; dateDebut: string; // ISO Date dateFin: string; // ISO Date chantiers: { tauxReussite: number; termines: number; total: number; }; maintenance: { tauxRealisation: number; realisees: number; total: number; }; equipes: { tauxUtilisation: number; occupees: number; total: number; }; calculeLe: string; // ISO DateTime } // === TYPES POUR LE HOOK useDashboard === export interface DashboardMetrics { totalChantiers: number; chantiersActifs: number; chantiersEnRetard: number; chantiersTermines: number; totalEquipes: number; equipesDisponibles: number; totalMateriel: number; materielDisponible: number; materielEnMaintenance: number; totalDocuments: number; totalPhotos: number; budgetTotal: number; coutReel: number; chiffreAffaires: number; objectifCA: number; tauxReussite: number; satisfactionClient: number; } export interface ChantierActif { id: string; nom: string; client: string | { nom: string; prenom?: string }; avancement: number; dateDebut: string; dateFinPrevue: string; statut: 'EN_COURS' | 'EN_RETARD' | 'PLANIFIE' | 'TERMINE'; budget: number; coutReel: number; equipe?: { id: string; nom: string; nombreMembres: number; }; } export interface ActiviteRecente { id: string; type: 'CHANTIER' | 'MAINTENANCE' | 'DOCUMENT' | 'EQUIPE'; titre: string; description: string; date: string; utilisateur: string; statut: 'SUCCESS' | 'WARNING' | 'ERROR' | 'INFO'; } export interface TacheUrgente { id: string; titre: string; description: string; priorite: 'HAUTE' | 'MOYENNE' | 'BASSE'; echeance: string; assignee: string; statut: 'A_FAIRE' | 'EN_COURS' | 'TERMINEE'; chantier?: { id: string; nom: string; }; }