221 lines
5.6 KiB
Markdown
221 lines
5.6 KiB
Markdown
# GBCM Server Implementation - Quarkus
|
|
|
|
Implémentation serveur de la plateforme GBCM (Global Business Consulting and Management) avec Quarkus.
|
|
|
|
## Description
|
|
|
|
Ce module contient l'implémentation complète des services backend GBCM, incluant l'authentification, la gestion des utilisateurs, les services de coaching et la facturation.
|
|
|
|
## Technologies
|
|
|
|
- **Quarkus 3.6.0** - Framework Java moderne
|
|
- **Hibernate ORM with Panache** - ORM et accès aux données
|
|
- **PostgreSQL** - Base de données principale
|
|
- **JWT** - Authentification et autorisation
|
|
- **RESTEasy Reactive** - Services REST
|
|
- **Flyway** - Migration de base de données
|
|
- **Mailer** - Envoi d'emails
|
|
- **OpenAPI/Swagger** - Documentation API
|
|
- **Maven** - Gestion des dépendances
|
|
|
|
## Prérequis
|
|
|
|
- Java 17 ou supérieur
|
|
- Maven 3.8+
|
|
- PostgreSQL 13+
|
|
- SMTP Server (pour les emails)
|
|
|
|
## Installation
|
|
|
|
1. Cloner le repository
|
|
```bash
|
|
git clone https://git.lions.dev/gbcm/gbcm-server-impl-quarkus.git
|
|
cd gbcm-server-impl-quarkus
|
|
```
|
|
|
|
2. Installer les dépendances
|
|
```bash
|
|
mvn clean install
|
|
```
|
|
|
|
3. Configuration de la base de données
|
|
```sql
|
|
CREATE DATABASE gbcm_server;
|
|
CREATE USER gbcm_server WITH PASSWORD 'gbcm_server_password';
|
|
GRANT ALL PRIVILEGES ON DATABASE gbcm_server TO gbcm_server;
|
|
```
|
|
|
|
4. Configuration
|
|
Copier `application.properties.example` vers `application.properties` et configurer :
|
|
- Base de données PostgreSQL
|
|
- Configuration SMTP
|
|
- Clés JWT
|
|
- Paramètres métier
|
|
|
|
## Développement
|
|
|
|
### Démarrage en mode développement
|
|
```bash
|
|
mvn quarkus:dev
|
|
```
|
|
|
|
L'application sera accessible sur :
|
|
- API: http://localhost:8081/api/v1
|
|
- Swagger UI: http://localhost:8081/swagger
|
|
- Health Check: http://localhost:8081/health
|
|
|
|
### Base de données H2 (développement)
|
|
En mode dev, une base H2 en mémoire est utilisée automatiquement.
|
|
|
|
## Structure du projet
|
|
|
|
```
|
|
src/
|
|
├── main/
|
|
│ ├── java/com/gbcm/server/
|
|
│ │ ├── entities/ # Entités JPA
|
|
│ │ ├── repositories/ # Repositories Panache
|
|
│ │ ├── services/ # Services métier
|
|
│ │ │ ├── impl/ # Implémentations
|
|
│ │ │ └── security/ # Services sécurité
|
|
│ │ ├── resources/ # Endpoints REST
|
|
│ │ ├── config/ # Configuration
|
|
│ │ └── utils/ # Utilitaires
|
|
│ └── resources/
|
|
│ ├── application.properties
|
|
│ ├── import.sql # Données de test
|
|
│ └── db/migration/ # Scripts Flyway
|
|
└── test/ # Tests
|
|
```
|
|
|
|
## API Endpoints
|
|
|
|
### Authentification
|
|
- `POST /api/v1/auth/login` - Connexion
|
|
- `POST /api/v1/auth/logout` - Déconnexion
|
|
- `POST /api/v1/auth/refresh` - Rafraîchissement token
|
|
- `GET /api/v1/auth/validate` - Validation token
|
|
|
|
### Utilisateurs
|
|
- `GET /api/v1/users` - Liste des utilisateurs
|
|
- `GET /api/v1/users/{id}` - Utilisateur par ID
|
|
- `POST /api/v1/users` - Création utilisateur
|
|
- `PUT /api/v1/users/{id}` - Mise à jour utilisateur
|
|
|
|
### Coaching
|
|
- `GET /api/v1/coaching/sessions` - Sessions de coaching
|
|
- `POST /api/v1/coaching/sessions` - Nouvelle session
|
|
- `PUT /api/v1/coaching/sessions/{id}` - Mise à jour session
|
|
|
|
### Ateliers
|
|
- `GET /api/v1/workshops` - Liste des ateliers
|
|
- `POST /api/v1/workshops` - Nouvel atelier
|
|
- `POST /api/v1/workshops/{id}/register` - Inscription
|
|
|
|
## Base de données
|
|
|
|
### Migrations Flyway
|
|
Les scripts de migration sont dans `src/main/resources/db/migration/` :
|
|
- `V1__create_users.sql` - Table utilisateurs
|
|
- `V2__create_clients.sql` - Table clients
|
|
- `V3__create_workshops.sql` - Tables ateliers
|
|
|
|
### Entités principales
|
|
- `User` - Utilisateurs système
|
|
- `Client` - Clients GBCM
|
|
- `Coach` - Coachs/consultants
|
|
- `Workshop` - Ateliers Strategic
|
|
- `CoachingSession` - Sessions de coaching
|
|
- `Invoice` - Factures
|
|
|
|
## Sécurité
|
|
|
|
### JWT
|
|
- Tokens signés avec clé privée RSA
|
|
- Durée de vie configurable
|
|
- Refresh tokens pour sessions longues
|
|
- Blacklist des tokens révoqués
|
|
|
|
### Rôles et permissions
|
|
- `ADMIN` - Accès complet
|
|
- `COACH` - Gestion clients et sessions
|
|
- `CLIENT` - Accès services souscrits
|
|
- `MANAGER` - Gestion opérationnelle
|
|
|
|
## Tests
|
|
|
|
```bash
|
|
# Tests unitaires
|
|
mvn test
|
|
|
|
# Tests d'intégration
|
|
mvn verify
|
|
|
|
# Tests avec Testcontainers
|
|
mvn test -Dtest.containers=true
|
|
```
|
|
|
|
## Build et déploiement
|
|
|
|
### Build JVM
|
|
```bash
|
|
mvn clean package
|
|
java -jar target/quarkus-app/quarkus-run.jar
|
|
```
|
|
|
|
### Build natif
|
|
```bash
|
|
mvn clean package -Pnative
|
|
./target/gbcm-server-impl-quarkus-1.0.0-SNAPSHOT-runner
|
|
```
|
|
|
|
### Docker
|
|
```bash
|
|
# Build image
|
|
docker build -t gbcm-server .
|
|
|
|
# Run container
|
|
docker run -p 8081:8081 \
|
|
-e DATABASE_URL=jdbc:postgresql://host:5432/gbcm \
|
|
-e DB_USERNAME=gbcm_server \
|
|
-e DB_PASSWORD=password \
|
|
gbcm-server
|
|
```
|
|
|
|
## Configuration
|
|
|
|
### Variables d'environnement principales
|
|
- `DATABASE_URL` - URL base de données
|
|
- `DB_USERNAME` - Utilisateur DB
|
|
- `DB_PASSWORD` - Mot de passe DB
|
|
- `SMTP_USERNAME` - Utilisateur SMTP
|
|
- `SMTP_PASSWORD` - Mot de passe SMTP
|
|
- `JWT_PRIVATE_KEY` - Clé privée JWT
|
|
|
|
### Configuration métier
|
|
- `gbcm.business.workshop.max-participants` - Participants max par atelier
|
|
- `gbcm.business.coaching.session-duration` - Durée session coaching
|
|
- `gbcm.business.billing.currency` - Devise facturation
|
|
|
|
## Monitoring
|
|
|
|
### Health Checks
|
|
- `/health` - Statut général
|
|
- `/health/ready` - Prêt à recevoir du trafic
|
|
- `/health/live` - Application vivante
|
|
|
|
### Métriques
|
|
- `/metrics` - Métriques Prometheus
|
|
- Métriques métier personnalisées
|
|
- Monitoring des performances
|
|
|
|
## Support
|
|
|
|
- Email: support@gbcm.com
|
|
- Documentation: https://docs.gbcm.com
|
|
- API Docs: https://api.gbcm.com/swagger
|
|
|
|
## Licence
|
|
|
|
Propriétaire - GBCM LLC © 2024
|