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.

Organigramme générale

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é.

Département

Dans ce groupe j'agissais dans le département socle et composant qui gère lui toute la gamme éthique et les outils transverses

Application

Les outils sur lesquels mon département agit sont les outils transverses, pour ma part j'ai simplement agi sur l'application DDP-DIT

Urssaf

L'entreprise Acoss est le pilier de l'échange d'information informatique dans le domaine du recouvrement

Mission

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

PHP

PostgreSQL

PostgreSQL

Angular

Angular

PHPStorm

PHP Storm

DBeaver

DBeaver

Fork

Fork

Insomnia

Insomnia

GitLab

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

SQL Table Relation

________________________________________________________________________________________________________________________________________________________________

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

chemin entité
Entity
Init base

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
Attribut

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
Getter/Setter

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
Init base

Instanciation de la route pour l'API doc.

Back-end Controller
Attribut

Appel de la fonction service et stockage des informations de "getListe" dans une liste.

Back-end Service
Getter/Setter

Récupère les données contenues dans la base pour les renvoyer.

Route
Getter/Setter

Voici la route par laquelle les données sont accessibles.

Vérification route
Getter/Setter

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
Init base

Instanciation de la route pour l'API doc.

Back-end Controller
Attribut

Appel de la fonction service "create".

Back-end Service
Getter/Setter

Permet la création de la donnée pour l'envoyer dans la base.

Back-end Service
Getter/Setter

Appel de la fonction dans le repository.

Back-end Repository
Getter/Setter

Fonction de recherche pour éviter les doublons.

Route
Getter/Setter

Voici la route par laquelle on peut ajouter une donnée.

Vérification route
Getter/Setter

Vérification via Insomnia pour l'entrée d'une donnée dans la base.

Vérification route
Getter/Setter

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
Init base

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
Attribut

Appel de la fonction service "modifier".

Back-end Service
Getter/Setter

Récupère la donnée sélectionnée et la modifie dans la base pour la renvoyer.

Route
Getter/Setter

Voici la route par laquelle on peut modifier les données.

Vérification route
Getter/Setter

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
Init base

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
Attribut

Appel de la fonction service "supprimer".

Back-end Service
Getter/Setter

Récupère la donnée sélectionnée et la supprime de la base.

Route
Getter/Setter

Voici la route par laquelle on peut supprimer les données.

Vérification route
Getter/Setter

Vérification via Insomnia pour la suppression d'une donnée contenue dans la base.

________________________________________________________________________________________________________________________________________________________________

Front-end

Front-end Template
Init base

Ici on instancie les données qui seront visibles dans l'interface utilisateur

Front-end Composant
Attribut

Dans le composant on configure directement les données que l'on veut afficher

Front-end Service
Getter/Setter

Le service permet d'appeler les méthodes de l'API

Front-end API service
Getter/Setter

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
Getter/Setter

________________________________________________________________________________________________________________________________________________________________

Exploitation de la donnée

Interface Jenkins
Init base

Cette fonction permet de créer un projet dans l'application fedex via les interfaces de l'application DDP-DIT.

Paramétrage du paquet
Init base

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
Init base

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
Init base

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
Init base

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
Init base

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
Init base

Ici on voit la création du paquet.

Webmin
Init base

Après avoir buildé le paquet je passe sur l'application Webmin (application qui sert à gérer toutes les applications du site)

Configuration Projet
Init base

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
Init base

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
Init base

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
Init base

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.