ajoute la banque de quiz : partager un quiz, le dupliquer dans une autre classe

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Adam Belkacemi 2026-10-13 12:25:42 +02:00
parent 16d1293911
commit bd74eaf20f
10 changed files with 271 additions and 5 deletions

View file

@ -913,3 +913,25 @@ Le bug de migration est un bon rappel que les conventions de Laravel ne devinent
**Suite**
Chantier « vrai cockpit », étape 3 : Devoirs maison (prochaine fonction).
## 2026-10-13 — Chantier « vrai cockpit » : banque de quiz
Demande d'Adam en continuant Quiz flash : « c'est dommage qu'on ne puisse pas puiser dans une banque de quiz ! » — cohérent avec la bibliothèque déjà prévue au CLAUDE.md (« Dupliquer et adapter »), étendue ici au quiz.
**Fait**
- `Quiz.partage` (booléen) : un prof partage un de ses quiz, visible par tous les autres profs dans `/banque-quiz` (établissement d'origine affiché, jamais les notes des élèves).
- `Quiz::dupliquerDans(Classe)` : copie indépendante (questions et choix compris, jamais les sessions ni les réponses) dans une classe du prof qui duplique. La copie n'est jamais partagée d'office : modifier la copie ne touche jamais l'original, et réciproquement.
- Pas de nouvelle table : partager ne change pas le propriétaire du quiz d'origine, dupliquer en crée toujours une copie à part.
- 3 nouveaux tests Pest (75 au total) : partage puis duplication avec vérification que la copie est une vraie copie (identifiants différents) et non liée ; refus de dupliquer un quiz non partagé ou vers la classe d'un autre ; seul le propriétaire peut partager/retirer.
- Dette notée : un quiz partagé disparaît de la banque si sa classe d'origine est purgée (RGPD, 90 jours) — pas de propriétaire indépendant d'une classe pour l'instant, acceptable tant que ça ne gêne pas en usage réel.
**Vérifié sur le serveur réel** (deux profs d'établissements différents, scénario jetable supprimé ensuite) : le prof A partage son quiz « Capitale du Japon » ; le prof B le voit dans la banque avec le nom de l'établissement d'origine, le duplique dans sa propre classe ; la copie a un identifiant différent, le même contenu (question et choix), `partage` à faux ; l'original du prof A n'a pas bougé.
**Comprendre**
La bonne nouvelle de cette fonction, c'est qu'elle n'a presque rien coûté en complexité : un seul booléen et une méthode de copie, parce que le modèle de données du quiz (questions, choix, séparés de leur lancement en direct) était déjà pensé pour qu'un quiz soit un objet autonome, réutilisable. C'est souvent le signe qu'une étape précédente a été bien conçue : la suivante devient presque gratuite.
**Suite**
Chantier « vrai cockpit », étape 3 : Devoirs maison.