Systemarchitektur & HR-Plattform
Eine spezialisierte Personalvermittlungsplattform für das Hotel- und Gaststättengewerbe (HORECA), entwickelt mit Symfony. Sie verfügt über ein rollenbasiertes Sicherheitsmodell (RBAC) mit Beratermoderation, eine asynchrone AJAX-Suche mit KnpPaginator und dokumentierte REST-API-Endpunkte.
┌─────────────────────────────────────────────────────────────────────────────┐
│ 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
HR-Vermittlung mit menschlichem Mehrwert
Jedes Konto, jedes Stellenangebot und jede Bewerbung wird vor der Kontaktherstellung von einem HR-Experten geprüft und validiert.
Sicherheit & Rollenhierarchie
Striktes 4-Rollen-Berechtigungssystem mit temporärem TOVALID-Status zur Verhinderung unautorisierter Veröffentlichungen.
Automatisierter Lebenslaufversand
Automatische Erstellung und Versand der Bewerbung via Symfony Mailer mit angehängtem PDF-Lebenslauf bei Validierung.
1. Sicherheitsmodell & Rollenverwaltung (RBAC)
Zugriffshierarchie über die Symfony Security-Komponente mit obligatorischer menschlicher Überprüfung:
| Systemrolle |
Status |
Berechtigungen & Aufgaben |
ROLE_ADMIN |
Supervisor |
Erstellen, Bearbeiten, Sperren und Löschen von Administrator- und Beraterkonten. |
ROLE_CONSULTANT |
HR-Moderator |
Freigabe von Bewerbern und Arbeitgebern, Veröffentlichung von Stellenanzeigen und Weiterleitung von Lebensläufen. |
ROLE_RECRUTEUR |
Arbeitgeber |
Unternehmensprofil anlegen, Stellenanzeigen schalten und vorqualifizierte Bewerbungen empfangen. |
ROLE_CANDIDAT |
Bewerber |
Sicherer Upload von PDF-Lebensläufen, erweiterte Suche und Bewerbung auf geprüfte Stellenangebote. |
2. Betriebliche Workflows & Bewerbungsabwicklung
Strukturierte Prozesse zur lückenlosen Überprüfung jedes Rekrutierungsschritts:
Bewerber-Workflow & PDF-Lebenslaufverwaltung
Sicherer Upload von mit transliterator_transliterate() bereinigten PDF-Dateien und Live-Statusverfolgung.
PDF Uploadtransliteratortovalid
Berater-Workflow & Automatisierter E-Mail-Versand
Prüfung ausstehender Bewerbungen und automatisierter Versand mit angehängtem PDF an den Arbeitgeber bei Freigabe.
Symfony MailerDataPartPièce jointe CV
3. Asynchrone AJAX-Suchmaschine
JavaScript Filter.js-Modul gekoppelt mit KnpPaginator und Doctrine QueryBuilder für blitzschnelle Suchen ohne Neuladen:
// 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;
}
- Echtzeit-Ereignis-Listener: Sofortige Erkennung von Tastatureingaben und Stellenfiltern mit partieller DOM-Aktualisierung.
- Optimierte KnpPaginator-Paginierung: Begrenzung auf 6 Datensätze pro Seite zur Schonung der Serverressourcen.
- HTML5-Verlauf (replaceState): Dynamische Aktualisierung der Browser-URL zum direkten Teilen gefilterter Suchlinks.
4. Headless REST-API-Spezifikationen
Dokumentierte JSON-Endpunkte, serialisiert mit JMS Serializer:
| Method |
Endpoint URL |
JMS-Gruppe |
Endpunkt-Beschreibung |
| GET |
/api/annonces |
getAnnonces |
Vollständige Liste aller geprüften Stellenangebote im JSON-Format |
| GET |
/api/annoncesby?page={n} |
getAnnonces |
Paginierte Stellensammlung inklusive Paginierungs-Metadaten |
| GET |
/api/annonce/{id} |
getAnnonces |
Vollständige Details einer bestimmten Stelle anhand der ID |
| GET |
/api/annoncesby/{poste} |
getAnnonces |
Filtern und Paginieren von Angeboten nach Berufsbezeichnung |
5. Datenmodell & ORM-Relationen
Normalisiertes relationales MySQL-Datenbankschema mit Doctrine-Referenzintegrität:
Benutzer- & Profil-Entitäten
User mit eindeutiger E-Mail, Candidat mit PDF-Pfad und Recruteur mit Unternehmensdaten.
Stellenangebote & Taxonomie
Poste mit 28 HORECA-Berufen und Annonce mit Vertragsart, Gehalt und Beschreibung.
Candidature-Bewerbungsentität
Verknüpfung zwischen Annonce, Candidat und freigebendem Consultant inklusive Validierungsstatus.