@php use App\Enums\Formation\NatureHeure; $nombre = static fn ($v, int $d = 1): string => number_format((float) $v, $d, ',', ' '); @endphp {{-- Tableau de bord d'un programme d'incubation (v2.0 §11). Ordre délibéré : d'abord les décrochages et le retard, ensuite les heures, ensuite les modules, et l'Ip3 en dernier. Le gérant n'a pas besoin qu'on lui dise que tout va bien ; il a besoin de savoir où intervenir cette semaine. --}} @if ($programme === null)

Aucun programme d'incubation n'est encore enregistré.

@else {{-- Choix du programme --}}
Marché {{ $programme->referenceMarche() ?? '—' }} @if ($programme->nomAcheteur()) · {{ $programme->nomAcheteur() }} @endif · objectif {{ $nombre($programme->heures_cible, 0) }} h par bénéficiaire
{{-- Où intervenir cette semaine --}}
@foreach ([ ['Inscrits', $resume['inscrits'], 'text-gray-950 dark:text-white'], ['À jour', $resume['etats']['a_jour'], 'text-green-600 dark:text-green-400'], ['En retard', $resume['etats']['en_retard'], 'text-amber-600 dark:text-amber-400'], ['Décrochés', $resume['etats']['decroche'], 'text-red-600 dark:text-red-400'], ['Jamais entrés', $resume['etats']['jamais_entre'], 'text-red-600 dark:text-red-400'], ['Objectif atteint', $resume['etats']['objectif_atteint'], 'text-green-600 dark:text-green-400'], ] as [$libelle, $valeur, $couleur])
{{ $libelle }}
{{ $valeur }}
@endforeach
@if ($resume['heures_attendues_par_beneficiaire'] > 0)

« En retard » se mesure contre le temps écoulé du programme : à ce jour, chaque bénéficiaire devrait avoir accompli {{ $nombre($resume['heures_attendues_par_beneficiaire']) }} h.

@else

Le programme n'a pas de dates de début et de fin : personne n'est déclaré « en retard » sur une hypothèse.

@endif
{{-- Les bénéficiaires sans activité : la liste sur laquelle on décroche son téléphone --}} @if ($resume['sans_activite']->isNotEmpty()) @endif {{-- Les heures --}}
{{ $nombre($resume['heures_cumulees'], 0) }} h sur {{ $nombre($resume['objectif_global'], 0) }} h attendues au total ({{ $resume['avancement_global'] }} %)
@foreach (NatureHeure::cases() as $nature) @php $part = $resume['objectif_global'] > 0 ? min(100, $resume['heures_par_nature'][$nature->value] / $resume['objectif_global'] * 100) : 0; @endphp @if ($part > 0) @endif @endforeach
@foreach (NatureHeure::cases() as $nature) {{ $nature->label() }} {{ $nombre($resume['heures_par_nature'][$nature->value]) }} h @endforeach
{{-- Achèvement par module : le plus bas en premier --}}

Trié du plus bas au plus haut. Celui qui décroche le plus signale un contenu à revoir, pas des bénéficiaires paresseux.

@forelse ($resume['modules'] as $module)
{{ $module['module'] }} {{ $module['acheves'] }} / {{ $module['inscrits'] }} · {{ $module['taux'] }} %
@empty

Aucun module actif rattaché à ce programme.

@endforelse
{{-- La semaine en cours, prévisualisée --}}

Semaine {{ $semaineEnCours['semaine'] }} — du {{ \Illuminate\Support\Carbon::parse($semaineEnCours['periode']['du'])->format('d/m/Y') }} au {{ \Illuminate\Support\Carbon::parse($semaineEnCours['periode']['au'])->format('d/m/Y') }}. Rien n'est encore écrit : le rapport définitif se génère le lundi.

@foreach ([ 'Heures accomplies' => $nombre($semaineEnCours['totaux']['heures_semaine'], 2).' h', 'Bénéficiaires actifs' => $semaineEnCours['totaux']['actifs_semaine'].' / '.$semaineEnCours['totaux']['beneficiaires'], 'Sessions collectives' => count($semaineEnCours['sessions']), 'Sans aucune activité' => count($semaineEnCours['sans_activite']), 'Heures sans justificatif' => count($semaineEnCours['anomalies']), ] as $libelle => $valeur)
{{ $libelle }}
{{ $valeur }}
@endforeach
{{-- Ip3 et livrables --}}
$resume['ip3']['atteint'], 'text-amber-600 dark:text-amber-400' => ! $resume['ip3']['atteint'], ])>{{ $nombre($resume['ip3']['taux']) }} % engagement : {{ $nombre($resume['ip3']['cible'], 0) }} %

{{ $resume['ip3']['transformes'] }} projet(s) transformé(s) sur {{ $resume['ip3']['base'] }} bénéficiaire(s) arrivé(s) au bout. Un abandon en cours de route n'entre pas dans le calcul : ce n'est pas un échec de transformation.

Travaux en attente de correction $resume['livrables_a_corriger'] > 0, 'text-gray-950 dark:text-white' => $resume['livrables_a_corriger'] === 0, ])>{{ $resume['livrables_a_corriger'] }}
@endif