Architektura systemu & Platforma HR
Dedykowana platforma rekrutacyjna dla branży hotelarsko-gastronomicznej (HORECA), stworzona w Symfony. Zawiera model uprawnień RBAC z dwuetapową weryfikacją przez konsultantów, asynchroniczną wyszukiwarkę AJAX z KnpPaginator oraz udokumentowane endpointy REST API.
┌─────────────────────────────────────────────────────────────────────────────┐
│ 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
Rekrutacja HORECA z ludzkim podejściem
Każde konto, ogłoszenie o pracę i zgłoszenie kandydata jest weryfikowane przez eksperta HR przed nawiązaniem kontaktu.
Bezpieczeństwo & Hierarchia ról
Ścisły system 4 ról z przejściowym statusem TOVALID uniemożliwiającym nieautoryzowaną publikację treści.
Automatyczne przesyłanie CV
Automatyczne generowanie i wysyłka zgłoszenia przez Symfony Mailer z załączonym plikiem PDF w momencie akceptacji.
1. Model bezpieczeństwa & Zarządzanie rolami (RBAC)
Hierarchia uprawnień obsługiwana przez komponent Security Symfony z obowiązkową weryfikacją manualną:
| Rola systemowa |
Status |
Uprawnienia i zadania |
ROLE_ADMIN |
Administrator |
Tworzenie, edycja, blokowanie i usuwanie kont administratorów oraz konsultantów. |
ROLE_CONSULTANT |
Konsultant HR |
Weryfikacja kandydatów i pracodawców, publikacja ofert oraz przesyłanie CV do firm. |
ROLE_RECRUTEUR |
Pracodawca |
Zarządzanie wizytówką firmy, publikowanie ofert (umowa o pracę, zlecenie, dodatki) i odbiór zgłoszeń. |
ROLE_CANDIDAT |
Kandydat |
Bezpieczne przesyłanie CV w formacie PDF, zaawansowane wyszukiwanie i aplikowanie na oferty. |
2. Procesy operacyjne & Obsługa aplikacji
Ustrukturyzowane ścieżki użytkowników gwarantujące kontrolę na każdym etapie rekrutacji:
Ścieżka Kandydata & Zarządzanie CV w PDF
Bezpieczne przesyłanie plików PDF oczyszczonych przez transliterator_transliterate() ze statusem na żywo.
PDF Uploadtransliteratortovalid
Ścieżka Konsultanta & Automatyczna wysyłka
Weryfikacja oczekujących zgłoszeń i automatyczne wysyłanie e-maili z załączonym CV do pracodawcy po akceptacji.
Symfony MailerDataPartPièce jointe CV
3. Asynchroniczna wyszukiwarka (AJAX)
Moduł JavaScript Filter.js połączony z KnpPaginator i Doctrine QueryBuilder do wyszukiwania bez przeładowania:
// 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;
}
- Nasłuchiwanie zdarzeń w czasie rzeczywistym: Błyskawiczne wykrywanie wpisywanego tekstu i filtrów stanowisk z częściową podmianą DOM.
- Zoptymalizowana paginacja KnpPaginator: Ograniczenie do 6 ofert na stronę w celu zmniejszenia zużycia pamięci serwera.
- Historia przeglądarki HTML5 (replaceState): Dynamiczna aktualizacja adresu URL umożliwiająca bezpośrednie udostępnianie przefiltrowanych wyników.
4. Specyfikacja headless API REST
Udokumentowane endpointy JSON serializowane za pomocą JMS Serializer:
| Method |
Endpoint URL |
Grupa JMS |
Opis punktu końcowego |
| GET |
/api/annonces |
getAnnonces |
Kompletna lista zatwierdzonych ofert pracy w formacie JSON |
| GET |
/api/annoncesby?page={n} |
getAnnonces |
Stronicowana lista ofert wraz z metadanymi paginacji |
| GET |
/api/annonce/{id} |
getAnnonces |
Pełne szczegóły konkretnej oferty pracy według identyfikatora |
| GET |
/api/annoncesby/{poste} |
getAnnonces |
Filtrowanie i stronicowanie ogłoszeń na podstawie nazwy stanowiska |
5. Model danych & Relacje ORM
Znormalizowany schemat bazy MySQL z integralnością referencyjną Doctrine:
Encje Użytkowników & Profili
User z unikalnym e-mailem, Candidat ze ścieżką do CV PDF oraz Recruteur z danymi firmy.
Encje Ofert & Stanowisk
Poste zawierający 28 zawodów HORECA oraz Annonce przechowujące rodzaj umowy, wynagrodzenie i opis.
Encja Aplikacji Candidature
Tabela łącząca Annonce, Candidat i weryfikującego Consultant wraz ze statusem zgłoszenia.