Dans le contexte de cette année en alternance, j'ai intégré l'équipe de développeurs web qui gère XLPro Portal chez Legrand France. XLPro Portal est un ensemble d'outils web qui sert de support pour les services d'XLPro avec de nombreuses fonctionnalités essentielles comme un portail de traduction, des statistiques d'utilisation des logiciels XLPro ou l'attribution de droits. Ces services sont donc en liens étroits avec d'autres corps de l'entreprise et de l'équipe XLPro.
Mobiliser les compétences en conception et en développement pour maintenir un projet existant, à l'aide des méthodes agiles de gestion de projet.
Comprendre et appliquer une méthodologie de gestion de projet pour garantir une coordination efficace, une planification précise et une maîtrise des ressources dans un contexte professionnel.
R5.01 | Anglais
R5.DWeb-DI.05 | Développement front avancé
R5.DWeb-DI.06 | Développement back avancé
R5.DWeb-DI.07 | Dispositifs interactifs
R5.DWeb-DI.08 | Hébergement et cybersécurité
XLPro Portal est un ensemble de microservices Symfony appuyant les logiciels XLPro. Une architecture en microservices est un style d’architecture logicielle où une application est structurée comme un ensemble de petits services indépendants, chacun étant spécialisé dans une fonctionnalité précise, déployable séparément et communiquant via des API. Le front office rassemble la plupart des fonctionnalités de XLPro Portal, il affiche les statistiques d'utilisation des logiciels, permet d'accéder aux dernières versions selon les pays, générer des clés d'activation, accèder à de la documentation, etc. Le translator est un service qui permet d'écrire des traductions pour les logiciels selon les IDS (clés de traductions dans les logiciels) requis par ceux-ci. Le back office sert à administrer le front office et le translator. Le tout est conjoint par le data service qui sert d'API pour stocker et traiter les données, comme les remontées d'informations des études par exemple.
Les services sont faits entièrement en Symfony donc la partie front de chaque site est faite grâce au framework. Ainsi, j'ai développé ces interfaces à l'aide de Twig, Sass et jQuery. Comme j'ai montré des savoir-faire d'UX design, on m'a attribué des tâches de conception ou mise à jour d'interfaces, selon les demandes des utilisateurs.
Sur ma tâche principale, à savoir le générateur de statistiques, j'ai aussi conçu toute la partie front. Je me suis appuyé sur les formulaires de Symfony et Symfony UX pour concevoir la logique du formulaire aussi bien pour l'affichage que pour la logique d'envoie des demandes de l'utilisateur. J'ai conçu le formulaire de requêtes de statistiques pour donner de l'interactivité sophistiqué et de la liberté pour l'utilisateur pour formuler ses demandes. Grâce à Symfony UX, on peut rechercher dans les sélecteurs ce qui dynamise la construction des filtres . Le champ "Références" fonctionne par expression régulière, ce qui permet de concevoir une demande très personnalisé et facilite l'importation depuis une liste de références demandée par un client ou récupérée depuis un fichier Excel.
Ces travaux ont été très enrichissants car j'ai du travailler avec les utilisateurs pour comprendre les besoins et ensuite développer une solution adéquat ce qui m'a permis d'améliorer mon approche sur la conception d'interface. J'ai perfectionné ma prise en main de Symfony pour le front, notamment sur le traitement des soumissions de formulaires. J'ai appris des fonctionnalités de Twig comme la traduction et j'ai amélioré ma connaissance globale du moteur. Au niveau de Sass, j'ai mieux structuré le code pour le rendre plus clair et maintenable qu'auparavant. Enfin, je me suis familiariser avec Symfony UX dont les outils sont, pour moi, très pertinent pour faire du front en Symfony et que je compte réutiliser.
La grande majorité des tâches qui ont demandé un travail en back concernaient le générateur de statistiques. Cet outil a pour but, comme son nom l'indique, de renvoyer des statistiques sur les données des études faites sur les logiciels XLPro ou sur les données des utilisateurs de ceux-ci. Les demandes sont constituées selon des fonctions prédéfinies et des filtres personnalisables sur l'interface. Les défis majeurs ont été d’établir des liens pertinents entre les données pour répondre aux besoins des utilisateurs et d'optimiser le système pour gérer le volume d’informations.
Pour bien comprendre sur quoi les statistiques sont faites, il faut d'abord expliquer:
à quoi sert le logiciel XLPro³ Tableaux
les données récupérées dans la base et leurs formats
Le logiciel XLPro³ Tableaux de Legrand est un outil conçu pour aider les professionnels de l'électricité à concevoir, implanter et chiffrer des tableaux de distribution. Ainsi, dans le logiciel, un utilisateur peut créer des études qui contiennent des tableaux. Ces tableaux sont donc construits avec des produits Legrand et peuvent être multiplié en quantité. Ces multiplicateurs de quantités donnent, en interne, les notions de "tableaux différents" (sans le multiplicateur) et de "tableaux chiffrés" (avec le multiplicateur).
Les actions de l'utilisateur sur ses études sont ensuite remontées dans une table de la base de données MySQL du XLPro Portal, une ligne correspondant à une étude. La structure de table est conçue telle que certaines colonnes concernent l'étude et d'autres les tableaux contenus par l'études. Les colonnes qui portent sur les tableaux contiennent les informations des tableaux dans une chaine séparées par des ";" pour chaque colonne, formant ainsi un tableaux de données de la colonne de tous les tableaux de l'étude pour chaque colonne. Par conséquent, un tableau de distribution d'une étude est identifié par son index dans ces tableaux qui est donc identique pour chaque colonne.
Exemple :
Étude dans le contour JFR et dans le pays France :
-> 3 tableaux différents (amount) et 5 tableaux chiffrés (quantities) :
-> Tableau 1 :
Enveloppe : IDS_COFFRETS_XL3_400_METAL
Quantité : 2
Références : 003721+3*004049+4*004167+004876+006017+6*006043+7*006045+2*006561+5*006563+006564+006567+006568+008695+008703+2*008704+2*037170+12*037271
Références composées : /
Calibrage : 125
ICC : 3000
Forme : 1
IS : 111
De même pour les 2 autres tableaux en suivant les index.
Ainsi, les dispositifs interagissent tels que:
L'utilisateur envoie une demande avec le formulaire, qui est ensuite stockée en base de données du front office service.
Toutes les dix minutes, la crontab exécute la commande qui vérifie l'état des demande en base de données. Si le statut est nouveau, le script lance la génération des statistiques.
La fonction lance une requête au data service pour récupérer les données des études concernées par la demandes selon les filtres sur les études.
Ces données sont ensuite triées et traitées pour les demandes sur le serveur du front office pour éviter de surcharger le data service, ce qui serait gênant dans cette architecture en microservice pénalisant ainsi les autres services. Les résultats de chaque fonctions sont stockées dans un tableau et préformatés pour PhpSpreedSheet qui va créer le Excel.
Une fois les résultats de toutes les fonctions prêts, un script génère un fichier Excel qui contient le titre de la demande, les filtres sur les études et tableaux, les totaux, les résultats des requêtes, puis éventuellement la durée et les données brutes.
Quand la génération du fichier est terminé, un mail est envoyé à l'utilisateur avec un lien de téléchargement. Il peut aussi télécharger le fichier depuis l'historique de ses requêtes sur le portail.
AC34.01 | Développer à l’aide d’un framework de développement côté client
Les travaux réalisés en alternance m'ont fait progresser sur la partie front de Symfony. Je souhaite approfondir davantage les outils Symfony UX pour parfaire ma conception d'application Symfony moderne, notamment avec l'outil Turbo.
AC34.02 | Développer à l’aide d’un framework de développement côté serveur
J'ai nettement renforcé mes compétences en développement back-end au cours de mon alternance, aussi bien en algorithmique, en conception et en gestion de bases de données. J'ai aussi amélioré ma maitrise du framework Symfony.
AC34.03 | Développer des dispositifs interactifs sophistiqués
Au cours de cette alternance, j'ai perfectionné mes compétences en interaction entre dispositifs et utilisateurs, visant à offrir une expérience utilisateur optimale. L'architecture en microservices m'a permis de me renforcer en interaction entre les dispositifs.
AC34.04 | Concevoir et développer des composants logiciels, plugins ou extensions
Dans le cadre de cette alternance, j'ai développé des composants au sein du framework Symfony. J'ai renforcé mes compétences en conception et en interaction de ces composants pour concevoir des applications plus robustes.
AC34.05 | Maitriser l'hébergement et le déploiement d'applications
J'ai améliorer ma compréhension d'un déploiement en suivant les déploiements de mon tuteur.
Plus de détails dans mon rapport d'alternance