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.