← Înapoi la proiecte Aplicație web · Recrutare

TRT Conseil

O platformă de recrutare pentru sectorul hotelier și de restaurante, cu căutare și filtrare.

TRT Conseil
PROIECT

Proiectul

TRT Conseil este o aplicație web organizată în jurul anunțurilor, căutării candidaților și filtrării, cu o interfață destinată utilizării recurente.

Arhitectură de Sistem & Platformă HR

Platformă web de recrutare specializată în sectorul hotelier și alimentație publică (HoReCa / CHR), dezvoltată în Symfony. Asociază un model de securitate RBAC cu dublă validare prin consultanți, un motor de căutare AJAX asincron cu KnpPaginator și endpoint-uri API REST documentate.

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

Recrutare HoReCa cu Valoare Umană

Fiecare cont, ofertă de muncă și candidatură este auditată și validată de un consultant HR expert înainte de orice punere în legătură.

Securitate & Ierarhie a Rolurilor

Sistem strict de permisiuni cu 4 roluri izolate și stare tranzitorie TOVALID ce împiedică publicările neautorizate.

Transmitere Automatizată a CV-urilor

Generare și trimitere automată prin Symfony Mailer a dosarului de candidatură cu CV PDF atașat în momentul validării.

1. Model de Securitate & Gestiunea Rolurilor (RBAC)

Ierarhia accesului gestionată prin componenta Security din Symfony cu validare umană prealabilă obligatorie:

Rol de Sistem Statut Capacități & Permisiuni
ROLE_ADMIN Supervizor Crearea, modificarea, blocarea și ștergerea conturilor de administratori și consultanți.
ROLE_CONSULTANT Moderator HR Validarea candidaților și a angajatorilor, publicarea anunțurilor și transmiterea CV-urilor către companii.
ROLE_RECRUTEUR Angajator Fișă de companie, publicare de oferte (perioadă nedeterminată, determinată, extra) și primirea candidaturilor precalificate.
ROLE_CANDIDAT Candidat Încărcare securizată a CV-ului PDF, căutare avansată și aplicare la ofertele de muncă validate.

2. Fluxuri Operaționale & Procesarea Candidaturilor

Procese structurate ce garantează verificarea fiecărei etape din procesul de recrutare:

Flux Candidat & Gestionare CV PDF

Încărcare securizată a fișierelor PDF curățate prin transliterator_transliterate() și urmărire în timp real a stării de validare.

PDF Uploadtransliteratortovalid

Flux Consultant & Notificare Automată

Revizuirea candidaturilor în așteptare și transmiterea automată a e-mailului cu CV-ul atașat către angajator la aprobare.

Symfony MailerDataPartPièce jointe CV

3. Motor de Căutare Asincron (AJAX)

Modul JavaScript Filter.js conectat la KnpPaginator și Doctrine QueryBuilder pentru căutare fără reîncărcarea paginii:

// 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;
}
            
  • Ascultători de Evenimente în Timp Real: Detectare instantanee a textului introdus și a filtrelor de posturi cu actualizare parțială în DOM.
  • Paginare Optimizată KnpPaginator: Limitarea la 6 anunțuri pe pagină pentru a reduce consumul de memorie al serverului.
  • Istoric HTML5 (replaceState): Sincronizare dinamică a URL-ului din browser pentru a permite partajarea directă a căutărilor filtrate.

4. Specificații API REST Headless

Endpoint-uri JSON documentate serializate cu JMS Serializer:

Method Endpoint URL Grup JMS Descriere Endpoint
GET /api/annonces getAnnonces Lista completă a ofertelor de muncă aprobate în format JSON
GET /api/annoncesby?page={n} getAnnonces Colecție paginată de anunțuri cu metadate de paginare
GET /api/annonce/{id} getAnnonces Detaliile complete ale unei oferte specifice pe baza ID-ului
GET /api/annoncesby/{poste} getAnnonces Filtrarea și paginarea ofertelor după denumirea postului

5. Model de Date & Relații ORM

Schemă relațională normalizată în MySQL cu integritate referențială Doctrine:

Entități Utilizatori & Profiluri

User cu e-mail unic, Candidat cu cale către CV-ul PDF și Recruteur cu date despre companie.

Entități Anunțuri & Clasificare Posturi

Poste ce include 28 de meserii HoReCa și Annonce ce stochează tipul de contract, salariul și descrierea.

Entitatea Candidatură

Tabel de legătură ce asociază Annonce, Candidat și Consultant-ul moderator cu starea de validare.

Explorează Platforma TRT Conseil

Descoperă ofertele de muncă din sectorul HoReCa și testează căutarea asincronă în timp real.

Vizitează Aplicația TRT Conseil ↗