← Retour aux réalisations Application web · Recrutement

TRT Conseil

Une plateforme de recrutement pour l’hôtellerie-restauration avec recherche et filtrage.

TRT Conseil
PROJET

Le projet

TRT Conseil est une application web organisée autour des annonces, de la recherche de candidats et du filtrage, avec une interface conçue pour une utilisation régulière.

Architecture Système & Plateforme RH

Plateforme web de recrutement spécialisée dans le secteur de l'hôtellerie et de la restauration (CHR), développée sous Symfony. Elle associe un modèle de sécurité RBAC à double validation par consultants, un moteur de recherche AJAX asynchrone avec KnpPaginator, et des endpoints d'API REST documentés.

┌─────────────────────────────────────────────────────────────────────────────┐
│                 TRT Conseil — Architecture RH & Recrutement                 │
└──────────────────────────────────────┬──────────────────────────────────────┘
                                       │
           ┌───────────────────────────┼───────────────────────────┐
           ▼                           ▼                           ▼
  🛡️ Sécurité & Modération RBAC  🔍 Moteur de Recherche AJAX 📡 API REST Headless
  • Double validation (TOVALID)• Filter.js sans rechargement• JMS Serializer Groups
  • 4 Rôles isolés (Admin/RH) • KnpPaginator (6/page)     • Endpoints paginés (/api)
  • Upload sécurisé de CV PDF • Synchronisation URL HTML5 • Support mobile & tiers
  • Envoi CV par Symfony Mailer• Requête optimisée Doctrine • Documentation JSON
            

Recrutement CHR à Valeur Humaine

Chaque compte, offre d'emploi et candidature est audité et validé par un consultant RH expert avant toute mise en relation.

Sécurité & Hiérarchie des Rôles

Système de permissions strict à 4 rôles isolés avec statut transitoire TOVALID empêchant les publications non autorisées.

Transmission Automatisée des CVs

Génération et envoi par Symfony Mailer du dossier de candidature avec CV PDF en pièce jointe lors de la validation.

1. Modèle de Sécurité & Gestion des Rôles (RBAC)

Hiérarchie des accès gérée par le composant Security de Symfony avec validation humaine préalable :

Rôle Système Statut Capacités & Permissions
ROLE_ADMIN Superviseur Création, modification, blocage et suppression des comptes administrateurs et consultants.
ROLE_CONSULTANT Modérateur RH Validation des candidats et recruteurs, publication des annonces et transmission des CVs aux employeurs.
ROLE_RECRUTEUR Employeur Fiche établissement, dépôt d'offres (CDI, CDD, extras) et réception des candidatures pré-qualifiées.
ROLE_CANDIDAT Candidat Dépôt sécurisé de CV PDF, recherche avancée et postulation aux offres d'emploi validées.

2. Workflows Opérationnels & Traitement des Dossiers

Parcours utilisateurs structurés garantissant la vérification de chaque étape de recrutement :

Workflow Candidat & Gestion du CV PDF

Téléversement sécurisé de CV PDF nettoyé via transliterator_transliterate() et suivi en direct de l'état de validation.

PDF Uploadtransliteratortovalid

Workflow Consultant & Envoi Automatisé

Revue des candidatures en attente et envoi automatique du courriel avec CV en pièce jointe au recruteur lors de la validation.

Symfony MailerDataPartPièce jointe CV

3. Moteur de Recherche Asynchrone (AJAX)

Module JavaScript Filter.js couplé à KnpPaginator et Doctrine QueryBuilder pour une recherche sans rechargement :

// Requête QueryBuilder optimisée dans AnnonceRepository.php
private function getSearchQuery(SearchData $search): QueryBuilder
{
    $query = $this->createQueryBuilder('p')
        ->select('c', 'p')
        ->join('p.poste', 'c')
        ->orderBy('p.id', 'DESC');

    if (!empty($search->q)) {
        $query->andWhere('p.titre LIKE :q')
              ->setParameter('q', "%{$search->q}%");
    }

    if (!empty($search->poste)) {
        $query->andWhere('c.id IN (:poste)')
              ->setParameter('poste', $search->poste);
    }

    return $query;
}
            
  • Écouteurs d'Événements en Temps Réel: Détection des saisies clavier et des filtres de postes avec injection partielle du DOM.
  • Pagination KnpPaginator Optimisée: Limitation des jeux de données à 6 éléments par page pour alléger la consommation mémoire.
  • Historique HTML5 (replaceState): Mise à jour dynamique de l'URL du navigateur pour permettre le partage direct des liens filtrés.

4. Spécifications de l'API REST Headless

Points de terminaison JSON documentés sérialisés avec JMS Serializer :

Method Endpoint URL Groupe JMS Description de l'Endpoint
GET /api/annonces getAnnonces Liste complète des offres d'emploi validées au format JSON
GET /api/annoncesby?page={n} getAnnonces Collection paginée d'annonces avec métadonnées de pagination
GET /api/annonce/{id} getAnnonces Détail complet d'une offre d'emploi par son identifiant
GET /api/annoncesby/{poste} getAnnonces Filtrage et pagination des annonces selon le libellé du poste

5. Modèle de Données & Relations ORM

Schéma relationnel normalisé sous MySQL avec intégrité référentielle Doctrine :

Entités Utilisateurs & Profils

User avec email unique, Candidat avec document CV PDF, et Recruteur avec données d'établissement.

Entités Annonces & Nomenclature

Poste regroupant 28 métiers CHR et Annonce stockant le type de contrat, salaire et description.

Entité Candidature

Liaison associant l'Annonce, le Candidat et le Consultant modérateur avec état de validation.

Explorer la Plateforme TRT Conseil

Découvrez les offres d'emploi du secteur CHR et testez la recherche asynchrone.

Visiter l'Application TRT Conseil ↗