TP5: Prepare release v1.0.0 - Add CHANGELOG, reorganize scripts, update README

This commit is contained in:
Rassaby Ludovic
2025-10-15 10:17:25 +04:00
parent 4291072b08
commit 0e12368708
6 changed files with 147 additions and 195 deletions
+105
View File
@@ -0,0 +1,105 @@
# Changelog
Toutes les modifications notables de ce projet seront documentées dans ce fichier.
Le format est basé sur [Keep a Changelog](https://keepachangelog.com/fr/1.0.0/),
et ce projet adhère au [Semantic Versioning](https://semver.org/lang/fr/).
## [1.0.0] - 2025-10-15
### Ajouté
- **TP1 - Architecture** : Système de réservation de salles avec Docker
- Backend FastAPI avec endpoints complets
- Frontend Next.js avec interface moderne
- Base de données PostgreSQL
- Configuration Docker Compose multi-services
- 5 salles pré-configurées (Atlas, Horizon, Innovation, Connect, Digital)
- **TP2 - Développement** : Fonctionnalités avancées
- Interface de planning visuel avec grille horaire
- Système de réservation avec validation automatique
- Gestion des conflits de réservation
- Interface responsive avec Tailwind CSS
- Validation en temps réel de la disponibilité
- **TP3 - Déploiement** : Configuration de production
- Scripts de démarrage automatisés (start.bat, stop.bat)
- Configuration CORS pour la communication frontend/backend
- Variables d'environnement configurées
- Documentation utilisateur complète
- **TP4 - Tests** : Système de tests automatisés
- Tests Pytest pour validation des endpoints API
- Intégration GitHub Actions pour CI/CD
- Tests de simulation d'erreur pour validation de la détection automatique
- Configuration Docker pour l'exécution des tests
- Scripts de test automatisés
- **TP5 - Release** : Préparation à la mise en production
- Gestion des versions avec Git tags
- Release GitHub avec documentation
- Changelog complet des modifications
- Configuration CI pour les releases
### Fonctionnalités principales
- **Planning des salles** : Vue d'ensemble avec grille horaire 8h-22h
- **Réservation** : Interface intuitive avec validation automatique
- **Gestion des réservations** : Consultation et annulation des réservations
- **API REST** : Endpoints complets pour salles et réservations
- **Base de données** : Stockage PostgreSQL avec relations
- **Interface moderne** : Design responsive avec Tailwind CSS
### Endpoints API
- `GET /health` - Vérification de l'état de l'API
- `GET /rooms` - Liste des salles disponibles
- `GET /rooms/{id}` - Détails d'une salle spécifique
- `GET /reservations` - Liste des réservations
- `GET /reservations/date/{date}` - Réservations par date
- `POST /reservations` - Création d'une nouvelle réservation
- `DELETE /reservations/{id}` - Annulation d'une réservation
### Configuration technique
- **Backend** : FastAPI avec Python 3.11
- **Frontend** : Next.js 14 avec TypeScript
- **Base de données** : PostgreSQL 16
- **Conteneurisation** : Docker et Docker Compose
- **Tests** : Pytest avec couverture de code
- **CI/CD** : GitHub Actions
### Salles disponibles
1. **Salle Atlas** (30 personnes) - Vidéoprojecteur, Tableau blanc, WiFi
2. **Salle Horizon** (15 personnes) - Écran TV, Tableau blanc, WiFi
3. **Salle Innovation** (50 personnes) - Vidéoprojecteur, Sono, WiFi, Climatisation
4. **Salle Connect** (8 personnes) - Écran TV, Visioconférence, WiFi
5. **Salle Digital** (20 personnes) - 20 postes informatiques, Vidéoprojecteur, WiFi
### Scripts d'administration
- `scripts/test.bat` - Exécution des tests automatisés
- `scripts/test-connectivity.bat` - Tests de simulation d'erreur
- `start.bat` - Démarrage de l'application
- `stop.bat` - Arrêt de l'application
### Documentation
- Guide d'utilisation complet
- Documentation API interactive (Swagger UI)
- README avec instructions d'installation
- Changelog des versions
---
## Notes de version
### Version 1.0.0
- **Date de release** : 15 octobre 2025
- **Type** : Release initiale
- **Statut** : Stable, prêt pour la production
- **Compatibilité** : Windows, Linux, macOS
- **Dépendances** : Docker, Docker Compose
### Migration
Cette version est la première release stable. Aucune migration n'est nécessaire.
### Support
- **Documentation** : Disponible dans le README.md
- **API** : Documentation interactive sur http://localhost:8000/docs
- **Tests** : Suite de tests complète avec validation automatique
+42 -12
View File
@@ -1,22 +1,28 @@
# 🏢 Expernet - Système de Réservation de Salles # Expernet - Système de Réservation de Salles
Système complet de réservation de salles pour le centre de formation **Expernet**, développé avec **FastAPI** (Backend), **Next.js** (Frontend) et **PostgreSQL** (Base de données), orchestré avec Docker Compose. Système complet de réservation de salles pour le centre de formation **Expernet**, développé avec **FastAPI** (Backend), **Next.js** (Frontend) et **PostgreSQL** (Base de données), orchestré avec Docker Compose.
## 📋 Stack Technique [![Release](https://img.shields.io/badge/release-v1.0.0-blue.svg)](https://github.com/SarTron-NorthBlue/dockezr/releases/tag/v1.0.0)
[![Tests](https://github.com/SarTron-NorthBlue/dockezr/workflows/Tests%20API%20-%20TP4/badge.svg)](https://github.com/SarTron-NorthBlue/dockezr/actions)
[![Docker](https://img.shields.io/badge/docker-compose-blue.svg)](https://docs.docker.com/compose/)
## Stack Technique
- **Backend**: FastAPI (Python) avec AsyncPG - **Backend**: FastAPI (Python) avec AsyncPG
- **Frontend**: Next.js 14 + TypeScript + Tailwind CSS - **Frontend**: Next.js 14 + TypeScript + Tailwind CSS
- **Base de données**: PostgreSQL 16 - **Base de données**: PostgreSQL 16
- **Containerisation**: Docker & Docker Compose - **Containerisation**: Docker & Docker Compose
- **Tests**: Pytest avec GitHub Actions CI/CD
- **Versioning**: Git tags avec releases GitHub
## Fonctionnalités ## Fonctionnalités
### 🏛️ Gestion des Salles ### Gestion des Salles
- 5 salles pré-configurées (Atlas, Horizon, Innovation, Connect, Digital) - 5 salles pré-configurées (Atlas, Horizon, Innovation, Connect, Digital)
- Affichage des capacités et équipements - Affichage des capacités et équipements
- Interface intuitive de sélection - Interface intuitive de sélection
### 📅 Réservations ### Réservations
- Formulaire de réservation complet - Formulaire de réservation complet
- Champ email optionnel - Champ email optionnel
- Sélection de date et horaires - Sélection de date et horaires
@@ -26,7 +32,7 @@ Système complet de réservation de salles pour le centre de formation **Experne
- Validation des créneaux disponibles - Validation des créneaux disponibles
- Annulation de réservations - Annulation de réservations
### 📊 Planning Visuel ### Planning Visuel
- **Grille de planning par jour** (8h-22h) - **Grille de planning par jour** (8h-22h)
- Vue d'ensemble de toutes les salles - Vue d'ensemble de toutes les salles
- Code couleur : ✅ Disponible / ❌ Réservé - Code couleur : ✅ Disponible / ❌ Réservé
@@ -34,12 +40,12 @@ Système complet de réservation de salles pour le centre de formation **Experne
- Navigation par date - Navigation par date
- Liste détaillée des réservations du jour - Liste détaillée des réservations du jour
### 📋 Suivi ### Suivi
- Vue d'ensemble de toutes les réservations - Vue d'ensemble de toutes les réservations
- Filtrage par salle et par date - Filtrage par salle et par date
- Historique complet - Historique complet
## 🚀 Démarrage Rapide ## Démarrage Rapide
### Prérequis ### Prérequis
@@ -341,7 +347,24 @@ Ce système est idéal pour :
- ✅ Universités et écoles - ✅ Universités et écoles
- ✅ Bibliothèques avec salles d'étude - ✅ Bibliothèques avec salles d'étude
## 📦 Production ## Tests et Qualité
### Tests automatisés
- **Tests API** : Validation des endpoints avec Pytest
- **Tests de connectivité** : Simulation d'erreurs pour validation
- **CI/CD** : GitHub Actions avec tests automatiques
- **Couverture** : Tests de performance et de régression
### Exécution des tests
```bash
# Tests complets
scripts/test.bat
# Tests de simulation d'erreur
scripts/test-connectivity.bat
```
## Production
Pour un déploiement en production, modifiez : Pour un déploiement en production, modifiez :
@@ -352,7 +375,7 @@ Pour un déploiement en production, modifiez :
5. Ajoutez un reverse proxy (Nginx, Traefik) 5. Ajoutez un reverse proxy (Nginx, Traefik)
6. Mettez en place des sauvegardes de la base de données 6. Mettez en place des sauvegardes de la base de données
## 🔐 Sécurité ## Sécurité
⚠️ **Important pour la production** : ⚠️ **Important pour la production** :
- Changez les identifiants PostgreSQL par défaut - Changez les identifiants PostgreSQL par défaut
@@ -361,11 +384,18 @@ Pour un déploiement en production, modifiez :
- Configurez CORS correctement - Configurez CORS correctement
- Utilisez HTTPS - Utilisez HTTPS
## 📄 Licence ## Versions et Releases
- **Version actuelle** : v1.0.0
- **Changelog** : Voir [CHANGELOG.md](CHANGELOG.md)
- **Releases** : [GitHub Releases](https://github.com/SarTron-NorthBlue/dockezr/releases)
- **Tags Git** : Gestion des versions avec Git tags
## Licence
Ce projet est développé pour **Expernet** - Centre de Formation. Ce projet est développé pour **Expernet** - Centre de Formation.
--- ---
**🏢 Système de réservation Expernet - Simplifions la gestion des salles ! 🚀** **Système de réservation Expernet - Simplifions la gestion des salles !**
-142
View File
@@ -1,142 +0,0 @@
# TP4 - Tests automatisés avec Docker
## Objectif
Implémentation d'un système de tests automatisés intégré dans la CI/CD avec Docker.
## Consignes réalisées
### 1. Fichier `test_api.py` créé
- Framework Pytest configuré pour les tests d'API
- Validation des endpoints retournant `status_code == 200`
- Couverture complète des endpoints de l'API
### 2. Workflow GitHub Actions implémenté
- Pipeline automatisé dans `.github/workflows/test.yml`
- Exécution des tests via Docker Compose
- Configuration de l'intégration continue
### 3. Simulation d'erreur et validation
- Tests de simulation d'erreur pour validation de la détection automatique
- Détection d'erreur par la CI (pipeline rouge)
- Correction des tests pour validation du pipeline vert
## Architecture des tests
```
dockezr/
├── .github/workflows/
│ ├── test.yml # Pipeline CI/CD principal
│ └── test-connectivity.yml # Pipeline simulation d'erreur
├── backend/
│ ├── test_api.py # Tests Pytest principaux
│ ├── test_connectivity.py # Tests de connectivité
│ ├── test_error_simulation.py # Tests de simulation d'erreur
│ ├── requirements-test.txt # Dépendances tests
│ └── Dockerfile.test # Image Docker pour tests
├── docker-compose.yml # Configuration avec service test
├── test.sh # Script de test (Linux/Mac)
├── test.bat # Script de test (Windows)
├── test-connectivity.sh # Script simulation d'erreur (Linux/Mac)
└── test-connectivity.bat # Script simulation d'erreur (Windows)
```
## Tests implémentés
| Test | Description | Status |
|------|-------------|--------|
| `test_health_endpoint` | Validation `/health` retourne 200 | Pass |
| `test_rooms_endpoint` | Validation `/rooms` retourne 200 | Pass |
| `test_reservations_endpoint` | Validation `/reservations` retourne 200 | Pass |
| `test_root_endpoint` | Validation `/` retourne 200 | Pass |
| `test_room_by_id` | Test récupération salle par ID | Pass |
| `test_room_not_found` | Test ID inexistant (404) | Pass |
| `test_reservations_by_date` | Test réservations par date | Pass |
| `test_simulated_error` | Test simulé (corrigé) | Pass |
| `test_api_response_time` | Test performance API | Pass |
| `test_backend_connection_timeout` | Simulation erreur connectivité | Fail (intentionnel) |
| `test_misconfigured_endpoint` | Simulation erreur configuration | Fail (intentionnel) |
## Commandes d'exécution
### Tests locaux avec Docker
```bash
# Démarrage des services
docker-compose up -d db backend
# Exécution des tests
docker-compose --profile test up --build --abort-on-container-exit test
# Scripts d'automatisation
./test.sh # Linux/Mac
test.bat # Windows
./test-connectivity.sh # Simulation d'erreur (Linux/Mac)
test-connectivity.bat # Simulation d'erreur (Windows)
```
### Tests avec couverture de code
```bash
docker-compose run --rm test pytest test_api.py --cov=. --cov-report=html
```
### Tests de simulation d'erreur
```bash
# Tests de connectivité avec erreurs intentionnelles
docker-compose run --rm test python -c "
import requests
try:
response = requests.get('http://backend:9999/health', timeout=2)
except Exception as e:
print('Erreur de connectivité simulée:', e)
"
```
## Résultats des tests
### Tests principaux (Pipeline vert)
```
============================= test session starts ==============================
platform linux -- Python 3.11.14, pytest-7.4.3, pluggy-1.6.0
collected 9 items
test_api.py::TestAPI::test_health_endpoint PASSED [ 11%]
test_api.py::TestAPI::test_rooms_endpoint PASSED [ 22%]
test_api.py::TestAPI::test_reservations_endpoint PASSED [ 33%]
test_api.py::TestAPI::test_root_endpoint PASSED [ 44%]
test_api.py::TestAPI::test_room_by_id PASSED [ 55%]
test_api.py::TestAPI::test_room_not_found PASSED [ 66%]
test_api.py::TestAPI::test_reservations_by_date PASSED [ 77%]
test_api.py::test_simulated_error PASSED [ 88%]
test_api.py::test_api_response_time PASSED [100%]
============================== 9 passed in 0.06s ===============================
```
### Tests de simulation d'erreur (Pipeline rouge)
```
❌ Erreur de connectivité simulée détectée: HTTPConnectionPool(host='backend', port=9999): Max retries exceeded...
✅ La détection automatique d'erreur fonctionne!
```
## Livrables
- **Fichier `test_api.py`** - Tests Pytest complets
- **Pipeline vert** - Validation des tests normaux
- **Pipeline rouge** - Détection automatique d'erreur
- **Workflow GitHub Actions** - CI/CD automatisée
- **Configuration Docker** - Tests intégrés dans Docker
## Configuration technique
### Variables d'environnement
- `API_BASE_URL`: URL de l'API (défaut: http://localhost:8000)
- `DATABASE_URL`: URL de la base de données PostgreSQL
### Dépendances de test
- `pytest==7.4.3` - Framework de test
- `requests==2.31.0` - Client HTTP
- `pytest-cov==4.1.0` - Couverture de code
- `pytest-timeout==2.1.0` - Timeout des tests
## Validation TP4
Le système de tests automatisés est opérationnel avec validation de la détection automatique d'erreur.
View File
-41
View File
@@ -1,41 +0,0 @@
#!/bin/bash
echo "🔍 Test de connectivité - Simulation d'erreurs"
echo "=============================================="
echo "📊 Vérification de l'état des services..."
docker compose ps
echo ""
echo "🚀 Démarrage des tests de connectivité..."
echo "(Ces tests vont simuler des erreurs pour valider la détection automatique)"
echo ""
echo "🧪 Test 1: Backend accessible"
docker compose run --rm test python -c "
import requests
try:
response = requests.get('http://backend:8000/health', timeout=5)
print('✅ Backend accessible')
except Exception as e:
print('❌ Backend inaccessible:', e)
"
echo ""
echo "🧪 Test 2: Simulation d'erreur de connectivité"
docker compose run --rm test python -c "
import requests
try:
response = requests.get('http://backend:8000/nonexistent', timeout=5)
print('❌ Erreur attendue: endpoint inexistant')
except Exception as e:
print('❌ Erreur de connectivité simulée:', e)
"
echo ""
echo "🧪 Test 3: Test avec pytest (avec erreurs intentionnelles)"
docker compose run --rm test pytest test_connectivity.py -v
echo ""
echo "✅ Tests de connectivité terminés !"
echo "Les erreurs ci-dessus sont intentionnelles pour valider la détection automatique."