Acoss
Présentation de l'entreprise
- Numéro de SIRET : 180 035 016 00096
- Dénomination sociale : ACOSS NANTES
- Forme juridique : Établissement public national à caractère administratif
L'Union de Recouvrement des cotisations de Sécurité Sociale et d'Allocations Familiales (Urssaf) est un organisme qui procède à la collecte et à la redistribution des cotisations et contributions destinées au financement de la Sécurité sociale.
Au sein de l'entreprise, il y a plusieurs groupes, nous faisons tous partie de la DSI (direction des systèmes d'information). Je faisais partie du groupe DA architecture infrastructures et sécurité.
Dans ce groupe j'agissais dans le département socle et composant qui gère lui toute la gamme éthique et les outils transverses
Les outils sur lesquels mon département agit sont les outils transverses, pour ma part j'ai simplement agi sur l'application DDP-DIT
L'entreprise Acoss est le pilier de l'échange d'information informatique dans le domaine du recouvrement
L'objectif de l'URSSAF est de collecter des fonds auprès de cotisants tels que les employeurs/entrepreneurs et salariés afin de reverser ces fonds pour l'assurance maladie
Technologies
PHP
PostgreSQL
Angular
PHP Storm
DBeaver
Fork
Insomnia
GitLab
Mission Principale
Objectif :
Dans un premier temps, le client demande la création d'un backend "template_fedex" capable d'interroger une BDD avec toutes les méthodes d'appel API GET/POST/PUT/DELETE d'une table créée au préalable afin de faire une interface utilisateur permettant de paramétrer des données dans une interface utilisateur. Pour cela, le client nous fournit une image qui montrerait à quoi devrait ressembler cette interface de paramétrage. Et dans un second temps faire évoluer le web-service fedex présent dans DDP-DIT pour pouvoir copier les droits de modifications et de création associés au projet template_fedex
Structure Base
Création de la table ' template_fedex ' en sql sur la base de données ddpdit
________________________________________________________________________________________________________________________________________________________________
Sur le Back-End
Le back-end est constitué de plusieurs couches, l'entité qui est l'objet qui contiendra les informations et par laquelle on va appeler, le Controller qui va initier les méthodes d'appel, le service va faire le lien avec la BDD pour récupérer les données en base ou envoyer des données dans la base et le repository qui contient des fonctions complémentaires aux appels back-end
Entity
Création d'une nouvelle entité TemplateFedex en définissant une contrainte en disant que cette entité doit être connectée à la table socle pour récupérer ses données
Entity
Définition des attributs de l'entité, ici il s'agit de hawaiBDD qui est un booléen qui est initialisé à false et socle qui est une many to one vers l'entité socle
Entity
Définition des Getters / Setters de tous les attributs présents dans TemplateFedex
________________________________________________________________________________________________________________________________________________________________
Méthode GET
Cette méthode permet de récupérer les données contenues dans la base de données et de les afficher.
Back-end Controller
Instanciation de la route pour l'API doc.
Back-end Controller
Appel de la fonction service et stockage des informations de "getListe" dans une liste.
Back-end Service
Récupère les données contenues dans la base pour les renvoyer.
Route
Voici la route par laquelle les données sont accessibles.
Vérification route
Vérification via Insomnia pour la récupération des données contenues dans la base.
________________________________________________________________________________________________________________________________________________________________
Méthode POST
Cette méthode permet d'envoyer une nouvelle donnée dans la base de données.
Back-end Controller
Instanciation de la route pour l'API doc.
Back-end Controller
Appel de la fonction service "create".
Back-end Service
Permet la création de la donnée pour l'envoyer dans la base.
Back-end Service
Appel de la fonction dans le repository.
Back-end Repository
Fonction de recherche pour éviter les doublons.
Route
Voici la route par laquelle on peut ajouter une donnée.
Vérification route
Vérification via Insomnia pour l'entrée d'une donnée dans la base.
Vérification route
Vérification via Insomnia pour éviter les doublons de données dans la base.
________________________________________________________________________________________________________________________________________________________________
Méthode PUT
Cette méthode permet de modifier une donnée dans la base de données.
Back-end Controller
Instanciation de la route pour l'API doc. Ici on voit qu'il y a un paramètre en plus, on demande à fournir un id pour savoir quelle donnée on veut modifier.
Back-end Controller
Appel de la fonction service "modifier".
Back-end Service
Récupère la donnée sélectionnée et la modifie dans la base pour la renvoyer.
Route
Voici la route par laquelle on peut modifier les données.
Vérification route
Vérification via Insomnia pour la modification d'une donnée contenue dans la base.
________________________________________________________________________________________________________________________________________________________________
Méthode DELETE
Cette méthode permet de supprimer une donnée de la base de données.
Back-end Controller
Instanciation de la route pour l'API doc. Ici on voit qu'il y a un paramètre en plus, on demande à fournir un id pour savoir quelle donnée on veut supprimer.
Back-end Controller
Appel de la fonction service "supprimer".
Back-end Service
Récupère la donnée sélectionnée et la supprime de la base.
Route
Voici la route par laquelle on peut supprimer les données.
Vérification route
Vérification via Insomnia pour la suppression d'une donnée contenue dans la base.
________________________________________________________________________________________________________________________________________________________________
Front-end
Front-end Template
Ici on instancie les données qui seront visibles dans l'interface utilisateur
Front-end Composant
Dans le composant on configure directement les données que l'on veut afficher
Front-end Service
Le service permet d'appeler les méthodes de l'API
Front-end API service
L'API service permet en fonction de la méthode appelée de faire le lien entre les données de la base de données et les données envoyées
Rendu utilisateur
________________________________________________________________________________________________________________________________________________________________
Exploitation de la donnée
Interface Jenkins
Cette fonction permet de créer un projet dans l'application fedex via les interfaces de l'application DDP-DIT.
Paramétrage du paquet
Sur cette fonction je devais réaliser une connexion avec mon interface pour qu'elle puisse prendre en paramètre deux attributs. Le nom du projet template_fedex et le type de projet template fedex.
Build du paquet
Ces attributs sont reliés à cette instanciation dans le même fichier, cette instanciation fait appel au service de template_fedex qui permet de récupérer un template qui correspond au projet indiqué. Si aucun template ne correspond à mon projet alors je définis ma variable à null pour éviter de casser mon code.
Webmin
Ainsi si un template correspond au projet alors les deux nouveaux attributs vont prendre la donnée qui correspond au nom du template et au socle de fedex qui correspond au type de projet.
Grâce à ça, si un template correspond à un projet fedex alors les droits de modifications et de création pourront être copiés du template au projet fedex
________________________________________________________________________________________________________________________________________________________________
Intégration
Interface Jenkins
Interface Jenkins (application qui sert à l'automatisation de tâches de déploiement). En cliquant sur "lancer un build avec des paramètres" j'accède à cette interface suivante.
Paramétrage du paquet
Ici je retrouve les paramètres, je paramètre donc la bonne branche à prendre pour créer le paquet et je m'assure que la coche est active, elle doit intégrer le web-service fedex qui sert au fonctionnement de mon projet DDP-DIT.
Build du paquet
Ici on voit la création du paquet.
Webmin
Après avoir buildé le paquet je passe sur l'application Webmin (application qui sert à gérer toutes les applications du site)
Configuration Projet
Sur Webmin après avoir sélectionné mon projet (DDP-DIT) je choisis la nouvelle version du paquet générée par Jenkins
Déploiement du paquet sur les serveurs
Ensuite je sélectionne les serveurs sur lesquels je veux faire la mise à jour, ici les deux couloirs de DDPDIT web (deux sites internet dev nommés couloir)
Test
Sur le site de la dev je vérifie que les modifications ont bien été ajoutées et fonctionnent bien sur l'environnement, ici je retrouve une erreur. Celle-ci indique que la base de données n'est pas actualisée et que mon écran demande des données non existantes. N'ayant pas personnellement accès à la base de données de dev, mon tuteur a pu faire de son côté la mise à jour. Il a donc mis à jour la base de données avec le script SQL que j'ai fourni au préalable dans le dépôt GitLab du projet.
Test
Après la mise à jour de la base de données je remarque que mes modifications ont bien été prises en compte et que tout fonctionne.
Remarque : Le déploiement sur la dev permet aux testeurs de vérifier que tout est en règle et que tout fonctionne correctement. Une fois l'application testée elle passe en pré-prod et après si elle est validée elle passe en production internationale.