← Voltar aos projetos Aplicação web · Recrutamento

TRT Conseil

Uma plataforma de recrutamento para o setor hoteleiro e da restauração com pesquisa e filtragem.

TRT Conseil
PROJETO

O projeto

TRT Conseil é uma aplicação web construída em torno de anúncios de recrutamento, descoberta de candidatos e filtragem, com uma interface funcional pensada para uso recorrente.

Arquitetura de Sistema & Plataforma de RH

Plataforma web de recrutamento especializada no setor da hotelaria e restauração (HORECA), desenvolvida em Symfony. Integra um modelo de segurança RBAC com dupla validação por consultores, motor de busca assíncrono em AJAX com KnpPaginator e endpoints de API REST documentados.

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

Recrutamento HORECA com Valor Humano

Cada perfil, oferta de emprego e candidatura é avaliada e validada por um consultor de RH experiente antes do contacto entre as partes.

Segurança & Hierarquia de Perfis

Esquema rigoroso de 4 perfis com estado transitório TOVALID para impedir publicações não autorizadas.

Envio Automatizado de Currículos

Envio automático por e-mail via Symfony Mailer do processo de candidatura com o ficheiro PDF anexado após validação.

1. Modelo de Segurança & Gestão de Acessos (RBAC)

Hierarquia de acessos gerida através do componente Security do Symfony com validação humana obrigatória:

Perfil de Sistema Estado Permissões & Atribuições
ROLE_ADMIN Administrador Criação, edição, bloqueio e eliminação de contas de administradores e consultores.
ROLE_CONSULTANT Consultor de RH Validação de candidatos e empresas, publicação de ofertas e encaminhamento de CVs para empregadores.
ROLE_RECRUTEUR Empregador Perfil da empresa, publicação de vagas e receção de candidaturas pré-qualificadas.
ROLE_CANDIDAT Candidato Envio seguro de CV em PDF, pesquisa avançada e candidatura a vagas aprovadas.

2. Workflows Operacionais & Gestão de Candidaturas

Processos estruturados para assegurar a verificação criteriosa de cada etapa de recrutamento:

Workflow do Candidato & Gestão de CV em PDF

Carregamento seguro de ficheiros PDF tratados com transliterator_transliterate() com acompanhamento em tempo real.

PDF Uploadtransliteratortovalid

Workflow do Consultor & Notificações Automáticas

Revisão de candidaturas pendentes e envio automático de e-mail com o CV anexado para o empregador após aprovação.

Symfony MailerDataPartPièce jointe CV

3. Motor de Busca Assíncrono (AJAX)

Módulo em JavaScript Filter.js associado ao KnpPaginator e Doctrine QueryBuilder para pesquisas sem recarregamento:

// 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;
}
            
  • Detetores de Eventos em Tempo Real: Deteção imediata de texto digitado e filtros de cargos com atualização seletiva do DOM.
  • Paginação Otimizada com KnpPaginator: Limite de 6 ofertas por página para otimizar o consumo de memória do servidor.
  • Histórico HTML5 (replaceState): Sincronização dinâmica do URL do navegador para partilhar pesquisas filtradas diretamente.

4. Especificações da API REST Headless

Endpoints JSON documentados e serializados com JMS Serializer:

Method Endpoint URL Grupo JMS Descrição do Endpoint
GET /api/annonces getAnnonces Lista completa de ofertas de emprego aprovadas em formato JSON
GET /api/annoncesby?page={n} getAnnonces Coleção paginada de anúncios com metadados de paginação
GET /api/annonce/{id} getAnnonces Detalhes completos de uma vaga de emprego específica por ID
GET /api/annoncesby/{poste} getAnnonces Filtragem e paginação de ofertas de acordo com o cargo pretendido

5. Modelo de Dados & Relações ORM

Esquema relacional normalizado em MySQL com integridade referencial do Doctrine:

Entidades de Utilizadores & Perfis

User com e-mail único, Candidat com caminho do ficheiro PDF e Recruteur com dados da empresa.

Entidades de Vagas & Taxonomia

Poste com 28 profissões da hotelaria e restauração e Annonce com tipo de contrato, vencimento e descrição.

Entidade Candidature

Tabela relacional que associa Annonce, Candidat e o Consultant validador com estado da candidatura.

Conheça a Plataforma TRT Conseil

Consulte as ofertas de emprego no setor hoteleiro e experimente a pesquisa em tempo real.

Visitar Aplicação TRT Conseil ↗