Présentation de l'Entreprise
Options Informatique
Options Informatique est une société spécialisée dans les services informatiques et le développement d'applications web, créée en 1989. Elle fait partie intégrante du groupe Maison Options.
Maison Options est le leader européen dans la location de matériel événementiel et la décoration éphémère.
Options Informatique assure la gestion et le développement de l'ensemble des outils numériques du groupe Maison Options. Elle joue un rôle central dans la transformation digitale du groupe, en maintenant et en faisant évoluer un parc de 20 sites web, tout en garantissant le bon fonctionnement des systèmes informatiques internes.
L'entreprise est située à Les Mureaux (78130) et elle compte actuellement une vingtaine de collaborateurs, comprenant notamment un Directeur des Systèmes d'Information (DSI), quatre employés au support technique, trois développeurs au service SI, sept développeurs web, un designer web et une product owner. Ces équipes collaborent étroitement afin d'apporter des solutions adaptées aux besoins du groupe, que ce soit en matière de développement web, de support aux utilisateurs ou de gestion d'infrastructures (serveurs, etc.).
Maison Options, la maison mère, a été fondée en 1981. Dirigée par Marc Rocagel, elle est aujourd'hui présente dans 6 pays à travers 22 implantations, dont 14 en France. Elle emploie environ 1 000 salariés et réalise un chiffre d'affaires avoisinant les 100 millions d'euros. Chaque jour, l'entreprise Maison Options organise en moyenne 3 500 réceptions en Europe. Elle dispose d'un catalogue de 3 500 références, et gère la logistique via une flotte de 220 véhicules. Plus de 33 millions d'articles sont loués chaque année.
Intégrée à cet environnement dynamique, Options Informatique agit comme un véritable moteur technologique, en développant des solutions numériques sur mesure pour soutenir l'activité événementielle et logistique du groupe.
- 20 collaborateurs répartis en équipes spécialisées
- 20 sites web en gestion et développement
- Localisation : Les Mureaux (78130)
Groupe Maison Options
- Présente dans 6 pays, 22 implantations
- 1 000 salariés
- 100 millions d'euros de chiffre d'affaires
- 3 500 réceptions organisées quotidiennement
- 3 500 références au catalogue
- 220 véhicules de logistique
- 33 millions d'articles loués annuellement
Contexte et Objectifs du Projet
Problématique
L'entreprise Maison Options souhaite gagner en efficacité dans le traitement des demandes de devis effectuées en ligne par les utilisateurs des différents sites.
Pour alléger la charge des commerciaux et éviter le travail inutile, elle effectue un premier tri permettant de classer par ordre d'importance les demandes de devis (chaud, tiède, froid).
Elle passe par un prestataire externe qui rappelle les prospects afin de leur poser un certain nombre de questions.
La réponse à ces questions détermine un score qui permet à l'équipe commerciale de hiérarchiser les demandes. Actuellement, les devis sont envoyés chaque matin par mail au prestataire externe dans des fichiers Excel.
Elle a demandé à sa filiale, Options Informatique, de réaliser une application web que le prestataire
externe pourra utiliser. Cette application extranet devra être connectée au système d'information existant
pour récupérer directement les demandes de devis et informations clients, permettre de les traiter, et de les renvoyer.
Solution
Récupération des devis depuis le SI
Appels de qualification
Questionnaire standardisé
Score automatique
Retour au service commercial
Création, édition et suppression de gestionnaires et utilisateurs de l'application
Organisation de l'Équipe Projet
Planning et Réalisations
Intégration et prise en main
Cette première semaine a été tout d'abord consacrée à la découverte de l'environnement de travail, à l'installation et à la configuration des différents outils. J'ai dans un premier temps réglé une première difficulté liée au fait que je travaillais sous un environnement Windows et que les fichiers permettant de déployer les outils avaient été configurés pour un environnement MacOS. J'ai trouvé la solution suivante pour éviter d'avoir à redémarrer le conteneur Docker après chaque modification de fichier sur Windows :
Puis j'ai paramétré Git pour qu'il soit sensible à la casse des noms de fichiers, ayant remarqué que les modifications de ce type n'étaient pas prises en compte dans mes push. Finalement, on m'a expliqué le fonctionnement des tickets avec Jira. Dans un second temps, j'ai pris connaissance du cahier des charges et de mes objectifs concernant le développement du front-end.
J'ai commencé à étudier les maquettes fournies par l'UX designer, qui m'ont permis de comprendre les attentes en termes d'interface utilisateur et d'expérience utilisateur.
J'ai commencé à coder le header de l'application. Pour cela, j'ai installé FontAwesome pour les icônes. Je me suis ensuite attelé au tableau principal. Après discussion avec l'équipe, nous avons décidé d'utiliser la version gratuite de MUI (Material-UI) et notamment le composant DataGrid pour afficher les données. Les données ont été codées en dur dans un premier temps, car les endpoints de l'API n'étaient pas encore prêts.
"filteredData" correspond aux données récupérées dans le parent Dashboard, et transmises via la propriété data du composant enfant TableData, au composant enfant de ce dernier : DataGrid
Extension des fonctionnalités
La semaine deux a été consacrée à l'extension d'un certain nombre de fonctionnalités et au développement du CSS sur les composants de la bibliothèque MUI. J'ai en particulier développé des fonctionnalités du tableau en créant un composant toggle pour ouvrir/fermer l'onglet de prévisualisation, j'ai activé le filtre natif de DataGrid MUI sur les colonnes pertinentes, et j'ai installé des packages pour pouvoir utiliser MUI.
- Composant toggle permettant d'ouvrir ou de fermer un onglet de prévisualisation :
- Amélioration du CSS en utilisant l'inspecteur pour cibler correctement le composant :
Poursuite du développement front-end et préparation pour la connexion aux endpoints de l'API REST
Lors de la troisième semaine, j'ai commencé à développer de nouvelles pages (notamment en créant des routes) et composants. Ces composants ont concerné l'onglet de prévisualisation détaillé (par exemple un composant commentaire), la page d'édition des demandes (par exemple avec des composants BlocQuestionsRéponses et InfoDemande) et l'interface de gestion utilisateur. Ensuite, j'ai préparé l'intégration avec le back-end en réalisant des tests à partir du Swagger qui m'a été fourni. Ces tests ont nécessité la création de hooks utilisant une identification avec des jetons.
- Développement de composants spécifiques :
- BlocQuestionsRéponses : Affichage des questions/réponses
- Préparation API : Analyse du Swagger et conception des requêtes REST
- Extrait du Swagger :
- Requête d'authentification :
- Exemple de hook utilisant la requête d'identification :
Sécurité et gestion utilisateurs
Lors de la semaine quatre, j'ai continué à travailler sur le CSS et à développer les pages en testant avec le Swagger les échanges de données. J'ai modifié le composant lié à la page utilisateur afin qu'il différencie les cas d'utilisateur gestionnaires et les cas d'utilisateurs non gestionnaires, afin de réaliser un affichage différencié. J'ai créé un composant filtre pour le tableau afin de remplacer le filtre natif de DataGrid MUI qui ne convenait pas en raison de fenêtres intermédiaires non éliminables. Finalement, en utilisant un champ fourni par le back-end, j'ai implémenté la fonctionnalité de verrouillage du mode édition lorsqu'un utilisateur était en train d'éditer un devis.
- Tableau de bord :
- Composant filtre :
- Utilisation du composant filtre dans le composant DataTable :
- Gestion des utilisateurs : CRUD complet avec contrôle des permissions pour affichage différencié :
Intégration totale API
Lors de cette semaine 5, je me suis focalisé sur la finalisation des différents hooks dont j'avais besoin afin de récupérer les données existantes ou transmettre les nouvelles données à la base de données. Cela m'a permis de finaliser les affichages pour les pages de gestion des utilisateurs, de gestion des demandes, et de l'onglet de prévisualisation. J'ai notamment dû créer des fonctions pour mettre les données à envoyer dans les formats attendus par le back-end et les données à afficher dans les formats attendus par le front-end.
- Page d'édition :
- Exemple de fonction pour formater les données :
Fonctionnalités avancées
J'ai commencé à implémenter les fonctionnalités liées à la sécurisation en créant un lien menant à une page de demande d'e-mail pour obtenir un lien de réinitialisation du mot de passe, puis j'ai créé la page de réinitialisation que j'ai testée en interne car le nom de domaine n'était pas encore implémenté côté back-end. Finalement, j'ai finalisé les fonctionnalités principales de la page Édition et la page de gestion des utilisateurs en testant divers scénarios. Ceci m'a permis d'identifier certains bugs liés à des paramétrages de back-end non encore finalisés (par exemple, la possibilité de changer son mot de passe alors qu'on est un utilisateur déclaré inactif).
Fonctionnalités avancées
Dans cette septième semaine, j'ai travaillé essentiellement sur la fonction de recherche du tableau et sur l'affichage des réponses de succès ou d'erreur, à l'aide du composant snackbar fourni par MUI. J'ai finalisé le CSS des différents boutons.
- Fonction recherche :
- Composant SearchModal :
- Hook useSearch :
Phase de tests et livraison
Cette dernière semaine a donné lieu à la finalisation du projet. J'ai réglé quelques soucis de CSS, amélioré le responsive, lequel n'était pas une priorité du projet, et notamment rédigé une documentation précisant la structure des composants front-end et les démarches à effectuer avant la phase de validation et mise en production. Ces démarches concernaient notamment le paramétrage de certains ID liés aux permissions. J'ai également ajouté un autre champ commentaire qui n'était pas initialement prévu.
- Préparation à la livraison : Extrait de la documentation
Analyse du Travail Réalisé
Points forts
Points d'amélioration
- Utilisation limitée de Redux
- Tests insuffisants
- Documentation technique incomplète
Actions correctives
- Refactoring
- Ajout de gestion d'erreurs
- Préconisations : TypeScript, Storybook, tests E2E
Bilan Personnel
Compétences développées
Apports du stage
Expérience concrète du travail en entreprise, renforcement des compétences front-end.
Perspectives
- Formation TypeScript, micro-frontends
- Certification AWS
- Poste front-end senior à moyen terme
Remerciements
Merci à Xavier Perrault, Ali, Bilel, Guillaume, Ibra, et toute l'équipe d'Options Informatique pour leur soutien, leur accueil, et les échanges enrichissants pendant ces deux mois.