Expérience professionnelle
LexisNexis Depuis 01/2024
Description
CONTEXTE
LexisNexis France est la branche française de l'entreprise globale LexisNexis,
spécialisée dans la fourniture de solutions d'information juridique et professionnelle.
Elle propose une gamme de services destinés aux avocats, juristes, notaires,
entreprises, et autres professionnels du secteur juridique en France.
Realisations:
Etude et analyse :
● Daily Meetings en Anglais avec le Business et développeurs aux USA, Afrique du
Sud, Inde.
● Méthodologie Agile avec sprint de 2 semaines.
Développement Back:
Projets
● Configuration Peer
○ Développement d’un service en C# pour ajouter des alias de pré-filtres
dans un système de gestion de configuration.
○ Utilisation des repositories et de l'architecture orientée services pour
interagir avec les entités LaPreFilter et LaMasterFeature.
○ Implémentation d'une méthode de gestion des alias permettant
d'améliorer la catégorisation et la recherche de contenus.
○ Respect des bonnes pratiques en .NET, gestion des tâches asynchrones
et manipulation de collections avec LINQ.
○ Développement d'un service en C#/.NET permettant la mise à jour
dynamique des URLs des endpoints dans un système de gestion de
configuration.
○ Utilisation des variables d'environnement pour adapter les URLs en
fonction des environnements (dev, prod, etc.).
○ Implémentation d'une méthode asynchrone pour rechercher et mettre à
jour les endpoints en base de données via un repository pattern.
○ Gestion des fonctionnalités de recherche, parsing, récupération et STM
(Search Term Mapping) pour plusieurs types de contenus.
○ Optimisation du rafraîchissement des données en utilisant
DataRepository pour synchroniser les MasterFeatures et
ContentTypes.
● UsDocument Peer :
○ Conception et développement de services backend en C# et .NET Core
pour la gestion et la récupération de documents juridiques.
○ Implémentation d'extensions pour le traitement des requêtes de
récupération de documents via des APIs REST et des services distribués.
○ Intégration et gestion des convertisseurs de réponses pour assurer la
transformation des données entre les différents systèmes.
○ Utilisation d'XML Serializer pour la sérialisation/désérialisation des
requêtes et réponses.
○ Collaboration avec des équipes de développement pour l’optimisation de
l’extensibilité des services backend via des modules d’extensions.
○ Gestion des logs et de la télémétrie avec ILoggerFactory et
UsDocumentActivitySource pour assurer le suivi des requêtes et la
détection d’anomalies.
○ Amélioration de la robustesse des services via la gestion des erreurs et
des réponses d’échec (HTTP 4xx, 5xx) avec des classes spécifiques
d’exception.
● SearchBox Peer
○ Développement et optimisation des SearchBox pour une plateforme de
recherche avancée.
○ Implémentation d’une méthode asynchrone pour générer des modèles
de recherche dynamiques basés sur les préférences utilisateur.
○ Intégration de services et d’APIs pour gérer les filtres de recherche
persistants et les options de préfiltrage.
○ Gestion des données de filtres de contenu via des modèles de mapping
et utilisation de LINQ pour les sélections de contenu.
○ Optimisation des paramètres de recherche en fonction du contexte
d'exécution et des configurations personnalisées.
○ Application des bonnes pratiques en C#, .NET Core pour la performance
des services backend.
○ Utilisation des Guid et gestion des configurations dynamiques pour une
expérience de recherche personnalisée.
● AdvancedSearch Peer
○ Développement et exposition API REST en ASP.NET Core pour la
récupération et la gestion des SearchBox dynamiques.
○ Implémentation d’une méthode asynchrone pour récupérer les
modèles de recherche dynamiques via le service
AdvancedSearchService.
○ Gestion des exceptions et traçabilité des erreurs en utilisant
Activity.Current pour assurer un suivi détaillé des logs.
○ Interaction avec des services externes via le client
IDynamicPagesClientService pour récupérer les configurations de
SearchBox.
○ Sérialisation et désérialisation des données en JSON avec
System.Text.Json pour manipuler les modèles de configuration de
recherche.
○ Utilisation de Guid pour identifier et traiter les PodId dynamiques dans
le cadre de la personnalisation des recherches.
○ Application des bonnes pratiques en C# et .NET Core pour garantir la
performance et la fiabilité des services backend.
○ Optimisation des requêtes LINQ pour l’extraction des métadonnées et
des configurations associées aux SearchBox.
Développement Front:
● Search Micro Front End
○ Internationalisation (i18n) de l'interface utilisateur dans une
application Angular en utilisant des traductions dynamiques pour les
textes de l'interface (par exemple,
DeliveryTrayRemoveAllDocumentMessage,
DeliveryTrayClearButton, DeliveryTrayDialogCancelButton).
○ Développement de la logique métier pour vider les éléments
sélectionnés d'un panier de livraison via une boîte de dialogue de
confirmation, avec la gestion des actions de soumission et d'annulation
en utilisant les liaisons Angular pour les textes des boutons.
○ Intégration d'un service RxJS pour gérer la suppression asynchrone
des éléments du panier.
○ Utilisation des composants Angular et des liaisons de données pour
garantir une interface interactive fluide avec une gestion précise de l'état
des éléments dans le panier de livraison.
● Advanced Search Micro Front End
○ Développement d'un composant Angular basé sur
AdvancedSearchForm, pour gérer les formulaires de recherche
avancée avec des fonctionnalités personnalisées.
○ Implémentation de la logique de connecteurs dynamiques en fonction
de la taille de l'écran et des préférences utilisateur via la gestion de l'état
dynamique de l'interface (Responsive Design).
○ Intégration d'API avec GuidedSearchFormService pour la récupération
asynchrone des modèles de recherche et gestion des réponses avec RxJS
et observables.
○ Internationalisation des interfaces utilisateur en utilisant le dictionnaire
(Dictionary) pour la gestion multilingue des traductions.
○ Optimisation de l'affichage des connecteurs de recherche en utilisant
des directives Angular comme @HostListener pour la gestion des
événements de redimensionnement.
○ Développement d'un module Angular pour la gestion des composants de
la page AdvancedSearch avec configuration dynamique et
localisation.
○ Intégration du module SharedAdvancedSearchModule et configuration
des routes via RouterModule.forChild pour la navigation dans le
sous-module.
○ Mise en place de la gestion multilingue en utilisant la méthode
getTranslations pour charger les traductions en fonction de la langue de
l'utilisateur via l'injection de dépendances dans le window global.
○ Fourniture de services Dynamiques via des providers pour injecter la
configuration spécifique à la recherche avancée en utilisant le
FrAdvancedSearchConfigurationProvider.
○ Utilisation de ComponentFactoryResolver pour la résolution
dynamique du FrAdvancedSearchComponent et permettre une
instanciation dynamique des composants au sein du module.
○ Application des bonnes pratiques en Angular pour la gestion de la
configuration, la localisation et l'intégration des composants enfants via
@NgModule
Utilisation de @Input et @ViewChild pour la gestion des propriétés
dynamiques et l'interaction avec des composants enfants dans
Angular.
○ Configuration d'un module Angular dynamique pour le formulaire de
recherche avancée en utilisant la stratégie de micro-frontends via
module federation.
○ Définition du nom du module ngModuleName
(FrAdvancedSearchModule) et spécification de l'entrée distante du
module via le fichier de configuration
advancedsearchform.config.latest.js pour charger dynamiquement le
composant de recherche avancée.
○ Mise en place de la route associée au formulaire de recherche avancée
avec le chemin routePath "advanced-search-form", facilitant l'intégration
avec d'autres modules externes dans une architecture modulaire.
○ Exposition du module de recherche avancée pour une intégration
flexible et évolutive dans l'application, permettant une chargement à la
volée des fonctionnalités via Web Components ou Micro Frontends.
Déploiement:
○ Azure Devops
○ Jenkins
Tests:
○ Tests unitaire avec Xunit
Environnement
C# 12 , .NET Core, Asynchronous Programming, LINQ, Repository Pattern, Dependency
Injection, ILoggerFactory, UsDocumentActivitySource, XML Serializer, Angular 12, RxJS,
@HostListener, @Input, @ViewChild, Responsive Design, Internationalisation (i18n),
getTranslations, Micro Frontends, Module Federation, Azure DevOps, Jenkins, CI/CD,
xUnit, Moq, Principes SOLID
AEW 10/2022 à 11/2023
CONTEXTE
Au sein de la DSI AEW développement, migration d’un outil POLYGON de reporting et de
validation des données des partenaires.
REALISATION:
Etude et analyse :
● Meetings en Anglais avec le Business pour élaboration du besoin.
● Daily meetings avec l’équipe de dev.
● Conception de l’architecture.
Développement Back:
● Développement en .NET Core 3.1 des couches Repository, Service et API avec
C# 6.
● Développement des contrôleurs en MVC.
● Utilisation de l’automapper pour les DTO (Data Transfert Object).
● Traçabilité avec LoggerFactory.
● Test de l’API avec SWAGGER.
● Utilisation des Principes SOLID.
● Développement de l’authentification AD.
● Développement d’un IDP pour la sécurité de l’api avec le protocole Oauth2.
●...