Académique Documents
Professionnel Documents
Culture Documents
Option :
MIT
Thème :
Réalisé par :
Hazem BOUAZIZ
Encadrant (s) :
M. Hatem MASMOUDI
À mes merveilleux parents, qui m’ont apporté un soutien indéfectible tout au long de ce parcours,
qui ont toujours cru en moi et m’ont encouragé à poursuivre mes aspirations.
À mon merveilleux frère, pour son amour et ses encouragements indéfectibles, ainsi que pour
sa gentillesse sans fin et son soutien indéfectible.
À mes bons copains et collègues à Telnet qui ont toujours été là pour moi et n’ont jamais
cessé de me guider.
Remerciements
Je suis très heureux d’exprimer mon appréciation et ma gratitude à tous ceux qui m’ont aidé,
assisté et guidé tout au long de ce projet.
Je tiens à exprimer ma sincère gratitude à Mme Malek BEN YOUSSEF, mon encadrante ,
pour sa disponibilité, son accompagnement, son suivi régulier, son excellent encadrement et ses
précieuses suggestions.
Je tiens également à exprimer ma gratitude à tous les membres du jury qui ont accepté d’évaluer
mon travail.
TABLE DES MATIÈRES Hazem B OUAZIZ
Dédicace ii
Remerciements iii
Introduction Générale 1
1 Étude Préalable 3
1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Description de l’organisme d’accueil . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.1 Groupe Telnet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.2 Contexte historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2.3 Secteurs d’activité . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 Cadre général de projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3.1 Contexte général . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3.2 Problématique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3.3 Objectifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4 Choix méthodologique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4.1 Méthodologie Agile . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4.2 Framework SCRUM . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Page iv
TABLE DES MATIÈRES Hazem B OUAZIZ
2 Etat de l’art 11
2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2 Procédure d’embauche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.3 Etude de l’existant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3.1 Microservice de classification . . . . . . . . . . . . . . . . . . . . . . 12
2.3.2 Outils de gestion des CVs «Application Mobile» . . . . . . . . . . . . 13
2.3.3 Outils de gestion des documents «Application Web» . . . . . . . . . . 14
2.4 Critique de l’existant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.5 Solution proposée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.6 Les Concepts de bases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.6.1 Traitement Automatique du Langage Naturel (TAL) . . . . . . . . . . 17
2.6.2 La Reconnaissance Optique de Caractères (ROC) . . . . . . . . . . . . 17
2.7 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Page v
TABLE DES MATIÈRES Hazem B OUAZIZ
3.8 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Page vi
TABLE DES MATIÈRES Hazem B OUAZIZ
Netographie 70
Page vii
TABLE DES FIGURES Hazem B OUAZIZ
9 DeepFace Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
11 DeepFace Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
12 Architecture physique de la solution . . . . . . . . . . . . . . . . . . . . . . . 24
13 Architecture logique de la solution . . . . . . . . . . . . . . . . . . . . . . . . 25
Page viii
TABLE DES FIGURES Hazem B OUAZIZ
Page ix
LISTE DES ACRONYMES Hazem B OUAZIZ
CV Curriculum Vitae
BD Base de données
SYNC Synchronisation
Page x
INTRODUCTION GÉNÉRALE Hazem B OUAZIZ
Introduction Générale
Les entreprises qui publient des offres d’emploi ou de stages reçoivent un grand nombre de
candidatures, ce qui rend le traitement des CVs laborieux pour les employés du département
des ressources humaines chargés de les traiter.
Pour faciliter ce processus, les entreprises ont commencé à utiliser des logiciels
d’intelligence artificielle, basés sur l’apprentissage automatique, pour trier et sélectionner les
candidatures en fonction des profils recherchés.
Cependant, chez Telnet, l’entreprise où nous avons effectué notre stage de fin d’études,
les employés du département des ressources humaines peuvent manquer des compétences
scientifiques nécessaires pour bien classifier les CVs et les affecter aux postes adéquats. Pour y
remédier, Telnet a décidé de mettre en place un outil d’intelligence artificielle pour automatiser
ce processus de classification des CVs. Nous avons conçu un moteur de classification de
CVs qui permet de faire correspondre chaque CV à un profil spécifique, tel qu’un ingénieur
électronique, informatique ,...etc.
Page 1
INTRODUCTION GÉNÉRALE Hazem B OUAZIZ
Grâce à cet outil, nous allons créer une solution intégrée à une application web et une
application mobile qui peuvent gérer numériquement les CVs.
Notre projet de fin d’études à l’École supérieur des communications de Tunis est structuré
en quatre parties principales, dans le contexte de la mise en place d’un outil d’intelligence
artificielle pour la gestion des CVs. La première partie se concentre sur la création d’un outil
utilisant l’architecture microservices, qui permettra d’utiliser le moteur de classification des
CVs. La deuxième partie consiste à développer une application web pour gérer les rôles et les
utilisateurs. La troisième partie se concentre sur la réalisation d’un module de gestion des CVs
au sein de l’application web. Enfin, la dernière partie vise à développer une partie permettant
d’utiliser une application mobile existante en mode hors ligne.
Notre rapport est organisé en plusieurs chapitres. Le premier chapitre présentera l’entreprise
d’accueil, le contexte général de notre projet, ainsi que notre choix méthodologique. Le
deuxième chapitre sera dédié à la présentation du procédure d’embauche, en commençant par
une étude de l’existant et en présentant ensuite notre solution proposée pour répondre aux
besoins de Telnet et l’architecture de la solution.
Page 2
ÉTUDE PRÉALABLE Hazem B OUAZIZ
Chapitre
Chapter
1
Étude Préalable
1.1 Introduction
Nous commençons ce chapitre par une présentation générale de l’organisme d’accueil puis
une présentation du contexte général de projet, la description et la critique de l’existant ainsi
que la solution à élaborer. Enfin nous clôturons ce chapitre en montrant la méthodologie utilisée
au cours du développement.
TELNET [1] est une société tunisienne d’ingénierie et de conseil dédiée à l’innovation et
à la haute Technologies a été créé en 1994. Dans un contexte mondial, il y a eu les technologies
de l’information et la mondialisation économique, qui interfèrent avec Télécommunications
(Multimédia), Transport (Automobile), Défense (Avionique), Sécurité (Cartes à puce),
Électronique, Industrie et Systèmes mode de paiement. La figure 1 représente le logo de Telnet.
Page 3
ÉTUDE PRÉALABLE Hazem B OUAZIZ
Fondée en 1994 en tant que start-up avec seulement sept ingénieurs pour répondre à
la demande croissante de développement de logiciels, TELNET a élargi son champ de
développement en 1995 et a établi une zone de développement international avec un groupe
international en 1995. Depuis 1997, elle s’est spécialisée dans le développement offshore au
profit de grands groupes internationaux. En 2001, elle reçoit le Prix de l’Innovation de la
Chambre de Commerce et d’Industrie franco-tunisienne. En 2004, TELNET comptait plus
d’une centaine d’ingénieurs. Depuis 2011, la société est cotée à la Bourse de Tunis. TELNET
compte aujourd’hui quatre sites en Tunisie et un en France et en Allemagne, employant plus de
600 personnes [1].
Page 4
ÉTUDE PRÉALABLE Hazem B OUAZIZ
Page 5
ÉTUDE PRÉALABLE Hazem B OUAZIZ
Nous allons dans cette section nous limiter à la présentation de la phase d’exploitation
des candidatures. Les dossiers de candidature, qui comportent généralement, une demande
d’emploi, le CV, les diplômes, parviennent à la société via Internet par e-mail. Les candidatures,
sont étudiées par le service ressources humaines. Un premier tri manuel est effectué sur la
base de la fiche de fonction et des critères de sélection prédéfinis. Les candidats retenus sont
convoqués pour un premier entretien par le service ressources humaines. Le service ressources
humaines recherche une adéquation entre le profil défini et le bilan de l’entretien. Sur cette
base, le service ressources humaines identifie une liste, qu’il présente, pour un second entretien
au responsable du service de la direction. Une décision collégiale est prise après concertation
entre le service ressources humaines et la direction pourvoyeuse du poste. Pour cela, Telnet a
besoin d’une solution pour automatiser ce processus.
Page 6
ÉTUDE PRÉALABLE Hazem B OUAZIZ
1.3.2 Problématique
Dans cette section, on va présenter les problèmes liés au processus actuel. L’opération du
premier tri est effectuée par le service ressources humaines n’ont pas forcément les compétences
nécessaires pour bien affecter les CVs reçus notamment les candidatures spontanées au poste
adéquat. Ceci peut induire des erreurs et des incompatibilités dans le traitement des dossiers.
De plus, tout le processus d’exploitation et de tri des dossiers de candidature est manuel
nécessitant non seulement la mobilisation des équipes relevant des services recrutement et
intégration des compétences, mais aussi du temps considérable pour le traitement et l’analyse
des dossiers des candidatures.
1.3.3 Objectifs
Le but de ce projet est d’intégrer le modéle de classification à une application web pour
réaliser la gestion numérique des CVs. Nous avons choisi de mettre en place une solution qui
est composée de deux parties :
• Un microservice qui utilise un moteur de classification des CVs réalisé dans notre stage
d’été et qui offre d’autres opérations de gestion des CVs comme la reclassification, la
suppression d’un CV, etc.
• Une solution web et mobile qui s’interface avec le microservice pour permettre aux
utilisateurs de notre application d’effectuer la gestion des CVs et qui assure d’autres
fonctionnalités comme la gestion des rôles et la gestion des utilisateurs.
Pour mener à bien un projet, nous devons choisir une méthode de travail qui répond le
mieux à nos exigences en matière de réalisation des tâches.
C’est pour cette raison que nous avons consacré cette section à la description des termes
"SCRUM" et "méthodologies agiles", ainsi qu’à la justification de leur adoption.
Page 7
ÉTUDE PRÉALABLE Hazem B OUAZIZ
La méthodologie Agile [2] est un processus qui permet à l’équipe de gérer un projet en le
décomposant en plusieurs étapes. Elle implique une collaboration constante entre les parties
prenantes, une amélioration et une itération continues à chaque étape. Au départ, les clients
décrivent comment le produit final sera utilisé et quel problème il résoudra. Cela permet de
clarifier les attentes du client auprès de l’équipe de projet. Une fois le travail commencé,
les équipes suivent un processus de planification, d’exécution et d’évaluation, qui permet de
modifier facilement le livrable final pour mieux répondre aux besoins du client. La collaboration
continue est essentielle, tant entre les membres de l’équipe qu’avec les parties prenantes du
projet, afin de prendre des décisions éclairées. La figure 3 illustre la méthodologie utilisée durant
ce projet.
Comme ce que présente la figure 4 la méthodologie scrum [3] est l’une des approches agiles
qui se basent essentiellement sur la division des rôles, la planification des réunions quotidiennes,
les artefacts, le découpage des tâches à l’aide des cycles courts présente les sprints et l’utilisation
d’un rythme itératif et incrémental. La figure 4 montre comment fonctionne la méthode scrum.
Page 8
ÉTUDE PRÉALABLE Hazem B OUAZIZ
- Sprint : C’est une itération, elle peut durer d’une à quatre semaines et débouche sur un
produit utilisable.
- Product Backlog : Liste de toutes les fonctionnalités et exigences d’un projet ou d’un
produit, triées par ordre de priorité en fonction de la valeur qu’elles apportent. Le Product
Owner gère le backlog et l’utilise pour planifier les itérations de développement (sprints) et
pour suivre l’évolution du projet.
Page 9
ÉTUDE PRÉALABLE Hazem B OUAZIZ
- Sprint Backlog : Le sprint backlog est la liste des éléments de travail que l’équipe
de développement s’engage à réaliser pendant le sprint. Il est créé lors de la réunion de
planification de sprint et contient les éléments sélectionnés à partir du product backlog, ainsi
que les tâches nécessaires à leur réalisation. Le sprint backlog est un plan vivant qui peut être
ajusté tout au long du sprint en fonction de l’avancement et des nouvelles informations qui
apparaissent.
- Daily Scrum : Le Daily Scrum est une réunion quotidienne de courte durée (généralement
entre 10 et 15 minutes) dans le cadre de la méthode agile Scrum. Elle réunit l’équipe de
développement pour discuter de l’avancement du projet, des objectifs atteints et des obstacles
rencontrés. L’objectif est de favoriser la collaboration et la communication au sein de l’équipe
et de s’assurer que chaque membre est aligné sur les priorités et les tâches à accomplir pour la
journée.
- Sprint Review : La Sprint Review est une réunion de fin d’itération dans la méthode agile
Scrum, où l’équipe de développement présente les résultats de son travail au Product Owner
et aux parties prenantes. Elle permet de recueillir des feedbacks et de planifier les prochaines
étapes du projet.
1.5 Conclusion
Dans ce premier chapitre, nous avons présenté l’organisme d’accueil, étudié l’existant dans
le but de le critiquer et définir les concepts clés pour l’améliorer. Finalement nous avons montré
la méthodologie des outils optés pour mener à bien ce projet. Dans le chapitre suivant nous
allons présenter la partie état de l’art.
Page 10
ETAT DE L’ART Hazem B OUAZIZ
Chapter
2
Etat de l’art
2.1 Introduction
Durant ce chapitre, nous allons présenter la procédure d’embauche. Par la suite, nous allons
effectuer une étude de l’existant de l’application mobile de recrutement de TELNET et quelques
applications web sur le marché. Finalement, nous allons présenter notre solution proposée pour
les deux applications.
Les candidats envoient leur dossier de candidature à Telnet, comprenant leurs CV, leurs
diplômes et leurs relevés de notes universitaires pour les jeunes diplômés, à l’adresse
email recrutement@groupe-telnet.net. Ces candidatures sont ensuite réceptionnées par le
département des ressources humaines qui les examine et les trie en fonction des postes
à pourvoir chez Telnet. Ensuite, les CV correspondants sont envoyés aux chefs de projet
concernés qui vérifient s’ils correspondent aux profils recherchés. Les CV sont renvoyés au
service des ressources humaines qui contacte alors les candidats pour planifier un entretien si
leur profil correspond aux postes proposés ou pour leur notifier un refus dans le cas contraire.
Tout ce processus se fait manuellement et dépend beaucoup de temps.
Page 11
ETAT DE L’ART Hazem B OUAZIZ
Pour résoudre ce problème, TELNET a mis en place une solution qui consiste à utiliser
un système de gestion des candidatures en ligne. Ce système permet aux candidats de postuler
directement en ligne pour un poste donné, et toutes les candidatures sont automatiquement triées
et classées en fonction des postes disponibles.
Les chefs de projet peuvent ainsi accéder directement aux candidatures qui correspondent à
leur domaine d’expertise et ne perdent pas de temps à trier les CV.
En outre, le système de gestion des candidatures en ligne permet également aux candidats
de suivre l’état de leur candidature en temps réel, de sorte qu’ils peuvent savoir où ils en sont
dans le processus de recrutement. Cette solution a permis à TELNET non seulement de gagner
du temps dans le processus de recrutement mais aussi d’améliorer l’efficacité de son service des
ressources humaines.
Dans cette partie nous traitons l’étude de l’existant des deux applications mobile et web.
Le moteur de classification notre système utilise une architecture pipeline, où des modules
ou filtres sont connectés les uns aux autres pour effectuer des traitements spécifiques sur un
ensemble de données. Le résultat de chaque filtre est transmis comme entrée au filtre suivant.
Les modules du moteur comprennent :
• Pré-traitement des données : Après la sélection d’un nouveau CV, ce module extrait
brutalement le texte et effectue une opération de nettoyage pour éliminer les caractères
spéciaux qui pourraient interférer avec la prédiction.
Page 12
ETAT DE L’ART Hazem B OUAZIZ
Afin d’approfondir notre compréhension sur le sujet et avoir une idée plus claire sur le
projet existant et ses fonctions attendues, nous avons mené une étude d’une application mobile
de recrutement chez TELNET sous le titre de « Resume Scanner ».
L’objectif de cette application était de spécifier, concevoir et mettre en œuvre une application
mobile permettant de scanner les CVs des candidats, d’effectuer une extraction de texte par
Page 13
ETAT DE L’ART Hazem B OUAZIZ
OCR « Optical Character Recognition » et de classer ces CV à l’aide de l’IA selon les profils
de chaque candidats qui peut être (Electrique, mécanique, logiciel «backend,frontend»).
Resume Scanner permet à TELNET de gérer les offres d’emploi et aide les responsables à
choisir les meilleurs candidats potentiels à travers l’utilisation de l’intelligence artificielle.
2.3.3.1 KIMIOS
Kimios [4] est un système de gestion de documents open-source qui permet aux utilisateurs
de stocker et de gérer des documents de différents formats, avec des fonctionnalités avancées
telles que le contrôle de version, le contrôle d’accès et des capacités de recherche de texte
intégral. Il offre également des flux de travail et une automatisation des processus métier, et
peut être intégré à d’autres applications d’entreprise via une API REST.
2.3.3.2 ALFRESCO
Alfresco [5] est un système de gestion de contenu d’entreprise open-source qui permet
aux entreprises de gérer leurs contenus et leurs processus métiers. Il a été créé en 2005 et est
développé par la société britannique Alfresco Software.
Alfresco offre des fonctionnalités avancées pour la gestion de contenu, notamment la gestion
des documents, la gestion des images, la gestion des vidéos, la gestion des fichiers audio, la
gestion des sites web, la gestion des processus métiers, la collaboration et le partage de fichiers.
Il propose également des fonctionnalités de sécurité avancées, telles que la gestion des droits
d’accès, la vérification des signatures électroniques et la gestion des clés de chiffrement.
Alfresco est facilement personnalisable grâce à son architecture modulaire basée sur les
standards ouverts tels que Java, Spring Framework et Lucene.
Page 14
ETAT DE L’ART Hazem B OUAZIZ
Après une analyse rigoureuse de l’existant dans notre domaine d’étude, nous avons identifié
plusieurs critiques et opportunités pour des améliorations. Nous avons constaté que certaines
caractéristiques étaient insuffisantes ou incomplètes et nous avons les classés comme suit :
Nous avons pour objectif de créer une application web et un micro-service qui vont
permettre une gestion numérique des CVs en offrant plusieurs fonctionnalités telles que l’ajout,
la suppression, la modification, la consultation et la classification.
Nous avons aussi pour objectif d’améliorer l’application mobile en ajoutant l’utilisation
de l’application en mode hors ligne c-à-d, les documents peuvent être stockés localement sur
l’appareil de l’utilisateur et une fois que la connexion est rétablie, Ces derniers peuvent être
automatiquement classés en fonction des profils appropriés.
Cette fonctionnalité offre une expérience utilisateur optimale même lorsque la connexion
internet est intermittente ou inexistante.
La figure 6 montre les améliorations que doivent être faite au niveau de l’application mobile
existante.
Page 15
ETAT DE L’ART Hazem B OUAZIZ
Page 16
ETAT DE L’ART Hazem B OUAZIZ
2.7 Conclusion
Page 17
ETAT DE L’ART Hazem B OUAZIZ
présentation de notre solution proposée et quelques concepts de bases. Dans le chapitre suivant
nous allons présenter les spécifications et l’analyse des besoins.
Page 18
ANALYSE ET SPÉCIFICATION DES BESOINS Hazem B OUAZIZ
Chapitre
Chapter
3
Analyse et spécification des besoins
3.1 Introduction
Dans ce chapitre, nous allons décrire les schéma global des cas d’utilisation ainsi que
l’architecture des notre solution. Nous allons également présenter la planification des sprints.
Enfin, nous terminerons en détaillant l’environnement de travail que nous utilisons.
Notre solution a été conçue pour être utilisée par les employés de l’entreprise TELNET.
Pour offrir une grande flexibilité, les rôles dans l’application sont dynamique. Il est possible de
modifier un rôle avec la spécification de ses droits d’accès.
Les deux applications admettent deux acteurs :
Administrateur : cet acteur possède tous les droits d’accès de l’application pour bénéficier
de tous les services proposés dans la section suivante.
Utilisateur : cet acteur ne possède pas tous les droits d’accès de l’application. Dés la
création d’un nouveau compte le rôle va être attribué par défaut utilisateur.
Page 19
ANALYSE ET SPÉCIFICATION DES BESOINS Hazem B OUAZIZ
Les besoins fonctionnels désignent les demandes relatives aux fonctionnalités que le
système doit remplir. Nous allons décrire les exigences fonctionnelles destinées aux utilisateurs
de notre solution.
Les exigences fonctionnelles destinées aux utilisateurs de l’application mobile sont classées
comme suit :
Les exigences fonctionnelles destinées aux utilisateurs de l’application web sont classées
comme suit :
• S’authentifier.
Page 20
ANALYSE ET SPÉCIFICATION DES BESOINS Hazem B OUAZIZ
• Consulter les statistiques de classifications comme le nombre des candidats par profil et
le nombre des candidats par date.
• Gérer les utilisateurs à travers les actions suivantes : consultation de la liste des
utilisateurs, ajout, modification du rôle et suppression d’un utilisateur.
• Gérer les CVs à travers les actions suivantes : consultation de la liste des CVs et
supression.
Afin d’atteindre nos objectifs, notre solution doit respecter certaines propriétés et tenir
compte de certaines contraintes qui sont définies dans les éléments suivants :
• L’utilisabilité : La solution doit être facile à utiliser car la plupart des utilisateurs viennent
d’un milieu non technique, en l’occurrence les employés du département des ressources
humaines.
• Performance : La transition entre les pages web ou les interfaces mobile de notre solution
doit être fluide et rapide.
Page 21
ANALYSE ET SPÉCIFICATION DES BESOINS Hazem B OUAZIZ
Page 22
ANALYSE ET SPÉCIFICATION DES BESOINS Hazem B OUAZIZ
Page 23
ANALYSE ET SPÉCIFICATION DES BESOINS Hazem B OUAZIZ
Nous avons choisi d’utiliser une architecture à trois niveaux (3-tiers) pour notre solution,
ce qui représente la manière dont les composants logiciels du système sont déployés sur les
composants matériels. Cette décision est illustrée dans la figure 12 et concerne l’architecture
physique de notre solution.
Page 24
ANALYSE ET SPÉCIFICATION DES BESOINS Hazem B OUAZIZ
• Couche traitement : est la couche métier de l’application est chargée de définir la logique
métier de l’application, agissant comme un lien entre la couche de présentation et la
couche d’accès aux données.
• Couche accès aux base de données : est chargée de stocker les données, en utilisant un
système de gestion de base de données (SGBD) pour la gestion efficace des données.
La structure logique englobe les divers composants logiciels requis pour la conception d’un
système informatique, ainsi que leurs interactions mutuelles. La figure 13 présente le schéma
de l’architecture logique de notre solution.
• Services : sont responsables de la définition des services qui vont interagir avec l’API
REST.
Page 25
ANALYSE ET SPÉCIFICATION DES BESOINS Hazem B OUAZIZ
• Client HTTP : est utilisé pour envoyer et recevoir les requêtes HTTP.
• Spring Rest Contrôleurs : sont responsables du traitement des requêtes HTTP venues
de frontend et microservice.
• Services : sont responsables de la liaison entre les contrôleurs et Spring Data JPA.
Ils contiennent la logique métier de l’application. Ils représentent avec les composants
services de frontend et les services fournis par le microservice la couche traitement de
notre outil.
• Modèles : représentent la modélisation des objets qui vont être persistants dans la base
de données.
• Spring Data JPA : c’est un module qui a pour but de faciliter l’implémention de la
couche d’accès aux données. Il est en interaction avec la base de données MySQL.
La planification des sprints est une étape clé du cycle de vie d’un projet SCRUM, visant à
déterminer les objectifs de livraison et les moyens pour les atteindre.
Pour notre projet, nous avons opté pour une répartition en quatre sprints, avec les étapes
suivantes :
• Scanner un CV.
Page 26
ANALYSE ET SPÉCIFICATION DES BESOINS Hazem B OUAZIZ
• Préparer des web services nécessaires aux opérations de gestion d’un CV (consulter,
classer, supprimer...).
• Faire le monitoring d’un dossier qui contient les nouveaux CVs et les classifier selon
le profil adéquat.
3. Sprint 3 : Développement de l’application Web "Telnet Resume Scanner" TRS
• S’authentifier.
Page 27
ANALYSE ET SPÉCIFICATION DES BESOINS Hazem B OUAZIZ
Dans cette partie nous allons présenter la liste des outils utilisés pour réaliser
l’implémentation de notre solution.
• Visual studio code : Editeur de code open source gratuit qui supporte plusieurs langages
de programmation.
Dans cette section, nous allons présenter les différents langages de programmation et
frameworks employés pour réaliser ce projet.
• Dart : [8] langage de programmation développé par Google, conçu pour la création
d’applications multiplateformes, notamment des applications mobiles, de bureau, de
serveur et web. Il est optimisé pour la performance et dispose d’une syntaxe de type
C++, avec une approche orientée objet.
• Java : [9] langage de programmation orienté objet connu pour sa portabilité, sa simplicité,
sa sécurité et sa robustesse. Contrairement à d’autres langages, le code Java est compilé
en un format indépendant de la plateforme cible, ce qui permet aux applications Java
Page 28
ANALYSE ET SPÉCIFICATION DES BESOINS Hazem B OUAZIZ
• TypeScript : [11] langage de programmation développé par Microsoft qui ajoute des
fonctionnalités de typage statique optionnelles au JavaScript standard pour détecter et
prévenir les erreurs de type.
3.7.2 Frameworks
• Flask : [13] framework web open-source développé en Python qui permet de créer
facilement des applications web. Il est léger, flexible et bien adapté pour le développement
d’applications web de petite à moyenne envergure.
• Angular : [15] framework open source pour créer les applications web particulièrement
les applications web monopage en utilisant HTML et typeScript développé par Google.
Il était utilisé pour réaliser le frontend de notre application web.
Page 29
ANALYSE ET SPÉCIFICATION DES BESOINS Hazem B OUAZIZ
C’est un logiciel que nous avons choisi pour notre projet permet aux utilisateurs de définir,
créer, maintenir et contrôler l’accès à une base de données. En raison de la structure de nos
données, nous avons opté pour les systèmes de gestion de base de données relationels.
• Solution : Nous avons choisi pour les deux applications comme SGBD MySQL et pour
les deux microservices SQLite.
• GIT : [16] est un logiciel de gestion de versions le plus répandu est utilisé pour suivre
les changements apportés à des projets et fichiers par plusieurs collaborateurs, tout en
garantissant la rapidité, l’intégrité des données et la prise en charge de flux de travail non
linéaires et distribués.
• Git Lab : [17] est une plateforme DevOps qui fournit un gestionnaire de répertoires git.
Il permet la documentation à travers wiki, le suivi des problèmes, l’intégration continue
et la livraison continue. La plateforme permet de réaliser toutes les étapes d’un projet
comme la planification du projet, la gestion du code source, la surveillance et le contrôle
de la sécurité.
3.8 Conclusion
Page 30
SPRINT 1 Hazem B OUAZIZ
Chapitre
Chapter
4
Sprint 1 : Réalisation des
améliorations sur l’application "Resume
Scanner"
4.1 Introduction
Pour les agents de ressources humaines chez TELNET utilisant les applications mobiles de
classification de CV, il est important d’avoir une application fiable et pratique, même en cas de
réseau mobile défaillant.
C’est pourquoi il est essentiel que notre application mobile soit équipée pour fonctionner
hors ligne, ce qui permet de continuer à travailler sur des CVs même sans accès à Internet.
TELNET doit investir dans le développement de back-end et de front-end pour offrir une
meilleure qualité d’application mobile, y compris un accès hors ligne pour les utilisateurs.
Page 31
SPRINT 1 Hazem B OUAZIZ
En bref, notre application mobile hors ligne bien conçue peut améliorer l’expérience
utilisateur des agents de ressources humaines, en leur permettant de travailler de manière plus
productive, même en l’absence de réseau mobile fiable.
Dans cette section, nous allons présenter le tableau du sprint backlog pour les tâches
réalisées au cours de ce sprint. Nous avons mis en œuvre plusieurs fonctionnalités, notamment
l’authentification hors ligne de l’utilisateur, la numérisation des CVs, la suppression et la
consultation des CVs, ainsi que la consultation du nombre de tentatives restantes pour
s’authentifier en l’absence de connexion Internet.
L’ajout de ces fonctionnalités permet d’offrir une plus grande flexibilité aux utilisateurs de
notre application, qui peuvent ainsi accéder à nos services même sans une connexion Internet
fiable. Le tableau 2 représente el backlog du premier sprint.
Page 32
SPRINT 1 Hazem B OUAZIZ
4.4 Spécification
À travers cette section, nous allons montrer la phase d’analyse spécifique à ce sprint.
Page 33
SPRINT 1 Hazem B OUAZIZ
La figure 14 est dédiée à l’illustration les différentes fonctionnalités que l’utilisateur possède
pour effectuer la gestion des documents.
Page 34
SPRINT 1 Hazem B OUAZIZ
Page 35
SPRINT 1 Hazem B OUAZIZ
Lorsque l’utilisateur saisit son email et son mot de passe et appuie sur le bouton de
connexion, notre système effectue plusieurs vérifications. Tout d’abord, il vérifie si l’utilisateur
est connecté à Internet.
Si l’utilisateur est hors ligne, le système vérifie s’il a déjà tenté de se connecter hors ligne
auparavant. S’il y a eu plus de tentatives précédentes, le système vérifie si l’email et le mot
de passe saisis sont valides. Si ces informations sont incorrectes, un message d’erreur est
affiché indiquant que l’email ou le mot de passe est invalide. Si les informations sont correctes,
l’utilisateur est redirigé vers la page d’accueil en mode hors ligne, et le nombre de tentatives
restantes est décrémenté de 1.
Si le nombre de tentatives restantes est égal à zéro, un message d’erreur est affiché indiquant
que l’utilisateur doit se connecter en ligne. Dans ce cas, le nombre de tentatives est réinitialisé
à 3.
Si l’utilisateur est connecté à Internet, notre système vérifie à nouveau si l’email et le mot
de passe sont valides.
Si ces informations sont incorrectes, un message d’erreur est affiché. Si elles sont correctes,
l’utilisateur est redirigé vers la page d’accueil en mode en ligne. En plus de cela, le système
génère un jeton d’accès et un jeton de rafraîchissement, qu’il envoie à l’utilisateur.
Le jeton d’accès est ajouté aux en-têtes des requêtes HTTP ultérieures, ce qui permet
à l’utilisateur d’accéder aux ressources demandées. Ce jeton a une durée de validité de 15
minutes. Lorsque ce jeton expire, le jeton de rafraîchissement, qui a une durée de validité plus
longue, est utilisé pour générer un nouveau jeton d’accès.
4.5 Réalisation
Page 36
SPRINT 1 Hazem B OUAZIZ
local de l’application. Une fois que l’utilisateur a saisi son mot de passe, il doit appuyer
sur le bouton de connexion pour accéder à l’application. La figure 16 représente l’interface
d’authentification de l’application mobile "Resume Scanner".
Une fois l’authentification réussie, si l’utilisateur est hors ligne, il reçoit une alerte lui
indiquant le nombre de tentatives restantes pour effectuer une nouvelle authentification comme
illustré dans la figure 17.
Page 37
SPRINT 1 Hazem B OUAZIZ
Page 38
SPRINT 1 Hazem B OUAZIZ
1. Consulter les CVs existants : L’utilisateur peut afficher la liste des CVs déjà scannés et
les consulter pour obtenir des informations spécifiques.
2. Supprimer un CV : L’utilisateur peut sélectionner un CV de la liste et le supprimer s’il
n’est plus nécessaire.
3. Supprimer tous les CVs : L’utilisateur peut sélectionner tous les CVs et les supprimer s’il
n’est plus nécessaire.
4. Classifier tous les CVs existants en stockage local : Si la connexion Internet est rétablie,
l’utilisateur peut utiliser cette fonctionnalité pour synchroniser tous les CVs existants et
les sauvegarder localement. Cela permet de garantir que les CVs sont accessibles même
en cas de perte de connexion ultérieure.
Page 39
SPRINT 1 Hazem B OUAZIZ
La figure 19 illustre les opérations que l’utilisateur peut effectuer. Dans le cas où l’utilisateur
clique sur le bouton "ALL" pour classer les CV existants, le système affiche un message
indiquant qu’il ne peut pas effectuer cette opération car il est hors ligne.
Page 40
SPRINT 1 Hazem B OUAZIZ
4.6 Conclusion
Dans ce chapitre, nous avons introduit plusieurs améliorations pour l’application mobile,
en mettant l’accent sur l’authentification et la classification des CV en mode hors ligne. Nous
avons commencé par présenter les spécifications à l’aide d’un diagramme des cas d’utilisation,
puis nous avons présenté les interfaces utilisateur qui ont été développées. Dans le chapitre
suivant nous allons présenter le deuxième sprint concernant le développement de microservice
du modèle de classification.
Page 41
SPRINT 2 Hazem B OUAZIZ
Chapitre
Chapter
5
Sprint 2 : Développement de
microservice du modèle de classification
5.1 Introduction
Notre objectif pour ce sprint est de créer un outil qui offre des services web pour ajouter et
supprimer des CV, ainsi que pour détecter l’arrivée de nouveaux CV afin de les classifier.
Page 42
SPRINT 2 Hazem B OUAZIZ
5.3 Spécification
À travers cette section, nous allons montrer la phase d’analyse spécifique à ce sprint.
1. Lorsqu’un utilisateur souhaite ajouter un CV, il utilise l’application web ou mobile qui
fait appel au web service de classification fourni par le microservice.
2. Le responsable des Ressources Humaines peut également déposer les nouveaux CVs
reçus par e-mail dans un dossier partagé sur le réseau.
Page 43
SPRINT 2 Hazem B OUAZIZ
Page 44
SPRINT 2 Hazem B OUAZIZ
Pour présenter l’interaction entre l’utilisateur et notre solution de classification nous avons
obtenu le diagramme de séquence système du cas « Classer les documents » comme indique la
figure 23.
1. L’utilisateur envoie un document, qui peut être de différents types tels que png, jpg, doc,
pdf, etc.
2. Un courriel contenant les résultats (Les détails de classification sous forme d’un
tableau de compétences) ainsi que le CV du candidat sous forme pdf seront envoyés à
l’administrateur.
5.3.4 Réalisation
Pour tester les web services développés dans ce sprint, nous avons utilisé l’outil Postman.
Page 45
SPRINT 2 Hazem B OUAZIZ
Une fois les opérations requises effectuées, le microservice enregistre le CV dans la base de
données et envoie un courrier électronique contenant les résultats suivants :
1. Les résultats de la classification du CV, indiquant les profils prédits ou les catégories
correspondantes.
2. Les informations supplémentaires sur la classification, telles que la confiance associée
aux résultats ou d’autres métriques pertinentes.
3. Le CV avec l’extension .pdf.
Selon la figure 25, un e-mail est généré et envoyé à l’administrateur suite à la classification d’un
exemple de même, tel que réalisé lors de l’opération précédente.
Page 46
SPRINT 2 Hazem B OUAZIZ
Dans le cas du web service de suppression d’un CV, le système commence par vérifier
l’existence du CV. S’il est présent, le système le supprime.
La figure 27 montre comment nous pouvons obtenir quelques statistiques comme le nombre
de CV par profil.
Page 47
SPRINT 2 Hazem B OUAZIZ
La figure 28 illustre la méthode permettant d’obtenir des statistiques telles que le nombre de
CV par date.
La figure 29 présente le web service dont il est possible d’obtenir diverses statistiques, telles
que l’état du système.
Page 48
SPRINT 2 Hazem B OUAZIZ
5.4 Conclusion
Page 49
SPRINT 3 Hazem B OUAZIZ
Chapitre
Chapter
6
Sprint 3 : Développement de
l’application Web "Telnet Resume
Scanner" TRS
6.1 Introduction
Dans ce chapitre, nous allons explorer les divers modules de l’application web "TRS"
de manière détaillée. Nous commencerons par présenter le module de gestion des CVs, qui
comprend les fonctionnalités de classification, de consultation et de suppression.
Ensuite, nous aborderons le module de gestion des utilisateurs, qui permet la mise à jour, la
consultation et la suppression des informations utilisateur. Nous débuterons par la spécification
de ces modules.
Enfin, pour illustrer notre travail de manière visuelle, nous conclurons ce chapitre en
présentant des captures d’écran de la réalisation de l’application.
Page 50
SPRINT 3 Hazem B OUAZIZ
6.3 Spécifications
À travers cette section, nous allons montrer la phase d’analyse spécifique à ce sprint.
Page 51
SPRINT 3 Hazem B OUAZIZ
Nous avons utilisé le diagramme de séquence illustré dans la figure 32 pour faciliter
l’interaction entre l’utilisateur et notre application lors du processus d’authentification.
Page 52
SPRINT 3 Hazem B OUAZIZ
Lorsque l’utilisateur saisit son nom d’utilisateur et son mot de passe, puis appuie sur le
bouton de connexion, notre système vérifie la validité des informations. Si elles sont incorrectes,
un message d’erreur est affiché. Si elles sont correctes, l’utilisateur est redirigé vers la page
d’accueil, et notre système génère et envoie à l’utilisateur un jeton d’accès et un jeton de
rafraîchissement.
Le jeton d’accès est ajouté aux en-têtes des requêtes HTTP, ce qui permet à l’utilisateur
d’accéder aux ressources demandées. Ce jeton a une durée de validité de 15 minutes. Lorsque
le jeton d’accès expire, le jeton de rafraîchissement, qui a une durée de validité plus longue,
est utilisé pour générer un nouveau jeton d’accès. Si le jeton de rafraîchissement est également
expiré, l’utilisateur est automatiquement redirigé vers la page de connexion.
Page 53
SPRINT 3 Hazem B OUAZIZ
6.4 Conception
utilisateur »
Page 54
SPRINT 3 Hazem B OUAZIZ
6.5 Réalisation
Cette section présente les fonctionnalités qui ont été développées lors de ce troisiéme sprint.
Lorsque l’utilisateur n’a pas de compte, il a la possibilité de cliquer sur le lien "You don’t
have an account" et sera ensuite redirigé vers une page dédiée, comme indiqué dans la figure
35. Sur cette page, il sera invité à remplir un formulaire de création de compte en respectant
certaines conditions spécifiques.
Pour créer un nouveau compte, l’utilisateur devra fournir un nom d’utilisateur unique. De
plus, le nom de domaine de l’adresse e-mail doit être "@groupe-telnet.net". Enfin, le mot de
passe doit être composé au moins de 8 caractères et contient au moins un caractère spécial.
Page 56
SPRINT 3 Hazem B OUAZIZ
Après avoir saisi son adresse e-mail, l’utilisateur recevra un e-mail contenant un lien, comme
illustré dans la figure 36.
En cliquant sur ce lien, l’utilisateur sera redirigé vers une page où il pourra choisir un
nouveau mot de passe et le mettre à jour afin d’accéder à son compte.
Après avoir saisi son adresse e-mail, l’utilisateur recevra un e-mail contenant un lien, comme
illustré dans la figure 35.
Page 57
SPRINT 3 Hazem B OUAZIZ
Ce lien lui permettra de définir un nouveau mot de passe, comme montré dans la figure 37.
En cliquant sur ce lien, l’utilisateur sera redirigé vers une page où il pourra choisir un nouveau
mot de passe et le mettre à jour afin d’accéder à son compte.
Une fois authentifié, l’utilisateur a accès aux différentes pages en fonction de ses droits
d’accès, qu’il soit administrateur ou utilisateur. À travers le menu, l’utilisateur peut accéder à
son profil pour ajouter quelques détails comme indique la figure 38 :
Grâce au menu dédié à l’administrateur, celui-ci peut accéder au module de gestion des
utilisateurs. À travers cette interface, l’administrateur a la possibilité de consulter la liste des
utilisateurs et d’effectuer différentes opérations sur chacun d’entre eux.
Page 58
SPRINT 3 Hazem B OUAZIZ
La figure 39 présente l’interface de gestion des utilisateurs, qui offre à l’administrateur une
vue claire et organisée de tous les utilisateurs enregistrés dans l’application. À partir de cette
page, l’administrateur peut effectuer plusieurs actions, telles que la modification du rôle d’un
utilisateur, la consultation des informations détaillées d’un utilisateur ou encore la suppression
d’un utilisateur si nécessaire.
Cette interface facilite la gestion des utilisateurs par l’administrateur, lui permettant de
maintenir le contrôle et d’apporter les ajustements nécessaires aux rôles et aux permissions
des utilisateurs dans le système.
Page 59
SPRINT 3 Hazem B OUAZIZ
L’utilisateur peut accéder au tableau de bord qui présente des statistiques sur l’état du
système et les CVs. Il pourra visualiser plusieurs diagrammes, tels que le nombre de CVs par
profil, ainsi que des courbes indiquant l’évolution du nombre de CVs au fil du temps.
Le tableau de bord offre donc à l’administrateur une vue d’ensemble des données et des
statistiques importantes concernant les CVs, lui permettant ainsi de suivre et d’analyser les
informations pertinentes pour son travail. La figure 42 montre l’interface du tableau de bord.
Page 60
SPRINT 3 Hazem B OUAZIZ
Page 61
SPRINT 3 Hazem B OUAZIZ
L’interface illustrée dans la figure 44 permet à l’utilisateur de consulter la liste des CVs. De
plus, il a la possibilité de filtrer les CVs en fonction des profils, tels que Backend, Frontend, etc.
Il peut également supprimer des CVs de la liste s’il le souhaite.
6.6 Conclusion
Dans ce chapitre, nous avons abordé les modules de gestion des utilisateurs et de gestion
des CVs. Nous avons commencé par présenter la spécification à l’aide d’un diagramme des cas
d’utilisation. Ensuite, nous avons détaillé la conception des modules en utilisant un diagramme
des classes. Enfin, nous avons présenté les interfaces réalisées pour ces modules. Dans le
chapitre suivant nous allons présenter le dernier sprint concernant le déploiment de l’application
web sur le serveur de telnet.
Page 62
SPRINT 4 Hazem B OUAZIZ
Chapitre
Chapter
7
Sprint 4 : Déploiement de
l’application "TRS" sur le serveur de
Telnet
7.1 Introduction
Nous examinerons en détail l’importance de ce sprint, suivie d’une comparaison entre les
modes production et développement.
Pour une présentation visuelle de notre travail, nous conclurons ce chapitre en montrant des
captures d’écran du processus de déploiement.
Lors de l’évaluation de l’application ’TRS’ réalisée lors du dernier sprint, nous avons
identifié un problème majeur qui nécessite une attention immédiate : l’application n’est pas
encore déployée sur le serveur de Telnet, ce qui limite considérablement l’accès des utilisateurs
internes de l’entreprise à ses fonctionnalités.
Page 63
SPRINT 4 Hazem B OUAZIZ
De plus, l’indisponibilité de l’application a créé une frustration et un retard dans les tâches
des utilisateurs internes, entraînant une baisse de la qualité du travail accompli.
Afin de résoudre le problème de déploiement de ’TRS’ sur notre serveur interne, nous avons
pris des mesures concrètes. Cela inclut l’établissement d’une stratégie de déploiement solide, la
résolution des problèmes techniques et la coordination avec les parties prenantes concernées.
Cette section montre une analyse comparative entre les deux modes de développement et de
production comme il indiqué dans le tableau 6.
Page 64
SPRINT 4 Hazem B OUAZIZ
Chaque mode de déploiement présente ses avantages et ses complexités, adaptés à différents
types d’applications. Le tableau 7 désigne plusieurs type de déploiement.
Page 65
SPRINT 4 Hazem B OUAZIZ
7.5 Réalisation
2. Copie des fichiers de l’application Angular dans l’application Spring Boot : nous
avons copié les fichiers générés dans le dossier "dist" de l’application Angular vers
le dossier "src/main/resources/static" de l’application Spring Boot. Cela permet de
les intégrer à l’application backend. La figure 46 représente l’architecture du dossiers
ressources.
Page 66
SPRINT 4 Hazem B OUAZIZ
Page 67
SPRINT 4 Hazem B OUAZIZ
En suivant ces étapes, nous avons effectué un déploiement manuel de l’application en mode
production, en prenant soin de générer les fichiers de production de l’application Angular, de
les intégrer à l’application Spring Boot, de créer un fichier JAR exécutable et de déployer
l’ensemble sur le serveur, tout en important les fichiers de la base de données.
7.6 Conclusion
Page 68
CONCLUSION GÉNÉRALE ET PERSPECTIVES Hazem B OUAZIZ
Page 69
NETOGRAPHIE Hazem B OUAZIZ
Netographie
Page 70
Résumé
Pour faciliter la gestion des CVs lors du processus de recrutement, nous avons développé une
solution complète de gestion des CVs dans le cadre de notre projet de fin d’études. Cette
solution intègre plusieurs modules et propose un tableau de bord offrant une vue d’ensemble
des opérations liées à ces différents modules.
Mots clés : Développement Web, Mobile, IA, WebService, API, Microservice
Abstract
To facilitate the management of resumes during the recruitment process, we developed a
complete resume management solution as part of our final year project. This solution
integrates several modules and offers a dashboard providing an overview of operations linked
to these different modules.
Keywords : Web and Mobile Development, IA, WebService, API, Microservice
التلخيص
لقد صممنا تلنات من أجل مساعدة مدير التنمية البشرية على استخراج الوثائق الالزمة.لتسهيل حسن تنظيم و إدارة الوثائق
تجمع هذه المنصة بين الوحدات التنظيمية المختلفة و مرفوقة بلوحة قيادة التي تقدم نظرة.في فترات انتداب المهندسين
.شاملة على عمليات الوحدات المختلفة
Développement Web, Mobile, IA, WebService, API, Microservice كلمات المفاتيح