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 f846ce1e6c
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.
## 📋 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
- **Frontend**: Next.js 14 + TypeScript + Tailwind CSS
- **Base de données**: PostgreSQL 16
- **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)
- Affichage des capacités et équipements
- Interface intuitive de sélection
### 📅 Réservations
### Réservations
- Formulaire de réservation complet
- Champ email optionnel
- 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
- Annulation de réservations
### 📊 Planning Visuel
### Planning Visuel
- **Grille de planning par jour** (8h-22h)
- Vue d'ensemble de toutes les salles
- 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
- Liste détaillée des réservations du jour
### 📋 Suivi
### Suivi
- Vue d'ensemble de toutes les réservations
- Filtrage par salle et par date
- Historique complet
## 🚀 Démarrage Rapide
## Démarrage Rapide
### Prérequis
@@ -341,7 +347,24 @@ Ce système est idéal pour :
- ✅ Universités et écoles
- ✅ 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 :
@@ -352,7 +375,7 @@ Pour un déploiement en production, modifiez :
5. Ajoutez un reverse proxy (Nginx, Traefik)
6. Mettez en place des sauvegardes de la base de données
## 🔐 Sécurité
## Sécurité
⚠️ **Important pour la production** :
- Changez les identifiants PostgreSQL par défaut
@@ -361,11 +384,18 @@ Pour un déploiement en production, modifiez :
- Configurez CORS correctement
- 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.
---
**🏢 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."