← Terug naar projecten Webapplicatie · Recruitment

TRT Conseil

Een wervingsplatform voor de horeca- en restaurantsector met zoeken en filteren.

TRT Conseil
PROJECT

Het project

TRT Conseil is een webapplicatie gebouwd rond vacatureaanbod, kandidaatontdekking en filtering, met een functionele interface voor regelmatig gebruik.

Systeemarchitectuur & HR-platform

Een gespecialiseerd wervingsplatform voor de horecasector (CHR), gebouwd met Symfony. Het beschikt over een op rollen gebaseerd beveiligingsmodel (RBAC) met dubbele validatie door consultants, een asynchrone AJAX-zoekmachine met KnpPaginator en gedocumenteerde REST API-endpoints.

┌─────────────────────────────────────────────────────────────────────────────┐
│                 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
            

Horecarekrutering met Menselijke Meerwaarde

Elk account, elke vacature en elke sollicitatie wordt gecontroleerd en goedgekeurd door een deskundige HR-consultant voordat contact tot stand komt.

Beveiliging & Rollenhiërarchie

Strikt rechtensysteem met 4 rollen en een tijdelijke TOVALID-status om ongeoorloofde publicaties te voorkomen.

Geautomatiseerde CV-verzending

Automatische samenstelling en verzending via Symfony Mailer van de sollicitatie met bijgevoegd PDF-cv bij goedkeuring.

1. Beveiligingsmodel & Rollenbeheer (RBAC)

Toegangshiërarchie beheerd via het Symfony Security-component met verplichte menselijke controle vooraf:

Systeemrol Status Bevoegdheden & Rechten
ROLE_ADMIN Beheerder Aanmaken, bewerken, blokkeren en verwijderen van beheerder- en consultantaccounts.
ROLE_CONSULTANT HR-moderator Goedkeuren van kandidaten en werkgevers, publiceren van vacatures en doorsturen van cv's.
ROLE_RECRUTEUR Werkgever Bedrijfsprofiel beheren, vacatures plaatsen en vooraf gekwalificeerde sollicitanten ontvangen.
ROLE_CANDIDAT Kandidaat Veilige upload van PDF-cv's, uitgebreid zoeken en solliciteren op goedgekeurde vacatures.

2. Operationele Workflows & Sollicitatieverwerking

Gestructureerde processen om de verificatie van elke wervingsstap te waarborgen:

Kandidaat-workflow & PDF-CV-beheer

Veilige upload van met transliterator_transliterate() geschoonde PDF-bestanden met realtime statusopvolging.

PDF Uploadtransliteratortovalid

Consultant-workflow & Automatische E-mailverzending

Beoordeling van openstaande sollicitaties en automatische verzending van e-mails met bijgevoegd cv naar werkgevers.

Symfony MailerDataPartPièce jointe CV

3. Asynchrone AJAX-zoekmachine

JavaScript Filter.js-module gekoppeld aan KnpPaginator en Doctrine QueryBuilder voor direct zoeken zonder paginaherlaad:

// 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;
}
            
  • Realtime Event Listeners: Directe detectie van zoektermen en functiefilters met gedeeltelijke DOM-injectie.
  • Geoptimaliseerde KnpPaginator-paginering: Beperking tot 6 items per pagina om het servergeheugenverbruik te minimaliseren.
  • HTML5 Geschiedenis (replaceState): Dynamische URL-synchronisatie voor het direct kunnen delen van gefilterde zoekopdrachten.

4. Headless REST API-specificaties

Gedocumenteerde JSON-endpoints geserialiseerd met JMS Serializer:

Method Endpoint URL JMS-groep Omschrijving Endpoint
GET /api/annonces getAnnonces Volledige lijst met goedgekeurde vacatures in JSON-formaat
GET /api/annoncesby?page={n} getAnnonces Gepagineerde vacaturelijst inclusief pagineringsmetagegevens
GET /api/annonce/{id} getAnnonces Volledige details van een specifieke vacature op basis van ID
GET /api/annoncesby/{poste} getAnnonces Filteren en pagineren van vacatures op functietitel

5. Datamodel & ORM-relaties

Genormaliseerd MySQL relationeel databaseschema met Doctrine referentiële integriteit:

Gebruiker- & Profielentiteiten

User met uniek e-mailadres, Candidat met PDF-pad en Recruteur met bedrijfsinformatie.

Vacature- & Beroepentaxonomie

Poste met 28 horecaberoepen en Annonce met contractvorm, salaris en omschrijving.

Candidature-entiteit

Koppeltabel tussen Annonce, Candidat en de goedkeurende Consultant inclusief validatiestatus.

Ervaar het TRT Conseil Platform

Bekijk de vacatures in de horecasector en test de realtime zoekmachine.

Bezoek TRT Conseil Applicatie ↗