Application développée pour la DGFiP visant à numériser un classeur de plan de continuation d'activité avec gestion des actions et des agents, et visualisation des étapes et des statistiques.
Le projet PCA est une application web complète développée pour la Direction Générale des Finances Publiques (DGFiP) dans le cadre de mon alternance. Cette application permet de numériser et gérer les Plans de Continuité d'Activité, qui sont des documents stratégiques essentiels pour assurer la continuité des services publics en cas de crise.
L'application permet de paramétrer les structures et acteurs, de créer séquentiellement le PCA par phases, de contrôler le déroulement par le responsable PCA, et de générer des comptes-rendus d'exécution. Elle assure une traçabilité complète du processus métier.
Défi : Gérer efficacement les attributions hiérarchiques avec maintien d'ordre strict, insertions en position arbitraire et navigation bidirectionnelle.
Solution : Implémentation d'une LinkedList bidirectionnelle optimisée avec trois algorithmes d'insertion spécialisés (tête, queue, milieu) et prévention des boucles infinies de chargement via des stratégies de lazy loading appropriées.
Défi : Éviter la redondance et les incohérences dans les relations bidirectionnelles tout en maintenant les performances.
Solution : Utilisation de l'annotation @OneToOne(mappedBy) pour stocker une seule direction de la relation tout en permettant la navigation bidirectionnelle, réduisant l'espace de stockage et éliminant les risques d'incohérence.
Défi : Garantir que les tests d'intégration reflètent fidèlement l'environnement de production sans sacrifier la performance.
Solution : Choix de Testcontainers avec PostgreSQL plutôt que HSQLDB, création d'une classe de conteneur personnalisée, et mise en place d'une hiérarchie de classes de test pour mutualiser la configuration.
Défi : Gérer différentes configurations pour les environnements de développement, d'intégration et de production.
Solution : Mise en place de profils Maven avec surcharge conditionnelle des propriétés et configuration externalisée via fichiers properties, permettant une adaptation automatique selon l'environnement d'exécution.
Optimisation des algorithmes avec complexité O(1) pour les opérations de base et réduction significative des temps de réponse.
Réduction des mauvaises pratiques de 41 à 6 et maintien d'une couverture de tests élevée pour garantir la fiabilité.
Documentation technique complète facilitant l'adoption des nouvelles technologies et la montée en compétences de l'équipe.