diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..f14bea4 --- /dev/null +++ b/CHANGELOG.md @@ -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 diff --git a/README.md b/README.md index 189113c..671c6cb 100644 --- a/README.md +++ b/README.md @@ -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 !** diff --git a/README_TP4.md b/README_TP4.md deleted file mode 100644 index bc972b7..0000000 --- a/README_TP4.md +++ /dev/null @@ -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. diff --git a/test-connectivity.bat b/scripts/test-connectivity.bat similarity index 100% rename from test-connectivity.bat rename to scripts/test-connectivity.bat diff --git a/test.bat b/scripts/test.bat similarity index 100% rename from test.bat rename to scripts/test.bat diff --git a/test-connectivity.sh b/test-connectivity.sh deleted file mode 100644 index 7563d83..0000000 --- a/test-connectivity.sh +++ /dev/null @@ -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."