Architettura di Sistema & Piattaforma HR
Piattaforma web di reclutamento specializzata nel settore alberghiero e ristorazione (HORECA), sviluppata con Symfony. Integra un modello di sicurezza RBAC con doppia validazione da parte di consulenti, motore di ricerca asincrono AJAX con KnpPaginator ed endpoint API REST documentati.
┌─────────────────────────────────────────────────────────────────────────────┐
│ 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
Reclutamento HORECA a Valore Umano
Ogni profilo, offerta di lavoro e candidatura viene verificata e validata da un consulente HR prima della messa in contatto.
Sicurezza & Gerarchia dei Ruoli
Sistema di autorizzazioni a 4 ruoli con stato transitorio TOVALID per impedire pubblicazioni non verificate.
Invio Automatizzato dei CV
Generazione e inoltro automatico via Symfony Mailer della candidatura con CV in formato PDF allegato al momento dell'approvazione.
1. Modello di Sicurezza & Gestione Ruoli (RBAC)
Gerarchia degli accessi gestita tramite il componente Security di Symfony con validazione umana preventiva:
| Ruolo di Sistema |
Stato |
Permessi & Funzionalità |
ROLE_ADMIN |
Supervisore |
Creazione, modifica, blocco ed eliminazione degli account di amministratori e consulenti. |
ROLE_CONSULTANT |
Moderatore HR |
Validazione di candidati e aziende, pubblicazione annunci e inoltro dei CV ai datori di lavoro. |
ROLE_RECRUTEUR |
Datore di Lavoro |
Profilo aziendale, pubblicazione annunci (indeterminato, determinato, extra) e ricezione candidature qualificate. |
ROLE_CANDIDAT |
Candidato |
Upload sicuro del CV in PDF, ricerca avanzata e candidatura alle offerte di lavoro validate. |
2. Workflow Operativi & Gestione Candidature
Flussi di lavoro strutturati per garantire la verifica di ogni fase del processo di selezione:
Workflow Candidato & Gestione CV PDF
Caricamento sicuro di file PDF sanificati con transliterator_transliterate() e tracciamento dello stato di validazione.
PDF Uploadtransliteratortovalid
Workflow Consulente & Invio Email Automatico
Revisione delle candidature in attesa e trasmissione automatica dell'email con CV allegato al datore di lavoro.
Symfony MailerDataPartPièce jointe CV
3. Motore di Ricerca Asincrono (AJAX)
Modulo JavaScript Filter.js abbinato a KnpPaginator e Doctrine QueryBuilder per ricerche immediate senza ricaricare la pagina:
// 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;
}
- Event Listener in Tempo Reale: Rilevamento immediato dei testi digitati e dei filtri di mansione con aggiornamento parziale del DOM.
- Paginazione Ottimizzata con KnpPaginator: Limitazione a 6 elementi per pagina per ridurre il consumo di memoria del server.
- Cronologia HTML5 (replaceState): Aggiornamento dinamico dell'URL del browser per consentire la condivisione diretta dei risultati filtrati.
4. Specifiche dell'API REST Headless
Endpoint JSON documentati e serializzati con JMS Serializer:
| Method |
Endpoint URL |
Gruppo JMS |
Descrizione Endpoint |
| GET |
/api/annonces |
getAnnonces |
Elenco completo delle offerte di lavoro approvate in formato JSON |
| GET |
/api/annoncesby?page={n} |
getAnnonces |
Collezione paginata di annunci con metadati di paginazione |
| GET |
/api/annonce/{id} |
getAnnonces |
Dettaglio completo di una specifica offerta tramite il suo ID |
| GET |
/api/annoncesby/{poste} |
getAnnonces |
Filtro e paginazione degli annunci in base alla mansione |
5. Modello Dati & Relazioni ORM
Schema relazionale normalizzato in MySQL con integrità referenziale Doctrine:
Entità Utenti & Profili
User con email univoca, Candidat con percorso del file PDF e Recruteur con dati aziendali.
Entità Annunci & Mansioni
Poste con 28 professioni HORECA e Annonce con tipo di contratto, retribuzione e descrizione.
Entità Candidature
Tabella di unione che collega Annonce, Candidat e Consultant moderatore con stato di approvazione.