Files

727 lines
46 KiB
HTML

<!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">
<div class="ui-fluid">
<!-- En-tête principal avec disposition Freya stricte -->
<div class="card">
<div class="formgrid grid">
<div class="field col-12 lg:col-8">
<h2 class="text-primary font-bold mb-2">
<i class="pi pi-cog text-purple-500 mr-2"></i>
Configuration Système
</h2>
<p class="text-600 mt-0">
Paramètres globaux et administration de la plateforme UnionFlow •
<span class="font-semibold">Version #{configurationBean.versionSysteme}</span>
<span class="font-semibold text-green-600">Environnement #{configurationBean.environnement}</span>
</p>
</div>
<div class="field col-12 lg:col-4 text-right">
<h:form id="formActionsEntete">
<p:commandButton icon="pi pi-save"
title="Sauvegarder configuration"
styleClass="ui-button-success ui-button-sm mr-3"
action="#{configurationBean.sauvegarderConfiguration}" />
<p:commandButton icon="pi pi-download"
title="Exporter"
styleClass="ui-button-info ui-button-outlined ui-button-sm mr-3"
action="#{configurationBean.exporterConfiguration}" />
<p:commandButton icon="pi pi-refresh"
title="Redémarrer services"
styleClass="ui-button-warning ui-button-outlined ui-button-sm"
onclick="return confirm('Redémarrer les services système ?');"
action="#{configurationBean.redemarrerServices}" />
</h:form>
</div>
</div>
</div>
<!-- KPIs Système avec grille Freya stricte -->
<div class="formgrid grid">
<!-- KPI 1: Statut Système -->
<ui:include src="/templates/components/cards/kpi-card.xhtml">
<ui:param name="title" value="Statut Système" />
<ui:param name="value" value="Opérationnel" />
<ui:param name="icon" value="pi-check-circle" />
<ui:param name="iconColor" value="green-600" />
<ui:param name="statusIcon" value="pi-circle-fill" />
<ui:param name="statusLabel" value="Uptime" />
<ui:param name="statusValue" value="#{configurationBean.tempsActivite}" />
<ui:param name="showProgress" value="false" />
</ui:include>
<!-- KPI 2: Utilisateurs Connectés -->
<ui:include src="/templates/components/cards/kpi-card.xhtml">
<ui:param name="title" value="Utilisateurs Actifs" />
<ui:param name="value" value="#{configurationBean.utilisateursConnectes}" />
<ui:param name="icon" value="pi-users" />
<ui:param name="iconColor" value="blue-600" />
<ui:param name="statusIcon" value="pi-clock" />
<ui:param name="statusLabel" value="Sessions" />
<ui:param name="statusValue" value="#{configurationBean.sessionsActives} actives" />
<ui:param name="showProgress" value="false" />
</ui:include>
<!-- KPI 3: Performance Système -->
<ui:include src="/templates/components/cards/kpi-card.xhtml">
<ui:param name="title" value="Performance" />
<ui:param name="value" value="CPU #{configurationBean.cpuUtilisation}%" />
<ui:param name="icon" value="pi-chart-line" />
<ui:param name="iconColor" value="orange-600" />
<ui:param name="progressValue" value="#{configurationBean.cpuUtilisation}" />
<ui:param name="noDataLabel" value="Mémoire: #{configurationBean.memoireUtilisee}%" />
<ui:param name="showGrowth" value="false" />
</ui:include>
<!-- KPI 4: Dernière Sauvegarde -->
<ui:include src="/templates/components/cards/kpi-card.xhtml">
<ui:param name="title" value="Dernière Sauvegarde" />
<ui:param name="value" value="#{configurationBean.derniereSauvegarde}" />
<ui:param name="icon" value="pi-save" />
<ui:param name="iconColor" value="purple-600" />
<ui:param name="statusIcon" value="pi-database" />
<ui:param name="statusLabel" value="Auto" />
<ui:param name="statusValue" value="#{configurationBean.frequenceSauvegarde}" />
<ui:param name="showProgress" value="false" />
</ui:include>
</div>
<!-- Configuration Générale avec structure Freya -->
<div class="card">
<h5 class="mb-3">
<i class="pi pi-cog text-purple-500 mr-2"></i>
Configuration Générale
</h5>
<h:form id="formConfigGenerale">
<div class="formgrid grid">
<div class="field col-12 md:col-6 lg:col-4">
<label for="nomApplication" class="block text-900 font-medium mb-2">Nom de l'Application</label>
<p:inputText id="nomApplication"
value="#{configurationBean.nomApplication}"
placeholder="UnionFlow"
styleClass="w-full" />
</div>
<div class="field col-12 md:col-6 lg:col-4">
<label for="version" class="block text-900 font-medium mb-2">Version Système</label>
<p:inputText id="version"
value="#{configurationBean.versionSysteme}"
readonly="true"
styleClass="w-full" />
</div>
<div class="field col-12 md:col-6 lg:col-4">
<label for="environnement" class="block text-900 font-medium mb-2">Environnement</label>
<p:selectOneMenu id="environnement"
value="#{configurationBean.environnement}"
styleClass="w-full">
<f:selectItem itemLabel="Développement" itemValue="DEV" />
<f:selectItem itemLabel="Test" itemValue="TEST" />
<f:selectItem itemLabel="Production" itemValue="PROD" />
</p:selectOneMenu>
</div>
<div class="field col-12 md:col-6 lg:col-4">
<label for="timezone" class="block text-900 font-medium mb-2">Fuseau Horaire</label>
<p:selectOneMenu id="timezone"
value="#{configurationBean.timezone}"
styleClass="w-full">
<f:selectItem itemLabel="GMT (Greenwich)" itemValue="GMT" />
<f:selectItem itemLabel="CET (Europe Central)" itemValue="CET" />
<f:selectItem itemLabel="WAT (Afrique Ouest)" itemValue="WAT" />
</p:selectOneMenu>
</div>
<div class="field col-12 md:col-6 lg:col-4">
<label for="langue" class="block text-900 font-medium mb-2">Langue par Défaut</label>
<p:selectOneMenu id="langue"
value="#{configurationBean.langueDefaut}"
styleClass="w-full">
<f:selectItem itemLabel="Français" itemValue="fr" />
<f:selectItem itemLabel="English" itemValue="en" />
<f:selectItem itemLabel="العربية" itemValue="ar" />
</p:selectOneMenu>
</div>
<div class="field col-12 md:col-6 lg:col-4">
<label for="devise" class="block text-900 font-medium mb-2">Devise par Défaut</label>
<p:selectOneMenu id="devise"
value="#{configurationBean.deviseDefaut}"
styleClass="w-full">
<f:selectItem itemLabel="FCFA (Franc CFA)" itemValue="XOF" />
<f:selectItem itemLabel="EUR (Euro)" itemValue="EUR" />
<f:selectItem itemLabel="USD (Dollar)" itemValue="USD" />
<f:selectItem itemLabel="GHS (Cédi Ghana)" itemValue="GHS" />
<f:selectItem itemLabel="NGN (Naira Nigeria)" itemValue="NGN" />
</p:selectOneMenu>
</div>
<div class="field col-12 md:col-6">
<label for="urlBase" class="block text-900 font-medium mb-2">URL Base Application</label>
<p:inputText id="urlBase"
value="#{configurationBean.urlBaseApplication}"
placeholder="https://unionflow.app"
styleClass="w-full" />
</div>
<div class="field col-12 md:col-6">
<label for="organisationPrincipale" class="block text-900 font-medium mb-2">Organisation Principale</label>
<p:inputText id="organisationPrincipale"
value="#{configurationBean.organisationPrincipale}"
placeholder="Lions Clubs Afrique de l'Ouest"
styleClass="w-full" />
</div>
</div>
<div class="flex justify-content-end mt-3">
<p:commandButton value="Appliquer"
icon="pi pi-check"
styleClass="ui-button-success ui-button-sm"
action="#{configurationBean.appliquerConfigGenerale}"
update="@form" />
</div>
</h:form>
</div>
<!-- Configuration Base de Données avec structure Freya -->
<div class="formgrid grid">
<div class="field col-12 lg:col-6">
<div class="card">
<h5 class="mb-3">
<i class="pi pi-database text-teal-500 mr-2"></i>
Base de Données
</h5>
<h:form id="formConfigBDD">
<div class="formgrid grid">
<div class="field col-12 md:col-6">
<label for="dbType" class="block text-900 font-medium mb-2">Type de Base</label>
<p:selectOneMenu id="dbType"
value="#{configurationBean.typeBDD}"
styleClass="w-full">
<f:selectItem itemLabel="PostgreSQL" itemValue="postgresql" />
<f:selectItem itemLabel="MySQL" itemValue="mysql" />
<f:selectItem itemLabel="H2 Database" itemValue="h2" />
</p:selectOneMenu>
</div>
<div class="field col-12 md:col-6">
<label for="dbHost" class="block text-900 font-medium mb-2">Serveur</label>
<p:inputText id="dbHost"
value="#{configurationBean.serveurBDD}"
placeholder="localhost"
styleClass="w-full" />
</div>
<div class="field col-12 md:col-6">
<label for="dbPort" class="block text-900 font-medium mb-2">Port</label>
<p:inputNumber id="dbPort"
value="#{configurationBean.portBDD}"
minValue="1"
maxValue="65535"
styleClass="w-full" />
</div>
<div class="field col-12 md:col-6">
<label for="dbName" class="block text-900 font-medium mb-2">Nom Base</label>
<p:inputText id="dbName"
value="#{configurationBean.nomBDD}"
placeholder="unionflow"
styleClass="w-full" />
</div>
<div class="field col-12 md:col-6">
<label for="dbUser" class="block text-900 font-medium mb-2">Utilisateur BDD</label>
<p:inputText id="dbUser"
value="#{configurationBean.utilisateurBDD}"
placeholder="unionflow_user"
styleClass="w-full" />
</div>
<div class="field col-12 md:col-6">
<label for="dbPassword" class="block text-900 font-medium mb-2">Mot de Passe BDD</label>
<p:password id="dbPassword"
value="#{configurationBean.motDePasseBDD}"
placeholder="Mot de passe sécurisé"
feedback="true"
styleClass="w-full" />
</div>
<div class="field col-12">
<div class="flex align-items-center justify-content-between">
<div>
<p:selectBooleanCheckbox id="dbSSL"
value="#{configurationBean.sslActifBDD}" />
<label for="dbSSL" class="ml-2">Connexion SSL/TLS Sécurisée</label>
</div>
<div>
<span class="text-600 text-sm">Pool: </span>
<p:inputNumber id="poolSize"
value="#{configurationBean.taillePoolConnexions}"
minValue="5"
maxValue="100"
placeholder="20"
size="3" />
</div>
</div>
</div>
</div>
<div class="flex justify-content-end gap-2 mt-3">
<p:commandButton value="Tester Connexion"
icon="pi pi-check"
styleClass="ui-button-outlined ui-button-success ui-button-sm"
action="#{configurationBean.testerConnexionBDD}"
update="@form" />
<p:commandButton value="Appliquer"
icon="pi pi-save"
styleClass="ui-button-info ui-button-sm"
action="#{configurationBean.appliquerConfigBDD}"
update="@form" />
</div>
</h:form>
</div>
</div>
<div class="field col-12 lg:col-6">
<div class="card">
<h5 class="mb-3">
<i class="pi pi-envelope text-blue-500 mr-2"></i>
Configuration Email
</h5>
<h:form id="formConfigEmail">
<div class="formgrid grid">
<div class="field col-12 md:col-6">
<label for="smtpHost" class="block text-900 font-medium mb-2">Serveur SMTP</label>
<p:inputText id="smtpHost"
value="#{configurationBean.serveurSMTP}"
placeholder="smtp.gmail.com"
styleClass="w-full" />
</div>
<div class="field col-12 md:col-6">
<label for="smtpPort" class="block text-900 font-medium mb-2">Port SMTP</label>
<p:inputNumber id="smtpPort"
value="#{configurationBean.portSMTP}"
minValue="1"
maxValue="65535"
styleClass="w-full" />
</div>
<div class="field col-12">
<label for="emailFrom" class="block text-900 font-medium mb-2">Email Expéditeur</label>
<p:inputText id="emailFrom"
value="#{configurationBean.emailExpediteur}"
placeholder="noreply@unionflow.app"
styleClass="w-full" />
</div>
<div class="field col-12">
<label for="nomExpediteur" class="block text-900 font-medium mb-2">Nom Affiché Expéditeur</label>
<p:inputText id="nomExpediteur"
value="#{configurationBean.nomExpediteur}"
placeholder="UnionFlow Notifications"
styleClass="w-full" />
</div>
<div class="field col-12 md:col-6">
<label for="smtpUser" class="block text-900 font-medium mb-2">Utilisateur SMTP</label>
<p:inputText id="smtpUser"
value="#{configurationBean.utilisateurSMTP}"
placeholder="smtp_user@gmail.com"
styleClass="w-full" />
</div>
<div class="field col-12 md:col-6">
<label for="smtpPassword" class="block text-900 font-medium mb-2">Mot de Passe SMTP</label>
<p:password id="smtpPassword"
value="#{configurationBean.motDePasseSMTP}"
placeholder="Token ou mot de passe"
styleClass="w-full" />
</div>
<div class="field col-12">
<div class="flex align-items-center justify-content-between">
<div class="flex align-items-center gap-3">
<div>
<p:selectBooleanCheckbox id="smtpAuth"
value="#{configurationBean.authentificationSMTP}" />
<label for="smtpAuth" class="ml-2">Auth SMTP</label>
</div>
<div>
<p:selectBooleanCheckbox id="smtpTLS"
value="#{configurationBean.tlsActive}" />
<label for="smtpTLS" class="ml-2">TLS/SSL</label>
</div>
</div>
<div>
<span class="text-600 text-sm mr-2">Limite/h:</span>
<p:inputNumber id="rateLimitEmail"
value="#{configurationBean.limiteTauxEmail}"
minValue="50"
maxValue="2000"
placeholder="500"
size="5" />
</div>
</div>
</div>
</div>
<div class="flex justify-content-end gap-2 mt-3">
<p:commandButton value="Tester Email"
icon="pi pi-send"
styleClass="ui-button-outlined ui-button-info ui-button-sm"
action="#{configurationBean.testerEmail}"
update="@form" />
<p:commandButton value="Appliquer"
icon="pi pi-save"
styleClass="ui-button-success ui-button-sm"
action="#{configurationBean.appliquerConfigEmail}"
update="@form" />
</div>
</h:form>
</div>
</div>
</div>
<!-- Configuration Sécurité avec structure Freya -->
<div class="card">
<h5 class="mb-3">
<i class="pi pi-shield text-red-500 mr-2"></i>
Sécurité et Authentification
</h5>
<h:form id="formConfigSecurite">
<div class="formgrid grid">
<div class="field col-12 md:col-6 lg:col-4">
<label for="sessionTimeout" class="block text-900 font-medium mb-2">Timeout Session (min)</label>
<p:inputNumber id="sessionTimeout"
value="#{configurationBean.timeoutSession}"
minValue="5"
maxValue="1440"
styleClass="w-full" />
</div>
<div class="field col-12 md:col-6 lg:col-4">
<label for="maxLoginAttempts" class="block text-900 font-medium mb-2">Tentatives Max</label>
<p:inputNumber id="maxLoginAttempts"
value="#{configurationBean.tentativesMaxConnexion}"
minValue="3"
maxValue="10"
styleClass="w-full" />
</div>
<div class="field col-12 md:col-6 lg:col-4">
<label for="complexiteMotDePasse" class="block text-900 font-medium mb-2">Complexité Mot de Passe</label>
<p:selectOneMenu id="complexiteMotDePasse"
value="#{configurationBean.complexiteMotDePasse}"
styleClass="w-full">
<f:selectItem itemLabel="Basique (8 caractères)" itemValue="BASIC" />
<f:selectItem itemLabel="Moyenne (8+ maj+min+chiffre)" itemValue="MEDIUM" />
<f:selectItem itemLabel="Forte (12+ maj+min+chiffre+symbole)" itemValue="STRONG" />
</p:selectOneMenu>
</div>
<div class="field col-12 md:col-6 lg:col-4">
<label for="dureeValiditeMDP" class="block text-900 font-medium mb-2">Validité MDP (jours)</label>
<p:inputNumber id="dureeValiditeMDP"
value="#{configurationBean.dureeValiditeMotDePasse}"
minValue="30"
maxValue="365"
placeholder="90"
styleClass="w-full" />
</div>
<div class="field col-12 md:col-6 lg:col-4">
<label for="retentionLogs" class="block text-900 font-medium mb-2">Rétention Logs (jours)</label>
<p:inputNumber id="retentionLogs"
value="#{configurationBean.retentionLogs}"
minValue="90"
maxValue="1825"
placeholder="365"
styleClass="w-full" />
</div>
</div>
<!-- Options de sécurité -->
<div class="surface-100 border-round-lg p-3 mt-3">
<h6 class="mb-3">Options de Sécurité Avancées</h6>
<div class="formgrid grid">
<div class="field col-12 md:col-6 lg:col-3">
<div class="flex align-items-center">
<p:selectBooleanCheckbox id="forcePasswordChange"
value="#{configurationBean.forcerChangementMotDePasse}" />
<label for="forcePasswordChange" class="ml-2 text-sm">Forcer changement MDP périodique</label>
</div>
</div>
<div class="field col-12 md:col-6 lg:col-3">
<div class="flex align-items-center">
<p:selectBooleanCheckbox id="enableTwoFactor"
value="#{configurationBean.authentification2FA}" />
<label for="enableTwoFactor" class="ml-2 text-sm">Authentification 2FA</label>
</div>
</div>
<div class="field col-12 md:col-6 lg:col-3">
<div class="flex align-items-center">
<p:selectBooleanCheckbox id="logSecurityEvents"
value="#{configurationBean.journaliserEvenementsSecurite}" />
<label for="logSecurityEvents" class="ml-2 text-sm">Journaliser événements sécurité</label>
</div>
</div>
<div class="field col-12 md:col-6 lg:col-3">
<div class="flex align-items-center">
<p:selectBooleanCheckbox id="chiffrementBDD"
value="#{configurationBean.chiffrementBDD}" />
<label for="chiffrementBDD" class="ml-2 text-sm">Chiffrement BDD</label>
</div>
</div>
</div>
</div>
<div class="flex justify-content-end mt-3">
<p:commandButton value="Appliquer Configuration Sécurité"
icon="pi pi-shield"
styleClass="ui-button-danger ui-button-sm"
action="#{configurationBean.appliquerConfigSecurite}"
update="@form" />
</div>
</h:form>
</div>
<!-- Monitoring Système Avancé avec grille Freya -->
<div class="formgrid grid">
<!-- Performance en temps réel -->
<div class="field col-12 lg:col-8">
<div class="card">
<div class="flex align-items-center justify-content-between mb-3">
<h5 class="m-0">
<i class="pi pi-chart-line text-cyan-500 mr-2"></i>
Monitoring Performance
</h5>
<h:form id="formActualiserMonitoring">
<p:commandButton icon="pi pi-refresh"
title="Actualiser"
styleClass="ui-button-outlined ui-button-secondary ui-button-sm"
action="#{configurationBean.actualiserMonitoring}"
update="@(.monitoring)" />
</h:form>
</div>
<div class="formgrid grid monitoring">
<div class="field col-12 md:col-6 lg:col-4">
<div class="surface-50 border-round-lg p-3 text-center">
<div class="text-500 text-sm mb-2">CPU Utilisation</div>
<div class="text-900 font-bold text-2xl mb-2 #{configurationBean.cpuUtilisationStyle}">#{configurationBean.cpuUtilisation}%</div>
<p:progressBar value="#{configurationBean.cpuUtilisation}"
showValue="false"
styleClass="surface-200"
style="height: 0.5rem;" />
<div class="text-500 text-xs mt-2">Seuil critique: 80%</div>
</div>
</div>
<div class="field col-12 md:col-6 lg:col-4">
<div class="surface-50 border-round-lg p-3 text-center">
<div class="text-500 text-sm mb-2">Mémoire RAM</div>
<div class="text-900 font-bold text-2xl mb-2">#{configurationBean.memoireUtilisee}%</div>
<p:progressBar value="#{configurationBean.memoireUtilisee}"
showValue="false"
styleClass="surface-200"
style="height: 0.5rem;" />
<div class="text-500 text-xs mt-2">#{configurationBean.memoireTotal} GB total</div>
</div>
</div>
<div class="field col-12 md:col-6 lg:col-4">
<div class="surface-50 border-round-lg p-3 text-center">
<div class="text-500 text-sm mb-2">Disque Disponible</div>
<div class="text-900 font-bold text-2xl mb-2 #{configurationBean.disqueDisponibleStyle}">#{configurationBean.disqueDisponible} GB</div>
<div class="text-500 text-xs">Min requis: 10 GB</div>
</div>
</div>
<div class="field col-12 md:col-6 lg:col-4">
<div class="surface-50 border-round-lg p-3 text-center">
<div class="text-500 text-sm mb-2">Connexions BDD</div>
<div class="text-900 font-bold text-2xl mb-2 text-teal-500">#{configurationBean.connexionsBDDActives}</div>
<div class="text-500 text-xs">Pool max: #{configurationBean.taillePoolConnexions}</div>
</div>
</div>
<div class="field col-12 md:col-6 lg:col-4">
<div class="surface-50 border-round-lg p-3 text-center">
<div class="text-500 text-sm mb-2">Queue Emails</div>
<div class="text-900 font-bold text-2xl mb-2 #{configurationBean.queueEmailsStyle}">#{configurationBean.queueEmailsEnAttente}</div>
<div class="text-500 text-xs">En attente traitement</div>
</div>
</div>
<div class="field col-12 md:col-6 lg:col-4">
<div class="surface-50 border-round-lg p-3 text-center">
<div class="text-500 text-sm mb-2">Logs Erreurs (24h)</div>
<div class="text-900 font-bold text-2xl mb-2 #{configurationBean.logsErreursStyle}">#{configurationBean.logsErreurs24h}</div>
<div class="text-500 text-xs">Dernières 24 heures</div>
</div>
</div>
</div>
<!-- Alertes système automatiques -->
<div class="surface-100 border-round-lg p-3 mt-3">
<h6 class="mb-3">Alertes Système Automatiques</h6>
<div class="formgrid grid">
<div class="field col-12 md:col-4">
<div class="flex align-items-center p-2 #{configurationBean.cpuAlertStyle} border-round-lg">
<i class="pi #{configurationBean.cpuAlertIcon} mr-2"></i>
<span class="text-sm font-medium">CPU: #{configurationBean.cpuAlertText}</span>
</div>
</div>
<div class="field col-12 md:col-4">
<div class="flex align-items-center p-2 #{configurationBean.memoireAlertStyle} border-round-lg">
<i class="pi #{configurationBean.memoireAlertIcon} mr-2"></i>
<span class="text-sm font-medium">Mémoire: #{configurationBean.memoireAlertText}</span>
</div>
</div>
<div class="field col-12 md:col-4">
<div class="flex align-items-center p-2 #{configurationBean.disqueAlertStyle} border-round-lg">
<i class="pi #{configurationBean.disqueAlertIcon} mr-2"></i>
<span class="text-sm font-medium">Disque: #{configurationBean.disqueAlertText}</span>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Actions et Services -->
<div class="field col-12 lg:col-4">
<div class="card">
<h5 class="mb-3">
<i class="pi pi-cog text-orange-500 mr-2"></i>
Actions Système
</h5>
<!-- Mode Maintenance -->
<div class="surface-50 border-round-lg p-3 mb-3">
<div class="flex align-items-center justify-content-between">
<div>
<div class="font-medium text-900">Mode Maintenance</div>
<div class="text-500 text-xs">Bloque l'accès utilisateurs</div>
</div>
<h:form id="formModeMaintenance">
<p:selectBooleanCheckbox id="modeMaintenance"
value="#{configurationBean.modeMaintenance}">
<p:ajax update="@form" />
</p:selectBooleanCheckbox>
</h:form>
</div>
</div>
<!-- Configuration Sauvegarde -->
<div class="surface-50 border-round-lg p-3 mb-3">
<div class="font-medium text-900 mb-2">Sauvegarde Automatique</div>
<h:form id="formSauvegarde">
<div class="formgrid grid">
<div class="field col-12">
<p:selectOneMenu value="#{configurationBean.frequenceSauvegarde}"
styleClass="w-full">
<f:selectItem itemLabel="Toutes les 4h" itemValue="4H" />
<f:selectItem itemLabel="Quotidienne (2h00)" itemValue="DAILY" />
<f:selectItem itemLabel="Hebdomadaire" itemValue="WEEKLY" />
</p:selectOneMenu>
</div>
<div class="field col-12">
<div class="text-500 text-xs">Rétention: </div>
<p:inputNumber value="#{configurationBean.retentionSauvegardes}"
minValue="7" maxValue="365" size="3" suffix=" jours" />
</div>
</div>
</h:form>
</div>
<!-- Actions rapides -->
<h:form id="formActionsRapides">
<div class="flex flex-column gap-2">
<p:commandButton value="Forcer Sauvegarde"
icon="pi pi-save"
styleClass="ui-button-info ui-button-outlined ui-button-sm w-full"
action="#{configurationBean.forcerSauvegarde}" />
<p:commandButton value="Nettoyer Cache"
icon="pi pi-refresh"
styleClass="ui-button-secondary ui-button-outlined ui-button-sm w-full"
action="#{configurationBean.nettoyerCache}" />
<p:commandButton value="Audit Système"
icon="pi pi-shield"
styleClass="ui-button-warning ui-button-outlined ui-button-sm w-full"
action="#{configurationBean.auditSysteme}" />
<p:commandButton value="Redémarrer Services"
icon="pi pi-power-off"
styleClass="ui-button-danger ui-button-outlined ui-button-sm w-full"
onclick="return confirm('Redémarrer les services ?');"
action="#{configurationBean.redemarrerServices}" />
</div>
</h:form>
</div>
</div>
</div>
<!-- Configuration Alertes avec structure Freya -->
<div class="card">
<h5 class="mb-3">
<i class="pi pi-bell text-orange-500 mr-2"></i>
Alertes et Notifications
</h5>
<h:form id="formConfigAlertes">
<div class="formgrid grid">
<div class="field col-12 md:col-6">
<label for="emailAlertes" class="block text-900 font-medium mb-2">Email Alertes Système</label>
<p:inputText id="emailAlertes"
value="#{configurationBean.emailAlertes}"
placeholder="admin@unionflow.app"
styleClass="w-full" />
</div>
<div class="field col-12 md:col-6">
<div class="flex flex-column gap-2">
<div class="flex align-items-center">
<p:selectBooleanCheckbox id="alertesCPU"
value="#{configurationBean.alertesCPU}" />
<label for="alertesCPU" class="ml-2">Alertes CPU (&gt;80%)</label>
</div>
<div class="flex align-items-center">
<p:selectBooleanCheckbox id="alertesMemoire"
value="#{configurationBean.alertesMemoire}" />
<label for="alertesMemoire" class="ml-2">Alertes Mémoire (&gt;85%)</label>
</div>
<div class="flex align-items-center">
<p:selectBooleanCheckbox id="alertesDisque"
value="#{configurationBean.alertesDisque}" />
<label for="alertesDisque" class="ml-2">Alertes Disque (&lt;10 GB)</label>
</div>
</div>
</div>
</div>
<div class="flex justify-content-end mt-3">
<p:commandButton value="Sauvegarder Alertes"
icon="pi pi-check"
styleClass="ui-button-success ui-button-sm"
action="#{configurationBean.sauvegarderAlertes}"
update="@form" />
</div>
</h:form>
</div>
</div>
</ui:define>
</ui:composition>