1 - Initialisation et structuration de projet
Séance 1 (4h)
API E-commerce - Architecture
IA : avec modération
- Générative : uniquement pour correction/débogage, amélioration, aucune soumission de TAF
- Assistant de codage, type copilot : avec contrôle des productions
Stack technique
- Spring Boot 3+
- Base de données : H2 (fichier)
- JPA (Hibernate)
- Build : Maven
- Tests : JUnit 5
- GitHub classRoom
Spécifications
Mise en place d'une API REST pour la gestion des utilisateurs, des produits et des commandes, utilisable dans le cadre d'une application web e-commerce générique.
End points
Users
POST /users - Créer un utilisateur
GET /users/{id} - Récupérer un utilisateur
GET /users/{id}/recommendations - Produits recommandés pour l'utilisateur
Products
POST /products - Créer un produit
GET /products/{id} - Récupérer un produit
PUT /products/{id}/stock - Mettre à jour le stock
GET /products - Lister les produits (avec filtres optionnels)
Orders
POST /orders - Créer une commande
GET /orders/{id} - Récupérer une commande
GET /users/{userId}/orders - Historique des commandes d'un user
Modèle de données
Données exemple
User
{
"id": "550e8400-e29b-41d4-a716-446655440001",
"name": "Alice Martin",
"email": "alice.martin@example.com",
"preferredCategoryIds": [
"550e8400-e29b-41d4-a716-446655440010",
"550e8400-e29b-41d4-a716-446655440011"
]
}
Product
{
"id": "550e8400-e29b-41d4-a716-446655440020",
"name": "iPhone 15 Pro",
"price": 1199.99,
"stock": 25,
"categoryId": "550e8400-e29b-41d4-a716-446655440010"
}
Order
{
"id": "550e8400-e29b-41d4-a716-446655440030",
"userId": "550e8400-e29b-41d4-a716-446655440001",
"items": [
{
"id": "550e8400-e29b-41d4-a716-446655440040",
"productId": "550e8400-e29b-41d4-a716-446655440020",
"quantity": 2,
"unitPrice": 1199.99
}
],
"totalAmount": 2399.98,
"status": "CONFIRMED",
"createdAt": "2024-01-15T14:30:00Z"
}
Order item
{
"id": "550e8400-e29b-41d4-a716-446655440040",
"productId": "550e8400-e29b-41d4-a716-446655440020",
"quantity": 2,
"unitPrice": 1199.99
}
Category
{
"id": "550e8400-e29b-41d4-a716-446655440010",
"name": "Electronics",
"description": "Electronic devices and accessories"
}
Attendus
Architecture
- Séparation couche métier/applicative :
- Controllers (API REST)
- Services (logique métier)
- Repositories (accès données)
- DTOs pour les échanges API
- Entities pour le domaine métier
Tests
- Tests unitaires sur les services principaux
- Tests d'intégration basiques des controllers
CI/CD
- GitHub Actions : exécution tests sur push/PR
- Pas de déploiement (tests uniquement)
Priorités (4h)
- Entities : User, Product, Category
- CRUD Product + tests unitaires/intégration
- Pipeline CI/CD fonctionnel
- Privilégier la qualité
- Toutes les bonnes initiatives sont les bienvenues