@extends('layouts.app') @section('titre', $classe->nom) {{-- Tableau de bord prof (chantier « vrai cockpit », étape 1 — 2026-10-12) : même mise en page que la démonstration /cockpit (sélecteur de classe, cartes d'indicateurs, tableau des élèves), mais chaque chiffre vient d'une vraie table ou d'un vrai cache. Rien n'est inventé (CLAUDE.md) : les cartes des fonctions pas encore construites (quiz, DM, observations, examen) n'existent pas ici tant qu'elles n'existent pas vraiment — elles arriveront une par une. --}} @section('contenu') @php $etats = \App\Models\LabSession::class; @endphp
Tableau de bord
{{ $classe->formation }}
@endifCode de classe : {{ $classe->code_classe }}
Classe créée. Ajoute maintenant tes élèves ci-dessous.
@endif {{-- Indicateurs réels : rien ici qui ne vienne d'une vraie table ou d'un vrai cache. --}}Élèves
{{ $classe->eleves->count() }}
Demandes en attente
{{ $demandes->count() }}
Dans la séance
{{ $seance->labSessions->whereIn('etat', [$etats::ACTIF, $etats::ADMIS])->count() }}/{{ $classe->eleves->count() }}
admis ou en préparation
Réussite (dernière vérif.)
{{ $reussiteMoyenne }}%
Mains levées (visio)
{{ count($mains) }}
{{ $avancement->count() }} vérifications · {{ $avancement->first()['total'] }} élève(s) corrigé(s)
Aucune main levée pour l'instant.
@elsePersonne n'a encore rejoint.
@else| Élève | État | Dernière vérification | |
|---|---|---|---|
| {{ $labSession->eleve->nomAffiche() }} | @switch($labSession->etat) @case($etats::EN_ATTENTE) @break @case($etats::ADMIS) Préparation des VM… @break @case($etats::ACTIF) Admis @break @case($etats::ECHEC) Échec (3 essais) @break @default Terminé @endswitch | @if ($labSession->derniereCorrection) {{ $labSession->derniereCorrection->reussi ? 'Réussi' : 'En cours' }} · {{ $labSession->derniereCorrection->note }}/{{ $labSession->derniereCorrection->note_max }} @else — @endif | @if ($labSession->etat === $etats::ACTIF) Voir sa console @endif |
Projette ce code ou ce QR. Chaque élève va sur {{ preg_replace('#^https?://#', '', route('rejoindre')) }}, tape le code et son prénom ; tu acceptes sa demande ici, et il reçoit à l'écran son identifiant et son code secret. Aucun e-mail.
{{ $classe->code_classe }}
Aucune pour l'instant. Cette liste se met à jour toute seule.
@elseLe code secret ne sera plus jamais affiché après cette page : imprime ou note-le maintenant.
{{ $fiche['prenom'] }}@if($fiche['nom']) {{ $fiche['nom'] }}@endif
Identifiant
{{ $fiche['identifiant'] }}
Code secret
{{ $fiche['code_secret'] }}
{{ $message }}
@enderrorUne ligne par élève : prenom,nom (le nom peut être vide).
{{ $message }}
@enderrorCoche au moins un élève.
@enderror @if ($classe->eleves->isEmpty())Aucun élève pour l'instant.
@else| Élève | Identifiant | Dernière connexion | ||
|---|---|---|---|---|
| {{ $eleve->nomAffiche() }} | {{ $eleve->identifiant }} | {{ $eleve->derniere_connexion_a?->diffForHumans() ?? 'jamais' }} |
Visibles par tes élèves dans « Ma classe ».
@if ($classe->annonces->isNotEmpty()){{ $annonce->titre }}
{{ $annonce->contenu }}
{{ $annonce->created_at->translatedFormat('d/m à H:i') }}
Notes rapides pour le conseil de classe — jamais montrées à l'élève.
@if ($classe->observations->isNotEmpty()){{ $observation->eleve->nomAffiche() }} — {{ $observation->contenu }} ({{ $observation->created_at->translatedFormat('d/m') }})
{{ $classe->chat_actif ? 'Activé : tes élèves peuvent t\'écrire depuis la bulle en bas à droite.' : 'Désactivé : tes élèves ne peuvent plus t\'écrire.' }}
Archivée le {{ $classe->archivee_a->timezone(config('app.fuseau_utilisateurs'))->format('d/m/Y') }}. La classe et toutes les données de ses élèves (comptes, séances, résultats) seront supprimées définitivement le {{ $classe->supprimeeLe()->timezone(config('app.fuseau_utilisateurs'))->format('d/m/Y') }}.
Les élèves qui rejoignent patientent dans la salle d'attente jusqu'à ce que tu les admettes. Si tu planifies la séance, les machines de toute la classe sont préparées 10 minutes avant : elles s'ouvrent alors en quelques secondes.
@if (session('seance_planifiee'))Séance planifiée.
@endif @error('prevue_a'){{ $message }}
@enderror @php($planifiees = $classe->seances()->where('statut', \App\Models\Seance::PLANIFIEE)->with('lab')->orderBy('prevue_a')->get()) @if ($planifiees->isNotEmpty())Archiver la classe ferme ses séances. {{ \App\Models\Classe::DELAI_PURGE_JOURS }} jours plus tard, la classe et toutes les données de ses élèves sont supprimées automatiquement (RGPD). Tu peux la désarchiver d'ici là.
@error('archivage'){{ $message }}
@enderror