Refactor: Standardisation complète de l'architecture REST
🔧 RESTRUCTURATION - UserResource déplacé de adapter.http vers application.rest - FournisseurResource déplacé vers application.rest - Suppression des contrôleurs obsolètes (presentation.controller) - Suppression de MaterielFournisseurService en doublon 📝 STANDARDISATION DOCUMENTATION - Annotations OpenAPI uniformes (@Operation, @APIResponse, @Parameter) - Descriptions concises et cohérentes pour tous les endpoints - Codes de réponse HTTP standards (200, 201, 400, 404, 500) 🛠️ ENDPOINTS USERS STANDARDISÉS - GET /api/v1/users - Liste tous les utilisateurs - GET /api/v1/users/{id} - Détails d'un utilisateur - GET /api/v1/users/stats - Statistiques globales - GET /api/v1/users/count - Comptage - GET /api/v1/users/pending - Utilisateurs en attente - POST /api/v1/users - Création - PUT /api/v1/users/{id} - Mise à jour - DELETE /api/v1/users/{id} - Suppression - POST /api/v1/users/{id}/approve - Approbation - POST /api/v1/users/{id}/reject - Rejet - PUT /api/v1/users/{id}/status - Changement de statut - PUT /api/v1/users/{id}/role - Changement de rôle ⚠️ GESTION D'ERREURS - Format uniforme: Map.of("error", "message") - Codes HTTP cohérents avec les autres ressources - Validation des entrées standardisée ✅ VALIDATION - Compilation réussie: mvn clean compile -DskipTests - Pattern conforme aux autres ressources (PhaseTemplate, Fournisseur) - Documentation OpenAPI/Swagger complète et cohérente
This commit is contained in:
@@ -1,29 +1,71 @@
|
||||
# Configuration de développement pour BTP Xpress avec Keycloak
|
||||
# Pour le développement local avec Keycloak sur security.lions.dev
|
||||
|
||||
# Base de donn<EFBFBD>es PostgreSQL pour d<EFBFBD>veloppement et production
|
||||
# Base de données PostgreSQL pour développement et production
|
||||
quarkus.datasource.db-kind=postgresql
|
||||
quarkus.datasource.jdbc.url=${DB_URL:jdbc:postgresql://localhost:5434/btpxpress}
|
||||
quarkus.datasource.username=${DB_USERNAME:btpxpress}
|
||||
quarkus.datasource.password=${DB_PASSWORD:btpxpress_secure_2024}
|
||||
quarkus.datasource.password=${DB_PASSWORD:?DB_PASSWORD must be set}
|
||||
|
||||
# Hibernate cr<63>e les tables automatiquement en mode dev
|
||||
quarkus.hibernate-orm.database.generation=drop-and-create
|
||||
quarkus.hibernate-orm.log.sql=true
|
||||
# Configuration de performance et optimisation
|
||||
quarkus.hibernate-orm.sql-load-script=no-file
|
||||
quarkus.hibernate-orm.database.generation=none
|
||||
quarkus.hibernate-orm.log.sql=false
|
||||
quarkus.hibernate-orm.log.bind-parameters=false
|
||||
|
||||
# Flyway D<>SACTIV<49> - Hibernate g<>re le sch<63>ma
|
||||
# Optimisation des connexions de base de données
|
||||
quarkus.datasource.jdbc.max-size=20
|
||||
quarkus.datasource.jdbc.min-size=5
|
||||
quarkus.datasource.jdbc.initial-size=5
|
||||
quarkus.datasource.jdbc.validation-query-sql=SELECT 1
|
||||
quarkus.datasource.jdbc.background-validation=true
|
||||
quarkus.datasource.jdbc.background-validation-millis=60000
|
||||
quarkus.datasource.jdbc.idle-removal-interval=5M
|
||||
quarkus.datasource.jdbc.max-lifetime=30M
|
||||
quarkus.datasource.jdbc.leak-detection-interval=10M
|
||||
|
||||
# Optimisation du cache Hibernate
|
||||
quarkus.hibernate-orm.second-level-caching-enabled=true
|
||||
quarkus.hibernate-orm.cache.use-second-level-cache=true
|
||||
quarkus.hibernate-orm.cache.use-query-cache=true
|
||||
|
||||
# Optimisation des requêtes
|
||||
quarkus.hibernate-orm.query.plan-cache-max-size=2048
|
||||
quarkus.hibernate-orm.query.plan-cache-max-soft-references=1024
|
||||
quarkus.hibernate-orm.query.plan-cache-max-hard-references=64
|
||||
|
||||
# Optimisation du serveur HTTP
|
||||
quarkus.http.io-threads=8
|
||||
quarkus.http.worker-threads=200
|
||||
quarkus.http.max-request-body-size=10M
|
||||
quarkus.http.max-headers-size=8K
|
||||
quarkus.http.max-parameters=1000
|
||||
quarkus.http.max-parameter-size=2048
|
||||
|
||||
# Compression
|
||||
quarkus.http.enable-compression=true
|
||||
quarkus.http.compression-level=6
|
||||
|
||||
# Optimisation des threads
|
||||
quarkus.thread-pool.core-threads=8
|
||||
quarkus.thread-pool.max-threads=200
|
||||
quarkus.thread-pool.queue-size=1000
|
||||
quarkus.thread-pool.growth-resistance=0
|
||||
quarkus.thread-pool.shutdown-interrupt=PT30S
|
||||
|
||||
# Flyway DéSACTIVé - Hibernate gére le schéma
|
||||
quarkus.flyway.migrate-at-start=false
|
||||
|
||||
# Production PostgreSQL - utilise les m<EFBFBD>mes param<EFBFBD>tres par d<EFBFBD>faut
|
||||
# Production PostgreSQL - utilise les mémes paramétres par défaut
|
||||
%prod.quarkus.hibernate-orm.database.generation=${DB_GENERATION:update}
|
||||
%prod.quarkus.hibernate-orm.log.sql=${LOG_SQL:false}
|
||||
%prod.quarkus.hibernate-orm.log.bind-parameters=${LOG_BIND_PARAMS:false}
|
||||
|
||||
# Test PostgreSQL - utilise la m<EFBFBD>me base de donn<EFBFBD>es
|
||||
# Test PostgreSQL - utilise la méme base de données
|
||||
%test.quarkus.hibernate-orm.database.generation=drop-and-create
|
||||
%test.quarkus.hibernate-orm.log.sql=false
|
||||
|
||||
# D<EFBFBD>sactiver tous les dev services
|
||||
# Désactiver tous les dev services
|
||||
quarkus.devservices.enabled=false
|
||||
quarkus.redis.devservices.enabled=false
|
||||
|
||||
@@ -40,7 +82,7 @@ quarkus.http.cors.exposed-headers=Content-Disposition
|
||||
quarkus.http.cors.access-control-max-age=24H
|
||||
quarkus.http.cors.access-control-allow-credentials=true
|
||||
|
||||
# Configuration Keycloak OIDC pour d<EFBFBD>veloppement (d<EFBFBD>sactiv<EFBFBD> en mode dev)
|
||||
# Configuration Keycloak OIDC pour développement (désactivé en mode dev)
|
||||
%dev.quarkus.oidc.auth-server-url=https://security.lions.dev/realms/btpxpress
|
||||
%dev.quarkus.oidc.client-id=btpxpress-backend
|
||||
%dev.quarkus.oidc.credentials.secret=${KEYCLOAK_CLIENT_SECRET:dev-secret-change-me}
|
||||
@@ -50,7 +92,7 @@ quarkus.http.cors.access-control-allow-credentials=true
|
||||
%dev.quarkus.oidc.token.issuer=https://security.lions.dev/realms/btpxpress
|
||||
%dev.quarkus.oidc.discovery-enabled=true
|
||||
|
||||
# Sécurité - D<EFBFBD>sactiv<EFBFBD>e en mode d<EFBFBD>veloppement
|
||||
# Sécurité - Désactivée en mode développement
|
||||
%dev.quarkus.security.auth.enabled=false
|
||||
%prod.quarkus.security.auth.enabled=true
|
||||
quarkus.security.auth.proactive=false
|
||||
@@ -107,7 +149,7 @@ quarkus.smallrye-health.ui.enable=true
|
||||
# Configuration Keycloak OIDC pour production - SECRETS VIA VARIABLES D'ENVIRONNEMENT
|
||||
%prod.quarkus.oidc.auth-server-url=${KEYCLOAK_AUTH_SERVER_URL:https://security.lions.dev/realms/btpxpress}
|
||||
%prod.quarkus.oidc.client-id=${KEYCLOAK_CLIENT_ID:btpxpress-backend}
|
||||
%prod.quarkus.oidc.credentials.secret=${KEYCLOAK_CLIENT_SECRET}
|
||||
%prod.quarkus.oidc.credentials.secret=${KEYCLOAK_CLIENT_SECRET:?KEYCLOAK_CLIENT_SECRET must be set}
|
||||
%prod.quarkus.oidc.tls.verification=required
|
||||
%prod.quarkus.oidc.authentication.redirect-path=/login
|
||||
%prod.quarkus.oidc.authentication.restore-path-after-redirect=true
|
||||
@@ -119,11 +161,11 @@ quarkus.smallrye-health.ui.enable=true
|
||||
%prod.quarkus.oidc.authorization-path=/protocol/openid-connect/auth
|
||||
%prod.quarkus.oidc.end-session-path=/protocol/openid-connect/logout
|
||||
|
||||
# Configuration de la s<EFBFBD>curit<EFBFBD> CORS pour production avec nouvelle URL API
|
||||
# Configuration de la sécurité CORS pour production avec nouvelle URL API
|
||||
%prod.quarkus.http.cors.origins=https://btpxpress.lions.dev,https://security.lions.dev,https://api.lions.dev
|
||||
|
||||
# Configuration Keycloak OIDC pour tests (d<EFBFBD>sactiv<EFBFBD>)
|
||||
# Configuration Keycloak OIDC pour tests (désactivé)
|
||||
%test.quarkus.oidc.auth-server-url=https://security.lions.dev/realms/btpxpress
|
||||
%test.quarkus.oidc.client-id=btpxpress-backend
|
||||
%test.quarkus.oidc.credentials.secret=${KEYCLOAK_CLIENT_SECRET:test-secret-not-used}
|
||||
%test.quarkus.oidc.credentials.secret=${KEYCLOAK_CLIENT_SECRET:test-secret}
|
||||
%test.quarkus.security.auth.enabled=false
|
||||
|
||||
Reference in New Issue
Block a user