TP5: Prepare release v1.0.0 - Add CHANGELOG, reorganize scripts, update README
This commit is contained in:
+105
@@ -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
|
||||
@@ -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
|
||||
[](https://github.com/SarTron-NorthBlue/dockezr/releases/tag/v1.0.0)
|
||||
[](https://github.com/SarTron-NorthBlue/dockezr/actions)
|
||||
[](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
@@ -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.
|
||||
@@ -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."
|
||||
Reference in New Issue
Block a user