Configure Maven repository for unionflow-server-api dependency
This commit is contained in:
@@ -0,0 +1,775 @@
|
||||
<!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">Configuration Système - UnionFlow</ui:define>
|
||||
|
||||
<ui:define name="content">
|
||||
<!-- En-tête -->
|
||||
<div class="grid">
|
||||
<div class="col-12">
|
||||
<div class="card">
|
||||
<div class="flex align-items-center justify-content-between">
|
||||
<div>
|
||||
<h3 class="mb-2">
|
||||
<i class="pi pi-cog text-purple-500 mr-2"></i>
|
||||
Configuration Système
|
||||
</h3>
|
||||
<p class="text-600 m-0">Paramètres globaux • Sécurité • Intégrations • Performance • #{configBean.derniereModification}</p>
|
||||
</div>
|
||||
<div class="flex gap-2">
|
||||
<p:commandButton value="Sauvegarder configuration"
|
||||
icon="pi pi-save"
|
||||
styleClass="ui-button-success"
|
||||
action="#{configBean.sauvegarderTout}" />
|
||||
<p:commandButton value="Réinitialiser"
|
||||
icon="pi pi-refresh"
|
||||
styleClass="ui-button-outlined ui-button-warning"
|
||||
onclick="return confirm('Réinitialiser toute la configuration ?');"
|
||||
action="#{configBean.reinitialiser}" />
|
||||
<p:commandButton value="Exporter config"
|
||||
icon="pi pi-download"
|
||||
styleClass="ui-button-outlined ui-button-secondary"
|
||||
action="#{configBean.exporterConfiguration}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Statut système -->
|
||||
<div class="grid">
|
||||
<div class="col-12 md:col-3">
|
||||
<div class="card bg-green-100 border-left-3 border-green-500">
|
||||
<div class="flex justify-content-between">
|
||||
<div>
|
||||
<div class="text-green-900 font-bold text-2xl">#{configBean.statutSysteme}</div>
|
||||
<div class="text-green-700">Statut Système</div>
|
||||
</div>
|
||||
<div class="bg-green-500 text-white border-round text-center"
|
||||
style="width: 3rem; height: 3rem; line-height: 3rem;">
|
||||
<i class="pi pi-check-circle text-xl"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12 md:col-3">
|
||||
<div class="card bg-blue-100 border-left-3 border-blue-500">
|
||||
<div class="flex justify-content-between">
|
||||
<div>
|
||||
<div class="text-blue-900 font-bold text-2xl">#{configBean.versionApplication}</div>
|
||||
<div class="text-blue-700">Version Application</div>
|
||||
</div>
|
||||
<div class="bg-blue-500 text-white border-round text-center"
|
||||
style="width: 3rem; height: 3rem; line-height: 3rem;">
|
||||
<i class="pi pi-code text-xl"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12 md:col-3">
|
||||
<div class="card bg-orange-100 border-left-3 border-orange-500">
|
||||
<div class="flex justify-content-between">
|
||||
<div>
|
||||
<div class="text-orange-900 font-bold text-2xl">#{configBean.utilisateursConnectes}</div>
|
||||
<div class="text-orange-700">Utilisateurs En Ligne</div>
|
||||
</div>
|
||||
<div class="bg-orange-500 text-white border-round text-center"
|
||||
style="width: 3rem; height: 3rem; line-height: 3rem;">
|
||||
<i class="pi pi-users text-xl"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12 md:col-3">
|
||||
<div class="card bg-purple-100 border-left-3 border-purple-500">
|
||||
<div class="flex justify-content-between">
|
||||
<div>
|
||||
<div class="text-purple-900 font-bold text-2xl">#{configBean.espaceDisque}</div>
|
||||
<div class="text-purple-700">Espace Utilisé</div>
|
||||
</div>
|
||||
<div class="bg-purple-500 text-white border-round text-center"
|
||||
style="width: 3rem; height: 3rem; line-height: 3rem;">
|
||||
<i class="pi pi-database text-xl"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Configuration par onglets -->
|
||||
<div class="card">
|
||||
<p:tabView>
|
||||
<!-- Paramètres Généraux -->
|
||||
<p:tab title="🏢 Général">
|
||||
<h:form id="formGeneral">
|
||||
<div class="ui-fluid">
|
||||
<div class="grid">
|
||||
<div class="col-12 md:col-6">
|
||||
<div class="card">
|
||||
<h5>Informations Application</h5>
|
||||
|
||||
<div class="field">
|
||||
<p:outputLabel for="nomApplication" value="Nom de l'application" />
|
||||
<p:inputText id="nomApplication" value="#{configBean.config.nomApplication}" />
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<p:outputLabel for="description" value="Description" />
|
||||
<p:inputTextarea id="description" value="#{configBean.config.description}" rows="3" />
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<p:outputLabel for="organisation" value="Organisation" />
|
||||
<p:inputText id="organisation" value="#{configBean.config.organisation}" />
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<p:outputLabel for="siteWeb" value="Site web" />
|
||||
<p:inputText id="siteWeb" value="#{configBean.config.siteWeb}" placeholder="https://..." />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12 md:col-6">
|
||||
<div class="card">
|
||||
<h5>Paramètres Régionaux</h5>
|
||||
|
||||
<div class="field">
|
||||
<p:outputLabel for="langue" value="Langue par défaut" />
|
||||
<p:selectOneMenu id="langue" value="#{configBean.config.langue}">
|
||||
<f:selectItem itemLabel="Français" itemValue="fr" />
|
||||
<f:selectItem itemLabel="English" itemValue="en" />
|
||||
<f:selectItem itemLabel="العربية" itemValue="ar" />
|
||||
<f:selectItem itemLabel="Wolof" itemValue="wo" />
|
||||
</p:selectOneMenu>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<p:outputLabel for="fuseau" value="Fuseau horaire" />
|
||||
<p:selectOneMenu id="fuseau" value="#{configBean.config.fuseauHoraire}">
|
||||
<f:selectItem itemLabel="GMT (UTC+0)" itemValue="GMT" />
|
||||
<f:selectItem itemLabel="WAT (UTC+1)" itemValue="WAT" />
|
||||
<f:selectItem itemLabel="CET (UTC+1)" itemValue="CET" />
|
||||
</p:selectOneMenu>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<p:outputLabel for="devise" value="Devise" />
|
||||
<p:selectOneMenu id="devise" value="#{configBean.config.devise}">
|
||||
<f:selectItem itemLabel="FCFA (XOF)" itemValue="XOF" />
|
||||
<f:selectItem itemLabel="Euro (EUR)" itemValue="EUR" />
|
||||
<f:selectItem itemLabel="Dollar (USD)" itemValue="USD" />
|
||||
</p:selectOneMenu>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<p:outputLabel for="formatDate" value="Format de date" />
|
||||
<p:selectOneMenu id="formatDate" value="#{configBean.config.formatDate}">
|
||||
<f:selectItem itemLabel="dd/MM/yyyy" itemValue="dd/MM/yyyy" />
|
||||
<f:selectItem itemLabel="MM/dd/yyyy" itemValue="MM/dd/yyyy" />
|
||||
<f:selectItem itemLabel="yyyy-MM-dd" itemValue="yyyy-MM-dd" />
|
||||
</p:selectOneMenu>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12">
|
||||
<div class="card">
|
||||
<h5>Options d'Interface</h5>
|
||||
|
||||
<div class="grid">
|
||||
<div class="col-12 md:col-4">
|
||||
<div class="field">
|
||||
<p:selectBooleanCheckbox id="modeNuit" value="#{configBean.config.modeNuit}" />
|
||||
<p:outputLabel for="modeNuit" value=" Mode sombre par défaut" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12 md:col-4">
|
||||
<div class="field">
|
||||
<p:selectBooleanCheckbox id="notificationsDesktop" value="#{configBean.config.notificationsDesktop}" />
|
||||
<p:outputLabel for="notificationsDesktop" value=" Notifications desktop" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12 md:col-4">
|
||||
<div class="field">
|
||||
<p:selectBooleanCheckbox id="animationsUI" value="#{configBean.config.animationsUI}" />
|
||||
<p:outputLabel for="animationsUI" value=" Animations d'interface" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</h:form>
|
||||
</p:tab>
|
||||
|
||||
<!-- Configuration Email -->
|
||||
<p:tab title="📧 Email">
|
||||
<h:form id="formEmail">
|
||||
<div class="ui-fluid">
|
||||
<div class="grid">
|
||||
<div class="col-12 md:col-6">
|
||||
<div class="card">
|
||||
<h5>Serveur SMTP</h5>
|
||||
|
||||
<div class="field">
|
||||
<p:outputLabel for="smtpHost" value="Serveur SMTP" />
|
||||
<p:inputText id="smtpHost" value="#{configBean.emailConfig.smtpHost}"
|
||||
placeholder="smtp.gmail.com" />
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<p:outputLabel for="smtpPort" value="Port" />
|
||||
<p:inputNumber id="smtpPort" value="#{configBean.emailConfig.smtpPort}"
|
||||
symbol="" placeholder="587" />
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<p:outputLabel for="smtpUsername" value="Nom d'utilisateur" />
|
||||
<p:inputText id="smtpUsername" value="#{configBean.emailConfig.smtpUsername}" />
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<p:outputLabel for="smtpPassword" value="Mot de passe" />
|
||||
<p:password id="smtpPassword" value="#{configBean.emailConfig.smtpPassword}"
|
||||
feedback="false" />
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<p:selectBooleanCheckbox id="smtpSSL" value="#{configBean.emailConfig.smtpSSL}" />
|
||||
<p:outputLabel for="smtpSSL" value=" Utiliser SSL/TLS" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12 md:col-6">
|
||||
<div class="card">
|
||||
<h5>Configuration Email</h5>
|
||||
|
||||
<div class="field">
|
||||
<p:outputLabel for="emailExpediteur" value="Email expéditeur" />
|
||||
<p:inputText id="emailExpediteur" value="#{configBean.emailConfig.emailExpediteur}"
|
||||
placeholder="noreply@unionflow.com" />
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<p:outputLabel for="nomExpediteur" value="Nom expéditeur" />
|
||||
<p:inputText id="nomExpediteur" value="#{configBean.emailConfig.nomExpediteur}"
|
||||
placeholder="UnionFlow System" />
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<p:outputLabel for="emailAdmin" value="Email administrateur" />
|
||||
<p:inputText id="emailAdmin" value="#{configBean.emailConfig.emailAdmin}" />
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<p:outputLabel for="signatureEmail" value="Signature email" />
|
||||
<p:inputTextarea id="signatureEmail" value="#{configBean.emailConfig.signature}"
|
||||
rows="4" placeholder="Signature automatique..." />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<h5>Test de Configuration</h5>
|
||||
|
||||
<div class="field">
|
||||
<p:outputLabel for="emailTest" value="Email de test" />
|
||||
<p:inputText id="emailTest" value="#{configBean.emailTest}"
|
||||
placeholder="test@example.com" />
|
||||
</div>
|
||||
|
||||
<p:commandButton value="Envoyer email de test"
|
||||
icon="pi pi-send"
|
||||
styleClass="ui-button-outlined ui-button-info w-full"
|
||||
action="#{configBean.envoyerEmailTest}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</h:form>
|
||||
</p:tab>
|
||||
|
||||
<!-- Sécurité -->
|
||||
<p:tab title="🔒 Sécurité">
|
||||
<h:form id="formSecurite">
|
||||
<div class="ui-fluid">
|
||||
<div class="grid">
|
||||
<div class="col-12 md:col-6">
|
||||
<div class="card">
|
||||
<h5>Politique de Mots de Passe</h5>
|
||||
|
||||
<div class="field">
|
||||
<p:outputLabel for="longueurMinMdp" value="Longueur minimale" />
|
||||
<p:inputNumber id="longueurMinMdp" value="#{configBean.securityConfig.longueurMinMdp}"
|
||||
symbol="" min="6" max="20" />
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<p:selectBooleanCheckbox id="majusculesRequises" value="#{configBean.securityConfig.majusculesRequises}" />
|
||||
<p:outputLabel for="majusculesRequises" value=" Majuscules obligatoires" />
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<p:selectBooleanCheckbox id="chiffresRequis" value="#{configBean.securityConfig.chiffresRequis}" />
|
||||
<p:outputLabel for="chiffresRequis" value=" Chiffres obligatoires" />
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<p:selectBooleanCheckbox id="caracteresSpeciaux" value="#{configBean.securityConfig.caracteresSpeciaux}" />
|
||||
<p:outputLabel for="caracteresSpeciaux" value=" Caractères spéciaux obligatoires" />
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<p:outputLabel for="expirationMdp" value="Expiration (jours)" />
|
||||
<p:inputNumber id="expirationMdp" value="#{configBean.securityConfig.expirationMdp}"
|
||||
symbol="" min="0" max="365" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12 md:col-6">
|
||||
<div class="card">
|
||||
<h5>Sessions et Connexions</h5>
|
||||
|
||||
<div class="field">
|
||||
<p:outputLabel for="dureeSession" value="Durée session (minutes)" />
|
||||
<p:inputNumber id="dureeSession" value="#{configBean.securityConfig.dureeSession}"
|
||||
symbol="" min="15" max="1440" />
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<p:outputLabel for="tentativesMax" value="Tentatives connexion max" />
|
||||
<p:inputNumber id="tentativesMax" value="#{configBean.securityConfig.tentativesMax}"
|
||||
symbol="" min="3" max="10" />
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<p:outputLabel for="blocageDuree" value="Durée blocage (minutes)" />
|
||||
<p:inputNumber id="blocageDuree" value="#{configBean.securityConfig.blocageDuree}"
|
||||
symbol="" min="5" max="1440" />
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<p:selectBooleanCheckbox id="connexionsMultiples" value="#{configBean.securityConfig.connexionsMultiples}" />
|
||||
<p:outputLabel for="connexionsMultiples" value=" Autoriser connexions multiples" />
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<p:selectBooleanCheckbox id="doubleAuthentification" value="#{configBean.securityConfig.doubleAuthentification}" />
|
||||
<p:outputLabel for="doubleAuthentification" value=" Double authentification (2FA)" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12">
|
||||
<div class="card">
|
||||
<h5>Surveillance et Audit</h5>
|
||||
|
||||
<div class="grid">
|
||||
<div class="col-12 md:col-4">
|
||||
<div class="field">
|
||||
<p:selectBooleanCheckbox id="logConnexions" value="#{configBean.securityConfig.logConnexions}" />
|
||||
<p:outputLabel for="logConnexions" value=" Journaliser les connexions" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12 md:col-4">
|
||||
<div class="field">
|
||||
<p:selectBooleanCheckbox id="logActions" value="#{configBean.securityConfig.logActions}" />
|
||||
<p:outputLabel for="logActions" value=" Journaliser les actions" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12 md:col-4">
|
||||
<div class="field">
|
||||
<p:selectBooleanCheckbox id="alertesSuspectes" value="#{configBean.securityConfig.alertesSuspectes}" />
|
||||
<p:outputLabel for="alertesSuspectes" value=" Alertes activités suspectes" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</h:form>
|
||||
</p:tab>
|
||||
|
||||
<!-- Intégrations -->
|
||||
<p:tab title="🔗 Intégrations">
|
||||
<h:form id="formIntegrations">
|
||||
<div class="ui-fluid">
|
||||
<div class="grid">
|
||||
<div class="col-12 md:col-6">
|
||||
<div class="card">
|
||||
<h5>Wave Money API</h5>
|
||||
|
||||
<div class="field">
|
||||
<p:selectBooleanCheckbox id="waveActive" value="#{configBean.waveConfig.actif}" />
|
||||
<p:outputLabel for="waveActive" value=" Activer Wave Money" />
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<p:outputLabel for="waveApiKey" value="Clé API" />
|
||||
<p:password id="waveApiKey" value="#{configBean.waveConfig.apiKey}"
|
||||
feedback="false" />
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<p:outputLabel for="waveSecretKey" value="Clé secrète" />
|
||||
<p:password id="waveSecretKey" value="#{configBean.waveConfig.secretKey}"
|
||||
feedback="false" />
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<p:outputLabel for="waveEnvironnement" value="Environnement" />
|
||||
<p:selectOneMenu id="waveEnvironnement" value="#{configBean.waveConfig.environnement}">
|
||||
<f:selectItem itemLabel="Test (Sandbox)" itemValue="TEST" />
|
||||
<f:selectItem itemLabel="Production" itemValue="PROD" />
|
||||
</p:selectOneMenu>
|
||||
</div>
|
||||
|
||||
<p:commandButton value="Tester la connexion"
|
||||
icon="pi pi-link"
|
||||
styleClass="ui-button-outlined ui-button-info w-full"
|
||||
action="#{configBean.testerWave}" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12 md:col-6">
|
||||
<div class="card">
|
||||
<h5>SMS / WhatsApp</h5>
|
||||
|
||||
<div class="field">
|
||||
<p:outputLabel for="fournisseurSMS" value="Fournisseur SMS" />
|
||||
<p:selectOneMenu id="fournisseurSMS" value="#{configBean.smsConfig.fournisseur}">
|
||||
<f:selectItem itemLabel="Twilio" itemValue="TWILIO" />
|
||||
<f:selectItem itemLabel="Orange SMS" itemValue="ORANGE" />
|
||||
<f:selectItem itemLabel="Sonatel" itemValue="SONATEL" />
|
||||
<f:selectItem itemLabel="Custom API" itemValue="CUSTOM" />
|
||||
</p:selectOneMenu>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<p:outputLabel for="smsApiKey" value="Clé API SMS" />
|
||||
<p:password id="smsApiKey" value="#{configBean.smsConfig.apiKey}"
|
||||
feedback="false" />
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<p:outputLabel for="expediteurSMS" value="ID expéditeur" />
|
||||
<p:inputText id="expediteurSMS" value="#{configBean.smsConfig.expediteur}"
|
||||
placeholder="UnionFlow" />
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<p:selectBooleanCheckbox id="whatsappActive" value="#{configBean.smsConfig.whatsappActif}" />
|
||||
<p:outputLabel for="whatsappActive" value=" Activer WhatsApp Business" />
|
||||
</div>
|
||||
|
||||
<p:commandButton value="Tester SMS"
|
||||
icon="pi pi-comment"
|
||||
styleClass="ui-button-outlined ui-button-success w-full"
|
||||
action="#{configBean.testerSMS}" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12">
|
||||
<div class="card">
|
||||
<h5>APIs Externes</h5>
|
||||
|
||||
<div class="grid">
|
||||
<div class="col-12 md:col-4">
|
||||
<h6>Géolocalisation</h6>
|
||||
<div class="field">
|
||||
<p:outputLabel for="googleMapsAPI" value="Google Maps API" />
|
||||
<p:password id="googleMapsAPI" value="#{configBean.apisConfig.googleMapsKey}"
|
||||
feedback="false" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12 md:col-4">
|
||||
<h6>Stockage Cloud</h6>
|
||||
<div class="field">
|
||||
<p:outputLabel for="cloudProvider" value="Fournisseur" />
|
||||
<p:selectOneMenu id="cloudProvider" value="#{configBean.apisConfig.cloudProvider}">
|
||||
<f:selectItem itemLabel="Local" itemValue="LOCAL" />
|
||||
<f:selectItem itemLabel="AWS S3" itemValue="AWS" />
|
||||
<f:selectItem itemLabel="Google Cloud" itemValue="GCP" />
|
||||
<f:selectItem itemLabel="Azure" itemValue="AZURE" />
|
||||
</p:selectOneMenu>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12 md:col-4">
|
||||
<h6>Analytics</h6>
|
||||
<div class="field">
|
||||
<p:outputLabel for="googleAnalytics" value="Google Analytics ID" />
|
||||
<p:inputText id="googleAnalytics" value="#{configBean.apisConfig.googleAnalyticsId}"
|
||||
placeholder="GA-XXXXXXXXX" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</h:form>
|
||||
</p:tab>
|
||||
|
||||
<!-- Performance -->
|
||||
<p:tab title="⚡ Performance">
|
||||
<h:form id="formPerformance">
|
||||
<div class="ui-fluid">
|
||||
<div class="grid">
|
||||
<div class="col-12 md:col-6">
|
||||
<div class="card">
|
||||
<h5>Cache et Mémoire</h5>
|
||||
|
||||
<div class="field">
|
||||
<p:selectBooleanCheckbox id="cacheActive" value="#{configBean.perfConfig.cacheActif}" />
|
||||
<p:outputLabel for="cacheActive" value=" Activer le cache" />
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<p:outputLabel for="dureeCacheDefault" value="Durée cache par défaut (minutes)" />
|
||||
<p:inputNumber id="dureeCacheDefault" value="#{configBean.perfConfig.dureeCacheDefault}"
|
||||
symbol="" min="1" max="1440" />
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<p:outputLabel for="tailleCacheMax" value="Taille cache max (MB)" />
|
||||
<p:inputNumber id="tailleCacheMax" value="#{configBean.perfConfig.tailleCacheMax}"
|
||||
symbol="" min="10" max="1024" />
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<p:outputLabel for="compressionActive" value="Compression" />
|
||||
<p:selectBooleanCheckbox id="compressionActive" value="#{configBean.perfConfig.compressionActive}" />
|
||||
<p:outputLabel for="compressionActive" value=" Activer compression GZIP" />
|
||||
</div>
|
||||
|
||||
<p:commandButton value="Vider le cache"
|
||||
icon="pi pi-trash"
|
||||
styleClass="ui-button-outlined ui-button-warning w-full"
|
||||
action="#{configBean.viderCache}" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12 md:col-6">
|
||||
<div class="card">
|
||||
<h5>Base de Données</h5>
|
||||
|
||||
<div class="field">
|
||||
<p:outputLabel for="poolConnexionsMin" value="Pool connexions min" />
|
||||
<p:inputNumber id="poolConnexionsMin" value="#{configBean.perfConfig.poolConnexionsMin}"
|
||||
symbol="" min="1" max="50" />
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<p:outputLabel for="poolConnexionsMax" value="Pool connexions max" />
|
||||
<p:inputNumber id="poolConnexionsMax" value="#{configBean.perfConfig.poolConnexionsMax}"
|
||||
symbol="" min="5" max="200" />
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<p:outputLabel for="timeoutRequete" value="Timeout requête (secondes)" />
|
||||
<p:inputNumber id="timeoutRequete" value="#{configBean.perfConfig.timeoutRequete}"
|
||||
symbol="" min="5" max="300" />
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<p:selectBooleanCheckbox id="logSlowQueries" value="#{configBean.perfConfig.logSlowQueries}" />
|
||||
<p:outputLabel for="logSlowQueries" value=" Journaliser requêtes lentes" />
|
||||
</div>
|
||||
|
||||
<p:commandButton value="Optimiser base"
|
||||
icon="pi pi-cog"
|
||||
styleClass="ui-button-outlined ui-button-info w-full"
|
||||
action="#{configBean.optimiserBase}" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12">
|
||||
<div class="card">
|
||||
<h5>Monitoring en Temps Réel</h5>
|
||||
|
||||
<div class="grid">
|
||||
<div class="col-12 md:col-3">
|
||||
<div class="text-center p-3 surface-50 border-round">
|
||||
<div class="text-2xl font-bold text-blue-500 mb-2">#{configBean.cpuUsage}%</div>
|
||||
<div class="text-600">Utilisation CPU</div>
|
||||
<p:progressBar value="#{configBean.cpuUsage}" styleClass="mt-2 h-1rem" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12 md:col-3">
|
||||
<div class="text-center p-3 surface-50 border-round">
|
||||
<div class="text-2xl font-bold text-green-500 mb-2">#{configBean.memoryUsage}%</div>
|
||||
<div class="text-600">Mémoire Utilisée</div>
|
||||
<p:progressBar value="#{configBean.memoryUsage}" styleClass="mt-2 h-1rem" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12 md:col-3">
|
||||
<div class="text-center p-3 surface-50 border-round">
|
||||
<div class="text-2xl font-bold text-orange-500 mb-2">#{configBean.activeConnections}</div>
|
||||
<div class="text-600">Connexions Actives</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12 md:col-3">
|
||||
<div class="text-center p-3 surface-50 border-round">
|
||||
<div class="text-2xl font-bold text-purple-500 mb-2">#{configBean.responseTime}ms</div>
|
||||
<div class="text-600">Temps Réponse Moy.</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</h:form>
|
||||
</p:tab>
|
||||
|
||||
<!-- Maintenance -->
|
||||
<p:tab title="🔧 Maintenance">
|
||||
<h:form id="formMaintenance">
|
||||
<div class="ui-fluid">
|
||||
<div class="grid">
|
||||
<div class="col-12 md:col-6">
|
||||
<div class="card">
|
||||
<h5>Sauvegarde Automatique</h5>
|
||||
|
||||
<div class="field">
|
||||
<p:selectBooleanCheckbox id="sauvegardeAuto" value="#{configBean.maintenanceConfig.sauvegardeAuto}" />
|
||||
<p:outputLabel for="sauvegardeAuto" value=" Sauvegarde automatique" />
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<p:outputLabel for="frequenceSauvegarde" value="Fréquence" />
|
||||
<p:selectOneMenu id="frequenceSauvegarde" value="#{configBean.maintenanceConfig.frequenceSauvegarde}">
|
||||
<f:selectItem itemLabel="Quotidienne" itemValue="DAILY" />
|
||||
<f:selectItem itemLabel="Hebdomadaire" itemValue="WEEKLY" />
|
||||
<f:selectItem itemLabel="Mensuelle" itemValue="MONTHLY" />
|
||||
</p:selectOneMenu>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<p:outputLabel for="heureSauvegarde" value="Heure de sauvegarde" />
|
||||
<p:calendar id="heureSauvegarde" value="#{configBean.maintenanceConfig.heureSauvegarde}"
|
||||
pattern="HH:mm" timeOnly="true" />
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<p:outputLabel for="retentionSauvegardes" value="Rétention (jours)" />
|
||||
<p:inputNumber id="retentionSauvegardes" value="#{configBean.maintenanceConfig.retentionSauvegardes}"
|
||||
symbol="" min="7" max="365" />
|
||||
</div>
|
||||
|
||||
<p:commandButton value="Sauvegarder maintenant"
|
||||
icon="pi pi-save"
|
||||
styleClass="ui-button-success w-full"
|
||||
action="#{configBean.sauvegarderMaintenant}" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12 md:col-6">
|
||||
<div class="card">
|
||||
<h5>Nettoyage et Maintenance</h5>
|
||||
|
||||
<div class="field">
|
||||
<p:selectBooleanCheckbox id="nettoyageAuto" value="#{configBean.maintenanceConfig.nettoyageAuto}" />
|
||||
<p:outputLabel for="nettoyageAuto" value=" Nettoyage automatique des logs" />
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<p:outputLabel for="retentionLogs" value="Rétention logs (jours)" />
|
||||
<p:inputNumber id="retentionLogs" value="#{configBean.maintenanceConfig.retentionLogs}"
|
||||
symbol="" min="7" max="90" />
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<p:selectBooleanCheckbox id="optimisationAuto" value="#{configBean.maintenanceConfig.optimisationAuto}" />
|
||||
<p:outputLabel for="optimisationAuto" value=" Optimisation automatique des tables" />
|
||||
</div>
|
||||
|
||||
<div class="flex gap-2 mt-3">
|
||||
<p:commandButton value="Nettoyer logs"
|
||||
icon="pi pi-trash"
|
||||
styleClass="ui-button-outlined ui-button-warning"
|
||||
action="#{configBean.nettoyerLogs}" />
|
||||
<p:commandButton value="Optimiser DB"
|
||||
icon="pi pi-cog"
|
||||
styleClass="ui-button-outlined ui-button-info"
|
||||
action="#{configBean.optimiserDB}" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<h5>Mode Maintenance</h5>
|
||||
|
||||
<div class="surface-50 p-3 border-round mb-3">
|
||||
<div class="flex align-items-center">
|
||||
<i class="pi pi-info-circle text-blue-500 mr-2"></i>
|
||||
<div class="text-600">
|
||||
Le mode maintenance bloque l'accès utilisateur pendant les opérations critiques.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<p:outputLabel for="messageMaintenance" value="Message de maintenance" />
|
||||
<p:inputTextarea id="messageMaintenance" value="#{configBean.maintenanceConfig.messageMaintenance}"
|
||||
rows="3" placeholder="Le système est temporairement indisponible..." />
|
||||
</div>
|
||||
|
||||
<p:commandButton value="#{configBean.maintenanceConfig.modeMaintenanceActif ? 'Désactiver' : 'Activer'} maintenance"
|
||||
icon="pi #{configBean.maintenanceConfig.modeMaintenanceActif ? 'pi-play' : 'pi-pause'}"
|
||||
styleClass="ui-button-#{configBean.maintenanceConfig.modeMaintenanceActif ? 'success' : 'danger'} w-full"
|
||||
action="#{configBean.toggleModeMaintenance}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</h:form>
|
||||
</p:tab>
|
||||
</p:tabView>
|
||||
</div>
|
||||
|
||||
<!-- Actions globales -->
|
||||
<div class="card">
|
||||
<div class="flex justify-content-center gap-3">
|
||||
<p:commandButton value="💾 Sauvegarder toute la configuration"
|
||||
icon="pi pi-save"
|
||||
styleClass="ui-button-success"
|
||||
action="#{configBean.sauvegarderTout}" />
|
||||
<p:commandButton value="🔄 Redémarrer application"
|
||||
icon="pi pi-refresh"
|
||||
styleClass="ui-button-outlined ui-button-warning"
|
||||
onclick="return confirm('Redémarrer l\\'application ? Tous les utilisateurs seront déconnectés.');"
|
||||
action="#{configBean.redemarrerApplication}" />
|
||||
<p:commandButton value="📋 Voir logs système"
|
||||
icon="pi pi-list"
|
||||
styleClass="ui-button-outlined ui-button-info"
|
||||
action="#{configBean.voirLogs}" />
|
||||
<p:commandButton value="📊 Rapport de santé"
|
||||
icon="pi pi-chart-line"
|
||||
styleClass="ui-button-outlined ui-button-secondary"
|
||||
action="#{configBean.genererRapportSante}" />
|
||||
</div>
|
||||
</div>
|
||||
</ui:define>
|
||||
|
||||
</ui:composition>
|
||||
Reference in New Issue
Block a user