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.
This commit is contained in:
dahoud
2026-04-25 15:24:55 +00:00
parent cdcdb37459
commit 11a1299bc7
6 changed files with 190 additions and 9 deletions

View File

@@ -142,7 +142,7 @@
<dependency>
<groupId>dev.lions.unionflow</groupId>
<artifactId>unionflow-server-api</artifactId>
<version>1.0.8</version>
<version>1.0.9</version>
</dependency>
<!-- Lions User Manager Client - Module réutilisable de gestion d'utilisateurs Keycloak -->

View File

@@ -0,0 +1,54 @@
<!DOCTYPE html>
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
template="/templates/main-template.xhtml">
<ui:define name="title">UnionFlow - Paramètres administrateur</ui:define>
<ui:define name="content">
<div class="grid">
<div class="col-12">
<div class="card">
<h2 class="text-900 font-medium text-3xl m-0">Paramètres administrateur</h2>
<p class="text-600 mt-1 mb-4">
Préférences personnelles de l'administrateur — interface, notifications, sécurité.
</p>
<div class="grid">
<div class="col-12 md:col-4">
<p:commandButton value="Profil personnel"
icon="pi pi-user"
action="#{paths.personnelProfil}"
styleClass="w-full p-button-outlined" />
</div>
<div class="col-12 md:col-4">
<p:commandButton value="Préférences"
icon="pi pi-cog"
action="#{paths.personnelPreferences}"
styleClass="w-full p-button-outlined" />
</div>
<div class="col-12 md:col-4">
<p:commandButton value="Notifications"
icon="pi pi-bell"
action="#{paths.personnelNotifications}"
styleClass="w-full p-button-outlined" />
</div>
</div>
<p:divider styleClass="my-4" />
<p:panel header="Page en construction" styleClass="surface-100">
<p class="text-700">
Cette page centralise les paramètres administrateur (configuration globale,
module d'audit, logs, sauvegarde). Les sous-sections sont accessibles via
les boutons ci-dessus en attendant la version complète.
</p>
</p:panel>
</div>
</div>
</div>
</ui:define>
</ui:composition>

View File

@@ -0,0 +1,53 @@
<!DOCTYPE html>
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
template="/templates/main-template.xhtml">
<ui:define name="title">UnionFlow - Mes paramètres</ui:define>
<ui:define name="content">
<div class="grid">
<div class="col-12">
<div class="card">
<h2 class="text-900 font-medium text-3xl m-0">Mes paramètres</h2>
<p class="text-600 mt-1 mb-4">
Gérez votre profil, vos notifications et vos préférences d'affichage.
</p>
<div class="grid">
<div class="col-12 md:col-4">
<p:commandButton value="Mon profil"
icon="pi pi-user"
action="#{paths.personnelProfil}"
styleClass="w-full p-button-outlined" />
</div>
<div class="col-12 md:col-4">
<p:commandButton value="Mes préférences"
icon="pi pi-cog"
action="#{paths.personnelPreferences}"
styleClass="w-full p-button-outlined" />
</div>
<div class="col-12 md:col-4">
<p:commandButton value="Mes notifications"
icon="pi pi-bell"
action="#{paths.personnelNotifications}"
styleClass="w-full p-button-outlined" />
</div>
</div>
<p:divider styleClass="my-4" />
<p:panel header="Page en construction" styleClass="surface-100">
<p class="text-700">
Vue centralisée des paramètres membre. Sous-sections accessibles via
les boutons ci-dessus.
</p>
</p:panel>
</div>
</div>
</div>
</ui:define>
</ui:composition>

View File

@@ -0,0 +1,37 @@
<!DOCTYPE html>
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
template="/templates/main-template.xhtml">
<ui:define name="title">UnionFlow - Bilan détaillé événement</ui:define>
<ui:define name="content">
<div class="grid">
<div class="col-12">
<div class="card">
<div class="flex justify-content-between align-items-center mb-3">
<h2 class="text-900 font-medium text-3xl m-0">Bilan détaillé</h2>
<p:button value="Retour aux bilans" icon="pi pi-arrow-left"
outcome="#{paths.evenementBilan}"
styleClass="p-button-outlined" />
</div>
<p:messages />
<p:panel header="Page en construction" styleClass="surface-100">
<p class="text-700">
La vue détaillée du bilan d'un événement (statistiques participants,
recettes/dépenses, indicateurs satisfaction) est en cours de développement.
</p>
<p class="text-600 mt-2">
En attendant, consulte la liste des bilans pour la vue synthétique.
</p>
</p:panel>
</div>
</div>
</div>
</ui:define>
</ui:composition>

