Files

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