Exercice Final
Exercice Pratique
Durée estimée : environ 1 semaine à 2 semaines
Objectif
Valider vos acquis, se challenger et se dépasser.
Énoncé
Etape 1
Reprenez votre solution Warehouse Management Service la plus avancée
- Implémenter une Authentification et des authorizations
- Différenciez quatre types d'utilisateurs (Anonyme, Customer, Magasinier,Livreur, Admin)
- Les visiteurs anonymes
- Accèdent aux pages
home
et privacy
.
- Ils peuvent également s'inscrire et s'authentifier pour devenir Customer.
- Mais n’accèdent pas aux autres pages.
- Les membres inscrits (Customer) accèdent à la page
Orders
- Ils peuvent soummetre une commande. Ils deviennent commanditaire. La commande est crée à l'état
Submited
- Ils peuvent modifier une commande si celle-ci à l'état
Submited
.
- Ils peuvent visualiser le détail d'une commande précédante, mais ne peuvent pas la modifier.
- Les magasiniers
- Ils visualisent toutes les commandes soumises.
- Ils peuvent visualiser le détail d'une commande.
- À partir de l'écran détail, ils marquent les commandes comme
Processing
.
- Ils peuvent consulter les plannings de livraison de tous les livreurs
- Ils peuvent modifier et supprimer les stocks et les articles.
- Les livreurs
- Ils peuvent consulter leur planning de livraison
- L’administrateur
- Gére les utilisateurs magasinier. (Ajout, Supression, Désactivation)
Etape 2
A présent, lorsqu'une commande est soumise par un client
-
le système doit calculer une durée livraison. (aléatoire entre 0 et 120minutes).
Ceci va nous être utile pour la suite.
-
Implémentez Nlog
Etape 3
Lorsqu'une commande est à l'état en traitement les magasiniers peuvent
- Planifier la livraison de la commande
- Pour planifier une commande le magasinier doit:
- Sélectionner un créneau disponible de livraison.
Ceux-ci lui sont automatiquement proposés.
- La durée d'une livraison est d'une heure + durée livraison de la commande
Un livreur ne peut pas livrer deux commandes sur le même horaire.
Un livreur travaille de 8h à 12h30 et de 13h30 17h30.
Nous avons par défaut 2 livreurs (Jean & Paul).
Nous pouvons planifier jusqu'a 15 jours à l'avance.
Etape 4
Le livreur peut
- Marquer une commande/livraison comme livrée à partir de son planning.
Ce qui entraine:
- La création d'une facture. Disponible sur le détail d'une commande. Nous devons
pouvoir l'obtenir
au format (PDF)
- Une facture détient un numéro unique au format
ANNEE-MOIS-NUMERO_FACTURE
- L'envoi d'un email indiquant que la commande est livrée + Facture.
Etape 5 - Coût de livraison
Les livreurs ne sont plus
salariés de WMS. WMS est facturé a chaque expédition, sur une commande s'ajoute le coût
de livraison. Pour l'obtenir faîte appel à l'api DHLFakeApi
- l'endpoint
POST
DHLFakeApi:8080/api/shipping
- Prends:
{
"adress":"20 Rue de la paix",
"codePostal":35000,
"content":[
"x2 souris",
"x1 ordinateur"
]
}
- Retourne dans le cas d'un 200
{
"shippingNumber":12345,
"cost":15.0,
"status":"planned"
}
Le cout doit être répercuté et visible sur les factures.
Déplacez le code la planification des livraisons dans l'api DHLFakeApi
- ajoutez un endpoint
GET
DHLFakeApi:8080/api/shipping/creneaux
pour obtenir les creneaux de livraison possible et compatible.
- modifiez l'endpoint
POST
DHLFakeApi:8080/api/shipping
pour prendre la date livraison souhaitée.
- ajoutez un endpoint
GET
DHLFakeApi:8080/api/planning
pour obtenir les livraison prévues.
Choissisez le challenge qui vous plait le plus.
Migration Cloud
La société grandi et les commandes se font toujours plus nombreuses. Il faut pouvoir tenir la charge, une mise à l'échelle est nécéssaire.
- Déployer cette solution dans le cloud. Par exemple, utilisez AWS avec Fargate ou Lambda pour construire vos factures et S3 pour les sauvgarder.
Problèmes avancés
Deux problèmes subiste dans ce système:
Deux factures peuvent avoir le même numéro si elles sont crées en même temps.
- Corriger cela en utilisant les bonnes pratiques thread safe pour éviter ce problème.Docs (ici)
- Imaginons que la construction du PDF d'une facture est long. (env 15Min) Dans ces conditions, qu'elle solution pourrions nous mettre en place ?
Migration de BDD
Pour des raisons budgetaire nous envisageons de changer SGBD
- Migrer de SQL Server à SQLLite.
- Migrer de SQL Server à MongoDB.
- Vérifiez l'ingralité du système et son intégration.
ChatBot et Support
Nous avons besoin de mettre un service Support pour accompagner les utilisateurs (Clients) du site
- Les membres du Support appartiennent à un nouveau rôle
SUPPORT
- Les membres du support ont accès a toutes les discussions ouvertes.
- Les discutions sont listés et triées par date de derniere réponse du Support. (Non Répondu, Répondu hier, Répondu aujourd'hui)
- Vous utiliserez SignalR pour la communication.
- Concevez un espace de discussion en temps réel entre l'utilisateur et un membre du Support. Le client doit pouvoir démarrer la discussion facilement.
- Implémentez un chat bot qui réponds au mieux aux questions fréquentes avec une IA
Pour aller plus loin, consultez la roadmap:
Vous serez évalué sur votre conception, la qualité logicielle et sur le respect des principes de l'architecture
propre.
Proposition de solution
Une proposition de solution pour ce TP est placée dans les éléments en téléchargement liés à ce module.