View File

@@ -650,6 +650,48 @@
</div>
</p:fieldset>
<!-- ═══════════════════════════════════════════════════════════════ -->
<!-- SECTION 6.5 : CONFORMITÉ (Sprint 1 — Instr. BCEAO + OHADA) -->
<!-- ═══════════════════════════════════════════════════════════════ -->
<p:fieldset legend="🛡️ Conformité réglementaire" toggleable="true" collapsed="true" styleClass="mb-3">
<div class="formgrid grid">
<!-- Référentiel comptable -->
<div class="field col-12 md:col-6">
<p:outputLabel for="referentiel" value="Référentiel comptable" styleClass="font-semibold" />
<p:selectOneMenu id="referentiel"
value="#{model.referentielComptable}">
<f:selectItem itemLabel="-- Auto (selon type d'organisation) --" itemValue="" />
<f:selectItem itemLabel="SYSCOHADA — Système comptable OHADA (associations, coopératives)" itemValue="SYSCOHADA" />
<f:selectItem itemLabel="SYCEBNL — Entités à but non lucratif (mutuelles santé, ONG)" itemValue="SYCEBNL" />
<f:selectItem itemLabel="PCSFD_UMOA — Plan comptable SFD UEMOA (microfinance art. 44)" itemValue="PCSFD_UMOA" />
</p:selectOneMenu>
<p:tooltip for="referentiel" position="top"
value="Détermine bilan, compte de résultat et annexes (Acte uniforme OHADA + BCEAO)" />
<small class="text-500">
<i class="pi pi-info-circle mr-1"/>
Si vide : appliqué automatiquement selon typeOrganisation
</small>
</div>
<!-- Compliance Officer -->
<div class="field col-12 md:col-6">
<p:outputLabel for="complianceOfficer" value="Compliance Officer (UUID membre)"
styleClass="font-semibold" />
<p:inputText id="complianceOfficer"
value="#{model.complianceOfficerId}"
placeholder="00000000-0000-0000-0000-000000000000" />
<p:tooltip for="complianceOfficer" position="top"
value="Désignation obligatoire selon Instr. BCEAO 001-03-2025 (LBC/FT). Doit être un membre rattaché à la direction, distinct du trésorier (séparation des pouvoirs)." />
<small class="text-500">
<i class="pi pi-shield mr-1"/>
Instr. BCEAO 001-03-2025 — LBC/FT
</small>
</div>
</div>
</p:fieldset>
<!-- ═══════════════════════════════════════════════════════════════ -->
<!-- SECTION 7 : MISSION & ACTIVITÉS -->
<!-- ═══════════════════════════════════════════════════════════════ -->

View File

@@ -25,15 +25,10 @@ class ViewPathsConsistencyTest {
"REDIRECT_SUFFIX", "ROOT", "INDEX");
/**
* Pages référencées par le code mais pas encore implémentées (dette pré-Sprint 12).
*
* <p>Action : créer les xhtml correspondants dans un sprint dédié, puis retirer cette liste.
* Le fait de centraliser via {@link ViewPaths} a permis de détecter ces pages fantômes.
* Pages référencées par le code mais pas encore implémentées.
* Sprint 13.B a créé les 3 stubs détectés par Sprint 12 — set vide.
*/
private static final java.util.Set<String> KNOWN_MISSING_PAGES = java.util.Set.of(
"EVENEMENT_BILAN_DETAIL",
"ADMIN_PARAMETRES",
"MEMBRE_PARAMETRES");
private static final java.util.Set<String> KNOWN_MISSING_PAGES = java.util.Set.of();
@Test
@DisplayName("Chaque constante ViewPaths pointe vers un .xhtml existant en classpath")