← Volver a los proyectos Aplicación web · Selección

TRT Conseil

Una plataforma de contratación para el sector hostelero y de restauración con búsqueda y filtros.

TRT Conseil
PROYECTO

El proyecto

TRT Conseil es una aplicación web centrada en ofertas de empleo, descubrimiento de candidatos y filtros, con una interfaz funcional pensada para uso recurrente.

Arquitectura del Sistema & Plataforma de RRHH

Plataforma web de selección de personal especializada en el sector de la hostelería y restauración (CHR), desarrollada en Symfony. Integra un modelo de seguridad RBAC con doble validación por consultores, motor de búsqueda asíncrono en AJAX con KnpPaginator y 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
            

Reclutamiento en Hostelería con Valor Humano

Cada cuenta, oferta de empleo y candidatura es revisada y validada por un consultor experto antes de establecer contacto.

Seguridad & Jerarquía de Roles

Esquema estricto de 4 roles con estado transitorio TOVALID para impedir publicaciones no autorizadas.

Envío Automatizado de CVs

Generación y envío automático vía Symfony Mailer del expediente de candidatura con CV en formato PDF adjunto al ser validado.

1. Modelo de Seguridad & Gestión de Roles (RBAC)

Jerarquía de permisos gestionada por el componente Security de Symfony con validación humana obligatoria:

Rol del Sistema Estado Permisos & Capacidades
ROLE_ADMIN Supervisor Creación, edición, bloqueo y eliminación de cuentas de administradores y consultores.
ROLE_CONSULTANT Moderador de RRHH Validación de candidatos y empresas, publicación de ofertas y envío de currículums a empleadores.
ROLE_RECRUTEUR Empleador Ficha de empresa, publicación de ofertas (indefinido, temporal, extras) y recepción de candidatos precalificados.
ROLE_CANDIDAT Candidato Subida segura de CV en PDF, búsqueda avanzada y postulación a ofertas de trabajo aprobadas.

2. Flujos de Trabajo & Gestión de Candidaturas

Procesos organizados para garantizar la verificación rigurosa de cada fase de selección:

Flujo del Candidato & Gestión del CV en PDF

Carga segura de archivos PDF saneados con transliterator_transliterate() y seguimiento del estado en tiempo real.

PDF Uploadtransliteratortovalid

Flujo del Consultor & Notificación Automática

Revisión de candidaturas pendientes y envío automático por correo del CV adjunto a la empresa al aprobarse.

Symfony MailerDataPartPièce jointe CV

3. Motor de Búsqueda Asíncrono (AJAX)

Módulo en JavaScript Filter.js combinado con KnpPaginator y Doctrine QueryBuilder para búsquedas instantáneas sin recargas:

// 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;
}
            
  • Escucha de Eventos en Tiempo Real: Detección inmediata de texto y filtros de puesto con inserción parcial en el DOM.
  • Paginación Optimizada con KnpPaginator: Límite de 6 elementos por página para optimizar el rendimiento y el consumo de memoria.
  • Historial HTML5 (replaceState): Sincronización dinámica de la URL del navegador para compartir búsquedas filtradas directamente.

4. Especificaciones de la API REST Headless

Endpoints JSON documentados serializados con JMS Serializer:

Method Endpoint URL Grupo JMS Descripción del Endpoint
GET /api/annonces getAnnonces Lista completa de ofertas de trabajo aprobadas en formato JSON
GET /api/annoncesby?page={n} getAnnonces Colección paginada de anuncios con metadatos de paginación
GET /api/annonce/{id} getAnnonces Detalle completo de una oferta de empleo específica por su ID
GET /api/annoncesby/{poste} getAnnonces Filtrado y paginación de ofertas según el puesto de trabajo

5. Modelo de Datos & Relaciones ORM

Esquema relacional normalizado en MySQL con integridad referencial de Doctrine:

Entidades de Usuarios & Perfiles

User con correo único, Candidat con ruta de CV en PDF y Recruteur con datos de la empresa.

Entidades de Ofertas & Taxonomía

Poste con 28 profesiones de hostelería y Annonce con tipo de contrato, sueldo y descripción.

Entidad Candidature

Tabla relacional que une Annonce, Candidat y el Consultant que aprueba la solicitud con su estado.

Explorar la Plataforma TRT Conseil

Consulta las ofertas de trabajo en hostelería y prueba el motor de búsqueda en tiempo real.

Visitar la Aplicación TRT Conseil ↗