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:
2
pom.xml
2
pom.xml
@@ -142,7 +142,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>dev.lions.unionflow</groupId>
|
<groupId>dev.lions.unionflow</groupId>
|
||||||
<artifactId>unionflow-server-api</artifactId>
|
<artifactId>unionflow-server-api</artifactId>
|
||||||
<version>1.0.8</version>
|
<version>1.0.9</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- Lions User Manager Client - Module réutilisable de gestion d'utilisateurs Keycloak -->
|
<!-- Lions User Manager Client - Module réutilisable de gestion d'utilisateurs Keycloak -->
|
||||||
|
|||||||
@@ -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>
|
||||||
@@ -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>
|
||||||
@@ -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>
|
||||||
@@ -650,6 +650,48 @@
|
|||||||
</div>
|
</div>
|
||||||
</p:fieldset>
|
</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 -->
|
<!-- SECTION 7 : MISSION & ACTIVITÉS -->
|
||||||
<!-- ═══════════════════════════════════════════════════════════════ -->
|
<!-- ═══════════════════════════════════════════════════════════════ -->
|
||||||
|
|||||||
@@ -25,15 +25,10 @@ class ViewPathsConsistencyTest {
|
|||||||
"REDIRECT_SUFFIX", "ROOT", "INDEX");
|
"REDIRECT_SUFFIX", "ROOT", "INDEX");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Pages référencées par le code mais pas encore implémentées (dette pré-Sprint 12).
|
* 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.
|
||||||
* <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.
|
|
||||||
*/
|
*/
|
||||||
private static final java.util.Set<String> KNOWN_MISSING_PAGES = java.util.Set.of(
|
private static final java.util.Set<String> KNOWN_MISSING_PAGES = java.util.Set.of();
|
||||||
"EVENEMENT_BILAN_DETAIL",
|
|
||||||
"ADMIN_PARAMETRES",
|
|
||||||
"MEMBRE_PARAMETRES");
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@DisplayName("Chaque constante ViewPaths pointe vers un .xhtml existant en classpath")
|
@DisplayName("Chaque constante ViewPaths pointe vers un .xhtml existant en classpath")
|
||||||
|
|||||||
Reference in New Issue
Block a user