Files
unionflow-client-quarkus-pr…/src/main/java/dev/lions/unionflow/client/service/AuditTrailRestClient.java
dahoud 917c8c5359 feat(sprint-11 web 2026-04-25): pages PrimeFaces Sprint 10 (UBO, audit-trail viewer, délégations rôles) + bump api 1.0.6→1.0.8
DRY strict appliqué : web réutilise directement les DTOs officiels de
unionflow-server-api 1.0.8 (CreateBeneficiaireEffectifRequest, BeneficiaireEffectifResponse,
AuditTrailOperationResponse, CreateRoleDelegationRequest, RoleDelegationResponse) au lieu
de DTOs miroirs locaux. Aucune duplication.

Bump dépendance api 1.0.6 → 1.0.8

REST clients @RegisterRestClient configKey=unionflow-api
- BeneficiaireEffectifRestClient : CRUD lister/trouverParId/creer/mettreAJour/desactiver
- AuditTrailRestClient : 5 endpoints lecture (parUtilisateur, historique, parOrganisation, sodViolations, financial)
- RoleDelegationRestClient : listerParOrganisation / creer / revoquer

Beans @ViewScoped
- BeneficiaireEffectifBean : recherche (KYC|org|PEP), création formulaire, marquerPep, désactiver
- AuditTrailViewerBean : 5 modes (USER/ENTITY/ORG/SOD_VIOLATIONS/FINANCIAL), couleurAction (DELETE→danger, VALIDATE→success, etc.), couleurSod
- RoleDelegationBean : recherche/créer/révoquer, couleurStatut (ACTIVE/REVOQUEE/EXPIREE)

Pages XHTML
- /pages/secure/conformite/beneficiaires-effectifs.xhtml — recherche + tableau + nouvelle UBO (panel toggleable)
- /pages/secure/conformite/audit-trail.xhtml — filtres mode + tableau + détail JSONB (pre format)
- /pages/secure/admin/role-delegations.xhtml — table actives + nouvelle (datePicker dates)

MenuBean + menu.xhtml
- 3 nouveaux flags : isBeneficiairesEffectifsVisible, isAuditTrailViewerVisible, isRoleDelegationsVisible
- 3 menuitems ajoutés au sous-menu Conformité existant (icônes pi-users, pi-history, pi-share-alt)
- Gating par rôles : COMPLIANCE_OFFICER + CONTROLEUR_INTERNE pour audit ; ADMIN_ORGANISATION + PRESIDENT pour délégations

Tests (10/10 verts, 31/31 cumulé S8+S11)
- AuditTrailViewerBeanTest : 8 tests (couleurAction × 6 cas, couleurSod, defaults)
- RoleDelegationBeanTest : 2 tests (couleurStatut × 5, defaults)
2026-04-25 12:56:13 +00:00

54 lines
1.7 KiB
Java

package dev.lions.unionflow.client.service;
import dev.lions.unionflow.client.security.AuthHeaderFactory;
import dev.lions.unionflow.server.api.dto.audit.response.AuditTrailOperationResponse;
import jakarta.ws.rs.Consumes;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.PathParam;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.QueryParam;
import jakarta.ws.rs.core.MediaType;
import java.util.List;
import java.util.UUID;
import org.eclipse.microprofile.rest.client.annotation.RegisterClientHeaders;
import org.eclipse.microprofile.rest.client.inject.RegisterRestClient;
/**
* Client REST de lecture audit trail (Sprint 11 ⇄ backend Sprint 10 CQRS read).
*/
@RegisterRestClient(configKey = "unionflow-api")
@RegisterClientHeaders(AuthHeaderFactory.class)
@Path("/api/audit-trail")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public interface AuditTrailRestClient {
@GET
@Path("/by-user/{userId}")
List<AuditTrailOperationResponse> parUtilisateur(
@PathParam("userId") UUID userId,
@QueryParam("from") String from,
@QueryParam("to") String to);
@GET
@Path("/by-entity/{type}/{id}")
List<AuditTrailOperationResponse> historique(
@PathParam("type") String entityType, @PathParam("id") UUID entityId);
@GET
@Path("/by-organisation/{orgId}")
List<AuditTrailOperationResponse> parOrganisation(@PathParam("orgId") UUID orgId);
@GET
@Path("/sod-violations")
List<AuditTrailOperationResponse> violationsSod();
@GET
@Path("/financial/{orgId}")
List<AuditTrailOperationResponse> operationsFinancieres(
@PathParam("orgId") UUID orgId,
@QueryParam("from") String from,
@QueryParam("to") String to);
}