CHAPITRE 4 IMPLEMENTATION DE LA SOLUTION PROPOSEE
4.1. Introduction
Dans ce chapitre, nous présentons les
différents outils et techniques utilisés tel que le NLP pour
implémenter notre système intelligent d'analyse de CV.
Après une justification approfondie des choix technologiques (langages,
frameworks, SGBD), nous détaillons l'architecture
d'implémentation adoptée, qui repose sur une approche
client-serveur hybride articulée autour des modèles MVT
(Model-View-Template) pour le backend (Django) et MVVM (Model-View-ViewModel)
pour le frontend (React). Nous exposons ensuite les différents modules
développés et les tests réalisés pour
évaluer le bon fonctionnement de la solution et quelques rappelles
important pour sur les notions de machines learning, deep learning et nlp .
4.1. Technologies
1. Choix des langages de programmation
· JavaScript (React) : utilisé
côté client pour concevoir une interface dynamique en architecture
MVVM. Le modèle (données), la vue (UI) et la logique de liaison
(état via hooks ou Redux) sont clairement séparés.
· Python (Django) : choisi pour son
efficacité dans le développement web côté serveur et
son intégration native avec des bibliothèques NLP (BERT, Spacy).
Django suit le modèle MVT, facilitant la structuration du backend.

· Tailwindcss: utilisés pour
structurer et styliser l'interface dans les composants React.
2. Frameworks
· React.js : framework JavaScript moderne, basé
sur le modèle MVVM, permettant une gestion efficace des vues et de
l'état via composants, props et hooks.
· Django : framework Python robuste, structuré
selon le modèle MVT, utilisé pour la logique métier, les
API REST, la sécurité et l'interface avec la base de
données via ORM.
· Tailwind CSS : bibliothèque CSS utilitaire,
utilisée pour styliser l'interface sans compromettre la
séparation des vues et de la logique.
· PyTorch / Transformers (Hugging Face) : frameworks
utilisés pour charger et exploiter le modèle BERT dans l'analyse
sémantique des CV.
· PyMuPDF / pdfminer : bibliothèques Python
utilisées pour parser et extraire le contenu textuel des CV en PDF.
66
3. Base de données
Le système utilise PostgreSQL comme SGBD relationnel
robuste, performant et bien adapté à l'architecture Django. Le
modèle de données est défini à travers des
modèles Django (ORM), avec une structure logique respectant
l'intégrité des relations (utilisateurs, offres, CV
analysés...).
4. Environnement de développement
· Visual Studio Code (VS Code) : utilisé comme
éditeur principal, avec intégration d'extensions pour Python,
React, Tailwind, etc.
5. Approche d'implémentation
Nous avons adopté une approche modulaire avec
séparation claire des responsabilités entre frontend, backend,
NLP et base de données.
Côté client :
· Le frontend React est structuré selon
MVVM, avec :
o Model : état local / global (via Redux)
o View : composants d'interface (formulaires CV, tableau de
bord, résultats)
o ViewModel : gestion logique (soumissions, appels API)
Côté serveur :
· Django suit l'approche MVT, où :
o Model : définit la base de données via ORM
o View : fonctions ou classes retournant JSON
o Template : utilisé uniquement pour endpoints HTML
(admin), sinon nous avons utilisé un API REST + React
Modules clés développés
· Module Authentification (utilisateurs, entreprises,
chercheurs d'emploi)
· Module de dépôt et parsing de CV (upload,
extraction PDF)
· Module d'analyse sémantique avec BERT
· Dashboard interactif pour les recruteurs (via React +
Chart.js)
· Système de notification (emails)
· Module de gestion des rôles (permissions Django)
Ces Technologies ont était choisi car c'est adapter
pour développer les applications qui utilises le modèle de
machine Learning .
67
6. Étude et mise en oeuvre d'un serveur
Celery
Dans le domaine du développement d'applications web et
distribuées, il est fréquent de rencontrer des traitements lourds
ou longs à exécuter, tels que l'envoi massif d'e-mails, la
génération de rapports volumineux ou le traitement d'images.
L'exécution synchrone de ces tâches dans le processus principal
d'une application entraîne souvent une dégradation significative
des performances et de l'expérience utilisateur. Pour répondre
à ce problème, la communauté Python a
développé Celery, un système de gestion de tâches
asynchrones permettant d'exécuter ces traitements en arrière-plan
grâce à un mécanisme de file d'attente et à des
workers indépendants.
· Définition de Celery
Celery est un framework Python open-source
dédié à la gestion de tâches
distribuées et à leur exécution asynchrone. Il s'appuie
sur un système de messagerie intermédiaire appelé
broker qui joue le rôle de file d'attente.
Dans ce modèle, l'application principale
délègue l'exécution des tâches à un ou
plusieurs workers Celery qui les traitent de manière
indépendante, permettant ainsi à l'application de rester
réactive.
· Architecture générale
L'architecture de Celery repose sur quatre composants principaux
:
|