'La machine ne répond pas à la vérification. Attends quelques secondes après un redémarrage, puis réessaie.', 'delai_depasse' => 'La vérification a pris plus de 10 secondes sur la machine.', ]; public function __construct(private readonly ClientCorrecteur $client) {} public function corriger(LabSession $session): Correction { $lab = DefinitionLab::depuis($session->lab->identifiant); $instances = $session->machines()->pluck('instance_id', 'nom'); $details = []; $note = 0; $noteMax = 0; $reussi = true; foreach ($lab->verifications as $verification) { $resultat = isset($instances[$verification['machine']]) ? $this->client->verifier($instances[$verification['machine']], $lab->identifiant, $verification['id']) : ['reussi' => false, 'erreur' => 'machine_absente']; if (! $verification['bonus']) { $noteMax += $verification['points']; $reussi = $reussi && $resultat['reussi']; } if ($resultat['reussi']) { $note += $verification['points']; } $details[] = [ 'id' => $verification['id'], 'titre' => $verification['titre'], 'points' => $verification['points'], 'bonus' => $verification['bonus'], 'reussi' => $resultat['reussi'], 'message' => $resultat['reussi'] ? null : (self::MESSAGES_TECHNIQUES[$resultat['erreur']] ?? $verification['message_echec']), ]; } return $session->corrections()->create([ 'reussi' => $reussi, 'note' => $note, 'note_max' => $noteMax, 'details' => $details, ]); } }