{% extends '@App/app.html.twig' %} {% block title %}Entretiens RH{% endblock %} {% block page_header %}{% endblock %} {% block content %} {% set finalized_statuses = ['completed', 'signed', 'archived'] %} {% set progress_statuses = ['employee_prepared', 'manager_preparation', 'ready', 'in_progress', 'pending_manager_validation'] %}

Tableau de bord entretiens

Entretiens à venir {{ kpis.upcoming }} Suivi planning
Entretiens en retard {{ kpis.overdue }} Action requise
Entretiens en cours {{ kpis.in_progress }} En attente finalisation
Entretiens finalisés {{ kpis.finalized }} Objectif atteint
Entretiens professionnels à planifier {{ kpis.professional_to_schedule }} Échéance réglementaire
Entretiens annuels à planifier {{ kpis.performance_to_schedule }} Cycle annuel
Questionnaires PDF générés {{ kpis.questionnaires }} Préparation salarié
Comptes rendus générés {{ kpis.reports }} Archivage

Alertes entretiens

{% for alert in alerts %}
{{ alert.title }} {{ alert.subtitle }}
Planifier
{% else %}
Aucune alerte active sur les entretiens.
{% endfor %}
{% if app.request.query.count > 0 %}Réinitialiser{% endif %}

Liste des entretiens

{{ interviews|length }}
{% for interview in interviews %} {% set employee = interview.salarie %} {% set photo_path = employee.photo ? employee.photo|trim : null %} {% set avatar_src = photo_path ? (photo_path starts with 'http://' or photo_path starts with 'https://' ? photo_path : asset(photo_path starts with '/' ? photo_path|slice(1) : photo_path)) : null %} {% set initials = ((employee.prenom|default('')|first) ~ (employee.nom|default('')|first))|upper ?: 'S' %} {% set service = employee.employeeService ? employee.employeeService.nom : (employee.service ?: 'Non renseigné') %} {% set is_professional = interview.type.category == 'professional' or interview.type.isLegalFollowUp %} {% set has_report = interview.reportPdfPath or interview.reportHtml %} {% set status_tone = interview.status in finalized_statuses ? 'success' : (interview.status in progress_statuses ? 'warning' : (interview.status == 'cancelled' ? 'danger' : 'muted')) %} {% else %} {% endfor %}
SalariéServiceTypeDate prévueStatutPDFSignaturesActions
{% if avatar_src %}{{ employee }}{% else %}{{ initials }}{% endif %}
{{ employee }}{{ employee.employeeJob ? employee.employeeJob.nom : (employee.poste ?: 'Fonction non renseignée') }}
{{ service }} {{ interview.type.nom }} {{ interview.scheduledAt ? interview.scheduledAt|date('d/m/Y') : '—' }} {{ status_labels[interview.status]|default(interview.status|replace({'_': ' '})|capitalize) }}
{% if not interview.scheduledAt %}{% endif %}{% if has_report %}{% endif %}
Aucun entretien trouvé pour les filtres sélectionnés.

Rappels de conformité

Entretiens professionnels à réaliser dans l’année{{ reminders.professional_due_this_year }}
Entretiens « 8 ans » à anticiper{{ reminders.eight_year_due_this_year }}
Entretiens de performance du cycle en cours{{ reminders.performance_due_this_year }}
{% endblock %}