Fil Rouge Civadis
Gestion Simplifié de recrutement
Contexte
Le but de l’application est de fournir à Civadis un logiciel de gestion simplifié du recrutement.
Ce site se sépare en trois parties front-end, backend-utilisateur, backend-administrateur.
La partie front end permet :
- De pouvoir positionner une Vitrine
- De parcourir les offres d’emploi disponibles sous forme de liste (description rapide des postes) et d’avoir par poste une fiche détaillée,
- De se connecter au backend-utilisateur via un email/password ou se créer un compte.
- En fonction de l’email, l’utilisateur à accès aux fonctionnalités RH (backend Civadis) ou pas (Backend Invité).
La partie Backend Invité permet
- De créer un CV composé de données personnels (date de naissance, lieu, sexe..), de ses certificats, de ses diplômes, de ses expériences,
- De parcourir les offres d’emploi disponibles et de postuler à ces offres.
La partie backend administrateur permet
- De se connecter,
- De créer une offre d’emploi,
- De voir les candidatures ayant postulé à une offre,
- De sélectionner les candidatures
Risques
Cette application n’est pas une application critique (elle n’empêche pas Civadis de fonctionner en cas d’arrêt), mais c’est un cas typique d’application dont la qualité doit être élevée car :
- Les bugs divers de l’application donnent une mauvaise image de Civadis,
- Cette application contient des données personnelles de candidate. Un bug sur l’application peut entraîner des problèmes législatifs ( RGPD).
Il est donc essentiel pendant la formation et ce fil rouge de faire les tests suffisants pour éviter tous problèmes
Parcours Utilisateurs
Il y a trois parcours utilisateurs :
- Le premier parcours est celui du curieux. La personne curieuse tombe par hasard sur le site de recrutement. Il va regarder rapidement les offres d’emplois. Enfin, il quitte le site.
- Le parcours du postulant est différent. Il doit en premier se créer un compte en donnant un login et un password. Enfin, il reçoit un email validant son inscription. Après la finalisation de son inscription, il remplit son CV et postule à une offre. Enfin, il se déconnecte de l’applicatif et attend avec ou sans angoisse de passer aux étapes ultérieures du processus de recrutement. Il est informé du passage des étapes (épreuves 1, épreuves 2, décision) par courriel.
- Le parcours administrateur est singulier. L’administrateur se connecte sur l’applicatif soit pour créer un Job soit pour voir les personnes ayant postulé ou ceux en épreuves. Il est au courant qu’une personne a postulé à un Job car il reçoit un email à chaque candidature. Sur les postulants, l’administrateur peut accepter la candidature (un mail heureux part vers le candidat et un autre part vers le responsable de l’offre d’emploi) soit la refuser (un mail malheureux part vers le candidat). Dans le cas où la candidature est acceptée, cette dernière positionne le candidat en mode passage d’épreuves. A chaque épreuve réussie, le RH peut modifier l’état du candidat, ce qui provoque une notification.
Réalisation
Le but de ce fil rouge n’est pas de refaire l’applicatif de recrutement en entier dans le cadre de la formation.
Ci-après les objectifs plus ou moins atteignables lors de la formation :
Objectif : Niveau 1 je pratique le Java et je suis à l’aise
Être à l’aise avec Java est de pouvoir faire quelques classes, construire une application Web et mettre en place les éléments de qualité logiciel me garantissant que cela fonctionne.
Je dois faire l’application suivante :
- Une API REST permettant de lister des Jobs en liste en fonction d’un statut (En cours d’élaboration, Validée, publiée)
- Une API REST pour afficher un job en détail.
- Une API REST pour modifier un job
- Une API REST permettant de créer un Job pour l’administrateur.
Afin de pouvoir créer une offre, il est nécessaire de pouvoir encoder pour créer une offre (A titre d’exemple) :
- Numéro de l’offre
- Titre de l’offre
- Statut : (En cours d’élaboration, Validée, publiée)
- Type engagement
- Lieu travail
- Régime de travail
- Diplôme requis
- Vos responsabilités
- Votre profil
- Notre offre
En termes d’architecture, il est proposé mais non imposé l’approche suivante :
- Faire un cœur applicatif sans authentification ni base de données
- Rajouter la base de données et le mode REST sur le cœur applicatif
- Rajouter l’authentification.
Ce que je dois comprendre est :
- Faire des classes simples en Java et faire des pages web simples pour les gérer,
- Comment tester cette application, Identifier les points durs en termes de qualité logiciel. Je dois savoir faire les tests unitaires de ces classes, d’en faire les tests graphiques.
- Ma couverture de code de mes tests est de 60%.
Objectif : Niveau 2 je connais le Java et je suis plus qu’à l’aise
Je suis assez à l’aise pour monter une architecture plus complexe et en faire une application Web. Je comprends que la mise en place des tests est une nécessité pour maintenir mon architecture Web stable.
Je dois faire l’application suivante :
- Une API REST permettant de lister des Jobs en liste en fonction d’un statut (En cours d’élaboration, Validée, publiée)
- Une API REST pour afficher un job en détail.
- Une API REST pour modifier un job
- Une API REST permettant de créer un Job pour l’administrateur.
- Une API REST permettant d’initialiser le compte candidat (avec login/password et gestion du mail d’activation).
- Une API REST permettant de créer un candidat.
- Une modification de l’API REST d’un Job afin d’affilier un candidat à un Job publié.
La candidature d’une personne peut contenir à titre d’exemple :
- Données personnelles
- Nom
- Prénom
- Sexe
- Date de naissance
- Nationalité
- Langue
- Numéro téléphone
- Adresse
- Rue
- Numéro
- Code postal
- Ville
- Pays
- Connaissance
- Diplôme
- Langue
- Français (pas de connaissance, Notions, Bonne Très bonne, langue maternelle)
- Néerlandais (pas de connaissance, Notions, Bonne Très bonne, langue maternelle)
- Anglais (pas de connaissance, Notions, Bonne Très bonne, langue maternelle)
- Informations complémentaires
- CV
- Motivation
- URL profil linkedin
En termes d’architecture, il est proposé mais non imposé l’approche suivante :
- Faire un cœur applicatif sans authentification ni base de données
- Rajouter la base de données et le mode REST sur le cœur applicatif
- Rajouter l’authentification.
Afin de mettre en place la création d’utilisateur qui nécessite une validation d’email, il est possible d’utiliser les composants suivants :
- Validation de utilisateurs par email : https://www.baeldung.com/registration-verify-user-by-email
- Sauvegarder des informations semi structurée en base de données : https://www.baeldung.com/hibernate-persist-json-object
- Un serveur smtp bouchonné en userland : https://github.com/maildev/maildev
Ce que je dois comprendre :
- Comment monter une architecture complexe de classe Java et de mettre en place un début d’authentification utilisateur.
- Je sais monter, tout au long de mon travail, les tests unitaires qui garantissent mes développements futurs.
- Je monte des tests fonctionnels depuis les API REST en bouchonnant ou pas mes éléments.
- Ma couverture de code de mes tests est de 70%
Objectif : Niveau 3 Le Java n’est pas le problème ici
Je pense déjà au futur de cette application. J’ai compris comment monter une architecture très complexe, stable dans le temps et suffisamment performante pour accueillir plein de candidats.
Je dois faire l’application suivante :
- Une API REST permettant de lister des Jobs en liste en fonction d’un statut (En cours d’élaboration, Validée, publiée, supprimé)
- Une API REST pour afficher un job en détail.
- Une API REST pour modifier un job. La modification pour cette partie consiste principalement a rajouter un email de contact pour le Job.
- Une API REST permettant de créer un Job pour l’administrateur.
- Une API REST permettant d’initialiser le compte candidat (avec login/password et gestion du mail d’activation).
- Une API REST permettant de créer un candidat.
- Une modification de l’API REST d’un Job afin d’affilier un candidat à un Job publié.
- Une API REST est disponible pour pouvoir pousser des pièces jointes (certificats, diplôme, CV …) sur un candidat.
- Une API REST pour modifier l’état d’un candidat au regard de ses épreuves.
Pour chacune des offres les candidats doivent passer deux épreuves, une première épreuve écrite et dans le cas où l’épreuve écrite est réussie, une épreuve orale.
L’application doit permettre au gestionnaire RH de sélectionner à chaque étape les candidats retenus pour l’étape suivante. A chaque passage d’une étape à l’autre, les candidats non retenus doivent recevoir un mail et les autres candidats reçoivent un autre mail pour les inviter à l’étape suivante. Enfin pour chaque candidat avançant dans le process, il est possible d’envoyer un courriel à la personne de contact.
Lorsqu’un candidat est retenu, le Job est dépublié automatiquement.
Afin de mettre en place la fonctionnalité d’Upload de pièce d’un utilisateur, il est possible de s’inspirer de :
- Uploading Files : https://spring.io/guides/gs/uploading-files/
Je comprends largement comment faire cette application. J’ai monté les tests unitaires et les tests fonctionnels. Ma couverture de code est bonne (70%), mes tests fonctionnels sont complets et je me prépare à monter des tests de performances et des tests de sécurité de base.
Objectif : Je pratique de l’Angular
Cet objectif est transverse aux objectifs Java. Le but ici est de monter un applicatif Angular avec PrimeNG afin :
- Permettre de lister des Jobs en liste en fonction d’un statut (En cours d’élaboration, Validée, publiée, supprimé)
- Permettre pour afficher un job en détail.
- Permettre de créer/modifier un Job pour l’administrateur.
- Permettre d’initialiser le compte candidat (avec login/password et gestion du mail d’activation).
- Permettre de créer un candidat.
- Permettre d’affilier un candidat à un Job publié.
De façon non exhaustive et non obligatoire, il est possible de s’inspirer des sketch suivants fortement inspiré de :
https://www.primefaces.org/primeng/showcase/#/dataview
Une deuxième page permet d’afficher un job en détail :
En fonction de l’état de l’utilisateur (connecté ou pas), il est possible de postuler à l’offre.
L’interface backend RH permet pour chaque Job d’avoir la liste des candidats d’un job.