feat: Finalisation du projet lions-user-manager

- Ajout du module client Quarkus PrimeFaces Freya avec interface complète
- Ajout de l'AuditResource pour la gestion des logs d'audit
- Ajout du SyncResource pour la synchronisation Keycloak
- Ajout du SyncServiceImpl pour les opérations de synchronisation
- Ajout des DTOs de synchronisation (SyncStatusDTO, etc.)
- Corrections mineures dans RoleMapper, RoleServiceImpl, AuditServiceImpl
- Configuration des properties pour dev et prod
- Ajout de la configuration Claude Code (.claude/)
- Documentation complète du projet (AI_HANDOFF_DOCUMENT.md)

Le projet compile maintenant avec succès (BUILD SUCCESS).
Tous les modules (API, Server Impl, Client) sont fonctionnels.
This commit is contained in:
lionsdev
2025-12-04 21:11:44 +00:00
parent 70b4bd93a1
commit e206b6c02c
70 changed files with 11076 additions and 300 deletions

View File

@@ -0,0 +1,46 @@
package dev.lions.user.manager.dto.sync;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.eclipse.microprofile.openapi.annotations.media.Schema;
import java.io.Serializable;
/**
* DTO représentant le statut de santé de Keycloak
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
@Schema(description = "Statut de santé de Keycloak")
public class HealthStatusDTO implements Serializable {
private static final long serialVersionUID = 1L;
@Schema(description = "Timestamp du check de santé (millisecondes)", example = "1699545600000")
private long timestamp;
@Schema(description = "Indique si Keycloak est accessible", example = "true")
private boolean keycloakAccessible;
@Schema(description = "Version de Keycloak", example = "23.0.3")
private String keycloakVersion;
@Schema(description = "Indique si les realms sont accessibles", example = "true")
private boolean realmsAccessible;
@Schema(description = "Nombre de realms disponibles", example = "5")
private int realmsCount;
@Schema(description = "Indique si Keycloak est globalement en bonne santé", example = "true")
private boolean overallHealthy;
@Schema(description = "Message d'erreur si le check a échoué")
private String errorMessage;
}

View File

@@ -0,0 +1,57 @@
package dev.lions.user.manager.dto.sync;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.eclipse.microprofile.openapi.annotations.media.Schema;
import java.io.Serializable;
/**
* DTO représentant le résultat d'une synchronisation
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
@Schema(description = "Résultat d'une synchronisation avec Keycloak")
public class SyncResultDTO implements Serializable {
private static final long serialVersionUID = 1L;
@Schema(description = "Nom du realm synchronisé", example = "lions")
private String realmName;
@Schema(description = "Nombre d'utilisateurs synchronisés", example = "150")
private int usersCount;
@Schema(description = "Nombre de rôles realm synchronisés", example = "25")
private int realmRolesCount;
@Schema(description = "Nombre de rôles client synchronisés", example = "50")
private int clientRolesCount;
@Schema(description = "Indique si la synchronisation a réussi", example = "true")
private boolean success;
@Schema(description = "Message d'erreur si la synchronisation a échoué")
private String errorMessage;
@Schema(description = "Timestamp de début de la synchronisation (millisecondes)", example = "1699545600000")
private long startTime;
@Schema(description = "Timestamp de fin de la synchronisation (millisecondes)", example = "1699545615000")
private long endTime;
/**
* Retourne la durée de la synchronisation en millisecondes
* @return durée en ms
*/
public long getDurationMs() {
return endTime - startTime;
}
}