#==========================================================
# CONFIGURATION GÉNÉRALE DE L'APPLICATION
#==========================================================
# Informations de base de l'application
app.name=Lions Dev
app.description=Solutions Digitales Innovantes
app.version=1.0.0
app.encoding=UTF-8

# Configuration environnement
%dev.app.environment=development
%prod.app.environment=${APP_ENV:production}
%dev.app.base-url=http://localhost:8707
%prod.app.base-url=${APP_BASE_URL}
app.default-language=fr

#==========================================================
# CONFIGURATION DU SERVEUR
#==========================================================
# Configuration du port et des chemins
%dev.quarkus.http.port=8707
%prod.quarkus.http.port=${PORT:8080}

# Configuration proxy et CORS
quarkus.http.proxy.proxy-address-forwarding=true
quarkus.http.proxy.allow-forwarded=true
quarkus.http.cors=true
quarkus.http.cors.origins=${CORS_ORIGINS:http://localhost:8707}
quarkus.http.cors.methods=GET,POST,PUT,DELETE,OPTIONS
quarkus.http.cors.headers=Content-Type,Authorization
quarkus.http.cors.exposed-headers=Content-Disposition
quarkus.http.cors.access-control-max-age=24H

# Configuration SSL/TLS
#%prod.quarkus.http.ssl.certificate.key-store-file=keystore.jks
#%prod.quarkus.http.ssl.certificate.key-store-password=${KEYSTORE_PASSWORD:}
#%prod.quarkus.http.ssl.certificate.trust-store-file=truststore.jks
#%prod.quarkus.http.ssl.certificate.trust-store-password=${TRUSTSTORE_PASSWORD:}

# Optimisation des performances
quarkus.http.enable-compression=true
quarkus.http.compression.min-size=1024
quarkus.http.compression.mime-types=text/html,text/css,application/javascript,application/json,image/svg+xml,application/xml

#==========================================================
# CONFIGURATION DE LA BASE DE DONNÉES
#==========================================================
# Configuration PostgreSQL
quarkus.datasource.db-kind=postgresql
%dev.quarkus.datasource.username=lions_dev_user
%dev.quarkus.datasource.password=str0ngP@ssw0rd!
%prod.quarkus.datasource.username=${DB_USERNAME:$(cat /run/secrets/db_user)}
%prod.quarkus.datasource.password=${DB_PASSWORD:$(cat /run/secrets/db_password)}

# URLs de connexion par environnement
%dev.quarkus.datasource.jdbc.url=jdbc:postgresql://localhost:5432/lionsdev_db
%prod.quarkus.datasource.jdbc.url=jdbc:postgresql://${DB_HOST}:${DB_PORT}/${DB_NAME}

# Configuration du pool de connexions
quarkus.datasource.jdbc.max-size=${DB_POOL_SIZE:16}
quarkus.datasource.jdbc.min-size=${DB_POOL_MIN_SIZE:4}
quarkus.datasource.jdbc.acquisition-timeout=30

# Configuration Hibernate
%dev.quarkus.hibernate-orm.database.generation=drop-and-create
%prod.quarkus.hibernate-orm.database.generation=update
%dev.quarkus.hibernate-orm.log.sql=true
%dev.quarkus.hibernate-orm.log.format-sql=true
%dev.quarkus.hibernate-orm.statistics=true
quarkus.hibernate-orm.physical-naming-strategy=org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy

#==========================================================
# CONFIGURATION JSF ET INTERFACE
#==========================================================
# Configuration MyFaces pour Quarkus
quarkus.myfaces.projects-stage=${FACES_STAGE:Development}
quarkus.myfaces.config-refresh-period=2

# Configuration des paramètres MyFaces
quarkus.myfaces.init-params.jakarta.faces.PROJECT_STAGE=${FACES_STAGE:Development}
quarkus.myfaces.init-params.jakarta.faces.FACELETS_REFRESH_PERIOD=${FACELETS_REFRESH:2}
quarkus.myfaces.init-params.jakarta.faces.STATE_SAVING_METHOD=server
quarkus.myfaces.init-params.jakarta.faces.VALIDATE_EMPTY_FIELDS=true
quarkus.myfaces.init-params.primefaces.THEME=saga
quarkus.myfaces.init-params.primefaces.CLIENT_SIDE_VALIDATION=true
quarkus.myfaces.init-params.primefaces.TRANSFORM_METADATA=true
quarkus.myfaces.init-params.primefaces.UPLOADER=auto

# Chemins d'accès JSF
quarkus.http.non-application-root-path=/q

#==========================================================
# CONFIGURATION DE LA SÉCURITÉ
#==========================================================
# Configuration de base
quarkus.security.users.embedded.enabled=true
%dev.quarkus.security.users.embedded.plain-text=true
%prod.quarkus.security.users.embedded.plain-text=false

# Configuration de l'authentification
quarkus.http.auth.form.enabled=true
quarkus.http.auth.session.encryption-key=${SESSION_KEY:ChangeThisToASecureKeyInProduction!}
quarkus.http.auth.session.cookie-same-site=strict
quarkus.http.auth.proactive=false

# Configuration des chemins publics/privés
quarkus.http.auth.permission.public.paths=/public/*,/index.xhtml,/error/*,/resources/*
quarkus.http.auth.permission.public.policy=permit
quarkus.http.auth.permission.secured.paths=/private/*
quarkus.http.auth.permission.secured.policy=authenticated

#==========================================================
# CONFIGURATION DU STOCKAGE
#==========================================================
# Configuration du stockage local
%dev.app.storage.base-path=${user.home}/lionsdev/storage
%prod.app.storage.base-path=${STORAGE_PATH}
app.storage.allowed-types=image/jpeg,image/png,image/gif,application/pdf
app.storage.max-size=${MAX_UPLOAD_SIZE:10485760}
app.storage.temp-dir=${java.io.tmpdir}/lionsdev

# Configuration du traitement des images
app.image.thumbnail.width=300
app.image.thumbnail.height=200
app.image.quality=0.85
app.image.formats=jpg,png,webp

#==========================================================
# CONFIGURATION EMAIL
#==========================================================
# Configuration Quarkus Mailer
quarkus.mailer.auth-methods=DIGEST-MD5,CRAM-SHA256,CRAM-SHA1,CRAM-MD5,PLAIN,LOGIN
%dev.quarkus.mailer.mock=false
%prod.quarkus.mailer.mock=false

# Configuration de base (sans préfixe pour les valeurs par défaut)
app.smtp.host=${SMTP_HOST:localhost}
app.smtp.port=${SMTP_PORT:25}
app.email.from=${MAIL_FROM:no-reply@lions.dev}

# Paramètres SMTPs
%dev.quarkus.mailer.host=localhost
%dev.quarkus.mailer.port=25
%prod.quarkus.mailer.host=${SMTP_HOST:smtp.gmail.com}
%prod.quarkus.mailer.port=${SMTP_PORT:587}
%prod.quarkus.mailer.ssl=${SMTP_SSL:true}
%prod.quarkus.mailer.username=${SMTP_USER}
%prod.quarkus.mailer.password=${SMTP_PASSWORD}

# Configurations des adresses email
quarkus.mailer.from=${MAIL_FROM:no-reply@lions.dev}
app.email.support=${EMAIL_SUPPORT:support@lions.dev}
app.admin.email=${ADMIN_EMAIL:admin@lions.dev}

# Désactiver le mailer en dev
%dev.quarkus.mailer.enabled=false

# Valeurs fictives pour éviter les erreurs de validation
%dev.app.smtp.host=localhost
%dev.app.smtp.port=25
%dev.app.email.from=no-reply@dev.com
%dev.app.email.support=support@dev.com
%dev.app.admin.email=admin@dev.com

#==========================================================
# CONFIGURATION DES LOGS
#==========================================================
# Niveau de log par environnement
%dev.quarkus.log.level=DEBUG
%prod.quarkus.log.level=${LOG_LEVEL:INFO}
%dev.quarkus.log.category."dev.lions".level=DEBUG
%dev.quarkus.log.console.format=%d{HH:mm:ss} %-5p [%c{2.}] (%t) %s%e%n

# Configuration des fichiers de log
%dev.quarkus.log.file.enable=false
%prod.quarkus.log.file.enable=true
%prod.quarkus.log.file.path=/var/log/lionsdev/application.log
%prod.quarkus.log.file.format=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c{3.}] (%t) %s%e%n
%prod.quarkus.log.file.rotation.max-file-size=10M
%prod.quarkus.log.file.rotation.max-backup-index=5

#==========================================================
# CONFIGURATION DU MONITORING
#==========================================================
# Métriques et documentation API
%prod.quarkus.micrometer.export.prometheus.enabled=true
quarkus.swagger-ui.enable=true
quarkus.swagger-ui.always-include=true
quarkus.smallrye-openapi.info-title=Lions Dev API
quarkus.smallrye-openapi.info-version=${app.version}

#==========================================================
# CONFIGURATION DES RESSOURCES STATIQUES
#==========================================================
quarkus.http.static-resources.caching.enabled=true
quarkus.http.static-resources.caching.max-age=2592000

quarkus.http.static-resources.enabled=true
quarkus.http.static-resources.paths=META-INF/resources
