Commit Graph

14 Commits

Author SHA1 Message Date
dahoud
d04a625811 feat(sprint-17 web 2026-04-25): page publique /pages/public/kpi.xhtml — consultation KPI signée
Page anonyme accessible aux autorités externes via URL signée (HMAC-SHA256 backend).
DRY strict — pas de DTO miroir, réutilise KpiPublicSnapshot officiel api 1.0.10.

PublicKpiRestClient (@RegisterRestClient sans AuthHeaderFactory — endpoint anonyme)
- consulter(token) → KpiPublicSnapshot

PublicKpiBean @ViewScoped
- charger() lit query param token via FacesContext / viewParam, appelle endpoint
- Gestion erreurs HTTP : 401 → "Token invalide ou expiré", 404 → "Organisation introuvable"
- Helpers couleurScore (>=80 success / >=60 warning / <60 danger), couleurStatut

Page /pages/public/kpi.xhtml
- Template public-template.xhtml (sans auth, sans menu)
- f:viewParam token + f:viewAction publicKpiBean.charger
- Card KPI : score coloré central + 8 indicateurs en grid (Compliance Officer, AG, AIRMS, CMU, KYC, formation LBC/FT, UBO, CAC)
- Badge transparency footer : "Toute consultation est tracée dans l'audit trail"
- Whitelisté via existing /pages/public/* dans application.properties

Bump api 1.0.9 → 1.0.10

Tests (8/8) PublicKpiBean
- couleurScore × 4 (success/warning/danger/null)
- couleurStatut × 6 cas
- isCharge avec/sans snapshot
2026-04-25 16:50:03 +00:00
dahoud
11a1299bc7 feat(sprint-13.A+B web 2026-04-25): formulaire org enrichi conformité + 3 pages stubs détectées Sprint 12
S13.A — Formulaire organisation enrichi
- ui/includes/organisation-form.xhtml : nouvelle fieldset 🛡️ Conformité réglementaire
- selectOneMenu referentielComptable : SYSCOHADA / SYCEBNL / PCSFD_UMOA + auto
- inputText complianceOfficerId (UUID) avec tooltip Instr. BCEAO 001-03-2025
- Insérée entre fieldset Budget & Mission

S13.B — 3 pages stubs (détectées par test ViewPathsConsistency Sprint 12)
- pages/secure/evenement/bilan-detail.xhtml : stub bilan détail événement (panel "en construction")
- pages/admin/parametres.xhtml : hub paramètres admin (3 boutons : profil, préférences, notifications)
- pages/membre/parametres.xhtml : hub paramètres membre (3 boutons identiques)
- Tous les outcomes utilisent #{paths.xxx} (DRY centralisation Sprint 12)
- ViewPathsConsistencyTest : KNOWN_MISSING_PAGES vidé (tous les paths existent)

Bump dépendance api 1.0.8 → 1.0.9 (OrganisationResponse exposant les 2 champs)
Quarkus inchangé (3.27.3)

ACTION USER : `mvn install` après que api 1.0.9 soit en m2 local.
2026-04-25 15:24:55 +00:00
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
b0d23a0003 chore(quarkus-327): bump to Quarkus 3.27.3 LTS, make pom autonomous, rename deprecated config keys 2026-04-23 14:46:48 +00:00
dahoud
4735c1633f fix(cotisations): InitierPaiementEnLigneRequest record (new au lieu de builder)
Le DTO est un record Java, pas un @Builder Lombok. builder() n'existe pas.
Aussi: pom.xml mis à jour.
2026-04-17 00:10:36 +00:00
dahoud
237922891d fix(client): version 1.0.4, accesseurs JavaBean sur OrganisationSummaryResponse (compat JSF/EL) 2026-04-11 02:00:48 +00:00
dahoud
cb7eaea774 fix: corriger id repository Gitea (gitea → gitea-lionsdev) pour auth Maven 2026-04-09 15:16:33 +00:00
dahoud
8b08beaa76 fix: ajouter repository Gitea dans pom.xml pour résolution parent en CI 2026-04-09 15:11:12 +00:00
dahoud
0d936eb80a feat: formulaire types organisation avec categorie et modules requis
- TypeOrganisationsAdminBean: gestion List<String> modulesSelectionnes
  (sync CSV↔List), constantes CATEGORIES/MODULES_DISPONIBLES, getters JSF,
  CreateTypeReferenceRequest et UpdateTypeReferenceRequest mis à jour (11 args)
- organisations.xhtml: dropdown catégorie + selectManyCheckbox modules (16),
  colonnes Catégorie et Modules requis dans le DataTable, dialogue 750px
- pom.xml: unionflow-server-api 1.0.0 → 1.0.3
2026-04-09 15:08:48 +00:00
dahoud
1a52e7c6bc fix: add smallrye-health extension for pipeline health check 2026-04-09 10:42:46 +00:00
dahoud
6b28cf751e Refactoring 2026-03-01 22:00:28 +00:00
dahoud
e72754ecbe chore: Update lions-user-manager-client dependency to v1.0.1
Version 1.0.1 includes explicit version for lions-user-manager-server-api
dependency, fixing Maven resolution issues during CI/CD builds.

This resolves the 'version can neither be null, empty nor blank' error
when building with lionsctl pipeline.
2025-12-21 03:17:33 +00:00
dahoud
d6ab90c810 🔒 SÉCURITÉ - Audit UnionFlow: Corrections Critiques et Majeures
## 🔴 CRITIQUES
1. Suppression du secret hardcodé du Dockerfile (KEYCLOAK_CLIENT_SECRET)
   Les secrets doivent maintenant être injectés via Kubernetes Secrets

2. Configuration TLS sécurisée par défaut
   - quarkus.oidc.tls.verification=required (au lieu de 'none')
   - Prévient les attaques Man-in-the-Middle
   - 'none' reste disponible uniquement en développement local

## 🟠 MAJEURES
- Ajout de annotationProcessorPaths pour Lombok dans maven-compiler-plugin
  Assure la génération correcte des getters/setters/builders

## 📋 Contexte
Suite à l'audit de sécurité AUDIT_INTEGRAL_COMPLET_2025.md
Score avant: 5.6/10 - NE PAS DÉPLOYER EN PRODUCTION
Problèmes critiques identifiés et corrigés

## ⚠️ ACTION REQUISE
Créer le Kubernetes Secret avant déploiement:
kubectl create secret generic unionflow-client-secrets \
  --namespace=applications \
  --from-literal=keycloak-client-secret='...'

Voir: kubernetes/secrets/README.md

🤖 Generated with Claude Code
2025-12-14 17:10:18 +00:00
dahoud
2910809949 Configure Maven repository for unionflow-server-api dependency 2025-12-10 01:12:54 +00:00